From webhook-mailer at python.org Tue Jun 1 06:47:42 2021 From: webhook-mailer at python.org (vstinner) Date: Tue, 01 Jun 2021 10:47:42 -0000 Subject: [Python-checkins] bpo-42972: Track sqlite3 statement objects (GH-26475) Message-ID: https://github.com/python/cpython/commit/fffa0f92adaaed0bcb3907d982506f78925e9052 commit: fffa0f92adaaed0bcb3907d982506f78925e9052 branch: main author: Erlend Egeberg Aasland committer: vstinner date: 2021-06-01T12:47:37+02:00 summary: bpo-42972: Track sqlite3 statement objects (GH-26475) Allocate and track statement objects in pysqlite_statement_create. By allocating and tracking creation of statement object in pysqlite_statement_create(), the caller does not need to worry about GC syncronization, and eliminates the possibility of getting a badly created object. All related fault handling is moved to pysqlite_statement_create(). Co-authored-by: Victor Stinner files: M Modules/_sqlite/connection.c M Modules/_sqlite/cursor.c M Modules/_sqlite/statement.c M Modules/_sqlite/statement.h diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 54e477739bd45..7252ccab10b4b 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1337,7 +1337,6 @@ pysqlite_connection_call(pysqlite_Connection *self, PyObject *args, PyObject* sql; pysqlite_Statement* statement; PyObject* weakref; - int rc; if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; @@ -1351,31 +1350,11 @@ pysqlite_connection_call(pysqlite_Connection *self, PyObject *args, _pysqlite_drop_unused_statement_references(self); - statement = PyObject_GC_New(pysqlite_Statement, pysqlite_StatementType); - if (!statement) { + statement = pysqlite_statement_create(self, sql); + if (statement == NULL) { return NULL; } - statement->db = NULL; - statement->st = NULL; - statement->sql = NULL; - statement->in_use = 0; - statement->in_weakreflist = NULL; - - rc = pysqlite_statement_create(statement, self, sql); - if (rc != SQLITE_OK) { - if (rc == PYSQLITE_TOO_MUCH_SQL) { - PyErr_SetString(pysqlite_Warning, "You can only execute one statement at a time."); - } else if (rc == PYSQLITE_SQL_WRONG_TYPE) { - if (PyErr_ExceptionMatches(PyExc_TypeError)) - PyErr_SetString(pysqlite_Warning, "SQL is of wrong type. Must be string."); - } else { - (void)pysqlite_statement_reset(statement); - _pysqlite_seterror(self->db); - } - goto error; - } - weakref = PyWeakref_NewRef((PyObject*)statement, NULL); if (weakref == NULL) goto error; diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 4eb9c6d28b103..7656c903a4acf 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -507,13 +507,8 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation if (self->statement->in_use) { Py_SETREF(self->statement, - PyObject_GC_New(pysqlite_Statement, pysqlite_StatementType)); - if (!self->statement) { - goto error; - } - rc = pysqlite_statement_create(self->statement, self->connection, operation); - if (rc != SQLITE_OK) { - Py_CLEAR(self->statement); + pysqlite_statement_create(self->connection, operation)); + if (self->statement == NULL) { goto error; } } diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 332bf030a9b90..3a18ad8331f69 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -48,7 +48,8 @@ typedef enum { TYPE_UNKNOWN } parameter_type; -int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* connection, PyObject* sql) +pysqlite_Statement * +pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) { const char* tail; int rc; @@ -56,27 +57,36 @@ int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* con Py_ssize_t sql_cstr_len; const char* p; - self->st = NULL; - self->in_use = 0; - assert(PyUnicode_Check(sql)); sql_cstr = PyUnicode_AsUTF8AndSize(sql, &sql_cstr_len); if (sql_cstr == NULL) { - rc = PYSQLITE_SQL_WRONG_TYPE; - return rc; + PyErr_Format(pysqlite_Warning, + "SQL is of wrong type ('%s'). Must be string.", + Py_TYPE(sql)->tp_name); + return NULL; } if (strlen(sql_cstr) != (size_t)sql_cstr_len) { - PyErr_SetString(PyExc_ValueError, "the query contains a null character"); - return PYSQLITE_SQL_WRONG_TYPE; + PyErr_SetString(PyExc_ValueError, + "the query contains a null character"); + return NULL; } - self->in_weakreflist = NULL; + pysqlite_Statement *self = PyObject_GC_New(pysqlite_Statement, + pysqlite_StatementType); + if (self == NULL) { + return NULL; + } + + self->db = connection->db; + self->st = NULL; self->sql = Py_NewRef(sql); + self->in_use = 0; + self->is_dml = 0; + self->in_weakreflist = NULL; /* Determine if the statement is a DML statement. SELECT is the only exception. See #9924. */ - self->is_dml = 0; for (p = sql_cstr; *p != 0; p++) { switch (*p) { case ' ': @@ -94,22 +104,33 @@ int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* con } Py_BEGIN_ALLOW_THREADS - rc = sqlite3_prepare_v2(connection->db, + rc = sqlite3_prepare_v2(self->db, sql_cstr, -1, &self->st, &tail); Py_END_ALLOW_THREADS - self->db = connection->db; + PyObject_GC_Track(self); + + if (rc != SQLITE_OK) { + _pysqlite_seterror(self->db); + goto error; + } if (rc == SQLITE_OK && pysqlite_check_remaining_sql(tail)) { (void)sqlite3_finalize(self->st); self->st = NULL; - rc = PYSQLITE_TOO_MUCH_SQL; + PyErr_SetString(pysqlite_Warning, + "You can only execute one statement at a time."); + goto error; } - return rc; + return self; + +error: + Py_DECREF(self); + return NULL; } int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter) diff --git a/Modules/_sqlite/statement.h b/Modules/_sqlite/statement.h index 56ff7271448d1..e8c86a0ec963f 100644 --- a/Modules/_sqlite/statement.h +++ b/Modules/_sqlite/statement.h @@ -29,9 +29,6 @@ #include "connection.h" #include "sqlite3.h" -#define PYSQLITE_TOO_MUCH_SQL (-100) -#define PYSQLITE_SQL_WRONG_TYPE (-101) - typedef struct { PyObject_HEAD @@ -45,7 +42,7 @@ typedef struct extern PyTypeObject *pysqlite_StatementType; -int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* connection, PyObject* sql); +pysqlite_Statement *pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql); int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter); void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* parameters); From webhook-mailer at python.org Tue Jun 1 07:07:33 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 01 Jun 2021 11:07:33 -0000 Subject: [Python-checkins] bpo-44273: Improve syntax error message for assigning to "..." (GH-26477) Message-ID: https://github.com/python/cpython/commit/39dd141a4ba68bbb38fd00a65cdcff711acdafb5 commit: 39dd141a4ba68bbb38fd00a65cdcff711acdafb5 branch: main author: Serhiy Storchaka committer: pablogsal date: 2021-06-01T12:07:05+01:00 summary: bpo-44273: Improve syntax error message for assigning to "..." (GH-26477) Use "ellipsis" instead of "Ellipsis" in syntax error messages to eliminate confusion with built-in variable Ellipsis. files: M Lib/test/test_syntax.py M Parser/pegen.c diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index cc189ef0f54b5..c000028e5f1aa 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -93,7 +93,7 @@ >>> ... = 1 Traceback (most recent call last): -SyntaxError: cannot assign to Ellipsis here. Maybe you meant '==' instead of '='? +SyntaxError: cannot assign to ellipsis here. Maybe you meant '==' instead of '='? >>> `1` = 1 Traceback (most recent call last): diff --git a/Parser/pegen.c b/Parser/pegen.c index 548a64788dec4..aac7e368a799f 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -217,7 +217,7 @@ _PyPegen_get_expr_name(expr_ty e) return "True"; } if (value == Py_Ellipsis) { - return "Ellipsis"; + return "ellipsis"; } return "literal"; } From webhook-mailer at python.org Tue Jun 1 16:15:37 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 01 Jun 2021 20:15:37 -0000 Subject: [Python-checkins] bpo-44279: [doc] reword contextlib.suppress documentation (GH-26428) Message-ID: https://github.com/python/cpython/commit/87272b70f157af76cb14ff90d73dfc5d9bfb945a commit: 87272b70f157af76cb14ff90d73dfc5d9bfb945a branch: main author: MapleCCC committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-01T21:15:30+01:00 summary: bpo-44279: [doc] reword contextlib.suppress documentation (GH-26428) files: M Doc/library/contextlib.rst diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index 42834fe68bfae..98df29277e3b7 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -267,8 +267,9 @@ Functions and classes provided: .. function:: suppress(*exceptions) Return a context manager that suppresses any of the specified exceptions - if they occur in the body of a with statement and then resumes execution - with the first statement following the end of the with statement. + if they are raised in the body of a :keyword:`!with` statement and then + resumes execution with the first statement following the end of the + :keyword:`!with` statement. As with any other mechanism that completely suppresses exceptions, this context manager should be used only to cover very specific errors where From webhook-mailer at python.org Tue Jun 1 17:30:14 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Tue, 01 Jun 2021 21:30:14 -0000 Subject: [Python-checkins] Fix typo in block comment in Include/internal/pycore_condvar.h (GH-26457) Message-ID: https://github.com/python/cpython/commit/fcda0f508ead26581a77108de19b278c4d062dc4 commit: fcda0f508ead26581a77108de19b278c4d062dc4 branch: main author: Rishi committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-01T18:30:05-03:00 summary: Fix typo in block comment in Include/internal/pycore_condvar.h (GH-26457) files: M Include/internal/pycore_condvar.h diff --git a/Include/internal/pycore_condvar.h b/Include/internal/pycore_condvar.h index 8b89d709510a3..edb7dc8193cb8 100644 --- a/Include/internal/pycore_condvar.h +++ b/Include/internal/pycore_condvar.h @@ -60,7 +60,7 @@ typedef CRITICAL_SECTION PyMUTEX_T; with a Semaphore. Semaphores are available on Windows XP (2003 server) and later. We use a Semaphore rather than an auto-reset event, because although - an auto-resent event might appear to solve the lost-wakeup bug (race + an auto-reset event might appear to solve the lost-wakeup bug (race condition between releasing the outer lock and waiting) because it maintains state even though a wait hasn't happened, there is still a lost wakeup problem if more than one thread are interrupted in the From webhook-mailer at python.org Tue Jun 1 17:37:18 2021 From: webhook-mailer at python.org (vstinner) Date: Tue, 01 Jun 2021 21:37:18 -0000 Subject: [Python-checkins] bpo-44263: Py_TPFLAGS_HAVE_GC requires tp_traverse (GH-26463) Message-ID: https://github.com/python/cpython/commit/ee7637596d8de25f54261bbeabc602d31e74f482 commit: ee7637596d8de25f54261bbeabc602d31e74f482 branch: main author: Victor Stinner committer: vstinner date: 2021-06-01T23:37:12+02:00 summary: bpo-44263: Py_TPFLAGS_HAVE_GC requires tp_traverse (GH-26463) The PyType_Ready() function now raises an error if a type is defined with the Py_TPFLAGS_HAVE_GC flag set but has no traverse function (PyTypeObject.tp_traverse). files: A Misc/NEWS.d/next/C API/2021-05-31-11-31-13.bpo-44263.8mIOfV.rst M Doc/whatsnew/3.11.rst M Objects/typeobject.c diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index a178095be0d0d..1b3b8240a521f 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -144,6 +144,11 @@ New Features Porting to Python 3.11 ---------------------- +* The :c:func:`PyType_Ready` function now raises an error if a type is defined + with the :const:`Py_TPFLAGS_HAVE_GC` flag set but has no traverse function + (:c:member:`PyTypeObject.tp_traverse`). + (Contributed by Victor Stinner in :issue:`44263`.) + Deprecated ---------- @@ -180,4 +185,4 @@ Removed parameter of functions :func:`~gettext.translation` and :func:`~gettext.install` are also removed, since they are only used for the ``l*gettext()`` functions. - (Contributed by Dong-hee Na and Serhiy Storchaka in :issue:`44235`.) \ No newline at end of file + (Contributed by Dong-hee Na and Serhiy Storchaka in :issue:`44235`.) diff --git a/Misc/NEWS.d/next/C API/2021-05-31-11-31-13.bpo-44263.8mIOfV.rst b/Misc/NEWS.d/next/C API/2021-05-31-11-31-13.bpo-44263.8mIOfV.rst new file mode 100644 index 0000000000000..aa831a2083c48 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-05-31-11-31-13.bpo-44263.8mIOfV.rst @@ -0,0 +1,4 @@ +The :c:func:`PyType_Ready` function now raises an error if a type is defined +with the :const:`Py_TPFLAGS_HAVE_GC` flag set but has no traverse function +(:c:member:`PyTypeObject.tp_traverse`). +Patch by Victor Stinner. diff --git a/Objects/typeobject.c b/Objects/typeobject.c index feb25aa0b78e4..bf792e21c162d 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -158,6 +158,12 @@ _PyType_CheckConsistency(PyTypeObject *type) CHECK(!(type->tp_flags & Py_TPFLAGS_READYING)); CHECK(type->tp_dict != NULL); + if (type->tp_flags & Py_TPFLAGS_HAVE_GC) { + // bpo-44263: tp_traverse is required if Py_TPFLAGS_HAVE_GC is set. + // Note: tp_clear is optional. + CHECK(type->tp_traverse != NULL); + } + if (type->tp_flags & Py_TPFLAGS_DISALLOW_INSTANTIATION) { CHECK(type->tp_new == NULL); CHECK(_PyDict_ContainsId(type->tp_dict, &PyId___new__) == 0); @@ -3607,6 +3613,7 @@ PyType_FromModuleAndSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) } } + assert(_PyType_CheckConsistency(type)); return (PyObject*)res; fail: @@ -5944,7 +5951,7 @@ static int add_tp_new_wrapper(PyTypeObject *type); #define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING) static int -type_ready_checks(PyTypeObject *type) +type_ready_pre_checks(PyTypeObject *type) { /* Consistency checks for PEP 590: * - Py_TPFLAGS_METHOD_DESCRIPTOR requires tp_descr_get @@ -6305,10 +6312,28 @@ type_ready_set_new(PyTypeObject *type) } +static int +type_ready_post_checks(PyTypeObject *type) +{ + // bpo-44263: tp_traverse is required if Py_TPFLAGS_HAVE_GC is set. + // Note: tp_clear is optional. + if (type->tp_flags & Py_TPFLAGS_HAVE_GC + && type->tp_traverse == NULL) + { + PyErr_Format(PyExc_SystemError, + "type %s has the Py_TPFLAGS_HAVE_GC flag " + "but has no traverse function", + type->tp_name); + return -1; + } + return 0; +} + + static int type_ready(PyTypeObject *type) { - if (type_ready_checks(type) < 0) { + if (type_ready_pre_checks(type) < 0) { return -1; } @@ -6346,6 +6371,9 @@ type_ready(PyTypeObject *type) if (type_ready_add_subclasses(type) < 0) { return -1; } + if (type_ready_post_checks(type) < 0) { + return -1; + } return 0; } From webhook-mailer at python.org Tue Jun 1 17:58:14 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 01 Jun 2021 21:58:14 -0000 Subject: [Python-checkins] [3.10] bpo-44279: [doc] reword contextlib.suppress documentation (GH-26428) (GH-26480) Message-ID: https://github.com/python/cpython/commit/6563ea5c60be2e4896df52eff777aa93743f1551 commit: 6563ea5c60be2e4896df52eff777aa93743f1551 branch: 3.10 author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-01T22:58:06+01:00 summary: [3.10] bpo-44279: [doc] reword contextlib.suppress documentation (GH-26428) (GH-26480) (cherry picked from commit 87272b70f157af76cb14ff90d73dfc5d9bfb945a) Co-authored-by: MapleCCC files: M Doc/library/contextlib.rst diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index 42834fe68bfae..98df29277e3b7 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -267,8 +267,9 @@ Functions and classes provided: .. function:: suppress(*exceptions) Return a context manager that suppresses any of the specified exceptions - if they occur in the body of a with statement and then resumes execution - with the first statement following the end of the with statement. + if they are raised in the body of a :keyword:`!with` statement and then + resumes execution with the first statement following the end of the + :keyword:`!with` statement. As with any other mechanism that completely suppresses exceptions, this context manager should be used only to cover very specific errors where From webhook-mailer at python.org Tue Jun 1 18:15:56 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 01 Jun 2021 22:15:56 -0000 Subject: [Python-checkins] [3.9] bpo-44279: [doc] reword contextlib.suppress documentation (GH-26428) (GH-26481) Message-ID: https://github.com/python/cpython/commit/9a688624973a2b753b84f892b65268543c7ff67d commit: 9a688624973a2b753b84f892b65268543c7ff67d branch: 3.9 author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-01T23:15:48+01:00 summary: [3.9] bpo-44279: [doc] reword contextlib.suppress documentation (GH-26428) (GH-26481) (cherry picked from commit 87272b70f157af76cb14ff90d73dfc5d9bfb945a) Co-authored-by: MapleCCC files: M Doc/library/contextlib.rst diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index 3dcedf72a390e..cfc37a63aedbf 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -191,8 +191,9 @@ Functions and classes provided: .. function:: suppress(*exceptions) Return a context manager that suppresses any of the specified exceptions - if they occur in the body of a with statement and then resumes execution - with the first statement following the end of the with statement. + if they are raised in the body of a :keyword:`!with` statement and then + resumes execution with the first statement following the end of the + :keyword:`!with` statement. As with any other mechanism that completely suppresses exceptions, this context manager should be used only to cover very specific errors where From webhook-mailer at python.org Wed Jun 2 08:26:14 2021 From: webhook-mailer at python.org (pablogsal) Date: Wed, 02 Jun 2021 12:26:14 -0000 Subject: [Python-checkins] bpo-44165: Optimise sqlite3 statement preparation by passing string size (GH-26206) Message-ID: https://github.com/python/cpython/commit/a384b6c04054a2c5050a99059836175cf73e2016 commit: a384b6c04054a2c5050a99059836175cf73e2016 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-02T13:26:06+01:00 summary: bpo-44165: Optimise sqlite3 statement preparation by passing string size (GH-26206) files: M Modules/_sqlite/connection.c M Modules/_sqlite/cursor.c M Modules/_sqlite/statement.c diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 7252ccab10b4b..e15629c8aba24 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -451,7 +451,7 @@ pysqlite_connection_commit_impl(pysqlite_Connection *self) if (!sqlite3_get_autocommit(self->db)) { Py_BEGIN_ALLOW_THREADS - rc = sqlite3_prepare_v2(self->db, "COMMIT", -1, &statement, NULL); + rc = sqlite3_prepare_v2(self->db, "COMMIT", 7, &statement, NULL); Py_END_ALLOW_THREADS if (rc != SQLITE_OK) { _pysqlite_seterror(self->db); @@ -501,7 +501,7 @@ pysqlite_connection_rollback_impl(pysqlite_Connection *self) pysqlite_do_all_statements(self, ACTION_RESET, 1); Py_BEGIN_ALLOW_THREADS - rc = sqlite3_prepare_v2(self->db, "ROLLBACK", -1, &statement, NULL); + rc = sqlite3_prepare_v2(self->db, "ROLLBACK", 9, &statement, NULL); Py_END_ALLOW_THREADS if (rc != SQLITE_OK) { _pysqlite_seterror(self->db); diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 7656c903a4acf..757c389c6a44b 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -696,6 +696,7 @@ pysqlite_cursor_executescript(pysqlite_Cursor *self, PyObject *script_obj) const char* script_cstr; sqlite3_stmt* statement; int rc; + Py_ssize_t sql_len; PyObject* result; if (!check_cursor(self)) { @@ -705,10 +706,17 @@ pysqlite_cursor_executescript(pysqlite_Cursor *self, PyObject *script_obj) self->reset = 0; if (PyUnicode_Check(script_obj)) { - script_cstr = PyUnicode_AsUTF8(script_obj); + script_cstr = PyUnicode_AsUTF8AndSize(script_obj, &sql_len); if (!script_cstr) { return NULL; } + + int max_length = sqlite3_limit(self->connection->db, + SQLITE_LIMIT_LENGTH, -1); + if (sql_len >= max_length) { + PyErr_SetString(pysqlite_DataError, "query string is too large"); + return NULL; + } } else { PyErr_SetString(PyExc_ValueError, "script argument must be unicode."); return NULL; @@ -722,12 +730,14 @@ pysqlite_cursor_executescript(pysqlite_Cursor *self, PyObject *script_obj) Py_DECREF(result); while (1) { + const char *tail; + Py_BEGIN_ALLOW_THREADS rc = sqlite3_prepare_v2(self->connection->db, script_cstr, - -1, + (int)sql_len + 1, &statement, - &script_cstr); + &tail); Py_END_ALLOW_THREADS if (rc != SQLITE_OK) { _pysqlite_seterror(self->connection->db); @@ -755,9 +765,11 @@ pysqlite_cursor_executescript(pysqlite_Cursor *self, PyObject *script_obj) goto error; } - if (*script_cstr == (char)0) { + if (*tail == (char)0) { break; } + sql_len -= (tail - script_cstr); + script_cstr = tail; } error: diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 3a18ad8331f69..c4a790c424e35 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -66,6 +66,12 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) Py_TYPE(sql)->tp_name); return NULL; } + + int max_length = sqlite3_limit(connection->db, SQLITE_LIMIT_LENGTH, -1); + if (sql_cstr_len >= max_length) { + PyErr_SetString(pysqlite_DataError, "query string is too large"); + return PYSQLITE_TOO_MUCH_SQL; + } if (strlen(sql_cstr) != (size_t)sql_cstr_len) { PyErr_SetString(PyExc_ValueError, "the query contains a null character"); @@ -106,7 +112,7 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) Py_BEGIN_ALLOW_THREADS rc = sqlite3_prepare_v2(self->db, sql_cstr, - -1, + (int)sql_cstr_len + 1, &self->st, &tail); Py_END_ALLOW_THREADS From webhook-mailer at python.org Wed Jun 2 08:30:20 2021 From: webhook-mailer at python.org (pablogsal) Date: Wed, 02 Jun 2021 12:30:20 -0000 Subject: [Python-checkins] Remove duplicate address in CommonTestMixin_v4.test_leading_zeros() (GH-26326) Message-ID: https://github.com/python/cpython/commit/1a8c77847118d16025337f17cf28fd35c962694b commit: 1a8c77847118d16025337f17cf28fd35c962694b branch: main author: Mariusz Felisiak committer: pablogsal date: 2021-06-02T13:30:13+01:00 summary: Remove duplicate address in CommonTestMixin_v4.test_leading_zeros() (GH-26326) files: M Lib/test/test_ipaddress.py diff --git a/Lib/test/test_ipaddress.py b/Lib/test/test_ipaddress.py index ff77bdb1bbc58..b0605f0be04bb 100644 --- a/Lib/test/test_ipaddress.py +++ b/Lib/test/test_ipaddress.py @@ -102,7 +102,6 @@ def test_leading_zeros(self): "000.000.000.000", "192.168.000.001", "016.016.016.016", - "192.168.000.001", "001.000.008.016", "01.2.3.40", "1.02.3.40", From webhook-mailer at python.org Wed Jun 2 09:09:17 2021 From: webhook-mailer at python.org (iritkatriel) Date: Wed, 02 Jun 2021 13:09:17 -0000 Subject: [Python-checkins] bpo-17792: more accurate error message for unbound variable access exceptions (GH-24976) Message-ID: https://github.com/python/cpython/commit/7b1f527d5b37dc3aa085ebbe11a1a2dd29ef210f commit: 7b1f527d5b37dc3aa085ebbe11a1a2dd29ef210f branch: main author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-02T14:09:04+01:00 summary: bpo-17792: more accurate error message for unbound variable access exceptions (GH-24976) files: A Misc/NEWS.d/next/Core and Builtins/2021-03-22-17-50-30.bpo-17792._zssjS.rst M Python/ceval.c diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-22-17-50-30.bpo-17792._zssjS.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-22-17-50-30.bpo-17792._zssjS.rst new file mode 100644 index 00000000000000..768cbf14efad9c --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-03-22-17-50-30.bpo-17792._zssjS.rst @@ -0,0 +1 @@ +More accurate error messages for access of unbound locals or free vars. diff --git a/Python/ceval.c b/Python/ceval.c index 3bbcfe9c237d88..4dff7bd2df9834 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -101,10 +101,10 @@ static int get_exception_handler(PyCodeObject *, int, int*, int*, int*); #define NAME_ERROR_MSG \ "name '%.200s' is not defined" #define UNBOUNDLOCAL_ERROR_MSG \ - "local variable '%.200s' referenced before assignment" + "cannot access local variable '%s' where it is not associated with a value" #define UNBOUNDFREE_ERROR_MSG \ - "free variable '%.200s' referenced before assignment" \ - " in enclosing scope" + "cannot access free variable '%s' where it is not associated with a" \ + " value in enclosing scope" /* Dynamic execution profile */ #ifdef DYNAMIC_EXECUTION_PROFILE From webhook-mailer at python.org Wed Jun 2 09:22:24 2021 From: webhook-mailer at python.org (pablogsal) Date: Wed, 02 Jun 2021 13:22:24 -0000 Subject: [Python-checkins] bpo-44165: pysqlite_statement_create now returns a Py object, not an int (GH-26484) Message-ID: https://github.com/python/cpython/commit/fbf25b8c0dd1e62db59117d53bbd2d4131a06867 commit: fbf25b8c0dd1e62db59117d53bbd2d4131a06867 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-02T14:22:15+01:00 summary: bpo-44165: pysqlite_statement_create now returns a Py object, not an int (GH-26484) GH-26206 was broken by GH-26475. files: M Modules/_sqlite/statement.c diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index c4a790c424e35..c86645ad42b64 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -70,7 +70,7 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) int max_length = sqlite3_limit(connection->db, SQLITE_LIMIT_LENGTH, -1); if (sql_cstr_len >= max_length) { PyErr_SetString(pysqlite_DataError, "query string is too large"); - return PYSQLITE_TOO_MUCH_SQL; + return NULL; } if (strlen(sql_cstr) != (size_t)sql_cstr_len) { PyErr_SetString(PyExc_ValueError, From webhook-mailer at python.org Wed Jun 2 10:54:58 2021 From: webhook-mailer at python.org (encukou) Date: Wed, 02 Jun 2021 14:54:58 -0000 Subject: [Python-checkins] bpo-44285: getpath.c: Assert that env_file is NULL during an error check (GH-26486) Message-ID: https://github.com/python/cpython/commit/bdb56902a3bfe12b10f85a941d5dd0eae739f1a8 commit: bdb56902a3bfe12b10f85a941d5dd0eae739f1a8 branch: main author: stratakis committer: encukou date: 2021-06-02T16:54:33+02:00 summary: bpo-44285: getpath.c: Assert that env_file is NULL during an error check (GH-26486) This was flagged by a static analyzer, but the logic of why this is NULL on error is hard to follow for humans as well. files: M Modules/getpath.c diff --git a/Modules/getpath.c b/Modules/getpath.c index 44453f29df703..363d62a0657eb 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -1263,6 +1263,7 @@ calculate_read_pyenv(PyCalculatePath *calculate) status = calculate_open_pyenv(calculate, &env_file); if (_PyStatus_EXCEPTION(status)) { + assert(env_file == NULL); return status; } if (env_file == NULL) { From webhook-mailer at python.org Wed Jun 2 11:00:33 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Wed, 02 Jun 2021 15:00:33 -0000 Subject: [Python-checkins] Typo fix in asyncio-eventloop.rst (GH-26482) Message-ID: https://github.com/python/cpython/commit/225caf78d1096355b7ab072898e28f7ea500ab0f commit: 225caf78d1096355b7ab072898e28f7ea500ab0f branch: main author: Zac Bentley committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-02T12:00:25-03:00 summary: Typo fix in asyncio-eventloop.rst (GH-26482) files: M Doc/library/asyncio-eventloop.rst diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst index f34fe09591c5b..83ab7360a9b6e 100644 --- a/Doc/library/asyncio-eventloop.rst +++ b/Doc/library/asyncio-eventloop.rst @@ -1440,7 +1440,7 @@ Do not instantiate the class directly. Start accepting connections. This method is idempotent, so it can be called when - the server is already being serving. + the server is already serving. The *start_serving* keyword-only parameter to :meth:`loop.create_server` and From webhook-mailer at python.org Wed Jun 2 13:34:54 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Wed, 02 Jun 2021 17:34:54 -0000 Subject: [Python-checkins] build(deps): bump actions/cache from 2.1.5 to 2.1.6 (GH-26476) Message-ID: https://github.com/python/cpython/commit/8916633b768e08af6375c7be9ea6c8ba9b3962b0 commit: 8916633b768e08af6375c7be9ea6c8ba9b3962b0 branch: main author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-02T14:34:45-03:00 summary: build(deps): bump actions/cache from 2.1.5 to 2.1.6 (GH-26476) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.5 to 2.1.6. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.5...v2.1.6) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> files: M .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 20d99a1c6ac919..aaa95dbec86c81 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,7 +150,7 @@ jobs: echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV - name: 'Restore OpenSSL build' id: cache-openssl - uses: actions/cache at v2.1.5 + uses: actions/cache at v2.1.6 with: path: ./multissl/openssl/${{ env.OPENSSL_VER }} key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} @@ -198,7 +198,7 @@ jobs: echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV - name: 'Restore OpenSSL build' id: cache-openssl - uses: actions/cache at v2.1.5 + uses: actions/cache at v2.1.6 with: path: ./multissl/openssl/${{ env.OPENSSL_VER }} key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} From webhook-mailer at python.org Wed Jun 2 16:25:36 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 02 Jun 2021 20:25:36 -0000 Subject: [Python-checkins] bpo-43921: Fix test_ssl.test_pha_required_nocert() (GH-26489) Message-ID: https://github.com/python/cpython/commit/320eaa7f42b413cd5e5436ec92d4dc5ba150395f commit: 320eaa7f42b413cd5e5436ec92d4dc5ba150395f branch: main author: Victor Stinner committer: vstinner date: 2021-06-02T22:25:26+02:00 summary: bpo-43921: Fix test_ssl.test_pha_required_nocert() (GH-26489) Fix test_pha_required_nocert() of test_ssl: catch two more EOF cases (when the recv() method returns an empty string). files: A Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 0d38d7756fdc72..2df62329411889 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -4460,11 +4460,18 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): '(certificate required|EOF occurred)' ): # receive CertificateRequest - self.assertEqual(s.recv(1024), b'OK\n') + data = s.recv(1024) + if not data: + raise ssl.SSLError(1, "EOF occurred") + self.assertEqual(data, b'OK\n') + # send empty Certificate + Finish s.write(b'HASCERT') + # receive alert - s.recv(1024) + data = s.recv(1024) + if not data: + raise ssl.SSLError(1, "EOF occurred") def test_pha_optional(self): if support.verbose: diff --git a/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst b/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst new file mode 100644 index 00000000000000..83146c78524671 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst @@ -0,0 +1,2 @@ +Fix test_pha_required_nocert() of test_ssl: catch two more EOF cases (when +the ``recv()`` method returns an empty string). Patch by Victor Stinner. From webhook-mailer at python.org Wed Jun 2 19:48:44 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 02 Jun 2021 23:48:44 -0000 Subject: [Python-checkins] bpo-43921: Fix test_ssl.test_pha_required_nocert() (GH-26489) Message-ID: https://github.com/python/cpython/commit/e5e93e6145090a636e67766a53b758d7ac78e3ad commit: e5e93e6145090a636e67766a53b758d7ac78e3ad branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-02T16:48:40-07:00 summary: bpo-43921: Fix test_ssl.test_pha_required_nocert() (GH-26489) Fix test_pha_required_nocert() of test_ssl: catch two more EOF cases (when the recv() method returns an empty string). (cherry picked from commit 320eaa7f42b413cd5e5436ec92d4dc5ba150395f) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 00d5eff81537d1..fbd0131ea4f410 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -4464,11 +4464,18 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): '(certificate required|EOF occurred)' ): # receive CertificateRequest - self.assertEqual(s.recv(1024), b'OK\n') + data = s.recv(1024) + if not data: + raise ssl.SSLError(1, "EOF occurred") + self.assertEqual(data, b'OK\n') + # send empty Certificate + Finish s.write(b'HASCERT') + # receive alert - s.recv(1024) + data = s.recv(1024) + if not data: + raise ssl.SSLError(1, "EOF occurred") def test_pha_optional(self): if support.verbose: diff --git a/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst b/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst new file mode 100644 index 00000000000000..83146c78524671 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst @@ -0,0 +1,2 @@ +Fix test_pha_required_nocert() of test_ssl: catch two more EOF cases (when +the ``recv()`` method returns an empty string). Patch by Victor Stinner. From webhook-mailer at python.org Wed Jun 2 19:50:43 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 02 Jun 2021 23:50:43 -0000 Subject: [Python-checkins] bpo-44285: getpath.c: Assert that env_file is NULL during an error check (GH-26486) Message-ID: https://github.com/python/cpython/commit/0e9af8cae314e4b0e770fe48d5f7b5f540c0b257 commit: 0e9af8cae314e4b0e770fe48d5f7b5f540c0b257 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-02T16:50:38-07:00 summary: bpo-44285: getpath.c: Assert that env_file is NULL during an error check (GH-26486) This was flagged by a static analyzer, but the logic of why this is NULL on error is hard to follow for humans as well. (cherry picked from commit bdb56902a3bfe12b10f85a941d5dd0eae739f1a8) Co-authored-by: stratakis files: M Modules/getpath.c diff --git a/Modules/getpath.c b/Modules/getpath.c index 44453f29df703a..363d62a0657ebd 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -1263,6 +1263,7 @@ calculate_read_pyenv(PyCalculatePath *calculate) status = calculate_open_pyenv(calculate, &env_file); if (_PyStatus_EXCEPTION(status)) { + assert(env_file == NULL); return status; } if (env_file == NULL) { From webhook-mailer at python.org Wed Jun 2 19:50:59 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 02 Jun 2021 23:50:59 -0000 Subject: [Python-checkins] bpo-44285: getpath.c: Assert that env_file is NULL during an error check (GH-26486) (GH-26496) Message-ID: https://github.com/python/cpython/commit/85b587a38dcf5d0ef1e275510001e22425d65977 commit: 85b587a38dcf5d0ef1e275510001e22425d65977 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2021-06-03T01:50:55+02:00 summary: bpo-44285: getpath.c: Assert that env_file is NULL during an error check (GH-26486) (GH-26496) This was flagged by a static analyzer, but the logic of why this is NULL on error is hard to follow for humans as well. (cherry picked from commit bdb56902a3bfe12b10f85a941d5dd0eae739f1a8) Co-authored-by: stratakis files: M Modules/getpath.c diff --git a/Modules/getpath.c b/Modules/getpath.c index 40358190a71b87..728ecad052e142 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -1263,6 +1263,7 @@ calculate_read_pyenv(PyCalculatePath *calculate) status = calculate_open_pyenv(calculate, &env_file); if (_PyStatus_EXCEPTION(status)) { + assert(env_file == NULL); return status; } if (env_file == NULL) { From webhook-mailer at python.org Wed Jun 2 19:53:48 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 02 Jun 2021 23:53:48 -0000 Subject: [Python-checkins] bpo-44282: Fix occasional test_incremental_editing failures on buildbots (GH-26491) Message-ID: https://github.com/python/cpython/commit/adef445dc34685648bd0ea1c125df2ef143912ed commit: adef445dc34685648bd0ea1c125df2ef143912ed branch: main author: Tal Einat <532281+taleinat at users.noreply.github.com> committer: vstinner date: 2021-06-03T01:53:41+02:00 summary: bpo-44282: Fix occasional test_incremental_editing failures on buildbots (GH-26491) Signed-off-by: Tal Einat <532281+taleinat at users.noreply.github.com> files: M Lib/idlelib/idle_test/test_colorizer.py M Lib/idlelib/idle_test/test_sidebar.py M Lib/idlelib/idle_test/tkinter_testing_utils.py diff --git a/Lib/idlelib/idle_test/test_colorizer.py b/Lib/idlelib/idle_test/test_colorizer.py index 498480a74e3551..b0b120e75a1553 100644 --- a/Lib/idlelib/idle_test/test_colorizer.py +++ b/Lib/idlelib/idle_test/test_colorizer.py @@ -551,7 +551,7 @@ def test_long_multiline_string(self): ''') self._assert_highlighting(source, {'STRING': [('1.0', '5.4')]}) - @run_in_tk_mainloop + @run_in_tk_mainloop(delay=50) def test_incremental_editing(self): text = self.text eq = self.assertEqual diff --git a/Lib/idlelib/idle_test/test_sidebar.py b/Lib/idlelib/idle_test/test_sidebar.py index 43e8137d7079c9..53ac3eb27335d7 100644 --- a/Lib/idlelib/idle_test/test_sidebar.py +++ b/Lib/idlelib/idle_test/test_sidebar.py @@ -510,19 +510,19 @@ def test_initial_state(self): ) self.assert_sidebar_lines_synced() - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_single_empty_input(self): self.do_input('\n') yield self.assert_sidebar_lines_end_with(['>>>', '>>>']) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_single_line_statement(self): self.do_input('1\n') yield self.assert_sidebar_lines_end_with(['>>>', None, '>>>']) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_multi_line_statement(self): # Block statements are not indented because IDLE auto-indents. self.do_input(dedent('''\ @@ -540,14 +540,14 @@ def test_multi_line_statement(self): '>>>', ]) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_single_long_line_wraps(self): self.do_input('1' * 200 + '\n') yield self.assert_sidebar_lines_end_with(['>>>', None, '>>>']) self.assert_sidebar_lines_synced() - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_squeeze_multi_line_output(self): shell = self.shell text = shell.text @@ -567,7 +567,7 @@ def test_squeeze_multi_line_output(self): self.assert_sidebar_lines_end_with(['>>>', None, None, None, '>>>']) self.assert_sidebar_lines_synced() - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_interrupt_recall_undo_redo(self): text = self.shell.text # Block statements are not indented because IDLE auto-indents. @@ -613,7 +613,7 @@ def test_interrupt_recall_undo_redo(self): ['>>>', '...', '...', '...', None, '>>>'] ) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_very_long_wrapped_line(self): with swap_attr(self.shell, 'squeezer', None): self.do_input('x = ' + '1'*10_000 + '\n') @@ -678,7 +678,7 @@ def get_sidebar_colors(): sidebar.update_colors() self.assertEqual(get_sidebar_colors(), test_colors) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_mousewheel(self): sidebar = self.shell.shell_sidebar text = self.shell.text @@ -703,7 +703,7 @@ def test_mousewheel(self): yield self.assertIsNotNone(text.dlineinfo(text.index(f'{last_lineno}.0'))) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_copy(self): sidebar = self.shell.shell_sidebar text = self.shell.text @@ -728,7 +728,7 @@ def test_copy(self): copied_text = text.clipboard_get() self.assertEqual(copied_text, selected_text) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_copy_with_prompts(self): sidebar = self.shell.shell_sidebar text = self.shell.text diff --git a/Lib/idlelib/idle_test/tkinter_testing_utils.py b/Lib/idlelib/idle_test/tkinter_testing_utils.py index a9f8386e2cd9f6..a89839bbe38add 100644 --- a/Lib/idlelib/idle_test/tkinter_testing_utils.py +++ b/Lib/idlelib/idle_test/tkinter_testing_utils.py @@ -2,7 +2,7 @@ import functools -def run_in_tk_mainloop(test_method): +def run_in_tk_mainloop(delay=1): """Decorator for running a test method with a real Tk mainloop. This starts a Tk mainloop before running the test, and stops it @@ -13,44 +13,50 @@ def run_in_tk_mainloop(test_method): using "yield" to allow the mainloop to process events and "after" callbacks, and then continue the test from that point. + The delay argument is passed into root.after(...) calls as the number + of ms to wait before passing execution back to the generator function. + This also assumes that the test class has a .root attribute, which is a tkinter.Tk object. For example (from test_sidebar.py): - @run_test_with_tk_mainloop + @run_test_with_tk_mainloop() def test_single_empty_input(self): self.do_input('\n') yield self.assert_sidebar_lines_end_with(['>>>', '>>>']) """ - @functools.wraps(test_method) - def new_test_method(self): - test_generator = test_method(self) - root = self.root - # Exceptions raised by self.assert...() need to be raised - # outside of the after() callback in order for the test - # harness to capture them. - exception = None - def after_callback(): - nonlocal exception - try: - next(test_generator) - except StopIteration: - root.quit() - except Exception as exc: - exception = exc - root.quit() - else: - # Schedule the Tk mainloop to call this function again, - # using a robust method of ensuring that it gets a - # chance to process queued events before doing so. - # See: https://stackoverflow.com/q/18499082#comment65004099_38817470 - root.after(1, root.after_idle, after_callback) - root.after(0, root.after_idle, after_callback) - root.mainloop() - - if exception: - raise exception - - return new_test_method + def decorator(test_method): + @functools.wraps(test_method) + def new_test_method(self): + test_generator = test_method(self) + root = self.root + # Exceptions raised by self.assert...() need to be raised + # outside of the after() callback in order for the test + # harness to capture them. + exception = None + def after_callback(): + nonlocal exception + try: + next(test_generator) + except StopIteration: + root.quit() + except Exception as exc: + exception = exc + root.quit() + else: + # Schedule the Tk mainloop to call this function again, + # using a robust method of ensuring that it gets a + # chance to process queued events before doing so. + # See: https://stackoverflow.com/q/18499082#comment65004099_38817470 + root.after(delay, root.after_idle, after_callback) + root.after(0, root.after_idle, after_callback) + root.mainloop() + + if exception: + raise exception + + return new_test_method + + return decorator From webhook-mailer at python.org Wed Jun 2 20:14:50 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Jun 2021 00:14:50 -0000 Subject: [Python-checkins] bpo-44282: Fix occasional test_incremental_editing failures on buildbots (GH-26491) (GH-26499) Message-ID: https://github.com/python/cpython/commit/9c89d62073fa0bcfe68e59add5b55fbcbf7672ab commit: 9c89d62073fa0bcfe68e59add5b55fbcbf7672ab branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2021-06-03T02:14:41+02:00 summary: bpo-44282: Fix occasional test_incremental_editing failures on buildbots (GH-26491) (GH-26499) Signed-off-by: Tal Einat <532281+taleinat at users.noreply.github.com> (cherry picked from commit adef445dc34685648bd0ea1c125df2ef143912ed) Co-authored-by: Tal Einat <532281+taleinat at users.noreply.github.com> files: M Lib/idlelib/idle_test/test_colorizer.py M Lib/idlelib/idle_test/test_sidebar.py M Lib/idlelib/idle_test/tkinter_testing_utils.py diff --git a/Lib/idlelib/idle_test/test_colorizer.py b/Lib/idlelib/idle_test/test_colorizer.py index 498480a74e3551..b0b120e75a1553 100644 --- a/Lib/idlelib/idle_test/test_colorizer.py +++ b/Lib/idlelib/idle_test/test_colorizer.py @@ -551,7 +551,7 @@ def test_long_multiline_string(self): ''') self._assert_highlighting(source, {'STRING': [('1.0', '5.4')]}) - @run_in_tk_mainloop + @run_in_tk_mainloop(delay=50) def test_incremental_editing(self): text = self.text eq = self.assertEqual diff --git a/Lib/idlelib/idle_test/test_sidebar.py b/Lib/idlelib/idle_test/test_sidebar.py index 43e8137d7079c9..53ac3eb27335d7 100644 --- a/Lib/idlelib/idle_test/test_sidebar.py +++ b/Lib/idlelib/idle_test/test_sidebar.py @@ -510,19 +510,19 @@ def test_initial_state(self): ) self.assert_sidebar_lines_synced() - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_single_empty_input(self): self.do_input('\n') yield self.assert_sidebar_lines_end_with(['>>>', '>>>']) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_single_line_statement(self): self.do_input('1\n') yield self.assert_sidebar_lines_end_with(['>>>', None, '>>>']) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_multi_line_statement(self): # Block statements are not indented because IDLE auto-indents. self.do_input(dedent('''\ @@ -540,14 +540,14 @@ def test_multi_line_statement(self): '>>>', ]) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_single_long_line_wraps(self): self.do_input('1' * 200 + '\n') yield self.assert_sidebar_lines_end_with(['>>>', None, '>>>']) self.assert_sidebar_lines_synced() - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_squeeze_multi_line_output(self): shell = self.shell text = shell.text @@ -567,7 +567,7 @@ def test_squeeze_multi_line_output(self): self.assert_sidebar_lines_end_with(['>>>', None, None, None, '>>>']) self.assert_sidebar_lines_synced() - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_interrupt_recall_undo_redo(self): text = self.shell.text # Block statements are not indented because IDLE auto-indents. @@ -613,7 +613,7 @@ def test_interrupt_recall_undo_redo(self): ['>>>', '...', '...', '...', None, '>>>'] ) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_very_long_wrapped_line(self): with swap_attr(self.shell, 'squeezer', None): self.do_input('x = ' + '1'*10_000 + '\n') @@ -678,7 +678,7 @@ def get_sidebar_colors(): sidebar.update_colors() self.assertEqual(get_sidebar_colors(), test_colors) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_mousewheel(self): sidebar = self.shell.shell_sidebar text = self.shell.text @@ -703,7 +703,7 @@ def test_mousewheel(self): yield self.assertIsNotNone(text.dlineinfo(text.index(f'{last_lineno}.0'))) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_copy(self): sidebar = self.shell.shell_sidebar text = self.shell.text @@ -728,7 +728,7 @@ def test_copy(self): copied_text = text.clipboard_get() self.assertEqual(copied_text, selected_text) - @run_in_tk_mainloop + @run_in_tk_mainloop() def test_copy_with_prompts(self): sidebar = self.shell.shell_sidebar text = self.shell.text diff --git a/Lib/idlelib/idle_test/tkinter_testing_utils.py b/Lib/idlelib/idle_test/tkinter_testing_utils.py index a9f8386e2cd9f6..a89839bbe38add 100644 --- a/Lib/idlelib/idle_test/tkinter_testing_utils.py +++ b/Lib/idlelib/idle_test/tkinter_testing_utils.py @@ -2,7 +2,7 @@ import functools -def run_in_tk_mainloop(test_method): +def run_in_tk_mainloop(delay=1): """Decorator for running a test method with a real Tk mainloop. This starts a Tk mainloop before running the test, and stops it @@ -13,44 +13,50 @@ def run_in_tk_mainloop(test_method): using "yield" to allow the mainloop to process events and "after" callbacks, and then continue the test from that point. + The delay argument is passed into root.after(...) calls as the number + of ms to wait before passing execution back to the generator function. + This also assumes that the test class has a .root attribute, which is a tkinter.Tk object. For example (from test_sidebar.py): - @run_test_with_tk_mainloop + @run_test_with_tk_mainloop() def test_single_empty_input(self): self.do_input('\n') yield self.assert_sidebar_lines_end_with(['>>>', '>>>']) """ - @functools.wraps(test_method) - def new_test_method(self): - test_generator = test_method(self) - root = self.root - # Exceptions raised by self.assert...() need to be raised - # outside of the after() callback in order for the test - # harness to capture them. - exception = None - def after_callback(): - nonlocal exception - try: - next(test_generator) - except StopIteration: - root.quit() - except Exception as exc: - exception = exc - root.quit() - else: - # Schedule the Tk mainloop to call this function again, - # using a robust method of ensuring that it gets a - # chance to process queued events before doing so. - # See: https://stackoverflow.com/q/18499082#comment65004099_38817470 - root.after(1, root.after_idle, after_callback) - root.after(0, root.after_idle, after_callback) - root.mainloop() - - if exception: - raise exception - - return new_test_method + def decorator(test_method): + @functools.wraps(test_method) + def new_test_method(self): + test_generator = test_method(self) + root = self.root + # Exceptions raised by self.assert...() need to be raised + # outside of the after() callback in order for the test + # harness to capture them. + exception = None + def after_callback(): + nonlocal exception + try: + next(test_generator) + except StopIteration: + root.quit() + except Exception as exc: + exception = exc + root.quit() + else: + # Schedule the Tk mainloop to call this function again, + # using a robust method of ensuring that it gets a + # chance to process queued events before doing so. + # See: https://stackoverflow.com/q/18499082#comment65004099_38817470 + root.after(delay, root.after_idle, after_callback) + root.after(0, root.after_idle, after_callback) + root.mainloop() + + if exception: + raise exception + + return new_test_method + + return decorator From webhook-mailer at python.org Wed Jun 2 20:25:23 2021 From: webhook-mailer at python.org (ned-deily) Date: Thu, 03 Jun 2021 00:25:23 -0000 Subject: [Python-checkins] [3.9] bpo-43568: Relax distutils MACOSX_DEPLOYMENT_TARGET check (GH-25827) (GH-26001) Message-ID: https://github.com/python/cpython/commit/991693a217363243b0bd33887852d6b3959b99a1 commit: 991693a217363243b0bd33887852d6b3959b99a1 branch: 3.9 author: Joshua Root committer: ned-deily date: 2021-06-02T20:25:15-04:00 summary: [3.9] bpo-43568: Relax distutils MACOSX_DEPLOYMENT_TARGET check (GH-25827) (GH-26001) Only complain if the config target is >= 10.3 and the current target is < 10.3. The check was originally added to ensure that incompatible LDSHARED flags are not used, because '-undefined dynamic_lookup' is used when building for 10.3 and later, and is not supported on older OS versions. Apart from that, there should be no problem in general with using an older target. In particular, this allows targeting macOS 11.0 when Python was built for a newer minor version like 11.3. (manually cherry picked from part of commit 8703178) files: A Misc/NEWS.d/next/macOS/2021-06-02-19-21-13.bpo-43568.viomLm.rst M Lib/distutils/spawn.py diff --git a/Lib/distutils/spawn.py b/Lib/distutils/spawn.py index 0d1bd0391e6f11..31df3f7faca552 100644 --- a/Lib/distutils/spawn.py +++ b/Lib/distutils/spawn.py @@ -59,13 +59,17 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0): if _cfg_target: _cfg_target_split = [int(x) for x in _cfg_target.split('.')] if _cfg_target: - # ensure that the deployment target of build process is not less - # than that used when the interpreter was built. This ensures - # extension modules are built with correct compatibility values + # Ensure that the deployment target of the build process is not + # less than 10.3 if the interpreter was built for 10.3 or later. + # This ensures extension modules are built with correct + # compatibility values, specifically LDSHARED which can use + # '-undefined dynamic_lookup' which only works on >= 10.3. cur_target = os.environ.get('MACOSX_DEPLOYMENT_TARGET', _cfg_target) - if _cfg_target_split > [int(x) for x in cur_target.split('.')]: + cur_target_split = [int(x) for x in cur_target.split('.')] + if _cfg_target_split[:2] >= [10, 3] and cur_target_split[:2] < [10, 3]: my_msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: ' - 'now "%s" but "%s" during configure' + 'now "%s" but "%s" during configure;' + 'must use 10.3 or later' % (cur_target, _cfg_target)) raise DistutilsPlatformError(my_msg) env = dict(os.environ, diff --git a/Misc/NEWS.d/next/macOS/2021-06-02-19-21-13.bpo-43568.viomLm.rst b/Misc/NEWS.d/next/macOS/2021-06-02-19-21-13.bpo-43568.viomLm.rst new file mode 100644 index 00000000000000..57757ba1ed0509 --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2021-06-02-19-21-13.bpo-43568.viomLm.rst @@ -0,0 +1,2 @@ +Relax unnecessarily restrictive MACOSX_DEPLOYMENT_TARGET check when building +extension modules for macOS. Patch by Joshua Root. From webhook-mailer at python.org Wed Jun 2 23:43:49 2021 From: webhook-mailer at python.org (gpshead) Date: Thu, 03 Jun 2021 03:43:49 -0000 Subject: [Python-checkins] bpo-44022: Improve the regression test. (GH-26503) Message-ID: https://github.com/python/cpython/commit/e60ab843cbb016fb6ff8b4f418641ac05a9b2fcc commit: e60ab843cbb016fb6ff8b4f418641ac05a9b2fcc branch: main author: Gregory P. Smith committer: gpshead date: 2021-06-02T20:43:38-07:00 summary: bpo-44022: Improve the regression test. (GH-26503) It wasn't actually detecting the regression due to the assertion being too lenient. files: M Lib/test/test_httplib.py diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index e9272569ecc53..8265b8d1d6d2d 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -1186,7 +1186,12 @@ def test_overflowing_header_limit_after_100(self): 'r\n' * 32768 ) resp = client.HTTPResponse(FakeSocket(body)) - self.assertRaises(client.HTTPException, resp.begin) + with self.assertRaises(client.HTTPException) as cm: + resp.begin() + # We must assert more because other reasonable errors that we + # do not want can also be HTTPException derived. + self.assertIn('got more than ', str(cm.exception)) + self.assertIn('headers', str(cm.exception)) def test_overflowing_chunked_line(self): body = ( From webhook-mailer at python.org Wed Jun 2 23:45:42 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Jun 2021 03:45:42 -0000 Subject: [Python-checkins] Add bpo-42914 to What's New (GH-25124) Message-ID: https://github.com/python/cpython/commit/4846ea95d1a121df5e8081e2a290f63d1419cad8 commit: 4846ea95d1a121df5e8081e2a290f63d1419cad8 branch: main author: Wm. Keith van der Meulen committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-02T20:45:34-07:00 summary: Add bpo-42914 to What's New (GH-25124) BPO-42914 was not added to the What's New in #24864. This includes it in the "Improved Modules" section. Automerge-Triggered-By: GH:gpshead files: M Doc/whatsnew/3.10.rst M Misc/ACKS diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 5b5903cb059356..92247e153627d0 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1137,6 +1137,9 @@ identification from `freedesktop.org os-release pprint ------ +:func:`pprint.pprint` now accepts a new ``underscore_numbers`` keyword argument. +(Contributed by sblondon in :issue:`42914`.) + :mod:`pprint` can now pretty-print :class:`dataclasses.dataclass` instances. (Contributed by Lewis Gaul in :issue:`43080`.) diff --git a/Misc/ACKS b/Misc/ACKS index b023bcb6d72fd3..0cb738b3a12ee4 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1821,6 +1821,7 @@ Andi Vajda Case Van Horsen John Mark Vandenberg Kyle VanderBeek +Wm. Keith van der Meulen Eric N. Vander Weele Andrew Vant Atul Varma From webhook-mailer at python.org Thu Jun 3 00:04:29 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Jun 2021 04:04:29 -0000 Subject: [Python-checkins] bpo-44022: Improve the regression test. (GH-26503) Message-ID: https://github.com/python/cpython/commit/98e5a7975d99b58d511f171816ecdfb13d5cca18 commit: 98e5a7975d99b58d511f171816ecdfb13d5cca18 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-02T21:04:20-07:00 summary: bpo-44022: Improve the regression test. (GH-26503) It wasn't actually detecting the regression due to the assertion being too lenient. (cherry picked from commit e60ab843cbb016fb6ff8b4f418641ac05a9b2fcc) Co-authored-by: Gregory P. Smith files: M Lib/test/test_httplib.py diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index e9272569ecc53..8265b8d1d6d2d 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -1186,7 +1186,12 @@ def test_overflowing_header_limit_after_100(self): 'r\n' * 32768 ) resp = client.HTTPResponse(FakeSocket(body)) - self.assertRaises(client.HTTPException, resp.begin) + with self.assertRaises(client.HTTPException) as cm: + resp.begin() + # We must assert more because other reasonable errors that we + # do not want can also be HTTPException derived. + self.assertIn('got more than ', str(cm.exception)) + self.assertIn('headers', str(cm.exception)) def test_overflowing_chunked_line(self): body = ( From webhook-mailer at python.org Thu Jun 3 00:05:47 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Jun 2021 04:05:47 -0000 Subject: [Python-checkins] Add bpo-42914 to What's New (GH-25124) Message-ID: https://github.com/python/cpython/commit/41317801a95c758c3fc04c4fb332ac453c9e3ad3 commit: 41317801a95c758c3fc04c4fb332ac453c9e3ad3 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-02T21:05:41-07:00 summary: Add bpo-42914 to What's New (GH-25124) BPO-42914 was not added to the What's New in GH-24864. This includes it in the "Improved Modules" section. Automerge-Triggered-By: GH:gpshead (cherry picked from commit 4846ea95d1a121df5e8081e2a290f63d1419cad8) Co-authored-by: Wm. Keith van der Meulen files: M Doc/whatsnew/3.10.rst M Misc/ACKS diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 1bf44511e21f68..beaa81a28678d4 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1137,6 +1137,9 @@ identification from `freedesktop.org os-release pprint ------ +:func:`pprint.pprint` now accepts a new ``underscore_numbers`` keyword argument. +(Contributed by sblondon in :issue:`42914`.) + :mod:`pprint` can now pretty-print :class:`dataclasses.dataclass` instances. (Contributed by Lewis Gaul in :issue:`43080`.) diff --git a/Misc/ACKS b/Misc/ACKS index b023bcb6d72fd3..0cb738b3a12ee4 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1821,6 +1821,7 @@ Andi Vajda Case Van Horsen John Mark Vandenberg Kyle VanderBeek +Wm. Keith van der Meulen Eric N. Vander Weele Andrew Vant Atul Varma From webhook-mailer at python.org Thu Jun 3 00:10:31 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Jun 2021 04:10:31 -0000 Subject: [Python-checkins] bpo-44022: Improve the regression test. (GH-26503) Message-ID: https://github.com/python/cpython/commit/5df4abd6b033a5f1e48945c6988b45e35e76f647 commit: 5df4abd6b033a5f1e48945c6988b45e35e76f647 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-02T21:10:22-07:00 summary: bpo-44022: Improve the regression test. (GH-26503) It wasn't actually detecting the regression due to the assertion being too lenient. (cherry picked from commit e60ab843cbb016fb6ff8b4f418641ac05a9b2fcc) Co-authored-by: Gregory P. Smith files: M Lib/test/test_httplib.py diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 753590afffe624..506ab9fcf488a0 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -1011,7 +1011,12 @@ def test_overflowing_header_limit_after_100(self): 'r\n' * 32768 ) resp = client.HTTPResponse(FakeSocket(body)) - self.assertRaises(client.HTTPException, resp.begin) + with self.assertRaises(client.HTTPException) as cm: + resp.begin() + # We must assert more because other reasonable errors that we + # do not want can also be HTTPException derived. + self.assertIn('got more than ', str(cm.exception)) + self.assertIn('headers', str(cm.exception)) def test_overflowing_chunked_line(self): body = ( From webhook-mailer at python.org Thu Jun 3 00:15:34 2021 From: webhook-mailer at python.org (gpshead) Date: Thu, 03 Jun 2021 04:15:34 -0000 Subject: [Python-checkins] [3.9] bpo-43776: Remove list call from args in Popen repr (GH-25338) (GH-26510) Message-ID: https://github.com/python/cpython/commit/5a8ddcc4524dca3880d7fc2818814ffae1cfb8a2 commit: 5a8ddcc4524dca3880d7fc2818814ffae1cfb8a2 branch: 3.9 author: Gregory P. Smith committer: gpshead date: 2021-06-02T21:15:26-07:00 summary: [3.9] bpo-43776: Remove list call from args in Popen repr (GH-25338) (GH-26510) Removes the `list` call in the Popen `repr`. Current implementation: For cmd = `python --version`, with `shell=True`. ```bash ``` For `shell=False` and args=`['python', '--version']`, the output is correct: ```bash ``` With the new changes the `repr` yields: For cmd = `python --version`, with `shell=True`: ```bash ``` For `shell=False` and args=`['python', '--version']`, the output: ```bash ``` Automerge-Triggered-By: GH:gpshead. (cherry picked from commit db0c5b786df961785ae8c803f5572ae0c8dadcc7) Co-authored-by: M. Kocher Co-authored-by: M. Kocher files: A Misc/NEWS.d/next/Library/2021-04-12-00-00-00.bpo-43776.p14y7a.rst M Lib/subprocess.py M Lib/test/test_subprocess.py diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 0311e3a1f83e8f..4effc1d8b3fba9 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -989,7 +989,7 @@ def __init__(self, args, bufsize=-1, executable=None, def __repr__(self): obj_repr = ( f"<{self.__class__.__name__}: " - f"returncode: {self.returncode} args: {list(self.args)!r}>" + f"returncode: {self.returncode} args: {self.args!r}>" ) if len(obj_repr) > 80: obj_repr = obj_repr[:76] + "...>" diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index e8f9699ef76350..ed04813384a5d6 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -20,6 +20,7 @@ import gc import textwrap import json +import pathlib from test.support import FakePath try: @@ -1373,28 +1374,23 @@ def test_communicate_epipe(self): p.communicate(b"x" * 2**20) def test_repr(self): - # Run a command that waits for user input, to check the repr() of - # a Proc object while and after the sub-process runs. - code = 'import sys; input(); sys.exit(57)' - cmd = [sys.executable, '-c', code] - result = "') - ) - - proc.communicate(input='exit...\n') - proc.wait() - - self.assertIsNotNone(proc.returncode) - self.assertTrue( - repr(proc).startswith(result.format(proc.returncode)) and - repr(proc).endswith('>') - ) + path_cmd = pathlib.Path("my-tool.py") + pathlib_cls = path_cmd.__class__.__name__ + + cases = [ + ("ls", True, 123, ""), + ('a' * 100, True, 0, + ""), + (["ls"], False, None, ""), + (["ls", '--my-opts', 'a' * 100], False, None, + ""), + (path_cmd, False, 7, f"") + ] + with unittest.mock.patch.object(subprocess.Popen, '_execute_child'): + for cmd, shell, code, sx in cases: + p = subprocess.Popen(cmd, shell=shell) + p.returncode = code + self.assertEqual(repr(p), sx) def test_communicate_epipe_only_stdin(self): # Issue 10963: communicate() should hide EPIPE diff --git a/Misc/NEWS.d/next/Library/2021-04-12-00-00-00.bpo-43776.p14y7a.rst b/Misc/NEWS.d/next/Library/2021-04-12-00-00-00.bpo-43776.p14y7a.rst new file mode 100644 index 00000000000000..51bc791f10d31a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-04-12-00-00-00.bpo-43776.p14y7a.rst @@ -0,0 +1 @@ +When :class:`subprocess.Popen` args are provided as a string or as :class:`pathlib.Path`, the Popen instance repr now shows the right thing. \ No newline at end of file From webhook-mailer at python.org Thu Jun 3 00:23:49 2021 From: webhook-mailer at python.org (ned-deily) Date: Thu, 03 Jun 2021 04:23:49 -0000 Subject: [Python-checkins] bpo-44022: Improve the regression test. (GH-26503) (GH-26507) Message-ID: https://github.com/python/cpython/commit/fee96422e6f0056561cf74fef2012cc066c9db86 commit: fee96422e6f0056561cf74fef2012cc066c9db86 branch: 3.7 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ned-deily date: 2021-06-03T00:23:40-04:00 summary: bpo-44022: Improve the regression test. (GH-26503) (GH-26507) It wasn't actually detecting the regression due to the assertion being too lenient. (cherry picked from commit e60ab843cbb016fb6ff8b4f418641ac05a9b2fcc) Co-authored-by: Gregory P. Smith files: M Lib/test/test_httplib.py diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 8333aa0eeef6ac..a65044eea60dc0 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -1004,7 +1004,12 @@ def test_overflowing_header_limit_after_100(self): 'r\n' * 32768 ) resp = client.HTTPResponse(FakeSocket(body)) - self.assertRaises(client.HTTPException, resp.begin) + with self.assertRaises(client.HTTPException) as cm: + resp.begin() + # We must assert more because other reasonable errors that we + # do not want can also be HTTPException derived. + self.assertIn('got more than ', str(cm.exception)) + self.assertIn('headers', str(cm.exception)) def test_overflowing_chunked_line(self): body = ( From webhook-mailer at python.org Thu Jun 3 00:38:39 2021 From: webhook-mailer at python.org (ned-deily) Date: Thu, 03 Jun 2021 04:38:39 -0000 Subject: [Python-checkins] bpo-44022: Improve the regression test. (GH-26503) (GH-26508) Message-ID: https://github.com/python/cpython/commit/1b6f4e5e13ebd1f957b47f7415b53d0869bdbac6 commit: 1b6f4e5e13ebd1f957b47f7415b53d0869bdbac6 branch: 3.6 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ned-deily date: 2021-06-03T00:38:31-04:00 summary: bpo-44022: Improve the regression test. (GH-26503) (GH-26508) It wasn't actually detecting the regression due to the assertion being too lenient. (cherry picked from commit e60ab843cbb016fb6ff8b4f418641ac05a9b2fcc) Co-authored-by: Gregory P. Smith files: M Lib/test/test_httplib.py diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 0db287507c7bfe..0b42923ce663e1 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -977,7 +977,12 @@ def test_overflowing_header_limit_after_100(self): 'r\n' * 32768 ) resp = client.HTTPResponse(FakeSocket(body)) - self.assertRaises(client.HTTPException, resp.begin) + with self.assertRaises(client.HTTPException) as cm: + resp.begin() + # We must assert more because other reasonable errors that we + # do not want can also be HTTPException derived. + self.assertIn('got more than ', str(cm.exception)) + self.assertIn('headers', str(cm.exception)) def test_overflowing_chunked_line(self): body = ( From webhook-mailer at python.org Thu Jun 3 04:13:17 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Jun 2021 08:13:17 -0000 Subject: [Python-checkins] bpo-43858: Add logging.getLevelNamesMapping() (GH-26459) Message-ID: https://github.com/python/cpython/commit/8b93f0e696d3fc60fd311c13d5238da73a35e3b3 commit: 8b93f0e696d3fc60fd311c13d5238da73a35e3b3 branch: main author: andrei kulakov committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-03T01:12:59-07:00 summary: bpo-43858: Add logging.getLevelNamesMapping() (GH-26459) Added a function that returns a copy of a dict of logging levels. files: A Misc/NEWS.d/next/Library/2021-05-31-04-51-02.bpo-43858.r7LOu6.rst M Doc/library/logging.rst M Lib/logging/__init__.py M Lib/test/test_logging.py diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index 70a703dde18a03..313cff4ff9658f 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -1111,6 +1111,14 @@ functions. .. note:: If you are thinking of defining your own levels, please see the section on :ref:`custom-levels`. +.. function:: getLevelNamesMapping() + + Returns a mapping from level names to their corresponding logging levels. For example, the + string "CRITICAL" maps to :const:`CRITICAL`. The returned mapping is copied from an internal + mapping on each call to this function. + + .. versionadded:: 3.11 + .. function:: getLevelName(level) Returns the textual or numeric representation of logging level *level*. diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 7865b71c8737b4..3538f0670aa3c8 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -37,7 +37,7 @@ 'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass', 'info', 'log', 'makeLogRecord', 'setLoggerClass', 'shutdown', 'warn', 'warning', 'getLogRecordFactory', 'setLogRecordFactory', - 'lastResort', 'raiseExceptions'] + 'lastResort', 'raiseExceptions', 'getLevelNamesMapping'] import threading @@ -116,6 +116,9 @@ 'NOTSET': NOTSET, } +def getLevelNamesMapping(): + return _nameToLevel.copy() + def getLevelName(level): """ Return the textual or numeric representation of logging level 'level'. diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index ee00a32026f65e..6d111908e7c395 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -4390,6 +4390,14 @@ def rec(): self.assertNotIn("Cannot recover from stack overflow.", err) self.assertEqual(rc, 1) + def test_get_level_names_mapping(self): + mapping = logging.getLevelNamesMapping() + self.assertEqual(logging._nameToLevel, mapping) # value is equivalent + self.assertIsNot(logging._nameToLevel, mapping) # but not the internal data + new_mapping = logging.getLevelNamesMapping() # another call -> another copy + self.assertIsNot(mapping, new_mapping) # verify not the same object as before + self.assertEqual(mapping, new_mapping) # but equivalent in value + class LogRecordTest(BaseTest): def test_str_rep(self): diff --git a/Misc/NEWS.d/next/Library/2021-05-31-04-51-02.bpo-43858.r7LOu6.rst b/Misc/NEWS.d/next/Library/2021-05-31-04-51-02.bpo-43858.r7LOu6.rst new file mode 100644 index 00000000000000..d864e1b4e51e3d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-05-31-04-51-02.bpo-43858.r7LOu6.rst @@ -0,0 +1 @@ +Added a function that returns a copy of a dict of logging levels: :func:`logging.getLevelNamesMapping` From webhook-mailer at python.org Thu Jun 3 09:33:52 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Thu, 03 Jun 2021 13:33:52 -0000 Subject: [Python-checkins] bpo-39560: Document PyUnicode_FromKindAndData() kind transformation (GH-23848) Message-ID: https://github.com/python/cpython/commit/4eed2821d40373345ed133b2b8d912fef59acab7 commit: 4eed2821d40373345ed133b2b8d912fef59acab7 branch: main author: Zackery Spytz committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-03T10:33:44-03:00 summary: bpo-39560: Document PyUnicode_FromKindAndData() kind transformation (GH-23848) files: M Doc/c-api/unicode.rst diff --git a/Doc/c-api/unicode.rst b/Doc/c-api/unicode.rst index 8322d3da76dca4..ddc2346e92dc08 100644 --- a/Doc/c-api/unicode.rst +++ b/Doc/c-api/unicode.rst @@ -421,6 +421,12 @@ APIs: :c:func:`PyUnicode_KIND`). The *buffer* must point to an array of *size* units of 1, 2 or 4 bytes per character, as given by the kind. + If necessary, the input *buffer* is copied and transformed into the + canonical representation. For example, if the *buffer* is a UCS4 string + (:c:macro:`PyUnicode_4BYTE_KIND`) and it consists only of codepoints in + the UCS1 range, it will be transformed into UCS1 + (:c:macro:`PyUnicode_1BYTE_KIND`). + .. versionadded:: 3.3 From webhook-mailer at python.org Thu Jun 3 11:46:07 2021 From: webhook-mailer at python.org (markshannon) Date: Thu, 03 Jun 2021 15:46:07 -0000 Subject: [Python-checkins] bpo-44298: Fix line numbers for early exits in with statements. (GH-26513) Message-ID: https://github.com/python/cpython/commit/937cebc93b4922583218e0cbf0a9a14705a595b2 commit: 937cebc93b4922583218e0cbf0a9a14705a595b2 branch: main author: Mark Shannon committer: markshannon date: 2021-06-03T16:45:58+01:00 summary: bpo-44298: Fix line numbers for early exits in with statements. (GH-26513) files: M Lib/test/test_sys_settrace.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index 578726957f391..5f2b908d87acb 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -995,6 +995,52 @@ def func(): (5, 'line'), (5, 'return')]) + def test_early_exit_with(self): + + class C: + def __enter__(self): + return self + def __exit__(*args): + pass + + def func_break(): + for i in (1,2): + with C(): + break + pass + + def func_return(): + with C(): + return + + self.run_and_compare(func_break, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (-5, 'call'), + (-4, 'line'), + (-4, 'return'), + (3, 'line'), + (2, 'line'), + (-3, 'call'), + (-2, 'line'), + (-2, 'return'), + (4, 'line'), + (4, 'return')]) + + self.run_and_compare(func_return, + [(0, 'call'), + (1, 'line'), + (-11, 'call'), + (-10, 'line'), + (-10, 'return'), + (2, 'line'), + (1, 'line'), + (-9, 'call'), + (-8, 'line'), + (-8, 'return'), + (1, 'return')]) + class SkipLineEventsTraceTestCase(TraceTestCase): """Repeat the trace tests, but with per-line events skipped""" diff --git a/Python/compile.c b/Python/compile.c index 2cbe1eca5aeb3..03d522b34f113 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1796,7 +1796,6 @@ static int compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, int preserve_tos) { - int loc; switch (info->fb_type) { case WHILE_LOOP: case EXCEPTION_HANDLER: @@ -1850,7 +1849,6 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, case WITH: case ASYNC_WITH: - loc = c->u->u_lineno; SET_LOC(c, (stmt_ty)info->fb_datum); ADDOP(c, POP_BLOCK); if (preserve_tos) { @@ -1865,7 +1863,10 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, ADDOP(c, YIELD_FROM); } ADDOP(c, POP_TOP); - c->u->u_lineno = loc; + /* The exit block should appear to execute after the + * statement causing the unwinding, so make the unwinding + * instruction artificial */ + c->u->u_lineno = -1; return 1; case HANDLER_CLEANUP: @@ -3020,12 +3021,17 @@ compiler_return(struct compiler *c, stmt_ty s) if (preserve_tos) { VISIT(c, expr, s->v.Return.value); } else { - /* Emit instruction with line number for expression */ + /* Emit instruction with line number for return value */ if (s->v.Return.value != NULL) { SET_LOC(c, s->v.Return.value); ADDOP(c, NOP); } } + if (s->v.Return.value == NULL || s->v.Return.value->lineno != s->lineno) { + SET_LOC(c, s); + ADDOP(c, NOP); + } + if (!compiler_unwind_fblock_stack(c, preserve_tos, NULL)) return 0; if (s->v.Return.value == NULL) { @@ -3044,6 +3050,8 @@ static int compiler_break(struct compiler *c) { struct fblockinfo *loop = NULL; + /* Emit instruction with line number */ + ADDOP(c, NOP); if (!compiler_unwind_fblock_stack(c, 0, &loop)) { return 0; } @@ -3062,6 +3070,8 @@ static int compiler_continue(struct compiler *c) { struct fblockinfo *loop = NULL; + /* Emit instruction with line number */ + ADDOP(c, NOP); if (!compiler_unwind_fblock_stack(c, 0, &loop)) { return 0; } @@ -4306,7 +4316,7 @@ maybe_optimize_method_call(struct compiler *c, expr_ty e) ADDOP_I(c, CALL_METHOD_KW, argsl + kwdsl); } else { - ADDOP_I(c, CALL_METHOD, argsl); + ADDOP_I(c, CALL_METHOD, argsl); } c->u->u_lineno = old_lineno; return 1; @@ -4473,7 +4483,7 @@ compiler_subkwargs(struct compiler *c, asdl_keyword_seq *keywords, Py_ssize_t be return 1; } -/* Used by compiler_call_helper and maybe_optimize_method_call to emit +/* Used by compiler_call_helper and maybe_optimize_method_call to emit LOAD_CONST kw1 LOAD_CONST kw2 ... @@ -4484,7 +4494,7 @@ Returns 1 on success, 0 on error. */ static int compiler_call_simple_kw_helper(struct compiler *c, - asdl_keyword_seq *keywords, + asdl_keyword_seq *keywords, Py_ssize_t nkwelts) { PyObject *names; diff --git a/Python/importlib.h b/Python/importlib.h index 4746d9f0d714f..8637b097135ed 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -149,1048 +149,1189 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,8,1,4,6,10,1,2,242,114,18,0,0,0,122,24, 95,77,111,100,117,108,101,76,111,99,107,46,104,97,115,95, 100,101,97,100,108,111,99,107,99,1,0,0,0,0,0,0, - 0,0,0,0,0,9,0,0,0,67,0,0,0,115,206,0, + 0,0,0,0,0,9,0,0,0,67,0,0,0,115,204,0, 0,0,116,0,160,1,161,0,125,1,124,0,116,2,124,1, 60,0,9,0,9,0,124,0,106,3,53,0,1,0,124,0, 106,4,100,2,107,2,115,24,124,0,106,5,124,1,107,2, - 114,46,124,1,124,0,95,5,124,0,4,0,106,4,100,3, + 114,45,124,1,124,0,95,5,124,0,4,0,106,4,100,3, 55,0,2,0,95,4,9,0,100,4,4,0,4,0,131,3, - 1,0,9,0,116,2,124,1,61,0,100,1,83,0,124,0, - 160,6,161,0,114,56,116,7,100,5,124,0,22,0,131,1, - 130,1,124,0,106,8,160,9,100,6,161,1,114,69,124,0, - 4,0,106,10,100,3,55,0,2,0,95,10,100,4,4,0, - 4,0,131,3,1,0,110,11,35,0,49,0,115,80,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,0, - 106,8,160,9,161,0,1,0,124,0,106,8,160,11,161,0, - 1,0,113,10,35,0,116,2,124,1,61,0,119,0,37,0, - 41,7,122,185,10,32,32,32,32,32,32,32,32,65,99,113, - 117,105,114,101,32,116,104,101,32,109,111,100,117,108,101,32, - 108,111,99,107,46,32,32,73,102,32,97,32,112,111,116,101, - 110,116,105,97,108,32,100,101,97,100,108,111,99,107,32,105, - 115,32,100,101,116,101,99,116,101,100,44,10,32,32,32,32, - 32,32,32,32,97,32,95,68,101,97,100,108,111,99,107,69, - 114,114,111,114,32,105,115,32,114,97,105,115,101,100,46,10, - 32,32,32,32,32,32,32,32,79,116,104,101,114,119,105,115, - 101,44,32,116,104,101,32,108,111,99,107,32,105,115,32,97, - 108,119,97,121,115,32,97,99,113,117,105,114,101,100,32,97, - 110,100,32,84,114,117,101,32,105,115,32,114,101,116,117,114, - 110,101,100,46,10,32,32,32,32,32,32,32,32,84,114,26, - 0,0,0,233,1,0,0,0,78,122,23,100,101,97,100,108, - 111,99,107,32,100,101,116,101,99,116,101,100,32,98,121,32, - 37,114,70,41,12,114,27,0,0,0,114,36,0,0,0,114, - 38,0,0,0,114,28,0,0,0,114,31,0,0,0,114,30, - 0,0,0,114,42,0,0,0,114,23,0,0,0,114,29,0, - 0,0,218,7,97,99,113,117,105,114,101,114,32,0,0,0, - 218,7,114,101,108,101,97,115,101,169,2,114,34,0,0,0, - 114,41,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,44,0,0,0,100,0,0,0,115,46,0, - 0,0,8,6,8,1,2,1,2,1,8,1,20,1,6,1, - 14,1,2,1,10,252,2,4,10,9,8,248,12,1,12,1, - 14,1,12,248,22,128,10,10,10,1,2,244,2,128,10,14, - 115,56,0,0,0,137,4,65,33,0,141,22,65,11,3,163, - 5,65,33,0,174,23,65,11,3,193,5,6,65,33,0,193, - 11,4,65,15,11,193,15,1,65,33,0,193,16,3,65,15, - 11,193,19,14,65,33,0,193,33,5,65,38,7,122,19,95, - 77,111,100,117,108,101,76,111,99,107,46,97,99,113,117,105, - 114,101,99,1,0,0,0,0,0,0,0,0,0,0,0,9, - 0,0,0,67,0,0,0,115,148,0,0,0,116,0,160,1, - 161,0,125,1,124,0,106,2,53,0,1,0,124,0,106,3, - 124,1,107,3,114,17,116,4,100,1,131,1,130,1,124,0, - 106,5,100,2,107,4,115,24,74,0,130,1,124,0,4,0, - 106,5,100,3,56,0,2,0,95,5,124,0,106,5,100,2, - 107,2,114,54,100,0,124,0,95,3,124,0,106,6,114,54, - 124,0,4,0,106,6,100,3,56,0,2,0,95,6,124,0, - 106,7,160,8,161,0,1,0,100,0,4,0,4,0,131,3, - 1,0,100,0,83,0,35,0,49,0,115,66,119,4,37,0, - 1,0,1,0,1,0,89,0,1,0,1,0,100,0,83,0, - 41,4,78,250,31,99,97,110,110,111,116,32,114,101,108,101, - 97,115,101,32,117,110,45,97,99,113,117,105,114,101,100,32, - 108,111,99,107,114,26,0,0,0,114,43,0,0,0,41,9, - 114,27,0,0,0,114,36,0,0,0,114,28,0,0,0,114, - 30,0,0,0,218,12,82,117,110,116,105,109,101,69,114,114, - 111,114,114,31,0,0,0,114,32,0,0,0,114,29,0,0, - 0,114,45,0,0,0,114,46,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,45,0,0,0,125, - 0,0,0,115,28,0,0,0,8,1,8,1,10,1,8,1, - 14,1,14,1,10,1,6,1,6,1,14,1,10,1,14,247, - 22,128,4,0,115,15,0,0,0,135,47,61,3,189,4,65, - 1,11,193,2,3,65,1,11,122,19,95,77,111,100,117,108, - 101,76,111,99,107,46,114,101,108,101,97,115,101,99,1,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, - 0,0,243,18,0,0,0,100,1,160,0,124,0,106,1,116, - 2,124,0,131,1,161,2,83,0,41,2,78,122,23,95,77, - 111,100,117,108,101,76,111,99,107,40,123,33,114,125,41,32, - 97,116,32,123,125,169,3,218,6,102,111,114,109,97,116,114, - 21,0,0,0,218,2,105,100,169,1,114,34,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,8, - 95,95,114,101,112,114,95,95,138,0,0,0,243,2,0,0, - 0,18,1,114,18,0,0,0,122,20,95,77,111,100,117,108, - 101,76,111,99,107,46,95,95,114,101,112,114,95,95,78,41, - 9,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, - 114,10,0,0,0,114,35,0,0,0,114,42,0,0,0,114, - 44,0,0,0,114,45,0,0,0,114,54,0,0,0,114,5, + 1,0,116,2,124,1,61,0,100,1,83,0,124,0,160,6, + 161,0,114,55,116,7,100,5,124,0,22,0,131,1,130,1, + 124,0,106,8,160,9,100,6,161,1,114,68,124,0,4,0, + 106,10,100,3,55,0,2,0,95,10,100,4,4,0,4,0, + 131,3,1,0,110,11,35,0,49,0,115,79,119,4,37,0, + 1,0,1,0,1,0,89,0,1,0,1,0,124,0,106,8, + 160,9,161,0,1,0,124,0,106,8,160,11,161,0,1,0, + 113,10,35,0,116,2,124,1,61,0,119,0,37,0,41,7, + 122,185,10,32,32,32,32,32,32,32,32,65,99,113,117,105, + 114,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, + 99,107,46,32,32,73,102,32,97,32,112,111,116,101,110,116, + 105,97,108,32,100,101,97,100,108,111,99,107,32,105,115,32, + 100,101,116,101,99,116,101,100,44,10,32,32,32,32,32,32, + 32,32,97,32,95,68,101,97,100,108,111,99,107,69,114,114, + 111,114,32,105,115,32,114,97,105,115,101,100,46,10,32,32, + 32,32,32,32,32,32,79,116,104,101,114,119,105,115,101,44, + 32,116,104,101,32,108,111,99,107,32,105,115,32,97,108,119, + 97,121,115,32,97,99,113,117,105,114,101,100,32,97,110,100, + 32,84,114,117,101,32,105,115,32,114,101,116,117,114,110,101, + 100,46,10,32,32,32,32,32,32,32,32,84,114,26,0,0, + 0,233,1,0,0,0,78,122,23,100,101,97,100,108,111,99, + 107,32,100,101,116,101,99,116,101,100,32,98,121,32,37,114, + 70,41,12,114,27,0,0,0,114,36,0,0,0,114,38,0, + 0,0,114,28,0,0,0,114,31,0,0,0,114,30,0,0, + 0,114,42,0,0,0,114,23,0,0,0,114,29,0,0,0, + 218,7,97,99,113,117,105,114,101,114,32,0,0,0,218,7, + 114,101,108,101,97,115,101,169,2,114,34,0,0,0,114,41, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,24,0,0,0,65,0,0,0,115,14,0,0,0, - 8,0,4,1,8,5,8,8,8,21,8,25,12,13,114,18, - 0,0,0,114,24,0,0,0,99,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,16,95,68,117,109,109,121,77,111,100,117, - 108,101,76,111,99,107,122,86,65,32,115,105,109,112,108,101, - 32,95,77,111,100,117,108,101,76,111,99,107,32,101,113,117, - 105,118,97,108,101,110,116,32,102,111,114,32,80,121,116,104, - 111,110,32,98,117,105,108,100,115,32,119,105,116,104,111,117, - 116,10,32,32,32,32,109,117,108,116,105,45,116,104,114,101, - 97,100,105,110,103,32,115,117,112,112,111,114,116,46,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,67, - 0,0,0,115,16,0,0,0,124,1,124,0,95,0,100,1, - 124,0,95,1,100,0,83,0,114,25,0,0,0,41,2,114, - 21,0,0,0,114,31,0,0,0,114,33,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,35,0, - 0,0,146,0,0,0,243,4,0,0,0,6,1,10,1,114, - 18,0,0,0,122,25,95,68,117,109,109,121,77,111,100,117, - 108,101,76,111,99,107,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 67,0,0,0,115,18,0,0,0,124,0,4,0,106,0,100, - 1,55,0,2,0,95,0,100,2,83,0,41,3,78,114,43, - 0,0,0,84,41,1,114,31,0,0,0,114,53,0,0,0, + 0,0,114,44,0,0,0,100,0,0,0,115,44,0,0,0, + 8,6,8,1,2,1,2,1,8,1,20,1,6,1,14,1, + 2,1,10,252,10,13,8,248,12,1,12,1,14,1,12,248, + 22,128,10,10,10,1,2,244,2,128,10,14,115,56,0,0, + 0,137,4,65,32,0,141,22,65,10,3,163,5,65,32,0, + 173,23,65,10,3,193,4,6,65,32,0,193,10,4,65,14, + 11,193,14,1,65,32,0,193,15,3,65,14,11,193,18,14, + 65,32,0,193,32,5,65,37,7,122,19,95,77,111,100,117, + 108,101,76,111,99,107,46,97,99,113,117,105,114,101,99,1, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, + 0,0,0,115,148,0,0,0,116,0,160,1,161,0,125,1, + 124,0,106,2,53,0,1,0,124,0,106,3,124,1,107,3, + 114,17,116,4,100,1,131,1,130,1,124,0,106,5,100,2, + 107,4,115,24,74,0,130,1,124,0,4,0,106,5,100,3, + 56,0,2,0,95,5,124,0,106,5,100,2,107,2,114,54, + 100,0,124,0,95,3,124,0,106,6,114,54,124,0,4,0, + 106,6,100,3,56,0,2,0,95,6,124,0,106,7,160,8, + 161,0,1,0,100,0,4,0,4,0,131,3,1,0,100,0, + 83,0,35,0,49,0,115,66,119,4,37,0,1,0,1,0, + 1,0,89,0,1,0,1,0,100,0,83,0,41,4,78,250, + 31,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32, + 117,110,45,97,99,113,117,105,114,101,100,32,108,111,99,107, + 114,26,0,0,0,114,43,0,0,0,41,9,114,27,0,0, + 0,114,36,0,0,0,114,28,0,0,0,114,30,0,0,0, + 218,12,82,117,110,116,105,109,101,69,114,114,111,114,114,31, + 0,0,0,114,32,0,0,0,114,29,0,0,0,114,45,0, + 0,0,114,46,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,45,0,0,0,125,0,0,0,115, + 28,0,0,0,8,1,8,1,10,1,8,1,14,1,14,1, + 10,1,6,1,6,1,14,1,10,1,14,247,22,128,4,0, + 115,15,0,0,0,135,47,61,3,189,4,65,1,11,193,2, + 3,65,1,11,122,19,95,77,111,100,117,108,101,76,111,99, + 107,46,114,101,108,101,97,115,101,99,1,0,0,0,0,0, + 0,0,0,0,0,0,5,0,0,0,67,0,0,0,243,18, + 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, + 1,161,2,83,0,41,2,78,122,23,95,77,111,100,117,108, + 101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,123, + 125,169,3,218,6,102,111,114,109,97,116,114,21,0,0,0, + 218,2,105,100,169,1,114,34,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,8,95,95,114,101, + 112,114,95,95,138,0,0,0,243,2,0,0,0,18,1,114, + 18,0,0,0,122,20,95,77,111,100,117,108,101,76,111,99, + 107,46,95,95,114,101,112,114,95,95,78,41,9,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,35,0,0,0,114,42,0,0,0,114,44,0,0,0, + 114,45,0,0,0,114,54,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,24, + 0,0,0,65,0,0,0,115,14,0,0,0,8,0,4,1, + 8,5,8,8,8,21,8,25,12,13,114,18,0,0,0,114, + 24,0,0,0,99,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,16,95,68,117,109,109,121,77,111,100,117,108,101,76,111, + 99,107,122,86,65,32,115,105,109,112,108,101,32,95,77,111, + 100,117,108,101,76,111,99,107,32,101,113,117,105,118,97,108, + 101,110,116,32,102,111,114,32,80,121,116,104,111,110,32,98, + 117,105,108,100,115,32,119,105,116,104,111,117,116,10,32,32, + 32,32,109,117,108,116,105,45,116,104,114,101,97,100,105,110, + 103,32,115,117,112,112,111,114,116,46,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,67,0,0,0,115, + 16,0,0,0,124,1,124,0,95,0,100,1,124,0,95,1, + 100,0,83,0,114,25,0,0,0,41,2,114,21,0,0,0, + 114,31,0,0,0,114,33,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,35,0,0,0,146,0, + 0,0,243,4,0,0,0,6,1,10,1,114,18,0,0,0, + 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, + 99,107,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 115,18,0,0,0,124,0,4,0,106,0,100,1,55,0,2, + 0,95,0,100,2,83,0,41,3,78,114,43,0,0,0,84, + 41,1,114,31,0,0,0,114,53,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,44,0,0,0, + 150,0,0,0,115,4,0,0,0,14,1,4,1,114,18,0, + 0,0,122,24,95,68,117,109,109,121,77,111,100,117,108,101, + 76,111,99,107,46,97,99,113,117,105,114,101,99,1,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, + 0,115,36,0,0,0,124,0,106,0,100,1,107,2,114,9, + 116,1,100,2,131,1,130,1,124,0,4,0,106,0,100,3, + 56,0,2,0,95,0,100,0,83,0,41,4,78,114,26,0, + 0,0,114,47,0,0,0,114,43,0,0,0,41,2,114,31, + 0,0,0,114,48,0,0,0,114,53,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,45,0,0, + 0,154,0,0,0,115,6,0,0,0,10,1,8,1,18,1, + 114,18,0,0,0,122,24,95,68,117,109,109,121,77,111,100, + 117,108,101,76,111,99,107,46,114,101,108,101,97,115,101,99, + 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 67,0,0,0,114,49,0,0,0,41,2,78,122,28,95,68, + 117,109,109,121,77,111,100,117,108,101,76,111,99,107,40,123, + 33,114,125,41,32,97,116,32,123,125,114,50,0,0,0,114, + 53,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,54,0,0,0,159,0,0,0,114,55,0,0, + 0,114,18,0,0,0,122,25,95,68,117,109,109,121,77,111, + 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, + 95,78,41,8,114,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,35,0,0,0,114,44,0, + 0,0,114,45,0,0,0,114,54,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,56,0,0,0,142,0,0,0,115,12,0,0,0,8,0, + 4,1,8,3,8,4,8,4,12,5,114,18,0,0,0,114, + 56,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,64,0,0,0,115,36,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, + 83,0,41,8,218,18,95,77,111,100,117,108,101,76,111,99, + 107,77,97,110,97,103,101,114,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,67,0,0,0,115,16,0, + 0,0,124,1,124,0,95,0,100,0,124,0,95,1,100,0, + 83,0,114,0,0,0,0,41,2,218,5,95,110,97,109,101, + 218,5,95,108,111,99,107,114,33,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,35,0,0,0, + 165,0,0,0,114,57,0,0,0,114,18,0,0,0,122,27, + 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, + 101,114,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,67,0,0,0, + 115,26,0,0,0,116,0,124,0,106,1,131,1,124,0,95, + 2,124,0,106,2,160,3,161,0,1,0,100,0,83,0,114, + 0,0,0,0,41,4,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,108,111,99,107,114,59,0,0,0,114,60,0, + 0,0,114,44,0,0,0,114,53,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,9,95,95,101, + 110,116,101,114,95,95,169,0,0,0,115,4,0,0,0,12, + 1,14,1,114,18,0,0,0,122,28,95,77,111,100,117,108, + 101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,101, + 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,79,0,0,0,115,14,0,0,0, + 124,0,106,0,160,1,161,0,1,0,100,0,83,0,114,0, + 0,0,0,41,2,114,60,0,0,0,114,45,0,0,0,41, + 3,114,34,0,0,0,218,4,97,114,103,115,90,6,107,119, + 97,114,103,115,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,8,95,95,101,120,105,116,95,95,173,0,0, + 0,115,2,0,0,0,14,1,114,18,0,0,0,122,27,95, + 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, + 114,46,95,95,101,120,105,116,95,95,78,41,6,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,35,0,0, + 0,114,62,0,0,0,114,64,0,0,0,114,5,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 44,0,0,0,150,0,0,0,115,4,0,0,0,14,1,4, - 1,114,18,0,0,0,122,24,95,68,117,109,109,121,77,111, - 100,117,108,101,76,111,99,107,46,97,99,113,117,105,114,101, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,36,0,0,0,124,0,106,0,100,1, - 107,2,114,9,116,1,100,2,131,1,130,1,124,0,4,0, - 106,0,100,3,56,0,2,0,95,0,100,0,83,0,41,4, - 78,114,26,0,0,0,114,47,0,0,0,114,43,0,0,0, - 41,2,114,31,0,0,0,114,48,0,0,0,114,53,0,0, + 58,0,0,0,163,0,0,0,115,8,0,0,0,8,0,8, + 2,8,4,12,4,114,18,0,0,0,114,58,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 67,0,0,0,115,138,0,0,0,116,0,160,1,161,0,1, + 0,9,0,9,0,116,2,124,0,25,0,131,0,125,1,110, + 12,35,0,4,0,116,3,121,68,1,0,1,0,1,0,100, + 1,125,1,89,0,110,1,37,0,124,1,100,1,117,0,114, + 55,116,4,100,1,117,0,114,37,116,5,124,0,131,1,125, + 1,110,4,116,6,124,0,131,1,125,1,124,0,102,1,100, + 2,100,3,132,1,125,2,116,7,160,8,124,1,124,2,161, + 2,116,2,124,0,60,0,116,0,160,9,161,0,1,0,124, + 1,83,0,35,0,116,0,160,9,161,0,1,0,119,0,37, + 0,119,0,41,4,122,139,71,101,116,32,111,114,32,99,114, + 101,97,116,101,32,116,104,101,32,109,111,100,117,108,101,32, + 108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,110, + 32,109,111,100,117,108,101,32,110,97,109,101,46,10,10,32, + 32,32,32,65,99,113,117,105,114,101,47,114,101,108,101,97, + 115,101,32,105,110,116,101,114,110,97,108,108,121,32,116,104, + 101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,32, + 108,111,99,107,32,116,111,32,112,114,111,116,101,99,116,10, + 32,32,32,32,95,109,111,100,117,108,101,95,108,111,99,107, + 115,46,78,99,2,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,83,0,0,0,115,56,0,0,0,116,0,160, + 1,161,0,1,0,9,0,116,2,160,3,124,1,161,1,124, + 0,117,0,114,15,116,2,124,1,61,0,116,0,160,4,161, + 0,1,0,100,0,83,0,35,0,116,0,160,4,161,0,1, + 0,119,0,37,0,114,0,0,0,0,41,5,218,4,95,105, + 109,112,218,12,97,99,113,117,105,114,101,95,108,111,99,107, + 218,13,95,109,111,100,117,108,101,95,108,111,99,107,115,114, + 39,0,0,0,218,12,114,101,108,101,97,115,101,95,108,111, + 99,107,41,2,218,3,114,101,102,114,21,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,2,99, + 98,198,0,0,0,115,16,0,0,0,8,1,2,1,14,4, + 6,1,12,2,2,128,10,0,2,128,115,8,0,0,0,133, + 10,21,0,149,6,27,7,122,28,95,103,101,116,95,109,111, + 100,117,108,101,95,108,111,99,107,46,60,108,111,99,97,108, + 115,62,46,99,98,41,10,114,65,0,0,0,114,66,0,0, + 0,114,67,0,0,0,218,8,75,101,121,69,114,114,111,114, + 114,27,0,0,0,114,56,0,0,0,114,24,0,0,0,218, + 8,95,119,101,97,107,114,101,102,114,69,0,0,0,114,68, + 0,0,0,41,3,114,21,0,0,0,114,28,0,0,0,114, + 70,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,61,0,0,0,179,0,0,0,115,40,0,0, + 0,8,6,2,1,2,1,12,1,2,128,12,1,8,1,2, + 128,8,2,8,1,10,1,8,2,12,2,16,11,8,2,4, + 2,2,128,10,254,2,128,2,234,115,26,0,0,0,134,5, + 12,0,139,1,61,0,140,9,23,7,149,34,61,0,189,6, + 65,3,7,193,4,1,23,7,114,61,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,56,0,0,0,116,0,124,0,131,1,125,1,9, + 0,124,1,160,1,161,0,1,0,110,11,35,0,4,0,116, + 2,121,27,1,0,1,0,1,0,89,0,100,1,83,0,37, + 0,124,1,160,3,161,0,1,0,100,1,83,0,119,0,41, + 2,122,189,65,99,113,117,105,114,101,115,32,116,104,101,110, + 32,114,101,108,101,97,115,101,115,32,116,104,101,32,109,111, + 100,117,108,101,32,108,111,99,107,32,102,111,114,32,97,32, + 103,105,118,101,110,32,109,111,100,117,108,101,32,110,97,109, + 101,46,10,10,32,32,32,32,84,104,105,115,32,105,115,32, + 117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,97, + 32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,108, + 101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,101, + 100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,118, + 101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,32, + 105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,116, + 104,101,114,32,116,104,114,101,97,100,46,10,32,32,32,32, + 78,41,4,114,61,0,0,0,114,44,0,0,0,114,23,0, + 0,0,114,45,0,0,0,41,2,114,21,0,0,0,114,28, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,19,95,108,111,99,107,95,117,110,108,111,99,107, + 95,109,111,100,117,108,101,216,0,0,0,115,18,0,0,0, + 8,6,2,1,10,1,2,128,12,1,6,3,2,128,12,2, + 2,251,115,12,0,0,0,133,4,10,0,138,7,20,7,155, + 1,20,7,114,73,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,79,0,0,0,115,14,0, + 0,0,124,0,124,1,105,0,124,2,164,1,142,1,83,0, + 41,2,97,46,1,0,0,114,101,109,111,118,101,95,105,109, + 112,111,114,116,108,105,98,95,102,114,97,109,101,115,32,105, + 110,32,105,109,112,111,114,116,46,99,32,119,105,108,108,32, + 97,108,119,97,121,115,32,114,101,109,111,118,101,32,115,101, + 113,117,101,110,99,101,115,10,32,32,32,32,111,102,32,105, + 109,112,111,114,116,108,105,98,32,102,114,97,109,101,115,32, + 116,104,97,116,32,101,110,100,32,119,105,116,104,32,97,32, + 99,97,108,108,32,116,111,32,116,104,105,115,32,102,117,110, + 99,116,105,111,110,10,10,32,32,32,32,85,115,101,32,105, + 116,32,105,110,115,116,101,97,100,32,111,102,32,97,32,110, + 111,114,109,97,108,32,99,97,108,108,32,105,110,32,112,108, + 97,99,101,115,32,119,104,101,114,101,32,105,110,99,108,117, + 100,105,110,103,32,116,104,101,32,105,109,112,111,114,116,108, + 105,98,10,32,32,32,32,102,114,97,109,101,115,32,105,110, + 116,114,111,100,117,99,101,115,32,117,110,119,97,110,116,101, + 100,32,110,111,105,115,101,32,105,110,116,111,32,116,104,101, + 32,116,114,97,99,101,98,97,99,107,32,40,101,46,103,46, + 32,119,104,101,110,32,101,120,101,99,117,116,105,110,103,10, + 32,32,32,32,109,111,100,117,108,101,32,99,111,100,101,41, + 10,32,32,32,32,78,114,5,0,0,0,41,3,218,1,102, + 114,63,0,0,0,90,4,107,119,100,115,114,5,0,0,0, + 114,5,0,0,0,114,6,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,233,0,0,0,115,2,0,0,0,14,8, + 114,18,0,0,0,114,75,0,0,0,114,43,0,0,0,41, + 1,218,9,118,101,114,98,111,115,105,116,121,99,1,0,0, + 0,0,0,0,0,1,0,0,0,4,0,0,0,71,0,0, + 0,115,58,0,0,0,116,0,106,1,106,2,124,1,107,5, + 114,27,124,0,160,3,100,1,161,1,115,15,100,2,124,0, + 23,0,125,0,116,4,124,0,106,5,124,2,142,0,116,0, + 106,6,100,3,141,2,1,0,100,4,83,0,100,4,83,0, + 41,5,122,61,80,114,105,110,116,32,116,104,101,32,109,101, + 115,115,97,103,101,32,116,111,32,115,116,100,101,114,114,32, + 105,102,32,45,118,47,80,89,84,72,79,78,86,69,82,66, + 79,83,69,32,105,115,32,116,117,114,110,101,100,32,111,110, + 46,41,2,250,1,35,122,7,105,109,112,111,114,116,32,122, + 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,19, + 0,0,0,218,5,102,108,97,103,115,218,7,118,101,114,98, + 111,115,101,218,10,115,116,97,114,116,115,119,105,116,104,218, + 5,112,114,105,110,116,114,51,0,0,0,218,6,115,116,100, + 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,76, + 0,0,0,114,63,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,16,95,118,101,114,98,111,115, + 101,95,109,101,115,115,97,103,101,244,0,0,0,115,10,0, + 0,0,12,2,10,1,8,1,24,1,4,253,114,18,0,0, + 0,114,84,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,243,26,0,0,0, + 135,0,102,1,100,1,100,2,132,8,125,1,116,0,124,1, + 136,0,131,2,1,0,124,1,83,0,41,4,122,49,68,101, + 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, + 121,32,116,104,101,32,110,97,109,101,100,32,109,111,100,117, + 108,101,32,105,115,32,98,117,105,108,116,45,105,110,46,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 19,0,0,0,115,38,0,0,0,124,1,116,0,106,1,118, + 1,114,14,116,2,100,1,160,3,124,1,161,1,124,1,100, + 2,141,2,130,1,136,0,124,0,124,1,131,2,83,0,41, + 3,78,250,29,123,33,114,125,32,105,115,32,110,111,116,32, + 97,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, + 101,114,20,0,0,0,41,4,114,19,0,0,0,218,20,98, + 117,105,108,116,105,110,95,109,111,100,117,108,101,95,110,97, + 109,101,115,218,11,73,109,112,111,114,116,69,114,114,111,114, + 114,51,0,0,0,169,2,114,34,0,0,0,218,8,102,117, + 108,108,110,97,109,101,169,1,218,3,102,120,110,114,5,0, + 0,0,114,6,0,0,0,218,25,95,114,101,113,117,105,114, + 101,115,95,98,117,105,108,116,105,110,95,119,114,97,112,112, + 101,114,254,0,0,0,243,10,0,0,0,10,1,10,1,2, + 1,6,255,10,2,114,18,0,0,0,122,52,95,114,101,113, + 117,105,114,101,115,95,98,117,105,108,116,105,110,46,60,108, + 111,99,97,108,115,62,46,95,114,101,113,117,105,114,101,115, + 95,98,117,105,108,116,105,110,95,119,114,97,112,112,101,114, + 78,169,1,114,17,0,0,0,41,2,114,92,0,0,0,114, + 93,0,0,0,114,5,0,0,0,114,91,0,0,0,114,6, + 0,0,0,218,17,95,114,101,113,117,105,114,101,115,95,98, + 117,105,108,116,105,110,252,0,0,0,243,6,0,0,0,12, + 2,10,5,4,1,114,18,0,0,0,114,96,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,114,85,0,0,0,41,4,122,47,68,101,99, + 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, + 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108, + 101,32,105,115,32,102,114,111,122,101,110,46,99,2,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,19,0,0, + 0,115,38,0,0,0,116,0,160,1,124,1,161,1,115,14, + 116,2,100,1,160,3,124,1,161,1,124,1,100,2,141,2, + 130,1,136,0,124,0,124,1,131,2,83,0,169,3,78,122, + 27,123,33,114,125,32,105,115,32,110,111,116,32,97,32,102, + 114,111,122,101,110,32,109,111,100,117,108,101,114,20,0,0, + 0,41,4,114,65,0,0,0,218,9,105,115,95,102,114,111, + 122,101,110,114,88,0,0,0,114,51,0,0,0,114,89,0, + 0,0,114,91,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,24,95,114,101,113,117,105,114,101,115,95,102,114,111, + 122,101,110,95,119,114,97,112,112,101,114,9,1,0,0,114, + 94,0,0,0,114,18,0,0,0,122,50,95,114,101,113,117, + 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, + 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, + 114,111,122,101,110,95,119,114,97,112,112,101,114,78,114,95, + 0,0,0,41,2,114,92,0,0,0,114,100,0,0,0,114, + 5,0,0,0,114,91,0,0,0,114,6,0,0,0,218,16, + 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, + 7,1,0,0,114,97,0,0,0,114,18,0,0,0,114,101, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,74,0,0,0,100,1,125, + 2,116,0,160,1,124,2,116,2,161,2,1,0,116,3,124, + 1,124,0,131,2,125,3,124,1,116,4,106,5,118,0,114, + 33,116,4,106,5,124,1,25,0,125,4,116,6,124,3,124, + 4,131,2,1,0,116,4,106,5,124,1,25,0,83,0,116, + 7,124,3,131,1,83,0,41,3,122,130,76,111,97,100,32, + 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,117,108,101,32,105,110,116,111,32,115,121,115,46,109,111, + 100,117,108,101,115,32,97,110,100,32,114,101,116,117,114,110, + 32,105,116,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,46,32,32,85,115,101,32,108,111,97,100,101,114, + 46,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,122,103,116, + 104,101,32,108,111,97,100,95,109,111,100,117,108,101,40,41, + 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, + 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, + 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, + 32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,105, + 110,115,116,101,97,100,78,41,8,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,16, + 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, + 114,19,0,0,0,218,7,109,111,100,117,108,101,115,218,5, + 95,101,120,101,99,218,5,95,108,111,97,100,41,5,114,34, + 0,0,0,114,90,0,0,0,218,3,109,115,103,218,4,115, + 112,101,99,218,6,109,111,100,117,108,101,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,17,95,108,111,97, + 100,95,109,111,100,117,108,101,95,115,104,105,109,19,1,0, + 0,115,16,0,0,0,4,6,12,2,10,1,10,1,10,1, + 10,1,10,1,8,2,114,18,0,0,0,114,112,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,194,0,0,0,116,0,124,0,100,1, + 100,2,131,3,125,1,116,0,124,0,100,3,100,2,131,3, + 4,0,125,2,114,18,116,1,124,2,131,1,83,0,116,2, + 124,1,100,4,131,2,114,39,9,0,124,1,160,3,124,0, + 161,1,83,0,35,0,4,0,116,4,121,96,1,0,1,0, + 1,0,89,0,110,1,37,0,9,0,124,0,106,5,125,3, + 110,12,35,0,4,0,116,6,121,95,1,0,1,0,1,0, + 100,5,125,3,89,0,110,1,37,0,9,0,124,0,106,7, + 125,4,110,27,35,0,4,0,116,6,121,94,1,0,1,0, + 1,0,124,1,100,2,117,0,114,79,100,6,160,8,124,3, + 161,1,6,0,89,0,83,0,100,7,160,8,124,3,124,1, + 161,2,6,0,89,0,83,0,37,0,100,8,160,8,124,3, + 124,4,161,2,83,0,119,0,119,0,119,0,41,9,122,44, + 84,104,101,32,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,32,111,102,32,77,111,100,117,108,101,84,121,112,101, + 46,95,95,114,101,112,114,95,95,40,41,46,218,10,95,95, + 108,111,97,100,101,114,95,95,78,218,8,95,95,115,112,101, + 99,95,95,218,11,109,111,100,117,108,101,95,114,101,112,114, + 250,1,63,250,13,60,109,111,100,117,108,101,32,123,33,114, + 125,62,250,20,60,109,111,100,117,108,101,32,123,33,114,125, + 32,40,123,33,114,125,41,62,250,23,60,109,111,100,117,108, + 101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125, + 62,41,9,114,13,0,0,0,218,22,95,109,111,100,117,108, + 101,95,114,101,112,114,95,102,114,111,109,95,115,112,101,99, + 114,11,0,0,0,114,115,0,0,0,218,9,69,120,99,101, + 112,116,105,111,110,114,9,0,0,0,114,2,0,0,0,218, + 8,95,95,102,105,108,101,95,95,114,51,0,0,0,41,5, + 114,111,0,0,0,218,6,108,111,97,100,101,114,114,110,0, + 0,0,114,21,0,0,0,218,8,102,105,108,101,110,97,109, + 101,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, + 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, + 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, + 128,12,1,8,1,2,128,2,1,8,1,2,128,12,1,8, + 1,14,1,16,2,2,128,12,2,2,250,2,252,2,251,115, + 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, + 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, + 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, + 1,38,7,114,125,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,64,0,0,0,115,114,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 100,2,100,2,100,3,156,3,100,4,100,5,132,2,90,4, + 100,6,100,7,132,0,90,5,100,8,100,9,132,0,90,6, + 101,7,100,10,100,11,132,0,131,1,90,8,101,8,106,9, + 100,12,100,11,132,0,131,1,90,8,101,7,100,13,100,14, + 132,0,131,1,90,10,101,7,100,15,100,16,132,0,131,1, + 90,11,101,11,106,9,100,17,100,16,132,0,131,1,90,11, + 100,2,83,0,41,18,218,10,77,111,100,117,108,101,83,112, + 101,99,97,208,5,0,0,84,104,101,32,115,112,101,99,105, + 102,105,99,97,116,105,111,110,32,102,111,114,32,97,32,109, + 111,100,117,108,101,44,32,117,115,101,100,32,102,111,114,32, + 108,111,97,100,105,110,103,46,10,10,32,32,32,32,65,32, + 109,111,100,117,108,101,39,115,32,115,112,101,99,32,105,115, + 32,116,104,101,32,115,111,117,114,99,101,32,102,111,114,32, + 105,110,102,111,114,109,97,116,105,111,110,32,97,98,111,117, + 116,32,116,104,101,32,109,111,100,117,108,101,46,32,32,70, + 111,114,10,32,32,32,32,100,97,116,97,32,97,115,115,111, + 99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32, + 109,111,100,117,108,101,44,32,105,110,99,108,117,100,105,110, + 103,32,115,111,117,114,99,101,44,32,117,115,101,32,116,104, + 101,32,115,112,101,99,39,115,10,32,32,32,32,108,111,97, + 100,101,114,46,10,10,32,32,32,32,96,110,97,109,101,96, + 32,105,115,32,116,104,101,32,97,98,115,111,108,117,116,101, + 32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,108,111,97,100,101,114,96,32,105, + 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, + 32,116,111,32,117,115,101,32,119,104,101,110,32,108,111,97, + 100,105,110,103,32,116,104,101,32,109,111,100,117,108,101,46, + 32,32,96,112,97,114,101,110,116,96,32,105,115,32,116,104, + 101,32,110,97,109,101,32,111,102,32,116,104,101,10,32,32, + 32,32,112,97,99,107,97,103,101,32,116,104,101,32,109,111, + 100,117,108,101,32,105,115,32,105,110,46,32,32,84,104,101, + 32,112,97,114,101,110,116,32,105,115,32,100,101,114,105,118, + 101,100,32,102,114,111,109,32,116,104,101,32,110,97,109,101, + 46,10,10,32,32,32,32,96,105,115,95,112,97,99,107,97, + 103,101,96,32,100,101,116,101,114,109,105,110,101,115,32,105, + 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, + 99,111,110,115,105,100,101,114,101,100,32,97,32,112,97,99, + 107,97,103,101,32,111,114,10,32,32,32,32,110,111,116,46, + 32,32,79,110,32,109,111,100,117,108,101,115,32,116,104,105, + 115,32,105,115,32,114,101,102,108,101,99,116,101,100,32,98, + 121,32,116,104,101,32,96,95,95,112,97,116,104,95,95,96, + 32,97,116,116,114,105,98,117,116,101,46,10,10,32,32,32, + 32,96,111,114,105,103,105,110,96,32,105,115,32,116,104,101, + 32,115,112,101,99,105,102,105,99,32,108,111,99,97,116,105, + 111,110,32,117,115,101,100,32,98,121,32,116,104,101,32,108, + 111,97,100,101,114,32,102,114,111,109,32,119,104,105,99,104, + 32,116,111,10,32,32,32,32,108,111,97,100,32,116,104,101, + 32,109,111,100,117,108,101,44,32,105,102,32,116,104,97,116, + 32,105,110,102,111,114,109,97,116,105,111,110,32,105,115,32, + 97,118,97,105,108,97,98,108,101,46,32,32,87,104,101,110, + 32,102,105,108,101,110,97,109,101,32,105,115,10,32,32,32, + 32,115,101,116,44,32,111,114,105,103,105,110,32,119,105,108, + 108,32,109,97,116,99,104,46,10,10,32,32,32,32,96,104, + 97,115,95,108,111,99,97,116,105,111,110,96,32,105,110,100, + 105,99,97,116,101,115,32,116,104,97,116,32,97,32,115,112, + 101,99,39,115,32,34,111,114,105,103,105,110,34,32,114,101, + 102,108,101,99,116,115,32,97,32,108,111,99,97,116,105,111, + 110,46,10,32,32,32,32,87,104,101,110,32,116,104,105,115, + 32,105,115,32,84,114,117,101,44,32,96,95,95,102,105,108, + 101,95,95,96,32,97,116,116,114,105,98,117,116,101,32,111, + 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, + 115,101,116,46,10,10,32,32,32,32,96,99,97,99,104,101, + 100,96,32,105,115,32,116,104,101,32,108,111,99,97,116,105, + 111,110,32,111,102,32,116,104,101,32,99,97,99,104,101,100, + 32,98,121,116,101,99,111,100,101,32,102,105,108,101,44,32, + 105,102,32,97,110,121,46,32,32,73,116,10,32,32,32,32, + 99,111,114,114,101,115,112,111,110,100,115,32,116,111,32,116, + 104,101,32,96,95,95,99,97,99,104,101,100,95,95,96,32, + 97,116,116,114,105,98,117,116,101,46,10,10,32,32,32,32, + 96,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,96,32,105,115,32, + 116,104,101,32,115,101,113,117,101,110,99,101,32,111,102,32, + 112,97,116,104,32,101,110,116,114,105,101,115,32,116,111,10, + 32,32,32,32,115,101,97,114,99,104,32,119,104,101,110,32, + 105,109,112,111,114,116,105,110,103,32,115,117,98,109,111,100, + 117,108,101,115,46,32,32,73,102,32,115,101,116,44,32,105, + 115,95,112,97,99,107,97,103,101,32,115,104,111,117,108,100, + 32,98,101,10,32,32,32,32,84,114,117,101,45,45,97,110, + 100,32,70,97,108,115,101,32,111,116,104,101,114,119,105,115, + 101,46,10,10,32,32,32,32,80,97,99,107,97,103,101,115, + 32,97,114,101,32,115,105,109,112,108,121,32,109,111,100,117, + 108,101,115,32,116,104,97,116,32,40,109,97,121,41,32,104, + 97,118,101,32,115,117,98,109,111,100,117,108,101,115,46,32, + 32,73,102,32,97,32,115,112,101,99,10,32,32,32,32,104, + 97,115,32,97,32,110,111,110,45,78,111,110,101,32,118,97, + 108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112,111,114,116,10, + 32,32,32,32,115,121,115,116,101,109,32,119,105,108,108,32, + 99,111,110,115,105,100,101,114,32,109,111,100,117,108,101,115, + 32,108,111,97,100,101,100,32,102,114,111,109,32,116,104,101, + 32,115,112,101,99,32,97,115,32,112,97,99,107,97,103,101, + 115,46,10,10,32,32,32,32,79,110,108,121,32,102,105,110, + 100,101,114,115,32,40,115,101,101,32,105,109,112,111,114,116, + 108,105,98,46,97,98,99,46,77,101,116,97,80,97,116,104, + 70,105,110,100,101,114,32,97,110,100,10,32,32,32,32,105, + 109,112,111,114,116,108,105,98,46,97,98,99,46,80,97,116, + 104,69,110,116,114,121,70,105,110,100,101,114,41,32,115,104, + 111,117,108,100,32,109,111,100,105,102,121,32,77,111,100,117, + 108,101,83,112,101,99,32,105,110,115,116,97,110,99,101,115, + 46,10,10,32,32,32,32,78,41,3,218,6,111,114,105,103, + 105,110,218,12,108,111,97,100,101,114,95,115,116,97,116,101, + 218,10,105,115,95,112,97,99,107,97,103,101,99,3,0,0, + 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, + 0,115,54,0,0,0,124,1,124,0,95,0,124,2,124,0, + 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, + 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, + 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, + 41,7,114,21,0,0,0,114,123,0,0,0,114,127,0,0, + 0,114,128,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, + 114,218,7,95,99,97,99,104,101,100,41,6,114,34,0,0, + 0,114,21,0,0,0,114,123,0,0,0,114,127,0,0,0, + 114,128,0,0,0,114,129,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,35,0,0,0,101,1, + 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, + 1,6,3,10,1,114,18,0,0,0,122,19,77,111,100,117, + 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, + 1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, + 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, + 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, + 1,124,0,106,3,100,0,117,1,114,26,124,1,160,4,100, + 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, + 5,100,0,117,1,114,40,124,1,160,4,100,4,160,0,124, + 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, + 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, + 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, + 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, + 105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2, + 44,32,41,9,114,51,0,0,0,114,21,0,0,0,114,123, + 0,0,0,114,127,0,0,0,218,6,97,112,112,101,110,100, + 114,130,0,0,0,218,9,95,95,99,108,97,115,115,95,95, + 114,9,0,0,0,218,4,106,111,105,110,41,2,114,34,0, + 0,0,114,63,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,54,0,0,0,113,1,0,0,115, + 20,0,0,0,10,1,10,1,4,255,10,2,18,1,10,1, + 6,1,8,1,4,255,22,2,114,18,0,0,0,122,19,77, + 111,100,117,108,101,83,112,101,99,46,95,95,114,101,112,114, + 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,67,0,0,0,115,104,0,0,0,124,0,106,0, + 125,2,9,0,124,0,106,1,124,1,106,1,107,2,111,38, + 124,0,106,2,124,1,106,2,107,2,111,38,124,0,106,3, + 124,1,106,3,107,2,111,38,124,2,124,1,106,0,107,2, + 111,38,124,0,106,4,124,1,106,4,107,2,111,38,124,0, + 106,5,124,1,106,5,107,2,83,0,35,0,4,0,116,6, + 121,51,1,0,1,0,1,0,116,7,6,0,89,0,83,0, + 37,0,119,0,114,0,0,0,0,41,8,114,130,0,0,0, + 114,21,0,0,0,114,123,0,0,0,114,127,0,0,0,218, + 6,99,97,99,104,101,100,218,12,104,97,115,95,108,111,99, + 97,116,105,111,110,114,2,0,0,0,218,14,78,111,116,73, + 109,112,108,101,109,101,110,116,101,100,41,3,114,34,0,0, + 0,90,5,111,116,104,101,114,90,4,115,109,115,108,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, + 95,101,113,95,95,123,1,0,0,115,36,0,0,0,6,1, + 2,1,12,1,10,1,2,255,10,2,2,254,8,3,2,253, + 10,4,2,252,10,5,2,251,2,128,12,6,8,1,2,128, + 2,255,115,12,0,0,0,132,34,39,0,167,9,50,7,179, + 1,50,7,122,17,77,111,100,117,108,101,83,112,101,99,46, + 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,67,0,0,0,115,58,0,0,0, + 124,0,106,0,100,0,117,0,114,26,124,0,106,1,100,0, + 117,1,114,26,124,0,106,2,114,26,116,3,100,0,117,0, + 114,19,116,4,130,1,116,3,160,5,124,0,106,1,161,1, + 124,0,95,0,124,0,106,0,83,0,114,0,0,0,0,41, + 6,114,132,0,0,0,114,127,0,0,0,114,131,0,0,0, + 218,19,95,98,111,111,116,115,116,114,97,112,95,101,120,116, + 101,114,110,97,108,218,19,78,111,116,73,109,112,108,101,109, + 101,110,116,101,100,69,114,114,111,114,90,11,95,103,101,116, + 95,99,97,99,104,101,100,114,53,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,136,0,0,0, + 135,1,0,0,115,12,0,0,0,10,2,16,1,8,1,4, + 1,14,1,6,1,114,18,0,0,0,122,17,77,111,100,117, + 108,101,83,112,101,99,46,99,97,99,104,101,100,99,2,0, + 0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,132,0,0,0,41,2,114, + 34,0,0,0,114,136,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,136,0,0,0,144,1,0, + 0,115,2,0,0,0,10,2,114,18,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,115,32,0,0,0,124,0,106,0,100,1,117,0,114, + 13,124,0,106,1,160,2,100,2,161,1,100,3,25,0,83, + 0,124,0,106,1,83,0,41,4,122,32,84,104,101,32,110, + 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, + 101,39,115,32,112,97,114,101,110,116,46,78,218,1,46,114, + 26,0,0,0,41,3,114,130,0,0,0,114,21,0,0,0, + 218,10,114,112,97,114,116,105,116,105,111,110,114,53,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,45,0,0,0,154,0,0,0,115,6,0,0,0,10,1, - 8,1,18,1,114,18,0,0,0,122,24,95,68,117,109,109, - 121,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, - 97,115,101,99,1,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,67,0,0,0,114,49,0,0,0,41,2,78, - 122,28,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,40,123,33,114,125,41,32,97,116,32,123,125,114,50, - 0,0,0,114,53,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,54,0,0,0,159,0,0,0, - 114,55,0,0,0,114,18,0,0,0,122,25,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,46,95,95,114, - 101,112,114,95,95,78,41,8,114,9,0,0,0,114,8,0, - 0,0,114,1,0,0,0,114,10,0,0,0,114,35,0,0, - 0,114,44,0,0,0,114,45,0,0,0,114,54,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,56,0,0,0,142,0,0,0,115,12,0, - 0,0,8,0,4,1,8,3,8,4,8,4,12,5,114,18, - 0,0,0,114,56,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,64,0,0,0,115,36,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,83,0,41,8,218,18,95,77,111,100,117,108, - 101,76,111,99,107,77,97,110,97,103,101,114,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,67,0,0, - 0,115,16,0,0,0,124,1,124,0,95,0,100,0,124,0, - 95,1,100,0,83,0,114,0,0,0,0,41,2,218,5,95, - 110,97,109,101,218,5,95,108,111,99,107,114,33,0,0,0, + 218,6,112,97,114,101,110,116,148,1,0,0,115,6,0,0, + 0,10,3,16,1,6,2,114,18,0,0,0,122,17,77,111, + 100,117,108,101,83,112,101,99,46,112,97,114,101,110,116,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 67,0,0,0,115,6,0,0,0,124,0,106,0,83,0,114, + 0,0,0,0,41,1,114,131,0,0,0,114,53,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 35,0,0,0,165,0,0,0,114,57,0,0,0,114,18,0, - 0,0,122,27,95,77,111,100,117,108,101,76,111,99,107,77, - 97,110,97,103,101,114,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 67,0,0,0,115,26,0,0,0,116,0,124,0,106,1,131, - 1,124,0,95,2,124,0,106,2,160,3,161,0,1,0,100, - 0,83,0,114,0,0,0,0,41,4,218,16,95,103,101,116, - 95,109,111,100,117,108,101,95,108,111,99,107,114,59,0,0, - 0,114,60,0,0,0,114,44,0,0,0,114,53,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 9,95,95,101,110,116,101,114,95,95,169,0,0,0,115,4, - 0,0,0,12,1,14,1,114,18,0,0,0,122,28,95,77, - 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, - 46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,79,0,0,0,115, - 14,0,0,0,124,0,106,0,160,1,161,0,1,0,100,0, - 83,0,114,0,0,0,0,41,2,114,60,0,0,0,114,45, - 0,0,0,41,3,114,34,0,0,0,218,4,97,114,103,115, - 90,6,107,119,97,114,103,115,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,8,95,95,101,120,105,116,95, - 95,173,0,0,0,115,2,0,0,0,14,1,114,18,0,0, - 0,122,27,95,77,111,100,117,108,101,76,111,99,107,77,97, - 110,97,103,101,114,46,95,95,101,120,105,116,95,95,78,41, - 6,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, - 114,35,0,0,0,114,62,0,0,0,114,64,0,0,0,114, + 137,0,0,0,156,1,0,0,115,2,0,0,0,6,2,114, + 18,0,0,0,122,23,77,111,100,117,108,101,83,112,101,99, + 46,104,97,115,95,108,111,99,97,116,105,111,110,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,67,0, + 0,0,115,14,0,0,0,116,0,124,1,131,1,124,0,95, + 1,100,0,83,0,114,0,0,0,0,41,2,218,4,98,111, + 111,108,114,131,0,0,0,41,2,114,34,0,0,0,218,5, + 118,97,108,117,101,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,137,0,0,0,160,1,0,0,115,2,0, + 0,0,14,2,114,18,0,0,0,41,12,114,9,0,0,0, + 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, + 35,0,0,0,114,54,0,0,0,114,139,0,0,0,218,8, + 112,114,111,112,101,114,116,121,114,136,0,0,0,218,6,115, + 101,116,116,101,114,114,144,0,0,0,114,137,0,0,0,114, 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,58,0,0,0,163,0,0,0,115,8,0,0, - 0,8,0,8,2,8,4,12,4,114,18,0,0,0,114,58, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 8,0,0,0,67,0,0,0,115,138,0,0,0,116,0,160, - 1,161,0,1,0,9,0,9,0,116,2,124,0,25,0,131, - 0,125,1,110,12,35,0,4,0,116,3,121,68,1,0,1, - 0,1,0,100,1,125,1,89,0,110,1,37,0,124,1,100, - 1,117,0,114,55,116,4,100,1,117,0,114,37,116,5,124, - 0,131,1,125,1,110,4,116,6,124,0,131,1,125,1,124, - 0,102,1,100,2,100,3,132,1,125,2,116,7,160,8,124, - 1,124,2,161,2,116,2,124,0,60,0,116,0,160,9,161, - 0,1,0,124,1,83,0,35,0,116,0,160,9,161,0,1, - 0,119,0,37,0,119,0,41,4,122,139,71,101,116,32,111, - 114,32,99,114,101,97,116,101,32,116,104,101,32,109,111,100, - 117,108,101,32,108,111,99,107,32,102,111,114,32,97,32,103, - 105,118,101,110,32,109,111,100,117,108,101,32,110,97,109,101, - 46,10,10,32,32,32,32,65,99,113,117,105,114,101,47,114, - 101,108,101,97,115,101,32,105,110,116,101,114,110,97,108,108, - 121,32,116,104,101,32,103,108,111,98,97,108,32,105,109,112, - 111,114,116,32,108,111,99,107,32,116,111,32,112,114,111,116, - 101,99,116,10,32,32,32,32,95,109,111,100,117,108,101,95, - 108,111,99,107,115,46,78,99,2,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,83,0,0,0,115,56,0,0, - 0,116,0,160,1,161,0,1,0,9,0,116,2,160,3,124, - 1,161,1,124,0,117,0,114,15,116,2,124,1,61,0,116, - 0,160,4,161,0,1,0,100,0,83,0,35,0,116,0,160, - 4,161,0,1,0,119,0,37,0,114,0,0,0,0,41,5, - 218,4,95,105,109,112,218,12,97,99,113,117,105,114,101,95, - 108,111,99,107,218,13,95,109,111,100,117,108,101,95,108,111, - 99,107,115,114,39,0,0,0,218,12,114,101,108,101,97,115, - 101,95,108,111,99,107,41,2,218,3,114,101,102,114,21,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,2,99,98,198,0,0,0,115,16,0,0,0,8,1, - 2,1,14,4,6,1,12,2,2,128,10,0,2,128,115,8, - 0,0,0,133,10,21,0,149,6,27,7,122,28,95,103,101, - 116,95,109,111,100,117,108,101,95,108,111,99,107,46,60,108, - 111,99,97,108,115,62,46,99,98,41,10,114,65,0,0,0, - 114,66,0,0,0,114,67,0,0,0,218,8,75,101,121,69, - 114,114,111,114,114,27,0,0,0,114,56,0,0,0,114,24, - 0,0,0,218,8,95,119,101,97,107,114,101,102,114,69,0, - 0,0,114,68,0,0,0,41,3,114,21,0,0,0,114,28, - 0,0,0,114,70,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,61,0,0,0,179,0,0,0, - 115,40,0,0,0,8,6,2,1,2,1,12,1,2,128,12, - 1,8,1,2,128,8,2,8,1,10,1,8,2,12,2,16, - 11,8,2,4,2,2,128,10,254,2,128,2,234,115,26,0, - 0,0,134,5,12,0,139,1,61,0,140,9,23,7,149,34, - 61,0,189,6,65,3,7,193,4,1,23,7,114,61,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,67,0,0,0,115,56,0,0,0,116,0,124,0,131, - 1,125,1,9,0,124,1,160,1,161,0,1,0,110,11,35, - 0,4,0,116,2,121,27,1,0,1,0,1,0,89,0,100, - 1,83,0,37,0,124,1,160,3,161,0,1,0,100,1,83, - 0,119,0,41,2,122,189,65,99,113,117,105,114,101,115,32, - 116,104,101,110,32,114,101,108,101,97,115,101,115,32,116,104, - 101,32,109,111,100,117,108,101,32,108,111,99,107,32,102,111, - 114,32,97,32,103,105,118,101,110,32,109,111,100,117,108,101, - 32,110,97,109,101,46,10,10,32,32,32,32,84,104,105,115, - 32,105,115,32,117,115,101,100,32,116,111,32,101,110,115,117, - 114,101,32,97,32,109,111,100,117,108,101,32,105,115,32,99, - 111,109,112,108,101,116,101,108,121,32,105,110,105,116,105,97, - 108,105,122,101,100,44,32,105,110,32,116,104,101,10,32,32, - 32,32,101,118,101,110,116,32,105,116,32,105,115,32,98,101, - 105,110,103,32,105,109,112,111,114,116,101,100,32,98,121,32, - 97,110,111,116,104,101,114,32,116,104,114,101,97,100,46,10, - 32,32,32,32,78,41,4,114,61,0,0,0,114,44,0,0, - 0,114,23,0,0,0,114,45,0,0,0,41,2,114,21,0, - 0,0,114,28,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,19,95,108,111,99,107,95,117,110, - 108,111,99,107,95,109,111,100,117,108,101,216,0,0,0,115, - 18,0,0,0,8,6,2,1,10,1,2,128,12,1,6,3, - 2,128,12,2,2,251,115,12,0,0,0,133,4,10,0,138, - 7,20,7,155,1,20,7,114,73,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,79,0,0, - 0,115,14,0,0,0,124,0,124,1,105,0,124,2,164,1, - 142,1,83,0,41,2,97,46,1,0,0,114,101,109,111,118, - 101,95,105,109,112,111,114,116,108,105,98,95,102,114,97,109, - 101,115,32,105,110,32,105,109,112,111,114,116,46,99,32,119, - 105,108,108,32,97,108,119,97,121,115,32,114,101,109,111,118, - 101,32,115,101,113,117,101,110,99,101,115,10,32,32,32,32, - 111,102,32,105,109,112,111,114,116,108,105,98,32,102,114,97, - 109,101,115,32,116,104,97,116,32,101,110,100,32,119,105,116, - 104,32,97,32,99,97,108,108,32,116,111,32,116,104,105,115, - 32,102,117,110,99,116,105,111,110,10,10,32,32,32,32,85, - 115,101,32,105,116,32,105,110,115,116,101,97,100,32,111,102, - 32,97,32,110,111,114,109,97,108,32,99,97,108,108,32,105, - 110,32,112,108,97,99,101,115,32,119,104,101,114,101,32,105, - 110,99,108,117,100,105,110,103,32,116,104,101,32,105,109,112, - 111,114,116,108,105,98,10,32,32,32,32,102,114,97,109,101, - 115,32,105,110,116,114,111,100,117,99,101,115,32,117,110,119, - 97,110,116,101,100,32,110,111,105,115,101,32,105,110,116,111, - 32,116,104,101,32,116,114,97,99,101,98,97,99,107,32,40, - 101,46,103,46,32,119,104,101,110,32,101,120,101,99,117,116, - 105,110,103,10,32,32,32,32,109,111,100,117,108,101,32,99, - 111,100,101,41,10,32,32,32,32,78,114,5,0,0,0,41, - 3,218,1,102,114,63,0,0,0,90,4,107,119,100,115,114, - 5,0,0,0,114,5,0,0,0,114,6,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,233,0,0,0,115,2,0, - 0,0,14,8,114,18,0,0,0,114,75,0,0,0,114,43, - 0,0,0,41,1,218,9,118,101,114,98,111,115,105,116,121, - 99,1,0,0,0,0,0,0,0,1,0,0,0,4,0,0, - 0,71,0,0,0,115,58,0,0,0,116,0,106,1,106,2, - 124,1,107,5,114,27,124,0,160,3,100,1,161,1,115,15, - 100,2,124,0,23,0,125,0,116,4,124,0,106,5,124,2, - 142,0,116,0,106,6,100,3,141,2,1,0,100,4,83,0, - 100,4,83,0,41,5,122,61,80,114,105,110,116,32,116,104, - 101,32,109,101,115,115,97,103,101,32,116,111,32,115,116,100, - 101,114,114,32,105,102,32,45,118,47,80,89,84,72,79,78, - 86,69,82,66,79,83,69,32,105,115,32,116,117,114,110,101, - 100,32,111,110,46,41,2,250,1,35,122,7,105,109,112,111, - 114,116,32,122,2,35,32,41,1,90,4,102,105,108,101,78, - 41,7,114,19,0,0,0,218,5,102,108,97,103,115,218,7, - 118,101,114,98,111,115,101,218,10,115,116,97,114,116,115,119, - 105,116,104,218,5,112,114,105,110,116,114,51,0,0,0,218, - 6,115,116,100,101,114,114,41,3,218,7,109,101,115,115,97, - 103,101,114,76,0,0,0,114,63,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,16,95,118,101, - 114,98,111,115,101,95,109,101,115,115,97,103,101,244,0,0, - 0,115,10,0,0,0,12,2,10,1,8,1,24,1,4,253, - 114,18,0,0,0,114,84,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,243, - 26,0,0,0,135,0,102,1,100,1,100,2,132,8,125,1, - 116,0,124,1,136,0,131,2,1,0,124,1,83,0,41,4, - 122,49,68,101,99,111,114,97,116,111,114,32,116,111,32,118, - 101,114,105,102,121,32,116,104,101,32,110,97,109,101,100,32, - 109,111,100,117,108,101,32,105,115,32,98,117,105,108,116,45, - 105,110,46,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,19,0,0,0,115,38,0,0,0,124,1,116, - 0,106,1,118,1,114,14,116,2,100,1,160,3,124,1,161, - 1,124,1,100,2,141,2,130,1,136,0,124,0,124,1,131, - 2,83,0,41,3,78,250,29,123,33,114,125,32,105,115,32, - 110,111,116,32,97,32,98,117,105,108,116,45,105,110,32,109, - 111,100,117,108,101,114,20,0,0,0,41,4,114,19,0,0, - 0,218,20,98,117,105,108,116,105,110,95,109,111,100,117,108, - 101,95,110,97,109,101,115,218,11,73,109,112,111,114,116,69, - 114,114,111,114,114,51,0,0,0,169,2,114,34,0,0,0, - 218,8,102,117,108,108,110,97,109,101,169,1,218,3,102,120, - 110,114,5,0,0,0,114,6,0,0,0,218,25,95,114,101, - 113,117,105,114,101,115,95,98,117,105,108,116,105,110,95,119, - 114,97,112,112,101,114,254,0,0,0,243,10,0,0,0,10, - 1,10,1,2,1,6,255,10,2,114,18,0,0,0,122,52, - 95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,105, - 110,46,60,108,111,99,97,108,115,62,46,95,114,101,113,117, - 105,114,101,115,95,98,117,105,108,116,105,110,95,119,114,97, - 112,112,101,114,78,169,1,114,17,0,0,0,41,2,114,92, - 0,0,0,114,93,0,0,0,114,5,0,0,0,114,91,0, - 0,0,114,6,0,0,0,218,17,95,114,101,113,117,105,114, - 101,115,95,98,117,105,108,116,105,110,252,0,0,0,243,6, - 0,0,0,12,2,10,5,4,1,114,18,0,0,0,114,96, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,3,0,0,0,114,85,0,0,0,41,4,122, - 47,68,101,99,111,114,97,116,111,114,32,116,111,32,118,101, - 114,105,102,121,32,116,104,101,32,110,97,109,101,100,32,109, - 111,100,117,108,101,32,105,115,32,102,114,111,122,101,110,46, - 99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,19,0,0,0,115,38,0,0,0,116,0,160,1,124,1, - 161,1,115,14,116,2,100,1,160,3,124,1,161,1,124,1, - 100,2,141,2,130,1,136,0,124,0,124,1,131,2,83,0, - 169,3,78,122,27,123,33,114,125,32,105,115,32,110,111,116, - 32,97,32,102,114,111,122,101,110,32,109,111,100,117,108,101, - 114,20,0,0,0,41,4,114,65,0,0,0,218,9,105,115, - 95,102,114,111,122,101,110,114,88,0,0,0,114,51,0,0, - 0,114,89,0,0,0,114,91,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,24,95,114,101,113,117,105,114,101,115, - 95,102,114,111,122,101,110,95,119,114,97,112,112,101,114,9, - 1,0,0,114,94,0,0,0,114,18,0,0,0,122,50,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,46, - 60,108,111,99,97,108,115,62,46,95,114,101,113,117,105,114, - 101,115,95,102,114,111,122,101,110,95,119,114,97,112,112,101, - 114,78,114,95,0,0,0,41,2,114,92,0,0,0,114,100, - 0,0,0,114,5,0,0,0,114,91,0,0,0,114,6,0, - 0,0,218,16,95,114,101,113,117,105,114,101,115,95,102,114, - 111,122,101,110,7,1,0,0,114,97,0,0,0,114,18,0, - 0,0,114,101,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,74,0,0, - 0,100,1,125,2,116,0,160,1,124,2,116,2,161,2,1, - 0,116,3,124,1,124,0,131,2,125,3,124,1,116,4,106, - 5,118,0,114,33,116,4,106,5,124,1,25,0,125,4,116, - 6,124,3,124,4,131,2,1,0,116,4,106,5,124,1,25, - 0,83,0,116,7,124,3,131,1,83,0,41,3,122,130,76, - 111,97,100,32,116,104,101,32,115,112,101,99,105,102,105,101, - 100,32,109,111,100,117,108,101,32,105,110,116,111,32,115,121, - 115,46,109,111,100,117,108,101,115,32,97,110,100,32,114,101, - 116,117,114,110,32,105,116,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,46,32,32,85,115,101,32,108,111, - 97,100,101,114,46,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,122,103,116,104,101,32,108,111,97,100,95,109,111,100,117, - 108,101,40,41,32,109,101,116,104,111,100,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,101,120,101,99,95,109,111,100,117,108,101, - 40,41,32,105,110,115,116,101,97,100,78,41,8,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,16,115,112,101,99,95,102,114,111,109,95,108,111, - 97,100,101,114,114,19,0,0,0,218,7,109,111,100,117,108, - 101,115,218,5,95,101,120,101,99,218,5,95,108,111,97,100, - 41,5,114,34,0,0,0,114,90,0,0,0,218,3,109,115, - 103,218,4,115,112,101,99,218,6,109,111,100,117,108,101,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,17, - 95,108,111,97,100,95,109,111,100,117,108,101,95,115,104,105, - 109,19,1,0,0,115,16,0,0,0,4,6,12,2,10,1, - 10,1,10,1,10,1,10,1,8,2,114,18,0,0,0,114, - 112,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,67,0,0,0,115,194,0,0,0,116,0, - 124,0,100,1,100,2,131,3,125,1,116,0,124,0,100,3, - 100,2,131,3,4,0,125,2,114,18,116,1,124,2,131,1, - 83,0,116,2,124,1,100,4,131,2,114,39,9,0,124,1, - 160,3,124,0,161,1,83,0,35,0,4,0,116,4,121,96, - 1,0,1,0,1,0,89,0,110,1,37,0,9,0,124,0, - 106,5,125,3,110,12,35,0,4,0,116,6,121,95,1,0, - 1,0,1,0,100,5,125,3,89,0,110,1,37,0,9,0, - 124,0,106,7,125,4,110,27,35,0,4,0,116,6,121,94, - 1,0,1,0,1,0,124,1,100,2,117,0,114,79,100,6, - 160,8,124,3,161,1,6,0,89,0,83,0,100,7,160,8, - 124,3,124,1,161,2,6,0,89,0,83,0,37,0,100,8, - 160,8,124,3,124,4,161,2,83,0,119,0,119,0,119,0, - 41,9,122,44,84,104,101,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,111,102,32,77,111,100,117,108,101, - 84,121,112,101,46,95,95,114,101,112,114,95,95,40,41,46, - 218,10,95,95,108,111,97,100,101,114,95,95,78,218,8,95, - 95,115,112,101,99,95,95,218,11,109,111,100,117,108,101,95, - 114,101,112,114,250,1,63,250,13,60,109,111,100,117,108,101, - 32,123,33,114,125,62,250,20,60,109,111,100,117,108,101,32, - 123,33,114,125,32,40,123,33,114,125,41,62,250,23,60,109, - 111,100,117,108,101,32,123,33,114,125,32,102,114,111,109,32, - 123,33,114,125,62,41,9,114,13,0,0,0,218,22,95,109, - 111,100,117,108,101,95,114,101,112,114,95,102,114,111,109,95, - 115,112,101,99,114,11,0,0,0,114,115,0,0,0,218,9, - 69,120,99,101,112,116,105,111,110,114,9,0,0,0,114,2, - 0,0,0,218,8,95,95,102,105,108,101,95,95,114,51,0, - 0,0,41,5,114,111,0,0,0,218,6,108,111,97,100,101, - 114,114,110,0,0,0,114,21,0,0,0,218,8,102,105,108, - 101,110,97,109,101,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,12,95,109,111,100,117,108,101,95,114,101, - 112,114,38,1,0,0,115,56,0,0,0,12,2,16,1,8, - 1,10,1,2,1,10,1,2,128,12,1,4,1,2,128,2, - 2,8,1,2,128,12,1,8,1,2,128,2,1,8,1,2, - 128,12,1,8,1,14,1,16,2,2,128,12,2,2,250,2, - 252,2,251,115,47,0,0,0,152,4,29,0,157,7,38,7, - 168,3,44,0,172,9,55,7,185,3,61,0,189,16,65,23, - 7,193,15,6,65,23,7,193,30,1,65,23,7,193,31,1, - 55,7,193,32,1,38,7,114,125,0,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,114,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,100,2,100,2,100,3,156,3,100,4,100,5, - 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, - 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, - 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, - 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, - 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, - 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, - 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, - 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, - 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, - 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, - 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, - 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, - 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, - 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, - 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, - 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, - 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, - 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, - 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, - 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, - 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, - 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, - 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, - 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, - 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, - 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, - 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, - 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, - 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, - 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, - 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, - 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, - 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, - 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, - 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, - 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, - 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, - 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, - 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, - 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, - 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, - 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, - 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, - 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, - 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, - 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, - 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, - 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, - 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, - 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, - 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, - 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, - 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, - 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, - 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, - 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, - 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, - 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, - 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, - 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, - 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, - 32,32,32,32,96,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,96, - 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, - 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, - 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, - 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, - 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, - 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, - 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, - 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, - 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, - 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, - 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, - 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, - 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, - 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, - 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, - 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, - 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, - 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, - 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, - 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, - 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, - 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, - 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, - 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, - 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, - 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, - 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, - 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, - 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, - 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, - 99,3,0,0,0,0,0,0,0,3,0,0,0,2,0,0, - 0,67,0,0,0,115,54,0,0,0,124,1,124,0,95,0, - 124,2,124,0,95,1,124,3,124,0,95,2,124,4,124,0, - 95,3,124,5,114,16,103,0,110,1,100,0,124,0,95,4, - 100,1,124,0,95,5,100,0,124,0,95,6,100,0,83,0, - 41,2,78,70,41,7,114,21,0,0,0,114,123,0,0,0, - 114,127,0,0,0,114,128,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,218,13,95,115,101,116,95,102,105,108, - 101,97,116,116,114,218,7,95,99,97,99,104,101,100,41,6, - 114,34,0,0,0,114,21,0,0,0,114,123,0,0,0,114, - 127,0,0,0,114,128,0,0,0,114,129,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,35,0, - 0,0,101,1,0,0,115,14,0,0,0,6,2,6,1,6, - 1,6,1,14,1,6,3,10,1,114,18,0,0,0,122,19, - 77,111,100,117,108,101,83,112,101,99,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 6,0,0,0,67,0,0,0,115,102,0,0,0,100,1,160, - 0,124,0,106,1,161,1,100,2,160,0,124,0,106,2,161, - 1,103,2,125,1,124,0,106,3,100,0,117,1,114,26,124, - 1,160,4,100,3,160,0,124,0,106,3,161,1,161,1,1, - 0,124,0,106,5,100,0,117,1,114,40,124,1,160,4,100, - 4,160,0,124,0,106,5,161,1,161,1,1,0,100,5,160, - 0,124,0,106,6,106,7,100,6,160,8,124,1,161,1,161, - 2,83,0,41,7,78,122,9,110,97,109,101,61,123,33,114, - 125,122,11,108,111,97,100,101,114,61,123,33,114,125,122,11, - 111,114,105,103,105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123, - 125,41,122,2,44,32,41,9,114,51,0,0,0,114,21,0, - 0,0,114,123,0,0,0,114,127,0,0,0,218,6,97,112, - 112,101,110,100,114,130,0,0,0,218,9,95,95,99,108,97, - 115,115,95,95,114,9,0,0,0,218,4,106,111,105,110,41, - 2,114,34,0,0,0,114,63,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,54,0,0,0,113, - 1,0,0,115,20,0,0,0,10,1,10,1,4,255,10,2, - 18,1,10,1,6,1,8,1,4,255,22,2,114,18,0,0, - 0,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, - 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0, - 0,0,0,8,0,0,0,67,0,0,0,115,104,0,0,0, - 124,0,106,0,125,2,9,0,124,0,106,1,124,1,106,1, - 107,2,111,38,124,0,106,2,124,1,106,2,107,2,111,38, - 124,0,106,3,124,1,106,3,107,2,111,38,124,2,124,1, - 106,0,107,2,111,38,124,0,106,4,124,1,106,4,107,2, - 111,38,124,0,106,5,124,1,106,5,107,2,83,0,35,0, - 4,0,116,6,121,51,1,0,1,0,1,0,116,7,6,0, - 89,0,83,0,37,0,119,0,114,0,0,0,0,41,8,114, - 130,0,0,0,114,21,0,0,0,114,123,0,0,0,114,127, - 0,0,0,218,6,99,97,99,104,101,100,218,12,104,97,115, - 95,108,111,99,97,116,105,111,110,114,2,0,0,0,218,14, - 78,111,116,73,109,112,108,101,109,101,110,116,101,100,41,3, - 114,34,0,0,0,90,5,111,116,104,101,114,90,4,115,109, - 115,108,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,6,95,95,101,113,95,95,123,1,0,0,115,36,0, - 0,0,6,1,2,1,12,1,10,1,2,255,10,2,2,254, - 8,3,2,253,10,4,2,252,10,5,2,251,2,128,12,6, - 8,1,2,128,2,255,115,12,0,0,0,132,34,39,0,167, - 9,50,7,179,1,50,7,122,17,77,111,100,117,108,101,83, - 112,101,99,46,95,95,101,113,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,67,0,0,0,115, - 58,0,0,0,124,0,106,0,100,0,117,0,114,26,124,0, - 106,1,100,0,117,1,114,26,124,0,106,2,114,26,116,3, - 100,0,117,0,114,19,116,4,130,1,116,3,160,5,124,0, - 106,1,161,1,124,0,95,0,124,0,106,0,83,0,114,0, - 0,0,0,41,6,114,132,0,0,0,114,127,0,0,0,114, - 131,0,0,0,218,19,95,98,111,111,116,115,116,114,97,112, - 95,101,120,116,101,114,110,97,108,218,19,78,111,116,73,109, - 112,108,101,109,101,110,116,101,100,69,114,114,111,114,90,11, - 95,103,101,116,95,99,97,99,104,101,100,114,53,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 136,0,0,0,135,1,0,0,115,12,0,0,0,10,2,16, - 1,8,1,4,1,14,1,6,1,114,18,0,0,0,122,17, - 77,111,100,117,108,101,83,112,101,99,46,99,97,99,104,101, - 100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,132,0,0, - 0,41,2,114,34,0,0,0,114,136,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,136,0,0, - 0,144,1,0,0,115,2,0,0,0,10,2,114,18,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,67,0,0,0,115,32,0,0,0,124,0,106,0,100, - 1,117,0,114,13,124,0,106,1,160,2,100,2,161,1,100, - 3,25,0,83,0,124,0,106,1,83,0,41,4,122,32,84, - 104,101,32,110,97,109,101,32,111,102,32,116,104,101,32,109, - 111,100,117,108,101,39,115,32,112,97,114,101,110,116,46,78, - 218,1,46,114,26,0,0,0,41,3,114,130,0,0,0,114, - 21,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, - 114,53,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,6,112,97,114,101,110,116,148,1,0,0, - 115,6,0,0,0,10,3,16,1,6,2,114,18,0,0,0, - 122,17,77,111,100,117,108,101,83,112,101,99,46,112,97,114, - 101,110,116,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,67,0,0,0,115,6,0,0,0,124,0,106, - 0,83,0,114,0,0,0,0,41,1,114,131,0,0,0,114, - 53,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,137,0,0,0,156,1,0,0,115,2,0,0, - 0,6,2,114,18,0,0,0,122,23,77,111,100,117,108,101, - 83,112,101,99,46,104,97,115,95,108,111,99,97,116,105,111, - 110,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,67,0,0,0,115,14,0,0,0,116,0,124,1,131, - 1,124,0,95,1,100,0,83,0,114,0,0,0,0,41,2, - 218,4,98,111,111,108,114,131,0,0,0,41,2,114,34,0, - 0,0,218,5,118,97,108,117,101,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,137,0,0,0,160,1,0, - 0,115,2,0,0,0,14,2,114,18,0,0,0,41,12,114, - 9,0,0,0,114,8,0,0,0,114,1,0,0,0,114,10, - 0,0,0,114,35,0,0,0,114,54,0,0,0,114,139,0, - 0,0,218,8,112,114,111,112,101,114,116,121,114,136,0,0, - 0,218,6,115,101,116,116,101,114,114,144,0,0,0,114,137, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,126,0,0,0,64,1,0,0, - 115,34,0,0,0,8,0,4,1,4,36,2,1,12,255,8, - 12,8,10,2,12,10,1,4,8,10,1,2,3,10,1,2, - 7,10,1,4,3,14,1,114,18,0,0,0,114,126,0,0, - 0,169,2,114,127,0,0,0,114,129,0,0,0,99,2,0, - 0,0,0,0,0,0,2,0,0,0,8,0,0,0,67,0, - 0,0,115,152,0,0,0,116,0,124,1,100,1,131,2,114, - 37,116,1,100,2,117,0,114,11,116,2,130,1,116,1,106, - 3,125,4,124,3,100,2,117,0,114,24,124,4,124,0,124, - 1,100,3,141,2,83,0,124,3,114,28,103,0,110,1,100, - 2,125,5,124,4,124,0,124,1,124,5,100,4,141,3,83, - 0,124,3,100,2,117,0,114,67,116,0,124,1,100,5,131, - 2,114,65,9,0,124,1,160,4,124,0,161,1,125,3,110, - 14,35,0,4,0,116,5,121,75,1,0,1,0,1,0,100, - 2,125,3,89,0,110,3,37,0,100,6,125,3,116,6,124, - 0,124,1,124,2,124,3,100,7,141,4,83,0,119,0,41, - 8,122,53,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,118,97,114,105,111,117,115,32,108,111,97,100,101,114,32, - 109,101,116,104,111,100,115,46,90,12,103,101,116,95,102,105, - 108,101,110,97,109,101,78,41,1,114,123,0,0,0,41,2, - 114,123,0,0,0,114,130,0,0,0,114,129,0,0,0,70, - 114,149,0,0,0,41,7,114,11,0,0,0,114,140,0,0, - 0,114,141,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,114, - 129,0,0,0,114,88,0,0,0,114,126,0,0,0,41,6, - 114,21,0,0,0,114,123,0,0,0,114,127,0,0,0,114, - 129,0,0,0,114,150,0,0,0,90,6,115,101,97,114,99, - 104,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,105,0,0,0,165,1,0,0,115,42,0,0,0,10,2, - 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, - 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, - 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, - 0,181,9,65,0,7,193,11,1,65,0,7,114,105,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, - 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, - 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, - 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, - 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, - 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, - 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, - 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, - 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, - 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, - 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, - 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, - 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, - 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, - 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, - 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, - 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, - 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, - 169,1,114,127,0,0,0,70,84,41,13,114,114,0,0,0, - 114,2,0,0,0,114,9,0,0,0,114,113,0,0,0,114, - 122,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, - 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, - 8,95,95,112,97,116,104,95,95,114,126,0,0,0,114,131, - 0,0,0,114,136,0,0,0,114,130,0,0,0,41,8,114, - 111,0,0,0,114,123,0,0,0,114,127,0,0,0,114,110, - 0,0,0,114,21,0,0,0,90,8,108,111,99,97,116,105, - 111,110,114,136,0,0,0,114,130,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,17,95,115,112, - 101,99,95,102,114,111,109,95,109,111,100,117,108,101,191,1, - 0,0,115,108,0,0,0,2,2,8,1,2,128,12,1,4, - 1,2,128,8,2,4,1,6,2,8,1,2,1,8,1,2, - 128,12,1,4,2,2,128,2,1,8,1,2,128,12,1,8, - 1,2,128,8,1,8,1,2,1,8,1,2,128,12,1,8, - 1,2,128,4,2,2,1,8,1,2,128,12,1,8,1,2, - 128,2,1,12,1,2,128,12,1,8,1,2,128,14,2,18, - 1,6,1,6,1,4,1,2,249,2,252,2,250,2,250,2, - 251,2,246,115,93,0,0,0,129,3,5,0,133,7,14,7, - 157,3,33,0,161,7,42,7,172,3,48,0,176,9,59,7, - 193,5,3,65,9,0,193,9,9,65,20,7,193,24,3,65, - 28,0,193,28,9,65,39,7,193,41,5,65,47,0,193,47, - 9,65,58,7,194,19,1,65,58,7,194,20,1,65,39,7, - 194,21,1,65,20,7,194,22,1,59,7,194,23,1,42,7, - 194,24,1,14,7,114,156,0,0,0,70,169,1,218,8,111, - 118,101,114,114,105,100,101,99,2,0,0,0,0,0,0,0, - 1,0,0,0,8,0,0,0,67,0,0,0,115,204,1,0, - 0,124,2,115,10,116,0,124,1,100,1,100,0,131,3,100, - 0,117,0,114,26,9,0,124,0,106,1,124,1,95,2,110, - 10,35,0,4,0,116,3,121,229,1,0,1,0,1,0,89, - 0,110,1,37,0,124,2,115,36,116,0,124,1,100,2,100, - 0,131,3,100,0,117,0,114,87,124,0,106,4,125,3,124, - 3,100,0,117,0,114,72,124,0,106,5,100,0,117,1,114, - 72,116,6,100,0,117,0,114,54,116,7,130,1,116,6,106, - 8,125,4,124,4,160,9,124,4,161,1,125,3,124,0,106, - 5,124,3,95,10,124,3,124,0,95,4,100,0,124,1,95, - 11,9,0,124,3,124,1,95,12,110,10,35,0,4,0,116, - 3,121,228,1,0,1,0,1,0,89,0,110,1,37,0,124, - 2,115,97,116,0,124,1,100,3,100,0,131,3,100,0,117, - 0,114,113,9,0,124,0,106,13,124,1,95,14,110,10,35, - 0,4,0,116,3,121,227,1,0,1,0,1,0,89,0,110, - 1,37,0,9,0,124,0,124,1,95,15,110,10,35,0,4, - 0,116,3,121,226,1,0,1,0,1,0,89,0,110,1,37, - 0,124,2,115,138,116,0,124,1,100,4,100,0,131,3,100, - 0,117,0,114,159,124,0,106,5,100,0,117,1,114,159,9, - 0,124,0,106,5,124,1,95,16,110,10,35,0,4,0,116, - 3,121,225,1,0,1,0,1,0,89,0,110,1,37,0,124, - 0,106,17,114,221,124,2,115,172,116,0,124,1,100,5,100, - 0,131,3,100,0,117,0,114,188,9,0,124,0,106,18,124, - 1,95,11,110,10,35,0,4,0,116,3,121,224,1,0,1, - 0,1,0,89,0,110,1,37,0,124,2,115,198,116,0,124, - 1,100,6,100,0,131,3,100,0,117,0,114,221,124,0,106, - 19,100,0,117,1,114,221,9,0,124,0,106,19,124,1,95, - 20,124,1,83,0,35,0,4,0,116,3,121,223,1,0,1, - 0,1,0,89,0,124,1,83,0,37,0,124,1,83,0,119, - 0,119,0,119,0,119,0,119,0,119,0,119,0,41,7,78, - 114,9,0,0,0,114,113,0,0,0,218,11,95,95,112,97, - 99,107,97,103,101,95,95,114,155,0,0,0,114,122,0,0, - 0,114,153,0,0,0,41,21,114,13,0,0,0,114,21,0, - 0,0,114,9,0,0,0,114,2,0,0,0,114,123,0,0, - 0,114,130,0,0,0,114,140,0,0,0,114,141,0,0,0, - 218,16,95,78,97,109,101,115,112,97,99,101,76,111,97,100, - 101,114,218,7,95,95,110,101,119,95,95,90,5,95,112,97, - 116,104,114,122,0,0,0,114,113,0,0,0,114,144,0,0, - 0,114,159,0,0,0,114,114,0,0,0,114,155,0,0,0, - 114,137,0,0,0,114,127,0,0,0,114,136,0,0,0,114, - 153,0,0,0,41,5,114,110,0,0,0,114,111,0,0,0, - 114,158,0,0,0,114,123,0,0,0,114,160,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,18, - 95,105,110,105,116,95,109,111,100,117,108,101,95,97,116,116, - 114,115,236,1,0,0,115,142,0,0,0,20,4,2,1,10, - 1,2,128,12,1,4,1,2,128,20,2,6,1,8,1,10, - 2,8,1,4,1,6,1,10,2,8,1,6,1,6,11,2, - 1,8,1,2,128,12,1,4,1,2,128,20,2,2,1,10, - 1,2,128,12,1,4,1,2,128,2,2,8,1,2,128,12, - 1,4,1,2,128,20,2,10,1,2,1,10,1,2,128,12, - 1,4,1,2,128,6,2,20,1,2,1,10,1,2,128,12, - 1,4,1,2,128,20,2,10,1,2,1,8,1,4,3,2, - 128,12,254,2,1,4,1,2,128,4,0,2,254,2,249,2, - 249,2,249,2,251,2,250,2,228,115,121,0,0,0,139,4, - 16,0,144,7,25,7,193,9,3,65,13,0,193,13,7,65, - 22,7,193,34,4,65,39,0,193,39,7,65,48,7,193,50, - 3,65,54,0,193,54,7,65,63,7,194,16,4,66,21,0, - 194,21,7,66,30,7,194,45,4,66,50,0,194,50,7,66, - 59,7,195,12,4,67,18,0,195,18,7,67,28,7,195,31, - 1,67,28,7,195,32,1,66,59,7,195,33,1,66,30,7, - 195,34,1,65,63,7,195,35,1,65,48,7,195,36,1,65, - 22,7,195,37,1,25,7,114,162,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, - 0,115,82,0,0,0,100,1,125,1,116,0,124,0,106,1, - 100,2,131,2,114,15,124,0,106,1,160,2,124,0,161,1, - 125,1,110,10,116,0,124,0,106,1,100,3,131,2,114,25, - 116,3,100,4,131,1,130,1,124,1,100,1,117,0,114,34, - 116,4,124,0,106,5,131,1,125,1,116,6,124,0,124,1, - 131,2,1,0,124,1,83,0,41,5,122,43,67,114,101,97, - 116,101,32,97,32,109,111,100,117,108,101,32,98,97,115,101, - 100,32,111,110,32,116,104,101,32,112,114,111,118,105,100,101, - 100,32,115,112,101,99,46,78,218,13,99,114,101,97,116,101, - 95,109,111,100,117,108,101,218,11,101,120,101,99,95,109,111, - 100,117,108,101,122,66,108,111,97,100,101,114,115,32,116,104, - 97,116,32,100,101,102,105,110,101,32,101,120,101,99,95,109, - 111,100,117,108,101,40,41,32,109,117,115,116,32,97,108,115, - 111,32,100,101,102,105,110,101,32,99,114,101,97,116,101,95, - 109,111,100,117,108,101,40,41,41,7,114,11,0,0,0,114, - 123,0,0,0,114,163,0,0,0,114,88,0,0,0,114,22, - 0,0,0,114,21,0,0,0,114,162,0,0,0,169,2,114, - 110,0,0,0,114,111,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,16,109,111,100,117,108,101, - 95,102,114,111,109,95,115,112,101,99,52,2,0,0,115,18, - 0,0,0,4,3,12,1,14,3,12,1,8,1,8,2,10, - 1,10,1,4,1,114,18,0,0,0,114,166,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, - 0,114,7,100,2,110,2,124,0,106,0,125,1,124,0,106, - 1,100,1,117,0,114,32,124,0,106,2,100,1,117,0,114, - 25,100,3,160,3,124,1,161,1,83,0,100,4,160,3,124, - 1,124,0,106,2,161,2,83,0,124,0,106,4,114,42,100, - 5,160,3,124,1,124,0,106,1,161,2,83,0,100,6,160, - 3,124,0,106,0,124,0,106,1,161,2,83,0,41,7,122, - 38,82,101,116,117,114,110,32,116,104,101,32,114,101,112,114, - 32,116,111,32,117,115,101,32,102,111,114,32,116,104,101,32, - 109,111,100,117,108,101,46,78,114,116,0,0,0,114,117,0, - 0,0,114,118,0,0,0,114,119,0,0,0,250,18,60,109, - 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, - 41,5,114,21,0,0,0,114,127,0,0,0,114,123,0,0, - 0,114,51,0,0,0,114,137,0,0,0,41,2,114,110,0, - 0,0,114,21,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,120,0,0,0,69,2,0,0,115, - 16,0,0,0,20,3,10,1,10,1,10,1,14,2,6,2, - 14,1,16,2,114,18,0,0,0,114,120,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,67, - 0,0,0,115,32,1,0,0,124,0,106,0,125,2,116,1, - 124,2,131,1,53,0,1,0,116,2,106,3,160,4,124,2, - 161,1,124,1,117,1,114,27,100,1,160,5,124,2,161,1, - 125,3,116,6,124,3,124,2,100,2,141,2,130,1,9,0, - 124,0,106,7,100,3,117,0,114,53,124,0,106,8,100,3, - 117,0,114,45,116,6,100,4,124,0,106,0,100,2,141,2, - 130,1,116,9,124,0,124,1,100,5,100,6,141,3,1,0, - 110,40,116,9,124,0,124,1,100,5,100,6,141,3,1,0, - 116,10,124,0,106,7,100,7,131,2,115,87,116,11,124,0, - 106,7,131,1,155,0,100,8,157,2,125,3,116,12,160,13, - 124,3,116,14,161,2,1,0,124,0,106,7,160,15,124,2, - 161,1,1,0,110,6,124,0,106,7,160,16,124,1,161,1, - 1,0,116,2,106,3,160,17,124,0,106,0,161,1,125,1, - 124,1,116,2,106,3,124,0,106,0,60,0,110,16,35,0, - 116,2,106,3,160,17,124,0,106,0,161,1,125,1,124,1, - 116,2,106,3,124,0,106,0,60,0,119,0,37,0,9,0, - 100,3,4,0,4,0,131,3,1,0,124,1,83,0,35,0, - 49,0,115,136,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,124,1,83,0,41,9,122,70,69,120,101,99, - 117,116,101,32,116,104,101,32,115,112,101,99,39,115,32,115, - 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,32, - 105,110,32,97,110,32,101,120,105,115,116,105,110,103,32,109, - 111,100,117,108,101,39,115,32,110,97,109,101,115,112,97,99, - 101,46,122,30,109,111,100,117,108,101,32,123,33,114,125,32, - 110,111,116,32,105,110,32,115,121,115,46,109,111,100,117,108, - 101,115,114,20,0,0,0,78,250,14,109,105,115,115,105,110, - 103,32,108,111,97,100,101,114,84,114,157,0,0,0,114,164, - 0,0,0,250,55,46,101,120,101,99,95,109,111,100,117,108, - 101,40,41,32,110,111,116,32,102,111,117,110,100,59,32,102, - 97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,108, - 111,97,100,95,109,111,100,117,108,101,40,41,41,18,114,21, - 0,0,0,114,58,0,0,0,114,19,0,0,0,114,106,0, - 0,0,114,39,0,0,0,114,51,0,0,0,114,88,0,0, - 0,114,123,0,0,0,114,130,0,0,0,114,162,0,0,0, - 114,11,0,0,0,114,7,0,0,0,114,102,0,0,0,114, - 103,0,0,0,218,13,73,109,112,111,114,116,87,97,114,110, - 105,110,103,218,11,108,111,97,100,95,109,111,100,117,108,101, - 114,164,0,0,0,218,3,112,111,112,41,4,114,110,0,0, - 0,114,111,0,0,0,114,21,0,0,0,114,109,0,0,0, + 0,0,0,114,126,0,0,0,64,1,0,0,115,34,0,0, + 0,8,0,4,1,4,36,2,1,12,255,8,12,8,10,2, + 12,10,1,4,8,10,1,2,3,10,1,2,7,10,1,4, + 3,14,1,114,18,0,0,0,114,126,0,0,0,169,2,114, + 127,0,0,0,114,129,0,0,0,99,2,0,0,0,0,0, + 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,152, + 0,0,0,116,0,124,1,100,1,131,2,114,37,116,1,100, + 2,117,0,114,11,116,2,130,1,116,1,106,3,125,4,124, + 3,100,2,117,0,114,24,124,4,124,0,124,1,100,3,141, + 2,83,0,124,3,114,28,103,0,110,1,100,2,125,5,124, + 4,124,0,124,1,124,5,100,4,141,3,83,0,124,3,100, + 2,117,0,114,67,116,0,124,1,100,5,131,2,114,65,9, + 0,124,1,160,4,124,0,161,1,125,3,110,14,35,0,4, + 0,116,5,121,75,1,0,1,0,1,0,100,2,125,3,89, + 0,110,3,37,0,100,6,125,3,116,6,124,0,124,1,124, + 2,124,3,100,7,141,4,83,0,119,0,41,8,122,53,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,118,97,114, + 105,111,117,115,32,108,111,97,100,101,114,32,109,101,116,104, + 111,100,115,46,90,12,103,101,116,95,102,105,108,101,110,97, + 109,101,78,41,1,114,123,0,0,0,41,2,114,123,0,0, + 0,114,130,0,0,0,114,129,0,0,0,70,114,149,0,0, + 0,41,7,114,11,0,0,0,114,140,0,0,0,114,141,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,114,129,0,0,0, + 114,88,0,0,0,114,126,0,0,0,41,6,114,21,0,0, + 0,114,123,0,0,0,114,127,0,0,0,114,129,0,0,0, + 114,150,0,0,0,90,6,115,101,97,114,99,104,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,105,0,0, + 0,165,1,0,0,115,42,0,0,0,10,2,8,1,4,1, + 6,1,8,2,12,1,12,1,6,1,2,1,6,255,8,3, + 10,1,2,1,12,1,2,128,12,1,8,1,2,128,4,3, + 16,2,2,250,115,15,0,0,0,175,5,53,0,181,9,65, + 0,7,193,11,1,65,0,7,114,105,0,0,0,99,3,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,50,1,0,0,9,0,124,0,106,0,125,3,110, + 10,35,0,4,0,116,1,121,152,1,0,1,0,1,0,89, + 0,110,7,37,0,124,3,100,0,117,1,114,21,124,3,83, + 0,124,0,106,2,125,4,124,1,100,0,117,0,114,43,9, + 0,124,0,106,3,125,1,110,10,35,0,4,0,116,1,121, + 151,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, + 0,106,4,125,5,110,12,35,0,4,0,116,1,121,150,1, + 0,1,0,1,0,100,0,125,5,89,0,110,1,37,0,124, + 2,100,0,117,0,114,87,124,5,100,0,117,0,114,85,9, + 0,124,1,106,5,125,2,110,14,35,0,4,0,116,1,121, + 149,1,0,1,0,1,0,100,0,125,2,89,0,110,3,37, + 0,124,5,125,2,9,0,124,0,106,6,125,6,110,12,35, + 0,4,0,116,1,121,148,1,0,1,0,1,0,100,0,125, + 6,89,0,110,1,37,0,9,0,116,7,124,0,106,8,131, + 1,125,7,110,12,35,0,4,0,116,1,121,147,1,0,1, + 0,1,0,100,0,125,7,89,0,110,1,37,0,116,9,124, + 4,124,1,124,2,100,1,141,3,125,3,124,5,100,0,117, + 0,114,136,100,2,110,1,100,3,124,3,95,10,124,6,124, + 3,95,11,124,7,124,3,95,12,124,3,83,0,119,0,119, + 0,119,0,119,0,119,0,119,0,41,4,78,169,1,114,127, + 0,0,0,70,84,41,13,114,114,0,0,0,114,2,0,0, + 0,114,9,0,0,0,114,113,0,0,0,114,122,0,0,0, + 218,7,95,79,82,73,71,73,78,218,10,95,95,99,97,99, + 104,101,100,95,95,218,4,108,105,115,116,218,8,95,95,112, + 97,116,104,95,95,114,126,0,0,0,114,131,0,0,0,114, + 136,0,0,0,114,130,0,0,0,41,8,114,111,0,0,0, + 114,123,0,0,0,114,127,0,0,0,114,110,0,0,0,114, + 21,0,0,0,90,8,108,111,99,97,116,105,111,110,114,136, + 0,0,0,114,130,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,17,95,115,112,101,99,95,102, + 114,111,109,95,109,111,100,117,108,101,191,1,0,0,115,108, + 0,0,0,2,2,8,1,2,128,12,1,4,1,2,128,8, + 2,4,1,6,2,8,1,2,1,8,1,2,128,12,1,4, + 2,2,128,2,1,8,1,2,128,12,1,8,1,2,128,8, + 1,8,1,2,1,8,1,2,128,12,1,8,1,2,128,4, + 2,2,1,8,1,2,128,12,1,8,1,2,128,2,1,12, + 1,2,128,12,1,8,1,2,128,14,2,18,1,6,1,6, + 1,4,1,2,249,2,252,2,250,2,250,2,251,2,246,115, + 93,0,0,0,129,3,5,0,133,7,14,7,157,3,33,0, + 161,7,42,7,172,3,48,0,176,9,59,7,193,5,3,65, + 9,0,193,9,9,65,20,7,193,24,3,65,28,0,193,28, + 9,65,39,7,193,41,5,65,47,0,193,47,9,65,58,7, + 194,19,1,65,58,7,194,20,1,65,39,7,194,21,1,65, + 20,7,194,22,1,59,7,194,23,1,42,7,194,24,1,14, + 7,114,156,0,0,0,70,169,1,218,8,111,118,101,114,114, + 105,100,101,99,2,0,0,0,0,0,0,0,1,0,0,0, + 8,0,0,0,67,0,0,0,115,204,1,0,0,124,2,115, + 10,116,0,124,1,100,1,100,0,131,3,100,0,117,0,114, + 26,9,0,124,0,106,1,124,1,95,2,110,10,35,0,4, + 0,116,3,121,229,1,0,1,0,1,0,89,0,110,1,37, + 0,124,2,115,36,116,0,124,1,100,2,100,0,131,3,100, + 0,117,0,114,87,124,0,106,4,125,3,124,3,100,0,117, + 0,114,72,124,0,106,5,100,0,117,1,114,72,116,6,100, + 0,117,0,114,54,116,7,130,1,116,6,106,8,125,4,124, + 4,160,9,124,4,161,1,125,3,124,0,106,5,124,3,95, + 10,124,3,124,0,95,4,100,0,124,1,95,11,9,0,124, + 3,124,1,95,12,110,10,35,0,4,0,116,3,121,228,1, + 0,1,0,1,0,89,0,110,1,37,0,124,2,115,97,116, + 0,124,1,100,3,100,0,131,3,100,0,117,0,114,113,9, + 0,124,0,106,13,124,1,95,14,110,10,35,0,4,0,116, + 3,121,227,1,0,1,0,1,0,89,0,110,1,37,0,9, + 0,124,0,124,1,95,15,110,10,35,0,4,0,116,3,121, + 226,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, + 138,116,0,124,1,100,4,100,0,131,3,100,0,117,0,114, + 159,124,0,106,5,100,0,117,1,114,159,9,0,124,0,106, + 5,124,1,95,16,110,10,35,0,4,0,116,3,121,225,1, + 0,1,0,1,0,89,0,110,1,37,0,124,0,106,17,114, + 221,124,2,115,172,116,0,124,1,100,5,100,0,131,3,100, + 0,117,0,114,188,9,0,124,0,106,18,124,1,95,11,110, + 10,35,0,4,0,116,3,121,224,1,0,1,0,1,0,89, + 0,110,1,37,0,124,2,115,198,116,0,124,1,100,6,100, + 0,131,3,100,0,117,0,114,221,124,0,106,19,100,0,117, + 1,114,221,9,0,124,0,106,19,124,1,95,20,124,1,83, + 0,35,0,4,0,116,3,121,223,1,0,1,0,1,0,89, + 0,124,1,83,0,37,0,124,1,83,0,119,0,119,0,119, + 0,119,0,119,0,119,0,119,0,41,7,78,114,9,0,0, + 0,114,113,0,0,0,218,11,95,95,112,97,99,107,97,103, + 101,95,95,114,155,0,0,0,114,122,0,0,0,114,153,0, + 0,0,41,21,114,13,0,0,0,114,21,0,0,0,114,9, + 0,0,0,114,2,0,0,0,114,123,0,0,0,114,130,0, + 0,0,114,140,0,0,0,114,141,0,0,0,218,16,95,78, + 97,109,101,115,112,97,99,101,76,111,97,100,101,114,218,7, + 95,95,110,101,119,95,95,90,5,95,112,97,116,104,114,122, + 0,0,0,114,113,0,0,0,114,144,0,0,0,114,159,0, + 0,0,114,114,0,0,0,114,155,0,0,0,114,137,0,0, + 0,114,127,0,0,0,114,136,0,0,0,114,153,0,0,0, + 41,5,114,110,0,0,0,114,111,0,0,0,114,158,0,0, + 0,114,123,0,0,0,114,160,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,18,95,105,110,105, + 116,95,109,111,100,117,108,101,95,97,116,116,114,115,236,1, + 0,0,115,142,0,0,0,20,4,2,1,10,1,2,128,12, + 1,4,1,2,128,20,2,6,1,8,1,10,2,8,1,4, + 1,6,1,10,2,8,1,6,1,6,11,2,1,8,1,2, + 128,12,1,4,1,2,128,20,2,2,1,10,1,2,128,12, + 1,4,1,2,128,2,2,8,1,2,128,12,1,4,1,2, + 128,20,2,10,1,2,1,10,1,2,128,12,1,4,1,2, + 128,6,2,20,1,2,1,10,1,2,128,12,1,4,1,2, + 128,20,2,10,1,2,1,8,1,4,3,2,128,12,254,2, + 1,4,1,2,128,4,0,2,254,2,249,2,249,2,249,2, + 251,2,250,2,228,115,121,0,0,0,139,4,16,0,144,7, + 25,7,193,9,3,65,13,0,193,13,7,65,22,7,193,34, + 4,65,39,0,193,39,7,65,48,7,193,50,3,65,54,0, + 193,54,7,65,63,7,194,16,4,66,21,0,194,21,7,66, + 30,7,194,45,4,66,50,0,194,50,7,66,59,7,195,12, + 4,67,18,0,195,18,7,67,28,7,195,31,1,67,28,7, + 195,32,1,66,59,7,195,33,1,66,30,7,195,34,1,65, + 63,7,195,35,1,65,48,7,195,36,1,65,22,7,195,37, + 1,25,7,114,162,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,67,0,0,0,115,82,0, + 0,0,100,1,125,1,116,0,124,0,106,1,100,2,131,2, + 114,15,124,0,106,1,160,2,124,0,161,1,125,1,110,10, + 116,0,124,0,106,1,100,3,131,2,114,25,116,3,100,4, + 131,1,130,1,124,1,100,1,117,0,114,34,116,4,124,0, + 106,5,131,1,125,1,116,6,124,0,124,1,131,2,1,0, + 124,1,83,0,41,5,122,43,67,114,101,97,116,101,32,97, + 32,109,111,100,117,108,101,32,98,97,115,101,100,32,111,110, + 32,116,104,101,32,112,114,111,118,105,100,101,100,32,115,112, + 101,99,46,78,218,13,99,114,101,97,116,101,95,109,111,100, + 117,108,101,218,11,101,120,101,99,95,109,111,100,117,108,101, + 122,66,108,111,97,100,101,114,115,32,116,104,97,116,32,100, + 101,102,105,110,101,32,101,120,101,99,95,109,111,100,117,108, + 101,40,41,32,109,117,115,116,32,97,108,115,111,32,100,101, + 102,105,110,101,32,99,114,101,97,116,101,95,109,111,100,117, + 108,101,40,41,41,7,114,11,0,0,0,114,123,0,0,0, + 114,163,0,0,0,114,88,0,0,0,114,22,0,0,0,114, + 21,0,0,0,114,162,0,0,0,169,2,114,110,0,0,0, + 114,111,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,16,109,111,100,117,108,101,95,102,114,111, + 109,95,115,112,101,99,52,2,0,0,115,18,0,0,0,4, + 3,12,1,14,3,12,1,8,1,8,2,10,1,10,1,4, + 1,114,18,0,0,0,114,166,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,100,0,0,0,124,0,106,0,100,1,117,0,114,7,100, + 2,110,2,124,0,106,0,125,1,124,0,106,1,100,1,117, + 0,114,32,124,0,106,2,100,1,117,0,114,25,100,3,160, + 3,124,1,161,1,83,0,100,4,160,3,124,1,124,0,106, + 2,161,2,83,0,124,0,106,4,114,42,100,5,160,3,124, + 1,124,0,106,1,161,2,83,0,100,6,160,3,124,0,106, + 0,124,0,106,1,161,2,83,0,41,7,122,38,82,101,116, + 117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32, + 117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117, + 108,101,46,78,114,116,0,0,0,114,117,0,0,0,114,118, + 0,0,0,114,119,0,0,0,250,18,60,109,111,100,117,108, + 101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,21, + 0,0,0,114,127,0,0,0,114,123,0,0,0,114,51,0, + 0,0,114,137,0,0,0,41,2,114,110,0,0,0,114,21, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,120,0,0,0,69,2,0,0,115,16,0,0,0, + 20,3,10,1,10,1,10,1,14,2,6,2,14,1,16,2, + 114,18,0,0,0,114,120,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,10,0,0,0,67,0,0,0,115, + 32,1,0,0,124,0,106,0,125,2,116,1,124,2,131,1, + 53,0,1,0,116,2,106,3,160,4,124,2,161,1,124,1, + 117,1,114,27,100,1,160,5,124,2,161,1,125,3,116,6, + 124,3,124,2,100,2,141,2,130,1,9,0,124,0,106,7, + 100,3,117,0,114,53,124,0,106,8,100,3,117,0,114,45, + 116,6,100,4,124,0,106,0,100,2,141,2,130,1,116,9, + 124,0,124,1,100,5,100,6,141,3,1,0,110,40,116,9, + 124,0,124,1,100,5,100,6,141,3,1,0,116,10,124,0, + 106,7,100,7,131,2,115,87,116,11,124,0,106,7,131,1, + 155,0,100,8,157,2,125,3,116,12,160,13,124,3,116,14, + 161,2,1,0,124,0,106,7,160,15,124,2,161,1,1,0, + 110,6,124,0,106,7,160,16,124,1,161,1,1,0,116,2, + 106,3,160,17,124,0,106,0,161,1,125,1,124,1,116,2, + 106,3,124,0,106,0,60,0,110,16,35,0,116,2,106,3, + 160,17,124,0,106,0,161,1,125,1,124,1,116,2,106,3, + 124,0,106,0,60,0,119,0,37,0,9,0,100,3,4,0, + 4,0,131,3,1,0,124,1,83,0,35,0,49,0,115,136, + 119,4,37,0,1,0,1,0,1,0,89,0,1,0,1,0, + 124,1,83,0,41,9,122,70,69,120,101,99,117,116,101,32, + 116,104,101,32,115,112,101,99,39,115,32,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,32,105,110,32,97, + 110,32,101,120,105,115,116,105,110,103,32,109,111,100,117,108, + 101,39,115,32,110,97,109,101,115,112,97,99,101,46,122,30, + 109,111,100,117,108,101,32,123,33,114,125,32,110,111,116,32, + 105,110,32,115,121,115,46,109,111,100,117,108,101,115,114,20, + 0,0,0,78,250,14,109,105,115,115,105,110,103,32,108,111, + 97,100,101,114,84,114,157,0,0,0,114,164,0,0,0,250, + 55,46,101,120,101,99,95,109,111,100,117,108,101,40,41,32, + 110,111,116,32,102,111,117,110,100,59,32,102,97,108,108,105, + 110,103,32,98,97,99,107,32,116,111,32,108,111,97,100,95, + 109,111,100,117,108,101,40,41,41,18,114,21,0,0,0,114, + 58,0,0,0,114,19,0,0,0,114,106,0,0,0,114,39, + 0,0,0,114,51,0,0,0,114,88,0,0,0,114,123,0, + 0,0,114,130,0,0,0,114,162,0,0,0,114,11,0,0, + 0,114,7,0,0,0,114,102,0,0,0,114,103,0,0,0, + 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,218, + 11,108,111,97,100,95,109,111,100,117,108,101,114,164,0,0, + 0,218,3,112,111,112,41,4,114,110,0,0,0,114,111,0, + 0,0,114,21,0,0,0,114,109,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,107,0,0,0, + 86,2,0,0,115,50,0,0,0,6,2,10,1,16,1,10, + 1,12,1,2,1,10,1,10,1,14,1,16,2,14,2,12, + 1,16,1,12,2,14,1,12,2,14,4,14,1,2,128,14, + 255,18,1,10,233,4,24,22,128,4,0,115,41,0,0,0, + 135,20,66,3,3,156,65,1,65,43,2,193,29,14,66,3, + 3,193,43,15,65,58,9,193,58,1,66,3,3,194,3,4, + 66,7,11,194,8,3,66,7,11,114,107,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,22,1,0,0,9,0,124,0,106,0,160,1, + 124,0,106,2,161,1,1,0,110,25,35,0,1,0,1,0, + 1,0,124,0,106,2,116,3,106,4,118,0,114,32,116,3, + 106,4,160,5,124,0,106,2,161,1,125,1,124,1,116,3, + 106,4,124,0,106,2,60,0,130,0,37,0,116,3,106,4, + 160,5,124,0,106,2,161,1,125,1,124,1,116,3,106,4, + 124,0,106,2,60,0,116,6,124,1,100,1,100,0,131,3, + 100,0,117,0,114,71,9,0,124,0,106,0,124,1,95,7, + 110,10,35,0,4,0,116,8,121,138,1,0,1,0,1,0, + 89,0,110,1,37,0,116,6,124,1,100,2,100,0,131,3, + 100,0,117,0,114,109,9,0,124,1,106,9,124,1,95,10, + 116,11,124,1,100,3,131,2,115,98,124,0,106,2,160,12, + 100,4,161,1,100,5,25,0,124,1,95,10,110,10,35,0, + 4,0,116,8,121,137,1,0,1,0,1,0,89,0,110,1, + 37,0,116,6,124,1,100,6,100,0,131,3,100,0,117,0, + 114,134,9,0,124,0,124,1,95,13,124,1,83,0,35,0, + 4,0,116,8,121,136,1,0,1,0,1,0,89,0,124,1, + 83,0,37,0,124,1,83,0,119,0,119,0,119,0,41,7, + 78,114,113,0,0,0,114,159,0,0,0,114,155,0,0,0, + 114,142,0,0,0,114,26,0,0,0,114,114,0,0,0,41, + 14,114,123,0,0,0,114,171,0,0,0,114,21,0,0,0, + 114,19,0,0,0,114,106,0,0,0,114,172,0,0,0,114, + 13,0,0,0,114,113,0,0,0,114,2,0,0,0,114,9, + 0,0,0,114,159,0,0,0,114,11,0,0,0,114,143,0, + 0,0,114,114,0,0,0,114,165,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,25,95,108,111, + 97,100,95,98,97,99,107,119,97,114,100,95,99,111,109,112, + 97,116,105,98,108,101,116,2,0,0,115,80,0,0,0,2, + 3,16,1,2,128,6,1,12,1,14,1,12,1,2,1,2, + 128,14,3,12,1,16,1,2,1,10,1,2,128,12,1,4, + 1,2,128,16,1,2,1,8,4,10,1,18,1,4,128,12, + 1,4,1,2,128,16,1,2,1,6,1,4,3,2,128,12, + 254,2,1,4,1,2,128,4,0,2,254,2,251,2,246,115, + 59,0,0,0,129,7,9,0,137,24,33,7,184,4,61,0, + 189,7,65,6,7,193,16,18,65,35,0,193,35,7,65,44, + 7,193,54,3,65,59,0,193,59,7,66,5,7,194,8,1, + 66,5,7,194,9,1,65,44,7,194,10,1,65,6,7,114, + 173,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,11,0,0,0,67,0,0,0,115,248,0,0,0,124,0, + 106,0,100,0,117,1,114,29,116,1,124,0,106,0,100,1, + 131,2,115,29,116,2,124,0,106,0,131,1,155,0,100,2, + 157,2,125,1,116,3,160,4,124,1,116,5,161,2,1,0, + 116,6,124,0,131,1,83,0,116,7,124,0,131,1,125,2, + 100,3,124,0,95,8,9,0,124,2,116,9,106,10,124,0, + 106,11,60,0,9,0,124,0,106,0,100,0,117,0,114,62, + 124,0,106,12,100,0,117,0,114,61,116,13,100,4,124,0, + 106,11,100,5,141,2,130,1,110,6,124,0,106,0,160,14, + 124,2,161,1,1,0,110,22,35,0,1,0,1,0,1,0, + 9,0,116,9,106,10,124,0,106,11,61,0,130,0,35,0, + 4,0,116,15,121,123,1,0,1,0,1,0,89,0,130,0, + 37,0,37,0,116,9,106,10,160,16,124,0,106,11,161,1, + 125,2,124,2,116,9,106,10,124,0,106,11,60,0,116,17, + 100,6,124,0,106,11,124,0,106,0,131,3,1,0,100,7, + 124,0,95,8,124,2,83,0,35,0,100,7,124,0,95,8, + 119,0,37,0,119,0,41,8,78,114,164,0,0,0,114,169, + 0,0,0,84,114,168,0,0,0,114,20,0,0,0,122,18, + 105,109,112,111,114,116,32,123,33,114,125,32,35,32,123,33, + 114,125,70,41,18,114,123,0,0,0,114,11,0,0,0,114, + 7,0,0,0,114,102,0,0,0,114,103,0,0,0,114,170, + 0,0,0,114,173,0,0,0,114,166,0,0,0,90,13,95, + 105,110,105,116,105,97,108,105,122,105,110,103,114,19,0,0, + 0,114,106,0,0,0,114,21,0,0,0,114,130,0,0,0, + 114,88,0,0,0,114,164,0,0,0,114,71,0,0,0,114, + 172,0,0,0,114,84,0,0,0,41,3,114,110,0,0,0, + 114,109,0,0,0,114,111,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,14,95,108,111,97,100, + 95,117,110,108,111,99,107,101,100,152,2,0,0,115,66,0, + 0,0,10,2,12,2,16,1,12,2,8,1,8,2,6,5, + 2,1,12,1,2,1,10,1,10,1,14,1,2,255,12,4, + 4,128,6,1,2,1,10,1,2,3,2,128,12,254,2,1, + 2,1,4,128,14,5,12,1,16,1,6,2,4,2,2,128, + 10,254,2,245,115,64,0,0,0,165,6,65,53,0,172,24, + 65,5,0,193,4,1,65,53,0,193,5,4,65,26,7,193, + 10,5,65,16,6,193,15,1,65,26,7,193,16,7,65,25, + 13,193,23,3,65,26,7,193,26,22,65,53,0,193,53,5, + 65,58,7,193,59,1,65,25,13,114,174,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, + 0,0,0,115,58,0,0,0,116,0,124,0,106,1,131,1, + 53,0,1,0,116,2,124,0,131,1,2,0,100,1,4,0, + 4,0,131,3,1,0,83,0,35,0,49,0,115,21,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,100,1, + 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, + 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, + 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, + 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, + 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, + 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, + 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, + 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, + 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, + 100,117,108,101,115,44,32,116,104,97,116,32,101,120,105,115, + 116,105,110,103,32,109,111,100,117,108,101,32,103,101,116,115, + 10,32,32,32,32,99,108,111,98,98,101,114,101,100,46,10, + 10,32,32,32,32,78,41,3,114,58,0,0,0,114,21,0, + 0,0,114,174,0,0,0,169,1,114,110,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,108,0, + 0,0,197,2,0,0,115,10,0,0,0,12,9,6,1,14, + 255,22,128,4,0,115,12,0,0,0,133,4,16,3,144,4, + 20,11,149,3,20,11,114,108,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,0, + 115,140,0,0,0,101,0,90,1,100,0,90,2,100,1,90, + 3,100,2,90,4,101,5,100,3,100,4,132,0,131,1,90, + 6,101,7,100,20,100,6,100,7,132,1,131,1,90,8,101, + 7,100,21,100,8,100,9,132,1,131,1,90,9,101,5,100, + 10,100,11,132,0,131,1,90,10,101,5,100,12,100,13,132, + 0,131,1,90,11,101,7,101,12,100,14,100,15,132,0,131, + 1,131,1,90,13,101,7,101,12,100,16,100,17,132,0,131, + 1,131,1,90,14,101,7,101,12,100,18,100,19,132,0,131, + 1,131,1,90,15,101,7,101,16,131,1,90,17,100,5,83, + 0,41,22,218,15,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,122,144,77,101,116,97,32,112,97,116,104,32, + 105,109,112,111,114,116,32,102,111,114,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,115,46,10,10,32,32, + 32,32,65,108,108,32,109,101,116,104,111,100,115,32,97,114, + 101,32,101,105,116,104,101,114,32,99,108,97,115,115,32,111, + 114,32,115,116,97,116,105,99,32,109,101,116,104,111,100,115, + 32,116,111,32,97,118,111,105,100,32,116,104,101,32,110,101, + 101,100,32,116,111,10,32,32,32,32,105,110,115,116,97,110, + 116,105,97,116,101,32,116,104,101,32,99,108,97,115,115,46, + 10,10,32,32,32,32,122,8,98,117,105,108,116,45,105,110, + 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,67,0,0,0,115,34,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,100,2,124,0,106,3,155,2,100,3, + 116,4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,122,8,60,109,111,100,117,108,101,32, + 122,2,32,40,122,2,41,62,78,41,6,114,102,0,0,0, + 114,103,0,0,0,114,104,0,0,0,114,9,0,0,0,114, + 176,0,0,0,114,152,0,0,0,169,1,114,111,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 107,0,0,0,86,2,0,0,115,50,0,0,0,6,2,10, - 1,16,1,10,1,12,1,2,1,10,1,10,1,14,1,16, - 2,14,2,12,1,16,1,12,2,14,1,12,2,14,4,14, - 1,2,128,14,255,18,1,10,233,4,24,22,128,4,0,115, - 41,0,0,0,135,20,66,3,3,156,65,1,65,43,2,193, - 29,14,66,3,3,193,43,15,65,58,9,193,58,1,66,3, - 3,194,3,4,66,7,11,194,8,3,66,7,11,114,107,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,22,1,0,0,9,0,124,0, - 106,0,160,1,124,0,106,2,161,1,1,0,110,25,35,0, - 1,0,1,0,1,0,124,0,106,2,116,3,106,4,118,0, - 114,32,116,3,106,4,160,5,124,0,106,2,161,1,125,1, - 124,1,116,3,106,4,124,0,106,2,60,0,130,0,37,0, - 116,3,106,4,160,5,124,0,106,2,161,1,125,1,124,1, - 116,3,106,4,124,0,106,2,60,0,116,6,124,1,100,1, - 100,0,131,3,100,0,117,0,114,71,9,0,124,0,106,0, - 124,1,95,7,110,10,35,0,4,0,116,8,121,138,1,0, - 1,0,1,0,89,0,110,1,37,0,116,6,124,1,100,2, - 100,0,131,3,100,0,117,0,114,109,9,0,124,1,106,9, - 124,1,95,10,116,11,124,1,100,3,131,2,115,98,124,0, - 106,2,160,12,100,4,161,1,100,5,25,0,124,1,95,10, - 110,10,35,0,4,0,116,8,121,137,1,0,1,0,1,0, - 89,0,110,1,37,0,116,6,124,1,100,6,100,0,131,3, - 100,0,117,0,114,134,9,0,124,0,124,1,95,13,124,1, - 83,0,35,0,4,0,116,8,121,136,1,0,1,0,1,0, - 89,0,124,1,83,0,37,0,124,1,83,0,119,0,119,0, - 119,0,41,7,78,114,113,0,0,0,114,159,0,0,0,114, - 155,0,0,0,114,142,0,0,0,114,26,0,0,0,114,114, - 0,0,0,41,14,114,123,0,0,0,114,171,0,0,0,114, - 21,0,0,0,114,19,0,0,0,114,106,0,0,0,114,172, - 0,0,0,114,13,0,0,0,114,113,0,0,0,114,2,0, - 0,0,114,9,0,0,0,114,159,0,0,0,114,11,0,0, - 0,114,143,0,0,0,114,114,0,0,0,114,165,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 25,95,108,111,97,100,95,98,97,99,107,119,97,114,100,95, - 99,111,109,112,97,116,105,98,108,101,116,2,0,0,115,80, - 0,0,0,2,3,16,1,2,128,6,1,12,1,14,1,12, - 1,2,1,2,128,14,3,12,1,16,1,2,1,10,1,2, - 128,12,1,4,1,2,128,16,1,2,1,8,4,10,1,18, - 1,4,128,12,1,4,1,2,128,16,1,2,1,6,1,4, - 3,2,128,12,254,2,1,4,1,2,128,4,0,2,254,2, - 251,2,246,115,59,0,0,0,129,7,9,0,137,24,33,7, - 184,4,61,0,189,7,65,6,7,193,16,18,65,35,0,193, - 35,7,65,44,7,193,54,3,65,59,0,193,59,7,66,5, - 7,194,8,1,66,5,7,194,9,1,65,44,7,194,10,1, - 65,6,7,114,173,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,11,0,0,0,67,0,0,0,115,248,0, - 0,0,124,0,106,0,100,0,117,1,114,29,116,1,124,0, - 106,0,100,1,131,2,115,29,116,2,124,0,106,0,131,1, - 155,0,100,2,157,2,125,1,116,3,160,4,124,1,116,5, - 161,2,1,0,116,6,124,0,131,1,83,0,116,7,124,0, - 131,1,125,2,100,3,124,0,95,8,9,0,124,2,116,9, - 106,10,124,0,106,11,60,0,9,0,124,0,106,0,100,0, - 117,0,114,62,124,0,106,12,100,0,117,0,114,61,116,13, - 100,4,124,0,106,11,100,5,141,2,130,1,110,6,124,0, - 106,0,160,14,124,2,161,1,1,0,110,22,35,0,1,0, - 1,0,1,0,9,0,116,9,106,10,124,0,106,11,61,0, - 130,0,35,0,4,0,116,15,121,123,1,0,1,0,1,0, - 89,0,130,0,37,0,37,0,116,9,106,10,160,16,124,0, - 106,11,161,1,125,2,124,2,116,9,106,10,124,0,106,11, - 60,0,116,17,100,6,124,0,106,11,124,0,106,0,131,3, - 1,0,100,7,124,0,95,8,124,2,83,0,35,0,100,7, - 124,0,95,8,119,0,37,0,119,0,41,8,78,114,164,0, - 0,0,114,169,0,0,0,84,114,168,0,0,0,114,20,0, - 0,0,122,18,105,109,112,111,114,116,32,123,33,114,125,32, - 35,32,123,33,114,125,70,41,18,114,123,0,0,0,114,11, - 0,0,0,114,7,0,0,0,114,102,0,0,0,114,103,0, - 0,0,114,170,0,0,0,114,173,0,0,0,114,166,0,0, - 0,90,13,95,105,110,105,116,105,97,108,105,122,105,110,103, - 114,19,0,0,0,114,106,0,0,0,114,21,0,0,0,114, - 130,0,0,0,114,88,0,0,0,114,164,0,0,0,114,71, - 0,0,0,114,172,0,0,0,114,84,0,0,0,41,3,114, - 110,0,0,0,114,109,0,0,0,114,111,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,14,95, - 108,111,97,100,95,117,110,108,111,99,107,101,100,152,2,0, - 0,115,66,0,0,0,10,2,12,2,16,1,12,2,8,1, - 8,2,6,5,2,1,12,1,2,1,10,1,10,1,14,1, - 2,255,12,4,4,128,6,1,2,1,10,1,2,3,2,128, - 12,254,2,1,2,1,4,128,14,5,12,1,16,1,6,2, - 4,2,2,128,10,254,2,245,115,64,0,0,0,165,6,65, - 53,0,172,24,65,5,0,193,4,1,65,53,0,193,5,4, - 65,26,7,193,10,5,65,16,6,193,15,1,65,26,7,193, - 16,7,65,25,13,193,23,3,65,26,7,193,26,22,65,53, - 0,193,53,5,65,58,7,193,59,1,65,25,13,114,174,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,9, - 0,0,0,67,0,0,0,115,58,0,0,0,116,0,124,0, - 106,1,131,1,53,0,1,0,116,2,124,0,131,1,2,0, - 100,1,4,0,4,0,131,3,1,0,83,0,35,0,49,0, - 115,21,119,4,37,0,1,0,1,0,1,0,89,0,1,0, - 1,0,100,1,83,0,41,2,122,191,82,101,116,117,114,110, - 32,97,32,110,101,119,32,109,111,100,117,108,101,32,111,98, - 106,101,99,116,44,32,108,111,97,100,101,100,32,98,121,32, - 116,104,101,32,115,112,101,99,39,115,32,108,111,97,100,101, - 114,46,10,10,32,32,32,32,84,104,101,32,109,111,100,117, - 108,101,32,105,115,32,110,111,116,32,97,100,100,101,100,32, - 116,111,32,105,116,115,32,112,97,114,101,110,116,46,10,10, - 32,32,32,32,73,102,32,97,32,109,111,100,117,108,101,32, - 105,115,32,97,108,114,101,97,100,121,32,105,110,32,115,121, - 115,46,109,111,100,117,108,101,115,44,32,116,104,97,116,32, - 101,120,105,115,116,105,110,103,32,109,111,100,117,108,101,32, - 103,101,116,115,10,32,32,32,32,99,108,111,98,98,101,114, - 101,100,46,10,10,32,32,32,32,78,41,3,114,58,0,0, - 0,114,21,0,0,0,114,174,0,0,0,169,1,114,110,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,108,0,0,0,197,2,0,0,115,12,0,0,0,12, - 9,6,1,12,255,2,1,22,128,4,0,115,12,0,0,0, - 133,4,16,3,144,4,20,11,149,3,20,11,114,108,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,64,0,0,0,115,140,0,0,0,101,0,90,1,100, - 0,90,2,100,1,90,3,100,2,90,4,101,5,100,3,100, - 4,132,0,131,1,90,6,101,7,100,20,100,6,100,7,132, - 1,131,1,90,8,101,7,100,21,100,8,100,9,132,1,131, - 1,90,9,101,5,100,10,100,11,132,0,131,1,90,10,101, - 5,100,12,100,13,132,0,131,1,90,11,101,7,101,12,100, - 14,100,15,132,0,131,1,131,1,90,13,101,7,101,12,100, - 16,100,17,132,0,131,1,131,1,90,14,101,7,101,12,100, - 18,100,19,132,0,131,1,131,1,90,15,101,7,101,16,131, - 1,90,17,100,5,83,0,41,22,218,15,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,122,144,77,101,116,97, - 32,112,97,116,104,32,105,109,112,111,114,116,32,102,111,114, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 115,46,10,10,32,32,32,32,65,108,108,32,109,101,116,104, - 111,100,115,32,97,114,101,32,101,105,116,104,101,114,32,99, - 108,97,115,115,32,111,114,32,115,116,97,116,105,99,32,109, - 101,116,104,111,100,115,32,116,111,32,97,118,111,105,100,32, - 116,104,101,32,110,101,101,100,32,116,111,10,32,32,32,32, - 105,110,115,116,97,110,116,105,97,116,101,32,116,104,101,32, - 99,108,97,115,115,46,10,10,32,32,32,32,122,8,98,117, - 105,108,116,45,105,110,99,1,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,67,0,0,0,115,34,0,0,0, - 116,0,160,1,100,1,116,2,161,2,1,0,100,2,124,0, - 106,3,155,2,100,3,116,4,106,5,155,0,100,4,157,5, - 83,0,41,6,250,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,81,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108, + 115,0,0,0,223,2,0,0,115,8,0,0,0,6,7,2, + 1,4,255,22,2,114,18,0,0,0,122,27,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,46,109,111,100,117, + 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,42,0, + 0,0,124,2,100,0,117,1,114,6,100,0,83,0,116,0, + 160,1,124,1,161,1,114,19,116,2,124,1,124,0,124,0, + 106,3,100,1,141,3,83,0,100,0,83,0,169,2,78,114, + 151,0,0,0,41,4,114,65,0,0,0,90,10,105,115,95, + 98,117,105,108,116,105,110,114,105,0,0,0,114,152,0,0, + 0,169,4,218,3,99,108,115,114,90,0,0,0,218,4,112, + 97,116,104,218,6,116,97,114,103,101,116,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,9,102,105,110,100, + 95,115,112,101,99,234,2,0,0,115,10,0,0,0,8,2, + 4,1,10,1,16,1,4,2,114,18,0,0,0,122,25,66, + 117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115,42,0, + 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, + 160,3,124,1,124,2,161,2,125,3,124,3,100,2,117,1, + 114,19,124,3,106,4,83,0,100,2,83,0,41,3,122,175, + 70,105,110,100,32,116,104,101,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,73,102,32,39,112,97,116,104,39,32,105,115,32, + 101,118,101,114,32,115,112,101,99,105,102,105,101,100,32,116, + 104,101,110,32,116,104,101,32,115,101,97,114,99,104,32,105, + 115,32,99,111,110,115,105,100,101,114,101,100,32,97,32,102, + 97,105,108,117,114,101,46,10,10,32,32,32,32,32,32,32, + 32,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,122, + 106,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,102, + 0,0,0,114,103,0,0,0,114,104,0,0,0,114,184,0, + 0,0,114,123,0,0,0,41,4,114,181,0,0,0,114,90, + 0,0,0,114,182,0,0,0,114,110,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,11,102,105, + 110,100,95,109,111,100,117,108,101,243,2,0,0,115,10,0, + 0,0,6,9,2,2,4,254,12,3,18,1,114,18,0,0, + 0,122,27,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,46,0,0,0,124,0,106,0,116,1,106,2, + 118,1,114,17,116,3,100,1,160,4,124,0,106,0,161,1, + 124,0,106,0,100,2,141,2,130,1,116,5,116,6,106,7, + 124,0,131,2,83,0,41,4,122,24,67,114,101,97,116,101, + 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,114,86,0,0,0,114,20,0,0,0,78,41,8,114, + 21,0,0,0,114,19,0,0,0,114,87,0,0,0,114,88, + 0,0,0,114,51,0,0,0,114,75,0,0,0,114,65,0, + 0,0,90,14,99,114,101,97,116,101,95,98,117,105,108,116, + 105,110,114,175,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,163,0,0,0,2,3,0,0,115, + 10,0,0,0,12,3,12,1,4,1,6,255,12,2,114,18, + 0,0,0,122,29,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,99,114,101,97,116,101,95,109,111,100,117, + 108,101,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,115,16,0,0,0,116,0,116,1, + 106,2,124,0,131,2,1,0,100,1,83,0,41,2,122,22, + 69,120,101,99,32,97,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,78,41,3,114,75,0,0,0,114,65, + 0,0,0,90,12,101,120,101,99,95,98,117,105,108,116,105, + 110,114,178,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,164,0,0,0,10,3,0,0,115,2, + 0,0,0,16,3,114,18,0,0,0,122,27,66,117,105,108, + 116,105,110,73,109,112,111,114,116,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,1,0,0,0,67,0,0,0,243,4,0,0, + 0,100,1,83,0,41,2,122,57,82,101,116,117,114,110,32, + 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, + 104,97,118,101,32,99,111,100,101,32,111,98,106,101,99,116, + 115,46,78,114,5,0,0,0,169,2,114,181,0,0,0,114, + 90,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,8,103,101,116,95,99,111,100,101,15,3,0, + 0,243,2,0,0,0,4,4,114,18,0,0,0,122,24,66, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, + 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,67,0,0,0,114,186,0,0, + 0,41,2,122,56,82,101,116,117,114,110,32,78,111,110,101, + 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, + 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,5, + 0,0,0,114,187,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,10,103,101,116,95,115,111,117, + 114,99,101,21,3,0,0,114,189,0,0,0,114,18,0,0, + 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,67,0, + 0,0,114,186,0,0,0,41,3,122,52,82,101,116,117,114, + 110,32,70,97,108,115,101,32,97,115,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,115,32,97,114,101,32, + 110,101,118,101,114,32,112,97,99,107,97,103,101,115,46,70, + 78,114,5,0,0,0,114,187,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,129,0,0,0,27, + 3,0,0,114,189,0,0,0,114,18,0,0,0,122,26,66, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, + 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, + 0,0,41,18,114,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,152,0,0,0,218,12,115, + 116,97,116,105,99,109,101,116,104,111,100,114,115,0,0,0, + 218,11,99,108,97,115,115,109,101,116,104,111,100,114,184,0, + 0,0,114,185,0,0,0,114,163,0,0,0,114,164,0,0, + 0,114,96,0,0,0,114,188,0,0,0,114,190,0,0,0, + 114,129,0,0,0,114,112,0,0,0,114,171,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,176,0,0,0,212,2,0,0,115,46,0,0, + 0,8,0,4,2,4,7,2,2,10,1,2,10,12,1,2, + 8,12,1,2,14,10,1,2,7,10,1,2,4,2,1,12, + 1,2,4,2,1,12,1,2,4,2,1,12,1,12,4,114, + 18,0,0,0,114,176,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,144, + 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, + 2,90,4,101,5,100,3,100,4,132,0,131,1,90,6,101, + 7,100,22,100,6,100,7,132,1,131,1,90,8,101,7,100, + 23,100,8,100,9,132,1,131,1,90,9,101,5,100,10,100, + 11,132,0,131,1,90,10,101,5,100,12,100,13,132,0,131, + 1,90,11,101,7,100,14,100,15,132,0,131,1,90,12,101, + 7,101,13,100,16,100,17,132,0,131,1,131,1,90,14,101, + 7,101,13,100,18,100,19,132,0,131,1,131,1,90,15,101, + 7,101,13,100,20,100,21,132,0,131,1,131,1,90,16,100, + 5,83,0,41,24,218,14,70,114,111,122,101,110,73,109,112, + 111,114,116,101,114,122,142,77,101,116,97,32,112,97,116,104, + 32,105,109,112,111,114,116,32,102,111,114,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,90,6,102,114,111,122,101,110,99,1,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,115,28,0,0,0,116,0,160,1,100,1,116,2,161, + 2,1,0,100,2,160,3,124,0,106,4,116,5,106,6,161, + 2,83,0,41,4,114,177,0,0,0,122,80,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108, 101,95,114,101,112,114,40,41,32,105,115,32,100,101,112,114, 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,122,8,60,109, - 111,100,117,108,101,32,122,2,32,40,122,2,41,62,78,41, - 6,114,102,0,0,0,114,103,0,0,0,114,104,0,0,0, - 114,9,0,0,0,114,176,0,0,0,114,152,0,0,0,169, - 1,114,111,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,115,0,0,0,223,2,0,0,115,8, - 0,0,0,6,7,2,1,4,255,22,2,114,18,0,0,0, - 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, - 0,0,0,115,42,0,0,0,124,2,100,0,117,1,114,6, - 100,0,83,0,116,0,160,1,124,1,161,1,114,19,116,2, - 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, - 83,0,169,2,78,114,151,0,0,0,41,4,114,65,0,0, - 0,90,10,105,115,95,98,117,105,108,116,105,110,114,105,0, - 0,0,114,152,0,0,0,169,4,218,3,99,108,115,114,90, - 0,0,0,218,4,112,97,116,104,218,6,116,97,114,103,101, - 116,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,9,102,105,110,100,95,115,112,101,99,234,2,0,0,115, - 10,0,0,0,8,2,4,1,10,1,16,1,4,2,114,18, - 0,0,0,122,25,66,117,105,108,116,105,110,73,109,112,111, - 114,116,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,67, - 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, - 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, - 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, - 83,0,41,3,122,175,70,105,110,100,32,116,104,101,32,98, - 117,105,108,116,45,105,110,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,32,32,32,32,73,102,32,39,112,97,116, - 104,39,32,105,115,32,101,118,101,114,32,115,112,101,99,105, - 102,105,101,100,32,116,104,101,110,32,116,104,101,32,115,101, - 97,114,99,104,32,105,115,32,99,111,110,115,105,100,101,114, - 101,100,32,97,32,102,97,105,108,117,114,101,46,10,10,32, - 32,32,32,32,32,32,32,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,122,106,66,117,105,108,116,105,110,73,109, + 32,80,121,116,104,111,110,32,51,46,49,50,114,167,0,0, + 0,78,41,7,114,102,0,0,0,114,103,0,0,0,114,104, + 0,0,0,114,51,0,0,0,114,9,0,0,0,114,194,0, + 0,0,114,152,0,0,0,41,1,218,1,109,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,115,0,0,0, + 47,3,0,0,115,8,0,0,0,6,7,2,1,4,255,16, + 2,114,18,0,0,0,122,26,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,109,111,100,117,108,101,95,114,101, + 112,114,78,99,4,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,67,0,0,0,115,30,0,0,0,116,0,160, + 1,124,1,161,1,114,13,116,2,124,1,124,0,124,0,106, + 3,100,1,141,3,83,0,100,0,83,0,114,179,0,0,0, + 41,4,114,65,0,0,0,114,99,0,0,0,114,105,0,0, + 0,114,152,0,0,0,114,180,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,184,0,0,0,58, + 3,0,0,115,6,0,0,0,10,2,16,1,4,2,114,18, + 0,0,0,122,24,70,114,111,122,101,110,73,109,112,111,114, + 116,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,67,0, + 0,0,115,30,0,0,0,116,0,160,1,100,1,116,2,161, + 2,1,0,116,3,160,4,124,1,161,1,114,13,124,0,83, + 0,100,2,83,0,41,3,122,93,70,105,110,100,32,97,32, + 102,114,111,122,101,110,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,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,122,105,70,114,111,122,101,110,73,109, 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, @@ -1198,750 +1339,609 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, 100,78,41,5,114,102,0,0,0,114,103,0,0,0,114,104, - 0,0,0,114,184,0,0,0,114,123,0,0,0,41,4,114, - 181,0,0,0,114,90,0,0,0,114,182,0,0,0,114,110, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,11,102,105,110,100,95,109,111,100,117,108,101,243, - 2,0,0,115,10,0,0,0,6,9,2,2,4,254,12,3, - 18,1,114,18,0,0,0,122,27,66,117,105,108,116,105,110, + 0,0,0,114,65,0,0,0,114,99,0,0,0,41,3,114, + 181,0,0,0,114,90,0,0,0,114,182,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,185,0, + 0,0,65,3,0,0,115,8,0,0,0,6,7,2,2,4, + 254,18,3,114,18,0,0,0,122,26,70,114,111,122,101,110, 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,46,0,0,0,124,0, - 106,0,116,1,106,2,118,1,114,17,116,3,100,1,160,4, - 124,0,106,0,161,1,124,0,106,0,100,2,141,2,130,1, - 116,5,116,6,106,7,124,0,131,2,83,0,41,4,122,24, - 67,114,101,97,116,101,32,97,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,114,86,0,0,0,114,20,0, - 0,0,78,41,8,114,21,0,0,0,114,19,0,0,0,114, - 87,0,0,0,114,88,0,0,0,114,51,0,0,0,114,75, - 0,0,0,114,65,0,0,0,90,14,99,114,101,97,116,101, - 95,98,117,105,108,116,105,110,114,175,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,163,0,0, - 0,2,3,0,0,115,10,0,0,0,12,3,12,1,4,1, - 6,255,12,2,114,18,0,0,0,122,29,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,46,99,114,101,97,116, - 101,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,16,0, - 0,0,116,0,116,1,106,2,124,0,131,2,1,0,100,1, - 83,0,41,2,122,22,69,120,101,99,32,97,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,78,41,3,114, - 75,0,0,0,114,65,0,0,0,90,12,101,120,101,99,95, - 98,117,105,108,116,105,110,114,178,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,164,0,0,0, - 10,3,0,0,115,2,0,0,0,16,3,114,18,0,0,0, - 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,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,1,0,0,0,67,0, - 0,0,243,4,0,0,0,100,1,83,0,41,2,122,57,82, - 101,116,117,114,110,32,78,111,110,101,32,97,115,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,100, - 111,32,110,111,116,32,104,97,118,101,32,99,111,100,101,32, - 111,98,106,101,99,116,115,46,78,114,5,0,0,0,169,2, - 114,181,0,0,0,114,90,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,8,103,101,116,95,99, - 111,100,101,15,3,0,0,243,2,0,0,0,4,4,114,18, - 0,0,0,122,24,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,103,101,116,95,99,111,100,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,67,0, - 0,0,114,186,0,0,0,41,2,122,56,82,101,116,117,114, - 110,32,78,111,110,101,32,97,115,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,32,100,111,32,110,111, - 116,32,104,97,118,101,32,115,111,117,114,99,101,32,99,111, - 100,101,46,78,114,5,0,0,0,114,187,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,10,103, - 101,116,95,115,111,117,114,99,101,21,3,0,0,114,189,0, - 0,0,114,18,0,0,0,122,26,66,117,105,108,116,105,110, - 73,109,112,111,114,116,101,114,46,103,101,116,95,115,111,117, - 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,67,0,0,0,114,186,0,0,0,41,3,122, - 52,82,101,116,117,114,110,32,70,97,108,115,101,32,97,115, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 115,32,97,114,101,32,110,101,118,101,114,32,112,97,99,107, - 97,103,101,115,46,70,78,114,5,0,0,0,114,187,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,129,0,0,0,27,3,0,0,114,189,0,0,0,114,18, - 0,0,0,122,26,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,169, - 2,78,78,114,0,0,0,0,41,18,114,9,0,0,0,114, - 8,0,0,0,114,1,0,0,0,114,10,0,0,0,114,152, - 0,0,0,218,12,115,116,97,116,105,99,109,101,116,104,111, - 100,114,115,0,0,0,218,11,99,108,97,115,115,109,101,116, - 104,111,100,114,184,0,0,0,114,185,0,0,0,114,163,0, - 0,0,114,164,0,0,0,114,96,0,0,0,114,188,0,0, - 0,114,190,0,0,0,114,129,0,0,0,114,112,0,0,0, - 114,171,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,176,0,0,0,212,2, - 0,0,115,46,0,0,0,8,0,4,2,4,7,2,2,10, - 1,2,10,12,1,2,8,12,1,2,14,10,1,2,7,10, - 1,2,4,2,1,12,1,2,4,2,1,12,1,2,4,2, - 1,12,1,12,4,114,18,0,0,0,114,176,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 64,0,0,0,115,144,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,90,4,101,5,100,3,100,4,132, - 0,131,1,90,6,101,7,100,22,100,6,100,7,132,1,131, - 1,90,8,101,7,100,23,100,8,100,9,132,1,131,1,90, - 9,101,5,100,10,100,11,132,0,131,1,90,10,101,5,100, - 12,100,13,132,0,131,1,90,11,101,7,100,14,100,15,132, - 0,131,1,90,12,101,7,101,13,100,16,100,17,132,0,131, - 1,131,1,90,14,101,7,101,13,100,18,100,19,132,0,131, - 1,131,1,90,15,101,7,101,13,100,20,100,21,132,0,131, - 1,131,1,90,16,100,5,83,0,41,24,218,14,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116, - 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, - 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, - 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, - 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, - 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, - 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, - 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, - 108,97,115,115,46,10,10,32,32,32,32,90,6,102,114,111, - 122,101,110,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,28,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, - 4,116,5,106,6,161,2,83,0,41,4,114,177,0,0,0, - 122,80,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,109,111,100,117,108,101,95,114,101,112,114,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,114,167,0,0,0,78,41,7,114,102,0,0,0,114, - 103,0,0,0,114,104,0,0,0,114,51,0,0,0,114,9, - 0,0,0,114,194,0,0,0,114,152,0,0,0,41,1,218, - 1,109,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,115,0,0,0,47,3,0,0,115,8,0,0,0,6, - 7,2,1,4,255,16,2,114,18,0,0,0,122,26,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,109,111,100, - 117,108,101,95,114,101,112,114,78,99,4,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,67,0,0,0,115,30, - 0,0,0,116,0,160,1,124,1,161,1,114,13,116,2,124, - 1,124,0,124,0,106,3,100,1,141,3,83,0,100,0,83, - 0,114,179,0,0,0,41,4,114,65,0,0,0,114,99,0, - 0,0,114,105,0,0,0,114,152,0,0,0,114,180,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,184,0,0,0,58,3,0,0,115,6,0,0,0,10,2, - 16,1,4,2,114,18,0,0,0,122,24,70,114,111,122,101, - 110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,116,3,160,4,124,1,161, - 1,114,13,124,0,83,0,100,2,83,0,41,3,122,93,70, - 105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,40,41,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,32,97,110,100,32,115,108,97, - 116,101,100,32,102,111,114,32,114,101,109,111,118,97,108,32, - 105,110,32,80,121,116,104,111,110,32,51,46,49,50,59,32, - 117,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, - 105,110,115,116,101,97,100,78,41,5,114,102,0,0,0,114, - 103,0,0,0,114,104,0,0,0,114,65,0,0,0,114,99, - 0,0,0,41,3,114,181,0,0,0,114,90,0,0,0,114, - 182,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,185,0,0,0,65,3,0,0,115,8,0,0, - 0,6,7,2,2,4,254,18,3,114,18,0,0,0,122,26, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,102, - 105,110,100,95,109,111,100,117,108,101,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,67,0,0,0,114, - 186,0,0,0,41,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,5,0,0,0,114,175,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,163,0,0, - 0,77,3,0,0,115,2,0,0,0,4,0,114,18,0,0, - 0,122,28,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,64,0,0,0,124,0,106,0,106,1,125, - 1,116,2,160,3,124,1,161,1,115,18,116,4,100,1,160, - 5,124,1,161,1,124,1,100,2,141,2,130,1,116,6,116, - 2,106,7,124,1,131,2,125,2,116,8,124,2,124,0,106, - 9,131,2,1,0,100,0,83,0,114,98,0,0,0,41,10, - 114,114,0,0,0,114,21,0,0,0,114,65,0,0,0,114, - 99,0,0,0,114,88,0,0,0,114,51,0,0,0,114,75, - 0,0,0,218,17,103,101,116,95,102,114,111,122,101,110,95, - 111,98,106,101,99,116,218,4,101,120,101,99,114,14,0,0, - 0,41,3,114,111,0,0,0,114,21,0,0,0,218,4,99, - 111,100,101,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,164,0,0,0,81,3,0,0,115,14,0,0,0, - 8,2,10,1,10,1,2,1,6,255,12,2,16,1,114,18, - 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, - 116,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,3,0,0,0, - 67,0,0,0,115,10,0,0,0,116,0,124,0,124,1,131, - 2,83,0,41,2,122,95,76,111,97,100,32,97,32,102,114, - 111,122,101,110,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,78,41,1,114,112,0,0,0,114,187, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,171,0,0,0,90,3,0,0,115,2,0,0,0, - 10,8,114,18,0,0,0,122,26,70,114,111,122,101,110,73, - 109,112,111,114,116,101,114,46,108,111,97,100,95,109,111,100, - 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,243,10,0,0,0,116,0,160, - 1,124,1,161,1,83,0,41,2,122,45,82,101,116,117,114, - 110,32,116,104,101,32,99,111,100,101,32,111,98,106,101,99, - 116,32,102,111,114,32,116,104,101,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,46,78,41,2,114,65,0,0,0, - 114,196,0,0,0,114,187,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,188,0,0,0,100,3, - 0,0,243,2,0,0,0,10,4,114,18,0,0,0,122,23, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,67,0,0,0,114,186,0,0, - 0,41,2,122,54,82,101,116,117,114,110,32,78,111,110,101, - 32,97,115,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,115,32,100,111,32,110,111,116,32,104,97,118,101,32,115, - 111,117,114,99,101,32,99,111,100,101,46,78,114,5,0,0, - 0,114,187,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,190,0,0,0,106,3,0,0,114,189, - 0,0,0,114,18,0,0,0,122,25,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,46,103,101,116,95,115,111,117, - 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,114,199,0,0,0,41,2,122, - 46,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32, + 0,1,0,0,0,67,0,0,0,114,186,0,0,0,41,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,5,0, + 0,0,114,175,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,163,0,0,0,77,3,0,0,115, + 2,0,0,0,4,0,114,18,0,0,0,122,28,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,99,114,101,97, + 116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,64, + 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, + 1,161,1,115,18,116,4,100,1,160,5,124,1,161,1,124, + 1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131, + 2,125,2,116,8,124,2,124,0,106,9,131,2,1,0,100, + 0,83,0,114,98,0,0,0,41,10,114,114,0,0,0,114, + 21,0,0,0,114,65,0,0,0,114,99,0,0,0,114,88, + 0,0,0,114,51,0,0,0,114,75,0,0,0,218,17,103, + 101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116, + 218,4,101,120,101,99,114,14,0,0,0,41,3,114,111,0, + 0,0,114,21,0,0,0,218,4,99,111,100,101,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,164,0,0, + 0,81,3,0,0,115,14,0,0,0,8,2,10,1,10,1, + 2,1,6,255,12,2,16,1,114,18,0,0,0,122,26,70, + 114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10, + 0,0,0,116,0,124,0,124,1,131,2,83,0,41,2,122, + 95,76,111,97,100,32,97,32,102,114,111,122,101,110,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, + 78,41,1,114,112,0,0,0,114,187,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,171,0,0, + 0,90,3,0,0,115,2,0,0,0,10,8,114,18,0,0, + 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,243,10,0,0,0,116,0,160,1,124,1,161,1,83, + 0,41,2,122,45,82,101,116,117,114,110,32,116,104,101,32, + 99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32, 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,32,105,115,32,97,32,112,97,99,107,97,103,101,46,78, - 41,2,114,65,0,0,0,90,17,105,115,95,102,114,111,122, - 101,110,95,112,97,99,107,97,103,101,114,187,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,129, - 0,0,0,112,3,0,0,114,200,0,0,0,114,18,0,0, - 0,122,25,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,105,115,95,112,97,99,107,97,103,101,114,191,0,0, - 0,114,0,0,0,0,41,17,114,9,0,0,0,114,8,0, - 0,0,114,1,0,0,0,114,10,0,0,0,114,152,0,0, - 0,114,192,0,0,0,114,115,0,0,0,114,193,0,0,0, - 114,184,0,0,0,114,185,0,0,0,114,163,0,0,0,114, - 164,0,0,0,114,171,0,0,0,114,101,0,0,0,114,188, - 0,0,0,114,190,0,0,0,114,129,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,194,0,0,0,36,3,0,0,115,48,0,0,0,8, - 0,4,2,4,7,2,2,10,1,2,10,12,1,2,6,12, - 1,2,11,10,1,2,3,10,1,2,8,10,1,2,9,2, - 1,12,1,2,4,2,1,12,1,2,4,2,1,16,1,114, - 18,0,0,0,114,194,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111,114,116,76,111, - 99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,101, - 120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,116, - 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, - 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, - 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, - 46,78,41,2,114,65,0,0,0,114,66,0,0,0,114,53, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,62,0,0,0,125,3,0,0,243,2,0,0,0, - 12,2,114,18,0,0,0,122,28,95,73,109,112,111,114,116, - 76,111,99,107,67,111,110,116,101,120,116,46,95,95,101,110, - 116,101,114,95,95,99,4,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,67,0,0,0,114,202,0,0,0,41, - 2,122,60,82,101,108,101,97,115,101,32,116,104,101,32,105, - 109,112,111,114,116,32,108,111,99,107,32,114,101,103,97,114, - 100,108,101,115,115,32,111,102,32,97,110,121,32,114,97,105, - 115,101,100,32,101,120,99,101,112,116,105,111,110,115,46,78, - 41,2,114,65,0,0,0,114,68,0,0,0,41,4,114,34, - 0,0,0,218,8,101,120,99,95,116,121,112,101,218,9,101, - 120,99,95,118,97,108,117,101,218,13,101,120,99,95,116,114, - 97,99,101,98,97,99,107,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,64,0,0,0,129,3,0,0,114, - 203,0,0,0,114,18,0,0,0,122,27,95,73,109,112,111, - 114,116,76,111,99,107,67,111,110,116,101,120,116,46,95,95, - 101,120,105,116,95,95,78,41,6,114,9,0,0,0,114,8, - 0,0,0,114,1,0,0,0,114,10,0,0,0,114,62,0, - 0,0,114,64,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,201,0,0,0, - 121,3,0,0,115,8,0,0,0,8,0,4,2,8,2,12, - 4,114,18,0,0,0,114,201,0,0,0,99,3,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,67,0,0,0, - 115,64,0,0,0,124,1,160,0,100,1,124,2,100,2,24, - 0,161,2,125,3,116,1,124,3,131,1,124,2,107,0,114, - 18,116,2,100,3,131,1,130,1,124,3,100,4,25,0,125, - 4,124,0,114,30,100,5,160,3,124,4,124,0,161,2,83, - 0,124,4,83,0,41,7,122,50,82,101,115,111,108,118,101, - 32,97,32,114,101,108,97,116,105,118,101,32,109,111,100,117, - 108,101,32,110,97,109,101,32,116,111,32,97,110,32,97,98, - 115,111,108,117,116,101,32,111,110,101,46,114,142,0,0,0, - 114,43,0,0,0,122,50,97,116,116,101,109,112,116,101,100, - 32,114,101,108,97,116,105,118,101,32,105,109,112,111,114,116, - 32,98,101,121,111,110,100,32,116,111,112,45,108,101,118,101, - 108,32,112,97,99,107,97,103,101,114,26,0,0,0,250,5, - 123,125,46,123,125,78,41,4,218,6,114,115,112,108,105,116, - 218,3,108,101,110,114,88,0,0,0,114,51,0,0,0,41, - 5,114,21,0,0,0,218,7,112,97,99,107,97,103,101,218, - 5,108,101,118,101,108,90,4,98,105,116,115,90,4,98,97, - 115,101,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,13,95,114,101,115,111,108,118,101,95,110,97,109,101, - 134,3,0,0,115,10,0,0,0,16,2,12,1,8,1,8, - 1,20,1,114,18,0,0,0,114,212,0,0,0,99,3,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,115,60,0,0,0,116,0,124,0,131,1,155,0,100, - 1,157,2,125,3,116,1,160,2,124,3,116,3,161,2,1, - 0,124,0,160,4,124,1,124,2,161,2,125,4,124,4,100, - 0,117,0,114,25,100,0,83,0,116,5,124,1,124,4,131, - 2,83,0,41,2,78,122,53,46,102,105,110,100,95,115,112, - 101,99,40,41,32,110,111,116,32,102,111,117,110,100,59,32, - 102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32, - 102,105,110,100,95,109,111,100,117,108,101,40,41,41,6,114, - 7,0,0,0,114,102,0,0,0,114,103,0,0,0,114,170, - 0,0,0,114,185,0,0,0,114,105,0,0,0,41,5,218, - 6,102,105,110,100,101,114,114,21,0,0,0,114,182,0,0, - 0,114,109,0,0,0,114,123,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,17,95,102,105,110, - 100,95,115,112,101,99,95,108,101,103,97,99,121,143,3,0, - 0,115,12,0,0,0,14,1,12,2,12,1,8,1,4,1, - 10,1,114,18,0,0,0,114,214,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,10,0,0,0,67,0,0, - 0,115,30,1,0,0,116,0,106,1,125,3,124,3,100,1, - 117,0,114,11,116,2,100,2,131,1,130,1,124,3,115,19, - 116,3,160,4,100,3,116,5,161,2,1,0,124,0,116,0, - 106,6,118,0,125,4,124,3,68,0,93,112,125,5,116,7, - 131,0,53,0,1,0,9,0,124,5,106,8,125,6,110,27, - 35,0,4,0,116,9,121,142,1,0,1,0,1,0,116,10, - 124,5,124,0,124,1,131,3,125,7,124,7,100,1,117,0, - 114,61,89,0,100,1,4,0,4,0,131,3,1,0,113,26, - 89,0,110,7,37,0,124,6,124,0,124,1,124,2,131,3, - 125,7,100,1,4,0,4,0,131,3,1,0,110,11,35,0, - 49,0,115,81,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,124,7,100,1,117,1,114,138,124,4,115,134, - 124,0,116,0,106,6,118,0,114,134,116,0,106,6,124,0, - 25,0,125,8,9,0,124,8,106,11,125,9,110,14,35,0, - 4,0,116,9,121,141,1,0,1,0,1,0,124,7,6,0, - 89,0,2,0,1,0,83,0,37,0,124,9,100,1,117,0, - 114,130,124,7,2,0,1,0,83,0,124,9,2,0,1,0, - 83,0,124,7,2,0,1,0,83,0,113,26,100,1,83,0, - 119,0,119,0,41,4,122,21,70,105,110,100,32,97,32,109, - 111,100,117,108,101,39,115,32,115,112,101,99,46,78,122,53, - 115,121,115,46,109,101,116,97,95,112,97,116,104,32,105,115, - 32,78,111,110,101,44,32,80,121,116,104,111,110,32,105,115, - 32,108,105,107,101,108,121,32,115,104,117,116,116,105,110,103, - 32,100,111,119,110,122,22,115,121,115,46,109,101,116,97,95, - 112,97,116,104,32,105,115,32,101,109,112,116,121,41,12,114, - 19,0,0,0,218,9,109,101,116,97,95,112,97,116,104,114, - 88,0,0,0,114,102,0,0,0,114,103,0,0,0,114,170, - 0,0,0,114,106,0,0,0,114,201,0,0,0,114,184,0, - 0,0,114,2,0,0,0,114,214,0,0,0,114,114,0,0, - 0,41,10,114,21,0,0,0,114,182,0,0,0,114,183,0, - 0,0,114,215,0,0,0,90,9,105,115,95,114,101,108,111, - 97,100,114,213,0,0,0,114,184,0,0,0,114,110,0,0, - 0,114,111,0,0,0,114,114,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,10,95,102,105,110, - 100,95,115,112,101,99,153,3,0,0,115,78,0,0,0,6, - 2,8,1,8,2,4,3,12,1,10,5,8,1,8,1,2, - 1,8,1,2,128,12,1,12,1,8,1,2,1,10,250,2, - 6,4,255,2,128,12,3,12,248,22,128,8,9,14,2,10, - 1,2,1,8,1,2,128,12,1,12,4,2,128,8,2,8, - 1,8,2,8,2,2,239,4,19,2,243,2,244,115,63,0, - 0,0,159,1,65,12,5,161,3,37,4,164,1,65,12,5, - 165,17,63,11,182,1,65,12,5,189,9,65,12,5,193,12, - 4,65,16,13,193,17,3,65,16,13,193,40,3,65,44,2, - 193,44,9,65,57,9,194,13,1,65,57,9,194,14,1,63, - 11,114,216,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,67,0,0,0,115,110,0,0,0, - 116,0,124,0,116,1,131,2,115,14,116,2,100,1,160,3, - 116,4,124,0,131,1,161,1,131,1,130,1,124,2,100,2, - 107,0,114,22,116,5,100,3,131,1,130,1,124,2,100,2, - 107,4,114,41,116,0,124,1,116,1,131,2,115,35,116,2, - 100,4,131,1,130,1,124,1,115,41,116,6,100,5,131,1, - 130,1,124,0,115,53,124,2,100,2,107,2,114,51,116,5, - 100,6,131,1,130,1,100,7,83,0,100,7,83,0,41,8, - 122,28,86,101,114,105,102,121,32,97,114,103,117,109,101,110, - 116,115,32,97,114,101,32,34,115,97,110,101,34,46,122,31, - 109,111,100,117,108,101,32,110,97,109,101,32,109,117,115,116, - 32,98,101,32,115,116,114,44,32,110,111,116,32,123,125,114, - 26,0,0,0,122,18,108,101,118,101,108,32,109,117,115,116, - 32,98,101,32,62,61,32,48,122,31,95,95,112,97,99,107, - 97,103,101,95,95,32,110,111,116,32,115,101,116,32,116,111, - 32,97,32,115,116,114,105,110,103,122,54,97,116,116,101,109, - 112,116,101,100,32,114,101,108,97,116,105,118,101,32,105,109, - 112,111,114,116,32,119,105,116,104,32,110,111,32,107,110,111, - 119,110,32,112,97,114,101,110,116,32,112,97,99,107,97,103, - 101,122,17,69,109,112,116,121,32,109,111,100,117,108,101,32, - 110,97,109,101,78,41,7,218,10,105,115,105,110,115,116,97, - 110,99,101,218,3,115,116,114,218,9,84,121,112,101,69,114, - 114,111,114,114,51,0,0,0,114,3,0,0,0,218,10,86, - 97,108,117,101,69,114,114,111,114,114,88,0,0,0,169,3, - 114,21,0,0,0,114,210,0,0,0,114,211,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,13, - 95,115,97,110,105,116,121,95,99,104,101,99,107,200,3,0, - 0,115,24,0,0,0,10,2,18,1,8,1,8,1,8,1, - 10,1,8,1,4,1,8,1,12,2,8,1,8,255,114,18, - 0,0,0,114,222,0,0,0,122,16,78,111,32,109,111,100, - 117,108,101,32,110,97,109,101,100,32,122,4,123,33,114,125, - 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,20,1,0,0,100,0,125,2,124,0, - 160,0,100,1,161,1,100,2,25,0,125,3,124,3,114,64, - 124,3,116,1,106,2,118,1,114,21,116,3,124,1,124,3, - 131,2,1,0,124,0,116,1,106,2,118,0,114,31,116,1, - 106,2,124,0,25,0,83,0,116,1,106,2,124,3,25,0, - 125,4,9,0,124,4,106,4,125,2,110,23,35,0,4,0, - 116,5,121,137,1,0,1,0,1,0,116,6,100,3,23,0, - 160,7,124,0,124,3,161,2,125,5,116,8,124,5,124,0, - 100,4,141,2,100,0,130,2,37,0,116,9,124,0,124,2, - 131,2,125,6,124,6,100,0,117,0,114,82,116,8,116,6, - 160,7,124,0,161,1,124,0,100,4,141,2,130,1,116,10, - 124,6,131,1,125,7,124,3,114,134,116,1,106,2,124,3, - 25,0,125,4,124,0,160,0,100,1,161,1,100,5,25,0, - 125,8,9,0,116,11,124,4,124,8,124,7,131,3,1,0, - 124,7,83,0,35,0,4,0,116,5,121,136,1,0,1,0, - 1,0,100,6,124,3,155,2,100,7,124,8,155,2,157,4, - 125,5,116,12,160,13,124,5,116,14,161,2,1,0,89,0, - 124,7,83,0,37,0,124,7,83,0,119,0,119,0,41,8, - 78,114,142,0,0,0,114,26,0,0,0,122,23,59,32,123, - 33,114,125,32,105,115,32,110,111,116,32,97,32,112,97,99, - 107,97,103,101,114,20,0,0,0,233,2,0,0,0,122,27, - 67,97,110,110,111,116,32,115,101,116,32,97,110,32,97,116, - 116,114,105,98,117,116,101,32,111,110,32,122,18,32,102,111, - 114,32,99,104,105,108,100,32,109,111,100,117,108,101,32,41, - 15,114,143,0,0,0,114,19,0,0,0,114,106,0,0,0, - 114,75,0,0,0,114,155,0,0,0,114,2,0,0,0,218, - 8,95,69,82,82,95,77,83,71,114,51,0,0,0,218,19, - 77,111,100,117,108,101,78,111,116,70,111,117,110,100,69,114, - 114,111,114,114,216,0,0,0,114,174,0,0,0,114,12,0, - 0,0,114,102,0,0,0,114,103,0,0,0,114,170,0,0, - 0,41,9,114,21,0,0,0,218,7,105,109,112,111,114,116, - 95,114,182,0,0,0,114,144,0,0,0,90,13,112,97,114, - 101,110,116,95,109,111,100,117,108,101,114,109,0,0,0,114, - 110,0,0,0,114,111,0,0,0,90,5,99,104,105,108,100, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 23,95,102,105,110,100,95,97,110,100,95,108,111,97,100,95, - 117,110,108,111,99,107,101,100,219,3,0,0,115,68,0,0, - 0,4,1,14,1,4,1,10,1,10,1,10,2,10,1,10, - 1,2,1,8,1,2,128,12,1,16,1,14,1,2,128,10, - 1,8,1,18,1,8,2,4,1,10,2,14,1,2,1,12, - 1,4,4,2,128,12,253,16,1,14,1,4,1,2,128,4, - 0,2,253,2,242,115,31,0,0,0,165,3,41,0,169,22, - 63,7,193,37,6,65,45,0,193,45,21,66,5,7,194,8, - 1,66,5,7,194,9,1,63,7,114,227,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, - 0,0,0,115,132,0,0,0,116,0,124,0,131,1,53,0, - 1,0,116,1,106,2,160,3,124,0,116,4,161,2,125,2, - 124,2,116,4,117,0,114,27,116,5,124,0,124,1,131,2, - 2,0,100,1,4,0,4,0,131,3,1,0,83,0,9,0, - 100,1,4,0,4,0,131,3,1,0,110,11,35,0,49,0, - 115,39,119,4,37,0,1,0,1,0,1,0,89,0,1,0, - 1,0,124,2,100,1,117,0,114,60,100,2,160,6,124,0, - 161,1,125,3,116,7,124,3,124,0,100,3,141,2,130,1, - 116,8,124,0,131,1,1,0,124,2,83,0,41,4,122,25, - 70,105,110,100,32,97,110,100,32,108,111,97,100,32,116,104, - 101,32,109,111,100,117,108,101,46,78,122,40,105,109,112,111, - 114,116,32,111,102,32,123,125,32,104,97,108,116,101,100,59, - 32,78,111,110,101,32,105,110,32,115,121,115,46,109,111,100, - 117,108,101,115,114,20,0,0,0,41,9,114,58,0,0,0, - 114,19,0,0,0,114,106,0,0,0,114,39,0,0,0,218, - 14,95,78,69,69,68,83,95,76,79,65,68,73,78,71,114, - 227,0,0,0,114,51,0,0,0,114,225,0,0,0,114,73, - 0,0,0,41,4,114,21,0,0,0,114,226,0,0,0,114, - 111,0,0,0,114,83,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,14,95,102,105,110,100,95, - 97,110,100,95,108,111,97,100,254,3,0,0,115,32,0,0, - 0,10,2,14,1,8,1,8,1,12,253,2,3,2,255,12, - 254,22,128,8,5,2,1,6,1,2,255,12,2,8,2,4, - 1,115,12,0,0,0,132,16,34,3,162,4,38,11,167,3, - 38,11,114,229,0,0,0,114,26,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,42,0,0,0,116,0,124,0,124,1,124,2,131,3, - 1,0,124,2,100,1,107,4,114,16,116,1,124,0,124,1, - 124,2,131,3,125,0,116,2,124,0,116,3,131,2,83,0, - 41,3,97,50,1,0,0,73,109,112,111,114,116,32,97,110, - 100,32,114,101,116,117,114,110,32,116,104,101,32,109,111,100, - 117,108,101,32,98,97,115,101,100,32,111,110,32,105,116,115, - 32,110,97,109,101,44,32,116,104,101,32,112,97,99,107,97, - 103,101,32,116,104,101,32,99,97,108,108,32,105,115,10,32, - 32,32,32,98,101,105,110,103,32,109,97,100,101,32,102,114, - 111,109,44,32,97,110,100,32,116,104,101,32,108,101,118,101, - 108,32,97,100,106,117,115,116,109,101,110,116,46,10,10,32, - 32,32,32,84,104,105,115,32,102,117,110,99,116,105,111,110, - 32,114,101,112,114,101,115,101,110,116,115,32,116,104,101,32, - 103,114,101,97,116,101,115,116,32,99,111,109,109,111,110,32, - 100,101,110,111,109,105,110,97,116,111,114,32,111,102,32,102, - 117,110,99,116,105,111,110,97,108,105,116,121,10,32,32,32, - 32,98,101,116,119,101,101,110,32,105,109,112,111,114,116,95, - 109,111,100,117,108,101,32,97,110,100,32,95,95,105,109,112, - 111,114,116,95,95,46,32,84,104,105,115,32,105,110,99,108, - 117,100,101,115,32,115,101,116,116,105,110,103,32,95,95,112, - 97,99,107,97,103,101,95,95,32,105,102,10,32,32,32,32, - 116,104,101,32,108,111,97,100,101,114,32,100,105,100,32,110, - 111,116,46,10,10,32,32,32,32,114,26,0,0,0,78,41, - 4,114,222,0,0,0,114,212,0,0,0,114,229,0,0,0, - 218,11,95,103,99,100,95,105,109,112,111,114,116,114,221,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,230,0,0,0,14,4,0,0,115,8,0,0,0,12, - 9,8,1,12,1,10,1,114,18,0,0,0,114,230,0,0, - 0,169,1,218,9,114,101,99,117,114,115,105,118,101,99,3, - 0,0,0,0,0,0,0,1,0,0,0,9,0,0,0,67, - 0,0,0,115,216,0,0,0,124,1,68,0,93,102,125,4, - 116,0,124,4,116,1,131,2,115,32,124,3,114,17,124,0, - 106,2,100,1,23,0,125,5,110,2,100,2,125,5,116,3, - 100,3,124,5,155,0,100,4,116,4,124,4,131,1,106,2, - 155,0,157,4,131,1,130,1,124,4,100,5,107,2,114,53, - 124,3,115,52,116,5,124,0,100,6,131,2,114,52,116,6, - 124,0,124,0,106,7,124,2,100,7,100,8,141,4,1,0, - 113,2,116,5,124,0,124,4,131,2,115,104,100,9,160,8, - 124,0,106,2,124,4,161,2,125,6,9,0,116,9,124,2, - 124,6,131,2,1,0,113,2,35,0,4,0,116,10,121,107, - 1,0,125,7,1,0,124,7,106,11,124,6,107,2,114,98, - 116,12,106,13,160,14,124,6,116,15,161,2,100,10,117,1, - 114,98,89,0,100,10,125,7,126,7,113,2,130,0,100,10, - 125,7,126,7,119,1,37,0,113,2,124,0,83,0,119,0, - 41,11,122,238,70,105,103,117,114,101,32,111,117,116,32,119, - 104,97,116,32,95,95,105,109,112,111,114,116,95,95,32,115, - 104,111,117,108,100,32,114,101,116,117,114,110,46,10,10,32, - 32,32,32,84,104,101,32,105,109,112,111,114,116,95,32,112, - 97,114,97,109,101,116,101,114,32,105,115,32,97,32,99,97, - 108,108,97,98,108,101,32,119,104,105,99,104,32,116,97,107, - 101,115,32,116,104,101,32,110,97,109,101,32,111,102,32,109, - 111,100,117,108,101,32,116,111,10,32,32,32,32,105,109,112, - 111,114,116,46,32,73,116,32,105,115,32,114,101,113,117,105, - 114,101,100,32,116,111,32,100,101,99,111,117,112,108,101,32, - 116,104,101,32,102,117,110,99,116,105,111,110,32,102,114,111, - 109,32,97,115,115,117,109,105,110,103,32,105,109,112,111,114, - 116,108,105,98,39,115,10,32,32,32,32,105,109,112,111,114, - 116,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 32,105,115,32,100,101,115,105,114,101,100,46,10,10,32,32, - 32,32,122,8,46,95,95,97,108,108,95,95,122,13,96,96, - 102,114,111,109,32,108,105,115,116,39,39,122,8,73,116,101, - 109,32,105,110,32,122,18,32,109,117,115,116,32,98,101,32, - 115,116,114,44,32,110,111,116,32,250,1,42,218,7,95,95, - 97,108,108,95,95,84,114,231,0,0,0,114,207,0,0,0, - 78,41,16,114,217,0,0,0,114,218,0,0,0,114,9,0, - 0,0,114,219,0,0,0,114,3,0,0,0,114,11,0,0, - 0,218,16,95,104,97,110,100,108,101,95,102,114,111,109,108, - 105,115,116,114,234,0,0,0,114,51,0,0,0,114,75,0, - 0,0,114,225,0,0,0,114,21,0,0,0,114,19,0,0, - 0,114,106,0,0,0,114,39,0,0,0,114,228,0,0,0, - 41,8,114,111,0,0,0,218,8,102,114,111,109,108,105,115, - 116,114,226,0,0,0,114,232,0,0,0,218,1,120,90,5, - 119,104,101,114,101,90,9,102,114,111,109,95,110,97,109,101, - 90,3,101,120,99,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,235,0,0,0,29,4,0,0,115,58,0, - 0,0,8,10,10,1,4,1,12,1,4,2,10,1,8,1, - 8,255,8,2,14,1,10,1,2,1,6,255,2,128,10,2, - 14,1,2,1,12,1,2,128,12,1,10,4,16,1,2,255, - 10,2,2,1,10,128,2,245,4,12,2,248,115,36,0,0, - 0,193,2,5,65,8,2,193,8,7,65,39,9,193,15,14, - 65,35,9,193,34,1,65,35,9,193,35,4,65,39,9,193, - 43,1,65,39,9,114,235,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,7,0,0,0,67,0,0,0,115, - 146,0,0,0,124,0,160,0,100,1,161,1,125,1,124,0, - 160,0,100,2,161,1,125,2,124,1,100,3,117,1,114,41, - 124,2,100,3,117,1,114,39,124,1,124,2,106,1,107,3, - 114,39,116,2,160,3,100,4,124,1,155,2,100,5,124,2, - 106,1,155,2,100,6,157,5,116,4,100,7,100,8,166,3, - 1,0,124,1,83,0,124,2,100,3,117,1,114,48,124,2, - 106,1,83,0,116,2,160,3,100,9,116,4,100,7,100,8, - 166,3,1,0,124,0,100,10,25,0,125,1,100,11,124,0, - 118,1,114,71,124,1,160,5,100,12,161,1,100,13,25,0, - 125,1,124,1,83,0,41,14,122,167,67,97,108,99,117,108, - 97,116,101,32,119,104,97,116,32,95,95,112,97,99,107,97, - 103,101,95,95,32,115,104,111,117,108,100,32,98,101,46,10, - 10,32,32,32,32,95,95,112,97,99,107,97,103,101,95,95, - 32,105,115,32,110,111,116,32,103,117,97,114,97,110,116,101, - 101,100,32,116,111,32,98,101,32,100,101,102,105,110,101,100, - 32,111,114,32,99,111,117,108,100,32,98,101,32,115,101,116, - 32,116,111,32,78,111,110,101,10,32,32,32,32,116,111,32, - 114,101,112,114,101,115,101,110,116,32,116,104,97,116,32,105, - 116,115,32,112,114,111,112,101,114,32,118,97,108,117,101,32, - 105,115,32,117,110,107,110,111,119,110,46,10,10,32,32,32, - 32,114,159,0,0,0,114,114,0,0,0,78,122,32,95,95, - 112,97,99,107,97,103,101,95,95,32,33,61,32,95,95,115, - 112,101,99,95,95,46,112,97,114,101,110,116,32,40,122,4, - 32,33,61,32,250,1,41,233,3,0,0,0,41,1,90,10, - 115,116,97,99,107,108,101,118,101,108,122,89,99,97,110,39, - 116,32,114,101,115,111,108,118,101,32,112,97,99,107,97,103, - 101,32,102,114,111,109,32,95,95,115,112,101,99,95,95,32, - 111,114,32,95,95,112,97,99,107,97,103,101,95,95,44,32, - 102,97,108,108,105,110,103,32,98,97,99,107,32,111,110,32, - 95,95,110,97,109,101,95,95,32,97,110,100,32,95,95,112, - 97,116,104,95,95,114,9,0,0,0,114,155,0,0,0,114, - 142,0,0,0,114,26,0,0,0,41,6,114,39,0,0,0, - 114,144,0,0,0,114,102,0,0,0,114,103,0,0,0,114, - 170,0,0,0,114,143,0,0,0,41,3,218,7,103,108,111, - 98,97,108,115,114,210,0,0,0,114,110,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,17,95, - 99,97,108,99,95,95,95,112,97,99,107,97,103,101,95,95, - 66,4,0,0,115,42,0,0,0,10,7,10,1,8,1,18, - 1,6,1,2,1,4,255,4,1,6,255,4,2,6,254,4, - 3,8,1,6,1,6,2,4,2,6,254,8,3,8,1,14, - 1,4,1,114,18,0,0,0,114,241,0,0,0,114,5,0, - 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,115,174,0,0,0,124,4,100,1, - 107,2,114,9,116,0,124,0,131,1,125,5,110,18,124,1, - 100,2,117,1,114,15,124,1,110,1,105,0,125,6,116,1, - 124,6,131,1,125,7,116,0,124,0,124,7,124,4,131,3, - 125,5,124,3,115,74,124,4,100,1,107,2,114,42,116,0, - 124,0,160,2,100,3,161,1,100,1,25,0,131,1,83,0, - 124,0,115,46,124,5,83,0,116,3,124,0,131,1,116,3, - 124,0,160,2,100,3,161,1,100,1,25,0,131,1,24,0, - 125,8,116,4,106,5,124,5,106,6,100,2,116,3,124,5, - 106,6,131,1,124,8,24,0,133,2,25,0,25,0,83,0, - 116,7,124,5,100,4,131,2,114,85,116,8,124,5,124,3, - 116,0,131,3,83,0,124,5,83,0,41,5,97,215,1,0, - 0,73,109,112,111,114,116,32,97,32,109,111,100,117,108,101, - 46,10,10,32,32,32,32,84,104,101,32,39,103,108,111,98, - 97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,115, - 32,117,115,101,100,32,116,111,32,105,110,102,101,114,32,119, - 104,101,114,101,32,116,104,101,32,105,109,112,111,114,116,32, - 105,115,32,111,99,99,117,114,114,105,110,103,32,102,114,111, - 109,10,32,32,32,32,116,111,32,104,97,110,100,108,101,32, - 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,115, - 46,32,84,104,101,32,39,108,111,99,97,108,115,39,32,97, - 114,103,117,109,101,110,116,32,105,115,32,105,103,110,111,114, - 101,100,46,32,84,104,101,10,32,32,32,32,39,102,114,111, - 109,108,105,115,116,39,32,97,114,103,117,109,101,110,116,32, - 115,112,101,99,105,102,105,101,115,32,119,104,97,116,32,115, - 104,111,117,108,100,32,101,120,105,115,116,32,97,115,32,97, - 116,116,114,105,98,117,116,101,115,32,111,110,32,116,104,101, - 32,109,111,100,117,108,101,10,32,32,32,32,98,101,105,110, - 103,32,105,109,112,111,114,116,101,100,32,40,101,46,103,46, - 32,96,96,102,114,111,109,32,109,111,100,117,108,101,32,105, - 109,112,111,114,116,32,60,102,114,111,109,108,105,115,116,62, - 96,96,41,46,32,32,84,104,101,32,39,108,101,118,101,108, - 39,10,32,32,32,32,97,114,103,117,109,101,110,116,32,114, - 101,112,114,101,115,101,110,116,115,32,116,104,101,32,112,97, - 99,107,97,103,101,32,108,111,99,97,116,105,111,110,32,116, - 111,32,105,109,112,111,114,116,32,102,114,111,109,32,105,110, - 32,97,32,114,101,108,97,116,105,118,101,10,32,32,32,32, - 105,109,112,111,114,116,32,40,101,46,103,46,32,96,96,102, - 114,111,109,32,46,46,112,107,103,32,105,109,112,111,114,116, - 32,109,111,100,96,96,32,119,111,117,108,100,32,104,97,118, - 101,32,97,32,39,108,101,118,101,108,39,32,111,102,32,50, - 41,46,10,10,32,32,32,32,114,26,0,0,0,78,114,142, - 0,0,0,114,155,0,0,0,41,9,114,230,0,0,0,114, - 241,0,0,0,218,9,112,97,114,116,105,116,105,111,110,114, - 209,0,0,0,114,19,0,0,0,114,106,0,0,0,114,9, - 0,0,0,114,11,0,0,0,114,235,0,0,0,41,9,114, - 21,0,0,0,114,240,0,0,0,218,6,108,111,99,97,108, - 115,114,236,0,0,0,114,211,0,0,0,114,111,0,0,0, - 90,8,103,108,111,98,97,108,115,95,114,210,0,0,0,90, - 7,99,117,116,95,111,102,102,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,10,95,95,105,109,112,111,114, - 116,95,95,93,4,0,0,115,30,0,0,0,8,11,10,1, - 16,2,8,1,12,1,4,1,8,3,18,1,4,1,4,1, - 26,4,30,3,10,1,12,1,4,2,114,18,0,0,0,114, - 244,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,67,0,0,0,115,38,0,0,0,116,0, - 160,1,124,0,161,1,125,1,124,1,100,0,117,0,114,15, - 116,2,100,1,124,0,23,0,131,1,130,1,116,3,124,1, - 131,1,83,0,41,2,78,122,25,110,111,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,32,110,97,109,101, - 100,32,41,4,114,176,0,0,0,114,184,0,0,0,114,88, - 0,0,0,114,174,0,0,0,41,2,114,21,0,0,0,114, + 101,46,78,41,2,114,65,0,0,0,114,196,0,0,0,114, + 187,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,188,0,0,0,100,3,0,0,243,2,0,0, + 0,10,4,114,18,0,0,0,122,23,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,67,0,0,0,114,186,0,0,0,41,2,122,54,82, + 101,116,117,114,110,32,78,111,110,101,32,97,115,32,102,114, + 111,122,101,110,32,109,111,100,117,108,101,115,32,100,111,32, + 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, + 99,111,100,101,46,78,114,5,0,0,0,114,187,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 190,0,0,0,106,3,0,0,114,189,0,0,0,114,18,0, + 0,0,122,25,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,114,199,0,0,0,41,2,122,46,82,101,116,117,114, + 110,32,84,114,117,101,32,105,102,32,116,104,101,32,102,114, + 111,122,101,110,32,109,111,100,117,108,101,32,105,115,32,97, + 32,112,97,99,107,97,103,101,46,78,41,2,114,65,0,0, + 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, + 107,97,103,101,114,187,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,129,0,0,0,112,3,0, + 0,114,200,0,0,0,114,18,0,0,0,122,25,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,105,115,95,112, + 97,99,107,97,103,101,114,191,0,0,0,114,0,0,0,0, + 41,17,114,9,0,0,0,114,8,0,0,0,114,1,0,0, + 0,114,10,0,0,0,114,152,0,0,0,114,192,0,0,0, + 114,115,0,0,0,114,193,0,0,0,114,184,0,0,0,114, + 185,0,0,0,114,163,0,0,0,114,164,0,0,0,114,171, + 0,0,0,114,101,0,0,0,114,188,0,0,0,114,190,0, + 0,0,114,129,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,194,0,0,0, + 36,3,0,0,115,48,0,0,0,8,0,4,2,4,7,2, + 2,10,1,2,10,12,1,2,6,12,1,2,11,10,1,2, + 3,10,1,2,8,10,1,2,9,2,1,12,1,2,4,2, + 1,12,1,2,4,2,1,16,1,114,18,0,0,0,114,194, + 0,0,0,99,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,83,0,41,7,218, + 18,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116, + 101,120,116,122,36,67,111,110,116,101,120,116,32,109,97,110, + 97,103,101,114,32,102,111,114,32,116,104,101,32,105,109,112, + 111,114,116,32,108,111,99,107,46,99,1,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,67,0,0,0,243,12, + 0,0,0,116,0,160,1,161,0,1,0,100,1,83,0,41, + 2,122,24,65,99,113,117,105,114,101,32,116,104,101,32,105, + 109,112,111,114,116,32,108,111,99,107,46,78,41,2,114,65, + 0,0,0,114,66,0,0,0,114,53,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,62,0,0, + 0,125,3,0,0,243,2,0,0,0,12,2,114,18,0,0, + 0,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111, + 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99, + 4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 67,0,0,0,114,202,0,0,0,41,2,122,60,82,101,108, + 101,97,115,101,32,116,104,101,32,105,109,112,111,114,116,32, + 108,111,99,107,32,114,101,103,97,114,100,108,101,115,115,32, + 111,102,32,97,110,121,32,114,97,105,115,101,100,32,101,120, + 99,101,112,116,105,111,110,115,46,78,41,2,114,65,0,0, + 0,114,68,0,0,0,41,4,114,34,0,0,0,218,8,101, + 120,99,95,116,121,112,101,218,9,101,120,99,95,118,97,108, + 117,101,218,13,101,120,99,95,116,114,97,99,101,98,97,99, + 107,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,64,0,0,0,129,3,0,0,114,203,0,0,0,114,18, + 0,0,0,122,27,95,73,109,112,111,114,116,76,111,99,107, + 67,111,110,116,101,120,116,46,95,95,101,120,105,116,95,95, + 78,41,6,114,9,0,0,0,114,8,0,0,0,114,1,0, + 0,0,114,10,0,0,0,114,62,0,0,0,114,64,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,201,0,0,0,121,3,0,0,115,8, + 0,0,0,8,0,4,2,8,2,12,4,114,18,0,0,0, + 114,201,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,67,0,0,0,115,64,0,0,0,124, + 1,160,0,100,1,124,2,100,2,24,0,161,2,125,3,116, + 1,124,3,131,1,124,2,107,0,114,18,116,2,100,3,131, + 1,130,1,124,3,100,4,25,0,125,4,124,0,114,30,100, + 5,160,3,124,4,124,0,161,2,83,0,124,4,83,0,41, + 7,122,50,82,101,115,111,108,118,101,32,97,32,114,101,108, + 97,116,105,118,101,32,109,111,100,117,108,101,32,110,97,109, + 101,32,116,111,32,97,110,32,97,98,115,111,108,117,116,101, + 32,111,110,101,46,114,142,0,0,0,114,43,0,0,0,122, + 50,97,116,116,101,109,112,116,101,100,32,114,101,108,97,116, + 105,118,101,32,105,109,112,111,114,116,32,98,101,121,111,110, + 100,32,116,111,112,45,108,101,118,101,108,32,112,97,99,107, + 97,103,101,114,26,0,0,0,250,5,123,125,46,123,125,78, + 41,4,218,6,114,115,112,108,105,116,218,3,108,101,110,114, + 88,0,0,0,114,51,0,0,0,41,5,114,21,0,0,0, + 218,7,112,97,99,107,97,103,101,218,5,108,101,118,101,108, + 90,4,98,105,116,115,90,4,98,97,115,101,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,13,95,114,101, + 115,111,108,118,101,95,110,97,109,101,134,3,0,0,115,10, + 0,0,0,16,2,12,1,8,1,8,1,20,1,114,18,0, + 0,0,114,212,0,0,0,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,60,0,0, + 0,116,0,124,0,131,1,155,0,100,1,157,2,125,3,116, + 1,160,2,124,3,116,3,161,2,1,0,124,0,160,4,124, + 1,124,2,161,2,125,4,124,4,100,0,117,0,114,25,100, + 0,83,0,116,5,124,1,124,4,131,2,83,0,41,2,78, + 122,53,46,102,105,110,100,95,115,112,101,99,40,41,32,110, + 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, + 103,32,98,97,99,107,32,116,111,32,102,105,110,100,95,109, + 111,100,117,108,101,40,41,41,6,114,7,0,0,0,114,102, + 0,0,0,114,103,0,0,0,114,170,0,0,0,114,185,0, + 0,0,114,105,0,0,0,41,5,218,6,102,105,110,100,101, + 114,114,21,0,0,0,114,182,0,0,0,114,109,0,0,0, + 114,123,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,17,95,102,105,110,100,95,115,112,101,99, + 95,108,101,103,97,99,121,143,3,0,0,115,12,0,0,0, + 14,1,12,2,12,1,8,1,4,1,10,1,114,18,0,0, + 0,114,214,0,0,0,99,3,0,0,0,0,0,0,0,0, + 0,0,0,10,0,0,0,67,0,0,0,115,30,1,0,0, + 116,0,106,1,125,3,124,3,100,1,117,0,114,11,116,2, + 100,2,131,1,130,1,124,3,115,19,116,3,160,4,100,3, + 116,5,161,2,1,0,124,0,116,0,106,6,118,0,125,4, + 124,3,68,0,93,112,125,5,116,7,131,0,53,0,1,0, + 9,0,124,5,106,8,125,6,110,27,35,0,4,0,116,9, + 121,142,1,0,1,0,1,0,116,10,124,5,124,0,124,1, + 131,3,125,7,124,7,100,1,117,0,114,61,89,0,100,1, + 4,0,4,0,131,3,1,0,113,26,89,0,110,7,37,0, + 124,6,124,0,124,1,124,2,131,3,125,7,100,1,4,0, + 4,0,131,3,1,0,110,11,35,0,49,0,115,81,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,7, + 100,1,117,1,114,138,124,4,115,134,124,0,116,0,106,6, + 118,0,114,134,116,0,106,6,124,0,25,0,125,8,9,0, + 124,8,106,11,125,9,110,14,35,0,4,0,116,9,121,141, + 1,0,1,0,1,0,124,7,6,0,89,0,2,0,1,0, + 83,0,37,0,124,9,100,1,117,0,114,130,124,7,2,0, + 1,0,83,0,124,9,2,0,1,0,83,0,124,7,2,0, + 1,0,83,0,113,26,100,1,83,0,119,0,119,0,41,4, + 122,21,70,105,110,100,32,97,32,109,111,100,117,108,101,39, + 115,32,115,112,101,99,46,78,122,53,115,121,115,46,109,101, + 116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44, + 32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108, + 121,32,115,104,117,116,116,105,110,103,32,100,111,119,110,122, + 22,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, + 115,32,101,109,112,116,121,41,12,114,19,0,0,0,218,9, + 109,101,116,97,95,112,97,116,104,114,88,0,0,0,114,102, + 0,0,0,114,103,0,0,0,114,170,0,0,0,114,106,0, + 0,0,114,201,0,0,0,114,184,0,0,0,114,2,0,0, + 0,114,214,0,0,0,114,114,0,0,0,41,10,114,21,0, + 0,0,114,182,0,0,0,114,183,0,0,0,114,215,0,0, + 0,90,9,105,115,95,114,101,108,111,97,100,114,213,0,0, + 0,114,184,0,0,0,114,110,0,0,0,114,111,0,0,0, + 114,114,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,10,95,102,105,110,100,95,115,112,101,99, + 153,3,0,0,115,76,0,0,0,6,2,8,1,8,2,4, + 3,12,1,10,5,8,1,8,1,2,1,8,1,2,128,12, + 1,12,1,8,1,2,1,12,250,4,5,2,128,12,3,12, + 248,22,128,8,9,14,2,10,1,2,1,8,1,2,128,12, + 1,12,4,2,128,8,2,8,1,8,2,8,2,2,239,4, + 19,2,243,2,244,115,63,0,0,0,159,1,65,12,5,161, + 3,37,4,164,1,65,12,5,165,17,63,11,182,1,65,12, + 5,189,9,65,12,5,193,12,4,65,16,13,193,17,3,65, + 16,13,193,40,3,65,44,2,193,44,9,65,57,9,194,13, + 1,65,57,9,194,14,1,63,11,114,216,0,0,0,99,3, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, + 0,0,0,115,110,0,0,0,116,0,124,0,116,1,131,2, + 115,14,116,2,100,1,160,3,116,4,124,0,131,1,161,1, + 131,1,130,1,124,2,100,2,107,0,114,22,116,5,100,3, + 131,1,130,1,124,2,100,2,107,4,114,41,116,0,124,1, + 116,1,131,2,115,35,116,2,100,4,131,1,130,1,124,1, + 115,41,116,6,100,5,131,1,130,1,124,0,115,53,124,2, + 100,2,107,2,114,51,116,5,100,6,131,1,130,1,100,7, + 83,0,100,7,83,0,41,8,122,28,86,101,114,105,102,121, + 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34, + 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110, + 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, + 32,110,111,116,32,123,125,114,26,0,0,0,122,18,108,101, + 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, + 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111, + 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110, + 103,122,54,97,116,116,101,109,112,116,101,100,32,114,101,108, + 97,116,105,118,101,32,105,109,112,111,114,116,32,119,105,116, + 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110, + 116,32,112,97,99,107,97,103,101,122,17,69,109,112,116,121, + 32,109,111,100,117,108,101,32,110,97,109,101,78,41,7,218, + 10,105,115,105,110,115,116,97,110,99,101,218,3,115,116,114, + 218,9,84,121,112,101,69,114,114,111,114,114,51,0,0,0, + 114,3,0,0,0,218,10,86,97,108,117,101,69,114,114,111, + 114,114,88,0,0,0,169,3,114,21,0,0,0,114,210,0, + 0,0,114,211,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,13,95,115,97,110,105,116,121,95, + 99,104,101,99,107,200,3,0,0,115,24,0,0,0,10,2, + 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, + 12,2,8,1,8,255,114,18,0,0,0,114,222,0,0,0, + 122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101, + 100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,67,0,0,0,115,20,1, + 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, + 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, + 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, + 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, + 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, + 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, + 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, + 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, + 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, + 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, + 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, + 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, + 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, + 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, + 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, + 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, + 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, + 83,0,119,0,119,0,41,8,78,114,142,0,0,0,114,26, + 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,112,97,99,107,97,103,101,114,20,0,0, + 0,233,2,0,0,0,122,27,67,97,110,110,111,116,32,115, + 101,116,32,97,110,32,97,116,116,114,105,98,117,116,101,32, + 111,110,32,122,18,32,102,111,114,32,99,104,105,108,100,32, + 109,111,100,117,108,101,32,41,15,114,143,0,0,0,114,19, + 0,0,0,114,106,0,0,0,114,75,0,0,0,114,155,0, + 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, + 71,114,51,0,0,0,218,19,77,111,100,117,108,101,78,111, + 116,70,111,117,110,100,69,114,114,111,114,114,216,0,0,0, + 114,174,0,0,0,114,12,0,0,0,114,102,0,0,0,114, + 103,0,0,0,114,170,0,0,0,41,9,114,21,0,0,0, + 218,7,105,109,112,111,114,116,95,114,182,0,0,0,114,144, + 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, + 108,101,114,109,0,0,0,114,110,0,0,0,114,111,0,0, + 0,90,5,99,104,105,108,100,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,23,95,102,105,110,100,95,97, + 110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,100, + 219,3,0,0,115,68,0,0,0,4,1,14,1,4,1,10, + 1,10,1,10,2,10,1,10,1,2,1,8,1,2,128,12, + 1,16,1,14,1,2,128,10,1,8,1,18,1,8,2,4, + 1,10,2,14,1,2,1,12,1,4,4,2,128,12,253,16, + 1,14,1,4,1,2,128,4,0,2,253,2,242,115,31,0, + 0,0,165,3,41,0,169,22,63,7,193,37,6,65,45,0, + 193,45,21,66,5,7,194,8,1,66,5,7,194,9,1,63, + 7,114,227,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,67,0,0,0,115,132,0,0,0, + 116,0,124,0,131,1,53,0,1,0,116,1,106,2,160,3, + 124,0,116,4,161,2,125,2,124,2,116,4,117,0,114,27, + 116,5,124,0,124,1,131,2,2,0,100,1,4,0,4,0, + 131,3,1,0,83,0,9,0,100,1,4,0,4,0,131,3, + 1,0,110,11,35,0,49,0,115,39,119,4,37,0,1,0, + 1,0,1,0,89,0,1,0,1,0,124,2,100,1,117,0, + 114,60,100,2,160,6,124,0,161,1,125,3,116,7,124,3, + 124,0,100,3,141,2,130,1,116,8,124,0,131,1,1,0, + 124,2,83,0,41,4,122,25,70,105,110,100,32,97,110,100, + 32,108,111,97,100,32,116,104,101,32,109,111,100,117,108,101, + 46,78,122,40,105,109,112,111,114,116,32,111,102,32,123,125, + 32,104,97,108,116,101,100,59,32,78,111,110,101,32,105,110, + 32,115,121,115,46,109,111,100,117,108,101,115,114,20,0,0, + 0,41,9,114,58,0,0,0,114,19,0,0,0,114,106,0, + 0,0,114,39,0,0,0,218,14,95,78,69,69,68,83,95, + 76,79,65,68,73,78,71,114,227,0,0,0,114,51,0,0, + 0,114,225,0,0,0,114,73,0,0,0,41,4,114,21,0, + 0,0,114,226,0,0,0,114,111,0,0,0,114,83,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,14,95,102,105,110,100,95,97,110,100,95,108,111,97,100, + 254,3,0,0,115,30,0,0,0,10,2,14,1,8,1,8, + 1,14,253,2,2,12,254,22,128,8,5,2,1,6,1,2, + 255,12,2,8,2,4,1,115,12,0,0,0,132,16,34,3, + 162,4,38,11,167,3,38,11,114,229,0,0,0,114,26,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,115,42,0,0,0,116,0,124,0, + 124,1,124,2,131,3,1,0,124,2,100,1,107,4,114,16, + 116,1,124,0,124,1,124,2,131,3,125,0,116,2,124,0, + 116,3,131,2,83,0,41,3,97,50,1,0,0,73,109,112, + 111,114,116,32,97,110,100,32,114,101,116,117,114,110,32,116, + 104,101,32,109,111,100,117,108,101,32,98,97,115,101,100,32, + 111,110,32,105,116,115,32,110,97,109,101,44,32,116,104,101, + 32,112,97,99,107,97,103,101,32,116,104,101,32,99,97,108, + 108,32,105,115,10,32,32,32,32,98,101,105,110,103,32,109, + 97,100,101,32,102,114,111,109,44,32,97,110,100,32,116,104, + 101,32,108,101,118,101,108,32,97,100,106,117,115,116,109,101, + 110,116,46,10,10,32,32,32,32,84,104,105,115,32,102,117, + 110,99,116,105,111,110,32,114,101,112,114,101,115,101,110,116, + 115,32,116,104,101,32,103,114,101,97,116,101,115,116,32,99, + 111,109,109,111,110,32,100,101,110,111,109,105,110,97,116,111, + 114,32,111,102,32,102,117,110,99,116,105,111,110,97,108,105, + 116,121,10,32,32,32,32,98,101,116,119,101,101,110,32,105, + 109,112,111,114,116,95,109,111,100,117,108,101,32,97,110,100, + 32,95,95,105,109,112,111,114,116,95,95,46,32,84,104,105, + 115,32,105,110,99,108,117,100,101,115,32,115,101,116,116,105, + 110,103,32,95,95,112,97,99,107,97,103,101,95,95,32,105, + 102,10,32,32,32,32,116,104,101,32,108,111,97,100,101,114, + 32,100,105,100,32,110,111,116,46,10,10,32,32,32,32,114, + 26,0,0,0,78,41,4,114,222,0,0,0,114,212,0,0, + 0,114,229,0,0,0,218,11,95,103,99,100,95,105,109,112, + 111,114,116,114,221,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,230,0,0,0,14,4,0,0, + 115,8,0,0,0,12,9,8,1,12,1,10,1,114,18,0, + 0,0,114,230,0,0,0,169,1,218,9,114,101,99,117,114, + 115,105,118,101,99,3,0,0,0,0,0,0,0,1,0,0, + 0,9,0,0,0,67,0,0,0,115,216,0,0,0,124,1, + 68,0,93,102,125,4,116,0,124,4,116,1,131,2,115,32, + 124,3,114,17,124,0,106,2,100,1,23,0,125,5,110,2, + 100,2,125,5,116,3,100,3,124,5,155,0,100,4,116,4, + 124,4,131,1,106,2,155,0,157,4,131,1,130,1,124,4, + 100,5,107,2,114,53,124,3,115,52,116,5,124,0,100,6, + 131,2,114,52,116,6,124,0,124,0,106,7,124,2,100,7, + 100,8,141,4,1,0,113,2,116,5,124,0,124,4,131,2, + 115,104,100,9,160,8,124,0,106,2,124,4,161,2,125,6, + 9,0,116,9,124,2,124,6,131,2,1,0,113,2,35,0, + 4,0,116,10,121,107,1,0,125,7,1,0,124,7,106,11, + 124,6,107,2,114,98,116,12,106,13,160,14,124,6,116,15, + 161,2,100,10,117,1,114,98,89,0,100,10,125,7,126,7, + 113,2,130,0,100,10,125,7,126,7,119,1,37,0,113,2, + 124,0,83,0,119,0,41,11,122,238,70,105,103,117,114,101, + 32,111,117,116,32,119,104,97,116,32,95,95,105,109,112,111, + 114,116,95,95,32,115,104,111,117,108,100,32,114,101,116,117, + 114,110,46,10,10,32,32,32,32,84,104,101,32,105,109,112, + 111,114,116,95,32,112,97,114,97,109,101,116,101,114,32,105, + 115,32,97,32,99,97,108,108,97,98,108,101,32,119,104,105, + 99,104,32,116,97,107,101,115,32,116,104,101,32,110,97,109, + 101,32,111,102,32,109,111,100,117,108,101,32,116,111,10,32, + 32,32,32,105,109,112,111,114,116,46,32,73,116,32,105,115, + 32,114,101,113,117,105,114,101,100,32,116,111,32,100,101,99, + 111,117,112,108,101,32,116,104,101,32,102,117,110,99,116,105, + 111,110,32,102,114,111,109,32,97,115,115,117,109,105,110,103, + 32,105,109,112,111,114,116,108,105,98,39,115,10,32,32,32, + 32,105,109,112,111,114,116,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,105,115,32,100,101,115,105,114,101, + 100,46,10,10,32,32,32,32,122,8,46,95,95,97,108,108, + 95,95,122,13,96,96,102,114,111,109,32,108,105,115,116,39, + 39,122,8,73,116,101,109,32,105,110,32,122,18,32,109,117, + 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,250, + 1,42,218,7,95,95,97,108,108,95,95,84,114,231,0,0, + 0,114,207,0,0,0,78,41,16,114,217,0,0,0,114,218, + 0,0,0,114,9,0,0,0,114,219,0,0,0,114,3,0, + 0,0,114,11,0,0,0,218,16,95,104,97,110,100,108,101, + 95,102,114,111,109,108,105,115,116,114,234,0,0,0,114,51, + 0,0,0,114,75,0,0,0,114,225,0,0,0,114,21,0, + 0,0,114,19,0,0,0,114,106,0,0,0,114,39,0,0, + 0,114,228,0,0,0,41,8,114,111,0,0,0,218,8,102, + 114,111,109,108,105,115,116,114,226,0,0,0,114,232,0,0, + 0,218,1,120,90,5,119,104,101,114,101,90,9,102,114,111, + 109,95,110,97,109,101,90,3,101,120,99,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,235,0,0,0,29, + 4,0,0,115,58,0,0,0,8,10,10,1,4,1,12,1, + 4,2,10,1,8,1,8,255,8,2,14,1,10,1,2,1, + 6,255,2,128,10,2,14,1,2,1,12,1,2,128,12,1, + 10,4,16,1,2,255,10,2,2,1,10,128,2,245,4,12, + 2,248,115,36,0,0,0,193,2,5,65,8,2,193,8,7, + 65,39,9,193,15,14,65,35,9,193,34,1,65,35,9,193, + 35,4,65,39,9,193,43,1,65,39,9,114,235,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0, + 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, + 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, + 100,3,117,1,114,41,124,2,100,3,117,1,114,39,124,1, + 124,2,106,1,107,3,114,39,116,2,160,3,100,4,124,1, + 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, + 100,7,100,8,166,3,1,0,124,1,83,0,124,2,100,3, + 117,1,114,48,124,2,106,1,83,0,116,2,160,3,100,9, + 116,4,100,7,100,8,166,3,1,0,124,0,100,10,25,0, + 125,1,100,11,124,0,118,1,114,71,124,1,160,5,100,12, + 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, + 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, + 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, + 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, + 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, + 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, + 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, + 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, + 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, + 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, + 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, + 46,10,10,32,32,32,32,114,159,0,0,0,114,114,0,0, + 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, + 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, + 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, + 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, + 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, + 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, + 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, + 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, + 110,100,32,95,95,112,97,116,104,95,95,114,9,0,0,0, + 114,155,0,0,0,114,142,0,0,0,114,26,0,0,0,41, + 6,114,39,0,0,0,114,144,0,0,0,114,102,0,0,0, + 114,103,0,0,0,114,170,0,0,0,114,143,0,0,0,41, + 3,218,7,103,108,111,98,97,108,115,114,210,0,0,0,114, 110,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,18,95,98,117,105,108,116,105,110,95,102,114, - 111,109,95,110,97,109,101,130,4,0,0,115,8,0,0,0, - 10,1,8,1,12,1,8,1,114,18,0,0,0,114,245,0, - 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,115,166,0,0,0,124,1,97,0, - 124,0,97,1,116,2,116,1,131,1,125,2,116,1,106,3, - 160,4,161,0,68,0,93,36,92,2,125,3,125,4,116,5, - 124,4,124,2,131,2,114,49,124,3,116,1,106,6,118,0, - 114,30,116,7,125,5,110,9,116,0,160,8,124,3,161,1, - 114,38,116,9,125,5,110,1,113,13,116,10,124,4,124,5, - 131,2,125,6,116,11,124,6,124,4,131,2,1,0,113,13, - 116,1,106,3,116,12,25,0,125,7,100,1,68,0,93,23, - 125,8,124,8,116,1,106,3,118,1,114,69,116,13,124,8, - 131,1,125,9,110,5,116,1,106,3,124,8,25,0,125,9, - 116,14,124,7,124,8,124,9,131,3,1,0,113,57,100,2, - 83,0,41,3,122,250,83,101,116,117,112,32,105,109,112,111, - 114,116,108,105,98,32,98,121,32,105,109,112,111,114,116,105, - 110,103,32,110,101,101,100,101,100,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,32,97,110,100,32,105, - 110,106,101,99,116,105,110,103,32,116,104,101,109,10,32,32, - 32,32,105,110,116,111,32,116,104,101,32,103,108,111,98,97, - 108,32,110,97,109,101,115,112,97,99,101,46,10,10,32,32, - 32,32,65,115,32,115,121,115,32,105,115,32,110,101,101,100, - 101,100,32,102,111,114,32,115,121,115,46,109,111,100,117,108, - 101,115,32,97,99,99,101,115,115,32,97,110,100,32,95,105, - 109,112,32,105,115,32,110,101,101,100,101,100,32,116,111,32, - 108,111,97,100,32,98,117,105,108,116,45,105,110,10,32,32, - 32,32,109,111,100,117,108,101,115,44,32,116,104,111,115,101, - 32,116,119,111,32,109,111,100,117,108,101,115,32,109,117,115, - 116,32,98,101,32,101,120,112,108,105,99,105,116,108,121,32, - 112,97,115,115,101,100,32,105,110,46,10,10,32,32,32,32, - 41,3,114,27,0,0,0,114,102,0,0,0,114,72,0,0, - 0,78,41,15,114,65,0,0,0,114,19,0,0,0,114,3, - 0,0,0,114,106,0,0,0,218,5,105,116,101,109,115,114, - 217,0,0,0,114,87,0,0,0,114,176,0,0,0,114,99, - 0,0,0,114,194,0,0,0,114,156,0,0,0,114,162,0, - 0,0,114,9,0,0,0,114,245,0,0,0,114,12,0,0, - 0,41,10,218,10,115,121,115,95,109,111,100,117,108,101,218, - 11,95,105,109,112,95,109,111,100,117,108,101,90,11,109,111, - 100,117,108,101,95,116,121,112,101,114,21,0,0,0,114,111, - 0,0,0,114,123,0,0,0,114,110,0,0,0,90,11,115, - 101,108,102,95,109,111,100,117,108,101,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,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,6,95,115,101,116,117,112,137, - 4,0,0,115,40,0,0,0,4,9,4,1,8,3,18,1, - 10,1,10,1,6,1,10,1,6,1,2,2,10,1,10,1, - 2,128,10,3,8,1,10,1,10,1,10,2,14,1,4,251, - 114,18,0,0,0,114,249,0,0,0,99,2,0,0,0,0, + 0,0,0,218,17,95,99,97,108,99,95,95,95,112,97,99, + 107,97,103,101,95,95,66,4,0,0,115,42,0,0,0,10, + 7,10,1,8,1,18,1,6,1,2,1,4,255,4,1,6, + 255,4,2,6,254,4,3,8,1,6,1,6,2,4,2,6, + 254,8,3,8,1,14,1,4,1,114,18,0,0,0,114,241, + 0,0,0,114,5,0,0,0,99,5,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,174,0, + 0,0,124,4,100,1,107,2,114,9,116,0,124,0,131,1, + 125,5,110,18,124,1,100,2,117,1,114,15,124,1,110,1, + 105,0,125,6,116,1,124,6,131,1,125,7,116,0,124,0, + 124,7,124,4,131,3,125,5,124,3,115,74,124,4,100,1, + 107,2,114,42,116,0,124,0,160,2,100,3,161,1,100,1, + 25,0,131,1,83,0,124,0,115,46,124,5,83,0,116,3, + 124,0,131,1,116,3,124,0,160,2,100,3,161,1,100,1, + 25,0,131,1,24,0,125,8,116,4,106,5,124,5,106,6, + 100,2,116,3,124,5,106,6,131,1,124,8,24,0,133,2, + 25,0,25,0,83,0,116,7,124,5,100,4,131,2,114,85, + 116,8,124,5,124,3,116,0,131,3,83,0,124,5,83,0, + 41,5,97,215,1,0,0,73,109,112,111,114,116,32,97,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,84,104,101, + 32,39,103,108,111,98,97,108,115,39,32,97,114,103,117,109, + 101,110,116,32,105,115,32,117,115,101,100,32,116,111,32,105, + 110,102,101,114,32,119,104,101,114,101,32,116,104,101,32,105, + 109,112,111,114,116,32,105,115,32,111,99,99,117,114,114,105, + 110,103,32,102,114,111,109,10,32,32,32,32,116,111,32,104, + 97,110,100,108,101,32,114,101,108,97,116,105,118,101,32,105, + 109,112,111,114,116,115,46,32,84,104,101,32,39,108,111,99, + 97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,115, + 32,105,103,110,111,114,101,100,46,32,84,104,101,10,32,32, + 32,32,39,102,114,111,109,108,105,115,116,39,32,97,114,103, + 117,109,101,110,116,32,115,112,101,99,105,102,105,101,115,32, + 119,104,97,116,32,115,104,111,117,108,100,32,101,120,105,115, + 116,32,97,115,32,97,116,116,114,105,98,117,116,101,115,32, + 111,110,32,116,104,101,32,109,111,100,117,108,101,10,32,32, + 32,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, + 32,40,101,46,103,46,32,96,96,102,114,111,109,32,109,111, + 100,117,108,101,32,105,109,112,111,114,116,32,60,102,114,111, + 109,108,105,115,116,62,96,96,41,46,32,32,84,104,101,32, + 39,108,101,118,101,108,39,10,32,32,32,32,97,114,103,117, + 109,101,110,116,32,114,101,112,114,101,115,101,110,116,115,32, + 116,104,101,32,112,97,99,107,97,103,101,32,108,111,99,97, + 116,105,111,110,32,116,111,32,105,109,112,111,114,116,32,102, + 114,111,109,32,105,110,32,97,32,114,101,108,97,116,105,118, + 101,10,32,32,32,32,105,109,112,111,114,116,32,40,101,46, + 103,46,32,96,96,102,114,111,109,32,46,46,112,107,103,32, + 105,109,112,111,114,116,32,109,111,100,96,96,32,119,111,117, + 108,100,32,104,97,118,101,32,97,32,39,108,101,118,101,108, + 39,32,111,102,32,50,41,46,10,10,32,32,32,32,114,26, + 0,0,0,78,114,142,0,0,0,114,155,0,0,0,41,9, + 114,230,0,0,0,114,241,0,0,0,218,9,112,97,114,116, + 105,116,105,111,110,114,209,0,0,0,114,19,0,0,0,114, + 106,0,0,0,114,9,0,0,0,114,11,0,0,0,114,235, + 0,0,0,41,9,114,21,0,0,0,114,240,0,0,0,218, + 6,108,111,99,97,108,115,114,236,0,0,0,114,211,0,0, + 0,114,111,0,0,0,90,8,103,108,111,98,97,108,115,95, + 114,210,0,0,0,90,7,99,117,116,95,111,102,102,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,10,95, + 95,105,109,112,111,114,116,95,95,93,4,0,0,115,30,0, + 0,0,8,11,10,1,16,2,8,1,12,1,4,1,8,3, + 18,1,4,1,4,1,26,4,30,3,10,1,12,1,4,2, + 114,18,0,0,0,114,244,0,0,0,99,1,0,0,0,0, 0,0,0,0,0,0,0,3,0,0,0,67,0,0,0,115, - 38,0,0,0,116,0,124,0,124,1,131,2,1,0,116,1, - 106,2,160,3,116,4,161,1,1,0,116,1,106,2,160,3, - 116,5,161,1,1,0,100,1,83,0,41,2,122,48,73,110, - 115,116,97,108,108,32,105,109,112,111,114,116,101,114,115,32, - 102,111,114,32,98,117,105,108,116,105,110,32,97,110,100,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,115,78,41, - 6,114,249,0,0,0,114,19,0,0,0,114,215,0,0,0, - 114,133,0,0,0,114,176,0,0,0,114,194,0,0,0,41, - 2,114,247,0,0,0,114,248,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,8,95,105,110,115, - 116,97,108,108,172,4,0,0,115,6,0,0,0,10,2,12, - 2,16,1,114,18,0,0,0,114,250,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,115,32,0,0,0,100,1,100,2,108,0,125,0,124, - 0,97,1,124,0,160,2,116,3,106,4,116,5,25,0,161, - 1,1,0,100,2,83,0,41,3,122,57,73,110,115,116,97, - 108,108,32,105,109,112,111,114,116,101,114,115,32,116,104,97, - 116,32,114,101,113,117,105,114,101,32,101,120,116,101,114,110, - 97,108,32,102,105,108,101,115,121,115,116,101,109,32,97,99, - 99,101,115,115,114,26,0,0,0,78,41,6,218,26,95,102, - 114,111,122,101,110,95,105,109,112,111,114,116,108,105,98,95, - 101,120,116,101,114,110,97,108,114,140,0,0,0,114,250,0, - 0,0,114,19,0,0,0,114,106,0,0,0,114,9,0,0, - 0,41,1,114,251,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,27,95,105,110,115,116,97,108, - 108,95,101,120,116,101,114,110,97,108,95,105,109,112,111,114, - 116,101,114,115,180,4,0,0,115,6,0,0,0,8,3,4, - 1,20,1,114,18,0,0,0,114,252,0,0,0,114,191,0, - 0,0,114,0,0,0,0,114,25,0,0,0,41,4,78,78, - 114,5,0,0,0,114,26,0,0,0,41,54,114,10,0,0, - 0,114,7,0,0,0,114,27,0,0,0,114,102,0,0,0, - 114,72,0,0,0,114,140,0,0,0,114,17,0,0,0,114, - 22,0,0,0,114,67,0,0,0,114,38,0,0,0,114,48, - 0,0,0,114,23,0,0,0,114,24,0,0,0,114,56,0, - 0,0,114,58,0,0,0,114,61,0,0,0,114,73,0,0, - 0,114,75,0,0,0,114,84,0,0,0,114,96,0,0,0, - 114,101,0,0,0,114,112,0,0,0,114,125,0,0,0,114, - 126,0,0,0,114,105,0,0,0,114,156,0,0,0,114,162, - 0,0,0,114,166,0,0,0,114,120,0,0,0,114,107,0, - 0,0,114,173,0,0,0,114,174,0,0,0,114,108,0,0, - 0,114,176,0,0,0,114,194,0,0,0,114,201,0,0,0, - 114,212,0,0,0,114,214,0,0,0,114,216,0,0,0,114, - 222,0,0,0,90,15,95,69,82,82,95,77,83,71,95,80, - 82,69,70,73,88,114,224,0,0,0,114,227,0,0,0,218, - 6,111,98,106,101,99,116,114,228,0,0,0,114,229,0,0, - 0,114,230,0,0,0,114,235,0,0,0,114,241,0,0,0, - 114,244,0,0,0,114,245,0,0,0,114,249,0,0,0,114, - 250,0,0,0,114,252,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,8,60, - 109,111,100,117,108,101,62,1,0,0,0,115,104,0,0,0, - 4,0,8,22,4,9,4,1,4,1,4,3,8,3,8,8, - 4,8,4,2,16,3,14,4,14,77,14,21,8,16,8,37, - 8,17,14,11,8,8,8,11,8,12,8,19,14,26,16,101, - 10,26,14,45,8,72,8,17,8,17,8,30,8,36,8,45, - 14,15,14,80,14,85,8,13,8,9,10,10,8,47,4,16, - 8,1,8,2,6,32,8,3,10,16,14,15,8,37,10,27, - 8,37,8,7,8,35,12,8,114,18,0,0,0, + 38,0,0,0,116,0,160,1,124,0,161,1,125,1,124,1, + 100,0,117,0,114,15,116,2,100,1,124,0,23,0,131,1, + 130,1,116,3,124,1,131,1,83,0,41,2,78,122,25,110, + 111,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, + 101,32,110,97,109,101,100,32,41,4,114,176,0,0,0,114, + 184,0,0,0,114,88,0,0,0,114,174,0,0,0,41,2, + 114,21,0,0,0,114,110,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,18,95,98,117,105,108, + 116,105,110,95,102,114,111,109,95,110,97,109,101,130,4,0, + 0,115,8,0,0,0,10,1,8,1,12,1,8,1,114,18, + 0,0,0,114,245,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,166,0, + 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, + 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, + 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, + 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, + 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, + 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, + 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, + 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, + 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, + 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, + 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, + 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, + 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, + 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, + 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, + 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, + 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, + 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, + 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, + 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, + 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, + 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, + 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, + 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, + 10,10,32,32,32,32,41,3,114,27,0,0,0,114,102,0, + 0,0,114,72,0,0,0,78,41,15,114,65,0,0,0,114, + 19,0,0,0,114,3,0,0,0,114,106,0,0,0,218,5, + 105,116,101,109,115,114,217,0,0,0,114,87,0,0,0,114, + 176,0,0,0,114,99,0,0,0,114,194,0,0,0,114,156, + 0,0,0,114,162,0,0,0,114,9,0,0,0,114,245,0, + 0,0,114,12,0,0,0,41,10,218,10,115,121,115,95,109, + 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, + 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, + 21,0,0,0,114,111,0,0,0,114,123,0,0,0,114,110, + 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, + 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,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, + 115,101,116,117,112,137,4,0,0,115,40,0,0,0,4,9, + 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, + 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, + 10,2,14,1,4,251,114,18,0,0,0,114,249,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,38,0,0,0,116,0,124,0,124,1, + 131,2,1,0,116,1,106,2,160,3,116,4,161,1,1,0, + 116,1,106,2,160,3,116,5,161,1,1,0,100,1,83,0, + 41,2,122,48,73,110,115,116,97,108,108,32,105,109,112,111, + 114,116,101,114,115,32,102,111,114,32,98,117,105,108,116,105, + 110,32,97,110,100,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,78,41,6,114,249,0,0,0,114,19,0,0, + 0,114,215,0,0,0,114,133,0,0,0,114,176,0,0,0, + 114,194,0,0,0,41,2,114,247,0,0,0,114,248,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,8,95,105,110,115,116,97,108,108,172,4,0,0,115,6, + 0,0,0,10,2,12,2,16,1,114,18,0,0,0,114,250, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,32,0,0,0,100,1,100, + 2,108,0,125,0,124,0,97,1,124,0,160,2,116,3,106, + 4,116,5,25,0,161,1,1,0,100,2,83,0,41,3,122, + 57,73,110,115,116,97,108,108,32,105,109,112,111,114,116,101, + 114,115,32,116,104,97,116,32,114,101,113,117,105,114,101,32, + 101,120,116,101,114,110,97,108,32,102,105,108,101,115,121,115, + 116,101,109,32,97,99,99,101,115,115,114,26,0,0,0,78, + 41,6,218,26,95,102,114,111,122,101,110,95,105,109,112,111, + 114,116,108,105,98,95,101,120,116,101,114,110,97,108,114,140, + 0,0,0,114,250,0,0,0,114,19,0,0,0,114,106,0, + 0,0,114,9,0,0,0,41,1,114,251,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,27,95, + 105,110,115,116,97,108,108,95,101,120,116,101,114,110,97,108, + 95,105,109,112,111,114,116,101,114,115,180,4,0,0,115,6, + 0,0,0,8,3,4,1,20,1,114,18,0,0,0,114,252, + 0,0,0,114,191,0,0,0,114,0,0,0,0,114,25,0, + 0,0,41,4,78,78,114,5,0,0,0,114,26,0,0,0, + 41,54,114,10,0,0,0,114,7,0,0,0,114,27,0,0, + 0,114,102,0,0,0,114,72,0,0,0,114,140,0,0,0, + 114,17,0,0,0,114,22,0,0,0,114,67,0,0,0,114, + 38,0,0,0,114,48,0,0,0,114,23,0,0,0,114,24, + 0,0,0,114,56,0,0,0,114,58,0,0,0,114,61,0, + 0,0,114,73,0,0,0,114,75,0,0,0,114,84,0,0, + 0,114,96,0,0,0,114,101,0,0,0,114,112,0,0,0, + 114,125,0,0,0,114,126,0,0,0,114,105,0,0,0,114, + 156,0,0,0,114,162,0,0,0,114,166,0,0,0,114,120, + 0,0,0,114,107,0,0,0,114,173,0,0,0,114,174,0, + 0,0,114,108,0,0,0,114,176,0,0,0,114,194,0,0, + 0,114,201,0,0,0,114,212,0,0,0,114,214,0,0,0, + 114,216,0,0,0,114,222,0,0,0,90,15,95,69,82,82, + 95,77,83,71,95,80,82,69,70,73,88,114,224,0,0,0, + 114,227,0,0,0,218,6,111,98,106,101,99,116,114,228,0, + 0,0,114,229,0,0,0,114,230,0,0,0,114,235,0,0, + 0,114,241,0,0,0,114,244,0,0,0,114,245,0,0,0, + 114,249,0,0,0,114,250,0,0,0,114,252,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,8,60,109,111,100,117,108,101,62,1,0,0, + 0,115,104,0,0,0,4,0,8,22,4,9,4,1,4,1, + 4,3,8,3,8,8,4,8,4,2,16,3,14,4,14,77, + 14,21,8,16,8,37,8,17,14,11,8,8,8,11,8,12, + 8,19,14,26,16,101,10,26,14,45,8,72,8,17,8,17, + 8,30,8,36,8,45,14,15,14,80,14,85,8,13,8,9, + 10,10,8,47,4,16,8,1,8,2,6,32,8,3,10,16, + 14,15,8,37,10,27,8,37,8,7,8,35,12,8,114,18, + 0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 0ef4824a6599b..07a42a7dca61e 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1609,1210 +1609,1210 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,114,110,0,0,0,90,4,114,101,97,100,114,93,0,0, 0,41,3,114,144,0,0,0,114,66,0,0,0,114,95,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,0,1,0,0,49,4,0,0,115,26,0,0,0,14, - 2,16,1,6,1,12,255,2,1,22,128,4,0,14,2,6, - 1,12,255,2,1,22,128,4,0,115,24,0,0,0,142,4, - 25,3,153,4,29,11,158,3,29,11,172,4,55,3,183,4, - 59,11,188,3,59,11,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,67,0,0,0, - 115,20,0,0,0,100,1,100,2,108,0,109,1,125,2,1, - 0,124,2,124,0,131,1,83,0,41,3,78,114,0,0,0, - 0,41,1,218,10,70,105,108,101,82,101,97,100,101,114,41, - 2,218,17,105,109,112,111,114,116,108,105,98,46,114,101,97, - 100,101,114,115,114,32,1,0,0,41,3,114,144,0,0,0, - 114,245,0,0,0,114,32,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,19,103,101,116,95,114, - 101,115,111,117,114,99,101,95,114,101,97,100,101,114,58,4, - 0,0,115,4,0,0,0,12,2,8,1,114,10,0,0,0, - 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, - 41,13,114,151,0,0,0,114,150,0,0,0,114,152,0,0, - 0,114,153,0,0,0,114,237,0,0,0,114,17,1,0,0, - 114,23,1,0,0,114,161,0,0,0,114,249,0,0,0,114, - 204,0,0,0,114,0,1,0,0,114,34,1,0,0,90,13, - 95,95,99,108,97,115,115,99,101,108,108,95,95,114,7,0, - 0,0,114,7,0,0,0,114,26,1,0,0,114,8,0,0, - 0,114,12,1,0,0,14,4,0,0,115,24,0,0,0,8, - 0,4,2,8,3,8,6,8,4,2,3,14,1,2,11,10, - 1,8,4,2,9,18,1,114,10,0,0,0,114,12,1,0, - 0,99,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,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,3,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,194,0,0,0,114,7,1,0,0,78,41, - 3,114,76,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,144,0,0,0, - 114,66,0,0,0,114,11,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,253,0,0,0,68,4, - 0,0,115,4,0,0,0,8,2,14,1,114,10,0,0,0, - 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,6,0,0,0,67,0, - 0,0,115,24,0,0,0,116,0,124,1,131,1,125,4,124, - 0,160,1,124,2,124,3,124,4,100,1,166,3,83,0,41, - 2,78,169,1,218,5,95,109,111,100,101,41,2,114,140,0, - 0,0,114,254,0,0,0,41,5,114,144,0,0,0,114,135, - 0,0,0,114,133,0,0,0,114,42,0,0,0,114,79,0, + 0,114,0,1,0,0,49,4,0,0,115,22,0,0,0,14, + 2,16,1,6,1,14,255,22,128,4,0,14,3,6,1,14, + 255,22,128,4,0,115,24,0,0,0,142,4,25,3,153,4, + 29,11,158,3,29,11,172,4,55,3,183,4,59,11,188,3, + 59,11,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,67,0,0,0,115,20,0,0, + 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,124, + 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, + 10,70,105,108,101,82,101,97,100,101,114,41,2,218,17,105, + 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, + 114,32,1,0,0,41,3,114,144,0,0,0,114,245,0,0, + 0,114,32,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,19,103,101,116,95,114,101,115,111,117, + 114,99,101,95,114,101,97,100,101,114,58,4,0,0,115,4, + 0,0,0,12,2,8,1,114,10,0,0,0,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,41,13,114,151, + 0,0,0,114,150,0,0,0,114,152,0,0,0,114,153,0, + 0,0,114,237,0,0,0,114,17,1,0,0,114,23,1,0, + 0,114,161,0,0,0,114,249,0,0,0,114,204,0,0,0, + 114,0,1,0,0,114,34,1,0,0,90,13,95,95,99,108, + 97,115,115,99,101,108,108,95,95,114,7,0,0,0,114,7, + 0,0,0,114,26,1,0,0,114,8,0,0,0,114,12,1, + 0,0,14,4,0,0,115,24,0,0,0,8,0,4,2,8, + 3,8,6,8,4,2,3,14,1,2,11,10,1,8,4,2, + 9,18,1,114,10,0,0,0,114,12,1,0,0,99,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,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,3,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,194,0,0,0,114,7,1,0,0,78,41,3,114,76,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,144,0,0,0,114,66,0,0, + 0,114,11,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,253,0,0,0,68,4,0,0,115,4, + 0,0,0,8,2,14,1,114,10,0,0,0,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,6,0,0,0,67,0,0,0,115,24, + 0,0,0,116,0,124,1,131,1,125,4,124,0,160,1,124, + 2,124,3,124,4,100,1,166,3,83,0,41,2,78,169,1, + 218,5,95,109,111,100,101,41,2,114,140,0,0,0,114,254, + 0,0,0,41,5,114,144,0,0,0,114,135,0,0,0,114, + 133,0,0,0,114,42,0,0,0,114,79,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,255,0, + 0,0,73,4,0,0,115,4,0,0,0,8,2,16,1,114, + 10,0,0,0,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,88,0,0,0,114,37,1,0,0, + 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, + 0,67,0,0,0,115,250,0,0,0,116,0,124,1,131,1, + 92,2,125,4,125,5,103,0,125,6,124,4,114,31,116,1, + 124,4,131,1,115,31,116,0,124,4,131,1,92,2,125,4, + 125,7,124,6,160,2,124,7,161,1,1,0,124,4,114,31, + 116,1,124,4,131,1,114,14,116,3,124,6,131,1,68,0, + 93,47,125,7,116,4,124,4,124,7,131,2,125,4,9,0, + 116,5,160,6,124,4,161,1,1,0,113,35,35,0,4,0, + 116,7,121,58,1,0,1,0,1,0,89,0,113,35,4,0, + 116,8,121,124,1,0,125,8,1,0,116,9,160,10,100,1, + 124,4,124,8,161,3,1,0,89,0,100,2,125,8,126,8, + 1,0,100,2,83,0,100,2,125,8,126,8,119,1,37,0, + 9,0,116,11,124,1,124,2,124,3,131,3,1,0,116,9, + 160,10,100,3,124,1,161,2,1,0,100,2,83,0,35,0, + 4,0,116,8,121,123,1,0,125,8,1,0,116,9,160,10, + 100,1,124,1,124,8,161,3,1,0,89,0,100,2,125,8, + 126,8,100,2,83,0,100,2,125,8,126,8,119,1,37,0, + 119,0,119,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,75,0,0,0,114,84,0,0,0,114,62,0,0,0, + 218,8,114,101,118,101,114,115,101,100,114,68,0,0,0,114, + 19,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,77,0,0, + 0,114,160,0,0,0,114,174,0,0,0,114,96,0,0,0, + 41,9,114,144,0,0,0,114,66,0,0,0,114,42,0,0, + 0,114,38,1,0,0,218,6,112,97,114,101,110,116,114,121, + 0,0,0,114,64,0,0,0,114,69,0,0,0,114,1,1, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,255,0,0,0,73,4,0,0,115,4,0,0,0,8, - 2,16,1,114,10,0,0,0,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,88,0,0,0,114, - 37,1,0,0,99,3,0,0,0,0,0,0,0,1,0,0, - 0,9,0,0,0,67,0,0,0,115,250,0,0,0,116,0, - 124,1,131,1,92,2,125,4,125,5,103,0,125,6,124,4, - 114,31,116,1,124,4,131,1,115,31,116,0,124,4,131,1, - 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, - 124,4,114,31,116,1,124,4,131,1,114,14,116,3,124,6, - 131,1,68,0,93,47,125,7,116,4,124,4,124,7,131,2, - 125,4,9,0,116,5,160,6,124,4,161,1,1,0,113,35, - 35,0,4,0,116,7,121,58,1,0,1,0,1,0,89,0, - 113,35,4,0,116,8,121,124,1,0,125,8,1,0,116,9, - 160,10,100,1,124,4,124,8,161,3,1,0,89,0,100,2, - 125,8,126,8,1,0,100,2,83,0,100,2,125,8,126,8, - 119,1,37,0,9,0,116,11,124,1,124,2,124,3,131,3, - 1,0,116,9,160,10,100,3,124,1,161,2,1,0,100,2, - 83,0,35,0,4,0,116,8,121,123,1,0,125,8,1,0, - 116,9,160,10,100,1,124,1,124,8,161,3,1,0,89,0, - 100,2,125,8,126,8,100,2,83,0,100,2,125,8,126,8, - 119,1,37,0,119,0,119,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,75,0,0,0,114,84,0,0,0,114, - 62,0,0,0,218,8,114,101,118,101,114,115,101,100,114,68, - 0,0,0,114,19,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,77,0,0,0,114,160,0,0,0,114,174,0,0,0,114, - 96,0,0,0,41,9,114,144,0,0,0,114,66,0,0,0, - 114,42,0,0,0,114,38,1,0,0,218,6,112,97,114,101, - 110,116,114,121,0,0,0,114,64,0,0,0,114,69,0,0, - 0,114,1,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,254,0,0,0,78,4,0,0,115,60, - 0,0,0,12,2,4,1,12,2,12,1,10,1,12,254,12, - 4,10,1,2,1,12,1,2,128,12,1,4,2,12,1,6, - 3,4,1,4,255,14,2,10,128,2,1,12,1,16,1,2, - 128,12,1,8,2,2,1,16,255,10,128,2,254,2,247,115, - 62,0,0,0,171,5,49,2,177,7,65,18,9,186,6,65, - 18,9,193,0,7,65,14,9,193,14,4,65,18,9,193,20, - 12,65,34,0,193,34,7,65,58,7,193,41,7,65,54,7, - 193,54,4,65,58,7,193,59,1,65,58,7,193,60,1,65, - 18,9,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,151,0,0,0,114,150,0,0,0,114,152,0,0,0,114, - 153,0,0,0,114,253,0,0,0,114,255,0,0,0,114,254, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,35,1,0,0,64,4,0,0, - 115,10,0,0,0,8,0,4,2,8,2,8,5,18,5,114, - 10,0,0,0,114,35,1,0,0,99,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,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,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,184,0,0,0, - 114,170,0,0,0,41,2,114,142,0,0,0,114,133,0,0, - 0,41,5,114,204,0,0,0,114,0,1,0,0,114,177,0, - 0,0,114,190,0,0,0,114,8,1,0,0,41,5,114,144, - 0,0,0,114,164,0,0,0,114,66,0,0,0,114,42,0, - 0,0,114,176,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,242,0,0,0,113,4,0,0,115, - 22,0,0,0,10,1,10,1,2,4,2,1,6,254,12,4, - 2,1,14,1,2,1,2,1,6,253,114,10,0,0,0,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,1,0,0,0,67, - 0,0,0,114,24,0,0,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,7,0,0,0,114,248,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,2,1, - 0,0,129,4,0,0,114,25,0,0,0,114,10,0,0,0, - 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,151,0,0,0,114,150,0,0,0,114,152, - 0,0,0,114,153,0,0,0,114,242,0,0,0,114,2,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,42,1,0,0,109,4,0,0,115, - 8,0,0,0,8,0,4,2,8,2,12,16,114,10,0,0, - 0,114,42,1,0,0,99,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,31, - 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,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,0,83,0,114,70,0,0, - 0,114,184,0,0,0,41,3,114,144,0,0,0,114,142,0, - 0,0,114,66,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,237,0,0,0,142,4,0,0,115, - 4,0,0,0,6,1,10,1,114,10,0,0,0,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,67,0,0,0, - 114,13,1,0,0,114,70,0,0,0,114,14,1,0,0,114, - 16,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,17,1,0,0,146,4,0,0,114,18,1,0, - 0,114,10,0,0,0,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,3, - 0,0,0,67,0,0,0,114,19,1,0,0,114,70,0,0, - 0,114,20,1,0,0,114,22,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,23,1,0,0,150, - 4,0,0,114,24,1,0,0,114,10,0,0,0,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,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,3,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,78,41,7,114,160, - 0,0,0,114,243,0,0,0,114,188,0,0,0,90,14,99, - 114,101,97,116,101,95,100,121,110,97,109,105,99,114,174,0, - 0,0,114,142,0,0,0,114,66,0,0,0,41,3,114,144, - 0,0,0,114,211,0,0,0,114,245,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,240,0,0, - 0,153,4,0,0,115,14,0,0,0,4,2,6,1,4,255, - 6,2,8,1,4,255,4,2,114,10,0,0,0,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,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,160,0, - 0,0,114,243,0,0,0,114,188,0,0,0,90,12,101,120, - 101,99,95,100,121,110,97,109,105,99,114,174,0,0,0,114, - 142,0,0,0,114,66,0,0,0,169,2,114,144,0,0,0, - 114,245,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,246,0,0,0,161,4,0,0,115,8,0, - 0,0,14,2,6,1,8,1,8,255,114,10,0,0,0,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,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,5, - 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,3,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,51,0,0,0,115,28,0, - 0,0,129,0,124,0,93,9,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,237,0,0,0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0, - 0,114,9,0,0,0,170,4,0,0,115,6,0,0,0,6, - 128,2,1,20,255,114,10,0,0,0,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,46,60,108,111,99,97, - 108,115,62,46,60,103,101,110,101,120,112,114,62,78,41,4, - 114,75,0,0,0,114,66,0,0,0,218,3,97,110,121,114, - 233,0,0,0,114,248,0,0,0,114,7,0,0,0,114,46, - 1,0,0,114,8,0,0,0,114,207,0,0,0,167,4,0, - 0,115,8,0,0,0,14,2,12,1,2,1,8,255,114,10, - 0,0,0,122,30,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, - 1,0,0,0,67,0,0,0,114,24,0,0,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,7,0,0,0,114,248,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,242,0,0,0,173, - 4,0,0,114,25,0,0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0, - 114,24,0,0,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, - 7,0,0,0,114,248,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,2,1,0,0,177,4,0, - 0,114,25,0,0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0, - 114,27,1,0,0,114,28,1,0,0,114,72,0,0,0,114, - 248,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,204,0,0,0,181,4,0,0,114,29,1,0, - 0,114,10,0,0,0,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,151,0,0,0, - 114,150,0,0,0,114,152,0,0,0,114,153,0,0,0,114, - 237,0,0,0,114,17,1,0,0,114,23,1,0,0,114,240, - 0,0,0,114,246,0,0,0,114,207,0,0,0,114,242,0, - 0,0,114,2,1,0,0,114,161,0,0,0,114,204,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,31,1,0,0,134,4,0,0,115,24, - 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, - 8,8,6,8,6,8,4,2,4,14,1,114,10,0,0,0, - 114,31,1,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,64,0,0,0,115,104,0,0,0,101, + 0,114,254,0,0,0,78,4,0,0,115,60,0,0,0,12, + 2,4,1,12,2,12,1,10,1,12,254,12,4,10,1,2, + 1,12,1,2,128,12,1,4,2,12,1,6,3,4,1,4, + 255,14,2,10,128,2,1,12,1,16,1,2,128,12,1,8, + 2,2,1,16,255,10,128,2,254,2,247,115,62,0,0,0, + 171,5,49,2,177,7,65,18,9,186,6,65,18,9,193,0, + 7,65,14,9,193,14,4,65,18,9,193,20,12,65,34,0, + 193,34,7,65,58,7,193,41,7,65,54,7,193,54,4,65, + 58,7,193,59,1,65,58,7,193,60,1,65,18,9,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,151,0,0, + 0,114,150,0,0,0,114,152,0,0,0,114,153,0,0,0, + 114,253,0,0,0,114,255,0,0,0,114,254,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,35,1,0,0,64,4,0,0,115,10,0,0, + 0,8,0,4,2,8,2,8,5,18,5,114,10,0,0,0, + 114,35,1,0,0,99,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,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,100,18,100,19,132, - 0,90,12,100,20,100,21,132,0,90,13,100,22,100,23,132, - 0,90,14,100,24,83,0,41,25,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,99,4,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,67,0,0,0,115,36,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,3,124,0,95,5,100,0, - 83,0,114,70,0,0,0,41,6,218,5,95,110,97,109,101, - 218,5,95,112,97,116,104,114,137,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,12,95,112,97,116,104,95,102,105,110,100,101,114,169, - 4,114,144,0,0,0,114,142,0,0,0,114,66,0,0,0, - 90,11,112,97,116,104,95,102,105,110,100,101,114,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,237,0,0, - 0,194,4,0,0,115,8,0,0,0,6,1,6,1,14,1, - 10,1,114,10,0,0,0,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,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,15,100,3,83,0,124,1,100,4,102,2,83,0, - 41,6,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,98,0,0,0,114,11,0,0,0,41,2,114,16, - 0,0,0,114,66,0,0,0,90,8,95,95,112,97,116,104, - 95,95,78,41,2,114,49,1,0,0,114,105,0,0,0,41, - 4,114,144,0,0,0,114,41,1,0,0,218,3,100,111,116, - 90,2,109,101,114,7,0,0,0,114,7,0,0,0,114,8, - 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,200,4,0,0, - 115,8,0,0,0,18,2,8,1,4,2,8,3,114,10,0, - 0,0,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,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,70,0,0,0,41,4,114,56,1,0,0,114,156,0,0, - 0,114,16,0,0,0,218,7,109,111,100,117,108,101,115,41, - 3,114,144,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,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,51,1,0,0,210,4, - 0,0,115,4,0,0,0,12,1,16,1,114,10,0,0,0, - 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,4,0, - 0,0,67,0,0,0,115,80,0,0,0,116,0,124,0,160, - 1,161,0,131,1,125,1,124,1,124,0,106,2,107,3,114, - 37,124,0,160,3,124,0,106,4,124,1,161,2,125,2,124, - 2,100,0,117,1,114,34,124,2,106,5,100,0,117,0,114, - 34,124,2,106,6,114,34,124,2,106,6,124,0,95,7,124, - 1,124,0,95,2,124,0,106,7,83,0,114,70,0,0,0, - 41,8,114,137,0,0,0,114,51,1,0,0,114,52,1,0, - 0,114,53,1,0,0,114,49,1,0,0,114,165,0,0,0, - 114,203,0,0,0,114,50,1,0,0,41,3,114,144,0,0, - 0,90,11,112,97,114,101,110,116,95,112,97,116,104,114,211, + 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,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,184,0,0,0,114,170,0,0, + 0,41,2,114,142,0,0,0,114,133,0,0,0,41,5,114, + 204,0,0,0,114,0,1,0,0,114,177,0,0,0,114,190, + 0,0,0,114,8,1,0,0,41,5,114,144,0,0,0,114, + 164,0,0,0,114,66,0,0,0,114,42,0,0,0,114,176, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, - 214,4,0,0,115,16,0,0,0,12,2,10,1,14,1,18, - 3,6,1,8,1,6,1,6,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0, - 243,12,0,0,0,116,0,124,0,160,1,161,0,131,1,83, - 0,114,70,0,0,0,41,2,218,4,105,116,101,114,114,58, - 1,0,0,114,22,1,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,8,95,95,105,116,101,114,95, - 95,227,4,0,0,243,2,0,0,0,12,1,114,10,0,0, - 0,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,67,0,0,0,115, - 12,0,0,0,124,0,160,0,161,0,124,1,25,0,83,0, - 114,70,0,0,0,169,1,114,58,1,0,0,41,2,114,144, - 0,0,0,218,5,105,110,100,101,120,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,11,95,95,103,101,116, - 105,116,101,109,95,95,230,4,0,0,114,62,1,0,0,114, - 10,0,0,0,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,67,0,0,0,115,14,0,0,0,124,2,124,0,106,0, - 124,1,60,0,100,0,83,0,114,70,0,0,0,41,1,114, - 50,1,0,0,41,3,114,144,0,0,0,114,64,1,0,0, - 114,66,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,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,14,1,114,10,0,0, - 0,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,3,0,0,0,67,0, - 0,0,114,59,1,0,0,114,70,0,0,0,41,2,114,4, - 0,0,0,114,58,1,0,0,114,22,1,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,7,95,95, - 108,101,110,95,95,236,4,0,0,114,62,1,0,0,114,10, - 0,0,0,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,3,0,0,0,67,0,0,0, - 243,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,90,0,0, - 0,114,50,1,0,0,114,22,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,8,95,95,114,101, - 112,114,95,95,239,4,0,0,114,62,1,0,0,114,10,0, - 0,0,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,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,70,0,0,0,114,63,1,0,0,169,2,114,144,0, - 0,0,218,4,105,116,101,109,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,12,95,95,99,111,110,116,97, - 105,110,115,95,95,242,4,0,0,114,62,1,0,0,114,10, - 0,0,0,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,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,70,0,0,0,41, - 2,114,50,1,0,0,114,62,0,0,0,114,70,1,0,0, + 0,0,114,242,0,0,0,113,4,0,0,115,22,0,0,0, + 10,1,10,1,2,4,2,1,6,254,12,4,2,1,14,1, + 2,1,2,1,6,253,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114, + 24,0,0,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,7,0,0,0,114,248,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,2,1,0,0,129,4, + 0,0,114,25,0,0,0,114,10,0,0,0,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,151,0,0,0,114,150,0,0,0,114,152,0,0,0,114, + 153,0,0,0,114,242,0,0,0,114,2,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,42,1,0,0,109,4,0,0,115,8,0,0,0, + 8,0,4,2,8,2,12,16,114,10,0,0,0,114,42,1, + 0,0,99,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,31,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,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,0,83,0,114,70,0,0,0,114,184,0, + 0,0,41,3,114,144,0,0,0,114,142,0,0,0,114,66, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,237,0,0,0,142,4,0,0,115,4,0,0,0, + 6,1,10,1,114,10,0,0,0,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,67,0,0,0,114,13,1,0, + 0,114,70,0,0,0,114,14,1,0,0,114,16,1,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 62,0,0,0,245,4,0,0,243,2,0,0,0,16,1,114, - 10,0,0,0,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,15,114,151, - 0,0,0,114,150,0,0,0,114,152,0,0,0,114,153,0, - 0,0,114,237,0,0,0,114,56,1,0,0,114,51,1,0, - 0,114,58,1,0,0,114,61,1,0,0,114,65,1,0,0, - 114,66,1,0,0,114,67,1,0,0,114,69,1,0,0,114, - 72,1,0,0,114,62,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,48,1, - 0,0,187,4,0,0,115,26,0,0,0,8,0,4,1,8, - 6,8,6,8,10,8,4,8,13,8,3,8,3,8,3,8, - 3,8,3,12,3,114,10,0,0,0,114,48,1,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 64,0,0,0,115,88,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,100,18,132,0,90,12,100,19,83, - 0,41,20,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,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,70,0,0,0,41,2,114,48,1,0,0,114,50,1, - 0,0,114,54,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,237,0,0,0,251,4,0,0,115, - 2,0,0,0,18,1,114,10,0,0,0,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,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,115,24,0,0,0, - 116,0,160,1,100,1,116,2,161,2,1,0,100,2,160,3, - 124,0,106,4,161,1,83,0,41,4,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, - 82,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,40,41,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, - 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, - 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, - 46,49,50,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,78,41, - 5,114,100,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,90,0,0,0,114,151,0,0,0,41,1,114,245,0,0, + 17,1,0,0,146,4,0,0,114,18,1,0,0,114,10,0, + 0,0,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,3,0,0,0,67, + 0,0,0,114,19,1,0,0,114,70,0,0,0,114,20,1, + 0,0,114,22,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,23,1,0,0,150,4,0,0,114, + 24,1,0,0,114,10,0,0,0,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,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,3,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,78,41,7,114,160,0,0,0,114, + 243,0,0,0,114,188,0,0,0,90,14,99,114,101,97,116, + 101,95,100,121,110,97,109,105,99,114,174,0,0,0,114,142, + 0,0,0,114,66,0,0,0,41,3,114,144,0,0,0,114, + 211,0,0,0,114,245,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,240,0,0,0,153,4,0, + 0,115,14,0,0,0,4,2,6,1,4,255,6,2,8,1, + 4,255,4,2,114,10,0,0,0,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,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,160,0,0,0,114,243, + 0,0,0,114,188,0,0,0,90,12,101,120,101,99,95,100, + 121,110,97,109,105,99,114,174,0,0,0,114,142,0,0,0, + 114,66,0,0,0,169,2,114,144,0,0,0,114,245,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,11,109,111,100,117,108,101,95,114,101,112,114,254,4,0, - 0,115,8,0,0,0,6,7,2,1,4,255,12,2,114,10, - 0,0,0,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,1,0, - 0,0,67,0,0,0,114,24,0,0,0,41,2,78,84,114, - 7,0,0,0,114,248,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,207,0,0,0,9,5,0, - 0,243,2,0,0,0,4,1,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114, - 24,0,0,0,41,2,78,114,11,0,0,0,114,7,0,0, - 0,114,248,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,2,1,0,0,12,5,0,0,114,76, - 1,0,0,114,10,0,0,0,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,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,11,0,0,0,122,8,60,115,116,114,105,110,103, - 62,114,244,0,0,0,84,41,1,114,4,1,0,0,41,1, - 114,5,1,0,0,114,248,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,242,0,0,0,15,5, - 0,0,114,73,1,0,0,114,10,0,0,0,122,25,95,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,103, + 114,246,0,0,0,161,4,0,0,115,8,0,0,0,14,2, + 6,1,8,1,8,255,114,10,0,0,0,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,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,5,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, + 3,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,51,0,0,0,115,28,0,0,0,129,0, + 124,0,93,9,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,237,0,0, + 0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0, + 0,0,170,4,0,0,115,6,0,0,0,6,128,2,1,20, + 255,114,10,0,0,0,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,46,60,108,111,99,97,108,115,62,46, + 60,103,101,110,101,120,112,114,62,78,41,4,114,75,0,0, + 0,114,66,0,0,0,218,3,97,110,121,114,233,0,0,0, + 114,248,0,0,0,114,7,0,0,0,114,46,1,0,0,114, + 8,0,0,0,114,207,0,0,0,167,4,0,0,115,8,0, + 0,0,14,2,12,1,2,1,8,255,114,10,0,0,0,122, + 30,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,1,0,0,0, + 67,0,0,0,114,24,0,0,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,7,0, + 0,0,114,248,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,242,0,0,0,173,4,0,0,114, + 25,0,0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, - 0,114,238,0,0,0,114,7,0,0,0,114,239,0,0,0, + 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,7,0,0,0, + 114,248,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,2,1,0,0,177,4,0,0,114,25,0, + 0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,27,1,0, + 0,114,28,1,0,0,114,72,0,0,0,114,248,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 240,0,0,0,18,5,0,0,114,241,0,0,0,114,10,0, - 0,0,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,1, - 0,0,0,67,0,0,0,115,4,0,0,0,100,0,83,0, - 114,70,0,0,0,114,7,0,0,0,114,43,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,246, - 0,0,0,21,5,0,0,114,76,1,0,0,114,10,0,0, - 0,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,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,3,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,78,41,4,114,160,0,0,0,114,174,0,0,0,114,50, - 1,0,0,114,247,0,0,0,114,248,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,249,0,0, - 0,24,5,0,0,115,8,0,0,0,6,7,4,1,4,255, - 12,3,114,10,0,0,0,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,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,100, - 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,106, - 2,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, - 15,78,97,109,101,115,112,97,99,101,82,101,97,100,101,114, - 41,3,114,33,1,0,0,114,77,1,0,0,114,50,1,0, - 0,41,3,114,144,0,0,0,114,245,0,0,0,114,77,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,34,1,0,0,36,5,0,0,115,4,0,0,0,12, - 1,10,1,114,10,0,0,0,122,36,95,78,97,109,101,115, - 112,97,99,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,78,41, - 13,114,151,0,0,0,114,150,0,0,0,114,152,0,0,0, - 114,237,0,0,0,114,234,0,0,0,114,75,1,0,0,114, - 207,0,0,0,114,2,1,0,0,114,242,0,0,0,114,240, - 0,0,0,114,246,0,0,0,114,249,0,0,0,114,34,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,74,1,0,0,250,4,0,0,115, - 22,0,0,0,8,0,8,1,2,3,10,1,8,10,8,3, - 8,3,8,3,8,3,8,3,12,12,114,10,0,0,0,114, - 74,1,0,0,99,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,7,100,6,100,7,132,0,131,1,90,8,101,7, - 100,8,100,9,132,0,131,1,90,9,101,7,100,19,100,11, - 100,12,132,1,131,1,90,10,101,7,100,20,100,13,100,14, - 132,1,131,1,90,11,101,7,100,19,100,15,100,16,132,1, - 131,1,90,12,101,4,100,17,100,18,132,0,131,1,90,13, - 100,10,83,0,41,21,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,0,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,64,0,0,0,116,0,116,1, - 106,2,160,3,161,0,131,1,68,0,93,22,92,2,125,0, - 125,1,124,1,100,1,117,0,114,20,116,1,106,2,124,0, - 61,0,113,7,116,4,124,1,100,2,131,2,114,29,124,1, - 160,5,161,0,1,0,113,7,100,1,83,0,41,3,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,41,6,218,4,108,105,115,116,114,16,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,154,0,0,0,114, - 79,1,0,0,41,2,114,142,0,0,0,218,6,102,105,110, - 100,101,114,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,79,1,0,0,47,5,0,0,115,14,0,0,0, - 22,4,8,1,10,1,10,1,8,1,2,128,4,252,114,10, - 0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,9,0, - 0,0,67,0,0,0,115,78,0,0,0,116,0,106,1,100, - 1,117,1,114,14,116,0,106,1,115,14,116,2,160,3,100, - 2,116,4,161,2,1,0,116,0,106,1,68,0,93,18,125, - 1,9,0,124,1,124,0,131,1,2,0,1,0,83,0,35, - 0,4,0,116,5,121,38,1,0,1,0,1,0,89,0,113, - 17,37,0,100,1,83,0,119,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,16,0,0,0,218,10,112,97, - 116,104,95,104,111,111,107,115,114,100,0,0,0,114,101,0, - 0,0,114,163,0,0,0,114,143,0,0,0,41,2,114,66, - 0,0,0,90,4,104,111,111,107,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,95, - 104,111,111,107,115,57,5,0,0,115,22,0,0,0,16,3, - 12,1,10,1,2,1,12,1,2,128,12,1,4,1,2,128, - 4,2,2,253,115,12,0,0,0,148,3,26,2,154,7,35, - 9,166,1,35,9,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,8,0,0,0,67,0, - 0,0,115,104,0,0,0,124,1,100,1,107,2,114,21,9, - 0,116,0,160,1,161,0,125,1,110,11,35,0,4,0,116, - 2,121,51,1,0,1,0,1,0,89,0,100,2,83,0,37, - 0,9,0,116,3,106,4,124,1,25,0,125,2,124,2,83, - 0,35,0,4,0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,11,0,0,0,78,41,7,114,19,0, - 0,0,114,83,0,0,0,218,17,70,105,108,101,78,111,116, - 70,111,117,110,100,69,114,114,111,114,114,16,0,0,0,114, - 81,1,0,0,218,8,75,101,121,69,114,114,111,114,114,85, - 1,0,0,41,3,114,222,0,0,0,114,66,0,0,0,114, - 83,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 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,70,5,0,0,115,36,0, - 0,0,8,8,2,1,10,1,2,128,12,1,6,3,2,128, - 2,1,10,1,4,4,2,128,12,253,10,1,12,1,4,1, - 2,128,2,253,2,250,115,24,0,0,0,133,4,10,0,138, - 7,20,7,150,5,29,0,157,17,49,7,178,1,49,7,179, - 1,20,7,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,4,0,0,0,67,0,0,0,115,138,0,0,0,116,0, - 124,2,100,1,131,2,114,27,116,1,160,2,124,2,161,1, - 155,0,100,2,157,2,125,3,116,3,160,4,124,3,116,5, - 161,2,1,0,124,2,160,6,124,1,161,1,92,2,125,4, - 125,5,110,21,116,1,160,2,124,2,161,1,155,0,100,3, - 157,2,125,3,116,3,160,4,124,3,116,5,161,2,1,0, - 124,2,160,7,124,1,161,1,125,4,103,0,125,5,124,4, - 100,0,117,1,114,58,116,1,160,8,124,1,124,4,161,2, - 83,0,116,1,160,9,124,1,100,0,161,2,125,6,124,5, - 124,6,95,10,124,6,83,0,41,4,78,114,162,0,0,0, - 122,53,46,102,105,110,100,95,115,112,101,99,40,41,32,110, - 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, - 103,32,98,97,99,107,32,116,111,32,102,105,110,100,95,108, - 111,97,100,101,114,40,41,122,53,46,102,105,110,100,95,115, - 112,101,99,40,41,32,110,111,116,32,102,111,117,110,100,59, - 32,102,97,108,108,105,110,103,32,98,97,99,107,32,116,111, - 32,102,105,110,100,95,109,111,100,117,108,101,40,41,41,11, - 114,154,0,0,0,114,160,0,0,0,90,12,95,111,98,106, - 101,99,116,95,110,97,109,101,114,100,0,0,0,114,101,0, - 0,0,114,163,0,0,0,114,162,0,0,0,114,230,0,0, - 0,114,225,0,0,0,114,208,0,0,0,114,203,0,0,0, - 41,7,114,222,0,0,0,114,164,0,0,0,114,83,1,0, - 0,114,167,0,0,0,114,165,0,0,0,114,166,0,0,0, - 114,211,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, - 116,95,115,112,101,99,92,5,0,0,115,26,0,0,0,10, - 4,16,1,12,2,16,1,16,2,12,2,10,1,4,1,8, - 1,12,1,12,1,6,1,4,1,114,10,0,0,0,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,5,0,0,0,67,0,0, - 0,115,166,0,0,0,103,0,125,4,124,2,68,0,93,67, - 125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,14, - 113,4,124,0,160,3,124,5,161,1,125,6,124,6,100,1, - 117,1,114,71,116,4,124,6,100,2,131,2,114,35,124,6, - 160,5,124,1,124,3,161,2,125,7,110,6,124,0,160,6, - 124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,46, - 113,4,124,7,106,7,100,1,117,1,114,55,124,7,2,0, - 1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,0, - 114,66,116,9,100,3,131,1,130,1,124,4,160,10,124,8, - 161,1,1,0,113,4,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,227,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,186,0,0, - 0,114,110,0,0,0,218,5,98,121,116,101,115,114,88,1, - 0,0,114,154,0,0,0,114,227,0,0,0,114,89,1,0, - 0,114,165,0,0,0,114,203,0,0,0,114,143,0,0,0, - 114,192,0,0,0,114,160,0,0,0,114,208,0,0,0,41, - 9,114,222,0,0,0,114,164,0,0,0,114,66,0,0,0, - 114,226,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,83,1,0, - 0,114,211,0,0,0,114,166,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,9,95,103,101,116, - 95,115,112,101,99,113,5,0,0,115,42,0,0,0,4,5, - 8,1,14,1,2,1,10,1,8,1,10,1,14,1,12,2, - 8,1,2,1,10,1,8,1,6,1,8,1,8,1,10,5, - 2,128,12,2,6,1,4,1,114,10,0,0,0,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, - 5,0,0,0,67,0,0,0,115,94,0,0,0,124,2,100, - 1,117,0,114,7,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, - 20,100,1,83,0,124,4,106,3,100,1,117,0,114,45,124, - 4,106,4,125,5,124,5,114,43,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,124,4,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, - 16,0,0,0,114,66,0,0,0,114,92,1,0,0,114,165, - 0,0,0,114,203,0,0,0,114,206,0,0,0,114,48,1, - 0,0,41,6,114,222,0,0,0,114,164,0,0,0,114,66, - 0,0,0,114,226,0,0,0,114,211,0,0,0,114,91,1, + 204,0,0,0,181,4,0,0,114,29,1,0,0,114,10,0, + 0,0,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,151,0,0,0,114,150,0,0, + 0,114,152,0,0,0,114,153,0,0,0,114,237,0,0,0, + 114,17,1,0,0,114,23,1,0,0,114,240,0,0,0,114, + 246,0,0,0,114,207,0,0,0,114,242,0,0,0,114,2, + 1,0,0,114,161,0,0,0,114,204,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,227,0,0,0,145,5,0,0,115,26,0,0,0,8, - 6,6,1,14,1,8,1,4,1,10,1,6,1,4,1,6, - 3,16,1,4,1,4,2,4,2,114,10,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0, - 160,1,100,1,116,2,161,2,1,0,124,0,160,3,124,1, - 124,2,161,2,125,3,124,3,100,2,117,0,114,18,100,2, - 83,0,124,3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100, - 101,114,46,102,105,110,100,95,109,111,100,117,108,101,40,41, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, - 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, - 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, - 51,46,49,50,59,32,117,115,101,32,102,105,110,100,95,115, - 112,101,99,40,41,32,105,110,115,116,101,97,100,78,114,228, - 0,0,0,114,229,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,230,0,0,0,169,5,0,0, - 115,14,0,0,0,6,8,2,2,4,254,12,3,8,1,4, - 1,6,1,114,10,0,0,0,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,0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124,0,105,0,124,1, - 164,1,142,1,83,0,41,4,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,78,41,3,90,18,105,109,112, - 111,114,116,108,105,98,46,109,101,116,97,100,97,116,97,114, - 93,1,0,0,218,18,102,105,110,100,95,100,105,115,116,114, - 105,98,117,116,105,111,110,115,41,3,114,145,0,0,0,114, - 146,0,0,0,114,93,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,94,1,0,0,185,5,0, - 0,115,4,0,0,0,12,10,16,1,114,10,0,0,0,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,114,70, - 0,0,0,114,231,0,0,0,41,14,114,151,0,0,0,114, - 150,0,0,0,114,152,0,0,0,114,153,0,0,0,114,234, - 0,0,0,114,79,1,0,0,114,85,1,0,0,114,235,0, - 0,0,114,88,1,0,0,114,89,1,0,0,114,92,1,0, - 0,114,227,0,0,0,114,230,0,0,0,114,94,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,78,1,0,0,43,5,0,0,115,36,0, - 0,0,8,0,4,2,2,2,10,1,2,9,10,1,2,12, - 10,1,2,21,10,1,2,20,12,1,2,31,12,1,2,23, - 12,1,2,15,14,1,114,10,0,0,0,114,78,1,0,0, - 99,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,6,0,0, - 0,7,0,0,0,115,112,0,0,0,103,0,125,3,124,2, - 68,0,93,16,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,4,124,3,124,0,95,1,124,1,112,27,100,3, - 124,0,95,2,116,3,124,0,106,2,131,1,115,43,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,3,0,0,0,51,0,0,0,115,24,0, - 0,0,129,0,124,0,93,7,125,1,124,1,136,0,102,2, - 86,0,1,0,113,2,100,0,83,0,114,70,0,0,0,114, - 7,0,0,0,114,44,1,0,0,169,1,114,165,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,9,0,0,0,214, - 5,0,0,115,4,0,0,0,6,128,18,0,114,10,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,98,0,0,0,114,131, - 0,0,0,78,41,11,114,192,0,0,0,218,8,95,108,111, - 97,100,101,114,115,114,66,0,0,0,114,87,0,0,0,114, - 68,0,0,0,114,19,0,0,0,114,83,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,144,0,0,0,114,66,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,213,0,0,0,114,7,0,0, - 0,114,96,1,0,0,114,8,0,0,0,114,237,0,0,0, - 208,5,0,0,115,20,0,0,0,4,4,12,1,26,1,6, - 1,10,2,10,1,18,1,6,1,8,1,12,1,114,10,0, - 0,0,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,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,131, - 0,0,0,78,41,1,114,98,1,0,0,114,22,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 79,1,0,0,224,5,0,0,114,82,0,0,0,114,10,0, - 0,0,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,4,0,0, - 0,67,0,0,0,115,54,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,124,0,160,3,124,1,161,1,125,2, - 124,2,100,2,117,0,114,19,100,2,103,0,102,2,83,0, - 124,2,106,4,124,2,106,5,112,25,103,0,102,2,83,0, - 41,3,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,122,101,70,105,108,101,70, - 105,110,100,101,114,46,102,105,110,100,95,108,111,97,100,101, - 114,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, - 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, - 78,41,6,114,100,0,0,0,114,101,0,0,0,114,102,0, - 0,0,114,227,0,0,0,114,165,0,0,0,114,203,0,0, - 0,41,3,114,144,0,0,0,114,164,0,0,0,114,211,0, + 0,114,31,1,0,0,134,4,0,0,115,24,0,0,0,8, + 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, + 6,8,4,2,4,14,1,114,10,0,0,0,114,31,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100, + 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, + 24,83,0,41,25,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, + 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,70, + 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, + 97,116,104,114,137,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,12,95, + 112,97,116,104,95,102,105,110,100,101,114,169,4,114,144,0, + 0,0,114,142,0,0,0,114,66,0,0,0,90,11,112,97, + 116,104,95,102,105,110,100,101,114,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,237,0,0,0,194,4,0, + 0,115,8,0,0,0,6,1,6,1,14,1,10,1,114,10, + 0,0,0,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,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,15, + 100,3,83,0,124,1,100,4,102,2,83,0,41,6,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,98, + 0,0,0,114,11,0,0,0,41,2,114,16,0,0,0,114, + 66,0,0,0,90,8,95,95,112,97,116,104,95,95,78,41, + 2,114,49,1,0,0,114,105,0,0,0,41,4,114,144,0, + 0,0,114,41,1,0,0,218,3,100,111,116,90,2,109,101, + 114,7,0,0,0,114,7,0,0,0,114,8,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,200,4,0,0,115,8,0,0, + 0,18,2,8,1,4,2,8,3,114,10,0,0,0,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,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,70,0,0, + 0,41,4,114,56,1,0,0,114,156,0,0,0,114,16,0, + 0,0,218,7,109,111,100,117,108,101,115,41,3,114,144,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,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,51,1,0,0,210,4,0,0,115,4, + 0,0,0,12,1,16,1,114,10,0,0,0,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,4,0,0,0,67,0, + 0,0,115,80,0,0,0,116,0,124,0,160,1,161,0,131, + 1,125,1,124,1,124,0,106,2,107,3,114,37,124,0,160, + 3,124,0,106,4,124,1,161,2,125,2,124,2,100,0,117, + 1,114,34,124,2,106,5,100,0,117,0,114,34,124,2,106, + 6,114,34,124,2,106,6,124,0,95,7,124,1,124,0,95, + 2,124,0,106,7,83,0,114,70,0,0,0,41,8,114,137, + 0,0,0,114,51,1,0,0,114,52,1,0,0,114,53,1, + 0,0,114,49,1,0,0,114,165,0,0,0,114,203,0,0, + 0,114,50,1,0,0,41,3,114,144,0,0,0,90,11,112, + 97,114,101,110,116,95,112,97,116,104,114,211,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,12, + 95,114,101,99,97,108,99,117,108,97,116,101,214,4,0,0, + 115,16,0,0,0,12,2,10,1,14,1,18,3,6,1,8, + 1,6,1,6,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0,243,12,0,0, + 0,116,0,124,0,160,1,161,0,131,1,83,0,114,70,0, + 0,0,41,2,218,4,105,116,101,114,114,58,1,0,0,114, + 22,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,8,95,95,105,116,101,114,95,95,227,4,0, + 0,243,2,0,0,0,12,1,114,10,0,0,0,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,67,0,0,0,115,12,0,0,0, + 124,0,160,0,161,0,124,1,25,0,83,0,114,70,0,0, + 0,169,1,114,58,1,0,0,41,2,114,144,0,0,0,218, + 5,105,110,100,101,120,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,11,95,95,103,101,116,105,116,101,109, + 95,95,230,4,0,0,114,62,1,0,0,114,10,0,0,0, + 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,67,0,0, + 0,115,14,0,0,0,124,2,124,0,106,0,124,1,60,0, + 100,0,83,0,114,70,0,0,0,41,1,114,50,1,0,0, + 41,3,114,144,0,0,0,114,64,1,0,0,114,66,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,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,14,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0,114,59, + 1,0,0,114,70,0,0,0,41,2,114,4,0,0,0,114, + 58,1,0,0,114,22,1,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,7,95,95,108,101,110,95, + 95,236,4,0,0,114,62,1,0,0,114,10,0,0,0,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,3,0,0,0,67,0,0,0,243,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,90,0,0,0,114,50,1, + 0,0,114,22,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,8,95,95,114,101,112,114,95,95, + 239,4,0,0,114,62,1,0,0,114,10,0,0,0,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,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,70,0, + 0,0,114,63,1,0,0,169,2,114,144,0,0,0,218,4, + 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, + 95,242,4,0,0,114,62,1,0,0,114,10,0,0,0,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,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,70,0,0,0,41,2,114,50,1, + 0,0,114,62,0,0,0,114,70,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,62,0,0,0, + 245,4,0,0,243,2,0,0,0,16,1,114,10,0,0,0, + 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,15,114,151,0,0,0,114, + 150,0,0,0,114,152,0,0,0,114,153,0,0,0,114,237, + 0,0,0,114,56,1,0,0,114,51,1,0,0,114,58,1, + 0,0,114,61,1,0,0,114,65,1,0,0,114,66,1,0, + 0,114,67,1,0,0,114,69,1,0,0,114,72,1,0,0, + 114,62,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,48,1,0,0,187,4, + 0,0,115,26,0,0,0,8,0,4,1,8,6,8,6,8, + 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, + 3,114,10,0,0,0,114,48,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, + 115,88,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,100,18,132,0,90,12,100,19,83,0,41,20,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,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,70,0, + 0,0,41,2,114,48,1,0,0,114,50,1,0,0,114,54, + 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,237,0,0,0,251,4,0,0,115,2,0,0,0, + 18,1,114,10,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,115,24,0,0,0,116,0,160,1, + 100,1,116,2,161,2,1,0,100,2,160,3,124,0,106,4, + 161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,100,0, + 0,0,114,101,0,0,0,114,102,0,0,0,114,90,0,0, + 0,114,151,0,0,0,41,1,114,245,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,11,109,111, + 100,117,108,101,95,114,101,112,114,254,4,0,0,115,8,0, + 0,0,6,7,2,1,4,255,12,2,114,10,0,0,0,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,1,0,0,0,67,0, + 0,0,114,24,0,0,0,41,2,78,84,114,7,0,0,0, + 114,248,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,207,0,0,0,9,5,0,0,243,2,0, + 0,0,4,1,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0, + 41,2,78,114,11,0,0,0,114,7,0,0,0,114,248,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,162,0,0,0,230,5,0,0,115,14,0,0,0,6, - 7,2,2,4,254,10,3,8,1,8,1,16,1,114,10,0, - 0,0,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,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,202,0,0,0,41,1,114,214,0,0,0,41,7,114, - 144,0,0,0,114,212,0,0,0,114,164,0,0,0,114,66, - 0,0,0,90,4,115,109,115,108,114,226,0,0,0,114,165, + 0,114,2,1,0,0,12,5,0,0,114,76,1,0,0,114, + 10,0,0,0,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,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,11, + 0,0,0,122,8,60,115,116,114,105,110,103,62,114,244,0, + 0,0,84,41,1,114,4,1,0,0,41,1,114,5,1,0, + 0,114,248,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,242,0,0,0,15,5,0,0,114,73, + 1,0,0,114,10,0,0,0,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, + 1,0,0,0,67,0,0,0,114,24,0,0,0,114,238,0, + 0,0,114,7,0,0,0,114,239,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,240,0,0,0, + 18,5,0,0,114,241,0,0,0,114,10,0,0,0,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,1,0,0,0,67, + 0,0,0,115,4,0,0,0,100,0,83,0,114,70,0,0, + 0,114,7,0,0,0,114,43,1,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,246,0,0,0,21, + 5,0,0,114,76,1,0,0,114,10,0,0,0,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,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, + 3,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,78,41,4, + 114,160,0,0,0,114,174,0,0,0,114,50,1,0,0,114, + 247,0,0,0,114,248,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,249,0,0,0,24,5,0, + 0,115,8,0,0,0,6,7,4,1,4,255,12,3,114,10, + 0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,67,0,0,0,115,22,0,0,0,100,1,100,2,108, + 0,109,1,125,2,1,0,124,2,124,0,106,2,131,1,83, + 0,41,3,78,114,0,0,0,0,41,1,218,15,78,97,109, + 101,115,112,97,99,101,82,101,97,100,101,114,41,3,114,33, + 1,0,0,114,77,1,0,0,114,50,1,0,0,41,3,114, + 144,0,0,0,114,245,0,0,0,114,77,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,34,1, + 0,0,36,5,0,0,115,4,0,0,0,12,1,10,1,114, + 10,0,0,0,122,36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,151,0, + 0,0,114,150,0,0,0,114,152,0,0,0,114,237,0,0, + 0,114,234,0,0,0,114,75,1,0,0,114,207,0,0,0, + 114,2,1,0,0,114,242,0,0,0,114,240,0,0,0,114, + 246,0,0,0,114,249,0,0,0,114,34,1,0,0,114,7, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,92,1,0,0,245,5,0,0,115,8,0,0,0, - 10,1,8,1,2,1,6,255,114,10,0,0,0,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,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, - 9,0,116,1,124,0,106,2,112,17,116,3,160,4,161,0, - 131,1,106,5,125,5,110,12,35,0,4,0,116,6,121,190, - 1,0,1,0,1,0,100,4,125,5,89,0,110,1,37,0, - 124,5,124,0,106,7,107,3,114,45,124,0,160,8,161,0, - 1,0,124,5,124,0,95,7,116,9,131,0,114,56,124,0, - 106,10,125,6,124,4,160,11,161,0,125,7,110,5,124,0, - 106,12,125,6,124,4,125,7,124,7,124,6,118,0,114,108, - 116,13,124,0,106,2,124,4,131,2,125,8,124,0,106,14, - 68,0,93,29,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,103,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,74,116,17, - 124,8,131,1,125,3,124,0,106,14,68,0,93,55,92,2, - 125,9,125,10,9,0,116,13,124,0,106,2,124,4,124,9, - 23,0,131,2,125,12,110,12,35,0,4,0,116,18,121,189, - 1,0,1,0,1,0,89,0,1,0,100,6,83,0,37,0, - 116,19,160,20,100,7,124,12,100,3,100,8,166,3,1,0, - 124,7,124,9,23,0,124,6,118,0,114,166,116,15,124,12, - 131,1,114,166,124,0,160,16,124,10,124,1,124,12,100,6, - 124,2,161,5,2,0,1,0,83,0,113,111,124,3,114,187, - 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,119,0,119,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,98,0,0,0,114,45,0,0,0,114,131,0,0,0,114, - 237,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,105,0,0,0,114, - 76,0,0,0,114,66,0,0,0,114,19,0,0,0,114,83, - 0,0,0,114,36,1,0,0,114,77,0,0,0,114,98,1, - 0,0,218,11,95,102,105,108,108,95,99,97,99,104,101,114, - 22,0,0,0,114,101,1,0,0,114,132,0,0,0,114,100, - 1,0,0,114,68,0,0,0,114,97,1,0,0,114,81,0, - 0,0,114,92,1,0,0,114,84,0,0,0,114,112,0,0, - 0,114,160,0,0,0,114,174,0,0,0,114,208,0,0,0, - 114,203,0,0,0,41,14,114,144,0,0,0,114,164,0,0, - 0,114,226,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,194,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,45,1,0,0,114,212,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,211,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,227, - 0,0,0,250,5,0,0,115,94,0,0,0,4,5,14,1, - 2,1,22,1,2,128,12,1,8,1,2,128,10,1,8,1, - 6,1,6,2,6,1,10,1,6,2,4,1,8,2,12,1, - 14,1,8,1,10,1,8,1,24,1,2,255,8,5,14,2, - 2,1,18,1,2,128,12,1,8,1,2,128,16,1,12,1, - 8,1,10,1,4,1,8,255,2,128,4,2,12,1,12,1, - 8,1,4,1,4,1,2,244,2,228,115,31,0,0,0,138, - 10,21,0,149,9,32,7,193,52,8,65,61,2,193,61,7, - 66,8,9,194,61,1,66,8,9,194,62,1,32,7,122,20, + 0,0,114,74,1,0,0,250,4,0,0,115,22,0,0,0, + 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, + 8,3,8,3,12,12,114,10,0,0,0,114,74,1,0,0, + 99,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,7, + 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, + 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, + 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, + 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, + 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, + 41,21,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,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, + 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, + 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, + 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, + 1,0,113,7,100,1,83,0,41,3,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,41,6,218, + 4,108,105,115,116,114,16,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,154,0,0,0,114,79,1,0,0, + 41,2,114,142,0,0,0,218,6,102,105,110,100,101,114,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,79, + 1,0,0,47,5,0,0,115,14,0,0,0,22,4,8,1, + 10,1,10,1,8,1,2,128,4,252,114,10,0,0,0,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,1,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,67,0, + 0,0,115,78,0,0,0,116,0,106,1,100,1,117,1,114, + 14,116,0,106,1,115,14,116,2,160,3,100,2,116,4,161, + 2,1,0,116,0,106,1,68,0,93,18,125,1,9,0,124, + 1,124,0,131,1,2,0,1,0,83,0,35,0,4,0,116, + 5,121,38,1,0,1,0,1,0,89,0,113,17,37,0,100, + 1,83,0,119,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,16,0,0,0,218,10,112,97,116,104,95,104, + 111,111,107,115,114,100,0,0,0,114,101,0,0,0,114,163, + 0,0,0,114,143,0,0,0,41,2,114,66,0,0,0,90, + 4,104,111,111,107,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, + 115,57,5,0,0,115,22,0,0,0,16,3,12,1,10,1, + 2,1,12,1,2,128,12,1,4,1,2,128,4,2,2,253, + 115,12,0,0,0,148,3,26,2,154,7,35,9,166,1,35, + 9,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,8,0,0,0,67,0,0,0,115,104, + 0,0,0,124,1,100,1,107,2,114,21,9,0,116,0,160, + 1,161,0,125,1,110,11,35,0,4,0,116,2,121,51,1, + 0,1,0,1,0,89,0,100,2,83,0,37,0,9,0,116, + 3,106,4,124,1,25,0,125,2,124,2,83,0,35,0,4, + 0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,11,0,0,0,78,41,7,114,19,0,0,0,114,83, + 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, + 100,69,114,114,111,114,114,16,0,0,0,114,81,1,0,0, + 218,8,75,101,121,69,114,114,111,114,114,85,1,0,0,41, + 3,114,222,0,0,0,114,66,0,0,0,114,83,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,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,70,5,0,0,115,36,0,0,0,8,8, + 2,1,10,1,2,128,12,1,6,3,2,128,2,1,10,1, + 4,4,2,128,12,253,10,1,12,1,4,1,2,128,2,253, + 2,250,115,24,0,0,0,133,4,10,0,138,7,20,7,150, + 5,29,0,157,17,49,7,178,1,49,7,179,1,20,7,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,4,0,0, + 0,67,0,0,0,115,138,0,0,0,116,0,124,2,100,1, + 131,2,114,27,116,1,160,2,124,2,161,1,155,0,100,2, + 157,2,125,3,116,3,160,4,124,3,116,5,161,2,1,0, + 124,2,160,6,124,1,161,1,92,2,125,4,125,5,110,21, + 116,1,160,2,124,2,161,1,155,0,100,3,157,2,125,3, + 116,3,160,4,124,3,116,5,161,2,1,0,124,2,160,7, + 124,1,161,1,125,4,103,0,125,5,124,4,100,0,117,1, + 114,58,116,1,160,8,124,1,124,4,161,2,83,0,116,1, + 160,9,124,1,100,0,161,2,125,6,124,5,124,6,95,10, + 124,6,83,0,41,4,78,114,162,0,0,0,122,53,46,102, + 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, + 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,116,111,32,102,105,110,100,95,108,111,97,100,101, + 114,40,41,122,53,46,102,105,110,100,95,115,112,101,99,40, + 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, + 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, + 100,95,109,111,100,117,108,101,40,41,41,11,114,154,0,0, + 0,114,160,0,0,0,90,12,95,111,98,106,101,99,116,95, + 110,97,109,101,114,100,0,0,0,114,101,0,0,0,114,163, + 0,0,0,114,162,0,0,0,114,230,0,0,0,114,225,0, + 0,0,114,208,0,0,0,114,203,0,0,0,41,7,114,222, + 0,0,0,114,164,0,0,0,114,83,1,0,0,114,167,0, + 0,0,114,165,0,0,0,114,166,0,0,0,114,211,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,16,95,108,101,103,97,99,121,95,103,101,116,95,115,112, + 101,99,92,5,0,0,115,26,0,0,0,10,4,16,1,12, + 2,16,1,16,2,12,2,10,1,4,1,8,1,12,1,12, + 1,6,1,4,1,114,10,0,0,0,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,5,0,0,0,67,0,0,0,115,166,0, + 0,0,103,0,125,4,124,2,68,0,93,67,125,5,116,0, + 124,5,116,1,116,2,102,2,131,2,115,14,113,4,124,0, + 160,3,124,5,161,1,125,6,124,6,100,1,117,1,114,71, + 116,4,124,6,100,2,131,2,114,35,124,6,160,5,124,1, + 124,3,161,2,125,7,110,6,124,0,160,6,124,1,124,6, + 161,2,125,7,124,7,100,1,117,0,114,46,113,4,124,7, + 106,7,100,1,117,1,114,55,124,7,2,0,1,0,83,0, + 124,7,106,8,125,8,124,8,100,1,117,0,114,66,116,9, + 100,3,131,1,130,1,124,4,160,10,124,8,161,1,1,0, + 113,4,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,227,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,186,0,0,0,114,110,0, + 0,0,218,5,98,121,116,101,115,114,88,1,0,0,114,154, + 0,0,0,114,227,0,0,0,114,89,1,0,0,114,165,0, + 0,0,114,203,0,0,0,114,143,0,0,0,114,192,0,0, + 0,114,160,0,0,0,114,208,0,0,0,41,9,114,222,0, + 0,0,114,164,0,0,0,114,66,0,0,0,114,226,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,83,1,0,0,114,211,0, + 0,0,114,166,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,9,95,103,101,116,95,115,112,101, + 99,113,5,0,0,115,42,0,0,0,4,5,8,1,14,1, + 2,1,10,1,8,1,10,1,14,1,12,2,8,1,2,1, + 10,1,8,1,6,1,8,1,8,1,10,5,2,128,12,2, + 6,1,4,1,114,10,0,0,0,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,5,0,0,0, + 67,0,0,0,115,94,0,0,0,124,2,100,1,117,0,114, + 7,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,20,100,1,83, + 0,124,4,106,3,100,1,117,0,114,45,124,4,106,4,125, + 5,124,5,114,43,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,124,4,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,16,0,0,0, + 114,66,0,0,0,114,92,1,0,0,114,165,0,0,0,114, + 203,0,0,0,114,206,0,0,0,114,48,1,0,0,41,6, + 114,222,0,0,0,114,164,0,0,0,114,66,0,0,0,114, + 226,0,0,0,114,211,0,0,0,114,91,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,227,0, + 0,0,145,5,0,0,115,26,0,0,0,8,6,6,1,14, + 1,8,1,4,1,10,1,6,1,4,1,6,3,16,1,4, + 1,4,2,4,2,114,10,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, + 125,3,124,3,100,2,117,0,114,18,100,2,83,0,124,3, + 106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102, + 105,110,100,95,109,111,100,117,108,101,40,41,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, + 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, + 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, + 59,32,117,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,78,114,228,0,0,0,114, + 229,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,230,0,0,0,169,5,0,0,115,14,0,0, + 0,6,8,2,2,4,254,12,3,8,1,4,1,6,1,114, + 10,0,0,0,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,0,0,0, + 0,0,0,0,0,0,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,2, + 1,0,124,2,106,2,124,0,105,0,124,1,164,1,142,1, + 83,0,41,4,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,78,41,3,90,18,105,109,112,111,114,116,108, + 105,98,46,109,101,116,97,100,97,116,97,114,93,1,0,0, + 218,18,102,105,110,100,95,100,105,115,116,114,105,98,117,116, + 105,111,110,115,41,3,114,145,0,0,0,114,146,0,0,0, + 114,93,1,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,94,1,0,0,185,5,0,0,115,4,0, + 0,0,12,10,16,1,114,10,0,0,0,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,114,70,0,0,0,114, + 231,0,0,0,41,14,114,151,0,0,0,114,150,0,0,0, + 114,152,0,0,0,114,153,0,0,0,114,234,0,0,0,114, + 79,1,0,0,114,85,1,0,0,114,235,0,0,0,114,88, + 1,0,0,114,89,1,0,0,114,92,1,0,0,114,227,0, + 0,0,114,230,0,0,0,114,94,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,78,1,0,0,43,5,0,0,115,36,0,0,0,8,0, + 4,2,2,2,10,1,2,9,10,1,2,12,10,1,2,21, + 10,1,2,20,12,1,2,31,12,1,2,23,12,1,2,15, + 14,1,114,10,0,0,0,114,78,1,0,0,99,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,6,0,0,0,7,0,0, + 0,115,112,0,0,0,103,0,125,3,124,2,68,0,93,16, + 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,4, + 124,3,124,0,95,1,124,1,112,27,100,3,124,0,95,2, + 116,3,124,0,106,2,131,1,115,43,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,3,0,0,0,51,0,0,0,115,24,0,0,0,129,0, + 124,0,93,7,125,1,124,1,136,0,102,2,86,0,1,0, + 113,2,100,0,83,0,114,70,0,0,0,114,7,0,0,0, + 114,44,1,0,0,169,1,114,165,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,9,0,0,0,214,5,0,0,115, + 4,0,0,0,6,128,18,0,114,10,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,98,0,0,0,114,131,0,0,0,78, + 41,11,114,192,0,0,0,218,8,95,108,111,97,100,101,114, + 115,114,66,0,0,0,114,87,0,0,0,114,68,0,0,0, + 114,19,0,0,0,114,83,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,144,0,0,0,114,66,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,213,0,0,0,114,7,0,0,0,114,96,1, + 0,0,114,8,0,0,0,114,237,0,0,0,208,5,0,0, + 115,20,0,0,0,4,4,12,1,26,1,6,1,10,2,10, + 1,18,1,6,1,8,1,12,1,114,10,0,0,0,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, + 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,131,0,0,0,78, + 41,1,114,98,1,0,0,114,22,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,79,1,0,0, + 224,5,0,0,114,82,0,0,0,114,10,0,0,0,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,4,0,0,0,67,0,0, + 0,115,54,0,0,0,116,0,160,1,100,1,116,2,161,2, + 1,0,124,0,160,3,124,1,161,1,125,2,124,2,100,2, + 117,0,114,19,100,2,103,0,102,2,83,0,124,2,106,4, + 124,2,106,5,112,25,103,0,102,2,83,0,41,3,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,122,101,70,105,108,101,70,105,110,100,101, + 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,41,6,114, + 100,0,0,0,114,101,0,0,0,114,102,0,0,0,114,227, + 0,0,0,114,165,0,0,0,114,203,0,0,0,41,3,114, + 144,0,0,0,114,164,0,0,0,114,211,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,162,0, + 0,0,230,5,0,0,115,14,0,0,0,6,7,2,2,4, + 254,10,3,8,1,8,1,16,1,114,10,0,0,0,122,22, 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,10,0,0,0,67,0,0,0,115,194,0,0,0,124,0, - 106,0,125,1,9,0,116,1,160,2,124,1,112,11,116,1, - 160,3,161,0,161,1,125,2,110,15,35,0,4,0,116,4, - 116,5,116,6,102,3,121,96,1,0,1,0,1,0,103,0, - 125,2,89,0,110,1,37,0,116,7,106,8,160,9,100,1, - 161,1,115,41,116,10,124,2,131,1,124,0,95,11,110,37, - 116,10,131,0,125,3,124,2,68,0,93,28,125,4,124,4, - 160,12,100,2,161,1,92,3,125,5,125,6,125,7,124,6, - 114,67,100,3,160,13,124,5,124,7,160,14,161,0,161,2, - 125,8,110,2,124,5,125,8,124,3,160,15,124,8,161,1, - 1,0,113,46,124,3,124,0,95,11,116,7,106,8,160,9, - 116,16,161,1,114,94,100,4,100,5,132,0,124,2,68,0, - 131,1,124,0,95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,98,0, - 0,0,114,89,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,83,0,0,0,115,20,0,0, - 0,104,0,124,0,93,6,125,1,124,1,160,0,161,0,146, - 2,113,2,83,0,114,7,0,0,0,41,1,114,132,0,0, - 0,41,2,114,5,0,0,0,90,2,102,110,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,14,0,0,0, - 74,6,0,0,115,2,0,0,0,20,0,114,10,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,66, - 0,0,0,114,19,0,0,0,90,7,108,105,115,116,100,105, - 114,114,83,0,0,0,114,86,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,16,0,0,0,114,26,0,0,0,114,27,0,0,0,114, - 99,1,0,0,114,100,1,0,0,114,127,0,0,0,114,90, - 0,0,0,114,132,0,0,0,218,3,97,100,100,114,28,0, - 0,0,114,101,1,0,0,41,9,114,144,0,0,0,114,66, - 0,0,0,90,8,99,111,110,116,101,110,116,115,90,21,108, - 111,119,101,114,95,115,117,102,102,105,120,95,99,111,110,116, - 101,110,116,115,114,71,1,0,0,114,142,0,0,0,114,55, - 1,0,0,114,45,1,0,0,90,8,110,101,119,95,110,97, - 109,101,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,103,1,0,0,45,6,0,0,115,42,0,0,0,6, - 2,2,1,20,1,2,128,18,1,8,3,2,128,12,3,12, - 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, - 1,12,1,20,1,4,255,2,233,115,13,0,0,0,132,9, - 14,0,142,12,28,7,193,32,1,28,7,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,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, - 4,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,4,0,0,0,19,0,0,0,115, - 36,0,0,0,116,0,124,0,131,1,115,10,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,4,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,72,0,0,0,78,41, - 2,114,84,0,0,0,114,143,0,0,0,114,72,0,0,0, - 169,2,114,222,0,0,0,114,102,1,0,0,114,7,0,0, - 0,114,8,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, - 86,6,0,0,115,6,0,0,0,8,2,12,1,16,1,114, - 10,0,0,0,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,78,114,7,0, - 0,0,41,3,114,222,0,0,0,114,102,1,0,0,114,108, - 1,0,0,114,7,0,0,0,114,107,1,0,0,114,8,0, - 0,0,218,9,112,97,116,104,95,104,111,111,107,76,6,0, - 0,115,4,0,0,0,14,10,4,6,114,10,0,0,0,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,3,0,0,0,67,0,0,0,114,68,1,0,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,90,0,0,0,114,66,0,0,0, - 114,22,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,69,1,0,0,94,6,0,0,114,62,1, - 0,0,114,10,0,0,0,122,19,70,105,108,101,70,105,110, - 100,101,114,46,95,95,114,101,112,114,95,95,114,70,0,0, - 0,41,15,114,151,0,0,0,114,150,0,0,0,114,152,0, - 0,0,114,153,0,0,0,114,237,0,0,0,114,79,1,0, - 0,114,168,0,0,0,114,230,0,0,0,114,162,0,0,0, - 114,92,1,0,0,114,227,0,0,0,114,103,1,0,0,114, - 235,0,0,0,114,109,1,0,0,114,69,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,95,1,0,0,199,5,0,0,115,24,0,0,0, - 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, - 8,51,2,31,10,1,12,17,114,10,0,0,0,114,95,1, - 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15, - 124,2,124,3,107,2,114,28,116,2,124,1,124,2,131,2, - 125,4,110,5,116,3,124,1,124,2,131,2,125,4,124,5, - 115,42,116,4,124,1,124,2,124,4,100,3,141,3,125,5, - 9,0,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,100,0,83,0,35,0,4,0,116,5,121,72,1,0, - 1,0,1,0,89,0,100,0,83,0,37,0,119,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,96,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,165,0,0,0,114,42, - 1,0,0,114,35,1,0,0,114,214,0,0,0,218,9,69, - 120,99,101,112,116,105,111,110,41,6,90,2,110,115,114,142, - 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,165,0,0,0,114,211,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,14,95,102,105,120,95,117,112,95,109,111,100,117,108, - 101,100,6,0,0,115,40,0,0,0,10,2,10,1,4,1, - 4,1,8,1,8,1,12,1,10,2,4,1,14,1,2,1, - 8,1,8,1,8,1,12,1,2,128,12,1,6,2,2,128, - 2,254,115,15,0,0,0,171,16,61,0,189,7,65,7,7, - 193,8,1,65,7,7,114,114,1,0,0,99,0,0,0,0, - 0,0,0,0,0,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,102,2,125,1,116,5,116,6,102,2,125, - 2,124,0,124,1,124,2,103,3,83,0,41,2,122,95,82, - 101,116,117,114,110,115,32,97,32,108,105,115,116,32,111,102, - 32,102,105,108,101,45,98,97,115,101,100,32,109,111,100,117, - 108,101,32,108,111,97,100,101,114,115,46,10,10,32,32,32, - 32,69,97,99,104,32,105,116,101,109,32,105,115,32,97,32, - 116,117,112,108,101,32,40,108,111,97,100,101,114,44,32,115, - 117,102,102,105,120,101,115,41,46,10,32,32,32,32,78,41, - 7,114,31,1,0,0,114,188,0,0,0,218,18,101,120,116, - 101,110,115,105,111,110,95,115,117,102,102,105,120,101,115,114, - 35,1,0,0,114,128,0,0,0,114,42,1,0,0,114,114, - 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,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,209,0,0,0,123,6,0,0,115,8,0,0,0, - 12,5,8,1,8,1,10,1,114,10,0,0,0,114,209,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,67,0,0,0,115,8,0,0,0,124,0,97,0, - 100,0,83,0,114,70,0,0,0,41,1,114,160,0,0,0, - 41,1,218,17,95,98,111,111,116,115,116,114,97,112,95,109, - 111,100,117,108,101,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,21,95,115,101,116,95,98,111,111,116,115, - 116,114,97,112,95,109,111,100,117,108,101,134,6,0,0,115, - 2,0,0,0,8,2,114,10,0,0,0,114,117,1,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,50,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,117,1,0, - 0,114,209,0,0,0,114,16,0,0,0,114,84,1,0,0, - 114,192,0,0,0,114,95,1,0,0,114,109,1,0,0,218, - 9,109,101,116,97,95,112,97,116,104,114,62,0,0,0,114, - 78,1,0,0,41,2,114,116,1,0,0,90,17,115,117,112, - 112,111,114,116,101,100,95,108,111,97,100,101,114,115,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,8,95, - 105,110,115,116,97,108,108,139,6,0,0,115,8,0,0,0, - 8,2,6,1,20,1,16,1,114,10,0,0,0,114,119,1, - 0,0,41,1,114,88,0,0,0,114,70,0,0,0,41,3, - 78,78,78,41,2,114,0,0,0,0,114,0,0,0,0,41, - 1,84,41,85,114,153,0,0,0,114,160,0,0,0,114,188, - 0,0,0,114,92,0,0,0,114,16,0,0,0,114,100,0, - 0,0,114,185,0,0,0,114,26,0,0,0,114,232,0,0, - 0,90,2,110,116,114,19,0,0,0,114,216,0,0,0,90, - 5,112,111,115,105,120,114,51,0,0,0,218,3,97,108,108, - 114,60,0,0,0,114,137,0,0,0,114,58,0,0,0,114, - 63,0,0,0,90,20,95,112,97,116,104,115,101,112,115,95, - 119,105,116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0, - 114,22,0,0,0,114,37,0,0,0,114,43,0,0,0,114, - 46,0,0,0,114,68,0,0,0,114,75,0,0,0,114,76, - 0,0,0,114,80,0,0,0,114,81,0,0,0,114,84,0, - 0,0,114,87,0,0,0,114,96,0,0,0,218,4,116,121, - 112,101,218,8,95,95,99,111,100,101,95,95,114,187,0,0, - 0,114,35,0,0,0,114,173,0,0,0,114,34,0,0,0, - 114,40,0,0,0,114,9,1,0,0,114,117,0,0,0,114, - 113,0,0,0,114,128,0,0,0,114,62,0,0,0,114,115, - 1,0,0,114,233,0,0,0,114,114,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,122,0,0,0,114,129,0,0,0,114,136,0, - 0,0,114,138,0,0,0,114,140,0,0,0,114,161,0,0, - 0,114,168,0,0,0,114,177,0,0,0,114,181,0,0,0, - 114,183,0,0,0,114,190,0,0,0,114,195,0,0,0,114, - 196,0,0,0,114,201,0,0,0,218,6,111,98,106,101,99, - 116,114,210,0,0,0,114,214,0,0,0,114,215,0,0,0, - 114,236,0,0,0,114,250,0,0,0,114,12,1,0,0,114, - 35,1,0,0,114,42,1,0,0,114,31,1,0,0,114,48, - 1,0,0,114,74,1,0,0,114,78,1,0,0,114,95,1, - 0,0,114,114,1,0,0,114,209,0,0,0,114,117,1,0, - 0,114,119,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,8,60,109,111,100, - 117,108,101,62,1,0,0,0,115,180,0,0,0,4,0,4, - 22,8,3,8,1,8,1,8,1,8,1,10,3,4,1,8, - 1,10,1,8,2,4,3,10,1,6,2,22,2,8,1,8, - 1,10,1,14,1,4,4,4,1,2,1,2,1,4,255,8, - 4,6,16,8,3,8,5,8,5,4,6,10,1,8,30,8, - 6,8,8,8,10,8,9,8,5,4,7,10,1,8,8,10, - 5,10,22,0,127,16,33,12,1,4,2,4,1,6,2,4, - 1,10,1,8,2,6,2,8,2,16,2,8,71,8,40,8, - 19,8,12,8,12,8,31,8,20,8,33,8,28,10,24,10, - 13,10,10,8,11,6,14,4,3,2,1,12,255,14,73,14, - 67,16,30,0,127,14,17,18,50,18,45,18,25,14,53,14, - 63,14,49,0,127,14,29,0,127,10,30,8,23,8,11,12, - 5,114,10,0,0,0, + 108,111,97,100,101,114,99,6,0,0,0,0,0,0,0,0, + 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,202,0, + 0,0,41,1,114,214,0,0,0,41,7,114,144,0,0,0, + 114,212,0,0,0,114,164,0,0,0,114,66,0,0,0,90, + 4,115,109,115,108,114,226,0,0,0,114,165,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,92, + 1,0,0,245,5,0,0,115,8,0,0,0,10,1,8,1, + 2,1,6,255,114,10,0,0,0,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,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,9,0,116,1, + 124,0,106,2,112,17,116,3,160,4,161,0,131,1,106,5, + 125,5,110,12,35,0,4,0,116,6,121,190,1,0,1,0, + 1,0,100,4,125,5,89,0,110,1,37,0,124,5,124,0, + 106,7,107,3,114,45,124,0,160,8,161,0,1,0,124,5, + 124,0,95,7,116,9,131,0,114,56,124,0,106,10,125,6, + 124,4,160,11,161,0,125,7,110,5,124,0,106,12,125,6, + 124,4,125,7,124,7,124,6,118,0,114,108,116,13,124,0, + 106,2,124,4,131,2,125,8,124,0,106,14,68,0,93,29, + 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,103, + 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,74,116,17,124,8,131,1, + 125,3,124,0,106,14,68,0,93,55,92,2,125,9,125,10, + 9,0,116,13,124,0,106,2,124,4,124,9,23,0,131,2, + 125,12,110,12,35,0,4,0,116,18,121,189,1,0,1,0, + 1,0,89,0,1,0,100,6,83,0,37,0,116,19,160,20, + 100,7,124,12,100,3,100,8,166,3,1,0,124,7,124,9, + 23,0,124,6,118,0,114,166,116,15,124,12,131,1,114,166, + 124,0,160,16,124,10,124,1,124,12,100,6,124,2,161,5, + 2,0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,98,0,0, + 0,114,45,0,0,0,114,131,0,0,0,114,237,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,105,0,0,0,114,76,0,0,0, + 114,66,0,0,0,114,19,0,0,0,114,83,0,0,0,114, + 36,1,0,0,114,77,0,0,0,114,98,1,0,0,218,11, + 95,102,105,108,108,95,99,97,99,104,101,114,22,0,0,0, + 114,101,1,0,0,114,132,0,0,0,114,100,1,0,0,114, + 68,0,0,0,114,97,1,0,0,114,81,0,0,0,114,92, + 1,0,0,114,84,0,0,0,114,112,0,0,0,114,160,0, + 0,0,114,174,0,0,0,114,208,0,0,0,114,203,0,0, + 0,41,14,114,144,0,0,0,114,164,0,0,0,114,226,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,194,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,45,1,0,0,114,212,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,211,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,227,0,0,0,250, + 5,0,0,115,94,0,0,0,4,5,14,1,2,1,22,1, + 2,128,12,1,8,1,2,128,10,1,8,1,6,1,6,2, + 6,1,10,1,6,2,4,1,8,2,12,1,14,1,8,1, + 10,1,8,1,24,1,2,255,8,5,14,2,2,1,18,1, + 2,128,12,1,8,1,2,128,16,1,12,1,8,1,10,1, + 4,1,8,255,2,128,4,2,12,1,12,1,8,1,4,1, + 4,1,2,244,2,228,115,31,0,0,0,138,10,21,0,149, + 9,32,7,193,52,8,65,61,2,193,61,7,66,8,9,194, + 61,1,66,8,9,194,62,1,32,7,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,10,0,0, + 0,67,0,0,0,115,194,0,0,0,124,0,106,0,125,1, + 9,0,116,1,160,2,124,1,112,11,116,1,160,3,161,0, + 161,1,125,2,110,15,35,0,4,0,116,4,116,5,116,6, + 102,3,121,96,1,0,1,0,1,0,103,0,125,2,89,0, + 110,1,37,0,116,7,106,8,160,9,100,1,161,1,115,41, + 116,10,124,2,131,1,124,0,95,11,110,37,116,10,131,0, + 125,3,124,2,68,0,93,28,125,4,124,4,160,12,100,2, + 161,1,92,3,125,5,125,6,125,7,124,6,114,67,100,3, + 160,13,124,5,124,7,160,14,161,0,161,2,125,8,110,2, + 124,5,125,8,124,3,160,15,124,8,161,1,1,0,113,46, + 124,3,124,0,95,11,116,7,106,8,160,9,116,16,161,1, + 114,94,100,4,100,5,132,0,124,2,68,0,131,1,124,0, + 95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,98,0,0,0,114,89, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,83,0,0,0,115,20,0,0,0,104,0,124, + 0,93,6,125,1,124,1,160,0,161,0,146,2,113,2,83, + 0,114,7,0,0,0,41,1,114,132,0,0,0,41,2,114, + 5,0,0,0,90,2,102,110,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,14,0,0,0,74,6,0,0, + 115,2,0,0,0,20,0,114,10,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,66,0,0,0,114, + 19,0,0,0,90,7,108,105,115,116,100,105,114,114,83,0, + 0,0,114,86,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,16,0,0, + 0,114,26,0,0,0,114,27,0,0,0,114,99,1,0,0, + 114,100,1,0,0,114,127,0,0,0,114,90,0,0,0,114, + 132,0,0,0,218,3,97,100,100,114,28,0,0,0,114,101, + 1,0,0,41,9,114,144,0,0,0,114,66,0,0,0,90, + 8,99,111,110,116,101,110,116,115,90,21,108,111,119,101,114, + 95,115,117,102,102,105,120,95,99,111,110,116,101,110,116,115, + 114,71,1,0,0,114,142,0,0,0,114,55,1,0,0,114, + 45,1,0,0,90,8,110,101,119,95,110,97,109,101,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,103,1, + 0,0,45,6,0,0,115,42,0,0,0,6,2,2,1,20, + 1,2,128,18,1,8,3,2,128,12,3,12,1,6,7,8, + 1,16,1,4,1,18,1,4,2,12,1,6,1,12,1,20, + 1,4,255,2,233,115,13,0,0,0,132,9,14,0,142,12, + 28,7,193,32,1,28,7,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, + 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,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0, + 116,0,124,0,131,1,115,10,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,4,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,72,0,0,0,78,41,2,114,84,0, + 0,0,114,143,0,0,0,114,72,0,0,0,169,2,114,222, + 0,0,0,114,102,1,0,0,114,7,0,0,0,114,8,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,86,6,0,0, + 115,6,0,0,0,8,2,12,1,16,1,114,10,0,0,0, + 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,78,114,7,0,0,0,41,3, + 114,222,0,0,0,114,102,1,0,0,114,108,1,0,0,114, + 7,0,0,0,114,107,1,0,0,114,8,0,0,0,218,9, + 112,97,116,104,95,104,111,111,107,76,6,0,0,115,4,0, + 0,0,14,10,4,6,114,10,0,0,0,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,3,0, + 0,0,67,0,0,0,114,68,1,0,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,90,0,0,0,114,66,0,0,0,114,22,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,69,1,0,0,94,6,0,0,114,62,1,0,0,114,10, + 0,0,0,122,19,70,105,108,101,70,105,110,100,101,114,46, + 95,95,114,101,112,114,95,95,114,70,0,0,0,41,15,114, + 151,0,0,0,114,150,0,0,0,114,152,0,0,0,114,153, + 0,0,0,114,237,0,0,0,114,79,1,0,0,114,168,0, + 0,0,114,230,0,0,0,114,162,0,0,0,114,92,1,0, + 0,114,227,0,0,0,114,103,1,0,0,114,235,0,0,0, + 114,109,1,0,0,114,69,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,95, + 1,0,0,199,5,0,0,115,24,0,0,0,8,0,4,2, + 8,7,8,16,4,4,8,2,8,15,10,5,8,51,2,31, + 10,1,12,17,114,10,0,0,0,114,95,1,0,0,99,4, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,146,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,33, + 124,5,114,18,124,5,106,1,125,4,110,15,124,2,124,3, + 107,2,114,28,116,2,124,1,124,2,131,2,125,4,110,5, + 116,3,124,1,124,2,131,2,125,4,124,5,115,42,116,4, + 124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100,0, + 83,0,35,0,4,0,116,5,121,72,1,0,1,0,1,0, + 89,0,100,0,83,0,37,0,119,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,96,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,165,0,0,0,114,42,1,0,0,114, + 35,1,0,0,114,214,0,0,0,218,9,69,120,99,101,112, + 116,105,111,110,41,6,90,2,110,115,114,142,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,165,0,0,0,114,211,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,95, + 102,105,120,95,117,112,95,109,111,100,117,108,101,100,6,0, + 0,115,40,0,0,0,10,2,10,1,4,1,4,1,8,1, + 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, + 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, + 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, + 7,7,114,114,1,0,0,99,0,0,0,0,0,0,0,0, + 0,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,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, + 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, + 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, + 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, + 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, + 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, + 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, + 120,101,115,41,46,10,32,32,32,32,78,41,7,114,31,1, + 0,0,114,188,0,0,0,218,18,101,120,116,101,110,115,105, + 111,110,95,115,117,102,102,105,120,101,115,114,35,1,0,0, + 114,128,0,0,0,114,42,1,0,0,114,114,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, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,209, + 0,0,0,123,6,0,0,115,8,0,0,0,12,5,8,1, + 8,1,10,1,114,10,0,0,0,114,209,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,67, + 0,0,0,115,8,0,0,0,124,0,97,0,100,0,83,0, + 114,70,0,0,0,41,1,114,160,0,0,0,41,1,218,17, + 95,98,111,111,116,115,116,114,97,112,95,109,111,100,117,108, + 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,21,95,115,101,116,95,98,111,111,116,115,116,114,97,112, + 95,109,111,100,117,108,101,134,6,0,0,115,2,0,0,0, + 8,2,114,10,0,0,0,114,117,1,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,50,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,117,1,0,0,114,209,0, + 0,0,114,16,0,0,0,114,84,1,0,0,114,192,0,0, + 0,114,95,1,0,0,114,109,1,0,0,218,9,109,101,116, + 97,95,112,97,116,104,114,62,0,0,0,114,78,1,0,0, + 41,2,114,116,1,0,0,90,17,115,117,112,112,111,114,116, + 101,100,95,108,111,97,100,101,114,115,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,8,95,105,110,115,116, + 97,108,108,139,6,0,0,115,8,0,0,0,8,2,6,1, + 20,1,16,1,114,10,0,0,0,114,119,1,0,0,41,1, + 114,88,0,0,0,114,70,0,0,0,41,3,78,78,78,41, + 2,114,0,0,0,0,114,0,0,0,0,41,1,84,41,85, + 114,153,0,0,0,114,160,0,0,0,114,188,0,0,0,114, + 92,0,0,0,114,16,0,0,0,114,100,0,0,0,114,185, + 0,0,0,114,26,0,0,0,114,232,0,0,0,90,2,110, + 116,114,19,0,0,0,114,216,0,0,0,90,5,112,111,115, + 105,120,114,51,0,0,0,218,3,97,108,108,114,60,0,0, + 0,114,137,0,0,0,114,58,0,0,0,114,63,0,0,0, + 90,20,95,112,97,116,104,115,101,112,115,95,119,105,116,104, + 95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0,114,22,0,0, + 0,114,37,0,0,0,114,43,0,0,0,114,46,0,0,0, + 114,68,0,0,0,114,75,0,0,0,114,76,0,0,0,114, + 80,0,0,0,114,81,0,0,0,114,84,0,0,0,114,87, + 0,0,0,114,96,0,0,0,218,4,116,121,112,101,218,8, + 95,95,99,111,100,101,95,95,114,187,0,0,0,114,35,0, + 0,0,114,173,0,0,0,114,34,0,0,0,114,40,0,0, + 0,114,9,1,0,0,114,117,0,0,0,114,113,0,0,0, + 114,128,0,0,0,114,62,0,0,0,114,115,1,0,0,114, + 233,0,0,0,114,114,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, + 122,0,0,0,114,129,0,0,0,114,136,0,0,0,114,138, + 0,0,0,114,140,0,0,0,114,161,0,0,0,114,168,0, + 0,0,114,177,0,0,0,114,181,0,0,0,114,183,0,0, + 0,114,190,0,0,0,114,195,0,0,0,114,196,0,0,0, + 114,201,0,0,0,218,6,111,98,106,101,99,116,114,210,0, + 0,0,114,214,0,0,0,114,215,0,0,0,114,236,0,0, + 0,114,250,0,0,0,114,12,1,0,0,114,35,1,0,0, + 114,42,1,0,0,114,31,1,0,0,114,48,1,0,0,114, + 74,1,0,0,114,78,1,0,0,114,95,1,0,0,114,114, + 1,0,0,114,209,0,0,0,114,117,1,0,0,114,119,1, + 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,8,60,109,111,100,117,108,101,62, + 1,0,0,0,115,180,0,0,0,4,0,4,22,8,3,8, + 1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8, + 2,4,3,10,1,6,2,22,2,8,1,8,1,10,1,14, + 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, + 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, + 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, + 127,16,33,12,1,4,2,4,1,6,2,4,1,10,1,8, + 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, + 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, + 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, + 127,14,17,18,50,18,45,18,25,14,53,14,63,14,49,0, + 127,14,29,0,127,10,30,8,23,8,11,12,5,114,10,0, + 0,0, }; From webhook-mailer at python.org Thu Jun 3 11:53:56 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Jun 2021 15:53:56 -0000 Subject: [Python-checkins] bpo-42213: Check connection in sqlite3.Connection.__enter__ (GH-26512) Message-ID: https://github.com/python/cpython/commit/82ad22a97d4b5d7134424f12bd6a61167db7f4f8 commit: 82ad22a97d4b5d7134424f12bd6a61167db7f4f8 branch: main author: Erlend Egeberg Aasland committer: vstinner date: 2021-06-03T17:53:47+02:00 summary: bpo-42213: Check connection in sqlite3.Connection.__enter__ (GH-26512) Try to harden connection close: - add tests that exercise stuff against a closed database - add wrapper for sqlite3_close_v2() - check connection on __enter__ - explicitly free pending statements before close() - sqlite3_close_v2() always returns SQLITE_OK files: M Lib/sqlite3/test/dbapi.py M Modules/_sqlite/connection.c diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 39c9bf5b61143d..ab3313533940a3 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -135,6 +135,26 @@ def test_failed_open(self): def test_close(self): self.cx.close() + def test_use_after_close(self): + sql = "select 1" + cu = self.cx.cursor() + res = cu.execute(sql) + self.cx.close() + self.assertRaises(sqlite.ProgrammingError, res.fetchall) + self.assertRaises(sqlite.ProgrammingError, cu.execute, sql) + self.assertRaises(sqlite.ProgrammingError, cu.executemany, sql, []) + self.assertRaises(sqlite.ProgrammingError, cu.executescript, sql) + self.assertRaises(sqlite.ProgrammingError, self.cx.execute, sql) + self.assertRaises(sqlite.ProgrammingError, + self.cx.executemany, sql, []) + self.assertRaises(sqlite.ProgrammingError, self.cx.executescript, sql) + self.assertRaises(sqlite.ProgrammingError, + self.cx.create_function, "t", 1, lambda x: x) + self.assertRaises(sqlite.ProgrammingError, self.cx.cursor) + with self.assertRaises(sqlite.ProgrammingError): + with self.cx: + pass + def test_exceptions(self): # Optional DB-API extension. self.assertEqual(self.cx.Warning, sqlite.Warning) diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index e15629c8aba245..62c4dc3bbb3943 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -258,6 +258,16 @@ connection_clear(pysqlite_Connection *self) return 0; } +static void +connection_close(pysqlite_Connection *self) +{ + if (self->db) { + int rc = sqlite3_close_v2(self->db); + assert(rc == SQLITE_OK); + self->db = NULL; + } +} + static void connection_dealloc(pysqlite_Connection *self) { @@ -266,9 +276,7 @@ connection_dealloc(pysqlite_Connection *self) tp->tp_clear((PyObject *)self); /* Clean up if user has not called .close() explicitly. */ - if (self->db) { - sqlite3_close_v2(self->db); - } + connection_close(self); tp->tp_free(self); Py_DECREF(tp); @@ -353,24 +361,12 @@ static PyObject * pysqlite_connection_close_impl(pysqlite_Connection *self) /*[clinic end generated code: output=a546a0da212c9b97 input=3d58064bbffaa3d3]*/ { - int rc; - if (!pysqlite_check_thread(self)) { return NULL; } pysqlite_do_all_statements(self, ACTION_FINALIZE, 1); - - if (self->db) { - rc = sqlite3_close_v2(self->db); - - if (rc != SQLITE_OK) { - _pysqlite_seterror(self->db); - return NULL; - } else { - self->db = NULL; - } - } + connection_close(self); Py_RETURN_NONE; } @@ -1820,6 +1816,9 @@ static PyObject * pysqlite_connection_enter_impl(pysqlite_Connection *self) /*[clinic end generated code: output=457b09726d3e9dcd input=127d7a4f17e86d8f]*/ { + if (!pysqlite_check_connection(self)) { + return NULL; + } return Py_NewRef((PyObject *)self); } From webhook-mailer at python.org Thu Jun 3 12:04:29 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Jun 2021 16:04:29 -0000 Subject: [Python-checkins] bpo-43921: Fix test_ssl.test_wrong_cert_tls13() on Windows (GH-26502) Message-ID: https://github.com/python/cpython/commit/ea0210fa8ccca769896847f25fc6fadfe9a717bc commit: ea0210fa8ccca769896847f25fc6fadfe9a717bc branch: main author: Victor Stinner committer: vstinner date: 2021-06-03T18:04:25+02:00 summary: bpo-43921: Fix test_ssl.test_wrong_cert_tls13() on Windows (GH-26502) Fix test_ssl.test_wrong_cert_tls13(): use suppress_ragged_eofs=False, since read() can raise ssl.SSLEOFError on Windows. files: A Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 2df6232941188..85ad8ae827a80 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -3190,7 +3190,8 @@ def test_wrong_cert_tls13(self): ) with server, \ client_context.wrap_socket(socket.socket(), - server_hostname=hostname) as s: + server_hostname=hostname, + suppress_ragged_eofs=False) as s: # TLS 1.3 perform client cert exchange after handshake s.connect((HOST, server.port)) try: @@ -3207,13 +3208,7 @@ def test_wrong_cert_tls13(self): if support.verbose: sys.stdout.write("\nsocket.error is %r\n" % e) else: - if sys.platform == "win32": - self.skipTest( - "Ignoring failed test_wrong_cert_tls13 test case. " - "The test is flaky on Windows, see bpo-43921." - ) - else: - self.fail("Use of invalid cert should have failed!") + self.fail("Use of invalid cert should have failed!") def test_rude_shutdown(self): """A brutal shutdown of an SSL server should raise an OSError @@ -4450,7 +4445,8 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): server = ThreadedEchoServer(context=server_context, chatty=True) with server: with client_context.wrap_socket(socket.socket(), - server_hostname=hostname) as s: + server_hostname=hostname, + suppress_ragged_eofs=False) as s: s.connect((HOST, server.port)) s.write(b'PHA') # test sometimes fails with EOF error. Test passes as long as @@ -4461,17 +4457,13 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): ): # receive CertificateRequest data = s.recv(1024) - if not data: - raise ssl.SSLError(1, "EOF occurred") self.assertEqual(data, b'OK\n') # send empty Certificate + Finish s.write(b'HASCERT') # receive alert - data = s.recv(1024) - if not data: - raise ssl.SSLError(1, "EOF occurred") + s.recv(1024) def test_pha_optional(self): if support.verbose: diff --git a/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst b/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst new file mode 100644 index 0000000000000..30e0fadd66125 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst @@ -0,0 +1,3 @@ +Fix test_ssl.test_wrong_cert_tls13(): use ``suppress_ragged_eofs=False``, +since ``read()`` can raise :exc:`ssl.SSLEOFError` on Windows. Patch by +Victor Stinner. From webhook-mailer at python.org Thu Jun 3 12:28:38 2021 From: webhook-mailer at python.org (ericsnowcurrently) Date: Thu, 03 Jun 2021 16:28:38 -0000 Subject: [Python-checkins] bpo-43693: Add new internal code objects fields: co_fastlocalnames and co_fastlocalkinds. (gh-26388) Message-ID: https://github.com/python/cpython/commit/2c1e2583fdc4db6b43d163239ea42b0e8394171f commit: 2c1e2583fdc4db6b43d163239ea42b0e8394171f branch: main author: Eric Snow committer: ericsnowcurrently date: 2021-06-03T10:28:27-06:00 summary: bpo-43693: Add new internal code objects fields: co_fastlocalnames and co_fastlocalkinds. (gh-26388) A number of places in the code base (notably ceval.c and frameobject.c) rely on mapping variable names to indices in the frame "locals plus" array (AKA fast locals), and thus opargs. Currently the compiler indirectly encodes that information on the code object as the tuples co_varnames, co_cellvars, and co_freevars. At runtime the dependent code must calculate the proper mapping from those, which isn't ideal and impacts performance-sensitive sections. This is something we can easily address in the compiler instead. This change addresses the situation by replacing internal use of co_varnames, etc. with a single combined tuple of names in locals-plus order, along with a minimal array mapping each to its kind (local vs. cell vs. free). These two new PyCodeObject fields, co_fastlocalnames and co_fastllocalkinds, are not exposed to Python code for now, but co_varnames, etc. are still available with the same values as before (though computed lazily). Aside from the (mild) performance impact, there are a number of other benefits: * there's now a clear, direct relationship between locals-plus and variables * code that relies on the locals-plus-to-name mapping is simpler * marshaled code objects are smaller and serialize/de-serialize faster Also note that we can take this approach further by expanding the possible values in co_fastlocalkinds to include specific argument types (e.g. positional-only, kwargs). Doing so would allow further speed-ups in _PyEval_MakeFrameVector(), which is where args get unpacked into the locals-plus array. It would also allow us to shrink marshaled code objects even further. https://bugs.python.org/issue43693 files: A Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst M Doc/library/dis.rst M Include/cpython/code.h M Include/internal/pycore_code.h M Lib/ctypes/test/test_values.py M Lib/dis.py M Lib/importlib/_bootstrap_external.py M Objects/clinic/codeobject.c.h M Objects/codeobject.c M Objects/frameobject.c M Objects/typeobject.c M Programs/test_frozenmain.h M Python/ceval.c M Python/compile.c M Python/frozen_hello.h M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h M Python/marshal.c M Python/suggestions.c M Tools/gdb/libpython.py diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index a4746bcabc76bc..eaa001c2fcecc5 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1059,9 +1059,8 @@ All of the following opcodes use their arguments. .. opcode:: LOAD_CLOSURE (i) Pushes a reference to the cell contained in slot *i* of the cell and free - variable storage. The name of the variable is ``co_cellvars[i]`` if *i* is - less than the length of *co_cellvars*. Otherwise it is ``co_freevars[i - - len(co_cellvars)]``. + variable storage. The name of the variable is + ``co_fastlocalnames[i + len(co_varnames)]``. .. opcode:: LOAD_DEREF (i) diff --git a/Include/cpython/code.h b/Include/cpython/code.h index 5c0fae47e79f2c..add34f3144d69b 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -3,6 +3,8 @@ #endif typedef uint16_t _Py_CODEUNIT; +// Each oparg must fit in the second half of _Py_CODEUNIT, hence 8 bits. +#define _Py_MAX_OPARG 255 #ifdef WORDS_BIGENDIAN # define _Py_OPCODE(word) ((word) >> 8) @@ -14,6 +16,11 @@ typedef uint16_t _Py_CODEUNIT; typedef struct _PyOpcache _PyOpcache; + +// These are duplicated from pycore_code.h. +typedef unsigned char _PyLocalsPlusKind; +typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; + /* Bytecode object */ struct PyCodeObject { PyObject_HEAD @@ -53,9 +60,8 @@ struct PyCodeObject { int co_kwonlyargcount; /* #keyword only arguments */ int co_stacksize; /* #entries needed for evaluation stack */ int co_firstlineno; /* first source line number */ - PyObject *co_varnames; /* tuple of strings (local variable names) */ - PyObject *co_cellvars; /* tuple of strings (cell variable names) */ - PyObject *co_freevars; /* tuple of strings (free variable names) */ + PyObject *co_localsplusnames; /* tuple mapping offsets to names */ + _PyLocalsPlusKinds co_localspluskinds; /* array mapping to local kinds */ PyObject *co_filename; /* unicode (where it was loaded from) */ PyObject *co_name; /* unicode (name, for reference) */ PyObject *co_linetable; /* string (encoding addr<->lineno mapping) See @@ -65,11 +71,15 @@ struct PyCodeObject { /* These fields are set with computed values on new code objects. */ int *co_cell2arg; /* Maps cell vars which are arguments. */ - // These are redundant but offer some performance benefit. + // redundant values (derived from co_localsplusnames and co_localspluskinds) int co_nlocalsplus; /* number of local + cell + free variables */ int co_nlocals; /* number of local variables */ int co_ncellvars; /* number of cell variables */ int co_nfreevars; /* number of free variables */ + // lazily-computed values + PyObject *co_varnames; /* tuple of strings (local variable names) */ + PyObject *co_cellvars; /* tuple of strings (cell variable names) */ + PyObject *co_freevars; /* tuple of strings (free variable names) */ /* The remaining fields are zeroed out on new code objects. */ @@ -143,7 +153,7 @@ struct PyCodeObject { PyAPI_DATA(PyTypeObject) PyCode_Type; #define PyCode_Check(op) Py_IS_TYPE(op, &PyCode_Type) -#define PyCode_GetNumFree(op) (PyTuple_GET_SIZE((op)->co_freevars)) +#define PyCode_GetNumFree(op) ((op)->co_nfreevars) /* Public interface */ PyAPI_FUNC(PyCodeObject *) PyCode_New( diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index dab6c34dd1732d..95b4730701350a 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -26,6 +26,57 @@ struct _PyOpcache { }; +/* "Locals plus" for a code object is the set of locals + cell vars + + * free vars. This relates to variable names as well as offsets into + * the "fast locals" storage array of execution frames. The compiler + * builds the list of names, their offsets, and the corresponding + * kind of local. + * + * Those kinds represent the source of the initial value and the + * variable's scope (as related to closures). A "local" is an + * argument or other variable defined in the current scope. A "free" + * variable is one that is defined in an outer scope and comes from + * the function's closure. A "cell" variable is a local that escapes + * into an inner function as part of a closure, and thus must be + * wrapped in a cell. Any "local" can also be a "cell", but the + * "free" kind is mutually exclusive with both. + */ + +// We would use an enum if C let us specify the storage type. +typedef unsigned char _PyLocalsPlusKind; +/* Note that these all fit within _PyLocalsPlusKind, as do combinations. */ +// Later, we will use the smaller numbers to differentiate the different +// kinds of locals (e.g. pos-only arg, varkwargs, local-only). +#define CO_FAST_LOCAL 0x20 +#define CO_FAST_CELL 0x40 +#define CO_FAST_FREE 0x80 + +typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; + +static inline int +_PyCode_InitLocalsPlusKinds(int num, _PyLocalsPlusKinds *pkinds) +{ + if (num == 0) { + *pkinds = NULL; + return 0; + } + _PyLocalsPlusKinds kinds = PyMem_NEW(_PyLocalsPlusKind, num); + if (kinds == NULL) { + PyErr_NoMemory(); + return -1; + } + *pkinds = kinds; + return 0; +} + +static inline void +_PyCode_ClearLocalsPlusKinds(_PyLocalsPlusKinds kinds) +{ + if (kinds != NULL) { + PyMem_Free(kinds); + } +} + struct _PyCodeConstructor { /* metadata */ PyObject *filename; @@ -42,13 +93,13 @@ struct _PyCodeConstructor { PyObject *names; /* mapping frame offsets to information */ - PyObject *varnames; - PyObject *cellvars; - PyObject *freevars; + PyObject *localsplusnames; + _PyLocalsPlusKinds localspluskinds; /* args (within varnames) */ int argcount; int posonlyargcount; + // XXX Replace argcount with posorkwargcount (argcount - posonlyargcount). int kwonlyargcount; /* needed to create the frame */ @@ -75,6 +126,11 @@ PyAPI_FUNC(PyCodeObject *) _PyCode_New(struct _PyCodeConstructor *); int _PyCode_InitOpcache(PyCodeObject *co); +/* Getters for internal PyCodeObject data. */ +PyAPI_FUNC(PyObject *) _PyCode_GetVarnames(PyCodeObject *); +PyAPI_FUNC(PyObject *) _PyCode_GetCellvars(PyCodeObject *); +PyAPI_FUNC(PyObject *) _PyCode_GetFreevars(PyCodeObject *); + #ifdef __cplusplus } diff --git a/Lib/ctypes/test/test_values.py b/Lib/ctypes/test/test_values.py index 92c3c284f2359c..5aa0d75fcbf0cb 100644 --- a/Lib/ctypes/test/test_values.py +++ b/Lib/ctypes/test/test_values.py @@ -80,9 +80,9 @@ class struct_frozen(Structure): continue items.append((entry.name.decode("ascii"), entry.size)) - expected = [("__hello__", 138), - ("__phello__", -138), - ("__phello__.spam", 138), + expected = [("__hello__", 128), + ("__phello__", -128), + ("__phello__.spam", 128), ] self.assertEqual(items, expected, "PyImport_FrozenModules example " "in Doc/library/ctypes.rst may be out of date") diff --git a/Lib/dis.py b/Lib/dis.py index bc7c4d4a8d52c0..dfadad79d2dfd1 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -273,15 +273,15 @@ def get_instructions(x, *, first_line=None): the disassembled code object. """ co = _get_code_object(x) - cell_names = co.co_cellvars + co.co_freevars linestarts = dict(findlinestarts(co)) if first_line is not None: line_offset = first_line - co.co_firstlineno else: line_offset = 0 - return _get_instructions_bytes(co.co_code, co.co_varnames, co.co_names, - co.co_consts, cell_names, linestarts, - line_offset) + return _get_instructions_bytes(co.co_code, + co._varname_from_oparg, + co.co_names, co.co_consts, + linestarts, line_offset) def _get_const_info(const_index, const_list): """Helper to get optional details about const references @@ -295,7 +295,7 @@ def _get_const_info(const_index, const_list): argval = const_list[const_index] return argval, repr(argval) -def _get_name_info(name_index, name_list): +def _get_name_info(name_index, get_name, **extrainfo): """Helper to get optional details about named references Returns the dereferenced name as both value and repr if the name @@ -303,8 +303,8 @@ def _get_name_info(name_index, name_list): Otherwise returns the name index and its repr(). """ argval = name_index - if name_list is not None: - argval = name_list[name_index] + if get_name is not None: + argval = get_name(name_index, **extrainfo) argrepr = argval else: argrepr = repr(argval) @@ -336,8 +336,10 @@ def parse_exception_table(code): except StopIteration: return entries -def _get_instructions_bytes(code, varnames=None, names=None, constants=None, - cells=None, linestarts=None, line_offset=0, exception_entries=()): +def _get_instructions_bytes(code, varname_from_oparg=None, + names=None, constants=None, + linestarts=None, line_offset=0, + exception_entries=()): """Iterate over the instructions in a bytecode string. Generates a sequence of Instruction namedtuples giving the details of each @@ -346,6 +348,7 @@ def _get_instructions_bytes(code, varnames=None, names=None, constants=None, arguments. """ + get_name = None if names is None else names.__getitem__ labels = set(findlabels(code)) for start, end, target, _, _ in exception_entries: for i in range(start, end): @@ -368,7 +371,7 @@ def _get_instructions_bytes(code, varnames=None, names=None, constants=None, if op in hasconst: argval, argrepr = _get_const_info(arg, constants) elif op in hasname: - argval, argrepr = _get_name_info(arg, names) + argval, argrepr = _get_name_info(arg, get_name) elif op in hasjabs: argval = arg*2 argrepr = "to " + repr(argval) @@ -376,12 +379,13 @@ def _get_instructions_bytes(code, varnames=None, names=None, constants=None, argval = offset + 2 + arg*2 argrepr = "to " + repr(argval) elif op in haslocal: - argval, argrepr = _get_name_info(arg, varnames) + argval, argrepr = _get_name_info(arg, varname_from_oparg) elif op in hascompare: argval = cmp_op[arg] argrepr = argval elif op in hasfree: - argval, argrepr = _get_name_info(arg, cells) + argval, argrepr = _get_name_info(arg, varname_from_oparg, + cell=True) elif op == FORMAT_VALUE: argval, argrepr = FORMAT_VALUE_CONVERTERS[arg & 0x3] argval = (argval, bool(arg & 0x4)) @@ -398,11 +402,11 @@ def _get_instructions_bytes(code, varnames=None, names=None, constants=None, def disassemble(co, lasti=-1, *, file=None): """Disassemble a code object.""" - cell_names = co.co_cellvars + co.co_freevars linestarts = dict(findlinestarts(co)) exception_entries = parse_exception_table(co) - _disassemble_bytes(co.co_code, lasti, co.co_varnames, co.co_names, - co.co_consts, cell_names, linestarts, file=file, + _disassemble_bytes(co.co_code, lasti, + co._varname_from_oparg, + co.co_names, co.co_consts, linestarts, file=file, exception_entries=exception_entries) def _disassemble_recursive(co, *, file=None, depth=None): @@ -416,8 +420,8 @@ def _disassemble_recursive(co, *, file=None, depth=None): print("Disassembly of %r:" % (x,), file=file) _disassemble_recursive(x, file=file, depth=depth) -def _disassemble_bytes(code, lasti=-1, varnames=None, names=None, - constants=None, cells=None, linestarts=None, +def _disassemble_bytes(code, lasti=-1, varname_from_oparg=None, + names=None, constants=None, linestarts=None, *, file=None, line_offset=0, exception_entries=()): # Omit the line number column entirely if we have no line number info show_lineno = bool(linestarts) @@ -434,8 +438,8 @@ def _disassemble_bytes(code, lasti=-1, varnames=None, names=None, offset_width = len(str(maxoffset)) else: offset_width = 4 - for instr in _get_instructions_bytes(code, varnames, names, - constants, cells, linestarts, + for instr in _get_instructions_bytes(code, varname_from_oparg, names, + constants, linestarts, line_offset=line_offset, exception_entries=exception_entries): new_source_line = (show_lineno and instr.starts_line is not None and @@ -517,7 +521,6 @@ def __init__(self, x, *, first_line=None, current_offset=None): else: self.first_line = first_line self._line_offset = first_line - co.co_firstlineno - self._cell_names = co.co_cellvars + co.co_freevars self._linestarts = dict(findlinestarts(co)) self._original_object = x self.current_offset = current_offset @@ -525,8 +528,9 @@ def __init__(self, x, *, first_line=None, current_offset=None): def __iter__(self): co = self.codeobj - return _get_instructions_bytes(co.co_code, co.co_varnames, co.co_names, - co.co_consts, self._cell_names, + return _get_instructions_bytes(co.co_code, + co._varname_from_oparg, + co.co_names, co.co_consts, self._linestarts, line_offset=self._line_offset, exception_entries=self.exception_entries) @@ -554,9 +558,9 @@ def dis(self): else: offset = -1 with io.StringIO() as output: - _disassemble_bytes(co.co_code, varnames=co.co_varnames, + _disassemble_bytes(co.co_code, + varname_from_oparg=co._varname_from_oparg, names=co.co_names, constants=co.co_consts, - cells=self._cell_names, linestarts=self._linestarts, line_offset=self._line_offset, file=output, diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index ee720f84a4b0f9..b2d8a70996b90f 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -355,6 +355,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3450 Use exception table for unwinding ("zero cost" exception handling) # Python 3.11a1 3451 (Add CALL_METHOD_KW) # Python 3.11a1 3452 (drop nlocals from marshaled code objects) +# Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -364,7 +365,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3452).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3453).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst new file mode 100644 index 00000000000000..83b7ba260e6a22 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst @@ -0,0 +1,3 @@ +``PyCodeObject`` gained ``co_fastlocalnames`` and ``co_fastlocalkinds`` as +the the authoritative source of fast locals info. Marshaled code objects +have changed accordingly. diff --git a/Objects/clinic/codeobject.c.h b/Objects/clinic/codeobject.c.h index 7ffdf07e49ada0..629d26580c6fe3 100644 --- a/Objects/clinic/codeobject.c.h +++ b/Objects/clinic/codeobject.c.h @@ -373,4 +373,51 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje exit: return return_value; } -/*[clinic end generated code: output=a272b22f63ea002e input=a9049054013a1b77]*/ + +PyDoc_STRVAR(code__varname_from_oparg__doc__, +"_varname_from_oparg($self, /, oparg, *, cell=False)\n" +"--\n" +"\n" +"(internal-only) Return the local variable name for the given oparg.\n" +"\n" +"WARNING: this method is for internal use only and may change or go away."); + +#define CODE__VARNAME_FROM_OPARG_METHODDEF \ + {"_varname_from_oparg", (PyCFunction)(void(*)(void))code__varname_from_oparg, METH_FASTCALL|METH_KEYWORDS, code__varname_from_oparg__doc__}, + +static PyObject * +code__varname_from_oparg_impl(PyCodeObject *self, int oparg, int cell); + +static PyObject * +code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"oparg", "cell", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "_varname_from_oparg", 0}; + PyObject *argsbuf[2]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; + int oparg; + int cell = 0; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); + if (!args) { + goto exit; + } + oparg = _PyLong_AsInt(args[0]); + if (oparg == -1 && PyErr_Occurred()) { + goto exit; + } + if (!noptargs) { + goto skip_optional_kwonly; + } + cell = PyObject_IsTrue(args[1]); + if (cell < 0) { + goto exit; + } +skip_optional_kwonly: + return_value = code__varname_from_oparg_impl(self, oparg, cell); + +exit: + return return_value; +} +/*[clinic end generated code: output=43f4eef80d584fe0 input=a9049054013a1b77]*/ diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 75e81821450f52..051aefece334fd 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -154,6 +154,93 @@ validate_and_copy_tuple(PyObject *tup) * _PyCode_New() ******************/ +// This is also used in compile.c. +void +_Py_set_localsplus_info(int offset, PyObject *name, _PyLocalsPlusKind kind, + PyObject *names, _PyLocalsPlusKinds kinds) +{ + Py_INCREF(name); + PyTuple_SET_ITEM(names, offset, name); + kinds[offset] = kind; + + if (kind == CO_FAST_CELL) { + // Cells can overlap with args, so mark those cases. + int nlocalsplus = (int)PyTuple_GET_SIZE(names); + for (int i = 0; i < nlocalsplus; i++) { + _PyLocalsPlusKind kind = kinds[i]; + if (kind && !(kind & CO_FAST_LOCAL)) { + // We've moved past the locals. + break; + } + PyObject *varname = PyTuple_GET_ITEM(names, i); + int cmp = PyUnicode_Compare(name, varname); + if (cmp == 0) { + kinds[i] |= CO_FAST_CELL; + break; + } + assert(cmp > 0 || !PyErr_Occurred()); + } + } +} + +static void +get_localsplus_counts(PyObject *names, _PyLocalsPlusKinds kinds, + int *pnlocals, int *pncellvars, + int *pnfreevars) +{ + int nlocals = 0; + int ncellvars = 0; + int nfreevars = 0; + int nlocalsplus = Py_SAFE_DOWNCAST(PyTuple_GET_SIZE(names), + Py_ssize_t, int); + for (int i = 0; i < nlocalsplus; i++) { + if (kinds[i] & CO_FAST_LOCAL) { + nlocals += 1; + } + else if (kinds[i] & CO_FAST_CELL) { + ncellvars += 1; + } + else if (kinds[i] & CO_FAST_FREE) { + nfreevars += 1; + } + } + if (pnlocals != NULL) { + *pnlocals = nlocals; + } + if (pncellvars != NULL) { + *pncellvars = ncellvars; + } + if (pnfreevars != NULL) { + *pnfreevars = nfreevars; + } +} + +static PyObject * +get_localsplus_names(PyCodeObject *co, _PyLocalsPlusKind kind, int num) +{ + PyObject *names = PyTuple_New(num); + if (names == NULL) { + return NULL; + } + int index = 0; + for (int offset = 0; offset < co->co_nlocalsplus; offset++) { + if ((co->co_localspluskinds[offset] & kind) == 0) { + continue; + } + // For now there may be duplicates, which we ignore. + if (kind == CO_FAST_CELL && co->co_localspluskinds[offset] != kind) { + continue; + } + assert(index < num); + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, offset); + Py_INCREF(name); + PyTuple_SET_ITEM(names, index, name); + index += 1; + } + assert(index == num); + return names; +} + int _PyCode_Validate(struct _PyCodeConstructor *con) { @@ -164,9 +251,9 @@ _PyCode_Validate(struct _PyCodeConstructor *con) con->code == NULL || !PyBytes_Check(con->code) || con->consts == NULL || !PyTuple_Check(con->consts) || con->names == NULL || !PyTuple_Check(con->names) || - con->varnames == NULL || !PyTuple_Check(con->varnames) || - con->freevars == NULL || !PyTuple_Check(con->freevars) || - con->cellvars == NULL || !PyTuple_Check(con->cellvars) || + con->localsplusnames == NULL || !PyTuple_Check(con->localsplusnames) || + (PyTuple_GET_SIZE(con->localsplusnames) && con->localspluskinds == NULL) || + (!PyTuple_GET_SIZE(con->localsplusnames) && con->localspluskinds != NULL) || con->name == NULL || !PyUnicode_Check(con->name) || con->filename == NULL || !PyUnicode_Check(con->filename) || con->linetable == NULL || !PyBytes_Check(con->linetable) || @@ -187,7 +274,10 @@ _PyCode_Validate(struct _PyCodeConstructor *con) /* Ensure that the co_varnames has enough names to cover the arg counts. * Note that totalargs = nlocals - nplainlocals. We check nplainlocals * here to avoid the possibility of overflow (however remote). */ - int nplainlocals = (int)PyTuple_GET_SIZE(con->varnames) - + int nlocals; + get_localsplus_counts(con->localsplusnames, con->localspluskinds, + &nlocals, NULL, NULL); + int nplainlocals = nlocals - con->argcount - con->kwonlyargcount - ((con->flags & CO_VARARGS) != 0) - @@ -203,6 +293,11 @@ _PyCode_Validate(struct _PyCodeConstructor *con) static void init_code(PyCodeObject *co, struct _PyCodeConstructor *con) { + int nlocalsplus = (int)PyTuple_GET_SIZE(con->localsplusnames); + int nlocals, ncellvars, nfreevars; + get_localsplus_counts(con->localsplusnames, con->localspluskinds, + &nlocals, &ncellvars, &nfreevars); + Py_INCREF(con->filename); co->co_filename = con->filename; Py_INCREF(con->name); @@ -220,12 +315,10 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) Py_INCREF(con->names); co->co_names = con->names; - Py_INCREF(con->varnames); - co->co_varnames = con->varnames; - Py_INCREF(con->cellvars); - co->co_cellvars = con->cellvars; - Py_INCREF(con->freevars); - co->co_freevars = con->freevars; + Py_INCREF(con->localsplusnames); + co->co_localsplusnames = con->localsplusnames; + // We take ownership of the kinds array. + co->co_localspluskinds = con->localspluskinds; co->co_argcount = con->argcount; co->co_posonlyargcount = con->posonlyargcount; @@ -238,10 +331,13 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) /* derived values */ co->co_cell2arg = NULL; // This will be set soon. - co->co_nlocals = (int)PyTuple_GET_SIZE(con->varnames); - co->co_ncellvars = (int)PyTuple_GET_SIZE(con->cellvars); - co->co_nfreevars = (int)PyTuple_GET_SIZE(con->freevars); - co->co_nlocalsplus = co->co_nlocals + co->co_ncellvars + co->co_nfreevars; + co->co_nlocalsplus = nlocalsplus; + co->co_nlocals = nlocals; + co->co_ncellvars = ncellvars; + co->co_nfreevars = nfreevars; + co->co_varnames = NULL; + co->co_cellvars = NULL; + co->co_freevars = NULL; /* not set */ co->co_weakreflist = NULL; @@ -271,23 +367,9 @@ _PyCode_New(struct _PyCodeConstructor *con) if (intern_string_constants(con->consts, NULL) < 0) { return NULL; } - if (intern_strings(con->varnames) < 0) { + if (intern_strings(con->localsplusnames) < 0) { return NULL; } - if (intern_strings(con->freevars) < 0) { - return NULL; - } - if (intern_strings(con->cellvars) < 0) { - return NULL; - } - - /* Check for any inner or outer closure references */ - int ncellvars = (int)PyTuple_GET_SIZE(con->cellvars); - if (!ncellvars && !PyTuple_GET_SIZE(con->freevars)) { - con->flags |= CO_NOFREE; - } else { - con->flags &= ~CO_NOFREE; - } PyCodeObject *co = PyObject_New(PyCodeObject, &PyCode_Type); if (co == NULL) { @@ -296,18 +378,26 @@ _PyCode_New(struct _PyCodeConstructor *con) } init_code(co, con); + /* Check for any inner or outer closure references */ + if (!co->co_ncellvars && !co->co_nfreevars) { + co->co_flags |= CO_NOFREE; + } else { + co->co_flags &= ~CO_NOFREE; + } + /* Create mapping between cells and arguments if needed. */ - if (ncellvars) { + if (co->co_ncellvars) { int totalargs = co->co_argcount + co->co_kwonlyargcount + ((co->co_flags & CO_VARARGS) != 0) + ((co->co_flags & CO_VARKEYWORDS) != 0); assert(totalargs <= co->co_nlocals); /* Find cells which are also arguments. */ - for (int i = 0; i < ncellvars; i++) { - PyObject *cellname = PyTuple_GET_ITEM(co->co_cellvars, i); + for (int i = 0; i < co->co_ncellvars; i++) { + PyObject *cellname = PyTuple_GET_ITEM(co->co_localsplusnames, + i + co->co_nlocals); for (int j = 0; j < totalargs; j++) { - PyObject *argname = PyTuple_GET_ITEM(co->co_varnames, j); + PyObject *argname = PyTuple_GET_ITEM(co->co_localsplusnames, j); int cmp = PyUnicode_Compare(cellname, argname); if (cmp == -1 && PyErr_Occurred()) { Py_DECREF(co); @@ -315,13 +405,13 @@ _PyCode_New(struct _PyCodeConstructor *con) } if (cmp == 0) { if (co->co_cell2arg == NULL) { - co->co_cell2arg = PyMem_NEW(int, ncellvars); + co->co_cell2arg = PyMem_NEW(int, co->co_ncellvars); if (co->co_cell2arg == NULL) { Py_DECREF(co); PyErr_NoMemory(); return NULL; } - for (int k = 0; k < ncellvars; k++) { + for (int k = 0; k < co->co_ncellvars; k++) { co->co_cell2arg[k] = CO_CELL_NOT_AN_ARG; } } @@ -349,6 +439,47 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, PyObject *filename, PyObject *name, int firstlineno, PyObject *linetable, PyObject *exceptiontable) { + PyCodeObject *co = NULL; + PyObject *localsplusnames = NULL; + _PyLocalsPlusKinds localspluskinds = NULL; + + if (varnames == NULL || !PyTuple_Check(varnames) || + cellvars == NULL || !PyTuple_Check(cellvars) || + freevars == NULL || !PyTuple_Check(freevars) + ) { + PyErr_BadInternalCall(); + return NULL; + } + + // Set the "fast locals plus" info. + int nvarnames = (int)PyTuple_GET_SIZE(varnames); + int ncellvars = (int)PyTuple_GET_SIZE(cellvars); + int nfreevars = (int)PyTuple_GET_SIZE(freevars); + int nlocalsplus = nvarnames + ncellvars + nfreevars; + localsplusnames = PyTuple_New(nlocalsplus); + if (localsplusnames == NULL) { + goto error; + } + if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { + goto error; + } + int offset = 0; + for (int i = 0; i < nvarnames; i++, offset++) { + PyObject *name = PyTuple_GET_ITEM(varnames, i); + _Py_set_localsplus_info(offset, name, CO_FAST_LOCAL, + localsplusnames, localspluskinds); + } + for (int i = 0; i < ncellvars; i++, offset++) { + PyObject *name = PyTuple_GET_ITEM(cellvars, i); + _Py_set_localsplus_info(offset, name, CO_FAST_CELL, + localsplusnames, localspluskinds); + } + for (int i = 0; i < nfreevars; i++, offset++) { + PyObject *name = PyTuple_GET_ITEM(freevars, i); + _Py_set_localsplus_info(offset, name, CO_FAST_FREE, + localsplusnames, localspluskinds); + } + struct _PyCodeConstructor con = { .filename = filename, .name = name, @@ -361,9 +492,8 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, .consts = consts, .names = names, - .varnames = varnames, - .cellvars = cellvars, - .freevars = freevars, + .localsplusnames = localsplusnames, + .localspluskinds = localspluskinds, .argcount = argcount, .posonlyargcount = posonlyargcount, @@ -373,17 +503,33 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, .exceptiontable = exceptiontable, }; + if (_PyCode_Validate(&con) < 0) { - return NULL; + goto error; } - if (nlocals != PyTuple_GET_SIZE(varnames)) { PyErr_SetString(PyExc_ValueError, "code: co_nlocals != len(co_varnames)"); - return NULL; + goto error; + } + + co = _PyCode_New(&con); + if (co == NULL) { + goto error; } - return _PyCode_New(&con); + localspluskinds = NULL; // This keeps it from getting freed below. + Py_INCREF(varnames); + co->co_varnames = varnames; + Py_INCREF(cellvars); + co->co_cellvars = cellvars; + Py_INCREF(freevars); + co->co_freevars = freevars; + +error: + Py_XDECREF(localsplusnames); + _PyCode_ClearLocalsPlusKinds(localspluskinds); + return co; } PyCodeObject * @@ -434,9 +580,7 @@ PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno) .linetable = emptystring, .consts = nulltuple, .names = nulltuple, - .varnames = nulltuple, - .cellvars = nulltuple, - .freevars = nulltuple, + .localsplusnames = nulltuple, .exceptiontable = emptystring, }; result = _PyCode_New(&con); @@ -879,6 +1023,53 @@ _PyCode_SetExtra(PyObject *code, Py_ssize_t index, void *extra) } +/****************** + * other PyCodeObject accessor functions + ******************/ + +PyObject * +_PyCode_GetVarnames(PyCodeObject *co) +{ + if (co->co_varnames == NULL) { + co->co_varnames = get_localsplus_names(co, CO_FAST_LOCAL, + co->co_nlocals); + if (co->co_varnames == NULL) { + return NULL; + } + } + Py_INCREF(co->co_varnames); + return co->co_varnames; +} + +PyObject * +_PyCode_GetCellvars(PyCodeObject *co) +{ + if (co->co_cellvars == NULL) { + co->co_cellvars = get_localsplus_names(co, CO_FAST_CELL, + co->co_ncellvars); + if (co->co_cellvars == NULL) { + return NULL; + } + } + Py_INCREF(co->co_cellvars); + return co->co_cellvars; +} + +PyObject * +_PyCode_GetFreevars(PyCodeObject *co) +{ + if (co->co_freevars == NULL) { + co->co_freevars = get_localsplus_names(co, CO_FAST_FREE, + co->co_nfreevars); + if (co->co_freevars == NULL) { + return NULL; + } + } + Py_INCREF(co->co_freevars); + return co->co_freevars; +} + + /****************** * PyCode_Type ******************/ @@ -1028,6 +1219,8 @@ code_dealloc(PyCodeObject *co) Py_XDECREF(co->co_code); Py_XDECREF(co->co_consts); Py_XDECREF(co->co_names); + Py_XDECREF(co->co_localsplusnames); + _PyCode_ClearLocalsPlusKinds(co->co_localspluskinds); Py_XDECREF(co->co_varnames); Py_XDECREF(co->co_freevars); Py_XDECREF(co->co_cellvars); @@ -1086,8 +1279,6 @@ code_richcompare(PyObject *self, PyObject *other, int op) if (!eq) goto unequal; eq = co->co_kwonlyargcount == cp->co_kwonlyargcount; if (!eq) goto unequal; - eq = co->co_nlocals == cp->co_nlocals; - if (!eq) goto unequal; eq = co->co_flags == cp->co_flags; if (!eq) goto unequal; eq = co->co_firstlineno == cp->co_firstlineno; @@ -1111,11 +1302,8 @@ code_richcompare(PyObject *self, PyObject *other, int op) eq = PyObject_RichCompareBool(co->co_names, cp->co_names, Py_EQ); if (eq <= 0) goto unequal; - eq = PyObject_RichCompareBool(co->co_varnames, cp->co_varnames, Py_EQ); - if (eq <= 0) goto unequal; - eq = PyObject_RichCompareBool(co->co_freevars, cp->co_freevars, Py_EQ); - if (eq <= 0) goto unequal; - eq = PyObject_RichCompareBool(co->co_cellvars, cp->co_cellvars, Py_EQ); + eq = PyObject_RichCompareBool(co->co_localsplusnames, + cp->co_localsplusnames, Py_EQ); if (eq <= 0) goto unequal; if (op == Py_EQ) @@ -1140,7 +1328,7 @@ code_richcompare(PyObject *self, PyObject *other, int op) static Py_hash_t code_hash(PyCodeObject *co) { - Py_hash_t h, h0, h1, h2, h3, h4, h5, h6; + Py_hash_t h, h0, h1, h2, h3, h4; h0 = PyObject_Hash(co->co_name); if (h0 == -1) return -1; h1 = PyObject_Hash(co->co_code); @@ -1149,15 +1337,11 @@ code_hash(PyCodeObject *co) if (h2 == -1) return -1; h3 = PyObject_Hash(co->co_names); if (h3 == -1) return -1; - h4 = PyObject_Hash(co->co_varnames); + h4 = PyObject_Hash(co->co_localsplusnames); if (h4 == -1) return -1; - h5 = PyObject_Hash(co->co_freevars); - if (h5 == -1) return -1; - h6 = PyObject_Hash(co->co_cellvars); - if (h6 == -1) return -1; - h = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ h5 ^ h6 ^ + h = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ co->co_argcount ^ co->co_posonlyargcount ^ co->co_kwonlyargcount ^ - co->co_nlocals ^ co->co_flags; + co->co_flags; if (h == -1) h = -2; return h; } @@ -1169,15 +1353,11 @@ static PyMemberDef code_memberlist[] = { {"co_argcount", T_INT, OFF(co_argcount), READONLY}, {"co_posonlyargcount", T_INT, OFF(co_posonlyargcount), READONLY}, {"co_kwonlyargcount", T_INT, OFF(co_kwonlyargcount), READONLY}, - {"co_nlocals", T_INT, OFF(co_nlocals), READONLY}, {"co_stacksize",T_INT, OFF(co_stacksize), READONLY}, {"co_flags", T_INT, OFF(co_flags), READONLY}, {"co_code", T_OBJECT, OFF(co_code), READONLY}, {"co_consts", T_OBJECT, OFF(co_consts), READONLY}, {"co_names", T_OBJECT, OFF(co_names), READONLY}, - {"co_varnames", T_OBJECT, OFF(co_varnames), READONLY}, - {"co_freevars", T_OBJECT, OFF(co_freevars), READONLY}, - {"co_cellvars", T_OBJECT, OFF(co_cellvars), READONLY}, {"co_filename", T_OBJECT, OFF(co_filename), READONLY}, {"co_name", T_OBJECT, OFF(co_name), READONLY}, {"co_firstlineno", T_INT, OFF(co_firstlineno), READONLY}, @@ -1187,15 +1367,43 @@ static PyMemberDef code_memberlist[] = { }; - static PyObject * code_getlnotab(PyCodeObject *code, void *closure) { return decode_linetable(code); } +static PyObject * +code_getnlocals(PyCodeObject *code, void *closure) +{ + return PyLong_FromLong(code->co_nlocals); +} + +static PyObject * +code_getvarnames(PyCodeObject *code, void *closure) +{ + return _PyCode_GetVarnames(code); +} + +static PyObject * +code_getcellvars(PyCodeObject *code, void *closure) +{ + return _PyCode_GetCellvars(code); +} + +static PyObject * +code_getfreevars(PyCodeObject *code, void *closure) +{ + return _PyCode_GetFreevars(code); +} + static PyGetSetDef code_getsetlist[] = { {"co_lnotab", (getter)code_getlnotab, NULL, NULL}, + // The following old names are kept for backward compatibility. + {"co_nlocals", (getter)code_getnlocals, NULL, NULL}, + {"co_varnames", (getter)code_getvarnames, NULL, NULL}, + {"co_cellvars", (getter)code_getcellvars, NULL, NULL}, + {"co_freevars", (getter)code_getfreevars, NULL, NULL}, {0} }; @@ -1204,15 +1412,17 @@ static PyObject * code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args)) { Py_ssize_t res = _PyObject_SIZE(Py_TYPE(co)); - _PyCodeObjectExtra *co_extra = (_PyCodeObjectExtra*) co->co_extra; - if (co->co_cell2arg != NULL && co->co_cellvars != NULL) { - res += co->co_ncellvars * sizeof(Py_ssize_t); - } + _PyCodeObjectExtra *co_extra = (_PyCodeObjectExtra*) co->co_extra; if (co_extra != NULL) { res += sizeof(_PyCodeObjectExtra) + (co_extra->ce_size-1) * sizeof(co_extra->ce_extras[0]); } + + if (co->co_cell2arg != NULL && co->co_cellvars != NULL) { + res += co->co_ncellvars * sizeof(Py_ssize_t); + } + if (co->co_opcache != NULL) { assert(co->co_opcache_map != NULL); // co_opcache_map @@ -1220,6 +1430,7 @@ code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args)) // co_opcache res += co->co_opcache_size * sizeof(_PyOpcache); } + return PyLong_FromSsize_t(res); } @@ -1290,11 +1501,73 @@ code_replace_impl(PyCodeObject *self, int co_argcount, return NULL; } - return (PyObject *)PyCode_NewWithPosOnlyArgs( + PyObject *varnames = NULL; + PyObject *cellvars = NULL; + PyObject *freevars = NULL; + if (co_varnames == NULL) { + varnames = get_localsplus_names(self, CO_FAST_LOCAL, self->co_nlocals); + if (varnames == NULL) { + goto error; + } + co_varnames = varnames; + } + if (co_cellvars == NULL) { + cellvars = get_localsplus_names(self, CO_FAST_CELL, self->co_ncellvars); + if (cellvars == NULL) { + goto error; + } + co_cellvars = cellvars; + } + if (co_freevars == NULL) { + freevars = get_localsplus_names(self, CO_FAST_FREE, self->co_nfreevars); + if (freevars == NULL) { + goto error; + } + co_freevars = freevars; + } + + PyCodeObject *co = PyCode_NewWithPosOnlyArgs( co_argcount, co_posonlyargcount, co_kwonlyargcount, co_nlocals, co_stacksize, co_flags, (PyObject*)co_code, co_consts, co_names, co_varnames, co_freevars, co_cellvars, co_filename, co_name, co_firstlineno, (PyObject*)co_linetable, (PyObject*)co_exceptiontable); + if (co == NULL) { + goto error; + } + return (PyObject *)co; + +error: + Py_XDECREF(varnames); + Py_XDECREF(cellvars); + Py_XDECREF(freevars); + return NULL; +} + +/*[clinic input] +code._varname_from_oparg + + oparg: int + * + cell: bool = False + +(internal-only) Return the local variable name for the given oparg. + +WARNING: this method is for internal use only and may change or go away. +[clinic start generated code]*/ + +static PyObject * +code__varname_from_oparg_impl(PyCodeObject *self, int oparg, int cell) +/*[clinic end generated code: output=c7d39c9723692c8f input=2945bb291d3a3118]*/ +{ + if (cell) { + oparg += self->co_nlocals; + } + PyObject *name = PyTuple_GetItem(self->co_localsplusnames, oparg); + if (name == NULL) { + return NULL; + } + Py_INCREF(name); + return name; } /* XXX code objects need to participate in GC? */ @@ -1303,6 +1576,7 @@ static struct PyMethodDef code_methods[] = { {"__sizeof__", (PyCFunction)code_sizeof, METH_NOARGS}, {"co_lines", (PyCFunction)code_linesiterator, METH_NOARGS}, CODE_REPLACE_METHODDEF + CODE__VARNAME_FROM_OPARG_METHODDEF {NULL, NULL} /* sentinel */ }; diff --git a/Objects/frameobject.c b/Objects/frameobject.c index 1bfae90b9b2c8c..ef5ff4e6983546 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -4,6 +4,7 @@ #include "pycore_ceval.h" // _PyEval_BuiltinsFromGlobals() #include "pycore_moduleobject.h" // _PyModule_GetDict() #include "pycore_object.h" // _PyObject_GC_UNTRACK() +#include "pycore_code.h" // CO_FAST_LOCAL, etc. #include "frameobject.h" // PyFrameObject #include "pycore_frame.h" @@ -659,9 +660,9 @@ frame_traverse(PyFrameObject *f, visitproc visit, void *arg) Py_VISIT(f->f_trace); /* locals */ - PyObject **fastlocals = f->f_localsptr; - for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++fastlocals) { - Py_VISIT(*fastlocals); + PyObject **localsplus = f->f_localsptr; + for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++localsplus) { + Py_VISIT(*localsplus); } /* stack */ @@ -684,9 +685,9 @@ frame_tp_clear(PyFrameObject *f) Py_CLEAR(f->f_trace); /* locals */ - PyObject **fastlocals = f->f_localsptr; - for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++fastlocals) { - Py_CLEAR(*fastlocals); + PyObject **localsplus = f->f_localsptr; + for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++localsplus) { + Py_CLEAR(*localsplus); } /* stack */ @@ -917,112 +918,13 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, return f; } -/* Convert between "fast" version of locals and dictionary version. - - map and values are input arguments. map is a tuple of strings. - values is an array of PyObject*. At index i, map[i] is the name of - the variable with value values[i]. The function copies the first - nmap variable from map/values into dict. If values[i] is NULL, - the variable is deleted from dict. - - If deref is true, then the values being copied are cell variables - and the value is extracted from the cell variable before being put - in dict. - */ - -static int -map_to_dict(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, - int deref) -{ - Py_ssize_t j; - assert(PyTuple_Check(map)); - assert(PyDict_Check(dict)); - assert(PyTuple_Size(map) >= nmap); - for (j=0; j < nmap; j++) { - PyObject *key = PyTuple_GET_ITEM(map, j); - PyObject *value = values[j]; - assert(PyUnicode_Check(key)); - if (deref && value != NULL) { - assert(PyCell_Check(value)); - value = PyCell_GET(value); - } - if (value == NULL) { - if (PyObject_DelItem(dict, key) != 0) { - if (PyErr_ExceptionMatches(PyExc_KeyError)) - PyErr_Clear(); - else - return -1; - } - } - else { - if (PyObject_SetItem(dict, key, value) != 0) - return -1; - } - } - return 0; -} - -/* Copy values from the "locals" dict into the fast locals. - - dict is an input argument containing string keys representing - variables names and arbitrary PyObject* as values. - - map and values are input arguments. map is a tuple of strings. - values is an array of PyObject*. At index i, map[i] is the name of - the variable with value values[i]. The function copies the first - nmap variable from map/values into dict. If values[i] is NULL, - the variable is deleted from dict. - - If deref is true, then the values being copied are cell variables - and the value is extracted from the cell variable before being put - in dict. If clear is true, then variables in map but not in dict - are set to NULL in map; if clear is false, variables missing in - dict are ignored. - - Exceptions raised while modifying the dict are silently ignored, - because there is no good way to report them. -*/ - -static void -dict_to_map(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, - int deref, int clear) -{ - Py_ssize_t j; - assert(PyTuple_Check(map)); - assert(PyDict_Check(dict)); - assert(PyTuple_Size(map) >= nmap); - for (j=0; j < nmap; j++) { - PyObject *key = PyTuple_GET_ITEM(map, j); - PyObject *value = PyObject_GetItem(dict, key); - assert(PyUnicode_Check(key)); - /* We only care about NULLs if clear is true. */ - if (value == NULL) { - PyErr_Clear(); - if (!clear) - continue; - } - if (deref) { - assert(PyCell_Check(values[j])); - if (PyCell_GET(values[j]) != value) { - if (PyCell_Set(values[j], value) < 0) - PyErr_Clear(); - } - } else if (values[j] != value) { - Py_XINCREF(value); - Py_XSETREF(values[j], value); - } - Py_XDECREF(value); - } -} - int PyFrame_FastToLocalsWithError(PyFrameObject *f) { /* Merge fast locals into f->f_locals */ - PyObject *locals, *map; + PyObject *locals; PyObject **fast; PyCodeObject *co; - Py_ssize_t j; if (f == NULL) { PyErr_BadInternalCall(); @@ -1035,25 +937,9 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) return -1; } co = f->f_code; - map = co->co_varnames; - if (!PyTuple_Check(map)) { - PyErr_Format(PyExc_SystemError, - "co_varnames must be a tuple, not %s", - Py_TYPE(map)->tp_name); - return -1; - } fast = f->f_localsptr; - j = PyTuple_GET_SIZE(map); - if (j > co->co_nlocals) - j = co->co_nlocals; - if (co->co_nlocals) { - if (map_to_dict(map, j, locals, fast, 0) < 0) - return -1; - } - if (co->co_ncellvars || co->co_nfreevars) { - if (map_to_dict(co->co_cellvars, co->co_ncellvars, - locals, fast + co->co_nlocals, 1)) - return -1; + for (int i = 0; i < co->co_nlocalsplus; i++) { + _PyLocalsPlusKind kind = co->co_localspluskinds[i]; /* If the namespace is unoptimized, then one of the following cases applies: @@ -1063,10 +949,42 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) We don't want to accidentally copy free variables into the locals dict used by the class. */ - if (co->co_flags & CO_OPTIMIZED) { - if (map_to_dict(co->co_freevars, co->co_nfreevars, locals, - fast + co->co_nlocals + co->co_ncellvars, 1) < 0) + if (kind & CO_FAST_FREE && !(co->co_flags & CO_OPTIMIZED)) { + continue; + } + + /* Some args are also cells. For now each of those variables + has two indices in the fast array, with both marked as cells + but only one marked as an arg. That one is always set + to NULL in _PyEval_MakeFrameVector() and the other index + gets the cell holding the arg value. So we ignore the + former here and will later use the cell for the variable. + */ + if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { + assert(fast[i] == NULL); + continue; + } + + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); + PyObject *value = fast[i]; + if (kind & (CO_FAST_CELL | CO_FAST_FREE) && value != NULL) { + assert(PyCell_Check(value)); + value = PyCell_GET(value); + } + if (value == NULL) { + if (PyObject_DelItem(locals, name) != 0) { + if (PyErr_ExceptionMatches(PyExc_KeyError)) { + PyErr_Clear(); + } + else { + return -1; + } + } + } + else { + if (PyObject_SetItem(locals, name, value) != 0) { return -1; + } } } return 0; @@ -1088,36 +1006,51 @@ void PyFrame_LocalsToFast(PyFrameObject *f, int clear) { /* Merge locals into fast locals */ - PyObject *locals, *map; + PyObject *locals; PyObject **fast; PyObject *error_type, *error_value, *error_traceback; PyCodeObject *co; - Py_ssize_t j; if (f == NULL) return; locals = _PyFrame_Specials(f)[FRAME_SPECIALS_LOCALS_OFFSET]; - co = f->f_code; - map = co->co_varnames; if (locals == NULL) return; - if (!PyTuple_Check(map)) - return; - PyErr_Fetch(&error_type, &error_value, &error_traceback); fast = f->f_localsptr; - j = PyTuple_GET_SIZE(map); - if (j > co->co_nlocals) - j = co->co_nlocals; - if (co->co_nlocals) - dict_to_map(co->co_varnames, j, locals, fast, 0, clear); - if (co->co_ncellvars || co->co_nfreevars) { - dict_to_map(co->co_cellvars, co->co_ncellvars, - locals, fast + co->co_nlocals, 1, clear); + co = f->f_code; + + PyErr_Fetch(&error_type, &error_value, &error_traceback); + for (int i = 0; i < co->co_nlocalsplus; i++) { + _PyLocalsPlusKind kind = co->co_localspluskinds[i]; + + /* Same test as in PyFrame_FastToLocals() above. */ + if (kind & CO_FAST_FREE && !(co->co_flags & CO_OPTIMIZED)) { + continue; + } /* Same test as in PyFrame_FastToLocals() above. */ - if (co->co_flags & CO_OPTIMIZED) { - dict_to_map(co->co_freevars, co->co_nfreevars, locals, - fast + co->co_nlocals + co->co_ncellvars, 1, - clear); + if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { + continue; } + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); + PyObject *value = PyObject_GetItem(locals, name); + /* We only care about NULLs if clear is true. */ + if (value == NULL) { + PyErr_Clear(); + if (!clear) { + continue; + } + } + if (kind & (CO_FAST_CELL | CO_FAST_FREE)) { + assert(PyCell_Check(fast[i])); + if (PyCell_GET(fast[i]) != value) { + if (PyCell_Set(fast[i], value) < 0) { + PyErr_Clear(); + } + } + } else if (fast[i] != value) { + Py_XINCREF(value); + Py_XSETREF(fast[i], value); + } + Py_XDECREF(value); } PyErr_Restore(error_type, error_value, error_traceback); } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index bf792e21c162dd..bd2cade3bd68b4 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2,6 +2,7 @@ #include "Python.h" #include "pycore_call.h" +#include "pycore_code.h" // CO_FAST_FREE #include "pycore_compile.h" // _Py_Mangle() #include "pycore_initconfig.h" #include "pycore_moduleobject.h" // _PyModule_GetDef() @@ -8894,13 +8895,15 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, return -1; } + // Look for __class__ in the free vars. PyTypeObject *type = NULL; - for (i = 0; i < co->co_nfreevars; i++) { - PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i); + i = co->co_nlocals + co->co_ncellvars; + for (; i < co->co_nlocalsplus; i++) { + assert(co->co_localspluskinds[i] & CO_FAST_FREE); + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); assert(PyUnicode_Check(name)); if (_PyUnicode_EqualToASCIIId(name, &PyId___class__)) { - Py_ssize_t index = co->co_nlocals + co->co_ncellvars + i; - PyObject *cell = f->f_localsptr[index]; + PyObject *cell = f->f_localsptr[i]; if (cell == NULL || !PyCell_Check(cell)) { PyErr_SetString(PyExc_RuntimeError, "super(): bad __class__ cell"); diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index f5140b8a806b49..5757c150343087 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -19,10 +19,9 @@ unsigned char M_test_frozenmain[] = { 121,115,90,17,95,116,101,115,116,105,110,116,101,114,110,97, 108,99,97,112,105,218,5,112,114,105,110,116,218,4,97,114, 103,118,90,11,103,101,116,95,99,111,110,102,105,103,115,114, - 2,0,0,0,218,3,107,101,121,169,0,114,8,0,0,0, - 114,8,0,0,0,250,18,116,101,115,116,95,102,114,111,122, - 101,110,109,97,105,110,46,112,121,218,8,60,109,111,100,117, - 108,101,62,1,0,0,0,115,16,0,0,0,8,3,8,1, - 8,2,12,1,12,1,8,1,26,7,4,249,243,0,0,0, - 0, + 2,0,0,0,218,3,107,101,121,169,0,250,18,116,101,115, + 116,95,102,114,111,122,101,110,109,97,105,110,46,112,121,218, + 8,60,109,111,100,117,108,101,62,1,0,0,0,115,16,0, + 0,0,8,3,8,1,8,2,12,1,12,1,8,1,26,7, + 4,249,243,0,0,0,0, }; diff --git a/Python/ceval.c b/Python/ceval.c index 4dff7bd2df9834..4e16322daa5092 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1438,7 +1438,7 @@ eval_frame_handle_pending(PyThreadState *tstate) /* Local variable macros */ -#define GETLOCAL(i) (fastlocals[i]) +#define GETLOCAL(i) (localsplus[i]) /* The SETLOCAL() macro must not DECREF the local variable in-place and then store the new value; it must copy the old value to a temporary @@ -1569,7 +1569,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) const _Py_CODEUNIT *next_instr; int opcode; /* Current opcode */ int oparg; /* Current opcode argument, if any */ - PyObject **fastlocals, **freevars, **specials; + PyObject **localsplus, **freevars, **specials; PyObject *retval = NULL; /* Return value */ _Py_atomic_int * const eval_breaker = &tstate->interp->ceval.eval_breaker; PyCodeObject *co; @@ -1646,7 +1646,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) names = co->co_names; consts = co->co_consts; - fastlocals = f->f_localsptr; + localsplus = f->f_localsptr; freevars = f->f_localsptr + co->co_nlocals; assert(PyBytes_Check(co->co_code)); assert(PyBytes_GET_SIZE(co->co_code) <= INT_MAX); @@ -1825,7 +1825,8 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) if (value == NULL) { format_exc_check_arg(tstate, PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, - PyTuple_GetItem(co->co_varnames, oparg)); + PyTuple_GetItem(co->co_localsplusnames, + oparg)); goto error; } Py_INCREF(value); @@ -3053,7 +3054,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) format_exc_check_arg( tstate, PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, - PyTuple_GetItem(co->co_varnames, oparg) + PyTuple_GetItem(co->co_localsplusnames, oparg) ); goto error; } @@ -3082,9 +3083,9 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) Py_ssize_t idx; assert(locals); assert(oparg >= co->co_ncellvars); - idx = oparg - co->co_ncellvars; - assert(idx >= 0 && idx < co->co_nfreevars); - name = PyTuple_GET_ITEM(co->co_freevars, idx); + idx = oparg + co->co_nlocals; + assert(idx < co->co_nlocalsplus); + name = PyTuple_GET_ITEM(co->co_localsplusnames, idx); if (PyDict_CheckExact(locals)) { value = PyDict_GetItemWithError(locals, name); if (value != NULL) { @@ -4636,7 +4637,7 @@ format_missing(PyThreadState *tstate, const char *kind, static void missing_arguments(PyThreadState *tstate, PyCodeObject *co, Py_ssize_t missing, Py_ssize_t defcount, - PyObject **fastlocals, PyObject *qualname) + PyObject **localsplus, PyObject *qualname) { Py_ssize_t i, j = 0; Py_ssize_t start, end; @@ -4658,7 +4659,7 @@ missing_arguments(PyThreadState *tstate, PyCodeObject *co, } for (i = start; i < end; i++) { if (GETLOCAL(i) == NULL) { - PyObject *raw = PyTuple_GET_ITEM(co->co_varnames, i); + PyObject *raw = PyTuple_GET_ITEM(co->co_localsplusnames, i); PyObject *name = PyObject_Repr(raw); if (name == NULL) { Py_DECREF(missing_names); @@ -4675,7 +4676,7 @@ missing_arguments(PyThreadState *tstate, PyCodeObject *co, static void too_many_positional(PyThreadState *tstate, PyCodeObject *co, Py_ssize_t given, PyObject *defaults, - PyObject **fastlocals, PyObject *qualname) + PyObject **localsplus, PyObject *qualname) { int plural; Py_ssize_t kwonly_given = 0; @@ -4739,7 +4740,7 @@ positional_only_passed_as_keyword(PyThreadState *tstate, PyCodeObject *co, PyObject* posonly_names = PyList_New(0); for(int k=0; k < co->co_posonlyargcount; k++){ - PyObject* posonly_name = PyTuple_GET_ITEM(co->co_varnames, k); + PyObject* posonly_name = PyTuple_GET_ITEM(co->co_localsplusnames, k); for (int k2=0; k2fc_code; const Py_ssize_t total_args = co->co_argcount + co->co_kwonlyargcount; - PyObject **freevars = fastlocals + co->co_nlocals; + PyObject **freevars = localsplus + co->co_nlocals; /* Create a dictionary for keyword parameters (**kwags) */ PyObject *kwdict; @@ -4941,7 +4942,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, /* Speed hack: do raw pointer compares. As names are normally interned this should almost always hit. */ - co_varnames = ((PyTupleObject *)(co->co_varnames))->ob_item; + co_varnames = ((PyTupleObject *)(co->co_localsplusnames))->ob_item; for (j = co->co_posonlyargcount; j < total_args; j++) { PyObject *varname = co_varnames[j]; if (varname == keyword) { @@ -4997,7 +4998,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, /* Check the number of positional arguments */ if ((argcount > co->co_argcount) && !(co->co_flags & CO_VARARGS)) { - too_many_positional(tstate, co, argcount, con->fc_defaults, fastlocals, + too_many_positional(tstate, co, argcount, con->fc_defaults, localsplus, con->fc_qualname); goto fail; } @@ -5013,7 +5014,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, } } if (missing) { - missing_arguments(tstate, co, missing, defcount, fastlocals, + missing_arguments(tstate, co, missing, defcount, localsplus, con->fc_qualname); goto fail; } @@ -5039,7 +5040,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, for (i = co->co_argcount; i < total_args; i++) { if (GETLOCAL(i) != NULL) continue; - PyObject *varname = PyTuple_GET_ITEM(co->co_varnames, i); + PyObject *varname = PyTuple_GET_ITEM(co->co_localsplusnames, i); if (con->fc_kwdefaults != NULL) { PyObject *def = PyDict_GetItemWithError(con->fc_kwdefaults, varname); if (def) { @@ -5054,12 +5055,13 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, missing++; } if (missing) { - missing_arguments(tstate, co, missing, -1, fastlocals, + missing_arguments(tstate, co, missing, -1, localsplus, con->fc_qualname); goto fail; } } + /* Allocate and initialize storage for cell vars, and copy free vars into frame. */ for (i = 0; i < co->co_ncellvars; ++i) { @@ -6417,15 +6419,11 @@ format_exc_unbound(PyThreadState *tstate, PyCodeObject *co, int oparg) /* Don't stomp existing exception */ if (_PyErr_Occurred(tstate)) return; + name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg + co->co_nlocals); if (oparg < co->co_ncellvars) { - name = PyTuple_GET_ITEM(co->co_cellvars, - oparg); - format_exc_check_arg(tstate, - PyExc_UnboundLocalError, - UNBOUNDLOCAL_ERROR_MSG, - name); + format_exc_check_arg(tstate, PyExc_UnboundLocalError, + UNBOUNDLOCAL_ERROR_MSG, name); } else { - name = PyTuple_GET_ITEM(co->co_freevars, oparg - co->co_ncellvars); format_exc_check_arg(tstate, PyExc_NameError, UNBOUNDFREE_ERROR_MSG, name); } @@ -6467,7 +6465,7 @@ unicode_concatenate(PyThreadState *tstate, PyObject *v, PyObject *w, switch (opcode) { case STORE_FAST: { - PyObject **fastlocals = f->f_localsptr; + PyObject **localsplus = f->f_localsptr; if (GETLOCAL(oparg) == v) SETLOCAL(oparg, NULL); break; diff --git a/Python/compile.c b/Python/compile.c index 03d522b34f113b..b0c9f3c4d561c9 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2047,16 +2047,16 @@ static int compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, PyObject *qualname) { - Py_ssize_t i, free = PyCode_GetNumFree(co); if (qualname == NULL) qualname = co->co_name; - if (free) { - for (i = 0; i < free; ++i) { + if (co->co_nfreevars) { + int i = co->co_nlocals + co->co_ncellvars; + for (; i < co->co_nlocalsplus; ++i) { /* Bypass com_addop_varname because it will generate LOAD_DEREF but LOAD_CLOSURE is needed. */ - PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i); + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); /* Special case: If a class contains a method with a free variable that has the same name as a method, @@ -2076,6 +2076,10 @@ compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, arg = compiler_lookup_arg(c->u->u_freevars, name); } if (arg == -1) { + PyObject *freevars = _PyCode_GetFreevars(co); + if (freevars == NULL) { + PyErr_Clear(); + } PyErr_Format(PyExc_SystemError, "compiler_lookup_arg(name=%R) with reftype=%d failed in %S; " "freevars of code %S: %R", @@ -2083,13 +2087,13 @@ compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, reftype, c->u->u_name, co->co_name, - co->co_freevars); + freevars); return 0; } ADDOP_I(c, LOAD_CLOSURE, arg); } flags |= 0x08; - ADDOP_I(c, BUILD_TUPLE, free); + ADDOP_I(c, BUILD_TUPLE, co->co_nfreevars); } ADDOP_LOAD_CONST(c, (PyObject*)co); ADDOP_LOAD_CONST(c, qualname); @@ -7176,6 +7180,46 @@ merge_const_one(struct compiler *c, PyObject **obj) return 1; } +// This is in codeobject.c. +extern void _Py_set_localsplus_info(int, PyObject *, _PyLocalsPlusKind, + PyObject *, _PyLocalsPlusKinds); + +static void +compute_localsplus_info(struct compiler *c, + PyObject *names, _PyLocalsPlusKinds kinds) +{ + int nlocalsplus = (int)PyTuple_GET_SIZE(names); + + PyObject *k, *v; + Py_ssize_t pos = 0; + while (PyDict_Next(c->u->u_varnames, &pos, &k, &v)) { + int offset = (int)PyLong_AS_LONG(v); + assert(offset >= 0); + assert(offset < nlocalsplus); + // For now we do not distinguish arg kinds. + _Py_set_localsplus_info(offset, k, CO_FAST_LOCAL, names, kinds); + } + int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); + + pos = 0; + while (PyDict_Next(c->u->u_cellvars, &pos, &k, &v)) { + int offset = (int)PyLong_AS_LONG(v); + assert(offset >= 0); + offset += nlocals; + assert(offset < nlocalsplus); + _Py_set_localsplus_info(offset, k, CO_FAST_CELL, names, kinds); + } + + pos = 0; + while (PyDict_Next(c->u->u_freevars, &pos, &k, &v)) { + int offset = (int)PyLong_AS_LONG(v); + assert(offset >= 0); + offset += nlocals; + assert(offset < nlocalsplus); + _Py_set_localsplus_info(offset, k, CO_FAST_FREE, names, kinds); + } +} + static PyCodeObject * makecode(struct compiler *c, struct assembler *a, PyObject *constslist, int maxdepth) @@ -7183,36 +7227,22 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, PyCodeObject *co = NULL; PyObject *names = NULL; PyObject *consts = NULL; - PyObject *varnames = NULL; + PyObject *localsplusnames = NULL; + _PyLocalsPlusKinds localspluskinds = NULL; PyObject *name = NULL; - PyObject *freevars = NULL; - PyObject *cellvars = NULL; - int flags; - int posorkeywordargcount, posonlyargcount, kwonlyargcount; names = dict_keys_inorder(c->u->u_names, 0); - varnames = dict_keys_inorder(c->u->u_varnames, 0); - if (!names || !varnames) { + if (!names) { goto error; } - cellvars = dict_keys_inorder(c->u->u_cellvars, 0); - if (!cellvars) - goto error; - freevars = dict_keys_inorder(c->u->u_freevars, PyTuple_GET_SIZE(cellvars)); - if (!freevars) - goto error; - - if (!merge_const_one(c, &names) || - !merge_const_one(c, &varnames) || - !merge_const_one(c, &cellvars) || - !merge_const_one(c, &freevars)) - { + if (!merge_const_one(c, &names)) { goto error; } - flags = compute_code_flags(c); - if (flags < 0) + int flags = compute_code_flags(c); + if (flags < 0) { goto error; + } consts = PyList_AsTuple(constslist); /* PyCode_New requires a tuple */ if (consts == NULL) { @@ -7222,9 +7252,32 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, goto error; } - posonlyargcount = Py_SAFE_DOWNCAST(c->u->u_posonlyargcount, Py_ssize_t, int); - posorkeywordargcount = Py_SAFE_DOWNCAST(c->u->u_argcount, Py_ssize_t, int); - kwonlyargcount = Py_SAFE_DOWNCAST(c->u->u_kwonlyargcount, Py_ssize_t, int); + assert(c->u->u_posonlyargcount < INT_MAX); + assert(c->u->u_argcount < INT_MAX); + assert(c->u->u_kwonlyargcount < INT_MAX); + int posonlyargcount = (int)c->u->u_posonlyargcount; + int posorkwargcount = (int)c->u->u_argcount; + assert(INT_MAX - posonlyargcount - posorkwargcount > 0); + int kwonlyargcount = (int)c->u->u_kwonlyargcount; + + Py_ssize_t nlocals = PyDict_GET_SIZE(c->u->u_varnames); + Py_ssize_t ncellvars = PyDict_GET_SIZE(c->u->u_cellvars); + Py_ssize_t nfreevars = PyDict_GET_SIZE(c->u->u_freevars); + assert(nlocals < INT_MAX); + assert(ncellvars < INT_MAX); + assert(nfreevars < INT_MAX); + assert(INT_MAX - nlocals - ncellvars - nfreevars > 0); + int nlocalsplus = (int)nlocals + (int)ncellvars + (int)nfreevars; + + localsplusnames = PyTuple_New(nlocalsplus); + if (localsplusnames == NULL) { + goto error; + } + if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { + goto error; + } + compute_localsplus_info(c, localsplusnames, localspluskinds); + struct _PyCodeConstructor con = { .filename = c->c_filename, .name = c->u->u_name, @@ -7237,11 +7290,10 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, .consts = consts, .names = names, - .varnames = varnames, - .cellvars = cellvars, - .freevars = freevars, + .localsplusnames = localsplusnames, + .localspluskinds = localspluskinds, - .argcount = posonlyargcount + posorkeywordargcount, + .argcount = posonlyargcount + posorkwargcount, .posonlyargcount = posonlyargcount, .kwonlyargcount = kwonlyargcount, @@ -7249,18 +7301,30 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, .exceptiontable = a->a_except_table, }; + if (_PyCode_Validate(&con) < 0) { goto error; } + + if (!merge_const_one(c, &localsplusnames)) { + _PyCode_ClearLocalsPlusKinds(con.localspluskinds); + goto error; + } + con.localsplusnames = localsplusnames; + co = _PyCode_New(&con); + if (co == NULL) { + goto error; + } + + localspluskinds = NULL; // This keeps it from getting freed below. error: Py_XDECREF(names); Py_XDECREF(consts); - Py_XDECREF(varnames); + Py_XDECREF(localsplusnames); + _PyCode_ClearLocalsPlusKinds(localspluskinds); Py_XDECREF(name); - Py_XDECREF(freevars); - Py_XDECREF(cellvars); return co; } diff --git a/Python/frozen_hello.h b/Python/frozen_hello.h index 967dd053dd0278..1e150630161f53 100644 --- a/Python/frozen_hello.h +++ b/Python/frozen_hello.h @@ -5,8 +5,7 @@ const unsigned char _Py_M__hello[] = { 100,1,131,1,1,0,100,2,83,0,41,3,84,122,12,72, 101,108,108,111,32,119,111,114,108,100,33,78,41,2,90,11, 105,110,105,116,105,97,108,105,122,101,100,218,5,112,114,105, - 110,116,169,0,114,1,0,0,0,114,1,0,0,0,122,14, - 60,102,114,111,122,101,110,32,104,101,108,108,111,62,218,8, - 60,109,111,100,117,108,101,62,1,0,0,0,115,4,0,0, - 0,4,0,12,1,243,0,0,0,0, + 110,116,169,0,122,14,60,102,114,111,122,101,110,32,104,101, + 108,108,111,62,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,4,0,0,0,4,0,12,1,243,0,0,0,0, }; diff --git a/Python/importlib.h b/Python/importlib.h index 8637b097135ed7..77b0bf78bf1522 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -59,94 +59,91 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 106,0,6,0,89,0,83,0,37,0,119,0,169,1,78,41, 3,218,12,95,95,113,117,97,108,110,97,109,101,95,95,218, 14,65,116,116,114,105,98,117,116,101,69,114,114,111,114,218, - 4,116,121,112,101,41,1,218,3,111,98,106,169,0,114,5, - 0,0,0,250,29,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,218,12,95,111,98,106,101,99,116,95,110,97,109,101, - 23,0,0,0,115,14,0,0,0,2,1,6,1,2,128,12, - 1,14,1,2,128,2,255,115,12,0,0,0,129,2,4,0, - 132,12,18,7,147,1,18,7,114,7,0,0,0,78,99,2, - 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,67, - 0,0,0,115,56,0,0,0,100,1,68,0,93,16,125,2, - 116,0,124,1,124,2,131,2,114,18,116,1,124,0,124,2, - 116,2,124,1,124,2,131,2,131,3,1,0,113,2,124,0, - 106,3,160,4,124,1,106,3,161,1,1,0,100,2,83,0, - 41,3,122,47,83,105,109,112,108,101,32,115,117,98,115,116, - 105,116,117,116,101,32,102,111,114,32,102,117,110,99,116,111, - 111,108,115,46,117,112,100,97,116,101,95,119,114,97,112,112, - 101,114,46,41,4,218,10,95,95,109,111,100,117,108,101,95, - 95,218,8,95,95,110,97,109,101,95,95,114,1,0,0,0, - 218,7,95,95,100,111,99,95,95,78,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,218,7,114,101,112,108,97,99,101,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,5,95, - 119,114,97,112,40,0,0,0,115,10,0,0,0,8,2,10, - 1,18,1,2,128,18,1,243,0,0,0,0,114,17,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,67,0,0,0,115,12,0,0,0,116,0,116,1,131, - 1,124,0,131,1,83,0,114,0,0,0,0,41,2,114,3, - 0,0,0,218,3,115,121,115,169,1,218,4,110,97,109,101, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 11,95,110,101,119,95,109,111,100,117,108,101,48,0,0,0, - 115,2,0,0,0,12,1,114,18,0,0,0,114,22,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,64,0,0,0,115,12,0,0,0,101,0,90,1,100, - 0,90,2,100,1,83,0,41,2,218,14,95,68,101,97,100, - 108,111,99,107,69,114,114,111,114,78,41,3,114,9,0,0, - 0,114,8,0,0,0,114,1,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 23,0,0,0,61,0,0,0,115,4,0,0,0,8,0,4, - 1,114,18,0,0,0,114,23,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0, - 115,56,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,83,0,41,13,218, - 11,95,77,111,100,117,108,101,76,111,99,107,122,169,65,32, - 114,101,99,117,114,115,105,118,101,32,108,111,99,107,32,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,32,119,104, - 105,99,104,32,105,115,32,97,98,108,101,32,116,111,32,100, - 101,116,101,99,116,32,100,101,97,100,108,111,99,107,115,10, - 32,32,32,32,40,101,46,103,46,32,116,104,114,101,97,100, - 32,49,32,116,114,121,105,110,103,32,116,111,32,116,97,107, - 101,32,108,111,99,107,115,32,65,32,116,104,101,110,32,66, - 44,32,97,110,100,32,116,104,114,101,97,100,32,50,32,116, - 114,121,105,110,103,32,116,111,10,32,32,32,32,116,97,107, - 101,32,108,111,99,107,115,32,66,32,116,104,101,110,32,65, - 41,46,10,32,32,32,32,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,67,0,0,0,115,48,0,0, - 0,116,0,160,1,161,0,124,0,95,2,116,0,160,1,161, - 0,124,0,95,3,124,1,124,0,95,4,100,0,124,0,95, - 5,100,1,124,0,95,6,100,1,124,0,95,7,100,0,83, - 0,169,2,78,233,0,0,0,0,41,8,218,7,95,116,104, - 114,101,97,100,90,13,97,108,108,111,99,97,116,101,95,108, - 111,99,107,218,4,108,111,99,107,218,6,119,97,107,101,117, - 112,114,21,0,0,0,218,5,111,119,110,101,114,218,5,99, - 111,117,110,116,218,7,119,97,105,116,101,114,115,169,2,218, - 4,115,101,108,102,114,21,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,8,95,95,105,110,105, - 116,95,95,71,0,0,0,115,12,0,0,0,10,1,10,1, - 6,1,6,1,6,1,10,1,114,18,0,0,0,122,20,95, - 77,111,100,117,108,101,76,111,99,107,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,86,0,0,0,116,0,160, - 1,161,0,125,1,124,0,106,2,125,2,116,3,131,0,125, - 3,9,0,116,4,160,5,124,2,161,1,125,4,124,4,100, - 0,117,0,114,22,100,2,83,0,124,4,106,2,125,2,124, - 2,124,1,107,2,114,31,100,1,83,0,124,2,124,3,118, - 0,114,37,100,2,83,0,124,3,160,6,124,2,161,1,1, - 0,113,11,41,3,78,84,70,41,7,114,27,0,0,0,218, - 9,103,101,116,95,105,100,101,110,116,114,30,0,0,0,218, - 3,115,101,116,218,12,95,98,108,111,99,107,105,110,103,95, - 111,110,218,3,103,101,116,218,3,97,100,100,41,5,114,34, - 0,0,0,90,2,109,101,218,3,116,105,100,90,4,115,101, - 101,110,114,28,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,12,104,97,115,95,100,101,97,100, + 4,116,121,112,101,41,1,218,3,111,98,106,32,250,29,60, + 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, + 46,95,98,111,111,116,115,116,114,97,112,62,218,12,95,111, + 98,106,101,99,116,95,110,97,109,101,23,0,0,0,115,14, + 0,0,0,2,1,6,1,2,128,12,1,14,1,2,128,2, + 255,115,12,0,0,0,129,2,4,0,132,12,18,7,147,1, + 18,7,114,6,0,0,0,78,99,2,0,0,0,0,0,0, + 0,0,0,0,0,7,0,0,0,67,0,0,0,115,56,0, + 0,0,100,1,68,0,93,16,125,2,116,0,124,1,124,2, + 131,2,114,18,116,1,124,0,124,2,116,2,124,1,124,2, + 131,2,131,3,1,0,113,2,124,0,106,3,160,4,124,1, + 106,3,161,1,1,0,100,2,83,0,41,3,122,47,83,105, + 109,112,108,101,32,115,117,98,115,116,105,116,117,116,101,32, + 102,111,114,32,102,117,110,99,116,111,111,108,115,46,117,112, + 100,97,116,101,95,119,114,97,112,112,101,114,46,41,4,218, + 10,95,95,109,111,100,117,108,101,95,95,218,8,95,95,110, + 97,109,101,95,95,114,1,0,0,0,218,7,95,95,100,111, + 99,95,95,78,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,218, + 7,114,101,112,108,97,99,101,32,32,32,114,5,0,0,0, + 218,5,95,119,114,97,112,40,0,0,0,115,10,0,0,0, + 8,2,10,1,18,1,2,128,18,1,243,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,67,0,0,0,115,12,0,0,0,116,0, + 116,1,131,1,124,0,131,1,83,0,114,0,0,0,0,41, + 2,114,3,0,0,0,218,3,115,121,115,169,1,218,4,110, + 97,109,101,32,114,5,0,0,0,218,11,95,110,101,119,95, + 109,111,100,117,108,101,48,0,0,0,115,2,0,0,0,12, + 1,114,17,0,0,0,114,21,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0, + 115,12,0,0,0,101,0,90,1,100,0,90,2,100,1,83, + 0,41,2,218,14,95,68,101,97,100,108,111,99,107,69,114, + 114,111,114,78,41,3,114,8,0,0,0,114,7,0,0,0, + 114,1,0,0,0,169,0,114,5,0,0,0,114,22,0,0, + 0,61,0,0,0,115,4,0,0,0,8,0,4,1,114,17, + 0,0,0,114,22,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,64,0,0,0,115,56,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,83,0,41,13,218,11,95,77, + 111,100,117,108,101,76,111,99,107,122,169,65,32,114,101,99, + 117,114,115,105,118,101,32,108,111,99,107,32,105,109,112,108, + 101,109,101,110,116,97,116,105,111,110,32,119,104,105,99,104, + 32,105,115,32,97,98,108,101,32,116,111,32,100,101,116,101, + 99,116,32,100,101,97,100,108,111,99,107,115,10,32,32,32, + 32,40,101,46,103,46,32,116,104,114,101,97,100,32,49,32, + 116,114,121,105,110,103,32,116,111,32,116,97,107,101,32,108, + 111,99,107,115,32,65,32,116,104,101,110,32,66,44,32,97, + 110,100,32,116,104,114,101,97,100,32,50,32,116,114,121,105, + 110,103,32,116,111,10,32,32,32,32,116,97,107,101,32,108, + 111,99,107,115,32,66,32,116,104,101,110,32,65,41,46,10, + 32,32,32,32,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,67,0,0,0,115,48,0,0,0,116,0, + 160,1,161,0,124,0,95,2,116,0,160,1,161,0,124,0, + 95,3,124,1,124,0,95,4,100,0,124,0,95,5,100,1, + 124,0,95,6,100,1,124,0,95,7,100,0,83,0,169,2, + 78,233,0,0,0,0,41,8,218,7,95,116,104,114,101,97, + 100,90,13,97,108,108,111,99,97,116,101,95,108,111,99,107, + 218,4,108,111,99,107,218,6,119,97,107,101,117,112,114,20, + 0,0,0,218,5,111,119,110,101,114,218,5,99,111,117,110, + 116,218,7,119,97,105,116,101,114,115,169,2,218,4,115,101, + 108,102,114,20,0,0,0,32,32,114,5,0,0,0,218,8, + 95,95,105,110,105,116,95,95,71,0,0,0,115,12,0,0, + 0,10,1,10,1,6,1,6,1,6,1,10,1,114,17,0, + 0,0,122,20,95,77,111,100,117,108,101,76,111,99,107,46, + 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,67,0,0,0,115,86,0, + 0,0,116,0,160,1,161,0,125,1,124,0,106,2,125,2, + 116,3,131,0,125,3,9,0,116,4,160,5,124,2,161,1, + 125,4,124,4,100,0,117,0,114,22,100,2,83,0,124,4, + 106,2,125,2,124,2,124,1,107,2,114,31,100,1,83,0, + 124,2,124,3,118,0,114,37,100,2,83,0,124,3,160,6, + 124,2,161,1,1,0,113,11,41,3,78,84,70,41,7,114, + 27,0,0,0,218,9,103,101,116,95,105,100,101,110,116,114, + 30,0,0,0,218,3,115,101,116,218,12,95,98,108,111,99, + 107,105,110,103,95,111,110,218,3,103,101,116,218,3,97,100, + 100,41,5,114,34,0,0,0,90,2,109,101,218,3,116,105, + 100,90,4,115,101,101,110,114,28,0,0,0,32,32,32,32, + 32,114,5,0,0,0,218,12,104,97,115,95,100,101,97,100, 108,111,99,107,79,0,0,0,115,28,0,0,0,8,2,6, 1,6,1,2,1,10,1,8,1,4,1,6,1,8,1,4, - 1,8,1,4,6,10,1,2,242,114,18,0,0,0,122,24, + 1,8,1,4,6,10,1,2,242,114,17,0,0,0,122,24, 95,77,111,100,117,108,101,76,111,99,107,46,104,97,115,95, 100,101,97,100,108,111,99,107,99,1,0,0,0,0,0,0, 0,0,0,0,0,9,0,0,0,67,0,0,0,115,204,0, @@ -179,38 +176,37 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 107,32,100,101,116,101,99,116,101,100,32,98,121,32,37,114, 70,41,12,114,27,0,0,0,114,36,0,0,0,114,38,0, 0,0,114,28,0,0,0,114,31,0,0,0,114,30,0,0, - 0,114,42,0,0,0,114,23,0,0,0,114,29,0,0,0, + 0,114,42,0,0,0,114,22,0,0,0,114,29,0,0,0, 218,7,97,99,113,117,105,114,101,114,32,0,0,0,218,7, 114,101,108,101,97,115,101,169,2,114,34,0,0,0,114,41, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,44,0,0,0,100,0,0,0,115,44,0,0,0, - 8,6,8,1,2,1,2,1,8,1,20,1,6,1,14,1, - 2,1,10,252,10,13,8,248,12,1,12,1,14,1,12,248, - 22,128,10,10,10,1,2,244,2,128,10,14,115,56,0,0, - 0,137,4,65,32,0,141,22,65,10,3,163,5,65,32,0, - 173,23,65,10,3,193,4,6,65,32,0,193,10,4,65,14, - 11,193,14,1,65,32,0,193,15,3,65,14,11,193,18,14, - 65,32,0,193,32,5,65,37,7,122,19,95,77,111,100,117, - 108,101,76,111,99,107,46,97,99,113,117,105,114,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, - 0,0,0,115,148,0,0,0,116,0,160,1,161,0,125,1, - 124,0,106,2,53,0,1,0,124,0,106,3,124,1,107,3, - 114,17,116,4,100,1,131,1,130,1,124,0,106,5,100,2, - 107,4,115,24,74,0,130,1,124,0,4,0,106,5,100,3, - 56,0,2,0,95,5,124,0,106,5,100,2,107,2,114,54, - 100,0,124,0,95,3,124,0,106,6,114,54,124,0,4,0, - 106,6,100,3,56,0,2,0,95,6,124,0,106,7,160,8, - 161,0,1,0,100,0,4,0,4,0,131,3,1,0,100,0, - 83,0,35,0,49,0,115,66,119,4,37,0,1,0,1,0, - 1,0,89,0,1,0,1,0,100,0,83,0,41,4,78,250, - 31,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32, - 117,110,45,97,99,113,117,105,114,101,100,32,108,111,99,107, - 114,26,0,0,0,114,43,0,0,0,41,9,114,27,0,0, - 0,114,36,0,0,0,114,28,0,0,0,114,30,0,0,0, - 218,12,82,117,110,116,105,109,101,69,114,114,111,114,114,31, - 0,0,0,114,32,0,0,0,114,29,0,0,0,114,45,0, - 0,0,114,46,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,45,0,0,0,125,0,0,0,115, + 0,0,0,32,32,114,5,0,0,0,114,44,0,0,0,100, + 0,0,0,115,44,0,0,0,8,6,8,1,2,1,2,1, + 8,1,20,1,6,1,14,1,2,1,10,252,10,13,8,248, + 12,1,12,1,14,1,12,248,22,128,10,10,10,1,2,244, + 2,128,10,14,115,56,0,0,0,137,4,65,32,0,141,22, + 65,10,3,163,5,65,32,0,173,23,65,10,3,193,4,6, + 65,32,0,193,10,4,65,14,11,193,14,1,65,32,0,193, + 15,3,65,14,11,193,18,14,65,32,0,193,32,5,65,37, + 7,122,19,95,77,111,100,117,108,101,76,111,99,107,46,97, + 99,113,117,105,114,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,67,0,0,0,115,148,0,0,0, + 116,0,160,1,161,0,125,1,124,0,106,2,53,0,1,0, + 124,0,106,3,124,1,107,3,114,17,116,4,100,1,131,1, + 130,1,124,0,106,5,100,2,107,4,115,24,74,0,130,1, + 124,0,4,0,106,5,100,3,56,0,2,0,95,5,124,0, + 106,5,100,2,107,2,114,54,100,0,124,0,95,3,124,0, + 106,6,114,54,124,0,4,0,106,6,100,3,56,0,2,0, + 95,6,124,0,106,7,160,8,161,0,1,0,100,0,4,0, + 4,0,131,3,1,0,100,0,83,0,35,0,49,0,115,66, + 119,4,37,0,1,0,1,0,1,0,89,0,1,0,1,0, + 100,0,83,0,41,4,78,250,31,99,97,110,110,111,116,32, + 114,101,108,101,97,115,101,32,117,110,45,97,99,113,117,105, + 114,101,100,32,108,111,99,107,114,26,0,0,0,114,43,0, + 0,0,41,9,114,27,0,0,0,114,36,0,0,0,114,28, + 0,0,0,114,30,0,0,0,218,12,82,117,110,116,105,109, + 101,69,114,114,111,114,114,31,0,0,0,114,32,0,0,0, + 114,29,0,0,0,114,45,0,0,0,114,46,0,0,0,32, + 32,114,5,0,0,0,114,45,0,0,0,125,0,0,0,115, 28,0,0,0,8,1,8,1,10,1,8,1,14,1,14,1, 10,1,6,1,6,1,14,1,10,1,14,247,22,128,4,0, 115,15,0,0,0,135,47,61,3,189,4,65,1,11,193,2, @@ -220,70 +216,66 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, 1,161,2,83,0,41,2,78,122,23,95,77,111,100,117,108, 101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,123, - 125,169,3,218,6,102,111,114,109,97,116,114,21,0,0,0, - 218,2,105,100,169,1,114,34,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,8,95,95,114,101, - 112,114,95,95,138,0,0,0,243,2,0,0,0,18,1,114, - 18,0,0,0,122,20,95,77,111,100,117,108,101,76,111,99, - 107,46,95,95,114,101,112,114,95,95,78,41,9,114,9,0, - 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, - 0,114,35,0,0,0,114,42,0,0,0,114,44,0,0,0, - 114,45,0,0,0,114,54,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,24, - 0,0,0,65,0,0,0,115,14,0,0,0,8,0,4,1, - 8,5,8,8,8,21,8,25,12,13,114,18,0,0,0,114, - 24,0,0,0,99,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,16,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,122,86,65,32,115,105,109,112,108,101,32,95,77,111, - 100,117,108,101,76,111,99,107,32,101,113,117,105,118,97,108, - 101,110,116,32,102,111,114,32,80,121,116,104,111,110,32,98, - 117,105,108,100,115,32,119,105,116,104,111,117,116,10,32,32, - 32,32,109,117,108,116,105,45,116,104,114,101,97,100,105,110, - 103,32,115,117,112,112,111,114,116,46,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,67,0,0,0,115, - 16,0,0,0,124,1,124,0,95,0,100,1,124,0,95,1, - 100,0,83,0,114,25,0,0,0,41,2,114,21,0,0,0, - 114,31,0,0,0,114,33,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,35,0,0,0,146,0, - 0,0,243,4,0,0,0,6,1,10,1,114,18,0,0,0, - 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, - 115,18,0,0,0,124,0,4,0,106,0,100,1,55,0,2, - 0,95,0,100,2,83,0,41,3,78,114,43,0,0,0,84, - 41,1,114,31,0,0,0,114,53,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,44,0,0,0, - 150,0,0,0,115,4,0,0,0,14,1,4,1,114,18,0, - 0,0,122,24,95,68,117,109,109,121,77,111,100,117,108,101, - 76,111,99,107,46,97,99,113,117,105,114,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, - 0,115,36,0,0,0,124,0,106,0,100,1,107,2,114,9, - 116,1,100,2,131,1,130,1,124,0,4,0,106,0,100,3, - 56,0,2,0,95,0,100,0,83,0,41,4,78,114,26,0, - 0,0,114,47,0,0,0,114,43,0,0,0,41,2,114,31, - 0,0,0,114,48,0,0,0,114,53,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,45,0,0, - 0,154,0,0,0,115,6,0,0,0,10,1,8,1,18,1, - 114,18,0,0,0,122,24,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,46,114,101,108,101,97,115,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 67,0,0,0,114,49,0,0,0,41,2,78,122,28,95,68, - 117,109,109,121,77,111,100,117,108,101,76,111,99,107,40,123, - 33,114,125,41,32,97,116,32,123,125,114,50,0,0,0,114, - 53,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,54,0,0,0,159,0,0,0,114,55,0,0, - 0,114,18,0,0,0,122,25,95,68,117,109,109,121,77,111, + 125,169,3,218,6,102,111,114,109,97,116,114,20,0,0,0, + 218,2,105,100,169,1,114,34,0,0,0,32,114,5,0,0, + 0,218,8,95,95,114,101,112,114,95,95,138,0,0,0,243, + 2,0,0,0,18,1,114,17,0,0,0,122,20,95,77,111, 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, - 95,78,41,8,114,9,0,0,0,114,8,0,0,0,114,1, - 0,0,0,114,10,0,0,0,114,35,0,0,0,114,44,0, - 0,0,114,45,0,0,0,114,54,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 95,78,41,9,114,8,0,0,0,114,7,0,0,0,114,1, + 0,0,0,114,9,0,0,0,114,35,0,0,0,114,42,0, + 0,0,114,44,0,0,0,114,45,0,0,0,114,54,0,0, + 0,114,23,0,0,0,114,5,0,0,0,114,24,0,0,0, + 65,0,0,0,115,14,0,0,0,8,0,4,1,8,5,8, + 8,8,21,8,25,12,13,114,17,0,0,0,114,24,0,0, + 0,99,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,16,95, + 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,122, + 86,65,32,115,105,109,112,108,101,32,95,77,111,100,117,108, + 101,76,111,99,107,32,101,113,117,105,118,97,108,101,110,116, + 32,102,111,114,32,80,121,116,104,111,110,32,98,117,105,108, + 100,115,32,119,105,116,104,111,117,116,10,32,32,32,32,109, + 117,108,116,105,45,116,104,114,101,97,100,105,110,103,32,115, + 117,112,112,111,114,116,46,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, + 0,124,1,124,0,95,0,100,1,124,0,95,1,100,0,83, + 0,114,25,0,0,0,41,2,114,20,0,0,0,114,31,0, + 0,0,114,33,0,0,0,32,32,114,5,0,0,0,114,35, + 0,0,0,146,0,0,0,243,4,0,0,0,6,1,10,1, + 114,17,0,0,0,122,25,95,68,117,109,109,121,77,111,100, + 117,108,101,76,111,99,107,46,95,95,105,110,105,116,95,95, + 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,18,0,0,0,124,0,4,0,106,0, + 100,1,55,0,2,0,95,0,100,2,83,0,41,3,78,114, + 43,0,0,0,84,41,1,114,31,0,0,0,114,53,0,0, + 0,32,114,5,0,0,0,114,44,0,0,0,150,0,0,0, + 115,4,0,0,0,14,1,4,1,114,17,0,0,0,122,24, + 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, + 46,97,99,113,117,105,114,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,67,0,0,0,115,36,0, + 0,0,124,0,106,0,100,1,107,2,114,9,116,1,100,2, + 131,1,130,1,124,0,4,0,106,0,100,3,56,0,2,0, + 95,0,100,0,83,0,41,4,78,114,26,0,0,0,114,47, + 0,0,0,114,43,0,0,0,41,2,114,31,0,0,0,114, + 48,0,0,0,114,53,0,0,0,32,114,5,0,0,0,114, + 45,0,0,0,154,0,0,0,115,6,0,0,0,10,1,8, + 1,18,1,114,17,0,0,0,122,24,95,68,117,109,109,121, + 77,111,100,117,108,101,76,111,99,107,46,114,101,108,101,97, + 115,101,99,1,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,67,0,0,0,114,49,0,0,0,41,2,78,122, + 28,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, + 107,40,123,33,114,125,41,32,97,116,32,123,125,114,50,0, + 0,0,114,53,0,0,0,32,114,5,0,0,0,114,54,0, + 0,0,159,0,0,0,114,55,0,0,0,114,17,0,0,0, + 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, + 99,107,46,95,95,114,101,112,114,95,95,78,41,8,114,8, + 0,0,0,114,7,0,0,0,114,1,0,0,0,114,9,0, + 0,0,114,35,0,0,0,114,44,0,0,0,114,45,0,0, + 0,114,54,0,0,0,114,23,0,0,0,114,5,0,0,0, 114,56,0,0,0,142,0,0,0,115,12,0,0,0,8,0, - 4,1,8,3,8,4,8,4,12,5,114,18,0,0,0,114, + 4,1,8,3,8,4,8,4,12,5,114,17,0,0,0,114, 56,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, 0,2,0,0,0,64,0,0,0,115,36,0,0,0,101,0, 90,1,100,0,90,2,100,1,100,2,132,0,90,3,100,3, @@ -293,134 +285,130 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,0,0,2,0,0,0,67,0,0,0,115,16,0, 0,0,124,1,124,0,95,0,100,0,124,0,95,1,100,0, 83,0,114,0,0,0,0,41,2,218,5,95,110,97,109,101, - 218,5,95,108,111,99,107,114,33,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,35,0,0,0, - 165,0,0,0,114,57,0,0,0,114,18,0,0,0,122,27, - 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, - 101,114,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,67,0,0,0, - 115,26,0,0,0,116,0,124,0,106,1,131,1,124,0,95, - 2,124,0,106,2,160,3,161,0,1,0,100,0,83,0,114, - 0,0,0,0,41,4,218,16,95,103,101,116,95,109,111,100, - 117,108,101,95,108,111,99,107,114,59,0,0,0,114,60,0, - 0,0,114,44,0,0,0,114,53,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,9,95,95,101, - 110,116,101,114,95,95,169,0,0,0,115,4,0,0,0,12, - 1,14,1,114,18,0,0,0,122,28,95,77,111,100,117,108, - 101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,101, - 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,79,0,0,0,115,14,0,0,0, - 124,0,106,0,160,1,161,0,1,0,100,0,83,0,114,0, - 0,0,0,41,2,114,60,0,0,0,114,45,0,0,0,41, - 3,114,34,0,0,0,218,4,97,114,103,115,90,6,107,119, - 97,114,103,115,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,8,95,95,101,120,105,116,95,95,173,0,0, - 0,115,2,0,0,0,14,1,114,18,0,0,0,122,27,95, - 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, - 114,46,95,95,101,120,105,116,95,95,78,41,6,114,9,0, - 0,0,114,8,0,0,0,114,1,0,0,0,114,35,0,0, - 0,114,62,0,0,0,114,64,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 58,0,0,0,163,0,0,0,115,8,0,0,0,8,0,8, - 2,8,4,12,4,114,18,0,0,0,114,58,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 67,0,0,0,115,138,0,0,0,116,0,160,1,161,0,1, - 0,9,0,9,0,116,2,124,0,25,0,131,0,125,1,110, - 12,35,0,4,0,116,3,121,68,1,0,1,0,1,0,100, - 1,125,1,89,0,110,1,37,0,124,1,100,1,117,0,114, - 55,116,4,100,1,117,0,114,37,116,5,124,0,131,1,125, - 1,110,4,116,6,124,0,131,1,125,1,124,0,102,1,100, - 2,100,3,132,1,125,2,116,7,160,8,124,1,124,2,161, - 2,116,2,124,0,60,0,116,0,160,9,161,0,1,0,124, - 1,83,0,35,0,116,0,160,9,161,0,1,0,119,0,37, - 0,119,0,41,4,122,139,71,101,116,32,111,114,32,99,114, - 101,97,116,101,32,116,104,101,32,109,111,100,117,108,101,32, - 108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,110, - 32,109,111,100,117,108,101,32,110,97,109,101,46,10,10,32, - 32,32,32,65,99,113,117,105,114,101,47,114,101,108,101,97, - 115,101,32,105,110,116,101,114,110,97,108,108,121,32,116,104, - 101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,32, - 108,111,99,107,32,116,111,32,112,114,111,116,101,99,116,10, - 32,32,32,32,95,109,111,100,117,108,101,95,108,111,99,107, - 115,46,78,99,2,0,0,0,0,0,0,0,0,0,0,0, - 8,0,0,0,83,0,0,0,115,56,0,0,0,116,0,160, - 1,161,0,1,0,9,0,116,2,160,3,124,1,161,1,124, - 0,117,0,114,15,116,2,124,1,61,0,116,0,160,4,161, - 0,1,0,100,0,83,0,35,0,116,0,160,4,161,0,1, - 0,119,0,37,0,114,0,0,0,0,41,5,218,4,95,105, - 109,112,218,12,97,99,113,117,105,114,101,95,108,111,99,107, - 218,13,95,109,111,100,117,108,101,95,108,111,99,107,115,114, - 39,0,0,0,218,12,114,101,108,101,97,115,101,95,108,111, - 99,107,41,2,218,3,114,101,102,114,21,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,2,99, - 98,198,0,0,0,115,16,0,0,0,8,1,2,1,14,4, - 6,1,12,2,2,128,10,0,2,128,115,8,0,0,0,133, - 10,21,0,149,6,27,7,122,28,95,103,101,116,95,109,111, - 100,117,108,101,95,108,111,99,107,46,60,108,111,99,97,108, - 115,62,46,99,98,41,10,114,65,0,0,0,114,66,0,0, - 0,114,67,0,0,0,218,8,75,101,121,69,114,114,111,114, - 114,27,0,0,0,114,56,0,0,0,114,24,0,0,0,218, - 8,95,119,101,97,107,114,101,102,114,69,0,0,0,114,68, - 0,0,0,41,3,114,21,0,0,0,114,28,0,0,0,114, - 70,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,61,0,0,0,179,0,0,0,115,40,0,0, - 0,8,6,2,1,2,1,12,1,2,128,12,1,8,1,2, - 128,8,2,8,1,10,1,8,2,12,2,16,11,8,2,4, - 2,2,128,10,254,2,128,2,234,115,26,0,0,0,134,5, - 12,0,139,1,61,0,140,9,23,7,149,34,61,0,189,6, - 65,3,7,193,4,1,23,7,114,61,0,0,0,99,1,0, + 218,5,95,108,111,99,107,114,33,0,0,0,32,32,114,5, + 0,0,0,114,35,0,0,0,165,0,0,0,114,57,0,0, + 0,114,17,0,0,0,122,27,95,77,111,100,117,108,101,76, + 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, + 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,67,0,0,0,115,26,0,0,0,116,0,124, + 0,106,1,131,1,124,0,95,2,124,0,106,2,160,3,161, + 0,1,0,100,0,83,0,114,0,0,0,0,41,4,218,16, + 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, + 114,59,0,0,0,114,60,0,0,0,114,44,0,0,0,114, + 53,0,0,0,32,114,5,0,0,0,218,9,95,95,101,110, + 116,101,114,95,95,169,0,0,0,115,4,0,0,0,12,1, + 14,1,114,17,0,0,0,122,28,95,77,111,100,117,108,101, + 76,111,99,107,77,97,110,97,103,101,114,46,95,95,101,110, + 116,101,114,95,95,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,79,0,0,0,115,14,0,0,0,124, + 0,106,0,160,1,161,0,1,0,100,0,83,0,114,0,0, + 0,0,41,2,114,60,0,0,0,114,45,0,0,0,41,3, + 114,34,0,0,0,218,4,97,114,103,115,90,6,107,119,97, + 114,103,115,32,32,32,114,5,0,0,0,218,8,95,95,101, + 120,105,116,95,95,173,0,0,0,115,2,0,0,0,14,1, + 114,17,0,0,0,122,27,95,77,111,100,117,108,101,76,111, + 99,107,77,97,110,97,103,101,114,46,95,95,101,120,105,116, + 95,95,78,41,6,114,8,0,0,0,114,7,0,0,0,114, + 1,0,0,0,114,35,0,0,0,114,62,0,0,0,114,64, + 0,0,0,114,23,0,0,0,114,5,0,0,0,114,58,0, + 0,0,163,0,0,0,115,8,0,0,0,8,0,8,2,8, + 4,12,4,114,17,0,0,0,114,58,0,0,0,99,1,0, 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,56,0,0,0,116,0,124,0,131,1,125,1,9, - 0,124,1,160,1,161,0,1,0,110,11,35,0,4,0,116, - 2,121,27,1,0,1,0,1,0,89,0,100,1,83,0,37, - 0,124,1,160,3,161,0,1,0,100,1,83,0,119,0,41, - 2,122,189,65,99,113,117,105,114,101,115,32,116,104,101,110, - 32,114,101,108,101,97,115,101,115,32,116,104,101,32,109,111, - 100,117,108,101,32,108,111,99,107,32,102,111,114,32,97,32, - 103,105,118,101,110,32,109,111,100,117,108,101,32,110,97,109, - 101,46,10,10,32,32,32,32,84,104,105,115,32,105,115,32, - 117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,97, - 32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,108, - 101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,101, - 100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,118, - 101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,32, - 105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,116, - 104,101,114,32,116,104,114,101,97,100,46,10,32,32,32,32, - 78,41,4,114,61,0,0,0,114,44,0,0,0,114,23,0, - 0,0,114,45,0,0,0,41,2,114,21,0,0,0,114,28, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,19,95,108,111,99,107,95,117,110,108,111,99,107, - 95,109,111,100,117,108,101,216,0,0,0,115,18,0,0,0, - 8,6,2,1,10,1,2,128,12,1,6,3,2,128,12,2, - 2,251,115,12,0,0,0,133,4,10,0,138,7,20,7,155, - 1,20,7,114,73,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,79,0,0,0,115,14,0, - 0,0,124,0,124,1,105,0,124,2,164,1,142,1,83,0, - 41,2,97,46,1,0,0,114,101,109,111,118,101,95,105,109, - 112,111,114,116,108,105,98,95,102,114,97,109,101,115,32,105, - 110,32,105,109,112,111,114,116,46,99,32,119,105,108,108,32, - 97,108,119,97,121,115,32,114,101,109,111,118,101,32,115,101, - 113,117,101,110,99,101,115,10,32,32,32,32,111,102,32,105, - 109,112,111,114,116,108,105,98,32,102,114,97,109,101,115,32, - 116,104,97,116,32,101,110,100,32,119,105,116,104,32,97,32, - 99,97,108,108,32,116,111,32,116,104,105,115,32,102,117,110, - 99,116,105,111,110,10,10,32,32,32,32,85,115,101,32,105, - 116,32,105,110,115,116,101,97,100,32,111,102,32,97,32,110, - 111,114,109,97,108,32,99,97,108,108,32,105,110,32,112,108, - 97,99,101,115,32,119,104,101,114,101,32,105,110,99,108,117, - 100,105,110,103,32,116,104,101,32,105,109,112,111,114,116,108, - 105,98,10,32,32,32,32,102,114,97,109,101,115,32,105,110, - 116,114,111,100,117,99,101,115,32,117,110,119,97,110,116,101, - 100,32,110,111,105,115,101,32,105,110,116,111,32,116,104,101, - 32,116,114,97,99,101,98,97,99,107,32,40,101,46,103,46, - 32,119,104,101,110,32,101,120,101,99,117,116,105,110,103,10, - 32,32,32,32,109,111,100,117,108,101,32,99,111,100,101,41, - 10,32,32,32,32,78,114,5,0,0,0,41,3,218,1,102, - 114,63,0,0,0,90,4,107,119,100,115,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,25,95,99,97,108, + 0,0,115,138,0,0,0,116,0,160,1,161,0,1,0,9, + 0,9,0,116,2,124,0,25,0,131,0,125,1,110,12,35, + 0,4,0,116,3,121,68,1,0,1,0,1,0,100,1,125, + 1,89,0,110,1,37,0,124,1,100,1,117,0,114,55,116, + 4,100,1,117,0,114,37,116,5,124,0,131,1,125,1,110, + 4,116,6,124,0,131,1,125,1,124,0,102,1,100,2,100, + 3,132,1,125,2,116,7,160,8,124,1,124,2,161,2,116, + 2,124,0,60,0,116,0,160,9,161,0,1,0,124,1,83, + 0,35,0,116,0,160,9,161,0,1,0,119,0,37,0,119, + 0,41,4,122,139,71,101,116,32,111,114,32,99,114,101,97, + 116,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, + 99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,109, + 111,100,117,108,101,32,110,97,109,101,46,10,10,32,32,32, + 32,65,99,113,117,105,114,101,47,114,101,108,101,97,115,101, + 32,105,110,116,101,114,110,97,108,108,121,32,116,104,101,32, + 103,108,111,98,97,108,32,105,109,112,111,114,116,32,108,111, + 99,107,32,116,111,32,112,114,111,116,101,99,116,10,32,32, + 32,32,95,109,111,100,117,108,101,95,108,111,99,107,115,46, + 78,99,2,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,83,0,0,0,115,56,0,0,0,116,0,160,1,161, + 0,1,0,9,0,116,2,160,3,124,1,161,1,124,0,117, + 0,114,15,116,2,124,1,61,0,116,0,160,4,161,0,1, + 0,100,0,83,0,35,0,116,0,160,4,161,0,1,0,119, + 0,37,0,114,0,0,0,0,41,5,218,4,95,105,109,112, + 218,12,97,99,113,117,105,114,101,95,108,111,99,107,218,13, + 95,109,111,100,117,108,101,95,108,111,99,107,115,114,39,0, + 0,0,218,12,114,101,108,101,97,115,101,95,108,111,99,107, + 41,2,218,3,114,101,102,114,20,0,0,0,32,32,114,5, + 0,0,0,218,2,99,98,198,0,0,0,115,16,0,0,0, + 8,1,2,1,14,4,6,1,12,2,2,128,10,0,2,128, + 115,8,0,0,0,133,10,21,0,149,6,27,7,122,28,95, + 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,46, + 60,108,111,99,97,108,115,62,46,99,98,41,10,114,65,0, + 0,0,114,66,0,0,0,114,67,0,0,0,218,8,75,101, + 121,69,114,114,111,114,114,27,0,0,0,114,56,0,0,0, + 114,24,0,0,0,218,8,95,119,101,97,107,114,101,102,114, + 69,0,0,0,114,68,0,0,0,41,3,114,20,0,0,0, + 114,28,0,0,0,114,70,0,0,0,32,32,32,114,5,0, + 0,0,114,61,0,0,0,179,0,0,0,115,40,0,0,0, + 8,6,2,1,2,1,12,1,2,128,12,1,8,1,2,128, + 8,2,8,1,10,1,8,2,12,2,16,11,8,2,4,2, + 2,128,10,254,2,128,2,234,115,26,0,0,0,134,5,12, + 0,139,1,61,0,140,9,23,7,149,34,61,0,189,6,65, + 3,7,193,4,1,23,7,114,61,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, + 0,115,56,0,0,0,116,0,124,0,131,1,125,1,9,0, + 124,1,160,1,161,0,1,0,110,11,35,0,4,0,116,2, + 121,27,1,0,1,0,1,0,89,0,100,1,83,0,37,0, + 124,1,160,3,161,0,1,0,100,1,83,0,119,0,41,2, + 122,189,65,99,113,117,105,114,101,115,32,116,104,101,110,32, + 114,101,108,101,97,115,101,115,32,116,104,101,32,109,111,100, + 117,108,101,32,108,111,99,107,32,102,111,114,32,97,32,103, + 105,118,101,110,32,109,111,100,117,108,101,32,110,97,109,101, + 46,10,10,32,32,32,32,84,104,105,115,32,105,115,32,117, + 115,101,100,32,116,111,32,101,110,115,117,114,101,32,97,32, + 109,111,100,117,108,101,32,105,115,32,99,111,109,112,108,101, + 116,101,108,121,32,105,110,105,116,105,97,108,105,122,101,100, + 44,32,105,110,32,116,104,101,10,32,32,32,32,101,118,101, + 110,116,32,105,116,32,105,115,32,98,101,105,110,103,32,105, + 109,112,111,114,116,101,100,32,98,121,32,97,110,111,116,104, + 101,114,32,116,104,114,101,97,100,46,10,32,32,32,32,78, + 41,4,114,61,0,0,0,114,44,0,0,0,114,22,0,0, + 0,114,45,0,0,0,41,2,114,20,0,0,0,114,28,0, + 0,0,32,32,114,5,0,0,0,218,19,95,108,111,99,107, + 95,117,110,108,111,99,107,95,109,111,100,117,108,101,216,0, + 0,0,115,18,0,0,0,8,6,2,1,10,1,2,128,12, + 1,6,3,2,128,12,2,2,251,115,12,0,0,0,133,4, + 10,0,138,7,20,7,155,1,20,7,114,73,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 79,0,0,0,115,14,0,0,0,124,0,124,1,105,0,124, + 2,164,1,142,1,83,0,41,2,97,46,1,0,0,114,101, + 109,111,118,101,95,105,109,112,111,114,116,108,105,98,95,102, + 114,97,109,101,115,32,105,110,32,105,109,112,111,114,116,46, + 99,32,119,105,108,108,32,97,108,119,97,121,115,32,114,101, + 109,111,118,101,32,115,101,113,117,101,110,99,101,115,10,32, + 32,32,32,111,102,32,105,109,112,111,114,116,108,105,98,32, + 102,114,97,109,101,115,32,116,104,97,116,32,101,110,100,32, + 119,105,116,104,32,97,32,99,97,108,108,32,116,111,32,116, + 104,105,115,32,102,117,110,99,116,105,111,110,10,10,32,32, + 32,32,85,115,101,32,105,116,32,105,110,115,116,101,97,100, + 32,111,102,32,97,32,110,111,114,109,97,108,32,99,97,108, + 108,32,105,110,32,112,108,97,99,101,115,32,119,104,101,114, + 101,32,105,110,99,108,117,100,105,110,103,32,116,104,101,32, + 105,109,112,111,114,116,108,105,98,10,32,32,32,32,102,114, + 97,109,101,115,32,105,110,116,114,111,100,117,99,101,115,32, + 117,110,119,97,110,116,101,100,32,110,111,105,115,101,32,105, + 110,116,111,32,116,104,101,32,116,114,97,99,101,98,97,99, + 107,32,40,101,46,103,46,32,119,104,101,110,32,101,120,101, + 99,117,116,105,110,103,10,32,32,32,32,109,111,100,117,108, + 101,32,99,111,100,101,41,10,32,32,32,32,78,114,23,0, + 0,0,41,3,218,1,102,114,63,0,0,0,90,4,107,119, + 100,115,32,32,32,114,5,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,233,0,0,0,115,2,0,0,0,14,8, - 114,18,0,0,0,114,75,0,0,0,114,43,0,0,0,41, + 114,17,0,0,0,114,75,0,0,0,114,43,0,0,0,41, 1,218,9,118,101,114,98,111,115,105,116,121,99,1,0,0, 0,0,0,0,0,1,0,0,0,4,0,0,0,71,0,0, 0,115,58,0,0,0,116,0,106,1,106,2,124,1,107,5, @@ -432,133 +420,131 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 105,102,32,45,118,47,80,89,84,72,79,78,86,69,82,66, 79,83,69,32,105,115,32,116,117,114,110,101,100,32,111,110, 46,41,2,250,1,35,122,7,105,109,112,111,114,116,32,122, - 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,19, + 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,18, 0,0,0,218,5,102,108,97,103,115,218,7,118,101,114,98, 111,115,101,218,10,115,116,97,114,116,115,119,105,116,104,218, 5,112,114,105,110,116,114,51,0,0,0,218,6,115,116,100, 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,76, - 0,0,0,114,63,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,16,95,118,101,114,98,111,115, - 101,95,109,101,115,115,97,103,101,244,0,0,0,115,10,0, - 0,0,12,2,10,1,8,1,24,1,4,253,114,18,0,0, - 0,114,84,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,243,26,0,0,0, - 135,0,102,1,100,1,100,2,132,8,125,1,116,0,124,1, - 136,0,131,2,1,0,124,1,83,0,41,4,122,49,68,101, - 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, - 121,32,116,104,101,32,110,97,109,101,100,32,109,111,100,117, - 108,101,32,105,115,32,98,117,105,108,116,45,105,110,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 19,0,0,0,115,38,0,0,0,124,1,116,0,106,1,118, - 1,114,14,116,2,100,1,160,3,124,1,161,1,124,1,100, - 2,141,2,130,1,136,0,124,0,124,1,131,2,83,0,41, - 3,78,250,29,123,33,114,125,32,105,115,32,110,111,116,32, - 97,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,114,20,0,0,0,41,4,114,19,0,0,0,218,20,98, - 117,105,108,116,105,110,95,109,111,100,117,108,101,95,110,97, - 109,101,115,218,11,73,109,112,111,114,116,69,114,114,111,114, - 114,51,0,0,0,169,2,114,34,0,0,0,218,8,102,117, - 108,108,110,97,109,101,169,1,218,3,102,120,110,114,5,0, - 0,0,114,6,0,0,0,218,25,95,114,101,113,117,105,114, - 101,115,95,98,117,105,108,116,105,110,95,119,114,97,112,112, - 101,114,254,0,0,0,243,10,0,0,0,10,1,10,1,2, - 1,6,255,10,2,114,18,0,0,0,122,52,95,114,101,113, - 117,105,114,101,115,95,98,117,105,108,116,105,110,46,60,108, - 111,99,97,108,115,62,46,95,114,101,113,117,105,114,101,115, - 95,98,117,105,108,116,105,110,95,119,114,97,112,112,101,114, - 78,169,1,114,17,0,0,0,41,2,114,92,0,0,0,114, - 93,0,0,0,114,5,0,0,0,114,91,0,0,0,114,6, - 0,0,0,218,17,95,114,101,113,117,105,114,101,115,95,98, - 117,105,108,116,105,110,252,0,0,0,243,6,0,0,0,12, - 2,10,5,4,1,114,18,0,0,0,114,96,0,0,0,99, + 0,0,0,114,63,0,0,0,32,32,32,114,5,0,0,0, + 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, + 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, + 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,114,85,0,0,0,41,4,122,47,68,101,99, - 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, - 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108, - 101,32,105,115,32,102,114,111,122,101,110,46,99,2,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,19,0,0, - 0,115,38,0,0,0,116,0,160,1,124,1,161,1,115,14, - 116,2,100,1,160,3,124,1,161,1,124,1,100,2,141,2, - 130,1,136,0,124,0,124,1,131,2,83,0,169,3,78,122, - 27,123,33,114,125,32,105,115,32,110,111,116,32,97,32,102, - 114,111,122,101,110,32,109,111,100,117,108,101,114,20,0,0, - 0,41,4,114,65,0,0,0,218,9,105,115,95,102,114,111, - 122,101,110,114,88,0,0,0,114,51,0,0,0,114,89,0, - 0,0,114,91,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,24,95,114,101,113,117,105,114,101,115,95,102,114,111, - 122,101,110,95,119,114,97,112,112,101,114,9,1,0,0,114, - 94,0,0,0,114,18,0,0,0,122,50,95,114,101,113,117, - 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, - 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, - 114,111,122,101,110,95,119,114,97,112,112,101,114,78,114,95, - 0,0,0,41,2,114,92,0,0,0,114,100,0,0,0,114, - 5,0,0,0,114,91,0,0,0,114,6,0,0,0,218,16, - 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, - 7,1,0,0,114,97,0,0,0,114,18,0,0,0,114,101, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,74,0,0,0,100,1,125, - 2,116,0,160,1,124,2,116,2,161,2,1,0,116,3,124, - 1,124,0,131,2,125,3,124,1,116,4,106,5,118,0,114, - 33,116,4,106,5,124,1,25,0,125,4,116,6,124,3,124, - 4,131,2,1,0,116,4,106,5,124,1,25,0,83,0,116, - 7,124,3,131,1,83,0,41,3,122,130,76,111,97,100,32, - 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, - 100,117,108,101,32,105,110,116,111,32,115,121,115,46,109,111, - 100,117,108,101,115,32,97,110,100,32,114,101,116,117,114,110, - 32,105,116,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,46,32,32,85,115,101,32,108,111,97,100,101,114, - 46,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,122,103,116, - 104,101,32,108,111,97,100,95,109,111,100,117,108,101,40,41, - 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, - 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, - 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, - 32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,105, - 110,115,116,101,97,100,78,41,8,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,16, - 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, - 114,19,0,0,0,218,7,109,111,100,117,108,101,115,218,5, - 95,101,120,101,99,218,5,95,108,111,97,100,41,5,114,34, - 0,0,0,114,90,0,0,0,218,3,109,115,103,218,4,115, - 112,101,99,218,6,109,111,100,117,108,101,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,17,95,108,111,97, - 100,95,109,111,100,117,108,101,95,115,104,105,109,19,1,0, - 0,115,16,0,0,0,4,6,12,2,10,1,10,1,10,1, - 10,1,10,1,8,2,114,18,0,0,0,114,112,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,194,0,0,0,116,0,124,0,100,1, - 100,2,131,3,125,1,116,0,124,0,100,3,100,2,131,3, - 4,0,125,2,114,18,116,1,124,2,131,1,83,0,116,2, - 124,1,100,4,131,2,114,39,9,0,124,1,160,3,124,0, - 161,1,83,0,35,0,4,0,116,4,121,96,1,0,1,0, - 1,0,89,0,110,1,37,0,9,0,124,0,106,5,125,3, - 110,12,35,0,4,0,116,6,121,95,1,0,1,0,1,0, - 100,5,125,3,89,0,110,1,37,0,9,0,124,0,106,7, - 125,4,110,27,35,0,4,0,116,6,121,94,1,0,1,0, - 1,0,124,1,100,2,117,0,114,79,100,6,160,8,124,3, - 161,1,6,0,89,0,83,0,100,7,160,8,124,3,124,1, - 161,2,6,0,89,0,83,0,37,0,100,8,160,8,124,3, - 124,4,161,2,83,0,119,0,119,0,119,0,41,9,122,44, - 84,104,101,32,105,109,112,108,101,109,101,110,116,97,116,105, - 111,110,32,111,102,32,77,111,100,117,108,101,84,121,112,101, - 46,95,95,114,101,112,114,95,95,40,41,46,218,10,95,95, - 108,111,97,100,101,114,95,95,78,218,8,95,95,115,112,101, - 99,95,95,218,11,109,111,100,117,108,101,95,114,101,112,114, - 250,1,63,250,13,60,109,111,100,117,108,101,32,123,33,114, - 125,62,250,20,60,109,111,100,117,108,101,32,123,33,114,125, - 32,40,123,33,114,125,41,62,250,23,60,109,111,100,117,108, - 101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125, - 62,41,9,114,13,0,0,0,218,22,95,109,111,100,117,108, - 101,95,114,101,112,114,95,102,114,111,109,95,115,112,101,99, - 114,11,0,0,0,114,115,0,0,0,218,9,69,120,99,101, - 112,116,105,111,110,114,9,0,0,0,114,2,0,0,0,218, - 8,95,95,102,105,108,101,95,95,114,51,0,0,0,41,5, - 114,111,0,0,0,218,6,108,111,97,100,101,114,114,110,0, - 0,0,114,21,0,0,0,218,8,102,105,108,101,110,97,109, - 101,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 3,0,0,0,243,26,0,0,0,135,0,102,1,100,1,100, + 2,132,8,125,1,116,0,124,1,136,0,131,2,1,0,124, + 1,83,0,41,4,122,49,68,101,99,111,114,97,116,111,114, + 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, + 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, + 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,19,0,0,0,115,38,0, + 0,0,124,1,116,0,106,1,118,1,114,14,116,2,100,1, + 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,0, + 124,0,124,1,131,2,83,0,41,3,78,250,29,123,33,114, + 125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,114,19,0,0,0,41, + 4,114,18,0,0,0,218,20,98,117,105,108,116,105,110,95, + 109,111,100,117,108,101,95,110,97,109,101,115,218,11,73,109, + 112,111,114,116,69,114,114,111,114,114,51,0,0,0,169,3, + 114,34,0,0,0,218,8,102,117,108,108,110,97,109,101,218, + 3,102,120,110,32,32,128,114,5,0,0,0,218,25,95,114, + 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,95, + 119,114,97,112,112,101,114,254,0,0,0,243,10,0,0,0, + 10,1,10,1,2,1,6,255,10,2,114,17,0,0,0,122, + 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, + 105,110,46,60,108,111,99,97,108,115,62,46,95,114,101,113, + 117,105,114,101,115,95,98,117,105,108,116,105,110,95,119,114, + 97,112,112,101,114,78,169,1,114,16,0,0,0,41,3,114, + 91,0,0,0,114,92,0,0,0,114,91,0,0,0,96,32, + 64,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, + 115,95,98,117,105,108,116,105,110,252,0,0,0,243,6,0, + 0,0,12,2,10,5,4,1,114,17,0,0,0,114,95,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,114,85,0,0,0,41,4,122,47, + 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, + 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, + 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, + 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, + 2,141,2,130,1,136,0,124,0,124,1,131,2,83,0,169, + 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, + 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, + 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, + 102,114,111,122,101,110,114,88,0,0,0,114,51,0,0,0, + 114,89,0,0,0,32,32,128,114,5,0,0,0,218,24,95, + 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, + 119,114,97,112,112,101,114,9,1,0,0,114,93,0,0,0, + 114,17,0,0,0,122,50,95,114,101,113,117,105,114,101,115, + 95,102,114,111,122,101,110,46,60,108,111,99,97,108,115,62, + 46,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, + 110,95,119,114,97,112,112,101,114,78,114,94,0,0,0,41, + 3,114,91,0,0,0,114,99,0,0,0,114,91,0,0,0, + 96,32,64,114,5,0,0,0,218,16,95,114,101,113,117,105, + 114,101,115,95,102,114,111,122,101,110,7,1,0,0,114,96, + 0,0,0,114,17,0,0,0,114,100,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,115,74,0,0,0,100,1,125,2,116,0,160,1,124, + 2,116,2,161,2,1,0,116,3,124,1,124,0,131,2,125, + 3,124,1,116,4,106,5,118,0,114,33,116,4,106,5,124, + 1,25,0,125,4,116,6,124,3,124,4,131,2,1,0,116, + 4,106,5,124,1,25,0,83,0,116,7,124,3,131,1,83, + 0,41,3,122,130,76,111,97,100,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, + 110,116,111,32,115,121,115,46,109,111,100,117,108,101,115,32, + 97,110,100,32,114,101,116,117,114,110,32,105,116,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,46,32,32, + 85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101,32,108,111,97, + 100,95,109,111,100,117,108,101,40,41,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, + 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, + 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, + 32,51,46,49,50,59,32,117,115,101,32,101,120,101,99,95, + 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, + 78,41,8,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,16,115,112,101,99,95,102, + 114,111,109,95,108,111,97,100,101,114,114,18,0,0,0,218, + 7,109,111,100,117,108,101,115,218,5,95,101,120,101,99,218, + 5,95,108,111,97,100,41,5,114,34,0,0,0,114,90,0, + 0,0,218,3,109,115,103,218,4,115,112,101,99,218,6,109, + 111,100,117,108,101,32,32,32,32,32,114,5,0,0,0,218, + 17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,104, + 105,109,19,1,0,0,115,16,0,0,0,4,6,12,2,10, + 1,10,1,10,1,10,1,10,1,8,2,114,17,0,0,0, + 114,111,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,194,0,0,0,116, + 0,124,0,100,1,100,2,131,3,125,1,116,0,124,0,100, + 3,100,2,131,3,4,0,125,2,114,18,116,1,124,2,131, + 1,83,0,116,2,124,1,100,4,131,2,114,39,9,0,124, + 1,160,3,124,0,161,1,83,0,35,0,4,0,116,4,121, + 96,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, + 0,106,5,125,3,110,12,35,0,4,0,116,6,121,95,1, + 0,1,0,1,0,100,5,125,3,89,0,110,1,37,0,9, + 0,124,0,106,7,125,4,110,27,35,0,4,0,116,6,121, + 94,1,0,1,0,1,0,124,1,100,2,117,0,114,79,100, + 6,160,8,124,3,161,1,6,0,89,0,83,0,100,7,160, + 8,124,3,124,1,161,2,6,0,89,0,83,0,37,0,100, + 8,160,8,124,3,124,4,161,2,83,0,119,0,119,0,119, + 0,41,9,122,44,84,104,101,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,111,102,32,77,111,100,117,108, + 101,84,121,112,101,46,95,95,114,101,112,114,95,95,40,41, + 46,218,10,95,95,108,111,97,100,101,114,95,95,78,218,8, + 95,95,115,112,101,99,95,95,218,11,109,111,100,117,108,101, + 95,114,101,112,114,250,1,63,250,13,60,109,111,100,117,108, + 101,32,123,33,114,125,62,250,20,60,109,111,100,117,108,101, + 32,123,33,114,125,32,40,123,33,114,125,41,62,250,23,60, + 109,111,100,117,108,101,32,123,33,114,125,32,102,114,111,109, + 32,123,33,114,125,62,41,9,114,12,0,0,0,218,22,95, + 109,111,100,117,108,101,95,114,101,112,114,95,102,114,111,109, + 95,115,112,101,99,114,10,0,0,0,114,114,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,114,8,0,0,0,114, + 2,0,0,0,218,8,95,95,102,105,108,101,95,95,114,51, + 0,0,0,41,5,114,110,0,0,0,218,6,108,111,97,100, + 101,114,114,109,0,0,0,114,20,0,0,0,218,8,102,105, + 108,101,110,97,109,101,32,32,32,32,32,114,5,0,0,0, 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, @@ -567,7 +553,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, - 1,38,7,114,125,0,0,0,99,0,0,0,0,0,0,0, + 1,38,7,114,124,0,0,0,99,0,0,0,0,0,0,0, 0,0,0,0,0,4,0,0,0,64,0,0,0,115,114,0, 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, 100,2,100,2,100,3,156,3,100,4,100,5,132,2,90,4, @@ -678,501 +664,492 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, - 41,7,114,21,0,0,0,114,123,0,0,0,114,127,0,0, - 0,114,128,0,0,0,218,26,115,117,98,109,111,100,117,108, + 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, + 0,114,127,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, 114,218,7,95,99,97,99,104,101,100,41,6,114,34,0,0, - 0,114,21,0,0,0,114,123,0,0,0,114,127,0,0,0, - 114,128,0,0,0,114,129,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,35,0,0,0,101,1, - 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, - 1,6,3,10,1,114,18,0,0,0,122,19,77,111,100,117, - 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, - 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, - 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, - 1,124,0,106,3,100,0,117,1,114,26,124,1,160,4,100, - 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, - 5,100,0,117,1,114,40,124,1,160,4,100,4,160,0,124, - 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, - 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, - 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, - 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, - 105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2, - 44,32,41,9,114,51,0,0,0,114,21,0,0,0,114,123, - 0,0,0,114,127,0,0,0,218,6,97,112,112,101,110,100, - 114,130,0,0,0,218,9,95,95,99,108,97,115,115,95,95, - 114,9,0,0,0,218,4,106,111,105,110,41,2,114,34,0, - 0,0,114,63,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,54,0,0,0,113,1,0,0,115, - 20,0,0,0,10,1,10,1,4,255,10,2,18,1,10,1, - 6,1,8,1,4,255,22,2,114,18,0,0,0,122,19,77, - 111,100,117,108,101,83,112,101,99,46,95,95,114,101,112,114, - 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,104,0,0,0,124,0,106,0, - 125,2,9,0,124,0,106,1,124,1,106,1,107,2,111,38, - 124,0,106,2,124,1,106,2,107,2,111,38,124,0,106,3, - 124,1,106,3,107,2,111,38,124,2,124,1,106,0,107,2, - 111,38,124,0,106,4,124,1,106,4,107,2,111,38,124,0, - 106,5,124,1,106,5,107,2,83,0,35,0,4,0,116,6, - 121,51,1,0,1,0,1,0,116,7,6,0,89,0,83,0, - 37,0,119,0,114,0,0,0,0,41,8,114,130,0,0,0, - 114,21,0,0,0,114,123,0,0,0,114,127,0,0,0,218, - 6,99,97,99,104,101,100,218,12,104,97,115,95,108,111,99, - 97,116,105,111,110,114,2,0,0,0,218,14,78,111,116,73, - 109,112,108,101,109,101,110,116,101,100,41,3,114,34,0,0, - 0,90,5,111,116,104,101,114,90,4,115,109,115,108,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, - 95,101,113,95,95,123,1,0,0,115,36,0,0,0,6,1, - 2,1,12,1,10,1,2,255,10,2,2,254,8,3,2,253, - 10,4,2,252,10,5,2,251,2,128,12,6,8,1,2,128, - 2,255,115,12,0,0,0,132,34,39,0,167,9,50,7,179, - 1,50,7,122,17,77,111,100,117,108,101,83,112,101,99,46, - 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,67,0,0,0,115,58,0,0,0, - 124,0,106,0,100,0,117,0,114,26,124,0,106,1,100,0, - 117,1,114,26,124,0,106,2,114,26,116,3,100,0,117,0, - 114,19,116,4,130,1,116,3,160,5,124,0,106,1,161,1, - 124,0,95,0,124,0,106,0,83,0,114,0,0,0,0,41, - 6,114,132,0,0,0,114,127,0,0,0,114,131,0,0,0, - 218,19,95,98,111,111,116,115,116,114,97,112,95,101,120,116, - 101,114,110,97,108,218,19,78,111,116,73,109,112,108,101,109, - 101,110,116,101,100,69,114,114,111,114,90,11,95,103,101,116, - 95,99,97,99,104,101,100,114,53,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,136,0,0,0, - 135,1,0,0,115,12,0,0,0,10,2,16,1,8,1,4, - 1,14,1,6,1,114,18,0,0,0,122,17,77,111,100,117, - 108,101,83,112,101,99,46,99,97,99,104,101,100,99,2,0, - 0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,132,0,0,0,41,2,114, - 34,0,0,0,114,136,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,136,0,0,0,144,1,0, - 0,115,2,0,0,0,10,2,114,18,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,115,32,0,0,0,124,0,106,0,100,1,117,0,114, - 13,124,0,106,1,160,2,100,2,161,1,100,3,25,0,83, - 0,124,0,106,1,83,0,41,4,122,32,84,104,101,32,110, - 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, - 101,39,115,32,112,97,114,101,110,116,46,78,218,1,46,114, - 26,0,0,0,41,3,114,130,0,0,0,114,21,0,0,0, - 218,10,114,112,97,114,116,105,116,105,111,110,114,53,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,6,112,97,114,101,110,116,148,1,0,0,115,6,0,0, - 0,10,3,16,1,6,2,114,18,0,0,0,122,17,77,111, - 100,117,108,101,83,112,101,99,46,112,97,114,101,110,116,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 67,0,0,0,115,6,0,0,0,124,0,106,0,83,0,114, - 0,0,0,0,41,1,114,131,0,0,0,114,53,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 137,0,0,0,156,1,0,0,115,2,0,0,0,6,2,114, - 18,0,0,0,122,23,77,111,100,117,108,101,83,112,101,99, - 46,104,97,115,95,108,111,99,97,116,105,111,110,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,67,0, - 0,0,115,14,0,0,0,116,0,124,1,131,1,124,0,95, - 1,100,0,83,0,114,0,0,0,0,41,2,218,4,98,111, - 111,108,114,131,0,0,0,41,2,114,34,0,0,0,218,5, - 118,97,108,117,101,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,137,0,0,0,160,1,0,0,115,2,0, - 0,0,14,2,114,18,0,0,0,41,12,114,9,0,0,0, - 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, - 35,0,0,0,114,54,0,0,0,114,139,0,0,0,218,8, - 112,114,111,112,101,114,116,121,114,136,0,0,0,218,6,115, - 101,116,116,101,114,114,144,0,0,0,114,137,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,126,0,0,0,64,1,0,0,115,34,0,0, - 0,8,0,4,1,4,36,2,1,12,255,8,12,8,10,2, - 12,10,1,4,8,10,1,2,3,10,1,2,7,10,1,4, - 3,14,1,114,18,0,0,0,114,126,0,0,0,169,2,114, - 127,0,0,0,114,129,0,0,0,99,2,0,0,0,0,0, - 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,152, - 0,0,0,116,0,124,1,100,1,131,2,114,37,116,1,100, - 2,117,0,114,11,116,2,130,1,116,1,106,3,125,4,124, - 3,100,2,117,0,114,24,124,4,124,0,124,1,100,3,141, - 2,83,0,124,3,114,28,103,0,110,1,100,2,125,5,124, - 4,124,0,124,1,124,5,100,4,141,3,83,0,124,3,100, - 2,117,0,114,67,116,0,124,1,100,5,131,2,114,65,9, - 0,124,1,160,4,124,0,161,1,125,3,110,14,35,0,4, - 0,116,5,121,75,1,0,1,0,1,0,100,2,125,3,89, - 0,110,3,37,0,100,6,125,3,116,6,124,0,124,1,124, - 2,124,3,100,7,141,4,83,0,119,0,41,8,122,53,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,118,97,114, - 105,111,117,115,32,108,111,97,100,101,114,32,109,101,116,104, - 111,100,115,46,90,12,103,101,116,95,102,105,108,101,110,97, - 109,101,78,41,1,114,123,0,0,0,41,2,114,123,0,0, - 0,114,130,0,0,0,114,129,0,0,0,70,114,149,0,0, - 0,41,7,114,11,0,0,0,114,140,0,0,0,114,141,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,114,129,0,0,0, - 114,88,0,0,0,114,126,0,0,0,41,6,114,21,0,0, - 0,114,123,0,0,0,114,127,0,0,0,114,129,0,0,0, - 114,150,0,0,0,90,6,115,101,97,114,99,104,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,105,0,0, - 0,165,1,0,0,115,42,0,0,0,10,2,8,1,4,1, - 6,1,8,2,12,1,12,1,6,1,2,1,6,255,8,3, - 10,1,2,1,12,1,2,128,12,1,8,1,2,128,4,3, - 16,2,2,250,115,15,0,0,0,175,5,53,0,181,9,65, - 0,7,193,11,1,65,0,7,114,105,0,0,0,99,3,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,50,1,0,0,9,0,124,0,106,0,125,3,110, - 10,35,0,4,0,116,1,121,152,1,0,1,0,1,0,89, - 0,110,7,37,0,124,3,100,0,117,1,114,21,124,3,83, - 0,124,0,106,2,125,4,124,1,100,0,117,0,114,43,9, - 0,124,0,106,3,125,1,110,10,35,0,4,0,116,1,121, - 151,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, - 0,106,4,125,5,110,12,35,0,4,0,116,1,121,150,1, - 0,1,0,1,0,100,0,125,5,89,0,110,1,37,0,124, - 2,100,0,117,0,114,87,124,5,100,0,117,0,114,85,9, - 0,124,1,106,5,125,2,110,14,35,0,4,0,116,1,121, - 149,1,0,1,0,1,0,100,0,125,2,89,0,110,3,37, - 0,124,5,125,2,9,0,124,0,106,6,125,6,110,12,35, - 0,4,0,116,1,121,148,1,0,1,0,1,0,100,0,125, - 6,89,0,110,1,37,0,9,0,116,7,124,0,106,8,131, - 1,125,7,110,12,35,0,4,0,116,1,121,147,1,0,1, - 0,1,0,100,0,125,7,89,0,110,1,37,0,116,9,124, - 4,124,1,124,2,100,1,141,3,125,3,124,5,100,0,117, - 0,114,136,100,2,110,1,100,3,124,3,95,10,124,6,124, - 3,95,11,124,7,124,3,95,12,124,3,83,0,119,0,119, - 0,119,0,119,0,119,0,119,0,41,4,78,169,1,114,127, - 0,0,0,70,84,41,13,114,114,0,0,0,114,2,0,0, - 0,114,9,0,0,0,114,113,0,0,0,114,122,0,0,0, - 218,7,95,79,82,73,71,73,78,218,10,95,95,99,97,99, - 104,101,100,95,95,218,4,108,105,115,116,218,8,95,95,112, - 97,116,104,95,95,114,126,0,0,0,114,131,0,0,0,114, - 136,0,0,0,114,130,0,0,0,41,8,114,111,0,0,0, - 114,123,0,0,0,114,127,0,0,0,114,110,0,0,0,114, - 21,0,0,0,90,8,108,111,99,97,116,105,111,110,114,136, - 0,0,0,114,130,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,17,95,115,112,101,99,95,102, - 114,111,109,95,109,111,100,117,108,101,191,1,0,0,115,108, - 0,0,0,2,2,8,1,2,128,12,1,4,1,2,128,8, - 2,4,1,6,2,8,1,2,1,8,1,2,128,12,1,4, - 2,2,128,2,1,8,1,2,128,12,1,8,1,2,128,8, - 1,8,1,2,1,8,1,2,128,12,1,8,1,2,128,4, - 2,2,1,8,1,2,128,12,1,8,1,2,128,2,1,12, - 1,2,128,12,1,8,1,2,128,14,2,18,1,6,1,6, - 1,4,1,2,249,2,252,2,250,2,250,2,251,2,246,115, - 93,0,0,0,129,3,5,0,133,7,14,7,157,3,33,0, - 161,7,42,7,172,3,48,0,176,9,59,7,193,5,3,65, - 9,0,193,9,9,65,20,7,193,24,3,65,28,0,193,28, - 9,65,39,7,193,41,5,65,47,0,193,47,9,65,58,7, - 194,19,1,65,58,7,194,20,1,65,39,7,194,21,1,65, - 20,7,194,22,1,59,7,194,23,1,42,7,194,24,1,14, - 7,114,156,0,0,0,70,169,1,218,8,111,118,101,114,114, - 105,100,101,99,2,0,0,0,0,0,0,0,1,0,0,0, - 8,0,0,0,67,0,0,0,115,204,1,0,0,124,2,115, - 10,116,0,124,1,100,1,100,0,131,3,100,0,117,0,114, - 26,9,0,124,0,106,1,124,1,95,2,110,10,35,0,4, - 0,116,3,121,229,1,0,1,0,1,0,89,0,110,1,37, - 0,124,2,115,36,116,0,124,1,100,2,100,0,131,3,100, - 0,117,0,114,87,124,0,106,4,125,3,124,3,100,0,117, - 0,114,72,124,0,106,5,100,0,117,1,114,72,116,6,100, - 0,117,0,114,54,116,7,130,1,116,6,106,8,125,4,124, - 4,160,9,124,4,161,1,125,3,124,0,106,5,124,3,95, - 10,124,3,124,0,95,4,100,0,124,1,95,11,9,0,124, - 3,124,1,95,12,110,10,35,0,4,0,116,3,121,228,1, - 0,1,0,1,0,89,0,110,1,37,0,124,2,115,97,116, - 0,124,1,100,3,100,0,131,3,100,0,117,0,114,113,9, - 0,124,0,106,13,124,1,95,14,110,10,35,0,4,0,116, - 3,121,227,1,0,1,0,1,0,89,0,110,1,37,0,9, - 0,124,0,124,1,95,15,110,10,35,0,4,0,116,3,121, - 226,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, - 138,116,0,124,1,100,4,100,0,131,3,100,0,117,0,114, - 159,124,0,106,5,100,0,117,1,114,159,9,0,124,0,106, - 5,124,1,95,16,110,10,35,0,4,0,116,3,121,225,1, - 0,1,0,1,0,89,0,110,1,37,0,124,0,106,17,114, - 221,124,2,115,172,116,0,124,1,100,5,100,0,131,3,100, - 0,117,0,114,188,9,0,124,0,106,18,124,1,95,11,110, - 10,35,0,4,0,116,3,121,224,1,0,1,0,1,0,89, - 0,110,1,37,0,124,2,115,198,116,0,124,1,100,6,100, - 0,131,3,100,0,117,0,114,221,124,0,106,19,100,0,117, - 1,114,221,9,0,124,0,106,19,124,1,95,20,124,1,83, - 0,35,0,4,0,116,3,121,223,1,0,1,0,1,0,89, - 0,124,1,83,0,37,0,124,1,83,0,119,0,119,0,119, - 0,119,0,119,0,119,0,119,0,41,7,78,114,9,0,0, - 0,114,113,0,0,0,218,11,95,95,112,97,99,107,97,103, - 101,95,95,114,155,0,0,0,114,122,0,0,0,114,153,0, - 0,0,41,21,114,13,0,0,0,114,21,0,0,0,114,9, - 0,0,0,114,2,0,0,0,114,123,0,0,0,114,130,0, - 0,0,114,140,0,0,0,114,141,0,0,0,218,16,95,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,218,7, - 95,95,110,101,119,95,95,90,5,95,112,97,116,104,114,122, - 0,0,0,114,113,0,0,0,114,144,0,0,0,114,159,0, - 0,0,114,114,0,0,0,114,155,0,0,0,114,137,0,0, - 0,114,127,0,0,0,114,136,0,0,0,114,153,0,0,0, - 41,5,114,110,0,0,0,114,111,0,0,0,114,158,0,0, - 0,114,123,0,0,0,114,160,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,18,95,105,110,105, - 116,95,109,111,100,117,108,101,95,97,116,116,114,115,236,1, - 0,0,115,142,0,0,0,20,4,2,1,10,1,2,128,12, - 1,4,1,2,128,20,2,6,1,8,1,10,2,8,1,4, - 1,6,1,10,2,8,1,6,1,6,11,2,1,8,1,2, - 128,12,1,4,1,2,128,20,2,2,1,10,1,2,128,12, - 1,4,1,2,128,2,2,8,1,2,128,12,1,4,1,2, - 128,20,2,10,1,2,1,10,1,2,128,12,1,4,1,2, - 128,6,2,20,1,2,1,10,1,2,128,12,1,4,1,2, - 128,20,2,10,1,2,1,8,1,4,3,2,128,12,254,2, - 1,4,1,2,128,4,0,2,254,2,249,2,249,2,249,2, - 251,2,250,2,228,115,121,0,0,0,139,4,16,0,144,7, - 25,7,193,9,3,65,13,0,193,13,7,65,22,7,193,34, - 4,65,39,0,193,39,7,65,48,7,193,50,3,65,54,0, - 193,54,7,65,63,7,194,16,4,66,21,0,194,21,7,66, - 30,7,194,45,4,66,50,0,194,50,7,66,59,7,195,12, - 4,67,18,0,195,18,7,67,28,7,195,31,1,67,28,7, - 195,32,1,66,59,7,195,33,1,66,30,7,195,34,1,65, - 63,7,195,35,1,65,48,7,195,36,1,65,22,7,195,37, - 1,25,7,114,162,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,82,0, - 0,0,100,1,125,1,116,0,124,0,106,1,100,2,131,2, - 114,15,124,0,106,1,160,2,124,0,161,1,125,1,110,10, - 116,0,124,0,106,1,100,3,131,2,114,25,116,3,100,4, - 131,1,130,1,124,1,100,1,117,0,114,34,116,4,124,0, - 106,5,131,1,125,1,116,6,124,0,124,1,131,2,1,0, - 124,1,83,0,41,5,122,43,67,114,101,97,116,101,32,97, - 32,109,111,100,117,108,101,32,98,97,115,101,100,32,111,110, - 32,116,104,101,32,112,114,111,118,105,100,101,100,32,115,112, - 101,99,46,78,218,13,99,114,101,97,116,101,95,109,111,100, - 117,108,101,218,11,101,120,101,99,95,109,111,100,117,108,101, - 122,66,108,111,97,100,101,114,115,32,116,104,97,116,32,100, - 101,102,105,110,101,32,101,120,101,99,95,109,111,100,117,108, - 101,40,41,32,109,117,115,116,32,97,108,115,111,32,100,101, - 102,105,110,101,32,99,114,101,97,116,101,95,109,111,100,117, - 108,101,40,41,41,7,114,11,0,0,0,114,123,0,0,0, - 114,163,0,0,0,114,88,0,0,0,114,22,0,0,0,114, - 21,0,0,0,114,162,0,0,0,169,2,114,110,0,0,0, - 114,111,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,16,109,111,100,117,108,101,95,102,114,111, - 109,95,115,112,101,99,52,2,0,0,115,18,0,0,0,4, - 3,12,1,14,3,12,1,8,1,8,2,10,1,10,1,4, - 1,114,18,0,0,0,114,166,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, - 115,100,0,0,0,124,0,106,0,100,1,117,0,114,7,100, - 2,110,2,124,0,106,0,125,1,124,0,106,1,100,1,117, - 0,114,32,124,0,106,2,100,1,117,0,114,25,100,3,160, - 3,124,1,161,1,83,0,100,4,160,3,124,1,124,0,106, - 2,161,2,83,0,124,0,106,4,114,42,100,5,160,3,124, - 1,124,0,106,1,161,2,83,0,100,6,160,3,124,0,106, - 0,124,0,106,1,161,2,83,0,41,7,122,38,82,101,116, - 117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32, - 117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117, - 108,101,46,78,114,116,0,0,0,114,117,0,0,0,114,118, - 0,0,0,114,119,0,0,0,250,18,60,109,111,100,117,108, - 101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,21, - 0,0,0,114,127,0,0,0,114,123,0,0,0,114,51,0, - 0,0,114,137,0,0,0,41,2,114,110,0,0,0,114,21, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,120,0,0,0,69,2,0,0,115,16,0,0,0, - 20,3,10,1,10,1,10,1,14,2,6,2,14,1,16,2, - 114,18,0,0,0,114,120,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,10,0,0,0,67,0,0,0,115, - 32,1,0,0,124,0,106,0,125,2,116,1,124,2,131,1, - 53,0,1,0,116,2,106,3,160,4,124,2,161,1,124,1, - 117,1,114,27,100,1,160,5,124,2,161,1,125,3,116,6, - 124,3,124,2,100,2,141,2,130,1,9,0,124,0,106,7, - 100,3,117,0,114,53,124,0,106,8,100,3,117,0,114,45, - 116,6,100,4,124,0,106,0,100,2,141,2,130,1,116,9, - 124,0,124,1,100,5,100,6,141,3,1,0,110,40,116,9, - 124,0,124,1,100,5,100,6,141,3,1,0,116,10,124,0, - 106,7,100,7,131,2,115,87,116,11,124,0,106,7,131,1, - 155,0,100,8,157,2,125,3,116,12,160,13,124,3,116,14, - 161,2,1,0,124,0,106,7,160,15,124,2,161,1,1,0, - 110,6,124,0,106,7,160,16,124,1,161,1,1,0,116,2, - 106,3,160,17,124,0,106,0,161,1,125,1,124,1,116,2, - 106,3,124,0,106,0,60,0,110,16,35,0,116,2,106,3, - 160,17,124,0,106,0,161,1,125,1,124,1,116,2,106,3, - 124,0,106,0,60,0,119,0,37,0,9,0,100,3,4,0, - 4,0,131,3,1,0,124,1,83,0,35,0,49,0,115,136, - 119,4,37,0,1,0,1,0,1,0,89,0,1,0,1,0, - 124,1,83,0,41,9,122,70,69,120,101,99,117,116,101,32, - 116,104,101,32,115,112,101,99,39,115,32,115,112,101,99,105, - 102,105,101,100,32,109,111,100,117,108,101,32,105,110,32,97, - 110,32,101,120,105,115,116,105,110,103,32,109,111,100,117,108, - 101,39,115,32,110,97,109,101,115,112,97,99,101,46,122,30, - 109,111,100,117,108,101,32,123,33,114,125,32,110,111,116,32, - 105,110,32,115,121,115,46,109,111,100,117,108,101,115,114,20, - 0,0,0,78,250,14,109,105,115,115,105,110,103,32,108,111, - 97,100,101,114,84,114,157,0,0,0,114,164,0,0,0,250, - 55,46,101,120,101,99,95,109,111,100,117,108,101,40,41,32, - 110,111,116,32,102,111,117,110,100,59,32,102,97,108,108,105, - 110,103,32,98,97,99,107,32,116,111,32,108,111,97,100,95, - 109,111,100,117,108,101,40,41,41,18,114,21,0,0,0,114, - 58,0,0,0,114,19,0,0,0,114,106,0,0,0,114,39, - 0,0,0,114,51,0,0,0,114,88,0,0,0,114,123,0, - 0,0,114,130,0,0,0,114,162,0,0,0,114,11,0,0, - 0,114,7,0,0,0,114,102,0,0,0,114,103,0,0,0, - 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,218, - 11,108,111,97,100,95,109,111,100,117,108,101,114,164,0,0, - 0,218,3,112,111,112,41,4,114,110,0,0,0,114,111,0, - 0,0,114,21,0,0,0,114,109,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,107,0,0,0, - 86,2,0,0,115,50,0,0,0,6,2,10,1,16,1,10, - 1,12,1,2,1,10,1,10,1,14,1,16,2,14,2,12, - 1,16,1,12,2,14,1,12,2,14,4,14,1,2,128,14, - 255,18,1,10,233,4,24,22,128,4,0,115,41,0,0,0, - 135,20,66,3,3,156,65,1,65,43,2,193,29,14,66,3, - 3,193,43,15,65,58,9,193,58,1,66,3,3,194,3,4, - 66,7,11,194,8,3,66,7,11,114,107,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,22,1,0,0,9,0,124,0,106,0,160,1, - 124,0,106,2,161,1,1,0,110,25,35,0,1,0,1,0, - 1,0,124,0,106,2,116,3,106,4,118,0,114,32,116,3, - 106,4,160,5,124,0,106,2,161,1,125,1,124,1,116,3, - 106,4,124,0,106,2,60,0,130,0,37,0,116,3,106,4, - 160,5,124,0,106,2,161,1,125,1,124,1,116,3,106,4, - 124,0,106,2,60,0,116,6,124,1,100,1,100,0,131,3, - 100,0,117,0,114,71,9,0,124,0,106,0,124,1,95,7, - 110,10,35,0,4,0,116,8,121,138,1,0,1,0,1,0, - 89,0,110,1,37,0,116,6,124,1,100,2,100,0,131,3, - 100,0,117,0,114,109,9,0,124,1,106,9,124,1,95,10, - 116,11,124,1,100,3,131,2,115,98,124,0,106,2,160,12, - 100,4,161,1,100,5,25,0,124,1,95,10,110,10,35,0, - 4,0,116,8,121,137,1,0,1,0,1,0,89,0,110,1, - 37,0,116,6,124,1,100,6,100,0,131,3,100,0,117,0, - 114,134,9,0,124,0,124,1,95,13,124,1,83,0,35,0, - 4,0,116,8,121,136,1,0,1,0,1,0,89,0,124,1, - 83,0,37,0,124,1,83,0,119,0,119,0,119,0,41,7, - 78,114,113,0,0,0,114,159,0,0,0,114,155,0,0,0, - 114,142,0,0,0,114,26,0,0,0,114,114,0,0,0,41, - 14,114,123,0,0,0,114,171,0,0,0,114,21,0,0,0, - 114,19,0,0,0,114,106,0,0,0,114,172,0,0,0,114, - 13,0,0,0,114,113,0,0,0,114,2,0,0,0,114,9, - 0,0,0,114,159,0,0,0,114,11,0,0,0,114,143,0, - 0,0,114,114,0,0,0,114,165,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,25,95,108,111, - 97,100,95,98,97,99,107,119,97,114,100,95,99,111,109,112, - 97,116,105,98,108,101,116,2,0,0,115,80,0,0,0,2, - 3,16,1,2,128,6,1,12,1,14,1,12,1,2,1,2, - 128,14,3,12,1,16,1,2,1,10,1,2,128,12,1,4, - 1,2,128,16,1,2,1,8,4,10,1,18,1,4,128,12, - 1,4,1,2,128,16,1,2,1,6,1,4,3,2,128,12, - 254,2,1,4,1,2,128,4,0,2,254,2,251,2,246,115, - 59,0,0,0,129,7,9,0,137,24,33,7,184,4,61,0, - 189,7,65,6,7,193,16,18,65,35,0,193,35,7,65,44, - 7,193,54,3,65,59,0,193,59,7,66,5,7,194,8,1, - 66,5,7,194,9,1,65,44,7,194,10,1,65,6,7,114, - 173,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,11,0,0,0,67,0,0,0,115,248,0,0,0,124,0, - 106,0,100,0,117,1,114,29,116,1,124,0,106,0,100,1, - 131,2,115,29,116,2,124,0,106,0,131,1,155,0,100,2, - 157,2,125,1,116,3,160,4,124,1,116,5,161,2,1,0, - 116,6,124,0,131,1,83,0,116,7,124,0,131,1,125,2, - 100,3,124,0,95,8,9,0,124,2,116,9,106,10,124,0, - 106,11,60,0,9,0,124,0,106,0,100,0,117,0,114,62, - 124,0,106,12,100,0,117,0,114,61,116,13,100,4,124,0, - 106,11,100,5,141,2,130,1,110,6,124,0,106,0,160,14, - 124,2,161,1,1,0,110,22,35,0,1,0,1,0,1,0, - 9,0,116,9,106,10,124,0,106,11,61,0,130,0,35,0, - 4,0,116,15,121,123,1,0,1,0,1,0,89,0,130,0, - 37,0,37,0,116,9,106,10,160,16,124,0,106,11,161,1, - 125,2,124,2,116,9,106,10,124,0,106,11,60,0,116,17, - 100,6,124,0,106,11,124,0,106,0,131,3,1,0,100,7, - 124,0,95,8,124,2,83,0,35,0,100,7,124,0,95,8, - 119,0,37,0,119,0,41,8,78,114,164,0,0,0,114,169, - 0,0,0,84,114,168,0,0,0,114,20,0,0,0,122,18, - 105,109,112,111,114,116,32,123,33,114,125,32,35,32,123,33, - 114,125,70,41,18,114,123,0,0,0,114,11,0,0,0,114, - 7,0,0,0,114,102,0,0,0,114,103,0,0,0,114,170, - 0,0,0,114,173,0,0,0,114,166,0,0,0,90,13,95, - 105,110,105,116,105,97,108,105,122,105,110,103,114,19,0,0, - 0,114,106,0,0,0,114,21,0,0,0,114,130,0,0,0, - 114,88,0,0,0,114,164,0,0,0,114,71,0,0,0,114, - 172,0,0,0,114,84,0,0,0,41,3,114,110,0,0,0, - 114,109,0,0,0,114,111,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,14,95,108,111,97,100, - 95,117,110,108,111,99,107,101,100,152,2,0,0,115,66,0, - 0,0,10,2,12,2,16,1,12,2,8,1,8,2,6,5, - 2,1,12,1,2,1,10,1,10,1,14,1,2,255,12,4, - 4,128,6,1,2,1,10,1,2,3,2,128,12,254,2,1, - 2,1,4,128,14,5,12,1,16,1,6,2,4,2,2,128, - 10,254,2,245,115,64,0,0,0,165,6,65,53,0,172,24, - 65,5,0,193,4,1,65,53,0,193,5,4,65,26,7,193, - 10,5,65,16,6,193,15,1,65,26,7,193,16,7,65,25, - 13,193,23,3,65,26,7,193,26,22,65,53,0,193,53,5, - 65,58,7,193,59,1,65,25,13,114,174,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, - 0,0,0,115,58,0,0,0,116,0,124,0,106,1,131,1, - 53,0,1,0,116,2,124,0,131,1,2,0,100,1,4,0, - 4,0,131,3,1,0,83,0,35,0,49,0,115,21,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,100,1, - 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, - 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, - 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, - 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, - 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, - 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, - 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, - 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, - 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, - 100,117,108,101,115,44,32,116,104,97,116,32,101,120,105,115, - 116,105,110,103,32,109,111,100,117,108,101,32,103,101,116,115, - 10,32,32,32,32,99,108,111,98,98,101,114,101,100,46,10, - 10,32,32,32,32,78,41,3,114,58,0,0,0,114,21,0, - 0,0,114,174,0,0,0,169,1,114,110,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,108,0, - 0,0,197,2,0,0,115,10,0,0,0,12,9,6,1,14, - 255,22,128,4,0,115,12,0,0,0,133,4,16,3,144,4, - 20,11,149,3,20,11,114,108,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,0, - 115,140,0,0,0,101,0,90,1,100,0,90,2,100,1,90, - 3,100,2,90,4,101,5,100,3,100,4,132,0,131,1,90, - 6,101,7,100,20,100,6,100,7,132,1,131,1,90,8,101, - 7,100,21,100,8,100,9,132,1,131,1,90,9,101,5,100, - 10,100,11,132,0,131,1,90,10,101,5,100,12,100,13,132, - 0,131,1,90,11,101,7,101,12,100,14,100,15,132,0,131, - 1,131,1,90,13,101,7,101,12,100,16,100,17,132,0,131, - 1,131,1,90,14,101,7,101,12,100,18,100,19,132,0,131, - 1,131,1,90,15,101,7,101,16,131,1,90,17,100,5,83, - 0,41,22,218,15,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,122,144,77,101,116,97,32,112,97,116,104,32, - 105,109,112,111,114,116,32,102,111,114,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,115,46,10,10,32,32, - 32,32,65,108,108,32,109,101,116,104,111,100,115,32,97,114, - 101,32,101,105,116,104,101,114,32,99,108,97,115,115,32,111, - 114,32,115,116,97,116,105,99,32,109,101,116,104,111,100,115, - 32,116,111,32,97,118,111,105,100,32,116,104,101,32,110,101, - 101,100,32,116,111,10,32,32,32,32,105,110,115,116,97,110, - 116,105,97,116,101,32,116,104,101,32,99,108,97,115,115,46, - 10,10,32,32,32,32,122,8,98,117,105,108,116,45,105,110, - 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,34,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,100,2,124,0,106,3,155,2,100,3, - 116,4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,122,8,60,109,111,100,117,108,101,32, - 122,2,32,40,122,2,41,62,78,41,6,114,102,0,0,0, - 114,103,0,0,0,114,104,0,0,0,114,9,0,0,0,114, - 176,0,0,0,114,152,0,0,0,169,1,114,111,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 115,0,0,0,223,2,0,0,115,8,0,0,0,6,7,2, - 1,4,255,22,2,114,18,0,0,0,122,27,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,46,109,111,100,117, - 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,42,0, - 0,0,124,2,100,0,117,1,114,6,100,0,83,0,116,0, - 160,1,124,1,161,1,114,19,116,2,124,1,124,0,124,0, - 106,3,100,1,141,3,83,0,100,0,83,0,169,2,78,114, - 151,0,0,0,41,4,114,65,0,0,0,90,10,105,115,95, - 98,117,105,108,116,105,110,114,105,0,0,0,114,152,0,0, - 0,169,4,218,3,99,108,115,114,90,0,0,0,218,4,112, - 97,116,104,218,6,116,97,114,103,101,116,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,9,102,105,110,100, + 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, + 114,127,0,0,0,114,128,0,0,0,32,32,32,32,32,32, + 114,5,0,0,0,114,35,0,0,0,101,1,0,0,115,14, + 0,0,0,6,2,6,1,6,1,6,1,14,1,6,3,10, + 1,114,17,0,0,0,122,19,77,111,100,117,108,101,83,112, + 101,99,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,6,0,0,0,67,0,0,0, + 115,102,0,0,0,100,1,160,0,124,0,106,1,161,1,100, + 2,160,0,124,0,106,2,161,1,103,2,125,1,124,0,106, + 3,100,0,117,1,114,26,124,1,160,4,100,3,160,0,124, + 0,106,3,161,1,161,1,1,0,124,0,106,5,100,0,117, + 1,114,40,124,1,160,4,100,4,160,0,124,0,106,5,161, + 1,161,1,1,0,100,5,160,0,124,0,106,6,106,7,100, + 6,160,8,124,1,161,1,161,2,83,0,41,7,78,122,9, + 110,97,109,101,61,123,33,114,125,122,11,108,111,97,100,101, + 114,61,123,33,114,125,122,11,111,114,105,103,105,110,61,123, + 33,114,125,122,29,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,61, + 123,125,122,6,123,125,40,123,125,41,122,2,44,32,41,9, + 114,51,0,0,0,114,20,0,0,0,114,122,0,0,0,114, + 126,0,0,0,218,6,97,112,112,101,110,100,114,129,0,0, + 0,218,9,95,95,99,108,97,115,115,95,95,114,8,0,0, + 0,218,4,106,111,105,110,41,2,114,34,0,0,0,114,63, + 0,0,0,32,32,114,5,0,0,0,114,54,0,0,0,113, + 1,0,0,115,20,0,0,0,10,1,10,1,4,255,10,2, + 18,1,10,1,6,1,8,1,4,255,22,2,114,17,0,0, + 0,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, + 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0, + 0,0,0,8,0,0,0,67,0,0,0,115,104,0,0,0, + 124,0,106,0,125,2,9,0,124,0,106,1,124,1,106,1, + 107,2,111,38,124,0,106,2,124,1,106,2,107,2,111,38, + 124,0,106,3,124,1,106,3,107,2,111,38,124,2,124,1, + 106,0,107,2,111,38,124,0,106,4,124,1,106,4,107,2, + 111,38,124,0,106,5,124,1,106,5,107,2,83,0,35,0, + 4,0,116,6,121,51,1,0,1,0,1,0,116,7,6,0, + 89,0,83,0,37,0,119,0,114,0,0,0,0,41,8,114, + 129,0,0,0,114,20,0,0,0,114,122,0,0,0,114,126, + 0,0,0,218,6,99,97,99,104,101,100,218,12,104,97,115, + 95,108,111,99,97,116,105,111,110,114,2,0,0,0,218,14, + 78,111,116,73,109,112,108,101,109,101,110,116,101,100,41,3, + 114,34,0,0,0,90,5,111,116,104,101,114,90,4,115,109, + 115,108,32,32,32,114,5,0,0,0,218,6,95,95,101,113, + 95,95,123,1,0,0,115,36,0,0,0,6,1,2,1,12, + 1,10,1,2,255,10,2,2,254,8,3,2,253,10,4,2, + 252,10,5,2,251,2,128,12,6,8,1,2,128,2,255,115, + 12,0,0,0,132,34,39,0,167,9,50,7,179,1,50,7, + 122,17,77,111,100,117,108,101,83,112,101,99,46,95,95,101, + 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,58,0,0,0,124,0,106, + 0,100,0,117,0,114,26,124,0,106,1,100,0,117,1,114, + 26,124,0,106,2,114,26,116,3,100,0,117,0,114,19,116, + 4,130,1,116,3,160,5,124,0,106,1,161,1,124,0,95, + 0,124,0,106,0,83,0,114,0,0,0,0,41,6,114,131, + 0,0,0,114,126,0,0,0,114,130,0,0,0,218,19,95, + 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, + 97,108,218,19,78,111,116,73,109,112,108,101,109,101,110,116, + 101,100,69,114,114,111,114,90,11,95,103,101,116,95,99,97, + 99,104,101,100,114,53,0,0,0,32,114,5,0,0,0,114, + 135,0,0,0,135,1,0,0,115,12,0,0,0,10,2,16, + 1,8,1,4,1,14,1,6,1,114,17,0,0,0,122,17, + 77,111,100,117,108,101,83,112,101,99,46,99,97,99,104,101, + 100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,131,0,0, + 0,41,2,114,34,0,0,0,114,135,0,0,0,32,32,114, + 5,0,0,0,114,135,0,0,0,144,1,0,0,115,2,0, + 0,0,10,2,114,17,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,32, + 0,0,0,124,0,106,0,100,1,117,0,114,13,124,0,106, + 1,160,2,100,2,161,1,100,3,25,0,83,0,124,0,106, + 1,83,0,41,4,122,32,84,104,101,32,110,97,109,101,32, + 111,102,32,116,104,101,32,109,111,100,117,108,101,39,115,32, + 112,97,114,101,110,116,46,78,218,1,46,114,26,0,0,0, + 41,3,114,129,0,0,0,114,20,0,0,0,218,10,114,112, + 97,114,116,105,116,105,111,110,114,53,0,0,0,32,114,5, + 0,0,0,218,6,112,97,114,101,110,116,148,1,0,0,115, + 6,0,0,0,10,3,16,1,6,2,114,17,0,0,0,122, + 17,77,111,100,117,108,101,83,112,101,99,46,112,97,114,101, + 110,116,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0, + 83,0,114,0,0,0,0,41,1,114,130,0,0,0,114,53, + 0,0,0,32,114,5,0,0,0,114,136,0,0,0,156,1, + 0,0,115,2,0,0,0,6,2,114,17,0,0,0,122,23, + 77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,108, + 111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,67,0,0,0,115,14,0,0, + 0,116,0,124,1,131,1,124,0,95,1,100,0,83,0,114, + 0,0,0,0,41,2,218,4,98,111,111,108,114,130,0,0, + 0,41,2,114,34,0,0,0,218,5,118,97,108,117,101,32, + 32,114,5,0,0,0,114,136,0,0,0,160,1,0,0,115, + 2,0,0,0,14,2,114,17,0,0,0,41,12,114,8,0, + 0,0,114,7,0,0,0,114,1,0,0,0,114,9,0,0, + 0,114,35,0,0,0,114,54,0,0,0,114,138,0,0,0, + 218,8,112,114,111,112,101,114,116,121,114,135,0,0,0,218, + 6,115,101,116,116,101,114,114,143,0,0,0,114,136,0,0, + 0,114,23,0,0,0,114,5,0,0,0,114,125,0,0,0, + 64,1,0,0,115,34,0,0,0,8,0,4,1,4,36,2, + 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, + 3,10,1,2,7,10,1,4,3,14,1,114,17,0,0,0, + 114,125,0,0,0,169,2,114,126,0,0,0,114,128,0,0, + 0,99,2,0,0,0,0,0,0,0,2,0,0,0,8,0, + 0,0,67,0,0,0,115,152,0,0,0,116,0,124,1,100, + 1,131,2,114,37,116,1,100,2,117,0,114,11,116,2,130, + 1,116,1,106,3,125,4,124,3,100,2,117,0,114,24,124, + 4,124,0,124,1,100,3,141,2,83,0,124,3,114,28,103, + 0,110,1,100,2,125,5,124,4,124,0,124,1,124,5,100, + 4,141,3,83,0,124,3,100,2,117,0,114,67,116,0,124, + 1,100,5,131,2,114,65,9,0,124,1,160,4,124,0,161, + 1,125,3,110,14,35,0,4,0,116,5,121,75,1,0,1, + 0,1,0,100,2,125,3,89,0,110,3,37,0,100,6,125, + 3,116,6,124,0,124,1,124,2,124,3,100,7,141,4,83, + 0,119,0,41,8,122,53,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,118,97,114,105,111,117,115,32,108,111,97, + 100,101,114,32,109,101,116,104,111,100,115,46,90,12,103,101, + 116,95,102,105,108,101,110,97,109,101,78,41,1,114,122,0, + 0,0,41,2,114,122,0,0,0,114,129,0,0,0,114,128, + 0,0,0,70,114,148,0,0,0,41,7,114,10,0,0,0, + 114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0,0,114,125,0, + 0,0,41,6,114,20,0,0,0,114,122,0,0,0,114,126, + 0,0,0,114,128,0,0,0,114,149,0,0,0,90,6,115, + 101,97,114,99,104,32,32,32,32,32,32,114,5,0,0,0, + 114,104,0,0,0,165,1,0,0,115,42,0,0,0,10,2, + 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, + 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, + 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, + 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, + 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, + 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, + 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, + 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, + 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, + 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, + 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, + 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, + 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, + 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, + 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, + 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, + 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, + 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, + 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, + 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, + 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, + 169,1,114,126,0,0,0,70,84,41,13,114,113,0,0,0, + 114,2,0,0,0,114,8,0,0,0,114,112,0,0,0,114, + 121,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, + 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, + 8,95,95,112,97,116,104,95,95,114,125,0,0,0,114,130, + 0,0,0,114,135,0,0,0,114,129,0,0,0,41,8,114, + 110,0,0,0,114,122,0,0,0,114,126,0,0,0,114,109, + 0,0,0,114,20,0,0,0,90,8,108,111,99,97,116,105, + 111,110,114,135,0,0,0,114,129,0,0,0,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,17,95,115,112,101,99, + 95,102,114,111,109,95,109,111,100,117,108,101,191,1,0,0, + 115,108,0,0,0,2,2,8,1,2,128,12,1,4,1,2, + 128,8,2,4,1,6,2,8,1,2,1,8,1,2,128,12, + 1,4,2,2,128,2,1,8,1,2,128,12,1,8,1,2, + 128,8,1,8,1,2,1,8,1,2,128,12,1,8,1,2, + 128,4,2,2,1,8,1,2,128,12,1,8,1,2,128,2, + 1,12,1,2,128,12,1,8,1,2,128,14,2,18,1,6, + 1,6,1,4,1,2,249,2,252,2,250,2,250,2,251,2, + 246,115,93,0,0,0,129,3,5,0,133,7,14,7,157,3, + 33,0,161,7,42,7,172,3,48,0,176,9,59,7,193,5, + 3,65,9,0,193,9,9,65,20,7,193,24,3,65,28,0, + 193,28,9,65,39,7,193,41,5,65,47,0,193,47,9,65, + 58,7,194,19,1,65,58,7,194,20,1,65,39,7,194,21, + 1,65,20,7,194,22,1,59,7,194,23,1,42,7,194,24, + 1,14,7,114,155,0,0,0,70,169,1,218,8,111,118,101, + 114,114,105,100,101,99,2,0,0,0,0,0,0,0,1,0, + 0,0,8,0,0,0,67,0,0,0,115,204,1,0,0,124, + 2,115,10,116,0,124,1,100,1,100,0,131,3,100,0,117, + 0,114,26,9,0,124,0,106,1,124,1,95,2,110,10,35, + 0,4,0,116,3,121,229,1,0,1,0,1,0,89,0,110, + 1,37,0,124,2,115,36,116,0,124,1,100,2,100,0,131, + 3,100,0,117,0,114,87,124,0,106,4,125,3,124,3,100, + 0,117,0,114,72,124,0,106,5,100,0,117,1,114,72,116, + 6,100,0,117,0,114,54,116,7,130,1,116,6,106,8,125, + 4,124,4,160,9,124,4,161,1,125,3,124,0,106,5,124, + 3,95,10,124,3,124,0,95,4,100,0,124,1,95,11,9, + 0,124,3,124,1,95,12,110,10,35,0,4,0,116,3,121, + 228,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, + 97,116,0,124,1,100,3,100,0,131,3,100,0,117,0,114, + 113,9,0,124,0,106,13,124,1,95,14,110,10,35,0,4, + 0,116,3,121,227,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,124,1,95,15,110,10,35,0,4,0,116, + 3,121,226,1,0,1,0,1,0,89,0,110,1,37,0,124, + 2,115,138,116,0,124,1,100,4,100,0,131,3,100,0,117, + 0,114,159,124,0,106,5,100,0,117,1,114,159,9,0,124, + 0,106,5,124,1,95,16,110,10,35,0,4,0,116,3,121, + 225,1,0,1,0,1,0,89,0,110,1,37,0,124,0,106, + 17,114,221,124,2,115,172,116,0,124,1,100,5,100,0,131, + 3,100,0,117,0,114,188,9,0,124,0,106,18,124,1,95, + 11,110,10,35,0,4,0,116,3,121,224,1,0,1,0,1, + 0,89,0,110,1,37,0,124,2,115,198,116,0,124,1,100, + 6,100,0,131,3,100,0,117,0,114,221,124,0,106,19,100, + 0,117,1,114,221,9,0,124,0,106,19,124,1,95,20,124, + 1,83,0,35,0,4,0,116,3,121,223,1,0,1,0,1, + 0,89,0,124,1,83,0,37,0,124,1,83,0,119,0,119, + 0,119,0,119,0,119,0,119,0,119,0,41,7,78,114,8, + 0,0,0,114,112,0,0,0,218,11,95,95,112,97,99,107, + 97,103,101,95,95,114,154,0,0,0,114,121,0,0,0,114, + 152,0,0,0,41,21,114,12,0,0,0,114,20,0,0,0, + 114,8,0,0,0,114,2,0,0,0,114,122,0,0,0,114, + 129,0,0,0,114,139,0,0,0,114,140,0,0,0,218,16, + 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, + 218,7,95,95,110,101,119,95,95,90,5,95,112,97,116,104, + 114,121,0,0,0,114,112,0,0,0,114,143,0,0,0,114, + 158,0,0,0,114,113,0,0,0,114,154,0,0,0,114,136, + 0,0,0,114,126,0,0,0,114,135,0,0,0,114,152,0, + 0,0,41,5,114,109,0,0,0,114,110,0,0,0,114,157, + 0,0,0,114,122,0,0,0,114,159,0,0,0,32,32,32, + 32,32,114,5,0,0,0,218,18,95,105,110,105,116,95,109, + 111,100,117,108,101,95,97,116,116,114,115,236,1,0,0,115, + 142,0,0,0,20,4,2,1,10,1,2,128,12,1,4,1, + 2,128,20,2,6,1,8,1,10,2,8,1,4,1,6,1, + 10,2,8,1,6,1,6,11,2,1,8,1,2,128,12,1, + 4,1,2,128,20,2,2,1,10,1,2,128,12,1,4,1, + 2,128,2,2,8,1,2,128,12,1,4,1,2,128,20,2, + 10,1,2,1,10,1,2,128,12,1,4,1,2,128,6,2, + 20,1,2,1,10,1,2,128,12,1,4,1,2,128,20,2, + 10,1,2,1,8,1,4,3,2,128,12,254,2,1,4,1, + 2,128,4,0,2,254,2,249,2,249,2,249,2,251,2,250, + 2,228,115,121,0,0,0,139,4,16,0,144,7,25,7,193, + 9,3,65,13,0,193,13,7,65,22,7,193,34,4,65,39, + 0,193,39,7,65,48,7,193,50,3,65,54,0,193,54,7, + 65,63,7,194,16,4,66,21,0,194,21,7,66,30,7,194, + 45,4,66,50,0,194,50,7,66,59,7,195,12,4,67,18, + 0,195,18,7,67,28,7,195,31,1,67,28,7,195,32,1, + 66,59,7,195,33,1,66,30,7,195,34,1,65,63,7,195, + 35,1,65,48,7,195,36,1,65,22,7,195,37,1,25,7, + 114,161,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,115,82,0,0,0,100, + 1,125,1,116,0,124,0,106,1,100,2,131,2,114,15,124, + 0,106,1,160,2,124,0,161,1,125,1,110,10,116,0,124, + 0,106,1,100,3,131,2,114,25,116,3,100,4,131,1,130, + 1,124,1,100,1,117,0,114,34,116,4,124,0,106,5,131, + 1,125,1,116,6,124,0,124,1,131,2,1,0,124,1,83, + 0,41,5,122,43,67,114,101,97,116,101,32,97,32,109,111, + 100,117,108,101,32,98,97,115,101,100,32,111,110,32,116,104, + 101,32,112,114,111,118,105,100,101,100,32,115,112,101,99,46, + 78,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101, + 218,11,101,120,101,99,95,109,111,100,117,108,101,122,66,108, + 111,97,100,101,114,115,32,116,104,97,116,32,100,101,102,105, + 110,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,109,117,115,116,32,97,108,115,111,32,100,101,102,105,110, + 101,32,99,114,101,97,116,101,95,109,111,100,117,108,101,40, + 41,41,7,114,10,0,0,0,114,122,0,0,0,114,162,0, + 0,0,114,88,0,0,0,114,21,0,0,0,114,20,0,0, + 0,114,161,0,0,0,169,2,114,109,0,0,0,114,110,0, + 0,0,32,32,114,5,0,0,0,218,16,109,111,100,117,108, + 101,95,102,114,111,109,95,115,112,101,99,52,2,0,0,115, + 18,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, + 10,1,10,1,4,1,114,17,0,0,0,114,165,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,100,0,0,0,124,0,106,0,100,1, + 117,0,114,7,100,2,110,2,124,0,106,0,125,1,124,0, + 106,1,100,1,117,0,114,32,124,0,106,2,100,1,117,0, + 114,25,100,3,160,3,124,1,161,1,83,0,100,4,160,3, + 124,1,124,0,106,2,161,2,83,0,124,0,106,4,114,42, + 100,5,160,3,124,1,124,0,106,1,161,2,83,0,100,6, + 160,3,124,0,106,0,124,0,106,1,161,2,83,0,41,7, + 122,38,82,101,116,117,114,110,32,116,104,101,32,114,101,112, + 114,32,116,111,32,117,115,101,32,102,111,114,32,116,104,101, + 32,109,111,100,117,108,101,46,78,114,115,0,0,0,114,116, + 0,0,0,114,117,0,0,0,114,118,0,0,0,250,18,60, + 109,111,100,117,108,101,32,123,33,114,125,32,40,123,125,41, + 62,41,5,114,20,0,0,0,114,126,0,0,0,114,122,0, + 0,0,114,51,0,0,0,114,136,0,0,0,41,2,114,109, + 0,0,0,114,20,0,0,0,32,32,114,5,0,0,0,114, + 119,0,0,0,69,2,0,0,115,16,0,0,0,20,3,10, + 1,10,1,10,1,14,2,6,2,14,1,16,2,114,17,0, + 0,0,114,119,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,10,0,0,0,67,0,0,0,115,32,1,0, + 0,124,0,106,0,125,2,116,1,124,2,131,1,53,0,1, + 0,116,2,106,3,160,4,124,2,161,1,124,1,117,1,114, + 27,100,1,160,5,124,2,161,1,125,3,116,6,124,3,124, + 2,100,2,141,2,130,1,9,0,124,0,106,7,100,3,117, + 0,114,53,124,0,106,8,100,3,117,0,114,45,116,6,100, + 4,124,0,106,0,100,2,141,2,130,1,116,9,124,0,124, + 1,100,5,100,6,141,3,1,0,110,40,116,9,124,0,124, + 1,100,5,100,6,141,3,1,0,116,10,124,0,106,7,100, + 7,131,2,115,87,116,11,124,0,106,7,131,1,155,0,100, + 8,157,2,125,3,116,12,160,13,124,3,116,14,161,2,1, + 0,124,0,106,7,160,15,124,2,161,1,1,0,110,6,124, + 0,106,7,160,16,124,1,161,1,1,0,116,2,106,3,160, + 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, + 0,106,0,60,0,110,16,35,0,116,2,106,3,160,17,124, + 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, + 0,60,0,119,0,37,0,9,0,100,3,4,0,4,0,131, + 3,1,0,124,1,83,0,35,0,49,0,115,136,119,4,37, + 0,1,0,1,0,1,0,89,0,1,0,1,0,124,1,83, + 0,41,9,122,70,69,120,101,99,117,116,101,32,116,104,101, + 32,115,112,101,99,39,115,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,117,108,101,32,105,110,32,97,110,32,101, + 120,105,115,116,105,110,103,32,109,111,100,117,108,101,39,115, + 32,110,97,109,101,115,112,97,99,101,46,122,30,109,111,100, + 117,108,101,32,123,33,114,125,32,110,111,116,32,105,110,32, + 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, + 78,250,14,109,105,115,115,105,110,103,32,108,111,97,100,101, + 114,84,114,156,0,0,0,114,163,0,0,0,250,55,46,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,110,111,116, + 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, + 98,97,99,107,32,116,111,32,108,111,97,100,95,109,111,100, + 117,108,101,40,41,41,18,114,20,0,0,0,114,58,0,0, + 0,114,18,0,0,0,114,105,0,0,0,114,39,0,0,0, + 114,51,0,0,0,114,88,0,0,0,114,122,0,0,0,114, + 129,0,0,0,114,161,0,0,0,114,10,0,0,0,114,6, + 0,0,0,114,101,0,0,0,114,102,0,0,0,218,13,73, + 109,112,111,114,116,87,97,114,110,105,110,103,218,11,108,111, + 97,100,95,109,111,100,117,108,101,114,163,0,0,0,218,3, + 112,111,112,41,4,114,109,0,0,0,114,110,0,0,0,114, + 20,0,0,0,114,108,0,0,0,32,32,32,32,114,5,0, + 0,0,114,106,0,0,0,86,2,0,0,115,50,0,0,0, + 6,2,10,1,16,1,10,1,12,1,2,1,10,1,10,1, + 14,1,16,2,14,2,12,1,16,1,12,2,14,1,12,2, + 14,4,14,1,2,128,14,255,18,1,10,233,4,24,22,128, + 4,0,115,41,0,0,0,135,20,66,3,3,156,65,1,65, + 43,2,193,29,14,66,3,3,193,43,15,65,58,9,193,58, + 1,66,3,3,194,3,4,66,7,11,194,8,3,66,7,11, + 114,106,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,22,1,0,0,9, + 0,124,0,106,0,160,1,124,0,106,2,161,1,1,0,110, + 25,35,0,1,0,1,0,1,0,124,0,106,2,116,3,106, + 4,118,0,114,32,116,3,106,4,160,5,124,0,106,2,161, + 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, + 0,37,0,116,3,106,4,160,5,124,0,106,2,161,1,125, + 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, + 1,100,1,100,0,131,3,100,0,117,0,114,71,9,0,124, + 0,106,0,124,1,95,7,110,10,35,0,4,0,116,8,121, + 138,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, + 1,100,2,100,0,131,3,100,0,117,0,114,109,9,0,124, + 1,106,9,124,1,95,10,116,11,124,1,100,3,131,2,115, + 98,124,0,106,2,160,12,100,4,161,1,100,5,25,0,124, + 1,95,10,110,10,35,0,4,0,116,8,121,137,1,0,1, + 0,1,0,89,0,110,1,37,0,116,6,124,1,100,6,100, + 0,131,3,100,0,117,0,114,134,9,0,124,0,124,1,95, + 13,124,1,83,0,35,0,4,0,116,8,121,136,1,0,1, + 0,1,0,89,0,124,1,83,0,37,0,124,1,83,0,119, + 0,119,0,119,0,41,7,78,114,112,0,0,0,114,158,0, + 0,0,114,154,0,0,0,114,141,0,0,0,114,26,0,0, + 0,114,113,0,0,0,41,14,114,122,0,0,0,114,170,0, + 0,0,114,20,0,0,0,114,18,0,0,0,114,105,0,0, + 0,114,171,0,0,0,114,12,0,0,0,114,112,0,0,0, + 114,2,0,0,0,114,8,0,0,0,114,158,0,0,0,114, + 10,0,0,0,114,142,0,0,0,114,113,0,0,0,114,164, + 0,0,0,32,32,114,5,0,0,0,218,25,95,108,111,97, + 100,95,98,97,99,107,119,97,114,100,95,99,111,109,112,97, + 116,105,98,108,101,116,2,0,0,115,80,0,0,0,2,3, + 16,1,2,128,6,1,12,1,14,1,12,1,2,1,2,128, + 14,3,12,1,16,1,2,1,10,1,2,128,12,1,4,1, + 2,128,16,1,2,1,8,4,10,1,18,1,4,128,12,1, + 4,1,2,128,16,1,2,1,6,1,4,3,2,128,12,254, + 2,1,4,1,2,128,4,0,2,254,2,251,2,246,115,59, + 0,0,0,129,7,9,0,137,24,33,7,184,4,61,0,189, + 7,65,6,7,193,16,18,65,35,0,193,35,7,65,44,7, + 193,54,3,65,59,0,193,59,7,66,5,7,194,8,1,66, + 5,7,194,9,1,65,44,7,194,10,1,65,6,7,114,172, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 11,0,0,0,67,0,0,0,115,248,0,0,0,124,0,106, + 0,100,0,117,1,114,29,116,1,124,0,106,0,100,1,131, + 2,115,29,116,2,124,0,106,0,131,1,155,0,100,2,157, + 2,125,1,116,3,160,4,124,1,116,5,161,2,1,0,116, + 6,124,0,131,1,83,0,116,7,124,0,131,1,125,2,100, + 3,124,0,95,8,9,0,124,2,116,9,106,10,124,0,106, + 11,60,0,9,0,124,0,106,0,100,0,117,0,114,62,124, + 0,106,12,100,0,117,0,114,61,116,13,100,4,124,0,106, + 11,100,5,141,2,130,1,110,6,124,0,106,0,160,14,124, + 2,161,1,1,0,110,22,35,0,1,0,1,0,1,0,9, + 0,116,9,106,10,124,0,106,11,61,0,130,0,35,0,4, + 0,116,15,121,123,1,0,1,0,1,0,89,0,130,0,37, + 0,37,0,116,9,106,10,160,16,124,0,106,11,161,1,125, + 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, + 6,124,0,106,11,124,0,106,0,131,3,1,0,100,7,124, + 0,95,8,124,2,83,0,35,0,100,7,124,0,95,8,119, + 0,37,0,119,0,41,8,78,114,163,0,0,0,114,168,0, + 0,0,84,114,167,0,0,0,114,19,0,0,0,122,18,105, + 109,112,111,114,116,32,123,33,114,125,32,35,32,123,33,114, + 125,70,41,18,114,122,0,0,0,114,10,0,0,0,114,6, + 0,0,0,114,101,0,0,0,114,102,0,0,0,114,169,0, + 0,0,114,172,0,0,0,114,165,0,0,0,90,13,95,105, + 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, + 114,105,0,0,0,114,20,0,0,0,114,129,0,0,0,114, + 88,0,0,0,114,163,0,0,0,114,71,0,0,0,114,171, + 0,0,0,114,84,0,0,0,41,3,114,109,0,0,0,114, + 108,0,0,0,114,110,0,0,0,32,32,32,114,5,0,0, + 0,218,14,95,108,111,97,100,95,117,110,108,111,99,107,101, + 100,152,2,0,0,115,66,0,0,0,10,2,12,2,16,1, + 12,2,8,1,8,2,6,5,2,1,12,1,2,1,10,1, + 10,1,14,1,2,255,12,4,4,128,6,1,2,1,10,1, + 2,3,2,128,12,254,2,1,2,1,4,128,14,5,12,1, + 16,1,6,2,4,2,2,128,10,254,2,245,115,64,0,0, + 0,165,6,65,53,0,172,24,65,5,0,193,4,1,65,53, + 0,193,5,4,65,26,7,193,10,5,65,16,6,193,15,1, + 65,26,7,193,16,7,65,25,13,193,23,3,65,26,7,193, + 26,22,65,53,0,193,53,5,65,58,7,193,59,1,65,25, + 13,114,173,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,67,0,0,0,115,58,0,0,0, + 116,0,124,0,106,1,131,1,53,0,1,0,116,2,124,0, + 131,1,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 35,0,49,0,115,21,119,4,37,0,1,0,1,0,1,0, + 89,0,1,0,1,0,100,1,83,0,41,2,122,191,82,101, + 116,117,114,110,32,97,32,110,101,119,32,109,111,100,117,108, + 101,32,111,98,106,101,99,116,44,32,108,111,97,100,101,100, + 32,98,121,32,116,104,101,32,115,112,101,99,39,115,32,108, + 111,97,100,101,114,46,10,10,32,32,32,32,84,104,101,32, + 109,111,100,117,108,101,32,105,115,32,110,111,116,32,97,100, + 100,101,100,32,116,111,32,105,116,115,32,112,97,114,101,110, + 116,46,10,10,32,32,32,32,73,102,32,97,32,109,111,100, + 117,108,101,32,105,115,32,97,108,114,101,97,100,121,32,105, + 110,32,115,121,115,46,109,111,100,117,108,101,115,44,32,116, + 104,97,116,32,101,120,105,115,116,105,110,103,32,109,111,100, + 117,108,101,32,103,101,116,115,10,32,32,32,32,99,108,111, + 98,98,101,114,101,100,46,10,10,32,32,32,32,78,41,3, + 114,58,0,0,0,114,20,0,0,0,114,173,0,0,0,169, + 1,114,109,0,0,0,32,114,5,0,0,0,114,107,0,0, + 0,197,2,0,0,115,10,0,0,0,12,9,6,1,14,255, + 22,128,4,0,115,12,0,0,0,133,4,16,3,144,4,20, + 11,149,3,20,11,114,107,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, + 140,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, + 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, + 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, + 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, + 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, + 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, + 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, + 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, + 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, + 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,99, + 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 67,0,0,0,115,34,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,100,2,124,0,106,3,155,2,100,3,116, + 4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,40, + 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, + 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, + 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, + 32,51,46,49,50,122,8,60,109,111,100,117,108,101,32,122, + 2,32,40,122,2,41,62,78,41,6,114,101,0,0,0,114, + 102,0,0,0,114,103,0,0,0,114,8,0,0,0,114,175, + 0,0,0,114,151,0,0,0,169,1,114,110,0,0,0,32, + 114,5,0,0,0,114,114,0,0,0,223,2,0,0,115,8, + 0,0,0,6,7,2,1,4,255,22,2,114,17,0,0,0, + 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, + 0,0,0,115,42,0,0,0,124,2,100,0,117,1,114,6, + 100,0,83,0,116,0,160,1,124,1,161,1,114,19,116,2, + 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, + 83,0,169,2,78,114,150,0,0,0,41,4,114,65,0,0, + 0,90,10,105,115,95,98,117,105,108,116,105,110,114,104,0, + 0,0,114,151,0,0,0,169,4,218,3,99,108,115,114,90, + 0,0,0,218,4,112,97,116,104,218,6,116,97,114,103,101, + 116,32,32,32,32,114,5,0,0,0,218,9,102,105,110,100, 95,115,112,101,99,234,2,0,0,115,10,0,0,0,8,2, - 4,1,10,1,16,1,4,2,114,18,0,0,0,122,25,66, + 4,1,10,1,16,1,4,2,114,17,0,0,0,122,25,66, 117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115,42,0, @@ -1196,179 +1173,173 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,102, - 0,0,0,114,103,0,0,0,114,104,0,0,0,114,184,0, - 0,0,114,123,0,0,0,41,4,114,181,0,0,0,114,90, - 0,0,0,114,182,0,0,0,114,110,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,11,102,105, - 110,100,95,109,111,100,117,108,101,243,2,0,0,115,10,0, - 0,0,6,9,2,2,4,254,12,3,18,1,114,18,0,0, - 0,122,27,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,46,0,0,0,124,0,106,0,116,1,106,2, - 118,1,114,17,116,3,100,1,160,4,124,0,106,0,161,1, - 124,0,106,0,100,2,141,2,130,1,116,5,116,6,106,7, - 124,0,131,2,83,0,41,4,122,24,67,114,101,97,116,101, - 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,114,86,0,0,0,114,20,0,0,0,78,41,8,114, - 21,0,0,0,114,19,0,0,0,114,87,0,0,0,114,88, - 0,0,0,114,51,0,0,0,114,75,0,0,0,114,65,0, - 0,0,90,14,99,114,101,97,116,101,95,98,117,105,108,116, - 105,110,114,175,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,163,0,0,0,2,3,0,0,115, - 10,0,0,0,12,3,12,1,4,1,6,255,12,2,114,18, - 0,0,0,122,29,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,99,114,101,97,116,101,95,109,111,100,117, - 108,101,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,116,1, - 106,2,124,0,131,2,1,0,100,1,83,0,41,2,122,22, - 69,120,101,99,32,97,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,78,41,3,114,75,0,0,0,114,65, - 0,0,0,90,12,101,120,101,99,95,98,117,105,108,116,105, - 110,114,178,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,164,0,0,0,10,3,0,0,115,2, - 0,0,0,16,3,114,18,0,0,0,122,27,66,117,105,108, - 116,105,110,73,109,112,111,114,116,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,1,0,0,0,67,0,0,0,243,4,0,0, - 0,100,1,83,0,41,2,122,57,82,101,116,117,114,110,32, - 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, - 104,97,118,101,32,99,111,100,101,32,111,98,106,101,99,116, - 115,46,78,114,5,0,0,0,169,2,114,181,0,0,0,114, - 90,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,183,0, + 0,0,114,122,0,0,0,41,4,114,180,0,0,0,114,90, + 0,0,0,114,181,0,0,0,114,109,0,0,0,32,32,32, + 32,114,5,0,0,0,218,11,102,105,110,100,95,109,111,100, + 117,108,101,243,2,0,0,115,10,0,0,0,6,9,2,2, + 4,254,12,3,18,1,114,17,0,0,0,122,27,66,117,105, + 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,46,0, + 0,0,124,0,106,0,116,1,106,2,118,1,114,17,116,3, + 100,1,160,4,124,0,106,0,161,1,124,0,106,0,100,2, + 141,2,130,1,116,5,116,6,106,7,124,0,131,2,83,0, + 41,4,122,24,67,114,101,97,116,101,32,97,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,114,86,0,0, + 0,114,19,0,0,0,78,41,8,114,20,0,0,0,114,18, + 0,0,0,114,87,0,0,0,114,88,0,0,0,114,51,0, + 0,0,114,75,0,0,0,114,65,0,0,0,90,14,99,114, + 101,97,116,101,95,98,117,105,108,116,105,110,114,174,0,0, + 0,32,114,5,0,0,0,114,162,0,0,0,2,3,0,0, + 115,10,0,0,0,12,3,12,1,4,1,6,255,12,2,114, + 17,0,0,0,122,29,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,99,114,101,97,116,101,95,109,111,100, + 117,108,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,116, + 1,106,2,124,0,131,2,1,0,100,1,83,0,41,2,122, + 22,69,120,101,99,32,97,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,78,41,3,114,75,0,0,0,114, + 65,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, + 105,110,114,177,0,0,0,32,114,5,0,0,0,114,163,0, + 0,0,10,3,0,0,115,2,0,0,0,16,3,114,17,0, + 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, + 116,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,1,0,0,0, + 67,0,0,0,243,4,0,0,0,100,1,83,0,41,2,122, + 57,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,100,111,32,110,111,116,32,104,97,118,101,32,99,111,100, + 101,32,111,98,106,101,99,116,115,46,78,114,23,0,0,0, + 169,2,114,180,0,0,0,114,90,0,0,0,32,32,114,5, 0,0,0,218,8,103,101,116,95,99,111,100,101,15,3,0, - 0,243,2,0,0,0,4,4,114,18,0,0,0,122,24,66, + 0,243,2,0,0,0,4,4,114,17,0,0,0,122,24,66, 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,67,0,0,0,114,186,0,0, + 0,0,0,0,1,0,0,0,67,0,0,0,114,185,0,0, 0,41,2,122,56,82,101,116,117,114,110,32,78,111,110,101, 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,5, - 0,0,0,114,187,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,10,103,101,116,95,115,111,117, - 114,99,101,21,3,0,0,114,189,0,0,0,114,18,0,0, - 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,67,0, - 0,0,114,186,0,0,0,41,3,122,52,82,101,116,117,114, - 110,32,70,97,108,115,101,32,97,115,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,115,32,97,114,101,32, - 110,101,118,101,114,32,112,97,99,107,97,103,101,115,46,70, - 78,114,5,0,0,0,114,187,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,129,0,0,0,27, - 3,0,0,114,189,0,0,0,114,18,0,0,0,122,26,66, + 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, + 0,0,0,114,186,0,0,0,32,32,114,5,0,0,0,218, + 10,103,101,116,95,115,111,117,114,99,101,21,3,0,0,114, + 188,0,0,0,114,17,0,0,0,122,26,66,117,105,108,116, + 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, + 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, + 3,122,52,82,101,116,117,114,110,32,70,97,108,115,101,32, + 97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, + 99,107,97,103,101,115,46,70,78,114,23,0,0,0,114,186, + 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,27, + 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, - 0,0,41,18,114,9,0,0,0,114,8,0,0,0,114,1, - 0,0,0,114,10,0,0,0,114,152,0,0,0,218,12,115, - 116,97,116,105,99,109,101,116,104,111,100,114,115,0,0,0, - 218,11,99,108,97,115,115,109,101,116,104,111,100,114,184,0, - 0,0,114,185,0,0,0,114,163,0,0,0,114,164,0,0, - 0,114,96,0,0,0,114,188,0,0,0,114,190,0,0,0, - 114,129,0,0,0,114,112,0,0,0,114,171,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,176,0,0,0,212,2,0,0,115,46,0,0, - 0,8,0,4,2,4,7,2,2,10,1,2,10,12,1,2, - 8,12,1,2,14,10,1,2,7,10,1,2,4,2,1,12, - 1,2,4,2,1,12,1,2,4,2,1,12,1,12,4,114, - 18,0,0,0,114,176,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,144, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, - 2,90,4,101,5,100,3,100,4,132,0,131,1,90,6,101, - 7,100,22,100,6,100,7,132,1,131,1,90,8,101,7,100, - 23,100,8,100,9,132,1,131,1,90,9,101,5,100,10,100, - 11,132,0,131,1,90,10,101,5,100,12,100,13,132,0,131, - 1,90,11,101,7,100,14,100,15,132,0,131,1,90,12,101, - 7,101,13,100,16,100,17,132,0,131,1,131,1,90,14,101, - 7,101,13,100,18,100,19,132,0,131,1,131,1,90,15,101, - 7,101,13,100,20,100,21,132,0,131,1,131,1,90,16,100, - 5,83,0,41,24,218,14,70,114,111,122,101,110,73,109,112, - 111,114,116,101,114,122,142,77,101,116,97,32,112,97,116,104, - 32,105,109,112,111,114,116,32,102,111,114,32,102,114,111,122, - 101,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, - 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, - 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, - 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, - 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, - 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, - 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, - 10,32,32,32,32,90,6,102,114,111,122,101,110,99,1,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,115,28,0,0,0,116,0,160,1,100,1,116,2,161, - 2,1,0,100,2,160,3,124,0,106,4,116,5,106,6,161, - 2,83,0,41,4,114,177,0,0,0,122,80,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108, - 101,95,114,101,112,114,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,114,167,0,0, - 0,78,41,7,114,102,0,0,0,114,103,0,0,0,114,104, - 0,0,0,114,51,0,0,0,114,9,0,0,0,114,194,0, - 0,0,114,152,0,0,0,41,1,218,1,109,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,115,0,0,0, - 47,3,0,0,115,8,0,0,0,6,7,2,1,4,255,16, - 2,114,18,0,0,0,122,26,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,109,111,100,117,108,101,95,114,101, - 112,114,78,99,4,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,67,0,0,0,115,30,0,0,0,116,0,160, - 1,124,1,161,1,114,13,116,2,124,1,124,0,124,0,106, - 3,100,1,141,3,83,0,100,0,83,0,114,179,0,0,0, - 41,4,114,65,0,0,0,114,99,0,0,0,114,105,0,0, - 0,114,152,0,0,0,114,180,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,184,0,0,0,58, - 3,0,0,115,6,0,0,0,10,2,16,1,4,2,114,18, - 0,0,0,122,24,70,114,111,122,101,110,73,109,112,111,114, - 116,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,67,0, - 0,0,115,30,0,0,0,116,0,160,1,100,1,116,2,161, - 2,1,0,116,3,160,4,124,1,161,1,114,13,124,0,83, - 0,100,2,83,0,41,3,122,93,70,105,110,100,32,97,32, - 102,114,111,122,101,110,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,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,122,105,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, - 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, - 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, - 100,78,41,5,114,102,0,0,0,114,103,0,0,0,114,104, - 0,0,0,114,65,0,0,0,114,99,0,0,0,41,3,114, - 181,0,0,0,114,90,0,0,0,114,182,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,185,0, + 0,0,41,18,114,8,0,0,0,114,7,0,0,0,114,1, + 0,0,0,114,9,0,0,0,114,151,0,0,0,218,12,115, + 116,97,116,105,99,109,101,116,104,111,100,114,114,0,0,0, + 218,11,99,108,97,115,115,109,101,116,104,111,100,114,183,0, + 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, + 0,114,95,0,0,0,114,187,0,0,0,114,189,0,0,0, + 114,128,0,0,0,114,111,0,0,0,114,170,0,0,0,114, + 23,0,0,0,114,5,0,0,0,114,175,0,0,0,212,2, + 0,0,115,46,0,0,0,8,0,4,2,4,7,2,2,10, + 1,2,10,12,1,2,8,12,1,2,14,10,1,2,7,10, + 1,2,4,2,1,12,1,2,4,2,1,12,1,2,4,2, + 1,12,1,12,4,114,17,0,0,0,114,175,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 64,0,0,0,115,144,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,90,4,101,5,100,3,100,4,132, + 0,131,1,90,6,101,7,100,22,100,6,100,7,132,1,131, + 1,90,8,101,7,100,23,100,8,100,9,132,1,131,1,90, + 9,101,5,100,10,100,11,132,0,131,1,90,10,101,5,100, + 12,100,13,132,0,131,1,90,11,101,7,100,14,100,15,132, + 0,131,1,90,12,101,7,101,13,100,16,100,17,132,0,131, + 1,131,1,90,14,101,7,101,13,100,18,100,19,132,0,131, + 1,131,1,90,15,101,7,101,13,100,20,100,21,132,0,131, + 1,131,1,90,16,100,5,83,0,41,24,218,14,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116, + 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, + 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, + 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, + 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, + 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, + 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, + 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, + 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, + 108,97,115,115,46,10,10,32,32,32,32,90,6,102,114,111, + 122,101,110,99,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,28,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, + 4,116,5,106,6,161,2,83,0,41,4,114,176,0,0,0, + 122,80,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 46,109,111,100,117,108,101,95,114,101,112,114,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,114,166,0,0,0,78,41,7,114,101,0,0,0,114, + 102,0,0,0,114,103,0,0,0,114,51,0,0,0,114,8, + 0,0,0,114,193,0,0,0,114,151,0,0,0,41,1,218, + 1,109,32,114,5,0,0,0,114,114,0,0,0,47,3,0, + 0,115,8,0,0,0,6,7,2,1,4,255,16,2,114,17, + 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,78, + 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,67,0,0,0,115,30,0,0,0,116,0,160,1,124,1, + 161,1,114,13,116,2,124,1,124,0,124,0,106,3,100,1, + 141,3,83,0,100,0,83,0,114,178,0,0,0,41,4,114, + 65,0,0,0,114,98,0,0,0,114,104,0,0,0,114,151, + 0,0,0,114,179,0,0,0,32,32,32,32,114,5,0,0, + 0,114,183,0,0,0,58,3,0,0,115,6,0,0,0,10, + 2,16,1,4,2,114,17,0,0,0,122,24,70,114,111,122, + 101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0, + 160,1,100,1,116,2,161,2,1,0,116,3,160,4,124,1, + 161,1,114,13,124,0,83,0,100,2,83,0,41,3,122,93, + 70,105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,41,5,114,101,0,0,0, + 114,102,0,0,0,114,103,0,0,0,114,65,0,0,0,114, + 98,0,0,0,41,3,114,180,0,0,0,114,90,0,0,0, + 114,181,0,0,0,32,32,32,114,5,0,0,0,114,184,0, 0,0,65,3,0,0,115,8,0,0,0,6,7,2,2,4, - 254,18,3,114,18,0,0,0,122,26,70,114,111,122,101,110, + 254,18,3,114,17,0,0,0,122,26,70,114,111,122,101,110, 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,67,0,0,0,114,186,0,0,0,41,2, + 0,1,0,0,0,67,0,0,0,114,185,0,0,0,41,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,5,0, - 0,0,114,175,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,163,0,0,0,77,3,0,0,115, - 2,0,0,0,4,0,114,18,0,0,0,122,28,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,46,99,114,101,97, - 116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,64, - 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, - 1,161,1,115,18,116,4,100,1,160,5,124,1,161,1,124, - 1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131, - 2,125,2,116,8,124,2,124,0,106,9,131,2,1,0,100, - 0,83,0,114,98,0,0,0,41,10,114,114,0,0,0,114, - 21,0,0,0,114,65,0,0,0,114,99,0,0,0,114,88, - 0,0,0,114,51,0,0,0,114,75,0,0,0,218,17,103, - 101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116, - 218,4,101,120,101,99,114,14,0,0,0,41,3,114,111,0, - 0,0,114,21,0,0,0,218,4,99,111,100,101,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,164,0,0, + 108,101,32,99,114,101,97,116,105,111,110,46,78,114,23,0, + 0,0,114,174,0,0,0,32,114,5,0,0,0,114,162,0, + 0,0,77,3,0,0,115,2,0,0,0,4,0,114,17,0, + 0,0,122,28,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,99,114,101,97,116,101,95,109,111,100,117,108,101, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, + 125,1,116,2,160,3,124,1,161,1,115,18,116,4,100,1, + 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, + 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, + 106,9,131,2,1,0,100,0,83,0,114,97,0,0,0,41, + 10,114,113,0,0,0,114,20,0,0,0,114,65,0,0,0, + 114,98,0,0,0,114,88,0,0,0,114,51,0,0,0,114, + 75,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, + 95,111,98,106,101,99,116,218,4,101,120,101,99,114,13,0, + 0,0,41,3,114,110,0,0,0,114,20,0,0,0,218,4, + 99,111,100,101,32,32,32,114,5,0,0,0,114,163,0,0, 0,81,3,0,0,115,14,0,0,0,8,2,10,1,10,1, - 2,1,6,255,12,2,16,1,114,18,0,0,0,122,26,70, + 2,1,6,255,12,2,16,1,114,17,0,0,0,122,26,70, 114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10, @@ -1379,569 +1350,560 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 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,41,1,114,112,0,0,0,114,187,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,171,0,0, - 0,90,3,0,0,115,2,0,0,0,10,8,114,18,0,0, - 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,243,10,0,0,0,116,0,160,1,124,1,161,1,83, - 0,41,2,122,45,82,101,116,117,114,110,32,116,104,101,32, - 99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32, - 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,46,78,41,2,114,65,0,0,0,114,196,0,0,0,114, - 187,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,188,0,0,0,100,3,0,0,243,2,0,0, - 0,10,4,114,18,0,0,0,122,23,70,114,111,122,101,110, + 78,41,1,114,111,0,0,0,114,186,0,0,0,32,32,114, + 5,0,0,0,114,170,0,0,0,90,3,0,0,115,2,0, + 0,0,10,8,114,17,0,0,0,122,26,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,108,111,97,100,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,243,10,0,0,0,116, + 0,160,1,124,1,161,1,83,0,41,2,122,45,82,101,116, + 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, + 101,99,116,32,102,111,114,32,116,104,101,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,46,78,41,2,114,65,0, + 0,0,114,195,0,0,0,114,186,0,0,0,32,32,114,5, + 0,0,0,114,187,0,0,0,100,3,0,0,243,2,0,0, + 0,10,4,114,17,0,0,0,122,23,70,114,111,122,101,110, 73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, 101,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,67,0,0,0,114,186,0,0,0,41,2,122,54,82, + 0,0,67,0,0,0,114,185,0,0,0,41,2,122,54,82, 101,116,117,114,110,32,78,111,110,101,32,97,115,32,102,114, 111,122,101,110,32,109,111,100,117,108,101,115,32,100,111,32, 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, - 99,111,100,101,46,78,114,5,0,0,0,114,187,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 190,0,0,0,106,3,0,0,114,189,0,0,0,114,18,0, - 0,0,122,25,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,114,199,0,0,0,41,2,122,46,82,101,116,117,114, - 110,32,84,114,117,101,32,105,102,32,116,104,101,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,32,105,115,32,97, - 32,112,97,99,107,97,103,101,46,78,41,2,114,65,0,0, - 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, - 107,97,103,101,114,187,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,129,0,0,0,112,3,0, - 0,114,200,0,0,0,114,18,0,0,0,122,25,70,114,111, + 99,111,100,101,46,78,114,23,0,0,0,114,186,0,0,0, + 32,32,114,5,0,0,0,114,189,0,0,0,106,3,0,0, + 114,188,0,0,0,114,17,0,0,0,122,25,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, + 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,114,198,0,0,0,41, + 2,122,46,82,101,116,117,114,110,32,84,114,117,101,32,105, + 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, + 46,78,41,2,114,65,0,0,0,90,17,105,115,95,102,114, + 111,122,101,110,95,112,97,99,107,97,103,101,114,186,0,0, + 0,32,32,114,5,0,0,0,114,128,0,0,0,112,3,0, + 0,114,199,0,0,0,114,17,0,0,0,122,25,70,114,111, 122,101,110,73,109,112,111,114,116,101,114,46,105,115,95,112, - 97,99,107,97,103,101,114,191,0,0,0,114,0,0,0,0, - 41,17,114,9,0,0,0,114,8,0,0,0,114,1,0,0, - 0,114,10,0,0,0,114,152,0,0,0,114,192,0,0,0, - 114,115,0,0,0,114,193,0,0,0,114,184,0,0,0,114, - 185,0,0,0,114,163,0,0,0,114,164,0,0,0,114,171, - 0,0,0,114,101,0,0,0,114,188,0,0,0,114,190,0, - 0,0,114,129,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,194,0,0,0, - 36,3,0,0,115,48,0,0,0,8,0,4,2,4,7,2, - 2,10,1,2,10,12,1,2,6,12,1,2,11,10,1,2, - 3,10,1,2,8,10,1,2,9,2,1,12,1,2,4,2, - 1,12,1,2,4,2,1,16,1,114,18,0,0,0,114,194, - 0,0,0,99,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,83,0,41,7,218, - 18,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116, - 101,120,116,122,36,67,111,110,116,101,120,116,32,109,97,110, - 97,103,101,114,32,102,111,114,32,116,104,101,32,105,109,112, - 111,114,116,32,108,111,99,107,46,99,1,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,67,0,0,0,243,12, - 0,0,0,116,0,160,1,161,0,1,0,100,1,83,0,41, - 2,122,24,65,99,113,117,105,114,101,32,116,104,101,32,105, - 109,112,111,114,116,32,108,111,99,107,46,78,41,2,114,65, - 0,0,0,114,66,0,0,0,114,53,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,62,0,0, - 0,125,3,0,0,243,2,0,0,0,12,2,114,18,0,0, - 0,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111, - 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99, - 4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 67,0,0,0,114,202,0,0,0,41,2,122,60,82,101,108, - 101,97,115,101,32,116,104,101,32,105,109,112,111,114,116,32, - 108,111,99,107,32,114,101,103,97,114,100,108,101,115,115,32, - 111,102,32,97,110,121,32,114,97,105,115,101,100,32,101,120, - 99,101,112,116,105,111,110,115,46,78,41,2,114,65,0,0, - 0,114,68,0,0,0,41,4,114,34,0,0,0,218,8,101, - 120,99,95,116,121,112,101,218,9,101,120,99,95,118,97,108, - 117,101,218,13,101,120,99,95,116,114,97,99,101,98,97,99, - 107,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,64,0,0,0,129,3,0,0,114,203,0,0,0,114,18, - 0,0,0,122,27,95,73,109,112,111,114,116,76,111,99,107, - 67,111,110,116,101,120,116,46,95,95,101,120,105,116,95,95, - 78,41,6,114,9,0,0,0,114,8,0,0,0,114,1,0, - 0,0,114,10,0,0,0,114,62,0,0,0,114,64,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,201,0,0,0,121,3,0,0,115,8, - 0,0,0,8,0,4,2,8,2,12,4,114,18,0,0,0, - 114,201,0,0,0,99,3,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,67,0,0,0,115,64,0,0,0,124, - 1,160,0,100,1,124,2,100,2,24,0,161,2,125,3,116, - 1,124,3,131,1,124,2,107,0,114,18,116,2,100,3,131, - 1,130,1,124,3,100,4,25,0,125,4,124,0,114,30,100, - 5,160,3,124,4,124,0,161,2,83,0,124,4,83,0,41, - 7,122,50,82,101,115,111,108,118,101,32,97,32,114,101,108, - 97,116,105,118,101,32,109,111,100,117,108,101,32,110,97,109, - 101,32,116,111,32,97,110,32,97,98,115,111,108,117,116,101, - 32,111,110,101,46,114,142,0,0,0,114,43,0,0,0,122, - 50,97,116,116,101,109,112,116,101,100,32,114,101,108,97,116, - 105,118,101,32,105,109,112,111,114,116,32,98,101,121,111,110, - 100,32,116,111,112,45,108,101,118,101,108,32,112,97,99,107, - 97,103,101,114,26,0,0,0,250,5,123,125,46,123,125,78, - 41,4,218,6,114,115,112,108,105,116,218,3,108,101,110,114, - 88,0,0,0,114,51,0,0,0,41,5,114,21,0,0,0, - 218,7,112,97,99,107,97,103,101,218,5,108,101,118,101,108, - 90,4,98,105,116,115,90,4,98,97,115,101,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,13,95,114,101, - 115,111,108,118,101,95,110,97,109,101,134,3,0,0,115,10, - 0,0,0,16,2,12,1,8,1,8,1,20,1,114,18,0, - 0,0,114,212,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,60,0,0, - 0,116,0,124,0,131,1,155,0,100,1,157,2,125,3,116, - 1,160,2,124,3,116,3,161,2,1,0,124,0,160,4,124, - 1,124,2,161,2,125,4,124,4,100,0,117,0,114,25,100, - 0,83,0,116,5,124,1,124,4,131,2,83,0,41,2,78, - 122,53,46,102,105,110,100,95,115,112,101,99,40,41,32,110, - 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, - 103,32,98,97,99,107,32,116,111,32,102,105,110,100,95,109, - 111,100,117,108,101,40,41,41,6,114,7,0,0,0,114,102, - 0,0,0,114,103,0,0,0,114,170,0,0,0,114,185,0, - 0,0,114,105,0,0,0,41,5,218,6,102,105,110,100,101, - 114,114,21,0,0,0,114,182,0,0,0,114,109,0,0,0, - 114,123,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,17,95,102,105,110,100,95,115,112,101,99, - 95,108,101,103,97,99,121,143,3,0,0,115,12,0,0,0, - 14,1,12,2,12,1,8,1,4,1,10,1,114,18,0,0, - 0,114,214,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,10,0,0,0,67,0,0,0,115,30,1,0,0, - 116,0,106,1,125,3,124,3,100,1,117,0,114,11,116,2, - 100,2,131,1,130,1,124,3,115,19,116,3,160,4,100,3, - 116,5,161,2,1,0,124,0,116,0,106,6,118,0,125,4, - 124,3,68,0,93,112,125,5,116,7,131,0,53,0,1,0, - 9,0,124,5,106,8,125,6,110,27,35,0,4,0,116,9, - 121,142,1,0,1,0,1,0,116,10,124,5,124,0,124,1, - 131,3,125,7,124,7,100,1,117,0,114,61,89,0,100,1, - 4,0,4,0,131,3,1,0,113,26,89,0,110,7,37,0, - 124,6,124,0,124,1,124,2,131,3,125,7,100,1,4,0, - 4,0,131,3,1,0,110,11,35,0,49,0,115,81,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,7, - 100,1,117,1,114,138,124,4,115,134,124,0,116,0,106,6, - 118,0,114,134,116,0,106,6,124,0,25,0,125,8,9,0, - 124,8,106,11,125,9,110,14,35,0,4,0,116,9,121,141, - 1,0,1,0,1,0,124,7,6,0,89,0,2,0,1,0, - 83,0,37,0,124,9,100,1,117,0,114,130,124,7,2,0, - 1,0,83,0,124,9,2,0,1,0,83,0,124,7,2,0, - 1,0,83,0,113,26,100,1,83,0,119,0,119,0,41,4, - 122,21,70,105,110,100,32,97,32,109,111,100,117,108,101,39, - 115,32,115,112,101,99,46,78,122,53,115,121,115,46,109,101, - 116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44, - 32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108, - 121,32,115,104,117,116,116,105,110,103,32,100,111,119,110,122, - 22,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, - 115,32,101,109,112,116,121,41,12,114,19,0,0,0,218,9, - 109,101,116,97,95,112,97,116,104,114,88,0,0,0,114,102, - 0,0,0,114,103,0,0,0,114,170,0,0,0,114,106,0, - 0,0,114,201,0,0,0,114,184,0,0,0,114,2,0,0, - 0,114,214,0,0,0,114,114,0,0,0,41,10,114,21,0, - 0,0,114,182,0,0,0,114,183,0,0,0,114,215,0,0, - 0,90,9,105,115,95,114,101,108,111,97,100,114,213,0,0, - 0,114,184,0,0,0,114,110,0,0,0,114,111,0,0,0, - 114,114,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,10,95,102,105,110,100,95,115,112,101,99, - 153,3,0,0,115,76,0,0,0,6,2,8,1,8,2,4, - 3,12,1,10,5,8,1,8,1,2,1,8,1,2,128,12, - 1,12,1,8,1,2,1,12,250,4,5,2,128,12,3,12, - 248,22,128,8,9,14,2,10,1,2,1,8,1,2,128,12, - 1,12,4,2,128,8,2,8,1,8,2,8,2,2,239,4, - 19,2,243,2,244,115,63,0,0,0,159,1,65,12,5,161, - 3,37,4,164,1,65,12,5,165,17,63,11,182,1,65,12, - 5,189,9,65,12,5,193,12,4,65,16,13,193,17,3,65, - 16,13,193,40,3,65,44,2,193,44,9,65,57,9,194,13, - 1,65,57,9,194,14,1,63,11,114,216,0,0,0,99,3, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, - 0,0,0,115,110,0,0,0,116,0,124,0,116,1,131,2, - 115,14,116,2,100,1,160,3,116,4,124,0,131,1,161,1, - 131,1,130,1,124,2,100,2,107,0,114,22,116,5,100,3, - 131,1,130,1,124,2,100,2,107,4,114,41,116,0,124,1, - 116,1,131,2,115,35,116,2,100,4,131,1,130,1,124,1, - 115,41,116,6,100,5,131,1,130,1,124,0,115,53,124,2, - 100,2,107,2,114,51,116,5,100,6,131,1,130,1,100,7, - 83,0,100,7,83,0,41,8,122,28,86,101,114,105,102,121, - 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34, - 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110, - 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, - 32,110,111,116,32,123,125,114,26,0,0,0,122,18,108,101, - 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, - 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111, - 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110, - 103,122,54,97,116,116,101,109,112,116,101,100,32,114,101,108, - 97,116,105,118,101,32,105,109,112,111,114,116,32,119,105,116, - 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110, - 116,32,112,97,99,107,97,103,101,122,17,69,109,112,116,121, - 32,109,111,100,117,108,101,32,110,97,109,101,78,41,7,218, - 10,105,115,105,110,115,116,97,110,99,101,218,3,115,116,114, - 218,9,84,121,112,101,69,114,114,111,114,114,51,0,0,0, - 114,3,0,0,0,218,10,86,97,108,117,101,69,114,114,111, - 114,114,88,0,0,0,169,3,114,21,0,0,0,114,210,0, - 0,0,114,211,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,13,95,115,97,110,105,116,121,95, - 99,104,101,99,107,200,3,0,0,115,24,0,0,0,10,2, - 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, - 12,2,8,1,8,255,114,18,0,0,0,114,222,0,0,0, - 122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101, - 100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0, - 0,0,0,0,0,8,0,0,0,67,0,0,0,115,20,1, - 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, - 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, - 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, - 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, - 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, - 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, - 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, - 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, - 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, - 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, - 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, - 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, - 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, - 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, - 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, - 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, - 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, - 83,0,119,0,119,0,41,8,78,114,142,0,0,0,114,26, - 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, - 111,116,32,97,32,112,97,99,107,97,103,101,114,20,0,0, - 0,233,2,0,0,0,122,27,67,97,110,110,111,116,32,115, - 101,116,32,97,110,32,97,116,116,114,105,98,117,116,101,32, - 111,110,32,122,18,32,102,111,114,32,99,104,105,108,100,32, - 109,111,100,117,108,101,32,41,15,114,143,0,0,0,114,19, - 0,0,0,114,106,0,0,0,114,75,0,0,0,114,155,0, - 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, - 71,114,51,0,0,0,218,19,77,111,100,117,108,101,78,111, - 116,70,111,117,110,100,69,114,114,111,114,114,216,0,0,0, - 114,174,0,0,0,114,12,0,0,0,114,102,0,0,0,114, - 103,0,0,0,114,170,0,0,0,41,9,114,21,0,0,0, - 218,7,105,109,112,111,114,116,95,114,182,0,0,0,114,144, - 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, - 108,101,114,109,0,0,0,114,110,0,0,0,114,111,0,0, - 0,90,5,99,104,105,108,100,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,23,95,102,105,110,100,95,97, - 110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,100, - 219,3,0,0,115,68,0,0,0,4,1,14,1,4,1,10, - 1,10,1,10,2,10,1,10,1,2,1,8,1,2,128,12, - 1,16,1,14,1,2,128,10,1,8,1,18,1,8,2,4, - 1,10,2,14,1,2,1,12,1,4,4,2,128,12,253,16, - 1,14,1,4,1,2,128,4,0,2,253,2,242,115,31,0, - 0,0,165,3,41,0,169,22,63,7,193,37,6,65,45,0, - 193,45,21,66,5,7,194,8,1,66,5,7,194,9,1,63, - 7,114,227,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,67,0,0,0,115,132,0,0,0, - 116,0,124,0,131,1,53,0,1,0,116,1,106,2,160,3, - 124,0,116,4,161,2,125,2,124,2,116,4,117,0,114,27, - 116,5,124,0,124,1,131,2,2,0,100,1,4,0,4,0, - 131,3,1,0,83,0,9,0,100,1,4,0,4,0,131,3, - 1,0,110,11,35,0,49,0,115,39,119,4,37,0,1,0, - 1,0,1,0,89,0,1,0,1,0,124,2,100,1,117,0, - 114,60,100,2,160,6,124,0,161,1,125,3,116,7,124,3, - 124,0,100,3,141,2,130,1,116,8,124,0,131,1,1,0, - 124,2,83,0,41,4,122,25,70,105,110,100,32,97,110,100, - 32,108,111,97,100,32,116,104,101,32,109,111,100,117,108,101, - 46,78,122,40,105,109,112,111,114,116,32,111,102,32,123,125, - 32,104,97,108,116,101,100,59,32,78,111,110,101,32,105,110, - 32,115,121,115,46,109,111,100,117,108,101,115,114,20,0,0, - 0,41,9,114,58,0,0,0,114,19,0,0,0,114,106,0, - 0,0,114,39,0,0,0,218,14,95,78,69,69,68,83,95, - 76,79,65,68,73,78,71,114,227,0,0,0,114,51,0,0, - 0,114,225,0,0,0,114,73,0,0,0,41,4,114,21,0, - 0,0,114,226,0,0,0,114,111,0,0,0,114,83,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,14,95,102,105,110,100,95,97,110,100,95,108,111,97,100, - 254,3,0,0,115,30,0,0,0,10,2,14,1,8,1,8, - 1,14,253,2,2,12,254,22,128,8,5,2,1,6,1,2, - 255,12,2,8,2,4,1,115,12,0,0,0,132,16,34,3, - 162,4,38,11,167,3,38,11,114,229,0,0,0,114,26,0, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,42,0,0,0,116,0,124,0, - 124,1,124,2,131,3,1,0,124,2,100,1,107,4,114,16, - 116,1,124,0,124,1,124,2,131,3,125,0,116,2,124,0, - 116,3,131,2,83,0,41,3,97,50,1,0,0,73,109,112, - 111,114,116,32,97,110,100,32,114,101,116,117,114,110,32,116, - 104,101,32,109,111,100,117,108,101,32,98,97,115,101,100,32, - 111,110,32,105,116,115,32,110,97,109,101,44,32,116,104,101, - 32,112,97,99,107,97,103,101,32,116,104,101,32,99,97,108, - 108,32,105,115,10,32,32,32,32,98,101,105,110,103,32,109, - 97,100,101,32,102,114,111,109,44,32,97,110,100,32,116,104, - 101,32,108,101,118,101,108,32,97,100,106,117,115,116,109,101, - 110,116,46,10,10,32,32,32,32,84,104,105,115,32,102,117, - 110,99,116,105,111,110,32,114,101,112,114,101,115,101,110,116, - 115,32,116,104,101,32,103,114,101,97,116,101,115,116,32,99, - 111,109,109,111,110,32,100,101,110,111,109,105,110,97,116,111, - 114,32,111,102,32,102,117,110,99,116,105,111,110,97,108,105, - 116,121,10,32,32,32,32,98,101,116,119,101,101,110,32,105, - 109,112,111,114,116,95,109,111,100,117,108,101,32,97,110,100, - 32,95,95,105,109,112,111,114,116,95,95,46,32,84,104,105, - 115,32,105,110,99,108,117,100,101,115,32,115,101,116,116,105, - 110,103,32,95,95,112,97,99,107,97,103,101,95,95,32,105, - 102,10,32,32,32,32,116,104,101,32,108,111,97,100,101,114, - 32,100,105,100,32,110,111,116,46,10,10,32,32,32,32,114, - 26,0,0,0,78,41,4,114,222,0,0,0,114,212,0,0, - 0,114,229,0,0,0,218,11,95,103,99,100,95,105,109,112, - 111,114,116,114,221,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,230,0,0,0,14,4,0,0, - 115,8,0,0,0,12,9,8,1,12,1,10,1,114,18,0, - 0,0,114,230,0,0,0,169,1,218,9,114,101,99,117,114, - 115,105,118,101,99,3,0,0,0,0,0,0,0,1,0,0, - 0,9,0,0,0,67,0,0,0,115,216,0,0,0,124,1, - 68,0,93,102,125,4,116,0,124,4,116,1,131,2,115,32, - 124,3,114,17,124,0,106,2,100,1,23,0,125,5,110,2, - 100,2,125,5,116,3,100,3,124,5,155,0,100,4,116,4, - 124,4,131,1,106,2,155,0,157,4,131,1,130,1,124,4, - 100,5,107,2,114,53,124,3,115,52,116,5,124,0,100,6, - 131,2,114,52,116,6,124,0,124,0,106,7,124,2,100,7, - 100,8,141,4,1,0,113,2,116,5,124,0,124,4,131,2, - 115,104,100,9,160,8,124,0,106,2,124,4,161,2,125,6, - 9,0,116,9,124,2,124,6,131,2,1,0,113,2,35,0, - 4,0,116,10,121,107,1,0,125,7,1,0,124,7,106,11, - 124,6,107,2,114,98,116,12,106,13,160,14,124,6,116,15, - 161,2,100,10,117,1,114,98,89,0,100,10,125,7,126,7, - 113,2,130,0,100,10,125,7,126,7,119,1,37,0,113,2, - 124,0,83,0,119,0,41,11,122,238,70,105,103,117,114,101, - 32,111,117,116,32,119,104,97,116,32,95,95,105,109,112,111, - 114,116,95,95,32,115,104,111,117,108,100,32,114,101,116,117, - 114,110,46,10,10,32,32,32,32,84,104,101,32,105,109,112, - 111,114,116,95,32,112,97,114,97,109,101,116,101,114,32,105, - 115,32,97,32,99,97,108,108,97,98,108,101,32,119,104,105, - 99,104,32,116,97,107,101,115,32,116,104,101,32,110,97,109, - 101,32,111,102,32,109,111,100,117,108,101,32,116,111,10,32, - 32,32,32,105,109,112,111,114,116,46,32,73,116,32,105,115, - 32,114,101,113,117,105,114,101,100,32,116,111,32,100,101,99, - 111,117,112,108,101,32,116,104,101,32,102,117,110,99,116,105, - 111,110,32,102,114,111,109,32,97,115,115,117,109,105,110,103, - 32,105,109,112,111,114,116,108,105,98,39,115,10,32,32,32, - 32,105,109,112,111,114,116,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,105,115,32,100,101,115,105,114,101, - 100,46,10,10,32,32,32,32,122,8,46,95,95,97,108,108, - 95,95,122,13,96,96,102,114,111,109,32,108,105,115,116,39, - 39,122,8,73,116,101,109,32,105,110,32,122,18,32,109,117, - 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,250, - 1,42,218,7,95,95,97,108,108,95,95,84,114,231,0,0, - 0,114,207,0,0,0,78,41,16,114,217,0,0,0,114,218, - 0,0,0,114,9,0,0,0,114,219,0,0,0,114,3,0, - 0,0,114,11,0,0,0,218,16,95,104,97,110,100,108,101, - 95,102,114,111,109,108,105,115,116,114,234,0,0,0,114,51, - 0,0,0,114,75,0,0,0,114,225,0,0,0,114,21,0, - 0,0,114,19,0,0,0,114,106,0,0,0,114,39,0,0, - 0,114,228,0,0,0,41,8,114,111,0,0,0,218,8,102, - 114,111,109,108,105,115,116,114,226,0,0,0,114,232,0,0, - 0,218,1,120,90,5,119,104,101,114,101,90,9,102,114,111, - 109,95,110,97,109,101,90,3,101,120,99,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,235,0,0,0,29, - 4,0,0,115,58,0,0,0,8,10,10,1,4,1,12,1, - 4,2,10,1,8,1,8,255,8,2,14,1,10,1,2,1, - 6,255,2,128,10,2,14,1,2,1,12,1,2,128,12,1, - 10,4,16,1,2,255,10,2,2,1,10,128,2,245,4,12, - 2,248,115,36,0,0,0,193,2,5,65,8,2,193,8,7, - 65,39,9,193,15,14,65,35,9,193,34,1,65,35,9,193, - 35,4,65,39,9,193,43,1,65,39,9,114,235,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0, - 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, - 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, - 100,3,117,1,114,41,124,2,100,3,117,1,114,39,124,1, - 124,2,106,1,107,3,114,39,116,2,160,3,100,4,124,1, - 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, - 100,7,100,8,166,3,1,0,124,1,83,0,124,2,100,3, - 117,1,114,48,124,2,106,1,83,0,116,2,160,3,100,9, - 116,4,100,7,100,8,166,3,1,0,124,0,100,10,25,0, - 125,1,100,11,124,0,118,1,114,71,124,1,160,5,100,12, - 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, - 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, - 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, - 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, - 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, - 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, - 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, - 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, - 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, - 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, - 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, - 46,10,10,32,32,32,32,114,159,0,0,0,114,114,0,0, - 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, - 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, - 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, - 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, - 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, - 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, - 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, - 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, - 110,100,32,95,95,112,97,116,104,95,95,114,9,0,0,0, - 114,155,0,0,0,114,142,0,0,0,114,26,0,0,0,41, - 6,114,39,0,0,0,114,144,0,0,0,114,102,0,0,0, - 114,103,0,0,0,114,170,0,0,0,114,143,0,0,0,41, - 3,218,7,103,108,111,98,97,108,115,114,210,0,0,0,114, - 110,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,17,95,99,97,108,99,95,95,95,112,97,99, - 107,97,103,101,95,95,66,4,0,0,115,42,0,0,0,10, - 7,10,1,8,1,18,1,6,1,2,1,4,255,4,1,6, - 255,4,2,6,254,4,3,8,1,6,1,6,2,4,2,6, - 254,8,3,8,1,14,1,4,1,114,18,0,0,0,114,241, - 0,0,0,114,5,0,0,0,99,5,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,174,0, - 0,0,124,4,100,1,107,2,114,9,116,0,124,0,131,1, - 125,5,110,18,124,1,100,2,117,1,114,15,124,1,110,1, - 105,0,125,6,116,1,124,6,131,1,125,7,116,0,124,0, - 124,7,124,4,131,3,125,5,124,3,115,74,124,4,100,1, - 107,2,114,42,116,0,124,0,160,2,100,3,161,1,100,1, - 25,0,131,1,83,0,124,0,115,46,124,5,83,0,116,3, - 124,0,131,1,116,3,124,0,160,2,100,3,161,1,100,1, - 25,0,131,1,24,0,125,8,116,4,106,5,124,5,106,6, - 100,2,116,3,124,5,106,6,131,1,124,8,24,0,133,2, - 25,0,25,0,83,0,116,7,124,5,100,4,131,2,114,85, - 116,8,124,5,124,3,116,0,131,3,83,0,124,5,83,0, - 41,5,97,215,1,0,0,73,109,112,111,114,116,32,97,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,84,104,101, - 32,39,103,108,111,98,97,108,115,39,32,97,114,103,117,109, - 101,110,116,32,105,115,32,117,115,101,100,32,116,111,32,105, - 110,102,101,114,32,119,104,101,114,101,32,116,104,101,32,105, - 109,112,111,114,116,32,105,115,32,111,99,99,117,114,114,105, - 110,103,32,102,114,111,109,10,32,32,32,32,116,111,32,104, - 97,110,100,108,101,32,114,101,108,97,116,105,118,101,32,105, - 109,112,111,114,116,115,46,32,84,104,101,32,39,108,111,99, - 97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,115, - 32,105,103,110,111,114,101,100,46,32,84,104,101,10,32,32, - 32,32,39,102,114,111,109,108,105,115,116,39,32,97,114,103, - 117,109,101,110,116,32,115,112,101,99,105,102,105,101,115,32, - 119,104,97,116,32,115,104,111,117,108,100,32,101,120,105,115, - 116,32,97,115,32,97,116,116,114,105,98,117,116,101,115,32, - 111,110,32,116,104,101,32,109,111,100,117,108,101,10,32,32, - 32,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, - 32,40,101,46,103,46,32,96,96,102,114,111,109,32,109,111, - 100,117,108,101,32,105,109,112,111,114,116,32,60,102,114,111, - 109,108,105,115,116,62,96,96,41,46,32,32,84,104,101,32, - 39,108,101,118,101,108,39,10,32,32,32,32,97,114,103,117, - 109,101,110,116,32,114,101,112,114,101,115,101,110,116,115,32, - 116,104,101,32,112,97,99,107,97,103,101,32,108,111,99,97, - 116,105,111,110,32,116,111,32,105,109,112,111,114,116,32,102, - 114,111,109,32,105,110,32,97,32,114,101,108,97,116,105,118, - 101,10,32,32,32,32,105,109,112,111,114,116,32,40,101,46, - 103,46,32,96,96,102,114,111,109,32,46,46,112,107,103,32, - 105,109,112,111,114,116,32,109,111,100,96,96,32,119,111,117, - 108,100,32,104,97,118,101,32,97,32,39,108,101,118,101,108, - 39,32,111,102,32,50,41,46,10,10,32,32,32,32,114,26, - 0,0,0,78,114,142,0,0,0,114,155,0,0,0,41,9, - 114,230,0,0,0,114,241,0,0,0,218,9,112,97,114,116, - 105,116,105,111,110,114,209,0,0,0,114,19,0,0,0,114, - 106,0,0,0,114,9,0,0,0,114,11,0,0,0,114,235, - 0,0,0,41,9,114,21,0,0,0,114,240,0,0,0,218, - 6,108,111,99,97,108,115,114,236,0,0,0,114,211,0,0, - 0,114,111,0,0,0,90,8,103,108,111,98,97,108,115,95, - 114,210,0,0,0,90,7,99,117,116,95,111,102,102,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,10,95, - 95,105,109,112,111,114,116,95,95,93,4,0,0,115,30,0, - 0,0,8,11,10,1,16,2,8,1,12,1,4,1,8,3, - 18,1,4,1,4,1,26,4,30,3,10,1,12,1,4,2, - 114,18,0,0,0,114,244,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,67,0,0,0,115, - 38,0,0,0,116,0,160,1,124,0,161,1,125,1,124,1, - 100,0,117,0,114,15,116,2,100,1,124,0,23,0,131,1, - 130,1,116,3,124,1,131,1,83,0,41,2,78,122,25,110, - 111,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,32,110,97,109,101,100,32,41,4,114,176,0,0,0,114, - 184,0,0,0,114,88,0,0,0,114,174,0,0,0,41,2, - 114,21,0,0,0,114,110,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,18,95,98,117,105,108, - 116,105,110,95,102,114,111,109,95,110,97,109,101,130,4,0, - 0,115,8,0,0,0,10,1,8,1,12,1,8,1,114,18, - 0,0,0,114,245,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,166,0, - 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, - 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, - 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, - 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, - 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, - 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, - 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, - 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, - 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, - 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, - 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, - 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, - 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, - 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, - 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, - 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, - 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, - 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, - 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, - 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, - 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, - 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, - 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, - 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, - 10,10,32,32,32,32,41,3,114,27,0,0,0,114,102,0, - 0,0,114,72,0,0,0,78,41,15,114,65,0,0,0,114, - 19,0,0,0,114,3,0,0,0,114,106,0,0,0,218,5, - 105,116,101,109,115,114,217,0,0,0,114,87,0,0,0,114, - 176,0,0,0,114,99,0,0,0,114,194,0,0,0,114,156, - 0,0,0,114,162,0,0,0,114,9,0,0,0,114,245,0, - 0,0,114,12,0,0,0,41,10,218,10,115,121,115,95,109, - 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, - 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, - 21,0,0,0,114,111,0,0,0,114,123,0,0,0,114,110, - 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, - 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,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, - 115,101,116,117,112,137,4,0,0,115,40,0,0,0,4,9, - 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, - 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, - 10,2,14,1,4,251,114,18,0,0,0,114,249,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,38,0,0,0,116,0,124,0,124,1, - 131,2,1,0,116,1,106,2,160,3,116,4,161,1,1,0, - 116,1,106,2,160,3,116,5,161,1,1,0,100,1,83,0, - 41,2,122,48,73,110,115,116,97,108,108,32,105,109,112,111, - 114,116,101,114,115,32,102,111,114,32,98,117,105,108,116,105, - 110,32,97,110,100,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,78,41,6,114,249,0,0,0,114,19,0,0, - 0,114,215,0,0,0,114,133,0,0,0,114,176,0,0,0, - 114,194,0,0,0,41,2,114,247,0,0,0,114,248,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,8,95,105,110,115,116,97,108,108,172,4,0,0,115,6, - 0,0,0,10,2,12,2,16,1,114,18,0,0,0,114,250, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,32,0,0,0,100,1,100, - 2,108,0,125,0,124,0,97,1,124,0,160,2,116,3,106, - 4,116,5,25,0,161,1,1,0,100,2,83,0,41,3,122, - 57,73,110,115,116,97,108,108,32,105,109,112,111,114,116,101, - 114,115,32,116,104,97,116,32,114,101,113,117,105,114,101,32, - 101,120,116,101,114,110,97,108,32,102,105,108,101,115,121,115, - 116,101,109,32,97,99,99,101,115,115,114,26,0,0,0,78, - 41,6,218,26,95,102,114,111,122,101,110,95,105,109,112,111, - 114,116,108,105,98,95,101,120,116,101,114,110,97,108,114,140, - 0,0,0,114,250,0,0,0,114,19,0,0,0,114,106,0, - 0,0,114,9,0,0,0,41,1,114,251,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,27,95, - 105,110,115,116,97,108,108,95,101,120,116,101,114,110,97,108, - 95,105,109,112,111,114,116,101,114,115,180,4,0,0,115,6, - 0,0,0,8,3,4,1,20,1,114,18,0,0,0,114,252, - 0,0,0,114,191,0,0,0,114,0,0,0,0,114,25,0, - 0,0,41,4,78,78,114,5,0,0,0,114,26,0,0,0, - 41,54,114,10,0,0,0,114,7,0,0,0,114,27,0,0, - 0,114,102,0,0,0,114,72,0,0,0,114,140,0,0,0, - 114,17,0,0,0,114,22,0,0,0,114,67,0,0,0,114, - 38,0,0,0,114,48,0,0,0,114,23,0,0,0,114,24, - 0,0,0,114,56,0,0,0,114,58,0,0,0,114,61,0, - 0,0,114,73,0,0,0,114,75,0,0,0,114,84,0,0, - 0,114,96,0,0,0,114,101,0,0,0,114,112,0,0,0, - 114,125,0,0,0,114,126,0,0,0,114,105,0,0,0,114, - 156,0,0,0,114,162,0,0,0,114,166,0,0,0,114,120, - 0,0,0,114,107,0,0,0,114,173,0,0,0,114,174,0, - 0,0,114,108,0,0,0,114,176,0,0,0,114,194,0,0, - 0,114,201,0,0,0,114,212,0,0,0,114,214,0,0,0, - 114,216,0,0,0,114,222,0,0,0,90,15,95,69,82,82, - 95,77,83,71,95,80,82,69,70,73,88,114,224,0,0,0, - 114,227,0,0,0,218,6,111,98,106,101,99,116,114,228,0, - 0,0,114,229,0,0,0,114,230,0,0,0,114,235,0,0, - 0,114,241,0,0,0,114,244,0,0,0,114,245,0,0,0, - 114,249,0,0,0,114,250,0,0,0,114,252,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,8,60,109,111,100,117,108,101,62,1,0,0, - 0,115,104,0,0,0,4,0,8,22,4,9,4,1,4,1, - 4,3,8,3,8,8,4,8,4,2,16,3,14,4,14,77, - 14,21,8,16,8,37,8,17,14,11,8,8,8,11,8,12, - 8,19,14,26,16,101,10,26,14,45,8,72,8,17,8,17, - 8,30,8,36,8,45,14,15,14,80,14,85,8,13,8,9, - 10,10,8,47,4,16,8,1,8,2,6,32,8,3,10,16, - 14,15,8,37,10,27,8,37,8,7,8,35,12,8,114,18, - 0,0,0, + 97,99,107,97,103,101,114,190,0,0,0,114,0,0,0,0, + 41,17,114,8,0,0,0,114,7,0,0,0,114,1,0,0, + 0,114,9,0,0,0,114,151,0,0,0,114,191,0,0,0, + 114,114,0,0,0,114,192,0,0,0,114,183,0,0,0,114, + 184,0,0,0,114,162,0,0,0,114,163,0,0,0,114,170, + 0,0,0,114,100,0,0,0,114,187,0,0,0,114,189,0, + 0,0,114,128,0,0,0,114,23,0,0,0,114,5,0,0, + 0,114,193,0,0,0,36,3,0,0,115,48,0,0,0,8, + 0,4,2,4,7,2,2,10,1,2,10,12,1,2,6,12, + 1,2,11,10,1,2,3,10,1,2,8,10,1,2,9,2, + 1,12,1,2,4,2,1,12,1,2,4,2,1,16,1,114, + 17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111,114,116,76,111, + 99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,101, + 120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,116, + 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, + 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, + 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, + 46,78,41,2,114,65,0,0,0,114,66,0,0,0,114,53, + 0,0,0,32,114,5,0,0,0,114,62,0,0,0,125,3, + 0,0,243,2,0,0,0,12,2,114,17,0,0,0,122,28, + 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, + 120,116,46,95,95,101,110,116,101,114,95,95,99,4,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,67,0,0, + 0,114,201,0,0,0,41,2,122,60,82,101,108,101,97,115, + 101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, + 107,32,114,101,103,97,114,100,108,101,115,115,32,111,102,32, + 97,110,121,32,114,97,105,115,101,100,32,101,120,99,101,112, + 116,105,111,110,115,46,78,41,2,114,65,0,0,0,114,68, + 0,0,0,41,4,114,34,0,0,0,218,8,101,120,99,95, + 116,121,112,101,218,9,101,120,99,95,118,97,108,117,101,218, + 13,101,120,99,95,116,114,97,99,101,98,97,99,107,32,32, + 32,32,114,5,0,0,0,114,64,0,0,0,129,3,0,0, + 114,202,0,0,0,114,17,0,0,0,122,27,95,73,109,112, + 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, + 95,101,120,105,116,95,95,78,41,6,114,8,0,0,0,114, + 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,62, + 0,0,0,114,64,0,0,0,114,23,0,0,0,114,5,0, + 0,0,114,200,0,0,0,121,3,0,0,115,8,0,0,0, + 8,0,4,2,8,2,12,4,114,17,0,0,0,114,200,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,67,0,0,0,115,64,0,0,0,124,1,160,0, + 100,1,124,2,100,2,24,0,161,2,125,3,116,1,124,3, + 131,1,124,2,107,0,114,18,116,2,100,3,131,1,130,1, + 124,3,100,4,25,0,125,4,124,0,114,30,100,5,160,3, + 124,4,124,0,161,2,83,0,124,4,83,0,41,7,122,50, + 82,101,115,111,108,118,101,32,97,32,114,101,108,97,116,105, + 118,101,32,109,111,100,117,108,101,32,110,97,109,101,32,116, + 111,32,97,110,32,97,98,115,111,108,117,116,101,32,111,110, + 101,46,114,141,0,0,0,114,43,0,0,0,122,50,97,116, + 116,101,109,112,116,101,100,32,114,101,108,97,116,105,118,101, + 32,105,109,112,111,114,116,32,98,101,121,111,110,100,32,116, + 111,112,45,108,101,118,101,108,32,112,97,99,107,97,103,101, + 114,26,0,0,0,250,5,123,125,46,123,125,78,41,4,218, + 6,114,115,112,108,105,116,218,3,108,101,110,114,88,0,0, + 0,114,51,0,0,0,41,5,114,20,0,0,0,218,7,112, + 97,99,107,97,103,101,218,5,108,101,118,101,108,90,4,98, + 105,116,115,90,4,98,97,115,101,32,32,32,32,32,114,5, + 0,0,0,218,13,95,114,101,115,111,108,118,101,95,110,97, + 109,101,134,3,0,0,115,10,0,0,0,16,2,12,1,8, + 1,8,1,20,1,114,17,0,0,0,114,211,0,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,60,0,0,0,116,0,124,0,131,1,155, + 0,100,1,157,2,125,3,116,1,160,2,124,3,116,3,161, + 2,1,0,124,0,160,4,124,1,124,2,161,2,125,4,124, + 4,100,0,117,0,114,25,100,0,83,0,116,5,124,1,124, + 4,131,2,83,0,41,2,78,122,53,46,102,105,110,100,95, + 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, + 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, + 111,32,102,105,110,100,95,109,111,100,117,108,101,40,41,41, + 6,114,6,0,0,0,114,101,0,0,0,114,102,0,0,0, + 114,169,0,0,0,114,184,0,0,0,114,104,0,0,0,41, + 5,218,6,102,105,110,100,101,114,114,20,0,0,0,114,181, + 0,0,0,114,108,0,0,0,114,122,0,0,0,32,32,32, + 32,32,114,5,0,0,0,218,17,95,102,105,110,100,95,115, + 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, + 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, + 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,10,0,0,0,67,0,0,0,115,30, + 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, + 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, + 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, + 0,125,4,124,3,68,0,93,112,125,5,116,7,131,0,53, + 0,1,0,9,0,124,5,106,8,125,6,110,27,35,0,4, + 0,116,9,121,142,1,0,1,0,1,0,116,10,124,5,124, + 0,124,1,131,3,125,7,124,7,100,1,117,0,114,61,89, + 0,100,1,4,0,4,0,131,3,1,0,113,26,89,0,110, + 7,37,0,124,6,124,0,124,1,124,2,131,3,125,7,100, + 1,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, + 81,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,7,100,1,117,1,114,138,124,4,115,134,124,0,116, + 0,106,6,118,0,114,134,116,0,106,6,124,0,25,0,125, + 8,9,0,124,8,106,11,125,9,110,14,35,0,4,0,116, + 9,121,141,1,0,1,0,1,0,124,7,6,0,89,0,2, + 0,1,0,83,0,37,0,124,9,100,1,117,0,114,130,124, + 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, + 7,2,0,1,0,83,0,113,26,100,1,83,0,119,0,119, + 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, + 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, + 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, + 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, + 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, + 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, + 104,32,105,115,32,101,109,112,116,121,41,12,114,18,0,0, + 0,218,9,109,101,116,97,95,112,97,116,104,114,88,0,0, + 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, + 114,105,0,0,0,114,200,0,0,0,114,183,0,0,0,114, + 2,0,0,0,114,213,0,0,0,114,113,0,0,0,41,10, + 114,20,0,0,0,114,181,0,0,0,114,182,0,0,0,114, + 214,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, + 212,0,0,0,114,183,0,0,0,114,109,0,0,0,114,110, + 0,0,0,114,113,0,0,0,32,32,32,32,32,32,32,32, + 32,32,114,5,0,0,0,218,10,95,102,105,110,100,95,115, + 112,101,99,153,3,0,0,115,76,0,0,0,6,2,8,1, + 8,2,4,3,12,1,10,5,8,1,8,1,2,1,8,1, + 2,128,12,1,12,1,8,1,2,1,12,250,4,5,2,128, + 12,3,12,248,22,128,8,9,14,2,10,1,2,1,8,1, + 2,128,12,1,12,4,2,128,8,2,8,1,8,2,8,2, + 2,239,4,19,2,243,2,244,115,63,0,0,0,159,1,65, + 12,5,161,3,37,4,164,1,65,12,5,165,17,63,11,182, + 1,65,12,5,189,9,65,12,5,193,12,4,65,16,13,193, + 17,3,65,16,13,193,40,3,65,44,2,193,44,9,65,57, + 9,194,13,1,65,57,9,194,14,1,63,11,114,215,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,67,0,0,0,115,110,0,0,0,116,0,124,0,116, + 1,131,2,115,14,116,2,100,1,160,3,116,4,124,0,131, + 1,161,1,131,1,130,1,124,2,100,2,107,0,114,22,116, + 5,100,3,131,1,130,1,124,2,100,2,107,4,114,41,116, + 0,124,1,116,1,131,2,115,35,116,2,100,4,131,1,130, + 1,124,1,115,41,116,6,100,5,131,1,130,1,124,0,115, + 53,124,2,100,2,107,2,114,51,116,5,100,6,131,1,130, + 1,100,7,83,0,100,7,83,0,41,8,122,28,86,101,114, + 105,102,121,32,97,114,103,117,109,101,110,116,115,32,97,114, + 101,32,34,115,97,110,101,34,46,122,31,109,111,100,117,108, + 101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,115, + 116,114,44,32,110,111,116,32,123,125,114,26,0,0,0,122, + 18,108,101,118,101,108,32,109,117,115,116,32,98,101,32,62, + 61,32,48,122,31,95,95,112,97,99,107,97,103,101,95,95, + 32,110,111,116,32,115,101,116,32,116,111,32,97,32,115,116, + 114,105,110,103,122,54,97,116,116,101,109,112,116,101,100,32, + 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,32, + 119,105,116,104,32,110,111,32,107,110,111,119,110,32,112,97, + 114,101,110,116,32,112,97,99,107,97,103,101,122,17,69,109, + 112,116,121,32,109,111,100,117,108,101,32,110,97,109,101,78, + 41,7,218,10,105,115,105,110,115,116,97,110,99,101,218,3, + 115,116,114,218,9,84,121,112,101,69,114,114,111,114,114,51, + 0,0,0,114,3,0,0,0,218,10,86,97,108,117,101,69, + 114,114,111,114,114,88,0,0,0,169,3,114,20,0,0,0, + 114,209,0,0,0,114,210,0,0,0,32,32,32,114,5,0, + 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, + 107,200,3,0,0,115,24,0,0,0,10,2,18,1,8,1, + 8,1,8,1,10,1,8,1,4,1,8,1,12,2,8,1, + 8,255,114,17,0,0,0,114,221,0,0,0,122,16,78,111, + 32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,4, + 123,33,114,125,99,2,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,67,0,0,0,115,20,1,0,0,100,0, + 125,2,124,0,160,0,100,1,161,1,100,2,25,0,125,3, + 124,3,114,64,124,3,116,1,106,2,118,1,114,21,116,3, + 124,1,124,3,131,2,1,0,124,0,116,1,106,2,118,0, + 114,31,116,1,106,2,124,0,25,0,83,0,116,1,106,2, + 124,3,25,0,125,4,9,0,124,4,106,4,125,2,110,23, + 35,0,4,0,116,5,121,137,1,0,1,0,1,0,116,6, + 100,3,23,0,160,7,124,0,124,3,161,2,125,5,116,8, + 124,5,124,0,100,4,141,2,100,0,130,2,37,0,116,9, + 124,0,124,2,131,2,125,6,124,6,100,0,117,0,114,82, + 116,8,116,6,160,7,124,0,161,1,124,0,100,4,141,2, + 130,1,116,10,124,6,131,1,125,7,124,3,114,134,116,1, + 106,2,124,3,25,0,125,4,124,0,160,0,100,1,161,1, + 100,5,25,0,125,8,9,0,116,11,124,4,124,8,124,7, + 131,3,1,0,124,7,83,0,35,0,4,0,116,5,121,136, + 1,0,1,0,1,0,100,6,124,3,155,2,100,7,124,8, + 155,2,157,4,125,5,116,12,160,13,124,5,116,14,161,2, + 1,0,89,0,124,7,83,0,37,0,124,7,83,0,119,0, + 119,0,41,8,78,114,141,0,0,0,114,26,0,0,0,122, + 23,59,32,123,33,114,125,32,105,115,32,110,111,116,32,97, + 32,112,97,99,107,97,103,101,114,19,0,0,0,233,2,0, + 0,0,122,27,67,97,110,110,111,116,32,115,101,116,32,97, + 110,32,97,116,116,114,105,98,117,116,101,32,111,110,32,122, + 18,32,102,111,114,32,99,104,105,108,100,32,109,111,100,117, + 108,101,32,41,15,114,142,0,0,0,114,18,0,0,0,114, + 105,0,0,0,114,75,0,0,0,114,154,0,0,0,114,2, + 0,0,0,218,8,95,69,82,82,95,77,83,71,114,51,0, + 0,0,218,19,77,111,100,117,108,101,78,111,116,70,111,117, + 110,100,69,114,114,111,114,114,215,0,0,0,114,173,0,0, + 0,114,11,0,0,0,114,101,0,0,0,114,102,0,0,0, + 114,169,0,0,0,41,9,114,20,0,0,0,218,7,105,109, + 112,111,114,116,95,114,181,0,0,0,114,143,0,0,0,90, + 13,112,97,114,101,110,116,95,109,111,100,117,108,101,114,108, + 0,0,0,114,109,0,0,0,114,110,0,0,0,90,5,99, + 104,105,108,100,32,32,32,32,32,32,32,32,32,114,5,0, + 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, + 97,100,95,117,110,108,111,99,107,101,100,219,3,0,0,115, + 68,0,0,0,4,1,14,1,4,1,10,1,10,1,10,2, + 10,1,10,1,2,1,8,1,2,128,12,1,16,1,14,1, + 2,128,10,1,8,1,18,1,8,2,4,1,10,2,14,1, + 2,1,12,1,4,4,2,128,12,253,16,1,14,1,4,1, + 2,128,4,0,2,253,2,242,115,31,0,0,0,165,3,41, + 0,169,22,63,7,193,37,6,65,45,0,193,45,21,66,5, + 7,194,8,1,66,5,7,194,9,1,63,7,114,226,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,9,0, + 0,0,67,0,0,0,115,132,0,0,0,116,0,124,0,131, + 1,53,0,1,0,116,1,106,2,160,3,124,0,116,4,161, + 2,125,2,124,2,116,4,117,0,114,27,116,5,124,0,124, + 1,131,2,2,0,100,1,4,0,4,0,131,3,1,0,83, + 0,9,0,100,1,4,0,4,0,131,3,1,0,110,11,35, + 0,49,0,115,39,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,124,2,100,1,117,0,114,60,100,2,160, + 6,124,0,161,1,125,3,116,7,124,3,124,0,100,3,141, + 2,130,1,116,8,124,0,131,1,1,0,124,2,83,0,41, + 4,122,25,70,105,110,100,32,97,110,100,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,46,78,122,40,105, + 109,112,111,114,116,32,111,102,32,123,125,32,104,97,108,116, + 101,100,59,32,78,111,110,101,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,114,19,0,0,0,41,9,114,58, + 0,0,0,114,18,0,0,0,114,105,0,0,0,114,39,0, + 0,0,218,14,95,78,69,69,68,83,95,76,79,65,68,73, + 78,71,114,226,0,0,0,114,51,0,0,0,114,224,0,0, + 0,114,73,0,0,0,41,4,114,20,0,0,0,114,225,0, + 0,0,114,110,0,0,0,114,83,0,0,0,32,32,32,32, + 114,5,0,0,0,218,14,95,102,105,110,100,95,97,110,100, + 95,108,111,97,100,254,3,0,0,115,30,0,0,0,10,2, + 14,1,8,1,8,1,14,253,2,2,12,254,22,128,8,5, + 2,1,6,1,2,255,12,2,8,2,4,1,115,12,0,0, + 0,132,16,34,3,162,4,38,11,167,3,38,11,114,228,0, + 0,0,114,26,0,0,0,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, + 0,116,0,124,0,124,1,124,2,131,3,1,0,124,2,100, + 1,107,4,114,16,116,1,124,0,124,1,124,2,131,3,125, + 0,116,2,124,0,116,3,131,2,83,0,41,3,97,50,1, + 0,0,73,109,112,111,114,116,32,97,110,100,32,114,101,116, + 117,114,110,32,116,104,101,32,109,111,100,117,108,101,32,98, + 97,115,101,100,32,111,110,32,105,116,115,32,110,97,109,101, + 44,32,116,104,101,32,112,97,99,107,97,103,101,32,116,104, + 101,32,99,97,108,108,32,105,115,10,32,32,32,32,98,101, + 105,110,103,32,109,97,100,101,32,102,114,111,109,44,32,97, + 110,100,32,116,104,101,32,108,101,118,101,108,32,97,100,106, + 117,115,116,109,101,110,116,46,10,10,32,32,32,32,84,104, + 105,115,32,102,117,110,99,116,105,111,110,32,114,101,112,114, + 101,115,101,110,116,115,32,116,104,101,32,103,114,101,97,116, + 101,115,116,32,99,111,109,109,111,110,32,100,101,110,111,109, + 105,110,97,116,111,114,32,111,102,32,102,117,110,99,116,105, + 111,110,97,108,105,116,121,10,32,32,32,32,98,101,116,119, + 101,101,110,32,105,109,112,111,114,116,95,109,111,100,117,108, + 101,32,97,110,100,32,95,95,105,109,112,111,114,116,95,95, + 46,32,84,104,105,115,32,105,110,99,108,117,100,101,115,32, + 115,101,116,116,105,110,103,32,95,95,112,97,99,107,97,103, + 101,95,95,32,105,102,10,32,32,32,32,116,104,101,32,108, + 111,97,100,101,114,32,100,105,100,32,110,111,116,46,10,10, + 32,32,32,32,114,26,0,0,0,78,41,4,114,221,0,0, + 0,114,211,0,0,0,114,228,0,0,0,218,11,95,103,99, + 100,95,105,109,112,111,114,116,114,220,0,0,0,32,32,32, + 114,5,0,0,0,114,229,0,0,0,14,4,0,0,115,8, + 0,0,0,12,9,8,1,12,1,10,1,114,17,0,0,0, + 114,229,0,0,0,169,1,218,9,114,101,99,117,114,115,105, + 118,101,99,3,0,0,0,0,0,0,0,1,0,0,0,9, + 0,0,0,67,0,0,0,115,216,0,0,0,124,1,68,0, + 93,102,125,4,116,0,124,4,116,1,131,2,115,32,124,3, + 114,17,124,0,106,2,100,1,23,0,125,5,110,2,100,2, + 125,5,116,3,100,3,124,5,155,0,100,4,116,4,124,4, + 131,1,106,2,155,0,157,4,131,1,130,1,124,4,100,5, + 107,2,114,53,124,3,115,52,116,5,124,0,100,6,131,2, + 114,52,116,6,124,0,124,0,106,7,124,2,100,7,100,8, + 141,4,1,0,113,2,116,5,124,0,124,4,131,2,115,104, + 100,9,160,8,124,0,106,2,124,4,161,2,125,6,9,0, + 116,9,124,2,124,6,131,2,1,0,113,2,35,0,4,0, + 116,10,121,107,1,0,125,7,1,0,124,7,106,11,124,6, + 107,2,114,98,116,12,106,13,160,14,124,6,116,15,161,2, + 100,10,117,1,114,98,89,0,100,10,125,7,126,7,113,2, + 130,0,100,10,125,7,126,7,119,1,37,0,113,2,124,0, + 83,0,119,0,41,11,122,238,70,105,103,117,114,101,32,111, + 117,116,32,119,104,97,116,32,95,95,105,109,112,111,114,116, + 95,95,32,115,104,111,117,108,100,32,114,101,116,117,114,110, + 46,10,10,32,32,32,32,84,104,101,32,105,109,112,111,114, + 116,95,32,112,97,114,97,109,101,116,101,114,32,105,115,32, + 97,32,99,97,108,108,97,98,108,101,32,119,104,105,99,104, + 32,116,97,107,101,115,32,116,104,101,32,110,97,109,101,32, + 111,102,32,109,111,100,117,108,101,32,116,111,10,32,32,32, + 32,105,109,112,111,114,116,46,32,73,116,32,105,115,32,114, + 101,113,117,105,114,101,100,32,116,111,32,100,101,99,111,117, + 112,108,101,32,116,104,101,32,102,117,110,99,116,105,111,110, + 32,102,114,111,109,32,97,115,115,117,109,105,110,103,32,105, + 109,112,111,114,116,108,105,98,39,115,10,32,32,32,32,105, + 109,112,111,114,116,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,105,115,32,100,101,115,105,114,101,100,46, + 10,10,32,32,32,32,122,8,46,95,95,97,108,108,95,95, + 122,13,96,96,102,114,111,109,32,108,105,115,116,39,39,122, + 8,73,116,101,109,32,105,110,32,122,18,32,109,117,115,116, + 32,98,101,32,115,116,114,44,32,110,111,116,32,250,1,42, + 218,7,95,95,97,108,108,95,95,84,114,230,0,0,0,114, + 206,0,0,0,78,41,16,114,216,0,0,0,114,217,0,0, + 0,114,8,0,0,0,114,218,0,0,0,114,3,0,0,0, + 114,10,0,0,0,218,16,95,104,97,110,100,108,101,95,102, + 114,111,109,108,105,115,116,114,233,0,0,0,114,51,0,0, + 0,114,75,0,0,0,114,224,0,0,0,114,20,0,0,0, + 114,18,0,0,0,114,105,0,0,0,114,39,0,0,0,114, + 227,0,0,0,41,8,114,110,0,0,0,218,8,102,114,111, + 109,108,105,115,116,114,225,0,0,0,114,231,0,0,0,218, + 1,120,90,5,119,104,101,114,101,90,9,102,114,111,109,95, + 110,97,109,101,90,3,101,120,99,32,32,32,32,32,32,32, + 32,114,5,0,0,0,114,234,0,0,0,29,4,0,0,115, + 58,0,0,0,8,10,10,1,4,1,12,1,4,2,10,1, + 8,1,8,255,8,2,14,1,10,1,2,1,6,255,2,128, + 10,2,14,1,2,1,12,1,2,128,12,1,10,4,16,1, + 2,255,10,2,2,1,10,128,2,245,4,12,2,248,115,36, + 0,0,0,193,2,5,65,8,2,193,8,7,65,39,9,193, + 15,14,65,35,9,193,34,1,65,35,9,193,35,4,65,39, + 9,193,43,1,65,39,9,114,234,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,7,0,0,0,67,0,0, + 0,115,146,0,0,0,124,0,160,0,100,1,161,1,125,1, + 124,0,160,0,100,2,161,1,125,2,124,1,100,3,117,1, + 114,41,124,2,100,3,117,1,114,39,124,1,124,2,106,1, + 107,3,114,39,116,2,160,3,100,4,124,1,155,2,100,5, + 124,2,106,1,155,2,100,6,157,5,116,4,100,7,100,8, + 166,3,1,0,124,1,83,0,124,2,100,3,117,1,114,48, + 124,2,106,1,83,0,116,2,160,3,100,9,116,4,100,7, + 100,8,166,3,1,0,124,0,100,10,25,0,125,1,100,11, + 124,0,118,1,114,71,124,1,160,5,100,12,161,1,100,13, + 25,0,125,1,124,1,83,0,41,14,122,167,67,97,108,99, + 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, + 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, + 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, + 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, + 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, + 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, + 101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,116, + 111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,116, + 32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,117, + 101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,32, + 32,32,32,114,158,0,0,0,114,113,0,0,0,78,122,32, + 95,95,112,97,99,107,97,103,101,95,95,32,33,61,32,95, + 95,115,112,101,99,95,95,46,112,97,114,101,110,116,32,40, + 122,4,32,33,61,32,250,1,41,233,3,0,0,0,41,1, + 90,10,115,116,97,99,107,108,101,118,101,108,122,89,99,97, + 110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,107, + 97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,95, + 95,32,111,114,32,95,95,112,97,99,107,97,103,101,95,95, + 44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,111, + 110,32,95,95,110,97,109,101,95,95,32,97,110,100,32,95, + 95,112,97,116,104,95,95,114,8,0,0,0,114,154,0,0, + 0,114,141,0,0,0,114,26,0,0,0,41,6,114,39,0, + 0,0,114,143,0,0,0,114,101,0,0,0,114,102,0,0, + 0,114,169,0,0,0,114,142,0,0,0,41,3,218,7,103, + 108,111,98,97,108,115,114,209,0,0,0,114,109,0,0,0, + 32,32,32,114,5,0,0,0,218,17,95,99,97,108,99,95, + 95,95,112,97,99,107,97,103,101,95,95,66,4,0,0,115, + 42,0,0,0,10,7,10,1,8,1,18,1,6,1,2,1, + 4,255,4,1,6,255,4,2,6,254,4,3,8,1,6,1, + 6,2,4,2,6,254,8,3,8,1,14,1,4,1,114,17, + 0,0,0,114,240,0,0,0,114,23,0,0,0,99,5,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, + 0,0,115,174,0,0,0,124,4,100,1,107,2,114,9,116, + 0,124,0,131,1,125,5,110,18,124,1,100,2,117,1,114, + 15,124,1,110,1,105,0,125,6,116,1,124,6,131,1,125, + 7,116,0,124,0,124,7,124,4,131,3,125,5,124,3,115, + 74,124,4,100,1,107,2,114,42,116,0,124,0,160,2,100, + 3,161,1,100,1,25,0,131,1,83,0,124,0,115,46,124, + 5,83,0,116,3,124,0,131,1,116,3,124,0,160,2,100, + 3,161,1,100,1,25,0,131,1,24,0,125,8,116,4,106, + 5,124,5,106,6,100,2,116,3,124,5,106,6,131,1,124, + 8,24,0,133,2,25,0,25,0,83,0,116,7,124,5,100, + 4,131,2,114,85,116,8,124,5,124,3,116,0,131,3,83, + 0,124,5,83,0,41,5,97,215,1,0,0,73,109,112,111, + 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, + 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, + 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, + 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, + 99,117,114,114,105,110,103,32,102,114,111,109,10,32,32,32, + 32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,116, + 105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,101, + 32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,101, + 110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,84, + 104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,116, + 39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,105, + 102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,100, + 32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,98, + 117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,117, + 108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,112, + 111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,114, + 111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,116, + 32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,32, + 32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,32, + 32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,115, + 101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,101, + 32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,112, + 111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,101, + 108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,114, + 116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,46, + 46,112,107,103,32,105,109,112,111,114,116,32,109,111,100,96, + 96,32,119,111,117,108,100,32,104,97,118,101,32,97,32,39, + 108,101,118,101,108,39,32,111,102,32,50,41,46,10,10,32, + 32,32,32,114,26,0,0,0,78,114,141,0,0,0,114,154, + 0,0,0,41,9,114,229,0,0,0,114,240,0,0,0,218, + 9,112,97,114,116,105,116,105,111,110,114,208,0,0,0,114, + 18,0,0,0,114,105,0,0,0,114,8,0,0,0,114,10, + 0,0,0,114,234,0,0,0,41,9,114,20,0,0,0,114, + 239,0,0,0,218,6,108,111,99,97,108,115,114,235,0,0, + 0,114,210,0,0,0,114,110,0,0,0,90,8,103,108,111, + 98,97,108,115,95,114,209,0,0,0,90,7,99,117,116,95, + 111,102,102,32,32,32,32,32,32,32,32,32,114,5,0,0, + 0,218,10,95,95,105,109,112,111,114,116,95,95,93,4,0, + 0,115,30,0,0,0,8,11,10,1,16,2,8,1,12,1, + 4,1,8,3,18,1,4,1,4,1,26,4,30,3,10,1, + 12,1,4,2,114,17,0,0,0,114,243,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, + 0,0,0,115,38,0,0,0,116,0,160,1,124,0,161,1, + 125,1,124,1,100,0,117,0,114,15,116,2,100,1,124,0, + 23,0,131,1,130,1,116,3,124,1,131,1,83,0,41,2, + 78,122,25,110,111,32,98,117,105,108,116,45,105,110,32,109, + 111,100,117,108,101,32,110,97,109,101,100,32,41,4,114,175, + 0,0,0,114,183,0,0,0,114,88,0,0,0,114,173,0, + 0,0,41,2,114,20,0,0,0,114,109,0,0,0,32,32, + 114,5,0,0,0,218,18,95,98,117,105,108,116,105,110,95, + 102,114,111,109,95,110,97,109,101,130,4,0,0,115,8,0, + 0,0,10,1,8,1,12,1,8,1,114,17,0,0,0,114, + 244,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,67,0,0,0,115,166,0,0,0,124,1, + 97,0,124,0,97,1,116,2,116,1,131,1,125,2,116,1, + 106,3,160,4,161,0,68,0,93,36,92,2,125,3,125,4, + 116,5,124,4,124,2,131,2,114,49,124,3,116,1,106,6, + 118,0,114,30,116,7,125,5,110,9,116,0,160,8,124,3, + 161,1,114,38,116,9,125,5,110,1,113,13,116,10,124,4, + 124,5,131,2,125,6,116,11,124,6,124,4,131,2,1,0, + 113,13,116,1,106,3,116,12,25,0,125,7,100,1,68,0, + 93,23,125,8,124,8,116,1,106,3,118,1,114,69,116,13, + 124,8,131,1,125,9,110,5,116,1,106,3,124,8,25,0, + 125,9,116,14,124,7,124,8,124,9,131,3,1,0,113,57, + 100,2,83,0,41,3,122,250,83,101,116,117,112,32,105,109, + 112,111,114,116,108,105,98,32,98,121,32,105,109,112,111,114, + 116,105,110,103,32,110,101,101,100,101,100,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,115,32,97,110,100, + 32,105,110,106,101,99,116,105,110,103,32,116,104,101,109,10, + 32,32,32,32,105,110,116,111,32,116,104,101,32,103,108,111, + 98,97,108,32,110,97,109,101,115,112,97,99,101,46,10,10, + 32,32,32,32,65,115,32,115,121,115,32,105,115,32,110,101, + 101,100,101,100,32,102,111,114,32,115,121,115,46,109,111,100, + 117,108,101,115,32,97,99,99,101,115,115,32,97,110,100,32, + 95,105,109,112,32,105,115,32,110,101,101,100,101,100,32,116, + 111,32,108,111,97,100,32,98,117,105,108,116,45,105,110,10, + 32,32,32,32,109,111,100,117,108,101,115,44,32,116,104,111, + 115,101,32,116,119,111,32,109,111,100,117,108,101,115,32,109, + 117,115,116,32,98,101,32,101,120,112,108,105,99,105,116,108, + 121,32,112,97,115,115,101,100,32,105,110,46,10,10,32,32, + 32,32,41,3,114,27,0,0,0,114,101,0,0,0,114,72, + 0,0,0,78,41,15,114,65,0,0,0,114,18,0,0,0, + 114,3,0,0,0,114,105,0,0,0,218,5,105,116,101,109, + 115,114,216,0,0,0,114,87,0,0,0,114,175,0,0,0, + 114,98,0,0,0,114,193,0,0,0,114,155,0,0,0,114, + 161,0,0,0,114,8,0,0,0,114,244,0,0,0,114,11, + 0,0,0,41,10,218,10,115,121,115,95,109,111,100,117,108, + 101,218,11,95,105,109,112,95,109,111,100,117,108,101,90,11, + 109,111,100,117,108,101,95,116,121,112,101,114,20,0,0,0, + 114,110,0,0,0,114,122,0,0,0,114,109,0,0,0,90, + 11,115,101,108,102,95,109,111,100,117,108,101,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,32,32,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,6,95,115,101,116,117, + 112,137,4,0,0,115,40,0,0,0,4,9,4,1,8,3, + 18,1,10,1,10,1,6,1,10,1,6,1,2,2,10,1, + 10,1,2,128,10,3,8,1,10,1,10,1,10,2,14,1, + 4,251,114,17,0,0,0,114,248,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, + 0,115,38,0,0,0,116,0,124,0,124,1,131,2,1,0, + 116,1,106,2,160,3,116,4,161,1,1,0,116,1,106,2, + 160,3,116,5,161,1,1,0,100,1,83,0,41,2,122,48, + 73,110,115,116,97,108,108,32,105,109,112,111,114,116,101,114, + 115,32,102,111,114,32,98,117,105,108,116,105,110,32,97,110, + 100,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, + 78,41,6,114,248,0,0,0,114,18,0,0,0,114,214,0, + 0,0,114,132,0,0,0,114,175,0,0,0,114,193,0,0, + 0,41,2,114,246,0,0,0,114,247,0,0,0,32,32,114, + 5,0,0,0,218,8,95,105,110,115,116,97,108,108,172,4, + 0,0,115,6,0,0,0,10,2,12,2,16,1,114,17,0, + 0,0,114,249,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,32,0,0, + 0,100,1,100,2,108,0,125,0,124,0,97,1,124,0,160, + 2,116,3,106,4,116,5,25,0,161,1,1,0,100,2,83, + 0,41,3,122,57,73,110,115,116,97,108,108,32,105,109,112, + 111,114,116,101,114,115,32,116,104,97,116,32,114,101,113,117, + 105,114,101,32,101,120,116,101,114,110,97,108,32,102,105,108, + 101,115,121,115,116,101,109,32,97,99,99,101,115,115,114,26, + 0,0,0,78,41,6,218,26,95,102,114,111,122,101,110,95, + 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110, + 97,108,114,139,0,0,0,114,249,0,0,0,114,18,0,0, + 0,114,105,0,0,0,114,8,0,0,0,41,1,114,250,0, + 0,0,32,114,5,0,0,0,218,27,95,105,110,115,116,97, + 108,108,95,101,120,116,101,114,110,97,108,95,105,109,112,111, + 114,116,101,114,115,180,4,0,0,115,6,0,0,0,8,3, + 4,1,20,1,114,17,0,0,0,114,251,0,0,0,114,190, + 0,0,0,114,0,0,0,0,114,25,0,0,0,41,4,78, + 78,114,23,0,0,0,114,26,0,0,0,41,54,114,9,0, + 0,0,114,6,0,0,0,114,27,0,0,0,114,101,0,0, + 0,114,72,0,0,0,114,139,0,0,0,114,16,0,0,0, + 114,21,0,0,0,114,67,0,0,0,114,38,0,0,0,114, + 48,0,0,0,114,22,0,0,0,114,24,0,0,0,114,56, + 0,0,0,114,58,0,0,0,114,61,0,0,0,114,73,0, + 0,0,114,75,0,0,0,114,84,0,0,0,114,95,0,0, + 0,114,100,0,0,0,114,111,0,0,0,114,124,0,0,0, + 114,125,0,0,0,114,104,0,0,0,114,155,0,0,0,114, + 161,0,0,0,114,165,0,0,0,114,119,0,0,0,114,106, + 0,0,0,114,172,0,0,0,114,173,0,0,0,114,107,0, + 0,0,114,175,0,0,0,114,193,0,0,0,114,200,0,0, + 0,114,211,0,0,0,114,213,0,0,0,114,215,0,0,0, + 114,221,0,0,0,90,15,95,69,82,82,95,77,83,71,95, + 80,82,69,70,73,88,114,223,0,0,0,114,226,0,0,0, + 218,6,111,98,106,101,99,116,114,227,0,0,0,114,228,0, + 0,0,114,229,0,0,0,114,234,0,0,0,114,240,0,0, + 0,114,243,0,0,0,114,244,0,0,0,114,248,0,0,0, + 114,249,0,0,0,114,251,0,0,0,114,23,0,0,0,114, + 5,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,104,0,0,0,4,0,8,22,4,9,4,1,4, + 1,4,3,8,3,8,8,4,8,4,2,16,3,14,4,14, + 77,14,21,8,16,8,37,8,17,14,11,8,8,8,11,8, + 12,8,19,14,26,16,101,10,26,14,45,8,72,8,17,8, + 17,8,30,8,36,8,45,14,15,14,80,14,85,8,13,8, + 9,10,10,8,47,4,16,8,1,8,2,6,32,8,3,10, + 16,14,15,8,37,10,27,8,37,8,7,8,35,12,8,114, + 17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 07a42a7dca61e3..cf3fcb762db864 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -77,19 +77,18 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,28,0,0,0,129,0,124,0,93,9,125,1,116,0, 124,1,131,1,100,0,107,2,86,0,1,0,113,2,100,1, 83,0,41,2,233,1,0,0,0,78,41,1,218,3,108,101, - 110,41,2,218,2,46,48,218,3,115,101,112,169,0,114,7, - 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,46,0,0,0,115,4,0,0,0,6, - 128,22,0,243,0,0,0,0,114,9,0,0,0,218,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,22,0,0,0,104,0,124,0,93,7,125, - 1,100,0,124,1,155,0,157,2,146,2,113,2,83,0,41, - 1,250,1,58,114,7,0,0,0,41,2,114,5,0,0,0, - 218,1,115,114,7,0,0,0,114,7,0,0,0,114,8,0, + 110,41,2,218,2,46,48,218,3,115,101,112,32,32,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,46,0,0,0,115,4,0,0,0,6,128,22,0,243,0, + 0,0,0,114,8,0,0,0,218,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 22,0,0,0,104,0,124,0,93,7,125,1,100,0,124,1, + 155,0,157,2,146,2,113,2,83,0,41,1,250,1,58,169, + 0,41,2,114,5,0,0,0,218,1,115,32,32,114,7,0, 0,0,218,9,60,115,101,116,99,111,109,112,62,50,0,0, - 0,115,2,0,0,0,22,0,114,10,0,0,0,114,14,0, + 0,115,2,0,0,0,22,0,114,9,0,0,0,114,14,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,3,0,0,0,3,0,0,0, @@ -111,1505 +110,1483 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,115,101,116,46,78,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,7,0,0,0,169,1,218,3,107, - 101,121,114,7,0,0,0,114,8,0,0,0,218,11,95,114, - 101,108,97,120,95,99,97,115,101,67,0,0,0,243,2,0, - 0,0,20,2,114,10,0,0,0,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,1,0,0, - 0,83,0,0,0,243,4,0,0,0,100,1,83,0,41,3, - 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,78,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,22,0,0,0,71,0,0,0,243,2,0,0,0, - 4,2,114,10,0,0,0,41,5,114,16,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,22,0,0,0,114,7,0, - 0,0,114,20,0,0,0,114,8,0,0,0,218,16,95,109, - 97,107,101,95,114,101,108,97,120,95,99,97,115,101,60,0, - 0,0,115,16,0,0,0,12,1,12,1,6,1,4,2,12, - 2,4,7,8,253,4,3,114,10,0,0,0,114,30,0,0, - 0,99,1,0,0,0,0,0,0,0,0,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, - 5,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,78,41,2,218,3,105,110,116,218,8,116, - 111,95,98,121,116,101,115,41,1,218,1,120,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,12,95,112,97, - 99,107,95,117,105,110,116,51,50,79,0,0,0,114,23,0, - 0,0,114,10,0,0,0,114,37,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,243,28,0,0,0,116,0,124,0,131,1,100,1,107,2, - 115,8,74,0,130,1,116,1,160,2,124,0,100,2,161,2, - 83,0,41,4,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,32,0,0,0,114,33,0,0,0,78, - 169,3,114,4,0,0,0,114,34,0,0,0,218,10,102,114, - 111,109,95,98,121,116,101,115,169,1,218,4,100,97,116,97, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 14,95,117,110,112,97,99,107,95,117,105,110,116,51,50,84, - 0,0,0,243,4,0,0,0,16,2,12,1,114,10,0,0, - 0,114,43,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,114,38,0,0,0, - 41,4,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,33,0,0,0,78,114,39, - 0,0,0,114,41,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,14,95,117,110,112,97,99,107, - 95,117,105,110,116,49,54,89,0,0,0,114,44,0,0,0, - 114,10,0,0,0,114,46,0,0,0,99,0,0,0,0,0, + 110,118,105,114,111,110,169,1,218,3,107,101,121,128,114,7, + 0,0,0,218,11,95,114,101,108,97,120,95,99,97,115,101, + 67,0,0,0,243,2,0,0,0,20,2,114,9,0,0,0, + 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,1,0,0,0,83,0,0,0,243,4,0,0, + 0,100,1,83,0,41,3,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,78, + 114,12,0,0,0,114,12,0,0,0,114,7,0,0,0,114, + 22,0,0,0,71,0,0,0,243,2,0,0,0,4,2,114, + 9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0,0,32, + 64,114,7,0,0,0,218,16,95,109,97,107,101,95,114,101, + 108,97,120,95,99,97,115,101,60,0,0,0,115,16,0,0, + 0,12,1,12,1,6,1,4,2,12,2,4,7,8,253,4, + 3,114,9,0,0,0,114,30,0,0,0,99,1,0,0,0, + 0,0,0,0,0,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,5,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,78, + 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101, + 115,41,1,218,1,120,32,114,7,0,0,0,218,12,95,112, + 97,99,107,95,117,105,110,116,51,50,79,0,0,0,114,23, + 0,0,0,114,9,0,0,0,114,37,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,243,28,0,0,0,116,0,124,0,131,1,100,1,107, + 2,115,8,74,0,130,1,116,1,160,2,124,0,100,2,161, + 2,83,0,41,4,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,32,0,0,0,114,33,0,0,0, + 78,169,3,114,4,0,0,0,114,34,0,0,0,218,10,102, + 114,111,109,95,98,121,116,101,115,169,1,218,4,100,97,116, + 97,32,114,7,0,0,0,218,14,95,117,110,112,97,99,107, + 95,117,105,110,116,51,50,84,0,0,0,243,4,0,0,0, + 16,2,12,1,114,9,0,0,0,114,43,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114,41,0,0,0, + 32,114,7,0,0,0,218,14,95,117,110,112,97,99,107,95, + 117,105,110,116,49,54,89,0,0,0,114,44,0,0,0,114, + 9,0,0,0,114,46,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,71,0,0,0,115,228, + 0,0,0,124,0,115,4,100,1,83,0,116,0,124,0,131, + 1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4,116, + 5,161,1,115,38,124,3,160,6,116,5,161,1,114,51,124, + 3,160,7,116,8,161,1,112,44,124,1,125,1,116,9,124, + 4,23,0,103,1,125,2,113,24,124,3,160,6,100,4,161, + 1,114,76,124,1,160,10,161,0,124,3,160,10,161,0,107, + 3,114,70,124,3,125,1,124,4,103,1,125,2,113,24,124, + 2,160,11,124,4,161,1,1,0,113,24,124,3,112,79,124, + 1,125,1,124,2,160,11,124,4,161,1,1,0,113,24,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,107,124,2,100,3,25,0,115, + 107,124,1,116,9,23,0,83,0,124,1,116,9,160,12,124, + 2,161,1,23,0,83,0,41,8,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,10,0,0,0,114, + 3,0,0,0,114,0,0,0,0,114,11,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,83, + 0,0,0,243,26,0,0,0,103,0,124,0,93,9,125,1, + 124,1,114,2,124,1,160,0,116,1,161,1,145,2,113,2, + 83,0,114,12,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,41,2,114,5,0,0,0,218,1,112,32,32,114,7, + 0,0,0,218,10,60,108,105,115,116,99,111,109,112,62,119, + 0,0,0,115,2,0,0,0,26,0,114,9,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,78, + 41,13,114,4,0,0,0,218,3,109,97,112,114,19,0,0, + 0,218,15,95,112,97,116,104,95,115,112,108,105,116,114,111, + 111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32,114,7,0,0, + 0,218,10,95,112,97,116,104,95,106,111,105,110,96,0,0, + 0,115,42,0,0,0,4,2,4,1,12,1,8,1,4,1, + 4,1,20,1,20,1,14,1,12,1,10,1,16,1,4,3, + 8,1,12,2,8,2,12,1,14,1,20,1,8,2,14,1, + 114,9,0,0,0,114,67,0,0,0,99,0,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,71,0,0,0,115, - 228,0,0,0,124,0,115,4,100,1,83,0,116,0,124,0, - 131,1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4, - 116,5,161,1,115,38,124,3,160,6,116,5,161,1,114,51, - 124,3,160,7,116,8,161,1,112,44,124,1,125,1,116,9, - 124,4,23,0,103,1,125,2,113,24,124,3,160,6,100,4, - 161,1,114,76,124,1,160,10,161,0,124,3,160,10,161,0, - 107,3,114,70,124,3,125,1,124,4,103,1,125,2,113,24, - 124,2,160,11,124,4,161,1,1,0,113,24,124,3,112,79, - 124,1,125,1,124,2,160,11,124,4,161,1,1,0,113,24, - 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,107,124,2,100,3,25,0, - 115,107,124,1,116,9,23,0,83,0,124,1,116,9,160,12, - 124,2,161,1,23,0,83,0,41,8,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,11,0,0,0, - 114,3,0,0,0,114,0,0,0,0,114,12,0,0,0,99, + 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,4,114,47,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 83,0,0,0,243,26,0,0,0,103,0,124,0,93,9,125, - 1,124,1,114,2,124,1,160,0,116,1,161,1,145,2,113, - 2,83,0,114,7,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,5,0,0,0,218,1,112,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,10,60,108, - 105,115,116,99,111,109,112,62,119,0,0,0,115,2,0,0, - 0,26,0,114,10,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,78,41,13,114,4,0,0,0, - 218,3,109,97,112,114,19,0,0,0,218,15,95,112,97,116, - 104,95,115,112,108,105,116,114,111,111,116,114,27,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,50,0,0,0,114, - 51,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 10,95,112,97,116,104,95,106,111,105,110,96,0,0,0,115, - 42,0,0,0,4,2,4,1,12,1,8,1,4,1,4,1, - 20,1,20,1,14,1,12,1,10,1,16,1,4,3,8,1, - 12,2,8,2,12,1,14,1,20,1,8,2,14,1,114,10, - 0,0,0,114,68,0,0,0,99,0,0,0,0,0,0,0, - 0,0,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,4,114,47,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,83,0, - 0,0,114,48,0,0,0,114,7,0,0,0,114,49,0,0, - 0,41,2,114,5,0,0,0,218,4,112,97,114,116,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,54,0, - 0,0,128,0,0,0,115,6,0,0,0,6,0,6,1,14, - 255,114,10,0,0,0,114,55,0,0,0,78,41,2,114,60, - 0,0,0,114,63,0,0,0,41,1,114,64,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,68, - 0,0,0,126,0,0,0,115,6,0,0,0,10,2,2,1, - 8,255,114,10,0,0,0,99,1,0,0,0,0,0,0,0, - 0,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,19,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,4,0,0,0,51,0,0,0,115,26,0,0, - 0,129,0,124,0,93,8,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,52,0,0,0,169,1,114,66, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,9,0, - 0,0,134,0,0,0,115,4,0,0,0,6,128,20,0,114, - 10,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,11,0,0,0,78,114, - 3,0,0,0,41,2,218,3,109,97,120,114,51,0,0,0, - 41,2,114,66,0,0,0,218,1,105,114,7,0,0,0,114, - 72,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104, - 95,115,112,108,105,116,132,0,0,0,115,8,0,0,0,22, - 2,8,1,8,1,28,1,114,10,0,0,0,114,75,0,0, - 0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19,0,0,0,90, - 4,115,116,97,116,114,72,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,10,95,112,97,116,104, - 95,115,116,97,116,140,0,0,0,115,2,0,0,0,10,7, - 114,10,0,0,0,114,76,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, - 50,0,0,0,9,0,116,0,124,0,131,1,125,2,110,11, - 35,0,4,0,116,1,121,24,1,0,1,0,1,0,89,0, - 100,1,83,0,37,0,124,2,106,2,100,2,64,0,124,1, - 107,2,83,0,119,0,41,4,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,78,41,3,114,76,0,0,0,218,7,79,83,69,114,114, - 111,114,218,7,115,116,95,109,111,100,101,41,3,114,66,0, - 0,0,218,4,109,111,100,101,90,9,115,116,97,116,95,105, - 110,102,111,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,18,95,112,97,116,104,95,105,115,95,109,111,100, - 101,95,116,121,112,101,150,0,0,0,115,16,0,0,0,2, - 2,10,1,2,128,12,1,6,1,2,128,14,1,2,254,115, - 12,0,0,0,129,4,6,0,134,7,16,7,152,1,16,7, - 114,80,0,0,0,99,1,0,0,0,0,0,0,0,0,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,3,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,78,41,1,114,80,0,0,0,114,72,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,12,95, - 112,97,116,104,95,105,115,102,105,108,101,159,0,0,0,243, - 2,0,0,0,10,2,114,10,0,0,0,114,81,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,22,0,0,0,124,0,115,6,116,0, - 160,1,161,0,125,0,116,2,124,0,100,1,131,2,83,0, - 41,3,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,78,41,3,114,19,0,0,0,218, - 6,103,101,116,99,119,100,114,80,0,0,0,114,72,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,11,95,112,97,116,104,95,105,115,100,105,114,164,0,0, - 0,115,6,0,0,0,4,2,8,1,10,1,114,10,0,0, - 0,114,84,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,115,62,0,0,0, - 124,0,115,4,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,30,124,1,160,4,100,6, - 161,1,112,30,124,1,160,5,100,4,161,1,83,0,41,8, - 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,3,0,0,0,122,2,92,92,78,41,6,114,19,0,0, - 0,114,57,0,0,0,218,7,114,101,112,108,97,99,101,114, - 4,0,0,0,114,27,0,0,0,114,59,0,0,0,41,2, - 114,66,0,0,0,114,65,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104, - 95,105,115,97,98,115,172,0,0,0,115,8,0,0,0,4, - 2,4,1,22,1,32,1,114,10,0,0,0,114,87,0,0, - 0,99,1,0,0,0,0,0,0,0,0,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,2,114,85,0,0,0,78,41,2,114, - 27,0,0,0,114,51,0,0,0,114,72,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,87,0, - 0,0,180,0,0,0,114,82,0,0,0,114,10,0,0,0, - 233,182,1,0,0,99,3,0,0,0,0,0,0,0,0,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,9, - 0,116,7,160,8,124,4,100,3,161,2,53,0,125,5,124, - 5,160,9,124,1,161,1,1,0,100,4,4,0,4,0,131, - 3,1,0,110,11,35,0,49,0,115,48,119,4,37,0,1, - 0,1,0,1,0,89,0,1,0,1,0,116,2,160,10,124, - 3,124,0,161,2,1,0,100,4,83,0,35,0,4,0,116, - 11,121,88,1,0,1,0,1,0,9,0,116,2,160,12,124, - 3,161,1,1,0,130,0,35,0,4,0,116,11,121,87,1, - 0,1,0,1,0,89,0,130,0,37,0,37,0,119,0,119, - 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,88, - 0,0,0,90,2,119,98,78,41,13,218,6,102,111,114,109, - 97,116,218,2,105,100,114,19,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,86,0,0,0,114,77,0,0,0,90,6,117,110,108,105, - 110,107,41,6,114,66,0,0,0,114,42,0,0,0,114,79, - 0,0,0,90,8,112,97,116,104,95,116,109,112,90,2,102, - 100,218,4,102,105,108,101,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,13,95,119,114,105,116,101,95,97, - 116,111,109,105,99,185,0,0,0,115,44,0,0,0,16,5, - 6,1,22,1,4,255,2,2,14,3,10,1,12,255,22,128, - 16,2,2,128,12,1,2,1,10,1,2,3,2,128,12,254, - 2,1,2,1,4,128,2,254,2,253,115,69,0,0,0,153, - 6,62,0,159,6,43,3,165,6,62,0,171,4,47,11,175, - 1,62,0,176,3,47,11,179,9,62,0,190,7,65,22,7, - 193,6,5,65,12,6,193,11,1,65,22,7,193,12,7,65, - 21,13,193,19,3,65,22,7,193,23,1,65,21,13,193,24, - 1,65,22,7,114,96,0,0,0,105,124,13,0,0,114,45, - 0,0,0,114,33,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,119,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, - 5,0,0,0,67,0,0,0,115,80,1,0,0,124,1,100, - 1,117,1,114,26,116,0,160,1,100,2,116,2,161,2,1, - 0,124,2,100,1,117,1,114,20,100,3,125,3,116,3,124, - 3,131,1,130,1,124,1,114,24,100,4,110,1,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,57,116,11,100,7,131,1,130,1,100, - 4,160,12,124,6,114,63,124,6,110,1,124,8,124,7,124, - 9,103,3,161,1,125,10,124,2,100,1,117,0,114,86,116, - 8,106,13,106,14,100,8,107,2,114,82,100,4,125,2,110, - 4,116,8,106,13,106,14,125,2,116,15,124,2,131,1,125, - 2,124,2,100,4,107,3,114,112,124,2,160,16,161,0,115, - 105,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,114,162,116,22,124,4,131,1,115,134,116,23,116,4,160, - 24,161,0,124,4,131,2,125,4,124,4,100,5,25,0,100, - 11,107,2,114,152,124,4,100,8,25,0,116,25,118,1,114, - 152,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, - 11,0,0,0,114,3,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,12,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,19,0,0,0,218,6,102,115,112, - 97,116,104,114,75,0,0,0,218,10,114,112,97,114,116,105, - 116,105,111,110,114,16,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,63,0,0,0,114,17, - 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,90,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,87,0,0,0,114,68,0,0,0,114, - 83,0,0,0,114,51,0,0,0,218,6,108,115,116,114,105, - 112,218,8,95,80,89,67,65,67,72,69,41,12,114,66,0, - 0,0,90,14,100,101,98,117,103,95,111,118,101,114,114,105, - 100,101,114,97,0,0,0,218,7,109,101,115,115,97,103,101, - 218,4,104,101,97,100,114,67,0,0,0,90,4,98,97,115, - 101,114,6,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,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,17,99,97,99, - 104,101,95,102,114,111,109,95,115,111,117,114,99,101,127,1, - 0,0,115,72,0,0,0,8,18,6,1,2,1,4,255,8, - 2,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,1,8,2,8,1,8, - 1,8,1,14,1,14,1,12,1,10,1,8,9,14,1,24, - 5,12,1,2,4,4,1,8,1,2,1,4,253,12,5,114, - 10,0,0,0,114,122,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,67,0,0,0,115,40, - 1,0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133, - 2,25,0,125,1,100,4,125,3,124,3,115,72,116,6,124, - 1,131,1,92,2,125,1,125,5,124,5,116,13,107,3,114, - 72,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,88,116,14,100,8,124,2,155,2,157,2,131, - 1,130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,99,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,98,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,123,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,16,0, - 0,0,114,106,0,0,0,114,107,0,0,0,114,108,0,0, - 0,114,19,0,0,0,114,104,0,0,0,114,75,0,0,0, - 114,115,0,0,0,114,50,0,0,0,114,51,0,0,0,114, - 27,0,0,0,114,60,0,0,0,114,4,0,0,0,114,117, - 0,0,0,114,112,0,0,0,218,5,99,111,117,110,116,218, - 6,114,115,112,108,105,116,114,113,0,0,0,114,111,0,0, - 0,218,9,112,97,114,116,105,116,105,111,110,114,68,0,0, - 0,218,15,83,79,85,82,67,69,95,83,85,70,70,73,88, - 69,83,41,10,114,66,0,0,0,114,119,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,97,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,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,17,115,111,117,114, - 99,101,95,102,114,111,109,95,99,97,99,104,101,198,1,0, - 0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1, - 10,1,4,1,2,1,8,255,16,2,8,1,16,1,14,2, - 18,1,114,10,0,0,0,114,129,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,9,0,0,0,67,0,0, - 0,115,126,0,0,0,116,0,124,0,131,1,100,1,107,2, - 114,8,100,2,83,0,124,0,160,1,100,3,161,1,92,3, - 125,1,125,2,125,3,124,1,114,28,124,3,160,2,161,0, - 100,4,100,5,133,2,25,0,100,6,107,3,114,30,124,0, - 83,0,9,0,116,3,124,0,131,1,125,4,110,18,35,0, - 4,0,116,4,116,5,102,2,121,62,1,0,1,0,1,0, - 124,0,100,2,100,5,133,2,25,0,125,4,89,0,110,1, - 37,0,116,6,124,4,131,1,114,60,124,4,83,0,124,0, - 83,0,119,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,98,0,0,0,233, - 253,255,255,255,233,255,255,255,255,90,2,112,121,41,7,114, - 4,0,0,0,114,105,0,0,0,218,5,108,111,119,101,114, - 114,129,0,0,0,114,108,0,0,0,114,112,0,0,0,114, - 81,0,0,0,41,5,218,13,98,121,116,101,99,111,100,101, - 95,112,97,116,104,114,120,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,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,15,95,103,101,116,95,115,111,117,114,99, - 101,102,105,108,101,238,1,0,0,115,26,0,0,0,12,7, - 4,1,16,1,24,1,4,1,2,1,10,1,2,128,16,1, - 16,1,2,128,16,1,2,254,115,12,0,0,0,159,4,36, - 0,164,15,53,7,190,1,53,7,114,136,0,0,0,99,1, + 83,0,0,0,114,48,0,0,0,114,12,0,0,0,114,49, + 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, + 32,32,114,7,0,0,0,114,53,0,0,0,128,0,0,0, + 115,6,0,0,0,6,0,6,1,14,255,114,9,0,0,0, + 114,54,0,0,0,78,41,2,114,59,0,0,0,114,62,0, + 0,0,41,1,114,63,0,0,0,32,114,7,0,0,0,114, + 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, + 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, + 0,0,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,19, + 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,4,0,0,0,51,0,0,0,115,26,0, + 0,0,129,0,124,0,93,8,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,41,3,114,5,0,0,0,114, + 52,0,0,0,114,65,0,0,0,32,32,128,114,7,0,0, + 0,114,8,0,0,0,134,0,0,0,115,4,0,0,0,6, + 128,20,0,114,9,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,10,0, + 0,0,78,114,3,0,0,0,41,2,218,3,109,97,120,114, + 51,0,0,0,41,3,114,65,0,0,0,218,1,105,114,65, + 0,0,0,96,32,64,114,7,0,0,0,218,11,95,112,97, + 116,104,95,115,112,108,105,116,132,0,0,0,115,8,0,0, + 0,22,2,8,1,8,1,28,1,114,9,0,0,0,114,73, + 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19,0,0, + 0,90,4,115,116,97,116,169,1,114,65,0,0,0,32,114, + 7,0,0,0,218,10,95,112,97,116,104,95,115,116,97,116, + 140,0,0,0,115,2,0,0,0,10,7,114,9,0,0,0, + 114,75,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,50,0,0,0,9, + 0,116,0,124,0,131,1,125,2,110,11,35,0,4,0,116, + 1,121,24,1,0,1,0,1,0,89,0,100,1,83,0,37, + 0,124,2,106,2,100,2,64,0,124,1,107,2,83,0,119, + 0,41,4,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,78,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,32,32, + 32,114,7,0,0,0,218,18,95,112,97,116,104,95,105,115, + 95,109,111,100,101,95,116,121,112,101,150,0,0,0,115,16, + 0,0,0,2,2,10,1,2,128,12,1,6,1,2,128,14, + 1,2,254,115,12,0,0,0,129,4,6,0,134,7,16,7, + 152,1,16,7,114,79,0,0,0,99,1,0,0,0,0,0, + 0,0,0,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,3,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,78,41,1,114,79,0,0,0,114,74,0, + 0,0,32,114,7,0,0,0,218,12,95,112,97,116,104,95, + 105,115,102,105,108,101,159,0,0,0,243,2,0,0,0,10, + 2,114,9,0,0,0,114,80,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 115,22,0,0,0,124,0,115,6,116,0,160,1,161,0,125, + 0,116,2,124,0,100,1,131,2,83,0,41,3,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,78,41,3,114,19,0,0,0,218,6,103,101,116,99, + 119,100,114,79,0,0,0,114,74,0,0,0,32,114,7,0, + 0,0,218,11,95,112,97,116,104,95,105,115,100,105,114,164, + 0,0,0,115,6,0,0,0,4,2,8,1,10,1,114,9, + 0,0,0,114,83,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,62,0, + 0,0,124,0,115,4,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,30,124,1,160,4, + 100,6,161,1,112,30,124,1,160,5,100,4,161,1,83,0, + 41,8,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,3,0,0,0,122,2,92,92,78,41,6,114,19, + 0,0,0,114,56,0,0,0,218,7,114,101,112,108,97,99, + 101,114,4,0,0,0,114,27,0,0,0,114,58,0,0,0, + 41,2,114,65,0,0,0,114,64,0,0,0,32,32,114,7, + 0,0,0,218,11,95,112,97,116,104,95,105,115,97,98,115, + 172,0,0,0,115,8,0,0,0,4,2,4,1,22,1,32, + 1,114,9,0,0,0,114,86,0,0,0,99,1,0,0,0, + 0,0,0,0,0,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, + 2,114,84,0,0,0,78,41,2,114,27,0,0,0,114,51, + 0,0,0,114,74,0,0,0,32,114,7,0,0,0,114,86, + 0,0,0,180,0,0,0,114,81,0,0,0,114,9,0,0, + 0,233,182,1,0,0,99,3,0,0,0,0,0,0,0,0, + 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, + 9,0,116,7,160,8,124,4,100,3,161,2,53,0,125,5, + 124,5,160,9,124,1,161,1,1,0,100,4,4,0,4,0, + 131,3,1,0,110,11,35,0,49,0,115,48,119,4,37,0, + 1,0,1,0,1,0,89,0,1,0,1,0,116,2,160,10, + 124,3,124,0,161,2,1,0,100,4,83,0,35,0,4,0, + 116,11,121,88,1,0,1,0,1,0,9,0,116,2,160,12, + 124,3,161,1,1,0,130,0,35,0,4,0,116,11,121,87, + 1,0,1,0,1,0,89,0,130,0,37,0,37,0,119,0, + 119,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, + 87,0,0,0,90,2,119,98,78,41,13,218,6,102,111,114, + 109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0,0,90,6,117,110,108, + 105,110,107,41,6,114,65,0,0,0,114,42,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,32,32,32,32,32,32,114,7, + 0,0,0,218,13,95,119,114,105,116,101,95,97,116,111,109, + 105,99,185,0,0,0,115,44,0,0,0,16,5,6,1,22, + 1,4,255,2,2,14,3,10,1,12,255,22,128,16,2,2, + 128,12,1,2,1,10,1,2,3,2,128,12,254,2,1,2, + 1,4,128,2,254,2,253,115,69,0,0,0,153,6,62,0, + 159,6,43,3,165,6,62,0,171,4,47,11,175,1,62,0, + 176,3,47,11,179,9,62,0,190,7,65,22,7,193,6,5, + 65,12,6,193,11,1,65,22,7,193,12,7,65,21,13,193, + 19,3,65,22,7,193,23,1,65,21,13,193,24,1,65,22, + 7,114,95,0,0,0,105,125,13,0,0,114,45,0,0,0, + 114,33,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,119,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,5,0,0, + 0,67,0,0,0,115,80,1,0,0,124,1,100,1,117,1, + 114,26,116,0,160,1,100,2,116,2,161,2,1,0,124,2, + 100,1,117,1,114,20,100,3,125,3,116,3,124,3,131,1, + 130,1,124,1,114,24,100,4,110,1,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,57,116,11,100,7,131,1,130,1,100,4,160,12, + 124,6,114,63,124,6,110,1,124,8,124,7,124,9,103,3, + 161,1,125,10,124,2,100,1,117,0,114,86,116,8,106,13, + 106,14,100,8,107,2,114,82,100,4,125,2,110,4,116,8, + 106,13,106,14,125,2,116,15,124,2,131,1,125,2,124,2, + 100,4,107,3,114,112,124,2,160,16,161,0,115,105,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,114,162, + 116,22,124,4,131,1,115,134,116,23,116,4,160,24,161,0, + 124,4,131,2,125,4,124,4,100,5,25,0,100,11,107,2, + 114,152,124,4,100,8,25,0,116,25,118,1,114,152,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,10,0,0, + 0,114,3,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,11,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,19,0,0,0,218,6,102,115,112,97,116,104, + 114,73,0,0,0,218,10,114,112,97,114,116,105,116,105,111, + 110,114,16,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,17,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,89,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,86,0,0,0,114,67,0,0,0,114,82,0,0, + 0,114,51,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, + 96,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,6, + 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,32,32,32,32,32,32,32, + 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, + 101,95,102,114,111,109,95,115,111,117,114,99,101,128,1,0, + 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, + 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,1,8,2,8,1,8,1, + 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, + 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, + 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,40,1, + 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133,2, + 25,0,125,1,100,4,125,3,124,3,115,72,116,6,124,1, + 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,72, + 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,88,116,14,100,8,124,2,155,2,157,2,131,1, + 130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16,0,0, + 0,114,105,0,0,0,114,106,0,0,0,114,107,0,0,0, + 114,19,0,0,0,114,103,0,0,0,114,73,0,0,0,114, + 114,0,0,0,114,50,0,0,0,114,51,0,0,0,114,27, + 0,0,0,114,59,0,0,0,114,4,0,0,0,114,116,0, + 0,0,114,111,0,0,0,218,5,99,111,117,110,116,218,6, + 114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32, + 32,32,32,32,114,7,0,0,0,218,17,115,111,117,114,99, + 101,95,102,114,111,109,95,99,97,99,104,101,199,1,0,0, + 115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1,10, + 1,4,1,2,1,8,255,16,2,8,1,16,1,14,2,18, + 1,114,9,0,0,0,114,128,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, + 115,126,0,0,0,116,0,124,0,131,1,100,1,107,2,114, + 8,100,2,83,0,124,0,160,1,100,3,161,1,92,3,125, + 1,125,2,125,3,124,1,114,28,124,3,160,2,161,0,100, + 4,100,5,133,2,25,0,100,6,107,3,114,30,124,0,83, + 0,9,0,116,3,124,0,131,1,125,4,110,18,35,0,4, + 0,116,4,116,5,102,2,121,62,1,0,1,0,1,0,124, + 0,100,2,100,5,133,2,25,0,125,4,89,0,110,1,37, + 0,116,6,124,4,131,1,114,60,124,4,83,0,124,0,83, + 0,119,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,97,0,0,0,233,253, + 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,4, + 0,0,0,114,104,0,0,0,218,5,108,111,119,101,114,114, + 128,0,0,0,114,107,0,0,0,114,111,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,119,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,32,32,32,32,32,114,7,0,0,0,218,15, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,239, + 1,0,0,115,26,0,0,0,12,7,4,1,16,1,24,1, + 4,1,2,1,10,1,2,128,16,1,16,1,2,128,16,1, + 2,254,115,12,0,0,0,159,4,36,0,164,15,53,7,190, + 1,53,7,114,135,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,116,1,116,2,131,1,161,1,114,23, + 9,0,116,3,124,0,131,1,83,0,35,0,4,0,116,4, + 121,34,1,0,1,0,1,0,89,0,100,0,83,0,37,0, + 124,0,160,0,116,1,116,5,131,1,161,1,114,32,124,0, + 83,0,100,0,83,0,119,0,114,69,0,0,0,41,6,114, + 58,0,0,0,218,5,116,117,112,108,101,114,127,0,0,0, + 114,121,0,0,0,114,107,0,0,0,114,113,0,0,0,41, + 1,114,120,0,0,0,32,114,7,0,0,0,218,11,95,103, + 101,116,95,99,97,99,104,101,100,2,2,0,0,115,22,0, + 0,0,14,1,2,1,8,1,2,128,12,1,6,1,2,128, + 14,1,4,1,4,2,2,251,115,12,0,0,0,136,3,12, + 0,140,7,22,7,162,1,22,7,114,137,0,0,0,99,1, 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,70,0,0,0,124,0,160,0,116,1,116,2, - 131,1,161,1,114,23,9,0,116,3,124,0,131,1,83,0, - 35,0,4,0,116,4,121,34,1,0,1,0,1,0,89,0, - 100,0,83,0,37,0,124,0,160,0,116,1,116,5,131,1, - 161,1,114,32,124,0,83,0,100,0,83,0,119,0,114,70, - 0,0,0,41,6,114,59,0,0,0,218,5,116,117,112,108, - 101,114,128,0,0,0,114,122,0,0,0,114,108,0,0,0, - 114,114,0,0,0,41,1,114,121,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,11,95,103,101, - 116,95,99,97,99,104,101,100,1,2,0,0,115,22,0,0, - 0,14,1,2,1,8,1,2,128,12,1,6,1,2,128,14, - 1,4,1,4,2,2,251,115,12,0,0,0,136,3,12,0, - 140,7,22,7,162,1,22,7,114,138,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,52,0,0,0,9,0,116,0,124,0,131,1,106, - 1,125,1,110,12,35,0,4,0,116,2,121,25,1,0,1, - 0,1,0,100,1,125,1,89,0,110,1,37,0,124,1,100, - 2,79,0,125,1,124,1,83,0,119,0,41,4,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,88,0,0,0,233,128,0,0,0,78,41,3,114, - 76,0,0,0,114,78,0,0,0,114,77,0,0,0,41,2, - 114,66,0,0,0,114,79,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,10,95,99,97,108,99, - 95,109,111,100,101,13,2,0,0,115,18,0,0,0,2,2, - 12,1,2,128,12,1,8,1,2,128,8,3,4,1,2,251, - 115,12,0,0,0,129,5,7,0,135,9,18,7,153,1,18, - 7,114,140,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,3,0,0,0,115,52,0,0,0, - 100,6,135,0,102,1,100,2,100,3,132,9,125,1,116,0, - 100,1,117,1,114,15,116,0,106,1,125,2,110,4,100,4, - 100,5,132,0,125,2,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,5,0,0,0,31,0,0,0,115,76,0,0,0,124, - 1,100,0,117,0,114,8,124,0,106,0,125,1,110,18,124, - 0,106,0,124,1,107,3,114,26,116,1,100,1,124,0,106, - 0,155,1,100,2,124,1,155,1,157,4,124,1,100,3,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,4,78,122,11, - 108,111,97,100,101,114,32,102,111,114,32,122,15,32,99,97, - 110,110,111,116,32,104,97,110,100,108,101,32,169,1,218,4, - 110,97,109,101,41,2,114,142,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,142,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,7,0, - 0,0,114,8,0,0,0,218,19,95,99,104,101,99,107,95, - 110,97,109,101,95,119,114,97,112,112,101,114,33,2,0,0, - 115,18,0,0,0,8,1,8,1,10,1,4,1,12,1,2, - 255,2,1,6,255,24,2,114,10,0,0,0,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,7,0,0,0,83,0,0,0,115,56,0,0,0, - 100,1,68,0,93,16,125,2,116,0,124,1,124,2,131,2, - 114,18,116,1,124,0,124,2,116,2,124,1,124,2,131,2, - 131,3,1,0,113,2,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,86,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,5,95,119,114,97,112, - 46,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, - 128,18,1,114,10,0,0,0,122,26,95,99,104,101,99,107, + 0,0,0,115,52,0,0,0,9,0,116,0,124,0,131,1, + 106,1,125,1,110,12,35,0,4,0,116,2,121,25,1,0, + 1,0,1,0,100,1,125,1,89,0,110,1,37,0,124,1, + 100,2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,32,32,114,7,0, + 0,0,218,10,95,99,97,108,99,95,109,111,100,101,14,2, + 0,0,115,18,0,0,0,2,2,12,1,2,128,12,1,8, + 1,2,128,8,3,4,1,2,251,115,12,0,0,0,129,5, + 7,0,135,9,18,7,153,1,18,7,114,139,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 3,0,0,0,115,52,0,0,0,100,6,135,0,102,1,100, + 2,100,3,132,9,125,1,116,0,100,1,117,1,114,15,116, + 0,106,1,125,2,110,4,100,4,100,5,132,0,125,2,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,5,0,0,0,31, + 0,0,0,115,76,0,0,0,124,1,100,0,117,0,114,8, + 124,0,106,0,125,1,110,18,124,0,106,0,124,1,107,3, + 114,26,116,1,100,1,124,0,106,0,155,1,100,2,124,1, + 155,1,157,4,124,1,100,3,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,4,78,122,11,108,111,97,100,101,114,32, + 102,111,114,32,122,15,32,99,97,110,110,111,116,32,104,97, + 110,100,108,101,32,169,1,218,4,110,97,109,101,41,2,114, + 141,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, + 114,41,5,218,4,115,101,108,102,114,141,0,0,0,218,4, + 97,114,103,115,218,6,107,119,97,114,103,115,218,6,109,101, + 116,104,111,100,32,32,32,32,128,114,7,0,0,0,218,19, + 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, + 112,101,114,34,2,0,0,115,18,0,0,0,8,1,8,1, + 10,1,4,1,12,1,2,255,2,1,6,255,24,2,114,9, + 0,0,0,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,7,0,0,0,83,0, + 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, + 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, + 2,124,1,124,2,131,2,131,3,1,0,113,2,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,85,0,0, + 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, + 47,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, + 128,18,1,114,9,0,0,0,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,114,70,0,0,0,41,2,218,10,95,98,111, - 111,116,115,116,114,97,112,114,159,0,0,0,41,3,114,148, - 0,0,0,114,149,0,0,0,114,159,0,0,0,114,7,0, - 0,0,114,147,0,0,0,114,8,0,0,0,218,11,95,99, - 104,101,99,107,95,110,97,109,101,25,2,0,0,115,12,0, - 0,0,14,8,8,10,8,1,8,2,10,6,4,1,114,10, - 0,0,0,114,161,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,67,0,0,0,115,72,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, - 160,3,124,1,161,1,92,2,125,2,125,3,124,2,100,2, - 117,0,114,34,116,4,124,3,131,1,114,34,100,3,125,4, - 116,0,160,1,124,4,160,5,124,3,100,4,25,0,161,1, - 116,6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95, - 109,111,100,117,108,101,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, - 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, - 115,116,101,97,100,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,7,114,100,0,0,0, - 114,101,0,0,0,114,102,0,0,0,218,11,102,105,110,100, - 95,108,111,97,100,101,114,114,4,0,0,0,114,90,0,0, - 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, - 41,5,114,144,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,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,17,95,102,105,110,100,95,109, - 111,100,117,108,101,95,115,104,105,109,56,2,0,0,115,16, - 0,0,0,6,7,2,2,4,254,14,6,16,1,4,1,22, - 1,4,1,114,10,0,0,0,114,168,0,0,0,99,3,0, - 0,0,0,0,0,0,0,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,32,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,53,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,81,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,32,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,160,0,0,0, - 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, - 103,101,114,143,0,0,0,114,4,0,0,0,218,8,69,79, - 70,69,114,114,111,114,114,43,0,0,0,41,6,114,42,0, - 0,0,114,142,0,0,0,218,11,101,120,99,95,100,101,116, - 97,105,108,115,90,5,109,97,103,105,99,114,118,0,0,0, - 114,17,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,13,95,99,108,97,115,115,105,102,121,95, - 112,121,99,76,2,0,0,115,28,0,0,0,12,16,8,1, - 16,1,12,1,16,1,12,1,10,1,12,1,8,1,16,1, - 8,2,16,1,16,1,4,1,114,10,0,0,0,114,177,0, - 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0,131,1, - 124,2,100,3,64,0,107,3,114,58,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,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, + 119,114,97,112,114,69,0,0,0,41,2,218,10,95,98,111, + 111,116,115,116,114,97,112,114,157,0,0,0,41,4,114,146, + 0,0,0,114,147,0,0,0,114,157,0,0,0,114,146,0, + 0,0,96,32,32,64,114,7,0,0,0,218,11,95,99,104, + 101,99,107,95,110,97,109,101,26,2,0,0,115,12,0,0, + 0,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, + 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, + 3,124,1,161,1,92,2,125,2,125,3,124,2,100,2,117, + 0,114,34,116,4,124,3,131,1,114,34,100,3,125,4,116, + 0,160,1,124,4,160,5,124,3,100,4,25,0,161,1,116, + 6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109, + 111,100,117,108,101,40,41,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, + 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, + 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, + 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, + 116,101,97,100,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,7,114,99,0,0,0,114, + 100,0,0,0,114,101,0,0,0,218,11,102,105,110,100,95, + 108,111,97,100,101,114,114,4,0,0,0,114,89,0,0,0, + 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, + 5,114,143,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,32,32,32,32,32,114,7,0,0, + 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, + 115,104,105,109,57,2,0,0,115,16,0,0,0,6,7,2, + 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, + 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, + 0,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,32,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,53,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,81,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,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,171,0,0,0,233,12,0,0,0, - 114,31,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,169,0, - 0,0,78,114,170,0,0,0,41,4,114,43,0,0,0,114, - 160,0,0,0,114,174,0,0,0,114,143,0,0,0,41,6, - 114,42,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,142,0,0,0,114,176,0,0,0,114,118,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,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,109,2,0,0,115,18,0,0,0, - 24,19,10,1,12,1,16,1,8,1,22,1,2,255,22,2, - 8,254,114,10,0,0,0,114,181,0,0,0,99,4,0,0, - 0,0,0,0,0,0,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,19,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,171,0,0,0,114, - 170,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,143,0,0,0,41,4,114,42, - 0,0,0,218,11,115,111,117,114,99,101,95,104,97,115,104, - 114,142,0,0,0,114,176,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,18,95,118,97,108,105, - 100,97,116,101,95,104,97,115,104,95,112,121,99,137,2,0, - 0,115,14,0,0,0,16,17,2,1,8,1,4,255,2,2, - 6,254,4,255,114,10,0,0,0,114,183,0,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, - 0,0,0,115,76,0,0,0,116,0,160,1,124,0,161,1, - 125,4,116,2,124,4,116,3,131,2,114,28,116,4,160,5, - 100,1,124,2,161,2,1,0,124,3,100,2,117,1,114,26, - 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,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,142, - 0,0,0,114,66,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,160,0,0,0,114,174,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,143,0,0,0,114,90,0,0,0,41,5, - 114,42,0,0,0,114,142,0,0,0,114,133,0,0,0,114, - 135,0,0,0,218,4,99,111,100,101,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,17,95,99,111,109,112, - 105,108,101,95,98,121,116,101,99,111,100,101,161,2,0,0, - 115,18,0,0,0,10,2,10,1,12,1,8,1,12,1,4, - 1,10,2,4,1,6,255,114,10,0,0,0,114,190,0,0, - 0,99,3,0,0,0,0,0,0,0,0,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,3,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,78,41,6,218,9,98,121,116,101,97,114, - 114,97,121,114,173,0,0,0,218,6,101,120,116,101,110,100, - 114,37,0,0,0,114,185,0,0,0,218,5,100,117,109,112, - 115,41,4,114,189,0,0,0,218,5,109,116,105,109,101,114, - 180,0,0,0,114,42,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,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, - 174,2,0,0,115,12,0,0,0,8,2,14,1,14,1,14, - 1,16,1,4,1,114,10,0,0,0,114,195,0,0,0,84, - 99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,171,0,0,0,78,41, - 7,114,191,0,0,0,114,173,0,0,0,114,192,0,0,0, - 114,37,0,0,0,114,4,0,0,0,114,185,0,0,0,114, - 193,0,0,0,41,5,114,189,0,0,0,114,182,0,0,0, - 90,7,99,104,101,99,107,101,100,114,42,0,0,0,114,17, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,17,95,99,111,100,101,95,116,111,95,104,97,115, - 104,95,112,121,99,184,2,0,0,115,14,0,0,0,8,2, - 12,1,14,1,16,1,10,1,16,1,4,1,114,10,0,0, - 0,114,196,0,0,0,99,1,0,0,0,0,0,0,0,0, - 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,92, - 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,197,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,195, - 2,0,0,115,10,0,0,0,8,5,12,1,10,1,12,1, - 20,1,114,10,0,0,0,114,201,0,0,0,169,2,114,165, - 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,8,0,0,0, - 67,0,0,0,115,60,1,0,0,124,1,100,1,117,0,114, - 29,100,2,125,1,116,0,124,2,100,3,131,2,114,28,9, - 0,124,2,160,1,124,0,161,1,125,1,110,39,35,0,4, - 0,116,2,121,157,1,0,1,0,1,0,89,0,110,30,37, - 0,110,28,116,3,160,4,124,1,161,1,125,1,116,5,124, - 1,131,1,115,57,9,0,116,6,116,3,160,7,161,0,124, - 1,131,2,125,1,110,10,35,0,4,0,116,8,121,156,1, - 0,1,0,1,0,89,0,110,1,37,0,116,9,160,10,124, - 0,124,2,124,1,100,4,166,3,125,4,100,5,124,4,95, - 11,124,2,100,1,117,0,114,99,116,12,131,0,68,0,93, - 21,92,2,125,5,125,6,124,1,160,13,116,14,124,6,131, - 1,161,1,114,96,124,5,124,0,124,1,131,2,125,2,124, - 2,124,4,95,15,1,0,113,99,113,75,100,1,83,0,124, - 3,116,16,117,0,114,131,116,0,124,2,100,6,131,2,114, - 130,9,0,124,2,160,17,124,0,161,1,125,7,110,10,35, - 0,4,0,116,2,121,155,1,0,1,0,1,0,89,0,110, - 10,37,0,124,7,114,130,103,0,124,4,95,18,110,3,124, - 3,124,4,95,18,124,4,106,18,103,0,107,2,114,153,124, - 1,114,153,116,19,124,1,131,1,100,7,25,0,125,8,124, - 4,106,18,160,20,124,8,161,1,1,0,124,4,83,0,119, - 0,119,0,119,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, - 21,114,154,0,0,0,114,204,0,0,0,114,143,0,0,0, - 114,19,0,0,0,114,104,0,0,0,114,87,0,0,0,114, - 68,0,0,0,114,83,0,0,0,114,77,0,0,0,114,160, - 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,59,0,0,0, - 114,137,0,0,0,114,165,0,0,0,218,9,95,80,79,80, - 85,76,65,84,69,114,207,0,0,0,114,203,0,0,0,114, - 75,0,0,0,114,62,0,0,0,41,9,114,142,0,0,0, - 90,8,108,111,99,97,116,105,111,110,114,165,0,0,0,114, - 203,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,207,0,0,0,90,7,100,105,114,110,97,109,101, - 114,7,0,0,0,114,7,0,0,0,114,8,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,212,2,0,0,115,96,0,0, - 0,8,12,4,4,10,1,2,2,12,1,2,128,12,1,4, - 1,2,128,2,251,10,7,8,1,2,1,16,1,2,128,12, - 1,4,1,2,128,16,8,6,1,8,3,14,1,14,1,10, - 1,6,1,4,1,2,253,4,5,8,3,10,2,2,1,12, - 1,2,128,12,1,4,1,2,128,4,2,6,1,2,128,6, - 2,10,1,4,1,12,1,12,1,4,2,2,244,2,228,2, - 249,115,44,0,0,0,140,5,18,0,146,7,27,7,167,7, - 47,0,175,7,56,7,193,45,5,65,51,0,193,51,7,65, - 60,7,194,27,1,65,60,7,194,28,1,56,7,194,29,1, - 27,7,114,214,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,64,0,0,0,115,88,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, - 4,100,3,90,5,101,6,111,15,100,4,101,7,118,0,90, - 8,101,9,100,5,100,6,132,0,131,1,90,10,101,11,100, - 7,100,8,132,0,131,1,90,12,101,11,100,14,100,10,100, - 11,132,1,131,1,90,13,101,11,100,15,100,12,100,13,132, - 1,131,1,90,14,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,122,6,95,100,46,112,121,100,99,1,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, - 52,0,0,0,9,0,116,0,160,1,116,0,106,2,124,0, - 161,2,83,0,35,0,4,0,116,3,121,25,1,0,1,0, - 1,0,116,0,160,1,116,0,106,4,124,0,161,2,6,0, - 89,0,83,0,37,0,119,0,114,70,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,77,0,0,0,90,18,72,75,69,89,95,76, - 79,67,65,76,95,77,65,67,72,73,78,69,114,20,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, - 41,3,0,0,115,14,0,0,0,2,2,14,1,2,128,12, - 1,18,1,2,128,2,255,115,12,0,0,0,129,6,8,0, - 136,14,24,7,153,1,24,7,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,9,0,0,0,67, - 0,0,0,115,136,0,0,0,124,0,106,0,114,7,124,0, - 106,1,125,2,110,3,124,0,106,2,125,2,124,2,160,3, - 124,1,100,1,116,4,106,5,100,0,100,2,133,2,25,0, - 22,0,100,3,166,2,125,3,9,0,124,0,160,6,124,3, - 161,1,53,0,125,4,116,7,160,8,124,4,100,4,161,2, - 125,5,100,0,4,0,4,0,131,3,1,0,110,11,35,0, - 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,124,5,83,0,35,0,4,0,116,9,121,67, - 1,0,1,0,1,0,89,0,100,0,83,0,37,0,119,0, - 41,5,78,122,5,37,100,46,37,100,114,45,0,0,0,41, - 2,114,164,0,0,0,90,11,115,121,115,95,118,101,114,115, - 105,111,110,114,11,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,90,0,0,0,114,16, - 0,0,0,218,12,118,101,114,115,105,111,110,95,105,110,102, - 111,114,217,0,0,0,114,216,0,0,0,90,10,81,117,101, - 114,121,86,97,108,117,101,114,77,0,0,0,41,6,218,3, - 99,108,115,114,164,0,0,0,90,12,114,101,103,105,115,116, - 114,121,95,107,101,121,114,21,0,0,0,90,4,104,107,101, - 121,218,8,102,105,108,101,112,97,116,104,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,16,95,115,101,97, - 114,99,104,95,114,101,103,105,115,116,114,121,48,3,0,0, - 115,34,0,0,0,6,2,8,1,6,2,6,1,16,1,6, - 255,2,2,12,1,12,1,12,255,22,128,4,4,2,128,12, - 254,6,1,2,128,2,255,115,39,0,0,0,153,5,56,0, - 158,7,43,3,165,6,56,0,171,4,47,11,175,1,56,0, - 176,3,47,11,179,3,56,0,184,7,65,2,7,193,3,1, - 65,2,7,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,67,0,0, - 0,115,122,0,0,0,124,0,160,0,124,1,161,1,125,4, - 124,4,100,0,117,0,114,11,100,0,83,0,9,0,116,1, - 124,4,131,1,1,0,110,11,35,0,4,0,116,2,121,60, - 1,0,1,0,1,0,89,0,100,0,83,0,37,0,116,3, - 131,0,68,0,93,26,92,2,125,5,125,6,124,4,160,4, - 116,5,124,6,131,1,161,1,114,57,116,6,160,7,124,1, - 124,5,124,1,124,4,131,2,124,4,100,1,166,3,125,7, - 124,7,2,0,1,0,83,0,113,31,100,0,83,0,119,0, - 41,2,78,114,205,0,0,0,41,8,114,224,0,0,0,114, - 76,0,0,0,114,77,0,0,0,114,209,0,0,0,114,59, - 0,0,0,114,137,0,0,0,114,160,0,0,0,218,16,115, - 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,41, - 8,114,222,0,0,0,114,164,0,0,0,114,66,0,0,0, - 218,6,116,97,114,103,101,116,114,223,0,0,0,114,165,0, - 0,0,114,213,0,0,0,114,211,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,9,102,105,110, - 100,95,115,112,101,99,63,3,0,0,115,38,0,0,0,10, - 2,8,1,4,1,2,1,10,1,2,128,12,1,6,1,2, - 128,14,1,14,1,6,1,8,1,2,1,6,254,8,3,2, - 252,4,255,2,254,115,12,0,0,0,140,4,17,0,145,7, - 27,7,188,1,27,7,122,31,87,105,110,100,111,119,115,82, + 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,32,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,142,0,0, + 0,114,4,0,0,0,218,8,69,79,70,69,114,114,111,114, + 114,43,0,0,0,41,6,114,42,0,0,0,114,141,0,0, + 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, + 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, + 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, + 115,115,105,102,121,95,112,121,99,77,2,0,0,115,28,0, + 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, + 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, + 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7, + 133,2,25,0,131,1,124,2,100,3,64,0,107,3,114,58, + 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,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,169,0,0, + 0,233,12,0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4, + 114,43,0,0,0,114,158,0,0,0,114,172,0,0,0,114, + 142,0,0,0,41,6,114,42,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,141,0,0,0,114,174,0,0,0, + 114,117,0,0,0,32,32,32,32,32,32,114,7,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,110,2,0,0,115,18,0, + 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, + 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, + 0,0,0,0,0,0,0,0,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,19,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,169,0,0, + 0,114,168,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,142,0,0,0,41,4, + 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, + 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, + 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, + 95,104,97,115,104,95,112,121,99,138,2,0,0,115,14,0, + 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, + 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, + 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, + 124,4,116,3,131,2,114,28,116,4,160,5,100,1,124,2, + 161,2,1,0,124,3,100,2,117,1,114,26,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, + 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,141,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,172,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,142,0,0,0,114,89,0,0,0,41,5,114,42,0,0, + 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, + 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, + 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, + 111,100,101,162,2,0,0,115,18,0,0,0,10,2,10,1, + 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, + 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, + 0,0,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,3,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,78,41,6,218, + 9,98,121,116,101,97,114,114,97,121,114,171,0,0,0,218, + 6,101,120,116,101,110,100,114,37,0,0,0,114,183,0,0, + 0,218,5,100,117,109,112,115,41,4,114,187,0,0,0,218, + 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, + 32,32,32,32,114,7,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,175,2,0,0,115,12,0,0,0,8,2,14,1,14,1, + 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, + 84,99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78, + 41,7,114,189,0,0,0,114,171,0,0,0,114,190,0,0, + 0,114,37,0,0,0,114,4,0,0,0,114,183,0,0,0, + 114,191,0,0,0,41,5,114,187,0,0,0,114,180,0,0, + 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, + 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, + 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, + 99,185,2,0,0,115,14,0,0,0,8,2,12,1,14,1, + 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, + 0,0,99,1,0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32, + 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, + 115,111,117,114,99,101,196,2,0,0,115,10,0,0,0,8, + 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, + 0,0,0,169,2,114,163,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,8,0,0,0,67,0,0,0,115,60,1,0,0, + 124,1,100,1,117,0,114,29,100,2,125,1,116,0,124,2, + 100,3,131,2,114,28,9,0,124,2,160,1,124,0,161,1, + 125,1,110,39,35,0,4,0,116,2,121,157,1,0,1,0, + 1,0,89,0,110,30,37,0,110,28,116,3,160,4,124,1, + 161,1,125,1,116,5,124,1,131,1,115,57,9,0,116,6, + 116,3,160,7,161,0,124,1,131,2,125,1,110,10,35,0, + 4,0,116,8,121,156,1,0,1,0,1,0,89,0,110,1, + 37,0,116,9,160,10,124,0,124,2,124,1,100,4,166,3, + 125,4,100,5,124,4,95,11,124,2,100,1,117,0,114,99, + 116,12,131,0,68,0,93,21,92,2,125,5,125,6,124,1, + 160,13,116,14,124,6,131,1,161,1,114,96,124,5,124,0, + 124,1,131,2,125,2,124,2,124,4,95,15,1,0,113,99, + 113,75,100,1,83,0,124,3,116,16,117,0,114,131,116,0, + 124,2,100,6,131,2,114,130,9,0,124,2,160,17,124,0, + 161,1,125,7,110,10,35,0,4,0,116,2,121,155,1,0, + 1,0,1,0,89,0,110,10,37,0,124,7,114,130,103,0, + 124,4,95,18,110,3,124,3,124,4,95,18,124,4,106,18, + 103,0,107,2,114,153,124,1,114,153,116,19,124,1,131,1, + 100,7,25,0,125,8,124,4,106,18,160,20,124,8,161,1, + 1,0,124,4,83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0, + 0,0,114,142,0,0,0,114,19,0,0,0,114,103,0,0, + 0,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, + 114,76,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,136,0,0,0,114,163,0,0, + 0,218,9,95,80,79,80,85,76,65,84,69,114,205,0,0, + 0,114,201,0,0,0,114,73,0,0,0,114,61,0,0,0, + 41,9,114,141,0,0,0,90,8,108,111,99,97,116,105,111, + 110,114,163,0,0,0,114,201,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,205,0,0,0,90,7, + 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, + 114,7,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,213,2, + 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, + 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, + 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, + 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, + 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, + 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, + 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, + 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, + 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, + 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, + 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, + 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, + 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, + 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, + 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,52,0,0,0,9,0,116,0,160,1, + 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, + 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, + 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, + 111,112,101,110,95,114,101,103,105,115,116,114,121,42,3,0, + 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, + 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, + 7,153,1,24,7,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,9,0,0,0,67,0,0,0, + 115,136,0,0,0,124,0,106,0,114,7,124,0,106,1,125, + 2,110,3,124,0,106,2,125,2,124,2,160,3,124,1,100, + 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, + 3,166,2,125,3,9,0,124,0,160,6,124,3,161,1,53, + 0,125,4,116,7,160,8,124,4,100,4,161,2,125,5,100, + 0,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, + 48,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,5,83,0,35,0,4,0,116,9,121,67,1,0,1, + 0,1,0,89,0,100,0,83,0,37,0,119,0,41,5,78, + 122,5,37,100,46,37,100,114,45,0,0,0,41,2,114,162, + 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, + 114,10,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,89,0,0,0,114,16,0,0,0, + 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,215, + 0,0,0,114,214,0,0,0,90,10,81,117,101,114,121,86, + 97,108,117,101,114,76,0,0,0,41,6,218,3,99,108,115, + 114,162,0,0,0,90,12,114,101,103,105,115,116,114,121,95, + 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, + 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, + 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, + 105,115,116,114,121,49,3,0,0,115,34,0,0,0,6,2, + 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, + 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, + 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, + 0,171,4,47,11,175,1,56,0,176,3,47,11,179,3,56, + 0,184,7,65,2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124, + 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, + 11,100,0,83,0,9,0,116,1,124,4,131,1,1,0,110, + 11,35,0,4,0,116,2,121,60,1,0,1,0,1,0,89, + 0,100,0,83,0,37,0,116,3,131,0,68,0,93,26,92, + 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, + 1,114,57,116,6,160,7,124,1,124,5,124,1,124,4,131, + 2,124,4,100,1,166,3,125,7,124,7,2,0,1,0,83, + 0,113,31,100,0,83,0,119,0,41,2,78,114,203,0,0, + 0,41,8,114,222,0,0,0,114,75,0,0,0,114,76,0, + 0,0,114,207,0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114, + 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, + 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, + 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, + 0,0,218,9,102,105,110,100,95,115,112,101,99,64,3,0, + 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, + 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, + 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, + 0,140,4,17,0,145,7,27,7,188,1,27,7,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,67, + 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, + 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, + 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, + 83,0,41,3,122,106,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,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, + 122,112,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,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, + 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, + 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, + 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, + 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, + 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,80,3,0,0,115,14, + 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, + 2,114,9,0,0,0,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,115,112,101,99,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, - 3,124,1,124,2,161,2,125,3,124,3,100,2,117,1,114, - 19,124,3,106,4,83,0,100,2,83,0,41,3,122,106,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,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,122,112,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,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,78,169,5,114,100, - 0,0,0,114,101,0,0,0,114,102,0,0,0,114,227,0, - 0,0,114,165,0,0,0,169,4,114,222,0,0,0,114,164, - 0,0,0,114,66,0,0,0,114,211,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,102,105, - 110,100,95,109,111,100,117,108,101,79,3,0,0,115,14,0, - 0,0,6,7,2,2,4,254,12,3,8,1,6,1,4,2, - 114,10,0,0,0,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,169,2,78,78,114,70,0,0, - 0,41,15,114,151,0,0,0,114,150,0,0,0,114,152,0, - 0,0,114,153,0,0,0,114,220,0,0,0,114,219,0,0, - 0,218,11,95,77,83,95,87,73,78,68,79,87,83,218,18, - 69,88,84,69,78,83,73,79,78,95,83,85,70,70,73,88, - 69,83,114,218,0,0,0,218,12,115,116,97,116,105,99,109, - 101,116,104,111,100,114,217,0,0,0,218,11,99,108,97,115, - 115,109,101,116,104,111,100,114,224,0,0,0,114,227,0,0, - 0,114,230,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,215,0,0,0,29, - 3,0,0,115,30,0,0,0,8,0,4,2,2,3,2,255, - 2,4,2,255,12,3,2,2,10,1,2,6,10,1,2,14, - 12,1,2,15,16,1,114,10,0,0,0,114,215,0,0,0, - 99,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, + 110,100,95,109,111,100,117,108,101,169,2,78,78,114,69,0, + 0,0,41,15,114,149,0,0,0,114,148,0,0,0,114,150, + 0,0,0,114,151,0,0,0,114,218,0,0,0,114,217,0, + 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218, + 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, + 88,69,83,114,216,0,0,0,218,12,115,116,97,116,105,99, + 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, + 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, + 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,213,0,0,0,30,3,0,0,115,30,0,0,0,8, + 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, + 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, + 0,0,114,213,0,0,0,99,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,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,31,124,4,100,5,107,3,83, + 0,41,7,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,3,0,0,0,114,97,0,0,0,114,0,0,0, + 0,114,45,0,0,0,218,8,95,95,105,110,105,116,95,95, + 78,41,4,114,73,0,0,0,114,202,0,0,0,114,125,0, + 0,0,114,104,0,0,0,41,5,114,143,0,0,0,114,162, + 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, + 0,102,3,0,0,115,8,0,0,0,18,3,16,1,14,1, + 16,1,114,9,0,0,0,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,1,0, + 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,169, + 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, + 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, + 101,110,3,0,0,243,2,0,0,0,4,0,114,9,0,0, + 0,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,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,18,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, + 142,0,0,0,114,89,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,143,0,0,0,218,6,109,111,100, + 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, + 218,11,101,120,101,99,95,109,111,100,117,108,101,113,3,0, + 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, + 20,2,114,9,0,0,0,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,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,2,122,26,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,78,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,143,0,0,0,114,162,0,0,0,32,32,114, + 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, + 101,121,3,0,0,115,2,0,0,0,12,3,114,9,0,0, + 0,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,205,0,0,0,114,238,0,0,0,114,244,0, + 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,234,0,0,0,97,3,0,0,115,12,0,0,0,8, + 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, + 114,234,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4, + 0,0,0,116,0,130,1,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,143,0,0,0,114, + 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, + 104,95,109,116,105,109,101,129,3,0,0,115,2,0,0,0, + 4,6,114,9,0,0,0,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,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,31,124,4,100,5,107,3,83,0,41,7,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,3,0,0,0, - 114,98,0,0,0,114,0,0,0,0,114,45,0,0,0,218, - 8,95,95,105,110,105,116,95,95,78,41,4,114,75,0,0, - 0,114,204,0,0,0,114,126,0,0,0,114,105,0,0,0, - 41,5,114,144,0,0,0,114,164,0,0,0,114,121,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,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,207,0,0,0,101, - 3,0,0,115,8,0,0,0,18,3,16,1,14,1,16,1, - 114,10,0,0,0,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,1,0,0,0, - 67,0,0,0,114,24,0,0,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,7,0,0,0,169,2,114, - 144,0,0,0,114,211,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,13,99,114,101,97,116,101, - 95,109,111,100,117,108,101,109,3,0,0,243,2,0,0,0, - 4,0,114,10,0,0,0,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,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,18,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,151,0,0,0,114,143,0,0,0,114,90,0,0,0,114, - 160,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,157,0,0,0,41,3,114,144,0,0, - 0,218,6,109,111,100,117,108,101,114,189,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,101, - 120,101,99,95,109,111,100,117,108,101,112,3,0,0,115,12, - 0,0,0,12,2,8,1,4,1,8,1,4,255,20,2,114, - 10,0,0,0,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,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,2,122,26,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,78,41,2,114,160,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,144,0,0,0,114,164,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,11,108,111,97,100,95, - 109,111,100,117,108,101,120,3,0,0,115,2,0,0,0,12, - 3,114,10,0,0,0,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,151,0,0,0,114,150,0,0,0,114,152, - 0,0,0,114,153,0,0,0,114,207,0,0,0,114,240,0, - 0,0,114,246,0,0,0,114,249,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,236,0,0,0,96,3,0,0,115,12,0,0,0,8,0, - 4,2,8,3,8,8,8,3,12,8,114,10,0,0,0,114, - 236,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4,0, - 0,0,116,0,130,1,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,77,0,0,0,169,2,114,144,0,0,0,114,66, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,10,112,97,116,104,95,109,116,105,109,101,128,3, - 0,0,115,2,0,0,0,4,6,114,10,0,0,0,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,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, - 3,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,194,0,0,0,78,41,1,114,252,0,0, - 0,114,251,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,10,112,97,116,104,95,115,116,97,116, - 115,136,3,0,0,115,2,0,0,0,14,12,114,10,0,0, - 0,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,67,0,0,0,115, - 12,0,0,0,124,0,160,0,124,2,124,3,161,2,83,0, - 41,2,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,78,41,1,218,8,115,101,116, - 95,100,97,116,97,41,4,114,144,0,0,0,114,135,0,0, - 0,90,10,99,97,99,104,101,95,112,97,116,104,114,42,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,15,95,99,97,99,104,101,95,98,121,116,101,99,111, - 100,101,150,3,0,0,115,2,0,0,0,12,8,114,10,0, - 0,0,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,1,0,0, - 0,67,0,0,0,114,24,0,0,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,7,0,0,0,41,3,114,144,0,0, - 0,114,66,0,0,0,114,42,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,254,0,0,0,160, - 3,0,0,114,241,0,0,0,114,10,0,0,0,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,8,0,0,0,67,0,0,0,115,70,0,0,0,124,0, - 160,0,124,1,161,1,125,2,9,0,124,0,160,1,124,2, - 161,1,125,3,116,4,124,3,131,1,83,0,35,0,4,0, - 116,2,121,34,1,0,125,4,1,0,116,3,100,1,124,1, - 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, - 37,0,119,0,41,4,122,52,67,111,110,99,114,101,116,101, + 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,3,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,192,0, + 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, + 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, + 116,115,137,3,0,0,115,2,0,0,0,14,12,114,9,0, + 0,0,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,67,0,0,0, + 115,12,0,0,0,124,0,160,0,124,2,124,3,161,2,83, + 0,41,2,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,78,41,1,218,8,115,101, + 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, + 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, + 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, + 97,99,104,101,95,98,121,116,101,99,111,100,101,151,3,0, + 0,115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0, + 114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, + 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, + 0,0,0,161,3,0,0,114,239,0,0,0,114,9,0,0, + 0,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,8,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,124,1,161,1,125,2,9,0,124,0, + 160,1,124,2,161,1,125,3,116,4,124,3,131,1,83,0, + 35,0,4,0,116,2,121,34,1,0,125,4,1,0,116,3, + 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, + 126,4,119,1,37,0,119,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,140,0,0,0,78,41, + 5,114,202,0,0,0,218,8,103,101,116,95,100,97,116,97, + 114,76,0,0,0,114,142,0,0,0,114,199,0,0,0,41, + 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, + 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, + 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, + 168,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, + 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, + 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, + 150,7,29,7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,67,0,0,0,115,22,0,0, + 0,116,0,160,1,116,2,124,1,124,2,100,1,100,2,124, + 3,100,3,166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0, + 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, + 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, + 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, + 111,117,114,99,101,95,116,111,95,99,111,100,101,178,3,0, + 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, + 0,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,9,0,0,0,67, + 0,0,0,115,28,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,9,0,116,1,124,2,131,1,125,8, + 110,13,35,0,4,0,116,2,144,1,121,13,1,0,1,0, + 1,0,100,1,125,8,89,0,110,147,37,0,9,0,124,0, + 160,3,124,2,161,1,125,9,110,11,35,0,4,0,116,4, + 144,1,121,12,1,0,1,0,1,0,89,0,110,129,37,0, + 116,5,124,9,100,4,25,0,131,1,125,3,9,0,124,0, + 160,6,124,8,161,1,125,10,110,11,35,0,4,0,116,4, + 144,1,121,11,1,0,1,0,1,0,89,0,110,105,37,0, + 124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8, + 107,3,125,7,116,9,106,10,100,10,107,3,114,140,124,7, + 115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0,124,1, + 124,11,131,5,1,0,110,13,35,0,4,0,116,15,116,16, + 102,2,144,1,121,10,1,0,1,0,1,0,89,0,110,16, + 37,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,114,189,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,1, + 115,7,124,8,100,1,117,1,144,1,114,7,124,3,100,1, + 117,1,144,1,114,7,124,6,114,233,124,5,100,1,117,0, + 114,226,116,9,160,11,124,4,161,1,125,5,116,23,124,14, + 124,5,124,7,131,3,125,10,110,8,116,24,124,14,124,3, + 116,25,124,4,131,1,131,3,125,10,9,0,124,0,160,26, + 124,2,124,8,124,10,161,3,1,0,124,14,83,0,35,0, + 4,0,116,2,144,1,121,9,1,0,1,0,1,0,89,0, + 124,14,83,0,37,0,124,14,83,0,119,0,119,0,119,0, + 119,0,119,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,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,141,0,0,0,78,41,5,114,204,0, - 0,0,218,8,103,101,116,95,100,97,116,97,114,77,0,0, - 0,114,143,0,0,0,114,201,0,0,0,41,5,114,144,0, - 0,0,114,164,0,0,0,114,66,0,0,0,114,199,0,0, - 0,218,3,101,120,99,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,10,103,101,116,95,115,111,117,114,99, - 101,167,3,0,0,115,26,0,0,0,10,2,2,1,10,1, - 8,4,2,128,12,253,4,1,2,1,4,255,2,1,2,255, - 10,128,2,255,115,20,0,0,0,134,5,15,0,143,7,33, - 7,150,7,29,7,157,4,33,7,162,1,33,7,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,131,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,9,0,0,0,67,0,0,0,115,22,0, - 0,0,116,0,160,1,116,2,124,1,124,2,100,1,100,2, - 124,3,100,3,166,6,83,0,41,5,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,244, - 0,0,0,84,41,2,218,12,100,111,110,116,95,105,110,104, - 101,114,105,116,114,109,0,0,0,78,41,3,114,160,0,0, - 0,114,243,0,0,0,218,7,99,111,109,112,105,108,101,41, - 4,114,144,0,0,0,114,42,0,0,0,114,66,0,0,0, - 114,3,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,14,115,111,117,114,99,101,95,116,111,95, - 99,111,100,101,177,3,0,0,115,6,0,0,0,12,5,4, - 1,6,255,114,10,0,0,0,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,9,0,0,0,67,0,0,0,115,28,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,9,0,116, - 1,124,2,131,1,125,8,110,13,35,0,4,0,116,2,144, - 1,121,13,1,0,1,0,1,0,100,1,125,8,89,0,110, - 147,37,0,9,0,124,0,160,3,124,2,161,1,125,9,110, - 11,35,0,4,0,116,4,144,1,121,12,1,0,1,0,1, - 0,89,0,110,129,37,0,116,5,124,9,100,4,25,0,131, - 1,125,3,9,0,124,0,160,6,124,8,161,1,125,10,110, - 11,35,0,4,0,116,4,144,1,121,11,1,0,1,0,1, - 0,89,0,110,105,37,0,124,1,124,8,100,5,156,2,125, - 11,9,0,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,114,141,124, - 12,100,9,64,0,100,8,107,3,125,7,116,9,106,10,100, - 10,107,3,114,140,124,7,115,122,116,9,106,10,100,11,107, - 2,114,140,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,10,116,14,124,10,124,3,124, - 9,100,12,25,0,124,1,124,11,131,5,1,0,110,13,35, - 0,4,0,116,15,116,16,102,2,144,1,121,10,1,0,1, - 0,1,0,89,0,110,16,37,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,114,189,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,1,115,7,124,8,100,1,117,1,144, - 1,114,7,124,3,100,1,117,1,144,1,114,7,124,6,114, - 233,124,5,100,1,117,0,114,226,116,9,160,11,124,4,161, - 1,125,5,116,23,124,14,124,5,124,7,131,3,125,10,110, - 8,116,24,124,14,124,3,116,25,124,4,131,1,131,3,125, - 10,9,0,124,0,160,26,124,2,124,8,124,10,161,3,1, - 0,124,14,83,0,35,0,4,0,116,2,144,1,121,9,1, - 0,1,0,1,0,89,0,124,14,83,0,37,0,124,14,83, - 0,119,0,119,0,119,0,119,0,119,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,194,0,0,0,114,184,0,0,0,114,170,0,0,0,114, - 3,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,142,0,0,0,114,133,0,0,0,114,135, - 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,204,0,0,0,114, - 122,0,0,0,114,108,0,0,0,114,253,0,0,0,114,77, - 0,0,0,114,34,0,0,0,114,0,1,0,0,114,177,0, - 0,0,218,10,109,101,109,111,114,121,118,105,101,119,114,188, - 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,182,0,0,0,218, - 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, - 69,82,114,183,0,0,0,114,181,0,0,0,114,143,0,0, - 0,114,175,0,0,0,114,160,0,0,0,114,174,0,0,0, - 114,190,0,0,0,114,6,1,0,0,114,16,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,196,0,0,0,114,195,0,0,0,114,4, - 0,0,0,114,255,0,0,0,41,15,114,144,0,0,0,114, - 164,0,0,0,114,135,0,0,0,114,179,0,0,0,114,199, - 0,0,0,114,182,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,133,0,0,0,218,2,115,116,114,42,0,0,0, - 114,176,0,0,0,114,17,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,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,242,0,0,0,185,3,0,0,115,188,0,0,0, - 10,7,4,1,4,1,4,1,4,1,4,1,2,1,10,1, - 2,128,14,1,8,1,2,128,2,2,12,1,2,128,14,1, - 4,1,2,128,12,2,2,1,12,1,2,128,14,1,4,1, - 2,128,2,3,2,1,6,254,2,4,12,1,16,1,12,1, - 4,1,12,1,10,1,2,1,2,255,8,2,2,254,10,3, - 4,1,2,1,2,1,4,254,8,4,2,1,4,255,2,128, - 2,3,2,1,2,1,6,1,2,1,2,1,4,251,4,128, - 18,7,4,1,2,128,8,2,2,1,4,255,6,2,2,1, - 2,1,6,254,8,3,10,1,12,1,12,1,18,1,6,1, - 4,255,4,2,8,1,10,1,14,1,6,2,6,1,4,255, - 2,2,14,1,4,3,2,128,14,254,2,1,4,1,2,128, - 4,0,2,254,2,233,2,225,2,250,2,251,115,80,0,0, - 0,144,4,21,0,149,10,33,7,163,5,41,0,169,8,51, - 7,187,5,65,1,0,193,1,8,65,11,7,193,18,65,5, - 66,24,0,194,24,10,66,36,7,195,50,7,67,59,0,195, - 59,8,68,6,7,196,9,1,68,6,7,196,10,1,66,36, - 7,196,11,1,65,11,7,196,12,1,51,7,196,13,1,33, - 7,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,151,0,0,0, - 114,150,0,0,0,114,152,0,0,0,114,252,0,0,0,114, - 253,0,0,0,114,255,0,0,0,114,254,0,0,0,114,2, - 1,0,0,114,6,1,0,0,114,242,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,250,0,0,0,126,3,0,0,115,16,0,0,0,8, - 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, - 10,0,0,0,114,250,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,0,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,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,135,0,4,0,90,12,83,0,41, - 16,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,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,184,0,0,0,41,3,114,144,0,0,0,114,164,0,0, - 0,114,66,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,237,0,0,0,19,4,0,0,115,4, - 0,0,0,6,3,10,1,114,10,0,0,0,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,67,0,0,0,243,24,0,0,0,124,0,106,0,124, - 1,106,0,107,2,111,11,124,0,106,1,124,1,106,1,107, - 2,83,0,114,70,0,0,0,169,2,218,9,95,95,99,108, - 97,115,115,95,95,114,157,0,0,0,169,2,114,144,0,0, - 0,90,5,111,116,104,101,114,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,6,95,95,101,113,95,95,25, - 4,0,0,243,6,0,0,0,12,1,10,1,2,255,114,10, - 0,0,0,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,3,0,0,0,67,0,0,0,243,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,70,0,0,0,169,3,218,4,104,97,115, - 104,114,142,0,0,0,114,66,0,0,0,169,1,114,144,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,8,95,95,104,97,115,104,95,95,29,4,0,0,243, - 2,0,0,0,20,1,114,10,0,0,0,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,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,2,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,41,3,218,5,115,117,112,101,114,114,12,1,0, - 0,114,249,0,0,0,114,248,0,0,0,169,1,114,15,1, - 0,0,114,7,0,0,0,114,8,0,0,0,114,249,0,0, - 0,32,4,0,0,115,2,0,0,0,16,10,114,10,0,0, - 0,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,1,0,0,0,67,0,0,0,243,6, - 0,0,0,124,0,106,0,83,0,169,2,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,78,114,72,0,0,0,114,248,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,204,0,0,0,44,4,0,0,243,2,0,0,0,6, - 3,114,10,0,0,0,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,9,0,0,0, - 67,0,0,0,115,136,0,0,0,116,0,124,0,116,1,116, - 2,102,2,131,2,114,38,116,3,160,4,116,5,124,1,131, - 1,161,1,53,0,125,2,124,2,160,6,161,0,2,0,100, - 1,4,0,4,0,131,3,1,0,83,0,35,0,49,0,115, - 30,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,100,1,83,0,116,3,160,7,124,1,100,2,161,2,53, - 0,125,2,124,2,160,6,161,0,2,0,100,1,4,0,4, - 0,131,3,1,0,83,0,35,0,49,0,115,60,119,4,37, - 0,1,0,1,0,1,0,89,0,1,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,186,0,0,0,114,250,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,92,0,0,0,90,9,111,112,101,110,95,99,111,100, - 101,114,110,0,0,0,90,4,114,101,97,100,114,93,0,0, - 0,41,3,114,144,0,0,0,114,66,0,0,0,114,95,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,0,1,0,0,49,4,0,0,115,22,0,0,0,14, + 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,192,0,0,0,114,182, + 0,0,0,114,168,0,0,0,114,3,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,141,0, + 0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0, + 0,0,114,251,0,0,0,114,76,0,0,0,114,34,0,0, + 0,114,254,0,0,0,114,175,0,0,0,218,10,109,101,109, + 111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77, + 65,71,73,67,95,78,85,77,66,69,82,114,181,0,0,0, + 114,179,0,0,0,114,142,0,0,0,114,173,0,0,0,114, + 158,0,0,0,114,172,0,0,0,114,188,0,0,0,114,4, + 1,0,0,114,16,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,194,0, + 0,0,114,193,0,0,0,114,4,0,0,0,114,253,0,0, + 0,41,15,114,143,0,0,0,114,162,0,0,0,114,134,0, + 0,0,114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0, + 218,2,115,116,114,42,0,0,0,114,174,0,0,0,114,17, + 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,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, + 114,240,0,0,0,186,3,0,0,115,188,0,0,0,10,7, + 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, + 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, + 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, + 2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1, + 12,1,10,1,2,1,2,255,8,2,2,254,10,3,4,1, + 2,1,2,1,4,254,8,4,2,1,4,255,2,128,2,3, + 2,1,2,1,6,1,2,1,2,1,4,251,4,128,18,7, + 4,1,2,128,8,2,2,1,4,255,6,2,2,1,2,1, + 6,254,8,3,10,1,12,1,12,1,18,1,6,1,4,255, + 4,2,8,1,10,1,14,1,6,2,6,1,4,255,2,2, + 14,1,4,3,2,128,14,254,2,1,4,1,2,128,4,0, + 2,254,2,233,2,225,2,250,2,251,115,80,0,0,0,144, + 4,21,0,149,10,33,7,163,5,41,0,169,8,51,7,187, + 5,65,1,0,193,1,8,65,11,7,193,18,65,5,66,24, + 0,194,24,10,66,36,7,195,50,7,67,59,0,195,59,8, + 68,6,7,196,9,1,68,6,7,196,10,1,66,36,7,196, + 11,1,65,11,7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0, + 114,7,0,0,0,114,248,0,0,0,127,3,0,0,115,16, + 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, + 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,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,135,0,4,0,90, + 12,83,0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0, + 114,162,0,0,0,114,65,0,0,0,32,32,32,114,7,0, + 0,0,114,235,0,0,0,20,4,0,0,115,4,0,0,0, + 6,3,10,1,114,9,0,0,0,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,67, + 0,0,0,243,24,0,0,0,124,0,106,0,124,1,106,0, + 107,2,111,11,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,143,0,0,0,90,5, + 111,116,104,101,114,32,32,114,7,0,0,0,218,6,95,95, + 101,113,95,95,26,4,0,0,243,6,0,0,0,12,1,10, + 1,2,255,114,9,0,0,0,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,3,0,0,0,67,0,0,0, + 243,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,141,0,0,0,114,65,0,0,0, + 169,1,114,143,0,0,0,32,114,7,0,0,0,218,8,95, + 95,104,97,115,104,95,95,30,4,0,0,243,2,0,0,0, + 20,1,114,9,0,0,0,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,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,2,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,41, + 3,218,5,115,117,112,101,114,114,10,1,0,0,114,247,0, + 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,13, + 1,0,0,32,32,128,114,7,0,0,0,114,247,0,0,0, + 33,4,0,0,115,2,0,0,0,16,10,114,9,0,0,0, + 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,1,0,0,0,67,0,0,0,243,6,0, + 0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0, + 0,32,32,114,7,0,0,0,114,202,0,0,0,45,4,0, + 0,243,2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0, + 116,0,124,0,116,1,116,2,102,2,131,2,114,38,116,3, + 160,4,116,5,124,1,131,1,161,1,53,0,125,2,124,2, + 160,6,161,0,2,0,100,1,4,0,4,0,131,3,1,0, + 83,0,35,0,49,0,115,30,119,4,37,0,1,0,1,0, + 1,0,89,0,1,0,1,0,100,1,83,0,116,3,160,7, + 124,1,100,2,161,2,53,0,125,2,124,2,160,6,161,0, + 2,0,100,1,4,0,4,0,131,3,1,0,83,0,35,0, + 49,0,115,60,119,4,37,0,1,0,1,0,1,0,89,0, + 1,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,184,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,91,0,0,0,90,9,111, + 112,101,110,95,99,111,100,101,114,109,0,0,0,90,4,114, + 101,97,100,114,92,0,0,0,41,3,114,143,0,0,0,114, + 65,0,0,0,114,94,0,0,0,32,32,32,114,7,0,0, + 0,114,254,0,0,0,50,4,0,0,115,22,0,0,0,14, 2,16,1,6,1,14,255,22,128,4,0,14,3,6,1,14, 255,22,128,4,0,115,24,0,0,0,142,4,25,3,153,4, 29,11,158,3,29,11,172,4,55,3,183,4,59,11,188,3, @@ -1620,1199 +1597,1172 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, 10,70,105,108,101,82,101,97,100,101,114,41,2,218,17,105, 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, - 114,32,1,0,0,41,3,114,144,0,0,0,114,245,0,0, - 0,114,32,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,19,103,101,116,95,114,101,115,111,117, - 114,99,101,95,114,101,97,100,101,114,58,4,0,0,115,4, - 0,0,0,12,2,8,1,114,10,0,0,0,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,41,13,114,151, - 0,0,0,114,150,0,0,0,114,152,0,0,0,114,153,0, - 0,0,114,237,0,0,0,114,17,1,0,0,114,23,1,0, - 0,114,161,0,0,0,114,249,0,0,0,114,204,0,0,0, - 114,0,1,0,0,114,34,1,0,0,90,13,95,95,99,108, - 97,115,115,99,101,108,108,95,95,114,7,0,0,0,114,7, - 0,0,0,114,26,1,0,0,114,8,0,0,0,114,12,1, - 0,0,14,4,0,0,115,24,0,0,0,8,0,4,2,8, - 3,8,6,8,4,2,3,14,1,2,11,10,1,8,4,2, - 9,18,1,114,10,0,0,0,114,12,1,0,0,99,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,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,3,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,194,0,0,0,114,7,1,0,0,78,41,3,114,76,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,144,0,0,0,114,66,0,0, - 0,114,11,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,253,0,0,0,68,4,0,0,115,4, - 0,0,0,8,2,14,1,114,10,0,0,0,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,6,0,0,0,67,0,0,0,115,24, - 0,0,0,116,0,124,1,131,1,125,4,124,0,160,1,124, - 2,124,3,124,4,100,1,166,3,83,0,41,2,78,169,1, - 218,5,95,109,111,100,101,41,2,114,140,0,0,0,114,254, - 0,0,0,41,5,114,144,0,0,0,114,135,0,0,0,114, - 133,0,0,0,114,42,0,0,0,114,79,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,255,0, - 0,0,73,4,0,0,115,4,0,0,0,8,2,16,1,114, - 10,0,0,0,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,88,0,0,0,114,37,1,0,0, - 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, - 0,67,0,0,0,115,250,0,0,0,116,0,124,1,131,1, - 92,2,125,4,125,5,103,0,125,6,124,4,114,31,116,1, - 124,4,131,1,115,31,116,0,124,4,131,1,92,2,125,4, - 125,7,124,6,160,2,124,7,161,1,1,0,124,4,114,31, - 116,1,124,4,131,1,114,14,116,3,124,6,131,1,68,0, - 93,47,125,7,116,4,124,4,124,7,131,2,125,4,9,0, - 116,5,160,6,124,4,161,1,1,0,113,35,35,0,4,0, - 116,7,121,58,1,0,1,0,1,0,89,0,113,35,4,0, - 116,8,121,124,1,0,125,8,1,0,116,9,160,10,100,1, - 124,4,124,8,161,3,1,0,89,0,100,2,125,8,126,8, - 1,0,100,2,83,0,100,2,125,8,126,8,119,1,37,0, - 9,0,116,11,124,1,124,2,124,3,131,3,1,0,116,9, - 160,10,100,3,124,1,161,2,1,0,100,2,83,0,35,0, - 4,0,116,8,121,123,1,0,125,8,1,0,116,9,160,10, - 100,1,124,1,124,8,161,3,1,0,89,0,100,2,125,8, - 126,8,100,2,83,0,100,2,125,8,126,8,119,1,37,0, - 119,0,119,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,75,0,0,0,114,84,0,0,0,114,62,0,0,0, - 218,8,114,101,118,101,114,115,101,100,114,68,0,0,0,114, - 19,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,77,0,0, - 0,114,160,0,0,0,114,174,0,0,0,114,96,0,0,0, - 41,9,114,144,0,0,0,114,66,0,0,0,114,42,0,0, - 0,114,38,1,0,0,218,6,112,97,114,101,110,116,114,121, - 0,0,0,114,64,0,0,0,114,69,0,0,0,114,1,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,254,0,0,0,78,4,0,0,115,60,0,0,0,12, - 2,4,1,12,2,12,1,10,1,12,254,12,4,10,1,2, - 1,12,1,2,128,12,1,4,2,12,1,6,3,4,1,4, - 255,14,2,10,128,2,1,12,1,16,1,2,128,12,1,8, - 2,2,1,16,255,10,128,2,254,2,247,115,62,0,0,0, - 171,5,49,2,177,7,65,18,9,186,6,65,18,9,193,0, - 7,65,14,9,193,14,4,65,18,9,193,20,12,65,34,0, - 193,34,7,65,58,7,193,41,7,65,54,7,193,54,4,65, - 58,7,193,59,1,65,58,7,193,60,1,65,18,9,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,151,0,0, - 0,114,150,0,0,0,114,152,0,0,0,114,153,0,0,0, - 114,253,0,0,0,114,255,0,0,0,114,254,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,35,1,0,0,64,4,0,0,115,10,0,0, - 0,8,0,4,2,8,2,8,5,18,5,114,10,0,0,0, - 114,35,1,0,0,99,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,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,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,184,0,0,0,114,170,0,0, - 0,41,2,114,142,0,0,0,114,133,0,0,0,41,5,114, - 204,0,0,0,114,0,1,0,0,114,177,0,0,0,114,190, - 0,0,0,114,8,1,0,0,41,5,114,144,0,0,0,114, - 164,0,0,0,114,66,0,0,0,114,42,0,0,0,114,176, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,242,0,0,0,113,4,0,0,115,22,0,0,0, - 10,1,10,1,2,4,2,1,6,254,12,4,2,1,14,1, - 2,1,2,1,6,253,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114, - 24,0,0,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,7,0,0,0,114,248,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,2,1,0,0,129,4, - 0,0,114,25,0,0,0,114,10,0,0,0,122,31,83,111, + 114,29,1,0,0,41,3,114,143,0,0,0,114,243,0,0, + 0,114,29,1,0,0,32,32,32,114,7,0,0,0,218,19, + 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, + 100,101,114,59,4,0,0,115,4,0,0,0,12,2,8,1, + 114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0,0, + 0,114,150,0,0,0,114,151,0,0,0,114,235,0,0,0, + 114,15,1,0,0,114,21,1,0,0,114,159,0,0,0,114, + 247,0,0,0,114,202,0,0,0,114,254,0,0,0,114,31, + 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, + 95,95,41,1,114,13,1,0,0,64,114,7,0,0,0,114, + 10,1,0,0,15,4,0,0,115,24,0,0,0,8,0,4, + 2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,8, + 4,2,9,18,1,114,9,0,0,0,114,10,1,0,0,99, + 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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65, + 0,0,0,114,9,1,0,0,32,32,32,114,7,0,0,0, + 114,251,0,0,0,69,4,0,0,115,4,0,0,0,8,2, + 14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0, + 124,1,131,1,125,4,124,0,160,1,124,2,124,3,124,4, + 100,1,166,3,83,0,41,2,78,169,1,218,5,95,109,111, + 100,101,41,2,114,139,0,0,0,114,252,0,0,0,41,5, + 114,143,0,0,0,114,134,0,0,0,114,132,0,0,0,114, + 42,0,0,0,114,78,0,0,0,32,32,32,32,32,114,7, + 0,0,0,114,253,0,0,0,74,4,0,0,115,4,0,0, + 0,8,2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0, + 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, + 124,4,114,31,116,1,124,4,131,1,115,31,116,0,124,4, + 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, + 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, + 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, + 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, + 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, + 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, + 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, + 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, + 126,8,119,1,37,0,9,0,116,11,124,1,124,2,124,3, + 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, + 100,2,83,0,35,0,4,0,116,8,121,123,1,0,125,8, + 1,0,116,9,160,10,100,1,124,1,124,8,161,3,1,0, + 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, + 126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0, + 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, + 114,67,0,0,0,114,19,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,172,0,0, + 0,114,95,0,0,0,41,9,114,143,0,0,0,114,65,0, + 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, + 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, + 0,0,0,114,255,0,0,0,32,32,32,32,32,32,32,32, + 32,114,7,0,0,0,114,252,0,0,0,79,4,0,0,115, + 60,0,0,0,12,2,4,1,12,2,12,1,10,1,12,254, + 12,4,10,1,2,1,12,1,2,128,12,1,4,2,12,1, + 6,3,4,1,4,255,14,2,10,128,2,1,12,1,16,1, + 2,128,12,1,8,2,2,1,16,255,10,128,2,254,2,247, + 115,62,0,0,0,171,5,49,2,177,7,65,18,9,186,6, + 65,18,9,193,0,7,65,14,9,193,14,4,65,18,9,193, + 20,12,65,34,0,193,34,7,65,58,7,193,41,7,65,54, + 7,193,54,4,65,58,7,193,59,1,65,58,7,193,60,1, + 65,18,9,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,251,0,0,0,114,253,0,0,0,114, + 252,0,0,0,114,12,0,0,0,114,7,0,0,0,114,32, + 1,0,0,65,4,0,0,115,10,0,0,0,8,0,4,2, + 8,2,8,5,18,5,114,9,0,0,0,114,32,1,0,0, + 99,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,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,46,103,101,116,95,115,111,117,114,99,101,78,41,6, - 114,151,0,0,0,114,150,0,0,0,114,152,0,0,0,114, - 153,0,0,0,114,242,0,0,0,114,2,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,42,1,0,0,109,4,0,0,115,8,0,0,0, - 8,0,4,2,8,2,12,16,114,10,0,0,0,114,42,1, - 0,0,99,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,31,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,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,0,83,0,114,70,0,0,0,114,184,0, - 0,0,41,3,114,144,0,0,0,114,142,0,0,0,114,66, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,237,0,0,0,142,4,0,0,115,4,0,0,0, - 6,1,10,1,114,10,0,0,0,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,67,0,0,0,114,13,1,0, - 0,114,70,0,0,0,114,14,1,0,0,114,16,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 17,1,0,0,146,4,0,0,114,18,1,0,0,114,10,0, - 0,0,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,3,0,0,0,67, - 0,0,0,114,19,1,0,0,114,70,0,0,0,114,20,1, - 0,0,114,22,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,23,1,0,0,150,4,0,0,114, - 24,1,0,0,114,10,0,0,0,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,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,3,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,78,41,7,114,160,0,0,0,114, - 243,0,0,0,114,188,0,0,0,90,14,99,114,101,97,116, - 101,95,100,121,110,97,109,105,99,114,174,0,0,0,114,142, - 0,0,0,114,66,0,0,0,41,3,114,144,0,0,0,114, - 211,0,0,0,114,245,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,240,0,0,0,153,4,0, - 0,115,14,0,0,0,4,2,6,1,4,255,6,2,8,1, - 4,255,4,2,114,10,0,0,0,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,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,160,0,0,0,114,243, - 0,0,0,114,188,0,0,0,90,12,101,120,101,99,95,100, - 121,110,97,109,105,99,114,174,0,0,0,114,142,0,0,0, - 114,66,0,0,0,169,2,114,144,0,0,0,114,245,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,246,0,0,0,161,4,0,0,115,8,0,0,0,14,2, - 6,1,8,1,8,255,114,10,0,0,0,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,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,5,122,49,82,101, - 116,117,114,110,32,84,114,117,101,32,105,102,32,116,104,101, + 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,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,182,0,0,0,114,168,0,0,0,41,2,114,141, + 0,0,0,114,132,0,0,0,41,5,114,202,0,0,0,114, + 254,0,0,0,114,175,0,0,0,114,188,0,0,0,114,6, + 1,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, + 65,0,0,0,114,42,0,0,0,114,174,0,0,0,32,32, + 32,32,32,114,7,0,0,0,114,240,0,0,0,114,4,0, + 0,115,22,0,0,0,10,1,10,1,2,4,2,1,6,254, + 12,4,2,1,14,1,2,1,2,1,6,253,114,9,0,0, + 0,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,1,0,0, + 0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0, + 32,32,114,7,0,0,0,114,0,1,0,0,130,4,0,0, + 114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0, + 0,114,7,0,0,0,114,39,1,0,0,110,4,0,0,115, + 8,0,0,0,8,0,4,2,8,2,12,16,114,9,0,0, + 0,114,39,1,0,0,99,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,28, + 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,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,0,83,0,114,69,0,0, + 0,114,182,0,0,0,41,3,114,143,0,0,0,114,141,0, + 0,0,114,65,0,0,0,32,32,32,114,7,0,0,0,114, + 235,0,0,0,143,4,0,0,115,4,0,0,0,6,1,10, + 1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69, + 0,0,0,114,12,1,0,0,114,14,1,0,0,32,32,114, + 7,0,0,0,114,15,1,0,0,147,4,0,0,114,16,1, + 0,0,114,9,0,0,0,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, + 3,0,0,0,67,0,0,0,114,17,1,0,0,114,69,0, + 0,0,114,18,1,0,0,114,20,1,0,0,32,114,7,0, + 0,0,114,21,1,0,0,151,4,0,0,114,22,1,0,0, + 114,9,0,0,0,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, + 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,3,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,78,41,7,114,158,0,0,0,114,241,0,0,0, + 114,186,0,0,0,90,14,99,114,101,97,116,101,95,100,121, + 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, + 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, + 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, + 0,0,154,4,0,0,115,14,0,0,0,4,2,6,1,4, + 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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,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,32,105,115,32,97,32,112,97,99,107,97,103,101,46,114, - 3,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,51,0,0,0,115,28,0,0,0,129,0, - 124,0,93,9,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,237,0,0, - 0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0, - 0,0,170,4,0,0,115,6,0,0,0,6,128,2,1,20, - 255,114,10,0,0,0,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,46,60,108,111,99,97,108,115,62,46, - 60,103,101,110,101,120,112,114,62,78,41,4,114,75,0,0, - 0,114,66,0,0,0,218,3,97,110,121,114,233,0,0,0, - 114,248,0,0,0,114,7,0,0,0,114,46,1,0,0,114, - 8,0,0,0,114,207,0,0,0,167,4,0,0,115,8,0, - 0,0,14,2,12,1,2,1,8,255,114,10,0,0,0,122, - 30,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,1,0,0,0, - 67,0,0,0,114,24,0,0,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,7,0, - 0,0,114,248,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,242,0,0,0,173,4,0,0,114, - 25,0,0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, - 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,7,0,0,0, - 114,248,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,2,1,0,0,177,4,0,0,114,25,0, - 0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,27,1,0, - 0,114,28,1,0,0,114,72,0,0,0,114,248,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 204,0,0,0,181,4,0,0,114,29,1,0,0,114,10,0, - 0,0,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,151,0,0,0,114,150,0,0, - 0,114,152,0,0,0,114,153,0,0,0,114,237,0,0,0, - 114,17,1,0,0,114,23,1,0,0,114,240,0,0,0,114, - 246,0,0,0,114,207,0,0,0,114,242,0,0,0,114,2, - 1,0,0,114,161,0,0,0,114,204,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,31,1,0,0,134,4,0,0,115,24,0,0,0,8, - 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, - 6,8,4,2,4,14,1,114,10,0,0,0,114,31,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100, - 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, - 24,83,0,41,25,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, - 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,70, - 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, - 97,116,104,114,137,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,12,95, - 112,97,116,104,95,102,105,110,100,101,114,169,4,114,144,0, - 0,0,114,142,0,0,0,114,66,0,0,0,90,11,112,97, - 116,104,95,102,105,110,100,101,114,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,237,0,0,0,194,4,0, - 0,115,8,0,0,0,6,1,6,1,14,1,10,1,114,10, - 0,0,0,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, + 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,241,0,0,0,114,186,0,0,0,90,12,101, + 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, + 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, + 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, + 0,0,162,4,0,0,115,8,0,0,0,14,2,6,1,8, + 1,8,255,114,9,0,0,0,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,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,5,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,3,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,51,0,0,0,115,28,0,0,0,129,0,124,0,93, + 9,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,235,0,0,0,78,114, + 12,0,0,0,41,3,114,5,0,0,0,218,6,115,117,102, + 102,105,120,218,9,102,105,108,101,95,110,97,109,101,32,32, + 128,114,7,0,0,0,114,8,0,0,0,171,4,0,0,115, + 6,0,0,0,6,128,2,1,20,255,114,9,0,0,0,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,46, + 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, + 114,62,78,41,4,114,73,0,0,0,114,65,0,0,0,218, + 3,97,110,121,114,231,0,0,0,41,3,114,143,0,0,0, + 114,162,0,0,0,114,42,1,0,0,32,32,64,114,7,0, + 0,0,114,205,0,0,0,168,4,0,0,115,8,0,0,0, + 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0, + 114,246,0,0,0,32,32,114,7,0,0,0,114,240,0,0, + 0,174,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114,7,0, + 0,0,114,0,1,0,0,178,4,0,0,114,25,0,0,0, + 114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0,0,114, + 25,1,0,0,114,74,0,0,0,114,246,0,0,0,32,32, + 114,7,0,0,0,114,202,0,0,0,182,4,0,0,114,26, + 1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1,0,0, + 114,238,0,0,0,114,244,0,0,0,114,205,0,0,0,114, + 240,0,0,0,114,0,1,0,0,114,159,0,0,0,114,202, + 0,0,0,114,12,0,0,0,114,7,0,0,0,114,28,1, + 0,0,135,4,0,0,115,24,0,0,0,8,0,4,2,8, + 6,8,4,8,4,8,3,8,8,8,6,8,6,8,4,2, + 4,14,1,114,9,0,0,0,114,28,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, + 0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100,21,132, + 0,90,13,100,22,100,23,132,0,90,14,100,24,83,0,41, + 25,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,99,4,0,0, 0,0,0,0,0,0,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,15, - 100,3,83,0,124,1,100,4,102,2,83,0,41,6,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,98, - 0,0,0,114,11,0,0,0,41,2,114,16,0,0,0,114, - 66,0,0,0,90,8,95,95,112,97,116,104,95,95,78,41, - 2,114,49,1,0,0,114,105,0,0,0,41,4,114,144,0, - 0,0,114,41,1,0,0,218,3,100,111,116,90,2,109,101, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0,0,41, + 6,218,5,95,110,97,109,101,218,5,95,112,97,116,104,114, + 136,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,12,95,112,97,116,104, + 95,102,105,110,100,101,114,169,4,114,143,0,0,0,114,141, + 0,0,0,114,65,0,0,0,90,11,112,97,116,104,95,102, + 105,110,100,101,114,32,32,32,32,114,7,0,0,0,114,235, + 0,0,0,195,4,0,0,115,8,0,0,0,6,1,6,1, + 14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4,102,2, + 83,0,41,6,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,97,0,0,0,114,10,0,0,0,41,2, + 114,16,0,0,0,114,65,0,0,0,90,8,95,95,112,97, + 116,104,95,95,78,41,2,114,45,1,0,0,114,104,0,0, + 0,41,4,114,143,0,0,0,114,38,1,0,0,218,3,100, + 111,116,90,2,109,101,32,32,32,32,114,7,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,200,4,0,0,115,8,0,0, - 0,18,2,8,1,4,2,8,3,114,10,0,0,0,122,38, + 116,104,95,110,97,109,101,115,201,4,0,0,115,8,0,0, + 0,18,2,8,1,4,2,8,3,114,9,0,0,0,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,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,70,0,0, - 0,41,4,114,56,1,0,0,114,156,0,0,0,114,16,0, - 0,0,218,7,109,111,100,117,108,101,115,41,3,114,144,0, + 106,3,124,1,25,0,124,2,131,2,83,0,114,69,0,0, + 0,41,4,114,52,1,0,0,114,154,0,0,0,114,16,0, + 0,0,218,7,109,111,100,117,108,101,115,41,3,114,143,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,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,51,1,0,0,210,4,0,0,115,4, - 0,0,0,12,1,16,1,114,10,0,0,0,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,4,0,0,0,67,0, - 0,0,115,80,0,0,0,116,0,124,0,160,1,161,0,131, - 1,125,1,124,1,124,0,106,2,107,3,114,37,124,0,160, - 3,124,0,106,4,124,1,161,2,125,2,124,2,100,0,117, - 1,114,34,124,2,106,5,100,0,117,0,114,34,124,2,106, - 6,114,34,124,2,106,6,124,0,95,7,124,1,124,0,95, - 2,124,0,106,7,83,0,114,70,0,0,0,41,8,114,137, - 0,0,0,114,51,1,0,0,114,52,1,0,0,114,53,1, - 0,0,114,49,1,0,0,114,165,0,0,0,114,203,0,0, - 0,114,50,1,0,0,41,3,114,144,0,0,0,90,11,112, - 97,114,101,110,116,95,112,97,116,104,114,211,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,12, - 95,114,101,99,97,108,99,117,108,97,116,101,214,4,0,0, - 115,16,0,0,0,12,2,10,1,14,1,18,3,6,1,8, - 1,6,1,6,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0,243,12,0,0, - 0,116,0,124,0,160,1,161,0,131,1,83,0,114,70,0, - 0,0,41,2,218,4,105,116,101,114,114,58,1,0,0,114, - 22,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,8,95,95,105,116,101,114,95,95,227,4,0, - 0,243,2,0,0,0,12,1,114,10,0,0,0,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,67,0,0,0,115,12,0,0,0, - 124,0,160,0,161,0,124,1,25,0,83,0,114,70,0,0, - 0,169,1,114,58,1,0,0,41,2,114,144,0,0,0,218, - 5,105,110,100,101,120,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,11,95,95,103,101,116,105,116,101,109, - 95,95,230,4,0,0,114,62,1,0,0,114,10,0,0,0, - 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,67,0,0, - 0,115,14,0,0,0,124,2,124,0,106,0,124,1,60,0, - 100,0,83,0,114,70,0,0,0,41,1,114,50,1,0,0, - 41,3,114,144,0,0,0,114,64,1,0,0,114,66,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,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,14,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0,114,59, - 1,0,0,114,70,0,0,0,41,2,114,4,0,0,0,114, - 58,1,0,0,114,22,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,7,95,95,108,101,110,95, - 95,236,4,0,0,114,62,1,0,0,114,10,0,0,0,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,3,0,0,0,67,0,0,0,243,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,90,0,0,0,114,50,1, - 0,0,114,22,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,8,95,95,114,101,112,114,95,95, - 239,4,0,0,114,62,1,0,0,114,10,0,0,0,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,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,70,0, - 0,0,114,63,1,0,0,169,2,114,144,0,0,0,218,4, - 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, + 114,95,110,97,109,101,32,32,32,114,7,0,0,0,114,47, + 1,0,0,211,4,0,0,115,4,0,0,0,12,1,16,1, + 114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0,0,0, + 116,0,124,0,160,1,161,0,131,1,125,1,124,1,124,0, + 106,2,107,3,114,37,124,0,160,3,124,0,106,4,124,1, + 161,2,125,2,124,2,100,0,117,1,114,34,124,2,106,5, + 100,0,117,0,114,34,124,2,106,6,114,34,124,2,106,6, + 124,0,95,7,124,1,124,0,95,2,124,0,106,7,83,0, + 114,69,0,0,0,41,8,114,136,0,0,0,114,47,1,0, + 0,114,48,1,0,0,114,49,1,0,0,114,45,1,0,0, + 114,163,0,0,0,114,201,0,0,0,114,46,1,0,0,41, + 3,114,143,0,0,0,90,11,112,97,114,101,110,116,95,112, + 97,116,104,114,209,0,0,0,32,32,32,114,7,0,0,0, + 218,12,95,114,101,99,97,108,99,117,108,97,116,101,215,4, + 0,0,115,16,0,0,0,12,2,10,1,14,1,18,3,6, + 1,8,1,6,1,6,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,12, + 0,0,0,116,0,124,0,160,1,161,0,131,1,83,0,114, + 69,0,0,0,41,2,218,4,105,116,101,114,114,54,1,0, + 0,114,20,1,0,0,32,114,7,0,0,0,218,8,95,95, + 105,116,101,114,95,95,228,4,0,0,243,2,0,0,0,12, + 1,114,9,0,0,0,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, + 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,54,1,0, + 0,41,2,114,143,0,0,0,218,5,105,110,100,101,120,32, + 32,114,7,0,0,0,218,11,95,95,103,101,116,105,116,101, + 109,95,95,231,4,0,0,114,58,1,0,0,114,9,0,0, + 0,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,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,46,1,0, + 0,41,3,114,143,0,0,0,114,60,1,0,0,114,65,0, + 0,0,32,32,32,114,7,0,0,0,218,11,95,95,115,101, + 116,105,116,101,109,95,95,234,4,0,0,115,2,0,0,0, + 14,1,114,9,0,0,0,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, + 3,0,0,0,67,0,0,0,114,55,1,0,0,114,69,0, + 0,0,41,2,114,4,0,0,0,114,54,1,0,0,114,20, + 1,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, + 95,95,237,4,0,0,114,58,1,0,0,114,9,0,0,0, + 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,3,0,0,0,67,0,0,0,243,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,89,0,0,0,114,46, + 1,0,0,114,20,1,0,0,32,114,7,0,0,0,218,8, + 95,95,114,101,112,114,95,95,240,4,0,0,114,58,1,0, + 0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32,114,7, 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,242,4,0,0,114,62,1,0,0,114,10,0,0,0,122, + 95,243,4,0,0,114,58,1,0,0,114,9,0,0,0,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,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,70,0,0,0,41,2,114,50,1, - 0,0,114,62,0,0,0,114,70,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,62,0,0,0, - 245,4,0,0,243,2,0,0,0,16,1,114,10,0,0,0, - 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,15,114,151,0,0,0,114, - 150,0,0,0,114,152,0,0,0,114,153,0,0,0,114,237, - 0,0,0,114,56,1,0,0,114,51,1,0,0,114,58,1, - 0,0,114,61,1,0,0,114,65,1,0,0,114,66,1,0, - 0,114,67,1,0,0,114,69,1,0,0,114,72,1,0,0, - 114,62,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,48,1,0,0,187,4, - 0,0,115,26,0,0,0,8,0,4,1,8,6,8,6,8, - 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, - 3,114,10,0,0,0,114,48,1,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, - 115,88,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,100,18,132,0,90,12,100,19,83,0,41,20,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,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,70,0, - 0,0,41,2,114,48,1,0,0,114,50,1,0,0,114,54, - 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,237,0,0,0,251,4,0,0,115,2,0,0,0, - 18,1,114,10,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,24,0,0,0,116,0,160,1, - 100,1,116,2,161,2,1,0,100,2,160,3,124,0,106,4, - 161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,100,0, - 0,0,114,101,0,0,0,114,102,0,0,0,114,90,0,0, - 0,114,151,0,0,0,41,1,114,245,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,109,111, - 100,117,108,101,95,114,101,112,114,254,4,0,0,115,8,0, - 0,0,6,7,2,1,4,255,12,2,114,10,0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,0,0,0,41,2,78,84,114,7,0,0,0, - 114,248,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,207,0,0,0,9,5,0,0,243,2,0, - 0,0,4,1,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0, - 41,2,78,114,11,0,0,0,114,7,0,0,0,114,248,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,2,1,0,0,12,5,0,0,114,76,1,0,0,114, - 10,0,0,0,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,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,11, - 0,0,0,122,8,60,115,116,114,105,110,103,62,114,244,0, - 0,0,84,41,1,114,4,1,0,0,41,1,114,5,1,0, - 0,114,248,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,242,0,0,0,15,5,0,0,114,73, - 1,0,0,114,10,0,0,0,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, - 1,0,0,0,67,0,0,0,114,24,0,0,0,114,238,0, - 0,0,114,7,0,0,0,114,239,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,240,0,0,0, - 18,5,0,0,114,241,0,0,0,114,10,0,0,0,122,30, + 1,0,100,0,83,0,114,69,0,0,0,41,2,114,46,1, + 0,0,114,61,0,0,0,114,66,1,0,0,32,32,114,7, + 0,0,0,114,61,0,0,0,246,4,0,0,243,2,0,0, + 0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150,0,0, + 0,114,151,0,0,0,114,235,0,0,0,114,52,1,0,0, + 114,47,1,0,0,114,54,1,0,0,114,57,1,0,0,114, + 61,1,0,0,114,62,1,0,0,114,63,1,0,0,114,65, + 1,0,0,114,68,1,0,0,114,61,0,0,0,114,12,0, + 0,0,114,7,0,0,0,114,44,1,0,0,188,4,0,0, + 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, + 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, + 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, + 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,100,18,132,0,90,12,100,19,83,0,41,20,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, + 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,44,1,0,0,114,46,1,0,0,114,50,1,0, + 0,32,32,32,32,114,7,0,0,0,114,235,0,0,0,252, + 4,0,0,115,2,0,0,0,18,1,114,9,0,0,0,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,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 24,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 100,2,160,3,124,0,106,4,161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0,0,114, + 101,0,0,0,114,89,0,0,0,114,149,0,0,0,41,1, + 114,243,0,0,0,32,114,7,0,0,0,218,11,109,111,100, + 117,108,101,95,114,101,112,114,255,4,0,0,115,8,0,0, + 0,6,7,2,1,4,255,12,2,114,9,0,0,0,122,28, 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,1,0,0,0,67, - 0,0,0,115,4,0,0,0,100,0,83,0,114,70,0,0, - 0,114,7,0,0,0,114,43,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,246,0,0,0,21, - 5,0,0,114,76,1,0,0,114,10,0,0,0,122,28,95, + 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,1,0,0,0,67,0,0, + 0,114,24,0,0,0,41,2,78,84,114,12,0,0,0,114, + 246,0,0,0,32,32,114,7,0,0,0,114,205,0,0,0, + 10,5,0,0,243,2,0,0,0,4,1,114,9,0,0,0, + 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,1,0,0,0,67,0, + 0,0,114,24,0,0,0,41,2,78,114,10,0,0,0,114, + 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, + 114,0,1,0,0,13,5,0,0,114,72,1,0,0,114,9, + 0,0,0,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,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,10,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,32,32,114,7,0,0,0,114,240,0,0, + 0,16,5,0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, + 24,0,0,0,114,236,0,0,0,114,12,0,0,0,114,237, + 0,0,0,32,32,114,7,0,0,0,114,238,0,0,0,19, + 5,0,0,114,239,0,0,0,114,9,0,0,0,122,30,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,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, - 3,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,78,41,4, - 114,160,0,0,0,114,174,0,0,0,114,50,1,0,0,114, - 247,0,0,0,114,248,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,249,0,0,0,24,5,0, - 0,115,8,0,0,0,6,7,4,1,4,255,12,3,114,10, - 0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,67,0,0,0,115,22,0,0,0,100,1,100,2,108, - 0,109,1,125,2,1,0,124,2,124,0,106,2,131,1,83, - 0,41,3,78,114,0,0,0,0,41,1,218,15,78,97,109, - 101,115,112,97,99,101,82,101,97,100,101,114,41,3,114,33, - 1,0,0,114,77,1,0,0,114,50,1,0,0,41,3,114, - 144,0,0,0,114,245,0,0,0,114,77,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,34,1, - 0,0,36,5,0,0,115,4,0,0,0,12,1,10,1,114, - 10,0,0,0,122,36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,151,0, - 0,0,114,150,0,0,0,114,152,0,0,0,114,237,0,0, - 0,114,234,0,0,0,114,75,1,0,0,114,207,0,0,0, - 114,2,1,0,0,114,242,0,0,0,114,240,0,0,0,114, - 246,0,0,0,114,249,0,0,0,114,34,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,74,1,0,0,250,4,0,0,115,22,0,0,0, - 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, - 8,3,8,3,12,12,114,10,0,0,0,114,74,1,0,0, - 99,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,7, - 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, - 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, - 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, - 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, - 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, - 41,21,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,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, - 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, - 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, - 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, - 1,0,113,7,100,1,83,0,41,3,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,41,6,218, - 4,108,105,115,116,114,16,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,154,0,0,0,114,79,1,0,0, - 41,2,114,142,0,0,0,218,6,102,105,110,100,101,114,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,79, - 1,0,0,47,5,0,0,115,14,0,0,0,22,4,8,1, - 10,1,10,1,8,1,2,128,4,252,114,10,0,0,0,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,1,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,67,0, - 0,0,115,78,0,0,0,116,0,106,1,100,1,117,1,114, - 14,116,0,106,1,115,14,116,2,160,3,100,2,116,4,161, - 2,1,0,116,0,106,1,68,0,93,18,125,1,9,0,124, - 1,124,0,131,1,2,0,1,0,83,0,35,0,4,0,116, - 5,121,38,1,0,1,0,1,0,89,0,113,17,37,0,100, - 1,83,0,119,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,16,0,0,0,218,10,112,97,116,104,95,104, - 111,111,107,115,114,100,0,0,0,114,101,0,0,0,114,163, - 0,0,0,114,143,0,0,0,41,2,114,66,0,0,0,90, - 4,104,111,111,107,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, - 115,57,5,0,0,115,22,0,0,0,16,3,12,1,10,1, - 2,1,12,1,2,128,12,1,4,1,2,128,4,2,2,253, - 115,12,0,0,0,148,3,26,2,154,7,35,9,166,1,35, - 9,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,8,0,0,0,67,0,0,0,115,104, - 0,0,0,124,1,100,1,107,2,114,21,9,0,116,0,160, - 1,161,0,125,1,110,11,35,0,4,0,116,2,121,51,1, - 0,1,0,1,0,89,0,100,2,83,0,37,0,9,0,116, - 3,106,4,124,1,25,0,125,2,124,2,83,0,35,0,4, - 0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,11,0,0,0,78,41,7,114,19,0,0,0,114,83, - 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, - 100,69,114,114,111,114,114,16,0,0,0,114,81,1,0,0, - 218,8,75,101,121,69,114,114,111,114,114,85,1,0,0,41, - 3,114,222,0,0,0,114,66,0,0,0,114,83,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,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,70,5,0,0,115,36,0,0,0,8,8, - 2,1,10,1,2,128,12,1,6,3,2,128,2,1,10,1, - 4,4,2,128,12,253,10,1,12,1,4,1,2,128,2,253, - 2,250,115,24,0,0,0,133,4,10,0,138,7,20,7,150, - 5,29,0,157,17,49,7,178,1,49,7,179,1,20,7,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,4,0,0, - 0,67,0,0,0,115,138,0,0,0,116,0,124,2,100,1, - 131,2,114,27,116,1,160,2,124,2,161,1,155,0,100,2, - 157,2,125,3,116,3,160,4,124,3,116,5,161,2,1,0, - 124,2,160,6,124,1,161,1,92,2,125,4,125,5,110,21, - 116,1,160,2,124,2,161,1,155,0,100,3,157,2,125,3, - 116,3,160,4,124,3,116,5,161,2,1,0,124,2,160,7, - 124,1,161,1,125,4,103,0,125,5,124,4,100,0,117,1, - 114,58,116,1,160,8,124,1,124,4,161,2,83,0,116,1, - 160,9,124,1,100,0,161,2,125,6,124,5,124,6,95,10, - 124,6,83,0,41,4,78,114,162,0,0,0,122,53,46,102, - 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, - 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,116,111,32,102,105,110,100,95,108,111,97,100,101, - 114,40,41,122,53,46,102,105,110,100,95,115,112,101,99,40, + 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,1,0,0,0,67,0, + 0,0,115,4,0,0,0,100,0,83,0,114,69,0,0,0, + 114,12,0,0,0,114,40,1,0,0,32,32,114,7,0,0, + 0,114,244,0,0,0,22,5,0,0,114,72,1,0,0,114, + 9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172,0,0, + 0,114,46,1,0,0,114,245,0,0,0,114,246,0,0,0, + 32,32,114,7,0,0,0,114,247,0,0,0,25,5,0,0, + 115,8,0,0,0,6,7,4,1,4,255,12,3,114,9,0, + 0,0,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, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,67,0,0,0,115,22,0,0,0,100,1,100,2,108,0, + 109,1,125,2,1,0,124,2,124,0,106,2,131,1,83,0, + 41,3,78,114,0,0,0,0,41,1,218,15,78,97,109,101, + 115,112,97,99,101,82,101,97,100,101,114,41,3,114,30,1, + 0,0,114,73,1,0,0,114,46,1,0,0,41,3,114,143, + 0,0,0,114,243,0,0,0,114,73,1,0,0,32,32,32, + 114,7,0,0,0,114,31,1,0,0,37,5,0,0,115,4, + 0,0,0,12,1,10,1,114,9,0,0,0,122,36,95,78, + 97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0,0,114, + 150,0,0,0,114,235,0,0,0,114,232,0,0,0,114,71, + 1,0,0,114,205,0,0,0,114,0,1,0,0,114,240,0, + 0,0,114,238,0,0,0,114,244,0,0,0,114,247,0,0, + 0,114,31,1,0,0,114,12,0,0,0,114,7,0,0,0, + 114,70,1,0,0,251,4,0,0,115,22,0,0,0,8,0, + 8,1,2,3,10,1,8,10,8,3,8,3,8,3,8,3, + 8,3,12,12,114,9,0,0,0,114,70,1,0,0,99,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,7,100,6, + 100,7,132,0,131,1,90,8,101,7,100,8,100,9,132,0, + 131,1,90,9,101,7,100,19,100,11,100,12,132,1,131,1, + 90,10,101,7,100,20,100,13,100,14,132,1,131,1,90,11, + 101,7,100,19,100,15,100,16,132,1,131,1,90,12,101,4, + 100,17,100,18,132,0,131,1,90,13,100,10,83,0,41,21, + 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,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,64,0,0,0,116,0,116,1,106,2,160,3,161,0, + 131,1,68,0,93,22,92,2,125,0,125,1,124,1,100,1, + 117,0,114,20,116,1,106,2,124,0,61,0,113,7,116,4, + 124,1,100,2,131,2,114,29,124,1,160,5,161,0,1,0, + 113,7,100,1,83,0,41,3,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,41,6,218,4,108, + 105,115,116,114,16,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,75,1,0,0,41,2, + 114,141,0,0,0,218,6,102,105,110,100,101,114,32,32,114, + 7,0,0,0,114,75,1,0,0,48,5,0,0,115,14,0, + 0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252, + 114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,67,0,0,0,115,78,0,0,0,116,0,106, + 1,100,1,117,1,114,14,116,0,106,1,115,14,116,2,160, + 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, + 18,125,1,9,0,124,1,124,0,131,1,2,0,1,0,83, + 0,35,0,4,0,116,5,121,38,1,0,1,0,1,0,89, + 0,113,17,37,0,100,1,83,0,119,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,16,0,0,0,218,10, + 112,97,116,104,95,104,111,111,107,115,114,99,0,0,0,114, + 100,0,0,0,114,161,0,0,0,114,142,0,0,0,41,2, + 114,65,0,0,0,90,4,104,111,111,107,32,32,114,7,0, + 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,58, + 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, + 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, + 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,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,8,0,0,0,67,0,0,0,115,104,0,0, + 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, + 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, + 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, + 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, + 5,121,50,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,124, + 2,83,0,37,0,119,0,119,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, + 10,0,0,0,78,41,7,114,19,0,0,0,114,82,0,0, + 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, + 114,114,111,114,114,16,0,0,0,114,77,1,0,0,218,8, + 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, + 220,0,0,0,114,65,0,0,0,114,79,1,0,0,32,32, + 32,114,7,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,71,5,0,0, + 115,36,0,0,0,8,8,2,1,10,1,2,128,12,1,6, + 3,2,128,2,1,10,1,4,4,2,128,12,253,10,1,12, + 1,4,1,2,128,2,253,2,250,115,24,0,0,0,133,4, + 10,0,138,7,20,7,150,5,29,0,157,17,49,7,178,1, + 49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138,0,0, + 0,116,0,124,2,100,1,131,2,114,27,116,1,160,2,124, + 2,161,1,155,0,100,2,157,2,125,3,116,3,160,4,124, + 3,116,5,161,2,1,0,124,2,160,6,124,1,161,1,92, + 2,125,4,125,5,110,21,116,1,160,2,124,2,161,1,155, + 0,100,3,157,2,125,3,116,3,160,4,124,3,116,5,161, + 2,1,0,124,2,160,7,124,1,161,1,125,4,103,0,125, + 5,124,4,100,0,117,1,114,58,116,1,160,8,124,1,124, + 4,161,2,83,0,116,1,160,9,124,1,100,0,161,2,125, + 6,124,5,124,6,95,10,124,6,83,0,41,4,78,114,160, + 0,0,0,122,53,46,102,105,110,100,95,115,112,101,99,40, 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, - 100,95,109,111,100,117,108,101,40,41,41,11,114,154,0,0, - 0,114,160,0,0,0,90,12,95,111,98,106,101,99,116,95, - 110,97,109,101,114,100,0,0,0,114,101,0,0,0,114,163, - 0,0,0,114,162,0,0,0,114,230,0,0,0,114,225,0, - 0,0,114,208,0,0,0,114,203,0,0,0,41,7,114,222, - 0,0,0,114,164,0,0,0,114,83,1,0,0,114,167,0, - 0,0,114,165,0,0,0,114,166,0,0,0,114,211,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,16,95,108,101,103,97,99,121,95,103,101,116,95,115,112, - 101,99,92,5,0,0,115,26,0,0,0,10,4,16,1,12, - 2,16,1,16,2,12,2,10,1,4,1,8,1,12,1,12, - 1,6,1,4,1,114,10,0,0,0,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,5,0,0,0,67,0,0,0,115,166,0, - 0,0,103,0,125,4,124,2,68,0,93,67,125,5,116,0, - 124,5,116,1,116,2,102,2,131,2,115,14,113,4,124,0, - 160,3,124,5,161,1,125,6,124,6,100,1,117,1,114,71, - 116,4,124,6,100,2,131,2,114,35,124,6,160,5,124,1, - 124,3,161,2,125,7,110,6,124,0,160,6,124,1,124,6, - 161,2,125,7,124,7,100,1,117,0,114,46,113,4,124,7, - 106,7,100,1,117,1,114,55,124,7,2,0,1,0,83,0, - 124,7,106,8,125,8,124,8,100,1,117,0,114,66,116,9, - 100,3,131,1,130,1,124,4,160,10,124,8,161,1,1,0, - 113,4,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,227,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,186,0,0,0,114,110,0, - 0,0,218,5,98,121,116,101,115,114,88,1,0,0,114,154, - 0,0,0,114,227,0,0,0,114,89,1,0,0,114,165,0, - 0,0,114,203,0,0,0,114,143,0,0,0,114,192,0,0, - 0,114,160,0,0,0,114,208,0,0,0,41,9,114,222,0, - 0,0,114,164,0,0,0,114,66,0,0,0,114,226,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,83,1,0,0,114,211,0, - 0,0,114,166,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,9,95,103,101,116,95,115,112,101, - 99,113,5,0,0,115,42,0,0,0,4,5,8,1,14,1, - 2,1,10,1,8,1,10,1,14,1,12,2,8,1,2,1, - 10,1,8,1,6,1,8,1,8,1,10,5,2,128,12,2, - 6,1,4,1,114,10,0,0,0,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,5,0,0,0, - 67,0,0,0,115,94,0,0,0,124,2,100,1,117,0,114, - 7,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,20,100,1,83, - 0,124,4,106,3,100,1,117,0,114,45,124,4,106,4,125, - 5,124,5,114,43,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,124,4,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,16,0,0,0, - 114,66,0,0,0,114,92,1,0,0,114,165,0,0,0,114, - 203,0,0,0,114,206,0,0,0,114,48,1,0,0,41,6, - 114,222,0,0,0,114,164,0,0,0,114,66,0,0,0,114, - 226,0,0,0,114,211,0,0,0,114,91,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,227,0, - 0,0,145,5,0,0,115,26,0,0,0,8,6,6,1,14, - 1,8,1,4,1,10,1,6,1,4,1,6,3,16,1,4, - 1,4,2,4,2,114,10,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, - 125,3,124,3,100,2,117,0,114,18,100,2,83,0,124,3, - 106,4,83,0,41,3,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, + 100,95,108,111,97,100,101,114,40,41,122,53,46,102,105,110, + 100,95,115,112,101,99,40,41,32,110,111,116,32,102,111,117, + 110,100,59,32,102,97,108,108,105,110,103,32,98,97,99,107, + 32,116,111,32,102,105,110,100,95,109,111,100,117,108,101,40, + 41,41,11,114,152,0,0,0,114,158,0,0,0,90,12,95, + 111,98,106,101,99,116,95,110,97,109,101,114,99,0,0,0, + 114,100,0,0,0,114,161,0,0,0,114,160,0,0,0,114, + 228,0,0,0,114,223,0,0,0,114,206,0,0,0,114,201, + 0,0,0,41,7,114,220,0,0,0,114,162,0,0,0,114, + 79,1,0,0,114,165,0,0,0,114,163,0,0,0,114,164, + 0,0,0,114,209,0,0,0,32,32,32,32,32,32,32,114, + 7,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, + 116,95,115,112,101,99,93,5,0,0,115,26,0,0,0,10, + 4,16,1,12,2,16,1,16,2,12,2,10,1,4,1,8, + 1,12,1,12,1,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0, + 0,115,166,0,0,0,103,0,125,4,124,2,68,0,93,67, + 125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,14, + 113,4,124,0,160,3,124,5,161,1,125,6,124,6,100,1, + 117,1,114,71,116,4,124,6,100,2,131,2,114,35,124,6, + 160,5,124,1,124,3,161,2,125,7,110,6,124,0,160,6, + 124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,46, + 113,4,124,7,106,7,100,1,117,1,114,55,124,7,2,0, + 1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,0, + 114,66,116,9,100,3,131,1,130,1,124,4,160,10,124,8, + 161,1,1,0,113,4,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,225,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,184,0,0, + 0,114,109,0,0,0,218,5,98,121,116,101,115,114,84,1, + 0,0,114,152,0,0,0,114,225,0,0,0,114,85,1,0, + 0,114,163,0,0,0,114,201,0,0,0,114,142,0,0,0, + 114,190,0,0,0,114,158,0,0,0,114,206,0,0,0,41, + 9,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, + 114,224,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,79,1,0, + 0,114,209,0,0,0,114,164,0,0,0,32,32,32,32,32, + 32,32,32,32,114,7,0,0,0,218,9,95,103,101,116,95, + 115,112,101,99,114,5,0,0,115,42,0,0,0,4,5,8, + 1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,8, + 1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,2, + 128,12,2,6,1,4,1,114,9,0,0,0,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,5, + 0,0,0,67,0,0,0,115,94,0,0,0,124,2,100,1, + 117,0,114,7,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,20, + 100,1,83,0,124,4,106,3,100,1,117,0,114,45,124,4, + 106,4,125,5,124,5,114,43,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,124,4,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,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102, - 105,110,100,95,109,111,100,117,108,101,40,41,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, - 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, - 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, - 59,32,117,115,101,32,102,105,110,100,95,115,112,101,99,40, - 41,32,105,110,115,116,101,97,100,78,114,228,0,0,0,114, - 229,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,230,0,0,0,169,5,0,0,115,14,0,0, - 0,6,8,2,2,4,254,12,3,8,1,4,1,6,1,114, - 10,0,0,0,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,0,0,0, - 0,0,0,0,0,0,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,2, - 1,0,124,2,106,2,124,0,105,0,124,1,164,1,142,1, - 83,0,41,4,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,78,41,3,90,18,105,109,112,111,114,116,108, - 105,98,46,109,101,116,97,100,97,116,97,114,93,1,0,0, - 218,18,102,105,110,100,95,100,105,115,116,114,105,98,117,116, - 105,111,110,115,41,3,114,145,0,0,0,114,146,0,0,0, - 114,93,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,94,1,0,0,185,5,0,0,115,4,0, - 0,0,12,10,16,1,114,10,0,0,0,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,114,70,0,0,0,114, - 231,0,0,0,41,14,114,151,0,0,0,114,150,0,0,0, - 114,152,0,0,0,114,153,0,0,0,114,234,0,0,0,114, - 79,1,0,0,114,85,1,0,0,114,235,0,0,0,114,88, - 1,0,0,114,89,1,0,0,114,92,1,0,0,114,227,0, - 0,0,114,230,0,0,0,114,94,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,78,1,0,0,43,5,0,0,115,36,0,0,0,8,0, - 4,2,2,2,10,1,2,9,10,1,2,12,10,1,2,21, - 10,1,2,20,12,1,2,31,12,1,2,23,12,1,2,15, - 14,1,114,10,0,0,0,114,78,1,0,0,99,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,6,0,0,0,7,0,0, - 0,115,112,0,0,0,103,0,125,3,124,2,68,0,93,16, - 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,4, - 124,3,124,0,95,1,124,1,112,27,100,3,124,0,95,2, - 116,3,124,0,106,2,131,1,115,43,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,3,0,0,0,51,0,0,0,115,24,0,0,0,129,0, - 124,0,93,7,125,1,124,1,136,0,102,2,86,0,1,0, - 113,2,100,0,83,0,114,70,0,0,0,114,7,0,0,0, - 114,44,1,0,0,169,1,114,165,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,9,0,0,0,214,5,0,0,115, - 4,0,0,0,6,128,18,0,114,10,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,98,0,0,0,114,131,0,0,0,78, - 41,11,114,192,0,0,0,218,8,95,108,111,97,100,101,114, - 115,114,66,0,0,0,114,87,0,0,0,114,68,0,0,0, - 114,19,0,0,0,114,83,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,144,0,0,0,114,66,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,213,0,0,0,114,7,0,0,0,114,96,1, - 0,0,114,8,0,0,0,114,237,0,0,0,208,5,0,0, - 115,20,0,0,0,4,4,12,1,26,1,6,1,10,2,10, - 1,18,1,6,1,8,1,12,1,114,10,0,0,0,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, - 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,131,0,0,0,78, - 41,1,114,98,1,0,0,114,22,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,79,1,0,0, - 224,5,0,0,114,82,0,0,0,114,10,0,0,0,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,4,0,0,0,67,0,0, - 0,115,54,0,0,0,116,0,160,1,100,1,116,2,161,2, - 1,0,124,0,160,3,124,1,161,1,125,2,124,2,100,2, - 117,0,114,19,100,2,103,0,102,2,83,0,124,2,106,4, - 124,2,106,5,112,25,103,0,102,2,83,0,41,3,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,122,101,70,105,108,101,70,105,110,100,101, - 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, - 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, - 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, - 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,78,41,6,114, - 100,0,0,0,114,101,0,0,0,114,102,0,0,0,114,227, - 0,0,0,114,165,0,0,0,114,203,0,0,0,41,3,114, - 144,0,0,0,114,164,0,0,0,114,211,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,162,0, - 0,0,230,5,0,0,115,14,0,0,0,6,7,2,2,4, - 254,10,3,8,1,8,1,16,1,114,10,0,0,0,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,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,202,0, - 0,0,41,1,114,214,0,0,0,41,7,114,144,0,0,0, - 114,212,0,0,0,114,164,0,0,0,114,66,0,0,0,90, - 4,115,109,115,108,114,226,0,0,0,114,165,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,92, - 1,0,0,245,5,0,0,115,8,0,0,0,10,1,8,1, - 2,1,6,255,114,10,0,0,0,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,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,9,0,116,1, - 124,0,106,2,112,17,116,3,160,4,161,0,131,1,106,5, - 125,5,110,12,35,0,4,0,116,6,121,190,1,0,1,0, - 1,0,100,4,125,5,89,0,110,1,37,0,124,5,124,0, - 106,7,107,3,114,45,124,0,160,8,161,0,1,0,124,5, - 124,0,95,7,116,9,131,0,114,56,124,0,106,10,125,6, - 124,4,160,11,161,0,125,7,110,5,124,0,106,12,125,6, - 124,4,125,7,124,7,124,6,118,0,114,108,116,13,124,0, - 106,2,124,4,131,2,125,8,124,0,106,14,68,0,93,29, - 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,103, - 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,74,116,17,124,8,131,1, - 125,3,124,0,106,14,68,0,93,55,92,2,125,9,125,10, - 9,0,116,13,124,0,106,2,124,4,124,9,23,0,131,2, - 125,12,110,12,35,0,4,0,116,18,121,189,1,0,1,0, - 1,0,89,0,1,0,100,6,83,0,37,0,116,19,160,20, - 100,7,124,12,100,3,100,8,166,3,1,0,124,7,124,9, - 23,0,124,6,118,0,114,166,116,15,124,12,131,1,114,166, - 124,0,160,16,124,10,124,1,124,12,100,6,124,2,161,5, - 2,0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,98,0,0, - 0,114,45,0,0,0,114,131,0,0,0,114,237,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,105,0,0,0,114,76,0,0,0, - 114,66,0,0,0,114,19,0,0,0,114,83,0,0,0,114, - 36,1,0,0,114,77,0,0,0,114,98,1,0,0,218,11, - 95,102,105,108,108,95,99,97,99,104,101,114,22,0,0,0, - 114,101,1,0,0,114,132,0,0,0,114,100,1,0,0,114, - 68,0,0,0,114,97,1,0,0,114,81,0,0,0,114,92, - 1,0,0,114,84,0,0,0,114,112,0,0,0,114,160,0, - 0,0,114,174,0,0,0,114,208,0,0,0,114,203,0,0, - 0,41,14,114,144,0,0,0,114,164,0,0,0,114,226,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,194,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,45,1,0,0,114,212,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,211,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,227,0,0,0,250, - 5,0,0,115,94,0,0,0,4,5,14,1,2,1,22,1, - 2,128,12,1,8,1,2,128,10,1,8,1,6,1,6,2, - 6,1,10,1,6,2,4,1,8,2,12,1,14,1,8,1, - 10,1,8,1,24,1,2,255,8,5,14,2,2,1,18,1, - 2,128,12,1,8,1,2,128,16,1,12,1,8,1,10,1, - 4,1,8,255,2,128,4,2,12,1,12,1,8,1,4,1, - 4,1,2,244,2,228,115,31,0,0,0,138,10,21,0,149, - 9,32,7,193,52,8,65,61,2,193,61,7,66,8,9,194, - 61,1,66,8,9,194,62,1,32,7,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,10,0,0, - 0,67,0,0,0,115,194,0,0,0,124,0,106,0,125,1, - 9,0,116,1,160,2,124,1,112,11,116,1,160,3,161,0, - 161,1,125,2,110,15,35,0,4,0,116,4,116,5,116,6, - 102,3,121,96,1,0,1,0,1,0,103,0,125,2,89,0, - 110,1,37,0,116,7,106,8,160,9,100,1,161,1,115,41, - 116,10,124,2,131,1,124,0,95,11,110,37,116,10,131,0, - 125,3,124,2,68,0,93,28,125,4,124,4,160,12,100,2, - 161,1,92,3,125,5,125,6,125,7,124,6,114,67,100,3, - 160,13,124,5,124,7,160,14,161,0,161,2,125,8,110,2, - 124,5,125,8,124,3,160,15,124,8,161,1,1,0,113,46, - 124,3,124,0,95,11,116,7,106,8,160,9,116,16,161,1, - 114,94,100,4,100,5,132,0,124,2,68,0,131,1,124,0, - 95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,98,0,0,0,114,89, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,83,0,0,0,115,20,0,0,0,104,0,124, - 0,93,6,125,1,124,1,160,0,161,0,146,2,113,2,83, - 0,114,7,0,0,0,41,1,114,132,0,0,0,41,2,114, - 5,0,0,0,90,2,102,110,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,14,0,0,0,74,6,0,0, - 115,2,0,0,0,20,0,114,10,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,66,0,0,0,114, - 19,0,0,0,90,7,108,105,115,116,100,105,114,114,83,0, - 0,0,114,86,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,16,0,0, - 0,114,26,0,0,0,114,27,0,0,0,114,99,1,0,0, - 114,100,1,0,0,114,127,0,0,0,114,90,0,0,0,114, - 132,0,0,0,218,3,97,100,100,114,28,0,0,0,114,101, - 1,0,0,41,9,114,144,0,0,0,114,66,0,0,0,90, - 8,99,111,110,116,101,110,116,115,90,21,108,111,119,101,114, - 95,115,117,102,102,105,120,95,99,111,110,116,101,110,116,115, - 114,71,1,0,0,114,142,0,0,0,114,55,1,0,0,114, - 45,1,0,0,90,8,110,101,119,95,110,97,109,101,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,103,1, - 0,0,45,6,0,0,115,42,0,0,0,6,2,2,1,20, - 1,2,128,18,1,8,3,2,128,12,3,12,1,6,7,8, - 1,16,1,4,1,18,1,4,2,12,1,6,1,12,1,20, - 1,4,255,2,233,115,13,0,0,0,132,9,14,0,142,12, - 28,7,193,32,1,28,7,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, - 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,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0, - 116,0,124,0,131,1,115,10,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,4,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,72,0,0,0,78,41,2,114,84,0, - 0,0,114,143,0,0,0,114,72,0,0,0,169,2,114,222, - 0,0,0,114,102,1,0,0,114,7,0,0,0,114,8,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,86,6,0,0, - 115,6,0,0,0,8,2,12,1,16,1,114,10,0,0,0, - 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,78,114,7,0,0,0,41,3, - 114,222,0,0,0,114,102,1,0,0,114,108,1,0,0,114, - 7,0,0,0,114,107,1,0,0,114,8,0,0,0,218,9, - 112,97,116,104,95,104,111,111,107,76,6,0,0,115,4,0, - 0,0,14,10,4,6,114,10,0,0,0,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,3,0, - 0,0,67,0,0,0,114,68,1,0,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,90,0,0,0,114,66,0,0,0,114,22,1,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,69,1,0,0,94,6,0,0,114,62,1,0,0,114,10, - 0,0,0,122,19,70,105,108,101,70,105,110,100,101,114,46, - 95,95,114,101,112,114,95,95,114,70,0,0,0,41,15,114, - 151,0,0,0,114,150,0,0,0,114,152,0,0,0,114,153, - 0,0,0,114,237,0,0,0,114,79,1,0,0,114,168,0, - 0,0,114,230,0,0,0,114,162,0,0,0,114,92,1,0, - 0,114,227,0,0,0,114,103,1,0,0,114,235,0,0,0, - 114,109,1,0,0,114,69,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,95, - 1,0,0,199,5,0,0,115,24,0,0,0,8,0,4,2, - 8,7,8,16,4,4,8,2,8,15,10,5,8,51,2,31, - 10,1,12,17,114,10,0,0,0,114,95,1,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,146,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,33, - 124,5,114,18,124,5,106,1,125,4,110,15,124,2,124,3, - 107,2,114,28,116,2,124,1,124,2,131,2,125,4,110,5, - 116,3,124,1,124,2,131,2,125,4,124,5,115,42,116,4, - 124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100,0, - 83,0,35,0,4,0,116,5,121,72,1,0,1,0,1,0, - 89,0,100,0,83,0,37,0,119,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,96,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,165,0,0,0,114,42,1,0,0,114, - 35,1,0,0,114,214,0,0,0,218,9,69,120,99,101,112, - 116,105,111,110,41,6,90,2,110,115,114,142,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,165,0,0,0,114,211,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,95, - 102,105,120,95,117,112,95,109,111,100,117,108,101,100,6,0, - 0,115,40,0,0,0,10,2,10,1,4,1,4,1,8,1, - 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, - 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, - 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, - 7,7,114,114,1,0,0,99,0,0,0,0,0,0,0,0, - 0,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,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, - 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, - 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, - 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, - 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, - 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, - 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, - 120,101,115,41,46,10,32,32,32,32,78,41,7,114,31,1, - 0,0,114,188,0,0,0,218,18,101,120,116,101,110,115,105, - 111,110,95,115,117,102,102,105,120,101,115,114,35,1,0,0, - 114,128,0,0,0,114,42,1,0,0,114,114,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, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,209, - 0,0,0,123,6,0,0,115,8,0,0,0,12,5,8,1, - 8,1,10,1,114,10,0,0,0,114,209,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,67, - 0,0,0,115,8,0,0,0,124,0,97,0,100,0,83,0, - 114,70,0,0,0,41,1,114,160,0,0,0,41,1,218,17, - 95,98,111,111,116,115,116,114,97,112,95,109,111,100,117,108, - 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,21,95,115,101,116,95,98,111,111,116,115,116,114,97,112, - 95,109,111,100,117,108,101,134,6,0,0,115,2,0,0,0, - 8,2,114,10,0,0,0,114,117,1,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,50,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,117,1,0,0,114,209,0, - 0,0,114,16,0,0,0,114,84,1,0,0,114,192,0,0, - 0,114,95,1,0,0,114,109,1,0,0,218,9,109,101,116, - 97,95,112,97,116,104,114,62,0,0,0,114,78,1,0,0, - 41,2,114,116,1,0,0,90,17,115,117,112,112,111,114,116, - 101,100,95,108,111,97,100,101,114,115,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,8,95,105,110,115,116, - 97,108,108,139,6,0,0,115,8,0,0,0,8,2,6,1, - 20,1,16,1,114,10,0,0,0,114,119,1,0,0,41,1, - 114,88,0,0,0,114,70,0,0,0,41,3,78,78,78,41, - 2,114,0,0,0,0,114,0,0,0,0,41,1,84,41,85, - 114,153,0,0,0,114,160,0,0,0,114,188,0,0,0,114, - 92,0,0,0,114,16,0,0,0,114,100,0,0,0,114,185, - 0,0,0,114,26,0,0,0,114,232,0,0,0,90,2,110, - 116,114,19,0,0,0,114,216,0,0,0,90,5,112,111,115, - 105,120,114,51,0,0,0,218,3,97,108,108,114,60,0,0, - 0,114,137,0,0,0,114,58,0,0,0,114,63,0,0,0, - 90,20,95,112,97,116,104,115,101,112,115,95,119,105,116,104, - 95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0,114,22,0,0, - 0,114,37,0,0,0,114,43,0,0,0,114,46,0,0,0, - 114,68,0,0,0,114,75,0,0,0,114,76,0,0,0,114, - 80,0,0,0,114,81,0,0,0,114,84,0,0,0,114,87, - 0,0,0,114,96,0,0,0,218,4,116,121,112,101,218,8, - 95,95,99,111,100,101,95,95,114,187,0,0,0,114,35,0, - 0,0,114,173,0,0,0,114,34,0,0,0,114,40,0,0, - 0,114,9,1,0,0,114,117,0,0,0,114,113,0,0,0, - 114,128,0,0,0,114,62,0,0,0,114,115,1,0,0,114, - 233,0,0,0,114,114,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, - 122,0,0,0,114,129,0,0,0,114,136,0,0,0,114,138, - 0,0,0,114,140,0,0,0,114,161,0,0,0,114,168,0, - 0,0,114,177,0,0,0,114,181,0,0,0,114,183,0,0, - 0,114,190,0,0,0,114,195,0,0,0,114,196,0,0,0, - 114,201,0,0,0,218,6,111,98,106,101,99,116,114,210,0, - 0,0,114,214,0,0,0,114,215,0,0,0,114,236,0,0, - 0,114,250,0,0,0,114,12,1,0,0,114,35,1,0,0, - 114,42,1,0,0,114,31,1,0,0,114,48,1,0,0,114, - 74,1,0,0,114,78,1,0,0,114,95,1,0,0,114,114, - 1,0,0,114,209,0,0,0,114,117,1,0,0,114,119,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,8,60,109,111,100,117,108,101,62, + 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,16, + 0,0,0,114,65,0,0,0,114,88,1,0,0,114,163,0, + 0,0,114,201,0,0,0,114,204,0,0,0,114,44,1,0, + 0,41,6,114,220,0,0,0,114,162,0,0,0,114,65,0, + 0,0,114,224,0,0,0,114,209,0,0,0,114,87,1,0, + 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, + 0,146,5,0,0,115,26,0,0,0,8,6,6,1,14,1, + 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, + 4,2,4,2,114,9,0,0,0,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, + 67,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, + 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, + 4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, + 0,0,0,32,32,32,32,114,7,0,0,0,114,228,0,0, + 0,170,5,0,0,115,14,0,0,0,6,8,2,2,4,254, + 12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124, + 0,105,0,124,1,164,1,142,1,83,0,41,4,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,78,41,3, + 90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,97, + 100,97,116,97,114,89,1,0,0,218,18,102,105,110,100,95, + 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, + 144,0,0,0,114,145,0,0,0,114,89,1,0,0,32,32, + 32,114,7,0,0,0,114,90,1,0,0,186,5,0,0,115, + 4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0, + 0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0,0,0, + 114,84,1,0,0,114,85,1,0,0,114,88,1,0,0,114, + 225,0,0,0,114,228,0,0,0,114,90,1,0,0,114,12, + 0,0,0,114,7,0,0,0,114,74,1,0,0,44,5,0, + 0,115,36,0,0,0,8,0,4,2,2,2,10,1,2,9, + 10,1,2,12,10,1,2,21,10,1,2,20,12,1,2,31, + 12,1,2,23,12,1,2,15,14,1,114,9,0,0,0,114, + 74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,112,0,0,0,103,0, + 125,3,124,2,68,0,93,16,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,4,124,3,124,0,95,1,124,1, + 112,27,100,3,124,0,95,2,116,3,124,0,106,2,131,1, + 115,43,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,3,0,0,0,51,0,0, + 0,115,24,0,0,0,129,0,124,0,93,7,125,1,124,1, + 136,0,102,2,86,0,1,0,113,2,100,0,83,0,114,69, + 0,0,0,114,12,0,0,0,41,3,114,5,0,0,0,114, + 41,1,0,0,114,163,0,0,0,32,32,128,114,7,0,0, + 0,114,8,0,0,0,215,5,0,0,115,4,0,0,0,6, + 128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41,11,114,190,0, + 0,0,218,8,95,108,111,97,100,101,114,115,114,65,0,0, + 0,114,86,0,0,0,114,67,0,0,0,114,19,0,0,0, + 114,82,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,6,114,143,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,211, + 0,0,0,114,163,0,0,0,32,32,32,32,32,64,114,7, + 0,0,0,114,235,0,0,0,209,5,0,0,115,20,0,0, + 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, + 1,8,1,12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93, + 1,0,0,114,20,1,0,0,32,114,7,0,0,0,114,75, + 1,0,0,225,5,0,0,114,81,0,0,0,114,9,0,0, + 0,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,4,0,0,0, + 67,0,0,0,115,54,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,124,0,160,3,124,1,161,1,125,2,124, + 2,100,2,117,0,114,19,100,2,103,0,102,2,83,0,124, + 2,106,4,124,2,106,5,112,25,103,0,102,2,83,0,41, + 3,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,122,101,70,105,108,101,70,105, + 110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,114, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, + 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, + 41,6,114,99,0,0,0,114,100,0,0,0,114,101,0,0, + 0,114,225,0,0,0,114,163,0,0,0,114,201,0,0,0, + 41,3,114,143,0,0,0,114,162,0,0,0,114,209,0,0, + 0,32,32,32,114,7,0,0,0,114,160,0,0,0,231,5, + 0,0,115,14,0,0,0,6,7,2,2,4,254,10,3,8, + 1,8,1,16,1,114,9,0,0,0,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,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,200,0,0,0,41,1, + 114,212,0,0,0,41,7,114,143,0,0,0,114,210,0,0, + 0,114,162,0,0,0,114,65,0,0,0,90,4,115,109,115, + 108,114,224,0,0,0,114,163,0,0,0,32,32,32,32,32, + 32,32,114,7,0,0,0,114,88,1,0,0,246,5,0,0, + 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, + 0,0,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,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,9,0,116,1,124,0,106,2,112,17,116, + 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, + 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, + 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, + 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, + 0,114,56,124,0,106,10,125,6,124,4,160,11,161,0,125, + 7,110,5,124,0,106,12,125,6,124,4,125,7,124,7,124, + 6,118,0,114,108,116,13,124,0,106,2,124,4,131,2,125, + 8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125,3,124,0,106,14,68, + 0,93,55,92,2,125,9,125,10,9,0,116,13,124,0,106, + 2,124,4,124,9,23,0,131,2,125,12,110,12,35,0,4, + 0,116,18,121,189,1,0,1,0,1,0,89,0,1,0,100, + 6,83,0,37,0,116,19,160,20,100,7,124,12,100,3,100, + 8,166,3,1,0,124,7,124,9,23,0,124,6,118,0,114, + 166,116,15,124,12,131,1,114,166,124,0,160,16,124,10,124, + 1,124,12,100,6,124,2,161,5,2,0,1,0,83,0,113, + 111,124,3,114,187,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,119,0,119, + 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,97,0,0,0,114,45,0,0,0,114, + 130,0,0,0,114,235,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, + 104,0,0,0,114,75,0,0,0,114,65,0,0,0,114,19, + 0,0,0,114,82,0,0,0,114,33,1,0,0,114,76,0, + 0,0,114,93,1,0,0,218,11,95,102,105,108,108,95,99, + 97,99,104,101,114,22,0,0,0,114,96,1,0,0,114,131, + 0,0,0,114,95,1,0,0,114,67,0,0,0,114,92,1, + 0,0,114,80,0,0,0,114,88,1,0,0,114,83,0,0, + 0,114,111,0,0,0,114,158,0,0,0,114,172,0,0,0, + 114,206,0,0,0,114,201,0,0,0,41,14,114,143,0,0, + 0,114,162,0,0,0,114,224,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,192,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,210,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, + 209,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,114,7,0,0,0,114,225,0,0,0,251,5,0,0, + 115,94,0,0,0,4,5,14,1,2,1,22,1,2,128,12, + 1,8,1,2,128,10,1,8,1,6,1,6,2,6,1,10, + 1,6,2,4,1,8,2,12,1,14,1,8,1,10,1,8, + 1,24,1,2,255,8,5,14,2,2,1,18,1,2,128,12, + 1,8,1,2,128,16,1,12,1,8,1,10,1,4,1,8, + 255,2,128,4,2,12,1,12,1,8,1,4,1,4,1,2, + 244,2,228,115,31,0,0,0,138,10,21,0,149,9,32,7, + 193,52,8,65,61,2,193,61,7,66,8,9,194,61,1,66, + 8,9,194,62,1,32,7,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,10,0,0,0,67,0, + 0,0,115,194,0,0,0,124,0,106,0,125,1,9,0,116, + 1,160,2,124,1,112,11,116,1,160,3,161,0,161,1,125, + 2,110,15,35,0,4,0,116,4,116,5,116,6,102,3,121, + 96,1,0,1,0,1,0,103,0,125,2,89,0,110,1,37, + 0,116,7,106,8,160,9,100,1,161,1,115,41,116,10,124, + 2,131,1,124,0,95,11,110,37,116,10,131,0,125,3,124, + 2,68,0,93,28,125,4,124,4,160,12,100,2,161,1,92, + 3,125,5,125,6,125,7,124,6,114,67,100,3,160,13,124, + 5,124,7,160,14,161,0,161,2,125,8,110,2,124,5,125, + 8,124,3,160,15,124,8,161,1,1,0,113,46,124,3,124, + 0,95,11,116,7,106,8,160,9,116,16,161,1,114,94,100, + 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100, + 6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0,114,88,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,83,0,0,0,115,20,0,0,0,104,0,124,0,93,6, + 125,1,124,1,160,0,161,0,146,2,113,2,83,0,114,12, + 0,0,0,41,1,114,131,0,0,0,41,2,114,5,0,0, + 0,90,2,102,110,32,32,114,7,0,0,0,114,14,0,0, + 0,75,6,0,0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100, + 105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0,0,114,27,0,0,0, + 114,94,1,0,0,114,95,1,0,0,114,126,0,0,0,114, + 89,0,0,0,114,131,0,0,0,218,3,97,100,100,114,28, + 0,0,0,114,96,1,0,0,41,9,114,143,0,0,0,114, + 65,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, + 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, + 116,101,110,116,115,114,67,1,0,0,114,141,0,0,0,114, + 51,1,0,0,114,41,1,0,0,90,8,110,101,119,95,110, + 97,109,101,32,32,32,32,32,32,32,32,32,114,7,0,0, + 0,114,98,1,0,0,46,6,0,0,115,42,0,0,0,6, + 2,2,1,20,1,2,128,18,1,8,3,2,128,12,3,12, + 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, + 1,12,1,20,1,4,255,2,233,115,13,0,0,0,132,9, + 14,0,142,12,28,7,193,32,1,28,7,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,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, + 4,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,4,0,0,0,19,0,0,0,115, + 36,0,0,0,116,0,124,0,131,1,115,10,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,4,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,78,41, + 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, + 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, + 7,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,87,6, + 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, + 0,0,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,78,114,12,0,0,0, + 41,5,114,220,0,0,0,114,97,1,0,0,114,102,1,0, + 0,114,220,0,0,0,114,97,1,0,0,96,96,32,64,64, + 114,7,0,0,0,218,9,112,97,116,104,95,104,111,111,107, + 77,6,0,0,115,4,0,0,0,14,10,4,6,114,9,0, + 0,0,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,3,0,0,0,67,0,0,0,114,64,1, + 0,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,89,0,0,0,114,65, + 0,0,0,114,20,1,0,0,32,114,7,0,0,0,114,65, + 1,0,0,95,6,0,0,114,58,1,0,0,114,9,0,0, + 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, + 114,101,112,114,95,95,114,69,0,0,0,41,15,114,149,0, + 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, + 0,114,235,0,0,0,114,75,1,0,0,114,166,0,0,0, + 114,228,0,0,0,114,160,0,0,0,114,88,1,0,0,114, + 225,0,0,0,114,98,1,0,0,114,233,0,0,0,114,103, + 1,0,0,114,65,1,0,0,114,12,0,0,0,114,7,0, + 0,0,114,91,1,0,0,200,5,0,0,115,24,0,0,0, + 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, + 8,51,2,31,10,1,12,17,114,9,0,0,0,114,91,1, + 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15, + 124,2,124,3,107,2,114,28,116,2,124,1,124,2,131,2, + 125,4,110,5,116,3,124,1,124,2,131,2,125,4,124,5, + 115,42,116,4,124,1,124,2,124,4,100,3,141,3,125,5, + 9,0,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,100,0,83,0,35,0,4,0,116,5,121,72,1,0, + 1,0,1,0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0, + 114,39,1,0,0,114,32,1,0,0,114,212,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,41,6,90,2,110,115, + 114,141,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,163,0,0,0,114, + 209,0,0,0,32,32,32,32,32,32,114,7,0,0,0,218, + 14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,101, + 6,0,0,115,40,0,0,0,10,2,10,1,4,1,4,1, + 8,1,8,1,12,1,10,2,4,1,14,1,2,1,8,1, + 8,1,8,1,12,1,2,128,12,1,6,2,2,128,2,254, + 115,15,0,0,0,171,16,61,0,189,7,65,7,7,193,8, + 1,65,7,7,114,108,1,0,0,99,0,0,0,0,0,0, + 0,0,0,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,102,2,125,1,116,5,116,6,102,2,125,2,124, + 0,124,1,124,2,103,3,83,0,41,2,122,95,82,101,116, + 117,114,110,115,32,97,32,108,105,115,116,32,111,102,32,102, + 105,108,101,45,98,97,115,101,100,32,109,111,100,117,108,101, + 32,108,111,97,100,101,114,115,46,10,10,32,32,32,32,69, + 97,99,104,32,105,116,101,109,32,105,115,32,97,32,116,117, + 112,108,101,32,40,108,111,97,100,101,114,44,32,115,117,102, + 102,105,120,101,115,41,46,10,32,32,32,32,78,41,7,114, + 28,1,0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,32,32,32,114,7,0,0,0,114,207,0,0,0,124,6, + 0,0,115,8,0,0,0,12,5,8,1,8,1,10,1,114, + 9,0,0,0,114,207,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,67,0,0,0,115,8, + 0,0,0,124,0,97,0,100,0,83,0,114,69,0,0,0, + 41,1,114,158,0,0,0,41,1,218,17,95,98,111,111,116, + 115,116,114,97,112,95,109,111,100,117,108,101,32,114,7,0, + 0,0,218,21,95,115,101,116,95,98,111,111,116,115,116,114, + 97,112,95,109,111,100,117,108,101,135,6,0,0,115,2,0, + 0,0,8,2,114,9,0,0,0,114,111,1,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,50,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,111,1,0,0,114, + 207,0,0,0,114,16,0,0,0,114,80,1,0,0,114,190, + 0,0,0,114,91,1,0,0,114,103,1,0,0,218,9,109, + 101,116,97,95,112,97,116,104,114,61,0,0,0,114,74,1, + 0,0,41,2,114,110,1,0,0,90,17,115,117,112,112,111, + 114,116,101,100,95,108,111,97,100,101,114,115,32,32,114,7, + 0,0,0,218,8,95,105,110,115,116,97,108,108,140,6,0, + 0,115,8,0,0,0,8,2,6,1,20,1,16,1,114,9, + 0,0,0,114,113,1,0,0,41,1,114,87,0,0,0,114, + 69,0,0,0,41,3,78,78,78,41,2,114,0,0,0,0, + 114,0,0,0,0,41,1,84,41,85,114,151,0,0,0,114, + 158,0,0,0,114,186,0,0,0,114,91,0,0,0,114,16, + 0,0,0,114,99,0,0,0,114,183,0,0,0,114,26,0, + 0,0,114,230,0,0,0,90,2,110,116,114,19,0,0,0, + 114,214,0,0,0,90,5,112,111,115,105,120,114,51,0,0, + 0,218,3,97,108,108,114,59,0,0,0,114,136,0,0,0, + 114,57,0,0,0,114,62,0,0,0,90,20,95,112,97,116, + 104,115,101,112,115,95,119,105,116,104,95,99,111,108,111,110, + 114,29,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,28,0,0, + 0,114,30,0,0,0,114,22,0,0,0,114,37,0,0,0, + 114,43,0,0,0,114,46,0,0,0,114,67,0,0,0,114, + 73,0,0,0,114,75,0,0,0,114,79,0,0,0,114,80, + 0,0,0,114,83,0,0,0,114,86,0,0,0,114,95,0, + 0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,101, + 95,95,114,185,0,0,0,114,35,0,0,0,114,171,0,0, + 0,114,34,0,0,0,114,40,0,0,0,114,7,1,0,0, + 114,116,0,0,0,114,112,0,0,0,114,127,0,0,0,114, + 61,0,0,0,114,109,1,0,0,114,231,0,0,0,114,113, + 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,121,0,0,0,114,128, + 0,0,0,114,135,0,0,0,114,137,0,0,0,114,139,0, + 0,0,114,159,0,0,0,114,166,0,0,0,114,175,0,0, + 0,114,179,0,0,0,114,181,0,0,0,114,188,0,0,0, + 114,193,0,0,0,114,194,0,0,0,114,199,0,0,0,218, + 6,111,98,106,101,99,116,114,208,0,0,0,114,212,0,0, + 0,114,213,0,0,0,114,234,0,0,0,114,248,0,0,0, + 114,10,1,0,0,114,32,1,0,0,114,39,1,0,0,114, + 28,1,0,0,114,44,1,0,0,114,70,1,0,0,114,74, + 1,0,0,114,91,1,0,0,114,108,1,0,0,114,207,0, + 0,0,114,111,1,0,0,114,113,1,0,0,114,12,0,0, + 0,114,7,0,0,0,218,8,60,109,111,100,117,108,101,62, 1,0,0,0,115,180,0,0,0,4,0,4,22,8,3,8, 1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8, 2,4,3,10,1,6,2,22,2,8,1,8,1,10,1,14, 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, - 127,16,33,12,1,4,2,4,1,6,2,4,1,10,1,8, + 127,16,34,12,1,4,2,4,1,6,2,4,1,10,1,8, 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, 127,14,17,18,50,18,45,18,25,14,53,14,63,14,49,0, - 127,14,29,0,127,10,30,8,23,8,11,12,5,114,10,0, + 127,14,29,0,127,10,30,8,23,8,11,12,5,114,9,0, 0,0, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 988d938f10b861..63084b7e57d251 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -70,266 +70,264 @@ const unsigned char _Py_M__zipimport[] = { 0,41,2,114,3,0,0,0,78,41,3,218,8,95,95,110, 97,109,101,95,95,218,10,95,95,109,111,100,117,108,101,95, 95,218,12,95,95,113,117,97,108,110,97,109,101,95,95,169, - 0,114,9,0,0,0,114,9,0,0,0,250,18,60,102,114, - 111,122,101,110,32,122,105,112,105,109,112,111,114,116,62,114, - 3,0,0,0,34,0,0,0,115,4,0,0,0,8,0,4, - 1,243,0,0,0,0,233,22,0,0,0,115,4,0,0,0, - 80,75,5,6,105,255,255,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,126, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, - 2,100,3,132,0,90,4,100,29,100,5,100,6,132,1,90, - 5,100,29,100,7,100,8,132,1,90,6,100,29,100,9,100, - 10,132,1,90,7,100,11,100,12,132,0,90,8,100,13,100, - 14,132,0,90,9,100,15,100,16,132,0,90,10,100,17,100, - 18,132,0,90,11,100,19,100,20,132,0,90,12,100,21,100, - 22,132,0,90,13,100,23,100,24,132,0,90,14,100,25,100, - 26,132,0,90,15,100,27,100,28,132,0,90,16,100,4,83, - 0,41,30,114,4,0,0,0,97,255,1,0,0,122,105,112, - 105,109,112,111,114,116,101,114,40,97,114,99,104,105,118,101, - 112,97,116,104,41,32,45,62,32,122,105,112,105,109,112,111, - 114,116,101,114,32,111,98,106,101,99,116,10,10,32,32,32, - 32,67,114,101,97,116,101,32,97,32,110,101,119,32,122,105, - 112,105,109,112,111,114,116,101,114,32,105,110,115,116,97,110, - 99,101,46,32,39,97,114,99,104,105,118,101,112,97,116,104, - 39,32,109,117,115,116,32,98,101,32,97,32,112,97,116,104, - 32,116,111,10,32,32,32,32,97,32,122,105,112,102,105,108, - 101,44,32,111,114,32,116,111,32,97,32,115,112,101,99,105, - 102,105,99,32,112,97,116,104,32,105,110,115,105,100,101,32, - 97,32,122,105,112,102,105,108,101,46,32,70,111,114,32,101, - 120,97,109,112,108,101,44,32,105,116,32,99,97,110,32,98, - 101,10,32,32,32,32,39,47,116,109,112,47,109,121,105,109, - 112,111,114,116,46,122,105,112,39,44,32,111,114,32,39,47, - 116,109,112,47,109,121,105,109,112,111,114,116,46,122,105,112, - 47,109,121,100,105,114,101,99,116,111,114,121,39,44,32,105, - 102,32,109,121,100,105,114,101,99,116,111,114,121,32,105,115, - 32,97,10,32,32,32,32,118,97,108,105,100,32,100,105,114, - 101,99,116,111,114,121,32,105,110,115,105,100,101,32,116,104, - 101,32,97,114,99,104,105,118,101,46,10,10,32,32,32,32, - 39,90,105,112,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,39,97,114, - 99,104,105,118,101,112,97,116,104,39,32,100,111,101,115,110, - 39,116,32,112,111,105,110,116,32,116,111,32,97,32,118,97, - 108,105,100,32,90,105,112,10,32,32,32,32,97,114,99,104, - 105,118,101,46,10,10,32,32,32,32,84,104,101,32,39,97, - 114,99,104,105,118,101,39,32,97,116,116,114,105,98,117,116, - 101,32,111,102,32,122,105,112,105,109,112,111,114,116,101,114, - 32,111,98,106,101,99,116,115,32,99,111,110,116,97,105,110, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,10,32,32,32,32,122,105,112,102,105,108,101,32,116,97, - 114,103,101,116,101,100,46,10,32,32,32,32,99,2,0,0, - 0,0,0,0,0,0,0,0,0,9,0,0,0,67,0,0, - 0,115,40,1,0,0,116,0,124,1,116,1,131,2,115,14, - 100,1,100,0,108,2,125,2,124,2,160,3,124,1,161,1, - 125,1,124,1,115,22,116,4,100,2,124,1,100,3,141,2, - 130,1,116,5,114,30,124,1,160,6,116,5,116,7,161,2, - 125,1,103,0,125,3,9,0,9,0,116,8,160,9,124,1, - 161,1,125,4,110,36,35,0,4,0,116,10,116,11,102,2, - 121,147,1,0,1,0,1,0,116,8,160,12,124,1,161,1, - 92,2,125,5,125,6,124,5,124,1,107,2,114,66,116,4, - 100,5,124,1,100,3,141,2,130,1,124,5,125,1,124,3, - 160,13,124,6,161,1,1,0,89,0,110,15,37,0,124,4, - 106,14,100,6,64,0,100,7,107,3,114,89,116,4,100,5, - 124,1,100,3,141,2,130,1,113,91,113,33,9,0,116,15, - 124,1,25,0,125,7,110,18,35,0,4,0,116,16,121,146, - 1,0,1,0,1,0,116,17,124,1,131,1,125,7,124,7, - 116,15,124,1,60,0,89,0,110,1,37,0,124,7,124,0, - 95,18,124,1,124,0,95,19,116,8,106,20,124,3,100,0, - 100,0,100,8,133,3,25,0,142,0,124,0,95,21,124,0, - 106,21,114,144,124,0,4,0,106,21,116,7,55,0,2,0, - 95,21,100,0,83,0,100,0,83,0,119,0,119,0,41,9, - 78,114,0,0,0,0,122,21,97,114,99,104,105,118,101,32, - 112,97,116,104,32,105,115,32,101,109,112,116,121,169,1,218, - 4,112,97,116,104,84,122,14,110,111,116,32,97,32,90,105, - 112,32,102,105,108,101,105,0,240,0,0,105,0,128,0,0, - 233,255,255,255,255,41,22,218,10,105,115,105,110,115,116,97, - 110,99,101,218,3,115,116,114,218,2,111,115,90,8,102,115, - 100,101,99,111,100,101,114,3,0,0,0,218,12,97,108,116, - 95,112,97,116,104,95,115,101,112,218,7,114,101,112,108,97, - 99,101,218,8,112,97,116,104,95,115,101,112,218,19,95,98, - 111,111,116,115,116,114,97,112,95,101,120,116,101,114,110,97, - 108,90,10,95,112,97,116,104,95,115,116,97,116,218,7,79, - 83,69,114,114,111,114,218,10,86,97,108,117,101,69,114,114, - 111,114,90,11,95,112,97,116,104,95,115,112,108,105,116,218, - 6,97,112,112,101,110,100,90,7,115,116,95,109,111,100,101, - 218,20,95,122,105,112,95,100,105,114,101,99,116,111,114,121, - 95,99,97,99,104,101,218,8,75,101,121,69,114,114,111,114, - 218,15,95,114,101,97,100,95,100,105,114,101,99,116,111,114, - 121,218,6,95,102,105,108,101,115,218,7,97,114,99,104,105, - 118,101,218,10,95,112,97,116,104,95,106,111,105,110,218,6, - 112,114,101,102,105,120,41,8,218,4,115,101,108,102,114,14, - 0,0,0,114,18,0,0,0,114,32,0,0,0,90,2,115, - 116,90,7,100,105,114,110,97,109,101,90,8,98,97,115,101, - 110,97,109,101,218,5,102,105,108,101,115,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,8,95,95,105,110, - 105,116,95,95,64,0,0,0,115,76,0,0,0,10,1,8, - 1,10,1,4,1,12,1,4,1,12,1,4,2,2,1,2, - 1,12,1,2,128,16,1,14,3,8,1,12,1,4,1,14, - 1,2,128,14,3,12,2,2,1,2,240,2,18,10,1,2, - 128,12,1,8,1,12,1,2,128,6,1,6,1,22,2,6, - 1,18,1,4,255,2,249,2,239,115,33,0,0,0,162,5, - 40,0,168,33,65,11,7,193,28,4,65,33,0,193,33,15, - 65,50,7,194,18,1,65,50,7,194,19,1,65,11,7,122, - 20,122,105,112,105,109,112,111,114,116,101,114,46,95,95,105, - 110,105,116,95,95,78,99,3,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,115,90,0,0,0, - 116,0,160,1,100,1,116,2,161,2,1,0,116,3,124,0, - 124,1,131,2,125,3,124,3,100,2,117,1,114,19,124,0, - 103,0,102,2,83,0,116,4,124,0,124,1,131,2,125,4, - 116,5,124,0,124,4,131,2,114,41,100,2,124,0,106,6, - 155,0,116,7,155,0,124,4,155,0,157,3,103,1,102,2, - 83,0,100,2,103,0,102,2,83,0,41,3,97,47,2,0, - 0,102,105,110,100,95,108,111,97,100,101,114,40,102,117,108, - 108,110,97,109,101,44,32,112,97,116,104,61,78,111,110,101, - 41,32,45,62,32,115,101,108,102,44,32,115,116,114,32,111, - 114,32,78,111,110,101,46,10,10,32,32,32,32,32,32,32, - 32,83,101,97,114,99,104,32,102,111,114,32,97,32,109,111, - 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, - 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102, - 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101, - 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, - 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111, - 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109, - 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104, - 101,32,122,105,112,105,109,112,111,114,116,101,114,10,32,32, - 32,32,32,32,32,32,105,110,115,116,97,110,99,101,32,105, - 116,115,101,108,102,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,119,97,115,32,102,111,117,110,100,44,32,97, - 32,115,116,114,105,110,103,32,99,111,110,116,97,105,110,105, - 110,103,32,116,104,101,10,32,32,32,32,32,32,32,32,102, - 117,108,108,32,112,97,116,104,32,110,97,109,101,32,105,102, - 32,105,116,39,115,32,112,111,115,115,105,98,108,121,32,97, - 32,112,111,114,116,105,111,110,32,111,102,32,97,32,110,97, - 109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,44, - 10,32,32,32,32,32,32,32,32,111,114,32,78,111,110,101, - 32,111,116,104,101,114,119,105,115,101,46,32,84,104,101,32, - 111,112,116,105,111,110,97,108,32,39,112,97,116,104,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,105,103,110,111, - 114,101,100,32,45,45,32,105,116,39,115,10,32,32,32,32, - 32,32,32,32,116,104,101,114,101,32,102,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,105,109,112,111,114,116,101,114,32,112,114, - 111,116,111,99,111,108,46,10,10,32,32,32,32,32,32,32, - 32,68,101,112,114,101,99,97,116,101,100,32,115,105,110,99, - 101,32,80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32, - 122,102,122,105,112,105,109,112,111,114,116,101,114,46,102,105, - 110,100,95,108,111,97,100,101,114,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,41,8,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,16,95,103,101,116,95,109,111,100,117,108,101,95,105,110, - 102,111,218,16,95,103,101,116,95,109,111,100,117,108,101,95, - 112,97,116,104,218,7,95,105,115,95,100,105,114,114,30,0, - 0,0,114,21,0,0,0,41,5,114,33,0,0,0,218,8, - 102,117,108,108,110,97,109,101,114,14,0,0,0,218,2,109, - 105,218,7,109,111,100,112,97,116,104,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,11,102,105,110,100,95, - 108,111,97,100,101,114,110,0,0,0,115,20,0,0,0,6, - 12,2,2,4,254,10,3,8,1,8,2,10,7,10,1,24, - 4,8,2,114,11,0,0,0,122,23,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,108,111,97,100,101, - 114,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,67,0,0,0,115,28,0,0,0,116,0,160,1,100, - 1,116,2,161,2,1,0,124,0,160,3,124,1,124,2,161, - 2,100,2,25,0,83,0,41,4,97,203,1,0,0,102,105, - 110,100,95,109,111,100,117,108,101,40,102,117,108,108,110,97, - 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, - 62,32,115,101,108,102,32,111,114,32,78,111,110,101,46,10, - 10,32,32,32,32,32,32,32,32,83,101,97,114,99,104,32, - 102,111,114,32,97,32,109,111,100,117,108,101,32,115,112,101, - 99,105,102,105,101,100,32,98,121,32,39,102,117,108,108,110, - 97,109,101,39,46,32,39,102,117,108,108,110,97,109,101,39, - 32,109,117,115,116,32,98,101,32,116,104,101,10,32,32,32, - 32,32,32,32,32,102,117,108,108,121,32,113,117,97,108,105, - 102,105,101,100,32,40,100,111,116,116,101,100,41,32,109,111, - 100,117,108,101,32,110,97,109,101,46,32,73,116,32,114,101, - 116,117,114,110,115,32,116,104,101,32,122,105,112,105,109,112, - 111,114,116,101,114,10,32,32,32,32,32,32,32,32,105,110, - 115,116,97,110,99,101,32,105,116,115,101,108,102,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,119,97,115,32, - 102,111,117,110,100,44,32,111,114,32,78,111,110,101,32,105, - 102,32,105,116,32,119,97,115,110,39,116,46,10,32,32,32, - 32,32,32,32,32,84,104,101,32,111,112,116,105,111,110,97, - 108,32,39,112,97,116,104,39,32,97,114,103,117,109,101,110, - 116,32,105,115,32,105,103,110,111,114,101,100,32,45,45,32, - 105,116,39,115,32,116,104,101,114,101,32,102,111,114,32,99, - 111,109,112,97,116,105,98,105,108,105,116,121,10,32,32,32, - 32,32,32,32,32,119,105,116,104,32,116,104,101,32,105,109, - 112,111,114,116,101,114,32,112,114,111,116,111,99,111,108,46, - 10,10,32,32,32,32,32,32,32,32,68,101,112,114,101,99, - 97,116,101,100,32,115,105,110,99,101,32,80,121,116,104,111, - 110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,102,122,105,112,105,109, - 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, - 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, - 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, - 100,114,0,0,0,0,78,41,4,114,36,0,0,0,114,37, - 0,0,0,114,38,0,0,0,114,45,0,0,0,41,3,114, - 33,0,0,0,114,42,0,0,0,114,14,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,11,102, - 105,110,100,95,109,111,100,117,108,101,147,0,0,0,115,8, - 0,0,0,6,11,2,2,4,254,16,3,114,11,0,0,0, - 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,99,3,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,67,0,0,0,115,108, - 0,0,0,116,0,124,0,124,1,131,2,125,3,124,3,100, - 1,117,1,114,17,116,1,160,2,124,1,124,0,124,3,100, - 2,166,3,83,0,116,3,124,0,124,1,131,2,125,4,116, - 4,124,0,124,4,131,2,114,52,124,0,106,5,155,0,116, - 6,155,0,124,4,155,0,157,3,125,5,116,1,160,7,124, - 1,100,1,100,3,100,4,166,3,125,6,124,6,106,8,160, - 9,124,5,161,1,1,0,124,6,83,0,100,1,83,0,41, - 5,122,107,67,114,101,97,116,101,32,97,32,77,111,100,117, - 108,101,83,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,78,111,110,101,32,105,102,32,116,104,101,32,109,111, - 100,117,108,101,32,99,97,110,110,111,116,32,98,101,32,102, - 111,117,110,100,46,10,32,32,32,32,32,32,32,32,78,41, - 1,218,10,105,115,95,112,97,99,107,97,103,101,84,41,3, - 218,4,110,97,109,101,90,6,108,111,97,100,101,114,114,47, - 0,0,0,41,10,114,39,0,0,0,218,10,95,98,111,111, - 116,115,116,114,97,112,90,16,115,112,101,99,95,102,114,111, - 109,95,108,111,97,100,101,114,114,40,0,0,0,114,41,0, - 0,0,114,30,0,0,0,114,21,0,0,0,90,10,77,111, - 100,117,108,101,83,112,101,99,90,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,114,25,0,0,0,41,7,114,33,0,0,0, - 114,42,0,0,0,90,6,116,97,114,103,101,116,90,11,109, - 111,100,117,108,101,95,105,110,102,111,114,44,0,0,0,114, - 14,0,0,0,90,4,115,112,101,99,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,9,102,105,110,100,95, - 115,112,101,99,163,0,0,0,115,24,0,0,0,10,5,8, - 1,16,1,10,7,10,1,18,4,8,1,2,1,6,255,12, - 2,4,1,4,2,114,11,0,0,0,122,21,122,105,112,105, - 109,112,111,114,116,101,114,46,102,105,110,100,95,115,112,101, - 99,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,67,0,0,0,115,20,0,0,0,116,0,124,0,124, - 1,131,2,92,3,125,2,125,3,125,4,124,2,83,0,41, - 2,122,166,103,101,116,95,99,111,100,101,40,102,117,108,108, - 110,97,109,101,41,32,45,62,32,99,111,100,101,32,111,98, - 106,101,99,116,46,10,10,32,32,32,32,32,32,32,32,82, - 101,116,117,114,110,32,116,104,101,32,99,111,100,101,32,111, - 98,106,101,99,116,32,102,111,114,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,46,32, - 82,97,105,115,101,32,90,105,112,73,109,112,111,114,116,69, - 114,114,111,114,10,32,32,32,32,32,32,32,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,99,111,117,108,100, - 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, - 10,32,32,32,32,32,32,32,32,78,169,1,218,16,95,103, - 101,116,95,109,111,100,117,108,101,95,99,111,100,101,169,5, - 114,33,0,0,0,114,42,0,0,0,218,4,99,111,100,101, - 218,9,105,115,112,97,99,107,97,103,101,114,44,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 0,250,18,60,102,114,111,122,101,110,32,122,105,112,105,109, + 112,111,114,116,62,114,3,0,0,0,34,0,0,0,115,4, + 0,0,0,8,0,4,1,243,0,0,0,0,233,22,0,0, + 0,115,4,0,0,0,80,75,5,6,105,255,255,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 64,0,0,0,115,126,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,100,3,132,0,90,4,100,29,100, + 5,100,6,132,1,90,5,100,29,100,7,100,8,132,1,90, + 6,100,29,100,9,100,10,132,1,90,7,100,11,100,12,132, + 0,90,8,100,13,100,14,132,0,90,9,100,15,100,16,132, + 0,90,10,100,17,100,18,132,0,90,11,100,19,100,20,132, + 0,90,12,100,21,100,22,132,0,90,13,100,23,100,24,132, + 0,90,14,100,25,100,26,132,0,90,15,100,27,100,28,132, + 0,90,16,100,4,83,0,41,30,114,4,0,0,0,97,255, + 1,0,0,122,105,112,105,109,112,111,114,116,101,114,40,97, + 114,99,104,105,118,101,112,97,116,104,41,32,45,62,32,122, + 105,112,105,109,112,111,114,116,101,114,32,111,98,106,101,99, + 116,10,10,32,32,32,32,67,114,101,97,116,101,32,97,32, + 110,101,119,32,122,105,112,105,109,112,111,114,116,101,114,32, + 105,110,115,116,97,110,99,101,46,32,39,97,114,99,104,105, + 118,101,112,97,116,104,39,32,109,117,115,116,32,98,101,32, + 97,32,112,97,116,104,32,116,111,10,32,32,32,32,97,32, + 122,105,112,102,105,108,101,44,32,111,114,32,116,111,32,97, + 32,115,112,101,99,105,102,105,99,32,112,97,116,104,32,105, + 110,115,105,100,101,32,97,32,122,105,112,102,105,108,101,46, + 32,70,111,114,32,101,120,97,109,112,108,101,44,32,105,116, + 32,99,97,110,32,98,101,10,32,32,32,32,39,47,116,109, + 112,47,109,121,105,109,112,111,114,116,46,122,105,112,39,44, + 32,111,114,32,39,47,116,109,112,47,109,121,105,109,112,111, + 114,116,46,122,105,112,47,109,121,100,105,114,101,99,116,111, + 114,121,39,44,32,105,102,32,109,121,100,105,114,101,99,116, + 111,114,121,32,105,115,32,97,10,32,32,32,32,118,97,108, + 105,100,32,100,105,114,101,99,116,111,114,121,32,105,110,115, + 105,100,101,32,116,104,101,32,97,114,99,104,105,118,101,46, + 10,10,32,32,32,32,39,90,105,112,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,39,97,114,99,104,105,118,101,112,97,116,104,39, + 32,100,111,101,115,110,39,116,32,112,111,105,110,116,32,116, + 111,32,97,32,118,97,108,105,100,32,90,105,112,10,32,32, + 32,32,97,114,99,104,105,118,101,46,10,10,32,32,32,32, + 84,104,101,32,39,97,114,99,104,105,118,101,39,32,97,116, + 116,114,105,98,117,116,101,32,111,102,32,122,105,112,105,109, + 112,111,114,116,101,114,32,111,98,106,101,99,116,115,32,99, + 111,110,116,97,105,110,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,116,104,101,10,32,32,32,32,122,105,112,102, + 105,108,101,32,116,97,114,103,101,116,101,100,46,10,32,32, + 32,32,99,2,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,67,0,0,0,115,40,1,0,0,116,0,124,1, + 116,1,131,2,115,14,100,1,100,0,108,2,125,2,124,2, + 160,3,124,1,161,1,125,1,124,1,115,22,116,4,100,2, + 124,1,100,3,141,2,130,1,116,5,114,30,124,1,160,6, + 116,5,116,7,161,2,125,1,103,0,125,3,9,0,9,0, + 116,8,160,9,124,1,161,1,125,4,110,36,35,0,4,0, + 116,10,116,11,102,2,121,147,1,0,1,0,1,0,116,8, + 160,12,124,1,161,1,92,2,125,5,125,6,124,5,124,1, + 107,2,114,66,116,4,100,5,124,1,100,3,141,2,130,1, + 124,5,125,1,124,3,160,13,124,6,161,1,1,0,89,0, + 110,15,37,0,124,4,106,14,100,6,64,0,100,7,107,3, + 114,89,116,4,100,5,124,1,100,3,141,2,130,1,113,91, + 113,33,9,0,116,15,124,1,25,0,125,7,110,18,35,0, + 4,0,116,16,121,146,1,0,1,0,1,0,116,17,124,1, + 131,1,125,7,124,7,116,15,124,1,60,0,89,0,110,1, + 37,0,124,7,124,0,95,18,124,1,124,0,95,19,116,8, + 106,20,124,3,100,0,100,0,100,8,133,3,25,0,142,0, + 124,0,95,21,124,0,106,21,114,144,124,0,4,0,106,21, + 116,7,55,0,2,0,95,21,100,0,83,0,100,0,83,0, + 119,0,119,0,41,9,78,114,0,0,0,0,122,21,97,114, + 99,104,105,118,101,32,112,97,116,104,32,105,115,32,101,109, + 112,116,121,169,1,218,4,112,97,116,104,84,122,14,110,111, + 116,32,97,32,90,105,112,32,102,105,108,101,105,0,240,0, + 0,105,0,128,0,0,233,255,255,255,255,41,22,218,10,105, + 115,105,110,115,116,97,110,99,101,218,3,115,116,114,218,2, + 111,115,90,8,102,115,100,101,99,111,100,101,114,3,0,0, + 0,218,12,97,108,116,95,112,97,116,104,95,115,101,112,218, + 7,114,101,112,108,97,99,101,218,8,112,97,116,104,95,115, + 101,112,218,19,95,98,111,111,116,115,116,114,97,112,95,101, + 120,116,101,114,110,97,108,90,10,95,112,97,116,104,95,115, + 116,97,116,218,7,79,83,69,114,114,111,114,218,10,86,97, + 108,117,101,69,114,114,111,114,90,11,95,112,97,116,104,95, + 115,112,108,105,116,218,6,97,112,112,101,110,100,90,7,115, + 116,95,109,111,100,101,218,20,95,122,105,112,95,100,105,114, + 101,99,116,111,114,121,95,99,97,99,104,101,218,8,75,101, + 121,69,114,114,111,114,218,15,95,114,101,97,100,95,100,105, + 114,101,99,116,111,114,121,218,6,95,102,105,108,101,115,218, + 7,97,114,99,104,105,118,101,218,10,95,112,97,116,104,95, + 106,111,105,110,218,6,112,114,101,102,105,120,41,8,218,4, + 115,101,108,102,114,14,0,0,0,114,18,0,0,0,114,32, + 0,0,0,90,2,115,116,90,7,100,105,114,110,97,109,101, + 90,8,98,97,115,101,110,97,109,101,218,5,102,105,108,101, + 115,32,32,32,32,32,32,32,32,114,10,0,0,0,218,8, + 95,95,105,110,105,116,95,95,64,0,0,0,115,76,0,0, + 0,10,1,8,1,10,1,4,1,12,1,4,1,12,1,4, + 2,2,1,2,1,12,1,2,128,16,1,14,3,8,1,12, + 1,4,1,14,1,2,128,14,3,12,2,2,1,2,240,2, + 18,10,1,2,128,12,1,8,1,12,1,2,128,6,1,6, + 1,22,2,6,1,18,1,4,255,2,249,2,239,115,33,0, + 0,0,162,5,40,0,168,33,65,11,7,193,28,4,65,33, + 0,193,33,15,65,50,7,194,18,1,65,50,7,194,19,1, + 65,11,7,122,20,122,105,112,105,109,112,111,114,116,101,114, + 46,95,95,105,110,105,116,95,95,78,99,3,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 90,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 116,3,124,0,124,1,131,2,125,3,124,3,100,2,117,1, + 114,19,124,0,103,0,102,2,83,0,116,4,124,0,124,1, + 131,2,125,4,116,5,124,0,124,4,131,2,114,41,100,2, + 124,0,106,6,155,0,116,7,155,0,124,4,155,0,157,3, + 103,1,102,2,83,0,100,2,103,0,102,2,83,0,41,3, + 97,47,2,0,0,102,105,110,100,95,108,111,97,100,101,114, + 40,102,117,108,108,110,97,109,101,44,32,112,97,116,104,61, + 78,111,110,101,41,32,45,62,32,115,101,108,102,44,32,115, + 116,114,32,111,114,32,78,111,110,101,46,10,10,32,32,32, + 32,32,32,32,32,83,101,97,114,99,104,32,102,111,114,32, + 97,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, + 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, + 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, + 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, + 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, + 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, + 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, + 115,32,116,104,101,32,122,105,112,105,109,112,111,114,116,101, + 114,10,32,32,32,32,32,32,32,32,105,110,115,116,97,110, + 99,101,32,105,116,115,101,108,102,32,105,102,32,116,104,101, + 32,109,111,100,117,108,101,32,119,97,115,32,102,111,117,110, + 100,44,32,97,32,115,116,114,105,110,103,32,99,111,110,116, + 97,105,110,105,110,103,32,116,104,101,10,32,32,32,32,32, + 32,32,32,102,117,108,108,32,112,97,116,104,32,110,97,109, + 101,32,105,102,32,105,116,39,115,32,112,111,115,115,105,98, + 108,121,32,97,32,112,111,114,116,105,111,110,32,111,102,32, + 97,32,110,97,109,101,115,112,97,99,101,32,112,97,99,107, + 97,103,101,44,10,32,32,32,32,32,32,32,32,111,114,32, + 78,111,110,101,32,111,116,104,101,114,119,105,115,101,46,32, + 84,104,101,32,111,112,116,105,111,110,97,108,32,39,112,97, + 116,104,39,32,97,114,103,117,109,101,110,116,32,105,115,32, + 105,103,110,111,114,101,100,32,45,45,32,105,116,39,115,10, + 32,32,32,32,32,32,32,32,116,104,101,114,101,32,102,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,105,109,112,111,114,116,101, + 114,32,112,114,111,116,111,99,111,108,46,10,10,32,32,32, + 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, + 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, + 48,46,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,32,32,32,32, + 32,32,32,32,122,102,122,105,112,105,109,112,111,114,116,101, + 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,41,8,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,16,95,103,101,116,95,109,111,100,117,108, + 101,95,105,110,102,111,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,112,97,116,104,218,7,95,105,115,95,100,105, + 114,114,30,0,0,0,114,21,0,0,0,41,5,114,33,0, + 0,0,218,8,102,117,108,108,110,97,109,101,114,14,0,0, + 0,218,2,109,105,218,7,109,111,100,112,97,116,104,32,32, + 32,32,32,114,10,0,0,0,218,11,102,105,110,100,95,108, + 111,97,100,101,114,110,0,0,0,115,20,0,0,0,6,12, + 2,2,4,254,10,3,8,1,8,2,10,7,10,1,24,4, + 8,2,114,11,0,0,0,122,23,122,105,112,105,109,112,111, + 114,116,101,114,46,102,105,110,100,95,108,111,97,100,101,114, + 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,28,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, + 100,2,25,0,83,0,41,4,97,203,1,0,0,102,105,110, + 100,95,109,111,100,117,108,101,40,102,117,108,108,110,97,109, + 101,44,32,112,97,116,104,61,78,111,110,101,41,32,45,62, + 32,115,101,108,102,32,111,114,32,78,111,110,101,46,10,10, + 32,32,32,32,32,32,32,32,83,101,97,114,99,104,32,102, + 111,114,32,97,32,109,111,100,117,108,101,32,115,112,101,99, + 105,102,105,101,100,32,98,121,32,39,102,117,108,108,110,97, + 109,101,39,46,32,39,102,117,108,108,110,97,109,101,39,32, + 109,117,115,116,32,98,101,32,116,104,101,10,32,32,32,32, + 32,32,32,32,102,117,108,108,121,32,113,117,97,108,105,102, + 105,101,100,32,40,100,111,116,116,101,100,41,32,109,111,100, + 117,108,101,32,110,97,109,101,46,32,73,116,32,114,101,116, + 117,114,110,115,32,116,104,101,32,122,105,112,105,109,112,111, + 114,116,101,114,10,32,32,32,32,32,32,32,32,105,110,115, + 116,97,110,99,101,32,105,116,115,101,108,102,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,119,97,115,32,102, + 111,117,110,100,44,32,111,114,32,78,111,110,101,32,105,102, + 32,105,116,32,119,97,115,110,39,116,46,10,32,32,32,32, + 32,32,32,32,84,104,101,32,111,112,116,105,111,110,97,108, + 32,39,112,97,116,104,39,32,97,114,103,117,109,101,110,116, + 32,105,115,32,105,103,110,111,114,101,100,32,45,45,32,105, + 116,39,115,32,116,104,101,114,101,32,102,111,114,32,99,111, + 109,112,97,116,105,98,105,108,105,116,121,10,32,32,32,32, + 32,32,32,32,119,105,116,104,32,116,104,101,32,105,109,112, + 111,114,116,101,114,32,112,114,111,116,111,99,111,108,46,10, + 10,32,32,32,32,32,32,32,32,68,101,112,114,101,99,97, + 116,101,100,32,115,105,110,99,101,32,80,121,116,104,111,110, + 32,51,46,49,48,46,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, + 32,32,32,32,32,32,32,32,122,102,122,105,112,105,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 114,0,0,0,0,78,41,4,114,36,0,0,0,114,37,0, + 0,0,114,38,0,0,0,114,45,0,0,0,41,3,114,33, + 0,0,0,114,42,0,0,0,114,14,0,0,0,32,32,32, + 114,10,0,0,0,218,11,102,105,110,100,95,109,111,100,117, + 108,101,147,0,0,0,115,8,0,0,0,6,11,2,2,4, + 254,16,3,114,11,0,0,0,122,23,122,105,112,105,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,3,0,0,0,0,0,0,0,0,0,0,0,6,0, + 0,0,67,0,0,0,115,108,0,0,0,116,0,124,0,124, + 1,131,2,125,3,124,3,100,1,117,1,114,17,116,1,160, + 2,124,1,124,0,124,3,100,2,166,3,83,0,116,3,124, + 0,124,1,131,2,125,4,116,4,124,0,124,4,131,2,114, + 52,124,0,106,5,155,0,116,6,155,0,124,4,155,0,157, + 3,125,5,116,1,160,7,124,1,100,1,100,3,100,4,166, + 3,125,6,124,6,106,8,160,9,124,5,161,1,1,0,124, + 6,83,0,100,1,83,0,41,5,122,107,67,114,101,97,116, + 101,32,97,32,77,111,100,117,108,101,83,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,78,111,110,101,32,105, + 102,32,116,104,101,32,109,111,100,117,108,101,32,99,97,110, + 110,111,116,32,98,101,32,102,111,117,110,100,46,10,32,32, + 32,32,32,32,32,32,78,41,1,218,10,105,115,95,112,97, + 99,107,97,103,101,84,41,3,218,4,110,97,109,101,90,6, + 108,111,97,100,101,114,114,47,0,0,0,41,10,114,39,0, + 0,0,218,10,95,98,111,111,116,115,116,114,97,112,90,16, + 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, + 114,40,0,0,0,114,41,0,0,0,114,30,0,0,0,114, + 21,0,0,0,90,10,77,111,100,117,108,101,83,112,101,99, + 90,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,114,25,0,0, + 0,41,7,114,33,0,0,0,114,42,0,0,0,90,6,116, + 97,114,103,101,116,90,11,109,111,100,117,108,101,95,105,110, + 102,111,114,44,0,0,0,114,14,0,0,0,90,4,115,112, + 101,99,32,32,32,32,32,32,32,114,10,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,163,0,0,0,115,24,0, + 0,0,10,5,8,1,16,1,10,7,10,1,18,4,8,1, + 2,1,6,255,12,2,4,1,4,2,114,11,0,0,0,122, + 21,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, + 100,95,115,112,101,99,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,67,0,0,0,115,20,0,0,0, + 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, + 124,2,83,0,41,2,122,166,103,101,116,95,99,111,100,101, + 40,102,117,108,108,110,97,109,101,41,32,45,62,32,99,111, + 100,101,32,111,98,106,101,99,116,46,10,10,32,32,32,32, + 32,32,32,32,82,101,116,117,114,110,32,116,104,101,32,99, + 111,100,101,32,111,98,106,101,99,116,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,46,32,82,97,105,115,101,32,90,105,112,73,109, + 112,111,114,116,69,114,114,111,114,10,32,32,32,32,32,32, + 32,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, + 99,111,117,108,100,110,39,116,32,98,101,32,105,109,112,111, + 114,116,101,100,46,10,32,32,32,32,32,32,32,32,78,169, + 1,218,16,95,103,101,116,95,109,111,100,117,108,101,95,99, + 111,100,101,169,5,114,33,0,0,0,114,42,0,0,0,218, + 4,99,111,100,101,218,9,105,115,112,97,99,107,97,103,101, + 114,44,0,0,0,32,32,32,32,32,114,10,0,0,0,218, 8,103,101,116,95,99,111,100,101,190,0,0,0,115,4,0, 0,0,16,6,4,1,114,11,0,0,0,122,20,122,105,112, 105,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, @@ -358,226 +356,223 @@ const unsigned char _Py_M__zipimport[] = { 27,0,0,0,114,23,0,0,0,218,9,95,103,101,116,95, 100,97,116,97,41,4,114,33,0,0,0,218,8,112,97,116, 104,110,97,109,101,90,3,107,101,121,218,9,116,111,99,95, - 101,110,116,114,121,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,218,8,103,101,116,95,100,97,116,97,200,0, - 0,0,115,26,0,0,0,4,6,12,1,4,2,16,1,22, - 1,2,2,12,1,2,128,12,1,12,1,2,128,12,1,2, - 254,115,12,0,0,0,158,5,36,0,164,13,49,7,184,1, - 49,7,122,20,122,105,112,105,109,112,111,114,116,101,114,46, - 103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,20,0, - 0,0,116,0,124,0,124,1,131,2,92,3,125,2,125,3, - 125,4,124,4,83,0,41,2,122,165,103,101,116,95,102,105, - 108,101,110,97,109,101,40,102,117,108,108,110,97,109,101,41, - 32,45,62,32,102,105,108,101,110,97,109,101,32,115,116,114, - 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,32,116,104,101,32,102,105,108,101,110,97,109, - 101,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,111,114,32,114,97, - 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, - 111,114,10,32,32,32,32,32,32,32,32,105,102,32,105,116, - 32,99,111,117,108,100,110,39,116,32,98,101,32,105,109,112, - 111,114,116,101,100,46,10,32,32,32,32,32,32,32,32,78, - 114,51,0,0,0,114,53,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,12,103,101,116,95,102, - 105,108,101,110,97,109,101,221,0,0,0,115,4,0,0,0, - 16,8,4,1,114,11,0,0,0,122,24,122,105,112,105,109, - 112,111,114,116,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, - 8,0,0,0,67,0,0,0,115,128,0,0,0,116,0,124, - 0,124,1,131,2,125,2,124,2,100,1,117,0,114,18,116, - 1,100,2,124,1,155,2,157,2,124,1,100,3,141,2,130, - 1,116,2,124,0,124,1,131,2,125,3,124,2,114,32,116, - 3,160,4,124,3,100,4,161,2,125,4,110,5,124,3,155, - 0,100,5,157,2,125,4,9,0,124,0,106,5,124,4,25, - 0,125,5,110,11,35,0,4,0,116,6,121,63,1,0,1, - 0,1,0,89,0,100,1,83,0,37,0,116,7,124,0,106, - 8,124,5,131,2,160,9,161,0,83,0,119,0,41,6,122, - 253,103,101,116,95,115,111,117,114,99,101,40,102,117,108,108, - 110,97,109,101,41,32,45,62,32,115,111,117,114,99,101,32, - 115,116,114,105,110,103,46,10,10,32,32,32,32,32,32,32, - 32,82,101,116,117,114,110,32,116,104,101,32,115,111,117,114, - 99,101,32,99,111,100,101,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,32,82,97,105,115,101,32,90,105,112,73,109,112,111,114, - 116,69,114,114,111,114,10,32,32,32,32,32,32,32,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,99,111,117, - 108,100,110,39,116,32,98,101,32,102,111,117,110,100,44,32, - 114,101,116,117,114,110,32,78,111,110,101,32,105,102,32,116, - 104,101,32,97,114,99,104,105,118,101,32,100,111,101,115,10, - 32,32,32,32,32,32,32,32,99,111,110,116,97,105,110,32, - 116,104,101,32,109,111,100,117,108,101,44,32,98,117,116,32, - 104,97,115,32,110,111,32,115,111,117,114,99,101,32,102,111, - 114,32,105,116,46,10,32,32,32,32,32,32,32,32,78,250, - 18,99,97,110,39,116,32,102,105,110,100,32,109,111,100,117, - 108,101,32,169,1,114,48,0,0,0,250,11,95,95,105,110, - 105,116,95,95,46,112,121,250,3,46,112,121,41,10,114,39, - 0,0,0,114,3,0,0,0,114,40,0,0,0,114,22,0, - 0,0,114,31,0,0,0,114,29,0,0,0,114,27,0,0, - 0,114,60,0,0,0,114,30,0,0,0,218,6,100,101,99, - 111,100,101,41,6,114,33,0,0,0,114,42,0,0,0,114, - 43,0,0,0,114,14,0,0,0,218,8,102,117,108,108,112, - 97,116,104,114,62,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,10,103,101,116,95,115,111,117, - 114,99,101,233,0,0,0,115,30,0,0,0,10,7,8,1, - 18,1,10,2,4,1,14,1,10,2,2,2,12,1,2,128, - 12,1,6,2,2,128,16,1,2,253,115,12,0,0,0,166, - 5,44,0,172,7,54,7,191,1,54,7,122,22,122,105,112, - 105,109,112,111,114,116,101,114,46,103,101,116,95,115,111,117, - 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,40,0,0,0,116,0,124, - 0,124,1,131,2,125,2,124,2,100,1,117,0,114,18,116, - 1,100,2,124,1,155,2,157,2,124,1,100,3,141,2,130, - 1,124,2,83,0,41,4,122,171,105,115,95,112,97,99,107, - 97,103,101,40,102,117,108,108,110,97,109,101,41,32,45,62, - 32,98,111,111,108,46,10,10,32,32,32,32,32,32,32,32, - 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116, - 104,101,32,109,111,100,117,108,101,32,115,112,101,99,105,102, - 105,101,100,32,98,121,32,102,117,108,108,110,97,109,101,32, - 105,115,32,97,32,112,97,99,107,97,103,101,46,10,32,32, - 32,32,32,32,32,32,82,97,105,115,101,32,90,105,112,73, - 109,112,111,114,116,69,114,114,111,114,32,105,102,32,116,104, - 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, - 116,32,98,101,32,102,111,117,110,100,46,10,32,32,32,32, - 32,32,32,32,78,114,65,0,0,0,114,66,0,0,0,41, - 2,114,39,0,0,0,114,3,0,0,0,41,3,114,33,0, - 0,0,114,42,0,0,0,114,43,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,47,0,0,0, - 3,1,0,0,115,8,0,0,0,10,6,8,1,18,1,4, - 1,114,11,0,0,0,122,22,122,105,112,105,109,112,111,114, - 116,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,8,0,0,0,67, - 0,0,0,115,0,1,0,0,100,1,125,2,116,0,160,1, - 124,2,116,2,161,2,1,0,116,3,124,0,124,1,131,2, - 92,3,125,3,125,4,125,5,116,4,106,5,160,6,124,1, - 161,1,125,6,124,6,100,2,117,0,115,31,116,7,124,6, - 116,8,131,2,115,40,116,8,124,1,131,1,125,6,124,6, - 116,4,106,5,124,1,60,0,124,0,124,6,95,9,9,0, - 124,4,114,62,116,10,124,0,124,1,131,2,125,7,116,11, - 160,12,124,0,106,13,124,7,161,2,125,8,124,8,103,1, - 124,6,95,14,116,15,124,6,100,3,131,2,115,70,116,16, - 124,6,95,16,116,11,160,17,124,6,106,18,124,1,124,5, - 161,3,1,0,116,19,124,3,124,6,106,18,131,2,1,0, - 110,10,35,0,1,0,1,0,1,0,116,4,106,5,124,1, - 61,0,130,0,37,0,9,0,116,4,106,5,124,1,25,0, - 125,6,110,16,35,0,4,0,116,20,121,127,1,0,1,0, - 1,0,116,21,100,4,124,1,155,2,100,5,157,3,131,1, - 130,1,37,0,116,22,160,23,100,6,124,1,124,5,161,3, - 1,0,124,6,83,0,119,0,41,7,97,64,1,0,0,108, - 111,97,100,95,109,111,100,117,108,101,40,102,117,108,108,110, - 97,109,101,41,32,45,62,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,32,32,32,32,76,111,97,100,32,116,104, - 101,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, - 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, - 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, - 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, - 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, - 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, - 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, - 115,32,116,104,101,32,105,109,112,111,114,116,101,100,10,32, - 32,32,32,32,32,32,32,109,111,100,117,108,101,44,32,111, - 114,32,114,97,105,115,101,115,32,90,105,112,73,109,112,111, - 114,116,69,114,114,111,114,32,105,102,32,105,116,32,99,111, - 117,108,100,32,110,111,116,32,98,101,32,105,109,112,111,114, - 116,101,100,46,10,10,32,32,32,32,32,32,32,32,68,101, - 112,114,101,99,97,116,101,100,32,115,105,110,99,101,32,80, - 121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122, - 114,122,105,112,105,109,112,111,114,116,46,122,105,112,105,109, - 112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,117, - 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,101,120, - 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, - 101,97,100,78,218,12,95,95,98,117,105,108,116,105,110,115, - 95,95,122,14,76,111,97,100,101,100,32,109,111,100,117,108, - 101,32,122,25,32,110,111,116,32,102,111,117,110,100,32,105, - 110,32,115,121,115,46,109,111,100,117,108,101,115,122,30,105, - 109,112,111,114,116,32,123,125,32,35,32,108,111,97,100,101, - 100,32,102,114,111,109,32,90,105,112,32,123,125,41,24,114, - 36,0,0,0,114,37,0,0,0,114,38,0,0,0,114,52, - 0,0,0,218,3,115,121,115,218,7,109,111,100,117,108,101, - 115,218,3,103,101,116,114,16,0,0,0,218,12,95,109,111, - 100,117,108,101,95,116,121,112,101,218,10,95,95,108,111,97, - 100,101,114,95,95,114,40,0,0,0,114,22,0,0,0,114, - 31,0,0,0,114,30,0,0,0,90,8,95,95,112,97,116, - 104,95,95,218,7,104,97,115,97,116,116,114,114,72,0,0, - 0,90,14,95,102,105,120,95,117,112,95,109,111,100,117,108, - 101,218,8,95,95,100,105,99,116,95,95,218,4,101,120,101, - 99,114,27,0,0,0,218,11,73,109,112,111,114,116,69,114, - 114,111,114,114,49,0,0,0,218,16,95,118,101,114,98,111, - 115,101,95,109,101,115,115,97,103,101,41,9,114,33,0,0, - 0,114,42,0,0,0,218,3,109,115,103,114,54,0,0,0, - 114,55,0,0,0,114,44,0,0,0,90,3,109,111,100,114, - 14,0,0,0,114,70,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,218,11,108,111,97,100,95,109, - 111,100,117,108,101,16,1,0,0,115,62,0,0,0,4,9, - 12,2,16,1,12,1,18,1,8,1,10,1,6,1,2,2, - 4,1,10,3,14,1,8,1,10,2,6,1,16,1,14,1, - 2,128,6,1,8,1,2,1,2,128,2,2,12,1,2,128, - 12,1,16,1,2,128,14,1,4,1,2,253,115,29,0,0, - 0,172,40,65,21,0,193,21,9,65,30,7,193,32,5,65, - 38,0,193,38,15,65,53,7,193,63,1,65,53,7,122,23, - 122,105,112,105,109,112,111,114,116,101,114,46,108,111,97,100, - 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,67,0,0,0,115,64,0,0, - 0,9,0,124,0,160,0,124,1,161,1,115,8,100,1,83, - 0,110,11,35,0,4,0,116,1,121,31,1,0,1,0,1, - 0,89,0,100,1,83,0,37,0,100,2,100,3,108,2,109, - 3,125,2,1,0,124,2,124,0,124,1,131,2,83,0,119, - 0,41,4,122,204,82,101,116,117,114,110,32,116,104,101,32, - 82,101,115,111,117,114,99,101,82,101,97,100,101,114,32,102, - 111,114,32,97,32,112,97,99,107,97,103,101,32,105,110,32, - 97,32,122,105,112,32,102,105,108,101,46,10,10,32,32,32, - 32,32,32,32,32,73,102,32,39,102,117,108,108,110,97,109, - 101,39,32,105,115,32,97,32,112,97,99,107,97,103,101,32, - 119,105,116,104,105,110,32,116,104,101,32,122,105,112,32,102, - 105,108,101,44,32,114,101,116,117,114,110,32,116,104,101,10, - 32,32,32,32,32,32,32,32,39,82,101,115,111,117,114,99, - 101,82,101,97,100,101,114,39,32,111,98,106,101,99,116,32, - 102,111,114,32,116,104,101,32,112,97,99,107,97,103,101,46, - 32,32,79,116,104,101,114,119,105,115,101,32,114,101,116,117, - 114,110,32,78,111,110,101,46,10,32,32,32,32,32,32,32, - 32,78,114,0,0,0,0,41,1,218,9,90,105,112,82,101, - 97,100,101,114,41,4,114,47,0,0,0,114,3,0,0,0, - 90,17,105,109,112,111,114,116,108,105,98,46,114,101,97,100, - 101,114,115,114,85,0,0,0,41,3,114,33,0,0,0,114, - 42,0,0,0,114,85,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,218,19,103,101,116,95,114,101, - 115,111,117,114,99,101,95,114,101,97,100,101,114,59,1,0, - 0,115,22,0,0,0,2,6,10,1,4,1,2,255,2,128, - 12,2,6,1,2,128,12,1,10,1,2,253,115,12,0,0, - 0,129,5,9,0,137,7,19,7,159,1,19,7,122,31,122, - 105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,114, - 101,115,111,117,114,99,101,95,114,101,97,100,101,114,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,74,0,0,0,9,0,116,0,124,0,106,1, - 131,1,124,0,95,2,124,0,106,2,116,3,124,0,106,1, - 60,0,100,1,83,0,35,0,4,0,116,4,121,36,1,0, - 1,0,1,0,116,3,160,5,124,0,106,1,100,1,161,2, - 1,0,100,1,124,0,95,2,89,0,100,1,83,0,37,0, - 119,0,41,2,122,41,82,101,108,111,97,100,32,116,104,101, - 32,102,105,108,101,32,100,97,116,97,32,111,102,32,116,104, - 101,32,97,114,99,104,105,118,101,32,112,97,116,104,46,78, - 41,6,114,28,0,0,0,114,30,0,0,0,114,29,0,0, - 0,114,26,0,0,0,114,3,0,0,0,218,3,112,111,112, - 169,1,114,33,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,17,105,110,118,97,108,105,100,97, - 116,101,95,99,97,99,104,101,115,74,1,0,0,115,18,0, - 0,0,2,2,12,1,16,1,2,128,12,1,14,1,12,1, - 2,128,2,254,115,12,0,0,0,129,12,15,0,143,17,35, - 7,164,1,35,7,122,29,122,105,112,105,109,112,111,114,116, - 101,114,46,105,110,118,97,108,105,100,97,116,101,95,99,97, - 99,104,101,115,99,1,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,67,0,0,0,115,24,0,0,0,100,1, - 124,0,106,0,155,0,116,1,155,0,124,0,106,2,155,0, - 100,2,157,5,83,0,41,3,78,122,21,60,122,105,112,105, - 109,112,111,114,116,101,114,32,111,98,106,101,99,116,32,34, - 122,2,34,62,41,3,114,30,0,0,0,114,21,0,0,0, - 114,32,0,0,0,114,88,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,8,95,95,114,101,112, + 101,110,116,114,121,32,32,32,32,114,10,0,0,0,218,8, + 103,101,116,95,100,97,116,97,200,0,0,0,115,26,0,0, + 0,4,6,12,1,4,2,16,1,22,1,2,2,12,1,2, + 128,12,1,12,1,2,128,12,1,2,254,115,12,0,0,0, + 158,5,36,0,164,13,49,7,184,1,49,7,122,20,122,105, + 112,105,109,112,111,114,116,101,114,46,103,101,116,95,100,97, + 116,97,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,115,20,0,0,0,116,0,124,0, + 124,1,131,2,92,3,125,2,125,3,125,4,124,4,83,0, + 41,2,122,165,103,101,116,95,102,105,108,101,110,97,109,101, + 40,102,117,108,108,110,97,109,101,41,32,45,62,32,102,105, + 108,101,110,97,109,101,32,115,116,114,105,110,103,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, + 104,101,32,102,105,108,101,110,97,109,101,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,111,114,32,114,97,105,115,101,32,90,105, + 112,73,109,112,111,114,116,69,114,114,111,114,10,32,32,32, + 32,32,32,32,32,105,102,32,105,116,32,99,111,117,108,100, + 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, + 10,32,32,32,32,32,32,32,32,78,114,51,0,0,0,114, + 53,0,0,0,32,32,32,32,32,114,10,0,0,0,218,12, + 103,101,116,95,102,105,108,101,110,97,109,101,221,0,0,0, + 115,4,0,0,0,16,8,4,1,114,11,0,0,0,122,24, + 122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115,128,0, + 0,0,116,0,124,0,124,1,131,2,125,2,124,2,100,1, + 117,0,114,18,116,1,100,2,124,1,155,2,157,2,124,1, + 100,3,141,2,130,1,116,2,124,0,124,1,131,2,125,3, + 124,2,114,32,116,3,160,4,124,3,100,4,161,2,125,4, + 110,5,124,3,155,0,100,5,157,2,125,4,9,0,124,0, + 106,5,124,4,25,0,125,5,110,11,35,0,4,0,116,6, + 121,63,1,0,1,0,1,0,89,0,100,1,83,0,37,0, + 116,7,124,0,106,8,124,5,131,2,160,9,161,0,83,0, + 119,0,41,6,122,253,103,101,116,95,115,111,117,114,99,101, + 40,102,117,108,108,110,97,109,101,41,32,45,62,32,115,111, + 117,114,99,101,32,115,116,114,105,110,103,46,10,10,32,32, + 32,32,32,32,32,32,82,101,116,117,114,110,32,116,104,101, + 32,115,111,117,114,99,101,32,99,111,100,101,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,32,82,97,105,115,101,32,90,105,112, + 73,109,112,111,114,116,69,114,114,111,114,10,32,32,32,32, + 32,32,32,32,105,102,32,116,104,101,32,109,111,100,117,108, + 101,32,99,111,117,108,100,110,39,116,32,98,101,32,102,111, + 117,110,100,44,32,114,101,116,117,114,110,32,78,111,110,101, + 32,105,102,32,116,104,101,32,97,114,99,104,105,118,101,32, + 100,111,101,115,10,32,32,32,32,32,32,32,32,99,111,110, + 116,97,105,110,32,116,104,101,32,109,111,100,117,108,101,44, + 32,98,117,116,32,104,97,115,32,110,111,32,115,111,117,114, + 99,101,32,102,111,114,32,105,116,46,10,32,32,32,32,32, + 32,32,32,78,250,18,99,97,110,39,116,32,102,105,110,100, + 32,109,111,100,117,108,101,32,169,1,114,48,0,0,0,250, + 11,95,95,105,110,105,116,95,95,46,112,121,250,3,46,112, + 121,41,10,114,39,0,0,0,114,3,0,0,0,114,40,0, + 0,0,114,22,0,0,0,114,31,0,0,0,114,29,0,0, + 0,114,27,0,0,0,114,60,0,0,0,114,30,0,0,0, + 218,6,100,101,99,111,100,101,41,6,114,33,0,0,0,114, + 42,0,0,0,114,43,0,0,0,114,14,0,0,0,218,8, + 102,117,108,108,112,97,116,104,114,62,0,0,0,32,32,32, + 32,32,32,114,10,0,0,0,218,10,103,101,116,95,115,111, + 117,114,99,101,233,0,0,0,115,30,0,0,0,10,7,8, + 1,18,1,10,2,4,1,14,1,10,2,2,2,12,1,2, + 128,12,1,6,2,2,128,16,1,2,253,115,12,0,0,0, + 166,5,44,0,172,7,54,7,191,1,54,7,122,22,122,105, + 112,105,109,112,111,114,116,101,114,46,103,101,116,95,115,111, + 117,114,99,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,40,0,0,0,116,0, + 124,0,124,1,131,2,125,2,124,2,100,1,117,0,114,18, + 116,1,100,2,124,1,155,2,157,2,124,1,100,3,141,2, + 130,1,124,2,83,0,41,4,122,171,105,115,95,112,97,99, + 107,97,103,101,40,102,117,108,108,110,97,109,101,41,32,45, + 62,32,98,111,111,108,46,10,10,32,32,32,32,32,32,32, + 32,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,115,112,101,99,105, + 102,105,101,100,32,98,121,32,102,117,108,108,110,97,109,101, + 32,105,115,32,97,32,112,97,99,107,97,103,101,46,10,32, + 32,32,32,32,32,32,32,82,97,105,115,101,32,90,105,112, + 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,116, + 104,101,32,109,111,100,117,108,101,32,99,111,117,108,100,110, + 39,116,32,98,101,32,102,111,117,110,100,46,10,32,32,32, + 32,32,32,32,32,78,114,65,0,0,0,114,66,0,0,0, + 41,2,114,39,0,0,0,114,3,0,0,0,41,3,114,33, + 0,0,0,114,42,0,0,0,114,43,0,0,0,32,32,32, + 114,10,0,0,0,114,47,0,0,0,3,1,0,0,115,8, + 0,0,0,10,6,8,1,18,1,4,1,114,11,0,0,0, + 122,22,122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115,0,1, + 0,0,100,1,125,2,116,0,160,1,124,2,116,2,161,2, + 1,0,116,3,124,0,124,1,131,2,92,3,125,3,125,4, + 125,5,116,4,106,5,160,6,124,1,161,1,125,6,124,6, + 100,2,117,0,115,31,116,7,124,6,116,8,131,2,115,40, + 116,8,124,1,131,1,125,6,124,6,116,4,106,5,124,1, + 60,0,124,0,124,6,95,9,9,0,124,4,114,62,116,10, + 124,0,124,1,131,2,125,7,116,11,160,12,124,0,106,13, + 124,7,161,2,125,8,124,8,103,1,124,6,95,14,116,15, + 124,6,100,3,131,2,115,70,116,16,124,6,95,16,116,11, + 160,17,124,6,106,18,124,1,124,5,161,3,1,0,116,19, + 124,3,124,6,106,18,131,2,1,0,110,10,35,0,1,0, + 1,0,1,0,116,4,106,5,124,1,61,0,130,0,37,0, + 9,0,116,4,106,5,124,1,25,0,125,6,110,16,35,0, + 4,0,116,20,121,127,1,0,1,0,1,0,116,21,100,4, + 124,1,155,2,100,5,157,3,131,1,130,1,37,0,116,22, + 160,23,100,6,124,1,124,5,161,3,1,0,124,6,83,0, + 119,0,41,7,97,64,1,0,0,108,111,97,100,95,109,111, + 100,117,108,101,40,102,117,108,108,110,97,109,101,41,32,45, + 62,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,76,111,97,100,32,116,104,101,32,109,111,100,117, + 108,101,32,115,112,101,99,105,102,105,101,100,32,98,121,32, + 39,102,117,108,108,110,97,109,101,39,46,32,39,102,117,108, + 108,110,97,109,101,39,32,109,117,115,116,32,98,101,32,116, + 104,101,10,32,32,32,32,32,32,32,32,102,117,108,108,121, + 32,113,117,97,108,105,102,105,101,100,32,40,100,111,116,116, + 101,100,41,32,109,111,100,117,108,101,32,110,97,109,101,46, + 32,73,116,32,114,101,116,117,114,110,115,32,116,104,101,32, + 105,109,112,111,114,116,101,100,10,32,32,32,32,32,32,32, + 32,109,111,100,117,108,101,44,32,111,114,32,114,97,105,115, + 101,115,32,90,105,112,73,109,112,111,114,116,69,114,114,111, + 114,32,105,102,32,105,116,32,99,111,117,108,100,32,110,111, + 116,32,98,101,32,105,109,112,111,114,116,101,100,46,10,10, + 32,32,32,32,32,32,32,32,68,101,112,114,101,99,97,116, + 101,100,32,115,105,110,99,101,32,80,121,116,104,111,110,32, + 51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,114,122,105,112,105,109, + 112,111,114,116,46,122,105,112,105,109,112,111,114,116,101,114, + 46,108,111,97,100,95,109,111,100,117,108,101,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,59,32,117,115,101,32,101,120,101,99,95,109,111,100, + 117,108,101,40,41,32,105,110,115,116,101,97,100,78,218,12, + 95,95,98,117,105,108,116,105,110,115,95,95,122,14,76,111, + 97,100,101,100,32,109,111,100,117,108,101,32,122,25,32,110, + 111,116,32,102,111,117,110,100,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,122,30,105,109,112,111,114,116,32, + 123,125,32,35,32,108,111,97,100,101,100,32,102,114,111,109, + 32,90,105,112,32,123,125,41,24,114,36,0,0,0,114,37, + 0,0,0,114,38,0,0,0,114,52,0,0,0,218,3,115, + 121,115,218,7,109,111,100,117,108,101,115,218,3,103,101,116, + 114,16,0,0,0,218,12,95,109,111,100,117,108,101,95,116, + 121,112,101,218,10,95,95,108,111,97,100,101,114,95,95,114, + 40,0,0,0,114,22,0,0,0,114,31,0,0,0,114,30, + 0,0,0,90,8,95,95,112,97,116,104,95,95,218,7,104, + 97,115,97,116,116,114,114,72,0,0,0,90,14,95,102,105, + 120,95,117,112,95,109,111,100,117,108,101,218,8,95,95,100, + 105,99,116,95,95,218,4,101,120,101,99,114,27,0,0,0, + 218,11,73,109,112,111,114,116,69,114,114,111,114,114,49,0, + 0,0,218,16,95,118,101,114,98,111,115,101,95,109,101,115, + 115,97,103,101,41,9,114,33,0,0,0,114,42,0,0,0, + 218,3,109,115,103,114,54,0,0,0,114,55,0,0,0,114, + 44,0,0,0,90,3,109,111,100,114,14,0,0,0,114,70, + 0,0,0,32,32,32,32,32,32,32,32,32,114,10,0,0, + 0,218,11,108,111,97,100,95,109,111,100,117,108,101,16,1, + 0,0,115,62,0,0,0,4,9,12,2,16,1,12,1,18, + 1,8,1,10,1,6,1,2,2,4,1,10,3,14,1,8, + 1,10,2,6,1,16,1,14,1,2,128,6,1,8,1,2, + 1,2,128,2,2,12,1,2,128,12,1,16,1,2,128,14, + 1,4,1,2,253,115,29,0,0,0,172,40,65,21,0,193, + 21,9,65,30,7,193,32,5,65,38,0,193,38,15,65,53, + 7,193,63,1,65,53,7,122,23,122,105,112,105,109,112,111, + 114,116,101,114,46,108,111,97,100,95,109,111,100,117,108,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,64,0,0,0,9,0,124,0,160,0, + 124,1,161,1,115,8,100,1,83,0,110,11,35,0,4,0, + 116,1,121,31,1,0,1,0,1,0,89,0,100,1,83,0, + 37,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, + 124,0,124,1,131,2,83,0,119,0,41,4,122,204,82,101, + 116,117,114,110,32,116,104,101,32,82,101,115,111,117,114,99, + 101,82,101,97,100,101,114,32,102,111,114,32,97,32,112,97, + 99,107,97,103,101,32,105,110,32,97,32,122,105,112,32,102, + 105,108,101,46,10,10,32,32,32,32,32,32,32,32,73,102, + 32,39,102,117,108,108,110,97,109,101,39,32,105,115,32,97, + 32,112,97,99,107,97,103,101,32,119,105,116,104,105,110,32, + 116,104,101,32,122,105,112,32,102,105,108,101,44,32,114,101, + 116,117,114,110,32,116,104,101,10,32,32,32,32,32,32,32, + 32,39,82,101,115,111,117,114,99,101,82,101,97,100,101,114, + 39,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, + 32,112,97,99,107,97,103,101,46,32,32,79,116,104,101,114, + 119,105,115,101,32,114,101,116,117,114,110,32,78,111,110,101, + 46,10,32,32,32,32,32,32,32,32,78,114,0,0,0,0, + 41,1,218,9,90,105,112,82,101,97,100,101,114,41,4,114, + 47,0,0,0,114,3,0,0,0,90,17,105,109,112,111,114, + 116,108,105,98,46,114,101,97,100,101,114,115,114,85,0,0, + 0,41,3,114,33,0,0,0,114,42,0,0,0,114,85,0, + 0,0,32,32,32,114,10,0,0,0,218,19,103,101,116,95, + 114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,59, + 1,0,0,115,22,0,0,0,2,6,10,1,4,1,2,255, + 2,128,12,2,6,1,2,128,12,1,10,1,2,253,115,12, + 0,0,0,129,5,9,0,137,7,19,7,159,1,19,7,122, + 31,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, + 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,74,0,0,0,9,0,116,0,124,0, + 106,1,131,1,124,0,95,2,124,0,106,2,116,3,124,0, + 106,1,60,0,100,1,83,0,35,0,4,0,116,4,121,36, + 1,0,1,0,1,0,116,3,160,5,124,0,106,1,100,1, + 161,2,1,0,100,1,124,0,95,2,89,0,100,1,83,0, + 37,0,119,0,41,2,122,41,82,101,108,111,97,100,32,116, + 104,101,32,102,105,108,101,32,100,97,116,97,32,111,102,32, + 116,104,101,32,97,114,99,104,105,118,101,32,112,97,116,104, + 46,78,41,6,114,28,0,0,0,114,30,0,0,0,114,29, + 0,0,0,114,26,0,0,0,114,3,0,0,0,218,3,112, + 111,112,169,1,114,33,0,0,0,32,114,10,0,0,0,218, + 17,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, + 101,115,74,1,0,0,115,18,0,0,0,2,2,12,1,16, + 1,2,128,12,1,14,1,12,1,2,128,2,254,115,12,0, + 0,0,129,12,15,0,143,17,35,7,164,1,35,7,122,29, + 122,105,112,105,109,112,111,114,116,101,114,46,105,110,118,97, + 108,105,100,97,116,101,95,99,97,99,104,101,115,99,1,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, + 0,0,115,24,0,0,0,100,1,124,0,106,0,155,0,116, + 1,155,0,124,0,106,2,155,0,100,2,157,5,83,0,41, + 3,78,122,21,60,122,105,112,105,109,112,111,114,116,101,114, + 32,111,98,106,101,99,116,32,34,122,2,34,62,41,3,114, + 30,0,0,0,114,21,0,0,0,114,32,0,0,0,114,88, + 0,0,0,32,114,10,0,0,0,218,8,95,95,114,101,112, 114,95,95,84,1,0,0,115,2,0,0,0,24,1,114,11, 0,0,0,122,20,122,105,112,105,109,112,111,114,116,101,114, 46,95,95,114,101,112,114,95,95,169,1,78,41,17,114,6, @@ -586,523 +581,519 @@ const unsigned char _Py_M__zipimport[] = { 114,46,0,0,0,114,50,0,0,0,114,56,0,0,0,114, 63,0,0,0,114,64,0,0,0,114,71,0,0,0,114,47, 0,0,0,114,84,0,0,0,114,86,0,0,0,114,89,0, - 0,0,114,90,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,4,0,0,0, - 46,0,0,0,115,30,0,0,0,8,0,4,1,8,17,10, - 46,10,37,10,16,8,27,8,10,8,21,8,12,8,26,8, - 13,8,43,8,15,12,10,114,11,0,0,0,122,12,95,95, - 105,110,105,116,95,95,46,112,121,99,84,114,67,0,0,0, - 70,41,3,122,4,46,112,121,99,84,70,41,3,114,68,0, - 0,0,70,70,99,2,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,20,0,0,0,124,0, - 106,0,124,1,160,1,100,1,161,1,100,2,25,0,23,0, - 83,0,41,3,78,218,1,46,233,2,0,0,0,41,2,114, - 32,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, - 41,2,114,33,0,0,0,114,42,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,40,0,0,0, - 102,1,0,0,115,2,0,0,0,20,1,114,11,0,0,0, - 114,40,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,67,0,0,0,115,18,0,0,0,124, - 1,116,0,23,0,125,2,124,2,124,0,106,1,118,0,83, - 0,114,91,0,0,0,41,2,114,21,0,0,0,114,29,0, - 0,0,41,3,114,33,0,0,0,114,14,0,0,0,90,7, - 100,105,114,112,97,116,104,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,114,41,0,0,0,106,1,0,0,115, - 4,0,0,0,8,4,10,2,114,11,0,0,0,114,41,0, - 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,56,0,0,0,116,0,124,0, - 124,1,131,2,125,2,116,1,68,0,93,18,92,3,125,3, - 125,4,125,5,124,2,124,3,23,0,125,6,124,6,124,0, - 106,2,118,0,114,25,124,5,2,0,1,0,83,0,113,7, - 100,0,83,0,114,91,0,0,0,41,3,114,40,0,0,0, - 218,16,95,122,105,112,95,115,101,97,114,99,104,111,114,100, - 101,114,114,29,0,0,0,41,7,114,33,0,0,0,114,42, - 0,0,0,114,14,0,0,0,218,6,115,117,102,102,105,120, - 218,10,105,115,98,121,116,101,99,111,100,101,114,55,0,0, - 0,114,70,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,114,39,0,0,0,115,1,0,0,115,14, - 0,0,0,10,1,14,1,8,1,10,1,8,1,2,255,4, - 2,114,11,0,0,0,114,39,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, - 115,248,4,0,0,9,0,116,0,160,1,124,0,161,1,125, - 1,110,18,35,0,4,0,116,2,144,2,121,123,1,0,1, - 0,1,0,116,3,100,1,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,37,0,124,1,53,0,1,0,9,0,124, - 1,160,4,116,5,11,0,100,3,161,2,1,0,124,1,160, - 6,161,0,125,2,124,1,160,7,116,5,161,1,125,3,110, - 18,35,0,4,0,116,2,144,2,121,122,1,0,1,0,1, - 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,37,0,116,8,124,3,131,1,116,5,107,3,114, - 79,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,124,3,100,0,100,5,133,2,25,0,116,9,107, - 3,114,204,9,0,124,1,160,4,100,6,100,3,161,2,1, - 0,124,1,160,6,161,0,125,4,110,18,35,0,4,0,116, - 2,144,2,121,121,1,0,1,0,1,0,116,3,100,4,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,37,0,116, - 10,124,4,116,11,24,0,116,5,24,0,100,6,131,2,125, - 5,9,0,124,1,160,4,124,5,161,1,1,0,124,1,160, - 7,161,0,125,6,110,18,35,0,4,0,116,2,144,2,121, - 120,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,124,6,160,12,116, - 9,161,1,125,7,124,7,100,6,107,0,114,173,116,3,100, - 7,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, - 6,124,7,124,7,116,5,23,0,133,2,25,0,125,3,116, - 8,124,3,131,1,116,5,107,3,114,196,116,3,100,8,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,4,116, - 8,124,6,131,1,24,0,124,7,23,0,125,2,116,13,124, - 3,100,9,100,10,133,2,25,0,131,1,125,8,116,13,124, - 3,100,10,100,11,133,2,25,0,131,1,125,9,124,2,124, - 8,107,0,114,233,116,3,100,12,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,124,2,124,9,107,0,114,246,116, - 3,100,13,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,2,124,8,56,0,125,2,124,2,124,9,24,0,125, - 10,124,10,100,6,107,0,144,1,114,12,116,3,100,14,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,105,0,125, - 11,100,6,125,12,9,0,124,1,160,4,124,2,161,1,1, - 0,110,18,35,0,4,0,116,2,144,2,121,119,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,37,0,9,0,124,1,160,7,100,16,161, - 1,125,3,116,8,124,3,131,1,100,5,107,0,144,1,114, - 58,116,14,100,17,131,1,130,1,124,3,100,0,100,5,133, - 2,25,0,100,18,107,3,144,1,114,69,144,2,113,88,116, - 8,124,3,131,1,100,16,107,3,144,1,114,80,116,14,100, - 17,131,1,130,1,116,15,124,3,100,19,100,20,133,2,25, - 0,131,1,125,13,116,15,124,3,100,20,100,9,133,2,25, - 0,131,1,125,14,116,15,124,3,100,9,100,21,133,2,25, - 0,131,1,125,15,116,15,124,3,100,21,100,10,133,2,25, - 0,131,1,125,16,116,13,124,3,100,10,100,11,133,2,25, - 0,131,1,125,17,116,13,124,3,100,11,100,22,133,2,25, - 0,131,1,125,18,116,13,124,3,100,22,100,23,133,2,25, - 0,131,1,125,4,116,15,124,3,100,23,100,24,133,2,25, - 0,131,1,125,19,116,15,124,3,100,24,100,25,133,2,25, - 0,131,1,125,20,116,15,124,3,100,25,100,26,133,2,25, - 0,131,1,125,21,116,13,124,3,100,27,100,16,133,2,25, - 0,131,1,125,22,124,19,124,20,23,0,124,21,23,0,125, - 8,124,22,124,9,107,4,144,1,114,188,116,3,100,28,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,22,124, - 10,55,0,125,22,9,0,124,1,160,7,124,19,161,1,125, - 23,110,18,35,0,4,0,116,2,144,2,121,118,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,37,0,116,8,124,23,131,1,124,19,107, - 3,144,1,114,233,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,9,0,116,8,124,1,160,7,124, - 8,124,19,24,0,161,1,131,1,124,8,124,19,24,0,107, - 3,144,2,114,1,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,110,18,35,0,4,0,116,2,144, - 2,121,117,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,37,0,124,13,100, - 29,64,0,144,2,114,30,124,23,160,16,161,0,125,23,110, - 26,9,0,124,23,160,16,100,30,161,1,125,23,110,19,35, - 0,4,0,116,17,144,2,121,116,1,0,1,0,1,0,124, - 23,160,16,100,31,161,1,160,18,116,19,161,1,125,23,89, - 0,110,1,37,0,124,23,160,20,100,32,116,21,161,2,125, - 23,116,22,160,23,124,0,124,23,161,2,125,24,124,24,124, - 14,124,18,124,4,124,22,124,15,124,16,124,17,102,8,125, - 25,124,25,124,11,124,23,60,0,124,12,100,33,55,0,125, - 12,144,1,113,42,9,0,100,0,4,0,4,0,131,3,1, - 0,110,12,35,0,49,0,144,2,115,101,119,4,37,0,1, - 0,1,0,1,0,89,0,1,0,1,0,116,24,160,25,100, - 34,124,12,124,0,161,3,1,0,124,11,83,0,119,0,119, - 0,119,0,119,0,119,0,119,0,119,0,119,0,41,35,78, - 122,21,99,97,110,39,116,32,111,112,101,110,32,90,105,112, - 32,102,105,108,101,58,32,114,13,0,0,0,114,94,0,0, - 0,250,21,99,97,110,39,116,32,114,101,97,100,32,90,105, - 112,32,102,105,108,101,58,32,233,4,0,0,0,114,0,0, - 0,0,122,16,110,111,116,32,97,32,90,105,112,32,102,105, - 108,101,58,32,122,18,99,111,114,114,117,112,116,32,90,105, - 112,32,102,105,108,101,58,32,233,12,0,0,0,233,16,0, - 0,0,233,20,0,0,0,122,28,98,97,100,32,99,101,110, - 116,114,97,108,32,100,105,114,101,99,116,111,114,121,32,115, - 105,122,101,58,32,122,30,98,97,100,32,99,101,110,116,114, - 97,108,32,100,105,114,101,99,116,111,114,121,32,111,102,102, - 115,101,116,58,32,122,38,98,97,100,32,99,101,110,116,114, - 97,108,32,100,105,114,101,99,116,111,114,121,32,115,105,122, - 101,32,111,114,32,111,102,102,115,101,116,58,32,84,233,46, - 0,0,0,250,27,69,79,70,32,114,101,97,100,32,119,104, - 101,114,101,32,110,111,116,32,101,120,112,101,99,116,101,100, - 115,4,0,0,0,80,75,1,2,233,8,0,0,0,233,10, - 0,0,0,233,14,0,0,0,233,24,0,0,0,233,28,0, - 0,0,233,30,0,0,0,233,32,0,0,0,233,34,0,0, - 0,233,42,0,0,0,122,25,98,97,100,32,108,111,99,97, - 108,32,104,101,97,100,101,114,32,111,102,102,115,101,116,58, - 32,105,0,8,0,0,218,5,97,115,99,105,105,90,6,108, - 97,116,105,110,49,250,1,47,114,5,0,0,0,122,33,122, - 105,112,105,109,112,111,114,116,58,32,102,111,117,110,100,32, - 123,125,32,110,97,109,101,115,32,105,110,32,123,33,114,125, - 41,26,218,3,95,105,111,218,9,111,112,101,110,95,99,111, - 100,101,114,23,0,0,0,114,3,0,0,0,218,4,115,101, - 101,107,218,20,69,78,68,95,67,69,78,84,82,65,76,95, - 68,73,82,95,83,73,90,69,90,4,116,101,108,108,218,4, - 114,101,97,100,114,59,0,0,0,218,18,83,84,82,73,78, - 71,95,69,78,68,95,65,82,67,72,73,86,69,218,3,109, - 97,120,218,15,77,65,88,95,67,79,77,77,69,78,84,95, - 76,69,78,218,5,114,102,105,110,100,114,2,0,0,0,218, - 8,69,79,70,69,114,114,111,114,114,1,0,0,0,114,69, - 0,0,0,218,18,85,110,105,99,111,100,101,68,101,99,111, - 100,101,69,114,114,111,114,218,9,116,114,97,110,115,108,97, - 116,101,218,11,99,112,52,51,55,95,116,97,98,108,101,114, - 20,0,0,0,114,21,0,0,0,114,22,0,0,0,114,31, - 0,0,0,114,49,0,0,0,114,82,0,0,0,41,26,114, - 30,0,0,0,218,2,102,112,90,15,104,101,97,100,101,114, - 95,112,111,115,105,116,105,111,110,218,6,98,117,102,102,101, - 114,218,9,102,105,108,101,95,115,105,122,101,90,17,109,97, - 120,95,99,111,109,109,101,110,116,95,115,116,97,114,116,218, - 4,100,97,116,97,90,3,112,111,115,218,11,104,101,97,100, - 101,114,95,115,105,122,101,90,13,104,101,97,100,101,114,95, - 111,102,102,115,101,116,90,10,97,114,99,95,111,102,102,115, - 101,116,114,34,0,0,0,218,5,99,111,117,110,116,218,5, - 102,108,97,103,115,218,8,99,111,109,112,114,101,115,115,218, - 4,116,105,109,101,218,4,100,97,116,101,218,3,99,114,99, - 218,9,100,97,116,97,95,115,105,122,101,218,9,110,97,109, - 101,95,115,105,122,101,218,10,101,120,116,114,97,95,115,105, - 122,101,90,12,99,111,109,109,101,110,116,95,115,105,122,101, - 218,11,102,105,108,101,95,111,102,102,115,101,116,114,48,0, - 0,0,114,14,0,0,0,218,1,116,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,114,28,0,0,0,146,1, - 0,0,115,16,1,0,0,2,1,12,1,2,128,14,1,18, - 1,2,128,6,2,2,1,14,1,8,1,12,1,2,128,14, - 1,18,1,2,128,12,1,18,1,16,1,2,3,12,1,10, - 1,2,128,14,1,10,1,2,1,6,255,2,128,8,2,2, - 1,2,255,2,1,4,255,2,2,10,1,10,1,2,128,14, - 1,10,1,2,1,6,255,2,128,10,2,8,1,10,1,2, - 1,6,255,16,2,12,1,10,1,2,1,6,255,16,2,16, - 2,16,1,8,1,18,1,8,1,18,1,8,1,8,1,10, - 1,18,1,4,2,4,2,2,1,12,1,2,128,14,1,18, - 1,2,128,2,1,10,1,14,1,8,1,18,2,4,1,14, - 1,8,1,16,1,16,1,16,1,16,1,16,1,16,1,16, - 1,16,1,16,1,16,1,16,1,12,1,10,1,18,1,8, - 1,2,2,12,1,2,128,14,1,18,1,2,128,14,1,18, - 1,2,4,28,1,18,1,2,255,2,128,14,2,18,1,2, - 128,10,2,10,2,2,3,12,1,2,128,14,1,20,1,2, - 128,12,2,12,1,20,1,8,1,8,1,4,202,2,6,12, - 196,24,128,14,109,4,1,2,247,2,246,2,246,2,227,2, - 227,2,248,2,246,2,248,115,235,0,0,0,129,5,7,0, - 135,17,24,7,155,1,73,31,3,157,16,46,2,173,1,73, - 31,3,174,17,63,9,191,24,73,31,3,193,24,10,65,35, - 2,193,34,1,73,31,3,193,35,17,65,52,9,193,52,10, - 73,31,3,193,63,9,66,9,2,194,8,1,73,31,3,194, - 9,17,66,26,9,194,26,65,54,73,31,3,196,17,5,68, - 23,2,196,22,1,73,31,3,196,23,17,68,40,9,196,40, - 66,24,73,31,3,199,1,5,71,7,2,199,6,1,73,31, - 3,199,7,17,71,24,9,199,24,17,73,31,3,199,42,23, - 72,2,2,200,1,1,73,31,3,200,2,17,72,19,9,200, - 19,11,73,31,3,200,31,5,72,37,2,200,36,1,73,31, - 3,200,37,16,72,55,9,200,53,35,73,31,3,201,31,5, - 73,36,11,201,37,3,73,36,11,201,52,1,72,55,9,201, - 53,1,72,19,9,201,54,1,71,24,9,201,55,1,68,40, - 9,201,56,1,66,26,9,201,57,1,65,52,9,201,58,1, - 63,9,201,59,1,24,7,114,28,0,0,0,117,190,1,0, - 0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46, - 47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, - 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78, - 79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94, - 95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110, - 111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126, - 127,195,135,195,188,195,169,195,162,195,164,195,160,195,165,195, - 167,195,170,195,171,195,168,195,175,195,174,195,172,195,132,195, - 133,195,137,195,166,195,134,195,180,195,182,195,178,195,187,195, - 185,195,191,195,150,195,156,194,162,194,163,194,165,226,130,167, - 198,146,195,161,195,173,195,179,195,186,195,177,195,145,194,170, - 194,186,194,191,226,140,144,194,172,194,189,194,188,194,161,194, - 171,194,187,226,150,145,226,150,146,226,150,147,226,148,130,226, - 148,164,226,149,161,226,149,162,226,149,150,226,149,149,226,149, - 163,226,149,145,226,149,151,226,149,157,226,149,156,226,149,155, - 226,148,144,226,148,148,226,148,180,226,148,172,226,148,156,226, - 148,128,226,148,188,226,149,158,226,149,159,226,149,154,226,149, - 148,226,149,169,226,149,166,226,149,160,226,149,144,226,149,172, - 226,149,167,226,149,168,226,149,164,226,149,165,226,149,153,226, - 149,152,226,149,146,226,149,147,226,149,171,226,149,170,226,148, - 152,226,148,140,226,150,136,226,150,132,226,150,140,226,150,144, - 226,150,128,206,177,195,159,206,147,207,128,206,163,207,131,194, - 181,207,132,206,166,206,152,206,169,206,180,226,136,158,207,134, - 206,181,226,136,169,226,137,161,194,177,226,137,165,226,137,164, - 226,140,160,226,140,161,195,183,226,137,136,194,176,226,136,153, - 194,183,226,136,154,226,129,191,194,178,226,150,160,194,160,99, - 0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 67,0,0,0,115,110,0,0,0,116,0,114,11,116,1,160, - 2,100,1,161,1,1,0,116,3,100,2,131,1,130,1,100, - 3,97,0,9,0,100,4,100,5,108,4,109,5,125,0,1, - 0,110,17,35,0,4,0,116,6,121,54,1,0,1,0,1, - 0,116,1,160,2,100,1,161,1,1,0,116,3,100,2,131, - 1,130,1,37,0,9,0,100,6,97,0,110,5,35,0,100, - 6,97,0,119,0,37,0,116,1,160,2,100,7,161,1,1, - 0,124,0,83,0,119,0,41,8,78,122,27,122,105,112,105, - 109,112,111,114,116,58,32,122,108,105,98,32,85,78,65,86, - 65,73,76,65,66,76,69,250,41,99,97,110,39,116,32,100, - 101,99,111,109,112,114,101,115,115,32,100,97,116,97,59,32, - 122,108,105,98,32,110,111,116,32,97,118,97,105,108,97,98, - 108,101,84,114,0,0,0,0,169,1,218,10,100,101,99,111, - 109,112,114,101,115,115,70,122,25,122,105,112,105,109,112,111, - 114,116,58,32,122,108,105,98,32,97,118,97,105,108,97,98, - 108,101,41,7,218,15,95,105,109,112,111,114,116,105,110,103, - 95,122,108,105,98,114,49,0,0,0,114,82,0,0,0,114, - 3,0,0,0,90,4,122,108,105,98,114,148,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,114,147,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,20, - 95,103,101,116,95,100,101,99,111,109,112,114,101,115,115,95, - 102,117,110,99,48,2,0,0,115,36,0,0,0,4,2,10, - 3,8,1,4,2,2,1,14,1,2,128,12,1,10,1,8, - 1,2,128,2,253,6,5,2,128,8,0,10,2,4,1,2, - 249,115,24,0,0,0,142,6,21,0,148,1,42,0,149,16, - 37,7,165,1,42,0,170,4,46,7,182,1,37,7,114,151, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,67,0,0,0,115,132,1,0,0,124,1,92, - 8,125,2,125,3,125,4,125,5,125,6,125,7,125,8,125, - 9,124,4,100,1,107,0,114,18,116,0,100,2,131,1,130, - 1,116,1,160,2,124,0,161,1,53,0,125,10,9,0,124, - 10,160,3,124,6,161,1,1,0,110,17,35,0,4,0,116, - 4,121,193,1,0,1,0,1,0,116,0,100,3,124,0,155, - 2,157,2,124,0,100,4,141,2,130,1,37,0,124,10,160, - 5,100,5,161,1,125,11,116,6,124,11,131,1,100,5,107, - 3,114,63,116,7,100,6,131,1,130,1,124,11,100,0,100, - 7,133,2,25,0,100,8,107,3,114,80,116,0,100,9,124, - 0,155,2,157,2,124,0,100,4,141,2,130,1,116,8,124, - 11,100,10,100,11,133,2,25,0,131,1,125,12,116,8,124, - 11,100,11,100,5,133,2,25,0,131,1,125,13,100,5,124, - 12,23,0,124,13,23,0,125,14,124,6,124,14,55,0,125, - 6,9,0,124,10,160,3,124,6,161,1,1,0,110,17,35, - 0,4,0,116,4,121,192,1,0,1,0,1,0,116,0,100, - 3,124,0,155,2,157,2,124,0,100,4,141,2,130,1,37, - 0,124,10,160,5,124,4,161,1,125,15,116,6,124,15,131, - 1,124,4,107,3,114,145,116,4,100,12,131,1,130,1,9, - 0,100,0,4,0,4,0,131,3,1,0,110,11,35,0,49, - 0,115,157,119,4,37,0,1,0,1,0,1,0,89,0,1, - 0,1,0,124,3,100,1,107,2,114,169,124,15,83,0,9, - 0,116,9,131,0,125,16,110,12,35,0,4,0,116,10,121, - 191,1,0,1,0,1,0,116,0,100,13,131,1,130,1,37, - 0,124,16,124,15,100,14,131,2,83,0,119,0,119,0,119, - 0,41,15,78,114,0,0,0,0,122,18,110,101,103,97,116, - 105,118,101,32,100,97,116,97,32,115,105,122,101,114,99,0, - 0,0,114,13,0,0,0,114,111,0,0,0,114,105,0,0, - 0,114,100,0,0,0,115,4,0,0,0,80,75,3,4,122, - 23,98,97,100,32,108,111,99,97,108,32,102,105,108,101,32, - 104,101,97,100,101,114,58,32,233,26,0,0,0,114,110,0, - 0,0,122,26,122,105,112,105,109,112,111,114,116,58,32,99, - 97,110,39,116,32,114,101,97,100,32,100,97,116,97,114,146, - 0,0,0,105,241,255,255,255,41,11,114,3,0,0,0,114, - 117,0,0,0,114,118,0,0,0,114,119,0,0,0,114,23, - 0,0,0,114,121,0,0,0,114,59,0,0,0,114,126,0, - 0,0,114,1,0,0,0,114,151,0,0,0,114,150,0,0, - 0,41,17,114,30,0,0,0,114,62,0,0,0,90,8,100, - 97,116,97,112,97,116,104,114,137,0,0,0,114,141,0,0, - 0,114,132,0,0,0,114,144,0,0,0,114,138,0,0,0, - 114,139,0,0,0,114,140,0,0,0,114,130,0,0,0,114, - 131,0,0,0,114,142,0,0,0,114,143,0,0,0,114,134, - 0,0,0,90,8,114,97,119,95,100,97,116,97,114,148,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,60,0,0,0,69,2,0,0,115,86,0,0,0,20, - 1,8,1,8,1,12,2,2,2,12,1,2,128,12,1,18, - 1,2,128,10,1,12,1,8,1,16,2,18,2,16,2,16, - 1,12,1,8,1,2,1,12,1,2,128,12,1,18,1,2, - 128,10,1,12,1,8,1,2,255,12,233,22,128,8,26,4, - 2,2,3,8,1,2,128,12,1,8,1,2,128,10,1,2, - 254,2,243,2,240,115,88,0,0,0,151,1,66,24,3,153, - 5,31,2,158,1,66,24,3,159,16,47,9,175,59,66,24, - 3,193,43,5,65,49,2,193,48,1,66,24,3,193,49,16, - 66,1,9,194,1,16,66,24,3,194,24,4,66,28,11,194, - 29,3,66,28,11,194,42,3,66,46,0,194,46,11,66,57, - 7,194,63,1,66,57,7,195,0,1,66,1,9,195,1,1, - 47,9,114,60,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, - 0,116,0,124,0,124,1,24,0,131,1,100,1,107,1,83, - 0,41,2,78,114,5,0,0,0,41,1,218,3,97,98,115, - 41,2,90,2,116,49,90,2,116,50,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,9,95,101,113,95,109, - 116,105,109,101,115,2,0,0,115,2,0,0,0,16,2,114, - 11,0,0,0,114,154,0,0,0,99,5,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,67,0,0,0,115,254, - 0,0,0,124,3,124,2,100,1,156,2,125,5,116,0,160, - 1,124,4,124,3,124,5,161,3,125,6,124,6,100,2,64, - 0,100,3,107,3,125,7,124,7,114,63,124,6,100,4,64, - 0,100,3,107,3,125,8,116,2,106,3,100,5,107,3,114, - 62,124,8,115,38,116,2,106,3,100,6,107,2,114,62,116, - 4,124,0,124,2,131,2,125,9,124,9,100,0,117,1,114, - 62,116,2,160,5,116,0,106,6,124,9,161,2,125,10,116, - 0,160,7,124,4,124,10,124,3,124,5,161,4,1,0,110, - 40,116,8,124,0,124,2,131,2,92,2,125,11,125,12,124, - 11,114,103,116,9,116,10,124,4,100,7,100,8,133,2,25, - 0,131,1,124,11,131,2,114,93,116,10,124,4,100,8,100, - 9,133,2,25,0,131,1,124,12,107,3,114,103,116,11,160, - 12,100,10,124,3,155,2,157,2,161,1,1,0,100,0,83, - 0,116,13,160,14,124,4,100,9,100,0,133,2,25,0,161, - 1,125,13,116,15,124,13,116,16,131,2,115,125,116,17,100, - 11,124,1,155,2,100,12,157,3,131,1,130,1,124,13,83, - 0,41,13,78,41,2,114,48,0,0,0,114,14,0,0,0, - 114,5,0,0,0,114,0,0,0,0,114,94,0,0,0,90, - 5,110,101,118,101,114,90,6,97,108,119,97,121,115,114,106, - 0,0,0,114,101,0,0,0,114,102,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,122,16,99,111,109,112,105,108,101,100,32, - 109,111,100,117,108,101,32,122,21,32,105,115,32,110,111,116, - 32,97,32,99,111,100,101,32,111,98,106,101,99,116,41,18, - 114,22,0,0,0,90,13,95,99,108,97,115,115,105,102,121, - 95,112,121,99,218,4,95,105,109,112,90,21,99,104,101,99, - 107,95,104,97,115,104,95,98,97,115,101,100,95,112,121,99, - 115,218,15,95,103,101,116,95,112,121,99,95,115,111,117,114, - 99,101,218,11,115,111,117,114,99,101,95,104,97,115,104,90, - 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, - 69,82,90,18,95,118,97,108,105,100,97,116,101,95,104,97, - 115,104,95,112,121,99,218,29,95,103,101,116,95,109,116,105, - 109,101,95,97,110,100,95,115,105,122,101,95,111,102,95,115, - 111,117,114,99,101,114,154,0,0,0,114,2,0,0,0,114, - 49,0,0,0,114,82,0,0,0,218,7,109,97,114,115,104, - 97,108,90,5,108,111,97,100,115,114,16,0,0,0,218,10, - 95,99,111,100,101,95,116,121,112,101,218,9,84,121,112,101, - 69,114,114,111,114,41,14,114,33,0,0,0,114,61,0,0, - 0,114,70,0,0,0,114,42,0,0,0,114,133,0,0,0, - 90,11,101,120,99,95,100,101,116,97,105,108,115,114,136,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,90,12,115,111, - 117,114,99,101,95,98,121,116,101,115,114,157,0,0,0,90, - 12,115,111,117,114,99,101,95,109,116,105,109,101,90,11,115, - 111,117,114,99,101,95,115,105,122,101,114,54,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,15, - 95,117,110,109,97,114,115,104,97,108,95,99,111,100,101,123, - 2,0,0,115,72,0,0,0,2,2,2,1,6,254,14,5, - 12,2,4,1,12,1,10,1,2,1,2,255,8,1,2,255, - 10,2,8,1,4,1,4,1,2,1,4,254,4,5,8,1, - 4,255,2,128,8,4,6,255,4,3,22,3,18,1,2,255, - 4,2,8,1,4,255,4,2,18,2,10,1,16,1,4,1, - 114,11,0,0,0,114,162,0,0,0,99,1,0,0,0,0, + 0,0,114,90,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,4,0,0,0,46,0,0,0,115,30,0,0,0,8, + 0,4,1,8,17,10,46,10,37,10,16,8,27,8,10,8, + 21,8,12,8,26,8,13,8,43,8,15,12,10,114,11,0, + 0,0,122,12,95,95,105,110,105,116,95,95,46,112,121,99, + 84,114,67,0,0,0,70,41,3,122,4,46,112,121,99,84, + 70,41,3,114,68,0,0,0,70,70,99,2,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 28,0,0,0,124,0,160,0,100,1,100,2,161,2,125,0, - 124,0,160,0,100,3,100,2,161,2,125,0,124,0,83,0, - 41,4,78,115,2,0,0,0,13,10,243,1,0,0,0,10, - 243,1,0,0,0,13,41,1,114,20,0,0,0,41,1,218, - 6,115,111,117,114,99,101,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,23,95,110,111,114,109,97,108,105, - 122,101,95,108,105,110,101,95,101,110,100,105,110,103,115,168, - 2,0,0,115,6,0,0,0,12,1,12,1,4,1,114,11, - 0,0,0,114,166,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,67,0,0,0,115,24,0, - 0,0,116,0,124,1,131,1,125,1,116,1,124,1,124,0, - 100,1,100,2,100,3,141,4,83,0,41,4,78,114,80,0, - 0,0,84,41,1,90,12,100,111,110,116,95,105,110,104,101, - 114,105,116,41,2,114,166,0,0,0,218,7,99,111,109,112, - 105,108,101,41,2,114,61,0,0,0,114,165,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,15, - 95,99,111,109,112,105,108,101,95,115,111,117,114,99,101,175, - 2,0,0,115,4,0,0,0,8,1,16,1,114,11,0,0, - 0,114,168,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,11,0,0,0,67,0,0,0,115,68,0,0,0, - 116,0,160,1,124,0,100,1,63,0,100,2,23,0,124,0, - 100,3,63,0,100,4,64,0,124,0,100,5,64,0,124,1, - 100,6,63,0,124,1,100,3,63,0,100,7,64,0,124,1, - 100,5,64,0,100,8,20,0,100,9,100,9,100,9,102,9, - 161,1,83,0,41,10,78,233,9,0,0,0,105,188,7,0, - 0,233,5,0,0,0,233,15,0,0,0,233,31,0,0,0, - 233,11,0,0,0,233,63,0,0,0,114,94,0,0,0,114, - 15,0,0,0,41,2,114,138,0,0,0,90,6,109,107,116, - 105,109,101,41,2,218,1,100,114,145,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,218,14,95,112, - 97,114,115,101,95,100,111,115,116,105,109,101,181,2,0,0, - 115,18,0,0,0,4,1,10,1,10,1,6,1,6,1,10, - 1,10,1,6,1,6,249,114,11,0,0,0,114,176,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,10,0, - 0,0,67,0,0,0,115,112,0,0,0,9,0,124,1,100, - 1,100,0,133,2,25,0,100,2,118,0,115,11,74,0,130, - 1,124,1,100,0,100,1,133,2,25,0,125,1,124,0,106, - 0,124,1,25,0,125,2,124,2,100,3,25,0,125,3,124, - 2,100,4,25,0,125,4,124,2,100,5,25,0,125,5,116, - 1,124,4,124,3,131,2,124,5,102,2,83,0,35,0,4, - 0,116,2,116,3,116,4,102,3,121,55,1,0,1,0,1, - 0,89,0,100,6,83,0,37,0,119,0,41,7,78,114,15, - 0,0,0,169,2,218,1,99,218,1,111,114,170,0,0,0, - 233,6,0,0,0,233,3,0,0,0,41,2,114,0,0,0, - 0,114,0,0,0,0,41,5,114,29,0,0,0,114,176,0, - 0,0,114,27,0,0,0,218,10,73,110,100,101,120,69,114, - 114,111,114,114,161,0,0,0,41,6,114,33,0,0,0,114, - 14,0,0,0,114,62,0,0,0,114,138,0,0,0,114,139, - 0,0,0,90,17,117,110,99,111,109,112,114,101,115,115,101, - 100,95,115,105,122,101,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,114,158,0,0,0,194,2,0,0,115,26, - 0,0,0,2,1,20,2,12,1,10,1,8,3,8,1,8, - 1,14,1,2,128,18,1,6,1,2,128,2,255,115,12,0, - 0,0,129,39,41,0,169,10,54,7,183,1,54,7,114,158, + 20,0,0,0,124,0,106,0,124,1,160,1,100,1,161,1, + 100,2,25,0,23,0,83,0,41,3,78,218,1,46,233,2, + 0,0,0,41,2,114,32,0,0,0,218,10,114,112,97,114, + 116,105,116,105,111,110,41,2,114,33,0,0,0,114,42,0, + 0,0,32,32,114,10,0,0,0,114,40,0,0,0,102,1, + 0,0,115,2,0,0,0,20,1,114,11,0,0,0,114,40, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, + 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,114, + 91,0,0,0,41,2,114,21,0,0,0,114,29,0,0,0, + 41,3,114,33,0,0,0,114,14,0,0,0,90,7,100,105, + 114,112,97,116,104,32,32,32,114,10,0,0,0,114,41,0, + 0,0,106,1,0,0,115,4,0,0,0,8,4,10,2,114, + 11,0,0,0,114,41,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,56, + 0,0,0,116,0,124,0,124,1,131,2,125,2,116,1,68, + 0,93,18,92,3,125,3,125,4,125,5,124,2,124,3,23, + 0,125,6,124,6,124,0,106,2,118,0,114,25,124,5,2, + 0,1,0,83,0,113,7,100,0,83,0,114,91,0,0,0, + 41,3,114,40,0,0,0,218,16,95,122,105,112,95,115,101, + 97,114,99,104,111,114,100,101,114,114,29,0,0,0,41,7, + 114,33,0,0,0,114,42,0,0,0,114,14,0,0,0,218, + 6,115,117,102,102,105,120,218,10,105,115,98,121,116,101,99, + 111,100,101,114,55,0,0,0,114,70,0,0,0,32,32,32, + 32,32,32,32,114,10,0,0,0,114,39,0,0,0,115,1, + 0,0,115,14,0,0,0,10,1,14,1,8,1,10,1,8, + 1,2,255,4,2,114,11,0,0,0,114,39,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 67,0,0,0,115,248,4,0,0,9,0,116,0,160,1,124, + 0,161,1,125,1,110,18,35,0,4,0,116,2,144,2,121, + 123,1,0,1,0,1,0,116,3,100,1,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,37,0,124,1,53,0,1, + 0,9,0,124,1,160,4,116,5,11,0,100,3,161,2,1, + 0,124,1,160,6,161,0,125,2,124,1,160,7,116,5,161, + 1,125,3,110,18,35,0,4,0,116,2,144,2,121,122,1, + 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,37,0,116,8,124,3,131,1,116, + 5,107,3,114,79,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,3,100,0,100,5,133,2,25, + 0,116,9,107,3,114,204,9,0,124,1,160,4,100,6,100, + 3,161,2,1,0,124,1,160,6,161,0,125,4,110,18,35, + 0,4,0,116,2,144,2,121,121,1,0,1,0,1,0,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,37,0,116,10,124,4,116,11,24,0,116,5,24,0,100, + 6,131,2,125,5,9,0,124,1,160,4,124,5,161,1,1, + 0,124,1,160,7,161,0,125,6,110,18,35,0,4,0,116, + 2,144,2,121,120,1,0,1,0,1,0,116,3,100,4,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,37,0,124, + 6,160,12,116,9,161,1,125,7,124,7,100,6,107,0,114, + 173,116,3,100,7,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,124,6,124,7,124,7,116,5,23,0,133,2,25, + 0,125,3,116,8,124,3,131,1,116,5,107,3,114,196,116, + 3,100,8,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,4,116,8,124,6,131,1,24,0,124,7,23,0,125, + 2,116,13,124,3,100,9,100,10,133,2,25,0,131,1,125, + 8,116,13,124,3,100,10,100,11,133,2,25,0,131,1,125, + 9,124,2,124,8,107,0,114,233,116,3,100,12,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,2,124,9,107, + 0,114,246,116,3,100,13,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,2,124,8,56,0,125,2,124,2,124, + 9,24,0,125,10,124,10,100,6,107,0,144,1,114,12,116, + 3,100,14,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,105,0,125,11,100,6,125,12,9,0,124,1,160,4,124, + 2,161,1,1,0,110,18,35,0,4,0,116,2,144,2,121, + 119,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,37,0,9,0,124,1,160, + 7,100,16,161,1,125,3,116,8,124,3,131,1,100,5,107, + 0,144,1,114,58,116,14,100,17,131,1,130,1,124,3,100, + 0,100,5,133,2,25,0,100,18,107,3,144,1,114,69,144, + 2,113,88,116,8,124,3,131,1,100,16,107,3,144,1,114, + 80,116,14,100,17,131,1,130,1,116,15,124,3,100,19,100, + 20,133,2,25,0,131,1,125,13,116,15,124,3,100,20,100, + 9,133,2,25,0,131,1,125,14,116,15,124,3,100,9,100, + 21,133,2,25,0,131,1,125,15,116,15,124,3,100,21,100, + 10,133,2,25,0,131,1,125,16,116,13,124,3,100,10,100, + 11,133,2,25,0,131,1,125,17,116,13,124,3,100,11,100, + 22,133,2,25,0,131,1,125,18,116,13,124,3,100,22,100, + 23,133,2,25,0,131,1,125,4,116,15,124,3,100,23,100, + 24,133,2,25,0,131,1,125,19,116,15,124,3,100,24,100, + 25,133,2,25,0,131,1,125,20,116,15,124,3,100,25,100, + 26,133,2,25,0,131,1,125,21,116,13,124,3,100,27,100, + 16,133,2,25,0,131,1,125,22,124,19,124,20,23,0,124, + 21,23,0,125,8,124,22,124,9,107,4,144,1,114,188,116, + 3,100,28,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,22,124,10,55,0,125,22,9,0,124,1,160,7,124, + 19,161,1,125,23,110,18,35,0,4,0,116,2,144,2,121, + 118,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,37,0,116,8,124,23,131, + 1,124,19,107,3,144,1,114,233,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,9,0,116,8,124, + 1,160,7,124,8,124,19,24,0,161,1,131,1,124,8,124, + 19,24,0,107,3,144,2,114,1,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,110,18,35,0,4, + 0,116,2,144,2,121,117,1,0,1,0,1,0,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,37, + 0,124,13,100,29,64,0,144,2,114,30,124,23,160,16,161, + 0,125,23,110,26,9,0,124,23,160,16,100,30,161,1,125, + 23,110,19,35,0,4,0,116,17,144,2,121,116,1,0,1, + 0,1,0,124,23,160,16,100,31,161,1,160,18,116,19,161, + 1,125,23,89,0,110,1,37,0,124,23,160,20,100,32,116, + 21,161,2,125,23,116,22,160,23,124,0,124,23,161,2,125, + 24,124,24,124,14,124,18,124,4,124,22,124,15,124,16,124, + 17,102,8,125,25,124,25,124,11,124,23,60,0,124,12,100, + 33,55,0,125,12,144,1,113,42,9,0,100,0,4,0,4, + 0,131,3,1,0,110,12,35,0,49,0,144,2,115,101,119, + 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,116, + 24,160,25,100,34,124,12,124,0,161,3,1,0,124,11,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,119, + 0,41,35,78,122,21,99,97,110,39,116,32,111,112,101,110, + 32,90,105,112,32,102,105,108,101,58,32,114,13,0,0,0, + 114,94,0,0,0,250,21,99,97,110,39,116,32,114,101,97, + 100,32,90,105,112,32,102,105,108,101,58,32,233,4,0,0, + 0,114,0,0,0,0,122,16,110,111,116,32,97,32,90,105, + 112,32,102,105,108,101,58,32,122,18,99,111,114,114,117,112, + 116,32,90,105,112,32,102,105,108,101,58,32,233,12,0,0, + 0,233,16,0,0,0,233,20,0,0,0,122,28,98,97,100, + 32,99,101,110,116,114,97,108,32,100,105,114,101,99,116,111, + 114,121,32,115,105,122,101,58,32,122,30,98,97,100,32,99, + 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, + 32,111,102,102,115,101,116,58,32,122,38,98,97,100,32,99, + 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, + 32,115,105,122,101,32,111,114,32,111,102,102,115,101,116,58, + 32,84,233,46,0,0,0,250,27,69,79,70,32,114,101,97, + 100,32,119,104,101,114,101,32,110,111,116,32,101,120,112,101, + 99,116,101,100,115,4,0,0,0,80,75,1,2,233,8,0, + 0,0,233,10,0,0,0,233,14,0,0,0,233,24,0,0, + 0,233,28,0,0,0,233,30,0,0,0,233,32,0,0,0, + 233,34,0,0,0,233,42,0,0,0,122,25,98,97,100,32, + 108,111,99,97,108,32,104,101,97,100,101,114,32,111,102,102, + 115,101,116,58,32,105,0,8,0,0,218,5,97,115,99,105, + 105,90,6,108,97,116,105,110,49,250,1,47,114,5,0,0, + 0,122,33,122,105,112,105,109,112,111,114,116,58,32,102,111, + 117,110,100,32,123,125,32,110,97,109,101,115,32,105,110,32, + 123,33,114,125,41,26,218,3,95,105,111,218,9,111,112,101, + 110,95,99,111,100,101,114,23,0,0,0,114,3,0,0,0, + 218,4,115,101,101,107,218,20,69,78,68,95,67,69,78,84, + 82,65,76,95,68,73,82,95,83,73,90,69,90,4,116,101, + 108,108,218,4,114,101,97,100,114,59,0,0,0,218,18,83, + 84,82,73,78,71,95,69,78,68,95,65,82,67,72,73,86, + 69,218,3,109,97,120,218,15,77,65,88,95,67,79,77,77, + 69,78,84,95,76,69,78,218,5,114,102,105,110,100,114,2, + 0,0,0,218,8,69,79,70,69,114,114,111,114,114,1,0, + 0,0,114,69,0,0,0,218,18,85,110,105,99,111,100,101, + 68,101,99,111,100,101,69,114,114,111,114,218,9,116,114,97, + 110,115,108,97,116,101,218,11,99,112,52,51,55,95,116,97, + 98,108,101,114,20,0,0,0,114,21,0,0,0,114,22,0, + 0,0,114,31,0,0,0,114,49,0,0,0,114,82,0,0, + 0,41,26,114,30,0,0,0,218,2,102,112,90,15,104,101, + 97,100,101,114,95,112,111,115,105,116,105,111,110,218,6,98, + 117,102,102,101,114,218,9,102,105,108,101,95,115,105,122,101, + 90,17,109,97,120,95,99,111,109,109,101,110,116,95,115,116, + 97,114,116,218,4,100,97,116,97,90,3,112,111,115,218,11, + 104,101,97,100,101,114,95,115,105,122,101,90,13,104,101,97, + 100,101,114,95,111,102,102,115,101,116,90,10,97,114,99,95, + 111,102,102,115,101,116,114,34,0,0,0,218,5,99,111,117, + 110,116,218,5,102,108,97,103,115,218,8,99,111,109,112,114, + 101,115,115,218,4,116,105,109,101,218,4,100,97,116,101,218, + 3,99,114,99,218,9,100,97,116,97,95,115,105,122,101,218, + 9,110,97,109,101,95,115,105,122,101,218,10,101,120,116,114, + 97,95,115,105,122,101,90,12,99,111,109,109,101,110,116,95, + 115,105,122,101,218,11,102,105,108,101,95,111,102,102,115,101, + 116,114,48,0,0,0,114,14,0,0,0,218,1,116,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,114,10,0,0,0,114,28,0, + 0,0,146,1,0,0,115,16,1,0,0,2,1,12,1,2, + 128,14,1,18,1,2,128,6,2,2,1,14,1,8,1,12, + 1,2,128,14,1,18,1,2,128,12,1,18,1,16,1,2, + 3,12,1,10,1,2,128,14,1,10,1,2,1,6,255,2, + 128,8,2,2,1,2,255,2,1,4,255,2,2,10,1,10, + 1,2,128,14,1,10,1,2,1,6,255,2,128,10,2,8, + 1,10,1,2,1,6,255,16,2,12,1,10,1,2,1,6, + 255,16,2,16,2,16,1,8,1,18,1,8,1,18,1,8, + 1,8,1,10,1,18,1,4,2,4,2,2,1,12,1,2, + 128,14,1,18,1,2,128,2,1,10,1,14,1,8,1,18, + 2,4,1,14,1,8,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,16,1,16,1,12,1,10, + 1,18,1,8,1,2,2,12,1,2,128,14,1,18,1,2, + 128,14,1,18,1,2,4,28,1,18,1,2,255,2,128,14, + 2,18,1,2,128,10,2,10,2,2,3,12,1,2,128,14, + 1,20,1,2,128,12,2,12,1,20,1,8,1,8,1,4, + 202,2,6,12,196,24,128,14,109,4,1,2,247,2,246,2, + 246,2,227,2,227,2,248,2,246,2,248,115,235,0,0,0, + 129,5,7,0,135,17,24,7,155,1,73,31,3,157,16,46, + 2,173,1,73,31,3,174,17,63,9,191,24,73,31,3,193, + 24,10,65,35,2,193,34,1,73,31,3,193,35,17,65,52, + 9,193,52,10,73,31,3,193,63,9,66,9,2,194,8,1, + 73,31,3,194,9,17,66,26,9,194,26,65,54,73,31,3, + 196,17,5,68,23,2,196,22,1,73,31,3,196,23,17,68, + 40,9,196,40,66,24,73,31,3,199,1,5,71,7,2,199, + 6,1,73,31,3,199,7,17,71,24,9,199,24,17,73,31, + 3,199,42,23,72,2,2,200,1,1,73,31,3,200,2,17, + 72,19,9,200,19,11,73,31,3,200,31,5,72,37,2,200, + 36,1,73,31,3,200,37,16,72,55,9,200,53,35,73,31, + 3,201,31,5,73,36,11,201,37,3,73,36,11,201,52,1, + 72,55,9,201,53,1,72,19,9,201,54,1,71,24,9,201, + 55,1,68,40,9,201,56,1,66,26,9,201,57,1,65,52, + 9,201,58,1,63,9,201,59,1,24,7,114,28,0,0,0, + 117,190,1,0,0,0,1,2,3,4,5,6,7,8,9,10, + 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42, + 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, + 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, + 75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, + 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106, + 107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122, + 123,124,125,126,127,195,135,195,188,195,169,195,162,195,164,195, + 160,195,165,195,167,195,170,195,171,195,168,195,175,195,174,195, + 172,195,132,195,133,195,137,195,166,195,134,195,180,195,182,195, + 178,195,187,195,185,195,191,195,150,195,156,194,162,194,163,194, + 165,226,130,167,198,146,195,161,195,173,195,179,195,186,195,177, + 195,145,194,170,194,186,194,191,226,140,144,194,172,194,189,194, + 188,194,161,194,171,194,187,226,150,145,226,150,146,226,150,147, + 226,148,130,226,148,164,226,149,161,226,149,162,226,149,150,226, + 149,149,226,149,163,226,149,145,226,149,151,226,149,157,226,149, + 156,226,149,155,226,148,144,226,148,148,226,148,180,226,148,172, + 226,148,156,226,148,128,226,148,188,226,149,158,226,149,159,226, + 149,154,226,149,148,226,149,169,226,149,166,226,149,160,226,149, + 144,226,149,172,226,149,167,226,149,168,226,149,164,226,149,165, + 226,149,153,226,149,152,226,149,146,226,149,147,226,149,171,226, + 149,170,226,148,152,226,148,140,226,150,136,226,150,132,226,150, + 140,226,150,144,226,150,128,206,177,195,159,206,147,207,128,206, + 163,207,131,194,181,207,132,206,166,206,152,206,169,206,180,226, + 136,158,207,134,206,181,226,136,169,226,137,161,194,177,226,137, + 165,226,137,164,226,140,160,226,140,161,195,183,226,137,136,194, + 176,226,136,153,194,183,226,136,154,226,129,191,194,178,226,150, + 160,194,160,99,0,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,67,0,0,0,115,110,0,0,0,116,0,114, + 11,116,1,160,2,100,1,161,1,1,0,116,3,100,2,131, + 1,130,1,100,3,97,0,9,0,100,4,100,5,108,4,109, + 5,125,0,1,0,110,17,35,0,4,0,116,6,121,54,1, + 0,1,0,1,0,116,1,160,2,100,1,161,1,1,0,116, + 3,100,2,131,1,130,1,37,0,9,0,100,6,97,0,110, + 5,35,0,100,6,97,0,119,0,37,0,116,1,160,2,100, + 7,161,1,1,0,124,0,83,0,119,0,41,8,78,122,27, + 122,105,112,105,109,112,111,114,116,58,32,122,108,105,98,32, + 85,78,65,86,65,73,76,65,66,76,69,250,41,99,97,110, + 39,116,32,100,101,99,111,109,112,114,101,115,115,32,100,97, + 116,97,59,32,122,108,105,98,32,110,111,116,32,97,118,97, + 105,108,97,98,108,101,84,114,0,0,0,0,169,1,218,10, + 100,101,99,111,109,112,114,101,115,115,70,122,25,122,105,112, + 105,109,112,111,114,116,58,32,122,108,105,98,32,97,118,97, + 105,108,97,98,108,101,41,7,218,15,95,105,109,112,111,114, + 116,105,110,103,95,122,108,105,98,114,49,0,0,0,114,82, + 0,0,0,114,3,0,0,0,90,4,122,108,105,98,114,148, + 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,147, + 0,0,0,32,114,10,0,0,0,218,20,95,103,101,116,95, + 100,101,99,111,109,112,114,101,115,115,95,102,117,110,99,48, + 2,0,0,115,36,0,0,0,4,2,10,3,8,1,4,2, + 2,1,14,1,2,128,12,1,10,1,8,1,2,128,2,253, + 6,5,2,128,8,0,10,2,4,1,2,249,115,24,0,0, + 0,142,6,21,0,148,1,42,0,149,16,37,7,165,1,42, + 0,170,4,46,7,182,1,37,7,114,151,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, + 0,0,0,115,132,1,0,0,124,1,92,8,125,2,125,3, + 125,4,125,5,125,6,125,7,125,8,125,9,124,4,100,1, + 107,0,114,18,116,0,100,2,131,1,130,1,116,1,160,2, + 124,0,161,1,53,0,125,10,9,0,124,10,160,3,124,6, + 161,1,1,0,110,17,35,0,4,0,116,4,121,193,1,0, + 1,0,1,0,116,0,100,3,124,0,155,2,157,2,124,0, + 100,4,141,2,130,1,37,0,124,10,160,5,100,5,161,1, + 125,11,116,6,124,11,131,1,100,5,107,3,114,63,116,7, + 100,6,131,1,130,1,124,11,100,0,100,7,133,2,25,0, + 100,8,107,3,114,80,116,0,100,9,124,0,155,2,157,2, + 124,0,100,4,141,2,130,1,116,8,124,11,100,10,100,11, + 133,2,25,0,131,1,125,12,116,8,124,11,100,11,100,5, + 133,2,25,0,131,1,125,13,100,5,124,12,23,0,124,13, + 23,0,125,14,124,6,124,14,55,0,125,6,9,0,124,10, + 160,3,124,6,161,1,1,0,110,17,35,0,4,0,116,4, + 121,192,1,0,1,0,1,0,116,0,100,3,124,0,155,2, + 157,2,124,0,100,4,141,2,130,1,37,0,124,10,160,5, + 124,4,161,1,125,15,116,6,124,15,131,1,124,4,107,3, + 114,145,116,4,100,12,131,1,130,1,9,0,100,0,4,0, + 4,0,131,3,1,0,110,11,35,0,49,0,115,157,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,3, + 100,1,107,2,114,169,124,15,83,0,9,0,116,9,131,0, + 125,16,110,12,35,0,4,0,116,10,121,191,1,0,1,0, + 1,0,116,0,100,13,131,1,130,1,37,0,124,16,124,15, + 100,14,131,2,83,0,119,0,119,0,119,0,41,15,78,114, + 0,0,0,0,122,18,110,101,103,97,116,105,118,101,32,100, + 97,116,97,32,115,105,122,101,114,99,0,0,0,114,13,0, + 0,0,114,111,0,0,0,114,105,0,0,0,114,100,0,0, + 0,115,4,0,0,0,80,75,3,4,122,23,98,97,100,32, + 108,111,99,97,108,32,102,105,108,101,32,104,101,97,100,101, + 114,58,32,233,26,0,0,0,114,110,0,0,0,122,26,122, + 105,112,105,109,112,111,114,116,58,32,99,97,110,39,116,32, + 114,101,97,100,32,100,97,116,97,114,146,0,0,0,105,241, + 255,255,255,41,11,114,3,0,0,0,114,117,0,0,0,114, + 118,0,0,0,114,119,0,0,0,114,23,0,0,0,114,121, + 0,0,0,114,59,0,0,0,114,126,0,0,0,114,1,0, + 0,0,114,151,0,0,0,114,150,0,0,0,41,17,114,30, + 0,0,0,114,62,0,0,0,90,8,100,97,116,97,112,97, + 116,104,114,137,0,0,0,114,141,0,0,0,114,132,0,0, + 0,114,144,0,0,0,114,138,0,0,0,114,139,0,0,0, + 114,140,0,0,0,114,130,0,0,0,114,131,0,0,0,114, + 142,0,0,0,114,143,0,0,0,114,134,0,0,0,90,8, + 114,97,119,95,100,97,116,97,114,148,0,0,0,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,10, + 0,0,0,114,60,0,0,0,69,2,0,0,115,86,0,0, + 0,20,1,8,1,8,1,12,2,2,2,12,1,2,128,12, + 1,18,1,2,128,10,1,12,1,8,1,16,2,18,2,16, + 2,16,1,12,1,8,1,2,1,12,1,2,128,12,1,18, + 1,2,128,10,1,12,1,8,1,2,255,12,233,22,128,8, + 26,4,2,2,3,8,1,2,128,12,1,8,1,2,128,10, + 1,2,254,2,243,2,240,115,88,0,0,0,151,1,66,24, + 3,153,5,31,2,158,1,66,24,3,159,16,47,9,175,59, + 66,24,3,193,43,5,65,49,2,193,48,1,66,24,3,193, + 49,16,66,1,9,194,1,16,66,24,3,194,24,4,66,28, + 11,194,29,3,66,28,11,194,42,3,66,46,0,194,46,11, + 66,57,7,194,63,1,66,57,7,195,0,1,66,1,9,195, + 1,1,47,9,114,60,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,16, + 0,0,0,116,0,124,0,124,1,24,0,131,1,100,1,107, + 1,83,0,41,2,78,114,5,0,0,0,41,1,218,3,97, + 98,115,41,2,90,2,116,49,90,2,116,50,32,32,114,10, + 0,0,0,218,9,95,101,113,95,109,116,105,109,101,115,2, + 0,0,115,2,0,0,0,16,2,114,11,0,0,0,114,154, + 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, + 6,0,0,0,67,0,0,0,115,254,0,0,0,124,3,124, + 2,100,1,156,2,125,5,116,0,160,1,124,4,124,3,124, + 5,161,3,125,6,124,6,100,2,64,0,100,3,107,3,125, + 7,124,7,114,63,124,6,100,4,64,0,100,3,107,3,125, + 8,116,2,106,3,100,5,107,3,114,62,124,8,115,38,116, + 2,106,3,100,6,107,2,114,62,116,4,124,0,124,2,131, + 2,125,9,124,9,100,0,117,1,114,62,116,2,160,5,116, + 0,106,6,124,9,161,2,125,10,116,0,160,7,124,4,124, + 10,124,3,124,5,161,4,1,0,110,40,116,8,124,0,124, + 2,131,2,92,2,125,11,125,12,124,11,114,103,116,9,116, + 10,124,4,100,7,100,8,133,2,25,0,131,1,124,11,131, + 2,114,93,116,10,124,4,100,8,100,9,133,2,25,0,131, + 1,124,12,107,3,114,103,116,11,160,12,100,10,124,3,155, + 2,157,2,161,1,1,0,100,0,83,0,116,13,160,14,124, + 4,100,9,100,0,133,2,25,0,161,1,125,13,116,15,124, + 13,116,16,131,2,115,125,116,17,100,11,124,1,155,2,100, + 12,157,3,131,1,130,1,124,13,83,0,41,13,78,41,2, + 114,48,0,0,0,114,14,0,0,0,114,5,0,0,0,114, + 0,0,0,0,114,94,0,0,0,90,5,110,101,118,101,114, + 90,6,97,108,119,97,121,115,114,106,0,0,0,114,101,0, + 0,0,114,102,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,122, + 16,99,111,109,112,105,108,101,100,32,109,111,100,117,108,101, + 32,122,21,32,105,115,32,110,111,116,32,97,32,99,111,100, + 101,32,111,98,106,101,99,116,41,18,114,22,0,0,0,90, + 13,95,99,108,97,115,115,105,102,121,95,112,121,99,218,4, + 95,105,109,112,90,21,99,104,101,99,107,95,104,97,115,104, + 95,98,97,115,101,100,95,112,121,99,115,218,15,95,103,101, + 116,95,112,121,99,95,115,111,117,114,99,101,218,11,115,111, + 117,114,99,101,95,104,97,115,104,90,17,95,82,65,87,95, + 77,65,71,73,67,95,78,85,77,66,69,82,90,18,95,118, + 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, + 218,29,95,103,101,116,95,109,116,105,109,101,95,97,110,100, + 95,115,105,122,101,95,111,102,95,115,111,117,114,99,101,114, + 154,0,0,0,114,2,0,0,0,114,49,0,0,0,114,82, + 0,0,0,218,7,109,97,114,115,104,97,108,90,5,108,111, + 97,100,115,114,16,0,0,0,218,10,95,99,111,100,101,95, + 116,121,112,101,218,9,84,121,112,101,69,114,114,111,114,41, + 14,114,33,0,0,0,114,61,0,0,0,114,70,0,0,0, + 114,42,0,0,0,114,133,0,0,0,90,11,101,120,99,95, + 100,101,116,97,105,108,115,114,136,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,90,12,115,111,117,114,99,101,95,98, + 121,116,101,115,114,157,0,0,0,90,12,115,111,117,114,99, + 101,95,109,116,105,109,101,90,11,115,111,117,114,99,101,95, + 115,105,122,101,114,54,0,0,0,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,114,10,0,0,0,218,15,95,117, + 110,109,97,114,115,104,97,108,95,99,111,100,101,123,2,0, + 0,115,72,0,0,0,2,2,2,1,6,254,14,5,12,2, + 4,1,12,1,10,1,2,1,2,255,8,1,2,255,10,2, + 8,1,4,1,4,1,2,1,4,254,4,5,8,1,4,255, + 2,128,8,4,6,255,4,3,22,3,18,1,2,255,4,2, + 8,1,4,255,4,2,18,2,10,1,16,1,4,1,114,11, + 0,0,0,114,162,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,28,0, + 0,0,124,0,160,0,100,1,100,2,161,2,125,0,124,0, + 160,0,100,3,100,2,161,2,125,0,124,0,83,0,41,4, + 78,115,2,0,0,0,13,10,243,1,0,0,0,10,243,1, + 0,0,0,13,41,1,114,20,0,0,0,41,1,218,6,115, + 111,117,114,99,101,32,114,10,0,0,0,218,23,95,110,111, + 114,109,97,108,105,122,101,95,108,105,110,101,95,101,110,100, + 105,110,103,115,168,2,0,0,115,6,0,0,0,12,1,12, + 1,4,1,114,11,0,0,0,114,166,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,6,0,0,0,67,0, + 0,0,115,24,0,0,0,116,0,124,1,131,1,125,1,116, + 1,124,1,124,0,100,1,100,2,100,3,141,4,83,0,41, + 4,78,114,80,0,0,0,84,41,1,90,12,100,111,110,116, + 95,105,110,104,101,114,105,116,41,2,114,166,0,0,0,218, + 7,99,111,109,112,105,108,101,41,2,114,61,0,0,0,114, + 165,0,0,0,32,32,114,10,0,0,0,218,15,95,99,111, + 109,112,105,108,101,95,115,111,117,114,99,101,175,2,0,0, + 115,4,0,0,0,8,1,16,1,114,11,0,0,0,114,168, 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 8,0,0,0,67,0,0,0,115,82,0,0,0,124,1,100, - 1,100,0,133,2,25,0,100,2,118,0,115,10,74,0,130, - 1,124,1,100,0,100,1,133,2,25,0,125,1,9,0,124, - 0,106,0,124,1,25,0,125,2,110,11,35,0,4,0,116, - 1,121,40,1,0,1,0,1,0,89,0,100,0,83,0,37, - 0,116,2,124,0,106,3,124,2,131,2,83,0,119,0,41, - 3,78,114,15,0,0,0,114,177,0,0,0,41,4,114,29, - 0,0,0,114,27,0,0,0,114,60,0,0,0,114,30,0, - 0,0,41,3,114,33,0,0,0,114,14,0,0,0,114,62, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,156,0,0,0,213,2,0,0,115,20,0,0,0, - 20,2,12,1,2,2,12,1,2,128,12,1,6,1,2,128, - 12,2,2,253,115,12,0,0,0,145,5,23,0,151,7,33, - 7,168,1,33,7,114,156,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, - 14,1,0,0,116,0,124,0,124,1,131,2,125,2,100,0, - 125,3,116,1,68,0,93,100,92,3,125,4,125,5,125,6, - 124,2,124,4,23,0,125,7,116,2,160,3,100,1,124,0, - 106,4,116,5,124,7,100,2,100,3,166,5,1,0,9,0, - 124,0,106,6,124,7,25,0,125,8,110,10,35,0,4,0, - 116,7,121,134,1,0,1,0,1,0,89,0,113,9,37,0, - 124,8,100,4,25,0,125,9,116,8,124,0,106,4,124,8, - 131,2,125,10,100,0,125,11,124,5,114,89,9,0,116,9, - 124,0,124,9,124,7,124,1,124,10,131,5,125,11,110,24, - 35,0,4,0,116,10,121,133,1,0,125,12,1,0,124,12, - 125,3,89,0,100,0,125,12,126,12,110,10,100,0,125,12, - 126,12,119,1,37,0,116,11,124,9,124,10,131,2,125,11, - 124,11,100,0,117,0,114,99,113,9,124,8,100,4,25,0, - 125,9,124,11,124,6,124,9,102,3,2,0,1,0,83,0, - 124,3,114,124,100,5,124,3,155,0,157,2,125,13,116,12, - 124,13,124,1,100,6,141,2,124,3,130,2,116,12,100,7, - 124,1,155,2,157,2,124,1,100,6,141,2,130,1,119,0, - 119,0,41,8,78,122,13,116,114,121,105,110,103,32,123,125, - 123,125,123,125,114,94,0,0,0,41,1,90,9,118,101,114, - 98,111,115,105,116,121,114,0,0,0,0,122,20,109,111,100, - 117,108,101,32,108,111,97,100,32,102,97,105,108,101,100,58, - 32,114,66,0,0,0,114,65,0,0,0,41,13,114,40,0, - 0,0,114,96,0,0,0,114,49,0,0,0,114,82,0,0, - 0,114,30,0,0,0,114,21,0,0,0,114,29,0,0,0, - 114,27,0,0,0,114,60,0,0,0,114,162,0,0,0,114, - 81,0,0,0,114,168,0,0,0,114,3,0,0,0,41,14, - 114,33,0,0,0,114,42,0,0,0,114,14,0,0,0,90, - 12,105,109,112,111,114,116,95,101,114,114,111,114,114,97,0, - 0,0,114,98,0,0,0,114,55,0,0,0,114,70,0,0, - 0,114,62,0,0,0,114,44,0,0,0,114,133,0,0,0, - 114,54,0,0,0,90,3,101,120,99,114,83,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,52, - 0,0,0,228,2,0,0,115,64,0,0,0,10,1,4,1, - 14,1,8,1,22,1,2,1,12,1,2,128,12,1,4,1, - 2,128,8,2,12,1,4,1,4,1,2,1,18,1,2,128, - 12,1,14,1,10,128,10,2,8,1,2,3,8,1,14,1, - 4,2,10,1,14,1,18,2,2,241,2,247,115,42,0,0, - 0,158,5,36,2,164,7,45,9,189,8,65,6,2,193,6, - 7,65,24,9,193,13,2,65,20,9,193,20,4,65,24,9, - 194,5,1,65,24,9,194,6,1,45,9,114,52,0,0,0, - 41,46,114,92,0,0,0,90,26,95,102,114,111,122,101,110, - 95,105,109,112,111,114,116,108,105,98,95,101,120,116,101,114, - 110,97,108,114,22,0,0,0,114,1,0,0,0,114,2,0, - 0,0,90,17,95,102,114,111,122,101,110,95,105,109,112,111, - 114,116,108,105,98,114,49,0,0,0,114,155,0,0,0,114, - 117,0,0,0,114,159,0,0,0,114,73,0,0,0,114,138, - 0,0,0,114,36,0,0,0,90,7,95,95,97,108,108,95, - 95,114,21,0,0,0,90,15,112,97,116,104,95,115,101,112, - 97,114,97,116,111,114,115,114,19,0,0,0,114,81,0,0, - 0,114,3,0,0,0,114,26,0,0,0,218,4,116,121,112, - 101,114,76,0,0,0,114,120,0,0,0,114,122,0,0,0, - 114,124,0,0,0,90,13,95,76,111,97,100,101,114,66,97, - 115,105,99,115,114,4,0,0,0,114,96,0,0,0,114,40, - 0,0,0,114,41,0,0,0,114,39,0,0,0,114,28,0, - 0,0,114,129,0,0,0,114,149,0,0,0,114,151,0,0, - 0,114,60,0,0,0,114,154,0,0,0,114,162,0,0,0, - 218,8,95,95,99,111,100,101,95,95,114,160,0,0,0,114, - 166,0,0,0,114,168,0,0,0,114,176,0,0,0,114,158, - 0,0,0,114,156,0,0,0,114,52,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,218,8,60,109,111,100,117,108,101,62,1,0,0,0,115, - 90,0,0,0,4,0,8,16,16,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,1,8,2,6,3,14,1,16,3, - 4,4,8,2,4,2,4,1,4,1,18,2,0,127,0,127, - 12,50,12,1,2,1,2,1,4,252,8,9,8,4,8,9, - 8,31,2,126,2,254,4,29,8,5,8,21,8,46,8,8, - 10,40,8,5,8,7,8,6,8,13,8,19,12,15,114,11, - 0,0,0, + 11,0,0,0,67,0,0,0,115,68,0,0,0,116,0,160, + 1,124,0,100,1,63,0,100,2,23,0,124,0,100,3,63, + 0,100,4,64,0,124,0,100,5,64,0,124,1,100,6,63, + 0,124,1,100,3,63,0,100,7,64,0,124,1,100,5,64, + 0,100,8,20,0,100,9,100,9,100,9,102,9,161,1,83, + 0,41,10,78,233,9,0,0,0,105,188,7,0,0,233,5, + 0,0,0,233,15,0,0,0,233,31,0,0,0,233,11,0, + 0,0,233,63,0,0,0,114,94,0,0,0,114,15,0,0, + 0,41,2,114,138,0,0,0,90,6,109,107,116,105,109,101, + 41,2,218,1,100,114,145,0,0,0,32,32,114,10,0,0, + 0,218,14,95,112,97,114,115,101,95,100,111,115,116,105,109, + 101,181,2,0,0,115,18,0,0,0,4,1,10,1,10,1, + 6,1,6,1,10,1,10,1,6,1,6,249,114,11,0,0, + 0,114,176,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,10,0,0,0,67,0,0,0,115,112,0,0,0, + 9,0,124,1,100,1,100,0,133,2,25,0,100,2,118,0, + 115,11,74,0,130,1,124,1,100,0,100,1,133,2,25,0, + 125,1,124,0,106,0,124,1,25,0,125,2,124,2,100,3, + 25,0,125,3,124,2,100,4,25,0,125,4,124,2,100,5, + 25,0,125,5,116,1,124,4,124,3,131,2,124,5,102,2, + 83,0,35,0,4,0,116,2,116,3,116,4,102,3,121,55, + 1,0,1,0,1,0,89,0,100,6,83,0,37,0,119,0, + 41,7,78,114,15,0,0,0,169,2,218,1,99,218,1,111, + 114,170,0,0,0,233,6,0,0,0,233,3,0,0,0,41, + 2,114,0,0,0,0,114,0,0,0,0,41,5,114,29,0, + 0,0,114,176,0,0,0,114,27,0,0,0,218,10,73,110, + 100,101,120,69,114,114,111,114,114,161,0,0,0,41,6,114, + 33,0,0,0,114,14,0,0,0,114,62,0,0,0,114,138, + 0,0,0,114,139,0,0,0,90,17,117,110,99,111,109,112, + 114,101,115,115,101,100,95,115,105,122,101,32,32,32,32,32, + 32,114,10,0,0,0,114,158,0,0,0,194,2,0,0,115, + 26,0,0,0,2,1,20,2,12,1,10,1,8,3,8,1, + 8,1,14,1,2,128,18,1,6,1,2,128,2,255,115,12, + 0,0,0,129,39,41,0,169,10,54,7,183,1,54,7,114, + 158,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,67,0,0,0,115,82,0,0,0,124,1, + 100,1,100,0,133,2,25,0,100,2,118,0,115,10,74,0, + 130,1,124,1,100,0,100,1,133,2,25,0,125,1,9,0, + 124,0,106,0,124,1,25,0,125,2,110,11,35,0,4,0, + 116,1,121,40,1,0,1,0,1,0,89,0,100,0,83,0, + 37,0,116,2,124,0,106,3,124,2,131,2,83,0,119,0, + 41,3,78,114,15,0,0,0,114,177,0,0,0,41,4,114, + 29,0,0,0,114,27,0,0,0,114,60,0,0,0,114,30, + 0,0,0,41,3,114,33,0,0,0,114,14,0,0,0,114, + 62,0,0,0,32,32,32,114,10,0,0,0,114,156,0,0, + 0,213,2,0,0,115,20,0,0,0,20,2,12,1,2,2, + 12,1,2,128,12,1,6,1,2,128,12,2,2,253,115,12, + 0,0,0,145,5,23,0,151,7,33,7,168,1,33,7,114, + 156,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,9,0,0,0,67,0,0,0,115,14,1,0,0,116,0, + 124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,0, + 93,100,92,3,125,4,125,5,125,6,124,2,124,4,23,0, + 125,7,116,2,160,3,100,1,124,0,106,4,116,5,124,7, + 100,2,100,3,166,5,1,0,9,0,124,0,106,6,124,7, + 25,0,125,8,110,10,35,0,4,0,116,7,121,134,1,0, + 1,0,1,0,89,0,113,9,37,0,124,8,100,4,25,0, + 125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,0, + 125,11,124,5,114,89,9,0,116,9,124,0,124,9,124,7, + 124,1,124,10,131,5,125,11,110,24,35,0,4,0,116,10, + 121,133,1,0,125,12,1,0,124,12,125,3,89,0,100,0, + 125,12,126,12,110,10,100,0,125,12,126,12,119,1,37,0, + 116,11,124,9,124,10,131,2,125,11,124,11,100,0,117,0, + 114,99,113,9,124,8,100,4,25,0,125,9,124,11,124,6, + 124,9,102,3,2,0,1,0,83,0,124,3,114,124,100,5, + 124,3,155,0,157,2,125,13,116,12,124,13,124,1,100,6, + 141,2,124,3,130,2,116,12,100,7,124,1,155,2,157,2, + 124,1,100,6,141,2,130,1,119,0,119,0,41,8,78,122, + 13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,94, + 0,0,0,41,1,90,9,118,101,114,98,111,115,105,116,121, + 114,0,0,0,0,122,20,109,111,100,117,108,101,32,108,111, + 97,100,32,102,97,105,108,101,100,58,32,114,66,0,0,0, + 114,65,0,0,0,41,13,114,40,0,0,0,114,96,0,0, + 0,114,49,0,0,0,114,82,0,0,0,114,30,0,0,0, + 114,21,0,0,0,114,29,0,0,0,114,27,0,0,0,114, + 60,0,0,0,114,162,0,0,0,114,81,0,0,0,114,168, + 0,0,0,114,3,0,0,0,41,14,114,33,0,0,0,114, + 42,0,0,0,114,14,0,0,0,90,12,105,109,112,111,114, + 116,95,101,114,114,111,114,114,97,0,0,0,114,98,0,0, + 0,114,55,0,0,0,114,70,0,0,0,114,62,0,0,0, + 114,44,0,0,0,114,133,0,0,0,114,54,0,0,0,90, + 3,101,120,99,114,83,0,0,0,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,114,10,0,0,0,114,52,0,0, + 0,228,2,0,0,115,64,0,0,0,10,1,4,1,14,1, + 8,1,22,1,2,1,12,1,2,128,12,1,4,1,2,128, + 8,2,12,1,4,1,4,1,2,1,18,1,2,128,12,1, + 14,1,10,128,10,2,8,1,2,3,8,1,14,1,4,2, + 10,1,14,1,18,2,2,241,2,247,115,42,0,0,0,158, + 5,36,2,164,7,45,9,189,8,65,6,2,193,6,7,65, + 24,9,193,13,2,65,20,9,193,20,4,65,24,9,194,5, + 1,65,24,9,194,6,1,45,9,114,52,0,0,0,41,46, + 114,92,0,0,0,90,26,95,102,114,111,122,101,110,95,105, + 109,112,111,114,116,108,105,98,95,101,120,116,101,114,110,97, + 108,114,22,0,0,0,114,1,0,0,0,114,2,0,0,0, + 90,17,95,102,114,111,122,101,110,95,105,109,112,111,114,116, + 108,105,98,114,49,0,0,0,114,155,0,0,0,114,117,0, + 0,0,114,159,0,0,0,114,73,0,0,0,114,138,0,0, + 0,114,36,0,0,0,90,7,95,95,97,108,108,95,95,114, + 21,0,0,0,90,15,112,97,116,104,95,115,101,112,97,114, + 97,116,111,114,115,114,19,0,0,0,114,81,0,0,0,114, + 3,0,0,0,114,26,0,0,0,218,4,116,121,112,101,114, + 76,0,0,0,114,120,0,0,0,114,122,0,0,0,114,124, + 0,0,0,90,13,95,76,111,97,100,101,114,66,97,115,105, + 99,115,114,4,0,0,0,114,96,0,0,0,114,40,0,0, + 0,114,41,0,0,0,114,39,0,0,0,114,28,0,0,0, + 114,129,0,0,0,114,149,0,0,0,114,151,0,0,0,114, + 60,0,0,0,114,154,0,0,0,114,162,0,0,0,218,8, + 95,95,99,111,100,101,95,95,114,160,0,0,0,114,166,0, + 0,0,114,168,0,0,0,114,176,0,0,0,114,158,0,0, + 0,114,156,0,0,0,114,52,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,8,60,109,111,100,117,108,101,62,1, + 0,0,0,115,90,0,0,0,4,0,8,16,16,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,2,6,3, + 14,1,16,3,4,4,8,2,4,2,4,1,4,1,18,2, + 0,127,0,127,12,50,12,1,2,1,2,1,4,252,8,9, + 8,4,8,9,8,31,2,126,2,254,4,29,8,5,8,21, + 8,46,8,8,10,40,8,5,8,7,8,6,8,13,8,19, + 12,15,114,11,0,0,0, }; diff --git a/Python/marshal.c b/Python/marshal.c index 52bf2a51aaaec0..80517b3d65d41a 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -518,9 +518,8 @@ w_complex_object(PyObject *v, char flag, WFILE *p) w_object(co->co_code, p); w_object(co->co_consts, p); w_object(co->co_names, p); - w_object(co->co_varnames, p); - w_object(co->co_freevars, p); - w_object(co->co_cellvars, p); + w_object(co->co_localsplusnames, p); + w_string(co->co_localspluskinds, co->co_nlocalsplus, p); w_object(co->co_filename, p); w_object(co->co_name, p); w_long(co->co_firstlineno, p); @@ -1306,9 +1305,8 @@ r_object(RFILE *p) PyObject *code = NULL; PyObject *consts = NULL; PyObject *names = NULL; - PyObject *varnames = NULL; - PyObject *freevars = NULL; - PyObject *cellvars = NULL; + PyObject *localsplusnames = NULL; + _PyLocalsPlusKinds localspluskinds = NULL; PyObject *filename = NULL; PyObject *name = NULL; int firstlineno; @@ -1347,16 +1345,22 @@ r_object(RFILE *p) names = r_object(p); if (names == NULL) goto code_error; - varnames = r_object(p); - if (varnames == NULL) - goto code_error; - Py_ssize_t nlocals = PyTuple_GET_SIZE(varnames); - freevars = r_object(p); - if (freevars == NULL) - goto code_error; - cellvars = r_object(p); - if (cellvars == NULL) + localsplusnames = r_object(p); + if (localsplusnames == NULL) goto code_error; + + assert(PyTuple_GET_SIZE(localsplusnames) < INT_MAX); + int nlocalsplus = (int)PyTuple_GET_SIZE(localsplusnames); + if (nlocalsplus) { + if (_PyCode_InitLocalsPlusKinds(nlocalsplus, + &localspluskinds) < 0) { + goto code_error; + } + for (int i = 0; i < nlocalsplus; i++) { + localspluskinds[i] = r_byte(p); + } + } + filename = r_object(p); if (filename == NULL) goto code_error; @@ -1375,7 +1379,8 @@ r_object(RFILE *p) if (PySys_Audit("code.__new__", "OOOiiiiii", code, filename, name, argcount, posonlyargcount, - kwonlyargcount, nlocals, stacksize, flags) < 0) { + kwonlyargcount, nlocalsplus, stacksize, + flags) < 0) { goto code_error; } @@ -1391,9 +1396,8 @@ r_object(RFILE *p) .consts = consts, .names = names, - .varnames = varnames, - .cellvars = cellvars, - .freevars = freevars, + .localsplusnames = localsplusnames, + .localspluskinds = localspluskinds, .argcount = argcount, .posonlyargcount = posonlyargcount, @@ -1403,22 +1407,26 @@ r_object(RFILE *p) .exceptiontable = exceptiontable, }; + if (_PyCode_Validate(&con) < 0) { goto code_error; } + v = (PyObject *)_PyCode_New(&con); if (v == NULL) { goto code_error; } + + localspluskinds = NULL; // This keeps it from getting freed below. + v = r_ref_insert(v, idx, flag, p); code_error: Py_XDECREF(code); Py_XDECREF(consts); Py_XDECREF(names); - Py_XDECREF(varnames); - Py_XDECREF(freevars); - Py_XDECREF(cellvars); + Py_XDECREF(localsplusnames); + _PyCode_ClearLocalsPlusKinds(localspluskinds); Py_XDECREF(filename); Py_XDECREF(name); Py_XDECREF(linetable); diff --git a/Python/suggestions.c b/Python/suggestions.c index 2e76551f363ed4..43c0ef09cb4bbc 100644 --- a/Python/suggestions.c +++ b/Python/suggestions.c @@ -3,6 +3,7 @@ #include "pycore_frame.h" #include "pycore_pyerrors.h" +#include "pycore_code.h" // _PyCode_GetVarnames() #define MAX_CANDIDATE_ITEMS 750 #define MAX_STRING_SIZE 40 @@ -210,8 +211,12 @@ offer_suggestions_for_name_error(PyNameErrorObject *exc) PyFrameObject *frame = traceback->tb_frame; assert(frame != NULL); PyCodeObject *code = PyFrame_GetCode(frame); - assert(code != NULL && code->co_varnames != NULL); - PyObject *dir = PySequence_List(code->co_varnames); + assert(code != NULL && code->co_localsplusnames != NULL); + PyObject *varnames = _PyCode_GetVarnames(code); + if (varnames == NULL) { + return NULL; + } + PyObject *dir = PySequence_List(varnames); Py_DECREF(code); if (dir == NULL) { return NULL; diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index c1d2cd8ced68c4..756b52c3c57a61 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -871,7 +871,8 @@ def __init__(self, gdbval, cast_to=None): self.f_lineno = int_from_int(self.field('f_lineno')) self.f_lasti = int_from_int(self.field('f_lasti')) self.co_nlocals = int_from_int(self.co.field('co_nlocals')) - self.co_varnames = PyTupleObjectPtr.from_pyobject_ptr(self.co.field('co_varnames')) + pnames = self.co.field('co_localsplusnames') + self.co_localsplusnames = PyTupleObjectPtr.from_pyobject_ptr(pnames) def iter_locals(self): ''' @@ -884,9 +885,10 @@ def iter_locals(self): f_localsplus = self.field('f_localsptr') for i in safe_range(self.co_nlocals): pyop_value = PyObjectPtr.from_pyobject_ptr(f_localsplus[i]) - if not pyop_value.is_null(): - pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_varnames[i]) - yield (pyop_name, pyop_value) + if pyop_value.is_null(): + continue + pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_localsplusnames[i]) + yield (pyop_name, pyop_value) def _f_globals(self): f_localsplus = self.field('f_localsptr') From webhook-mailer at python.org Thu Jun 3 12:38:19 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Jun 2021 16:38:19 -0000 Subject: [Python-checkins] [3.10] bpo-42972: Track sqlite3 statement objects (GH-26475) (GH-26515) Message-ID: https://github.com/python/cpython/commit/84d80f5f30b1f545083c70a7d4e1e79ab75f9fa6 commit: 84d80f5f30b1f545083c70a7d4e1e79ab75f9fa6 branch: 3.10 author: Erlend Egeberg Aasland committer: vstinner date: 2021-06-03T18:38:09+02:00 summary: [3.10] bpo-42972: Track sqlite3 statement objects (GH-26475) (GH-26515) Allocate and track statement objects in pysqlite_statement_create. By allocating and tracking creation of statement object in pysqlite_statement_create(), the caller does not need to worry about GC syncronization, and eliminates the possibility of getting a badly created object. All related fault handling is moved to pysqlite_statement_create(). Co-authored-by: Victor Stinner . (cherry picked from commit fffa0f92adaaed0bcb3907d982506f78925e9052) Co-authored-by: Erlend Egeberg Aasland files: M Modules/_sqlite/connection.c M Modules/_sqlite/cursor.c M Modules/_sqlite/statement.c M Modules/_sqlite/statement.h diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 3b287b0c5abacf..e124b17782dfe5 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1337,7 +1337,6 @@ pysqlite_connection_call(pysqlite_Connection *self, PyObject *args, PyObject* sql; pysqlite_Statement* statement; PyObject* weakref; - int rc; if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; @@ -1351,31 +1350,11 @@ pysqlite_connection_call(pysqlite_Connection *self, PyObject *args, _pysqlite_drop_unused_statement_references(self); - statement = PyObject_GC_New(pysqlite_Statement, pysqlite_StatementType); - if (!statement) { + statement = pysqlite_statement_create(self, sql); + if (statement == NULL) { return NULL; } - statement->db = NULL; - statement->st = NULL; - statement->sql = NULL; - statement->in_use = 0; - statement->in_weakreflist = NULL; - - rc = pysqlite_statement_create(statement, self, sql); - if (rc != SQLITE_OK) { - if (rc == PYSQLITE_TOO_MUCH_SQL) { - PyErr_SetString(pysqlite_Warning, "You can only execute one statement at a time."); - } else if (rc == PYSQLITE_SQL_WRONG_TYPE) { - if (PyErr_ExceptionMatches(PyExc_TypeError)) - PyErr_SetString(pysqlite_Warning, "SQL is of wrong type. Must be string."); - } else { - (void)pysqlite_statement_reset(statement); - _pysqlite_seterror(self->db, NULL); - } - goto error; - } - weakref = PyWeakref_NewRef((PyObject*)statement, NULL); if (weakref == NULL) goto error; diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 558b43a597000e..0335e98730a126 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -507,13 +507,8 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation if (self->statement->in_use) { Py_SETREF(self->statement, - PyObject_GC_New(pysqlite_Statement, pysqlite_StatementType)); - if (!self->statement) { - goto error; - } - rc = pysqlite_statement_create(self->statement, self->connection, operation); - if (rc != SQLITE_OK) { - Py_CLEAR(self->statement); + pysqlite_statement_create(self->connection, operation)); + if (self->statement == NULL) { goto error; } } diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 332bf030a9b909..e6dc4fd89528d2 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -48,7 +48,8 @@ typedef enum { TYPE_UNKNOWN } parameter_type; -int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* connection, PyObject* sql) +pysqlite_Statement * +pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) { const char* tail; int rc; @@ -56,27 +57,36 @@ int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* con Py_ssize_t sql_cstr_len; const char* p; - self->st = NULL; - self->in_use = 0; - assert(PyUnicode_Check(sql)); sql_cstr = PyUnicode_AsUTF8AndSize(sql, &sql_cstr_len); if (sql_cstr == NULL) { - rc = PYSQLITE_SQL_WRONG_TYPE; - return rc; + PyErr_Format(pysqlite_Warning, + "SQL is of wrong type ('%s'). Must be string.", + Py_TYPE(sql)->tp_name); + return NULL; } if (strlen(sql_cstr) != (size_t)sql_cstr_len) { - PyErr_SetString(PyExc_ValueError, "the query contains a null character"); - return PYSQLITE_SQL_WRONG_TYPE; + PyErr_SetString(PyExc_ValueError, + "the query contains a null character"); + return NULL; } - self->in_weakreflist = NULL; + pysqlite_Statement *self = PyObject_GC_New(pysqlite_Statement, + pysqlite_StatementType); + if (self == NULL) { + return NULL; + } + + self->db = connection->db; + self->st = NULL; self->sql = Py_NewRef(sql); + self->in_use = 0; + self->is_dml = 0; + self->in_weakreflist = NULL; /* Determine if the statement is a DML statement. SELECT is the only exception. See #9924. */ - self->is_dml = 0; for (p = sql_cstr; *p != 0; p++) { switch (*p) { case ' ': @@ -94,22 +104,33 @@ int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* con } Py_BEGIN_ALLOW_THREADS - rc = sqlite3_prepare_v2(connection->db, + rc = sqlite3_prepare_v2(self->db, sql_cstr, -1, &self->st, &tail); Py_END_ALLOW_THREADS - self->db = connection->db; + PyObject_GC_Track(self); + + if (rc != SQLITE_OK) { + _pysqlite_seterror(self->db, NULL); + goto error; + } if (rc == SQLITE_OK && pysqlite_check_remaining_sql(tail)) { (void)sqlite3_finalize(self->st); self->st = NULL; - rc = PYSQLITE_TOO_MUCH_SQL; + PyErr_SetString(pysqlite_Warning, + "You can only execute one statement at a time."); + goto error; } - return rc; + return self; + +error: + Py_DECREF(self); + return NULL; } int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter) diff --git a/Modules/_sqlite/statement.h b/Modules/_sqlite/statement.h index 56ff7271448d1c..e8c86a0ec963fd 100644 --- a/Modules/_sqlite/statement.h +++ b/Modules/_sqlite/statement.h @@ -29,9 +29,6 @@ #include "connection.h" #include "sqlite3.h" -#define PYSQLITE_TOO_MUCH_SQL (-100) -#define PYSQLITE_SQL_WRONG_TYPE (-101) - typedef struct { PyObject_HEAD @@ -45,7 +42,7 @@ typedef struct extern PyTypeObject *pysqlite_StatementType; -int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* connection, PyObject* sql); +pysqlite_Statement *pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql); int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter); void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* parameters); From webhook-mailer at python.org Thu Jun 3 12:38:29 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Jun 2021 16:38:29 -0000 Subject: [Python-checkins] bpo-42213: Remove redundant cyclic GC hack in sqlite3 (GH-26517) Message-ID: https://github.com/python/cpython/commit/d88b47b5a396aa8d66f9a0e6b13a0825d59d0eff commit: d88b47b5a396aa8d66f9a0e6b13a0825d59d0eff branch: main author: Erlend Egeberg Aasland committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-03T09:38:19-07:00 summary: bpo-42213: Remove redundant cyclic GC hack in sqlite3 (GH-26517) The sqlite3 module now fully implements the GC protocol, so there's no need for this workaround anymore. - Add and use managed resource helper for connections using TESTFN - Sort test imports - Split open-tests into their own test case Automerge-Triggered-By: GH:vstinner files: M Lib/sqlite3/test/dbapi.py M Lib/sqlite3/test/hooks.py M Modules/_sqlite/cache.c M Modules/_sqlite/cache.h M Modules/_sqlite/connection.c diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index ab3313533940a..77fafe093002e 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -20,14 +20,26 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. -import threading -import unittest +import contextlib import sqlite3 as sqlite import sys +import threading +import unittest from test.support.os_helper import TESTFN, unlink +# Helper for tests using TESTFN + at contextlib.contextmanager +def managed_connect(*args, **kwargs): + cx = sqlite.connect(*args, **kwargs) + try: + yield cx + finally: + cx.close() + unlink(TESTFN) + + class ModuleTests(unittest.TestCase): def test_api_level(self): self.assertEqual(sqlite.apilevel, "2.0", @@ -190,26 +202,27 @@ def test_in_transaction_ro(self): with self.assertRaises(AttributeError): self.cx.in_transaction = True +class OpenTests(unittest.TestCase): + _sql = "create table test(id integer)" + def test_open_with_path_like_object(self): """ Checks that we can successfully connect to a database using an object that is PathLike, i.e. has __fspath__(). """ - self.addCleanup(unlink, TESTFN) class Path: def __fspath__(self): return TESTFN path = Path() - with sqlite.connect(path) as cx: - cx.execute('create table test(id integer)') + with managed_connect(path) as cx: + cx.execute(self._sql) def test_open_uri(self): - self.addCleanup(unlink, TESTFN) - with sqlite.connect(TESTFN) as cx: - cx.execute('create table test(id integer)') - with sqlite.connect('file:' + TESTFN, uri=True) as cx: - cx.execute('insert into test(id) values(0)') - with sqlite.connect('file:' + TESTFN + '?mode=ro', uri=True) as cx: - with self.assertRaises(sqlite.OperationalError): - cx.execute('insert into test(id) values(1)') + with managed_connect(TESTFN) as cx: + cx.execute(self._sql) + with managed_connect(f"file:{TESTFN}", uri=True) as cx: + cx.execute(self._sql) + with self.assertRaises(sqlite.OperationalError): + with managed_connect(f"file:{TESTFN}?mode=ro", uri=True) as cx: + cx.execute(self._sql) class CursorTests(unittest.TestCase): diff --git a/Lib/sqlite3/test/hooks.py b/Lib/sqlite3/test/hooks.py index 8c60bdcf5d70a..520a5b9f11cd4 100644 --- a/Lib/sqlite3/test/hooks.py +++ b/Lib/sqlite3/test/hooks.py @@ -254,11 +254,15 @@ def trace(statement): self.addCleanup(unlink, TESTFN) con1 = sqlite.connect(TESTFN, isolation_level=None) con2 = sqlite.connect(TESTFN) - con1.set_trace_callback(trace) - cur = con1.cursor() - cur.execute(queries[0]) - con2.execute("create table bar(x)") - cur.execute(queries[1]) + try: + con1.set_trace_callback(trace) + cur = con1.cursor() + cur.execute(queries[0]) + con2.execute("create table bar(x)") + cur.execute(queries[1]) + finally: + con1.close() + con2.close() self.assertEqual(traced_statements, queries) diff --git a/Modules/_sqlite/cache.c b/Modules/_sqlite/cache.c index fd4e619f6a011..8196e3c578372 100644 --- a/Modules/_sqlite/cache.c +++ b/Modules/_sqlite/cache.c @@ -97,9 +97,6 @@ pysqlite_cache_init(pysqlite_Cache *self, PyObject *args, PyObject *kwargs) } self->factory = Py_NewRef(factory); - - self->decref_factory = 1; - return 0; } @@ -108,9 +105,7 @@ cache_traverse(pysqlite_Cache *self, visitproc visit, void *arg) { Py_VISIT(Py_TYPE(self)); Py_VISIT(self->mapping); - if (self->decref_factory) { - Py_VISIT(self->factory); - } + Py_VISIT(self->factory); pysqlite_Node *node = self->first; while (node) { @@ -124,9 +119,7 @@ static int cache_clear(pysqlite_Cache *self) { Py_CLEAR(self->mapping); - if (self->decref_factory) { - Py_CLEAR(self->factory); - } + Py_CLEAR(self->factory); /* iterate over all nodes and deallocate them */ pysqlite_Node *node = self->first; diff --git a/Modules/_sqlite/cache.h b/Modules/_sqlite/cache.h index 083356f93f9e4..209c80dcd54ad 100644 --- a/Modules/_sqlite/cache.h +++ b/Modules/_sqlite/cache.h @@ -52,10 +52,6 @@ typedef struct pysqlite_Node* first; pysqlite_Node* last; - - /* if set, decrement the factory function when the Cache is deallocated. - * this is almost always desirable, but not in the pysqlite context */ - int decref_factory; } pysqlite_Cache; extern PyTypeObject *pysqlite_NodeType; diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 62c4dc3bbb394..c1a5677d490ef 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -149,14 +149,6 @@ pysqlite_connection_init(pysqlite_Connection *self, PyObject *args, return -1; } - /* By default, the Cache class INCREFs the factory in its initializer, and - * decrefs it in its deallocator method. Since this would create a circular - * reference here, we're breaking it by decrementing self, and telling the - * cache class to not decref the factory (self) in its deallocator. - */ - self->statement_cache->decref_factory = 0; - Py_DECREF(self); - self->detect_types = detect_types; self->timeout = timeout; (void)sqlite3_busy_timeout(self->db, (int)(timeout*1000)); From webhook-mailer at python.org Thu Jun 3 12:43:09 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Jun 2021 16:43:09 -0000 Subject: [Python-checkins] bpo-39573: Py_TYPE becomes a static inline function (GH-26493) Message-ID: https://github.com/python/cpython/commit/f3fa63ec75fdbb4a08a10957a5c631bf0c4a5970 commit: f3fa63ec75fdbb4a08a10957a5c631bf0c4a5970 branch: main author: Victor Stinner committer: vstinner date: 2021-06-03T18:42:59+02:00 summary: bpo-39573: Py_TYPE becomes a static inline function (GH-26493) Convert the Py_TYPE() and Py_SIZE() macros to static inline functions. The Py_SET_TYPE() and Py_SET_SIZE() functions must now be used to set an object type and size. files: A Misc/NEWS.d/next/C API/2021-06-03-00-59-48.bpo-39573.-elHTJ.rst M Doc/c-api/structures.rst M Doc/whatsnew/3.11.rst M Include/object.h M Modules/_testcapimodule.c diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst index 20d5485d5544c2..1a6e14eae59239 100644 --- a/Doc/c-api/structures.rst +++ b/Doc/c-api/structures.rst @@ -99,7 +99,10 @@ the definition of all other Python objects. Return a :term:`borrowed reference`. - The :c:func:`Py_SET_TYPE` function must be used to set an object type. + Use the :c:func:`Py_SET_TYPE` function to set an object type. + + .. versionchanged:: 3.11 + :c:func:`Py_TYPE()` is changed to an inline static function. .. c:function:: int Py_IS_TYPE(PyObject *o, PyTypeObject *type) @@ -121,9 +124,10 @@ the definition of all other Python objects. Get the reference count of the Python object *o*. + Use the :c:func:`Py_SET_REFCNT()` function to set an object reference count. + .. versionchanged:: 3.10 :c:func:`Py_REFCNT()` is changed to the inline static function. - Use :c:func:`Py_SET_REFCNT()` to set an object reference count. .. c:function:: void Py_SET_REFCNT(PyObject *o, Py_ssize_t refcnt) @@ -137,7 +141,10 @@ the definition of all other Python objects. Get the size of the Python object *o*. - The :c:func:`Py_SET_SIZE` function must be used to set an object size. + Use the :c:func:`Py_SET_SIZE` function to set an object size. + + .. versionchanged:: 3.11 + :c:func:`Py_SIZE()` is changed to an inline static function. .. c:function:: void Py_SET_SIZE(PyVarObject *o, Py_ssize_t size) diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 1b3b8240a521f2..1ea8cbaf9a82a3 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -149,6 +149,34 @@ Porting to Python 3.11 (:c:member:`PyTypeObject.tp_traverse`). (Contributed by Victor Stinner in :issue:`44263`.) +* Since :c:func:`Py_TYPE()` is changed to a inline static function, + ``Py_TYPE(obj) = new_type`` must be replaced with + ``Py_SET_TYPE(obj, new_type)``: see the :c:func:`Py_SET_TYPE()` function + (available since Python 3.9). For backward compatibility, this macro can be + used:: + + #if PY_VERSION_HEX < 0x030900A4 && !defined(Py_SET_TYPE) + static inline void _Py_SET_TYPE(PyObject *ob, PyTypeObject *type) + { ob->ob_type = type; } + #define Py_SET_TYPE(ob, type) _Py_SET_TYPE(_PyObject_CAST(ob), type) + #endif + + (Contributed by Victor Stinner in :issue:`39573`.) + +* Since :c:func:`Py_SIZE()` is changed to a inline static function, + ``Py_SIZE(obj) = new_size`` must be replaced with + ``Py_SET_SIZE(obj, new_size)``: see the :c:func:`Py_SET_SIZE()` function + (available since Python 3.9). For backward compatibility, this macro can be + used:: + + #if PY_VERSION_HEX < 0x030900A4 && !defined(Py_SET_SIZE) + static inline void _Py_SET_SIZE(PyVarObject *ob, Py_ssize_t size) + { ob->ob_size = size; } + #define Py_SET_SIZE(ob, size) _Py_SET_SIZE((PyVarObject*)(ob), size) + #endif + + (Contributed by Victor Stinner in :issue:`39573`.) + Deprecated ---------- diff --git a/Include/object.h b/Include/object.h index 4c069998574b4a..a3b5d0d29d3e7b 100644 --- a/Include/object.h +++ b/Include/object.h @@ -134,10 +134,16 @@ static inline Py_ssize_t _Py_REFCNT(const PyObject *ob) { // bpo-39573: The Py_SET_TYPE() function must be used to set an object type. -#define Py_TYPE(ob) (_PyObject_CAST(ob)->ob_type) +static inline PyTypeObject* _Py_TYPE(const PyObject *ob) { + return ob->ob_type; +} +#define Py_TYPE(ob) _Py_TYPE(_PyObject_CAST_CONST(ob)) // bpo-39573: The Py_SET_SIZE() function must be used to set an object size. -#define Py_SIZE(ob) (_PyVarObject_CAST(ob)->ob_size) +static inline Py_ssize_t _Py_SIZE(const PyVarObject *ob) { + return ob->ob_size; +} +#define Py_SIZE(ob) _Py_SIZE(_PyVarObject_CAST_CONST(ob)) static inline int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { diff --git a/Misc/NEWS.d/next/C API/2021-06-03-00-59-48.bpo-39573.-elHTJ.rst b/Misc/NEWS.d/next/C API/2021-06-03-00-59-48.bpo-39573.-elHTJ.rst new file mode 100644 index 00000000000000..d9641ed97e170d --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-03-00-59-48.bpo-39573.-elHTJ.rst @@ -0,0 +1,3 @@ +Convert the :c:func:`Py_TYPE` and :c:func:`Py_SIZE` macros to static inline +functions. The :c:func:`Py_SET_TYPE` and :c:func:`Py_SET_SIZE` functions +must now be used to set an object type and size. Patch by Victor Stinner. diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index ab47949d89e635..9b106a56637372 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -5423,10 +5423,9 @@ test_set_type_size(PyObject *self, PyObject *Py_UNUSED(ignored)) assert(Py_TYPE(obj) == &PyList_Type); assert(Py_SIZE(obj) == 0); - // bpo-39573: Check that Py_TYPE() and Py_SIZE() can be used - // as l-values to set an object type and size. - Py_TYPE(obj) = &PyList_Type; - Py_SIZE(obj) = 0; + // bpo-39573: Test Py_SET_TYPE() and Py_SET_SIZE() functions. + Py_SET_TYPE(obj, &PyList_Type); + Py_SET_SIZE(obj, 0); Py_DECREF(obj); Py_RETURN_NONE; From webhook-mailer at python.org Thu Jun 3 14:57:40 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 18:57:40 -0000 Subject: [Python-checkins] [3.10] bpo-44298: Backport #26513 to 3.10 (#26516) Message-ID: https://github.com/python/cpython/commit/cea0585b7939b487d7089f9d473f495264e8a491 commit: cea0585b7939b487d7089f9d473f495264e8a491 branch: 3.10 author: Mark Shannon committer: pablogsal date: 2021-06-03T19:57:31+01:00 summary: [3.10] bpo-44298: Backport #26513 to 3.10 (#26516) * Backport 937cebc93 to 3.10 * Update importlib files: M Lib/test/test_sys_settrace.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index 3296ee0139cc9c..0174f80dce603a 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -995,6 +995,52 @@ def func(): (5, 'line'), (5, 'return')]) + def test_early_exit_with(self): + + class C: + def __enter__(self): + return self + def __exit__(*args): + pass + + def func_break(): + for i in (1,2): + with C(): + break + pass + + def func_return(): + with C(): + return + + self.run_and_compare(func_break, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (-5, 'call'), + (-4, 'line'), + (-4, 'return'), + (3, 'line'), + (2, 'line'), + (-3, 'call'), + (-2, 'line'), + (-2, 'return'), + (4, 'line'), + (4, 'return')]) + + self.run_and_compare(func_return, + [(0, 'call'), + (1, 'line'), + (-11, 'call'), + (-10, 'line'), + (-10, 'return'), + (2, 'line'), + (1, 'line'), + (-9, 'call'), + (-8, 'line'), + (-8, 'return'), + (1, 'return')]) + class SkipLineEventsTraceTestCase(TraceTestCase): """Repeat the trace tests, but with per-line events skipped""" diff --git a/Python/compile.c b/Python/compile.c index 3c69ce2eb83428..4abc9f05eab172 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1767,7 +1767,6 @@ static int compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, int preserve_tos) { - int loc; switch (info->fb_type) { case WHILE_LOOP: case EXCEPTION_HANDLER: @@ -1820,7 +1819,6 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, case WITH: case ASYNC_WITH: - loc = c->u->u_lineno; SET_LOC(c, (stmt_ty)info->fb_datum); ADDOP(c, POP_BLOCK); if (preserve_tos) { @@ -1835,7 +1833,10 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, ADDOP(c, YIELD_FROM); } ADDOP(c, POP_TOP); - c->u->u_lineno = loc; + /* The exit block should appear to execute after the + * statement causing the unwinding, so make the unwinding + * instruction artificial */ + c->u->u_lineno = -1; return 1; case HANDLER_CLEANUP: @@ -2986,12 +2987,17 @@ compiler_return(struct compiler *c, stmt_ty s) if (preserve_tos) { VISIT(c, expr, s->v.Return.value); } else { - /* Emit instruction with line number for expression */ + /* Emit instruction with line number for return value */ if (s->v.Return.value != NULL) { SET_LOC(c, s->v.Return.value); ADDOP(c, NOP); } } + if (s->v.Return.value == NULL || s->v.Return.value->lineno != s->lineno) { + SET_LOC(c, s); + ADDOP(c, NOP); + } + if (!compiler_unwind_fblock_stack(c, preserve_tos, NULL)) return 0; if (s->v.Return.value == NULL) { @@ -3010,6 +3016,8 @@ static int compiler_break(struct compiler *c) { struct fblockinfo *loop = NULL; + /* Emit instruction with line number */ + ADDOP(c, NOP); if (!compiler_unwind_fblock_stack(c, 0, &loop)) { return 0; } @@ -3028,6 +3036,8 @@ static int compiler_continue(struct compiler *c) { struct fblockinfo *loop = NULL; + /* Emit instruction with line number */ + ADDOP(c, NOP); if (!compiler_unwind_fblock_stack(c, 0, &loop)) { return 0; } diff --git a/Python/importlib.h b/Python/importlib.h index 8156973bdeaaf7..06e52a98436480 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -182,1698 +182,1698 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 218,7,97,99,113,117,105,114,101,114,31,0,0,0,218,7, 114,101,108,101,97,115,101,169,2,114,33,0,0,0,114,40, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,43,0,0,0,100,0,0,0,115,44,0,0,0, + 0,0,114,43,0,0,0,100,0,0,0,115,42,0,0,0, 8,6,8,1,2,1,2,1,8,1,20,1,6,1,14,1, - 2,1,12,252,2,4,10,9,8,248,12,1,12,1,14,1, - 2,128,28,248,10,10,10,1,2,244,8,14,122,19,95,77, - 111,100,117,108,101,76,111,99,107,46,97,99,113,117,105,114, - 101,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,144,0,0,0,116, - 0,160,1,161,0,125,1,124,0,106,2,143,55,1,0,124, - 0,106,3,124,1,107,3,114,17,116,4,100,1,131,1,130, - 1,124,0,106,5,100,2,107,4,115,24,74,0,130,1,124, - 0,4,0,106,5,100,3,56,0,2,0,95,5,124,0,106, - 5,100,2,107,2,114,54,100,0,124,0,95,3,124,0,106, - 6,114,54,124,0,4,0,106,6,100,3,56,0,2,0,95, - 6,124,0,106,7,160,8,161,0,1,0,87,0,100,0,4, - 0,4,0,131,3,1,0,100,0,83,0,49,0,115,65,119, - 1,1,0,1,0,1,0,89,0,1,0,100,0,83,0,41, - 4,78,250,31,99,97,110,110,111,116,32,114,101,108,101,97, - 115,101,32,117,110,45,97,99,113,117,105,114,101,100,32,108, - 111,99,107,114,25,0,0,0,114,42,0,0,0,41,9,114, - 26,0,0,0,114,35,0,0,0,114,27,0,0,0,114,29, - 0,0,0,218,12,82,117,110,116,105,109,101,69,114,114,111, - 114,114,30,0,0,0,114,31,0,0,0,114,28,0,0,0, - 114,44,0,0,0,114,45,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,44,0,0,0,125,0, - 0,0,115,26,0,0,0,8,1,8,1,10,1,8,1,14, - 1,14,1,10,1,6,1,6,1,14,1,10,1,2,128,34, - 247,122,19,95,77,111,100,117,108,101,76,111,99,107,46,114, - 101,108,101,97,115,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,243, - 18,0,0,0,100,1,160,0,124,0,106,1,116,2,124,0, - 131,1,161,2,83,0,41,2,78,122,23,95,77,111,100,117, - 108,101,76,111,99,107,40,123,33,114,125,41,32,97,116,32, - 123,125,169,3,218,6,102,111,114,109,97,116,114,20,0,0, - 0,218,2,105,100,169,1,114,33,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,8,95,95,114, - 101,112,114,95,95,138,0,0,0,243,2,0,0,0,18,1, - 122,20,95,77,111,100,117,108,101,76,111,99,107,46,95,95, - 114,101,112,114,95,95,78,41,9,114,9,0,0,0,114,8, + 2,1,14,252,10,13,8,248,12,1,12,1,14,1,2,128, + 28,248,10,10,10,1,2,244,8,14,122,19,95,77,111,100, + 117,108,101,76,111,99,107,46,97,99,113,117,105,114,101,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,144,0,0,0,116,0,160, + 1,161,0,125,1,124,0,106,2,143,55,1,0,124,0,106, + 3,124,1,107,3,114,17,116,4,100,1,131,1,130,1,124, + 0,106,5,100,2,107,4,115,24,74,0,130,1,124,0,4, + 0,106,5,100,3,56,0,2,0,95,5,124,0,106,5,100, + 2,107,2,114,54,100,0,124,0,95,3,124,0,106,6,114, + 54,124,0,4,0,106,6,100,3,56,0,2,0,95,6,124, + 0,106,7,160,8,161,0,1,0,87,0,100,0,4,0,4, + 0,131,3,1,0,100,0,83,0,49,0,115,65,119,1,1, + 0,1,0,1,0,89,0,1,0,100,0,83,0,41,4,78, + 250,31,99,97,110,110,111,116,32,114,101,108,101,97,115,101, + 32,117,110,45,97,99,113,117,105,114,101,100,32,108,111,99, + 107,114,25,0,0,0,114,42,0,0,0,41,9,114,26,0, + 0,0,114,35,0,0,0,114,27,0,0,0,114,29,0,0, + 0,218,12,82,117,110,116,105,109,101,69,114,114,111,114,114, + 30,0,0,0,114,31,0,0,0,114,28,0,0,0,114,44, + 0,0,0,114,45,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,44,0,0,0,125,0,0,0, + 115,26,0,0,0,8,1,8,1,10,1,8,1,14,1,14, + 1,10,1,6,1,6,1,14,1,10,1,2,128,34,247,122, + 19,95,77,111,100,117,108,101,76,111,99,107,46,114,101,108, + 101,97,115,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,243,18,0, + 0,0,100,1,160,0,124,0,106,1,116,2,124,0,131,1, + 161,2,83,0,41,2,78,122,23,95,77,111,100,117,108,101, + 76,111,99,107,40,123,33,114,125,41,32,97,116,32,123,125, + 169,3,218,6,102,111,114,109,97,116,114,20,0,0,0,218, + 2,105,100,169,1,114,33,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,8,95,95,114,101,112, + 114,95,95,138,0,0,0,243,2,0,0,0,18,1,122,20, + 95,77,111,100,117,108,101,76,111,99,107,46,95,95,114,101, + 112,114,95,95,78,41,9,114,9,0,0,0,114,8,0,0, + 0,114,1,0,0,0,114,10,0,0,0,114,34,0,0,0, + 114,41,0,0,0,114,43,0,0,0,114,44,0,0,0,114, + 53,0,0,0,114,5,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,23,0,0,0,65,0,0, + 0,115,14,0,0,0,8,0,4,1,8,5,8,8,8,21, + 8,25,12,13,114,23,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,16,95,68,117,109,109, + 121,77,111,100,117,108,101,76,111,99,107,122,86,65,32,115, + 105,109,112,108,101,32,95,77,111,100,117,108,101,76,111,99, + 107,32,101,113,117,105,118,97,108,101,110,116,32,102,111,114, + 32,80,121,116,104,111,110,32,98,117,105,108,100,115,32,119, + 105,116,104,111,117,116,10,32,32,32,32,109,117,108,116,105, + 45,116,104,114,101,97,100,105,110,103,32,115,117,112,112,111, + 114,116,46,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,16,0,0, + 0,124,1,124,0,95,0,100,1,124,0,95,1,100,0,83, + 0,114,24,0,0,0,41,2,114,20,0,0,0,114,30,0, + 0,0,114,32,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,34,0,0,0,146,0,0,0,243, + 4,0,0,0,6,1,10,1,122,25,95,68,117,109,109,121, + 77,111,100,117,108,101,76,111,99,107,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,3,0,0,0,67,0,0,0,115,18,0,0, + 0,124,0,4,0,106,0,100,1,55,0,2,0,95,0,100, + 2,83,0,41,3,78,114,42,0,0,0,84,41,1,114,30, + 0,0,0,114,52,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,43,0,0,0,150,0,0,0, + 115,4,0,0,0,14,1,4,1,122,24,95,68,117,109,109, + 121,77,111,100,117,108,101,76,111,99,107,46,97,99,113,117, + 105,114,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,36,0,0, + 0,124,0,106,0,100,1,107,2,114,9,116,1,100,2,131, + 1,130,1,124,0,4,0,106,0,100,3,56,0,2,0,95, + 0,100,0,83,0,41,4,78,114,25,0,0,0,114,46,0, + 0,0,114,42,0,0,0,41,2,114,30,0,0,0,114,47, + 0,0,0,114,52,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,44,0,0,0,154,0,0,0, + 115,6,0,0,0,10,1,8,1,18,1,122,24,95,68,117, + 109,109,121,77,111,100,117,108,101,76,111,99,107,46,114,101, + 108,101,97,115,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,114,48, + 0,0,0,41,2,78,122,28,95,68,117,109,109,121,77,111, + 100,117,108,101,76,111,99,107,40,123,33,114,125,41,32,97, + 116,32,123,125,114,49,0,0,0,114,52,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,53,0, + 0,0,159,0,0,0,114,54,0,0,0,122,25,95,68,117, + 109,109,121,77,111,100,117,108,101,76,111,99,107,46,95,95, + 114,101,112,114,95,95,78,41,8,114,9,0,0,0,114,8, 0,0,0,114,1,0,0,0,114,10,0,0,0,114,34,0, - 0,0,114,41,0,0,0,114,43,0,0,0,114,44,0,0, - 0,114,53,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,23,0,0,0,65, - 0,0,0,115,14,0,0,0,8,0,4,1,8,5,8,8, - 8,21,8,25,12,13,114,23,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,16,95,68,117, - 109,109,121,77,111,100,117,108,101,76,111,99,107,122,86,65, - 32,115,105,109,112,108,101,32,95,77,111,100,117,108,101,76, - 111,99,107,32,101,113,117,105,118,97,108,101,110,116,32,102, - 111,114,32,80,121,116,104,111,110,32,98,117,105,108,100,115, - 32,119,105,116,104,111,117,116,10,32,32,32,32,109,117,108, - 116,105,45,116,104,114,101,97,100,105,110,103,32,115,117,112, - 112,111,114,116,46,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,16, - 0,0,0,124,1,124,0,95,0,100,1,124,0,95,1,100, - 0,83,0,114,24,0,0,0,41,2,114,20,0,0,0,114, - 30,0,0,0,114,32,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,34,0,0,0,146,0,0, - 0,243,4,0,0,0,6,1,10,1,122,25,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,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,3,0,0,0,67,0,0,0,115,18, - 0,0,0,124,0,4,0,106,0,100,1,55,0,2,0,95, - 0,100,2,83,0,41,3,78,114,42,0,0,0,84,41,1, - 114,30,0,0,0,114,52,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,43,0,0,0,150,0, - 0,0,115,4,0,0,0,14,1,4,1,122,24,95,68,117, - 109,109,121,77,111,100,117,108,101,76,111,99,107,46,97,99, - 113,117,105,114,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,36, - 0,0,0,124,0,106,0,100,1,107,2,114,9,116,1,100, - 2,131,1,130,1,124,0,4,0,106,0,100,3,56,0,2, - 0,95,0,100,0,83,0,41,4,78,114,25,0,0,0,114, - 46,0,0,0,114,42,0,0,0,41,2,114,30,0,0,0, - 114,47,0,0,0,114,52,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,44,0,0,0,154,0, - 0,0,115,6,0,0,0,10,1,8,1,18,1,122,24,95, - 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,46, - 114,101,108,101,97,115,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, - 114,48,0,0,0,41,2,78,122,28,95,68,117,109,109,121, - 77,111,100,117,108,101,76,111,99,107,40,123,33,114,125,41, - 32,97,116,32,123,125,114,49,0,0,0,114,52,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 53,0,0,0,159,0,0,0,114,54,0,0,0,122,25,95, - 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,46, - 95,95,114,101,112,114,95,95,78,41,8,114,9,0,0,0, - 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, - 34,0,0,0,114,43,0,0,0,114,44,0,0,0,114,53, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,55,0,0,0,142,0,0,0, - 115,12,0,0,0,8,0,4,1,8,3,8,4,8,4,12, - 5,114,55,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, - 36,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,83,0,41,8,218,18,95,77,111,100, - 117,108,101,76,111,99,107,77,97,110,97,103,101,114,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,16,0,0,0,124,1,124,0, - 95,0,100,0,124,0,95,1,100,0,83,0,114,0,0,0, - 0,41,2,218,5,95,110,97,109,101,218,5,95,108,111,99, - 107,114,32,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,34,0,0,0,165,0,0,0,114,56, - 0,0,0,122,27,95,77,111,100,117,108,101,76,111,99,107, - 77,97,110,97,103,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,26,0,0,0,116,0, - 124,0,106,1,131,1,124,0,95,2,124,0,106,2,160,3, - 161,0,1,0,100,0,83,0,114,0,0,0,0,41,4,218, - 16,95,103,101,116,95,109,111,100,117,108,101,95,108,111,99, - 107,114,58,0,0,0,114,59,0,0,0,114,43,0,0,0, - 114,52,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,9,95,95,101,110,116,101,114,95,95,169, - 0,0,0,115,4,0,0,0,12,1,14,1,122,28,95,77, - 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, - 46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,79, - 0,0,0,115,14,0,0,0,124,0,106,0,160,1,161,0, - 1,0,100,0,83,0,114,0,0,0,0,41,2,114,59,0, - 0,0,114,44,0,0,0,41,3,114,33,0,0,0,218,4, - 97,114,103,115,90,6,107,119,97,114,103,115,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,8,95,95,101, - 120,105,116,95,95,173,0,0,0,115,2,0,0,0,14,1, - 122,27,95,77,111,100,117,108,101,76,111,99,107,77,97,110, - 97,103,101,114,46,95,95,101,120,105,116,95,95,78,41,6, - 114,9,0,0,0,114,8,0,0,0,114,1,0,0,0,114, - 34,0,0,0,114,61,0,0,0,114,63,0,0,0,114,5, + 0,0,114,43,0,0,0,114,44,0,0,0,114,53,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,55,0,0,0,142,0,0,0,115,12, + 0,0,0,8,0,4,1,8,3,8,4,8,4,12,5,114, + 55,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,36,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,83,0,41,8,218,18,95,77,111,100,117,108, + 101,76,111,99,107,77,97,110,97,103,101,114,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,16,0,0,0,124,1,124,0,95,0, + 100,0,124,0,95,1,100,0,83,0,114,0,0,0,0,41, + 2,218,5,95,110,97,109,101,218,5,95,108,111,99,107,114, + 32,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,34,0,0,0,165,0,0,0,114,56,0,0, + 0,122,27,95,77,111,100,117,108,101,76,111,99,107,77,97, + 110,97,103,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,26,0,0,0,116,0,124,0, + 106,1,131,1,124,0,95,2,124,0,106,2,160,3,161,0, + 1,0,100,0,83,0,114,0,0,0,0,41,4,218,16,95, + 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,114, + 58,0,0,0,114,59,0,0,0,114,43,0,0,0,114,52, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,57,0,0,0,163,0,0,0,115,8,0,0,0, - 8,0,8,2,8,4,12,4,114,57,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,8,0, - 0,0,67,0,0,0,115,132,0,0,0,116,0,160,1,161, - 0,1,0,122,55,122,7,116,2,124,0,25,0,131,0,125, - 1,87,0,110,9,4,0,116,3,121,65,1,0,1,0,1, - 0,100,1,125,1,89,0,124,1,100,1,117,0,114,53,116, - 4,100,1,117,0,114,35,116,5,124,0,131,1,125,1,110, - 4,116,6,124,0,131,1,125,1,124,0,102,1,100,2,100, - 3,132,1,125,2,116,7,160,8,124,1,124,2,161,2,116, - 2,124,0,60,0,87,0,116,0,160,9,161,0,1,0,124, - 1,83,0,116,0,160,9,161,0,1,0,119,0,119,0,41, - 4,122,139,71,101,116,32,111,114,32,99,114,101,97,116,101, - 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, - 32,102,111,114,32,97,32,103,105,118,101,110,32,109,111,100, - 117,108,101,32,110,97,109,101,46,10,10,32,32,32,32,65, - 99,113,117,105,114,101,47,114,101,108,101,97,115,101,32,105, - 110,116,101,114,110,97,108,108,121,32,116,104,101,32,103,108, - 111,98,97,108,32,105,109,112,111,114,116,32,108,111,99,107, - 32,116,111,32,112,114,111,116,101,99,116,10,32,32,32,32, - 95,109,111,100,117,108,101,95,108,111,99,107,115,46,78,99, + 0,0,218,9,95,95,101,110,116,101,114,95,95,169,0,0, + 0,115,4,0,0,0,12,1,14,1,122,28,95,77,111,100, + 117,108,101,76,111,99,107,77,97,110,97,103,101,114,46,95, + 95,101,110,116,101,114,95,95,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,2,0,0,0,79,0,0, + 0,115,14,0,0,0,124,0,106,0,160,1,161,0,1,0, + 100,0,83,0,114,0,0,0,0,41,2,114,59,0,0,0, + 114,44,0,0,0,41,3,114,33,0,0,0,218,4,97,114, + 103,115,90,6,107,119,97,114,103,115,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,8,95,95,101,120,105, + 116,95,95,173,0,0,0,115,2,0,0,0,14,1,122,27, + 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, + 101,114,46,95,95,101,120,105,116,95,95,78,41,6,114,9, + 0,0,0,114,8,0,0,0,114,1,0,0,0,114,34,0, + 0,0,114,61,0,0,0,114,63,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,57,0,0,0,163,0,0,0,115,8,0,0,0,8,0, + 8,2,8,4,12,4,114,57,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, + 67,0,0,0,115,132,0,0,0,116,0,160,1,161,0,1, + 0,122,55,122,7,116,2,124,0,25,0,131,0,125,1,87, + 0,110,9,4,0,116,3,121,65,1,0,1,0,1,0,100, + 1,125,1,89,0,124,1,100,1,117,0,114,53,116,4,100, + 1,117,0,114,35,116,5,124,0,131,1,125,1,110,4,116, + 6,124,0,131,1,125,1,124,0,102,1,100,2,100,3,132, + 1,125,2,116,7,160,8,124,1,124,2,161,2,116,2,124, + 0,60,0,87,0,116,0,160,9,161,0,1,0,124,1,83, + 0,116,0,160,9,161,0,1,0,119,0,119,0,41,4,122, + 139,71,101,116,32,111,114,32,99,114,101,97,116,101,32,116, + 104,101,32,109,111,100,117,108,101,32,108,111,99,107,32,102, + 111,114,32,97,32,103,105,118,101,110,32,109,111,100,117,108, + 101,32,110,97,109,101,46,10,10,32,32,32,32,65,99,113, + 117,105,114,101,47,114,101,108,101,97,115,101,32,105,110,116, + 101,114,110,97,108,108,121,32,116,104,101,32,103,108,111,98, + 97,108,32,105,109,112,111,114,116,32,108,111,99,107,32,116, + 111,32,112,114,111,116,101,99,116,10,32,32,32,32,95,109, + 111,100,117,108,101,95,108,111,99,107,115,46,78,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0, + 0,0,83,0,0,0,115,54,0,0,0,116,0,160,1,161, + 0,1,0,122,17,116,2,160,3,124,1,161,1,124,0,117, + 0,114,15,116,2,124,1,61,0,87,0,116,0,160,4,161, + 0,1,0,100,0,83,0,116,0,160,4,161,0,1,0,119, + 0,114,0,0,0,0,41,5,218,4,95,105,109,112,218,12, + 97,99,113,117,105,114,101,95,108,111,99,107,218,13,95,109, + 111,100,117,108,101,95,108,111,99,107,115,114,38,0,0,0, + 218,12,114,101,108,101,97,115,101,95,108,111,99,107,41,2, + 218,3,114,101,102,114,20,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,2,99,98,198,0,0, + 0,115,12,0,0,0,8,1,2,1,14,4,6,1,2,128, + 22,2,122,28,95,103,101,116,95,109,111,100,117,108,101,95, + 108,111,99,107,46,60,108,111,99,97,108,115,62,46,99,98, + 41,10,114,64,0,0,0,114,65,0,0,0,114,66,0,0, + 0,218,8,75,101,121,69,114,114,111,114,114,26,0,0,0, + 114,55,0,0,0,114,23,0,0,0,218,8,95,119,101,97, + 107,114,101,102,114,68,0,0,0,114,67,0,0,0,41,3, + 114,20,0,0,0,114,27,0,0,0,114,69,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,60, + 0,0,0,179,0,0,0,115,34,0,0,0,8,6,2,1, + 2,1,14,1,12,1,6,1,8,2,8,1,10,1,8,2, + 12,2,16,11,2,128,8,2,4,2,10,254,2,234,114,60, + 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,54,0,0, + 0,116,0,124,0,131,1,125,1,122,6,124,1,160,1,161, + 0,1,0,87,0,110,9,4,0,116,2,121,26,1,0,1, + 0,1,0,89,0,100,1,83,0,124,1,160,3,161,0,1, + 0,100,1,83,0,119,0,41,2,122,189,65,99,113,117,105, + 114,101,115,32,116,104,101,110,32,114,101,108,101,97,115,101, + 115,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99, + 107,32,102,111,114,32,97,32,103,105,118,101,110,32,109,111, + 100,117,108,101,32,110,97,109,101,46,10,10,32,32,32,32, + 84,104,105,115,32,105,115,32,117,115,101,100,32,116,111,32, + 101,110,115,117,114,101,32,97,32,109,111,100,117,108,101,32, + 105,115,32,99,111,109,112,108,101,116,101,108,121,32,105,110, + 105,116,105,97,108,105,122,101,100,44,32,105,110,32,116,104, + 101,10,32,32,32,32,101,118,101,110,116,32,105,116,32,105, + 115,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, + 32,98,121,32,97,110,111,116,104,101,114,32,116,104,114,101, + 97,100,46,10,32,32,32,32,78,41,4,114,60,0,0,0, + 114,43,0,0,0,114,22,0,0,0,114,44,0,0,0,41, + 2,114,20,0,0,0,114,27,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,19,95,108,111,99, + 107,95,117,110,108,111,99,107,95,109,111,100,117,108,101,216, + 0,0,0,115,14,0,0,0,8,6,2,1,12,1,12,1, + 6,3,12,2,2,251,114,72,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0, + 79,0,0,0,115,14,0,0,0,124,0,124,1,105,0,124, + 2,164,1,142,1,83,0,41,2,97,46,1,0,0,114,101, + 109,111,118,101,95,105,109,112,111,114,116,108,105,98,95,102, + 114,97,109,101,115,32,105,110,32,105,109,112,111,114,116,46, + 99,32,119,105,108,108,32,97,108,119,97,121,115,32,114,101, + 109,111,118,101,32,115,101,113,117,101,110,99,101,115,10,32, + 32,32,32,111,102,32,105,109,112,111,114,116,108,105,98,32, + 102,114,97,109,101,115,32,116,104,97,116,32,101,110,100,32, + 119,105,116,104,32,97,32,99,97,108,108,32,116,111,32,116, + 104,105,115,32,102,117,110,99,116,105,111,110,10,10,32,32, + 32,32,85,115,101,32,105,116,32,105,110,115,116,101,97,100, + 32,111,102,32,97,32,110,111,114,109,97,108,32,99,97,108, + 108,32,105,110,32,112,108,97,99,101,115,32,119,104,101,114, + 101,32,105,110,99,108,117,100,105,110,103,32,116,104,101,32, + 105,109,112,111,114,116,108,105,98,10,32,32,32,32,102,114, + 97,109,101,115,32,105,110,116,114,111,100,117,99,101,115,32, + 117,110,119,97,110,116,101,100,32,110,111,105,115,101,32,105, + 110,116,111,32,116,104,101,32,116,114,97,99,101,98,97,99, + 107,32,40,101,46,103,46,32,119,104,101,110,32,101,120,101, + 99,117,116,105,110,103,10,32,32,32,32,109,111,100,117,108, + 101,32,99,111,100,101,41,10,32,32,32,32,78,114,5,0, + 0,0,41,3,218,1,102,114,62,0,0,0,90,4,107,119, + 100,115,114,5,0,0,0,114,5,0,0,0,114,6,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,233,0,0,0, + 115,2,0,0,0,14,8,114,74,0,0,0,114,42,0,0, + 0,41,1,218,9,118,101,114,98,111,115,105,116,121,99,1, + 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,4, + 0,0,0,71,0,0,0,115,58,0,0,0,116,0,106,1, + 106,2,124,1,107,5,114,27,124,0,160,3,100,1,161,1, + 115,15,100,2,124,0,23,0,125,0,116,4,124,0,106,5, + 124,2,142,0,116,0,106,6,100,3,141,2,1,0,100,4, + 83,0,100,4,83,0,41,5,122,61,80,114,105,110,116,32, + 116,104,101,32,109,101,115,115,97,103,101,32,116,111,32,115, + 116,100,101,114,114,32,105,102,32,45,118,47,80,89,84,72, + 79,78,86,69,82,66,79,83,69,32,105,115,32,116,117,114, + 110,101,100,32,111,110,46,41,2,250,1,35,122,7,105,109, + 112,111,114,116,32,122,2,35,32,41,1,90,4,102,105,108, + 101,78,41,7,114,18,0,0,0,218,5,102,108,97,103,115, + 218,7,118,101,114,98,111,115,101,218,10,115,116,97,114,116, + 115,119,105,116,104,218,5,112,114,105,110,116,114,50,0,0, + 0,218,6,115,116,100,101,114,114,41,3,218,7,109,101,115, + 115,97,103,101,114,75,0,0,0,114,62,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,16,95, + 118,101,114,98,111,115,101,95,109,101,115,115,97,103,101,244, + 0,0,0,115,10,0,0,0,12,2,10,1,8,1,24,1, + 4,253,114,83,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0, + 243,26,0,0,0,135,0,102,1,100,1,100,2,132,8,125, + 1,116,0,124,1,136,0,131,2,1,0,124,1,83,0,41, + 4,122,49,68,101,99,111,114,97,116,111,114,32,116,111,32, + 118,101,114,105,102,121,32,116,104,101,32,110,97,109,101,100, + 32,109,111,100,117,108,101,32,105,115,32,98,117,105,108,116, + 45,105,110,46,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,4,0,0,0,19,0,0,0,115,38,0, + 0,0,124,1,116,0,106,1,118,1,114,14,116,2,100,1, + 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,0, + 124,0,124,1,131,2,83,0,41,3,78,250,29,123,33,114, + 125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,114,19,0,0,0,41, + 4,114,18,0,0,0,218,20,98,117,105,108,116,105,110,95, + 109,111,100,117,108,101,95,110,97,109,101,115,218,11,73,109, + 112,111,114,116,69,114,114,111,114,114,50,0,0,0,169,2, + 114,33,0,0,0,218,8,102,117,108,108,110,97,109,101,169, + 1,218,3,102,120,110,114,5,0,0,0,114,6,0,0,0, + 218,25,95,114,101,113,117,105,114,101,115,95,98,117,105,108, + 116,105,110,95,119,114,97,112,112,101,114,254,0,0,0,243, + 10,0,0,0,10,1,10,1,2,1,6,255,10,2,122,52, + 95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,105, + 110,46,60,108,111,99,97,108,115,62,46,95,114,101,113,117, + 105,114,101,115,95,98,117,105,108,116,105,110,95,119,114,97, + 112,112,101,114,78,169,1,114,17,0,0,0,41,2,114,91, + 0,0,0,114,92,0,0,0,114,5,0,0,0,114,90,0, + 0,0,114,6,0,0,0,218,17,95,114,101,113,117,105,114, + 101,115,95,98,117,105,108,116,105,110,252,0,0,0,243,6, + 0,0,0,12,2,10,5,4,1,114,95,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, + 0,0,0,3,0,0,0,114,84,0,0,0,41,4,122,47, + 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, + 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, + 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 8,0,0,0,83,0,0,0,115,54,0,0,0,116,0,160, - 1,161,0,1,0,122,17,116,2,160,3,124,1,161,1,124, - 0,117,0,114,15,116,2,124,1,61,0,87,0,116,0,160, - 4,161,0,1,0,100,0,83,0,116,0,160,4,161,0,1, - 0,119,0,114,0,0,0,0,41,5,218,4,95,105,109,112, - 218,12,97,99,113,117,105,114,101,95,108,111,99,107,218,13, - 95,109,111,100,117,108,101,95,108,111,99,107,115,114,38,0, - 0,0,218,12,114,101,108,101,97,115,101,95,108,111,99,107, - 41,2,218,3,114,101,102,114,20,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,2,99,98,198, - 0,0,0,115,12,0,0,0,8,1,2,1,14,4,6,1, - 2,128,22,2,122,28,95,103,101,116,95,109,111,100,117,108, - 101,95,108,111,99,107,46,60,108,111,99,97,108,115,62,46, - 99,98,41,10,114,64,0,0,0,114,65,0,0,0,114,66, - 0,0,0,218,8,75,101,121,69,114,114,111,114,114,26,0, - 0,0,114,55,0,0,0,114,23,0,0,0,218,8,95,119, - 101,97,107,114,101,102,114,68,0,0,0,114,67,0,0,0, - 41,3,114,20,0,0,0,114,27,0,0,0,114,69,0,0, + 4,0,0,0,19,0,0,0,115,38,0,0,0,116,0,160, + 1,124,1,161,1,115,14,116,2,100,1,160,3,124,1,161, + 1,124,1,100,2,141,2,130,1,136,0,124,0,124,1,131, + 2,83,0,169,3,78,122,27,123,33,114,125,32,105,115,32, + 110,111,116,32,97,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,114,19,0,0,0,41,4,114,64,0,0,0,218, + 9,105,115,95,102,114,111,122,101,110,114,87,0,0,0,114, + 50,0,0,0,114,88,0,0,0,114,90,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,24,95,114,101,113,117,105, + 114,101,115,95,102,114,111,122,101,110,95,119,114,97,112,112, + 101,114,9,1,0,0,114,93,0,0,0,122,50,95,114,101, + 113,117,105,114,101,115,95,102,114,111,122,101,110,46,60,108, + 111,99,97,108,115,62,46,95,114,101,113,117,105,114,101,115, + 95,102,114,111,122,101,110,95,119,114,97,112,112,101,114,78, + 114,94,0,0,0,41,2,114,91,0,0,0,114,99,0,0, + 0,114,5,0,0,0,114,90,0,0,0,114,6,0,0,0, + 218,16,95,114,101,113,117,105,114,101,115,95,102,114,111,122, + 101,110,7,1,0,0,114,96,0,0,0,114,100,0,0,0, + 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,74,0,0,0,100,1, + 125,2,116,0,160,1,124,2,116,2,161,2,1,0,116,3, + 124,1,124,0,131,2,125,3,124,1,116,4,106,5,118,0, + 114,33,116,4,106,5,124,1,25,0,125,4,116,6,124,3, + 124,4,131,2,1,0,116,4,106,5,124,1,25,0,83,0, + 116,7,124,3,131,1,83,0,41,3,122,130,76,111,97,100, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, + 111,100,117,108,101,32,105,110,116,111,32,115,121,115,46,109, + 111,100,117,108,101,115,32,97,110,100,32,114,101,116,117,114, + 110,32,105,116,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,46,32,32,85,115,101,32,108,111,97,100,101, + 114,46,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,122,103, + 116,104,101,32,108,111,97,100,95,109,111,100,117,108,101,40, + 41,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, + 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, + 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, + 101,32,101,120,101,99,95,109,111,100,117,108,101,40,41,32, + 105,110,115,116,101,97,100,78,41,8,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, + 16,115,112,101,99,95,102,114,111,109,95,108,111,97,100,101, + 114,114,18,0,0,0,218,7,109,111,100,117,108,101,115,218, + 5,95,101,120,101,99,218,5,95,108,111,97,100,41,5,114, + 33,0,0,0,114,89,0,0,0,218,3,109,115,103,218,4, + 115,112,101,99,218,6,109,111,100,117,108,101,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,17,95,108,111, + 97,100,95,109,111,100,117,108,101,95,115,104,105,109,19,1, + 0,0,115,16,0,0,0,4,6,12,2,10,1,10,1,10, + 1,10,1,10,1,8,2,114,111,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,8,0,0, + 0,67,0,0,0,115,184,0,0,0,116,0,124,0,100,1, + 100,2,131,3,125,1,116,0,124,0,100,3,100,2,131,3, + 4,0,125,2,114,18,116,1,124,2,131,1,83,0,116,2, + 124,1,100,4,131,2,114,37,122,6,124,1,160,3,124,0, + 161,1,87,0,83,0,4,0,116,4,121,91,1,0,1,0, + 1,0,89,0,122,5,124,0,106,5,125,3,87,0,110,9, + 4,0,116,6,121,90,1,0,1,0,1,0,100,5,125,3, + 89,0,122,5,124,0,106,7,125,4,87,0,110,25,4,0, + 116,6,121,89,1,0,1,0,1,0,124,1,100,2,117,0, + 114,75,100,6,160,8,124,3,161,1,6,0,89,0,83,0, + 100,7,160,8,124,3,124,1,161,2,6,0,89,0,83,0, + 100,8,160,8,124,3,124,4,161,2,83,0,119,0,119,0, + 119,0,41,9,122,44,84,104,101,32,105,109,112,108,101,109, + 101,110,116,97,116,105,111,110,32,111,102,32,77,111,100,117, + 108,101,84,121,112,101,46,95,95,114,101,112,114,95,95,40, + 41,46,218,10,95,95,108,111,97,100,101,114,95,95,78,218, + 8,95,95,115,112,101,99,95,95,218,11,109,111,100,117,108, + 101,95,114,101,112,114,250,1,63,250,13,60,109,111,100,117, + 108,101,32,123,33,114,125,62,250,20,60,109,111,100,117,108, + 101,32,123,33,114,125,32,40,123,33,114,125,41,62,250,23, + 60,109,111,100,117,108,101,32,123,33,114,125,32,102,114,111, + 109,32,123,33,114,125,62,41,9,114,13,0,0,0,218,22, + 95,109,111,100,117,108,101,95,114,101,112,114,95,102,114,111, + 109,95,115,112,101,99,114,11,0,0,0,114,114,0,0,0, + 218,9,69,120,99,101,112,116,105,111,110,114,9,0,0,0, + 114,2,0,0,0,218,8,95,95,102,105,108,101,95,95,114, + 50,0,0,0,41,5,114,110,0,0,0,218,6,108,111,97, + 100,101,114,114,109,0,0,0,114,20,0,0,0,218,8,102, + 105,108,101,110,97,109,101,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,12,95,109,111,100,117,108,101,95, + 114,101,112,114,38,1,0,0,115,44,0,0,0,12,2,16, + 1,8,1,10,1,2,1,12,1,12,1,2,1,2,2,10, + 1,12,1,6,1,2,1,10,1,12,1,8,1,14,1,16, + 2,12,2,2,250,2,252,2,251,114,124,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,114,0,0,0,101,0,90,1, + 100,0,90,2,100,1,90,3,100,2,100,2,100,2,100,3, + 156,3,100,4,100,5,132,2,90,4,100,6,100,7,132,0, + 90,5,100,8,100,9,132,0,90,6,101,7,100,10,100,11, + 132,0,131,1,90,8,101,8,106,9,100,12,100,11,132,0, + 131,1,90,8,101,7,100,13,100,14,132,0,131,1,90,10, + 101,7,100,15,100,16,132,0,131,1,90,11,101,11,106,9, + 100,17,100,16,132,0,131,1,90,11,100,2,83,0,41,18, + 218,10,77,111,100,117,108,101,83,112,101,99,97,208,5,0, + 0,84,104,101,32,115,112,101,99,105,102,105,99,97,116,105, + 111,110,32,102,111,114,32,97,32,109,111,100,117,108,101,44, + 32,117,115,101,100,32,102,111,114,32,108,111,97,100,105,110, + 103,46,10,10,32,32,32,32,65,32,109,111,100,117,108,101, + 39,115,32,115,112,101,99,32,105,115,32,116,104,101,32,115, + 111,117,114,99,101,32,102,111,114,32,105,110,102,111,114,109, + 97,116,105,111,110,32,97,98,111,117,116,32,116,104,101,32, + 109,111,100,117,108,101,46,32,32,70,111,114,10,32,32,32, + 32,100,97,116,97,32,97,115,115,111,99,105,97,116,101,100, + 32,119,105,116,104,32,116,104,101,32,109,111,100,117,108,101, + 44,32,105,110,99,108,117,100,105,110,103,32,115,111,117,114, + 99,101,44,32,117,115,101,32,116,104,101,32,115,112,101,99, + 39,115,10,32,32,32,32,108,111,97,100,101,114,46,10,10, + 32,32,32,32,96,110,97,109,101,96,32,105,115,32,116,104, + 101,32,97,98,115,111,108,117,116,101,32,110,97,109,101,32, + 111,102,32,116,104,101,32,109,111,100,117,108,101,46,32,32, + 96,108,111,97,100,101,114,96,32,105,115,32,116,104,101,32, + 108,111,97,100,101,114,10,32,32,32,32,116,111,32,117,115, + 101,32,119,104,101,110,32,108,111,97,100,105,110,103,32,116, + 104,101,32,109,111,100,117,108,101,46,32,32,96,112,97,114, + 101,110,116,96,32,105,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,116,104,101,10,32,32,32,32,112,97,99,107, + 97,103,101,32,116,104,101,32,109,111,100,117,108,101,32,105, + 115,32,105,110,46,32,32,84,104,101,32,112,97,114,101,110, + 116,32,105,115,32,100,101,114,105,118,101,100,32,102,114,111, + 109,32,116,104,101,32,110,97,109,101,46,10,10,32,32,32, + 32,96,105,115,95,112,97,99,107,97,103,101,96,32,100,101, + 116,101,114,109,105,110,101,115,32,105,102,32,116,104,101,32, + 109,111,100,117,108,101,32,105,115,32,99,111,110,115,105,100, + 101,114,101,100,32,97,32,112,97,99,107,97,103,101,32,111, + 114,10,32,32,32,32,110,111,116,46,32,32,79,110,32,109, + 111,100,117,108,101,115,32,116,104,105,115,32,105,115,32,114, + 101,102,108,101,99,116,101,100,32,98,121,32,116,104,101,32, + 96,95,95,112,97,116,104,95,95,96,32,97,116,116,114,105, + 98,117,116,101,46,10,10,32,32,32,32,96,111,114,105,103, + 105,110,96,32,105,115,32,116,104,101,32,115,112,101,99,105, + 102,105,99,32,108,111,99,97,116,105,111,110,32,117,115,101, + 100,32,98,121,32,116,104,101,32,108,111,97,100,101,114,32, + 102,114,111,109,32,119,104,105,99,104,32,116,111,10,32,32, + 32,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108, + 101,44,32,105,102,32,116,104,97,116,32,105,110,102,111,114, + 109,97,116,105,111,110,32,105,115,32,97,118,97,105,108,97, + 98,108,101,46,32,32,87,104,101,110,32,102,105,108,101,110, + 97,109,101,32,105,115,10,32,32,32,32,115,101,116,44,32, + 111,114,105,103,105,110,32,119,105,108,108,32,109,97,116,99, + 104,46,10,10,32,32,32,32,96,104,97,115,95,108,111,99, + 97,116,105,111,110,96,32,105,110,100,105,99,97,116,101,115, + 32,116,104,97,116,32,97,32,115,112,101,99,39,115,32,34, + 111,114,105,103,105,110,34,32,114,101,102,108,101,99,116,115, + 32,97,32,108,111,99,97,116,105,111,110,46,10,32,32,32, + 32,87,104,101,110,32,116,104,105,115,32,105,115,32,84,114, + 117,101,44,32,96,95,95,102,105,108,101,95,95,96,32,97, + 116,116,114,105,98,117,116,101,32,111,102,32,116,104,101,32, + 109,111,100,117,108,101,32,105,115,32,115,101,116,46,10,10, + 32,32,32,32,96,99,97,99,104,101,100,96,32,105,115,32, + 116,104,101,32,108,111,99,97,116,105,111,110,32,111,102,32, + 116,104,101,32,99,97,99,104,101,100,32,98,121,116,101,99, + 111,100,101,32,102,105,108,101,44,32,105,102,32,97,110,121, + 46,32,32,73,116,10,32,32,32,32,99,111,114,114,101,115, + 112,111,110,100,115,32,116,111,32,116,104,101,32,96,95,95, + 99,97,99,104,101,100,95,95,96,32,97,116,116,114,105,98, + 117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101, + 113,117,101,110,99,101,32,111,102,32,112,97,116,104,32,101, + 110,116,114,105,101,115,32,116,111,10,32,32,32,32,115,101, + 97,114,99,104,32,119,104,101,110,32,105,109,112,111,114,116, + 105,110,103,32,115,117,98,109,111,100,117,108,101,115,46,32, + 32,73,102,32,115,101,116,44,32,105,115,95,112,97,99,107, + 97,103,101,32,115,104,111,117,108,100,32,98,101,10,32,32, + 32,32,84,114,117,101,45,45,97,110,100,32,70,97,108,115, + 101,32,111,116,104,101,114,119,105,115,101,46,10,10,32,32, + 32,32,80,97,99,107,97,103,101,115,32,97,114,101,32,115, + 105,109,112,108,121,32,109,111,100,117,108,101,115,32,116,104, + 97,116,32,40,109,97,121,41,32,104,97,118,101,32,115,117, + 98,109,111,100,117,108,101,115,46,32,32,73,102,32,97,32, + 115,112,101,99,10,32,32,32,32,104,97,115,32,97,32,110, + 111,110,45,78,111,110,101,32,118,97,108,117,101,32,105,110, + 32,96,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,96,44,32,116, + 104,101,32,105,109,112,111,114,116,10,32,32,32,32,115,121, + 115,116,101,109,32,119,105,108,108,32,99,111,110,115,105,100, + 101,114,32,109,111,100,117,108,101,115,32,108,111,97,100,101, + 100,32,102,114,111,109,32,116,104,101,32,115,112,101,99,32, + 97,115,32,112,97,99,107,97,103,101,115,46,10,10,32,32, + 32,32,79,110,108,121,32,102,105,110,100,101,114,115,32,40, + 115,101,101,32,105,109,112,111,114,116,108,105,98,46,97,98, + 99,46,77,101,116,97,80,97,116,104,70,105,110,100,101,114, + 32,97,110,100,10,32,32,32,32,105,109,112,111,114,116,108, + 105,98,46,97,98,99,46,80,97,116,104,69,110,116,114,121, + 70,105,110,100,101,114,41,32,115,104,111,117,108,100,32,109, + 111,100,105,102,121,32,77,111,100,117,108,101,83,112,101,99, + 32,105,110,115,116,97,110,99,101,115,46,10,10,32,32,32, + 32,78,41,3,218,6,111,114,105,103,105,110,218,12,108,111, + 97,100,101,114,95,115,116,97,116,101,218,10,105,115,95,112, + 97,99,107,97,103,101,99,3,0,0,0,0,0,0,0,3, + 0,0,0,6,0,0,0,2,0,0,0,67,0,0,0,115, + 54,0,0,0,124,1,124,0,95,0,124,2,124,0,95,1, + 124,3,124,0,95,2,124,4,124,0,95,3,124,5,114,16, + 103,0,110,1,100,0,124,0,95,4,100,1,124,0,95,5, + 100,0,124,0,95,6,100,0,83,0,41,2,78,70,41,7, + 114,20,0,0,0,114,122,0,0,0,114,126,0,0,0,114, + 127,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, + 218,13,95,115,101,116,95,102,105,108,101,97,116,116,114,218, + 7,95,99,97,99,104,101,100,41,6,114,33,0,0,0,114, + 20,0,0,0,114,122,0,0,0,114,126,0,0,0,114,127, + 0,0,0,114,128,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,34,0,0,0,101,1,0,0, + 115,14,0,0,0,6,2,6,1,6,1,6,1,14,1,6, + 3,10,1,122,19,77,111,100,117,108,101,83,112,101,99,46, + 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,6,0,0,0,67,0,0, + 0,115,102,0,0,0,100,1,160,0,124,0,106,1,161,1, + 100,2,160,0,124,0,106,2,161,1,103,2,125,1,124,0, + 106,3,100,0,117,1,114,26,124,1,160,4,100,3,160,0, + 124,0,106,3,161,1,161,1,1,0,124,0,106,5,100,0, + 117,1,114,40,124,1,160,4,100,4,160,0,124,0,106,5, + 161,1,161,1,1,0,100,5,160,0,124,0,106,6,106,7, + 100,6,160,8,124,1,161,1,161,2,83,0,41,7,78,122, + 9,110,97,109,101,61,123,33,114,125,122,11,108,111,97,100, + 101,114,61,123,33,114,125,122,11,111,114,105,103,105,110,61, + 123,33,114,125,122,29,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, + 61,123,125,122,6,123,125,40,123,125,41,122,2,44,32,41, + 9,114,50,0,0,0,114,20,0,0,0,114,122,0,0,0, + 114,126,0,0,0,218,6,97,112,112,101,110,100,114,129,0, + 0,0,218,9,95,95,99,108,97,115,115,95,95,114,9,0, + 0,0,218,4,106,111,105,110,41,2,114,33,0,0,0,114, + 62,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,53,0,0,0,113,1,0,0,115,20,0,0, + 0,10,1,10,1,4,255,10,2,18,1,10,1,6,1,8, + 1,4,255,22,2,122,19,77,111,100,117,108,101,83,112,101, + 99,46,95,95,114,101,112,114,95,95,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,102,0,0,0,124,0,106,0,125,2,122,36, + 124,0,106,1,124,1,106,1,107,2,111,38,124,0,106,2, + 124,1,106,2,107,2,111,38,124,0,106,3,124,1,106,3, + 107,2,111,38,124,2,124,1,106,0,107,2,111,38,124,0, + 106,4,124,1,106,4,107,2,111,38,124,0,106,5,124,1, + 106,5,107,2,87,0,83,0,4,0,116,6,121,50,1,0, + 1,0,1,0,116,7,6,0,89,0,83,0,119,0,114,0, + 0,0,0,41,8,114,129,0,0,0,114,20,0,0,0,114, + 122,0,0,0,114,126,0,0,0,218,6,99,97,99,104,101, + 100,218,12,104,97,115,95,108,111,99,97,116,105,111,110,114, + 2,0,0,0,218,14,78,111,116,73,109,112,108,101,109,101, + 110,116,101,100,41,3,114,33,0,0,0,90,5,111,116,104, + 101,114,90,4,115,109,115,108,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,6,95,95,101,113,95,95,123, + 1,0,0,115,32,0,0,0,6,1,2,1,12,1,10,1, + 2,255,10,2,2,254,8,3,2,253,10,4,2,252,10,5, + 4,251,12,6,8,1,2,255,122,17,77,111,100,117,108,101, + 83,112,101,99,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,58,0,0,0,124,0,106,0,100,0,117, + 0,114,26,124,0,106,1,100,0,117,1,114,26,124,0,106, + 2,114,26,116,3,100,0,117,0,114,19,116,4,130,1,116, + 3,160,5,124,0,106,1,161,1,124,0,95,0,124,0,106, + 0,83,0,114,0,0,0,0,41,6,114,131,0,0,0,114, + 126,0,0,0,114,130,0,0,0,218,19,95,98,111,111,116, + 115,116,114,97,112,95,101,120,116,101,114,110,97,108,218,19, + 78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,114, + 114,111,114,90,11,95,103,101,116,95,99,97,99,104,101,100, + 114,52,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,135,0,0,0,135,1,0,0,115,12,0, + 0,0,10,2,16,1,8,1,4,1,14,1,6,1,122,17, + 77,111,100,117,108,101,83,112,101,99,46,99,97,99,104,101, + 100,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,0,0,0,0,41,1, + 114,131,0,0,0,41,2,114,33,0,0,0,114,135,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,60,0,0,0,179,0,0,0,115,34,0,0,0,8,6, - 2,1,2,1,14,1,12,1,6,1,8,2,8,1,10,1, - 8,2,12,2,16,11,2,128,8,2,4,2,10,254,2,234, - 114,60,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,54, - 0,0,0,116,0,124,0,131,1,125,1,122,6,124,1,160, - 1,161,0,1,0,87,0,110,9,4,0,116,2,121,26,1, - 0,1,0,1,0,89,0,100,1,83,0,124,1,160,3,161, - 0,1,0,100,1,83,0,119,0,41,2,122,189,65,99,113, - 117,105,114,101,115,32,116,104,101,110,32,114,101,108,101,97, - 115,101,115,32,116,104,101,32,109,111,100,117,108,101,32,108, - 111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,32, - 109,111,100,117,108,101,32,110,97,109,101,46,10,10,32,32, - 32,32,84,104,105,115,32,105,115,32,117,115,101,100,32,116, - 111,32,101,110,115,117,114,101,32,97,32,109,111,100,117,108, - 101,32,105,115,32,99,111,109,112,108,101,116,101,108,121,32, - 105,110,105,116,105,97,108,105,122,101,100,44,32,105,110,32, - 116,104,101,10,32,32,32,32,101,118,101,110,116,32,105,116, - 32,105,115,32,98,101,105,110,103,32,105,109,112,111,114,116, - 101,100,32,98,121,32,97,110,111,116,104,101,114,32,116,104, - 114,101,97,100,46,10,32,32,32,32,78,41,4,114,60,0, - 0,0,114,43,0,0,0,114,22,0,0,0,114,44,0,0, - 0,41,2,114,20,0,0,0,114,27,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,19,95,108, - 111,99,107,95,117,110,108,111,99,107,95,109,111,100,117,108, - 101,216,0,0,0,115,14,0,0,0,8,6,2,1,12,1, - 12,1,6,3,12,2,2,251,114,72,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, - 0,0,79,0,0,0,115,14,0,0,0,124,0,124,1,105, - 0,124,2,164,1,142,1,83,0,41,2,97,46,1,0,0, - 114,101,109,111,118,101,95,105,109,112,111,114,116,108,105,98, - 95,102,114,97,109,101,115,32,105,110,32,105,109,112,111,114, - 116,46,99,32,119,105,108,108,32,97,108,119,97,121,115,32, - 114,101,109,111,118,101,32,115,101,113,117,101,110,99,101,115, - 10,32,32,32,32,111,102,32,105,109,112,111,114,116,108,105, - 98,32,102,114,97,109,101,115,32,116,104,97,116,32,101,110, - 100,32,119,105,116,104,32,97,32,99,97,108,108,32,116,111, - 32,116,104,105,115,32,102,117,110,99,116,105,111,110,10,10, - 32,32,32,32,85,115,101,32,105,116,32,105,110,115,116,101, - 97,100,32,111,102,32,97,32,110,111,114,109,97,108,32,99, - 97,108,108,32,105,110,32,112,108,97,99,101,115,32,119,104, - 101,114,101,32,105,110,99,108,117,100,105,110,103,32,116,104, - 101,32,105,109,112,111,114,116,108,105,98,10,32,32,32,32, - 102,114,97,109,101,115,32,105,110,116,114,111,100,117,99,101, - 115,32,117,110,119,97,110,116,101,100,32,110,111,105,115,101, - 32,105,110,116,111,32,116,104,101,32,116,114,97,99,101,98, - 97,99,107,32,40,101,46,103,46,32,119,104,101,110,32,101, - 120,101,99,117,116,105,110,103,10,32,32,32,32,109,111,100, - 117,108,101,32,99,111,100,101,41,10,32,32,32,32,78,114, - 5,0,0,0,41,3,218,1,102,114,62,0,0,0,90,4, - 107,119,100,115,114,5,0,0,0,114,5,0,0,0,114,6, - 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,233,0, - 0,0,115,2,0,0,0,14,8,114,74,0,0,0,114,42, - 0,0,0,41,1,218,9,118,101,114,98,111,115,105,116,121, - 99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,4,0,0,0,71,0,0,0,115,58,0,0,0,116,0, - 106,1,106,2,124,1,107,5,114,27,124,0,160,3,100,1, - 161,1,115,15,100,2,124,0,23,0,125,0,116,4,124,0, - 106,5,124,2,142,0,116,0,106,6,100,3,141,2,1,0, - 100,4,83,0,100,4,83,0,41,5,122,61,80,114,105,110, - 116,32,116,104,101,32,109,101,115,115,97,103,101,32,116,111, - 32,115,116,100,101,114,114,32,105,102,32,45,118,47,80,89, - 84,72,79,78,86,69,82,66,79,83,69,32,105,115,32,116, - 117,114,110,101,100,32,111,110,46,41,2,250,1,35,122,7, - 105,109,112,111,114,116,32,122,2,35,32,41,1,90,4,102, - 105,108,101,78,41,7,114,18,0,0,0,218,5,102,108,97, - 103,115,218,7,118,101,114,98,111,115,101,218,10,115,116,97, - 114,116,115,119,105,116,104,218,5,112,114,105,110,116,114,50, - 0,0,0,218,6,115,116,100,101,114,114,41,3,218,7,109, - 101,115,115,97,103,101,114,75,0,0,0,114,62,0,0,0, + 114,135,0,0,0,144,1,0,0,115,2,0,0,0,10,2, + 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,32,0,0,0,124,0, + 106,0,100,1,117,0,114,13,124,0,106,1,160,2,100,2, + 161,1,100,3,25,0,83,0,124,0,106,1,83,0,41,4, + 122,32,84,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,32,109,111,100,117,108,101,39,115,32,112,97,114,101,110, + 116,46,78,218,1,46,114,25,0,0,0,41,3,114,129,0, + 0,0,114,20,0,0,0,218,10,114,112,97,114,116,105,116, + 105,111,110,114,52,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,6,112,97,114,101,110,116,148, + 1,0,0,115,6,0,0,0,10,3,16,1,6,2,122,17, + 77,111,100,117,108,101,83,112,101,99,46,112,97,114,101,110, + 116,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,1,0,0,0,67,0,0,0,115,6,0,0,0,124, + 0,106,0,83,0,114,0,0,0,0,41,1,114,130,0,0, + 0,114,52,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,136,0,0,0,156,1,0,0,115,2, + 0,0,0,6,2,122,23,77,111,100,117,108,101,83,112,101, + 99,46,104,97,115,95,108,111,99,97,116,105,111,110,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,14,0,0,0,116,0,124,1, + 131,1,124,0,95,1,100,0,83,0,114,0,0,0,0,41, + 2,218,4,98,111,111,108,114,130,0,0,0,41,2,114,33, + 0,0,0,218,5,118,97,108,117,101,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,136,0,0,0,160,1, + 0,0,115,2,0,0,0,14,2,41,12,114,9,0,0,0, + 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, + 34,0,0,0,114,53,0,0,0,114,138,0,0,0,218,8, + 112,114,111,112,101,114,116,121,114,135,0,0,0,218,6,115, + 101,116,116,101,114,114,143,0,0,0,114,136,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,125,0,0,0,64,1,0,0,115,34,0,0, + 0,8,0,4,1,4,36,2,1,12,255,8,12,8,10,2, + 12,10,1,4,8,10,1,2,3,10,1,2,7,10,1,4, + 3,14,1,114,125,0,0,0,169,2,114,126,0,0,0,114, + 128,0,0,0,99,2,0,0,0,0,0,0,0,2,0,0, + 0,6,0,0,0,8,0,0,0,67,0,0,0,115,150,0, + 0,0,116,0,124,1,100,1,131,2,114,37,116,1,100,2, + 117,0,114,11,116,2,130,1,116,1,106,3,125,4,124,3, + 100,2,117,0,114,24,124,4,124,0,124,1,100,3,141,2, + 83,0,124,3,114,28,103,0,110,1,100,2,125,5,124,4, + 124,0,124,1,124,5,100,4,141,3,83,0,124,3,100,2, + 117,0,114,66,116,0,124,1,100,5,131,2,114,64,122,7, + 124,1,160,4,124,0,161,1,125,3,87,0,110,12,4,0, + 116,5,121,74,1,0,1,0,1,0,100,2,125,3,89,0, + 110,2,100,6,125,3,116,6,124,0,124,1,124,2,124,3, + 100,7,141,4,83,0,119,0,41,8,122,53,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,118,97,114,105,111,117, + 115,32,108,111,97,100,101,114,32,109,101,116,104,111,100,115, + 46,90,12,103,101,116,95,102,105,108,101,110,97,109,101,78, + 41,1,114,122,0,0,0,41,2,114,122,0,0,0,114,129, + 0,0,0,114,128,0,0,0,70,114,148,0,0,0,41,7, + 114,11,0,0,0,114,139,0,0,0,114,140,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,114,128,0,0,0,114,87,0, + 0,0,114,125,0,0,0,41,6,114,20,0,0,0,114,122, + 0,0,0,114,126,0,0,0,114,128,0,0,0,114,149,0, + 0,0,90,6,115,101,97,114,99,104,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,104,0,0,0,165,1, + 0,0,115,38,0,0,0,10,2,8,1,4,1,6,1,8, + 2,12,1,12,1,6,1,2,1,6,255,8,3,10,1,2, + 1,14,1,12,1,8,1,4,3,16,2,2,250,114,104,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,8,0,0,0,67,0,0,0,115,30,1,0,0, + 122,5,124,0,106,0,125,3,87,0,110,8,4,0,116,1, + 121,142,1,0,1,0,1,0,89,0,110,6,124,3,100,0, + 117,1,114,20,124,3,83,0,124,0,106,2,125,4,124,1, + 100,0,117,0,114,40,122,5,124,0,106,3,125,1,87,0, + 110,7,4,0,116,1,121,141,1,0,1,0,1,0,89,0, + 122,5,124,0,106,4,125,5,87,0,110,9,4,0,116,1, + 121,140,1,0,1,0,1,0,100,0,125,5,89,0,124,2, + 100,0,117,0,114,81,124,5,100,0,117,0,114,79,122,5, + 124,1,106,5,125,2,87,0,110,12,4,0,116,1,121,139, + 1,0,1,0,1,0,100,0,125,2,89,0,110,2,124,5, + 125,2,122,5,124,0,106,6,125,6,87,0,110,9,4,0, + 116,1,121,138,1,0,1,0,1,0,100,0,125,6,89,0, + 122,7,116,7,124,0,106,8,131,1,125,7,87,0,110,9, + 4,0,116,1,121,137,1,0,1,0,1,0,100,0,125,7, + 89,0,116,9,124,4,124,1,124,2,100,1,141,3,125,3, + 124,5,100,0,117,0,114,126,100,2,110,1,100,3,124,3, + 95,10,124,6,124,3,95,11,124,7,124,3,95,12,124,3, + 83,0,119,0,119,0,119,0,119,0,119,0,119,0,41,4, + 78,169,1,114,126,0,0,0,70,84,41,13,114,113,0,0, + 0,114,2,0,0,0,114,9,0,0,0,114,112,0,0,0, + 114,121,0,0,0,218,7,95,79,82,73,71,73,78,218,10, + 95,95,99,97,99,104,101,100,95,95,218,4,108,105,115,116, + 218,8,95,95,112,97,116,104,95,95,114,125,0,0,0,114, + 130,0,0,0,114,135,0,0,0,114,129,0,0,0,41,8, + 114,110,0,0,0,114,122,0,0,0,114,126,0,0,0,114, + 109,0,0,0,114,20,0,0,0,90,8,108,111,99,97,116, + 105,111,110,114,135,0,0,0,114,129,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,17,95,115, + 112,101,99,95,102,114,111,109,95,109,111,100,117,108,101,191, + 1,0,0,115,84,0,0,0,2,2,10,1,12,1,4,1, + 8,2,4,1,6,2,8,1,2,1,10,1,12,1,2,2, + 2,1,10,1,12,1,6,1,8,1,8,1,2,1,10,1, + 12,1,8,1,4,2,2,1,10,1,12,1,6,1,2,1, + 14,1,12,1,6,1,14,2,18,1,6,1,6,1,4,1, + 2,249,2,252,2,250,2,250,2,251,2,246,114,155,0,0, + 0,70,169,1,218,8,111,118,101,114,114,105,100,101,99,2, + 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,8, + 0,0,0,67,0,0,0,115,178,1,0,0,124,2,115,10, + 116,0,124,1,100,1,100,0,131,3,100,0,117,0,114,24, + 122,6,124,0,106,1,124,1,95,2,87,0,110,7,4,0, + 116,3,121,216,1,0,1,0,1,0,89,0,124,2,115,34, + 116,0,124,1,100,2,100,0,131,3,100,0,117,0,114,83, + 124,0,106,4,125,3,124,3,100,0,117,0,114,70,124,0, + 106,5,100,0,117,1,114,70,116,6,100,0,117,0,114,52, + 116,7,130,1,116,6,106,8,125,4,124,4,160,9,124,4, + 161,1,125,3,124,0,106,5,124,3,95,10,124,3,124,0, + 95,4,100,0,124,1,95,11,122,5,124,3,124,1,95,12, + 87,0,110,7,4,0,116,3,121,215,1,0,1,0,1,0, + 89,0,124,2,115,93,116,0,124,1,100,3,100,0,131,3, + 100,0,117,0,114,107,122,6,124,0,106,13,124,1,95,14, + 87,0,110,7,4,0,116,3,121,214,1,0,1,0,1,0, + 89,0,122,5,124,0,124,1,95,15,87,0,110,7,4,0, + 116,3,121,213,1,0,1,0,1,0,89,0,124,2,115,130, + 116,0,124,1,100,4,100,0,131,3,100,0,117,0,114,149, + 124,0,106,5,100,0,117,1,114,149,122,6,124,0,106,5, + 124,1,95,16,87,0,110,7,4,0,116,3,121,212,1,0, + 1,0,1,0,89,0,124,0,106,17,114,208,124,2,115,162, + 116,0,124,1,100,5,100,0,131,3,100,0,117,0,114,176, + 122,6,124,0,106,18,124,1,95,11,87,0,110,7,4,0, + 116,3,121,211,1,0,1,0,1,0,89,0,124,2,115,186, + 116,0,124,1,100,6,100,0,131,3,100,0,117,0,114,208, + 124,0,106,19,100,0,117,1,114,208,122,7,124,0,106,19, + 124,1,95,20,87,0,124,1,83,0,4,0,116,3,121,210, + 1,0,1,0,1,0,89,0,124,1,83,0,124,1,83,0, + 119,0,119,0,119,0,119,0,119,0,119,0,119,0,41,7, + 78,114,9,0,0,0,114,112,0,0,0,218,11,95,95,112, + 97,99,107,97,103,101,95,95,114,154,0,0,0,114,121,0, + 0,0,114,152,0,0,0,41,21,114,13,0,0,0,114,20, + 0,0,0,114,9,0,0,0,114,2,0,0,0,114,122,0, + 0,0,114,129,0,0,0,114,139,0,0,0,114,140,0,0, + 0,218,16,95,78,97,109,101,115,112,97,99,101,76,111,97, + 100,101,114,218,7,95,95,110,101,119,95,95,90,5,95,112, + 97,116,104,114,121,0,0,0,114,112,0,0,0,114,143,0, + 0,0,114,158,0,0,0,114,113,0,0,0,114,154,0,0, + 0,114,136,0,0,0,114,126,0,0,0,114,135,0,0,0, + 114,152,0,0,0,41,5,114,109,0,0,0,114,110,0,0, + 0,114,157,0,0,0,114,122,0,0,0,114,159,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 16,95,118,101,114,98,111,115,101,95,109,101,115,115,97,103, - 101,244,0,0,0,115,10,0,0,0,12,2,10,1,8,1, - 24,1,4,253,114,83,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,3,0, - 0,0,243,26,0,0,0,135,0,102,1,100,1,100,2,132, - 8,125,1,116,0,124,1,136,0,131,2,1,0,124,1,83, - 0,41,4,122,49,68,101,99,111,114,97,116,111,114,32,116, - 111,32,118,101,114,105,102,121,32,116,104,101,32,110,97,109, - 101,100,32,109,111,100,117,108,101,32,105,115,32,98,117,105, - 108,116,45,105,110,46,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,4,0,0,0,19,0,0,0,115, - 38,0,0,0,124,1,116,0,106,1,118,1,114,14,116,2, - 100,1,160,3,124,1,161,1,124,1,100,2,141,2,130,1, - 136,0,124,0,124,1,131,2,83,0,41,3,78,250,29,123, - 33,114,125,32,105,115,32,110,111,116,32,97,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,114,19,0,0, - 0,41,4,114,18,0,0,0,218,20,98,117,105,108,116,105, - 110,95,109,111,100,117,108,101,95,110,97,109,101,115,218,11, - 73,109,112,111,114,116,69,114,114,111,114,114,50,0,0,0, - 169,2,114,33,0,0,0,218,8,102,117,108,108,110,97,109, - 101,169,1,218,3,102,120,110,114,5,0,0,0,114,6,0, - 0,0,218,25,95,114,101,113,117,105,114,101,115,95,98,117, - 105,108,116,105,110,95,119,114,97,112,112,101,114,254,0,0, - 0,243,10,0,0,0,10,1,10,1,2,1,6,255,10,2, - 122,52,95,114,101,113,117,105,114,101,115,95,98,117,105,108, - 116,105,110,46,60,108,111,99,97,108,115,62,46,95,114,101, - 113,117,105,114,101,115,95,98,117,105,108,116,105,110,95,119, - 114,97,112,112,101,114,78,169,1,114,17,0,0,0,41,2, - 114,91,0,0,0,114,92,0,0,0,114,5,0,0,0,114, - 90,0,0,0,114,6,0,0,0,218,17,95,114,101,113,117, - 105,114,101,115,95,98,117,105,108,116,105,110,252,0,0,0, - 243,6,0,0,0,12,2,10,5,4,1,114,95,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,3,0,0,0,114,84,0,0,0,41,4, - 122,47,68,101,99,111,114,97,116,111,114,32,116,111,32,118, - 101,114,105,102,121,32,116,104,101,32,110,97,109,101,100,32, - 109,111,100,117,108,101,32,105,115,32,102,114,111,122,101,110, - 46,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,19,0,0,0,115,38,0,0,0,116, - 0,160,1,124,1,161,1,115,14,116,2,100,1,160,3,124, - 1,161,1,124,1,100,2,141,2,130,1,136,0,124,0,124, - 1,131,2,83,0,169,3,78,122,27,123,33,114,125,32,105, - 115,32,110,111,116,32,97,32,102,114,111,122,101,110,32,109, - 111,100,117,108,101,114,19,0,0,0,41,4,114,64,0,0, - 0,218,9,105,115,95,102,114,111,122,101,110,114,87,0,0, - 0,114,50,0,0,0,114,88,0,0,0,114,90,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,24,95,114,101,113, - 117,105,114,101,115,95,102,114,111,122,101,110,95,119,114,97, - 112,112,101,114,9,1,0,0,114,93,0,0,0,122,50,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,46, - 60,108,111,99,97,108,115,62,46,95,114,101,113,117,105,114, - 101,115,95,102,114,111,122,101,110,95,119,114,97,112,112,101, - 114,78,114,94,0,0,0,41,2,114,91,0,0,0,114,99, - 0,0,0,114,5,0,0,0,114,90,0,0,0,114,6,0, - 0,0,218,16,95,114,101,113,117,105,114,101,115,95,102,114, - 111,122,101,110,7,1,0,0,114,96,0,0,0,114,100,0, - 0,0,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,74,0,0,0, - 100,1,125,2,116,0,160,1,124,2,116,2,161,2,1,0, - 116,3,124,1,124,0,131,2,125,3,124,1,116,4,106,5, - 118,0,114,33,116,4,106,5,124,1,25,0,125,4,116,6, - 124,3,124,4,131,2,1,0,116,4,106,5,124,1,25,0, - 83,0,116,7,124,3,131,1,83,0,41,3,122,130,76,111, - 97,100,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 32,109,111,100,117,108,101,32,105,110,116,111,32,115,121,115, - 46,109,111,100,117,108,101,115,32,97,110,100,32,114,101,116, - 117,114,110,32,105,116,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,46,32,32,85,115,101,32,108,111,97, - 100,101,114,46,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, - 122,103,116,104,101,32,108,111,97,100,95,109,111,100,117,108, - 101,40,41,32,109,101,116,104,111,100,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,32,97,110,100,32,115,108,97, - 116,101,100,32,102,111,114,32,114,101,109,111,118,97,108,32, - 105,110,32,80,121,116,104,111,110,32,51,46,49,50,59,32, - 117,115,101,32,101,120,101,99,95,109,111,100,117,108,101,40, - 41,32,105,110,115,116,101,97,100,78,41,8,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,16,115,112,101,99,95,102,114,111,109,95,108,111,97, - 100,101,114,114,18,0,0,0,218,7,109,111,100,117,108,101, - 115,218,5,95,101,120,101,99,218,5,95,108,111,97,100,41, - 5,114,33,0,0,0,114,89,0,0,0,218,3,109,115,103, - 218,4,115,112,101,99,218,6,109,111,100,117,108,101,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,17,95, - 108,111,97,100,95,109,111,100,117,108,101,95,115,104,105,109, - 19,1,0,0,115,16,0,0,0,4,6,12,2,10,1,10, - 1,10,1,10,1,10,1,8,2,114,111,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,8, - 0,0,0,67,0,0,0,115,184,0,0,0,116,0,124,0, - 100,1,100,2,131,3,125,1,116,0,124,0,100,3,100,2, - 131,3,4,0,125,2,114,18,116,1,124,2,131,1,83,0, - 116,2,124,1,100,4,131,2,114,37,122,6,124,1,160,3, - 124,0,161,1,87,0,83,0,4,0,116,4,121,91,1,0, - 1,0,1,0,89,0,122,5,124,0,106,5,125,3,87,0, - 110,9,4,0,116,6,121,90,1,0,1,0,1,0,100,5, - 125,3,89,0,122,5,124,0,106,7,125,4,87,0,110,25, - 4,0,116,6,121,89,1,0,1,0,1,0,124,1,100,2, - 117,0,114,75,100,6,160,8,124,3,161,1,6,0,89,0, - 83,0,100,7,160,8,124,3,124,1,161,2,6,0,89,0, - 83,0,100,8,160,8,124,3,124,4,161,2,83,0,119,0, - 119,0,119,0,41,9,122,44,84,104,101,32,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,32,111,102,32,77,111, - 100,117,108,101,84,121,112,101,46,95,95,114,101,112,114,95, - 95,40,41,46,218,10,95,95,108,111,97,100,101,114,95,95, - 78,218,8,95,95,115,112,101,99,95,95,218,11,109,111,100, - 117,108,101,95,114,101,112,114,250,1,63,250,13,60,109,111, - 100,117,108,101,32,123,33,114,125,62,250,20,60,109,111,100, - 117,108,101,32,123,33,114,125,32,40,123,33,114,125,41,62, - 250,23,60,109,111,100,117,108,101,32,123,33,114,125,32,102, - 114,111,109,32,123,33,114,125,62,41,9,114,13,0,0,0, - 218,22,95,109,111,100,117,108,101,95,114,101,112,114,95,102, - 114,111,109,95,115,112,101,99,114,11,0,0,0,114,114,0, - 0,0,218,9,69,120,99,101,112,116,105,111,110,114,9,0, - 0,0,114,2,0,0,0,218,8,95,95,102,105,108,101,95, - 95,114,50,0,0,0,41,5,114,110,0,0,0,218,6,108, - 111,97,100,101,114,114,109,0,0,0,114,20,0,0,0,218, - 8,102,105,108,101,110,97,109,101,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,12,95,109,111,100,117,108, - 101,95,114,101,112,114,38,1,0,0,115,44,0,0,0,12, - 2,16,1,8,1,10,1,2,1,12,1,12,1,2,1,2, - 2,10,1,12,1,6,1,2,1,10,1,12,1,8,1,14, - 1,16,2,12,2,2,250,2,252,2,251,114,124,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,114,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,100,2,100,2, - 100,3,156,3,100,4,100,5,132,2,90,4,100,6,100,7, - 132,0,90,5,100,8,100,9,132,0,90,6,101,7,100,10, - 100,11,132,0,131,1,90,8,101,8,106,9,100,12,100,11, - 132,0,131,1,90,8,101,7,100,13,100,14,132,0,131,1, - 90,10,101,7,100,15,100,16,132,0,131,1,90,11,101,11, - 106,9,100,17,100,16,132,0,131,1,90,11,100,2,83,0, - 41,18,218,10,77,111,100,117,108,101,83,112,101,99,97,208, - 5,0,0,84,104,101,32,115,112,101,99,105,102,105,99,97, - 116,105,111,110,32,102,111,114,32,97,32,109,111,100,117,108, - 101,44,32,117,115,101,100,32,102,111,114,32,108,111,97,100, - 105,110,103,46,10,10,32,32,32,32,65,32,109,111,100,117, - 108,101,39,115,32,115,112,101,99,32,105,115,32,116,104,101, - 32,115,111,117,114,99,101,32,102,111,114,32,105,110,102,111, - 114,109,97,116,105,111,110,32,97,98,111,117,116,32,116,104, - 101,32,109,111,100,117,108,101,46,32,32,70,111,114,10,32, - 32,32,32,100,97,116,97,32,97,115,115,111,99,105,97,116, - 101,100,32,119,105,116,104,32,116,104,101,32,109,111,100,117, - 108,101,44,32,105,110,99,108,117,100,105,110,103,32,115,111, - 117,114,99,101,44,32,117,115,101,32,116,104,101,32,115,112, - 101,99,39,115,10,32,32,32,32,108,111,97,100,101,114,46, - 10,10,32,32,32,32,96,110,97,109,101,96,32,105,115,32, - 116,104,101,32,97,98,115,111,108,117,116,101,32,110,97,109, - 101,32,111,102,32,116,104,101,32,109,111,100,117,108,101,46, - 32,32,96,108,111,97,100,101,114,96,32,105,115,32,116,104, - 101,32,108,111,97,100,101,114,10,32,32,32,32,116,111,32, - 117,115,101,32,119,104,101,110,32,108,111,97,100,105,110,103, - 32,116,104,101,32,109,111,100,117,108,101,46,32,32,96,112, - 97,114,101,110,116,96,32,105,115,32,116,104,101,32,110,97, - 109,101,32,111,102,32,116,104,101,10,32,32,32,32,112,97, - 99,107,97,103,101,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,105,110,46,32,32,84,104,101,32,112,97,114, - 101,110,116,32,105,115,32,100,101,114,105,118,101,100,32,102, - 114,111,109,32,116,104,101,32,110,97,109,101,46,10,10,32, - 32,32,32,96,105,115,95,112,97,99,107,97,103,101,96,32, - 100,101,116,101,114,109,105,110,101,115,32,105,102,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,99,111,110,115, - 105,100,101,114,101,100,32,97,32,112,97,99,107,97,103,101, - 32,111,114,10,32,32,32,32,110,111,116,46,32,32,79,110, - 32,109,111,100,117,108,101,115,32,116,104,105,115,32,105,115, - 32,114,101,102,108,101,99,116,101,100,32,98,121,32,116,104, - 101,32,96,95,95,112,97,116,104,95,95,96,32,97,116,116, - 114,105,98,117,116,101,46,10,10,32,32,32,32,96,111,114, - 105,103,105,110,96,32,105,115,32,116,104,101,32,115,112,101, - 99,105,102,105,99,32,108,111,99,97,116,105,111,110,32,117, - 115,101,100,32,98,121,32,116,104,101,32,108,111,97,100,101, - 114,32,102,114,111,109,32,119,104,105,99,104,32,116,111,10, - 32,32,32,32,108,111,97,100,32,116,104,101,32,109,111,100, - 117,108,101,44,32,105,102,32,116,104,97,116,32,105,110,102, - 111,114,109,97,116,105,111,110,32,105,115,32,97,118,97,105, - 108,97,98,108,101,46,32,32,87,104,101,110,32,102,105,108, - 101,110,97,109,101,32,105,115,10,32,32,32,32,115,101,116, - 44,32,111,114,105,103,105,110,32,119,105,108,108,32,109,97, - 116,99,104,46,10,10,32,32,32,32,96,104,97,115,95,108, - 111,99,97,116,105,111,110,96,32,105,110,100,105,99,97,116, - 101,115,32,116,104,97,116,32,97,32,115,112,101,99,39,115, - 32,34,111,114,105,103,105,110,34,32,114,101,102,108,101,99, - 116,115,32,97,32,108,111,99,97,116,105,111,110,46,10,32, - 32,32,32,87,104,101,110,32,116,104,105,115,32,105,115,32, - 84,114,117,101,44,32,96,95,95,102,105,108,101,95,95,96, - 32,97,116,116,114,105,98,117,116,101,32,111,102,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,115,101,116,46, - 10,10,32,32,32,32,96,99,97,99,104,101,100,96,32,105, - 115,32,116,104,101,32,108,111,99,97,116,105,111,110,32,111, - 102,32,116,104,101,32,99,97,99,104,101,100,32,98,121,116, - 101,99,111,100,101,32,102,105,108,101,44,32,105,102,32,97, - 110,121,46,32,32,73,116,10,32,32,32,32,99,111,114,114, - 101,115,112,111,110,100,115,32,116,111,32,116,104,101,32,96, - 95,95,99,97,99,104,101,100,95,95,96,32,97,116,116,114, - 105,98,117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32, - 115,101,113,117,101,110,99,101,32,111,102,32,112,97,116,104, - 32,101,110,116,114,105,101,115,32,116,111,10,32,32,32,32, - 115,101,97,114,99,104,32,119,104,101,110,32,105,109,112,111, - 114,116,105,110,103,32,115,117,98,109,111,100,117,108,101,115, - 46,32,32,73,102,32,115,101,116,44,32,105,115,95,112,97, - 99,107,97,103,101,32,115,104,111,117,108,100,32,98,101,10, - 32,32,32,32,84,114,117,101,45,45,97,110,100,32,70,97, - 108,115,101,32,111,116,104,101,114,119,105,115,101,46,10,10, - 32,32,32,32,80,97,99,107,97,103,101,115,32,97,114,101, - 32,115,105,109,112,108,121,32,109,111,100,117,108,101,115,32, - 116,104,97,116,32,40,109,97,121,41,32,104,97,118,101,32, - 115,117,98,109,111,100,117,108,101,115,46,32,32,73,102,32, - 97,32,115,112,101,99,10,32,32,32,32,104,97,115,32,97, - 32,110,111,110,45,78,111,110,101,32,118,97,108,117,101,32, - 105,110,32,96,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,96,44, - 32,116,104,101,32,105,109,112,111,114,116,10,32,32,32,32, - 115,121,115,116,101,109,32,119,105,108,108,32,99,111,110,115, - 105,100,101,114,32,109,111,100,117,108,101,115,32,108,111,97, - 100,101,100,32,102,114,111,109,32,116,104,101,32,115,112,101, - 99,32,97,115,32,112,97,99,107,97,103,101,115,46,10,10, - 32,32,32,32,79,110,108,121,32,102,105,110,100,101,114,115, - 32,40,115,101,101,32,105,109,112,111,114,116,108,105,98,46, - 97,98,99,46,77,101,116,97,80,97,116,104,70,105,110,100, - 101,114,32,97,110,100,10,32,32,32,32,105,109,112,111,114, - 116,108,105,98,46,97,98,99,46,80,97,116,104,69,110,116, - 114,121,70,105,110,100,101,114,41,32,115,104,111,117,108,100, - 32,109,111,100,105,102,121,32,77,111,100,117,108,101,83,112, - 101,99,32,105,110,115,116,97,110,99,101,115,46,10,10,32, - 32,32,32,78,41,3,218,6,111,114,105,103,105,110,218,12, - 108,111,97,100,101,114,95,115,116,97,116,101,218,10,105,115, - 95,112,97,99,107,97,103,101,99,3,0,0,0,0,0,0, - 0,3,0,0,0,6,0,0,0,2,0,0,0,67,0,0, - 0,115,54,0,0,0,124,1,124,0,95,0,124,2,124,0, - 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, - 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, - 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, - 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, - 0,114,127,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, - 114,218,7,95,99,97,99,104,101,100,41,6,114,33,0,0, - 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, - 114,127,0,0,0,114,128,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,34,0,0,0,101,1, - 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, - 1,6,3,10,1,122,19,77,111,100,117,108,101,83,112,101, - 99,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,67, - 0,0,0,115,102,0,0,0,100,1,160,0,124,0,106,1, - 161,1,100,2,160,0,124,0,106,2,161,1,103,2,125,1, - 124,0,106,3,100,0,117,1,114,26,124,1,160,4,100,3, - 160,0,124,0,106,3,161,1,161,1,1,0,124,0,106,5, - 100,0,117,1,114,40,124,1,160,4,100,4,160,0,124,0, - 106,5,161,1,161,1,1,0,100,5,160,0,124,0,106,6, - 106,7,100,6,160,8,124,1,161,1,161,2,83,0,41,7, - 78,122,9,110,97,109,101,61,123,33,114,125,122,11,108,111, - 97,100,101,114,61,123,33,114,125,122,11,111,114,105,103,105, - 110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2,44, - 32,41,9,114,50,0,0,0,114,20,0,0,0,114,122,0, - 0,0,114,126,0,0,0,218,6,97,112,112,101,110,100,114, - 129,0,0,0,218,9,95,95,99,108,97,115,115,95,95,114, - 9,0,0,0,218,4,106,111,105,110,41,2,114,33,0,0, - 0,114,62,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,53,0,0,0,113,1,0,0,115,20, - 0,0,0,10,1,10,1,4,255,10,2,18,1,10,1,6, - 1,8,1,4,255,22,2,122,19,77,111,100,117,108,101,83, - 112,101,99,46,95,95,114,101,112,114,95,95,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,102,0,0,0,124,0,106,0,125,2, - 122,36,124,0,106,1,124,1,106,1,107,2,111,38,124,0, - 106,2,124,1,106,2,107,2,111,38,124,0,106,3,124,1, - 106,3,107,2,111,38,124,2,124,1,106,0,107,2,111,38, - 124,0,106,4,124,1,106,4,107,2,111,38,124,0,106,5, - 124,1,106,5,107,2,87,0,83,0,4,0,116,6,121,50, - 1,0,1,0,1,0,116,7,6,0,89,0,83,0,119,0, - 114,0,0,0,0,41,8,114,129,0,0,0,114,20,0,0, - 0,114,122,0,0,0,114,126,0,0,0,218,6,99,97,99, - 104,101,100,218,12,104,97,115,95,108,111,99,97,116,105,111, - 110,114,2,0,0,0,218,14,78,111,116,73,109,112,108,101, - 109,101,110,116,101,100,41,3,114,33,0,0,0,90,5,111, - 116,104,101,114,90,4,115,109,115,108,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,6,95,95,101,113,95, - 95,123,1,0,0,115,32,0,0,0,6,1,2,1,12,1, - 10,1,2,255,10,2,2,254,8,3,2,253,10,4,2,252, - 10,5,4,251,12,6,8,1,2,255,122,17,77,111,100,117, - 108,101,83,112,101,99,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,58,0,0,0,124,0,106,0,100, - 0,117,0,114,26,124,0,106,1,100,0,117,1,114,26,124, - 0,106,2,114,26,116,3,100,0,117,0,114,19,116,4,130, - 1,116,3,160,5,124,0,106,1,161,1,124,0,95,0,124, - 0,106,0,83,0,114,0,0,0,0,41,6,114,131,0,0, - 0,114,126,0,0,0,114,130,0,0,0,218,19,95,98,111, - 111,116,115,116,114,97,112,95,101,120,116,101,114,110,97,108, - 218,19,78,111,116,73,109,112,108,101,109,101,110,116,101,100, - 69,114,114,111,114,90,11,95,103,101,116,95,99,97,99,104, - 101,100,114,52,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,135,0,0,0,135,1,0,0,115, - 12,0,0,0,10,2,16,1,8,1,4,1,14,1,6,1, - 122,17,77,111,100,117,108,101,83,112,101,99,46,99,97,99, - 104,101,100,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,0,0,0,0, - 41,1,114,131,0,0,0,41,2,114,33,0,0,0,114,135, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,135,0,0,0,144,1,0,0,115,2,0,0,0, - 10,2,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,32,0,0,0, - 124,0,106,0,100,1,117,0,114,13,124,0,106,1,160,2, - 100,2,161,1,100,3,25,0,83,0,124,0,106,1,83,0, - 41,4,122,32,84,104,101,32,110,97,109,101,32,111,102,32, - 116,104,101,32,109,111,100,117,108,101,39,115,32,112,97,114, - 101,110,116,46,78,218,1,46,114,25,0,0,0,41,3,114, - 129,0,0,0,114,20,0,0,0,218,10,114,112,97,114,116, - 105,116,105,111,110,114,52,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,6,112,97,114,101,110, - 116,148,1,0,0,115,6,0,0,0,10,3,16,1,6,2, - 122,17,77,111,100,117,108,101,83,112,101,99,46,112,97,114, - 101,110,116,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,1,0,0,0,67,0,0,0,115,6,0,0, - 0,124,0,106,0,83,0,114,0,0,0,0,41,1,114,130, - 0,0,0,114,52,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,136,0,0,0,156,1,0,0, - 115,2,0,0,0,6,2,122,23,77,111,100,117,108,101,83, - 112,101,99,46,104,97,115,95,108,111,99,97,116,105,111,110, - 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,14,0,0,0,116,0, - 124,1,131,1,124,0,95,1,100,0,83,0,114,0,0,0, - 0,41,2,218,4,98,111,111,108,114,130,0,0,0,41,2, - 114,33,0,0,0,218,5,118,97,108,117,101,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,136,0,0,0, - 160,1,0,0,115,2,0,0,0,14,2,41,12,114,9,0, - 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, - 0,114,34,0,0,0,114,53,0,0,0,114,138,0,0,0, - 218,8,112,114,111,112,101,114,116,121,114,135,0,0,0,218, - 6,115,101,116,116,101,114,114,143,0,0,0,114,136,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,125,0,0,0,64,1,0,0,115,34, - 0,0,0,8,0,4,1,4,36,2,1,12,255,8,12,8, - 10,2,12,10,1,4,8,10,1,2,3,10,1,2,7,10, - 1,4,3,14,1,114,125,0,0,0,169,2,114,126,0,0, - 0,114,128,0,0,0,99,2,0,0,0,0,0,0,0,2, - 0,0,0,6,0,0,0,8,0,0,0,67,0,0,0,115, - 150,0,0,0,116,0,124,1,100,1,131,2,114,37,116,1, - 100,2,117,0,114,11,116,2,130,1,116,1,106,3,125,4, - 124,3,100,2,117,0,114,24,124,4,124,0,124,1,100,3, - 141,2,83,0,124,3,114,28,103,0,110,1,100,2,125,5, - 124,4,124,0,124,1,124,5,100,4,141,3,83,0,124,3, - 100,2,117,0,114,66,116,0,124,1,100,5,131,2,114,64, - 122,7,124,1,160,4,124,0,161,1,125,3,87,0,110,12, - 4,0,116,5,121,74,1,0,1,0,1,0,100,2,125,3, - 89,0,110,2,100,6,125,3,116,6,124,0,124,1,124,2, - 124,3,100,7,141,4,83,0,119,0,41,8,122,53,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,118,97,114,105, - 111,117,115,32,108,111,97,100,101,114,32,109,101,116,104,111, - 100,115,46,90,12,103,101,116,95,102,105,108,101,110,97,109, - 101,78,41,1,114,122,0,0,0,41,2,114,122,0,0,0, - 114,129,0,0,0,114,128,0,0,0,70,114,148,0,0,0, - 41,7,114,11,0,0,0,114,139,0,0,0,114,140,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,114,128,0,0,0,114, - 87,0,0,0,114,125,0,0,0,41,6,114,20,0,0,0, - 114,122,0,0,0,114,126,0,0,0,114,128,0,0,0,114, - 149,0,0,0,90,6,115,101,97,114,99,104,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,104,0,0,0, - 165,1,0,0,115,38,0,0,0,10,2,8,1,4,1,6, - 1,8,2,12,1,12,1,6,1,2,1,6,255,8,3,10, - 1,2,1,14,1,12,1,8,1,4,3,16,2,2,250,114, - 104,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,8,0,0,0,67,0,0,0,115,30,1, - 0,0,122,5,124,0,106,0,125,3,87,0,110,8,4,0, - 116,1,121,142,1,0,1,0,1,0,89,0,110,6,124,3, - 100,0,117,1,114,20,124,3,83,0,124,0,106,2,125,4, - 124,1,100,0,117,0,114,40,122,5,124,0,106,3,125,1, - 87,0,110,7,4,0,116,1,121,141,1,0,1,0,1,0, - 89,0,122,5,124,0,106,4,125,5,87,0,110,9,4,0, - 116,1,121,140,1,0,1,0,1,0,100,0,125,5,89,0, - 124,2,100,0,117,0,114,81,124,5,100,0,117,0,114,79, - 122,5,124,1,106,5,125,2,87,0,110,12,4,0,116,1, - 121,139,1,0,1,0,1,0,100,0,125,2,89,0,110,2, - 124,5,125,2,122,5,124,0,106,6,125,6,87,0,110,9, - 4,0,116,1,121,138,1,0,1,0,1,0,100,0,125,6, - 89,0,122,7,116,7,124,0,106,8,131,1,125,7,87,0, - 110,9,4,0,116,1,121,137,1,0,1,0,1,0,100,0, - 125,7,89,0,116,9,124,4,124,1,124,2,100,1,141,3, - 125,3,124,5,100,0,117,0,114,126,100,2,110,1,100,3, - 124,3,95,10,124,6,124,3,95,11,124,7,124,3,95,12, - 124,3,83,0,119,0,119,0,119,0,119,0,119,0,119,0, - 41,4,78,169,1,114,126,0,0,0,70,84,41,13,114,113, - 0,0,0,114,2,0,0,0,114,9,0,0,0,114,112,0, - 0,0,114,121,0,0,0,218,7,95,79,82,73,71,73,78, - 218,10,95,95,99,97,99,104,101,100,95,95,218,4,108,105, - 115,116,218,8,95,95,112,97,116,104,95,95,114,125,0,0, - 0,114,130,0,0,0,114,135,0,0,0,114,129,0,0,0, - 41,8,114,110,0,0,0,114,122,0,0,0,114,126,0,0, - 0,114,109,0,0,0,114,20,0,0,0,90,8,108,111,99, - 97,116,105,111,110,114,135,0,0,0,114,129,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,17, - 95,115,112,101,99,95,102,114,111,109,95,109,111,100,117,108, - 101,191,1,0,0,115,84,0,0,0,2,2,10,1,12,1, - 4,1,8,2,4,1,6,2,8,1,2,1,10,1,12,1, - 2,2,2,1,10,1,12,1,6,1,8,1,8,1,2,1, - 10,1,12,1,8,1,4,2,2,1,10,1,12,1,6,1, - 2,1,14,1,12,1,6,1,14,2,18,1,6,1,6,1, - 4,1,2,249,2,252,2,250,2,250,2,251,2,246,114,155, - 0,0,0,70,169,1,218,8,111,118,101,114,114,105,100,101, - 99,2,0,0,0,0,0,0,0,1,0,0,0,5,0,0, - 0,8,0,0,0,67,0,0,0,115,178,1,0,0,124,2, - 115,10,116,0,124,1,100,1,100,0,131,3,100,0,117,0, - 114,24,122,6,124,0,106,1,124,1,95,2,87,0,110,7, - 4,0,116,3,121,216,1,0,1,0,1,0,89,0,124,2, - 115,34,116,0,124,1,100,2,100,0,131,3,100,0,117,0, - 114,83,124,0,106,4,125,3,124,3,100,0,117,0,114,70, - 124,0,106,5,100,0,117,1,114,70,116,6,100,0,117,0, - 114,52,116,7,130,1,116,6,106,8,125,4,124,4,160,9, - 124,4,161,1,125,3,124,0,106,5,124,3,95,10,124,3, - 124,0,95,4,100,0,124,1,95,11,122,5,124,3,124,1, - 95,12,87,0,110,7,4,0,116,3,121,215,1,0,1,0, - 1,0,89,0,124,2,115,93,116,0,124,1,100,3,100,0, - 131,3,100,0,117,0,114,107,122,6,124,0,106,13,124,1, - 95,14,87,0,110,7,4,0,116,3,121,214,1,0,1,0, - 1,0,89,0,122,5,124,0,124,1,95,15,87,0,110,7, - 4,0,116,3,121,213,1,0,1,0,1,0,89,0,124,2, - 115,130,116,0,124,1,100,4,100,0,131,3,100,0,117,0, - 114,149,124,0,106,5,100,0,117,1,114,149,122,6,124,0, - 106,5,124,1,95,16,87,0,110,7,4,0,116,3,121,212, - 1,0,1,0,1,0,89,0,124,0,106,17,114,208,124,2, - 115,162,116,0,124,1,100,5,100,0,131,3,100,0,117,0, - 114,176,122,6,124,0,106,18,124,1,95,11,87,0,110,7, - 4,0,116,3,121,211,1,0,1,0,1,0,89,0,124,2, - 115,186,116,0,124,1,100,6,100,0,131,3,100,0,117,0, - 114,208,124,0,106,19,100,0,117,1,114,208,122,7,124,0, - 106,19,124,1,95,20,87,0,124,1,83,0,4,0,116,3, - 121,210,1,0,1,0,1,0,89,0,124,1,83,0,124,1, - 83,0,119,0,119,0,119,0,119,0,119,0,119,0,119,0, - 41,7,78,114,9,0,0,0,114,112,0,0,0,218,11,95, - 95,112,97,99,107,97,103,101,95,95,114,154,0,0,0,114, - 121,0,0,0,114,152,0,0,0,41,21,114,13,0,0,0, - 114,20,0,0,0,114,9,0,0,0,114,2,0,0,0,114, - 122,0,0,0,114,129,0,0,0,114,139,0,0,0,114,140, - 0,0,0,218,16,95,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,218,7,95,95,110,101,119,95,95,90,5, - 95,112,97,116,104,114,121,0,0,0,114,112,0,0,0,114, - 143,0,0,0,114,158,0,0,0,114,113,0,0,0,114,154, - 0,0,0,114,136,0,0,0,114,126,0,0,0,114,135,0, - 0,0,114,152,0,0,0,41,5,114,109,0,0,0,114,110, - 0,0,0,114,157,0,0,0,114,122,0,0,0,114,159,0, + 18,95,105,110,105,116,95,109,111,100,117,108,101,95,97,116, + 116,114,115,236,1,0,0,115,112,0,0,0,20,4,2,1, + 12,1,12,1,2,1,20,2,6,1,8,1,10,2,8,1, + 4,1,6,1,10,2,8,1,6,1,6,11,2,1,10,1, + 12,1,2,1,20,2,2,1,12,1,12,1,2,1,2,2, + 10,1,12,1,2,1,20,2,10,1,2,1,12,1,12,1, + 2,1,6,2,20,1,2,1,12,1,12,1,2,1,20,2, + 10,1,2,1,10,1,4,3,12,254,2,1,8,1,2,254, + 2,249,2,249,2,249,2,251,2,250,2,228,114,161,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,3,0,0,0,67,0,0,0,115,82,0,0,0,100, + 1,125,1,116,0,124,0,106,1,100,2,131,2,114,15,124, + 0,106,1,160,2,124,0,161,1,125,1,110,10,116,0,124, + 0,106,1,100,3,131,2,114,25,116,3,100,4,131,1,130, + 1,124,1,100,1,117,0,114,34,116,4,124,0,106,5,131, + 1,125,1,116,6,124,0,124,1,131,2,1,0,124,1,83, + 0,41,5,122,43,67,114,101,97,116,101,32,97,32,109,111, + 100,117,108,101,32,98,97,115,101,100,32,111,110,32,116,104, + 101,32,112,114,111,118,105,100,101,100,32,115,112,101,99,46, + 78,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101, + 218,11,101,120,101,99,95,109,111,100,117,108,101,122,66,108, + 111,97,100,101,114,115,32,116,104,97,116,32,100,101,102,105, + 110,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,109,117,115,116,32,97,108,115,111,32,100,101,102,105,110, + 101,32,99,114,101,97,116,101,95,109,111,100,117,108,101,40, + 41,41,7,114,11,0,0,0,114,122,0,0,0,114,162,0, + 0,0,114,87,0,0,0,114,21,0,0,0,114,20,0,0, + 0,114,161,0,0,0,169,2,114,109,0,0,0,114,110,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,18,95,105,110,105,116,95,109,111,100,117,108,101,95, - 97,116,116,114,115,236,1,0,0,115,112,0,0,0,20,4, - 2,1,12,1,12,1,2,1,20,2,6,1,8,1,10,2, - 8,1,4,1,6,1,10,2,8,1,6,1,6,11,2,1, - 10,1,12,1,2,1,20,2,2,1,12,1,12,1,2,1, - 2,2,10,1,12,1,2,1,20,2,10,1,2,1,12,1, - 12,1,2,1,6,2,20,1,2,1,12,1,12,1,2,1, - 20,2,10,1,2,1,10,1,4,3,12,254,2,1,8,1, - 2,254,2,249,2,249,2,249,2,251,2,250,2,228,114,161, + 0,218,16,109,111,100,117,108,101,95,102,114,111,109,95,115, + 112,101,99,52,2,0,0,115,18,0,0,0,4,3,12,1, + 14,3,12,1,8,1,8,2,10,1,10,1,4,1,114,165, 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,67,0,0,0,115,82,0,0, - 0,100,1,125,1,116,0,124,0,106,1,100,2,131,2,114, - 15,124,0,106,1,160,2,124,0,161,1,125,1,110,10,116, - 0,124,0,106,1,100,3,131,2,114,25,116,3,100,4,131, - 1,130,1,124,1,100,1,117,0,114,34,116,4,124,0,106, - 5,131,1,125,1,116,6,124,0,124,1,131,2,1,0,124, - 1,83,0,41,5,122,43,67,114,101,97,116,101,32,97,32, - 109,111,100,117,108,101,32,98,97,115,101,100,32,111,110,32, - 116,104,101,32,112,114,111,118,105,100,101,100,32,115,112,101, - 99,46,78,218,13,99,114,101,97,116,101,95,109,111,100,117, - 108,101,218,11,101,120,101,99,95,109,111,100,117,108,101,122, - 66,108,111,97,100,101,114,115,32,116,104,97,116,32,100,101, - 102,105,110,101,32,101,120,101,99,95,109,111,100,117,108,101, - 40,41,32,109,117,115,116,32,97,108,115,111,32,100,101,102, - 105,110,101,32,99,114,101,97,116,101,95,109,111,100,117,108, - 101,40,41,41,7,114,11,0,0,0,114,122,0,0,0,114, - 162,0,0,0,114,87,0,0,0,114,21,0,0,0,114,20, - 0,0,0,114,161,0,0,0,169,2,114,109,0,0,0,114, - 110,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,16,109,111,100,117,108,101,95,102,114,111,109, - 95,115,112,101,99,52,2,0,0,115,18,0,0,0,4,3, - 12,1,14,3,12,1,8,1,8,2,10,1,10,1,4,1, - 114,165,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,100, - 0,0,0,124,0,106,0,100,1,117,0,114,7,100,2,110, - 2,124,0,106,0,125,1,124,0,106,1,100,1,117,0,114, - 32,124,0,106,2,100,1,117,0,114,25,100,3,160,3,124, - 1,161,1,83,0,100,4,160,3,124,1,124,0,106,2,161, - 2,83,0,124,0,106,4,114,42,100,5,160,3,124,1,124, - 0,106,1,161,2,83,0,100,6,160,3,124,0,106,0,124, - 0,106,1,161,2,83,0,41,7,122,38,82,101,116,117,114, - 110,32,116,104,101,32,114,101,112,114,32,116,111,32,117,115, - 101,32,102,111,114,32,116,104,101,32,109,111,100,117,108,101, - 46,78,114,115,0,0,0,114,116,0,0,0,114,117,0,0, - 0,114,118,0,0,0,250,18,60,109,111,100,117,108,101,32, - 123,33,114,125,32,40,123,125,41,62,41,5,114,20,0,0, - 0,114,126,0,0,0,114,122,0,0,0,114,50,0,0,0, - 114,136,0,0,0,41,2,114,109,0,0,0,114,20,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,119,0,0,0,69,2,0,0,115,16,0,0,0,20,3, - 10,1,10,1,10,1,14,2,6,2,14,1,16,2,114,119, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,10,0,0,0,67,0,0,0,115,24,1,0, - 0,124,0,106,0,125,2,116,1,124,2,131,1,143,123,1, - 0,116,2,106,3,160,4,124,2,161,1,124,1,117,1,114, - 27,100,1,160,5,124,2,161,1,125,3,116,6,124,3,124, - 2,100,2,141,2,130,1,122,80,124,0,106,7,100,3,117, - 0,114,53,124,0,106,8,100,3,117,0,114,45,116,6,100, - 4,124,0,106,0,100,2,141,2,130,1,116,9,124,0,124, - 1,100,5,100,6,141,3,1,0,110,40,116,9,124,0,124, - 1,100,5,100,6,141,3,1,0,116,10,124,0,106,7,100, - 7,131,2,115,87,116,11,124,0,106,7,131,1,155,0,100, - 8,157,2,125,3,116,12,160,13,124,3,116,14,161,2,1, - 0,124,0,106,7,160,15,124,2,161,1,1,0,110,6,124, - 0,106,7,160,16,124,1,161,1,1,0,87,0,116,2,106, - 3,160,17,124,0,106,0,161,1,125,1,124,1,116,2,106, - 3,124,0,106,0,60,0,110,14,116,2,106,3,160,17,124, - 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, - 0,60,0,119,0,87,0,100,3,4,0,4,0,131,3,1, - 0,124,1,83,0,49,0,115,133,119,1,1,0,1,0,1, - 0,89,0,1,0,124,1,83,0,41,9,122,70,69,120,101, - 99,117,116,101,32,116,104,101,32,115,112,101,99,39,115,32, - 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, - 32,105,110,32,97,110,32,101,120,105,115,116,105,110,103,32, - 109,111,100,117,108,101,39,115,32,110,97,109,101,115,112,97, - 99,101,46,122,30,109,111,100,117,108,101,32,123,33,114,125, - 32,110,111,116,32,105,110,32,115,121,115,46,109,111,100,117, - 108,101,115,114,19,0,0,0,78,250,14,109,105,115,115,105, - 110,103,32,108,111,97,100,101,114,84,114,156,0,0,0,114, - 163,0,0,0,250,55,46,101,120,101,99,95,109,111,100,117, - 108,101,40,41,32,110,111,116,32,102,111,117,110,100,59,32, - 102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32, - 108,111,97,100,95,109,111,100,117,108,101,40,41,41,18,114, - 20,0,0,0,114,57,0,0,0,114,18,0,0,0,114,105, - 0,0,0,114,38,0,0,0,114,50,0,0,0,114,87,0, - 0,0,114,122,0,0,0,114,129,0,0,0,114,161,0,0, - 0,114,11,0,0,0,114,7,0,0,0,114,101,0,0,0, - 114,102,0,0,0,218,13,73,109,112,111,114,116,87,97,114, - 110,105,110,103,218,11,108,111,97,100,95,109,111,100,117,108, - 101,114,163,0,0,0,218,3,112,111,112,41,4,114,109,0, - 0,0,114,110,0,0,0,114,20,0,0,0,114,108,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,106,0,0,0,86,2,0,0,115,50,0,0,0,6,2, - 10,1,16,1,10,1,12,1,2,1,10,1,10,1,14,1, - 16,2,14,2,12,1,16,1,12,2,14,1,12,2,2,128, - 14,4,14,1,14,255,16,1,10,233,4,24,16,232,4,24, - 114,106,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,10, - 1,0,0,122,9,124,0,106,0,160,1,124,0,106,2,161, - 1,1,0,87,0,110,23,1,0,1,0,1,0,124,0,106, - 2,116,3,106,4,118,0,114,32,116,3,106,4,160,5,124, - 0,106,2,161,1,125,1,124,1,116,3,106,4,124,0,106, - 2,60,0,130,0,116,3,106,4,160,5,124,0,106,2,161, - 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,116, - 6,124,1,100,1,100,0,131,3,100,0,117,0,114,68,122, - 6,124,0,106,0,124,1,95,7,87,0,110,7,4,0,116, - 8,121,132,1,0,1,0,1,0,89,0,116,6,124,1,100, - 2,100,0,131,3,100,0,117,0,114,104,122,20,124,1,106, - 9,124,1,95,10,116,11,124,1,100,3,131,2,115,95,124, - 0,106,2,160,12,100,4,161,1,100,5,25,0,124,1,95, - 10,87,0,110,7,4,0,116,8,121,131,1,0,1,0,1, - 0,89,0,116,6,124,1,100,6,100,0,131,3,100,0,117, - 0,114,128,122,6,124,0,124,1,95,13,87,0,124,1,83, - 0,4,0,116,8,121,130,1,0,1,0,1,0,89,0,124, - 1,83,0,124,1,83,0,119,0,119,0,119,0,41,7,78, - 114,112,0,0,0,114,158,0,0,0,114,154,0,0,0,114, - 141,0,0,0,114,25,0,0,0,114,113,0,0,0,41,14, - 114,122,0,0,0,114,170,0,0,0,114,20,0,0,0,114, - 18,0,0,0,114,105,0,0,0,114,171,0,0,0,114,13, - 0,0,0,114,112,0,0,0,114,2,0,0,0,114,9,0, - 0,0,114,158,0,0,0,114,11,0,0,0,114,142,0,0, - 0,114,113,0,0,0,114,164,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,25,95,108,111,97, - 100,95,98,97,99,107,119,97,114,100,95,99,111,109,112,97, - 116,105,98,108,101,116,2,0,0,115,64,0,0,0,2,3, - 18,1,6,1,12,1,14,1,12,1,2,1,14,3,12,1, - 16,1,2,1,12,1,12,1,2,1,16,1,2,1,8,4, - 10,1,18,1,4,128,12,1,2,1,16,1,2,1,8,1, - 4,3,12,254,2,1,8,1,2,254,2,251,2,246,114,172, + 2,0,0,0,4,0,0,0,67,0,0,0,115,100,0,0, + 0,124,0,106,0,100,1,117,0,114,7,100,2,110,2,124, + 0,106,0,125,1,124,0,106,1,100,1,117,0,114,32,124, + 0,106,2,100,1,117,0,114,25,100,3,160,3,124,1,161, + 1,83,0,100,4,160,3,124,1,124,0,106,2,161,2,83, + 0,124,0,106,4,114,42,100,5,160,3,124,1,124,0,106, + 1,161,2,83,0,100,6,160,3,124,0,106,0,124,0,106, + 1,161,2,83,0,41,7,122,38,82,101,116,117,114,110,32, + 116,104,101,32,114,101,112,114,32,116,111,32,117,115,101,32, + 102,111,114,32,116,104,101,32,109,111,100,117,108,101,46,78, + 114,115,0,0,0,114,116,0,0,0,114,117,0,0,0,114, + 118,0,0,0,250,18,60,109,111,100,117,108,101,32,123,33, + 114,125,32,40,123,125,41,62,41,5,114,20,0,0,0,114, + 126,0,0,0,114,122,0,0,0,114,50,0,0,0,114,136, + 0,0,0,41,2,114,109,0,0,0,114,20,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,119, + 0,0,0,69,2,0,0,115,16,0,0,0,20,3,10,1, + 10,1,10,1,14,2,6,2,14,1,16,2,114,119,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,10,0,0,0,67,0,0,0,115,24,1,0,0,124, + 0,106,0,125,2,116,1,124,2,131,1,143,123,1,0,116, + 2,106,3,160,4,124,2,161,1,124,1,117,1,114,27,100, + 1,160,5,124,2,161,1,125,3,116,6,124,3,124,2,100, + 2,141,2,130,1,122,80,124,0,106,7,100,3,117,0,114, + 53,124,0,106,8,100,3,117,0,114,45,116,6,100,4,124, + 0,106,0,100,2,141,2,130,1,116,9,124,0,124,1,100, + 5,100,6,141,3,1,0,110,40,116,9,124,0,124,1,100, + 5,100,6,141,3,1,0,116,10,124,0,106,7,100,7,131, + 2,115,87,116,11,124,0,106,7,131,1,155,0,100,8,157, + 2,125,3,116,12,160,13,124,3,116,14,161,2,1,0,124, + 0,106,7,160,15,124,2,161,1,1,0,110,6,124,0,106, + 7,160,16,124,1,161,1,1,0,87,0,116,2,106,3,160, + 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, + 0,106,0,60,0,110,14,116,2,106,3,160,17,124,0,106, + 0,161,1,125,1,124,1,116,2,106,3,124,0,106,0,60, + 0,119,0,87,0,100,3,4,0,4,0,131,3,1,0,124, + 1,83,0,49,0,115,133,119,1,1,0,1,0,1,0,89, + 0,1,0,124,1,83,0,41,9,122,70,69,120,101,99,117, + 116,101,32,116,104,101,32,115,112,101,99,39,115,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, + 110,32,97,110,32,101,120,105,115,116,105,110,103,32,109,111, + 100,117,108,101,39,115,32,110,97,109,101,115,112,97,99,101, + 46,122,30,109,111,100,117,108,101,32,123,33,114,125,32,110, + 111,116,32,105,110,32,115,121,115,46,109,111,100,117,108,101, + 115,114,19,0,0,0,78,250,14,109,105,115,115,105,110,103, + 32,108,111,97,100,101,114,84,114,156,0,0,0,114,163,0, + 0,0,250,55,46,101,120,101,99,95,109,111,100,117,108,101, + 40,41,32,110,111,116,32,102,111,117,110,100,59,32,102,97, + 108,108,105,110,103,32,98,97,99,107,32,116,111,32,108,111, + 97,100,95,109,111,100,117,108,101,40,41,41,18,114,20,0, + 0,0,114,57,0,0,0,114,18,0,0,0,114,105,0,0, + 0,114,38,0,0,0,114,50,0,0,0,114,87,0,0,0, + 114,122,0,0,0,114,129,0,0,0,114,161,0,0,0,114, + 11,0,0,0,114,7,0,0,0,114,101,0,0,0,114,102, + 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, + 110,103,218,11,108,111,97,100,95,109,111,100,117,108,101,114, + 163,0,0,0,218,3,112,111,112,41,4,114,109,0,0,0, + 114,110,0,0,0,114,20,0,0,0,114,108,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,106, + 0,0,0,86,2,0,0,115,50,0,0,0,6,2,10,1, + 16,1,10,1,12,1,2,1,10,1,10,1,14,1,16,2, + 14,2,12,1,16,1,12,2,14,1,12,2,2,128,14,4, + 14,1,14,255,16,1,10,233,4,24,16,232,4,24,114,106, 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,11,0,0,0,67,0,0,0,115,242,0,0, - 0,124,0,106,0,100,0,117,1,114,29,116,1,124,0,106, - 0,100,1,131,2,115,29,116,2,124,0,106,0,131,1,155, - 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, - 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, - 1,125,2,100,3,124,0,95,8,122,79,124,2,116,9,106, - 10,124,0,106,11,60,0,122,26,124,0,106,0,100,0,117, - 0,114,62,124,0,106,12,100,0,117,0,114,61,116,13,100, - 4,124,0,106,11,100,5,141,2,130,1,110,6,124,0,106, - 0,160,14,124,2,161,1,1,0,87,0,110,19,1,0,1, - 0,1,0,122,7,116,9,106,10,124,0,106,11,61,0,87, - 0,130,0,4,0,116,15,121,120,1,0,1,0,1,0,89, - 0,130,0,116,9,106,10,160,16,124,0,106,11,161,1,125, - 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, - 6,124,0,106,11,124,0,106,0,131,3,1,0,87,0,100, - 7,124,0,95,8,124,2,83,0,100,7,124,0,95,8,119, - 0,119,0,41,8,78,114,163,0,0,0,114,168,0,0,0, - 84,114,167,0,0,0,114,19,0,0,0,122,18,105,109,112, - 111,114,116,32,123,33,114,125,32,35,32,123,33,114,125,70, - 41,18,114,122,0,0,0,114,11,0,0,0,114,7,0,0, - 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, - 114,172,0,0,0,114,165,0,0,0,90,13,95,105,110,105, - 116,105,97,108,105,122,105,110,103,114,18,0,0,0,114,105, - 0,0,0,114,20,0,0,0,114,129,0,0,0,114,87,0, - 0,0,114,163,0,0,0,114,70,0,0,0,114,171,0,0, - 0,114,83,0,0,0,41,3,114,109,0,0,0,114,108,0, - 0,0,114,110,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,14,95,108,111,97,100,95,117,110, - 108,111,99,107,101,100,152,2,0,0,115,60,0,0,0,10, - 2,12,2,16,1,12,2,8,1,8,2,6,5,2,1,12, - 1,2,1,10,1,10,1,14,1,2,255,12,4,4,128,6, - 1,2,1,12,1,2,3,12,254,2,1,2,1,14,5,12, - 1,18,1,6,2,4,2,8,254,2,245,114,173,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,54,0,0,0,116,0, - 124,0,106,1,131,1,143,12,1,0,116,2,124,0,131,1, - 87,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 49,0,115,20,119,1,1,0,1,0,1,0,89,0,1,0, - 100,1,83,0,41,2,122,191,82,101,116,117,114,110,32,97, - 32,110,101,119,32,109,111,100,117,108,101,32,111,98,106,101, - 99,116,44,32,108,111,97,100,101,100,32,98,121,32,116,104, - 101,32,115,112,101,99,39,115,32,108,111,97,100,101,114,46, - 10,10,32,32,32,32,84,104,101,32,109,111,100,117,108,101, - 32,105,115,32,110,111,116,32,97,100,100,101,100,32,116,111, - 32,105,116,115,32,112,97,114,101,110,116,46,10,10,32,32, - 32,32,73,102,32,97,32,109,111,100,117,108,101,32,105,115, - 32,97,108,114,101,97,100,121,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,44,32,116,104,97,116,32,101,120, - 105,115,116,105,110,103,32,109,111,100,117,108,101,32,103,101, - 116,115,10,32,32,32,32,99,108,111,98,98,101,114,101,100, - 46,10,10,32,32,32,32,78,41,3,114,57,0,0,0,114, - 20,0,0,0,114,173,0,0,0,169,1,114,109,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 107,0,0,0,197,2,0,0,115,10,0,0,0,12,9,6, - 1,14,255,2,1,20,255,114,107,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,140,0,0,0,101,0,90,1,100,0, - 90,2,100,1,90,3,100,2,90,4,101,5,100,3,100,4, - 132,0,131,1,90,6,101,7,100,20,100,6,100,7,132,1, - 131,1,90,8,101,7,100,21,100,8,100,9,132,1,131,1, - 90,9,101,5,100,10,100,11,132,0,131,1,90,10,101,5, - 100,12,100,13,132,0,131,1,90,11,101,7,101,12,100,14, - 100,15,132,0,131,1,131,1,90,13,101,7,101,12,100,16, - 100,17,132,0,131,1,131,1,90,14,101,7,101,12,100,18, - 100,19,132,0,131,1,131,1,90,15,101,7,101,16,131,1, - 90,17,100,5,83,0,41,22,218,15,66,117,105,108,116,105, - 110,73,109,112,111,114,116,101,114,122,144,77,101,116,97,32, - 112,97,116,104,32,105,109,112,111,114,116,32,102,111,114,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 2,0,0,0,8,0,0,0,67,0,0,0,115,10,1,0, + 0,122,9,124,0,106,0,160,1,124,0,106,2,161,1,1, + 0,87,0,110,23,1,0,1,0,1,0,124,0,106,2,116, + 3,106,4,118,0,114,32,116,3,106,4,160,5,124,0,106, + 2,161,1,125,1,124,1,116,3,106,4,124,0,106,2,60, + 0,130,0,116,3,106,4,160,5,124,0,106,2,161,1,125, + 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, + 1,100,1,100,0,131,3,100,0,117,0,114,68,122,6,124, + 0,106,0,124,1,95,7,87,0,110,7,4,0,116,8,121, + 132,1,0,1,0,1,0,89,0,116,6,124,1,100,2,100, + 0,131,3,100,0,117,0,114,104,122,20,124,1,106,9,124, + 1,95,10,116,11,124,1,100,3,131,2,115,95,124,0,106, + 2,160,12,100,4,161,1,100,5,25,0,124,1,95,10,87, + 0,110,7,4,0,116,8,121,131,1,0,1,0,1,0,89, + 0,116,6,124,1,100,6,100,0,131,3,100,0,117,0,114, + 128,122,6,124,0,124,1,95,13,87,0,124,1,83,0,4, + 0,116,8,121,130,1,0,1,0,1,0,89,0,124,1,83, + 0,124,1,83,0,119,0,119,0,119,0,41,7,78,114,112, + 0,0,0,114,158,0,0,0,114,154,0,0,0,114,141,0, + 0,0,114,25,0,0,0,114,113,0,0,0,41,14,114,122, + 0,0,0,114,170,0,0,0,114,20,0,0,0,114,18,0, + 0,0,114,105,0,0,0,114,171,0,0,0,114,13,0,0, + 0,114,112,0,0,0,114,2,0,0,0,114,9,0,0,0, + 114,158,0,0,0,114,11,0,0,0,114,142,0,0,0,114, + 113,0,0,0,114,164,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,25,95,108,111,97,100,95, + 98,97,99,107,119,97,114,100,95,99,111,109,112,97,116,105, + 98,108,101,116,2,0,0,115,64,0,0,0,2,3,18,1, + 6,1,12,1,14,1,12,1,2,1,14,3,12,1,16,1, + 2,1,12,1,12,1,2,1,16,1,2,1,8,4,10,1, + 18,1,4,128,12,1,2,1,16,1,2,1,8,1,4,3, + 12,254,2,1,8,1,2,254,2,251,2,246,114,172,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,11,0,0,0,67,0,0,0,115,242,0,0,0,124, + 0,106,0,100,0,117,1,114,29,116,1,124,0,106,0,100, + 1,131,2,115,29,116,2,124,0,106,0,131,1,155,0,100, + 2,157,2,125,1,116,3,160,4,124,1,116,5,161,2,1, + 0,116,6,124,0,131,1,83,0,116,7,124,0,131,1,125, + 2,100,3,124,0,95,8,122,79,124,2,116,9,106,10,124, + 0,106,11,60,0,122,26,124,0,106,0,100,0,117,0,114, + 62,124,0,106,12,100,0,117,0,114,61,116,13,100,4,124, + 0,106,11,100,5,141,2,130,1,110,6,124,0,106,0,160, + 14,124,2,161,1,1,0,87,0,110,19,1,0,1,0,1, + 0,122,7,116,9,106,10,124,0,106,11,61,0,87,0,130, + 0,4,0,116,15,121,120,1,0,1,0,1,0,89,0,130, + 0,116,9,106,10,160,16,124,0,106,11,161,1,125,2,124, + 2,116,9,106,10,124,0,106,11,60,0,116,17,100,6,124, + 0,106,11,124,0,106,0,131,3,1,0,87,0,100,7,124, + 0,95,8,124,2,83,0,100,7,124,0,95,8,119,0,119, + 0,41,8,78,114,163,0,0,0,114,168,0,0,0,84,114, + 167,0,0,0,114,19,0,0,0,122,18,105,109,112,111,114, + 116,32,123,33,114,125,32,35,32,123,33,114,125,70,41,18, + 114,122,0,0,0,114,11,0,0,0,114,7,0,0,0,114, + 101,0,0,0,114,102,0,0,0,114,169,0,0,0,114,172, + 0,0,0,114,165,0,0,0,90,13,95,105,110,105,116,105, + 97,108,105,122,105,110,103,114,18,0,0,0,114,105,0,0, + 0,114,20,0,0,0,114,129,0,0,0,114,87,0,0,0, + 114,163,0,0,0,114,70,0,0,0,114,171,0,0,0,114, + 83,0,0,0,41,3,114,109,0,0,0,114,108,0,0,0, + 114,110,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,14,95,108,111,97,100,95,117,110,108,111, + 99,107,101,100,152,2,0,0,115,60,0,0,0,10,2,12, + 2,16,1,12,2,8,1,8,2,6,5,2,1,12,1,2, + 1,10,1,10,1,14,1,2,255,12,4,4,128,6,1,2, + 1,12,1,2,3,12,254,2,1,2,1,14,5,12,1,18, + 1,6,2,4,2,8,254,2,245,114,173,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,54,0,0,0,116,0,124,0, + 106,1,131,1,143,12,1,0,116,2,124,0,131,1,87,0, + 2,0,100,1,4,0,4,0,131,3,1,0,83,0,49,0, + 115,20,119,1,1,0,1,0,1,0,89,0,1,0,100,1, + 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, + 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, + 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, + 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, + 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, + 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, + 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, + 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, + 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, + 100,117,108,101,115,44,32,116,104,97,116,32,101,120,105,115, + 116,105,110,103,32,109,111,100,117,108,101,32,103,101,116,115, + 10,32,32,32,32,99,108,111,98,98,101,114,101,100,46,10, + 10,32,32,32,32,78,41,3,114,57,0,0,0,114,20,0, + 0,0,114,173,0,0,0,169,1,114,109,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,107,0, + 0,0,197,2,0,0,115,6,0,0,0,12,9,6,1,36, + 255,114,107,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, + 140,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, + 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, + 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, + 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, + 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, + 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, + 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, + 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, + 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, + 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,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,34,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,100,2,124,0,106,3,155, + 2,100,3,116,4,106,5,155,0,100,4,157,5,83,0,41, + 6,250,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,81,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, + 101,112,114,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,122,8,60,109,111,100,117, + 108,101,32,122,2,32,40,122,2,41,62,78,41,6,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,9,0, + 0,0,114,175,0,0,0,114,151,0,0,0,169,1,114,110, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,114,0,0,0,223,2,0,0,115,8,0,0,0, + 6,7,2,1,4,255,22,2,122,27,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101, + 95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, + 42,0,0,0,124,2,100,0,117,1,114,6,100,0,83,0, + 116,0,160,1,124,1,161,1,114,19,116,2,124,1,124,0, + 124,0,106,3,100,1,141,3,83,0,100,0,83,0,169,2, + 78,114,150,0,0,0,41,4,114,64,0,0,0,90,10,105, + 115,95,98,117,105,108,116,105,110,114,104,0,0,0,114,151, + 0,0,0,169,4,218,3,99,108,115,114,89,0,0,0,218, + 4,112,97,116,104,218,6,116,97,114,103,101,116,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,234,2,0,0,115,10,0,0,0, + 8,2,4,1,10,1,16,1,4,2,122,25,66,117,105,108, + 116,105,110,73,109,112,111,114,116,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,42, + 0,0,0,116,0,160,1,100,1,116,2,161,2,1,0,124, + 0,160,3,124,1,124,2,161,2,125,3,124,3,100,2,117, + 1,114,19,124,3,106,4,83,0,100,2,83,0,41,3,122, + 175,70,105,110,100,32,116,104,101,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,46,10,10,32,32,32,32, + 32,32,32,32,73,102,32,39,112,97,116,104,39,32,105,115, + 32,101,118,101,114,32,115,112,101,99,105,102,105,101,100,32, + 116,104,101,110,32,116,104,101,32,115,101,97,114,99,104,32, + 105,115,32,99,111,110,115,105,100,101,114,101,100,32,97,32, + 102,97,105,108,117,114,101,46,10,10,32,32,32,32,32,32, + 32,32,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, + 122,106,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,41,5,114, + 101,0,0,0,114,102,0,0,0,114,103,0,0,0,114,183, + 0,0,0,114,122,0,0,0,41,4,114,180,0,0,0,114, + 89,0,0,0,114,181,0,0,0,114,109,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,243,2,0,0,115,10, + 0,0,0,6,9,2,2,4,254,12,3,18,1,122,27,66, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,102, + 105,110,100,95,109,111,100,117,108,101,99,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,46,0,0,0,124,0,106,0,116,1,106,2, + 118,1,114,17,116,3,100,1,160,4,124,0,106,0,161,1, + 124,0,106,0,100,2,141,2,130,1,116,5,116,6,106,7, + 124,0,131,2,83,0,41,4,122,24,67,114,101,97,116,101, + 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,114,85,0,0,0,114,19,0,0,0,78,41,8,114, + 20,0,0,0,114,18,0,0,0,114,86,0,0,0,114,87, + 0,0,0,114,50,0,0,0,114,74,0,0,0,114,64,0, + 0,0,90,14,99,114,101,97,116,101,95,98,117,105,108,116, + 105,110,114,174,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,162,0,0,0,2,3,0,0,115, + 10,0,0,0,12,3,12,1,4,1,6,255,12,2,122,29, + 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46, + 99,114,101,97,116,101,95,109,111,100,117,108,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,16,0,0,0,116,0,116,1,106, + 2,124,0,131,2,1,0,100,1,83,0,41,2,122,22,69, + 120,101,99,32,97,32,98,117,105,108,116,45,105,110,32,109, + 111,100,117,108,101,78,41,3,114,74,0,0,0,114,64,0, + 0,0,90,12,101,120,101,99,95,98,117,105,108,116,105,110, + 114,177,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,163,0,0,0,10,3,0,0,115,2,0, + 0,0,16,3,122,27,66,117,105,108,116,105,110,73,109,112, + 111,114,116,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,243,4,0,0,0,100, + 1,83,0,41,2,122,57,82,101,116,117,114,110,32,78,111, + 110,101,32,97,115,32,98,117,105,108,116,45,105,110,32,109, + 111,100,117,108,101,115,32,100,111,32,110,111,116,32,104,97, + 118,101,32,99,111,100,101,32,111,98,106,101,99,116,115,46, + 78,114,5,0,0,0,169,2,114,180,0,0,0,114,89,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,8,103,101,116,95,99,111,100,101,15,3,0,0,243, + 2,0,0,0,4,4,122,24,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,46,103,101,116,95,99,111,100,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,1,0,0,0,67,0,0,0,114,185,0,0,0,41,2, + 122,56,82,101,116,117,114,110,32,78,111,110,101,32,97,115, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 115,32,100,111,32,110,111,116,32,104,97,118,101,32,115,111, + 117,114,99,101,32,99,111,100,101,46,78,114,5,0,0,0, + 114,186,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, + 21,3,0,0,114,188,0,0,0,122,26,66,117,105,108,116, + 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, + 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,1,0,0,0,67,0,0,0,114,185, + 0,0,0,41,3,122,52,82,101,116,117,114,110,32,70,97, + 108,115,101,32,97,115,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,115,32,97,114,101,32,110,101,118,101, + 114,32,112,97,99,107,97,103,101,115,46,70,78,114,5,0, + 0,0,114,186,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,128,0,0,0,27,3,0,0,114, + 188,0,0,0,122,26,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,105,115,95,112,97,99,107,97,103,101, + 169,2,78,78,114,0,0,0,0,41,18,114,9,0,0,0, + 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, + 151,0,0,0,218,12,115,116,97,116,105,99,109,101,116,104, + 111,100,114,114,0,0,0,218,11,99,108,97,115,115,109,101, + 116,104,111,100,114,183,0,0,0,114,184,0,0,0,114,162, + 0,0,0,114,163,0,0,0,114,95,0,0,0,114,187,0, + 0,0,114,189,0,0,0,114,128,0,0,0,114,111,0,0, + 0,114,170,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,175,0,0,0,212, + 2,0,0,115,46,0,0,0,8,0,4,2,4,7,2,2, + 10,1,2,10,12,1,2,8,12,1,2,14,10,1,2,7, + 10,1,2,4,2,1,12,1,2,4,2,1,12,1,2,4, + 2,1,12,1,12,4,114,175,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,144,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,90,4,101,5,100,3,100,4,132, + 0,131,1,90,6,101,7,100,22,100,6,100,7,132,1,131, + 1,90,8,101,7,100,23,100,8,100,9,132,1,131,1,90, + 9,101,5,100,10,100,11,132,0,131,1,90,10,101,5,100, + 12,100,13,132,0,131,1,90,11,101,7,100,14,100,15,132, + 0,131,1,90,12,101,7,101,13,100,16,100,17,132,0,131, + 1,131,1,90,14,101,7,101,13,100,18,100,19,132,0,131, + 1,131,1,90,15,101,7,101,13,100,20,100,21,132,0,131, + 1,131,1,90,16,100,5,83,0,41,24,218,14,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116, + 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, + 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, - 108,97,115,115,46,10,10,32,32,32,32,122,8,98,117,105, - 108,116,45,105,110,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,34, - 0,0,0,116,0,160,1,100,1,116,2,161,2,1,0,100, - 2,124,0,106,3,155,2,100,3,116,4,106,5,155,0,100, - 4,157,5,83,0,41,6,250,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,81,66,117, - 105,108,116,105,110,73,109,112,111,114,116,101,114,46,109,111, - 100,117,108,101,95,114,101,112,114,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,122, - 8,60,109,111,100,117,108,101,32,122,2,32,40,122,2,41, - 62,78,41,6,114,101,0,0,0,114,102,0,0,0,114,103, - 0,0,0,114,9,0,0,0,114,175,0,0,0,114,151,0, - 0,0,169,1,114,110,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,114,0,0,0,223,2,0, - 0,115,8,0,0,0,6,7,2,1,4,255,22,2,122,27, - 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46, - 109,111,100,117,108,101,95,114,101,112,114,78,99,4,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0, - 0,67,0,0,0,115,42,0,0,0,124,2,100,0,117,1, - 114,6,100,0,83,0,116,0,160,1,124,1,161,1,114,19, - 116,2,124,1,124,0,124,0,106,3,100,1,141,3,83,0, - 100,0,83,0,169,2,78,114,150,0,0,0,41,4,114,64, - 0,0,0,90,10,105,115,95,98,117,105,108,116,105,110,114, - 104,0,0,0,114,151,0,0,0,169,4,218,3,99,108,115, - 114,89,0,0,0,218,4,112,97,116,104,218,6,116,97,114, - 103,101,116,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,234,2,0, - 0,115,10,0,0,0,8,2,4,1,10,1,16,1,4,2, - 122,25,66,117,105,108,116,105,110,73,109,112,111,114,116,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,42,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, - 3,124,3,100,2,117,1,114,19,124,3,106,4,83,0,100, - 2,83,0,41,3,122,175,70,105,110,100,32,116,104,101,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,73,102,32,39,112,97, - 116,104,39,32,105,115,32,101,118,101,114,32,115,112,101,99, - 105,102,105,101,100,32,116,104,101,110,32,116,104,101,32,115, - 101,97,114,99,104,32,105,115,32,99,111,110,115,105,100,101, - 114,101,100,32,97,32,102,97,105,108,117,114,101,46,10,10, - 32,32,32,32,32,32,32,32,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,122,106,66,117,105,108,116,105,110,73, - 109,112,111,114,116,101,114,46,102,105,110,100,95,109,111,100, - 117,108,101,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, - 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, - 97,100,78,41,5,114,101,0,0,0,114,102,0,0,0,114, - 103,0,0,0,114,183,0,0,0,114,122,0,0,0,41,4, - 114,180,0,0,0,114,89,0,0,0,114,181,0,0,0,114, - 109,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, - 243,2,0,0,115,10,0,0,0,6,9,2,2,4,254,12, - 3,18,1,122,27,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, - 99,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,46,0,0,0,124,0, - 106,0,116,1,106,2,118,1,114,17,116,3,100,1,160,4, - 124,0,106,0,161,1,124,0,106,0,100,2,141,2,130,1, - 116,5,116,6,106,7,124,0,131,2,83,0,41,4,122,24, - 67,114,101,97,116,101,32,97,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,114,85,0,0,0,114,19,0, - 0,0,78,41,8,114,20,0,0,0,114,18,0,0,0,114, - 86,0,0,0,114,87,0,0,0,114,50,0,0,0,114,74, - 0,0,0,114,64,0,0,0,90,14,99,114,101,97,116,101, - 95,98,117,105,108,116,105,110,114,174,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,162,0,0, - 0,2,3,0,0,115,10,0,0,0,12,3,12,1,4,1, - 6,255,12,2,122,29,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,99,114,101,97,116,101,95,109,111,100, - 117,108,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,16,0,0, - 0,116,0,116,1,106,2,124,0,131,2,1,0,100,1,83, - 0,41,2,122,22,69,120,101,99,32,97,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,78,41,3,114,74, - 0,0,0,114,64,0,0,0,90,12,101,120,101,99,95,98, - 117,105,108,116,105,110,114,177,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,163,0,0,0,10, - 3,0,0,115,2,0,0,0,16,3,122,27,66,117,105,108, - 116,105,110,73,109,112,111,114,116,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, - 243,4,0,0,0,100,1,83,0,41,2,122,57,82,101,116, - 117,114,110,32,78,111,110,101,32,97,115,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,32,100,111,32, - 110,111,116,32,104,97,118,101,32,99,111,100,101,32,111,98, - 106,101,99,116,115,46,78,114,5,0,0,0,169,2,114,180, - 0,0,0,114,89,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,8,103,101,116,95,99,111,100, - 101,15,3,0,0,243,2,0,0,0,4,4,122,24,66,117, - 105,108,116,105,110,73,109,112,111,114,116,101,114,46,103,101, - 116,95,99,111,100,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,114, - 185,0,0,0,41,2,122,56,82,101,116,117,114,110,32,78, - 111,110,101,32,97,115,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,115,32,100,111,32,110,111,116,32,104, - 97,118,101,32,115,111,117,114,99,101,32,99,111,100,101,46, - 78,114,5,0,0,0,114,186,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,10,103,101,116,95, - 115,111,117,114,99,101,21,3,0,0,114,188,0,0,0,122, - 26,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, - 67,0,0,0,114,185,0,0,0,41,3,122,52,82,101,116, - 117,114,110,32,70,97,108,115,101,32,97,115,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,115,32,97,114, - 101,32,110,101,118,101,114,32,112,97,99,107,97,103,101,115, - 46,70,78,114,5,0,0,0,114,186,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,128,0,0, - 0,27,3,0,0,114,188,0,0,0,122,26,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,46,105,115,95,112, - 97,99,107,97,103,101,169,2,78,78,114,0,0,0,0,41, - 18,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, - 114,10,0,0,0,114,151,0,0,0,218,12,115,116,97,116, - 105,99,109,101,116,104,111,100,114,114,0,0,0,218,11,99, - 108,97,115,115,109,101,116,104,111,100,114,183,0,0,0,114, - 184,0,0,0,114,162,0,0,0,114,163,0,0,0,114,95, - 0,0,0,114,187,0,0,0,114,189,0,0,0,114,128,0, - 0,0,114,111,0,0,0,114,170,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,175,0,0,0,212,2,0,0,115,46,0,0,0,8,0, - 4,2,4,7,2,2,10,1,2,10,12,1,2,8,12,1, - 2,14,10,1,2,7,10,1,2,4,2,1,12,1,2,4, - 2,1,12,1,2,4,2,1,12,1,12,4,114,175,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,144,0,0,0,101, - 0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,101, - 5,100,3,100,4,132,0,131,1,90,6,101,7,100,22,100, - 6,100,7,132,1,131,1,90,8,101,7,100,23,100,8,100, - 9,132,1,131,1,90,9,101,5,100,10,100,11,132,0,131, - 1,90,10,101,5,100,12,100,13,132,0,131,1,90,11,101, - 7,100,14,100,15,132,0,131,1,90,12,101,7,101,13,100, - 16,100,17,132,0,131,1,131,1,90,14,101,7,101,13,100, - 18,100,19,132,0,131,1,131,1,90,15,101,7,101,13,100, - 20,100,21,132,0,131,1,131,1,90,16,100,5,83,0,41, - 24,218,14,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,122,142,77,101,116,97,32,112,97,116,104,32,105,109,112, - 111,114,116,32,102,111,114,32,102,114,111,122,101,110,32,109, - 111,100,117,108,101,115,46,10,10,32,32,32,32,65,108,108, - 32,109,101,116,104,111,100,115,32,97,114,101,32,101,105,116, - 104,101,114,32,99,108,97,115,115,32,111,114,32,115,116,97, - 116,105,99,32,109,101,116,104,111,100,115,32,116,111,32,97, - 118,111,105,100,32,116,104,101,32,110,101,101,100,32,116,111, - 10,32,32,32,32,105,110,115,116,97,110,116,105,97,116,101, - 32,116,104,101,32,99,108,97,115,115,46,10,10,32,32,32, - 32,90,6,102,114,111,122,101,110,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,160,1,100,1,116,2,161, - 2,1,0,100,2,160,3,124,0,106,4,116,5,106,6,161, - 2,83,0,41,4,114,176,0,0,0,122,80,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108, - 101,95,114,101,112,114,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,114,166,0,0, - 0,78,41,7,114,101,0,0,0,114,102,0,0,0,114,103, - 0,0,0,114,50,0,0,0,114,9,0,0,0,114,193,0, - 0,0,114,151,0,0,0,41,1,218,1,109,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,114,0,0,0, - 47,3,0,0,115,8,0,0,0,6,7,2,1,4,255,16, - 2,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5, - 0,0,0,67,0,0,0,115,30,0,0,0,116,0,160,1, - 124,1,161,1,114,13,116,2,124,1,124,0,124,0,106,3, - 100,1,141,3,83,0,100,0,83,0,114,178,0,0,0,41, - 4,114,64,0,0,0,114,98,0,0,0,114,104,0,0,0, - 114,151,0,0,0,114,179,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,183,0,0,0,58,3, - 0,0,115,6,0,0,0,10,2,16,1,4,2,122,24,70, - 114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,4,0,0,0,67,0,0,0, - 115,30,0,0,0,116,0,160,1,100,1,116,2,161,2,1, - 0,116,3,160,4,124,1,161,1,114,13,124,0,83,0,100, - 2,83,0,41,3,122,93,70,105,110,100,32,97,32,102,114, - 111,122,101,110,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,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,122,105,70,114,111,122,101,110,73,109,112,111, - 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, + 108,97,115,115,46,10,10,32,32,32,32,90,6,102,114,111, + 122,101,110,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,160,1,100,1,116,2,161,2,1,0,100,2,160, + 3,124,0,106,4,116,5,106,6,161,2,83,0,41,4,114, + 176,0,0,0,122,80,70,114,111,122,101,110,73,109,112,111, + 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, - 41,5,114,101,0,0,0,114,102,0,0,0,114,103,0,0, - 0,114,64,0,0,0,114,98,0,0,0,41,3,114,180,0, - 0,0,114,89,0,0,0,114,181,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,184,0,0,0, - 65,3,0,0,115,8,0,0,0,6,7,2,2,4,254,18, - 3,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0, - 0,0,67,0,0,0,114,185,0,0,0,41,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,5,0,0,0,114, - 174,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,162,0,0,0,77,3,0,0,115,2,0,0, - 0,4,0,122,28,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,99,114,101,97,116,101,95,109,111,100,117,108, - 101,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,64,0,0,0,124, - 0,106,0,106,1,125,1,116,2,160,3,124,1,161,1,115, - 18,116,4,100,1,160,5,124,1,161,1,124,1,100,2,141, - 2,130,1,116,6,116,2,106,7,124,1,131,2,125,2,116, - 8,124,2,124,0,106,9,131,2,1,0,100,0,83,0,114, - 97,0,0,0,41,10,114,113,0,0,0,114,20,0,0,0, - 114,64,0,0,0,114,98,0,0,0,114,87,0,0,0,114, - 50,0,0,0,114,74,0,0,0,218,17,103,101,116,95,102, - 114,111,122,101,110,95,111,98,106,101,99,116,218,4,101,120, - 101,99,114,14,0,0,0,41,3,114,110,0,0,0,114,20, - 0,0,0,218,4,99,111,100,101,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,163,0,0,0,81,3,0, - 0,115,14,0,0,0,8,2,10,1,10,1,2,1,6,255, - 12,2,16,1,122,26,70,114,111,122,101,110,73,109,112,111, - 114,116,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,3,0,0,0,67,0,0,0,115,10,0,0,0,116,0, - 124,0,124,1,131,2,83,0,41,2,122,95,76,111,97,100, - 32,97,32,102,114,111,122,101,110,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,78,41,1,114,111, + 110,32,51,46,49,50,114,166,0,0,0,78,41,7,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,50,0, + 0,0,114,9,0,0,0,114,193,0,0,0,114,151,0,0, + 0,41,1,218,1,109,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,114,0,0,0,47,3,0,0,115,8, + 0,0,0,6,7,2,1,4,255,16,2,122,26,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,109,111,100,117, + 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,5,0,0,0,67,0,0, + 0,115,30,0,0,0,116,0,160,1,124,1,161,1,114,13, + 116,2,124,1,124,0,124,0,106,3,100,1,141,3,83,0, + 100,0,83,0,114,178,0,0,0,41,4,114,64,0,0,0, + 114,98,0,0,0,114,104,0,0,0,114,151,0,0,0,114, + 179,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,183,0,0,0,58,3,0,0,115,6,0,0, + 0,10,2,16,1,4,2,122,24,70,114,111,122,101,110,73, + 109,112,111,114,116,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,3,0, + 0,0,4,0,0,0,67,0,0,0,115,30,0,0,0,116, + 0,160,1,100,1,116,2,161,2,1,0,116,3,160,4,124, + 1,161,1,114,13,124,0,83,0,100,2,83,0,41,3,122, + 93,70,105,110,100,32,97,32,102,114,111,122,101,110,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, + 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,122,105, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,102, + 105,110,100,95,109,111,100,117,108,101,40,41,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, + 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, + 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, + 59,32,117,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,78,41,5,114,101,0,0, + 0,114,102,0,0,0,114,103,0,0,0,114,64,0,0,0, + 114,98,0,0,0,41,3,114,180,0,0,0,114,89,0,0, + 0,114,181,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,184,0,0,0,65,3,0,0,115,8, + 0,0,0,6,7,2,2,4,254,18,3,122,26,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,102,105,110,100, + 95,109,111,100,117,108,101,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0, + 114,185,0,0,0,41,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,5,0,0,0,114,174,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,162,0, + 0,0,77,3,0,0,115,2,0,0,0,4,0,122,28,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,99,114, + 101,97,116,101,95,109,111,100,117,108,101,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,64,0,0,0,124,0,106,0,106,1,125, + 1,116,2,160,3,124,1,161,1,115,18,116,4,100,1,160, + 5,124,1,161,1,124,1,100,2,141,2,130,1,116,6,116, + 2,106,7,124,1,131,2,125,2,116,8,124,2,124,0,106, + 9,131,2,1,0,100,0,83,0,114,97,0,0,0,41,10, + 114,113,0,0,0,114,20,0,0,0,114,64,0,0,0,114, + 98,0,0,0,114,87,0,0,0,114,50,0,0,0,114,74, + 0,0,0,218,17,103,101,116,95,102,114,111,122,101,110,95, + 111,98,106,101,99,116,218,4,101,120,101,99,114,14,0,0, + 0,41,3,114,110,0,0,0,114,20,0,0,0,218,4,99, + 111,100,101,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,163,0,0,0,81,3,0,0,115,14,0,0,0, + 8,2,10,1,10,1,2,1,6,255,12,2,16,1,122,26, + 70,114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67, + 0,0,0,115,10,0,0,0,116,0,124,0,124,1,131,2, + 83,0,41,2,122,95,76,111,97,100,32,97,32,102,114,111, + 122,101,110,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,78,41,1,114,111,0,0,0,114,186,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,170,0,0,0,90,3,0,0,115,2,0,0,0,10, + 8,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,243,10,0,0,0,116,0,160,1,124, + 1,161,1,83,0,41,2,122,45,82,101,116,117,114,110,32, + 116,104,101,32,99,111,100,101,32,111,98,106,101,99,116,32, + 102,111,114,32,116,104,101,32,102,114,111,122,101,110,32,109, + 111,100,117,108,101,46,78,41,2,114,64,0,0,0,114,195, 0,0,0,114,186,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,170,0,0,0,90,3,0,0, - 115,2,0,0,0,10,8,122,26,70,114,111,122,101,110,73, - 109,112,111,114,116,101,114,46,108,111,97,100,95,109,111,100, - 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,67,0,0,0,243,10,0,0, - 0,116,0,160,1,124,1,161,1,83,0,41,2,122,45,82, - 101,116,117,114,110,32,116,104,101,32,99,111,100,101,32,111, - 98,106,101,99,116,32,102,111,114,32,116,104,101,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,46,78,41,2,114, - 64,0,0,0,114,195,0,0,0,114,186,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,187,0, - 0,0,100,3,0,0,243,2,0,0,0,10,4,122,23,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,46,103,101, - 116,95,99,111,100,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,114, - 185,0,0,0,41,2,122,54,82,101,116,117,114,110,32,78, - 111,110,101,32,97,115,32,102,114,111,122,101,110,32,109,111, - 100,117,108,101,115,32,100,111,32,110,111,116,32,104,97,118, - 101,32,115,111,117,114,99,101,32,99,111,100,101,46,78,114, - 5,0,0,0,114,186,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,189,0,0,0,106,3,0, - 0,114,188,0,0,0,122,25,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,103,101,116,95,115,111,117,114,99, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,3,0,0,0,67,0,0,0,114,198,0,0,0,41, - 2,122,46,82,101,116,117,114,110,32,84,114,117,101,32,105, - 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, - 46,78,41,2,114,64,0,0,0,90,17,105,115,95,102,114, - 111,122,101,110,95,112,97,99,107,97,103,101,114,186,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,128,0,0,0,112,3,0,0,114,199,0,0,0,122,25, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,105, - 115,95,112,97,99,107,97,103,101,114,190,0,0,0,114,0, - 0,0,0,41,17,114,9,0,0,0,114,8,0,0,0,114, - 1,0,0,0,114,10,0,0,0,114,151,0,0,0,114,191, - 0,0,0,114,114,0,0,0,114,192,0,0,0,114,183,0, - 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, - 0,114,170,0,0,0,114,100,0,0,0,114,187,0,0,0, - 114,189,0,0,0,114,128,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,193, - 0,0,0,36,3,0,0,115,48,0,0,0,8,0,4,2, - 4,7,2,2,10,1,2,10,12,1,2,6,12,1,2,11, - 10,1,2,3,10,1,2,8,10,1,2,9,2,1,12,1, - 2,4,2,1,12,1,2,4,2,1,16,1,114,193,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,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,83,0,41, - 7,218,18,95,73,109,112,111,114,116,76,111,99,107,67,111, - 110,116,101,120,116,122,36,67,111,110,116,101,120,116,32,109, - 97,110,97,103,101,114,32,102,111,114,32,116,104,101,32,105, - 109,112,111,114,116,32,108,111,99,107,46,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, - 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, - 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, - 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, - 46,78,41,2,114,64,0,0,0,114,65,0,0,0,114,52, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,61,0,0,0,125,3,0,0,243,2,0,0,0, - 12,2,122,28,95,73,109,112,111,114,116,76,111,99,107,67, - 111,110,116,101,120,116,46,95,95,101,110,116,101,114,95,95, - 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,2,0,0,0,67,0,0,0,114,201,0,0,0,41,2, - 122,60,82,101,108,101,97,115,101,32,116,104,101,32,105,109, - 112,111,114,116,32,108,111,99,107,32,114,101,103,97,114,100, - 108,101,115,115,32,111,102,32,97,110,121,32,114,97,105,115, - 101,100,32,101,120,99,101,112,116,105,111,110,115,46,78,41, - 2,114,64,0,0,0,114,67,0,0,0,41,4,114,33,0, - 0,0,218,8,101,120,99,95,116,121,112,101,218,9,101,120, - 99,95,118,97,108,117,101,218,13,101,120,99,95,116,114,97, - 99,101,98,97,99,107,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,63,0,0,0,129,3,0,0,114,202, - 0,0,0,122,27,95,73,109,112,111,114,116,76,111,99,107, - 67,111,110,116,101,120,116,46,95,95,101,120,105,116,95,95, - 78,41,6,114,9,0,0,0,114,8,0,0,0,114,1,0, - 0,0,114,10,0,0,0,114,61,0,0,0,114,63,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,200,0,0,0,121,3,0,0,115,8, - 0,0,0,8,0,4,2,8,2,12,4,114,200,0,0,0, - 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,64,0,0,0,124,1, - 160,0,100,1,124,2,100,2,24,0,161,2,125,3,116,1, - 124,3,131,1,124,2,107,0,114,18,116,2,100,3,131,1, - 130,1,124,3,100,4,25,0,125,4,124,0,114,30,100,5, - 160,3,124,4,124,0,161,2,83,0,124,4,83,0,41,7, - 122,50,82,101,115,111,108,118,101,32,97,32,114,101,108,97, - 116,105,118,101,32,109,111,100,117,108,101,32,110,97,109,101, - 32,116,111,32,97,110,32,97,98,115,111,108,117,116,101,32, - 111,110,101,46,114,141,0,0,0,114,42,0,0,0,122,50, - 97,116,116,101,109,112,116,101,100,32,114,101,108,97,116,105, - 118,101,32,105,109,112,111,114,116,32,98,101,121,111,110,100, - 32,116,111,112,45,108,101,118,101,108,32,112,97,99,107,97, - 103,101,114,25,0,0,0,250,5,123,125,46,123,125,78,41, - 4,218,6,114,115,112,108,105,116,218,3,108,101,110,114,87, - 0,0,0,114,50,0,0,0,41,5,114,20,0,0,0,218, - 7,112,97,99,107,97,103,101,218,5,108,101,118,101,108,90, - 4,98,105,116,115,90,4,98,97,115,101,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,13,95,114,101,115, - 111,108,118,101,95,110,97,109,101,134,3,0,0,115,10,0, - 0,0,16,2,12,1,8,1,8,1,20,1,114,211,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,4,0,0,0,67,0,0,0,115,60,0,0,0,116, - 0,124,0,131,1,155,0,100,1,157,2,125,3,116,1,160, - 2,124,3,116,3,161,2,1,0,124,0,160,4,124,1,124, - 2,161,2,125,4,124,4,100,0,117,0,114,25,100,0,83, - 0,116,5,124,1,124,4,131,2,83,0,41,2,78,122,53, - 46,102,105,110,100,95,115,112,101,99,40,41,32,110,111,116, - 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, - 98,97,99,107,32,116,111,32,102,105,110,100,95,109,111,100, - 117,108,101,40,41,41,6,114,7,0,0,0,114,101,0,0, - 0,114,102,0,0,0,114,169,0,0,0,114,184,0,0,0, - 114,104,0,0,0,41,5,218,6,102,105,110,100,101,114,114, - 20,0,0,0,114,181,0,0,0,114,108,0,0,0,114,122, + 0,0,114,6,0,0,0,114,187,0,0,0,100,3,0,0, + 243,2,0,0,0,10,4,122,23,70,114,111,122,101,110,73, + 109,112,111,114,116,101,114,46,103,101,116,95,99,111,100,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,1,0,0,0,67,0,0,0,114,185,0,0,0,41,2, + 122,54,82,101,116,117,114,110,32,78,111,110,101,32,97,115, + 32,102,114,111,122,101,110,32,109,111,100,117,108,101,115,32, + 100,111,32,110,111,116,32,104,97,118,101,32,115,111,117,114, + 99,101,32,99,111,100,101,46,78,114,5,0,0,0,114,186, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,17,95,102,105,110,100,95,115,112,101,99,95,108, - 101,103,97,99,121,143,3,0,0,115,12,0,0,0,14,1, - 12,2,12,1,8,1,4,1,10,1,114,213,0,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, - 10,0,0,0,67,0,0,0,115,24,1,0,0,116,0,106, - 1,125,3,124,3,100,1,117,0,114,11,116,2,100,2,131, - 1,130,1,124,3,115,19,116,3,160,4,100,3,116,5,161, - 2,1,0,124,0,116,0,106,6,118,0,125,4,124,3,68, - 0,93,109,125,5,116,7,131,0,143,46,1,0,122,5,124, - 5,106,8,125,6,87,0,110,26,4,0,116,9,121,139,1, - 0,1,0,1,0,116,10,124,5,124,0,124,1,131,3,125, - 7,124,7,100,1,117,0,114,62,89,0,87,0,100,1,4, - 0,4,0,131,3,1,0,113,26,89,0,110,6,124,6,124, - 0,124,1,124,2,131,3,125,7,87,0,100,1,4,0,4, - 0,131,3,1,0,110,8,49,0,115,80,119,1,1,0,1, - 0,1,0,89,0,1,0,124,7,100,1,117,1,114,135,124, - 4,115,131,124,0,116,0,106,6,118,0,114,131,116,0,106, - 6,124,0,25,0,125,8,122,5,124,8,106,11,125,9,87, - 0,110,12,4,0,116,9,121,138,1,0,1,0,1,0,124, - 7,6,0,89,0,2,0,1,0,83,0,124,9,100,1,117, - 0,114,127,124,7,2,0,1,0,83,0,124,9,2,0,1, - 0,83,0,124,7,2,0,1,0,83,0,113,26,100,1,83, - 0,119,0,119,0,41,4,122,21,70,105,110,100,32,97,32, - 109,111,100,117,108,101,39,115,32,115,112,101,99,46,78,122, - 53,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, - 115,32,78,111,110,101,44,32,80,121,116,104,111,110,32,105, - 115,32,108,105,107,101,108,121,32,115,104,117,116,116,105,110, - 103,32,100,111,119,110,122,22,115,121,115,46,109,101,116,97, - 95,112,97,116,104,32,105,115,32,101,109,112,116,121,41,12, - 114,18,0,0,0,218,9,109,101,116,97,95,112,97,116,104, - 114,87,0,0,0,114,101,0,0,0,114,102,0,0,0,114, - 169,0,0,0,114,105,0,0,0,114,200,0,0,0,114,183, - 0,0,0,114,2,0,0,0,114,213,0,0,0,114,113,0, - 0,0,41,10,114,20,0,0,0,114,181,0,0,0,114,182, - 0,0,0,114,214,0,0,0,90,9,105,115,95,114,101,108, - 111,97,100,114,212,0,0,0,114,183,0,0,0,114,109,0, - 0,0,114,110,0,0,0,114,113,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,10,95,102,105, - 110,100,95,115,112,101,99,153,3,0,0,115,70,0,0,0, - 6,2,8,1,8,2,4,3,12,1,10,5,8,1,8,1, - 2,1,10,1,12,1,12,1,8,1,2,1,12,250,2,6, - 4,255,12,3,2,128,28,248,8,9,14,2,10,1,2,1, - 10,1,12,1,12,4,8,2,8,1,8,2,8,2,2,239, - 4,19,2,243,2,244,114,215,0,0,0,99,3,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0, - 67,0,0,0,115,110,0,0,0,116,0,124,0,116,1,131, - 2,115,14,116,2,100,1,160,3,116,4,124,0,131,1,161, - 1,131,1,130,1,124,2,100,2,107,0,114,22,116,5,100, - 3,131,1,130,1,124,2,100,2,107,4,114,41,116,0,124, - 1,116,1,131,2,115,35,116,2,100,4,131,1,130,1,124, - 1,115,41,116,6,100,5,131,1,130,1,124,0,115,53,124, - 2,100,2,107,2,114,51,116,5,100,6,131,1,130,1,100, - 7,83,0,100,7,83,0,41,8,122,28,86,101,114,105,102, - 121,32,97,114,103,117,109,101,110,116,115,32,97,114,101,32, - 34,115,97,110,101,34,46,122,31,109,111,100,117,108,101,32, - 110,97,109,101,32,109,117,115,116,32,98,101,32,115,116,114, - 44,32,110,111,116,32,123,125,114,25,0,0,0,122,18,108, - 101,118,101,108,32,109,117,115,116,32,98,101,32,62,61,32, - 48,122,31,95,95,112,97,99,107,97,103,101,95,95,32,110, - 111,116,32,115,101,116,32,116,111,32,97,32,115,116,114,105, - 110,103,122,54,97,116,116,101,109,112,116,101,100,32,114,101, - 108,97,116,105,118,101,32,105,109,112,111,114,116,32,119,105, - 116,104,32,110,111,32,107,110,111,119,110,32,112,97,114,101, - 110,116,32,112,97,99,107,97,103,101,122,17,69,109,112,116, - 121,32,109,111,100,117,108,101,32,110,97,109,101,78,41,7, - 218,10,105,115,105,110,115,116,97,110,99,101,218,3,115,116, - 114,218,9,84,121,112,101,69,114,114,111,114,114,50,0,0, - 0,114,3,0,0,0,218,10,86,97,108,117,101,69,114,114, - 111,114,114,87,0,0,0,169,3,114,20,0,0,0,114,209, - 0,0,0,114,210,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,13,95,115,97,110,105,116,121, - 95,99,104,101,99,107,200,3,0,0,115,24,0,0,0,10, - 2,18,1,8,1,8,1,8,1,10,1,8,1,4,1,8, - 1,12,2,8,1,8,255,114,221,0,0,0,122,16,78,111, - 32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,4, - 123,33,114,125,99,2,0,0,0,0,0,0,0,0,0,0, - 0,9,0,0,0,8,0,0,0,67,0,0,0,115,16,1, - 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, - 25,0,125,3,124,3,114,63,124,3,116,1,106,2,118,1, - 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, - 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, - 116,1,106,2,124,3,25,0,125,4,122,5,124,4,106,4, - 125,2,87,0,110,21,4,0,116,5,121,135,1,0,1,0, - 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, - 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, - 116,9,124,0,124,2,131,2,125,6,124,6,100,0,117,0, - 114,81,116,8,116,6,160,7,124,0,161,1,124,0,100,4, - 141,2,130,1,116,10,124,6,131,1,125,7,124,3,114,132, - 116,1,106,2,124,3,25,0,125,4,124,0,160,0,100,1, - 161,1,100,5,25,0,125,8,122,9,116,11,124,4,124,8, - 124,7,131,3,1,0,87,0,124,7,83,0,4,0,116,5, - 121,134,1,0,1,0,1,0,100,6,124,3,155,2,100,7, - 124,8,155,2,157,4,125,5,116,12,160,13,124,5,116,14, - 161,2,1,0,89,0,124,7,83,0,124,7,83,0,119,0, - 119,0,41,8,78,114,141,0,0,0,114,25,0,0,0,122, - 23,59,32,123,33,114,125,32,105,115,32,110,111,116,32,97, - 32,112,97,99,107,97,103,101,114,19,0,0,0,233,2,0, - 0,0,122,27,67,97,110,110,111,116,32,115,101,116,32,97, - 110,32,97,116,116,114,105,98,117,116,101,32,111,110,32,122, - 18,32,102,111,114,32,99,104,105,108,100,32,109,111,100,117, - 108,101,32,41,15,114,142,0,0,0,114,18,0,0,0,114, - 105,0,0,0,114,74,0,0,0,114,154,0,0,0,114,2, - 0,0,0,218,8,95,69,82,82,95,77,83,71,114,50,0, - 0,0,218,19,77,111,100,117,108,101,78,111,116,70,111,117, - 110,100,69,114,114,111,114,114,215,0,0,0,114,173,0,0, - 0,114,12,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,169,0,0,0,41,9,114,20,0,0,0,218,7,105,109, - 112,111,114,116,95,114,181,0,0,0,114,143,0,0,0,90, - 13,112,97,114,101,110,116,95,109,111,100,117,108,101,114,108, - 0,0,0,114,109,0,0,0,114,110,0,0,0,90,5,99, - 104,105,108,100,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,23,95,102,105,110,100,95,97,110,100,95,108, - 111,97,100,95,117,110,108,111,99,107,101,100,219,3,0,0, - 115,58,0,0,0,4,1,14,1,4,1,10,1,10,1,10, - 2,10,1,10,1,2,1,10,1,12,1,16,1,14,1,10, - 1,8,1,18,1,8,2,4,1,10,2,14,1,2,1,14, - 1,4,4,12,253,16,1,14,1,8,1,2,253,2,242,114, - 226,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,8,0,0,0,67,0,0,0,115,128,0, - 0,0,116,0,124,0,131,1,143,31,1,0,116,1,106,2, - 160,3,124,0,116,4,161,2,125,2,124,2,116,4,117,0, - 114,28,116,5,124,0,124,1,131,2,87,0,2,0,100,1, - 4,0,4,0,131,3,1,0,83,0,87,0,100,1,4,0, - 4,0,131,3,1,0,110,8,49,0,115,38,119,1,1,0, - 1,0,1,0,89,0,1,0,124,2,100,1,117,0,114,58, - 100,2,160,6,124,0,161,1,125,3,116,7,124,3,124,0, - 100,3,141,2,130,1,116,8,124,0,131,1,1,0,124,2, - 83,0,41,4,122,25,70,105,110,100,32,97,110,100,32,108, - 111,97,100,32,116,104,101,32,109,111,100,117,108,101,46,78, - 122,40,105,109,112,111,114,116,32,111,102,32,123,125,32,104, - 97,108,116,101,100,59,32,78,111,110,101,32,105,110,32,115, - 121,115,46,109,111,100,117,108,101,115,114,19,0,0,0,41, - 9,114,57,0,0,0,114,18,0,0,0,114,105,0,0,0, - 114,38,0,0,0,218,14,95,78,69,69,68,83,95,76,79, - 65,68,73,78,71,114,226,0,0,0,114,50,0,0,0,114, - 224,0,0,0,114,72,0,0,0,41,4,114,20,0,0,0, - 114,225,0,0,0,114,110,0,0,0,114,82,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,14, - 95,102,105,110,100,95,97,110,100,95,108,111,97,100,254,3, - 0,0,115,30,0,0,0,10,2,14,1,8,1,8,1,14, - 253,2,3,2,255,28,254,8,5,2,1,6,1,2,255,12, - 2,8,2,4,1,114,228,0,0,0,114,25,0,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 4,0,0,0,67,0,0,0,115,42,0,0,0,116,0,124, - 0,124,1,124,2,131,3,1,0,124,2,100,1,107,4,114, - 16,116,1,124,0,124,1,124,2,131,3,125,0,116,2,124, - 0,116,3,131,2,83,0,41,3,97,50,1,0,0,73,109, - 112,111,114,116,32,97,110,100,32,114,101,116,117,114,110,32, - 116,104,101,32,109,111,100,117,108,101,32,98,97,115,101,100, - 32,111,110,32,105,116,115,32,110,97,109,101,44,32,116,104, - 101,32,112,97,99,107,97,103,101,32,116,104,101,32,99,97, - 108,108,32,105,115,10,32,32,32,32,98,101,105,110,103,32, - 109,97,100,101,32,102,114,111,109,44,32,97,110,100,32,116, - 104,101,32,108,101,118,101,108,32,97,100,106,117,115,116,109, - 101,110,116,46,10,10,32,32,32,32,84,104,105,115,32,102, - 117,110,99,116,105,111,110,32,114,101,112,114,101,115,101,110, - 116,115,32,116,104,101,32,103,114,101,97,116,101,115,116,32, - 99,111,109,109,111,110,32,100,101,110,111,109,105,110,97,116, - 111,114,32,111,102,32,102,117,110,99,116,105,111,110,97,108, - 105,116,121,10,32,32,32,32,98,101,116,119,101,101,110,32, - 105,109,112,111,114,116,95,109,111,100,117,108,101,32,97,110, - 100,32,95,95,105,109,112,111,114,116,95,95,46,32,84,104, - 105,115,32,105,110,99,108,117,100,101,115,32,115,101,116,116, - 105,110,103,32,95,95,112,97,99,107,97,103,101,95,95,32, - 105,102,10,32,32,32,32,116,104,101,32,108,111,97,100,101, - 114,32,100,105,100,32,110,111,116,46,10,10,32,32,32,32, - 114,25,0,0,0,78,41,4,114,221,0,0,0,114,211,0, - 0,0,114,228,0,0,0,218,11,95,103,99,100,95,105,109, - 112,111,114,116,114,220,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,229,0,0,0,14,4,0, - 0,115,8,0,0,0,12,9,8,1,12,1,10,1,114,229, - 0,0,0,169,1,218,9,114,101,99,117,114,115,105,118,101, - 99,3,0,0,0,0,0,0,0,1,0,0,0,8,0,0, - 0,11,0,0,0,67,0,0,0,115,218,0,0,0,124,1, - 68,0,93,103,125,4,116,0,124,4,116,1,131,2,115,32, - 124,3,114,17,124,0,106,2,100,1,23,0,125,5,110,2, - 100,2,125,5,116,3,100,3,124,5,155,0,100,4,116,4, - 124,4,131,1,106,2,155,0,157,4,131,1,130,1,124,4, - 100,5,107,2,114,53,124,3,115,52,116,5,124,0,100,6, - 131,2,114,52,116,6,124,0,124,0,106,7,124,2,100,7, - 100,8,141,4,1,0,113,2,116,5,124,0,124,4,131,2, - 115,105,100,9,160,8,124,0,106,2,124,4,161,2,125,6, - 122,7,116,9,124,2,124,6,131,2,1,0,87,0,113,2, - 4,0,116,10,121,108,1,0,125,7,1,0,122,21,124,7, - 106,11,124,6,107,2,114,100,116,12,106,13,160,14,124,6, - 116,15,161,2,100,10,117,1,114,100,87,0,89,0,100,10, - 125,7,126,7,113,2,130,0,100,10,125,7,126,7,119,1, - 113,2,124,0,83,0,119,0,41,11,122,238,70,105,103,117, - 114,101,32,111,117,116,32,119,104,97,116,32,95,95,105,109, - 112,111,114,116,95,95,32,115,104,111,117,108,100,32,114,101, - 116,117,114,110,46,10,10,32,32,32,32,84,104,101,32,105, - 109,112,111,114,116,95,32,112,97,114,97,109,101,116,101,114, - 32,105,115,32,97,32,99,97,108,108,97,98,108,101,32,119, - 104,105,99,104,32,116,97,107,101,115,32,116,104,101,32,110, - 97,109,101,32,111,102,32,109,111,100,117,108,101,32,116,111, - 10,32,32,32,32,105,109,112,111,114,116,46,32,73,116,32, - 105,115,32,114,101,113,117,105,114,101,100,32,116,111,32,100, - 101,99,111,117,112,108,101,32,116,104,101,32,102,117,110,99, - 116,105,111,110,32,102,114,111,109,32,97,115,115,117,109,105, - 110,103,32,105,109,112,111,114,116,108,105,98,39,115,10,32, - 32,32,32,105,109,112,111,114,116,32,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,32,105,115,32,100,101,115,105, - 114,101,100,46,10,10,32,32,32,32,122,8,46,95,95,97, - 108,108,95,95,122,13,96,96,102,114,111,109,32,108,105,115, - 116,39,39,122,8,73,116,101,109,32,105,110,32,122,18,32, - 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, - 32,250,1,42,218,7,95,95,97,108,108,95,95,84,114,230, - 0,0,0,114,206,0,0,0,78,41,16,114,216,0,0,0, - 114,217,0,0,0,114,9,0,0,0,114,218,0,0,0,114, - 3,0,0,0,114,11,0,0,0,218,16,95,104,97,110,100, - 108,101,95,102,114,111,109,108,105,115,116,114,233,0,0,0, - 114,50,0,0,0,114,74,0,0,0,114,224,0,0,0,114, - 20,0,0,0,114,18,0,0,0,114,105,0,0,0,114,38, - 0,0,0,114,227,0,0,0,41,8,114,110,0,0,0,218, - 8,102,114,111,109,108,105,115,116,114,225,0,0,0,114,231, - 0,0,0,218,1,120,90,5,119,104,101,114,101,90,9,102, - 114,111,109,95,110,97,109,101,90,3,101,120,99,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,234,0,0, - 0,29,4,0,0,115,56,0,0,0,8,10,10,1,4,1, - 12,1,4,2,10,1,8,1,8,255,8,2,14,1,10,1, - 2,1,6,255,2,128,10,2,14,1,2,1,14,1,14,1, - 10,4,16,1,2,255,12,2,2,1,8,128,2,245,4,12, - 2,248,114,234,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,6,0,0,0,67,0,0,0, - 115,146,0,0,0,124,0,160,0,100,1,161,1,125,1,124, - 0,160,0,100,2,161,1,125,2,124,1,100,3,117,1,114, - 41,124,2,100,3,117,1,114,39,124,1,124,2,106,1,107, - 3,114,39,116,2,106,3,100,4,124,1,155,2,100,5,124, - 2,106,1,155,2,100,6,157,5,116,4,100,7,100,8,141, - 3,1,0,124,1,83,0,124,2,100,3,117,1,114,48,124, - 2,106,1,83,0,116,2,106,3,100,9,116,4,100,7,100, - 8,141,3,1,0,124,0,100,10,25,0,125,1,100,11,124, - 0,118,1,114,71,124,1,160,5,100,12,161,1,100,13,25, - 0,125,1,124,1,83,0,41,14,122,167,67,97,108,99,117, - 108,97,116,101,32,119,104,97,116,32,95,95,112,97,99,107, - 97,103,101,95,95,32,115,104,111,117,108,100,32,98,101,46, - 10,10,32,32,32,32,95,95,112,97,99,107,97,103,101,95, - 95,32,105,115,32,110,111,116,32,103,117,97,114,97,110,116, - 101,101,100,32,116,111,32,98,101,32,100,101,102,105,110,101, - 100,32,111,114,32,99,111,117,108,100,32,98,101,32,115,101, - 116,32,116,111,32,78,111,110,101,10,32,32,32,32,116,111, - 32,114,101,112,114,101,115,101,110,116,32,116,104,97,116,32, - 105,116,115,32,112,114,111,112,101,114,32,118,97,108,117,101, - 32,105,115,32,117,110,107,110,111,119,110,46,10,10,32,32, - 32,32,114,158,0,0,0,114,113,0,0,0,78,122,32,95, - 95,112,97,99,107,97,103,101,95,95,32,33,61,32,95,95, - 115,112,101,99,95,95,46,112,97,114,101,110,116,32,40,122, - 4,32,33,61,32,250,1,41,233,3,0,0,0,41,1,90, - 10,115,116,97,99,107,108,101,118,101,108,122,89,99,97,110, - 39,116,32,114,101,115,111,108,118,101,32,112,97,99,107,97, - 103,101,32,102,114,111,109,32,95,95,115,112,101,99,95,95, - 32,111,114,32,95,95,112,97,99,107,97,103,101,95,95,44, - 32,102,97,108,108,105,110,103,32,98,97,99,107,32,111,110, - 32,95,95,110,97,109,101,95,95,32,97,110,100,32,95,95, - 112,97,116,104,95,95,114,9,0,0,0,114,154,0,0,0, - 114,141,0,0,0,114,25,0,0,0,41,6,114,38,0,0, - 0,114,143,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,169,0,0,0,114,142,0,0,0,41,3,218,7,103,108, - 111,98,97,108,115,114,209,0,0,0,114,109,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,17, - 95,99,97,108,99,95,95,95,112,97,99,107,97,103,101,95, - 95,66,4,0,0,115,42,0,0,0,10,7,10,1,8,1, - 18,1,6,1,2,1,4,255,4,1,6,255,4,2,6,254, - 4,3,8,1,6,1,6,2,4,2,6,254,8,3,8,1, - 14,1,4,1,114,240,0,0,0,114,5,0,0,0,99,5, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,5, - 0,0,0,67,0,0,0,115,174,0,0,0,124,4,100,1, - 107,2,114,9,116,0,124,0,131,1,125,5,110,18,124,1, - 100,2,117,1,114,15,124,1,110,1,105,0,125,6,116,1, - 124,6,131,1,125,7,116,0,124,0,124,7,124,4,131,3, - 125,5,124,3,115,74,124,4,100,1,107,2,114,42,116,0, - 124,0,160,2,100,3,161,1,100,1,25,0,131,1,83,0, - 124,0,115,46,124,5,83,0,116,3,124,0,131,1,116,3, - 124,0,160,2,100,3,161,1,100,1,25,0,131,1,24,0, - 125,8,116,4,106,5,124,5,106,6,100,2,116,3,124,5, - 106,6,131,1,124,8,24,0,133,2,25,0,25,0,83,0, - 116,7,124,5,100,4,131,2,114,85,116,8,124,5,124,3, - 116,0,131,3,83,0,124,5,83,0,41,5,97,215,1,0, - 0,73,109,112,111,114,116,32,97,32,109,111,100,117,108,101, - 46,10,10,32,32,32,32,84,104,101,32,39,103,108,111,98, + 0,0,114,189,0,0,0,106,3,0,0,114,188,0,0,0, + 122,25,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,114,198,0,0,0,41,2,122,46,82,101,116, + 117,114,110,32,84,114,117,101,32,105,102,32,116,104,101,32, + 102,114,111,122,101,110,32,109,111,100,117,108,101,32,105,115, + 32,97,32,112,97,99,107,97,103,101,46,78,41,2,114,64, + 0,0,0,90,17,105,115,95,102,114,111,122,101,110,95,112, + 97,99,107,97,103,101,114,186,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,128,0,0,0,112, + 3,0,0,114,199,0,0,0,122,25,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,46,105,115,95,112,97,99,107, + 97,103,101,114,190,0,0,0,114,0,0,0,0,41,17,114, + 9,0,0,0,114,8,0,0,0,114,1,0,0,0,114,10, + 0,0,0,114,151,0,0,0,114,191,0,0,0,114,114,0, + 0,0,114,192,0,0,0,114,183,0,0,0,114,184,0,0, + 0,114,162,0,0,0,114,163,0,0,0,114,170,0,0,0, + 114,100,0,0,0,114,187,0,0,0,114,189,0,0,0,114, + 128,0,0,0,114,5,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,193,0,0,0,36,3,0, + 0,115,48,0,0,0,8,0,4,2,4,7,2,2,10,1, + 2,10,12,1,2,6,12,1,2,11,10,1,2,3,10,1, + 2,8,10,1,2,9,2,1,12,1,2,4,2,1,12,1, + 2,4,2,1,16,1,114,193,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,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,83,0,41,7,218,18,95,73,109, + 112,111,114,116,76,111,99,107,67,111,110,116,101,120,116,122, + 36,67,111,110,116,101,120,116,32,109,97,110,97,103,101,114, + 32,102,111,114,32,116,104,101,32,105,109,112,111,114,116,32, + 108,111,99,107,46,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,2,0,0,0,67,0,0,0,243,12, + 0,0,0,116,0,160,1,161,0,1,0,100,1,83,0,41, + 2,122,24,65,99,113,117,105,114,101,32,116,104,101,32,105, + 109,112,111,114,116,32,108,111,99,107,46,78,41,2,114,64, + 0,0,0,114,65,0,0,0,114,52,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,61,0,0, + 0,125,3,0,0,243,2,0,0,0,12,2,122,28,95,73, + 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, + 46,95,95,101,110,116,101,114,95,95,99,4,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,2,0,0,0,67, + 0,0,0,114,201,0,0,0,41,2,122,60,82,101,108,101, + 97,115,101,32,116,104,101,32,105,109,112,111,114,116,32,108, + 111,99,107,32,114,101,103,97,114,100,108,101,115,115,32,111, + 102,32,97,110,121,32,114,97,105,115,101,100,32,101,120,99, + 101,112,116,105,111,110,115,46,78,41,2,114,64,0,0,0, + 114,67,0,0,0,41,4,114,33,0,0,0,218,8,101,120, + 99,95,116,121,112,101,218,9,101,120,99,95,118,97,108,117, + 101,218,13,101,120,99,95,116,114,97,99,101,98,97,99,107, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 63,0,0,0,129,3,0,0,114,202,0,0,0,122,27,95, + 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, + 116,46,95,95,101,120,105,116,95,95,78,41,6,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,61,0,0,0,114,63,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 200,0,0,0,121,3,0,0,115,8,0,0,0,8,0,4, + 2,8,2,12,4,114,200,0,0,0,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,64,0,0,0,124,1,160,0,100,1,124,2, + 100,2,24,0,161,2,125,3,116,1,124,3,131,1,124,2, + 107,0,114,18,116,2,100,3,131,1,130,1,124,3,100,4, + 25,0,125,4,124,0,114,30,100,5,160,3,124,4,124,0, + 161,2,83,0,124,4,83,0,41,7,122,50,82,101,115,111, + 108,118,101,32,97,32,114,101,108,97,116,105,118,101,32,109, + 111,100,117,108,101,32,110,97,109,101,32,116,111,32,97,110, + 32,97,98,115,111,108,117,116,101,32,111,110,101,46,114,141, + 0,0,0,114,42,0,0,0,122,50,97,116,116,101,109,112, + 116,101,100,32,114,101,108,97,116,105,118,101,32,105,109,112, + 111,114,116,32,98,101,121,111,110,100,32,116,111,112,45,108, + 101,118,101,108,32,112,97,99,107,97,103,101,114,25,0,0, + 0,250,5,123,125,46,123,125,78,41,4,218,6,114,115,112, + 108,105,116,218,3,108,101,110,114,87,0,0,0,114,50,0, + 0,0,41,5,114,20,0,0,0,218,7,112,97,99,107,97, + 103,101,218,5,108,101,118,101,108,90,4,98,105,116,115,90, + 4,98,97,115,101,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,13,95,114,101,115,111,108,118,101,95,110, + 97,109,101,134,3,0,0,115,10,0,0,0,16,2,12,1, + 8,1,8,1,20,1,114,211,0,0,0,99,3,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0, + 67,0,0,0,115,60,0,0,0,116,0,124,0,131,1,155, + 0,100,1,157,2,125,3,116,1,160,2,124,3,116,3,161, + 2,1,0,124,0,160,4,124,1,124,2,161,2,125,4,124, + 4,100,0,117,0,114,25,100,0,83,0,116,5,124,1,124, + 4,131,2,83,0,41,2,78,122,53,46,102,105,110,100,95, + 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, + 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, + 111,32,102,105,110,100,95,109,111,100,117,108,101,40,41,41, + 6,114,7,0,0,0,114,101,0,0,0,114,102,0,0,0, + 114,169,0,0,0,114,184,0,0,0,114,104,0,0,0,41, + 5,218,6,102,105,110,100,101,114,114,20,0,0,0,114,181, + 0,0,0,114,108,0,0,0,114,122,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,17,95,102, + 105,110,100,95,115,112,101,99,95,108,101,103,97,99,121,143, + 3,0,0,115,12,0,0,0,14,1,12,2,12,1,8,1, + 4,1,10,1,114,213,0,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,10,0,0,0,10,0,0,0,67,0, + 0,0,115,24,1,0,0,116,0,106,1,125,3,124,3,100, + 1,117,0,114,11,116,2,100,2,131,1,130,1,124,3,115, + 19,116,3,160,4,100,3,116,5,161,2,1,0,124,0,116, + 0,106,6,118,0,125,4,124,3,68,0,93,109,125,5,116, + 7,131,0,143,46,1,0,122,5,124,5,106,8,125,6,87, + 0,110,26,4,0,116,9,121,139,1,0,1,0,1,0,116, + 10,124,5,124,0,124,1,131,3,125,7,124,7,100,1,117, + 0,114,62,89,0,87,0,100,1,4,0,4,0,131,3,1, + 0,113,26,89,0,110,6,124,6,124,0,124,1,124,2,131, + 3,125,7,87,0,100,1,4,0,4,0,131,3,1,0,110, + 8,49,0,115,80,119,1,1,0,1,0,1,0,89,0,1, + 0,124,7,100,1,117,1,114,135,124,4,115,131,124,0,116, + 0,106,6,118,0,114,131,116,0,106,6,124,0,25,0,125, + 8,122,5,124,8,106,11,125,9,87,0,110,12,4,0,116, + 9,121,138,1,0,1,0,1,0,124,7,6,0,89,0,2, + 0,1,0,83,0,124,9,100,1,117,0,114,127,124,7,2, + 0,1,0,83,0,124,9,2,0,1,0,83,0,124,7,2, + 0,1,0,83,0,113,26,100,1,83,0,119,0,119,0,41, + 4,122,21,70,105,110,100,32,97,32,109,111,100,117,108,101, + 39,115,32,115,112,101,99,46,78,122,53,115,121,115,46,109, + 101,116,97,95,112,97,116,104,32,105,115,32,78,111,110,101, + 44,32,80,121,116,104,111,110,32,105,115,32,108,105,107,101, + 108,121,32,115,104,117,116,116,105,110,103,32,100,111,119,110, + 122,22,115,121,115,46,109,101,116,97,95,112,97,116,104,32, + 105,115,32,101,109,112,116,121,41,12,114,18,0,0,0,218, + 9,109,101,116,97,95,112,97,116,104,114,87,0,0,0,114, + 101,0,0,0,114,102,0,0,0,114,169,0,0,0,114,105, + 0,0,0,114,200,0,0,0,114,183,0,0,0,114,2,0, + 0,0,114,213,0,0,0,114,113,0,0,0,41,10,114,20, + 0,0,0,114,181,0,0,0,114,182,0,0,0,114,214,0, + 0,0,90,9,105,115,95,114,101,108,111,97,100,114,212,0, + 0,0,114,183,0,0,0,114,109,0,0,0,114,110,0,0, + 0,114,113,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,10,95,102,105,110,100,95,115,112,101, + 99,153,3,0,0,115,68,0,0,0,6,2,8,1,8,2, + 4,3,12,1,10,5,8,1,8,1,2,1,10,1,12,1, + 12,1,8,1,2,1,14,250,4,5,12,3,2,128,28,248, + 8,9,14,2,10,1,2,1,10,1,12,1,12,4,8,2, + 8,1,8,2,8,2,2,239,4,19,2,243,2,244,114,215, + 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,5,0,0,0,67,0,0,0,115,110,0,0, + 0,116,0,124,0,116,1,131,2,115,14,116,2,100,1,160, + 3,116,4,124,0,131,1,161,1,131,1,130,1,124,2,100, + 2,107,0,114,22,116,5,100,3,131,1,130,1,124,2,100, + 2,107,4,114,41,116,0,124,1,116,1,131,2,115,35,116, + 2,100,4,131,1,130,1,124,1,115,41,116,6,100,5,131, + 1,130,1,124,0,115,53,124,2,100,2,107,2,114,51,116, + 5,100,6,131,1,130,1,100,7,83,0,100,7,83,0,41, + 8,122,28,86,101,114,105,102,121,32,97,114,103,117,109,101, + 110,116,115,32,97,114,101,32,34,115,97,110,101,34,46,122, + 31,109,111,100,117,108,101,32,110,97,109,101,32,109,117,115, + 116,32,98,101,32,115,116,114,44,32,110,111,116,32,123,125, + 114,25,0,0,0,122,18,108,101,118,101,108,32,109,117,115, + 116,32,98,101,32,62,61,32,48,122,31,95,95,112,97,99, + 107,97,103,101,95,95,32,110,111,116,32,115,101,116,32,116, + 111,32,97,32,115,116,114,105,110,103,122,54,97,116,116,101, + 109,112,116,101,100,32,114,101,108,97,116,105,118,101,32,105, + 109,112,111,114,116,32,119,105,116,104,32,110,111,32,107,110, + 111,119,110,32,112,97,114,101,110,116,32,112,97,99,107,97, + 103,101,122,17,69,109,112,116,121,32,109,111,100,117,108,101, + 32,110,97,109,101,78,41,7,218,10,105,115,105,110,115,116, + 97,110,99,101,218,3,115,116,114,218,9,84,121,112,101,69, + 114,114,111,114,114,50,0,0,0,114,3,0,0,0,218,10, + 86,97,108,117,101,69,114,114,111,114,114,87,0,0,0,169, + 3,114,20,0,0,0,114,209,0,0,0,114,210,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 13,95,115,97,110,105,116,121,95,99,104,101,99,107,200,3, + 0,0,115,24,0,0,0,10,2,18,1,8,1,8,1,8, + 1,10,1,8,1,4,1,8,1,12,2,8,1,8,255,114, + 221,0,0,0,122,16,78,111,32,109,111,100,117,108,101,32, + 110,97,109,101,100,32,122,4,123,33,114,125,99,2,0,0, + 0,0,0,0,0,0,0,0,0,9,0,0,0,8,0,0, + 0,67,0,0,0,115,16,1,0,0,100,0,125,2,124,0, + 160,0,100,1,161,1,100,2,25,0,125,3,124,3,114,63, + 124,3,116,1,106,2,118,1,114,21,116,3,124,1,124,3, + 131,2,1,0,124,0,116,1,106,2,118,0,114,31,116,1, + 106,2,124,0,25,0,83,0,116,1,106,2,124,3,25,0, + 125,4,122,5,124,4,106,4,125,2,87,0,110,21,4,0, + 116,5,121,135,1,0,1,0,1,0,116,6,100,3,23,0, + 160,7,124,0,124,3,161,2,125,5,116,8,124,5,124,0, + 100,4,141,2,100,0,130,2,116,9,124,0,124,2,131,2, + 125,6,124,6,100,0,117,0,114,81,116,8,116,6,160,7, + 124,0,161,1,124,0,100,4,141,2,130,1,116,10,124,6, + 131,1,125,7,124,3,114,132,116,1,106,2,124,3,25,0, + 125,4,124,0,160,0,100,1,161,1,100,5,25,0,125,8, + 122,9,116,11,124,4,124,8,124,7,131,3,1,0,87,0, + 124,7,83,0,4,0,116,5,121,134,1,0,1,0,1,0, + 100,6,124,3,155,2,100,7,124,8,155,2,157,4,125,5, + 116,12,160,13,124,5,116,14,161,2,1,0,89,0,124,7, + 83,0,124,7,83,0,119,0,119,0,41,8,78,114,141,0, + 0,0,114,25,0,0,0,122,23,59,32,123,33,114,125,32, + 105,115,32,110,111,116,32,97,32,112,97,99,107,97,103,101, + 114,19,0,0,0,233,2,0,0,0,122,27,67,97,110,110, + 111,116,32,115,101,116,32,97,110,32,97,116,116,114,105,98, + 117,116,101,32,111,110,32,122,18,32,102,111,114,32,99,104, + 105,108,100,32,109,111,100,117,108,101,32,41,15,114,142,0, + 0,0,114,18,0,0,0,114,105,0,0,0,114,74,0,0, + 0,114,154,0,0,0,114,2,0,0,0,218,8,95,69,82, + 82,95,77,83,71,114,50,0,0,0,218,19,77,111,100,117, + 108,101,78,111,116,70,111,117,110,100,69,114,114,111,114,114, + 215,0,0,0,114,173,0,0,0,114,12,0,0,0,114,101, + 0,0,0,114,102,0,0,0,114,169,0,0,0,41,9,114, + 20,0,0,0,218,7,105,109,112,111,114,116,95,114,181,0, + 0,0,114,143,0,0,0,90,13,112,97,114,101,110,116,95, + 109,111,100,117,108,101,114,108,0,0,0,114,109,0,0,0, + 114,110,0,0,0,90,5,99,104,105,108,100,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,23,95,102,105, + 110,100,95,97,110,100,95,108,111,97,100,95,117,110,108,111, + 99,107,101,100,219,3,0,0,115,58,0,0,0,4,1,14, + 1,4,1,10,1,10,1,10,2,10,1,10,1,2,1,10, + 1,12,1,16,1,14,1,10,1,8,1,18,1,8,2,4, + 1,10,2,14,1,2,1,14,1,4,4,12,253,16,1,14, + 1,8,1,2,253,2,242,114,226,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,8,0,0, + 0,67,0,0,0,115,128,0,0,0,116,0,124,0,131,1, + 143,31,1,0,116,1,106,2,160,3,124,0,116,4,161,2, + 125,2,124,2,116,4,117,0,114,28,116,5,124,0,124,1, + 131,2,87,0,2,0,100,1,4,0,4,0,131,3,1,0, + 83,0,87,0,100,1,4,0,4,0,131,3,1,0,110,8, + 49,0,115,38,119,1,1,0,1,0,1,0,89,0,1,0, + 124,2,100,1,117,0,114,58,100,2,160,6,124,0,161,1, + 125,3,116,7,124,3,124,0,100,3,141,2,130,1,116,8, + 124,0,131,1,1,0,124,2,83,0,41,4,122,25,70,105, + 110,100,32,97,110,100,32,108,111,97,100,32,116,104,101,32, + 109,111,100,117,108,101,46,78,122,40,105,109,112,111,114,116, + 32,111,102,32,123,125,32,104,97,108,116,101,100,59,32,78, + 111,110,101,32,105,110,32,115,121,115,46,109,111,100,117,108, + 101,115,114,19,0,0,0,41,9,114,57,0,0,0,114,18, + 0,0,0,114,105,0,0,0,114,38,0,0,0,218,14,95, + 78,69,69,68,83,95,76,79,65,68,73,78,71,114,226,0, + 0,0,114,50,0,0,0,114,224,0,0,0,114,72,0,0, + 0,41,4,114,20,0,0,0,114,225,0,0,0,114,110,0, + 0,0,114,82,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,14,95,102,105,110,100,95,97,110, + 100,95,108,111,97,100,254,3,0,0,115,28,0,0,0,10, + 2,14,1,8,1,8,1,16,253,2,2,28,254,8,5,2, + 1,6,1,2,255,12,2,8,2,4,1,114,228,0,0,0, + 114,25,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,42, + 0,0,0,116,0,124,0,124,1,124,2,131,3,1,0,124, + 2,100,1,107,4,114,16,116,1,124,0,124,1,124,2,131, + 3,125,0,116,2,124,0,116,3,131,2,83,0,41,3,97, + 50,1,0,0,73,109,112,111,114,116,32,97,110,100,32,114, + 101,116,117,114,110,32,116,104,101,32,109,111,100,117,108,101, + 32,98,97,115,101,100,32,111,110,32,105,116,115,32,110,97, + 109,101,44,32,116,104,101,32,112,97,99,107,97,103,101,32, + 116,104,101,32,99,97,108,108,32,105,115,10,32,32,32,32, + 98,101,105,110,103,32,109,97,100,101,32,102,114,111,109,44, + 32,97,110,100,32,116,104,101,32,108,101,118,101,108,32,97, + 100,106,117,115,116,109,101,110,116,46,10,10,32,32,32,32, + 84,104,105,115,32,102,117,110,99,116,105,111,110,32,114,101, + 112,114,101,115,101,110,116,115,32,116,104,101,32,103,114,101, + 97,116,101,115,116,32,99,111,109,109,111,110,32,100,101,110, + 111,109,105,110,97,116,111,114,32,111,102,32,102,117,110,99, + 116,105,111,110,97,108,105,116,121,10,32,32,32,32,98,101, + 116,119,101,101,110,32,105,109,112,111,114,116,95,109,111,100, + 117,108,101,32,97,110,100,32,95,95,105,109,112,111,114,116, + 95,95,46,32,84,104,105,115,32,105,110,99,108,117,100,101, + 115,32,115,101,116,116,105,110,103,32,95,95,112,97,99,107, + 97,103,101,95,95,32,105,102,10,32,32,32,32,116,104,101, + 32,108,111,97,100,101,114,32,100,105,100,32,110,111,116,46, + 10,10,32,32,32,32,114,25,0,0,0,78,41,4,114,221, + 0,0,0,114,211,0,0,0,114,228,0,0,0,218,11,95, + 103,99,100,95,105,109,112,111,114,116,114,220,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,229, + 0,0,0,14,4,0,0,115,8,0,0,0,12,9,8,1, + 12,1,10,1,114,229,0,0,0,169,1,218,9,114,101,99, + 117,114,115,105,118,101,99,3,0,0,0,0,0,0,0,1, + 0,0,0,8,0,0,0,11,0,0,0,67,0,0,0,115, + 218,0,0,0,124,1,68,0,93,103,125,4,116,0,124,4, + 116,1,131,2,115,32,124,3,114,17,124,0,106,2,100,1, + 23,0,125,5,110,2,100,2,125,5,116,3,100,3,124,5, + 155,0,100,4,116,4,124,4,131,1,106,2,155,0,157,4, + 131,1,130,1,124,4,100,5,107,2,114,53,124,3,115,52, + 116,5,124,0,100,6,131,2,114,52,116,6,124,0,124,0, + 106,7,124,2,100,7,100,8,141,4,1,0,113,2,116,5, + 124,0,124,4,131,2,115,105,100,9,160,8,124,0,106,2, + 124,4,161,2,125,6,122,7,116,9,124,2,124,6,131,2, + 1,0,87,0,113,2,4,0,116,10,121,108,1,0,125,7, + 1,0,122,21,124,7,106,11,124,6,107,2,114,100,116,12, + 106,13,160,14,124,6,116,15,161,2,100,10,117,1,114,100, + 87,0,89,0,100,10,125,7,126,7,113,2,130,0,100,10, + 125,7,126,7,119,1,113,2,124,0,83,0,119,0,41,11, + 122,238,70,105,103,117,114,101,32,111,117,116,32,119,104,97, + 116,32,95,95,105,109,112,111,114,116,95,95,32,115,104,111, + 117,108,100,32,114,101,116,117,114,110,46,10,10,32,32,32, + 32,84,104,101,32,105,109,112,111,114,116,95,32,112,97,114, + 97,109,101,116,101,114,32,105,115,32,97,32,99,97,108,108, + 97,98,108,101,32,119,104,105,99,104,32,116,97,107,101,115, + 32,116,104,101,32,110,97,109,101,32,111,102,32,109,111,100, + 117,108,101,32,116,111,10,32,32,32,32,105,109,112,111,114, + 116,46,32,73,116,32,105,115,32,114,101,113,117,105,114,101, + 100,32,116,111,32,100,101,99,111,117,112,108,101,32,116,104, + 101,32,102,117,110,99,116,105,111,110,32,102,114,111,109,32, + 97,115,115,117,109,105,110,103,32,105,109,112,111,114,116,108, + 105,98,39,115,10,32,32,32,32,105,109,112,111,114,116,32, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,105, + 115,32,100,101,115,105,114,101,100,46,10,10,32,32,32,32, + 122,8,46,95,95,97,108,108,95,95,122,13,96,96,102,114, + 111,109,32,108,105,115,116,39,39,122,8,73,116,101,109,32, + 105,110,32,122,18,32,109,117,115,116,32,98,101,32,115,116, + 114,44,32,110,111,116,32,250,1,42,218,7,95,95,97,108, + 108,95,95,84,114,230,0,0,0,114,206,0,0,0,78,41, + 16,114,216,0,0,0,114,217,0,0,0,114,9,0,0,0, + 114,218,0,0,0,114,3,0,0,0,114,11,0,0,0,218, + 16,95,104,97,110,100,108,101,95,102,114,111,109,108,105,115, + 116,114,233,0,0,0,114,50,0,0,0,114,74,0,0,0, + 114,224,0,0,0,114,20,0,0,0,114,18,0,0,0,114, + 105,0,0,0,114,38,0,0,0,114,227,0,0,0,41,8, + 114,110,0,0,0,218,8,102,114,111,109,108,105,115,116,114, + 225,0,0,0,114,231,0,0,0,218,1,120,90,5,119,104, + 101,114,101,90,9,102,114,111,109,95,110,97,109,101,90,3, + 101,120,99,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,234,0,0,0,29,4,0,0,115,56,0,0,0, + 8,10,10,1,4,1,12,1,4,2,10,1,8,1,8,255, + 8,2,14,1,10,1,2,1,6,255,2,128,10,2,14,1, + 2,1,14,1,14,1,10,4,16,1,2,255,12,2,2,1, + 8,128,2,245,4,12,2,248,114,234,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,6,0, + 0,0,67,0,0,0,115,146,0,0,0,124,0,160,0,100, + 1,161,1,125,1,124,0,160,0,100,2,161,1,125,2,124, + 1,100,3,117,1,114,41,124,2,100,3,117,1,114,39,124, + 1,124,2,106,1,107,3,114,39,116,2,106,3,100,4,124, + 1,155,2,100,5,124,2,106,1,155,2,100,6,157,5,116, + 4,100,7,100,8,141,3,1,0,124,1,83,0,124,2,100, + 3,117,1,114,48,124,2,106,1,83,0,116,2,106,3,100, + 9,116,4,100,7,100,8,141,3,1,0,124,0,100,10,25, + 0,125,1,100,11,124,0,118,1,114,71,124,1,160,5,100, + 12,161,1,100,13,25,0,125,1,124,1,83,0,41,14,122, + 167,67,97,108,99,117,108,97,116,101,32,119,104,97,116,32, + 95,95,112,97,99,107,97,103,101,95,95,32,115,104,111,117, + 108,100,32,98,101,46,10,10,32,32,32,32,95,95,112,97, + 99,107,97,103,101,95,95,32,105,115,32,110,111,116,32,103, + 117,97,114,97,110,116,101,101,100,32,116,111,32,98,101,32, + 100,101,102,105,110,101,100,32,111,114,32,99,111,117,108,100, + 32,98,101,32,115,101,116,32,116,111,32,78,111,110,101,10, + 32,32,32,32,116,111,32,114,101,112,114,101,115,101,110,116, + 32,116,104,97,116,32,105,116,115,32,112,114,111,112,101,114, + 32,118,97,108,117,101,32,105,115,32,117,110,107,110,111,119, + 110,46,10,10,32,32,32,32,114,158,0,0,0,114,113,0, + 0,0,78,122,32,95,95,112,97,99,107,97,103,101,95,95, + 32,33,61,32,95,95,115,112,101,99,95,95,46,112,97,114, + 101,110,116,32,40,122,4,32,33,61,32,250,1,41,233,3, + 0,0,0,41,1,90,10,115,116,97,99,107,108,101,118,101, + 108,122,89,99,97,110,39,116,32,114,101,115,111,108,118,101, + 32,112,97,99,107,97,103,101,32,102,114,111,109,32,95,95, + 115,112,101,99,95,95,32,111,114,32,95,95,112,97,99,107, + 97,103,101,95,95,44,32,102,97,108,108,105,110,103,32,98, + 97,99,107,32,111,110,32,95,95,110,97,109,101,95,95,32, + 97,110,100,32,95,95,112,97,116,104,95,95,114,9,0,0, + 0,114,154,0,0,0,114,141,0,0,0,114,25,0,0,0, + 41,6,114,38,0,0,0,114,143,0,0,0,114,101,0,0, + 0,114,102,0,0,0,114,169,0,0,0,114,142,0,0,0, + 41,3,218,7,103,108,111,98,97,108,115,114,209,0,0,0, + 114,109,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,17,95,99,97,108,99,95,95,95,112,97, + 99,107,97,103,101,95,95,66,4,0,0,115,42,0,0,0, + 10,7,10,1,8,1,18,1,6,1,2,1,4,255,4,1, + 6,255,4,2,6,254,4,3,8,1,6,1,6,2,4,2, + 6,254,8,3,8,1,14,1,4,1,114,240,0,0,0,114, + 5,0,0,0,99,5,0,0,0,0,0,0,0,0,0,0, + 0,9,0,0,0,5,0,0,0,67,0,0,0,115,174,0, + 0,0,124,4,100,1,107,2,114,9,116,0,124,0,131,1, + 125,5,110,18,124,1,100,2,117,1,114,15,124,1,110,1, + 105,0,125,6,116,1,124,6,131,1,125,7,116,0,124,0, + 124,7,124,4,131,3,125,5,124,3,115,74,124,4,100,1, + 107,2,114,42,116,0,124,0,160,2,100,3,161,1,100,1, + 25,0,131,1,83,0,124,0,115,46,124,5,83,0,116,3, + 124,0,131,1,116,3,124,0,160,2,100,3,161,1,100,1, + 25,0,131,1,24,0,125,8,116,4,106,5,124,5,106,6, + 100,2,116,3,124,5,106,6,131,1,124,8,24,0,133,2, + 25,0,25,0,83,0,116,7,124,5,100,4,131,2,114,85, + 116,8,124,5,124,3,116,0,131,3,83,0,124,5,83,0, + 41,5,97,215,1,0,0,73,109,112,111,114,116,32,97,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,84,104,101, + 32,39,103,108,111,98,97,108,115,39,32,97,114,103,117,109, + 101,110,116,32,105,115,32,117,115,101,100,32,116,111,32,105, + 110,102,101,114,32,119,104,101,114,101,32,116,104,101,32,105, + 109,112,111,114,116,32,105,115,32,111,99,99,117,114,114,105, + 110,103,32,102,114,111,109,10,32,32,32,32,116,111,32,104, + 97,110,100,108,101,32,114,101,108,97,116,105,118,101,32,105, + 109,112,111,114,116,115,46,32,84,104,101,32,39,108,111,99, 97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,115, - 32,117,115,101,100,32,116,111,32,105,110,102,101,114,32,119, - 104,101,114,101,32,116,104,101,32,105,109,112,111,114,116,32, - 105,115,32,111,99,99,117,114,114,105,110,103,32,102,114,111, - 109,10,32,32,32,32,116,111,32,104,97,110,100,108,101,32, - 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,115, - 46,32,84,104,101,32,39,108,111,99,97,108,115,39,32,97, - 114,103,117,109,101,110,116,32,105,115,32,105,103,110,111,114, - 101,100,46,32,84,104,101,10,32,32,32,32,39,102,114,111, - 109,108,105,115,116,39,32,97,114,103,117,109,101,110,116,32, - 115,112,101,99,105,102,105,101,115,32,119,104,97,116,32,115, - 104,111,117,108,100,32,101,120,105,115,116,32,97,115,32,97, - 116,116,114,105,98,117,116,101,115,32,111,110,32,116,104,101, - 32,109,111,100,117,108,101,10,32,32,32,32,98,101,105,110, - 103,32,105,109,112,111,114,116,101,100,32,40,101,46,103,46, - 32,96,96,102,114,111,109,32,109,111,100,117,108,101,32,105, - 109,112,111,114,116,32,60,102,114,111,109,108,105,115,116,62, - 96,96,41,46,32,32,84,104,101,32,39,108,101,118,101,108, - 39,10,32,32,32,32,97,114,103,117,109,101,110,116,32,114, - 101,112,114,101,115,101,110,116,115,32,116,104,101,32,112,97, - 99,107,97,103,101,32,108,111,99,97,116,105,111,110,32,116, - 111,32,105,109,112,111,114,116,32,102,114,111,109,32,105,110, - 32,97,32,114,101,108,97,116,105,118,101,10,32,32,32,32, - 105,109,112,111,114,116,32,40,101,46,103,46,32,96,96,102, - 114,111,109,32,46,46,112,107,103,32,105,109,112,111,114,116, - 32,109,111,100,96,96,32,119,111,117,108,100,32,104,97,118, - 101,32,97,32,39,108,101,118,101,108,39,32,111,102,32,50, - 41,46,10,10,32,32,32,32,114,25,0,0,0,78,114,141, - 0,0,0,114,154,0,0,0,41,9,114,229,0,0,0,114, - 240,0,0,0,218,9,112,97,114,116,105,116,105,111,110,114, - 208,0,0,0,114,18,0,0,0,114,105,0,0,0,114,9, - 0,0,0,114,11,0,0,0,114,234,0,0,0,41,9,114, - 20,0,0,0,114,239,0,0,0,218,6,108,111,99,97,108, - 115,114,235,0,0,0,114,210,0,0,0,114,110,0,0,0, - 90,8,103,108,111,98,97,108,115,95,114,209,0,0,0,90, - 7,99,117,116,95,111,102,102,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,10,95,95,105,109,112,111,114, - 116,95,95,93,4,0,0,115,30,0,0,0,8,11,10,1, - 16,2,8,1,12,1,4,1,8,3,18,1,4,1,4,1, - 26,4,30,3,10,1,12,1,4,2,114,243,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 3,0,0,0,67,0,0,0,115,38,0,0,0,116,0,160, - 1,124,0,161,1,125,1,124,1,100,0,117,0,114,15,116, - 2,100,1,124,0,23,0,131,1,130,1,116,3,124,1,131, - 1,83,0,41,2,78,122,25,110,111,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,32,110,97,109,101,100, - 32,41,4,114,175,0,0,0,114,183,0,0,0,114,87,0, - 0,0,114,173,0,0,0,41,2,114,20,0,0,0,114,109, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,18,95,98,117,105,108,116,105,110,95,102,114,111, - 109,95,110,97,109,101,130,4,0,0,115,8,0,0,0,10, - 1,8,1,12,1,8,1,114,244,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,10,0,0,0,5,0,0, - 0,67,0,0,0,115,166,0,0,0,124,1,97,0,124,0, - 97,1,116,2,116,1,131,1,125,2,116,1,106,3,160,4, - 161,0,68,0,93,36,92,2,125,3,125,4,116,5,124,4, - 124,2,131,2,114,49,124,3,116,1,106,6,118,0,114,30, - 116,7,125,5,110,9,116,0,160,8,124,3,161,1,114,38, - 116,9,125,5,110,1,113,13,116,10,124,4,124,5,131,2, - 125,6,116,11,124,6,124,4,131,2,1,0,113,13,116,1, - 106,3,116,12,25,0,125,7,100,1,68,0,93,23,125,8, - 124,8,116,1,106,3,118,1,114,69,116,13,124,8,131,1, - 125,9,110,5,116,1,106,3,124,8,25,0,125,9,116,14, - 124,7,124,8,124,9,131,3,1,0,113,57,100,2,83,0, - 41,3,122,250,83,101,116,117,112,32,105,109,112,111,114,116, - 108,105,98,32,98,121,32,105,109,112,111,114,116,105,110,103, - 32,110,101,101,100,101,100,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,115,32,97,110,100,32,105,110,106, - 101,99,116,105,110,103,32,116,104,101,109,10,32,32,32,32, - 105,110,116,111,32,116,104,101,32,103,108,111,98,97,108,32, - 110,97,109,101,115,112,97,99,101,46,10,10,32,32,32,32, - 65,115,32,115,121,115,32,105,115,32,110,101,101,100,101,100, - 32,102,111,114,32,115,121,115,46,109,111,100,117,108,101,115, - 32,97,99,99,101,115,115,32,97,110,100,32,95,105,109,112, - 32,105,115,32,110,101,101,100,101,100,32,116,111,32,108,111, - 97,100,32,98,117,105,108,116,45,105,110,10,32,32,32,32, - 109,111,100,117,108,101,115,44,32,116,104,111,115,101,32,116, - 119,111,32,109,111,100,117,108,101,115,32,109,117,115,116,32, - 98,101,32,101,120,112,108,105,99,105,116,108,121,32,112,97, - 115,115,101,100,32,105,110,46,10,10,32,32,32,32,41,3, - 114,26,0,0,0,114,101,0,0,0,114,71,0,0,0,78, - 41,15,114,64,0,0,0,114,18,0,0,0,114,3,0,0, - 0,114,105,0,0,0,218,5,105,116,101,109,115,114,216,0, - 0,0,114,86,0,0,0,114,175,0,0,0,114,98,0,0, - 0,114,193,0,0,0,114,155,0,0,0,114,161,0,0,0, - 114,9,0,0,0,114,244,0,0,0,114,12,0,0,0,41, - 10,218,10,115,121,115,95,109,111,100,117,108,101,218,11,95, - 105,109,112,95,109,111,100,117,108,101,90,11,109,111,100,117, - 108,101,95,116,121,112,101,114,20,0,0,0,114,110,0,0, - 0,114,122,0,0,0,114,109,0,0,0,90,11,115,101,108, - 102,95,109,111,100,117,108,101,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,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,6,95,115,101,116,117,112,137,4,0, - 0,115,40,0,0,0,4,9,4,1,8,3,18,1,10,1, - 10,1,6,1,10,1,6,1,2,2,10,1,10,1,2,128, - 10,3,8,1,10,1,10,1,10,2,14,1,4,251,114,248, - 0,0,0,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,38,0,0, - 0,116,0,124,0,124,1,131,2,1,0,116,1,106,2,160, - 3,116,4,161,1,1,0,116,1,106,2,160,3,116,5,161, - 1,1,0,100,1,83,0,41,2,122,48,73,110,115,116,97, - 108,108,32,105,109,112,111,114,116,101,114,115,32,102,111,114, - 32,98,117,105,108,116,105,110,32,97,110,100,32,102,114,111, - 122,101,110,32,109,111,100,117,108,101,115,78,41,6,114,248, - 0,0,0,114,18,0,0,0,114,214,0,0,0,114,132,0, - 0,0,114,175,0,0,0,114,193,0,0,0,41,2,114,246, - 0,0,0,114,247,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,8,95,105,110,115,116,97,108, - 108,172,4,0,0,115,6,0,0,0,10,2,12,2,16,1, - 114,249,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,4,0,0,0,67,0,0,0,115,32, - 0,0,0,100,1,100,2,108,0,125,0,124,0,97,1,124, - 0,160,2,116,3,106,4,116,5,25,0,161,1,1,0,100, - 2,83,0,41,3,122,57,73,110,115,116,97,108,108,32,105, - 109,112,111,114,116,101,114,115,32,116,104,97,116,32,114,101, - 113,117,105,114,101,32,101,120,116,101,114,110,97,108,32,102, - 105,108,101,115,121,115,116,101,109,32,97,99,99,101,115,115, - 114,25,0,0,0,78,41,6,218,26,95,102,114,111,122,101, - 110,95,105,109,112,111,114,116,108,105,98,95,101,120,116,101, - 114,110,97,108,114,139,0,0,0,114,249,0,0,0,114,18, - 0,0,0,114,105,0,0,0,114,9,0,0,0,41,1,114, - 250,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,27,95,105,110,115,116,97,108,108,95,101,120, - 116,101,114,110,97,108,95,105,109,112,111,114,116,101,114,115, - 180,4,0,0,115,6,0,0,0,8,3,4,1,20,1,114, - 251,0,0,0,114,190,0,0,0,114,0,0,0,0,114,24, - 0,0,0,41,4,78,78,114,5,0,0,0,114,25,0,0, - 0,41,54,114,10,0,0,0,114,7,0,0,0,114,26,0, - 0,0,114,101,0,0,0,114,71,0,0,0,114,139,0,0, - 0,114,17,0,0,0,114,21,0,0,0,114,66,0,0,0, - 114,37,0,0,0,114,47,0,0,0,114,22,0,0,0,114, - 23,0,0,0,114,55,0,0,0,114,57,0,0,0,114,60, - 0,0,0,114,72,0,0,0,114,74,0,0,0,114,83,0, - 0,0,114,95,0,0,0,114,100,0,0,0,114,111,0,0, - 0,114,124,0,0,0,114,125,0,0,0,114,104,0,0,0, - 114,155,0,0,0,114,161,0,0,0,114,165,0,0,0,114, - 119,0,0,0,114,106,0,0,0,114,172,0,0,0,114,173, - 0,0,0,114,107,0,0,0,114,175,0,0,0,114,193,0, - 0,0,114,200,0,0,0,114,211,0,0,0,114,213,0,0, - 0,114,215,0,0,0,114,221,0,0,0,90,15,95,69,82, - 82,95,77,83,71,95,80,82,69,70,73,88,114,223,0,0, - 0,114,226,0,0,0,218,6,111,98,106,101,99,116,114,227, - 0,0,0,114,228,0,0,0,114,229,0,0,0,114,234,0, - 0,0,114,240,0,0,0,114,243,0,0,0,114,244,0,0, - 0,114,248,0,0,0,114,249,0,0,0,114,251,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,104,0,0,0,4,0,8,22,4,9,4,1,4, - 1,4,3,8,3,8,8,4,8,4,2,16,3,14,4,14, - 77,14,21,8,16,8,37,8,17,14,11,8,8,8,11,8, - 12,8,19,14,26,16,101,10,26,14,45,8,72,8,17,8, - 17,8,30,8,36,8,45,14,15,14,80,14,85,8,13,8, - 9,10,10,8,47,4,16,8,1,8,2,6,32,8,3,10, - 16,14,15,8,37,10,27,8,37,8,7,8,35,12,8, + 32,105,103,110,111,114,101,100,46,32,84,104,101,10,32,32, + 32,32,39,102,114,111,109,108,105,115,116,39,32,97,114,103, + 117,109,101,110,116,32,115,112,101,99,105,102,105,101,115,32, + 119,104,97,116,32,115,104,111,117,108,100,32,101,120,105,115, + 116,32,97,115,32,97,116,116,114,105,98,117,116,101,115,32, + 111,110,32,116,104,101,32,109,111,100,117,108,101,10,32,32, + 32,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, + 32,40,101,46,103,46,32,96,96,102,114,111,109,32,109,111, + 100,117,108,101,32,105,109,112,111,114,116,32,60,102,114,111, + 109,108,105,115,116,62,96,96,41,46,32,32,84,104,101,32, + 39,108,101,118,101,108,39,10,32,32,32,32,97,114,103,117, + 109,101,110,116,32,114,101,112,114,101,115,101,110,116,115,32, + 116,104,101,32,112,97,99,107,97,103,101,32,108,111,99,97, + 116,105,111,110,32,116,111,32,105,109,112,111,114,116,32,102, + 114,111,109,32,105,110,32,97,32,114,101,108,97,116,105,118, + 101,10,32,32,32,32,105,109,112,111,114,116,32,40,101,46, + 103,46,32,96,96,102,114,111,109,32,46,46,112,107,103,32, + 105,109,112,111,114,116,32,109,111,100,96,96,32,119,111,117, + 108,100,32,104,97,118,101,32,97,32,39,108,101,118,101,108, + 39,32,111,102,32,50,41,46,10,10,32,32,32,32,114,25, + 0,0,0,78,114,141,0,0,0,114,154,0,0,0,41,9, + 114,229,0,0,0,114,240,0,0,0,218,9,112,97,114,116, + 105,116,105,111,110,114,208,0,0,0,114,18,0,0,0,114, + 105,0,0,0,114,9,0,0,0,114,11,0,0,0,114,234, + 0,0,0,41,9,114,20,0,0,0,114,239,0,0,0,218, + 6,108,111,99,97,108,115,114,235,0,0,0,114,210,0,0, + 0,114,110,0,0,0,90,8,103,108,111,98,97,108,115,95, + 114,209,0,0,0,90,7,99,117,116,95,111,102,102,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,10,95, + 95,105,109,112,111,114,116,95,95,93,4,0,0,115,30,0, + 0,0,8,11,10,1,16,2,8,1,12,1,4,1,8,3, + 18,1,4,1,4,1,26,4,30,3,10,1,12,1,4,2, + 114,243,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,38, + 0,0,0,116,0,160,1,124,0,161,1,125,1,124,1,100, + 0,117,0,114,15,116,2,100,1,124,0,23,0,131,1,130, + 1,116,3,124,1,131,1,83,0,41,2,78,122,25,110,111, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 32,110,97,109,101,100,32,41,4,114,175,0,0,0,114,183, + 0,0,0,114,87,0,0,0,114,173,0,0,0,41,2,114, + 20,0,0,0,114,109,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,18,95,98,117,105,108,116, + 105,110,95,102,114,111,109,95,110,97,109,101,130,4,0,0, + 115,8,0,0,0,10,1,8,1,12,1,8,1,114,244,0, + 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,10, + 0,0,0,5,0,0,0,67,0,0,0,115,166,0,0,0, + 124,1,97,0,124,0,97,1,116,2,116,1,131,1,125,2, + 116,1,106,3,160,4,161,0,68,0,93,36,92,2,125,3, + 125,4,116,5,124,4,124,2,131,2,114,49,124,3,116,1, + 106,6,118,0,114,30,116,7,125,5,110,9,116,0,160,8, + 124,3,161,1,114,38,116,9,125,5,110,1,113,13,116,10, + 124,4,124,5,131,2,125,6,116,11,124,6,124,4,131,2, + 1,0,113,13,116,1,106,3,116,12,25,0,125,7,100,1, + 68,0,93,23,125,8,124,8,116,1,106,3,118,1,114,69, + 116,13,124,8,131,1,125,9,110,5,116,1,106,3,124,8, + 25,0,125,9,116,14,124,7,124,8,124,9,131,3,1,0, + 113,57,100,2,83,0,41,3,122,250,83,101,116,117,112,32, + 105,109,112,111,114,116,108,105,98,32,98,121,32,105,109,112, + 111,114,116,105,110,103,32,110,101,101,100,101,100,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97, + 110,100,32,105,110,106,101,99,116,105,110,103,32,116,104,101, + 109,10,32,32,32,32,105,110,116,111,32,116,104,101,32,103, + 108,111,98,97,108,32,110,97,109,101,115,112,97,99,101,46, + 10,10,32,32,32,32,65,115,32,115,121,115,32,105,115,32, + 110,101,101,100,101,100,32,102,111,114,32,115,121,115,46,109, + 111,100,117,108,101,115,32,97,99,99,101,115,115,32,97,110, + 100,32,95,105,109,112,32,105,115,32,110,101,101,100,101,100, + 32,116,111,32,108,111,97,100,32,98,117,105,108,116,45,105, + 110,10,32,32,32,32,109,111,100,117,108,101,115,44,32,116, + 104,111,115,101,32,116,119,111,32,109,111,100,117,108,101,115, + 32,109,117,115,116,32,98,101,32,101,120,112,108,105,99,105, + 116,108,121,32,112,97,115,115,101,100,32,105,110,46,10,10, + 32,32,32,32,41,3,114,26,0,0,0,114,101,0,0,0, + 114,71,0,0,0,78,41,15,114,64,0,0,0,114,18,0, + 0,0,114,3,0,0,0,114,105,0,0,0,218,5,105,116, + 101,109,115,114,216,0,0,0,114,86,0,0,0,114,175,0, + 0,0,114,98,0,0,0,114,193,0,0,0,114,155,0,0, + 0,114,161,0,0,0,114,9,0,0,0,114,244,0,0,0, + 114,12,0,0,0,41,10,218,10,115,121,115,95,109,111,100, + 117,108,101,218,11,95,105,109,112,95,109,111,100,117,108,101, + 90,11,109,111,100,117,108,101,95,116,121,112,101,114,20,0, + 0,0,114,110,0,0,0,114,122,0,0,0,114,109,0,0, + 0,90,11,115,101,108,102,95,109,111,100,117,108,101,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,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,6,95,115,101, + 116,117,112,137,4,0,0,115,40,0,0,0,4,9,4,1, + 8,3,18,1,10,1,10,1,6,1,10,1,6,1,2,2, + 10,1,10,1,2,128,10,3,8,1,10,1,10,1,10,2, + 14,1,4,251,114,248,0,0,0,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,38,0,0,0,116,0,124,0,124,1,131,2,1, + 0,116,1,106,2,160,3,116,4,161,1,1,0,116,1,106, + 2,160,3,116,5,161,1,1,0,100,1,83,0,41,2,122, + 48,73,110,115,116,97,108,108,32,105,109,112,111,114,116,101, + 114,115,32,102,111,114,32,98,117,105,108,116,105,110,32,97, + 110,100,32,102,114,111,122,101,110,32,109,111,100,117,108,101, + 115,78,41,6,114,248,0,0,0,114,18,0,0,0,114,214, + 0,0,0,114,132,0,0,0,114,175,0,0,0,114,193,0, + 0,0,41,2,114,246,0,0,0,114,247,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,8,95, + 105,110,115,116,97,108,108,172,4,0,0,115,6,0,0,0, + 10,2,12,2,16,1,114,249,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, + 67,0,0,0,115,32,0,0,0,100,1,100,2,108,0,125, + 0,124,0,97,1,124,0,160,2,116,3,106,4,116,5,25, + 0,161,1,1,0,100,2,83,0,41,3,122,57,73,110,115, + 116,97,108,108,32,105,109,112,111,114,116,101,114,115,32,116, + 104,97,116,32,114,101,113,117,105,114,101,32,101,120,116,101, + 114,110,97,108,32,102,105,108,101,115,121,115,116,101,109,32, + 97,99,99,101,115,115,114,25,0,0,0,78,41,6,218,26, + 95,102,114,111,122,101,110,95,105,109,112,111,114,116,108,105, + 98,95,101,120,116,101,114,110,97,108,114,139,0,0,0,114, + 249,0,0,0,114,18,0,0,0,114,105,0,0,0,114,9, + 0,0,0,41,1,114,250,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,27,95,105,110,115,116, + 97,108,108,95,101,120,116,101,114,110,97,108,95,105,109,112, + 111,114,116,101,114,115,180,4,0,0,115,6,0,0,0,8, + 3,4,1,20,1,114,251,0,0,0,114,190,0,0,0,114, + 0,0,0,0,114,24,0,0,0,41,4,78,78,114,5,0, + 0,0,114,25,0,0,0,41,54,114,10,0,0,0,114,7, + 0,0,0,114,26,0,0,0,114,101,0,0,0,114,71,0, + 0,0,114,139,0,0,0,114,17,0,0,0,114,21,0,0, + 0,114,66,0,0,0,114,37,0,0,0,114,47,0,0,0, + 114,22,0,0,0,114,23,0,0,0,114,55,0,0,0,114, + 57,0,0,0,114,60,0,0,0,114,72,0,0,0,114,74, + 0,0,0,114,83,0,0,0,114,95,0,0,0,114,100,0, + 0,0,114,111,0,0,0,114,124,0,0,0,114,125,0,0, + 0,114,104,0,0,0,114,155,0,0,0,114,161,0,0,0, + 114,165,0,0,0,114,119,0,0,0,114,106,0,0,0,114, + 172,0,0,0,114,173,0,0,0,114,107,0,0,0,114,175, + 0,0,0,114,193,0,0,0,114,200,0,0,0,114,211,0, + 0,0,114,213,0,0,0,114,215,0,0,0,114,221,0,0, + 0,90,15,95,69,82,82,95,77,83,71,95,80,82,69,70, + 73,88,114,223,0,0,0,114,226,0,0,0,218,6,111,98, + 106,101,99,116,114,227,0,0,0,114,228,0,0,0,114,229, + 0,0,0,114,234,0,0,0,114,240,0,0,0,114,243,0, + 0,0,114,244,0,0,0,114,248,0,0,0,114,249,0,0, + 0,114,251,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,8,60,109,111,100, + 117,108,101,62,1,0,0,0,115,104,0,0,0,4,0,8, + 22,4,9,4,1,4,1,4,3,8,3,8,8,4,8,4, + 2,16,3,14,4,14,77,14,21,8,16,8,37,8,17,14, + 11,8,8,8,11,8,12,8,19,14,26,16,101,10,26,14, + 45,8,72,8,17,8,17,8,30,8,36,8,45,14,15,14, + 80,14,85,8,13,8,9,10,10,8,47,4,16,8,1,8, + 2,6,32,8,3,10,16,14,15,8,37,10,27,8,37,8, + 7,8,35,12,8, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 8f4eeb0e53483a..6808f2b0f1eafc 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1578,1190 +1578,1189 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,114,92,0,0,0,41,3,114,143,0,0,0,114,65,0, 0,0,114,94,0,0,0,114,7,0,0,0,114,7,0,0, 0,114,8,0,0,0,114,255,0,0,0,46,4,0,0,115, - 22,0,0,0,14,2,16,1,6,1,14,255,2,1,20,255, - 14,3,6,1,14,255,2,1,20,255,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,3,0,0,0, - 2,0,0,0,67,0,0,0,115,20,0,0,0,100,1,100, - 2,108,0,109,1,125,2,1,0,124,2,124,0,131,1,83, - 0,41,3,78,114,0,0,0,0,41,1,218,10,70,105,108, - 101,82,101,97,100,101,114,41,2,218,17,105,109,112,111,114, - 116,108,105,98,46,114,101,97,100,101,114,115,114,31,1,0, - 0,41,3,114,143,0,0,0,114,244,0,0,0,114,31,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,19,103,101,116,95,114,101,115,111,117,114,99,101,95, - 114,101,97,100,101,114,55,4,0,0,115,4,0,0,0,12, - 2,8,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,41,13,114,150,0,0,0,114,149,0,0,0,114, - 151,0,0,0,114,152,0,0,0,114,236,0,0,0,114,16, - 1,0,0,114,22,1,0,0,114,160,0,0,0,114,248,0, - 0,0,114,203,0,0,0,114,255,0,0,0,114,33,1,0, - 0,90,13,95,95,99,108,97,115,115,99,101,108,108,95,95, - 114,7,0,0,0,114,7,0,0,0,114,25,1,0,0,114, - 8,0,0,0,114,11,1,0,0,11,4,0,0,115,24,0, - 0,0,8,0,4,2,8,3,8,6,8,4,2,3,14,1, - 2,11,10,1,8,4,2,9,18,1,114,11,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,3,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, - 6,1,0,0,78,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,143,0,0,0,114,65,0,0,0,114,10,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 252,0,0,0,65,4,0,0,115,4,0,0,0,8,2,14, - 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,139,0,0,0,114,253,0,0,0,41,5,114,143, - 0,0,0,114,134,0,0,0,114,132,0,0,0,114,41,0, - 0,0,114,78,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,254,0,0,0,70,4,0,0,115, - 4,0,0,0,8,2,16,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,87,0,0,0,114, - 36,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,254,0, - 0,0,116,0,124,1,131,1,92,2,125,4,125,5,103,0, - 125,6,124,4,114,31,116,1,124,4,131,1,115,31,116,0, - 124,4,131,1,92,2,125,4,125,7,124,6,160,2,124,7, - 161,1,1,0,124,4,114,31,116,1,124,4,131,1,114,14, - 116,3,124,6,131,1,68,0,93,48,125,7,116,4,124,4, - 124,7,131,2,125,4,122,7,116,5,160,6,124,4,161,1, - 1,0,87,0,113,35,4,0,116,7,121,58,1,0,1,0, - 1,0,89,0,113,35,4,0,116,8,121,126,1,0,125,8, - 1,0,122,15,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,119,1,122,15,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,100,2,83,0,4,0,116,8,121,125, - 1,0,125,8,1,0,122,14,116,9,160,10,100,1,124,1, - 124,8,161,3,1,0,87,0,89,0,100,2,125,8,126,8, - 100,2,83,0,100,2,125,8,126,8,119,1,119,0,119,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,83,0,0,0,114,61,0,0,0,218,8,114,101, - 118,101,114,115,101,100,114,67,0,0,0,114,18,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,159,0, - 0,0,114,173,0,0,0,114,95,0,0,0,41,9,114,143, - 0,0,0,114,65,0,0,0,114,41,0,0,0,114,37,1, - 0,0,218,6,112,97,114,101,110,116,114,120,0,0,0,114, - 63,0,0,0,114,68,0,0,0,114,0,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,253,0, - 0,0,75,4,0,0,115,56,0,0,0,12,2,4,1,12, - 2,12,1,10,1,12,254,12,4,10,1,2,1,14,1,12, - 1,4,2,14,1,6,3,4,1,4,255,16,2,8,128,2, - 1,12,1,18,1,14,1,8,2,2,1,18,255,8,128,2, - 254,2,247,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,150,0,0,0,114,149,0,0,0,114,151,0,0,0, - 114,152,0,0,0,114,252,0,0,0,114,254,0,0,0,114, - 253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,34,1,0,0,61,4,0, - 0,115,10,0,0,0,8,0,4,2,8,2,8,5,18,5, - 114,34,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,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,141,0,0,0, - 114,132,0,0,0,41,5,114,203,0,0,0,114,255,0,0, - 0,114,176,0,0,0,114,189,0,0,0,114,7,1,0,0, - 41,5,114,143,0,0,0,114,163,0,0,0,114,65,0,0, - 0,114,41,0,0,0,114,175,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,241,0,0,0,110, - 4,0,0,115,22,0,0,0,10,1,10,1,2,4,2,1, - 6,254,12,4,2,1,14,1,2,1,2,1,6,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,114,23,0,0,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,7,0,0,0,114,247,0,0, + 14,0,0,0,14,2,16,1,6,1,36,255,14,3,6,1, + 36,255,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,3,0,0,0,2,0,0,0,67,0,0,0, + 115,20,0,0,0,100,1,100,2,108,0,109,1,125,2,1, + 0,124,2,124,0,131,1,83,0,41,3,78,114,0,0,0, + 0,41,1,218,10,70,105,108,101,82,101,97,100,101,114,41, + 2,218,17,105,109,112,111,114,116,108,105,98,46,114,101,97, + 100,101,114,115,114,31,1,0,0,41,3,114,143,0,0,0, + 114,244,0,0,0,114,31,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,19,103,101,116,95,114, + 101,115,111,117,114,99,101,95,114,101,97,100,101,114,55,4, + 0,0,115,4,0,0,0,12,2,8,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,41,13,114,150,0, + 0,0,114,149,0,0,0,114,151,0,0,0,114,152,0,0, + 0,114,236,0,0,0,114,16,1,0,0,114,22,1,0,0, + 114,160,0,0,0,114,248,0,0,0,114,203,0,0,0,114, + 255,0,0,0,114,33,1,0,0,90,13,95,95,99,108,97, + 115,115,99,101,108,108,95,95,114,7,0,0,0,114,7,0, + 0,0,114,25,1,0,0,114,8,0,0,0,114,11,1,0, + 0,11,4,0,0,115,24,0,0,0,8,0,4,2,8,3, + 8,6,8,4,2,3,14,1,2,11,10,1,8,4,2,9, + 18,1,114,11,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,3,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,6,1,0,0,78,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,143,0,0,0,114,65, + 0,0,0,114,10,1,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,252,0,0,0,65,4,0,0, + 115,4,0,0,0,8,2,14,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,139,0,0,0,114, + 253,0,0,0,41,5,114,143,0,0,0,114,134,0,0,0, + 114,132,0,0,0,114,41,0,0,0,114,78,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,254, + 0,0,0,70,4,0,0,115,4,0,0,0,8,2,16,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,87,0,0,0,114,36,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,254,0,0,0,116,0,124,1,131,1, + 92,2,125,4,125,5,103,0,125,6,124,4,114,31,116,1, + 124,4,131,1,115,31,116,0,124,4,131,1,92,2,125,4, + 125,7,124,6,160,2,124,7,161,1,1,0,124,4,114,31, + 116,1,124,4,131,1,114,14,116,3,124,6,131,1,68,0, + 93,48,125,7,116,4,124,4,124,7,131,2,125,4,122,7, + 116,5,160,6,124,4,161,1,1,0,87,0,113,35,4,0, + 116,7,121,58,1,0,1,0,1,0,89,0,113,35,4,0, + 116,8,121,126,1,0,125,8,1,0,122,15,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, + 119,1,122,15,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,100,2, + 83,0,4,0,116,8,121,125,1,0,125,8,1,0,122,14, + 116,9,160,10,100,1,124,1,124,8,161,3,1,0,87,0, + 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, + 126,8,119,1,119,0,119,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,83,0,0,0,114, + 61,0,0,0,218,8,114,101,118,101,114,115,101,100,114,67, + 0,0,0,114,18,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,159,0,0,0,114,173,0,0,0,114, + 95,0,0,0,41,9,114,143,0,0,0,114,65,0,0,0, + 114,41,0,0,0,114,37,1,0,0,218,6,112,97,114,101, + 110,116,114,120,0,0,0,114,63,0,0,0,114,68,0,0, + 0,114,0,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,253,0,0,0,75,4,0,0,115,56, + 0,0,0,12,2,4,1,12,2,12,1,10,1,12,254,12, + 4,10,1,2,1,14,1,12,1,4,2,14,1,6,3,4, + 1,4,255,16,2,8,128,2,1,12,1,18,1,14,1,8, + 2,2,1,18,255,8,128,2,254,2,247,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,150,0,0,0,114,149, + 0,0,0,114,151,0,0,0,114,152,0,0,0,114,252,0, + 0,0,114,254,0,0,0,114,253,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,1,1,0,0,126,4,0,0,114,24,0,0,0,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,150,0,0,0,114,149,0,0,0,114,151,0,0, - 0,114,152,0,0,0,114,241,0,0,0,114,1,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,41,1,0,0,106,4,0,0,115,8,0, - 0,0,8,0,4,2,8,2,12,16,114,41,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,30,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, - 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,0,83,0,114,69,0, - 0,0,114,183,0,0,0,41,3,114,143,0,0,0,114,141, - 0,0,0,114,65,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,236,0,0,0,139,4,0,0, - 115,4,0,0,0,6,1,10,1,122,28,69,120,116,101,110, + 114,34,1,0,0,61,4,0,0,115,10,0,0,0,8,0, + 4,2,8,2,8,5,18,5,114,34,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,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,141,0,0,0,114,132,0,0,0,41,5,114, + 203,0,0,0,114,255,0,0,0,114,176,0,0,0,114,189, + 0,0,0,114,7,1,0,0,41,5,114,143,0,0,0,114, + 163,0,0,0,114,65,0,0,0,114,41,0,0,0,114,175, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,241,0,0,0,110,4,0,0,115,22,0,0,0, + 10,1,10,1,2,4,2,1,6,254,12,4,2,1,14,1, + 2,1,2,1,6,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,114,23, + 0,0,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, + 7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,1,1,0,0,126,4,0, + 0,114,24,0,0,0,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,150,0,0,0,114, + 149,0,0,0,114,151,0,0,0,114,152,0,0,0,114,241, + 0,0,0,114,1,1,0,0,114,7,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,41,1,0, + 0,106,4,0,0,115,8,0,0,0,8,0,4,2,8,2, + 12,16,114,41,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,30,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,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,0,83,0,114,69,0,0,0,114,183,0,0,0,41, + 3,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 236,0,0,0,139,4,0,0,115,4,0,0,0,6,1,10, + 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,114,12,1,0,0,114,69,0, + 0,0,114,13,1,0,0,114,15,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,16,1,0,0, + 143,4,0,0,114,17,1,0,0,122,26,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, - 114,12,1,0,0,114,69,0,0,0,114,13,1,0,0,114, - 15,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,16,1,0,0,143,4,0,0,114,17,1,0, - 0,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,114,18,1,0,0,114,69,0,0,0, - 114,19,1,0,0,114,21,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,22,1,0,0,147,4, - 0,0,114,23,1,0,0,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,3,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,78,41,7,114,159,0,0, - 0,114,242,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,141,0,0,0,114,65,0,0,0,41,3,114,143,0,0, - 0,114,210,0,0,0,114,244,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,239,0,0,0,150, - 4,0,0,115,14,0,0,0,4,2,6,1,4,255,6,2, - 8,1,4,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,159,0,0,0,114, - 242,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,141,0,0, - 0,114,65,0,0,0,169,2,114,143,0,0,0,114,244,0, + 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,114,18, + 1,0,0,114,69,0,0,0,114,19,1,0,0,114,21,1, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,245,0,0,0,158,4,0,0,115,8,0,0,0,14, - 2,6,1,8,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,5,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, - 3,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,28,0, - 0,0,129,0,124,0,93,9,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,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0, - 0,114,9,0,0,0,167,4,0,0,115,6,0,0,0,6, - 128,2,1,20,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,46,60,108,111,99,97,108,115,62,46,60, - 103,101,110,101,120,112,114,62,78,41,4,114,74,0,0,0, - 114,65,0,0,0,218,3,97,110,121,114,232,0,0,0,114, - 247,0,0,0,114,7,0,0,0,114,45,1,0,0,114,8, - 0,0,0,114,206,0,0,0,164,4,0,0,115,8,0,0, - 0,14,2,12,1,2,1,8,255,122,30,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,114,23,0,0,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,7,0,0,0, - 114,247,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,241,0,0,0,170,4,0,0,114,24,0, - 0,0,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, + 0,114,22,1,0,0,147,4,0,0,114,23,1,0,0,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, + 3,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,78,41,7,114,159,0,0,0,114,242,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,141,0,0,0,114,65,0, + 0,0,41,3,114,143,0,0,0,114,210,0,0,0,114,244, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,239,0,0,0,150,4,0,0,115,14,0,0,0, + 4,2,6,1,4,255,6,2,8,1,4,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,159,0,0,0,114,242,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,141,0,0,0,114,65,0,0,0,169,2, + 114,143,0,0,0,114,244,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,245,0,0,0,158,4, + 0,0,115,8,0,0,0,14,2,6,1,8,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,1,0,0,0,67,0,0,0,114,23,0,0,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,7,0,0,0,114,247,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,5,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,3,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,28,0,0,0,129,0,124,0,93,9, + 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,7, + 0,0,0,169,2,114,5,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, + 7,0,0,0,114,8,0,0,0,114,9,0,0,0,167,4, + 0,0,115,6,0,0,0,6,128,2,1,20,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,46,60,108, + 111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,62, + 78,41,4,114,74,0,0,0,114,65,0,0,0,218,3,97, + 110,121,114,232,0,0,0,114,247,0,0,0,114,7,0,0, + 0,114,45,1,0,0,114,8,0,0,0,114,206,0,0,0, + 164,4,0,0,115,8,0,0,0,14,2,12,1,2,1,8, + 255,122,30,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,114,23,0,0,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,7,0,0,0,114,247,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,241,0,0, + 0,170,4,0,0,114,24,0,0,0,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,114,23,0,0,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,7,0,0,0,114,247,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,1,1,0,0,174,4, + 0,0,114,24,0,0,0,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, + 114,26,1,0,0,114,27,1,0,0,114,71,0,0,0,114, + 247,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,203,0,0,0,178,4,0,0,114,28,1,0, + 0,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,150,0,0,0,114,149,0,0,0, + 114,151,0,0,0,114,152,0,0,0,114,236,0,0,0,114, + 16,1,0,0,114,22,1,0,0,114,239,0,0,0,114,245, + 0,0,0,114,206,0,0,0,114,241,0,0,0,114,1,1, + 0,0,114,160,0,0,0,114,203,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,30,1,0,0,131,4,0,0,115,24,0,0,0,8,0, + 4,2,8,6,8,4,8,4,8,3,8,8,8,6,8,6, + 8,4,2,4,14,1,114,30,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,104,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,100,18,100,19,132,0,90,12,100,20,100, + 21,132,0,90,13,100,22,100,23,132,0,90,14,100,24,83, + 0,41,25,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,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,36,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,3,124,0,95,5,100,0,83,0, + 114,69,0,0,0,41,6,218,5,95,110,97,109,101,218,5, + 95,112,97,116,104,114,136,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, + 12,95,112,97,116,104,95,102,105,110,100,101,114,169,4,114, + 143,0,0,0,114,141,0,0,0,114,65,0,0,0,90,11, + 112,97,116,104,95,102,105,110,100,101,114,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,236,0,0,0,191, + 4,0,0,115,8,0,0,0,6,1,6,1,14,1,10,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, + 15,100,3,83,0,124,1,100,4,102,2,83,0,41,6,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, + 97,0,0,0,114,10,0,0,0,41,2,114,15,0,0,0, + 114,65,0,0,0,90,8,95,95,112,97,116,104,95,95,78, + 41,2,114,48,1,0,0,114,104,0,0,0,41,4,114,143, + 0,0,0,114,40,1,0,0,218,3,100,111,116,90,2,109, + 101,114,7,0,0,0,114,7,0,0,0,114,8,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,197,4,0,0,115,8,0, + 0,0,18,2,8,1,4,2,8,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,155,0,0,0,114,15,0, + 0,0,218,7,109,111,100,117,108,101,115,41,3,114,143,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,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,50,1,0,0,207,4,0,0,115,4, + 0,0,0,12,1,16,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,80,0,0,0,116,0,124,0,160,1,161,0,131,1, + 125,1,124,1,124,0,106,2,107,3,114,37,124,0,160,3, + 124,0,106,4,124,1,161,2,125,2,124,2,100,0,117,1, + 114,34,124,2,106,5,100,0,117,0,114,34,124,2,106,6, + 114,34,124,2,106,6,124,0,95,7,124,1,124,0,95,2, + 124,0,106,7,83,0,114,69,0,0,0,41,8,114,136,0, + 0,0,114,50,1,0,0,114,51,1,0,0,114,52,1,0, + 0,114,48,1,0,0,114,164,0,0,0,114,202,0,0,0, + 114,49,1,0,0,41,3,114,143,0,0,0,90,11,112,97, + 114,101,110,116,95,112,97,116,104,114,210,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,12,95, + 114,101,99,97,108,99,117,108,97,116,101,211,4,0,0,115, + 16,0,0,0,12,2,10,1,14,1,18,3,6,1,8,1, + 6,1,6,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,243,12,0,0,0,116, + 0,124,0,160,1,161,0,131,1,83,0,114,69,0,0,0, + 41,2,218,4,105,116,101,114,114,57,1,0,0,114,21,1, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,1,1,0,0,174,4,0,0,114,24,0,0,0,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, + 0,218,8,95,95,105,116,101,114,95,95,224,4,0,0,243, + 2,0,0,0,12,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, - 1,0,0,0,67,0,0,0,114,26,1,0,0,114,27,1, - 0,0,114,71,0,0,0,114,247,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,203,0,0,0, - 178,4,0,0,114,28,1,0,0,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,150, - 0,0,0,114,149,0,0,0,114,151,0,0,0,114,152,0, - 0,0,114,236,0,0,0,114,16,1,0,0,114,22,1,0, - 0,114,239,0,0,0,114,245,0,0,0,114,206,0,0,0, - 114,241,0,0,0,114,1,1,0,0,114,160,0,0,0,114, - 203,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,30,1,0,0,131,4,0, - 0,115,24,0,0,0,8,0,4,2,8,6,8,4,8,4, - 8,3,8,8,8,6,8,6,8,4,2,4,14,1,114,30, - 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,104,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,100,18,100, - 19,132,0,90,12,100,20,100,21,132,0,90,13,100,22,100, - 23,132,0,90,14,100,24,83,0,41,25,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,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, - 36,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,3, - 124,0,95,5,100,0,83,0,114,69,0,0,0,41,6,218, - 5,95,110,97,109,101,218,5,95,112,97,116,104,114,136,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,12,95,112,97,116,104,95,102, - 105,110,100,101,114,169,4,114,143,0,0,0,114,141,0,0, - 0,114,65,0,0,0,90,11,112,97,116,104,95,102,105,110, - 100,101,114,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,236,0,0,0,191,4,0,0,115,8,0,0,0, - 6,1,6,1,14,1,10,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,15,100,3,83,0,124,1,100, - 4,102,2,83,0,41,6,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,97,0,0,0,114,10,0,0, - 0,41,2,114,15,0,0,0,114,65,0,0,0,90,8,95, - 95,112,97,116,104,95,95,78,41,2,114,48,1,0,0,114, - 104,0,0,0,41,4,114,143,0,0,0,114,40,1,0,0, - 218,3,100,111,116,90,2,109,101,114,7,0,0,0,114,7, - 0,0,0,114,8,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,197,4,0,0,115,8,0,0,0,18,2,8,1,4,2, - 8,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,155,0,0,0,114,15,0,0,0,218,7,109,111,100,117, - 108,101,115,41,3,114,143,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,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,50,1, - 0,0,207,4,0,0,115,4,0,0,0,12,1,16,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,80,0,0,0,116,0, - 124,0,160,1,161,0,131,1,125,1,124,1,124,0,106,2, - 107,3,114,37,124,0,160,3,124,0,106,4,124,1,161,2, - 125,2,124,2,100,0,117,1,114,34,124,2,106,5,100,0, - 117,0,114,34,124,2,106,6,114,34,124,2,106,6,124,0, - 95,7,124,1,124,0,95,2,124,0,106,7,83,0,114,69, - 0,0,0,41,8,114,136,0,0,0,114,50,1,0,0,114, - 51,1,0,0,114,52,1,0,0,114,48,1,0,0,114,164, - 0,0,0,114,202,0,0,0,114,49,1,0,0,41,3,114, - 143,0,0,0,90,11,112,97,114,101,110,116,95,112,97,116, - 104,114,210,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,12,95,114,101,99,97,108,99,117,108, - 97,116,101,211,4,0,0,115,16,0,0,0,12,2,10,1, - 14,1,18,3,6,1,8,1,6,1,6,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,243,12,0,0,0,116,0,124,0,160,1,161,0,131, - 1,83,0,114,69,0,0,0,41,2,218,4,105,116,101,114, - 114,57,1,0,0,114,21,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,8,95,95,105,116,101, - 114,95,95,224,4,0,0,243,2,0,0,0,12,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, - 143,0,0,0,218,5,105,110,100,101,120,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,11,95,95,103,101, - 116,105,116,101,109,95,95,227,4,0,0,114,61,1,0,0, - 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,69,0,0,0,41,1,114, - 49,1,0,0,41,3,114,143,0,0,0,114,63,1,0,0, - 114,65,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95, - 95,230,4,0,0,115,2,0,0,0,14,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,114,58,1,0,0,114,69,0,0,0,41,2,114,4,0, - 0,0,114,57,1,0,0,114,21,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,7,95,95,108, - 101,110,95,95,233,4,0,0,114,61,1,0,0,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,243,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,89,0,0,0,114, - 49,1,0,0,114,21,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,8,95,95,114,101,112,114, - 95,95,236,4,0,0,114,61,1,0,0,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,62,1,0,0,169,2,114,143,0,0,0,218, - 4,105,116,101,109,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,12,95,95,99,111,110,116,97,105,110,115, - 95,95,239,4,0,0,114,61,1,0,0,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,49,1, - 0,0,114,61,0,0,0,114,69,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,61,0,0,0, - 242,4,0,0,243,2,0,0,0,16,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,15,114,150,0,0,0,114,149,0,0,0,114, - 151,0,0,0,114,152,0,0,0,114,236,0,0,0,114,55, - 1,0,0,114,50,1,0,0,114,57,1,0,0,114,60,1, - 0,0,114,64,1,0,0,114,65,1,0,0,114,66,1,0, - 0,114,68,1,0,0,114,71,1,0,0,114,61,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,47,1,0,0,184,4,0,0,115,26,0, - 0,0,8,0,4,1,8,6,8,6,8,10,8,4,8,13, - 8,3,8,3,8,3,8,3,8,3,12,3,114,47,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,88,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,100,18,132, - 0,90,12,100,19,83,0,41,20,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,47,1,0,0,114,49,1,0,0,114,53,1,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,236,0,0,0,248,4,0,0,115,2,0,0,0,18,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,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,24,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,100,2,160,3,124,0,106,4,161,1,83, - 0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114, - 100,0,0,0,114,101,0,0,0,114,89,0,0,0,114,150, - 0,0,0,41,1,114,244,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,11,109,111,100,117,108, - 101,95,114,101,112,114,251,4,0,0,115,8,0,0,0,6, - 7,2,1,4,255,12,2,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,114,23, - 0,0,0,41,2,78,84,114,7,0,0,0,114,247,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,143,0,0,0,218,5,105,110, + 100,101,120,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,11,95,95,103,101,116,105,116,101,109,95,95,227, + 4,0,0,114,61,1,0,0,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,69,0,0,0,41,1,114,49,1,0,0,41,3,114,143, + 0,0,0,114,63,1,0,0,114,65,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,11,95,95, + 115,101,116,105,116,101,109,95,95,230,4,0,0,115,2,0, + 0,0,14,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,114,58,1,0,0,114,69, + 0,0,0,41,2,114,4,0,0,0,114,57,1,0,0,114, + 21,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,7,95,95,108,101,110,95,95,233,4,0,0, + 114,61,1,0,0,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,243,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,89,0,0,0,114,49,1,0,0,114,21,1,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,206,0,0,0,6,5,0,0,243,2,0,0,0,4,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, + 218,8,95,95,114,101,112,114,95,95,236,4,0,0,114,61, + 1,0,0,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,62,1,0,0, + 169,2,114,143,0,0,0,218,4,105,116,101,109,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,12,95,95, + 99,111,110,116,97,105,110,115,95,95,239,4,0,0,114,61, + 1,0,0,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,49,1,0,0,114,61,0,0,0,114, + 69,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,61,0,0,0,242,4,0,0,243,2,0,0, + 0,16,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,15,114,150,0, + 0,0,114,149,0,0,0,114,151,0,0,0,114,152,0,0, + 0,114,236,0,0,0,114,55,1,0,0,114,50,1,0,0, + 114,57,1,0,0,114,60,1,0,0,114,64,1,0,0,114, + 65,1,0,0,114,66,1,0,0,114,68,1,0,0,114,71, + 1,0,0,114,61,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,47,1,0, + 0,184,4,0,0,115,26,0,0,0,8,0,4,1,8,6, + 8,6,8,10,8,4,8,13,8,3,8,3,8,3,8,3, + 8,3,12,3,114,47,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,88,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,100,18,132,0,90,12,100,19,83,0,41, + 20,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,47,1,0,0,114, + 49,1,0,0,114,53,1,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,236,0,0,0,248,4,0, + 0,115,2,0,0,0,18,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,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,24,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,160, + 3,124,0,106,4,161,1,83,0,41,4,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,82,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,40,41, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, + 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, + 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, + 51,46,49,50,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,78, + 41,5,114,99,0,0,0,114,100,0,0,0,114,101,0,0, + 0,114,89,0,0,0,114,150,0,0,0,41,1,114,244,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,11,109,111,100,117,108,101,95,114,101,112,114,251,4, + 0,0,115,8,0,0,0,6,7,2,1,4,255,12,2,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,114,23,0,0,0,41,2,78,114,10, - 0,0,0,114,7,0,0,0,114,247,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,1,1,0, - 0,9,5,0,0,114,75,1,0,0,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,10,0,0,0,122,8,60, - 115,116,114,105,110,103,62,114,243,0,0,0,84,41,1,114, - 3,1,0,0,41,1,114,4,1,0,0,114,247,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 241,0,0,0,12,5,0,0,114,72,1,0,0,122,25,95, + 0,0,67,0,0,0,114,23,0,0,0,41,2,78,84,114, + 7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,206,0,0,0,6,5,0, + 0,243,2,0,0,0,4,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,114,23, + 0,0,0,41,2,78,114,10,0,0,0,114,7,0,0,0, + 114,247,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,1,1,0,0,9,5,0,0,114,75,1, + 0,0,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,10,0,0,0,122,8,60,115,116,114,105,110,103,62,114, + 243,0,0,0,84,41,1,114,3,1,0,0,41,1,114,4, + 1,0,0,114,247,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,241,0,0,0,12,5,0,0, + 114,72,1,0,0,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,114,23,0,0,0,114,237, + 0,0,0,114,7,0,0,0,114,238,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,239,0,0, + 0,15,5,0,0,114,240,0,0,0,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,69,0,0, + 0,114,7,0,0,0,114,42,1,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,245,0,0,0,18, + 5,0,0,114,75,1,0,0,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,3, + 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,78,41,4,114, + 159,0,0,0,114,173,0,0,0,114,49,1,0,0,114,246, + 0,0,0,114,247,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,248,0,0,0,21,5,0,0, + 115,8,0,0,0,6,7,4,1,4,255,12,3,122,28,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,114,23,0,0,0,114,237,0,0,0,114,7,0,0,0, - 114,238,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,239,0,0,0,15,5,0,0,114,240,0, - 0,0,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,69,0,0,0,114,7,0,0,0,114,42, - 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,245,0,0,0,18,5,0,0,114,75,1,0,0, - 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,3,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,78,41,4,114,159,0,0,0,114,173,0,0, - 0,114,49,1,0,0,114,246,0,0,0,114,247,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 248,0,0,0,21,5,0,0,115,8,0,0,0,6,7,4, - 1,4,255,12,3,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,99,2,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,2,0,0,0,67,0,0,0,115,22,0,0, - 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,124, - 0,106,2,131,1,83,0,41,3,78,114,0,0,0,0,41, - 1,218,15,78,97,109,101,115,112,97,99,101,82,101,97,100, - 101,114,41,3,114,32,1,0,0,114,76,1,0,0,114,49, - 1,0,0,41,3,114,143,0,0,0,114,244,0,0,0,114, - 76,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,33,1,0,0,33,5,0,0,115,4,0,0, - 0,12,1,10,1,122,36,95,78,97,109,101,115,112,97,99, - 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,78,41,13,114,150, - 0,0,0,114,149,0,0,0,114,151,0,0,0,114,236,0, - 0,0,114,233,0,0,0,114,74,1,0,0,114,206,0,0, - 0,114,1,1,0,0,114,241,0,0,0,114,239,0,0,0, - 114,245,0,0,0,114,248,0,0,0,114,33,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,73,1,0,0,247,4,0,0,115,22,0,0, - 0,8,0,8,1,2,3,10,1,8,10,8,3,8,3,8, - 3,8,3,8,3,12,12,114,73,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,7, - 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, - 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, - 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, - 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, - 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, - 41,21,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,0, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,67,0,0,0,115,64,0,0,0,116,0,116,1, - 106,2,160,3,161,0,131,1,68,0,93,22,92,2,125,0, - 125,1,124,1,100,1,117,0,114,20,116,1,106,2,124,0, - 61,0,113,7,116,4,124,1,100,2,131,2,114,29,124,1, - 160,5,161,0,1,0,113,7,100,1,83,0,41,3,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,41,6,218,4,108,105,115,116,114,15,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,153,0,0,0,114, - 78,1,0,0,41,2,114,141,0,0,0,218,6,102,105,110, - 100,101,114,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,78,1,0,0,44,5,0,0,115,14,0,0,0, - 22,4,8,1,10,1,10,1,8,1,2,128,4,252,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,1,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,9,0,0, - 0,67,0,0,0,115,76,0,0,0,116,0,106,1,100,1, - 117,1,114,14,116,0,106,1,115,14,116,2,160,3,100,2, - 116,4,161,2,1,0,116,0,106,1,68,0,93,17,125,1, - 122,7,124,1,124,0,131,1,87,0,2,0,1,0,83,0, - 4,0,116,5,121,37,1,0,1,0,1,0,89,0,113,17, - 100,1,83,0,119,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,15,0,0,0,218,10,112,97,116,104,95, - 104,111,111,107,115,114,99,0,0,0,114,100,0,0,0,114, - 162,0,0,0,114,142,0,0,0,41,2,114,65,0,0,0, - 90,4,104,111,111,107,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,11,95,112,97,116,104,95,104,111,111, - 107,115,54,5,0,0,115,18,0,0,0,16,3,12,1,10, - 1,2,1,14,1,12,1,4,1,4,2,2,253,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,20,122,6,116,0,160, - 1,161,0,125,1,87,0,110,9,4,0,116,2,121,49,1, - 0,1,0,1,0,89,0,100,2,83,0,122,8,116,3,106, - 4,124,1,25,0,125,2,87,0,124,2,83,0,4,0,116, - 5,121,48,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,124, - 2,83,0,119,0,119,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,10,0, - 0,0,78,41,7,114,18,0,0,0,114,82,0,0,0,218, - 17,70,105,108,101,78,111,116,70,111,117,110,100,69,114,114, - 111,114,114,15,0,0,0,114,80,1,0,0,218,8,75,101, - 121,69,114,114,111,114,114,84,1,0,0,41,3,114,221,0, - 0,0,114,65,0,0,0,114,82,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,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,67,5,0,0,115,28,0,0,0,8,8,2,1,12,1, - 12,1,6,3,2,1,12,1,4,4,12,253,10,1,12,1, - 4,1,2,253,2,250,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,7,0,0,0,4,0,0,0,67,0,0,0, - 115,138,0,0,0,116,0,124,2,100,1,131,2,114,27,116, - 1,160,2,124,2,161,1,155,0,100,2,157,2,125,3,116, - 3,160,4,124,3,116,5,161,2,1,0,124,2,160,6,124, - 1,161,1,92,2,125,4,125,5,110,21,116,1,160,2,124, - 2,161,1,155,0,100,3,157,2,125,3,116,3,160,4,124, - 3,116,5,161,2,1,0,124,2,160,7,124,1,161,1,125, - 4,103,0,125,5,124,4,100,0,117,1,114,58,116,1,160, - 8,124,1,124,4,161,2,83,0,116,1,160,9,124,1,100, - 0,161,2,125,6,124,5,124,6,95,10,124,6,83,0,41, - 4,78,114,161,0,0,0,122,53,46,102,105,110,100,95,115, - 112,101,99,40,41,32,110,111,116,32,102,111,117,110,100,59, - 32,102,97,108,108,105,110,103,32,98,97,99,107,32,116,111, - 32,102,105,110,100,95,108,111,97,100,101,114,40,41,122,53, - 46,102,105,110,100,95,115,112,101,99,40,41,32,110,111,116, - 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, - 98,97,99,107,32,116,111,32,102,105,110,100,95,109,111,100, - 117,108,101,40,41,41,11,114,153,0,0,0,114,159,0,0, - 0,90,12,95,111,98,106,101,99,116,95,110,97,109,101,114, - 99,0,0,0,114,100,0,0,0,114,162,0,0,0,114,161, - 0,0,0,114,229,0,0,0,114,224,0,0,0,114,207,0, - 0,0,114,202,0,0,0,41,7,114,221,0,0,0,114,163, - 0,0,0,114,82,1,0,0,114,166,0,0,0,114,164,0, - 0,0,114,165,0,0,0,114,210,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,16,95,108,101, - 103,97,99,121,95,103,101,116,95,115,112,101,99,89,5,0, - 0,115,26,0,0,0,10,4,16,1,12,2,16,1,16,2, - 12,2,10,1,4,1,8,1,12,1,12,1,6,1,4,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,67,125,5,116,0,124,5,116,1,116,2, - 102,2,131,2,115,14,113,4,124,0,160,3,124,5,161,1, - 125,6,124,6,100,1,117,1,114,71,116,4,124,6,100,2, - 131,2,114,35,124,6,160,5,124,1,124,3,161,2,125,7, - 110,6,124,0,160,6,124,1,124,6,161,2,125,7,124,7, - 100,1,117,0,114,46,113,4,124,7,106,7,100,1,117,1, - 114,55,124,7,2,0,1,0,83,0,124,7,106,8,125,8, - 124,8,100,1,117,0,114,66,116,9,100,3,131,1,130,1, - 124,4,160,10,124,8,161,1,1,0,113,4,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,109,0,0,0,218,5,98,121, - 116,101,115,114,87,1,0,0,114,153,0,0,0,114,226,0, - 0,0,114,88,1,0,0,114,164,0,0,0,114,202,0,0, - 0,114,142,0,0,0,114,191,0,0,0,114,159,0,0,0, - 114,207,0,0,0,41,9,114,221,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,82,1,0,0,114,210,0,0,0,114,165,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,9,95,103,101,116,95,115,112,101,99,110,5,0,0,115, - 42,0,0,0,4,5,8,1,14,1,2,1,10,1,8,1, - 10,1,14,1,12,2,8,1,2,1,10,1,8,1,6,1, - 8,1,8,1,10,5,2,128,12,2,6,1,4,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,94,0, - 0,0,124,2,100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3,100,1, - 117,0,114,45,124,4,106,4,125,5,124,5,114,43,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,124,4,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,15,0,0,0,114,65,0,0,0,114,91, - 1,0,0,114,164,0,0,0,114,202,0,0,0,114,205,0, - 0,0,114,47,1,0,0,41,6,114,221,0,0,0,114,163, - 0,0,0,114,65,0,0,0,114,225,0,0,0,114,210,0, - 0,0,114,90,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,226,0,0,0,142,5,0,0,115, - 26,0,0,0,8,6,6,1,14,1,8,1,4,1,10,1, - 6,1,4,1,6,3,16,1,4,1,4,2,4,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,42,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, - 160,3,124,1,124,2,161,2,125,3,124,3,100,2,117,0, - 114,18,100,2,83,0,124,3,106,4,83,0,41,3,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, + 108,111,97,100,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0, + 67,0,0,0,115,22,0,0,0,100,1,100,2,108,0,109, + 1,125,2,1,0,124,2,124,0,106,2,131,1,83,0,41, + 3,78,114,0,0,0,0,41,1,218,15,78,97,109,101,115, + 112,97,99,101,82,101,97,100,101,114,41,3,114,32,1,0, + 0,114,76,1,0,0,114,49,1,0,0,41,3,114,143,0, + 0,0,114,244,0,0,0,114,76,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,33,1,0,0, + 33,5,0,0,115,4,0,0,0,12,1,10,1,122,36,95, + 78,97,109,101,115,112,97,99,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,78,41,13,114,150,0,0,0,114,149,0,0,0, + 114,151,0,0,0,114,236,0,0,0,114,233,0,0,0,114, + 74,1,0,0,114,206,0,0,0,114,1,1,0,0,114,241, + 0,0,0,114,239,0,0,0,114,245,0,0,0,114,248,0, + 0,0,114,33,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,73,1,0,0, + 247,4,0,0,115,22,0,0,0,8,0,8,1,2,3,10, + 1,8,10,8,3,8,3,8,3,8,3,8,3,12,12,114, + 73,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,7,100,6,100,7,132,0,131,1, + 90,8,101,7,100,8,100,9,132,0,131,1,90,9,101,7, + 100,19,100,11,100,12,132,1,131,1,90,10,101,7,100,20, + 100,13,100,14,132,1,131,1,90,11,101,7,100,19,100,15, + 100,16,132,1,131,1,90,12,101,4,100,17,100,18,132,0, + 131,1,90,13,100,10,83,0,41,21,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,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, + 64,0,0,0,116,0,116,1,106,2,160,3,161,0,131,1, + 68,0,93,22,92,2,125,0,125,1,124,1,100,1,117,0, + 114,20,116,1,106,2,124,0,61,0,113,7,116,4,124,1, + 100,2,131,2,114,29,124,1,160,5,161,0,1,0,113,7, + 100,1,83,0,41,3,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,41,6,218,4,108,105,115, + 116,114,15,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,153,0,0,0,114,78,1,0,0,41,2,114,141, + 0,0,0,218,6,102,105,110,100,101,114,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,78,1,0,0,44, + 5,0,0,115,14,0,0,0,22,4,8,1,10,1,10,1, + 8,1,2,128,4,252,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,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,9,0,0,0,67,0,0,0,115,76,0, + 0,0,116,0,106,1,100,1,117,1,114,14,116,0,106,1, + 115,14,116,2,160,3,100,2,116,4,161,2,1,0,116,0, + 106,1,68,0,93,17,125,1,122,7,124,1,124,0,131,1, + 87,0,2,0,1,0,83,0,4,0,116,5,121,37,1,0, + 1,0,1,0,89,0,113,17,100,1,83,0,119,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,15,0,0, + 0,218,10,112,97,116,104,95,104,111,111,107,115,114,99,0, + 0,0,114,100,0,0,0,114,162,0,0,0,114,142,0,0, + 0,41,2,114,65,0,0,0,90,4,104,111,111,107,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, + 112,97,116,104,95,104,111,111,107,115,54,5,0,0,115,18, + 0,0,0,16,3,12,1,10,1,2,1,14,1,12,1,4, + 1,4,2,2,253,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,20,122,6,116,0,160,1,161,0,125,1,87,0,110, + 9,4,0,116,2,121,49,1,0,1,0,1,0,89,0,100, + 2,83,0,122,8,116,3,106,4,124,1,25,0,125,2,87, + 0,124,2,83,0,4,0,116,5,121,48,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,124,2,83,0,119,0,119,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,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,122,101,80,97,116,104, - 70,105,110,100,101,114,46,102,105,110,100,95,109,111,100,117, - 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, - 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, - 100,78,114,227,0,0,0,114,228,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,229,0,0,0, - 166,5,0,0,115,14,0,0,0,6,8,2,2,4,254,12, - 3,8,1,4,1,6,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, - 0,0,0,0,0,0,0,0,0,0,0,0,3,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,2,1,0,124,2,106,2,124,0,105, - 0,124,1,164,1,142,1,83,0,41,4,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,78,41,3,90,18, - 105,109,112,111,114,116,108,105,98,46,109,101,116,97,100,97, - 116,97,114,92,1,0,0,218,18,102,105,110,100,95,100,105, - 115,116,114,105,98,117,116,105,111,110,115,41,3,114,144,0, - 0,0,114,145,0,0,0,114,92,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,93,1,0,0, - 182,5,0,0,115,4,0,0,0,12,10,16,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,114,69,0,0, - 0,114,230,0,0,0,41,14,114,150,0,0,0,114,149,0, - 0,0,114,151,0,0,0,114,152,0,0,0,114,233,0,0, - 0,114,78,1,0,0,114,84,1,0,0,114,234,0,0,0, - 114,87,1,0,0,114,88,1,0,0,114,91,1,0,0,114, - 226,0,0,0,114,229,0,0,0,114,93,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,77,1,0,0,40,5,0,0,115,36,0,0,0, - 8,0,4,2,2,2,10,1,2,9,10,1,2,12,10,1, - 2,21,10,1,2,20,12,1,2,31,12,1,2,23,12,1, - 2,15,14,1,114,77,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,16,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,4,124,3,124,0,95,1,124,1,112,27,100, - 3,124,0,95,2,116,3,124,0,106,2,131,1,115,43,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,24,0,0,0,129,0,124,0,93,7,125,1,124, - 1,136,0,102,2,86,0,1,0,113,2,100,0,83,0,114, - 69,0,0,0,114,7,0,0,0,114,43,1,0,0,169,1, - 114,164,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 9,0,0,0,211,5,0,0,115,4,0,0,0,6,128,18, - 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,97,0,0,0,114,130, - 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,86,0,0,0,114, - 67,0,0,0,114,18,0,0,0,114,82,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,143,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,7,0,0, - 0,114,95,1,0,0,114,8,0,0,0,114,236,0,0,0, - 205,5,0,0,115,20,0,0,0,4,4,12,1,26,1,6, - 1,10,2,10,1,18,1,6,1,8,1,12,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,130,0, - 0,0,78,41,1,114,97,1,0,0,114,21,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,78, - 1,0,0,221,5,0,0,114,81,0,0,0,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,4,0,0,0,67, - 0,0,0,115,54,0,0,0,116,0,160,1,100,1,116,2, - 161,2,1,0,124,0,160,3,124,1,161,1,125,2,124,2, - 100,2,117,0,114,19,100,2,103,0,102,2,83,0,124,2, - 106,4,124,2,106,5,112,25,103,0,102,2,83,0,41,3, - 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,122,101,70,105,108,101,70,105,110, - 100,101,114,46,102,105,110,100,95,108,111,97,100,101,114,40, - 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,59,32,117,115,101,32,102,105,110,100,95, - 115,112,101,99,40,41,32,105,110,115,116,101,97,100,78,41, - 6,114,99,0,0,0,114,100,0,0,0,114,101,0,0,0, - 114,226,0,0,0,114,164,0,0,0,114,202,0,0,0,41, - 3,114,143,0,0,0,114,163,0,0,0,114,210,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 161,0,0,0,227,5,0,0,115,14,0,0,0,6,7,2, - 2,4,254,10,3,8,1,8,1,16,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,143,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 91,1,0,0,242,5,0,0,115,8,0,0,0,10,1,8, - 1,2,1,6,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,120,1,0,0,100,1,125,3,124,1, - 160,0,100,2,161,1,100,3,25,0,125,4,122,12,116,1, - 124,0,106,2,112,17,116,3,160,4,161,0,131,1,106,5, - 125,5,87,0,110,9,4,0,116,6,121,187,1,0,1,0, - 1,0,100,4,125,5,89,0,124,5,124,0,106,7,107,3, - 114,43,124,0,160,8,161,0,1,0,124,5,124,0,95,7, - 116,9,131,0,114,54,124,0,106,10,125,6,124,4,160,11, - 161,0,125,7,110,5,124,0,106,12,125,6,124,4,125,7, - 124,7,124,6,118,0,114,106,116,13,124,0,106,2,124,4, - 131,2,125,8,124,0,106,14,68,0,93,29,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,101,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,72,116,17,124,8,131,1,125,3,124,0, - 106,14,68,0,93,54,92,2,125,9,125,10,122,10,116,13, - 124,0,106,2,124,4,124,9,23,0,131,2,125,12,87,0, - 110,10,4,0,116,18,121,186,1,0,1,0,1,0,89,0, - 1,0,100,6,83,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,163,116,15,124,12,131,1,114,163,124,0,160,16,124,10, - 124,1,124,12,100,6,124,2,161,5,2,0,1,0,83,0, - 113,109,124,3,114,184,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,119,0, - 119,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,97,0,0,0,114,44,0,0,0, - 114,130,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,104,0,0,0,114,75,0,0,0,114,65,0,0,0,114, - 18,0,0,0,114,82,0,0,0,114,35,1,0,0,114,76, - 0,0,0,114,97,1,0,0,218,11,95,102,105,108,108,95, - 99,97,99,104,101,114,21,0,0,0,114,100,1,0,0,114, - 131,0,0,0,114,99,1,0,0,114,67,0,0,0,114,96, - 1,0,0,114,80,0,0,0,114,91,1,0,0,114,83,0, - 0,0,114,111,0,0,0,114,159,0,0,0,114,173,0,0, - 0,114,207,0,0,0,114,202,0,0,0,41,14,114,143,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,44,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,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,226,0,0,0,247,5,0,0,115,86,0, - 0,0,4,5,14,1,2,1,24,1,12,1,6,1,10,1, - 8,1,6,1,6,2,6,1,10,1,6,2,4,1,8,2, - 12,1,14,1,8,1,10,1,8,1,24,1,2,255,8,5, - 14,2,2,1,20,1,12,1,8,1,16,1,12,1,8,1, - 10,1,4,1,8,255,2,128,4,2,12,1,12,1,8,1, - 4,1,4,1,2,244,2,228,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,190,0,0,0,124,0,106,0, - 125,1,122,11,116,1,160,2,124,1,112,11,116,1,160,3, - 161,0,161,1,125,2,87,0,110,12,4,0,116,4,116,5, - 116,6,102,3,121,94,1,0,1,0,1,0,103,0,125,2, - 89,0,116,7,106,8,160,9,100,1,161,1,115,39,116,10, - 124,2,131,1,124,0,95,11,110,37,116,10,131,0,125,3, - 124,2,68,0,93,28,125,4,124,4,160,12,100,2,161,1, - 92,3,125,5,125,6,125,7,124,6,114,65,100,3,160,13, - 124,5,124,7,160,14,161,0,161,2,125,8,110,2,124,5, - 125,8,124,3,160,15,124,8,161,1,1,0,113,44,124,3, - 124,0,95,11,116,7,106,8,160,9,116,16,161,1,114,92, - 100,4,100,5,132,0,124,2,68,0,131,1,124,0,95,17, - 100,6,83,0,100,6,83,0,119,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,14,0,0,0,114,97,0,0,0,114,88,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,6,125,1,124,1,160,0,161,0,146,2,113, - 2,83,0,114,7,0,0,0,41,1,114,131,0,0,0,41, - 2,114,5,0,0,0,90,2,102,110,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,13,0,0,0,71,6, - 0,0,115,2,0,0,0,20,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,18,0,0, - 0,90,7,108,105,115,116,100,105,114,114,82,0,0,0,114, - 85,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,15,0,0,0,114,25, - 0,0,0,114,26,0,0,0,114,98,1,0,0,114,99,1, - 0,0,114,126,0,0,0,114,89,0,0,0,114,131,0,0, - 0,218,3,97,100,100,114,27,0,0,0,114,100,1,0,0, - 41,9,114,143,0,0,0,114,65,0,0,0,90,8,99,111, - 110,116,101,110,116,115,90,21,108,111,119,101,114,95,115,117, - 102,102,105,120,95,99,111,110,116,101,110,116,115,114,70,1, - 0,0,114,141,0,0,0,114,54,1,0,0,114,44,1,0, - 0,90,8,110,101,119,95,110,97,109,101,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,102,1,0,0,42, - 6,0,0,115,38,0,0,0,6,2,2,1,22,1,18,1, - 6,3,12,3,12,1,6,7,8,1,16,1,4,1,18,1, - 4,2,12,1,6,1,12,1,20,1,4,255,2,233,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,4,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,10,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,4,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,78,41,2,114,83,0,0, - 0,114,142,0,0,0,114,71,0,0,0,169,2,114,221,0, - 0,0,114,101,1,0,0,114,7,0,0,0,114,8,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,83,6,0,0,115, - 6,0,0,0,8,2,12,1,16,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,78,114,7,0,0,0,41,3,114,221,0,0,0,114, - 101,1,0,0,114,107,1,0,0,114,7,0,0,0,114,106, - 1,0,0,114,8,0,0,0,218,9,112,97,116,104,95,104, - 111,111,107,73,6,0,0,115,4,0,0,0,14,10,4,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,114, - 67,1,0,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,89,0,0,0, - 114,65,0,0,0,114,21,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,68,1,0,0,91,6, - 0,0,114,61,1,0,0,122,19,70,105,108,101,70,105,110, - 100,101,114,46,95,95,114,101,112,114,95,95,114,69,0,0, - 0,41,15,114,150,0,0,0,114,149,0,0,0,114,151,0, - 0,0,114,152,0,0,0,114,236,0,0,0,114,78,1,0, - 0,114,167,0,0,0,114,229,0,0,0,114,161,0,0,0, - 114,91,1,0,0,114,226,0,0,0,114,102,1,0,0,114, - 234,0,0,0,114,108,1,0,0,114,68,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,94,1,0,0,196,5,0,0,115,24,0,0,0, - 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, - 8,51,2,31,10,1,12,17,114,94,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,33,124,5,114,18,124,5,106,1,125,4,110,15,124, - 2,124,3,107,2,114,28,116,2,124,1,124,2,131,2,125, - 4,110,5,116,3,124,1,124,2,131,2,125,4,124,5,115, - 42,116,4,124,1,124,2,124,4,100,3,141,3,125,5,122, - 19,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,100,0,83,0,4,0,116,5,121,71,1,0,1, - 0,1,0,89,0,100,0,83,0,119,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,95,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,41,1,0,0, - 114,34,1,0,0,114,213,0,0,0,218,9,69,120,99,101, - 112,116,105,111,110,41,6,90,2,110,115,114,141,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,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,14, - 95,102,105,120,95,117,112,95,109,111,100,117,108,101,97,6, - 0,0,115,36,0,0,0,10,2,10,1,4,1,4,1,8, - 1,8,1,12,1,10,2,4,1,14,1,2,1,8,1,8, - 1,8,1,14,1,12,1,6,2,2,254,114,113,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,102,2, - 125,1,116,5,116,6,102,2,125,2,124,0,124,1,124,2, - 103,3,83,0,41,2,122,95,82,101,116,117,114,110,115,32, - 97,32,108,105,115,116,32,111,102,32,102,105,108,101,45,98, - 97,115,101,100,32,109,111,100,117,108,101,32,108,111,97,100, - 101,114,115,46,10,10,32,32,32,32,69,97,99,104,32,105, - 116,101,109,32,105,115,32,97,32,116,117,112,108,101,32,40, - 108,111,97,100,101,114,44,32,115,117,102,102,105,120,101,115, - 41,46,10,32,32,32,32,78,41,7,114,30,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,34,1,0,0,114,127,0, - 0,0,114,41,1,0,0,114,113,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,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,208,0,0,0, - 120,6,0,0,115,8,0,0,0,12,5,8,1,8,1,10, - 1,114,208,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,1,0,0,0,67,0,0,0,115, - 8,0,0,0,124,0,97,0,100,0,83,0,114,69,0,0, - 0,41,1,114,159,0,0,0,41,1,218,17,95,98,111,111, - 116,115,116,114,97,112,95,109,111,100,117,108,101,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,21,95,115, - 101,116,95,98,111,111,116,115,116,114,97,112,95,109,111,100, - 117,108,101,131,6,0,0,115,2,0,0,0,8,2,114,116, - 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,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,116,1,0,0,114,208,0,0,0,114,15,0, - 0,0,114,83,1,0,0,114,191,0,0,0,114,94,1,0, - 0,114,108,1,0,0,218,9,109,101,116,97,95,112,97,116, - 104,114,61,0,0,0,114,77,1,0,0,41,2,114,115,1, - 0,0,90,17,115,117,112,112,111,114,116,101,100,95,108,111, - 97,100,101,114,115,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,8,95,105,110,115,116,97,108,108,136,6, - 0,0,115,8,0,0,0,8,2,6,1,20,1,16,1,114, - 118,1,0,0,41,1,114,87,0,0,0,114,69,0,0,0, - 41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0, - 0,41,1,84,41,85,114,152,0,0,0,114,159,0,0,0, - 114,187,0,0,0,114,91,0,0,0,114,15,0,0,0,114, - 99,0,0,0,114,184,0,0,0,114,25,0,0,0,114,231, - 0,0,0,90,2,110,116,114,18,0,0,0,114,215,0,0, - 0,90,5,112,111,115,105,120,114,50,0,0,0,218,3,97, - 108,108,114,59,0,0,0,114,136,0,0,0,114,57,0,0, - 0,114,62,0,0,0,90,20,95,112,97,116,104,115,101,112, - 115,95,119,105,116,104,95,99,111,108,111,110,114,28,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,27,0,0,0,114,29,0, - 0,0,114,21,0,0,0,114,36,0,0,0,114,42,0,0, - 0,114,45,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, - 83,0,0,0,114,86,0,0,0,114,95,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,34,0,0,0,114,172,0,0,0,114,33,0, - 0,0,114,39,0,0,0,114,8,1,0,0,114,116,0,0, - 0,114,112,0,0,0,114,127,0,0,0,114,61,0,0,0, - 114,114,1,0,0,114,232,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0,114, - 135,0,0,0,114,137,0,0,0,114,139,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,235,0,0,0,114,249,0,0,0,114,11,1,0, - 0,114,34,1,0,0,114,41,1,0,0,114,30,1,0,0, - 114,47,1,0,0,114,73,1,0,0,114,77,1,0,0,114, - 94,1,0,0,114,113,1,0,0,114,208,0,0,0,114,116, - 1,0,0,114,118,1,0,0,114,7,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,8,60,109, - 111,100,117,108,101,62,1,0,0,0,115,180,0,0,0,4, - 0,4,22,8,3,8,1,8,1,8,1,8,1,10,3,4, - 1,8,1,10,1,8,2,4,3,10,1,6,2,22,2,8, - 1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4, - 255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8, - 30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8, - 8,10,5,10,22,0,127,16,30,12,1,4,2,4,1,6, - 2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8, - 40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10, - 24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14, - 73,14,67,16,30,0,127,14,17,18,50,18,45,18,25,14, - 53,14,63,14,49,0,127,14,29,0,127,10,30,8,23,8, - 11,12,5, + 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,10,0,0,0,78,41,7,114,18,0, + 0,0,114,82,0,0,0,218,17,70,105,108,101,78,111,116, + 70,111,117,110,100,69,114,114,111,114,114,15,0,0,0,114, + 80,1,0,0,218,8,75,101,121,69,114,114,111,114,114,84, + 1,0,0,41,3,114,221,0,0,0,114,65,0,0,0,114, + 82,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 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,67,5,0,0,115,28,0, + 0,0,8,8,2,1,12,1,12,1,6,3,2,1,12,1, + 4,4,12,253,10,1,12,1,4,1,2,253,2,250,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,7,0,0,0, + 4,0,0,0,67,0,0,0,115,138,0,0,0,116,0,124, + 2,100,1,131,2,114,27,116,1,160,2,124,2,161,1,155, + 0,100,2,157,2,125,3,116,3,160,4,124,3,116,5,161, + 2,1,0,124,2,160,6,124,1,161,1,92,2,125,4,125, + 5,110,21,116,1,160,2,124,2,161,1,155,0,100,3,157, + 2,125,3,116,3,160,4,124,3,116,5,161,2,1,0,124, + 2,160,7,124,1,161,1,125,4,103,0,125,5,124,4,100, + 0,117,1,114,58,116,1,160,8,124,1,124,4,161,2,83, + 0,116,1,160,9,124,1,100,0,161,2,125,6,124,5,124, + 6,95,10,124,6,83,0,41,4,78,114,161,0,0,0,122, + 53,46,102,105,110,100,95,115,112,101,99,40,41,32,110,111, + 116,32,102,111,117,110,100,59,32,102,97,108,108,105,110,103, + 32,98,97,99,107,32,116,111,32,102,105,110,100,95,108,111, + 97,100,101,114,40,41,122,53,46,102,105,110,100,95,115,112, + 101,99,40,41,32,110,111,116,32,102,111,117,110,100,59,32, + 102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32, + 102,105,110,100,95,109,111,100,117,108,101,40,41,41,11,114, + 153,0,0,0,114,159,0,0,0,90,12,95,111,98,106,101, + 99,116,95,110,97,109,101,114,99,0,0,0,114,100,0,0, + 0,114,162,0,0,0,114,161,0,0,0,114,229,0,0,0, + 114,224,0,0,0,114,207,0,0,0,114,202,0,0,0,41, + 7,114,221,0,0,0,114,163,0,0,0,114,82,1,0,0, + 114,166,0,0,0,114,164,0,0,0,114,165,0,0,0,114, + 210,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,16,95,108,101,103,97,99,121,95,103,101,116, + 95,115,112,101,99,89,5,0,0,115,26,0,0,0,10,4, + 16,1,12,2,16,1,16,2,12,2,10,1,4,1,8,1, + 12,1,12,1,6,1,4,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,67,125,5, + 116,0,124,5,116,1,116,2,102,2,131,2,115,14,113,4, + 124,0,160,3,124,5,161,1,125,6,124,6,100,1,117,1, + 114,71,116,4,124,6,100,2,131,2,114,35,124,6,160,5, + 124,1,124,3,161,2,125,7,110,6,124,0,160,6,124,1, + 124,6,161,2,125,7,124,7,100,1,117,0,114,46,113,4, + 124,7,106,7,100,1,117,1,114,55,124,7,2,0,1,0, + 83,0,124,7,106,8,125,8,124,8,100,1,117,0,114,66, + 116,9,100,3,131,1,130,1,124,4,160,10,124,8,161,1, + 1,0,113,4,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, + 109,0,0,0,218,5,98,121,116,101,115,114,87,1,0,0, + 114,153,0,0,0,114,226,0,0,0,114,88,1,0,0,114, + 164,0,0,0,114,202,0,0,0,114,142,0,0,0,114,191, + 0,0,0,114,159,0,0,0,114,207,0,0,0,41,9,114, + 221,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,82,1,0,0,114, + 210,0,0,0,114,165,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,9,95,103,101,116,95,115, + 112,101,99,110,5,0,0,115,42,0,0,0,4,5,8,1, + 14,1,2,1,10,1,8,1,10,1,14,1,12,2,8,1, + 2,1,10,1,8,1,6,1,8,1,8,1,10,5,2,128, + 12,2,6,1,4,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,94,0,0,0,124,2,100,1,117,0, + 114,7,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,20,100,1, + 83,0,124,4,106,3,100,1,117,0,114,45,124,4,106,4, + 125,5,124,5,114,43,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,124,4,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,15,0,0, + 0,114,65,0,0,0,114,91,1,0,0,114,164,0,0,0, + 114,202,0,0,0,114,205,0,0,0,114,47,1,0,0,41, + 6,114,221,0,0,0,114,163,0,0,0,114,65,0,0,0, + 114,225,0,0,0,114,210,0,0,0,114,90,1,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,226, + 0,0,0,142,5,0,0,115,26,0,0,0,8,6,6,1, + 14,1,8,1,4,1,10,1,6,1,4,1,6,3,16,1, + 4,1,4,2,4,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,42,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, + 125,3,124,3,100,2,117,0,114,18,100,2,83,0,124,3, + 106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102, + 105,110,100,95,109,111,100,117,108,101,40,41,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, + 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, + 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, + 59,32,117,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,78,114,227,0,0,0,114, + 228,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,229,0,0,0,166,5,0,0,115,14,0,0, + 0,6,8,2,2,4,254,12,3,8,1,4,1,6,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,0,0,0,0,0,0,0,0, + 0,0,0,0,3,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,2,1, + 0,124,2,106,2,124,0,105,0,124,1,164,1,142,1,83, + 0,41,4,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,78,41,3,90,18,105,109,112,111,114,116,108,105, + 98,46,109,101,116,97,100,97,116,97,114,92,1,0,0,218, + 18,102,105,110,100,95,100,105,115,116,114,105,98,117,116,105, + 111,110,115,41,3,114,144,0,0,0,114,145,0,0,0,114, + 92,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,93,1,0,0,182,5,0,0,115,4,0,0, + 0,12,10,16,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,114,69,0,0,0,114,230,0,0,0,41,14, + 114,150,0,0,0,114,149,0,0,0,114,151,0,0,0,114, + 152,0,0,0,114,233,0,0,0,114,78,1,0,0,114,84, + 1,0,0,114,234,0,0,0,114,87,1,0,0,114,88,1, + 0,0,114,91,1,0,0,114,226,0,0,0,114,229,0,0, + 0,114,93,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,77,1,0,0,40, + 5,0,0,115,36,0,0,0,8,0,4,2,2,2,10,1, + 2,9,10,1,2,12,10,1,2,21,10,1,2,20,12,1, + 2,31,12,1,2,23,12,1,2,15,14,1,114,77,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,16,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,4,124,3,124, + 0,95,1,124,1,112,27,100,3,124,0,95,2,116,3,124, + 0,106,2,131,1,115,43,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,24,0,0,0,129, + 0,124,0,93,7,125,1,124,1,136,0,102,2,86,0,1, + 0,113,2,100,0,83,0,114,69,0,0,0,114,7,0,0, + 0,114,43,1,0,0,169,1,114,164,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,9,0,0,0,211,5,0,0, + 115,4,0,0,0,6,128,18,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,97,0,0,0,114,130,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,86,0,0,0,114,67,0,0,0,114,18,0,0, + 0,114,82,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,143,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,7,0,0,0,114,95,1,0,0,114,8, + 0,0,0,114,236,0,0,0,205,5,0,0,115,20,0,0, + 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, + 1,8,1,12,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,130,0,0,0,78,41,1,114,97,1, + 0,0,114,21,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,78,1,0,0,221,5,0,0,114, + 81,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0,0,0, + 116,0,160,1,100,1,116,2,161,2,1,0,124,0,160,3, + 124,1,161,1,125,2,124,2,100,2,117,0,114,19,100,2, + 103,0,102,2,83,0,124,2,106,4,124,2,106,5,112,25, + 103,0,102,2,83,0,41,3,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,122, + 101,70,105,108,101,70,105,110,100,101,114,46,102,105,110,100, + 95,108,111,97,100,101,114,40,41,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,32,97,110,100,32,115,108,97,116, + 101,100,32,102,111,114,32,114,101,109,111,118,97,108,32,105, + 110,32,80,121,116,104,111,110,32,51,46,49,50,59,32,117, + 115,101,32,102,105,110,100,95,115,112,101,99,40,41,32,105, + 110,115,116,101,97,100,78,41,6,114,99,0,0,0,114,100, + 0,0,0,114,101,0,0,0,114,226,0,0,0,114,164,0, + 0,0,114,202,0,0,0,41,3,114,143,0,0,0,114,163, + 0,0,0,114,210,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,161,0,0,0,227,5,0,0, + 115,14,0,0,0,6,7,2,2,4,254,10,3,8,1,8, + 1,16,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,143,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,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,91,1,0,0,242,5,0,0, + 115,8,0,0,0,10,1,8,1,2,1,6,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,120,1, + 0,0,100,1,125,3,124,1,160,0,100,2,161,1,100,3, + 25,0,125,4,122,12,116,1,124,0,106,2,112,17,116,3, + 160,4,161,0,131,1,106,5,125,5,87,0,110,9,4,0, + 116,6,121,187,1,0,1,0,1,0,100,4,125,5,89,0, + 124,5,124,0,106,7,107,3,114,43,124,0,160,8,161,0, + 1,0,124,5,124,0,95,7,116,9,131,0,114,54,124,0, + 106,10,125,6,124,4,160,11,161,0,125,7,110,5,124,0, + 106,12,125,6,124,4,125,7,124,7,124,6,118,0,114,106, + 116,13,124,0,106,2,124,4,131,2,125,8,124,0,106,14, + 68,0,93,29,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,101,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,72,116,17, + 124,8,131,1,125,3,124,0,106,14,68,0,93,54,92,2, + 125,9,125,10,122,10,116,13,124,0,106,2,124,4,124,9, + 23,0,131,2,125,12,87,0,110,10,4,0,116,18,121,186, + 1,0,1,0,1,0,89,0,1,0,100,6,83,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,163,116,15,124,12,131,1, + 114,163,124,0,160,16,124,10,124,1,124,12,100,6,124,2, + 161,5,2,0,1,0,83,0,113,109,124,3,114,184,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,119,0,119,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,97, + 0,0,0,114,44,0,0,0,114,130,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,104,0,0,0,114,75,0, + 0,0,114,65,0,0,0,114,18,0,0,0,114,82,0,0, + 0,114,35,1,0,0,114,76,0,0,0,114,97,1,0,0, + 218,11,95,102,105,108,108,95,99,97,99,104,101,114,21,0, + 0,0,114,100,1,0,0,114,131,0,0,0,114,99,1,0, + 0,114,67,0,0,0,114,96,1,0,0,114,80,0,0,0, + 114,91,1,0,0,114,83,0,0,0,114,111,0,0,0,114, + 159,0,0,0,114,173,0,0,0,114,207,0,0,0,114,202, + 0,0,0,41,14,114,143,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,44,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,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,226,0,0, + 0,247,5,0,0,115,86,0,0,0,4,5,14,1,2,1, + 24,1,12,1,6,1,10,1,8,1,6,1,6,2,6,1, + 10,1,6,2,4,1,8,2,12,1,14,1,8,1,10,1, + 8,1,24,1,2,255,8,5,14,2,2,1,20,1,12,1, + 8,1,16,1,12,1,8,1,10,1,4,1,8,255,2,128, + 4,2,12,1,12,1,8,1,4,1,4,1,2,244,2,228, + 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, + 190,0,0,0,124,0,106,0,125,1,122,11,116,1,160,2, + 124,1,112,11,116,1,160,3,161,0,161,1,125,2,87,0, + 110,12,4,0,116,4,116,5,116,6,102,3,121,94,1,0, + 1,0,1,0,103,0,125,2,89,0,116,7,106,8,160,9, + 100,1,161,1,115,39,116,10,124,2,131,1,124,0,95,11, + 110,37,116,10,131,0,125,3,124,2,68,0,93,28,125,4, + 124,4,160,12,100,2,161,1,92,3,125,5,125,6,125,7, + 124,6,114,65,100,3,160,13,124,5,124,7,160,14,161,0, + 161,2,125,8,110,2,124,5,125,8,124,3,160,15,124,8, + 161,1,1,0,113,44,124,3,124,0,95,11,116,7,106,8, + 160,9,116,16,161,1,114,92,100,4,100,5,132,0,124,2, + 68,0,131,1,124,0,95,17,100,6,83,0,100,6,83,0, + 119,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,14,0,0,0,114, + 97,0,0,0,114,88,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,6,125,1,124, + 1,160,0,161,0,146,2,113,2,83,0,114,7,0,0,0, + 41,1,114,131,0,0,0,41,2,114,5,0,0,0,90,2, + 102,110,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,13,0,0,0,71,6,0,0,115,2,0,0,0,20, + 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,18,0,0,0,90,7,108,105,115,116,100, + 105,114,114,82,0,0,0,114,85,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,15,0,0,0,114,25,0,0,0,114,26,0,0,0, + 114,98,1,0,0,114,99,1,0,0,114,126,0,0,0,114, + 89,0,0,0,114,131,0,0,0,218,3,97,100,100,114,27, + 0,0,0,114,100,1,0,0,41,9,114,143,0,0,0,114, + 65,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, + 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, + 116,101,110,116,115,114,70,1,0,0,114,141,0,0,0,114, + 54,1,0,0,114,44,1,0,0,90,8,110,101,119,95,110, + 97,109,101,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,102,1,0,0,42,6,0,0,115,38,0,0,0, + 6,2,2,1,22,1,18,1,6,3,12,3,12,1,6,7, + 8,1,16,1,4,1,18,1,4,2,12,1,6,1,12,1, + 20,1,4,255,2,233,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,4, + 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,10,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,4,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,78,41,2,114,83,0,0,0,114,142,0,0,0,114,71, + 0,0,0,169,2,114,221,0,0,0,114,101,1,0,0,114, + 7,0,0,0,114,8,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,83,6,0,0,115,6,0,0,0,8,2,12,1, + 16,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,78,114,7,0,0,0, + 41,3,114,221,0,0,0,114,101,1,0,0,114,107,1,0, + 0,114,7,0,0,0,114,106,1,0,0,114,8,0,0,0, + 218,9,112,97,116,104,95,104,111,111,107,73,6,0,0,115, + 4,0,0,0,14,10,4,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,114,67,1,0,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,89,0,0,0,114,65,0,0,0,114,21,1, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,68,1,0,0,91,6,0,0,114,61,1,0,0,122, + 19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,101, + 112,114,95,95,114,69,0,0,0,41,15,114,150,0,0,0, + 114,149,0,0,0,114,151,0,0,0,114,152,0,0,0,114, + 236,0,0,0,114,78,1,0,0,114,167,0,0,0,114,229, + 0,0,0,114,161,0,0,0,114,91,1,0,0,114,226,0, + 0,0,114,102,1,0,0,114,234,0,0,0,114,108,1,0, + 0,114,68,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,94,1,0,0,196, + 5,0,0,115,24,0,0,0,8,0,4,2,8,7,8,16, + 4,4,8,2,8,15,10,5,8,51,2,31,10,1,12,17, + 114,94,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,33,124,5,114,18,124, + 5,106,1,125,4,110,15,124,2,124,3,107,2,114,28,116, + 2,124,1,124,2,131,2,125,4,110,5,116,3,124,1,124, + 2,131,2,125,4,124,5,115,42,116,4,124,1,124,2,124, + 4,100,3,141,3,125,5,122,19,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,100,0,83,0,4, + 0,116,5,121,71,1,0,1,0,1,0,89,0,100,0,83, + 0,119,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,95,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,41,1,0,0,114,34,1,0,0,114,213,0, + 0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,90, + 2,110,115,114,141,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,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,14,95,102,105,120,95,117,112,95, + 109,111,100,117,108,101,97,6,0,0,115,36,0,0,0,10, + 2,10,1,4,1,4,1,8,1,8,1,12,1,10,2,4, + 1,14,1,2,1,8,1,8,1,8,1,14,1,12,1,6, + 2,2,254,114,113,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,102,2,125,1,116,5,116,6,102,2, + 125,2,124,0,124,1,124,2,103,3,83,0,41,2,122,95, + 82,101,116,117,114,110,115,32,97,32,108,105,115,116,32,111, + 102,32,102,105,108,101,45,98,97,115,101,100,32,109,111,100, + 117,108,101,32,108,111,97,100,101,114,115,46,10,10,32,32, + 32,32,69,97,99,104,32,105,116,101,109,32,105,115,32,97, + 32,116,117,112,108,101,32,40,108,111,97,100,101,114,44,32, + 115,117,102,102,105,120,101,115,41,46,10,32,32,32,32,78, + 41,7,114,30,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,34,1,0,0,114,127,0,0,0,114,41,1,0,0,114, + 113,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,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,208,0,0,0,120,6,0,0,115,8,0,0, + 0,12,5,8,1,8,1,10,1,114,208,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1, + 0,0,0,67,0,0,0,115,8,0,0,0,124,0,97,0, + 100,0,83,0,114,69,0,0,0,41,1,114,159,0,0,0, + 41,1,218,17,95,98,111,111,116,115,116,114,97,112,95,109, + 111,100,117,108,101,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,21,95,115,101,116,95,98,111,111,116,115, + 116,114,97,112,95,109,111,100,117,108,101,131,6,0,0,115, + 2,0,0,0,8,2,114,116,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,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,116,1,0,0, + 114,208,0,0,0,114,15,0,0,0,114,83,1,0,0,114, + 191,0,0,0,114,94,1,0,0,114,108,1,0,0,218,9, + 109,101,116,97,95,112,97,116,104,114,61,0,0,0,114,77, + 1,0,0,41,2,114,115,1,0,0,90,17,115,117,112,112, + 111,114,116,101,100,95,108,111,97,100,101,114,115,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,105, + 110,115,116,97,108,108,136,6,0,0,115,8,0,0,0,8, + 2,6,1,20,1,16,1,114,118,1,0,0,41,1,114,87, + 0,0,0,114,69,0,0,0,41,3,78,78,78,41,2,114, + 0,0,0,0,114,0,0,0,0,41,1,84,41,85,114,152, + 0,0,0,114,159,0,0,0,114,187,0,0,0,114,91,0, + 0,0,114,15,0,0,0,114,99,0,0,0,114,184,0,0, + 0,114,25,0,0,0,114,231,0,0,0,90,2,110,116,114, + 18,0,0,0,114,215,0,0,0,90,5,112,111,115,105,120, + 114,50,0,0,0,218,3,97,108,108,114,59,0,0,0,114, + 136,0,0,0,114,57,0,0,0,114,62,0,0,0,90,20, + 95,112,97,116,104,115,101,112,115,95,119,105,116,104,95,99, + 111,108,111,110,114,28,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,27,0,0,0,114,29,0,0,0,114,21,0,0,0,114, + 36,0,0,0,114,42,0,0,0,114,45,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,83,0,0,0,114,86,0,0, + 0,114,95,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,34,0,0,0, + 114,172,0,0,0,114,33,0,0,0,114,39,0,0,0,114, + 8,1,0,0,114,116,0,0,0,114,112,0,0,0,114,127, + 0,0,0,114,61,0,0,0,114,114,1,0,0,114,232,0, + 0,0,114,113,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,121,0, + 0,0,114,128,0,0,0,114,135,0,0,0,114,137,0,0, + 0,114,139,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,235,0,0,0,114, + 249,0,0,0,114,11,1,0,0,114,34,1,0,0,114,41, + 1,0,0,114,30,1,0,0,114,47,1,0,0,114,73,1, + 0,0,114,77,1,0,0,114,94,1,0,0,114,113,1,0, + 0,114,208,0,0,0,114,116,1,0,0,114,118,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,180,0,0,0,4,0,4,22,8,3,8,1,8, + 1,8,1,8,1,10,3,4,1,8,1,10,1,8,2,4, + 3,10,1,6,2,22,2,8,1,8,1,10,1,14,1,4, + 4,4,1,2,1,2,1,4,255,8,4,6,16,8,3,8, + 5,8,5,4,6,10,1,8,30,8,6,8,8,8,10,8, + 9,8,5,4,7,10,1,8,8,10,5,10,22,0,127,16, + 30,12,1,4,2,4,1,6,2,4,1,10,1,8,2,6, + 2,8,2,16,2,8,71,8,40,8,19,8,12,8,12,8, + 31,8,20,8,33,8,28,10,24,10,13,10,10,8,11,6, + 14,4,3,2,1,12,255,14,73,14,67,16,30,0,127,14, + 17,18,50,18,45,18,25,14,53,14,63,14,49,0,127,14, + 29,0,127,10,30,8,23,8,11,12,5, }; From webhook-mailer at python.org Thu Jun 3 15:59:37 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 19:59:37 -0000 Subject: [Python-checkins] bpo-42862: Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module (GH-24203) Message-ID: https://github.com/python/cpython/commit/f461a7fc3f8740b9e79e8874175115a3474e5930 commit: f461a7fc3f8740b9e79e8874175115a3474e5930 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-03T20:59:26+01:00 summary: bpo-42862: Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module (GH-24203) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Library/2021-01-13-00-02-44.bpo-42862.Z6ACLN.rst D Modules/_sqlite/cache.c D Modules/_sqlite/cache.h M Doc/library/sqlite3.rst M Modules/_sqlite/connection.c M Modules/_sqlite/connection.h M Modules/_sqlite/cursor.c M Modules/_sqlite/module.c M Modules/_sqlite/module.h M PCbuild/_sqlite3.vcxproj M PCbuild/_sqlite3.vcxproj.filters M setup.py diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index f9e4c8a269027b..4010e1a4daff27 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -213,7 +213,7 @@ Module functions and constants The :mod:`sqlite3` module internally uses a statement cache to avoid SQL parsing overhead. If you want to explicitly set the number of statements that are cached for the connection, you can set the *cached_statements* parameter. The currently - implemented default is to cache 100 statements. + implemented default is to cache 128 statements. If *uri* is true, *database* is interpreted as a URI. This allows you to specify options. For example, to open a database in read-only mode diff --git a/Misc/NEWS.d/next/Library/2021-01-13-00-02-44.bpo-42862.Z6ACLN.rst b/Misc/NEWS.d/next/Library/2021-01-13-00-02-44.bpo-42862.Z6ACLN.rst new file mode 100644 index 00000000000000..beda25fd335b08 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-01-13-00-02-44.bpo-42862.Z6ACLN.rst @@ -0,0 +1,4 @@ +:mod:`sqlite3` now utilizes :meth:`functools.lru_cache` to implement the +connection statement cache. As a small optimisation, the default +statement cache size has been increased from 100 to 128. +Patch by Erlend E. Aasland. diff --git a/Modules/_sqlite/cache.c b/Modules/_sqlite/cache.c deleted file mode 100644 index 8196e3c5783727..00000000000000 --- a/Modules/_sqlite/cache.c +++ /dev/null @@ -1,344 +0,0 @@ -/* cache .c - a LRU cache - * - * Copyright (C) 2004-2010 Gerhard H?ring - * - * This file is part of pysqlite. - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#include "cache.h" -#include - -/* only used internally */ -static pysqlite_Node * -pysqlite_new_node(PyObject *key, PyObject *data) -{ - pysqlite_Node* node; - - node = (pysqlite_Node*) (pysqlite_NodeType->tp_alloc(pysqlite_NodeType, 0)); - if (!node) { - return NULL; - } - - node->key = Py_NewRef(key); - node->data = Py_NewRef(data); - - node->prev = NULL; - node->next = NULL; - - return node; -} - -static int -node_traverse(pysqlite_Node *self, visitproc visit, void *arg) -{ - Py_VISIT(Py_TYPE(self)); - Py_VISIT(self->key); - Py_VISIT(self->data); - return 0; -} - -static int -node_clear(pysqlite_Node *self) -{ - Py_CLEAR(self->key); - Py_CLEAR(self->data); - return 0; -} - -static void -pysqlite_node_dealloc(pysqlite_Node *self) -{ - PyTypeObject *tp = Py_TYPE(self); - PyObject_GC_UnTrack(self); - tp->tp_clear((PyObject *)self); - tp->tp_free(self); - Py_DECREF(tp); -} - -static int -pysqlite_cache_init(pysqlite_Cache *self, PyObject *args, PyObject *kwargs) -{ - PyObject* factory; - int size = 10; - - self->factory = NULL; - - if (!PyArg_ParseTuple(args, "O|i", &factory, &size)) { - return -1; - } - - /* minimum cache size is 5 entries */ - if (size < 5) { - size = 5; - } - self->size = size; - self->first = NULL; - self->last = NULL; - - self->mapping = PyDict_New(); - if (!self->mapping) { - return -1; - } - - self->factory = Py_NewRef(factory); - return 0; -} - -static int -cache_traverse(pysqlite_Cache *self, visitproc visit, void *arg) -{ - Py_VISIT(Py_TYPE(self)); - Py_VISIT(self->mapping); - Py_VISIT(self->factory); - - pysqlite_Node *node = self->first; - while (node) { - Py_VISIT(node); - node = node->next; - } - return 0; -} - -static int -cache_clear(pysqlite_Cache *self) -{ - Py_CLEAR(self->mapping); - Py_CLEAR(self->factory); - - /* iterate over all nodes and deallocate them */ - pysqlite_Node *node = self->first; - self->first = NULL; - while (node) { - pysqlite_Node *delete_node = node; - node = node->next; - Py_CLEAR(delete_node); - } - return 0; -} - -static void -pysqlite_cache_dealloc(pysqlite_Cache *self) -{ - if (!self->factory) { - /* constructor failed, just get out of here */ - return; - } - - PyObject_GC_UnTrack(self); - PyTypeObject *tp = Py_TYPE(self); - tp->tp_clear((PyObject *)self); - tp->tp_free(self); - Py_DECREF(tp); -} - -PyObject* pysqlite_cache_get(pysqlite_Cache* self, PyObject* key) -{ - pysqlite_Node* node; - pysqlite_Node* ptr; - PyObject* data; - - node = (pysqlite_Node*)PyDict_GetItemWithError(self->mapping, key); - if (node) { - /* an entry for this key already exists in the cache */ - - /* increase usage counter of the node found */ - if (node->count < LONG_MAX) { - node->count++; - } - - /* if necessary, reorder entries in the cache by swapping positions */ - if (node->prev && node->count > node->prev->count) { - ptr = node->prev; - - while (ptr->prev && node->count > ptr->prev->count) { - ptr = ptr->prev; - } - - if (node->next) { - node->next->prev = node->prev; - } else { - self->last = node->prev; - } - if (node->prev) { - node->prev->next = node->next; - } - if (ptr->prev) { - ptr->prev->next = node; - } else { - self->first = node; - } - - node->next = ptr; - node->prev = ptr->prev; - if (!node->prev) { - self->first = node; - } - ptr->prev = node; - } - } - else if (PyErr_Occurred()) { - return NULL; - } - else { - /* There is no entry for this key in the cache, yet. We'll insert a new - * entry in the cache, and make space if necessary by throwing the - * least used item out of the cache. */ - - if (PyDict_GET_SIZE(self->mapping) == self->size) { - if (self->last) { - node = self->last; - - if (PyDict_DelItem(self->mapping, self->last->key) != 0) { - return NULL; - } - - if (node->prev) { - node->prev->next = NULL; - } - self->last = node->prev; - node->prev = NULL; - - Py_DECREF(node); - } - } - - /* We cannot replace this by PyObject_CallOneArg() since - * PyObject_CallFunction() has a special case when using a - * single tuple as argument. */ - data = PyObject_CallFunction(self->factory, "O", key); - - if (!data) { - return NULL; - } - - node = pysqlite_new_node(key, data); - if (!node) { - return NULL; - } - node->prev = self->last; - - Py_DECREF(data); - - if (PyDict_SetItem(self->mapping, key, (PyObject*)node) != 0) { - Py_DECREF(node); - return NULL; - } - - if (self->last) { - self->last->next = node; - } else { - self->first = node; - } - self->last = node; - } - - return Py_NewRef(node->data); -} - -static PyObject * -pysqlite_cache_display(pysqlite_Cache *self, PyObject *args) -{ - pysqlite_Node* ptr; - PyObject* prevkey; - PyObject* nextkey; - PyObject* display_str; - - ptr = self->first; - - while (ptr) { - if (ptr->prev) { - prevkey = ptr->prev->key; - } else { - prevkey = Py_None; - } - - if (ptr->next) { - nextkey = ptr->next->key; - } else { - nextkey = Py_None; - } - - display_str = PyUnicode_FromFormat("%S <- %S -> %S\n", - prevkey, ptr->key, nextkey); - if (!display_str) { - return NULL; - } - PyObject_Print(display_str, stdout, Py_PRINT_RAW); - Py_DECREF(display_str); - - ptr = ptr->next; - } - - Py_RETURN_NONE; -} - -static PyType_Slot node_slots[] = { - {Py_tp_dealloc, pysqlite_node_dealloc}, - {Py_tp_traverse, node_traverse}, - {Py_tp_clear, node_clear}, - {0, NULL}, -}; - -static PyType_Spec node_spec = { - .name = MODULE_NAME ".Node", - .basicsize = sizeof(pysqlite_Node), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, - .slots = node_slots, -}; -PyTypeObject *pysqlite_NodeType = NULL; - -static PyMethodDef cache_methods[] = { - {"get", (PyCFunction)pysqlite_cache_get, METH_O, - PyDoc_STR("Gets an entry from the cache or calls the factory function to produce one.")}, - {"display", (PyCFunction)pysqlite_cache_display, METH_NOARGS, - PyDoc_STR("For debugging only.")}, - {NULL, NULL} -}; - -static PyType_Slot cache_slots[] = { - {Py_tp_dealloc, pysqlite_cache_dealloc}, - {Py_tp_methods, cache_methods}, - {Py_tp_init, pysqlite_cache_init}, - {Py_tp_traverse, cache_traverse}, - {Py_tp_clear, cache_clear}, - {0, NULL}, -}; - -static PyType_Spec cache_spec = { - .name = MODULE_NAME ".Cache", - .basicsize = sizeof(pysqlite_Cache), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, - .slots = cache_slots, -}; -PyTypeObject *pysqlite_CacheType = NULL; - -int -pysqlite_cache_setup_types(PyObject *mod) -{ - pysqlite_NodeType = (PyTypeObject *)PyType_FromModuleAndSpec(mod, &node_spec, NULL); - if (pysqlite_NodeType == NULL) { - return -1; - } - - pysqlite_CacheType = (PyTypeObject *)PyType_FromModuleAndSpec(mod, &cache_spec, NULL); - if (pysqlite_CacheType == NULL) { - return -1; - } - return 0; -} diff --git a/Modules/_sqlite/cache.h b/Modules/_sqlite/cache.h deleted file mode 100644 index 209c80dcd54ad4..00000000000000 --- a/Modules/_sqlite/cache.h +++ /dev/null @@ -1,64 +0,0 @@ -/* cache.h - definitions for the LRU cache - * - * Copyright (C) 2004-2010 Gerhard H?ring - * - * This file is part of pysqlite. - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#ifndef PYSQLITE_CACHE_H -#define PYSQLITE_CACHE_H -#include "module.h" - -/* The LRU cache is implemented as a combination of a doubly-linked with a - * dictionary. The list items are of type 'Node' and the dictionary has the - * nodes as values. */ - -typedef struct _pysqlite_Node -{ - PyObject_HEAD - PyObject* key; - PyObject* data; - long count; - struct _pysqlite_Node* prev; - struct _pysqlite_Node* next; -} pysqlite_Node; - -typedef struct -{ - PyObject_HEAD - int size; - - /* a dictionary mapping keys to Node entries */ - PyObject* mapping; - - /* the factory callable */ - PyObject* factory; - - pysqlite_Node* first; - pysqlite_Node* last; -} pysqlite_Cache; - -extern PyTypeObject *pysqlite_NodeType; -extern PyTypeObject *pysqlite_CacheType; - -PyObject* pysqlite_cache_get(pysqlite_Cache* self, PyObject* args); - -int pysqlite_cache_setup_types(PyObject *module); - -#endif diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index c1a5677d490ef5..c43f74ceace303 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -21,7 +21,6 @@ * 3. This notice may not be removed or altered from any source distribution. */ -#include "cache.h" #include "module.h" #include "structmember.h" // PyMemberDef #include "connection.h" @@ -57,6 +56,26 @@ static const char * const begin_statements[] = { static int pysqlite_connection_set_isolation_level(pysqlite_Connection* self, PyObject* isolation_level, void *Py_UNUSED(ignored)); static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self); +static PyObject * +new_statement_cache(pysqlite_Connection *self, int maxsize) +{ + PyObject *args[] = { PyLong_FromLong(maxsize), }; + if (args[0] == NULL) { + return NULL; + } + pysqlite_state *state = pysqlite_get_state(NULL); + PyObject *inner = PyObject_Vectorcall(state->lru_cache, args, 1, NULL); + Py_DECREF(args[0]); + if (inner == NULL) { + return NULL; + } + + args[0] = (PyObject *)self; // Borrowed ref. + PyObject *res = PyObject_Vectorcall(inner, args, 1, NULL); + Py_DECREF(inner); + return res; +} + static int pysqlite_connection_init(pysqlite_Connection *self, PyObject *args, PyObject *kwargs) @@ -73,7 +92,7 @@ pysqlite_connection_init(pysqlite_Connection *self, PyObject *args, PyObject* isolation_level = NULL; PyObject* factory = NULL; int check_same_thread = 1; - int cached_statements = 100; + int cached_statements = 128; int uri = 0; double timeout = 5.0; int rc; @@ -134,7 +153,10 @@ pysqlite_connection_init(pysqlite_Connection *self, PyObject *args, } Py_DECREF(isolation_level); - self->statement_cache = (pysqlite_Cache*)PyObject_CallFunction((PyObject*)pysqlite_CacheType, "Oi", self, cached_statements); + self->statement_cache = new_statement_cache(self, cached_statements); + if (self->statement_cache == NULL) { + return -1; + } if (PyErr_Occurred()) { return -1; } diff --git a/Modules/_sqlite/connection.h b/Modules/_sqlite/connection.h index 8773c9eac08861..f2be4f1a955ace 100644 --- a/Modules/_sqlite/connection.h +++ b/Modules/_sqlite/connection.h @@ -28,7 +28,6 @@ #include "pythread.h" #include "structmember.h" -#include "cache.h" #include "module.h" #include "sqlite3.h" @@ -64,7 +63,7 @@ typedef struct /* thread identification of the thread the connection was created in */ unsigned long thread_ident; - pysqlite_Cache* statement_cache; + PyObject *statement_cache; /* Lists of weak references to statements and cursors used within this connection */ PyObject* statements; diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 757c389c6a44ba..8073f3bbb78c78 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -415,6 +415,14 @@ static int check_cursor(pysqlite_Cursor* cur) return pysqlite_check_thread(cur->connection) && pysqlite_check_connection(cur->connection); } +static PyObject * +get_statement_from_cache(pysqlite_Cursor *self, PyObject *operation) +{ + PyObject *args[] = { operation, }; + PyObject *cache = self->connection->statement_cache; + return PyObject_Vectorcall(cache, args, 1, NULL); +} + static PyObject * _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation, PyObject* second_argument) { @@ -423,7 +431,6 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation PyObject* parameters = NULL; int i; int rc; - PyObject* func_args; PyObject* result; int numcols; PyObject* column_name; @@ -485,22 +492,12 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation Py_SETREF(self->description, Py_None); self->rowcount = 0L; - func_args = PyTuple_New(1); - if (!func_args) { - goto error; - } - if (PyTuple_SetItem(func_args, 0, Py_NewRef(operation)) != 0) { - goto error; - } - if (self->statement) { (void)pysqlite_statement_reset(self->statement); } - Py_XSETREF(self->statement, - (pysqlite_Statement *)pysqlite_cache_get(self->connection->statement_cache, func_args)); - Py_DECREF(func_args); - + PyObject *stmt = get_statement_from_cache(self, operation); + Py_XSETREF(self->statement, (pysqlite_Statement *)stmt); if (!self->statement) { goto error; } diff --git a/Modules/_sqlite/module.c b/Modules/_sqlite/module.c index a5e5525481f756..c60007e2059536 100644 --- a/Modules/_sqlite/module.c +++ b/Modules/_sqlite/module.c @@ -24,7 +24,6 @@ #include "connection.h" #include "statement.h" #include "cursor.h" -#include "cache.h" #include "prepare_protocol.h" #include "microprotocols.h" #include "row.h" @@ -56,6 +55,14 @@ PyObject* _pysqlite_converters = NULL; int _pysqlite_enable_callback_tracebacks = 0; int pysqlite_BaseTypeAdapted = 0; +pysqlite_state pysqlite_global_state; + +pysqlite_state * +pysqlite_get_state(PyObject *Py_UNUSED(module)) +{ + return &pysqlite_global_state; +} + static PyObject* module_connect(PyObject* self, PyObject* args, PyObject* kwargs) { @@ -261,6 +268,23 @@ static int converters_init(PyObject* module) return res; } +static int +load_functools_lru_cache(PyObject *module) +{ + PyObject *functools = PyImport_ImportModule("functools"); + if (functools == NULL) { + return -1; + } + + pysqlite_state *state = pysqlite_get_state(module); + state->lru_cache = PyObject_GetAttrString(functools, "lru_cache"); + Py_DECREF(functools); + if (state->lru_cache == NULL) { + return -1; + } + return 0; +} + static PyMethodDef module_methods[] = { {"connect", (PyCFunction)(void(*)(void))module_connect, METH_VARARGS | METH_KEYWORDS, module_connect_doc}, @@ -373,7 +397,6 @@ PyMODINIT_FUNC PyInit__sqlite3(void) (pysqlite_row_setup_types(module) < 0) || (pysqlite_cursor_setup_types(module) < 0) || (pysqlite_connection_setup_types(module) < 0) || - (pysqlite_cache_setup_types(module) < 0) || (pysqlite_statement_setup_types(module) < 0) || (pysqlite_prepare_protocol_setup_types(module) < 0) ) { @@ -424,6 +447,10 @@ PyMODINIT_FUNC PyInit__sqlite3(void) goto error; } + if (load_functools_lru_cache(module) < 0) { + goto error; + } + return module; error: diff --git a/Modules/_sqlite/module.h b/Modules/_sqlite/module.h index 9aede92ea33c9e..a40e86e9c4da72 100644 --- a/Modules/_sqlite/module.h +++ b/Modules/_sqlite/module.h @@ -29,6 +29,12 @@ #define PYSQLITE_VERSION "2.6.0" #define MODULE_NAME "sqlite3" +typedef struct { + PyObject *lru_cache; +} pysqlite_state; + +extern pysqlite_state *pysqlite_get_state(PyObject *module); + extern PyObject* pysqlite_Error; extern PyObject* pysqlite_Warning; extern PyObject* pysqlite_InterfaceError; diff --git a/PCbuild/_sqlite3.vcxproj b/PCbuild/_sqlite3.vcxproj index 5eb8559d2925ec..e268c473f4c985 100644 --- a/PCbuild/_sqlite3.vcxproj +++ b/PCbuild/_sqlite3.vcxproj @@ -97,7 +97,6 @@ - @@ -108,7 +107,6 @@ - diff --git a/PCbuild/_sqlite3.vcxproj.filters b/PCbuild/_sqlite3.vcxproj.filters index 51830f6a4451a4..79fc17b53fb508 100644 --- a/PCbuild/_sqlite3.vcxproj.filters +++ b/PCbuild/_sqlite3.vcxproj.filters @@ -12,9 +12,6 @@ - - Header Files - Header Files @@ -41,9 +38,6 @@ - - Source Files - Source Files diff --git a/setup.py b/setup.py index 3857e6887a929f..ce71a966a81941 100644 --- a/setup.py +++ b/setup.py @@ -1578,7 +1578,7 @@ def detect_sqlite(self): sqlite_libdir = [os.path.abspath(os.path.dirname(sqlite_libfile))] if sqlite_incdir and sqlite_libdir: - sqlite_srcs = ['_sqlite/cache.c', + sqlite_srcs = [ '_sqlite/connection.c', '_sqlite/cursor.c', '_sqlite/microprotocols.c', From webhook-mailer at python.org Thu Jun 3 16:01:11 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 20:01:11 -0000 Subject: [Python-checkins] bpo-11105: Do not crash when compiling recursive ASTs (GH-20594) Message-ID: https://github.com/python/cpython/commit/f3491242e41933aa9529add7102edb68b80a25e9 commit: f3491242e41933aa9529add7102edb68b80a25e9 branch: main author: Batuhan Taskaya committer: pablogsal date: 2021-06-03T21:01:02+01:00 summary: bpo-11105: Do not crash when compiling recursive ASTs (GH-20594) When compiling an AST object with a direct / indirect reference cycles, on the conversion phase because of exceeding amount of calls, a segfault was raised. This patch adds recursion guards to places for preventing user inputs to not to crash AST but instead raise a RecursionError. files: A Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst M Lib/test/test_ast.py M Parser/asdl_c.py M Python/Python-ast.c diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 249e4bf6b3c6b..6a6f06c835037 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -1098,6 +1098,20 @@ def test_level_as_none(self): exec(code, ns) self.assertIn('sleep', ns) + def test_recursion_direct(self): + e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + e.operand = e + with self.assertRaises(RecursionError): + compile(ast.Expression(e), "", "eval") + + def test_recursion_indirect(self): + e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + f = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + e.operand = f + f.operand = e + with self.assertRaises(RecursionError): + compile(ast.Expression(e), "", "eval") + class ASTValidatorTests(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst b/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst new file mode 100644 index 0000000000000..8891936cd8871 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst @@ -0,0 +1,3 @@ +When compiling :class:`ast.AST` objects with recursive references +through :func:`compile`, the interpreter doesn't crash anymore instead +it raises a :exc:`RecursionError`. diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index b71565c53fc01..4e5c5c8f7f709 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -6,6 +6,7 @@ import textwrap from argparse import ArgumentParser +from contextlib import contextmanager from pathlib import Path import asdl @@ -421,6 +422,14 @@ def visitProduct(self, prod, name): class Obj2ModVisitor(PickleVisitor): + @contextmanager + def recursive_call(self, node, level): + self.emit('if (Py_EnterRecursiveCall(" while traversing \'%s\' node")) {' % node, level, reflow=False) + self.emit('goto failed;', level + 1) + self.emit('}', level) + yield + self.emit('Py_LeaveRecursiveCall();', level) + def funcHeader(self, name): ctype = get_c_type(name) self.emit("int", 0) @@ -596,8 +605,9 @@ def visitField(self, field, name, sum=None, prod=None, depth=0): self.emit("%s val;" % ctype, depth+2) self.emit("PyObject *tmp2 = PyList_GET_ITEM(tmp, i);", depth+2) self.emit("Py_INCREF(tmp2);", depth+2) - self.emit("res = obj2ast_%s(state, tmp2, &val, arena);" % - field.type, depth+2, reflow=False) + with self.recursive_call(name, depth+2): + self.emit("res = obj2ast_%s(state, tmp2, &val, arena);" % + field.type, depth+2, reflow=False) self.emit("Py_DECREF(tmp2);", depth+2) self.emit("if (res != 0) goto failed;", depth+2) self.emit("if (len != PyList_GET_SIZE(tmp)) {", depth+2) @@ -610,8 +620,9 @@ def visitField(self, field, name, sum=None, prod=None, depth=0): self.emit("asdl_seq_SET(%s, i, val);" % field.name, depth+2) self.emit("}", depth+1) else: - self.emit("res = obj2ast_%s(state, tmp, &%s, arena);" % - (field.type, field.name), depth+1) + with self.recursive_call(name, depth+1): + self.emit("res = obj2ast_%s(state, tmp, &%s, arena);" % + (field.type, field.name), depth+1) self.emit("if (res != 0) goto failed;", depth+1) self.emit("Py_CLEAR(tmp);", depth+1) diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 5d7a0aed9beff..ce6e6a93ea70f 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -5373,7 +5373,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Module' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5406,7 +5410,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) type_ignore_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Module' node")) { + goto failed; + } res = obj2ast_type_ignore(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5451,7 +5459,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Interactive' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5483,7 +5495,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Expression' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5522,7 +5538,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5542,7 +5562,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5583,7 +5607,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5596,7 +5624,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5609,7 +5641,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5622,7 +5658,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5648,7 +5688,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5661,7 +5705,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5687,7 +5735,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5720,7 +5772,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5740,7 +5796,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5753,7 +5813,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5785,7 +5849,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5798,7 +5866,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5824,7 +5896,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5857,7 +5933,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5877,7 +5957,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5890,7 +5974,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5922,7 +6010,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5948,7 +6040,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5981,7 +6077,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* keyword_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_keyword(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6014,7 +6114,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6047,7 +6151,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6081,7 +6189,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Return' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6120,7 +6232,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Delete' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6168,7 +6284,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6188,7 +6308,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6201,7 +6325,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6229,7 +6357,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6242,7 +6374,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_operator(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6255,7 +6391,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6284,7 +6424,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6297,7 +6441,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &annotation, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6310,7 +6458,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6323,7 +6475,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &simple, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6353,7 +6509,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6366,7 +6526,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6392,7 +6556,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6425,7 +6593,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6445,7 +6617,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6475,7 +6651,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6488,7 +6668,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6514,7 +6698,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6547,7 +6735,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6567,7 +6759,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6596,7 +6792,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6622,7 +6822,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6655,7 +6859,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6690,7 +6898,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6716,7 +6928,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6749,7 +6965,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6797,7 +7017,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* withitem_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_withitem(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6830,7 +7054,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6850,7 +7078,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6891,7 +7123,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* withitem_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_withitem(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6924,7 +7160,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6944,7 +7184,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6971,7 +7215,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Match' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &subject, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6997,7 +7245,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* match_case_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Match' node")) { + goto failed; + } res = obj2ast_match_case(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7031,7 +7283,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Raise' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &exc, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7044,7 +7300,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Raise' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &cause, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7086,7 +7346,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7119,7 +7383,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* excepthandler_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_excepthandler(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7152,7 +7420,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7185,7 +7457,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7219,7 +7495,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assert' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7232,7 +7512,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assert' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &msg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7271,7 +7555,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* alias_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Import' node")) { + goto failed; + } res = obj2ast_alias(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7306,7 +7594,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &module, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7332,7 +7624,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* alias_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_alias(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7352,7 +7648,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &level, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7391,7 +7691,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* identifier val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Global' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7437,7 +7741,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* identifier val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Nonlocal' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7470,7 +7778,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Expr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7548,7 +7860,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7561,7 +7877,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7574,7 +7894,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7587,7 +7911,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7609,7 +7937,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) { + goto failed; + } res = obj2ast_boolop(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7635,7 +7967,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7669,7 +8005,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'NamedExpr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7682,7 +8022,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'NamedExpr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7710,7 +8054,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &left, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7723,7 +8071,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_operator(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7736,7 +8088,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &right, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7763,7 +8119,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'UnaryOp' node")) { + goto failed; + } res = obj2ast_unaryop(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7776,7 +8136,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'UnaryOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &operand, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7803,7 +8167,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Lambda' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7816,7 +8184,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Lambda' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7844,7 +8216,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7857,7 +8233,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7870,7 +8250,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &orelse, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7910,7 +8294,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Dict' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7943,7 +8331,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Dict' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7989,7 +8381,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Set' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8023,7 +8419,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ListComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8049,7 +8449,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ListComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8083,7 +8487,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'SetComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8109,7 +8517,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'SetComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8144,7 +8556,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &key, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8157,7 +8573,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8183,7 +8603,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8217,7 +8641,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8243,7 +8671,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8276,7 +8708,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Await' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8302,7 +8738,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Yield' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8328,7 +8768,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'YieldFrom' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8356,7 +8800,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &left, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8382,7 +8830,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* cmpop_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_cmpop(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8415,7 +8867,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8450,7 +8906,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &func, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8476,7 +8936,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8509,7 +8973,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* keyword_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_keyword(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8544,7 +9012,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8557,7 +9029,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &conversion, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8570,7 +9046,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &format_spec, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8610,7 +9090,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'JoinedStr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8644,7 +9128,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Constant' node")) { + goto failed; + } res = obj2ast_constant(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8657,7 +9145,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Constant' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &kind, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8685,7 +9177,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8698,7 +9194,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &attr, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8711,7 +9211,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8739,7 +9243,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8752,7 +9260,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &slice, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8765,7 +9277,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8792,7 +9308,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Starred' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8805,7 +9325,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Starred' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8832,7 +9356,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Name' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &id, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8845,7 +9373,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Name' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8885,7 +9417,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'List' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8905,7 +9441,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'List' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8945,7 +9485,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Tuple' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8965,7 +9509,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Tuple' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8993,7 +9541,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &lower, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9006,7 +9558,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &upper, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9019,7 +9575,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &step, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9365,7 +9925,11 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9378,7 +9942,11 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9404,7 +9972,11 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9424,7 +9996,11 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &is_async, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9461,7 +10037,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9474,7 +10054,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9487,7 +10071,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9500,7 +10088,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9523,7 +10115,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &type, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9536,7 +10132,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9562,7 +10162,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9620,7 +10224,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9653,7 +10261,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9673,7 +10285,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp, &vararg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9699,7 +10315,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9732,7 +10352,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9752,7 +10376,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp, &kwarg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9778,7 +10406,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9818,7 +10450,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &arg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9831,7 +10467,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &annotation, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9844,7 +10484,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9857,7 +10501,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9870,7 +10518,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9883,7 +10535,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9896,7 +10552,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9929,7 +10589,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &arg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9942,7 +10606,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9955,7 +10623,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9968,7 +10640,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9981,7 +10657,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9994,7 +10674,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10027,7 +10711,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10040,7 +10728,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &asname, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10053,7 +10745,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10066,7 +10762,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10079,7 +10779,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10092,7 +10796,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10121,7 +10829,11 @@ obj2ast_withitem(struct ast_state *state, PyObject* obj, withitem_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'withitem' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &context_expr, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10134,7 +10846,11 @@ obj2ast_withitem(struct ast_state *state, PyObject* obj, withitem_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'withitem' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &optional_vars, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10163,7 +10879,11 @@ obj2ast_match_case(struct ast_state *state, PyObject* obj, match_case_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'match_case' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp, &pattern, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10176,7 +10896,11 @@ obj2ast_match_case(struct ast_state *state, PyObject* obj, match_case_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'match_case' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &guard, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10202,7 +10926,11 @@ obj2ast_match_case(struct ast_state *state, PyObject* obj, match_case_ty* out, stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'match_case' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10246,7 +10974,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'pattern' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10259,7 +10991,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'pattern' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10272,7 +11008,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'pattern' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10285,7 +11025,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'pattern' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10306,7 +11050,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchValue' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10332,7 +11080,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchSingleton' node")) { + goto failed; + } res = obj2ast_constant(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10371,7 +11123,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchSequence' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10419,7 +11175,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10452,7 +11212,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10472,7 +11236,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &rest, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10501,7 +11269,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &cls, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10527,7 +11299,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10560,7 +11336,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, identifier val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10593,7 +11373,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10627,7 +11411,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchStar' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10654,7 +11442,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchAs' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp, &pattern, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10667,7 +11459,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchAs' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10706,7 +11502,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchOr' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10760,7 +11560,11 @@ obj2ast_type_ignore(struct ast_state *state, PyObject* obj, type_ignore_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'TypeIgnore' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10773,7 +11577,11 @@ obj2ast_type_ignore(struct ast_state *state, PyObject* obj, type_ignore_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'TypeIgnore' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &tag, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } From webhook-mailer at python.org Thu Jun 3 16:12:41 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Jun 2021 20:12:41 -0000 Subject: [Python-checkins] bpo-43921: Cleanup test_ssl.test_wrong_cert_tls13() (GH-26520) Message-ID: https://github.com/python/cpython/commit/5c2191df9a21a3b3d49dd0711b8d2b92591ce82b commit: 5c2191df9a21a3b3d49dd0711b8d2b92591ce82b branch: main author: Victor Stinner committer: vstinner date: 2021-06-03T22:12:31+02:00 summary: bpo-43921: Cleanup test_ssl.test_wrong_cert_tls13() (GH-26520) Don't catch OSError, and check the SSLError message. files: M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 85ad8ae827a80..fdf5f19d8d4c5 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -3192,23 +3192,16 @@ def test_wrong_cert_tls13(self): client_context.wrap_socket(socket.socket(), server_hostname=hostname, suppress_ragged_eofs=False) as s: - # TLS 1.3 perform client cert exchange after handshake s.connect((HOST, server.port)) - try: + with self.assertRaisesRegex( + ssl.SSLError, + 'alert unknown ca|EOF occurred' + ): + # TLS 1.3 perform client cert exchange after handshake s.write(b'data') s.read(1000) s.write(b'should have failed already') s.read(1000) - except ssl.SSLError as e: - if support.verbose: - sys.stdout.write("\nSSLError is %r\n" % e) - except OSError as e: - if e.errno != errno.ECONNRESET: - raise - if support.verbose: - sys.stdout.write("\nsocket.error is %r\n" % e) - else: - self.fail("Use of invalid cert should have failed!") def test_rude_shutdown(self): """A brutal shutdown of an SSL server should raise an OSError From webhook-mailer at python.org Thu Jun 3 16:15:23 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Jun 2021 20:15:23 -0000 Subject: [Python-checkins] bpo-43921: Fix test_ssl.test_wrong_cert_tls13() on Windows (GH-26502) (GH-26518) Message-ID: https://github.com/python/cpython/commit/d2ab15f5376aa06ed120164f1b84bb40adbdd068 commit: d2ab15f5376aa06ed120164f1b84bb40adbdd068 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2021-06-03T22:15:15+02:00 summary: bpo-43921: Fix test_ssl.test_wrong_cert_tls13() on Windows (GH-26502) (GH-26518) Fix test_ssl.test_wrong_cert_tls13(): use suppress_ragged_eofs=False, since read() can raise ssl.SSLEOFError on Windows. (cherry picked from commit ea0210fa8ccca769896847f25fc6fadfe9a717bc) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index fbd0131ea4f41..9bd8e2264c152 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -3194,7 +3194,8 @@ def test_wrong_cert_tls13(self): ) with server, \ client_context.wrap_socket(socket.socket(), - server_hostname=hostname) as s: + server_hostname=hostname, + suppress_ragged_eofs=False) as s: # TLS 1.3 perform client cert exchange after handshake s.connect((HOST, server.port)) try: @@ -3211,13 +3212,7 @@ def test_wrong_cert_tls13(self): if support.verbose: sys.stdout.write("\nsocket.error is %r\n" % e) else: - if sys.platform == "win32": - self.skipTest( - "Ignoring failed test_wrong_cert_tls13 test case. " - "The test is flaky on Windows, see bpo-43921." - ) - else: - self.fail("Use of invalid cert should have failed!") + self.fail("Use of invalid cert should have failed!") def test_rude_shutdown(self): """A brutal shutdown of an SSL server should raise an OSError @@ -4454,7 +4449,8 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): server = ThreadedEchoServer(context=server_context, chatty=True) with server: with client_context.wrap_socket(socket.socket(), - server_hostname=hostname) as s: + server_hostname=hostname, + suppress_ragged_eofs=False) as s: s.connect((HOST, server.port)) s.write(b'PHA') # test sometimes fails with EOF error. Test passes as long as @@ -4465,17 +4461,13 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): ): # receive CertificateRequest data = s.recv(1024) - if not data: - raise ssl.SSLError(1, "EOF occurred") self.assertEqual(data, b'OK\n') # send empty Certificate + Finish s.write(b'HASCERT') # receive alert - data = s.recv(1024) - if not data: - raise ssl.SSLError(1, "EOF occurred") + s.recv(1024) def test_pha_optional(self): if support.verbose: diff --git a/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst b/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst new file mode 100644 index 0000000000000..30e0fadd66125 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst @@ -0,0 +1,3 @@ +Fix test_ssl.test_wrong_cert_tls13(): use ``suppress_ragged_eofs=False``, +since ``read()`` can raise :exc:`ssl.SSLEOFError` on Windows. Patch by +Victor Stinner. From webhook-mailer at python.org Thu Jun 3 16:27:10 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Jun 2021 20:27:10 -0000 Subject: [Python-checkins] bpo-11105: Do not crash when compiling recursive ASTs (GH-20594) Message-ID: https://github.com/python/cpython/commit/976598d36bd180024c5f0edf1f7ec0f0b436380f commit: 976598d36bd180024c5f0edf1f7ec0f0b436380f branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-03T13:27:00-07:00 summary: bpo-11105: Do not crash when compiling recursive ASTs (GH-20594) When compiling an AST object with a direct / indirect reference cycles, on the conversion phase because of exceeding amount of calls, a segfault was raised. This patch adds recursion guards to places for preventing user inputs to not to crash AST but instead raise a RecursionError. (cherry picked from commit f3491242e41933aa9529add7102edb68b80a25e9) Co-authored-by: Batuhan Taskaya files: A Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst M Lib/test/test_ast.py M Parser/asdl_c.py M Python/Python-ast.c diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 80d24e94040bcf..e08a965d96f76e 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -1097,6 +1097,20 @@ def test_level_as_none(self): exec(code, ns) self.assertIn('sleep', ns) + def test_recursion_direct(self): + e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + e.operand = e + with self.assertRaises(RecursionError): + compile(ast.Expression(e), "", "eval") + + def test_recursion_indirect(self): + e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + f = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + e.operand = f + f.operand = e + with self.assertRaises(RecursionError): + compile(ast.Expression(e), "", "eval") + class ASTValidatorTests(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst b/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst new file mode 100644 index 00000000000000..8891936cd88716 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst @@ -0,0 +1,3 @@ +When compiling :class:`ast.AST` objects with recursive references +through :func:`compile`, the interpreter doesn't crash anymore instead +it raises a :exc:`RecursionError`. diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index b71565c53fc010..4e5c5c8f7f7093 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -6,6 +6,7 @@ import textwrap from argparse import ArgumentParser +from contextlib import contextmanager from pathlib import Path import asdl @@ -421,6 +422,14 @@ def visitProduct(self, prod, name): class Obj2ModVisitor(PickleVisitor): + @contextmanager + def recursive_call(self, node, level): + self.emit('if (Py_EnterRecursiveCall(" while traversing \'%s\' node")) {' % node, level, reflow=False) + self.emit('goto failed;', level + 1) + self.emit('}', level) + yield + self.emit('Py_LeaveRecursiveCall();', level) + def funcHeader(self, name): ctype = get_c_type(name) self.emit("int", 0) @@ -596,8 +605,9 @@ def visitField(self, field, name, sum=None, prod=None, depth=0): self.emit("%s val;" % ctype, depth+2) self.emit("PyObject *tmp2 = PyList_GET_ITEM(tmp, i);", depth+2) self.emit("Py_INCREF(tmp2);", depth+2) - self.emit("res = obj2ast_%s(state, tmp2, &val, arena);" % - field.type, depth+2, reflow=False) + with self.recursive_call(name, depth+2): + self.emit("res = obj2ast_%s(state, tmp2, &val, arena);" % + field.type, depth+2, reflow=False) self.emit("Py_DECREF(tmp2);", depth+2) self.emit("if (res != 0) goto failed;", depth+2) self.emit("if (len != PyList_GET_SIZE(tmp)) {", depth+2) @@ -610,8 +620,9 @@ def visitField(self, field, name, sum=None, prod=None, depth=0): self.emit("asdl_seq_SET(%s, i, val);" % field.name, depth+2) self.emit("}", depth+1) else: - self.emit("res = obj2ast_%s(state, tmp, &%s, arena);" % - (field.type, field.name), depth+1) + with self.recursive_call(name, depth+1): + self.emit("res = obj2ast_%s(state, tmp, &%s, arena);" % + (field.type, field.name), depth+1) self.emit("if (res != 0) goto failed;", depth+1) self.emit("Py_CLEAR(tmp);", depth+1) diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 5d7a0aed9beffc..ce6e6a93ea70f0 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -5373,7 +5373,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Module' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5406,7 +5410,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) type_ignore_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Module' node")) { + goto failed; + } res = obj2ast_type_ignore(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5451,7 +5459,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Interactive' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5483,7 +5495,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Expression' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5522,7 +5538,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5542,7 +5562,11 @@ obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5583,7 +5607,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5596,7 +5624,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5609,7 +5641,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5622,7 +5658,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5648,7 +5688,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5661,7 +5705,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5687,7 +5735,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5720,7 +5772,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5740,7 +5796,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5753,7 +5813,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5785,7 +5849,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5798,7 +5866,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5824,7 +5896,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5857,7 +5933,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5877,7 +5957,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5890,7 +5974,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5922,7 +6010,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5948,7 +6040,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5981,7 +6077,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* keyword_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_keyword(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6014,7 +6114,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6047,7 +6151,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6081,7 +6189,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Return' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6120,7 +6232,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Delete' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6168,7 +6284,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6188,7 +6308,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6201,7 +6325,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6229,7 +6357,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6242,7 +6374,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_operator(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6255,7 +6391,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6284,7 +6424,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6297,7 +6441,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &annotation, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6310,7 +6458,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6323,7 +6475,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &simple, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6353,7 +6509,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6366,7 +6526,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6392,7 +6556,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6425,7 +6593,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6445,7 +6617,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6475,7 +6651,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6488,7 +6668,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6514,7 +6698,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6547,7 +6735,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6567,7 +6759,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6596,7 +6792,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6622,7 +6822,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6655,7 +6859,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6690,7 +6898,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6716,7 +6928,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6749,7 +6965,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6797,7 +7017,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* withitem_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_withitem(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6830,7 +7054,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6850,7 +7078,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6891,7 +7123,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* withitem_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_withitem(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6924,7 +7160,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6944,7 +7184,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6971,7 +7215,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Match' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &subject, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6997,7 +7245,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* match_case_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Match' node")) { + goto failed; + } res = obj2ast_match_case(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7031,7 +7283,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Raise' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &exc, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7044,7 +7300,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Raise' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &cause, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7086,7 +7346,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7119,7 +7383,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* excepthandler_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_excepthandler(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7152,7 +7420,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7185,7 +7457,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7219,7 +7495,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assert' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7232,7 +7512,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assert' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &msg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7271,7 +7555,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* alias_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Import' node")) { + goto failed; + } res = obj2ast_alias(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7306,7 +7594,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &module, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7332,7 +7624,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* alias_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_alias(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7352,7 +7648,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &level, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7391,7 +7691,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* identifier val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Global' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7437,7 +7741,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* identifier val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Nonlocal' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7470,7 +7778,11 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Expr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7548,7 +7860,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7561,7 +7877,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7574,7 +7894,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7587,7 +7911,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7609,7 +7937,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) { + goto failed; + } res = obj2ast_boolop(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7635,7 +7967,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7669,7 +8005,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'NamedExpr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7682,7 +8022,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'NamedExpr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7710,7 +8054,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &left, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7723,7 +8071,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_operator(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7736,7 +8088,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &right, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7763,7 +8119,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'UnaryOp' node")) { + goto failed; + } res = obj2ast_unaryop(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7776,7 +8136,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'UnaryOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &operand, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7803,7 +8167,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Lambda' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7816,7 +8184,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Lambda' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7844,7 +8216,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7857,7 +8233,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7870,7 +8250,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &orelse, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7910,7 +8294,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Dict' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7943,7 +8331,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Dict' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7989,7 +8381,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Set' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8023,7 +8419,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ListComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8049,7 +8449,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ListComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8083,7 +8487,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'SetComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8109,7 +8517,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'SetComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8144,7 +8556,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &key, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8157,7 +8573,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8183,7 +8603,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8217,7 +8641,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8243,7 +8671,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8276,7 +8708,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Await' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8302,7 +8738,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Yield' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8328,7 +8768,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'YieldFrom' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8356,7 +8800,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &left, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8382,7 +8830,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* cmpop_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_cmpop(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8415,7 +8867,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8450,7 +8906,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &func, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8476,7 +8936,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8509,7 +8973,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* keyword_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_keyword(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8544,7 +9012,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8557,7 +9029,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &conversion, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8570,7 +9046,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &format_spec, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8610,7 +9090,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'JoinedStr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8644,7 +9128,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Constant' node")) { + goto failed; + } res = obj2ast_constant(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8657,7 +9145,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Constant' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &kind, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8685,7 +9177,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8698,7 +9194,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &attr, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8711,7 +9211,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8739,7 +9243,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8752,7 +9260,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &slice, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8765,7 +9277,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8792,7 +9308,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Starred' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8805,7 +9325,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Starred' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8832,7 +9356,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Name' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &id, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8845,7 +9373,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Name' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8885,7 +9417,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'List' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8905,7 +9441,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'List' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8945,7 +9485,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Tuple' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8965,7 +9509,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Tuple' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8993,7 +9541,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &lower, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9006,7 +9558,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &upper, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9019,7 +9575,11 @@ obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &step, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9365,7 +9925,11 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9378,7 +9942,11 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9404,7 +9972,11 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9424,7 +9996,11 @@ obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &is_async, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9461,7 +10037,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9474,7 +10054,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9487,7 +10071,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9500,7 +10088,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9523,7 +10115,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &type, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9536,7 +10132,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9562,7 +10162,11 @@ obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9620,7 +10224,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9653,7 +10261,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9673,7 +10285,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp, &vararg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9699,7 +10315,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9732,7 +10352,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9752,7 +10376,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp, &kwarg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9778,7 +10406,11 @@ obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out, expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9818,7 +10450,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &arg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9831,7 +10467,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &annotation, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9844,7 +10484,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9857,7 +10501,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9870,7 +10518,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9883,7 +10535,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9896,7 +10552,11 @@ obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9929,7 +10589,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &arg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9942,7 +10606,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9955,7 +10623,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9968,7 +10640,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9981,7 +10657,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9994,7 +10674,11 @@ obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10027,7 +10711,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10040,7 +10728,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &asname, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10053,7 +10745,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10066,7 +10762,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10079,7 +10779,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10092,7 +10796,11 @@ obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10121,7 +10829,11 @@ obj2ast_withitem(struct ast_state *state, PyObject* obj, withitem_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'withitem' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &context_expr, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10134,7 +10846,11 @@ obj2ast_withitem(struct ast_state *state, PyObject* obj, withitem_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'withitem' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &optional_vars, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10163,7 +10879,11 @@ obj2ast_match_case(struct ast_state *state, PyObject* obj, match_case_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'match_case' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp, &pattern, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10176,7 +10896,11 @@ obj2ast_match_case(struct ast_state *state, PyObject* obj, match_case_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'match_case' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &guard, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10202,7 +10926,11 @@ obj2ast_match_case(struct ast_state *state, PyObject* obj, match_case_ty* out, stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'match_case' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10246,7 +10974,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'pattern' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10259,7 +10991,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'pattern' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10272,7 +11008,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'pattern' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10285,7 +11025,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'pattern' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10306,7 +11050,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchValue' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10332,7 +11080,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchSingleton' node")) { + goto failed; + } res = obj2ast_constant(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10371,7 +11123,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchSequence' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10419,7 +11175,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10452,7 +11212,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10472,7 +11236,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &rest, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10501,7 +11269,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &cls, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10527,7 +11299,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10560,7 +11336,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, identifier val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10593,7 +11373,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10627,7 +11411,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchStar' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10654,7 +11442,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchAs' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp, &pattern, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10667,7 +11459,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'MatchAs' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10706,7 +11502,11 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out, pattern_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'MatchOr' node")) { + goto failed; + } res = obj2ast_pattern(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -10760,7 +11560,11 @@ obj2ast_type_ignore(struct ast_state *state, PyObject* obj, type_ignore_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'TypeIgnore' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -10773,7 +11577,11 @@ obj2ast_type_ignore(struct ast_state *state, PyObject* obj, type_ignore_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'TypeIgnore' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &tag, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } From webhook-mailer at python.org Thu Jun 3 17:22:38 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 21:22:38 -0000 Subject: [Python-checkins] [3.10] bpo-44273: Improve syntax error message for assigning to "..." (GH-26477) (GH-26478) Message-ID: https://github.com/python/cpython/commit/3283bf4519139cf62ba04a76930f84ca1e7da910 commit: 3283bf4519139cf62ba04a76930f84ca1e7da910 branch: 3.10 author: Pablo Galindo committer: pablogsal date: 2021-06-03T22:22:28+01:00 summary: [3.10] bpo-44273: Improve syntax error message for assigning to "..." (GH-26477) (GH-26478) Use "ellipsis" instead of "Ellipsis" in syntax error messages to eliminate confusion with built-in variable Ellipsis. (cherry picked from commit 39dd141) Co-authored-by: Serhiy Storchaka Co-authored-by: Serhiy Storchaka files: M Lib/test/test_syntax.py M Parser/pegen.c diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index cc189ef0f54b52..c000028e5f1aaa 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -93,7 +93,7 @@ >>> ... = 1 Traceback (most recent call last): -SyntaxError: cannot assign to Ellipsis here. Maybe you meant '==' instead of '='? +SyntaxError: cannot assign to ellipsis here. Maybe you meant '==' instead of '='? >>> `1` = 1 Traceback (most recent call last): diff --git a/Parser/pegen.c b/Parser/pegen.c index 548a64788dec4b..aac7e368a799f8 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -217,7 +217,7 @@ _PyPegen_get_expr_name(expr_ty e) return "True"; } if (value == Py_Ellipsis) { - return "Ellipsis"; + return "ellipsis"; } return "literal"; } From webhook-mailer at python.org Thu Jun 3 17:22:39 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 21:22:39 -0000 Subject: [Python-checkins] [3.9] bpo-11105: Do not crash when compiling recursive ASTs (GH-20594) (GH-26522) Message-ID: https://github.com/python/cpython/commit/de58b319af3a72440a74e807cf8a1194ed0c6d8c commit: de58b319af3a72440a74e807cf8a1194ed0c6d8c branch: 3.9 author: Batuhan Taskaya committer: pablogsal date: 2021-06-03T22:22:34+01:00 summary: [3.9] bpo-11105: Do not crash when compiling recursive ASTs (GH-20594) (GH-26522) When compiling an AST object with a direct / indirect reference cycles, on the conversion phase because of exceeding amount of calls, a segfault was raised. This patch adds recursion guards to places for preventing user inputs to not to crash AST but instead raise a RecursionError.. (cherry picked from commit f3491242e41933aa9529add7102edb68b80a25e9) Co-authored-by: Batuhan Taskaya files: A Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst M Lib/test/test_ast.py M Parser/asdl_c.py M Python/Python-ast.c diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 5f57ce8724482a..b229921f5c07c5 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -1027,6 +1027,20 @@ def test_level_as_none(self): exec(code, ns) self.assertIn('sleep', ns) + def test_recursion_direct(self): + e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + e.operand = e + with self.assertRaises(RecursionError): + compile(ast.Expression(e), "", "eval") + + def test_recursion_indirect(self): + e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + f = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) + e.operand = f + f.operand = e + with self.assertRaises(RecursionError): + compile(ast.Expression(e), "", "eval") + class ASTValidatorTests(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst b/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst new file mode 100644 index 00000000000000..8891936cd88716 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst @@ -0,0 +1,3 @@ +When compiling :class:`ast.AST` objects with recursive references +through :func:`compile`, the interpreter doesn't crash anymore instead +it raises a :exc:`RecursionError`. diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index 6f3154aeb6fc26..4787050f92c30f 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -5,6 +5,7 @@ import sys from argparse import ArgumentParser +from contextlib import contextmanager from pathlib import Path import asdl @@ -394,6 +395,14 @@ def visitProduct(self, prod, name): class Obj2ModVisitor(PickleVisitor): + @contextmanager + def recursive_call(self, node, level): + self.emit('if (Py_EnterRecursiveCall(" while traversing \'%s\' node")) {' % node, level, reflow=False) + self.emit('goto failed;', level + 1) + self.emit('}', level) + yield + self.emit('Py_LeaveRecursiveCall();', level) + def funcHeader(self, name): ctype = get_c_type(name) self.emit("int", 0) @@ -568,8 +577,9 @@ def visitField(self, field, name, sum=None, prod=None, depth=0): self.emit("%s val;" % ctype, depth+2) self.emit("PyObject *tmp2 = PyList_GET_ITEM(tmp, i);", depth+2) self.emit("Py_INCREF(tmp2);", depth+2) - self.emit("res = obj2ast_%s(state, tmp2, &val, arena);" % - field.type, depth+2, reflow=False) + with self.recursive_call(name, depth+2): + self.emit("res = obj2ast_%s(state, tmp2, &val, arena);" % + field.type, depth+2, reflow=False) self.emit("Py_DECREF(tmp2);", depth+2) self.emit("if (res != 0) goto failed;", depth+2) self.emit("if (len != PyList_GET_SIZE(tmp)) {", depth+2) @@ -582,8 +592,9 @@ def visitField(self, field, name, sum=None, prod=None, depth=0): self.emit("asdl_seq_SET(%s, i, val);" % field.name, depth+2) self.emit("}", depth+1) else: - self.emit("res = obj2ast_%s(state, tmp, &%s, arena);" % - (field.type, field.name), depth+1) + with self.recursive_call(name, depth+1): + self.emit("res = obj2ast_%s(state, tmp, &%s, arena);" % + (field.type, field.name), depth+1) self.emit("if (res != 0) goto failed;", depth+1) self.emit("Py_CLEAR(tmp);", depth+1) diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 9e86f43178957d..8b1c594a878bcc 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -4924,7 +4924,11 @@ obj2ast_mod(astmodulestate *state, PyObject* obj, mod_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Module' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -4957,7 +4961,11 @@ obj2ast_mod(astmodulestate *state, PyObject* obj, mod_ty* out, PyArena* arena) type_ignore_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Module' node")) { + goto failed; + } res = obj2ast_type_ignore(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5002,7 +5010,11 @@ obj2ast_mod(astmodulestate *state, PyObject* obj, mod_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Interactive' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5034,7 +5046,11 @@ obj2ast_mod(astmodulestate *state, PyObject* obj, mod_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Expression' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5073,7 +5089,11 @@ obj2ast_mod(astmodulestate *state, PyObject* obj, mod_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5093,7 +5113,11 @@ obj2ast_mod(astmodulestate *state, PyObject* obj, mod_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5133,7 +5157,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5146,7 +5174,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5159,7 +5191,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5172,7 +5208,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'stmt' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5198,7 +5238,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5211,7 +5255,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5237,7 +5285,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5270,7 +5322,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5290,7 +5346,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5303,7 +5363,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5335,7 +5399,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5348,7 +5416,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5374,7 +5446,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5407,7 +5483,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5427,7 +5507,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &returns, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5440,7 +5524,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5471,7 +5559,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5497,7 +5589,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5530,7 +5626,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) keyword_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_keyword(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5563,7 +5663,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5596,7 +5700,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5629,7 +5737,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Return' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5668,7 +5780,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Delete' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5716,7 +5832,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5736,7 +5856,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5749,7 +5873,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assign' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5777,7 +5905,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5790,7 +5922,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_operator(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5803,7 +5939,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5832,7 +5972,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5845,7 +5989,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &annotation, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5858,7 +6006,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5871,7 +6023,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &simple, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5901,7 +6057,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5914,7 +6074,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -5940,7 +6104,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5973,7 +6141,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -5993,7 +6165,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'For' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6023,7 +6199,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6036,7 +6216,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6062,7 +6246,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6095,7 +6283,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6115,7 +6307,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6143,7 +6339,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6169,7 +6369,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6202,7 +6406,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'While' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6237,7 +6445,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6263,7 +6475,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6296,7 +6512,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'If' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6344,7 +6564,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) withitem_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_withitem(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6377,7 +6601,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6397,7 +6625,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'With' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6438,7 +6670,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) withitem_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_withitem(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6471,7 +6707,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6491,7 +6731,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6518,7 +6762,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Raise' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &exc, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6531,7 +6779,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Raise' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &cause, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6573,7 +6825,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6606,7 +6862,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) excepthandler_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_excepthandler(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6639,7 +6899,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6672,7 +6936,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Try' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6706,7 +6974,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assert' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6719,7 +6991,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Assert' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &msg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6758,7 +7034,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) alias_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Import' node")) { + goto failed; + } res = obj2ast_alias(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6793,7 +7073,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &module, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6819,7 +7103,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) alias_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_alias(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6839,7 +7127,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &level, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -6878,7 +7170,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) identifier val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Global' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6924,7 +7220,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) identifier val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Nonlocal' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -6957,7 +7257,11 @@ obj2ast_stmt(astmodulestate *state, PyObject* obj, stmt_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Expr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7031,7 +7335,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7044,7 +7352,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7057,7 +7369,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7070,7 +7386,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'expr' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7092,7 +7412,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) { + goto failed; + } res = obj2ast_boolop(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7118,7 +7442,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7152,7 +7480,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'NamedExpr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7165,7 +7497,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'NamedExpr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7193,7 +7529,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &left, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7206,7 +7546,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_operator(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7219,7 +7563,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'BinOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &right, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7246,7 +7594,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'UnaryOp' node")) { + goto failed; + } res = obj2ast_unaryop(state, tmp, &op, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7259,7 +7611,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'UnaryOp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &operand, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7286,7 +7642,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Lambda' node")) { + goto failed; + } res = obj2ast_arguments(state, tmp, &args, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7299,7 +7659,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Lambda' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7327,7 +7691,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &test, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7340,7 +7708,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &body, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7353,7 +7725,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'IfExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &orelse, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7393,7 +7769,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Dict' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7426,7 +7806,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Dict' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7472,7 +7856,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Set' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7505,7 +7893,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ListComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7531,7 +7923,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ListComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7565,7 +7961,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'SetComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7591,7 +7991,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'SetComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7626,7 +8030,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &key, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7639,7 +8047,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7665,7 +8077,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'DictComp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7699,7 +8115,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &elt, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7725,7 +8145,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) comprehension_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) { + goto failed; + } res = obj2ast_comprehension(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7758,7 +8182,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Await' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7784,7 +8212,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Yield' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7810,7 +8242,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'YieldFrom' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7838,7 +8274,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &left, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7864,7 +8304,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) cmpop_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_cmpop(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7897,7 +8341,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Compare' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7932,7 +8380,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &func, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -7958,7 +8410,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -7991,7 +8447,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) keyword_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Call' node")) { + goto failed; + } res = obj2ast_keyword(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8026,7 +8486,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8039,7 +8503,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &conversion, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8052,7 +8520,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &format_spec, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8091,7 +8563,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'JoinedStr' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8125,7 +8601,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Constant' node")) { + goto failed; + } res = obj2ast_constant(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8138,7 +8618,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Constant' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &kind, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8166,7 +8650,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8179,7 +8667,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &attr, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8192,7 +8684,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Attribute' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8220,7 +8716,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8233,7 +8733,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &slice, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8246,7 +8750,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Subscript' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8273,7 +8781,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Starred' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8286,7 +8798,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Starred' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8313,7 +8829,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Name' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &id, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8326,7 +8846,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Name' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8366,7 +8890,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'List' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8386,7 +8914,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'List' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8426,7 +8958,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'Tuple' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8446,7 +8982,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Tuple' node")) { + goto failed; + } res = obj2ast_expr_context(state, tmp, &ctx, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8474,7 +9014,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &lower, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8487,7 +9031,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &upper, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8500,7 +9048,11 @@ obj2ast_expr(astmodulestate *state, PyObject* obj, expr_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'Slice' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &step, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8846,7 +9398,11 @@ obj2ast_comprehension(astmodulestate *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &target, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8859,7 +9415,11 @@ obj2ast_comprehension(astmodulestate *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &iter, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8885,7 +9445,11 @@ obj2ast_comprehension(astmodulestate *state, PyObject* obj, comprehension_ty* expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -8905,7 +9469,11 @@ obj2ast_comprehension(astmodulestate *state, PyObject* obj, comprehension_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'comprehension' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &is_async, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8942,7 +9510,11 @@ obj2ast_excepthandler(astmodulestate *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8955,7 +9527,11 @@ obj2ast_excepthandler(astmodulestate *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8968,7 +9544,11 @@ obj2ast_excepthandler(astmodulestate *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -8981,7 +9561,11 @@ obj2ast_excepthandler(astmodulestate *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9004,7 +9588,11 @@ obj2ast_excepthandler(astmodulestate *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &type, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9017,7 +9605,11 @@ obj2ast_excepthandler(astmodulestate *state, PyObject* obj, excepthandler_ty* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9043,7 +9635,11 @@ obj2ast_excepthandler(astmodulestate *state, PyObject* obj, excepthandler_ty* stmt_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) { + goto failed; + } res = obj2ast_stmt(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9101,7 +9697,11 @@ obj2ast_arguments(astmodulestate *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9134,7 +9734,11 @@ obj2ast_arguments(astmodulestate *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9154,7 +9758,11 @@ obj2ast_arguments(astmodulestate *state, PyObject* obj, arguments_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp, &vararg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9180,7 +9788,11 @@ obj2ast_arguments(astmodulestate *state, PyObject* obj, arguments_ty* out, arg_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9213,7 +9825,11 @@ obj2ast_arguments(astmodulestate *state, PyObject* obj, arguments_ty* out, expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9233,7 +9849,11 @@ obj2ast_arguments(astmodulestate *state, PyObject* obj, arguments_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_arg(state, tmp, &kwarg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9259,7 +9879,11 @@ obj2ast_arguments(astmodulestate *state, PyObject* obj, arguments_ty* out, expr_ty val; PyObject *tmp2 = PyList_GET_ITEM(tmp, i); Py_INCREF(tmp2); + if (Py_EnterRecursiveCall(" while traversing 'arguments' node")) { + goto failed; + } res = obj2ast_expr(state, tmp2, &val, arena); + Py_LeaveRecursiveCall(); Py_DECREF(tmp2); if (res != 0) goto failed; if (len != PyList_GET_SIZE(tmp)) { @@ -9299,7 +9923,11 @@ obj2ast_arg(astmodulestate *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &arg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9312,7 +9940,11 @@ obj2ast_arg(astmodulestate *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &annotation, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9325,7 +9957,11 @@ obj2ast_arg(astmodulestate *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &type_comment, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9338,7 +9974,11 @@ obj2ast_arg(astmodulestate *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9351,7 +9991,11 @@ obj2ast_arg(astmodulestate *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9364,7 +10008,11 @@ obj2ast_arg(astmodulestate *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9377,7 +10025,11 @@ obj2ast_arg(astmodulestate *state, PyObject* obj, arg_ty* out, PyArena* arena) } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'arg' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9410,7 +10062,11 @@ obj2ast_keyword(astmodulestate *state, PyObject* obj, keyword_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &arg, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9423,7 +10079,11 @@ obj2ast_keyword(astmodulestate *state, PyObject* obj, keyword_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &value, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9436,7 +10096,11 @@ obj2ast_keyword(astmodulestate *state, PyObject* obj, keyword_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9449,7 +10113,11 @@ obj2ast_keyword(astmodulestate *state, PyObject* obj, keyword_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9462,7 +10130,11 @@ obj2ast_keyword(astmodulestate *state, PyObject* obj, keyword_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9475,7 +10147,11 @@ obj2ast_keyword(astmodulestate *state, PyObject* obj, keyword_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'keyword' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &end_col_offset, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9504,7 +10180,11 @@ obj2ast_alias(astmodulestate *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &name, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9517,7 +10197,11 @@ obj2ast_alias(astmodulestate *state, PyObject* obj, alias_ty* out, PyArena* } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'alias' node")) { + goto failed; + } res = obj2ast_identifier(state, tmp, &asname, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9545,7 +10229,11 @@ obj2ast_withitem(astmodulestate *state, PyObject* obj, withitem_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'withitem' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &context_expr, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9558,7 +10246,11 @@ obj2ast_withitem(astmodulestate *state, PyObject* obj, withitem_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'withitem' node")) { + goto failed; + } res = obj2ast_expr(state, tmp, &optional_vars, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9600,7 +10292,11 @@ obj2ast_type_ignore(astmodulestate *state, PyObject* obj, type_ignore_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'TypeIgnore' node")) { + goto failed; + } res = obj2ast_int(state, tmp, &lineno, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } @@ -9613,7 +10309,11 @@ obj2ast_type_ignore(astmodulestate *state, PyObject* obj, type_ignore_ty* out, } else { int res; + if (Py_EnterRecursiveCall(" while traversing 'TypeIgnore' node")) { + goto failed; + } res = obj2ast_string(state, tmp, &tag, arena); + Py_LeaveRecursiveCall(); if (res != 0) goto failed; Py_CLEAR(tmp); } From webhook-mailer at python.org Thu Jun 3 17:24:30 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 21:24:30 -0000 Subject: [Python-checkins] bpo-44042: Optimize sqlite3 begin transaction (GH-25908) Message-ID: https://github.com/python/cpython/commit/3446516ffa92c98519146253153484291947b273 commit: 3446516ffa92c98519146253153484291947b273 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-03T22:24:25+01:00 summary: bpo-44042: Optimize sqlite3 begin transaction (GH-25908) files: M Modules/_sqlite/connection.c M Modules/_sqlite/connection.h M Modules/_sqlite/cursor.c diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index c43f74ceace30..47ae9aaf4ae68 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -405,42 +405,6 @@ int pysqlite_check_connection(pysqlite_Connection* con) } } -PyObject* _pysqlite_connection_begin(pysqlite_Connection* self) -{ - int rc; - sqlite3_stmt* statement; - - Py_BEGIN_ALLOW_THREADS - rc = sqlite3_prepare_v2(self->db, self->begin_statement, -1, &statement, - NULL); - Py_END_ALLOW_THREADS - - if (rc != SQLITE_OK) { - _pysqlite_seterror(self->db); - goto error; - } - - rc = pysqlite_step(statement, self); - if (rc != SQLITE_DONE) { - _pysqlite_seterror(self->db); - } - - Py_BEGIN_ALLOW_THREADS - rc = sqlite3_finalize(statement); - Py_END_ALLOW_THREADS - - if (rc != SQLITE_OK && !PyErr_Occurred()) { - _pysqlite_seterror(self->db); - } - -error: - if (PyErr_Occurred()) { - return NULL; - } else { - Py_RETURN_NONE; - } -} - /*[clinic input] _sqlite3.Connection.commit as pysqlite_connection_commit diff --git a/Modules/_sqlite/connection.h b/Modules/_sqlite/connection.h index f2be4f1a955ac..03845a696d2bf 100644 --- a/Modules/_sqlite/connection.h +++ b/Modules/_sqlite/connection.h @@ -107,8 +107,6 @@ typedef struct extern PyTypeObject *pysqlite_ConnectionType; -PyObject* _pysqlite_connection_begin(pysqlite_Connection* self); - int pysqlite_connection_register_cursor(pysqlite_Connection* connection, PyObject* cursor); int pysqlite_check_thread(pysqlite_Connection* self); int pysqlite_check_connection(pysqlite_Connection* con); diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 8073f3bbb78c7..7f33b3deb30f7 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -415,6 +415,38 @@ static int check_cursor(pysqlite_Cursor* cur) return pysqlite_check_thread(cur->connection) && pysqlite_check_connection(cur->connection); } +static int +begin_transaction(pysqlite_Connection *self) +{ + int rc; + sqlite3_stmt *statement; + + Py_BEGIN_ALLOW_THREADS + rc = sqlite3_prepare_v2(self->db, self->begin_statement, -1, &statement, + NULL); + Py_END_ALLOW_THREADS + + if (rc != SQLITE_OK) { + _pysqlite_seterror(self->db); + goto error; + } + + Py_BEGIN_ALLOW_THREADS + sqlite3_step(statement); + rc = sqlite3_finalize(statement); + Py_END_ALLOW_THREADS + + if (rc != SQLITE_OK && !PyErr_Occurred()) { + _pysqlite_seterror(self->db); + } + +error: + if (PyErr_Occurred()) { + return -1; + } + return 0; +} + static PyObject * get_statement_from_cache(pysqlite_Cursor *self, PyObject *operation) { @@ -431,7 +463,6 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation PyObject* parameters = NULL; int i; int rc; - PyObject* result; int numcols; PyObject* column_name; sqlite_int64 lastrowid; @@ -515,13 +546,12 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation /* We start a transaction implicitly before a DML statement. SELECT is the only exception. See #9924. */ - if (self->connection->begin_statement && self->statement->is_dml) { - if (sqlite3_get_autocommit(self->connection->db)) { - result = _pysqlite_connection_begin(self->connection); - if (!result) { - goto error; - } - Py_DECREF(result); + if (self->connection->begin_statement + && self->statement->is_dml + && sqlite3_get_autocommit(self->connection->db)) + { + if (begin_transaction(self->connection) < 0) { + goto error; } } From webhook-mailer at python.org Thu Jun 3 18:52:20 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 22:52:20 -0000 Subject: [Python-checkins] bpo-44305: Improve syntax error for try blocks without except or finally (GH-26523) Message-ID: https://github.com/python/cpython/commit/b250f89bb7e05e72a4641d44b988866b919575db commit: b250f89bb7e05e72a4641d44b988866b919575db branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-03T23:52:12+01:00 summary: bpo-44305: Improve syntax error for try blocks without except or finally (GH-26523) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst M Doc/whatsnew/3.10.rst M Grammar/python.gram M Lib/test/test_syntax.py M Parser/parser.c diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 92247e153627d0..bc0f938870376f 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -274,6 +274,20 @@ have been incorporated. Some of the most notable ones: (Contributed by Pablo Galindo in :issue:`43823`) +* ``try`` blocks without ``except`` or ``finally`` blocks: + + .. code-block:: python + + >>> try + ... x = 2 + ... something = 3 + File "", line 3 + something = 3 + ^^^^^^^^^ + SyntaxError: expected 'except' or 'finally' block + + (Contributed by Pablo Galindo in :issue:`44305`) + * Usage of ``=`` instead of ``==`` in comparisons: .. code-block:: python diff --git a/Grammar/python.gram b/Grammar/python.gram index 8b5d921a3e8aa9..d0f9bb0bc4f277 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -964,6 +964,7 @@ invalid_with_stmt_indent: invalid_try_stmt: | a='try' ':' NEWLINE !INDENT { RAISE_INDENTATION_ERROR("expected an indented block after 'try' statement on line %d", a->lineno) } + | 'try' ':' block !('except' | 'finally') { RAISE_SYNTAX_ERROR("expected 'except' or 'finally' block") } invalid_except_stmt: | 'except' a=expression ',' expressions ['as' NAME ] ':' { RAISE_SYNTAX_ERROR_STARTING_FROM(a, "multiple exception types must be parenthesized") } diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index c000028e5f1aaa..5d3ce4cd9f7adf 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -882,6 +882,14 @@ Traceback (most recent call last): SyntaxError: cannot assign to attribute here. Maybe you meant '==' instead of '='? +Custom error messages for try blocks that are not followed by except/finally + + >>> try: + ... x = 34 + ... + Traceback (most recent call last): + SyntaxError: expected 'except' or 'finally' block + Ensure that early = are not matched by the parser as invalid comparisons >>> f(2, 4, x=34); 1 $ 2 Traceback (most recent call last): diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst new file mode 100644 index 00000000000000..eebc26f1cc777a --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst @@ -0,0 +1,2 @@ +Improve error message for ``try`` blocks without ``except`` or ``finally`` +blocks. Patch by Pablo Galindo. diff --git a/Parser/parser.c b/Parser/parser.c index 4e8a14c36160fb..81218842cbafe7 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -467,9 +467,9 @@ static char *soft_keywords[] = { #define _tmp_173_type 1393 #define _tmp_174_type 1394 #define _tmp_175_type 1395 -#define _loop0_177_type 1396 -#define _gather_176_type 1397 -#define _tmp_178_type 1398 +#define _tmp_176_type 1396 +#define _loop0_178_type 1397 +#define _gather_177_type 1398 #define _tmp_179_type 1399 #define _tmp_180_type 1400 #define _tmp_181_type 1401 @@ -496,6 +496,7 @@ static char *soft_keywords[] = { #define _tmp_202_type 1422 #define _tmp_203_type 1423 #define _tmp_204_type 1424 +#define _tmp_205_type 1425 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -893,9 +894,9 @@ static void *_tmp_172_rule(Parser *p); static void *_tmp_173_rule(Parser *p); static void *_tmp_174_rule(Parser *p); static void *_tmp_175_rule(Parser *p); -static asdl_seq *_loop0_177_rule(Parser *p); -static asdl_seq *_gather_176_rule(Parser *p); -static void *_tmp_178_rule(Parser *p); +static void *_tmp_176_rule(Parser *p); +static asdl_seq *_loop0_178_rule(Parser *p); +static asdl_seq *_gather_177_rule(Parser *p); static void *_tmp_179_rule(Parser *p); static void *_tmp_180_rule(Parser *p); static void *_tmp_181_rule(Parser *p); @@ -922,6 +923,7 @@ static void *_tmp_201_rule(Parser *p); static void *_tmp_202_rule(Parser *p); static void *_tmp_203_rule(Parser *p); static void *_tmp_204_rule(Parser *p); +static void *_tmp_205_rule(Parser *p); // file: statements? $ @@ -20044,7 +20046,7 @@ invalid_with_stmt_indent_rule(Parser *p) return _res; } -// invalid_try_stmt: 'try' ':' NEWLINE !INDENT +// invalid_try_stmt: 'try' ':' NEWLINE !INDENT | 'try' ':' block !('except' | 'finally') static void * invalid_try_stmt_rule(Parser *p) { @@ -20087,6 +20089,38 @@ invalid_try_stmt_rule(Parser *p) D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT")); } + { // 'try' ':' block !('except' | 'finally') + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')")); + Token * _keyword; + Token * _literal; + asdl_stmt_seq* block_var; + if ( + (_keyword = _PyPegen_expect_token(p, 511)) // token='try' + && + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + && + (block_var = block_rule(p)) // block + && + _PyPegen_lookahead(0, _tmp_171_rule, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')")); + _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')")); + } _res = NULL; done: D(p->level--); @@ -20129,7 +20163,7 @@ invalid_except_stmt_rule(Parser *p) && (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_171_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' ) @@ -20163,7 +20197,7 @@ invalid_except_stmt_rule(Parser *p) && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_173_rule(p), 1) // ['as' NAME] && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -20293,7 +20327,7 @@ invalid_except_stmt_indent_rule(Parser *p) && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_173_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_174_rule(p), 1) // ['as' NAME] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20933,7 +20967,7 @@ invalid_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (_opt_var_2 = _tmp_174_rule(p), 1) // ['->' expression] + (_opt_var_2 = _tmp_175_rule(p), 1) // ['->' expression] && (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20989,7 +21023,7 @@ invalid_class_def_raw_rule(Parser *p) && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_175_rule(p), 1) // ['(' arguments? ')'] + (_opt_var = _tmp_176_rule(p), 1) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -21037,11 +21071,11 @@ invalid_double_starred_kvpairs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - asdl_seq * _gather_176_var; + asdl_seq * _gather_177_var; Token * _literal; void *invalid_kvpair_var; if ( - (_gather_176_var = _gather_176_rule(p)) // ','.double_starred_kvpair+ + (_gather_177_var = _gather_177_rule(p)) // ','.double_starred_kvpair+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -21049,7 +21083,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - _res = _PyPegen_dummy_name(p, _gather_176_var, _literal, invalid_kvpair_var); + _res = _PyPegen_dummy_name(p, _gather_177_var, _literal, invalid_kvpair_var); goto done; } p->mark = _mark; @@ -21102,7 +21136,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_178_rule, p) + _PyPegen_lookahead(1, _tmp_179_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -22475,12 +22509,12 @@ _loop1_22_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_179_var; + void *_tmp_180_var; while ( - (_tmp_179_var = _tmp_179_rule(p)) // star_targets '=' + (_tmp_180_var = _tmp_180_rule(p)) // star_targets '=' ) { - _res = _tmp_179_var; + _res = _tmp_180_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22983,12 +23017,12 @@ _loop0_31_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_180_var; + void *_tmp_181_var; while ( - (_tmp_180_var = _tmp_180_rule(p)) // '.' | '...' + (_tmp_181_var = _tmp_181_rule(p)) // '.' | '...' ) { - _res = _tmp_180_var; + _res = _tmp_181_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23049,12 +23083,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_181_var; + void *_tmp_182_var; while ( - (_tmp_181_var = _tmp_181_rule(p)) // '.' | '...' + (_tmp_182_var = _tmp_182_rule(p)) // '.' | '...' ) { - _res = _tmp_181_var; + _res = _tmp_182_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26165,12 +26199,12 @@ _loop1_84_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_182_var; + void *_tmp_183_var; while ( - (_tmp_182_var = _tmp_182_rule(p)) // '@' named_expression NEWLINE + (_tmp_183_var = _tmp_183_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_182_var; + _res = _tmp_183_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26283,12 +26317,12 @@ _loop1_86_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_183_var; + void *_tmp_184_var; while ( - (_tmp_183_var = _tmp_183_rule(p)) // ',' star_expression + (_tmp_184_var = _tmp_184_rule(p)) // ',' star_expression ) { - _res = _tmp_183_var; + _res = _tmp_184_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26468,12 +26502,12 @@ _loop1_89_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_184_var; + void *_tmp_185_var; while ( - (_tmp_184_var = _tmp_184_rule(p)) // ',' expression + (_tmp_185_var = _tmp_185_rule(p)) // ',' expression ) { - _res = _tmp_184_var; + _res = _tmp_185_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27498,12 +27532,12 @@ _loop1_104_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_185_var; + void *_tmp_186_var; while ( - (_tmp_185_var = _tmp_185_rule(p)) // 'or' conjunction + (_tmp_186_var = _tmp_186_rule(p)) // 'or' conjunction ) { - _res = _tmp_185_var; + _res = _tmp_186_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27569,12 +27603,12 @@ _loop1_105_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_186_var; + void *_tmp_187_var; while ( - (_tmp_186_var = _tmp_186_rule(p)) // 'and' inversion + (_tmp_187_var = _tmp_187_rule(p)) // 'and' inversion ) { - _res = _tmp_186_var; + _res = _tmp_187_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28547,12 +28581,12 @@ _loop0_121_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_187_var; + void *_tmp_188_var; while ( - (_tmp_187_var = _tmp_187_rule(p)) // 'if' disjunction + (_tmp_188_var = _tmp_188_rule(p)) // 'if' disjunction ) { - _res = _tmp_187_var; + _res = _tmp_188_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28613,12 +28647,12 @@ _loop0_122_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_188_var; + void *_tmp_189_var; while ( - (_tmp_188_var = _tmp_188_rule(p)) // 'if' disjunction + (_tmp_189_var = _tmp_189_rule(p)) // 'if' disjunction ) { - _res = _tmp_188_var; + _res = _tmp_189_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28684,7 +28718,7 @@ _loop0_124_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_189_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_190_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' ) { _res = elem; @@ -28748,7 +28782,7 @@ _gather_123_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_189_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_190_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' && (seq = _loop0_124_rule(p)) // _loop0_124 ) @@ -29294,12 +29328,12 @@ _loop0_134_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_190_var; + void *_tmp_191_var; while ( - (_tmp_190_var = _tmp_190_rule(p)) // ',' star_target + (_tmp_191_var = _tmp_191_rule(p)) // ',' star_target ) { - _res = _tmp_190_var; + _res = _tmp_191_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29474,12 +29508,12 @@ _loop1_137_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_191_var; + void *_tmp_192_var; while ( - (_tmp_191_var = _tmp_191_rule(p)) // ',' star_target + (_tmp_192_var = _tmp_192_rule(p)) // ',' star_target ) { - _res = _tmp_191_var; + _res = _tmp_192_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30273,12 +30307,12 @@ _loop0_150_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_192_var; + void *_tmp_193_var; while ( - (_tmp_192_var = _tmp_192_rule(p)) // star_targets '=' + (_tmp_193_var = _tmp_193_rule(p)) // star_targets '=' ) { - _res = _tmp_192_var; + _res = _tmp_193_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30339,12 +30373,12 @@ _loop0_151_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_193_var; + void *_tmp_194_var; while ( - (_tmp_193_var = _tmp_193_rule(p)) // star_targets '=' + (_tmp_194_var = _tmp_194_rule(p)) // star_targets '=' ) { - _res = _tmp_193_var; + _res = _tmp_194_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30928,15 +30962,15 @@ _tmp_160_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_194_var; + void *_tmp_195_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_194_var = _tmp_194_rule(p)) // ')' | '**' + (_tmp_195_var = _tmp_195_rule(p)) // ')' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_194_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_195_var); goto done; } p->mark = _mark; @@ -30986,15 +31020,15 @@ _tmp_161_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_195_var; + void *_tmp_196_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_195_var = _tmp_195_rule(p)) // ':' | '**' + (_tmp_196_var = _tmp_196_rule(p)) // ':' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_195_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_196_var); goto done; } p->mark = _mark; @@ -31113,7 +31147,7 @@ _loop0_164_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_196_rule(p)) // expression ['as' star_target] + (elem = _tmp_197_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31176,7 +31210,7 @@ _gather_163_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_196_rule(p)) // expression ['as' star_target] + (elem = _tmp_197_rule(p)) // expression ['as' star_target] && (seq = _loop0_164_rule(p)) // _loop0_164 ) @@ -31227,7 +31261,7 @@ _loop0_166_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_197_rule(p)) // expressions ['as' star_target] + (elem = _tmp_198_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31290,7 +31324,7 @@ _gather_165_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_197_rule(p)) // expressions ['as' star_target] + (elem = _tmp_198_rule(p)) // expressions ['as' star_target] && (seq = _loop0_166_rule(p)) // _loop0_166 ) @@ -31341,7 +31375,7 @@ _loop0_168_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_198_rule(p)) // expression ['as' star_target] + (elem = _tmp_199_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31404,7 +31438,7 @@ _gather_167_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_198_rule(p)) // expression ['as' star_target] + (elem = _tmp_199_rule(p)) // expression ['as' star_target] && (seq = _loop0_168_rule(p)) // _loop0_168 ) @@ -31455,7 +31489,7 @@ _loop0_170_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_199_rule(p)) // expressions ['as' star_target] + (elem = _tmp_200_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31518,7 +31552,7 @@ _gather_169_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_199_rule(p)) // expressions ['as' star_target] + (elem = _tmp_200_rule(p)) // expressions ['as' star_target] && (seq = _loop0_170_rule(p)) // _loop0_170 ) @@ -31537,7 +31571,7 @@ _gather_169_rule(Parser *p) return _res; } -// _tmp_171: 'as' NAME +// _tmp_171: 'except' | 'finally' static void * _tmp_171_rule(Parser *p) { @@ -31548,27 +31582,43 @@ _tmp_171_rule(Parser *p) } void * _res = NULL; int _mark = p->mark; - { // 'as' NAME + { // 'except' if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); Token * _keyword; - expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 520)) // token='as' - && - (name_var = _PyPegen_name_token(p)) // NAME + (_keyword = _PyPegen_expect_token(p, 521)) // token='except' ) { - D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); - _res = _PyPegen_dummy_name(p, _keyword, name_var); + D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); + _res = _keyword; goto done; } p->mark = _mark; D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'")); + } + { // 'finally' + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); + Token * _keyword; + if ( + (_keyword = _PyPegen_expect_token(p, 522)) // token='finally' + ) + { + D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); + _res = _keyword; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'")); } _res = NULL; done: @@ -31654,9 +31704,48 @@ _tmp_173_rule(Parser *p) return _res; } -// _tmp_174: '->' expression +// _tmp_174: 'as' NAME static void * _tmp_174_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // 'as' NAME + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + Token * _keyword; + expr_ty name_var; + if ( + (_keyword = _PyPegen_expect_token(p, 520)) // token='as' + && + (name_var = _PyPegen_name_token(p)) // NAME + ) + { + D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + _res = _PyPegen_dummy_name(p, _keyword, name_var); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + +// _tmp_175: '->' expression +static void * +_tmp_175_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31670,7 +31759,7 @@ _tmp_174_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty expression_var; if ( @@ -31679,12 +31768,12 @@ _tmp_174_rule(Parser *p) (expression_var = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = _PyPegen_dummy_name(p, _literal, expression_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -31693,9 +31782,9 @@ _tmp_174_rule(Parser *p) return _res; } -// _tmp_175: '(' arguments? ')' +// _tmp_176: '(' arguments? ')' static void * -_tmp_175_rule(Parser *p) +_tmp_176_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31709,7 +31798,7 @@ _tmp_175_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -31722,12 +31811,12 @@ _tmp_175_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -31736,9 +31825,9 @@ _tmp_175_rule(Parser *p) return _res; } -// _loop0_177: ',' double_starred_kvpair +// _loop0_178: ',' double_starred_kvpair static asdl_seq * -_loop0_177_rule(Parser *p) +_loop0_178_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31762,7 +31851,7 @@ _loop0_177_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -31793,7 +31882,7 @@ _loop0_177_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_177[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31806,14 +31895,14 @@ _loop0_177_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_177_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_178_type, _seq); D(p->level--); return _seq; } -// _gather_176: double_starred_kvpair _loop0_177 +// _gather_177: double_starred_kvpair _loop0_178 static asdl_seq * -_gather_176_rule(Parser *p) +_gather_177_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31822,27 +31911,27 @@ _gather_176_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_177 + { // double_starred_kvpair _loop0_178 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_177")); + D(fprintf(stderr, "%*c> _gather_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_178")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_177_rule(p)) // _loop0_177 + (seq = _loop0_178_rule(p)) // _loop0_178 ) { - D(fprintf(stderr, "%*c+ _gather_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_177")); + D(fprintf(stderr, "%*c+ _gather_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_178")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_176[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_177")); + D(fprintf(stderr, "%*c%s _gather_177[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_178")); } _res = NULL; done: @@ -31850,9 +31939,9 @@ _gather_176_rule(Parser *p) return _res; } -// _tmp_178: '}' | ',' +// _tmp_179: '}' | ',' static void * -_tmp_178_rule(Parser *p) +_tmp_179_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31866,18 +31955,18 @@ _tmp_178_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -31885,18 +31974,18 @@ _tmp_178_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -31905,9 +31994,9 @@ _tmp_178_rule(Parser *p) return _res; } -// _tmp_179: star_targets '=' +// _tmp_180: star_targets '=' static void * -_tmp_179_rule(Parser *p) +_tmp_180_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31921,7 +32010,7 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -31930,7 +32019,7 @@ _tmp_179_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31940,7 +32029,7 @@ _tmp_179_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -31949,9 +32038,9 @@ _tmp_179_rule(Parser *p) return _res; } -// _tmp_180: '.' | '...' +// _tmp_181: '.' | '...' static void * -_tmp_180_rule(Parser *p) +_tmp_181_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31965,18 +32054,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -31984,18 +32073,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32004,9 +32093,9 @@ _tmp_180_rule(Parser *p) return _res; } -// _tmp_181: '.' | '...' +// _tmp_182: '.' | '...' static void * -_tmp_181_rule(Parser *p) +_tmp_182_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32020,18 +32109,18 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -32039,18 +32128,18 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32059,9 +32148,9 @@ _tmp_181_rule(Parser *p) return _res; } -// _tmp_182: '@' named_expression NEWLINE +// _tmp_183: '@' named_expression NEWLINE static void * -_tmp_182_rule(Parser *p) +_tmp_183_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32075,7 +32164,7 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -32087,7 +32176,7 @@ _tmp_182_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32097,7 +32186,7 @@ _tmp_182_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -32106,9 +32195,9 @@ _tmp_182_rule(Parser *p) return _res; } -// _tmp_183: ',' star_expression +// _tmp_184: ',' star_expression static void * -_tmp_183_rule(Parser *p) +_tmp_184_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32122,7 +32211,7 @@ _tmp_183_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -32131,7 +32220,7 @@ _tmp_183_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32141,7 +32230,7 @@ _tmp_183_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -32150,9 +32239,9 @@ _tmp_183_rule(Parser *p) return _res; } -// _tmp_184: ',' expression +// _tmp_185: ',' expression static void * -_tmp_184_rule(Parser *p) +_tmp_185_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32166,7 +32255,7 @@ _tmp_184_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -32175,7 +32264,7 @@ _tmp_184_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32185,7 +32274,7 @@ _tmp_184_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -32194,9 +32283,9 @@ _tmp_184_rule(Parser *p) return _res; } -// _tmp_185: 'or' conjunction +// _tmp_186: 'or' conjunction static void * -_tmp_185_rule(Parser *p) +_tmp_186_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32210,7 +32299,7 @@ _tmp_185_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -32219,7 +32308,7 @@ _tmp_185_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32229,7 +32318,7 @@ _tmp_185_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -32238,9 +32327,9 @@ _tmp_185_rule(Parser *p) return _res; } -// _tmp_186: 'and' inversion +// _tmp_187: 'and' inversion static void * -_tmp_186_rule(Parser *p) +_tmp_187_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32254,7 +32343,7 @@ _tmp_186_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -32263,7 +32352,7 @@ _tmp_186_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32273,7 +32362,7 @@ _tmp_186_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -32282,9 +32371,9 @@ _tmp_186_rule(Parser *p) return _res; } -// _tmp_187: 'if' disjunction +// _tmp_188: 'if' disjunction static void * -_tmp_187_rule(Parser *p) +_tmp_188_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32298,7 +32387,7 @@ _tmp_187_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32307,7 +32396,7 @@ _tmp_187_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32317,7 +32406,7 @@ _tmp_187_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32326,9 +32415,9 @@ _tmp_187_rule(Parser *p) return _res; } -// _tmp_188: 'if' disjunction +// _tmp_189: 'if' disjunction static void * -_tmp_188_rule(Parser *p) +_tmp_189_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32342,7 +32431,7 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32351,7 +32440,7 @@ _tmp_188_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32361,7 +32450,7 @@ _tmp_188_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32370,9 +32459,9 @@ _tmp_188_rule(Parser *p) return _res; } -// _tmp_189: starred_expression | (assigment_expression | expression !':=') !'=' +// _tmp_190: starred_expression | (assigment_expression | expression !':=') !'=' static void * -_tmp_189_rule(Parser *p) +_tmp_190_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32386,18 +32475,18 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // (assigment_expression | expression !':=') !'=' @@ -32405,20 +32494,20 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - void *_tmp_200_var; + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + void *_tmp_201_var; if ( - (_tmp_200_var = _tmp_200_rule(p)) // assigment_expression | expression !':=' + (_tmp_201_var = _tmp_201_rule(p)) // assigment_expression | expression !':=' && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - _res = _tmp_200_var; + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + _res = _tmp_201_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assigment_expression | expression !':=') !'='")); } _res = NULL; @@ -32427,9 +32516,9 @@ _tmp_189_rule(Parser *p) return _res; } -// _tmp_190: ',' star_target +// _tmp_191: ',' star_target static void * -_tmp_190_rule(Parser *p) +_tmp_191_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32443,7 +32532,7 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32452,7 +32541,7 @@ _tmp_190_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32462,7 +32551,7 @@ _tmp_190_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32471,9 +32560,9 @@ _tmp_190_rule(Parser *p) return _res; } -// _tmp_191: ',' star_target +// _tmp_192: ',' star_target static void * -_tmp_191_rule(Parser *p) +_tmp_192_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32487,7 +32576,7 @@ _tmp_191_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32496,7 +32585,7 @@ _tmp_191_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32506,7 +32595,7 @@ _tmp_191_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32515,9 +32604,9 @@ _tmp_191_rule(Parser *p) return _res; } -// _tmp_192: star_targets '=' +// _tmp_193: star_targets '=' static void * -_tmp_192_rule(Parser *p) +_tmp_193_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32531,7 +32620,7 @@ _tmp_192_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32540,12 +32629,12 @@ _tmp_192_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32554,9 +32643,9 @@ _tmp_192_rule(Parser *p) return _res; } -// _tmp_193: star_targets '=' +// _tmp_194: star_targets '=' static void * -_tmp_193_rule(Parser *p) +_tmp_194_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32570,7 +32659,7 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32579,12 +32668,12 @@ _tmp_193_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32593,9 +32682,9 @@ _tmp_193_rule(Parser *p) return _res; } -// _tmp_194: ')' | '**' +// _tmp_195: ')' | '**' static void * -_tmp_194_rule(Parser *p) +_tmp_195_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32609,18 +32698,18 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -32628,18 +32717,18 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32648,9 +32737,9 @@ _tmp_194_rule(Parser *p) return _res; } -// _tmp_195: ':' | '**' +// _tmp_196: ':' | '**' static void * -_tmp_195_rule(Parser *p) +_tmp_196_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32664,18 +32753,18 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -32683,18 +32772,18 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32703,9 +32792,9 @@ _tmp_195_rule(Parser *p) return _res; } -// _tmp_196: expression ['as' star_target] +// _tmp_197: expression ['as' star_target] static void * -_tmp_196_rule(Parser *p) +_tmp_197_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32719,22 +32808,22 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_201_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32743,9 +32832,9 @@ _tmp_196_rule(Parser *p) return _res; } -// _tmp_197: expressions ['as' star_target] +// _tmp_198: expressions ['as' star_target] static void * -_tmp_197_rule(Parser *p) +_tmp_198_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32759,22 +32848,22 @@ _tmp_197_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32783,9 +32872,9 @@ _tmp_197_rule(Parser *p) return _res; } -// _tmp_198: expression ['as' star_target] +// _tmp_199: expression ['as' star_target] static void * -_tmp_198_rule(Parser *p) +_tmp_199_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32799,22 +32888,22 @@ _tmp_198_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32823,9 +32912,9 @@ _tmp_198_rule(Parser *p) return _res; } -// _tmp_199: expressions ['as' star_target] +// _tmp_200: expressions ['as' star_target] static void * -_tmp_199_rule(Parser *p) +_tmp_200_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32839,22 +32928,22 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_205_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32863,9 +32952,9 @@ _tmp_199_rule(Parser *p) return _res; } -// _tmp_200: assigment_expression | expression !':=' +// _tmp_201: assigment_expression | expression !':=' static void * -_tmp_200_rule(Parser *p) +_tmp_201_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32879,18 +32968,18 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); expr_ty assigment_expression_var; if ( (assigment_expression_var = assigment_expression_rule(p)) // assigment_expression ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); _res = assigment_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assigment_expression")); } { // expression !':=' @@ -32898,7 +32987,7 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression @@ -32906,12 +32995,12 @@ _tmp_200_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; @@ -32920,9 +33009,9 @@ _tmp_200_rule(Parser *p) return _res; } -// _tmp_201: 'as' star_target +// _tmp_202: 'as' star_target static void * -_tmp_201_rule(Parser *p) +_tmp_202_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32936,7 +33025,7 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32945,12 +33034,12 @@ _tmp_201_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32959,9 +33048,9 @@ _tmp_201_rule(Parser *p) return _res; } -// _tmp_202: 'as' star_target +// _tmp_203: 'as' star_target static void * -_tmp_202_rule(Parser *p) +_tmp_203_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32975,7 +33064,7 @@ _tmp_202_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32984,12 +33073,12 @@ _tmp_202_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32998,9 +33087,9 @@ _tmp_202_rule(Parser *p) return _res; } -// _tmp_203: 'as' star_target +// _tmp_204: 'as' star_target static void * -_tmp_203_rule(Parser *p) +_tmp_204_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33014,7 +33103,7 @@ _tmp_203_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33023,12 +33112,12 @@ _tmp_203_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33037,9 +33126,9 @@ _tmp_203_rule(Parser *p) return _res; } -// _tmp_204: 'as' star_target +// _tmp_205: 'as' star_target static void * -_tmp_204_rule(Parser *p) +_tmp_205_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33053,7 +33142,7 @@ _tmp_204_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33062,12 +33151,12 @@ _tmp_204_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; From webhook-mailer at python.org Thu Jun 3 19:11:52 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 23:11:52 -0000 Subject: [Python-checkins] [3.10] bpo-44305: Improve syntax error for try blocks without except or finally (GH-26523) (GH-26524) Message-ID: https://github.com/python/cpython/commit/e53f72a1b42e17a331ed14bec674b1ee01d0720c commit: e53f72a1b42e17a331ed14bec674b1ee01d0720c branch: 3.10 author: Pablo Galindo committer: pablogsal date: 2021-06-04T00:11:43+01:00 summary: [3.10] bpo-44305: Improve syntax error for try blocks without except or finally (GH-26523) (GH-26524) (cherry picked from commit b250f89bb7e05e72a4641d44b988866b919575db) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst M Doc/whatsnew/3.10.rst M Grammar/python.gram M Lib/test/test_syntax.py M Parser/parser.c diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index beaa81a28678d4..af67582533dd18 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -274,6 +274,20 @@ have been incorporated. Some of the most notable ones: (Contributed by Pablo Galindo in :issue:`43823`) +* ``try`` blocks without ``except`` or ``finally`` blocks: + + .. code-block:: python + + >>> try + ... x = 2 + ... something = 3 + File "", line 3 + something = 3 + ^^^^^^^^^ + SyntaxError: expected 'except' or 'finally' block + + (Contributed by Pablo Galindo in :issue:`44305`) + * Usage of ``=`` instead of ``==`` in comparisons: .. code-block:: python diff --git a/Grammar/python.gram b/Grammar/python.gram index 8b5d921a3e8aa9..d0f9bb0bc4f277 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -964,6 +964,7 @@ invalid_with_stmt_indent: invalid_try_stmt: | a='try' ':' NEWLINE !INDENT { RAISE_INDENTATION_ERROR("expected an indented block after 'try' statement on line %d", a->lineno) } + | 'try' ':' block !('except' | 'finally') { RAISE_SYNTAX_ERROR("expected 'except' or 'finally' block") } invalid_except_stmt: | 'except' a=expression ',' expressions ['as' NAME ] ':' { RAISE_SYNTAX_ERROR_STARTING_FROM(a, "multiple exception types must be parenthesized") } diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index c000028e5f1aaa..5d3ce4cd9f7adf 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -882,6 +882,14 @@ Traceback (most recent call last): SyntaxError: cannot assign to attribute here. Maybe you meant '==' instead of '='? +Custom error messages for try blocks that are not followed by except/finally + + >>> try: + ... x = 34 + ... + Traceback (most recent call last): + SyntaxError: expected 'except' or 'finally' block + Ensure that early = are not matched by the parser as invalid comparisons >>> f(2, 4, x=34); 1 $ 2 Traceback (most recent call last): diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst new file mode 100644 index 00000000000000..eebc26f1cc777a --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst @@ -0,0 +1,2 @@ +Improve error message for ``try`` blocks without ``except`` or ``finally`` +blocks. Patch by Pablo Galindo. diff --git a/Parser/parser.c b/Parser/parser.c index 4e8a14c36160fb..81218842cbafe7 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -467,9 +467,9 @@ static char *soft_keywords[] = { #define _tmp_173_type 1393 #define _tmp_174_type 1394 #define _tmp_175_type 1395 -#define _loop0_177_type 1396 -#define _gather_176_type 1397 -#define _tmp_178_type 1398 +#define _tmp_176_type 1396 +#define _loop0_178_type 1397 +#define _gather_177_type 1398 #define _tmp_179_type 1399 #define _tmp_180_type 1400 #define _tmp_181_type 1401 @@ -496,6 +496,7 @@ static char *soft_keywords[] = { #define _tmp_202_type 1422 #define _tmp_203_type 1423 #define _tmp_204_type 1424 +#define _tmp_205_type 1425 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -893,9 +894,9 @@ static void *_tmp_172_rule(Parser *p); static void *_tmp_173_rule(Parser *p); static void *_tmp_174_rule(Parser *p); static void *_tmp_175_rule(Parser *p); -static asdl_seq *_loop0_177_rule(Parser *p); -static asdl_seq *_gather_176_rule(Parser *p); -static void *_tmp_178_rule(Parser *p); +static void *_tmp_176_rule(Parser *p); +static asdl_seq *_loop0_178_rule(Parser *p); +static asdl_seq *_gather_177_rule(Parser *p); static void *_tmp_179_rule(Parser *p); static void *_tmp_180_rule(Parser *p); static void *_tmp_181_rule(Parser *p); @@ -922,6 +923,7 @@ static void *_tmp_201_rule(Parser *p); static void *_tmp_202_rule(Parser *p); static void *_tmp_203_rule(Parser *p); static void *_tmp_204_rule(Parser *p); +static void *_tmp_205_rule(Parser *p); // file: statements? $ @@ -20044,7 +20046,7 @@ invalid_with_stmt_indent_rule(Parser *p) return _res; } -// invalid_try_stmt: 'try' ':' NEWLINE !INDENT +// invalid_try_stmt: 'try' ':' NEWLINE !INDENT | 'try' ':' block !('except' | 'finally') static void * invalid_try_stmt_rule(Parser *p) { @@ -20087,6 +20089,38 @@ invalid_try_stmt_rule(Parser *p) D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT")); } + { // 'try' ':' block !('except' | 'finally') + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')")); + Token * _keyword; + Token * _literal; + asdl_stmt_seq* block_var; + if ( + (_keyword = _PyPegen_expect_token(p, 511)) // token='try' + && + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + && + (block_var = block_rule(p)) // block + && + _PyPegen_lookahead(0, _tmp_171_rule, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')")); + _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')")); + } _res = NULL; done: D(p->level--); @@ -20129,7 +20163,7 @@ invalid_except_stmt_rule(Parser *p) && (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_171_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' ) @@ -20163,7 +20197,7 @@ invalid_except_stmt_rule(Parser *p) && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_173_rule(p), 1) // ['as' NAME] && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -20293,7 +20327,7 @@ invalid_except_stmt_indent_rule(Parser *p) && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_173_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_174_rule(p), 1) // ['as' NAME] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20933,7 +20967,7 @@ invalid_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (_opt_var_2 = _tmp_174_rule(p), 1) // ['->' expression] + (_opt_var_2 = _tmp_175_rule(p), 1) // ['->' expression] && (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20989,7 +21023,7 @@ invalid_class_def_raw_rule(Parser *p) && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_175_rule(p), 1) // ['(' arguments? ')'] + (_opt_var = _tmp_176_rule(p), 1) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -21037,11 +21071,11 @@ invalid_double_starred_kvpairs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - asdl_seq * _gather_176_var; + asdl_seq * _gather_177_var; Token * _literal; void *invalid_kvpair_var; if ( - (_gather_176_var = _gather_176_rule(p)) // ','.double_starred_kvpair+ + (_gather_177_var = _gather_177_rule(p)) // ','.double_starred_kvpair+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -21049,7 +21083,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - _res = _PyPegen_dummy_name(p, _gather_176_var, _literal, invalid_kvpair_var); + _res = _PyPegen_dummy_name(p, _gather_177_var, _literal, invalid_kvpair_var); goto done; } p->mark = _mark; @@ -21102,7 +21136,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_178_rule, p) + _PyPegen_lookahead(1, _tmp_179_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -22475,12 +22509,12 @@ _loop1_22_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_179_var; + void *_tmp_180_var; while ( - (_tmp_179_var = _tmp_179_rule(p)) // star_targets '=' + (_tmp_180_var = _tmp_180_rule(p)) // star_targets '=' ) { - _res = _tmp_179_var; + _res = _tmp_180_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22983,12 +23017,12 @@ _loop0_31_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_180_var; + void *_tmp_181_var; while ( - (_tmp_180_var = _tmp_180_rule(p)) // '.' | '...' + (_tmp_181_var = _tmp_181_rule(p)) // '.' | '...' ) { - _res = _tmp_180_var; + _res = _tmp_181_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23049,12 +23083,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_181_var; + void *_tmp_182_var; while ( - (_tmp_181_var = _tmp_181_rule(p)) // '.' | '...' + (_tmp_182_var = _tmp_182_rule(p)) // '.' | '...' ) { - _res = _tmp_181_var; + _res = _tmp_182_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26165,12 +26199,12 @@ _loop1_84_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_182_var; + void *_tmp_183_var; while ( - (_tmp_182_var = _tmp_182_rule(p)) // '@' named_expression NEWLINE + (_tmp_183_var = _tmp_183_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_182_var; + _res = _tmp_183_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26283,12 +26317,12 @@ _loop1_86_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_183_var; + void *_tmp_184_var; while ( - (_tmp_183_var = _tmp_183_rule(p)) // ',' star_expression + (_tmp_184_var = _tmp_184_rule(p)) // ',' star_expression ) { - _res = _tmp_183_var; + _res = _tmp_184_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26468,12 +26502,12 @@ _loop1_89_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_184_var; + void *_tmp_185_var; while ( - (_tmp_184_var = _tmp_184_rule(p)) // ',' expression + (_tmp_185_var = _tmp_185_rule(p)) // ',' expression ) { - _res = _tmp_184_var; + _res = _tmp_185_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27498,12 +27532,12 @@ _loop1_104_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_185_var; + void *_tmp_186_var; while ( - (_tmp_185_var = _tmp_185_rule(p)) // 'or' conjunction + (_tmp_186_var = _tmp_186_rule(p)) // 'or' conjunction ) { - _res = _tmp_185_var; + _res = _tmp_186_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27569,12 +27603,12 @@ _loop1_105_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_186_var; + void *_tmp_187_var; while ( - (_tmp_186_var = _tmp_186_rule(p)) // 'and' inversion + (_tmp_187_var = _tmp_187_rule(p)) // 'and' inversion ) { - _res = _tmp_186_var; + _res = _tmp_187_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28547,12 +28581,12 @@ _loop0_121_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_187_var; + void *_tmp_188_var; while ( - (_tmp_187_var = _tmp_187_rule(p)) // 'if' disjunction + (_tmp_188_var = _tmp_188_rule(p)) // 'if' disjunction ) { - _res = _tmp_187_var; + _res = _tmp_188_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28613,12 +28647,12 @@ _loop0_122_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_188_var; + void *_tmp_189_var; while ( - (_tmp_188_var = _tmp_188_rule(p)) // 'if' disjunction + (_tmp_189_var = _tmp_189_rule(p)) // 'if' disjunction ) { - _res = _tmp_188_var; + _res = _tmp_189_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28684,7 +28718,7 @@ _loop0_124_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_189_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_190_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' ) { _res = elem; @@ -28748,7 +28782,7 @@ _gather_123_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_189_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_190_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' && (seq = _loop0_124_rule(p)) // _loop0_124 ) @@ -29294,12 +29328,12 @@ _loop0_134_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_190_var; + void *_tmp_191_var; while ( - (_tmp_190_var = _tmp_190_rule(p)) // ',' star_target + (_tmp_191_var = _tmp_191_rule(p)) // ',' star_target ) { - _res = _tmp_190_var; + _res = _tmp_191_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29474,12 +29508,12 @@ _loop1_137_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_191_var; + void *_tmp_192_var; while ( - (_tmp_191_var = _tmp_191_rule(p)) // ',' star_target + (_tmp_192_var = _tmp_192_rule(p)) // ',' star_target ) { - _res = _tmp_191_var; + _res = _tmp_192_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30273,12 +30307,12 @@ _loop0_150_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_192_var; + void *_tmp_193_var; while ( - (_tmp_192_var = _tmp_192_rule(p)) // star_targets '=' + (_tmp_193_var = _tmp_193_rule(p)) // star_targets '=' ) { - _res = _tmp_192_var; + _res = _tmp_193_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30339,12 +30373,12 @@ _loop0_151_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_193_var; + void *_tmp_194_var; while ( - (_tmp_193_var = _tmp_193_rule(p)) // star_targets '=' + (_tmp_194_var = _tmp_194_rule(p)) // star_targets '=' ) { - _res = _tmp_193_var; + _res = _tmp_194_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30928,15 +30962,15 @@ _tmp_160_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_194_var; + void *_tmp_195_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_194_var = _tmp_194_rule(p)) // ')' | '**' + (_tmp_195_var = _tmp_195_rule(p)) // ')' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_194_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_195_var); goto done; } p->mark = _mark; @@ -30986,15 +31020,15 @@ _tmp_161_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_195_var; + void *_tmp_196_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_195_var = _tmp_195_rule(p)) // ':' | '**' + (_tmp_196_var = _tmp_196_rule(p)) // ':' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_195_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_196_var); goto done; } p->mark = _mark; @@ -31113,7 +31147,7 @@ _loop0_164_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_196_rule(p)) // expression ['as' star_target] + (elem = _tmp_197_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31176,7 +31210,7 @@ _gather_163_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_196_rule(p)) // expression ['as' star_target] + (elem = _tmp_197_rule(p)) // expression ['as' star_target] && (seq = _loop0_164_rule(p)) // _loop0_164 ) @@ -31227,7 +31261,7 @@ _loop0_166_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_197_rule(p)) // expressions ['as' star_target] + (elem = _tmp_198_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31290,7 +31324,7 @@ _gather_165_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_197_rule(p)) // expressions ['as' star_target] + (elem = _tmp_198_rule(p)) // expressions ['as' star_target] && (seq = _loop0_166_rule(p)) // _loop0_166 ) @@ -31341,7 +31375,7 @@ _loop0_168_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_198_rule(p)) // expression ['as' star_target] + (elem = _tmp_199_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31404,7 +31438,7 @@ _gather_167_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_198_rule(p)) // expression ['as' star_target] + (elem = _tmp_199_rule(p)) // expression ['as' star_target] && (seq = _loop0_168_rule(p)) // _loop0_168 ) @@ -31455,7 +31489,7 @@ _loop0_170_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_199_rule(p)) // expressions ['as' star_target] + (elem = _tmp_200_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31518,7 +31552,7 @@ _gather_169_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_199_rule(p)) // expressions ['as' star_target] + (elem = _tmp_200_rule(p)) // expressions ['as' star_target] && (seq = _loop0_170_rule(p)) // _loop0_170 ) @@ -31537,7 +31571,7 @@ _gather_169_rule(Parser *p) return _res; } -// _tmp_171: 'as' NAME +// _tmp_171: 'except' | 'finally' static void * _tmp_171_rule(Parser *p) { @@ -31548,27 +31582,43 @@ _tmp_171_rule(Parser *p) } void * _res = NULL; int _mark = p->mark; - { // 'as' NAME + { // 'except' if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); Token * _keyword; - expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 520)) // token='as' - && - (name_var = _PyPegen_name_token(p)) // NAME + (_keyword = _PyPegen_expect_token(p, 521)) // token='except' ) { - D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); - _res = _PyPegen_dummy_name(p, _keyword, name_var); + D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); + _res = _keyword; goto done; } p->mark = _mark; D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'")); + } + { // 'finally' + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); + Token * _keyword; + if ( + (_keyword = _PyPegen_expect_token(p, 522)) // token='finally' + ) + { + D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); + _res = _keyword; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'")); } _res = NULL; done: @@ -31654,9 +31704,48 @@ _tmp_173_rule(Parser *p) return _res; } -// _tmp_174: '->' expression +// _tmp_174: 'as' NAME static void * _tmp_174_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // 'as' NAME + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + Token * _keyword; + expr_ty name_var; + if ( + (_keyword = _PyPegen_expect_token(p, 520)) // token='as' + && + (name_var = _PyPegen_name_token(p)) // NAME + ) + { + D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + _res = _PyPegen_dummy_name(p, _keyword, name_var); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + +// _tmp_175: '->' expression +static void * +_tmp_175_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31670,7 +31759,7 @@ _tmp_174_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty expression_var; if ( @@ -31679,12 +31768,12 @@ _tmp_174_rule(Parser *p) (expression_var = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = _PyPegen_dummy_name(p, _literal, expression_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -31693,9 +31782,9 @@ _tmp_174_rule(Parser *p) return _res; } -// _tmp_175: '(' arguments? ')' +// _tmp_176: '(' arguments? ')' static void * -_tmp_175_rule(Parser *p) +_tmp_176_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31709,7 +31798,7 @@ _tmp_175_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -31722,12 +31811,12 @@ _tmp_175_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -31736,9 +31825,9 @@ _tmp_175_rule(Parser *p) return _res; } -// _loop0_177: ',' double_starred_kvpair +// _loop0_178: ',' double_starred_kvpair static asdl_seq * -_loop0_177_rule(Parser *p) +_loop0_178_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31762,7 +31851,7 @@ _loop0_177_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -31793,7 +31882,7 @@ _loop0_177_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_177[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31806,14 +31895,14 @@ _loop0_177_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_177_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_178_type, _seq); D(p->level--); return _seq; } -// _gather_176: double_starred_kvpair _loop0_177 +// _gather_177: double_starred_kvpair _loop0_178 static asdl_seq * -_gather_176_rule(Parser *p) +_gather_177_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31822,27 +31911,27 @@ _gather_176_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_177 + { // double_starred_kvpair _loop0_178 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_177")); + D(fprintf(stderr, "%*c> _gather_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_178")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_177_rule(p)) // _loop0_177 + (seq = _loop0_178_rule(p)) // _loop0_178 ) { - D(fprintf(stderr, "%*c+ _gather_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_177")); + D(fprintf(stderr, "%*c+ _gather_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_178")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_176[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_177")); + D(fprintf(stderr, "%*c%s _gather_177[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_178")); } _res = NULL; done: @@ -31850,9 +31939,9 @@ _gather_176_rule(Parser *p) return _res; } -// _tmp_178: '}' | ',' +// _tmp_179: '}' | ',' static void * -_tmp_178_rule(Parser *p) +_tmp_179_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31866,18 +31955,18 @@ _tmp_178_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -31885,18 +31974,18 @@ _tmp_178_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -31905,9 +31994,9 @@ _tmp_178_rule(Parser *p) return _res; } -// _tmp_179: star_targets '=' +// _tmp_180: star_targets '=' static void * -_tmp_179_rule(Parser *p) +_tmp_180_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31921,7 +32010,7 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -31930,7 +32019,7 @@ _tmp_179_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31940,7 +32029,7 @@ _tmp_179_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -31949,9 +32038,9 @@ _tmp_179_rule(Parser *p) return _res; } -// _tmp_180: '.' | '...' +// _tmp_181: '.' | '...' static void * -_tmp_180_rule(Parser *p) +_tmp_181_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31965,18 +32054,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -31984,18 +32073,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32004,9 +32093,9 @@ _tmp_180_rule(Parser *p) return _res; } -// _tmp_181: '.' | '...' +// _tmp_182: '.' | '...' static void * -_tmp_181_rule(Parser *p) +_tmp_182_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32020,18 +32109,18 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -32039,18 +32128,18 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32059,9 +32148,9 @@ _tmp_181_rule(Parser *p) return _res; } -// _tmp_182: '@' named_expression NEWLINE +// _tmp_183: '@' named_expression NEWLINE static void * -_tmp_182_rule(Parser *p) +_tmp_183_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32075,7 +32164,7 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -32087,7 +32176,7 @@ _tmp_182_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32097,7 +32186,7 @@ _tmp_182_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -32106,9 +32195,9 @@ _tmp_182_rule(Parser *p) return _res; } -// _tmp_183: ',' star_expression +// _tmp_184: ',' star_expression static void * -_tmp_183_rule(Parser *p) +_tmp_184_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32122,7 +32211,7 @@ _tmp_183_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -32131,7 +32220,7 @@ _tmp_183_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32141,7 +32230,7 @@ _tmp_183_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -32150,9 +32239,9 @@ _tmp_183_rule(Parser *p) return _res; } -// _tmp_184: ',' expression +// _tmp_185: ',' expression static void * -_tmp_184_rule(Parser *p) +_tmp_185_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32166,7 +32255,7 @@ _tmp_184_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -32175,7 +32264,7 @@ _tmp_184_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32185,7 +32274,7 @@ _tmp_184_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -32194,9 +32283,9 @@ _tmp_184_rule(Parser *p) return _res; } -// _tmp_185: 'or' conjunction +// _tmp_186: 'or' conjunction static void * -_tmp_185_rule(Parser *p) +_tmp_186_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32210,7 +32299,7 @@ _tmp_185_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -32219,7 +32308,7 @@ _tmp_185_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32229,7 +32318,7 @@ _tmp_185_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -32238,9 +32327,9 @@ _tmp_185_rule(Parser *p) return _res; } -// _tmp_186: 'and' inversion +// _tmp_187: 'and' inversion static void * -_tmp_186_rule(Parser *p) +_tmp_187_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32254,7 +32343,7 @@ _tmp_186_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -32263,7 +32352,7 @@ _tmp_186_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32273,7 +32362,7 @@ _tmp_186_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -32282,9 +32371,9 @@ _tmp_186_rule(Parser *p) return _res; } -// _tmp_187: 'if' disjunction +// _tmp_188: 'if' disjunction static void * -_tmp_187_rule(Parser *p) +_tmp_188_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32298,7 +32387,7 @@ _tmp_187_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32307,7 +32396,7 @@ _tmp_187_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32317,7 +32406,7 @@ _tmp_187_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32326,9 +32415,9 @@ _tmp_187_rule(Parser *p) return _res; } -// _tmp_188: 'if' disjunction +// _tmp_189: 'if' disjunction static void * -_tmp_188_rule(Parser *p) +_tmp_189_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32342,7 +32431,7 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32351,7 +32440,7 @@ _tmp_188_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32361,7 +32450,7 @@ _tmp_188_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32370,9 +32459,9 @@ _tmp_188_rule(Parser *p) return _res; } -// _tmp_189: starred_expression | (assigment_expression | expression !':=') !'=' +// _tmp_190: starred_expression | (assigment_expression | expression !':=') !'=' static void * -_tmp_189_rule(Parser *p) +_tmp_190_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32386,18 +32475,18 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // (assigment_expression | expression !':=') !'=' @@ -32405,20 +32494,20 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - void *_tmp_200_var; + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + void *_tmp_201_var; if ( - (_tmp_200_var = _tmp_200_rule(p)) // assigment_expression | expression !':=' + (_tmp_201_var = _tmp_201_rule(p)) // assigment_expression | expression !':=' && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - _res = _tmp_200_var; + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + _res = _tmp_201_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assigment_expression | expression !':=') !'='")); } _res = NULL; @@ -32427,9 +32516,9 @@ _tmp_189_rule(Parser *p) return _res; } -// _tmp_190: ',' star_target +// _tmp_191: ',' star_target static void * -_tmp_190_rule(Parser *p) +_tmp_191_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32443,7 +32532,7 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32452,7 +32541,7 @@ _tmp_190_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32462,7 +32551,7 @@ _tmp_190_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32471,9 +32560,9 @@ _tmp_190_rule(Parser *p) return _res; } -// _tmp_191: ',' star_target +// _tmp_192: ',' star_target static void * -_tmp_191_rule(Parser *p) +_tmp_192_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32487,7 +32576,7 @@ _tmp_191_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32496,7 +32585,7 @@ _tmp_191_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32506,7 +32595,7 @@ _tmp_191_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32515,9 +32604,9 @@ _tmp_191_rule(Parser *p) return _res; } -// _tmp_192: star_targets '=' +// _tmp_193: star_targets '=' static void * -_tmp_192_rule(Parser *p) +_tmp_193_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32531,7 +32620,7 @@ _tmp_192_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32540,12 +32629,12 @@ _tmp_192_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32554,9 +32643,9 @@ _tmp_192_rule(Parser *p) return _res; } -// _tmp_193: star_targets '=' +// _tmp_194: star_targets '=' static void * -_tmp_193_rule(Parser *p) +_tmp_194_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32570,7 +32659,7 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32579,12 +32668,12 @@ _tmp_193_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32593,9 +32682,9 @@ _tmp_193_rule(Parser *p) return _res; } -// _tmp_194: ')' | '**' +// _tmp_195: ')' | '**' static void * -_tmp_194_rule(Parser *p) +_tmp_195_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32609,18 +32698,18 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -32628,18 +32717,18 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32648,9 +32737,9 @@ _tmp_194_rule(Parser *p) return _res; } -// _tmp_195: ':' | '**' +// _tmp_196: ':' | '**' static void * -_tmp_195_rule(Parser *p) +_tmp_196_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32664,18 +32753,18 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -32683,18 +32772,18 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32703,9 +32792,9 @@ _tmp_195_rule(Parser *p) return _res; } -// _tmp_196: expression ['as' star_target] +// _tmp_197: expression ['as' star_target] static void * -_tmp_196_rule(Parser *p) +_tmp_197_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32719,22 +32808,22 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_201_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32743,9 +32832,9 @@ _tmp_196_rule(Parser *p) return _res; } -// _tmp_197: expressions ['as' star_target] +// _tmp_198: expressions ['as' star_target] static void * -_tmp_197_rule(Parser *p) +_tmp_198_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32759,22 +32848,22 @@ _tmp_197_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32783,9 +32872,9 @@ _tmp_197_rule(Parser *p) return _res; } -// _tmp_198: expression ['as' star_target] +// _tmp_199: expression ['as' star_target] static void * -_tmp_198_rule(Parser *p) +_tmp_199_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32799,22 +32888,22 @@ _tmp_198_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32823,9 +32912,9 @@ _tmp_198_rule(Parser *p) return _res; } -// _tmp_199: expressions ['as' star_target] +// _tmp_200: expressions ['as' star_target] static void * -_tmp_199_rule(Parser *p) +_tmp_200_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32839,22 +32928,22 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_205_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32863,9 +32952,9 @@ _tmp_199_rule(Parser *p) return _res; } -// _tmp_200: assigment_expression | expression !':=' +// _tmp_201: assigment_expression | expression !':=' static void * -_tmp_200_rule(Parser *p) +_tmp_201_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32879,18 +32968,18 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); expr_ty assigment_expression_var; if ( (assigment_expression_var = assigment_expression_rule(p)) // assigment_expression ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); _res = assigment_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assigment_expression")); } { // expression !':=' @@ -32898,7 +32987,7 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression @@ -32906,12 +32995,12 @@ _tmp_200_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; @@ -32920,9 +33009,9 @@ _tmp_200_rule(Parser *p) return _res; } -// _tmp_201: 'as' star_target +// _tmp_202: 'as' star_target static void * -_tmp_201_rule(Parser *p) +_tmp_202_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32936,7 +33025,7 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32945,12 +33034,12 @@ _tmp_201_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32959,9 +33048,9 @@ _tmp_201_rule(Parser *p) return _res; } -// _tmp_202: 'as' star_target +// _tmp_203: 'as' star_target static void * -_tmp_202_rule(Parser *p) +_tmp_203_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32975,7 +33064,7 @@ _tmp_202_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32984,12 +33073,12 @@ _tmp_202_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32998,9 +33087,9 @@ _tmp_202_rule(Parser *p) return _res; } -// _tmp_203: 'as' star_target +// _tmp_204: 'as' star_target static void * -_tmp_203_rule(Parser *p) +_tmp_204_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33014,7 +33103,7 @@ _tmp_203_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33023,12 +33112,12 @@ _tmp_203_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33037,9 +33126,9 @@ _tmp_203_rule(Parser *p) return _res; } -// _tmp_204: 'as' star_target +// _tmp_205: 'as' star_target static void * -_tmp_204_rule(Parser *p) +_tmp_205_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33053,7 +33142,7 @@ _tmp_204_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33062,12 +33151,12 @@ _tmp_204_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; From webhook-mailer at python.org Thu Jun 3 19:37:51 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 03 Jun 2021 23:37:51 -0000 Subject: [Python-checkins] bpo-32280: Store _PyRuntime in a named section (GH-4802) Message-ID: https://github.com/python/cpython/commit/35002aa8f62dda1f79035e9904abdf476683e9be commit: 35002aa8f62dda1f79035e9904abdf476683e9be branch: main author: Max B?langer committer: pablogsal date: 2021-06-04T00:37:29+01:00 summary: bpo-32280: Store _PyRuntime in a named section (GH-4802) This commit stores the _PyRuntime structure in a section of the same name. This allows a debugging or crash reporting tool to quickly locate this structure at runtime without requiring the symbol table. Co-authored-by: Pablo Galindo files: M Python/pylifecycle.c diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 2dbebe45fd4b0..d31a9c15fd1ec 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -17,6 +17,10 @@ #include // setlocale() +#if defined(__APPLE__) +#include +#endif + #ifdef HAVE_SIGNAL_H # include // SIG_IGN #endif @@ -34,7 +38,6 @@ (PyObject_TypeCheck((op), &PyWindowsConsoleIO_Type)) #endif - #define PUTS(fd, str) _Py_write_noraise(fd, str, (int)strlen(str)) @@ -59,7 +62,30 @@ static void wait_for_thread_shutdown(PyThreadState *tstate); static void call_ll_exitfuncs(_PyRuntimeState *runtime); int _Py_UnhandledKeyboardInterrupt = 0; -_PyRuntimeState _PyRuntime = _PyRuntimeState_INIT; + +/* The following places the `_PyRuntime` structure in a location that can be + * found without any external information. This is meant to ease access to the + * interpreter state for various runtime debugging tools, but is *not* an + * officially supported feature */ + +#if defined(MS_WINDOWS) + +#pragma section("PyRuntime", read, write) +__declspec(allocate("PyRuntime")) + +#elif defined(__APPLE__) + +__attribute__(( + section(SEG_DATA ",PyRuntime") +)) + +#endif + +_PyRuntimeState _PyRuntime +#if defined(__linux__) && (defined(__GNUC__) || defined(__clang__)) +__attribute__ ((section (".PyRuntime"))) +#endif += _PyRuntimeState_INIT; static int runtime_initialized = 0; PyStatus From webhook-mailer at python.org Thu Jun 3 20:04:04 2021 From: webhook-mailer at python.org (ericsnowcurrently) Date: Fri, 04 Jun 2021 00:04:04 -0000 Subject: [Python-checkins] bpo-43693: Compute deref offsets in compiler (gh-25152) Message-ID: https://github.com/python/cpython/commit/b2bf2bc1ece673d387341e06c8d3c2bc6e259747 commit: b2bf2bc1ece673d387341e06c8d3c2bc6e259747 branch: main author: Mark Shannon committer: ericsnowcurrently date: 2021-06-03T18:03:54-06:00 summary: bpo-43693: Compute deref offsets in compiler (gh-25152) Merges locals and cells into a single array. Saves a pointer in the interpreter and means that we don't need the LOAD_CLOSURE opcode any more https://bugs.python.org/issue43693 files: A Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst M Doc/library/dis.rst M Lib/dis.py M Lib/importlib/_bootstrap_external.py M Lib/test/test_dis.py M Objects/clinic/codeobject.c.h M Objects/codeobject.c M Python/ceval.c M Python/compile.c M Python/importlib.h M Python/importlib_external.h diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index eaa001c2fcecc5..bc206f7d2e96af 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1058,16 +1058,24 @@ All of the following opcodes use their arguments. .. opcode:: LOAD_CLOSURE (i) - Pushes a reference to the cell contained in slot *i* of the cell and free - variable storage. The name of the variable is - ``co_fastlocalnames[i + len(co_varnames)]``. + Pushes a reference to the cell contained in slot ``i`` of the "fast locals" + storage. The name of the variable is ``co_fastlocalnames[i]``. + + Note that ``LOAD_CLOSURE`` is effectively an alias for ``LOAD_FAST``. + It exists to keep bytecode a little more readable. + + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. .. opcode:: LOAD_DEREF (i) - Loads the cell contained in slot *i* of the cell and free variable storage. + Loads the cell contained in slot ``i`` of the "fast locals" storage. Pushes a reference to the object the cell contains on the stack. + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. + .. opcode:: LOAD_CLASSDEREF (i) @@ -1077,20 +1085,29 @@ All of the following opcodes use their arguments. .. versionadded:: 3.4 + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. + .. opcode:: STORE_DEREF (i) - Stores TOS into the cell contained in slot *i* of the cell and free variable + Stores TOS into the cell contained in slot ``i`` of the "fast locals" storage. + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. + .. opcode:: DELETE_DEREF (i) - Empties the cell contained in slot *i* of the cell and free variable storage. + Empties the cell contained in slot ``i`` of the "fast locals" storage. Used by the :keyword:`del` statement. .. versionadded:: 3.2 + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. + .. opcode:: RAISE_VARARGS (argc) diff --git a/Lib/dis.py b/Lib/dis.py index dfadad79d2dfd1..48a6ab8e41df3f 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -378,14 +378,11 @@ def _get_instructions_bytes(code, varname_from_oparg=None, elif op in hasjrel: argval = offset + 2 + arg*2 argrepr = "to " + repr(argval) - elif op in haslocal: + elif op in haslocal or op in hasfree: argval, argrepr = _get_name_info(arg, varname_from_oparg) elif op in hascompare: argval = cmp_op[arg] argrepr = argval - elif op in hasfree: - argval, argrepr = _get_name_info(arg, varname_from_oparg, - cell=True) elif op == FORMAT_VALUE: argval, argrepr = FORMAT_VALUE_CONVERTERS[arg & 0x3] argval = (argval, bool(arg & 0x4)) diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index b2d8a70996b90f..39552186c8735d 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -356,6 +356,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3451 (Add CALL_METHOD_KW) # Python 3.11a1 3452 (drop nlocals from marshaled code objects) # Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds) +# Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -365,7 +366,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3453).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3454).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index f341a3e5750349..b119d183d66c10 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -427,7 +427,7 @@ def foo(x): return foo dis_nested_0 = """\ -%3d 0 LOAD_CLOSURE 0 (y) +%3d 0 LOAD_CLOSURE 2 (y) 2 BUILD_TUPLE 1 4 LOAD_CONST 1 () 6 LOAD_CONST 2 ('_h..foo') @@ -444,12 +444,12 @@ def foo(x): dis_nested_1 = """%s Disassembly of : -%3d 0 LOAD_CLOSURE 0 (x) +%3d 0 LOAD_CLOSURE 1 (x) 2 BUILD_TUPLE 1 4 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) 6 LOAD_CONST 2 ('_h..foo..') 8 MAKE_FUNCTION 8 (closure) - 10 LOAD_DEREF 1 (y) + 10 LOAD_DEREF 2 (y) 12 GET_ITER 14 CALL_FUNCTION 1 16 RETURN_VALUE @@ -467,7 +467,7 @@ def foo(x): 2 LOAD_FAST 0 (.0) >> 4 FOR_ITER 6 (to 18) 6 STORE_FAST 1 (z) - 8 LOAD_DEREF 0 (x) + 8 LOAD_DEREF 2 (x) 10 LOAD_FAST 1 (z) 12 BINARY_ADD 14 LIST_APPEND 2 @@ -962,16 +962,16 @@ def jumpy(): Instruction = dis.Instruction expected_opinfo_outer = [ Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=0, starts_line=2, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=6, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=10, starts_line=None, is_jump_target=False), Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=14, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=16, starts_line=7, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=22, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=24, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=26, starts_line=None, is_jump_target=False), @@ -985,20 +985,20 @@ def jumpy(): expected_opinfo_f = [ Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=0, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=5, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=6, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=12, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=14, starts_line=None, is_jump_target=False), Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=18, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=6, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=30, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=32, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=34, starts_line=6, is_jump_target=False), @@ -1007,10 +1007,10 @@ def jumpy(): expected_opinfo_inner = [ Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=0, starts_line=4, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6, argrepr='', offset=14, starts_line=None, is_jump_target=False), diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst new file mode 100644 index 00000000000000..948c4d52482dc0 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst @@ -0,0 +1,4 @@ +Compute cell offsets relative to locals in compiler. Allows the interpreter +to treats locals and cells a single array, which is slightly more efficient. +Also make the LOAD_CLOSURE opcode an alias for LOAD_FAST. Preserving +LOAD_CLOSURE helps keep bytecode a bit more readable. diff --git a/Objects/clinic/codeobject.c.h b/Objects/clinic/codeobject.c.h index 629d26580c6fe3..c1ad09cea05890 100644 --- a/Objects/clinic/codeobject.c.h +++ b/Objects/clinic/codeobject.c.h @@ -375,7 +375,7 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje } PyDoc_STRVAR(code__varname_from_oparg__doc__, -"_varname_from_oparg($self, /, oparg, *, cell=False)\n" +"_varname_from_oparg($self, /, oparg)\n" "--\n" "\n" "(internal-only) Return the local variable name for the given oparg.\n" @@ -386,18 +386,16 @@ PyDoc_STRVAR(code__varname_from_oparg__doc__, {"_varname_from_oparg", (PyCFunction)(void(*)(void))code__varname_from_oparg, METH_FASTCALL|METH_KEYWORDS, code__varname_from_oparg__doc__}, static PyObject * -code__varname_from_oparg_impl(PyCodeObject *self, int oparg, int cell); +code__varname_from_oparg_impl(PyCodeObject *self, int oparg); static PyObject * code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { PyObject *return_value = NULL; - static const char * const _keywords[] = {"oparg", "cell", NULL}; + static const char * const _keywords[] = {"oparg", NULL}; static _PyArg_Parser _parser = {NULL, _keywords, "_varname_from_oparg", 0}; - PyObject *argsbuf[2]; - Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; + PyObject *argsbuf[1]; int oparg; - int cell = 0; args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); if (!args) { @@ -407,17 +405,9 @@ code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t n if (oparg == -1 && PyErr_Occurred()) { goto exit; } - if (!noptargs) { - goto skip_optional_kwonly; - } - cell = PyObject_IsTrue(args[1]); - if (cell < 0) { - goto exit; - } -skip_optional_kwonly: - return_value = code__varname_from_oparg_impl(self, oparg, cell); + return_value = code__varname_from_oparg_impl(self, oparg); exit: return return_value; } -/*[clinic end generated code: output=43f4eef80d584fe0 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=ba4c5487e0364ce8 input=a9049054013a1b77]*/ diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 051aefece334fd..b82a1b5fb8f7b4 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -1547,8 +1547,6 @@ code_replace_impl(PyCodeObject *self, int co_argcount, code._varname_from_oparg oparg: int - * - cell: bool = False (internal-only) Return the local variable name for the given oparg. @@ -1556,12 +1554,9 @@ WARNING: this method is for internal use only and may change or go away. [clinic start generated code]*/ static PyObject * -code__varname_from_oparg_impl(PyCodeObject *self, int oparg, int cell) -/*[clinic end generated code: output=c7d39c9723692c8f input=2945bb291d3a3118]*/ +code__varname_from_oparg_impl(PyCodeObject *self, int oparg) +/*[clinic end generated code: output=1fd1130413184206 input=c5fa3ee9bac7d4ca]*/ { - if (cell) { - oparg += self->co_nlocals; - } PyObject *name = PyTuple_GetItem(self->co_localsplusnames, oparg); if (name == NULL) { return NULL; diff --git a/Python/ceval.c b/Python/ceval.c index 4e16322daa5092..7602ac9eaf5260 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1569,7 +1569,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) const _Py_CODEUNIT *next_instr; int opcode; /* Current opcode */ int oparg; /* Current opcode argument, if any */ - PyObject **localsplus, **freevars, **specials; + PyObject **localsplus, **specials; PyObject *retval = NULL; /* Return value */ _Py_atomic_int * const eval_breaker = &tstate->interp->ceval.eval_breaker; PyCodeObject *co; @@ -1647,7 +1647,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) names = co->co_names; consts = co->co_consts; localsplus = f->f_localsptr; - freevars = f->f_localsptr + co->co_nlocals; assert(PyBytes_Check(co->co_code)); assert(PyBytes_GET_SIZE(co->co_code) <= INT_MAX); assert(PyBytes_GET_SIZE(co->co_code) % sizeof(_Py_CODEUNIT) == 0); @@ -1820,6 +1819,8 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) DISPATCH(); } + /* We keep LOAD_CLOSURE so that the bytecode stays more readable. */ + case TARGET(LOAD_CLOSURE): case TARGET(LOAD_FAST): { PyObject *value = GETLOCAL(oparg); if (value == NULL) { @@ -3060,7 +3061,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } case TARGET(DELETE_DEREF): { - PyObject *cell = freevars[oparg]; + PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); if (oldobj != NULL) { PyCell_SET(cell, NULL); @@ -3071,21 +3072,11 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) goto error; } - case TARGET(LOAD_CLOSURE): { - PyObject *cell = freevars[oparg]; - Py_INCREF(cell); - PUSH(cell); - DISPATCH(); - } - case TARGET(LOAD_CLASSDEREF): { PyObject *name, *value, *locals = LOCALS(); - Py_ssize_t idx; assert(locals); - assert(oparg >= co->co_ncellvars); - idx = oparg + co->co_nlocals; - assert(idx < co->co_nlocalsplus); - name = PyTuple_GET_ITEM(co->co_localsplusnames, idx); + assert(oparg >= 0 && oparg < co->co_nlocalsplus); + name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg); if (PyDict_CheckExact(locals)) { value = PyDict_GetItemWithError(locals, name); if (value != NULL) { @@ -3105,7 +3096,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } } if (!value) { - PyObject *cell = freevars[oparg]; + PyObject *cell = GETLOCAL(oparg); value = PyCell_GET(cell); if (value == NULL) { format_exc_unbound(tstate, co, oparg); @@ -3118,7 +3109,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } case TARGET(LOAD_DEREF): { - PyObject *cell = freevars[oparg]; + PyObject *cell = GETLOCAL(oparg); PyObject *value = PyCell_GET(cell); if (value == NULL) { format_exc_unbound(tstate, co, oparg); @@ -3131,7 +3122,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) case TARGET(STORE_DEREF): { PyObject *v = POP(); - PyObject *cell = freevars[oparg]; + PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); PyCell_SET(cell, v); Py_XDECREF(oldobj); @@ -4882,7 +4873,6 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, { PyCodeObject *co = (PyCodeObject*)con->fc_code; const Py_ssize_t total_args = co->co_argcount + co->co_kwonlyargcount; - PyObject **freevars = localsplus + co->co_nlocals; /* Create a dictionary for keyword parameters (**kwags) */ PyObject *kwdict; @@ -5086,7 +5076,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, for (i = 0; i < co->co_nfreevars; ++i) { PyObject *o = PyTuple_GET_ITEM(con->fc_closure, i); Py_INCREF(o); - freevars[co->co_ncellvars + i] = o; + localsplus[co->co_nlocals + co->co_ncellvars + i] = o; } return 0; @@ -6419,8 +6409,8 @@ format_exc_unbound(PyThreadState *tstate, PyCodeObject *co, int oparg) /* Don't stomp existing exception */ if (_PyErr_Occurred(tstate)) return; - name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg + co->co_nlocals); - if (oparg < co->co_ncellvars) { + name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg); + if (oparg < co->co_ncellvars + co->co_nlocals) { format_exc_check_arg(tstate, PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, name); } else { @@ -6472,9 +6462,7 @@ unicode_concatenate(PyThreadState *tstate, PyObject *v, PyObject *w, } case STORE_DEREF: { - PyObject **freevars = (f->f_localsptr + - f->f_code->co_nlocals); - PyObject *c = freevars[oparg]; + PyObject *c = f->f_localsptr[oparg]; if (PyCell_GET(c) == v) { PyCell_SET(c, NULL); Py_DECREF(v); diff --git a/Python/compile.c b/Python/compile.c index b0c9f3c4d561c9..110425000c8639 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -7435,6 +7435,24 @@ guarantee_lineno_for_exits(struct assembler *a, int firstlineno) { } } +static void +offset_derefs(basicblock *entryblock, int nlocals) +{ + for (basicblock *b = entryblock; b != NULL; b = b->b_next) { + for (int i = 0; i < b->b_iused; i++) { + struct instr *inst = &b->b_instr[i]; + switch(inst->i_opcode) { + case LOAD_CLOSURE: + case LOAD_DEREF: + case STORE_DEREF: + case DELETE_DEREF: + case LOAD_CLASSDEREF: + inst->i_oparg += nlocals; + } + } + } +} + static PyCodeObject * assemble(struct compiler *c, int addNone) { @@ -7490,6 +7508,9 @@ assemble(struct compiler *c, int addNone) a.a_entry = entryblock; a.a_nblocks = nblocks; + assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); + offset_derefs(entryblock, (int)PyDict_GET_SIZE(c->u->u_varnames)); + consts = consts_dict_keys_inorder(c->u->u_consts); if (consts == NULL) { goto error; diff --git a/Python/importlib.h b/Python/importlib.h index 77b0bf78bf1522..1c59989743c801 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -430,15 +430,15 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,243,26,0,0,0,135,0,102,1,100,1,100, - 2,132,8,125,1,116,0,124,1,136,0,131,2,1,0,124, + 3,0,0,0,243,26,0,0,0,135,2,102,1,100,1,100, + 2,132,8,125,1,116,0,124,1,136,2,131,2,1,0,124, 1,83,0,41,4,122,49,68,101,99,111,114,97,116,111,114, 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, 0,0,0,0,0,4,0,0,0,19,0,0,0,115,38,0, 0,0,124,1,116,0,106,1,118,1,114,14,116,2,100,1, - 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,0, + 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,2, 124,0,124,1,131,2,83,0,41,3,78,250,29,123,33,114, 125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116, 45,105,110,32,109,111,100,117,108,101,114,19,0,0,0,41, @@ -466,7 +466,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, - 2,141,2,130,1,136,0,124,0,124,1,131,2,83,0,169, + 2,141,2,130,1,136,2,124,0,124,1,131,2,83,0,169, 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, diff --git a/Python/importlib_external.h b/Python/importlib_external.h index cf3fcb762db864..69dc6cad421c1c 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -94,7 +94,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, 115,62,0,0,0,116,0,106,1,160,2,116,3,161,1,114, 25,116,0,106,1,160,2,116,4,161,1,114,15,100,1,137, - 0,110,2,100,2,137,0,135,0,102,1,100,3,100,4,132, + 1,110,2,100,2,137,1,135,1,102,1,100,3,100,4,132, 8,125,0,124,0,83,0,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, @@ -223,15 +223,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, 0,0,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, + 0,0,116,0,135,2,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,19, - 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, + 100,4,136,2,102,2,83,0,136,2,100,5,124,1,133,2, + 25,0,136,2,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,4,0,0,0,51,0,0,0,115,26,0, - 0,0,129,0,124,0,93,8,125,1,136,0,160,0,124,1, + 0,0,129,0,124,0,93,8,125,1,136,2,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,41,3,114,5,0,0,0,114, 52,0,0,0,114,65,0,0,0,32,32,128,114,7,0,0, @@ -355,7 +355,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 176,3,47,11,179,9,62,0,190,7,65,22,7,193,6,5, 65,12,6,193,11,1,65,22,7,193,12,7,65,21,13,193, 19,3,65,22,7,193,23,1,65,21,13,193,24,1,65,22, - 7,114,95,0,0,0,105,125,13,0,0,114,45,0,0,0, + 7,114,95,0,0,0,105,126,13,0,0,114,45,0,0,0, 114,33,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,119,122,4,46,112,121,99, @@ -469,7 +469,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,32,32,32,32,32,32,32, 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, - 101,95,102,114,111,109,95,115,111,117,114,99,101,128,1,0, + 101,95,102,114,111,109,95,115,111,117,114,99,101,129,1,0, 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, 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,1,8,2,8,1,8,1, @@ -550,7 +550,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,32,32,32,32,32,32, 32,32,32,32,114,7,0,0,0,218,17,115,111,117,114,99, - 101,95,102,114,111,109,95,99,97,99,104,101,199,1,0,0, + 101,95,102,114,111,109,95,99,97,99,104,101,200,1,0,0, 115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1,10, @@ -585,7 +585,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 112,97,116,104,114,119,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,32,32,32,32,32,114,7,0,0,0,218,15, - 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,239, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,240, 1,0,0,115,26,0,0,0,12,7,4,1,16,1,24,1, 4,1,2,1,10,1,2,128,16,1,16,1,2,128,16,1, 2,254,115,12,0,0,0,159,4,36,0,164,15,53,7,190, @@ -599,7 +599,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 58,0,0,0,218,5,116,117,112,108,101,114,127,0,0,0, 114,121,0,0,0,114,107,0,0,0,114,113,0,0,0,41, 1,114,120,0,0,0,32,114,7,0,0,0,218,11,95,103, - 101,116,95,99,97,99,104,101,100,2,2,0,0,115,22,0, + 101,116,95,99,97,99,104,101,100,3,2,0,0,115,22,0, 0,0,14,1,2,1,8,1,2,128,12,1,6,1,2,128, 14,1,4,1,4,2,2,251,115,12,0,0,0,136,3,12, 0,140,7,22,7,162,1,22,7,114,137,0,0,0,99,1, @@ -614,15 +614,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 108,101,46,114,87,0,0,0,233,128,0,0,0,78,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,32,32,114,7,0, - 0,0,218,10,95,99,97,108,99,95,109,111,100,101,14,2, + 0,0,218,10,95,99,97,108,99,95,109,111,100,101,15,2, 0,0,115,18,0,0,0,2,2,12,1,2,128,12,1,8, 1,2,128,8,3,4,1,2,251,115,12,0,0,0,129,5, 7,0,135,9,18,7,153,1,18,7,114,139,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,52,0,0,0,100,6,135,0,102,1,100, + 3,0,0,0,115,52,0,0,0,100,6,135,3,102,1,100, 2,100,3,132,9,125,1,116,0,100,1,117,1,114,15,116, 0,106,1,125,2,110,4,100,4,100,5,132,0,125,2,124, - 2,124,1,136,0,131,2,1,0,124,1,83,0,41,7,122, + 2,124,1,136,3,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, @@ -643,7 +643,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,115,76,0,0,0,124,1,100,0,117,0,114,8, 124,0,106,0,125,1,110,18,124,0,106,0,124,1,107,3, 114,26,116,1,100,1,124,0,106,0,155,1,100,2,124,1, - 155,1,157,4,124,1,100,3,141,2,130,1,136,0,124,0, + 155,1,157,4,124,1,100,3,141,2,130,1,136,4,124,0, 124,1,103,2,124,2,162,1,82,0,105,0,124,3,164,1, 142,1,83,0,41,4,78,122,11,108,111,97,100,101,114,32, 102,111,114,32,122,15,32,99,97,110,110,111,116,32,104,97, @@ -653,7 +653,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,114,103,115,218,6,107,119,97,114,103,115,218,6,109,101, 116,104,111,100,32,32,32,32,128,114,7,0,0,0,218,19, 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, - 112,101,114,34,2,0,0,115,18,0,0,0,8,1,8,1, + 112,101,114,35,2,0,0,115,18,0,0,0,8,1,8,1, 10,1,4,1,12,1,2,255,2,1,6,255,24,2,114,9, 0,0,0,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, @@ -671,14 +671,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,85,0,0, 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, - 47,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, + 48,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, 128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218,10,95,98,111, 111,116,115,116,114,97,112,114,157,0,0,0,41,4,114,146, 0,0,0,114,147,0,0,0,114,157,0,0,0,114,146,0, 0,0,96,32,32,64,114,7,0,0,0,218,11,95,99,104, - 101,99,107,95,110,97,109,101,26,2,0,0,115,12,0,0, + 101,99,107,95,110,97,109,101,27,2,0,0,115,12,0,0, 0,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, @@ -713,7 +713,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 218,6,108,111,97,100,101,114,218,8,112,111,114,116,105,111, 110,115,218,3,109,115,103,32,32,32,32,32,114,7,0,0, 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, - 115,104,105,109,57,2,0,0,115,16,0,0,0,6,7,2, + 115,104,105,109,58,2,0,0,115,16,0,0,0,6,7,2, 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, 0,0,0,0,4,0,0,0,67,0,0,0,115,166,0,0, @@ -780,7 +780,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, - 115,115,105,102,121,95,112,121,99,77,2,0,0,115,28,0, + 115,115,105,102,121,95,112,121,99,78,2,0,0,115,28,0, 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, @@ -835,7 +835,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,95,115,105,122,101,114,141,0,0,0,114,174,0,0,0, 114,117,0,0,0,32,32,32,32,32,32,114,7,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,110,2,0,0,115,18,0, + 115,116,97,109,112,95,112,121,99,111,2,0,0,115,18,0, 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, @@ -881,7 +881,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, - 95,104,97,115,104,95,112,121,99,138,2,0,0,115,14,0, + 95,104,97,115,104,95,112,121,99,139,2,0,0,115,14,0, 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, @@ -905,7 +905,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, - 111,100,101,162,2,0,0,115,18,0,0,0,10,2,10,1, + 111,100,101,163,2,0,0,115,18,0,0,0,10,2,10,1, 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, 0,0,0,0,0,5,0,0,0,67,0,0,0,115,70,0, @@ -923,7 +923,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, 32,32,32,32,114,7,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,175,2,0,0,115,12,0,0,0,8,2,14,1,14,1, + 99,176,2,0,0,115,12,0,0,0,8,2,14,1,14,1, 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, 84,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, 0,0,67,0,0,0,115,80,0,0,0,116,0,116,1,131, @@ -941,7 +941,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, - 99,185,2,0,0,115,14,0,0,0,8,2,12,1,14,1, + 99,186,2,0,0,115,14,0,0,0,8,2,12,1,14,1, 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,6, 0,0,0,67,0,0,0,115,62,0,0,0,100,1,100,2, @@ -968,7 +968,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,32,32,32, 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, - 115,111,117,114,99,101,196,2,0,0,115,10,0,0,0,8, + 115,111,117,114,99,101,197,2,0,0,115,10,0,0,0,8, 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, 0,0,0,169,2,114,163,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, @@ -1033,7 +1033,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 8,115,117,102,102,105,120,101,115,114,205,0,0,0,90,7, 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, 114,7,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,213,2, + 95,102,105,108,101,95,108,111,99,97,116,105,111,110,214,2, 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, @@ -1075,7 +1075,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, - 111,112,101,110,95,114,101,103,105,115,116,114,121,42,3,0, + 111,112,101,110,95,114,101,103,105,115,116,114,121,43,3,0, 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, 7,153,1,24,7,122,36,87,105,110,100,111,119,115,82,101, @@ -1104,7 +1104,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, - 105,115,116,114,121,49,3,0,0,115,34,0,0,0,6,2, + 105,115,116,114,121,50,3,0,0,115,34,0,0,0,6,2, 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, @@ -1129,7 +1129,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,64,3,0, + 0,0,218,9,102,105,110,100,95,115,112,101,99,65,3,0, 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, @@ -1158,7 +1158,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, - 105,110,100,95,109,111,100,117,108,101,80,3,0,0,115,14, + 105,110,100,95,109,111,100,117,108,101,81,3,0,0,115,14, 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, 2,114,9,0,0,0,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, @@ -1171,7 +1171,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,213,0,0,0,30,3,0,0,115,30,0,0,0,8, + 0,114,213,0,0,0,31,3,0,0,115,30,0,0,0,8, 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, 0,0,114,213,0,0,0,99,0,0,0,0,0,0,0,0, @@ -1207,7 +1207,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, - 0,102,3,0,0,115,8,0,0,0,18,3,16,1,14,1, + 0,103,3,0,0,115,8,0,0,0,18,3,16,1,14,1, 16,1,114,9,0,0,0,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,1,0, @@ -1217,7 +1217,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,114,101,97,116,105,111,110,46,78,114,12,0,0,0,169, 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, - 101,110,3,0,0,243,2,0,0,0,4,0,114,9,0,0, + 101,111,3,0,0,243,2,0,0,0,4,0,114,9,0,0, 0,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,5,0,0,0,67, @@ -1236,7 +1236,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,95,114,101,109,111,118,101,100,218,4,101,120,101,99,114, 155,0,0,0,41,3,114,143,0,0,0,218,6,109,111,100, 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, - 218,11,101,120,101,99,95,109,111,100,117,108,101,113,3,0, + 218,11,101,120,101,99,95,109,111,100,117,108,101,114,3,0, 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, 20,2,114,9,0,0,0,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, @@ -1248,13 +1248,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,108,111,97,100,95,109,111,100,117,108,101,95,115,104,105, 109,169,2,114,143,0,0,0,114,162,0,0,0,32,32,114, 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, - 101,121,3,0,0,115,2,0,0,0,12,3,114,9,0,0, + 101,122,3,0,0,115,2,0,0,0,12,3,114,9,0,0, 0,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,205,0,0,0,114,238,0,0,0,114,244,0, 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,234,0,0,0,97,3,0,0,115,12,0,0,0,8, + 0,114,234,0,0,0,98,3,0,0,115,12,0,0,0,8, 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, 114,234,0,0,0,99,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, @@ -1278,7 +1278,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,143,0,0,0,114, 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, - 104,95,109,116,105,109,101,129,3,0,0,115,2,0,0,0, + 104,95,109,116,105,109,101,130,3,0,0,115,2,0,0,0, 4,6,114,9,0,0,0,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,4,0,0, @@ -1312,7 +1312,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 108,101,100,46,10,32,32,32,32,32,32,32,32,114,192,0, 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, - 116,115,137,3,0,0,115,2,0,0,0,14,12,114,9,0, + 116,115,138,3,0,0,115,2,0,0,0,14,12,114,9,0, 0,0,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,67,0,0,0, @@ -1335,7 +1335,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, - 97,99,104,101,95,98,121,116,101,99,111,100,101,151,3,0, + 97,99,104,101,95,98,121,116,101,99,111,100,101,152,3,0, 0,115,2,0,0,0,12,8,114,9,0,0,0,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, @@ -1352,7 +1352,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 102,105,108,101,115,46,10,32,32,32,32,32,32,32,32,78, 114,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, - 0,0,0,161,3,0,0,114,239,0,0,0,114,9,0,0, + 0,0,0,162,3,0,0,114,239,0,0,0,114,9,0,0, 0,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,8,0,0,0,67,0,0,0,115,70,0, @@ -1372,7 +1372,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, - 168,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, + 169,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, 150,7,29,7,157,4,33,7,162,1,33,7,122,23,83,111, @@ -1395,7 +1395,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, - 111,117,114,99,101,95,116,111,95,99,111,100,101,178,3,0, + 111,117,114,99,101,95,116,111,95,99,111,100,101,179,3,0, 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, 0,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, @@ -1473,7 +1473,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,32,32,32,32, 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, - 114,240,0,0,0,186,3,0,0,115,188,0,0,0,10,7, + 114,240,0,0,0,187,3,0,0,115,188,0,0,0,10,7, 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, @@ -1496,7 +1496,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,150,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,12,0,0,0, - 114,7,0,0,0,114,248,0,0,0,127,3,0,0,115,16, + 114,7,0,0,0,114,248,0,0,0,128,3,0,0,115,16, 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, @@ -1523,7 +1523,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,104,101,10,32,32,32,32,32,32,32,32,102,105,110,100, 101,114,46,78,114,182,0,0,0,41,3,114,143,0,0,0, 114,162,0,0,0,114,65,0,0,0,32,32,32,114,7,0, - 0,0,114,235,0,0,0,20,4,0,0,115,4,0,0,0, + 0,0,114,235,0,0,0,21,4,0,0,115,4,0,0,0, 6,3,10,1,114,9,0,0,0,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,67, @@ -1532,7 +1532,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,143,0,0,0,90,5, 111,116,104,101,114,32,32,114,7,0,0,0,218,6,95,95, - 101,113,95,95,26,4,0,0,243,6,0,0,0,12,1,10, + 101,113,95,95,27,4,0,0,243,6,0,0,0,12,1,10, 1,2,255,114,9,0,0,0,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,3,0,0,0,67,0,0,0, @@ -1540,7 +1540,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,106,2,131,1,65,0,83,0,114,69,0,0,0,169,3, 218,4,104,97,115,104,114,141,0,0,0,114,65,0,0,0, 169,1,114,143,0,0,0,32,114,7,0,0,0,218,8,95, - 95,104,97,115,104,95,95,30,4,0,0,243,2,0,0,0, + 95,104,97,115,104,95,95,31,4,0,0,243,2,0,0,0, 20,1,114,9,0,0,0,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,3,0,0,0,3,0,0, @@ -1555,7 +1555,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,218,5,115,117,112,101,114,114,10,1,0,0,114,247,0, 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,13, 1,0,0,32,32,128,114,7,0,0,0,114,247,0,0,0, - 33,4,0,0,115,2,0,0,0,16,10,114,9,0,0,0, + 34,4,0,0,115,2,0,0,0,16,10,114,9,0,0,0, 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,1,0,0,0,67,0,0,0,243,6,0, @@ -1564,7 +1564,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,78,114,74,0,0,0,114,246,0,0, - 0,32,32,114,7,0,0,0,114,202,0,0,0,45,4,0, + 0,32,32,114,7,0,0,0,114,202,0,0,0,46,4,0, 0,243,2,0,0,0,6,3,114,9,0,0,0,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, @@ -1586,7 +1586,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 112,101,110,95,99,111,100,101,114,109,0,0,0,90,4,114, 101,97,100,114,92,0,0,0,41,3,114,143,0,0,0,114, 65,0,0,0,114,94,0,0,0,32,32,32,114,7,0,0, - 0,114,254,0,0,0,50,4,0,0,115,22,0,0,0,14, + 0,114,254,0,0,0,51,4,0,0,115,22,0,0,0,14, 2,16,1,6,1,14,255,22,128,4,0,14,3,6,1,14, 255,22,128,4,0,115,24,0,0,0,142,4,25,3,153,4, 29,11,158,3,29,11,172,4,55,3,183,4,59,11,188,3, @@ -1600,7 +1600,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,29,1,0,0,41,3,114,143,0,0,0,114,243,0,0, 0,114,29,1,0,0,32,32,32,114,7,0,0,0,218,19, 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, - 100,101,114,59,4,0,0,115,4,0,0,0,12,2,8,1, + 100,101,114,60,4,0,0,115,4,0,0,0,12,2,8,1, 114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0,0, @@ -1609,7 +1609,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 247,0,0,0,114,202,0,0,0,114,254,0,0,0,114,31, 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, 95,95,41,1,114,13,1,0,0,64,114,7,0,0,0,114, - 10,1,0,0,15,4,0,0,115,24,0,0,0,8,0,4, + 10,1,0,0,16,4,0,0,115,24,0,0,0,8,0,4, 2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,8, 4,2,9,18,1,114,9,0,0,0,114,10,1,0,0,99, 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, @@ -1631,7 +1631,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,143,0,0,0,114,65, 0,0,0,114,9,1,0,0,32,32,32,114,7,0,0,0, - 114,251,0,0,0,69,4,0,0,115,4,0,0,0,8,2, + 114,251,0,0,0,70,4,0,0,115,4,0,0,0,8,2, 14,1,114,9,0,0,0,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, @@ -1641,7 +1641,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,101,41,2,114,139,0,0,0,114,252,0,0,0,41,5, 114,143,0,0,0,114,134,0,0,0,114,132,0,0,0,114, 42,0,0,0,114,78,0,0,0,32,32,32,32,32,114,7, - 0,0,0,114,253,0,0,0,74,4,0,0,115,4,0,0, + 0,0,0,114,253,0,0,0,75,4,0,0,115,4,0,0, 0,8,2,16,1,114,9,0,0,0,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,87,0,0, @@ -1676,7 +1676,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, 0,0,0,114,255,0,0,0,32,32,32,32,32,32,32,32, - 32,114,7,0,0,0,114,252,0,0,0,79,4,0,0,115, + 32,114,7,0,0,0,114,252,0,0,0,80,4,0,0,115, 60,0,0,0,12,2,4,1,12,2,12,1,10,1,12,254, 12,4,10,1,2,1,12,1,2,128,12,1,4,2,12,1, 6,3,4,1,4,255,14,2,10,128,2,1,12,1,16,1, @@ -1690,7 +1690,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 7,114,149,0,0,0,114,148,0,0,0,114,150,0,0,0, 114,151,0,0,0,114,251,0,0,0,114,253,0,0,0,114, 252,0,0,0,114,12,0,0,0,114,7,0,0,0,114,32, - 1,0,0,65,4,0,0,115,10,0,0,0,8,0,4,2, + 1,0,0,66,4,0,0,115,10,0,0,0,8,0,4,2, 8,2,8,5,18,5,114,9,0,0,0,114,32,1,0,0, 99,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, @@ -1711,7 +1711,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 254,0,0,0,114,175,0,0,0,114,188,0,0,0,114,6, 1,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, 65,0,0,0,114,42,0,0,0,114,174,0,0,0,32,32, - 32,32,32,114,7,0,0,0,114,240,0,0,0,114,4,0, + 32,32,32,114,7,0,0,0,114,240,0,0,0,115,4,0, 0,115,22,0,0,0,10,1,10,1,2,4,2,1,6,254, 12,4,2,1,14,1,2,1,2,1,6,253,114,9,0,0, 0,122,29,83,111,117,114,99,101,108,101,115,115,70,105,108, @@ -1721,13 +1721,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,12,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,0,1,0,0,130,4,0,0, + 32,32,114,7,0,0,0,114,0,1,0,0,131,4,0,0, 114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0, - 0,114,7,0,0,0,114,39,1,0,0,110,4,0,0,115, + 0,114,7,0,0,0,114,39,1,0,0,111,4,0,0,115, 8,0,0,0,8,0,4,2,8,2,12,16,114,9,0,0, 0,114,39,1,0,0,99,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, @@ -1748,19 +1748,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,0,124,2,124,0,95,1,100,0,83,0,114,69,0,0, 0,114,182,0,0,0,41,3,114,143,0,0,0,114,141,0, 0,0,114,65,0,0,0,32,32,32,114,7,0,0,0,114, - 235,0,0,0,143,4,0,0,115,4,0,0,0,6,1,10, + 235,0,0,0,144,4,0,0,115,4,0,0,0,6,1,10, 1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69, 0,0,0,114,12,1,0,0,114,14,1,0,0,32,32,114, - 7,0,0,0,114,15,1,0,0,147,4,0,0,114,16,1, + 7,0,0,0,114,15,1,0,0,148,4,0,0,114,16,1, 0,0,114,9,0,0,0,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, 3,0,0,0,67,0,0,0,114,17,1,0,0,114,69,0, 0,0,114,18,1,0,0,114,20,1,0,0,32,114,7,0, - 0,0,114,21,1,0,0,151,4,0,0,114,22,1,0,0, + 0,0,114,21,1,0,0,152,4,0,0,114,22,1,0,0, 114,9,0,0,0,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, @@ -1777,7 +1777,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, - 0,0,154,4,0,0,115,14,0,0,0,4,2,6,1,4, + 0,0,155,4,0,0,115,14,0,0,0,4,2,6,1,4, 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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, @@ -1794,24 +1794,24 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, - 0,0,162,4,0,0,115,8,0,0,0,14,2,6,1,8, + 0,0,163,4,0,0,115,8,0,0,0,14,2,6,1,8, 1,8,255,114,9,0,0,0,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,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, + 2,116,2,135,2,102,1,100,2,100,3,132,8,116,3,68, 0,131,1,131,1,83,0,41,5,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,3,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, 0,0,51,0,0,0,115,28,0,0,0,129,0,124,0,93, - 9,125,1,136,0,100,0,124,1,23,0,107,2,86,0,1, + 9,125,1,136,2,100,0,124,1,23,0,107,2,86,0,1, 0,113,2,100,1,83,0,41,2,114,235,0,0,0,78,114, 12,0,0,0,41,3,114,5,0,0,0,218,6,115,117,102, 102,105,120,218,9,102,105,108,101,95,110,97,109,101,32,32, - 128,114,7,0,0,0,114,8,0,0,0,171,4,0,0,115, + 128,114,7,0,0,0,114,8,0,0,0,172,4,0,0,115, 6,0,0,0,6,128,2,1,20,255,114,9,0,0,0,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,46, @@ -1819,7 +1819,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,62,78,41,4,114,73,0,0,0,114,65,0,0,0,218, 3,97,110,121,114,231,0,0,0,41,3,114,143,0,0,0, 114,162,0,0,0,114,42,1,0,0,32,32,64,114,7,0, - 0,0,114,205,0,0,0,168,4,0,0,115,8,0,0,0, + 0,0,114,205,0,0,0,169,4,0,0,115,8,0,0,0, 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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, @@ -1830,7 +1830,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,12,0,0,0, 114,246,0,0,0,32,32,114,7,0,0,0,114,240,0,0, - 0,174,4,0,0,114,25,0,0,0,114,9,0,0,0,122, + 0,175,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, @@ -1839,13 +1839,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,12,0,0,0,114,246,0,0,0,32,32,114,7,0, - 0,0,114,0,1,0,0,178,4,0,0,114,25,0,0,0, + 0,0,114,0,1,0,0,179,4,0,0,114,25,0,0,0, 114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0,0,114, 25,1,0,0,114,74,0,0,0,114,246,0,0,0,32,32, - 114,7,0,0,0,114,202,0,0,0,182,4,0,0,114,26, + 114,7,0,0,0,114,202,0,0,0,183,4,0,0,114,26, 1,0,0,114,9,0,0,0,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, @@ -1854,7 +1854,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,238,0,0,0,114,244,0,0,0,114,205,0,0,0,114, 240,0,0,0,114,0,1,0,0,114,159,0,0,0,114,202, 0,0,0,114,12,0,0,0,114,7,0,0,0,114,28,1, - 0,0,135,4,0,0,115,24,0,0,0,8,0,4,2,8, + 0,0,136,4,0,0,115,24,0,0,0,8,0,4,2,8, 6,8,4,8,4,8,3,8,8,8,6,8,6,8,4,2, 4,14,1,114,9,0,0,0,114,28,1,0,0,99,0,0, 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, @@ -1896,7 +1896,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,102,105,110,100,101,114,169,4,114,143,0,0,0,114,141, 0,0,0,114,65,0,0,0,90,11,112,97,116,104,95,102, 105,110,100,101,114,32,32,32,32,114,7,0,0,0,114,235, - 0,0,0,195,4,0,0,115,8,0,0,0,6,1,6,1, + 0,0,0,196,4,0,0,115,8,0,0,0,6,1,6,1, 14,1,10,1,114,9,0,0,0,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,3, @@ -1913,7 +1913,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,4,114,143,0,0,0,114,38,1,0,0,218,3,100, 111,116,90,2,109,101,32,32,32,32,114,7,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,201,4,0,0,115,8,0,0, + 116,104,95,110,97,109,101,115,202,4,0,0,115,8,0,0, 0,18,2,8,1,4,2,8,3,114,9,0,0,0,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, @@ -1926,7 +1926,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,32,32,32,114,7,0,0,0,114,47, - 1,0,0,211,4,0,0,115,4,0,0,0,12,1,16,1, + 1,0,0,212,4,0,0,115,4,0,0,0,12,1,16,1, 114,9,0,0,0,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, @@ -1941,7 +1941,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,163,0,0,0,114,201,0,0,0,114,46,1,0,0,41, 3,114,143,0,0,0,90,11,112,97,114,101,110,116,95,112, 97,116,104,114,209,0,0,0,32,32,32,114,7,0,0,0, - 218,12,95,114,101,99,97,108,99,117,108,97,116,101,215,4, + 218,12,95,114,101,99,97,108,99,117,108,97,116,101,216,4, 0,0,115,16,0,0,0,12,2,10,1,14,1,18,3,6, 1,8,1,6,1,6,1,114,9,0,0,0,122,27,95,78, 97,109,101,115,112,97,99,101,80,97,116,104,46,95,114,101, @@ -1950,7 +1950,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,116,0,124,0,160,1,161,0,131,1,83,0,114, 69,0,0,0,41,2,218,4,105,116,101,114,114,54,1,0, 0,114,20,1,0,0,32,114,7,0,0,0,218,8,95,95, - 105,116,101,114,95,95,228,4,0,0,243,2,0,0,0,12, + 105,116,101,114,95,95,229,4,0,0,243,2,0,0,0,12, 1,114,9,0,0,0,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, @@ -1958,7 +1958,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,25,0,83,0,114,69,0,0,0,169,1,114,54,1,0, 0,41,2,114,143,0,0,0,218,5,105,110,100,101,120,32, 32,114,7,0,0,0,218,11,95,95,103,101,116,105,116,101, - 109,95,95,231,4,0,0,114,58,1,0,0,114,9,0,0, + 109,95,95,232,4,0,0,114,58,1,0,0,114,9,0,0, 0,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,67,0, @@ -1966,14 +1966,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,100,0,83,0,114,69,0,0,0,41,1,114,46,1,0, 0,41,3,114,143,0,0,0,114,60,1,0,0,114,65,0, 0,0,32,32,32,114,7,0,0,0,218,11,95,95,115,101, - 116,105,116,101,109,95,95,234,4,0,0,115,2,0,0,0, + 116,105,116,101,109,95,95,235,4,0,0,115,2,0,0,0, 14,1,114,9,0,0,0,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, 3,0,0,0,67,0,0,0,114,55,1,0,0,114,69,0, 0,0,41,2,114,4,0,0,0,114,54,1,0,0,114,20, 1,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, - 95,95,237,4,0,0,114,58,1,0,0,114,9,0,0,0, + 95,95,238,4,0,0,114,58,1,0,0,114,9,0,0,0, 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,3,0,0,0,67,0,0,0,243,12,0, @@ -1981,7 +1981,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,89,0,0,0,114,46, 1,0,0,114,20,1,0,0,32,114,7,0,0,0,218,8, - 95,95,114,101,112,114,95,95,240,4,0,0,114,58,1,0, + 95,95,114,101,112,114,95,95,241,4,0,0,114,58,1,0, 0,114,9,0,0,0,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,3,0,0,0, @@ -1989,14 +1989,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,118,0,83,0,114,69,0,0,0,114,59,1,0,0,169, 2,114,143,0,0,0,218,4,105,116,101,109,32,32,114,7, 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,243,4,0,0,114,58,1,0,0,114,9,0,0,0,122, + 95,244,4,0,0,114,58,1,0,0,114,9,0,0,0,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,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,46,1, 0,0,114,61,0,0,0,114,66,1,0,0,32,32,114,7, - 0,0,0,114,61,0,0,0,246,4,0,0,243,2,0,0, + 0,0,0,114,61,0,0,0,247,4,0,0,243,2,0,0, 0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150,0,0, @@ -2004,7 +2004,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,47,1,0,0,114,54,1,0,0,114,57,1,0,0,114, 61,1,0,0,114,62,1,0,0,114,63,1,0,0,114,65, 1,0,0,114,68,1,0,0,114,61,0,0,0,114,12,0, - 0,0,114,7,0,0,0,114,44,1,0,0,188,4,0,0, + 0,0,114,7,0,0,0,114,44,1,0,0,189,4,0,0, 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, @@ -2020,7 +2020,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,44,1,0,0,114,46,1,0,0,114,50,1,0, - 0,32,32,32,32,114,7,0,0,0,114,235,0,0,0,252, + 0,32,32,32,32,114,7,0,0,0,114,235,0,0,0,253, 4,0,0,115,2,0,0,0,18,1,114,9,0,0,0,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,1,0,0,0,0, @@ -2044,20 +2044,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,62,78,41,5,114,99,0,0,0,114,100,0,0,0,114, 101,0,0,0,114,89,0,0,0,114,149,0,0,0,41,1, 114,243,0,0,0,32,114,7,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,255,4,0,0,115,8,0,0, + 117,108,101,95,114,101,112,114,0,5,0,0,115,8,0,0, 0,6,7,2,1,4,255,12,2,114,9,0,0,0,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,1,0,0,0,67,0,0, 0,114,24,0,0,0,41,2,78,84,114,12,0,0,0,114, 246,0,0,0,32,32,114,7,0,0,0,114,205,0,0,0, - 10,5,0,0,243,2,0,0,0,4,1,114,9,0,0,0, + 11,5,0,0,243,2,0,0,0,4,1,114,9,0,0,0, 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,1,0,0,0,67,0, 0,0,114,24,0,0,0,41,2,78,114,10,0,0,0,114, 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, - 114,0,1,0,0,13,5,0,0,114,72,1,0,0,114,9, + 114,0,1,0,0,14,5,0,0,114,72,1,0,0,114,9, 0,0,0,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,6,0,0, @@ -2066,19 +2066,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,32,32,114,7,0,0,0,114,240,0,0, - 0,16,5,0,0,114,69,1,0,0,114,9,0,0,0,122, + 0,17,5,0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, 24,0,0,0,114,236,0,0,0,114,12,0,0,0,114,237, - 0,0,0,32,32,114,7,0,0,0,114,238,0,0,0,19, + 0,0,0,32,32,114,7,0,0,0,114,238,0,0,0,20, 5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, 0,0,115,4,0,0,0,100,0,83,0,114,69,0,0,0, 114,12,0,0,0,114,40,1,0,0,32,32,114,7,0,0, - 0,114,244,0,0,0,22,5,0,0,114,72,1,0,0,114, + 0,114,244,0,0,0,23,5,0,0,114,72,1,0,0,114, 9,0,0,0,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,4, @@ -2095,7 +2095,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,97,100,101,100,32,119,105,116,104,32,112,97,116,104,32, 123,33,114,125,78,41,4,114,158,0,0,0,114,172,0,0, 0,114,46,1,0,0,114,245,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,247,0,0,0,25,5,0,0, + 32,32,114,7,0,0,0,114,247,0,0,0,26,5,0,0, 115,8,0,0,0,6,7,4,1,4,255,12,3,114,9,0, 0,0,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, @@ -2106,7 +2106,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,112,97,99,101,82,101,97,100,101,114,41,3,114,30,1, 0,0,114,73,1,0,0,114,46,1,0,0,41,3,114,143, 0,0,0,114,243,0,0,0,114,73,1,0,0,32,32,32, - 114,7,0,0,0,114,31,1,0,0,37,5,0,0,115,4, + 114,7,0,0,0,114,31,1,0,0,38,5,0,0,115,4, 0,0,0,12,1,10,1,114,9,0,0,0,122,36,95,78, 97,109,101,115,112,97,99,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, @@ -2115,7 +2115,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,114,205,0,0,0,114,0,1,0,0,114,240,0, 0,0,114,238,0,0,0,114,244,0,0,0,114,247,0,0, 0,114,31,1,0,0,114,12,0,0,0,114,7,0,0,0, - 114,70,1,0,0,251,4,0,0,115,22,0,0,0,8,0, + 114,70,1,0,0,252,4,0,0,115,22,0,0,0,8,0, 8,1,2,3,10,1,8,10,8,3,8,3,8,3,8,3, 8,3,12,12,114,9,0,0,0,114,70,1,0,0,99,0, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, @@ -2151,7 +2151,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,75,1,0,0,41,2, 114,141,0,0,0,218,6,102,105,110,100,101,114,32,32,114, - 7,0,0,0,114,75,1,0,0,48,5,0,0,115,14,0, + 7,0,0,0,114,75,1,0,0,49,5,0,0,115,14,0, 0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252, 114,9,0,0,0,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, @@ -2170,7 +2170,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 112,97,116,104,95,104,111,111,107,115,114,99,0,0,0,114, 100,0,0,0,114,161,0,0,0,114,142,0,0,0,41,2, 114,65,0,0,0,90,4,104,111,111,107,32,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,58, + 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,59, 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,122, @@ -2203,7 +2203,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, 220,0,0,0,114,65,0,0,0,114,79,1,0,0,32,32, 32,114,7,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,71,5,0,0, + 112,111,114,116,101,114,95,99,97,99,104,101,72,5,0,0, 115,36,0,0,0,8,8,2,1,10,1,2,128,12,1,6, 3,2,128,2,1,10,1,4,4,2,128,12,253,10,1,12, 1,4,1,2,128,2,253,2,250,115,24,0,0,0,133,4, @@ -2236,7 +2236,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 79,1,0,0,114,165,0,0,0,114,163,0,0,0,114,164, 0,0,0,114,209,0,0,0,32,32,32,32,32,32,32,114, 7,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, - 116,95,115,112,101,99,93,5,0,0,115,26,0,0,0,10, + 116,95,115,112,101,99,94,5,0,0,115,26,0,0,0,10, 4,16,1,12,2,16,1,16,2,12,2,10,1,4,1,8, 1,12,1,12,1,6,1,4,1,114,9,0,0,0,122,27, 80,97,116,104,70,105,110,100,101,114,46,95,108,101,103,97, @@ -2268,7 +2268,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,112,97,116,104,90,5,101,110,116,114,121,114,79,1,0, 0,114,209,0,0,0,114,164,0,0,0,32,32,32,32,32, 32,32,32,32,114,7,0,0,0,218,9,95,103,101,116,95, - 115,112,101,99,114,5,0,0,115,42,0,0,0,4,5,8, + 115,112,101,99,115,5,0,0,115,42,0,0,0,4,5,8, 1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,8, 1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,2, 128,12,2,6,1,4,1,114,9,0,0,0,122,20,80,97, @@ -2295,7 +2295,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,6,114,220,0,0,0,114,162,0,0,0,114,65,0, 0,0,114,224,0,0,0,114,209,0,0,0,114,87,1,0, 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, - 0,146,5,0,0,115,26,0,0,0,8,6,6,1,14,1, + 0,147,5,0,0,115,26,0,0,0,8,6,6,1,14,1, 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, 4,2,4,2,114,9,0,0,0,122,20,80,97,116,104,70, 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99, @@ -2322,7 +2322,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, 0,0,0,32,32,32,32,114,7,0,0,0,114,228,0,0, - 0,170,5,0,0,115,14,0,0,0,6,8,2,2,4,254, + 0,171,5,0,0,115,14,0,0,0,6,8,2,2,4,254, 12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0,0,0, @@ -2353,7 +2353,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,97,116,97,114,89,1,0,0,218,18,102,105,110,100,95, 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, 144,0,0,0,114,145,0,0,0,114,89,1,0,0,32,32, - 32,114,7,0,0,0,114,90,1,0,0,186,5,0,0,115, + 32,114,7,0,0,0,114,90,1,0,0,187,5,0,0,115, 4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0, @@ -2362,7 +2362,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,75,1,0,0,114,81,1,0,0,114,233,0,0,0, 114,84,1,0,0,114,85,1,0,0,114,88,1,0,0,114, 225,0,0,0,114,228,0,0,0,114,90,1,0,0,114,12, - 0,0,0,114,7,0,0,0,114,74,1,0,0,44,5,0, + 0,0,0,114,7,0,0,0,114,74,1,0,0,45,5,0, 0,115,36,0,0,0,8,0,4,2,2,2,10,1,2,9, 10,1,2,12,10,1,2,21,10,1,2,20,12,1,2,31, 12,1,2,23,12,1,2,15,14,1,114,9,0,0,0,114, @@ -2387,8 +2387,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,6,0,0,0,7,0,0,0,115,112,0,0,0,103,0, - 125,3,124,2,68,0,93,16,92,2,137,0,125,4,124,3, - 160,0,135,0,102,1,100,1,100,2,132,8,124,4,68,0, + 125,3,124,2,68,0,93,16,92,2,137,5,125,4,124,3, + 160,0,135,5,102,1,100,1,100,2,132,8,124,4,68,0, 131,1,161,1,1,0,113,4,124,3,124,0,95,1,124,1, 112,27,100,3,124,0,95,2,116,3,124,0,106,2,131,1, 115,43,116,4,116,5,160,6,161,0,124,0,106,2,131,2, @@ -2406,10 +2406,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,3,0,0,0,51,0,0, 0,115,24,0,0,0,129,0,124,0,93,7,125,1,124,1, - 136,0,102,2,86,0,1,0,113,2,100,0,83,0,114,69, + 136,2,102,2,86,0,1,0,113,2,100,0,83,0,114,69, 0,0,0,114,12,0,0,0,41,3,114,5,0,0,0,114, 41,1,0,0,114,163,0,0,0,32,32,128,114,7,0,0, - 0,114,8,0,0,0,215,5,0,0,115,4,0,0,0,6, + 0,114,8,0,0,0,216,5,0,0,115,4,0,0,0,6, 128,18,0,114,9,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, @@ -2423,7 +2423,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,211, 0,0,0,114,163,0,0,0,32,32,32,32,32,64,114,7, - 0,0,0,114,235,0,0,0,209,5,0,0,115,20,0,0, + 0,0,0,114,235,0,0,0,210,5,0,0,115,20,0,0, 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, 1,8,1,12,1,114,9,0,0,0,122,19,70,105,108,101, 70,105,110,100,101,114,46,95,95,105,110,105,116,95,95,99, @@ -2433,7 +2433,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,32,116,104,101,32,100,105,114,101,99,116,111,114,121,32, 109,116,105,109,101,46,114,130,0,0,0,78,41,1,114,93, 1,0,0,114,20,1,0,0,32,114,7,0,0,0,114,75, - 1,0,0,225,5,0,0,114,81,0,0,0,114,9,0,0, + 1,0,0,226,5,0,0,114,81,0,0,0,114,9,0,0, 0,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,4,0,0,0, @@ -2463,7 +2463,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,6,114,99,0,0,0,114,100,0,0,0,114,101,0,0, 0,114,225,0,0,0,114,163,0,0,0,114,201,0,0,0, 41,3,114,143,0,0,0,114,162,0,0,0,114,209,0,0, - 0,32,32,32,114,7,0,0,0,114,160,0,0,0,231,5, + 0,32,32,32,114,7,0,0,0,114,160,0,0,0,232,5, 0,0,115,14,0,0,0,6,7,2,2,4,254,10,3,8, 1,8,1,16,1,114,9,0,0,0,122,22,70,105,108,101, 70,105,110,100,101,114,46,102,105,110,100,95,108,111,97,100, @@ -2474,7 +2474,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,212,0,0,0,41,7,114,143,0,0,0,114,210,0,0, 0,114,162,0,0,0,114,65,0,0,0,90,4,115,109,115, 108,114,224,0,0,0,114,163,0,0,0,32,32,32,32,32, - 32,32,114,7,0,0,0,114,88,1,0,0,246,5,0,0, + 32,32,114,7,0,0,0,114,88,1,0,0,247,5,0,0, 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, 0,0,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, @@ -2531,7 +2531,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,210,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, 209,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,225,0,0,0,251,5,0,0, + 32,32,114,7,0,0,0,114,225,0,0,0,252,5,0,0, 115,94,0,0,0,4,5,14,1,2,1,22,1,2,128,12, 1,8,1,2,128,10,1,8,1,6,1,6,2,6,1,10, 1,6,2,4,1,8,2,12,1,14,1,8,1,10,1,8, @@ -2566,7 +2566,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 125,1,124,1,160,0,161,0,146,2,113,2,83,0,114,12, 0,0,0,41,1,114,131,0,0,0,41,2,114,5,0,0, 0,90,2,102,110,32,32,114,7,0,0,0,114,14,0,0, - 0,75,6,0,0,115,2,0,0,0,20,0,114,9,0,0, + 0,76,6,0,0,115,2,0,0,0,20,0,114,9,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, @@ -2583,15 +2583,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,101,110,116,115,114,67,1,0,0,114,141,0,0,0,114, 51,1,0,0,114,41,1,0,0,90,8,110,101,119,95,110, 97,109,101,32,32,32,32,32,32,32,32,32,114,7,0,0, - 0,114,98,1,0,0,46,6,0,0,115,42,0,0,0,6, + 0,114,98,1,0,0,47,6,0,0,115,42,0,0,0,6, 2,2,1,20,1,2,128,18,1,8,3,2,128,12,3,12, 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, 1,12,1,20,1,4,255,2,233,115,13,0,0,0,132,9, 14,0,142,12,28,7,193,32,1,28,7,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,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,0,0,0,7,0,0,0,115,18,0,0,0,135,3,135, + 4,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, 4,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, @@ -2612,7 +2612,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 10,10,32,32,32,32,32,32,32,32,99,1,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,19,0,0,0,115, 36,0,0,0,116,0,124,0,131,1,115,10,116,1,100,1, - 124,0,100,2,141,2,130,1,136,0,124,0,103,1,136,1, + 124,0,100,2,141,2,130,1,136,1,124,0,103,1,136,2, 162,1,82,0,142,0,83,0,41,4,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, @@ -2622,7 +2622,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, 7,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,87,6, + 102,111,114,95,70,105,108,101,70,105,110,100,101,114,88,6, 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, 0,0,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, @@ -2631,14 +2631,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,5,114,220,0,0,0,114,97,1,0,0,114,102,1,0, 0,114,220,0,0,0,114,97,1,0,0,96,96,32,64,64, 114,7,0,0,0,218,9,112,97,116,104,95,104,111,111,107, - 77,6,0,0,115,4,0,0,0,14,10,4,6,114,9,0, + 78,6,0,0,115,4,0,0,0,14,10,4,6,114,9,0, 0,0,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,3,0,0,0,67,0,0,0,114,64,1, 0,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,89,0,0,0,114,65, 0,0,0,114,20,1,0,0,32,114,7,0,0,0,114,65, - 1,0,0,95,6,0,0,114,58,1,0,0,114,9,0,0, + 1,0,0,96,6,0,0,114,58,1,0,0,114,9,0,0, 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, 114,101,112,114,95,95,114,69,0,0,0,41,15,114,149,0, 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, @@ -2646,7 +2646,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,228,0,0,0,114,160,0,0,0,114,88,1,0,0,114, 225,0,0,0,114,98,1,0,0,114,233,0,0,0,114,103, 1,0,0,114,65,1,0,0,114,12,0,0,0,114,7,0, - 0,0,114,91,1,0,0,200,5,0,0,115,24,0,0,0, + 0,0,114,91,1,0,0,201,5,0,0,115,24,0,0,0, 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, 8,51,2,31,10,1,12,17,114,9,0,0,0,114,91,1, 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,8, @@ -2669,7 +2669,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,141,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,163,0,0,0,114, 209,0,0,0,32,32,32,32,32,32,114,7,0,0,0,218, - 14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,101, + 14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,102, 6,0,0,115,40,0,0,0,10,2,10,1,4,1,4,1, 8,1,8,1,12,1,10,2,4,1,14,1,2,1,8,1, 8,1,8,1,12,1,2,128,12,1,6,2,2,128,2,254, @@ -2690,7 +2690,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,127,0,0,0,114,39,1,0,0,114,113,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,32,32,32,114,7,0,0,0,114,207,0,0,0,124,6, + 101,32,32,32,114,7,0,0,0,114,207,0,0,0,125,6, 0,0,115,8,0,0,0,12,5,8,1,8,1,10,1,114, 9,0,0,0,114,207,0,0,0,99,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,67,0,0,0,115,8, @@ -2698,7 +2698,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,1,114,158,0,0,0,41,1,218,17,95,98,111,111,116, 115,116,114,97,112,95,109,111,100,117,108,101,32,114,7,0, 0,0,218,21,95,115,101,116,95,98,111,111,116,115,116,114, - 97,112,95,109,111,100,117,108,101,135,6,0,0,115,2,0, + 97,112,95,109,111,100,117,108,101,136,6,0,0,115,2,0, 0,0,8,2,114,9,0,0,0,114,111,1,0,0,99,1, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, 0,0,0,115,50,0,0,0,116,0,124,0,131,1,1,0, @@ -2713,7 +2713,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,116,97,95,112,97,116,104,114,61,0,0,0,114,74,1, 0,0,41,2,114,110,1,0,0,90,17,115,117,112,112,111, 114,116,101,100,95,108,111,97,100,101,114,115,32,32,114,7, - 0,0,0,218,8,95,105,110,115,116,97,108,108,140,6,0, + 0,0,0,218,8,95,105,110,115,116,97,108,108,141,6,0, 0,115,8,0,0,0,8,2,6,1,20,1,16,1,114,9, 0,0,0,114,113,1,0,0,41,1,114,87,0,0,0,114, 69,0,0,0,41,3,78,78,78,41,2,114,0,0,0,0, @@ -2758,7 +2758,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, - 127,16,34,12,1,4,2,4,1,6,2,4,1,10,1,8, + 127,16,35,12,1,4,2,4,1,6,2,4,1,10,1,8, 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, From webhook-mailer at python.org Fri Jun 4 09:01:39 2021 From: webhook-mailer at python.org (tiran) Date: Fri, 04 Jun 2021 13:01:39 -0000 Subject: [Python-checkins] Removing myself from ssl code ownership (GH-26529) Message-ID: https://github.com/python/cpython/commit/6ab65c670dd9e9b95f363e25e308d6fc2f4fe92a commit: 6ab65c670dd9e9b95f363e25e308d6fc2f4fe92a branch: main author: Christian Heimes committer: tiran date: 2021-06-04T15:01:31+02:00 summary: Removing myself from ssl code ownership (GH-26529) I'm taking a break. Signed-off-by: Christian Heimes files: M .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5b86d39dc9c25..8dc0a31c1ba27 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -53,11 +53,11 @@ Python/ast_opt.c @isidentical # SSL -**/*ssl* @python/crypto-team @tiran -**/*.pem @python/crypto-team @tiran +**/*ssl* @python/crypto-team +**/*.pem @python/crypto-team # CSPRNG -Python/bootstrap_hash.c @python/crypto-team @tiran +Python/bootstrap_hash.c @python/crypto-team # Dates and times **/*datetime* @pganssle @abalkin From webhook-mailer at python.org Fri Jun 4 12:48:04 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Jun 2021 16:48:04 -0000 Subject: [Python-checkins] bpo-44048: Fix two hashlib test cases under FIPS mode (GH-26470) Message-ID: https://github.com/python/cpython/commit/a46c220edc5cf716d0b71eb80ac29ecdb4ebb430 commit: a46c220edc5cf716d0b71eb80ac29ecdb4ebb430 branch: main author: stratakis committer: pablogsal date: 2021-06-04T17:47:59+01:00 summary: bpo-44048: Fix two hashlib test cases under FIPS mode (GH-26470) test_disallow_instantiation and test_readonly_types try to test all the available digests, however under FIPS mode, while the algorithms are available, trying to use them will fail with a ValueError. files: M Lib/test/test_hashlib.py diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index e419b388460dcd..1623bf350e2875 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -909,7 +909,11 @@ def test_disallow_instantiation(self): continue # all other types have DISALLOW_INSTANTIATION for constructor in constructors: - h = constructor() + # In FIPS mode some algorithms are not available raising ValueError + try: + h = constructor() + except ValueError: + continue with self.subTest(constructor=constructor): support.check_disallow_instantiation(self, type(h)) @@ -923,7 +927,11 @@ def test_readonly_types(self): for algorithm, constructors in self.constructors_to_test.items(): # all other types have DISALLOW_INSTANTIATION for constructor in constructors: - hash_type = type(constructor()) + # In FIPS mode some algorithms are not available raising ValueError + try: + hash_type = type(constructor()) + except ValueError: + continue with self.subTest(hash_type=hash_type): with self.assertRaisesRegex(TypeError, "immutable type"): hash_type.value = False From webhook-mailer at python.org Fri Jun 4 12:51:12 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Jun 2021 16:51:12 -0000 Subject: [Python-checkins] bpo-43693: Revert commits 2c1e2583fdc4db6b43d163239ea42b0e8394171f and b2bf2bc1ece673d387341e06c8d3c2bc6e259747 (GH-26530) Message-ID: https://github.com/python/cpython/commit/17c4edc4e0692fe55e185755ea8a2f5238f3ef08 commit: 17c4edc4e0692fe55e185755ea8a2f5238f3ef08 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-04T17:51:05+01:00 summary: bpo-43693: Revert commits 2c1e2583fdc4db6b43d163239ea42b0e8394171f and b2bf2bc1ece673d387341e06c8d3c2bc6e259747 (GH-26530) * Revert "bpo-43693: Compute deref offsets in compiler (gh-25152)" This reverts commit b2bf2bc1ece673d387341e06c8d3c2bc6e259747. * Revert "bpo-43693: Add new internal code objects fields: co_fastlocalnames and co_fastlocalkinds. (gh-26388)" This reverts commit 2c1e2583fdc4db6b43d163239ea42b0e8394171f. These two commits are breaking the refleak buildbots. files: D Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst D Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst M Doc/library/dis.rst M Include/cpython/code.h M Include/internal/pycore_code.h M Lib/ctypes/test/test_values.py M Lib/dis.py M Lib/importlib/_bootstrap_external.py M Lib/test/test_dis.py M Objects/clinic/codeobject.c.h M Objects/codeobject.c M Objects/frameobject.c M Objects/typeobject.c M Programs/test_frozenmain.h M Python/ceval.c M Python/compile.c M Python/frozen_hello.h M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h M Python/marshal.c M Python/suggestions.c M Tools/gdb/libpython.py diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index bc206f7d2e96af..a4746bcabc76bc 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1058,24 +1058,17 @@ All of the following opcodes use their arguments. .. opcode:: LOAD_CLOSURE (i) - Pushes a reference to the cell contained in slot ``i`` of the "fast locals" - storage. The name of the variable is ``co_fastlocalnames[i]``. - - Note that ``LOAD_CLOSURE`` is effectively an alias for ``LOAD_FAST``. - It exists to keep bytecode a little more readable. - - .. versionchanged:: 3.11 - ``i`` is no longer offset by the length of ``co_varnames``. + Pushes a reference to the cell contained in slot *i* of the cell and free + variable storage. The name of the variable is ``co_cellvars[i]`` if *i* is + less than the length of *co_cellvars*. Otherwise it is ``co_freevars[i - + len(co_cellvars)]``. .. opcode:: LOAD_DEREF (i) - Loads the cell contained in slot ``i`` of the "fast locals" storage. + Loads the cell contained in slot *i* of the cell and free variable storage. Pushes a reference to the object the cell contains on the stack. - .. versionchanged:: 3.11 - ``i`` is no longer offset by the length of ``co_varnames``. - .. opcode:: LOAD_CLASSDEREF (i) @@ -1085,29 +1078,20 @@ All of the following opcodes use their arguments. .. versionadded:: 3.4 - .. versionchanged:: 3.11 - ``i`` is no longer offset by the length of ``co_varnames``. - .. opcode:: STORE_DEREF (i) - Stores TOS into the cell contained in slot ``i`` of the "fast locals" + Stores TOS into the cell contained in slot *i* of the cell and free variable storage. - .. versionchanged:: 3.11 - ``i`` is no longer offset by the length of ``co_varnames``. - .. opcode:: DELETE_DEREF (i) - Empties the cell contained in slot ``i`` of the "fast locals" storage. + Empties the cell contained in slot *i* of the cell and free variable storage. Used by the :keyword:`del` statement. .. versionadded:: 3.2 - .. versionchanged:: 3.11 - ``i`` is no longer offset by the length of ``co_varnames``. - .. opcode:: RAISE_VARARGS (argc) diff --git a/Include/cpython/code.h b/Include/cpython/code.h index add34f3144d69b..5c0fae47e79f2c 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -3,8 +3,6 @@ #endif typedef uint16_t _Py_CODEUNIT; -// Each oparg must fit in the second half of _Py_CODEUNIT, hence 8 bits. -#define _Py_MAX_OPARG 255 #ifdef WORDS_BIGENDIAN # define _Py_OPCODE(word) ((word) >> 8) @@ -16,11 +14,6 @@ typedef uint16_t _Py_CODEUNIT; typedef struct _PyOpcache _PyOpcache; - -// These are duplicated from pycore_code.h. -typedef unsigned char _PyLocalsPlusKind; -typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; - /* Bytecode object */ struct PyCodeObject { PyObject_HEAD @@ -60,8 +53,9 @@ struct PyCodeObject { int co_kwonlyargcount; /* #keyword only arguments */ int co_stacksize; /* #entries needed for evaluation stack */ int co_firstlineno; /* first source line number */ - PyObject *co_localsplusnames; /* tuple mapping offsets to names */ - _PyLocalsPlusKinds co_localspluskinds; /* array mapping to local kinds */ + PyObject *co_varnames; /* tuple of strings (local variable names) */ + PyObject *co_cellvars; /* tuple of strings (cell variable names) */ + PyObject *co_freevars; /* tuple of strings (free variable names) */ PyObject *co_filename; /* unicode (where it was loaded from) */ PyObject *co_name; /* unicode (name, for reference) */ PyObject *co_linetable; /* string (encoding addr<->lineno mapping) See @@ -71,15 +65,11 @@ struct PyCodeObject { /* These fields are set with computed values on new code objects. */ int *co_cell2arg; /* Maps cell vars which are arguments. */ - // redundant values (derived from co_localsplusnames and co_localspluskinds) + // These are redundant but offer some performance benefit. int co_nlocalsplus; /* number of local + cell + free variables */ int co_nlocals; /* number of local variables */ int co_ncellvars; /* number of cell variables */ int co_nfreevars; /* number of free variables */ - // lazily-computed values - PyObject *co_varnames; /* tuple of strings (local variable names) */ - PyObject *co_cellvars; /* tuple of strings (cell variable names) */ - PyObject *co_freevars; /* tuple of strings (free variable names) */ /* The remaining fields are zeroed out on new code objects. */ @@ -153,7 +143,7 @@ struct PyCodeObject { PyAPI_DATA(PyTypeObject) PyCode_Type; #define PyCode_Check(op) Py_IS_TYPE(op, &PyCode_Type) -#define PyCode_GetNumFree(op) ((op)->co_nfreevars) +#define PyCode_GetNumFree(op) (PyTuple_GET_SIZE((op)->co_freevars)) /* Public interface */ PyAPI_FUNC(PyCodeObject *) PyCode_New( diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 95b4730701350a..dab6c34dd1732d 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -26,57 +26,6 @@ struct _PyOpcache { }; -/* "Locals plus" for a code object is the set of locals + cell vars + - * free vars. This relates to variable names as well as offsets into - * the "fast locals" storage array of execution frames. The compiler - * builds the list of names, their offsets, and the corresponding - * kind of local. - * - * Those kinds represent the source of the initial value and the - * variable's scope (as related to closures). A "local" is an - * argument or other variable defined in the current scope. A "free" - * variable is one that is defined in an outer scope and comes from - * the function's closure. A "cell" variable is a local that escapes - * into an inner function as part of a closure, and thus must be - * wrapped in a cell. Any "local" can also be a "cell", but the - * "free" kind is mutually exclusive with both. - */ - -// We would use an enum if C let us specify the storage type. -typedef unsigned char _PyLocalsPlusKind; -/* Note that these all fit within _PyLocalsPlusKind, as do combinations. */ -// Later, we will use the smaller numbers to differentiate the different -// kinds of locals (e.g. pos-only arg, varkwargs, local-only). -#define CO_FAST_LOCAL 0x20 -#define CO_FAST_CELL 0x40 -#define CO_FAST_FREE 0x80 - -typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; - -static inline int -_PyCode_InitLocalsPlusKinds(int num, _PyLocalsPlusKinds *pkinds) -{ - if (num == 0) { - *pkinds = NULL; - return 0; - } - _PyLocalsPlusKinds kinds = PyMem_NEW(_PyLocalsPlusKind, num); - if (kinds == NULL) { - PyErr_NoMemory(); - return -1; - } - *pkinds = kinds; - return 0; -} - -static inline void -_PyCode_ClearLocalsPlusKinds(_PyLocalsPlusKinds kinds) -{ - if (kinds != NULL) { - PyMem_Free(kinds); - } -} - struct _PyCodeConstructor { /* metadata */ PyObject *filename; @@ -93,13 +42,13 @@ struct _PyCodeConstructor { PyObject *names; /* mapping frame offsets to information */ - PyObject *localsplusnames; - _PyLocalsPlusKinds localspluskinds; + PyObject *varnames; + PyObject *cellvars; + PyObject *freevars; /* args (within varnames) */ int argcount; int posonlyargcount; - // XXX Replace argcount with posorkwargcount (argcount - posonlyargcount). int kwonlyargcount; /* needed to create the frame */ @@ -126,11 +75,6 @@ PyAPI_FUNC(PyCodeObject *) _PyCode_New(struct _PyCodeConstructor *); int _PyCode_InitOpcache(PyCodeObject *co); -/* Getters for internal PyCodeObject data. */ -PyAPI_FUNC(PyObject *) _PyCode_GetVarnames(PyCodeObject *); -PyAPI_FUNC(PyObject *) _PyCode_GetCellvars(PyCodeObject *); -PyAPI_FUNC(PyObject *) _PyCode_GetFreevars(PyCodeObject *); - #ifdef __cplusplus } diff --git a/Lib/ctypes/test/test_values.py b/Lib/ctypes/test/test_values.py index 5aa0d75fcbf0cb..92c3c284f2359c 100644 --- a/Lib/ctypes/test/test_values.py +++ b/Lib/ctypes/test/test_values.py @@ -80,9 +80,9 @@ class struct_frozen(Structure): continue items.append((entry.name.decode("ascii"), entry.size)) - expected = [("__hello__", 128), - ("__phello__", -128), - ("__phello__.spam", 128), + expected = [("__hello__", 138), + ("__phello__", -138), + ("__phello__.spam", 138), ] self.assertEqual(items, expected, "PyImport_FrozenModules example " "in Doc/library/ctypes.rst may be out of date") diff --git a/Lib/dis.py b/Lib/dis.py index 48a6ab8e41df3f..bc7c4d4a8d52c0 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -273,15 +273,15 @@ def get_instructions(x, *, first_line=None): the disassembled code object. """ co = _get_code_object(x) + cell_names = co.co_cellvars + co.co_freevars linestarts = dict(findlinestarts(co)) if first_line is not None: line_offset = first_line - co.co_firstlineno else: line_offset = 0 - return _get_instructions_bytes(co.co_code, - co._varname_from_oparg, - co.co_names, co.co_consts, - linestarts, line_offset) + return _get_instructions_bytes(co.co_code, co.co_varnames, co.co_names, + co.co_consts, cell_names, linestarts, + line_offset) def _get_const_info(const_index, const_list): """Helper to get optional details about const references @@ -295,7 +295,7 @@ def _get_const_info(const_index, const_list): argval = const_list[const_index] return argval, repr(argval) -def _get_name_info(name_index, get_name, **extrainfo): +def _get_name_info(name_index, name_list): """Helper to get optional details about named references Returns the dereferenced name as both value and repr if the name @@ -303,8 +303,8 @@ def _get_name_info(name_index, get_name, **extrainfo): Otherwise returns the name index and its repr(). """ argval = name_index - if get_name is not None: - argval = get_name(name_index, **extrainfo) + if name_list is not None: + argval = name_list[name_index] argrepr = argval else: argrepr = repr(argval) @@ -336,10 +336,8 @@ def parse_exception_table(code): except StopIteration: return entries -def _get_instructions_bytes(code, varname_from_oparg=None, - names=None, constants=None, - linestarts=None, line_offset=0, - exception_entries=()): +def _get_instructions_bytes(code, varnames=None, names=None, constants=None, + cells=None, linestarts=None, line_offset=0, exception_entries=()): """Iterate over the instructions in a bytecode string. Generates a sequence of Instruction namedtuples giving the details of each @@ -348,7 +346,6 @@ def _get_instructions_bytes(code, varname_from_oparg=None, arguments. """ - get_name = None if names is None else names.__getitem__ labels = set(findlabels(code)) for start, end, target, _, _ in exception_entries: for i in range(start, end): @@ -371,18 +368,20 @@ def _get_instructions_bytes(code, varname_from_oparg=None, if op in hasconst: argval, argrepr = _get_const_info(arg, constants) elif op in hasname: - argval, argrepr = _get_name_info(arg, get_name) + argval, argrepr = _get_name_info(arg, names) elif op in hasjabs: argval = arg*2 argrepr = "to " + repr(argval) elif op in hasjrel: argval = offset + 2 + arg*2 argrepr = "to " + repr(argval) - elif op in haslocal or op in hasfree: - argval, argrepr = _get_name_info(arg, varname_from_oparg) + elif op in haslocal: + argval, argrepr = _get_name_info(arg, varnames) elif op in hascompare: argval = cmp_op[arg] argrepr = argval + elif op in hasfree: + argval, argrepr = _get_name_info(arg, cells) elif op == FORMAT_VALUE: argval, argrepr = FORMAT_VALUE_CONVERTERS[arg & 0x3] argval = (argval, bool(arg & 0x4)) @@ -399,11 +398,11 @@ def _get_instructions_bytes(code, varname_from_oparg=None, def disassemble(co, lasti=-1, *, file=None): """Disassemble a code object.""" + cell_names = co.co_cellvars + co.co_freevars linestarts = dict(findlinestarts(co)) exception_entries = parse_exception_table(co) - _disassemble_bytes(co.co_code, lasti, - co._varname_from_oparg, - co.co_names, co.co_consts, linestarts, file=file, + _disassemble_bytes(co.co_code, lasti, co.co_varnames, co.co_names, + co.co_consts, cell_names, linestarts, file=file, exception_entries=exception_entries) def _disassemble_recursive(co, *, file=None, depth=None): @@ -417,8 +416,8 @@ def _disassemble_recursive(co, *, file=None, depth=None): print("Disassembly of %r:" % (x,), file=file) _disassemble_recursive(x, file=file, depth=depth) -def _disassemble_bytes(code, lasti=-1, varname_from_oparg=None, - names=None, constants=None, linestarts=None, +def _disassemble_bytes(code, lasti=-1, varnames=None, names=None, + constants=None, cells=None, linestarts=None, *, file=None, line_offset=0, exception_entries=()): # Omit the line number column entirely if we have no line number info show_lineno = bool(linestarts) @@ -435,8 +434,8 @@ def _disassemble_bytes(code, lasti=-1, varname_from_oparg=None, offset_width = len(str(maxoffset)) else: offset_width = 4 - for instr in _get_instructions_bytes(code, varname_from_oparg, names, - constants, linestarts, + for instr in _get_instructions_bytes(code, varnames, names, + constants, cells, linestarts, line_offset=line_offset, exception_entries=exception_entries): new_source_line = (show_lineno and instr.starts_line is not None and @@ -518,6 +517,7 @@ def __init__(self, x, *, first_line=None, current_offset=None): else: self.first_line = first_line self._line_offset = first_line - co.co_firstlineno + self._cell_names = co.co_cellvars + co.co_freevars self._linestarts = dict(findlinestarts(co)) self._original_object = x self.current_offset = current_offset @@ -525,9 +525,8 @@ def __init__(self, x, *, first_line=None, current_offset=None): def __iter__(self): co = self.codeobj - return _get_instructions_bytes(co.co_code, - co._varname_from_oparg, - co.co_names, co.co_consts, + return _get_instructions_bytes(co.co_code, co.co_varnames, co.co_names, + co.co_consts, self._cell_names, self._linestarts, line_offset=self._line_offset, exception_entries=self.exception_entries) @@ -555,9 +554,9 @@ def dis(self): else: offset = -1 with io.StringIO() as output: - _disassemble_bytes(co.co_code, - varname_from_oparg=co._varname_from_oparg, + _disassemble_bytes(co.co_code, varnames=co.co_varnames, names=co.co_names, constants=co.co_consts, + cells=self._cell_names, linestarts=self._linestarts, line_offset=self._line_offset, file=output, diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 39552186c8735d..ee720f84a4b0f9 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -355,8 +355,6 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3450 Use exception table for unwinding ("zero cost" exception handling) # Python 3.11a1 3451 (Add CALL_METHOD_KW) # Python 3.11a1 3452 (drop nlocals from marshaled code objects) -# Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds) -# Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -366,7 +364,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3454).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3452).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index b119d183d66c10..f341a3e5750349 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -427,7 +427,7 @@ def foo(x): return foo dis_nested_0 = """\ -%3d 0 LOAD_CLOSURE 2 (y) +%3d 0 LOAD_CLOSURE 0 (y) 2 BUILD_TUPLE 1 4 LOAD_CONST 1 () 6 LOAD_CONST 2 ('_h..foo') @@ -444,12 +444,12 @@ def foo(x): dis_nested_1 = """%s Disassembly of : -%3d 0 LOAD_CLOSURE 1 (x) +%3d 0 LOAD_CLOSURE 0 (x) 2 BUILD_TUPLE 1 4 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) 6 LOAD_CONST 2 ('_h..foo..') 8 MAKE_FUNCTION 8 (closure) - 10 LOAD_DEREF 2 (y) + 10 LOAD_DEREF 1 (y) 12 GET_ITER 14 CALL_FUNCTION 1 16 RETURN_VALUE @@ -467,7 +467,7 @@ def foo(x): 2 LOAD_FAST 0 (.0) >> 4 FOR_ITER 6 (to 18) 6 STORE_FAST 1 (z) - 8 LOAD_DEREF 2 (x) + 8 LOAD_DEREF 0 (x) 10 LOAD_FAST 1 (z) 12 BINARY_ADD 14 LIST_APPEND 2 @@ -962,16 +962,16 @@ def jumpy(): Instruction = dis.Instruction expected_opinfo_outer = [ Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=0, starts_line=2, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=6, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=10, starts_line=None, is_jump_target=False), Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=14, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=16, starts_line=7, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=22, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=24, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=26, starts_line=None, is_jump_target=False), @@ -985,20 +985,20 @@ def jumpy(): expected_opinfo_f = [ Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=0, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=5, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=6, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=12, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=14, starts_line=None, is_jump_target=False), Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=18, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=6, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=30, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=32, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=34, starts_line=6, is_jump_target=False), @@ -1007,10 +1007,10 @@ def jumpy(): expected_opinfo_inner = [ Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=0, starts_line=4, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6, argrepr='', offset=14, starts_line=None, is_jump_target=False), diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst deleted file mode 100644 index 948c4d52482dc0..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst +++ /dev/null @@ -1,4 +0,0 @@ -Compute cell offsets relative to locals in compiler. Allows the interpreter -to treats locals and cells a single array, which is slightly more efficient. -Also make the LOAD_CLOSURE opcode an alias for LOAD_FAST. Preserving -LOAD_CLOSURE helps keep bytecode a bit more readable. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst deleted file mode 100644 index 83b7ba260e6a22..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst +++ /dev/null @@ -1,3 +0,0 @@ -``PyCodeObject`` gained ``co_fastlocalnames`` and ``co_fastlocalkinds`` as -the the authoritative source of fast locals info. Marshaled code objects -have changed accordingly. diff --git a/Objects/clinic/codeobject.c.h b/Objects/clinic/codeobject.c.h index c1ad09cea05890..7ffdf07e49ada0 100644 --- a/Objects/clinic/codeobject.c.h +++ b/Objects/clinic/codeobject.c.h @@ -373,41 +373,4 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje exit: return return_value; } - -PyDoc_STRVAR(code__varname_from_oparg__doc__, -"_varname_from_oparg($self, /, oparg)\n" -"--\n" -"\n" -"(internal-only) Return the local variable name for the given oparg.\n" -"\n" -"WARNING: this method is for internal use only and may change or go away."); - -#define CODE__VARNAME_FROM_OPARG_METHODDEF \ - {"_varname_from_oparg", (PyCFunction)(void(*)(void))code__varname_from_oparg, METH_FASTCALL|METH_KEYWORDS, code__varname_from_oparg__doc__}, - -static PyObject * -code__varname_from_oparg_impl(PyCodeObject *self, int oparg); - -static PyObject * -code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) -{ - PyObject *return_value = NULL; - static const char * const _keywords[] = {"oparg", NULL}; - static _PyArg_Parser _parser = {NULL, _keywords, "_varname_from_oparg", 0}; - PyObject *argsbuf[1]; - int oparg; - - args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); - if (!args) { - goto exit; - } - oparg = _PyLong_AsInt(args[0]); - if (oparg == -1 && PyErr_Occurred()) { - goto exit; - } - return_value = code__varname_from_oparg_impl(self, oparg); - -exit: - return return_value; -} -/*[clinic end generated code: output=ba4c5487e0364ce8 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=a272b22f63ea002e input=a9049054013a1b77]*/ diff --git a/Objects/codeobject.c b/Objects/codeobject.c index b82a1b5fb8f7b4..75e81821450f52 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -154,93 +154,6 @@ validate_and_copy_tuple(PyObject *tup) * _PyCode_New() ******************/ -// This is also used in compile.c. -void -_Py_set_localsplus_info(int offset, PyObject *name, _PyLocalsPlusKind kind, - PyObject *names, _PyLocalsPlusKinds kinds) -{ - Py_INCREF(name); - PyTuple_SET_ITEM(names, offset, name); - kinds[offset] = kind; - - if (kind == CO_FAST_CELL) { - // Cells can overlap with args, so mark those cases. - int nlocalsplus = (int)PyTuple_GET_SIZE(names); - for (int i = 0; i < nlocalsplus; i++) { - _PyLocalsPlusKind kind = kinds[i]; - if (kind && !(kind & CO_FAST_LOCAL)) { - // We've moved past the locals. - break; - } - PyObject *varname = PyTuple_GET_ITEM(names, i); - int cmp = PyUnicode_Compare(name, varname); - if (cmp == 0) { - kinds[i] |= CO_FAST_CELL; - break; - } - assert(cmp > 0 || !PyErr_Occurred()); - } - } -} - -static void -get_localsplus_counts(PyObject *names, _PyLocalsPlusKinds kinds, - int *pnlocals, int *pncellvars, - int *pnfreevars) -{ - int nlocals = 0; - int ncellvars = 0; - int nfreevars = 0; - int nlocalsplus = Py_SAFE_DOWNCAST(PyTuple_GET_SIZE(names), - Py_ssize_t, int); - for (int i = 0; i < nlocalsplus; i++) { - if (kinds[i] & CO_FAST_LOCAL) { - nlocals += 1; - } - else if (kinds[i] & CO_FAST_CELL) { - ncellvars += 1; - } - else if (kinds[i] & CO_FAST_FREE) { - nfreevars += 1; - } - } - if (pnlocals != NULL) { - *pnlocals = nlocals; - } - if (pncellvars != NULL) { - *pncellvars = ncellvars; - } - if (pnfreevars != NULL) { - *pnfreevars = nfreevars; - } -} - -static PyObject * -get_localsplus_names(PyCodeObject *co, _PyLocalsPlusKind kind, int num) -{ - PyObject *names = PyTuple_New(num); - if (names == NULL) { - return NULL; - } - int index = 0; - for (int offset = 0; offset < co->co_nlocalsplus; offset++) { - if ((co->co_localspluskinds[offset] & kind) == 0) { - continue; - } - // For now there may be duplicates, which we ignore. - if (kind == CO_FAST_CELL && co->co_localspluskinds[offset] != kind) { - continue; - } - assert(index < num); - PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, offset); - Py_INCREF(name); - PyTuple_SET_ITEM(names, index, name); - index += 1; - } - assert(index == num); - return names; -} - int _PyCode_Validate(struct _PyCodeConstructor *con) { @@ -251,9 +164,9 @@ _PyCode_Validate(struct _PyCodeConstructor *con) con->code == NULL || !PyBytes_Check(con->code) || con->consts == NULL || !PyTuple_Check(con->consts) || con->names == NULL || !PyTuple_Check(con->names) || - con->localsplusnames == NULL || !PyTuple_Check(con->localsplusnames) || - (PyTuple_GET_SIZE(con->localsplusnames) && con->localspluskinds == NULL) || - (!PyTuple_GET_SIZE(con->localsplusnames) && con->localspluskinds != NULL) || + con->varnames == NULL || !PyTuple_Check(con->varnames) || + con->freevars == NULL || !PyTuple_Check(con->freevars) || + con->cellvars == NULL || !PyTuple_Check(con->cellvars) || con->name == NULL || !PyUnicode_Check(con->name) || con->filename == NULL || !PyUnicode_Check(con->filename) || con->linetable == NULL || !PyBytes_Check(con->linetable) || @@ -274,10 +187,7 @@ _PyCode_Validate(struct _PyCodeConstructor *con) /* Ensure that the co_varnames has enough names to cover the arg counts. * Note that totalargs = nlocals - nplainlocals. We check nplainlocals * here to avoid the possibility of overflow (however remote). */ - int nlocals; - get_localsplus_counts(con->localsplusnames, con->localspluskinds, - &nlocals, NULL, NULL); - int nplainlocals = nlocals - + int nplainlocals = (int)PyTuple_GET_SIZE(con->varnames) - con->argcount - con->kwonlyargcount - ((con->flags & CO_VARARGS) != 0) - @@ -293,11 +203,6 @@ _PyCode_Validate(struct _PyCodeConstructor *con) static void init_code(PyCodeObject *co, struct _PyCodeConstructor *con) { - int nlocalsplus = (int)PyTuple_GET_SIZE(con->localsplusnames); - int nlocals, ncellvars, nfreevars; - get_localsplus_counts(con->localsplusnames, con->localspluskinds, - &nlocals, &ncellvars, &nfreevars); - Py_INCREF(con->filename); co->co_filename = con->filename; Py_INCREF(con->name); @@ -315,10 +220,12 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) Py_INCREF(con->names); co->co_names = con->names; - Py_INCREF(con->localsplusnames); - co->co_localsplusnames = con->localsplusnames; - // We take ownership of the kinds array. - co->co_localspluskinds = con->localspluskinds; + Py_INCREF(con->varnames); + co->co_varnames = con->varnames; + Py_INCREF(con->cellvars); + co->co_cellvars = con->cellvars; + Py_INCREF(con->freevars); + co->co_freevars = con->freevars; co->co_argcount = con->argcount; co->co_posonlyargcount = con->posonlyargcount; @@ -331,13 +238,10 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) /* derived values */ co->co_cell2arg = NULL; // This will be set soon. - co->co_nlocalsplus = nlocalsplus; - co->co_nlocals = nlocals; - co->co_ncellvars = ncellvars; - co->co_nfreevars = nfreevars; - co->co_varnames = NULL; - co->co_cellvars = NULL; - co->co_freevars = NULL; + co->co_nlocals = (int)PyTuple_GET_SIZE(con->varnames); + co->co_ncellvars = (int)PyTuple_GET_SIZE(con->cellvars); + co->co_nfreevars = (int)PyTuple_GET_SIZE(con->freevars); + co->co_nlocalsplus = co->co_nlocals + co->co_ncellvars + co->co_nfreevars; /* not set */ co->co_weakreflist = NULL; @@ -367,10 +271,24 @@ _PyCode_New(struct _PyCodeConstructor *con) if (intern_string_constants(con->consts, NULL) < 0) { return NULL; } - if (intern_strings(con->localsplusnames) < 0) { + if (intern_strings(con->varnames) < 0) { + return NULL; + } + if (intern_strings(con->freevars) < 0) { + return NULL; + } + if (intern_strings(con->cellvars) < 0) { return NULL; } + /* Check for any inner or outer closure references */ + int ncellvars = (int)PyTuple_GET_SIZE(con->cellvars); + if (!ncellvars && !PyTuple_GET_SIZE(con->freevars)) { + con->flags |= CO_NOFREE; + } else { + con->flags &= ~CO_NOFREE; + } + PyCodeObject *co = PyObject_New(PyCodeObject, &PyCode_Type); if (co == NULL) { PyErr_NoMemory(); @@ -378,26 +296,18 @@ _PyCode_New(struct _PyCodeConstructor *con) } init_code(co, con); - /* Check for any inner or outer closure references */ - if (!co->co_ncellvars && !co->co_nfreevars) { - co->co_flags |= CO_NOFREE; - } else { - co->co_flags &= ~CO_NOFREE; - } - /* Create mapping between cells and arguments if needed. */ - if (co->co_ncellvars) { + if (ncellvars) { int totalargs = co->co_argcount + co->co_kwonlyargcount + ((co->co_flags & CO_VARARGS) != 0) + ((co->co_flags & CO_VARKEYWORDS) != 0); assert(totalargs <= co->co_nlocals); /* Find cells which are also arguments. */ - for (int i = 0; i < co->co_ncellvars; i++) { - PyObject *cellname = PyTuple_GET_ITEM(co->co_localsplusnames, - i + co->co_nlocals); + for (int i = 0; i < ncellvars; i++) { + PyObject *cellname = PyTuple_GET_ITEM(co->co_cellvars, i); for (int j = 0; j < totalargs; j++) { - PyObject *argname = PyTuple_GET_ITEM(co->co_localsplusnames, j); + PyObject *argname = PyTuple_GET_ITEM(co->co_varnames, j); int cmp = PyUnicode_Compare(cellname, argname); if (cmp == -1 && PyErr_Occurred()) { Py_DECREF(co); @@ -405,13 +315,13 @@ _PyCode_New(struct _PyCodeConstructor *con) } if (cmp == 0) { if (co->co_cell2arg == NULL) { - co->co_cell2arg = PyMem_NEW(int, co->co_ncellvars); + co->co_cell2arg = PyMem_NEW(int, ncellvars); if (co->co_cell2arg == NULL) { Py_DECREF(co); PyErr_NoMemory(); return NULL; } - for (int k = 0; k < co->co_ncellvars; k++) { + for (int k = 0; k < ncellvars; k++) { co->co_cell2arg[k] = CO_CELL_NOT_AN_ARG; } } @@ -439,47 +349,6 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, PyObject *filename, PyObject *name, int firstlineno, PyObject *linetable, PyObject *exceptiontable) { - PyCodeObject *co = NULL; - PyObject *localsplusnames = NULL; - _PyLocalsPlusKinds localspluskinds = NULL; - - if (varnames == NULL || !PyTuple_Check(varnames) || - cellvars == NULL || !PyTuple_Check(cellvars) || - freevars == NULL || !PyTuple_Check(freevars) - ) { - PyErr_BadInternalCall(); - return NULL; - } - - // Set the "fast locals plus" info. - int nvarnames = (int)PyTuple_GET_SIZE(varnames); - int ncellvars = (int)PyTuple_GET_SIZE(cellvars); - int nfreevars = (int)PyTuple_GET_SIZE(freevars); - int nlocalsplus = nvarnames + ncellvars + nfreevars; - localsplusnames = PyTuple_New(nlocalsplus); - if (localsplusnames == NULL) { - goto error; - } - if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { - goto error; - } - int offset = 0; - for (int i = 0; i < nvarnames; i++, offset++) { - PyObject *name = PyTuple_GET_ITEM(varnames, i); - _Py_set_localsplus_info(offset, name, CO_FAST_LOCAL, - localsplusnames, localspluskinds); - } - for (int i = 0; i < ncellvars; i++, offset++) { - PyObject *name = PyTuple_GET_ITEM(cellvars, i); - _Py_set_localsplus_info(offset, name, CO_FAST_CELL, - localsplusnames, localspluskinds); - } - for (int i = 0; i < nfreevars; i++, offset++) { - PyObject *name = PyTuple_GET_ITEM(freevars, i); - _Py_set_localsplus_info(offset, name, CO_FAST_FREE, - localsplusnames, localspluskinds); - } - struct _PyCodeConstructor con = { .filename = filename, .name = name, @@ -492,8 +361,9 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, .consts = consts, .names = names, - .localsplusnames = localsplusnames, - .localspluskinds = localspluskinds, + .varnames = varnames, + .cellvars = cellvars, + .freevars = freevars, .argcount = argcount, .posonlyargcount = posonlyargcount, @@ -503,33 +373,17 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, .exceptiontable = exceptiontable, }; - if (_PyCode_Validate(&con) < 0) { - goto error; + return NULL; } + if (nlocals != PyTuple_GET_SIZE(varnames)) { PyErr_SetString(PyExc_ValueError, "code: co_nlocals != len(co_varnames)"); - goto error; - } - - co = _PyCode_New(&con); - if (co == NULL) { - goto error; + return NULL; } - localspluskinds = NULL; // This keeps it from getting freed below. - Py_INCREF(varnames); - co->co_varnames = varnames; - Py_INCREF(cellvars); - co->co_cellvars = cellvars; - Py_INCREF(freevars); - co->co_freevars = freevars; - -error: - Py_XDECREF(localsplusnames); - _PyCode_ClearLocalsPlusKinds(localspluskinds); - return co; + return _PyCode_New(&con); } PyCodeObject * @@ -580,7 +434,9 @@ PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno) .linetable = emptystring, .consts = nulltuple, .names = nulltuple, - .localsplusnames = nulltuple, + .varnames = nulltuple, + .cellvars = nulltuple, + .freevars = nulltuple, .exceptiontable = emptystring, }; result = _PyCode_New(&con); @@ -1023,53 +879,6 @@ _PyCode_SetExtra(PyObject *code, Py_ssize_t index, void *extra) } -/****************** - * other PyCodeObject accessor functions - ******************/ - -PyObject * -_PyCode_GetVarnames(PyCodeObject *co) -{ - if (co->co_varnames == NULL) { - co->co_varnames = get_localsplus_names(co, CO_FAST_LOCAL, - co->co_nlocals); - if (co->co_varnames == NULL) { - return NULL; - } - } - Py_INCREF(co->co_varnames); - return co->co_varnames; -} - -PyObject * -_PyCode_GetCellvars(PyCodeObject *co) -{ - if (co->co_cellvars == NULL) { - co->co_cellvars = get_localsplus_names(co, CO_FAST_CELL, - co->co_ncellvars); - if (co->co_cellvars == NULL) { - return NULL; - } - } - Py_INCREF(co->co_cellvars); - return co->co_cellvars; -} - -PyObject * -_PyCode_GetFreevars(PyCodeObject *co) -{ - if (co->co_freevars == NULL) { - co->co_freevars = get_localsplus_names(co, CO_FAST_FREE, - co->co_nfreevars); - if (co->co_freevars == NULL) { - return NULL; - } - } - Py_INCREF(co->co_freevars); - return co->co_freevars; -} - - /****************** * PyCode_Type ******************/ @@ -1219,8 +1028,6 @@ code_dealloc(PyCodeObject *co) Py_XDECREF(co->co_code); Py_XDECREF(co->co_consts); Py_XDECREF(co->co_names); - Py_XDECREF(co->co_localsplusnames); - _PyCode_ClearLocalsPlusKinds(co->co_localspluskinds); Py_XDECREF(co->co_varnames); Py_XDECREF(co->co_freevars); Py_XDECREF(co->co_cellvars); @@ -1279,6 +1086,8 @@ code_richcompare(PyObject *self, PyObject *other, int op) if (!eq) goto unequal; eq = co->co_kwonlyargcount == cp->co_kwonlyargcount; if (!eq) goto unequal; + eq = co->co_nlocals == cp->co_nlocals; + if (!eq) goto unequal; eq = co->co_flags == cp->co_flags; if (!eq) goto unequal; eq = co->co_firstlineno == cp->co_firstlineno; @@ -1302,8 +1111,11 @@ code_richcompare(PyObject *self, PyObject *other, int op) eq = PyObject_RichCompareBool(co->co_names, cp->co_names, Py_EQ); if (eq <= 0) goto unequal; - eq = PyObject_RichCompareBool(co->co_localsplusnames, - cp->co_localsplusnames, Py_EQ); + eq = PyObject_RichCompareBool(co->co_varnames, cp->co_varnames, Py_EQ); + if (eq <= 0) goto unequal; + eq = PyObject_RichCompareBool(co->co_freevars, cp->co_freevars, Py_EQ); + if (eq <= 0) goto unequal; + eq = PyObject_RichCompareBool(co->co_cellvars, cp->co_cellvars, Py_EQ); if (eq <= 0) goto unequal; if (op == Py_EQ) @@ -1328,7 +1140,7 @@ code_richcompare(PyObject *self, PyObject *other, int op) static Py_hash_t code_hash(PyCodeObject *co) { - Py_hash_t h, h0, h1, h2, h3, h4; + Py_hash_t h, h0, h1, h2, h3, h4, h5, h6; h0 = PyObject_Hash(co->co_name); if (h0 == -1) return -1; h1 = PyObject_Hash(co->co_code); @@ -1337,11 +1149,15 @@ code_hash(PyCodeObject *co) if (h2 == -1) return -1; h3 = PyObject_Hash(co->co_names); if (h3 == -1) return -1; - h4 = PyObject_Hash(co->co_localsplusnames); + h4 = PyObject_Hash(co->co_varnames); if (h4 == -1) return -1; - h = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ + h5 = PyObject_Hash(co->co_freevars); + if (h5 == -1) return -1; + h6 = PyObject_Hash(co->co_cellvars); + if (h6 == -1) return -1; + h = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ h5 ^ h6 ^ co->co_argcount ^ co->co_posonlyargcount ^ co->co_kwonlyargcount ^ - co->co_flags; + co->co_nlocals ^ co->co_flags; if (h == -1) h = -2; return h; } @@ -1353,11 +1169,15 @@ static PyMemberDef code_memberlist[] = { {"co_argcount", T_INT, OFF(co_argcount), READONLY}, {"co_posonlyargcount", T_INT, OFF(co_posonlyargcount), READONLY}, {"co_kwonlyargcount", T_INT, OFF(co_kwonlyargcount), READONLY}, + {"co_nlocals", T_INT, OFF(co_nlocals), READONLY}, {"co_stacksize",T_INT, OFF(co_stacksize), READONLY}, {"co_flags", T_INT, OFF(co_flags), READONLY}, {"co_code", T_OBJECT, OFF(co_code), READONLY}, {"co_consts", T_OBJECT, OFF(co_consts), READONLY}, {"co_names", T_OBJECT, OFF(co_names), READONLY}, + {"co_varnames", T_OBJECT, OFF(co_varnames), READONLY}, + {"co_freevars", T_OBJECT, OFF(co_freevars), READONLY}, + {"co_cellvars", T_OBJECT, OFF(co_cellvars), READONLY}, {"co_filename", T_OBJECT, OFF(co_filename), READONLY}, {"co_name", T_OBJECT, OFF(co_name), READONLY}, {"co_firstlineno", T_INT, OFF(co_firstlineno), READONLY}, @@ -1367,43 +1187,15 @@ static PyMemberDef code_memberlist[] = { }; + static PyObject * code_getlnotab(PyCodeObject *code, void *closure) { return decode_linetable(code); } -static PyObject * -code_getnlocals(PyCodeObject *code, void *closure) -{ - return PyLong_FromLong(code->co_nlocals); -} - -static PyObject * -code_getvarnames(PyCodeObject *code, void *closure) -{ - return _PyCode_GetVarnames(code); -} - -static PyObject * -code_getcellvars(PyCodeObject *code, void *closure) -{ - return _PyCode_GetCellvars(code); -} - -static PyObject * -code_getfreevars(PyCodeObject *code, void *closure) -{ - return _PyCode_GetFreevars(code); -} - static PyGetSetDef code_getsetlist[] = { {"co_lnotab", (getter)code_getlnotab, NULL, NULL}, - // The following old names are kept for backward compatibility. - {"co_nlocals", (getter)code_getnlocals, NULL, NULL}, - {"co_varnames", (getter)code_getvarnames, NULL, NULL}, - {"co_cellvars", (getter)code_getcellvars, NULL, NULL}, - {"co_freevars", (getter)code_getfreevars, NULL, NULL}, {0} }; @@ -1412,17 +1204,15 @@ static PyObject * code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args)) { Py_ssize_t res = _PyObject_SIZE(Py_TYPE(co)); - _PyCodeObjectExtra *co_extra = (_PyCodeObjectExtra*) co->co_extra; - if (co_extra != NULL) { - res += sizeof(_PyCodeObjectExtra) + - (co_extra->ce_size-1) * sizeof(co_extra->ce_extras[0]); - } if (co->co_cell2arg != NULL && co->co_cellvars != NULL) { res += co->co_ncellvars * sizeof(Py_ssize_t); } - + if (co_extra != NULL) { + res += sizeof(_PyCodeObjectExtra) + + (co_extra->ce_size-1) * sizeof(co_extra->ce_extras[0]); + } if (co->co_opcache != NULL) { assert(co->co_opcache_map != NULL); // co_opcache_map @@ -1430,7 +1220,6 @@ code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args)) // co_opcache res += co->co_opcache_size * sizeof(_PyOpcache); } - return PyLong_FromSsize_t(res); } @@ -1501,68 +1290,11 @@ code_replace_impl(PyCodeObject *self, int co_argcount, return NULL; } - PyObject *varnames = NULL; - PyObject *cellvars = NULL; - PyObject *freevars = NULL; - if (co_varnames == NULL) { - varnames = get_localsplus_names(self, CO_FAST_LOCAL, self->co_nlocals); - if (varnames == NULL) { - goto error; - } - co_varnames = varnames; - } - if (co_cellvars == NULL) { - cellvars = get_localsplus_names(self, CO_FAST_CELL, self->co_ncellvars); - if (cellvars == NULL) { - goto error; - } - co_cellvars = cellvars; - } - if (co_freevars == NULL) { - freevars = get_localsplus_names(self, CO_FAST_FREE, self->co_nfreevars); - if (freevars == NULL) { - goto error; - } - co_freevars = freevars; - } - - PyCodeObject *co = PyCode_NewWithPosOnlyArgs( + return (PyObject *)PyCode_NewWithPosOnlyArgs( co_argcount, co_posonlyargcount, co_kwonlyargcount, co_nlocals, co_stacksize, co_flags, (PyObject*)co_code, co_consts, co_names, co_varnames, co_freevars, co_cellvars, co_filename, co_name, co_firstlineno, (PyObject*)co_linetable, (PyObject*)co_exceptiontable); - if (co == NULL) { - goto error; - } - return (PyObject *)co; - -error: - Py_XDECREF(varnames); - Py_XDECREF(cellvars); - Py_XDECREF(freevars); - return NULL; -} - -/*[clinic input] -code._varname_from_oparg - - oparg: int - -(internal-only) Return the local variable name for the given oparg. - -WARNING: this method is for internal use only and may change or go away. -[clinic start generated code]*/ - -static PyObject * -code__varname_from_oparg_impl(PyCodeObject *self, int oparg) -/*[clinic end generated code: output=1fd1130413184206 input=c5fa3ee9bac7d4ca]*/ -{ - PyObject *name = PyTuple_GetItem(self->co_localsplusnames, oparg); - if (name == NULL) { - return NULL; - } - Py_INCREF(name); - return name; } /* XXX code objects need to participate in GC? */ @@ -1571,7 +1303,6 @@ static struct PyMethodDef code_methods[] = { {"__sizeof__", (PyCFunction)code_sizeof, METH_NOARGS}, {"co_lines", (PyCFunction)code_linesiterator, METH_NOARGS}, CODE_REPLACE_METHODDEF - CODE__VARNAME_FROM_OPARG_METHODDEF {NULL, NULL} /* sentinel */ }; diff --git a/Objects/frameobject.c b/Objects/frameobject.c index ef5ff4e6983546..1bfae90b9b2c8c 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -4,7 +4,6 @@ #include "pycore_ceval.h" // _PyEval_BuiltinsFromGlobals() #include "pycore_moduleobject.h" // _PyModule_GetDict() #include "pycore_object.h" // _PyObject_GC_UNTRACK() -#include "pycore_code.h" // CO_FAST_LOCAL, etc. #include "frameobject.h" // PyFrameObject #include "pycore_frame.h" @@ -660,9 +659,9 @@ frame_traverse(PyFrameObject *f, visitproc visit, void *arg) Py_VISIT(f->f_trace); /* locals */ - PyObject **localsplus = f->f_localsptr; - for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++localsplus) { - Py_VISIT(*localsplus); + PyObject **fastlocals = f->f_localsptr; + for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++fastlocals) { + Py_VISIT(*fastlocals); } /* stack */ @@ -685,9 +684,9 @@ frame_tp_clear(PyFrameObject *f) Py_CLEAR(f->f_trace); /* locals */ - PyObject **localsplus = f->f_localsptr; - for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++localsplus) { - Py_CLEAR(*localsplus); + PyObject **fastlocals = f->f_localsptr; + for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++fastlocals) { + Py_CLEAR(*fastlocals); } /* stack */ @@ -918,13 +917,112 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, return f; } +/* Convert between "fast" version of locals and dictionary version. + + map and values are input arguments. map is a tuple of strings. + values is an array of PyObject*. At index i, map[i] is the name of + the variable with value values[i]. The function copies the first + nmap variable from map/values into dict. If values[i] is NULL, + the variable is deleted from dict. + + If deref is true, then the values being copied are cell variables + and the value is extracted from the cell variable before being put + in dict. + */ + +static int +map_to_dict(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, + int deref) +{ + Py_ssize_t j; + assert(PyTuple_Check(map)); + assert(PyDict_Check(dict)); + assert(PyTuple_Size(map) >= nmap); + for (j=0; j < nmap; j++) { + PyObject *key = PyTuple_GET_ITEM(map, j); + PyObject *value = values[j]; + assert(PyUnicode_Check(key)); + if (deref && value != NULL) { + assert(PyCell_Check(value)); + value = PyCell_GET(value); + } + if (value == NULL) { + if (PyObject_DelItem(dict, key) != 0) { + if (PyErr_ExceptionMatches(PyExc_KeyError)) + PyErr_Clear(); + else + return -1; + } + } + else { + if (PyObject_SetItem(dict, key, value) != 0) + return -1; + } + } + return 0; +} + +/* Copy values from the "locals" dict into the fast locals. + + dict is an input argument containing string keys representing + variables names and arbitrary PyObject* as values. + + map and values are input arguments. map is a tuple of strings. + values is an array of PyObject*. At index i, map[i] is the name of + the variable with value values[i]. The function copies the first + nmap variable from map/values into dict. If values[i] is NULL, + the variable is deleted from dict. + + If deref is true, then the values being copied are cell variables + and the value is extracted from the cell variable before being put + in dict. If clear is true, then variables in map but not in dict + are set to NULL in map; if clear is false, variables missing in + dict are ignored. + + Exceptions raised while modifying the dict are silently ignored, + because there is no good way to report them. +*/ + +static void +dict_to_map(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, + int deref, int clear) +{ + Py_ssize_t j; + assert(PyTuple_Check(map)); + assert(PyDict_Check(dict)); + assert(PyTuple_Size(map) >= nmap); + for (j=0; j < nmap; j++) { + PyObject *key = PyTuple_GET_ITEM(map, j); + PyObject *value = PyObject_GetItem(dict, key); + assert(PyUnicode_Check(key)); + /* We only care about NULLs if clear is true. */ + if (value == NULL) { + PyErr_Clear(); + if (!clear) + continue; + } + if (deref) { + assert(PyCell_Check(values[j])); + if (PyCell_GET(values[j]) != value) { + if (PyCell_Set(values[j], value) < 0) + PyErr_Clear(); + } + } else if (values[j] != value) { + Py_XINCREF(value); + Py_XSETREF(values[j], value); + } + Py_XDECREF(value); + } +} + int PyFrame_FastToLocalsWithError(PyFrameObject *f) { /* Merge fast locals into f->f_locals */ - PyObject *locals; + PyObject *locals, *map; PyObject **fast; PyCodeObject *co; + Py_ssize_t j; if (f == NULL) { PyErr_BadInternalCall(); @@ -937,9 +1035,25 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) return -1; } co = f->f_code; + map = co->co_varnames; + if (!PyTuple_Check(map)) { + PyErr_Format(PyExc_SystemError, + "co_varnames must be a tuple, not %s", + Py_TYPE(map)->tp_name); + return -1; + } fast = f->f_localsptr; - for (int i = 0; i < co->co_nlocalsplus; i++) { - _PyLocalsPlusKind kind = co->co_localspluskinds[i]; + j = PyTuple_GET_SIZE(map); + if (j > co->co_nlocals) + j = co->co_nlocals; + if (co->co_nlocals) { + if (map_to_dict(map, j, locals, fast, 0) < 0) + return -1; + } + if (co->co_ncellvars || co->co_nfreevars) { + if (map_to_dict(co->co_cellvars, co->co_ncellvars, + locals, fast + co->co_nlocals, 1)) + return -1; /* If the namespace is unoptimized, then one of the following cases applies: @@ -949,42 +1063,10 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) We don't want to accidentally copy free variables into the locals dict used by the class. */ - if (kind & CO_FAST_FREE && !(co->co_flags & CO_OPTIMIZED)) { - continue; - } - - /* Some args are also cells. For now each of those variables - has two indices in the fast array, with both marked as cells - but only one marked as an arg. That one is always set - to NULL in _PyEval_MakeFrameVector() and the other index - gets the cell holding the arg value. So we ignore the - former here and will later use the cell for the variable. - */ - if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { - assert(fast[i] == NULL); - continue; - } - - PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); - PyObject *value = fast[i]; - if (kind & (CO_FAST_CELL | CO_FAST_FREE) && value != NULL) { - assert(PyCell_Check(value)); - value = PyCell_GET(value); - } - if (value == NULL) { - if (PyObject_DelItem(locals, name) != 0) { - if (PyErr_ExceptionMatches(PyExc_KeyError)) { - PyErr_Clear(); - } - else { - return -1; - } - } - } - else { - if (PyObject_SetItem(locals, name, value) != 0) { + if (co->co_flags & CO_OPTIMIZED) { + if (map_to_dict(co->co_freevars, co->co_nfreevars, locals, + fast + co->co_nlocals + co->co_ncellvars, 1) < 0) return -1; - } } } return 0; @@ -1006,51 +1088,36 @@ void PyFrame_LocalsToFast(PyFrameObject *f, int clear) { /* Merge locals into fast locals */ - PyObject *locals; + PyObject *locals, *map; PyObject **fast; PyObject *error_type, *error_value, *error_traceback; PyCodeObject *co; + Py_ssize_t j; if (f == NULL) return; locals = _PyFrame_Specials(f)[FRAME_SPECIALS_LOCALS_OFFSET]; + co = f->f_code; + map = co->co_varnames; if (locals == NULL) return; - fast = f->f_localsptr; - co = f->f_code; - + if (!PyTuple_Check(map)) + return; PyErr_Fetch(&error_type, &error_value, &error_traceback); - for (int i = 0; i < co->co_nlocalsplus; i++) { - _PyLocalsPlusKind kind = co->co_localspluskinds[i]; - - /* Same test as in PyFrame_FastToLocals() above. */ - if (kind & CO_FAST_FREE && !(co->co_flags & CO_OPTIMIZED)) { - continue; - } + fast = f->f_localsptr; + j = PyTuple_GET_SIZE(map); + if (j > co->co_nlocals) + j = co->co_nlocals; + if (co->co_nlocals) + dict_to_map(co->co_varnames, j, locals, fast, 0, clear); + if (co->co_ncellvars || co->co_nfreevars) { + dict_to_map(co->co_cellvars, co->co_ncellvars, + locals, fast + co->co_nlocals, 1, clear); /* Same test as in PyFrame_FastToLocals() above. */ - if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { - continue; + if (co->co_flags & CO_OPTIMIZED) { + dict_to_map(co->co_freevars, co->co_nfreevars, locals, + fast + co->co_nlocals + co->co_ncellvars, 1, + clear); } - PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); - PyObject *value = PyObject_GetItem(locals, name); - /* We only care about NULLs if clear is true. */ - if (value == NULL) { - PyErr_Clear(); - if (!clear) { - continue; - } - } - if (kind & (CO_FAST_CELL | CO_FAST_FREE)) { - assert(PyCell_Check(fast[i])); - if (PyCell_GET(fast[i]) != value) { - if (PyCell_Set(fast[i], value) < 0) { - PyErr_Clear(); - } - } - } else if (fast[i] != value) { - Py_XINCREF(value); - Py_XSETREF(fast[i], value); - } - Py_XDECREF(value); } PyErr_Restore(error_type, error_value, error_traceback); } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index bd2cade3bd68b4..bf792e21c162dd 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2,7 +2,6 @@ #include "Python.h" #include "pycore_call.h" -#include "pycore_code.h" // CO_FAST_FREE #include "pycore_compile.h" // _Py_Mangle() #include "pycore_initconfig.h" #include "pycore_moduleobject.h" // _PyModule_GetDef() @@ -8895,15 +8894,13 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, return -1; } - // Look for __class__ in the free vars. PyTypeObject *type = NULL; - i = co->co_nlocals + co->co_ncellvars; - for (; i < co->co_nlocalsplus; i++) { - assert(co->co_localspluskinds[i] & CO_FAST_FREE); - PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); + for (i = 0; i < co->co_nfreevars; i++) { + PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i); assert(PyUnicode_Check(name)); if (_PyUnicode_EqualToASCIIId(name, &PyId___class__)) { - PyObject *cell = f->f_localsptr[i]; + Py_ssize_t index = co->co_nlocals + co->co_ncellvars + i; + PyObject *cell = f->f_localsptr[index]; if (cell == NULL || !PyCell_Check(cell)) { PyErr_SetString(PyExc_RuntimeError, "super(): bad __class__ cell"); diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index 5757c150343087..f5140b8a806b49 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -19,9 +19,10 @@ unsigned char M_test_frozenmain[] = { 121,115,90,17,95,116,101,115,116,105,110,116,101,114,110,97, 108,99,97,112,105,218,5,112,114,105,110,116,218,4,97,114, 103,118,90,11,103,101,116,95,99,111,110,102,105,103,115,114, - 2,0,0,0,218,3,107,101,121,169,0,250,18,116,101,115, - 116,95,102,114,111,122,101,110,109,97,105,110,46,112,121,218, - 8,60,109,111,100,117,108,101,62,1,0,0,0,115,16,0, - 0,0,8,3,8,1,8,2,12,1,12,1,8,1,26,7, - 4,249,243,0,0,0,0, + 2,0,0,0,218,3,107,101,121,169,0,114,8,0,0,0, + 114,8,0,0,0,250,18,116,101,115,116,95,102,114,111,122, + 101,110,109,97,105,110,46,112,121,218,8,60,109,111,100,117, + 108,101,62,1,0,0,0,115,16,0,0,0,8,3,8,1, + 8,2,12,1,12,1,8,1,26,7,4,249,243,0,0,0, + 0, }; diff --git a/Python/ceval.c b/Python/ceval.c index 7602ac9eaf5260..4dff7bd2df9834 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1438,7 +1438,7 @@ eval_frame_handle_pending(PyThreadState *tstate) /* Local variable macros */ -#define GETLOCAL(i) (localsplus[i]) +#define GETLOCAL(i) (fastlocals[i]) /* The SETLOCAL() macro must not DECREF the local variable in-place and then store the new value; it must copy the old value to a temporary @@ -1569,7 +1569,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) const _Py_CODEUNIT *next_instr; int opcode; /* Current opcode */ int oparg; /* Current opcode argument, if any */ - PyObject **localsplus, **specials; + PyObject **fastlocals, **freevars, **specials; PyObject *retval = NULL; /* Return value */ _Py_atomic_int * const eval_breaker = &tstate->interp->ceval.eval_breaker; PyCodeObject *co; @@ -1646,7 +1646,8 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) names = co->co_names; consts = co->co_consts; - localsplus = f->f_localsptr; + fastlocals = f->f_localsptr; + freevars = f->f_localsptr + co->co_nlocals; assert(PyBytes_Check(co->co_code)); assert(PyBytes_GET_SIZE(co->co_code) <= INT_MAX); assert(PyBytes_GET_SIZE(co->co_code) % sizeof(_Py_CODEUNIT) == 0); @@ -1819,15 +1820,12 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) DISPATCH(); } - /* We keep LOAD_CLOSURE so that the bytecode stays more readable. */ - case TARGET(LOAD_CLOSURE): case TARGET(LOAD_FAST): { PyObject *value = GETLOCAL(oparg); if (value == NULL) { format_exc_check_arg(tstate, PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, - PyTuple_GetItem(co->co_localsplusnames, - oparg)); + PyTuple_GetItem(co->co_varnames, oparg)); goto error; } Py_INCREF(value); @@ -3055,13 +3053,13 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) format_exc_check_arg( tstate, PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, - PyTuple_GetItem(co->co_localsplusnames, oparg) + PyTuple_GetItem(co->co_varnames, oparg) ); goto error; } case TARGET(DELETE_DEREF): { - PyObject *cell = GETLOCAL(oparg); + PyObject *cell = freevars[oparg]; PyObject *oldobj = PyCell_GET(cell); if (oldobj != NULL) { PyCell_SET(cell, NULL); @@ -3072,11 +3070,21 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) goto error; } + case TARGET(LOAD_CLOSURE): { + PyObject *cell = freevars[oparg]; + Py_INCREF(cell); + PUSH(cell); + DISPATCH(); + } + case TARGET(LOAD_CLASSDEREF): { PyObject *name, *value, *locals = LOCALS(); + Py_ssize_t idx; assert(locals); - assert(oparg >= 0 && oparg < co->co_nlocalsplus); - name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg); + assert(oparg >= co->co_ncellvars); + idx = oparg - co->co_ncellvars; + assert(idx >= 0 && idx < co->co_nfreevars); + name = PyTuple_GET_ITEM(co->co_freevars, idx); if (PyDict_CheckExact(locals)) { value = PyDict_GetItemWithError(locals, name); if (value != NULL) { @@ -3096,7 +3104,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } } if (!value) { - PyObject *cell = GETLOCAL(oparg); + PyObject *cell = freevars[oparg]; value = PyCell_GET(cell); if (value == NULL) { format_exc_unbound(tstate, co, oparg); @@ -3109,7 +3117,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } case TARGET(LOAD_DEREF): { - PyObject *cell = GETLOCAL(oparg); + PyObject *cell = freevars[oparg]; PyObject *value = PyCell_GET(cell); if (value == NULL) { format_exc_unbound(tstate, co, oparg); @@ -3122,7 +3130,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) case TARGET(STORE_DEREF): { PyObject *v = POP(); - PyObject *cell = GETLOCAL(oparg); + PyObject *cell = freevars[oparg]; PyObject *oldobj = PyCell_GET(cell); PyCell_SET(cell, v); Py_XDECREF(oldobj); @@ -4628,7 +4636,7 @@ format_missing(PyThreadState *tstate, const char *kind, static void missing_arguments(PyThreadState *tstate, PyCodeObject *co, Py_ssize_t missing, Py_ssize_t defcount, - PyObject **localsplus, PyObject *qualname) + PyObject **fastlocals, PyObject *qualname) { Py_ssize_t i, j = 0; Py_ssize_t start, end; @@ -4650,7 +4658,7 @@ missing_arguments(PyThreadState *tstate, PyCodeObject *co, } for (i = start; i < end; i++) { if (GETLOCAL(i) == NULL) { - PyObject *raw = PyTuple_GET_ITEM(co->co_localsplusnames, i); + PyObject *raw = PyTuple_GET_ITEM(co->co_varnames, i); PyObject *name = PyObject_Repr(raw); if (name == NULL) { Py_DECREF(missing_names); @@ -4667,7 +4675,7 @@ missing_arguments(PyThreadState *tstate, PyCodeObject *co, static void too_many_positional(PyThreadState *tstate, PyCodeObject *co, Py_ssize_t given, PyObject *defaults, - PyObject **localsplus, PyObject *qualname) + PyObject **fastlocals, PyObject *qualname) { int plural; Py_ssize_t kwonly_given = 0; @@ -4731,7 +4739,7 @@ positional_only_passed_as_keyword(PyThreadState *tstate, PyCodeObject *co, PyObject* posonly_names = PyList_New(0); for(int k=0; k < co->co_posonlyargcount; k++){ - PyObject* posonly_name = PyTuple_GET_ITEM(co->co_localsplusnames, k); + PyObject* posonly_name = PyTuple_GET_ITEM(co->co_varnames, k); for (int k2=0; k2fc_code; const Py_ssize_t total_args = co->co_argcount + co->co_kwonlyargcount; + PyObject **freevars = fastlocals + co->co_nlocals; /* Create a dictionary for keyword parameters (**kwags) */ PyObject *kwdict; @@ -4932,7 +4941,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, /* Speed hack: do raw pointer compares. As names are normally interned this should almost always hit. */ - co_varnames = ((PyTupleObject *)(co->co_localsplusnames))->ob_item; + co_varnames = ((PyTupleObject *)(co->co_varnames))->ob_item; for (j = co->co_posonlyargcount; j < total_args; j++) { PyObject *varname = co_varnames[j]; if (varname == keyword) { @@ -4988,7 +4997,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, /* Check the number of positional arguments */ if ((argcount > co->co_argcount) && !(co->co_flags & CO_VARARGS)) { - too_many_positional(tstate, co, argcount, con->fc_defaults, localsplus, + too_many_positional(tstate, co, argcount, con->fc_defaults, fastlocals, con->fc_qualname); goto fail; } @@ -5004,7 +5013,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, } } if (missing) { - missing_arguments(tstate, co, missing, defcount, localsplus, + missing_arguments(tstate, co, missing, defcount, fastlocals, con->fc_qualname); goto fail; } @@ -5030,7 +5039,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, for (i = co->co_argcount; i < total_args; i++) { if (GETLOCAL(i) != NULL) continue; - PyObject *varname = PyTuple_GET_ITEM(co->co_localsplusnames, i); + PyObject *varname = PyTuple_GET_ITEM(co->co_varnames, i); if (con->fc_kwdefaults != NULL) { PyObject *def = PyDict_GetItemWithError(con->fc_kwdefaults, varname); if (def) { @@ -5045,13 +5054,12 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, missing++; } if (missing) { - missing_arguments(tstate, co, missing, -1, localsplus, + missing_arguments(tstate, co, missing, -1, fastlocals, con->fc_qualname); goto fail; } } - /* Allocate and initialize storage for cell vars, and copy free vars into frame. */ for (i = 0; i < co->co_ncellvars; ++i) { @@ -5076,7 +5084,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, for (i = 0; i < co->co_nfreevars; ++i) { PyObject *o = PyTuple_GET_ITEM(con->fc_closure, i); Py_INCREF(o); - localsplus[co->co_nlocals + co->co_ncellvars + i] = o; + freevars[co->co_ncellvars + i] = o; } return 0; @@ -6409,11 +6417,15 @@ format_exc_unbound(PyThreadState *tstate, PyCodeObject *co, int oparg) /* Don't stomp existing exception */ if (_PyErr_Occurred(tstate)) return; - name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg); - if (oparg < co->co_ncellvars + co->co_nlocals) { - format_exc_check_arg(tstate, PyExc_UnboundLocalError, - UNBOUNDLOCAL_ERROR_MSG, name); + if (oparg < co->co_ncellvars) { + name = PyTuple_GET_ITEM(co->co_cellvars, + oparg); + format_exc_check_arg(tstate, + PyExc_UnboundLocalError, + UNBOUNDLOCAL_ERROR_MSG, + name); } else { + name = PyTuple_GET_ITEM(co->co_freevars, oparg - co->co_ncellvars); format_exc_check_arg(tstate, PyExc_NameError, UNBOUNDFREE_ERROR_MSG, name); } @@ -6455,14 +6467,16 @@ unicode_concatenate(PyThreadState *tstate, PyObject *v, PyObject *w, switch (opcode) { case STORE_FAST: { - PyObject **localsplus = f->f_localsptr; + PyObject **fastlocals = f->f_localsptr; if (GETLOCAL(oparg) == v) SETLOCAL(oparg, NULL); break; } case STORE_DEREF: { - PyObject *c = f->f_localsptr[oparg]; + PyObject **freevars = (f->f_localsptr + + f->f_code->co_nlocals); + PyObject *c = freevars[oparg]; if (PyCell_GET(c) == v) { PyCell_SET(c, NULL); Py_DECREF(v); diff --git a/Python/compile.c b/Python/compile.c index 110425000c8639..03d522b34f113b 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2047,16 +2047,16 @@ static int compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, PyObject *qualname) { + Py_ssize_t i, free = PyCode_GetNumFree(co); if (qualname == NULL) qualname = co->co_name; - if (co->co_nfreevars) { - int i = co->co_nlocals + co->co_ncellvars; - for (; i < co->co_nlocalsplus; ++i) { + if (free) { + for (i = 0; i < free; ++i) { /* Bypass com_addop_varname because it will generate LOAD_DEREF but LOAD_CLOSURE is needed. */ - PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); + PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i); /* Special case: If a class contains a method with a free variable that has the same name as a method, @@ -2076,10 +2076,6 @@ compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, arg = compiler_lookup_arg(c->u->u_freevars, name); } if (arg == -1) { - PyObject *freevars = _PyCode_GetFreevars(co); - if (freevars == NULL) { - PyErr_Clear(); - } PyErr_Format(PyExc_SystemError, "compiler_lookup_arg(name=%R) with reftype=%d failed in %S; " "freevars of code %S: %R", @@ -2087,13 +2083,13 @@ compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, reftype, c->u->u_name, co->co_name, - freevars); + co->co_freevars); return 0; } ADDOP_I(c, LOAD_CLOSURE, arg); } flags |= 0x08; - ADDOP_I(c, BUILD_TUPLE, co->co_nfreevars); + ADDOP_I(c, BUILD_TUPLE, free); } ADDOP_LOAD_CONST(c, (PyObject*)co); ADDOP_LOAD_CONST(c, qualname); @@ -7180,46 +7176,6 @@ merge_const_one(struct compiler *c, PyObject **obj) return 1; } -// This is in codeobject.c. -extern void _Py_set_localsplus_info(int, PyObject *, _PyLocalsPlusKind, - PyObject *, _PyLocalsPlusKinds); - -static void -compute_localsplus_info(struct compiler *c, - PyObject *names, _PyLocalsPlusKinds kinds) -{ - int nlocalsplus = (int)PyTuple_GET_SIZE(names); - - PyObject *k, *v; - Py_ssize_t pos = 0; - while (PyDict_Next(c->u->u_varnames, &pos, &k, &v)) { - int offset = (int)PyLong_AS_LONG(v); - assert(offset >= 0); - assert(offset < nlocalsplus); - // For now we do not distinguish arg kinds. - _Py_set_localsplus_info(offset, k, CO_FAST_LOCAL, names, kinds); - } - int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); - - pos = 0; - while (PyDict_Next(c->u->u_cellvars, &pos, &k, &v)) { - int offset = (int)PyLong_AS_LONG(v); - assert(offset >= 0); - offset += nlocals; - assert(offset < nlocalsplus); - _Py_set_localsplus_info(offset, k, CO_FAST_CELL, names, kinds); - } - - pos = 0; - while (PyDict_Next(c->u->u_freevars, &pos, &k, &v)) { - int offset = (int)PyLong_AS_LONG(v); - assert(offset >= 0); - offset += nlocals; - assert(offset < nlocalsplus); - _Py_set_localsplus_info(offset, k, CO_FAST_FREE, names, kinds); - } -} - static PyCodeObject * makecode(struct compiler *c, struct assembler *a, PyObject *constslist, int maxdepth) @@ -7227,23 +7183,37 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, PyCodeObject *co = NULL; PyObject *names = NULL; PyObject *consts = NULL; - PyObject *localsplusnames = NULL; - _PyLocalsPlusKinds localspluskinds = NULL; + PyObject *varnames = NULL; PyObject *name = NULL; + PyObject *freevars = NULL; + PyObject *cellvars = NULL; + int flags; + int posorkeywordargcount, posonlyargcount, kwonlyargcount; names = dict_keys_inorder(c->u->u_names, 0); - if (!names) { + varnames = dict_keys_inorder(c->u->u_varnames, 0); + if (!names || !varnames) { goto error; } - if (!merge_const_one(c, &names)) { + cellvars = dict_keys_inorder(c->u->u_cellvars, 0); + if (!cellvars) + goto error; + freevars = dict_keys_inorder(c->u->u_freevars, PyTuple_GET_SIZE(cellvars)); + if (!freevars) goto error; - } - int flags = compute_code_flags(c); - if (flags < 0) { + if (!merge_const_one(c, &names) || + !merge_const_one(c, &varnames) || + !merge_const_one(c, &cellvars) || + !merge_const_one(c, &freevars)) + { goto error; } + flags = compute_code_flags(c); + if (flags < 0) + goto error; + consts = PyList_AsTuple(constslist); /* PyCode_New requires a tuple */ if (consts == NULL) { goto error; @@ -7252,32 +7222,9 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, goto error; } - assert(c->u->u_posonlyargcount < INT_MAX); - assert(c->u->u_argcount < INT_MAX); - assert(c->u->u_kwonlyargcount < INT_MAX); - int posonlyargcount = (int)c->u->u_posonlyargcount; - int posorkwargcount = (int)c->u->u_argcount; - assert(INT_MAX - posonlyargcount - posorkwargcount > 0); - int kwonlyargcount = (int)c->u->u_kwonlyargcount; - - Py_ssize_t nlocals = PyDict_GET_SIZE(c->u->u_varnames); - Py_ssize_t ncellvars = PyDict_GET_SIZE(c->u->u_cellvars); - Py_ssize_t nfreevars = PyDict_GET_SIZE(c->u->u_freevars); - assert(nlocals < INT_MAX); - assert(ncellvars < INT_MAX); - assert(nfreevars < INT_MAX); - assert(INT_MAX - nlocals - ncellvars - nfreevars > 0); - int nlocalsplus = (int)nlocals + (int)ncellvars + (int)nfreevars; - - localsplusnames = PyTuple_New(nlocalsplus); - if (localsplusnames == NULL) { - goto error; - } - if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { - goto error; - } - compute_localsplus_info(c, localsplusnames, localspluskinds); - + posonlyargcount = Py_SAFE_DOWNCAST(c->u->u_posonlyargcount, Py_ssize_t, int); + posorkeywordargcount = Py_SAFE_DOWNCAST(c->u->u_argcount, Py_ssize_t, int); + kwonlyargcount = Py_SAFE_DOWNCAST(c->u->u_kwonlyargcount, Py_ssize_t, int); struct _PyCodeConstructor con = { .filename = c->c_filename, .name = c->u->u_name, @@ -7290,10 +7237,11 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, .consts = consts, .names = names, - .localsplusnames = localsplusnames, - .localspluskinds = localspluskinds, + .varnames = varnames, + .cellvars = cellvars, + .freevars = freevars, - .argcount = posonlyargcount + posorkwargcount, + .argcount = posonlyargcount + posorkeywordargcount, .posonlyargcount = posonlyargcount, .kwonlyargcount = kwonlyargcount, @@ -7301,30 +7249,18 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, .exceptiontable = a->a_except_table, }; - if (_PyCode_Validate(&con) < 0) { goto error; } - - if (!merge_const_one(c, &localsplusnames)) { - _PyCode_ClearLocalsPlusKinds(con.localspluskinds); - goto error; - } - con.localsplusnames = localsplusnames; - co = _PyCode_New(&con); - if (co == NULL) { - goto error; - } - - localspluskinds = NULL; // This keeps it from getting freed below. error: Py_XDECREF(names); Py_XDECREF(consts); - Py_XDECREF(localsplusnames); - _PyCode_ClearLocalsPlusKinds(localspluskinds); + Py_XDECREF(varnames); Py_XDECREF(name); + Py_XDECREF(freevars); + Py_XDECREF(cellvars); return co; } @@ -7435,24 +7371,6 @@ guarantee_lineno_for_exits(struct assembler *a, int firstlineno) { } } -static void -offset_derefs(basicblock *entryblock, int nlocals) -{ - for (basicblock *b = entryblock; b != NULL; b = b->b_next) { - for (int i = 0; i < b->b_iused; i++) { - struct instr *inst = &b->b_instr[i]; - switch(inst->i_opcode) { - case LOAD_CLOSURE: - case LOAD_DEREF: - case STORE_DEREF: - case DELETE_DEREF: - case LOAD_CLASSDEREF: - inst->i_oparg += nlocals; - } - } - } -} - static PyCodeObject * assemble(struct compiler *c, int addNone) { @@ -7508,9 +7426,6 @@ assemble(struct compiler *c, int addNone) a.a_entry = entryblock; a.a_nblocks = nblocks; - assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); - offset_derefs(entryblock, (int)PyDict_GET_SIZE(c->u->u_varnames)); - consts = consts_dict_keys_inorder(c->u->u_consts); if (consts == NULL) { goto error; diff --git a/Python/frozen_hello.h b/Python/frozen_hello.h index 1e150630161f53..967dd053dd0278 100644 --- a/Python/frozen_hello.h +++ b/Python/frozen_hello.h @@ -5,7 +5,8 @@ const unsigned char _Py_M__hello[] = { 100,1,131,1,1,0,100,2,83,0,41,3,84,122,12,72, 101,108,108,111,32,119,111,114,108,100,33,78,41,2,90,11, 105,110,105,116,105,97,108,105,122,101,100,218,5,112,114,105, - 110,116,169,0,122,14,60,102,114,111,122,101,110,32,104,101, - 108,108,111,62,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,4,0,0,0,4,0,12,1,243,0,0,0,0, + 110,116,169,0,114,1,0,0,0,114,1,0,0,0,122,14, + 60,102,114,111,122,101,110,32,104,101,108,108,111,62,218,8, + 60,109,111,100,117,108,101,62,1,0,0,0,115,4,0,0, + 0,4,0,12,1,243,0,0,0,0, }; diff --git a/Python/importlib.h b/Python/importlib.h index 1c59989743c801..8637b097135ed7 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -59,91 +59,94 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 106,0,6,0,89,0,83,0,37,0,119,0,169,1,78,41, 3,218,12,95,95,113,117,97,108,110,97,109,101,95,95,218, 14,65,116,116,114,105,98,117,116,101,69,114,114,111,114,218, - 4,116,121,112,101,41,1,218,3,111,98,106,32,250,29,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,218,12,95,111, - 98,106,101,99,116,95,110,97,109,101,23,0,0,0,115,14, - 0,0,0,2,1,6,1,2,128,12,1,14,1,2,128,2, - 255,115,12,0,0,0,129,2,4,0,132,12,18,7,147,1, - 18,7,114,6,0,0,0,78,99,2,0,0,0,0,0,0, - 0,0,0,0,0,7,0,0,0,67,0,0,0,115,56,0, - 0,0,100,1,68,0,93,16,125,2,116,0,124,1,124,2, - 131,2,114,18,116,1,124,0,124,2,116,2,124,1,124,2, - 131,2,131,3,1,0,113,2,124,0,106,3,160,4,124,1, - 106,3,161,1,1,0,100,2,83,0,41,3,122,47,83,105, - 109,112,108,101,32,115,117,98,115,116,105,116,117,116,101,32, - 102,111,114,32,102,117,110,99,116,111,111,108,115,46,117,112, - 100,97,116,101,95,119,114,97,112,112,101,114,46,41,4,218, - 10,95,95,109,111,100,117,108,101,95,95,218,8,95,95,110, - 97,109,101,95,95,114,1,0,0,0,218,7,95,95,100,111, - 99,95,95,78,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,218, - 7,114,101,112,108,97,99,101,32,32,32,114,5,0,0,0, - 218,5,95,119,114,97,112,40,0,0,0,115,10,0,0,0, - 8,2,10,1,18,1,2,128,18,1,243,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,67,0,0,0,115,12,0,0,0,116,0, - 116,1,131,1,124,0,131,1,83,0,114,0,0,0,0,41, - 2,114,3,0,0,0,218,3,115,121,115,169,1,218,4,110, - 97,109,101,32,114,5,0,0,0,218,11,95,110,101,119,95, - 109,111,100,117,108,101,48,0,0,0,115,2,0,0,0,12, - 1,114,17,0,0,0,114,21,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0, - 115,12,0,0,0,101,0,90,1,100,0,90,2,100,1,83, - 0,41,2,218,14,95,68,101,97,100,108,111,99,107,69,114, - 114,111,114,78,41,3,114,8,0,0,0,114,7,0,0,0, - 114,1,0,0,0,169,0,114,5,0,0,0,114,22,0,0, - 0,61,0,0,0,115,4,0,0,0,8,0,4,1,114,17, - 0,0,0,114,22,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,64,0,0,0,115,56,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,83,0,41,13,218,11,95,77, - 111,100,117,108,101,76,111,99,107,122,169,65,32,114,101,99, - 117,114,115,105,118,101,32,108,111,99,107,32,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,32,119,104,105,99,104, - 32,105,115,32,97,98,108,101,32,116,111,32,100,101,116,101, - 99,116,32,100,101,97,100,108,111,99,107,115,10,32,32,32, - 32,40,101,46,103,46,32,116,104,114,101,97,100,32,49,32, - 116,114,121,105,110,103,32,116,111,32,116,97,107,101,32,108, - 111,99,107,115,32,65,32,116,104,101,110,32,66,44,32,97, - 110,100,32,116,104,114,101,97,100,32,50,32,116,114,121,105, - 110,103,32,116,111,10,32,32,32,32,116,97,107,101,32,108, - 111,99,107,115,32,66,32,116,104,101,110,32,65,41,46,10, - 32,32,32,32,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,67,0,0,0,115,48,0,0,0,116,0, - 160,1,161,0,124,0,95,2,116,0,160,1,161,0,124,0, - 95,3,124,1,124,0,95,4,100,0,124,0,95,5,100,1, - 124,0,95,6,100,1,124,0,95,7,100,0,83,0,169,2, - 78,233,0,0,0,0,41,8,218,7,95,116,104,114,101,97, - 100,90,13,97,108,108,111,99,97,116,101,95,108,111,99,107, - 218,4,108,111,99,107,218,6,119,97,107,101,117,112,114,20, - 0,0,0,218,5,111,119,110,101,114,218,5,99,111,117,110, - 116,218,7,119,97,105,116,101,114,115,169,2,218,4,115,101, - 108,102,114,20,0,0,0,32,32,114,5,0,0,0,218,8, - 95,95,105,110,105,116,95,95,71,0,0,0,115,12,0,0, - 0,10,1,10,1,6,1,6,1,6,1,10,1,114,17,0, - 0,0,122,20,95,77,111,100,117,108,101,76,111,99,107,46, - 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,86,0, - 0,0,116,0,160,1,161,0,125,1,124,0,106,2,125,2, - 116,3,131,0,125,3,9,0,116,4,160,5,124,2,161,1, - 125,4,124,4,100,0,117,0,114,22,100,2,83,0,124,4, - 106,2,125,2,124,2,124,1,107,2,114,31,100,1,83,0, - 124,2,124,3,118,0,114,37,100,2,83,0,124,3,160,6, - 124,2,161,1,1,0,113,11,41,3,78,84,70,41,7,114, - 27,0,0,0,218,9,103,101,116,95,105,100,101,110,116,114, - 30,0,0,0,218,3,115,101,116,218,12,95,98,108,111,99, - 107,105,110,103,95,111,110,218,3,103,101,116,218,3,97,100, - 100,41,5,114,34,0,0,0,90,2,109,101,218,3,116,105, - 100,90,4,115,101,101,110,114,28,0,0,0,32,32,32,32, - 32,114,5,0,0,0,218,12,104,97,115,95,100,101,97,100, + 4,116,121,112,101,41,1,218,3,111,98,106,169,0,114,5, + 0,0,0,250,29,60,102,114,111,122,101,110,32,105,109,112, + 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, + 112,62,218,12,95,111,98,106,101,99,116,95,110,97,109,101, + 23,0,0,0,115,14,0,0,0,2,1,6,1,2,128,12, + 1,14,1,2,128,2,255,115,12,0,0,0,129,2,4,0, + 132,12,18,7,147,1,18,7,114,7,0,0,0,78,99,2, + 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,67, + 0,0,0,115,56,0,0,0,100,1,68,0,93,16,125,2, + 116,0,124,1,124,2,131,2,114,18,116,1,124,0,124,2, + 116,2,124,1,124,2,131,2,131,3,1,0,113,2,124,0, + 106,3,160,4,124,1,106,3,161,1,1,0,100,2,83,0, + 41,3,122,47,83,105,109,112,108,101,32,115,117,98,115,116, + 105,116,117,116,101,32,102,111,114,32,102,117,110,99,116,111, + 111,108,115,46,117,112,100,97,116,101,95,119,114,97,112,112, + 101,114,46,41,4,218,10,95,95,109,111,100,117,108,101,95, + 95,218,8,95,95,110,97,109,101,95,95,114,1,0,0,0, + 218,7,95,95,100,111,99,95,95,78,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,218,7,114,101,112,108,97,99,101,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,5,95, + 119,114,97,112,40,0,0,0,115,10,0,0,0,8,2,10, + 1,18,1,2,128,18,1,243,0,0,0,0,114,17,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,67,0,0,0,115,12,0,0,0,116,0,116,1,131, + 1,124,0,131,1,83,0,114,0,0,0,0,41,2,114,3, + 0,0,0,218,3,115,121,115,169,1,218,4,110,97,109,101, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 11,95,110,101,119,95,109,111,100,117,108,101,48,0,0,0, + 115,2,0,0,0,12,1,114,18,0,0,0,114,22,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,64,0,0,0,115,12,0,0,0,101,0,90,1,100, + 0,90,2,100,1,83,0,41,2,218,14,95,68,101,97,100, + 108,111,99,107,69,114,114,111,114,78,41,3,114,9,0,0, + 0,114,8,0,0,0,114,1,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 23,0,0,0,61,0,0,0,115,4,0,0,0,8,0,4, + 1,114,18,0,0,0,114,23,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0, + 115,56,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,83,0,41,13,218, + 11,95,77,111,100,117,108,101,76,111,99,107,122,169,65,32, + 114,101,99,117,114,115,105,118,101,32,108,111,99,107,32,105, + 109,112,108,101,109,101,110,116,97,116,105,111,110,32,119,104, + 105,99,104,32,105,115,32,97,98,108,101,32,116,111,32,100, + 101,116,101,99,116,32,100,101,97,100,108,111,99,107,115,10, + 32,32,32,32,40,101,46,103,46,32,116,104,114,101,97,100, + 32,49,32,116,114,121,105,110,103,32,116,111,32,116,97,107, + 101,32,108,111,99,107,115,32,65,32,116,104,101,110,32,66, + 44,32,97,110,100,32,116,104,114,101,97,100,32,50,32,116, + 114,121,105,110,103,32,116,111,10,32,32,32,32,116,97,107, + 101,32,108,111,99,107,115,32,66,32,116,104,101,110,32,65, + 41,46,10,32,32,32,32,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,67,0,0,0,115,48,0,0, + 0,116,0,160,1,161,0,124,0,95,2,116,0,160,1,161, + 0,124,0,95,3,124,1,124,0,95,4,100,0,124,0,95, + 5,100,1,124,0,95,6,100,1,124,0,95,7,100,0,83, + 0,169,2,78,233,0,0,0,0,41,8,218,7,95,116,104, + 114,101,97,100,90,13,97,108,108,111,99,97,116,101,95,108, + 111,99,107,218,4,108,111,99,107,218,6,119,97,107,101,117, + 112,114,21,0,0,0,218,5,111,119,110,101,114,218,5,99, + 111,117,110,116,218,7,119,97,105,116,101,114,115,169,2,218, + 4,115,101,108,102,114,21,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,8,95,95,105,110,105, + 116,95,95,71,0,0,0,115,12,0,0,0,10,1,10,1, + 6,1,6,1,6,1,10,1,114,18,0,0,0,122,20,95, + 77,111,100,117,108,101,76,111,99,107,46,95,95,105,110,105, + 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,86,0,0,0,116,0,160, + 1,161,0,125,1,124,0,106,2,125,2,116,3,131,0,125, + 3,9,0,116,4,160,5,124,2,161,1,125,4,124,4,100, + 0,117,0,114,22,100,2,83,0,124,4,106,2,125,2,124, + 2,124,1,107,2,114,31,100,1,83,0,124,2,124,3,118, + 0,114,37,100,2,83,0,124,3,160,6,124,2,161,1,1, + 0,113,11,41,3,78,84,70,41,7,114,27,0,0,0,218, + 9,103,101,116,95,105,100,101,110,116,114,30,0,0,0,218, + 3,115,101,116,218,12,95,98,108,111,99,107,105,110,103,95, + 111,110,218,3,103,101,116,218,3,97,100,100,41,5,114,34, + 0,0,0,90,2,109,101,218,3,116,105,100,90,4,115,101, + 101,110,114,28,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,12,104,97,115,95,100,101,97,100, 108,111,99,107,79,0,0,0,115,28,0,0,0,8,2,6, 1,6,1,2,1,10,1,8,1,4,1,6,1,8,1,4, - 1,8,1,4,6,10,1,2,242,114,17,0,0,0,122,24, + 1,8,1,4,6,10,1,2,242,114,18,0,0,0,122,24, 95,77,111,100,117,108,101,76,111,99,107,46,104,97,115,95, 100,101,97,100,108,111,99,107,99,1,0,0,0,0,0,0, 0,0,0,0,0,9,0,0,0,67,0,0,0,115,204,0, @@ -176,37 +179,38 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 107,32,100,101,116,101,99,116,101,100,32,98,121,32,37,114, 70,41,12,114,27,0,0,0,114,36,0,0,0,114,38,0, 0,0,114,28,0,0,0,114,31,0,0,0,114,30,0,0, - 0,114,42,0,0,0,114,22,0,0,0,114,29,0,0,0, + 0,114,42,0,0,0,114,23,0,0,0,114,29,0,0,0, 218,7,97,99,113,117,105,114,101,114,32,0,0,0,218,7, 114,101,108,101,97,115,101,169,2,114,34,0,0,0,114,41, - 0,0,0,32,32,114,5,0,0,0,114,44,0,0,0,100, - 0,0,0,115,44,0,0,0,8,6,8,1,2,1,2,1, - 8,1,20,1,6,1,14,1,2,1,10,252,10,13,8,248, - 12,1,12,1,14,1,12,248,22,128,10,10,10,1,2,244, - 2,128,10,14,115,56,0,0,0,137,4,65,32,0,141,22, - 65,10,3,163,5,65,32,0,173,23,65,10,3,193,4,6, - 65,32,0,193,10,4,65,14,11,193,14,1,65,32,0,193, - 15,3,65,14,11,193,18,14,65,32,0,193,32,5,65,37, - 7,122,19,95,77,111,100,117,108,101,76,111,99,107,46,97, - 99,113,117,105,114,101,99,1,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,67,0,0,0,115,148,0,0,0, - 116,0,160,1,161,0,125,1,124,0,106,2,53,0,1,0, - 124,0,106,3,124,1,107,3,114,17,116,4,100,1,131,1, - 130,1,124,0,106,5,100,2,107,4,115,24,74,0,130,1, - 124,0,4,0,106,5,100,3,56,0,2,0,95,5,124,0, - 106,5,100,2,107,2,114,54,100,0,124,0,95,3,124,0, - 106,6,114,54,124,0,4,0,106,6,100,3,56,0,2,0, - 95,6,124,0,106,7,160,8,161,0,1,0,100,0,4,0, - 4,0,131,3,1,0,100,0,83,0,35,0,49,0,115,66, - 119,4,37,0,1,0,1,0,1,0,89,0,1,0,1,0, - 100,0,83,0,41,4,78,250,31,99,97,110,110,111,116,32, - 114,101,108,101,97,115,101,32,117,110,45,97,99,113,117,105, - 114,101,100,32,108,111,99,107,114,26,0,0,0,114,43,0, - 0,0,41,9,114,27,0,0,0,114,36,0,0,0,114,28, - 0,0,0,114,30,0,0,0,218,12,82,117,110,116,105,109, - 101,69,114,114,111,114,114,31,0,0,0,114,32,0,0,0, - 114,29,0,0,0,114,45,0,0,0,114,46,0,0,0,32, - 32,114,5,0,0,0,114,45,0,0,0,125,0,0,0,115, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,44,0,0,0,100,0,0,0,115,44,0,0,0, + 8,6,8,1,2,1,2,1,8,1,20,1,6,1,14,1, + 2,1,10,252,10,13,8,248,12,1,12,1,14,1,12,248, + 22,128,10,10,10,1,2,244,2,128,10,14,115,56,0,0, + 0,137,4,65,32,0,141,22,65,10,3,163,5,65,32,0, + 173,23,65,10,3,193,4,6,65,32,0,193,10,4,65,14, + 11,193,14,1,65,32,0,193,15,3,65,14,11,193,18,14, + 65,32,0,193,32,5,65,37,7,122,19,95,77,111,100,117, + 108,101,76,111,99,107,46,97,99,113,117,105,114,101,99,1, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, + 0,0,0,115,148,0,0,0,116,0,160,1,161,0,125,1, + 124,0,106,2,53,0,1,0,124,0,106,3,124,1,107,3, + 114,17,116,4,100,1,131,1,130,1,124,0,106,5,100,2, + 107,4,115,24,74,0,130,1,124,0,4,0,106,5,100,3, + 56,0,2,0,95,5,124,0,106,5,100,2,107,2,114,54, + 100,0,124,0,95,3,124,0,106,6,114,54,124,0,4,0, + 106,6,100,3,56,0,2,0,95,6,124,0,106,7,160,8, + 161,0,1,0,100,0,4,0,4,0,131,3,1,0,100,0, + 83,0,35,0,49,0,115,66,119,4,37,0,1,0,1,0, + 1,0,89,0,1,0,1,0,100,0,83,0,41,4,78,250, + 31,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32, + 117,110,45,97,99,113,117,105,114,101,100,32,108,111,99,107, + 114,26,0,0,0,114,43,0,0,0,41,9,114,27,0,0, + 0,114,36,0,0,0,114,28,0,0,0,114,30,0,0,0, + 218,12,82,117,110,116,105,109,101,69,114,114,111,114,114,31, + 0,0,0,114,32,0,0,0,114,29,0,0,0,114,45,0, + 0,0,114,46,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,45,0,0,0,125,0,0,0,115, 28,0,0,0,8,1,8,1,10,1,8,1,14,1,14,1, 10,1,6,1,6,1,14,1,10,1,14,247,22,128,4,0, 115,15,0,0,0,135,47,61,3,189,4,65,1,11,193,2, @@ -216,66 +220,70 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, 1,161,2,83,0,41,2,78,122,23,95,77,111,100,117,108, 101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,123, - 125,169,3,218,6,102,111,114,109,97,116,114,20,0,0,0, - 218,2,105,100,169,1,114,34,0,0,0,32,114,5,0,0, - 0,218,8,95,95,114,101,112,114,95,95,138,0,0,0,243, - 2,0,0,0,18,1,114,17,0,0,0,122,20,95,77,111, - 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, - 95,78,41,9,114,8,0,0,0,114,7,0,0,0,114,1, - 0,0,0,114,9,0,0,0,114,35,0,0,0,114,42,0, - 0,0,114,44,0,0,0,114,45,0,0,0,114,54,0,0, - 0,114,23,0,0,0,114,5,0,0,0,114,24,0,0,0, - 65,0,0,0,115,14,0,0,0,8,0,4,1,8,5,8, - 8,8,21,8,25,12,13,114,17,0,0,0,114,24,0,0, - 0,99,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,16,95, - 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,122, - 86,65,32,115,105,109,112,108,101,32,95,77,111,100,117,108, - 101,76,111,99,107,32,101,113,117,105,118,97,108,101,110,116, - 32,102,111,114,32,80,121,116,104,111,110,32,98,117,105,108, - 100,115,32,119,105,116,104,111,117,116,10,32,32,32,32,109, - 117,108,116,105,45,116,104,114,101,97,100,105,110,103,32,115, - 117,112,112,111,114,116,46,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,124,1,124,0,95,0,100,1,124,0,95,1,100,0,83, - 0,114,25,0,0,0,41,2,114,20,0,0,0,114,31,0, - 0,0,114,33,0,0,0,32,32,114,5,0,0,0,114,35, - 0,0,0,146,0,0,0,243,4,0,0,0,6,1,10,1, - 114,17,0,0,0,122,25,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,46,95,95,105,110,105,116,95,95, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,18,0,0,0,124,0,4,0,106,0, - 100,1,55,0,2,0,95,0,100,2,83,0,41,3,78,114, - 43,0,0,0,84,41,1,114,31,0,0,0,114,53,0,0, - 0,32,114,5,0,0,0,114,44,0,0,0,150,0,0,0, - 115,4,0,0,0,14,1,4,1,114,17,0,0,0,122,24, - 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, - 46,97,99,113,117,105,114,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,36,0, - 0,0,124,0,106,0,100,1,107,2,114,9,116,1,100,2, - 131,1,130,1,124,0,4,0,106,0,100,3,56,0,2,0, - 95,0,100,0,83,0,41,4,78,114,26,0,0,0,114,47, - 0,0,0,114,43,0,0,0,41,2,114,31,0,0,0,114, - 48,0,0,0,114,53,0,0,0,32,114,5,0,0,0,114, - 45,0,0,0,154,0,0,0,115,6,0,0,0,10,1,8, - 1,18,1,114,17,0,0,0,122,24,95,68,117,109,109,121, - 77,111,100,117,108,101,76,111,99,107,46,114,101,108,101,97, - 115,101,99,1,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,114,49,0,0,0,41,2,78,122, - 28,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, - 107,40,123,33,114,125,41,32,97,116,32,123,125,114,50,0, - 0,0,114,53,0,0,0,32,114,5,0,0,0,114,54,0, - 0,0,159,0,0,0,114,55,0,0,0,114,17,0,0,0, + 125,169,3,218,6,102,111,114,109,97,116,114,21,0,0,0, + 218,2,105,100,169,1,114,34,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,8,95,95,114,101, + 112,114,95,95,138,0,0,0,243,2,0,0,0,18,1,114, + 18,0,0,0,122,20,95,77,111,100,117,108,101,76,111,99, + 107,46,95,95,114,101,112,114,95,95,78,41,9,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,35,0,0,0,114,42,0,0,0,114,44,0,0,0, + 114,45,0,0,0,114,54,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,24, + 0,0,0,65,0,0,0,115,14,0,0,0,8,0,4,1, + 8,5,8,8,8,21,8,25,12,13,114,18,0,0,0,114, + 24,0,0,0,99,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,16,95,68,117,109,109,121,77,111,100,117,108,101,76,111, + 99,107,122,86,65,32,115,105,109,112,108,101,32,95,77,111, + 100,117,108,101,76,111,99,107,32,101,113,117,105,118,97,108, + 101,110,116,32,102,111,114,32,80,121,116,104,111,110,32,98, + 117,105,108,100,115,32,119,105,116,104,111,117,116,10,32,32, + 32,32,109,117,108,116,105,45,116,104,114,101,97,100,105,110, + 103,32,115,117,112,112,111,114,116,46,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,67,0,0,0,115, + 16,0,0,0,124,1,124,0,95,0,100,1,124,0,95,1, + 100,0,83,0,114,25,0,0,0,41,2,114,21,0,0,0, + 114,31,0,0,0,114,33,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,35,0,0,0,146,0, + 0,0,243,4,0,0,0,6,1,10,1,114,18,0,0,0, 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,46,95,95,114,101,112,114,95,95,78,41,8,114,8, - 0,0,0,114,7,0,0,0,114,1,0,0,0,114,9,0, - 0,0,114,35,0,0,0,114,44,0,0,0,114,45,0,0, - 0,114,54,0,0,0,114,23,0,0,0,114,5,0,0,0, + 99,107,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 115,18,0,0,0,124,0,4,0,106,0,100,1,55,0,2, + 0,95,0,100,2,83,0,41,3,78,114,43,0,0,0,84, + 41,1,114,31,0,0,0,114,53,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,44,0,0,0, + 150,0,0,0,115,4,0,0,0,14,1,4,1,114,18,0, + 0,0,122,24,95,68,117,109,109,121,77,111,100,117,108,101, + 76,111,99,107,46,97,99,113,117,105,114,101,99,1,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, + 0,115,36,0,0,0,124,0,106,0,100,1,107,2,114,9, + 116,1,100,2,131,1,130,1,124,0,4,0,106,0,100,3, + 56,0,2,0,95,0,100,0,83,0,41,4,78,114,26,0, + 0,0,114,47,0,0,0,114,43,0,0,0,41,2,114,31, + 0,0,0,114,48,0,0,0,114,53,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,45,0,0, + 0,154,0,0,0,115,6,0,0,0,10,1,8,1,18,1, + 114,18,0,0,0,122,24,95,68,117,109,109,121,77,111,100, + 117,108,101,76,111,99,107,46,114,101,108,101,97,115,101,99, + 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 67,0,0,0,114,49,0,0,0,41,2,78,122,28,95,68, + 117,109,109,121,77,111,100,117,108,101,76,111,99,107,40,123, + 33,114,125,41,32,97,116,32,123,125,114,50,0,0,0,114, + 53,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,54,0,0,0,159,0,0,0,114,55,0,0, + 0,114,18,0,0,0,122,25,95,68,117,109,109,121,77,111, + 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, + 95,78,41,8,114,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,35,0,0,0,114,44,0, + 0,0,114,45,0,0,0,114,54,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, 114,56,0,0,0,142,0,0,0,115,12,0,0,0,8,0, - 4,1,8,3,8,4,8,4,12,5,114,17,0,0,0,114, + 4,1,8,3,8,4,8,4,12,5,114,18,0,0,0,114, 56,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, 0,2,0,0,0,64,0,0,0,115,36,0,0,0,101,0, 90,1,100,0,90,2,100,1,100,2,132,0,90,3,100,3, @@ -285,130 +293,134 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,0,0,2,0,0,0,67,0,0,0,115,16,0, 0,0,124,1,124,0,95,0,100,0,124,0,95,1,100,0, 83,0,114,0,0,0,0,41,2,218,5,95,110,97,109,101, - 218,5,95,108,111,99,107,114,33,0,0,0,32,32,114,5, - 0,0,0,114,35,0,0,0,165,0,0,0,114,57,0,0, - 0,114,17,0,0,0,122,27,95,77,111,100,117,108,101,76, - 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,67,0,0,0,115,26,0,0,0,116,0,124, - 0,106,1,131,1,124,0,95,2,124,0,106,2,160,3,161, - 0,1,0,100,0,83,0,114,0,0,0,0,41,4,218,16, - 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, - 114,59,0,0,0,114,60,0,0,0,114,44,0,0,0,114, - 53,0,0,0,32,114,5,0,0,0,218,9,95,95,101,110, - 116,101,114,95,95,169,0,0,0,115,4,0,0,0,12,1, - 14,1,114,17,0,0,0,122,28,95,77,111,100,117,108,101, - 76,111,99,107,77,97,110,97,103,101,114,46,95,95,101,110, - 116,101,114,95,95,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,79,0,0,0,115,14,0,0,0,124, - 0,106,0,160,1,161,0,1,0,100,0,83,0,114,0,0, - 0,0,41,2,114,60,0,0,0,114,45,0,0,0,41,3, - 114,34,0,0,0,218,4,97,114,103,115,90,6,107,119,97, - 114,103,115,32,32,32,114,5,0,0,0,218,8,95,95,101, - 120,105,116,95,95,173,0,0,0,115,2,0,0,0,14,1, - 114,17,0,0,0,122,27,95,77,111,100,117,108,101,76,111, - 99,107,77,97,110,97,103,101,114,46,95,95,101,120,105,116, - 95,95,78,41,6,114,8,0,0,0,114,7,0,0,0,114, - 1,0,0,0,114,35,0,0,0,114,62,0,0,0,114,64, - 0,0,0,114,23,0,0,0,114,5,0,0,0,114,58,0, - 0,0,163,0,0,0,115,8,0,0,0,8,0,8,2,8, - 4,12,4,114,17,0,0,0,114,58,0,0,0,99,1,0, + 218,5,95,108,111,99,107,114,33,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,35,0,0,0, + 165,0,0,0,114,57,0,0,0,114,18,0,0,0,122,27, + 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, + 101,114,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,67,0,0,0, + 115,26,0,0,0,116,0,124,0,106,1,131,1,124,0,95, + 2,124,0,106,2,160,3,161,0,1,0,100,0,83,0,114, + 0,0,0,0,41,4,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,108,111,99,107,114,59,0,0,0,114,60,0, + 0,0,114,44,0,0,0,114,53,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,9,95,95,101, + 110,116,101,114,95,95,169,0,0,0,115,4,0,0,0,12, + 1,14,1,114,18,0,0,0,122,28,95,77,111,100,117,108, + 101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,101, + 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,79,0,0,0,115,14,0,0,0, + 124,0,106,0,160,1,161,0,1,0,100,0,83,0,114,0, + 0,0,0,41,2,114,60,0,0,0,114,45,0,0,0,41, + 3,114,34,0,0,0,218,4,97,114,103,115,90,6,107,119, + 97,114,103,115,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,8,95,95,101,120,105,116,95,95,173,0,0, + 0,115,2,0,0,0,14,1,114,18,0,0,0,122,27,95, + 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, + 114,46,95,95,101,120,105,116,95,95,78,41,6,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,35,0,0, + 0,114,62,0,0,0,114,64,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 58,0,0,0,163,0,0,0,115,8,0,0,0,8,0,8, + 2,8,4,12,4,114,18,0,0,0,114,58,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 67,0,0,0,115,138,0,0,0,116,0,160,1,161,0,1, + 0,9,0,9,0,116,2,124,0,25,0,131,0,125,1,110, + 12,35,0,4,0,116,3,121,68,1,0,1,0,1,0,100, + 1,125,1,89,0,110,1,37,0,124,1,100,1,117,0,114, + 55,116,4,100,1,117,0,114,37,116,5,124,0,131,1,125, + 1,110,4,116,6,124,0,131,1,125,1,124,0,102,1,100, + 2,100,3,132,1,125,2,116,7,160,8,124,1,124,2,161, + 2,116,2,124,0,60,0,116,0,160,9,161,0,1,0,124, + 1,83,0,35,0,116,0,160,9,161,0,1,0,119,0,37, + 0,119,0,41,4,122,139,71,101,116,32,111,114,32,99,114, + 101,97,116,101,32,116,104,101,32,109,111,100,117,108,101,32, + 108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,110, + 32,109,111,100,117,108,101,32,110,97,109,101,46,10,10,32, + 32,32,32,65,99,113,117,105,114,101,47,114,101,108,101,97, + 115,101,32,105,110,116,101,114,110,97,108,108,121,32,116,104, + 101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,32, + 108,111,99,107,32,116,111,32,112,114,111,116,101,99,116,10, + 32,32,32,32,95,109,111,100,117,108,101,95,108,111,99,107, + 115,46,78,99,2,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,83,0,0,0,115,56,0,0,0,116,0,160, + 1,161,0,1,0,9,0,116,2,160,3,124,1,161,1,124, + 0,117,0,114,15,116,2,124,1,61,0,116,0,160,4,161, + 0,1,0,100,0,83,0,35,0,116,0,160,4,161,0,1, + 0,119,0,37,0,114,0,0,0,0,41,5,218,4,95,105, + 109,112,218,12,97,99,113,117,105,114,101,95,108,111,99,107, + 218,13,95,109,111,100,117,108,101,95,108,111,99,107,115,114, + 39,0,0,0,218,12,114,101,108,101,97,115,101,95,108,111, + 99,107,41,2,218,3,114,101,102,114,21,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,2,99, + 98,198,0,0,0,115,16,0,0,0,8,1,2,1,14,4, + 6,1,12,2,2,128,10,0,2,128,115,8,0,0,0,133, + 10,21,0,149,6,27,7,122,28,95,103,101,116,95,109,111, + 100,117,108,101,95,108,111,99,107,46,60,108,111,99,97,108, + 115,62,46,99,98,41,10,114,65,0,0,0,114,66,0,0, + 0,114,67,0,0,0,218,8,75,101,121,69,114,114,111,114, + 114,27,0,0,0,114,56,0,0,0,114,24,0,0,0,218, + 8,95,119,101,97,107,114,101,102,114,69,0,0,0,114,68, + 0,0,0,41,3,114,21,0,0,0,114,28,0,0,0,114, + 70,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,61,0,0,0,179,0,0,0,115,40,0,0, + 0,8,6,2,1,2,1,12,1,2,128,12,1,8,1,2, + 128,8,2,8,1,10,1,8,2,12,2,16,11,8,2,4, + 2,2,128,10,254,2,128,2,234,115,26,0,0,0,134,5, + 12,0,139,1,61,0,140,9,23,7,149,34,61,0,189,6, + 65,3,7,193,4,1,23,7,114,61,0,0,0,99,1,0, 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,138,0,0,0,116,0,160,1,161,0,1,0,9, - 0,9,0,116,2,124,0,25,0,131,0,125,1,110,12,35, - 0,4,0,116,3,121,68,1,0,1,0,1,0,100,1,125, - 1,89,0,110,1,37,0,124,1,100,1,117,0,114,55,116, - 4,100,1,117,0,114,37,116,5,124,0,131,1,125,1,110, - 4,116,6,124,0,131,1,125,1,124,0,102,1,100,2,100, - 3,132,1,125,2,116,7,160,8,124,1,124,2,161,2,116, - 2,124,0,60,0,116,0,160,9,161,0,1,0,124,1,83, - 0,35,0,116,0,160,9,161,0,1,0,119,0,37,0,119, - 0,41,4,122,139,71,101,116,32,111,114,32,99,114,101,97, - 116,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, - 99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,109, - 111,100,117,108,101,32,110,97,109,101,46,10,10,32,32,32, - 32,65,99,113,117,105,114,101,47,114,101,108,101,97,115,101, - 32,105,110,116,101,114,110,97,108,108,121,32,116,104,101,32, - 103,108,111,98,97,108,32,105,109,112,111,114,116,32,108,111, - 99,107,32,116,111,32,112,114,111,116,101,99,116,10,32,32, - 32,32,95,109,111,100,117,108,101,95,108,111,99,107,115,46, - 78,99,2,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,83,0,0,0,115,56,0,0,0,116,0,160,1,161, - 0,1,0,9,0,116,2,160,3,124,1,161,1,124,0,117, - 0,114,15,116,2,124,1,61,0,116,0,160,4,161,0,1, - 0,100,0,83,0,35,0,116,0,160,4,161,0,1,0,119, - 0,37,0,114,0,0,0,0,41,5,218,4,95,105,109,112, - 218,12,97,99,113,117,105,114,101,95,108,111,99,107,218,13, - 95,109,111,100,117,108,101,95,108,111,99,107,115,114,39,0, - 0,0,218,12,114,101,108,101,97,115,101,95,108,111,99,107, - 41,2,218,3,114,101,102,114,20,0,0,0,32,32,114,5, - 0,0,0,218,2,99,98,198,0,0,0,115,16,0,0,0, - 8,1,2,1,14,4,6,1,12,2,2,128,10,0,2,128, - 115,8,0,0,0,133,10,21,0,149,6,27,7,122,28,95, - 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,46, - 60,108,111,99,97,108,115,62,46,99,98,41,10,114,65,0, - 0,0,114,66,0,0,0,114,67,0,0,0,218,8,75,101, - 121,69,114,114,111,114,114,27,0,0,0,114,56,0,0,0, - 114,24,0,0,0,218,8,95,119,101,97,107,114,101,102,114, - 69,0,0,0,114,68,0,0,0,41,3,114,20,0,0,0, - 114,28,0,0,0,114,70,0,0,0,32,32,32,114,5,0, - 0,0,114,61,0,0,0,179,0,0,0,115,40,0,0,0, - 8,6,2,1,2,1,12,1,2,128,12,1,8,1,2,128, - 8,2,8,1,10,1,8,2,12,2,16,11,8,2,4,2, - 2,128,10,254,2,128,2,234,115,26,0,0,0,134,5,12, - 0,139,1,61,0,140,9,23,7,149,34,61,0,189,6,65, - 3,7,193,4,1,23,7,114,61,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, - 0,115,56,0,0,0,116,0,124,0,131,1,125,1,9,0, - 124,1,160,1,161,0,1,0,110,11,35,0,4,0,116,2, - 121,27,1,0,1,0,1,0,89,0,100,1,83,0,37,0, - 124,1,160,3,161,0,1,0,100,1,83,0,119,0,41,2, - 122,189,65,99,113,117,105,114,101,115,32,116,104,101,110,32, - 114,101,108,101,97,115,101,115,32,116,104,101,32,109,111,100, - 117,108,101,32,108,111,99,107,32,102,111,114,32,97,32,103, - 105,118,101,110,32,109,111,100,117,108,101,32,110,97,109,101, - 46,10,10,32,32,32,32,84,104,105,115,32,105,115,32,117, - 115,101,100,32,116,111,32,101,110,115,117,114,101,32,97,32, - 109,111,100,117,108,101,32,105,115,32,99,111,109,112,108,101, - 116,101,108,121,32,105,110,105,116,105,97,108,105,122,101,100, - 44,32,105,110,32,116,104,101,10,32,32,32,32,101,118,101, - 110,116,32,105,116,32,105,115,32,98,101,105,110,103,32,105, - 109,112,111,114,116,101,100,32,98,121,32,97,110,111,116,104, - 101,114,32,116,104,114,101,97,100,46,10,32,32,32,32,78, - 41,4,114,61,0,0,0,114,44,0,0,0,114,22,0,0, - 0,114,45,0,0,0,41,2,114,20,0,0,0,114,28,0, - 0,0,32,32,114,5,0,0,0,218,19,95,108,111,99,107, - 95,117,110,108,111,99,107,95,109,111,100,117,108,101,216,0, - 0,0,115,18,0,0,0,8,6,2,1,10,1,2,128,12, - 1,6,3,2,128,12,2,2,251,115,12,0,0,0,133,4, - 10,0,138,7,20,7,155,1,20,7,114,73,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 79,0,0,0,115,14,0,0,0,124,0,124,1,105,0,124, - 2,164,1,142,1,83,0,41,2,97,46,1,0,0,114,101, - 109,111,118,101,95,105,109,112,111,114,116,108,105,98,95,102, - 114,97,109,101,115,32,105,110,32,105,109,112,111,114,116,46, - 99,32,119,105,108,108,32,97,108,119,97,121,115,32,114,101, - 109,111,118,101,32,115,101,113,117,101,110,99,101,115,10,32, - 32,32,32,111,102,32,105,109,112,111,114,116,108,105,98,32, - 102,114,97,109,101,115,32,116,104,97,116,32,101,110,100,32, - 119,105,116,104,32,97,32,99,97,108,108,32,116,111,32,116, - 104,105,115,32,102,117,110,99,116,105,111,110,10,10,32,32, - 32,32,85,115,101,32,105,116,32,105,110,115,116,101,97,100, - 32,111,102,32,97,32,110,111,114,109,97,108,32,99,97,108, - 108,32,105,110,32,112,108,97,99,101,115,32,119,104,101,114, - 101,32,105,110,99,108,117,100,105,110,103,32,116,104,101,32, - 105,109,112,111,114,116,108,105,98,10,32,32,32,32,102,114, - 97,109,101,115,32,105,110,116,114,111,100,117,99,101,115,32, - 117,110,119,97,110,116,101,100,32,110,111,105,115,101,32,105, - 110,116,111,32,116,104,101,32,116,114,97,99,101,98,97,99, - 107,32,40,101,46,103,46,32,119,104,101,110,32,101,120,101, - 99,117,116,105,110,103,10,32,32,32,32,109,111,100,117,108, - 101,32,99,111,100,101,41,10,32,32,32,32,78,114,23,0, - 0,0,41,3,218,1,102,114,63,0,0,0,90,4,107,119, - 100,115,32,32,32,114,5,0,0,0,218,25,95,99,97,108, + 0,0,115,56,0,0,0,116,0,124,0,131,1,125,1,9, + 0,124,1,160,1,161,0,1,0,110,11,35,0,4,0,116, + 2,121,27,1,0,1,0,1,0,89,0,100,1,83,0,37, + 0,124,1,160,3,161,0,1,0,100,1,83,0,119,0,41, + 2,122,189,65,99,113,117,105,114,101,115,32,116,104,101,110, + 32,114,101,108,101,97,115,101,115,32,116,104,101,32,109,111, + 100,117,108,101,32,108,111,99,107,32,102,111,114,32,97,32, + 103,105,118,101,110,32,109,111,100,117,108,101,32,110,97,109, + 101,46,10,10,32,32,32,32,84,104,105,115,32,105,115,32, + 117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,97, + 32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,108, + 101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,101, + 100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,118, + 101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,32, + 105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,116, + 104,101,114,32,116,104,114,101,97,100,46,10,32,32,32,32, + 78,41,4,114,61,0,0,0,114,44,0,0,0,114,23,0, + 0,0,114,45,0,0,0,41,2,114,21,0,0,0,114,28, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,19,95,108,111,99,107,95,117,110,108,111,99,107, + 95,109,111,100,117,108,101,216,0,0,0,115,18,0,0,0, + 8,6,2,1,10,1,2,128,12,1,6,3,2,128,12,2, + 2,251,115,12,0,0,0,133,4,10,0,138,7,20,7,155, + 1,20,7,114,73,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,79,0,0,0,115,14,0, + 0,0,124,0,124,1,105,0,124,2,164,1,142,1,83,0, + 41,2,97,46,1,0,0,114,101,109,111,118,101,95,105,109, + 112,111,114,116,108,105,98,95,102,114,97,109,101,115,32,105, + 110,32,105,109,112,111,114,116,46,99,32,119,105,108,108,32, + 97,108,119,97,121,115,32,114,101,109,111,118,101,32,115,101, + 113,117,101,110,99,101,115,10,32,32,32,32,111,102,32,105, + 109,112,111,114,116,108,105,98,32,102,114,97,109,101,115,32, + 116,104,97,116,32,101,110,100,32,119,105,116,104,32,97,32, + 99,97,108,108,32,116,111,32,116,104,105,115,32,102,117,110, + 99,116,105,111,110,10,10,32,32,32,32,85,115,101,32,105, + 116,32,105,110,115,116,101,97,100,32,111,102,32,97,32,110, + 111,114,109,97,108,32,99,97,108,108,32,105,110,32,112,108, + 97,99,101,115,32,119,104,101,114,101,32,105,110,99,108,117, + 100,105,110,103,32,116,104,101,32,105,109,112,111,114,116,108, + 105,98,10,32,32,32,32,102,114,97,109,101,115,32,105,110, + 116,114,111,100,117,99,101,115,32,117,110,119,97,110,116,101, + 100,32,110,111,105,115,101,32,105,110,116,111,32,116,104,101, + 32,116,114,97,99,101,98,97,99,107,32,40,101,46,103,46, + 32,119,104,101,110,32,101,120,101,99,117,116,105,110,103,10, + 32,32,32,32,109,111,100,117,108,101,32,99,111,100,101,41, + 10,32,32,32,32,78,114,5,0,0,0,41,3,218,1,102, + 114,63,0,0,0,90,4,107,119,100,115,114,5,0,0,0, + 114,5,0,0,0,114,6,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,233,0,0,0,115,2,0,0,0,14,8, - 114,17,0,0,0,114,75,0,0,0,114,43,0,0,0,41, + 114,18,0,0,0,114,75,0,0,0,114,43,0,0,0,41, 1,218,9,118,101,114,98,111,115,105,116,121,99,1,0,0, 0,0,0,0,0,1,0,0,0,4,0,0,0,71,0,0, 0,115,58,0,0,0,116,0,106,1,106,2,124,1,107,5, @@ -420,131 +432,133 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 105,102,32,45,118,47,80,89,84,72,79,78,86,69,82,66, 79,83,69,32,105,115,32,116,117,114,110,101,100,32,111,110, 46,41,2,250,1,35,122,7,105,109,112,111,114,116,32,122, - 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,18, + 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,19, 0,0,0,218,5,102,108,97,103,115,218,7,118,101,114,98, 111,115,101,218,10,115,116,97,114,116,115,119,105,116,104,218, 5,112,114,105,110,116,114,51,0,0,0,218,6,115,116,100, 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,76, - 0,0,0,114,63,0,0,0,32,32,32,114,5,0,0,0, - 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, - 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, - 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,243,26,0,0,0,135,2,102,1,100,1,100, - 2,132,8,125,1,116,0,124,1,136,2,131,2,1,0,124, - 1,83,0,41,4,122,49,68,101,99,111,114,97,116,111,114, - 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, - 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, - 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,19,0,0,0,115,38,0, - 0,0,124,1,116,0,106,1,118,1,114,14,116,2,100,1, - 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,2, - 124,0,124,1,131,2,83,0,41,3,78,250,29,123,33,114, - 125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,114,19,0,0,0,41, - 4,114,18,0,0,0,218,20,98,117,105,108,116,105,110,95, - 109,111,100,117,108,101,95,110,97,109,101,115,218,11,73,109, - 112,111,114,116,69,114,114,111,114,114,51,0,0,0,169,3, - 114,34,0,0,0,218,8,102,117,108,108,110,97,109,101,218, - 3,102,120,110,32,32,128,114,5,0,0,0,218,25,95,114, - 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,95, - 119,114,97,112,112,101,114,254,0,0,0,243,10,0,0,0, - 10,1,10,1,2,1,6,255,10,2,114,17,0,0,0,122, - 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, - 105,110,46,60,108,111,99,97,108,115,62,46,95,114,101,113, - 117,105,114,101,115,95,98,117,105,108,116,105,110,95,119,114, - 97,112,112,101,114,78,169,1,114,16,0,0,0,41,3,114, - 91,0,0,0,114,92,0,0,0,114,91,0,0,0,96,32, - 64,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, - 115,95,98,117,105,108,116,105,110,252,0,0,0,243,6,0, - 0,0,12,2,10,5,4,1,114,17,0,0,0,114,95,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,114,85,0,0,0,41,4,122,47, - 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, - 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, - 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, + 0,0,0,114,63,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,16,95,118,101,114,98,111,115, + 101,95,109,101,115,115,97,103,101,244,0,0,0,115,10,0, + 0,0,12,2,10,1,8,1,24,1,4,253,114,18,0,0, + 0,114,84,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,243,26,0,0,0, + 135,0,102,1,100,1,100,2,132,8,125,1,116,0,124,1, + 136,0,131,2,1,0,124,1,83,0,41,4,122,49,68,101, + 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, + 121,32,116,104,101,32,110,97,109,101,100,32,109,111,100,117, + 108,101,32,105,115,32,98,117,105,108,116,45,105,110,46,99, 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, - 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, - 2,141,2,130,1,136,2,124,0,124,1,131,2,83,0,169, - 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, - 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, - 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, - 102,114,111,122,101,110,114,88,0,0,0,114,51,0,0,0, - 114,89,0,0,0,32,32,128,114,5,0,0,0,218,24,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, - 119,114,97,112,112,101,114,9,1,0,0,114,93,0,0,0, - 114,17,0,0,0,122,50,95,114,101,113,117,105,114,101,115, - 95,102,114,111,122,101,110,46,60,108,111,99,97,108,115,62, - 46,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, - 110,95,119,114,97,112,112,101,114,78,114,94,0,0,0,41, - 3,114,91,0,0,0,114,99,0,0,0,114,91,0,0,0, - 96,32,64,114,5,0,0,0,218,16,95,114,101,113,117,105, - 114,101,115,95,102,114,111,122,101,110,7,1,0,0,114,96, - 0,0,0,114,17,0,0,0,114,100,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,115,74,0,0,0,100,1,125,2,116,0,160,1,124, - 2,116,2,161,2,1,0,116,3,124,1,124,0,131,2,125, - 3,124,1,116,4,106,5,118,0,114,33,116,4,106,5,124, - 1,25,0,125,4,116,6,124,3,124,4,131,2,1,0,116, - 4,106,5,124,1,25,0,83,0,116,7,124,3,131,1,83, - 0,41,3,122,130,76,111,97,100,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, - 110,116,111,32,115,121,115,46,109,111,100,117,108,101,115,32, - 97,110,100,32,114,101,116,117,114,110,32,105,116,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,46,32,32, - 85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101,32,108,111,97, - 100,95,109,111,100,117,108,101,40,41,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,59,32,117,115,101,32,101,120,101,99,95, - 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, - 78,41,8,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,16,115,112,101,99,95,102, - 114,111,109,95,108,111,97,100,101,114,114,18,0,0,0,218, - 7,109,111,100,117,108,101,115,218,5,95,101,120,101,99,218, - 5,95,108,111,97,100,41,5,114,34,0,0,0,114,90,0, - 0,0,218,3,109,115,103,218,4,115,112,101,99,218,6,109, - 111,100,117,108,101,32,32,32,32,32,114,5,0,0,0,218, - 17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,104, - 105,109,19,1,0,0,115,16,0,0,0,4,6,12,2,10, - 1,10,1,10,1,10,1,10,1,8,2,114,17,0,0,0, - 114,111,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,194,0,0,0,116, - 0,124,0,100,1,100,2,131,3,125,1,116,0,124,0,100, - 3,100,2,131,3,4,0,125,2,114,18,116,1,124,2,131, - 1,83,0,116,2,124,1,100,4,131,2,114,39,9,0,124, - 1,160,3,124,0,161,1,83,0,35,0,4,0,116,4,121, - 96,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, - 0,106,5,125,3,110,12,35,0,4,0,116,6,121,95,1, - 0,1,0,1,0,100,5,125,3,89,0,110,1,37,0,9, - 0,124,0,106,7,125,4,110,27,35,0,4,0,116,6,121, - 94,1,0,1,0,1,0,124,1,100,2,117,0,114,79,100, - 6,160,8,124,3,161,1,6,0,89,0,83,0,100,7,160, - 8,124,3,124,1,161,2,6,0,89,0,83,0,37,0,100, - 8,160,8,124,3,124,4,161,2,83,0,119,0,119,0,119, - 0,41,9,122,44,84,104,101,32,105,109,112,108,101,109,101, - 110,116,97,116,105,111,110,32,111,102,32,77,111,100,117,108, - 101,84,121,112,101,46,95,95,114,101,112,114,95,95,40,41, - 46,218,10,95,95,108,111,97,100,101,114,95,95,78,218,8, - 95,95,115,112,101,99,95,95,218,11,109,111,100,117,108,101, - 95,114,101,112,114,250,1,63,250,13,60,109,111,100,117,108, - 101,32,123,33,114,125,62,250,20,60,109,111,100,117,108,101, - 32,123,33,114,125,32,40,123,33,114,125,41,62,250,23,60, - 109,111,100,117,108,101,32,123,33,114,125,32,102,114,111,109, - 32,123,33,114,125,62,41,9,114,12,0,0,0,218,22,95, - 109,111,100,117,108,101,95,114,101,112,114,95,102,114,111,109, - 95,115,112,101,99,114,10,0,0,0,114,114,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,114,8,0,0,0,114, - 2,0,0,0,218,8,95,95,102,105,108,101,95,95,114,51, - 0,0,0,41,5,114,110,0,0,0,218,6,108,111,97,100, - 101,114,114,109,0,0,0,114,20,0,0,0,218,8,102,105, - 108,101,110,97,109,101,32,32,32,32,32,114,5,0,0,0, + 19,0,0,0,115,38,0,0,0,124,1,116,0,106,1,118, + 1,114,14,116,2,100,1,160,3,124,1,161,1,124,1,100, + 2,141,2,130,1,136,0,124,0,124,1,131,2,83,0,41, + 3,78,250,29,123,33,114,125,32,105,115,32,110,111,116,32, + 97,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, + 101,114,20,0,0,0,41,4,114,19,0,0,0,218,20,98, + 117,105,108,116,105,110,95,109,111,100,117,108,101,95,110,97, + 109,101,115,218,11,73,109,112,111,114,116,69,114,114,111,114, + 114,51,0,0,0,169,2,114,34,0,0,0,218,8,102,117, + 108,108,110,97,109,101,169,1,218,3,102,120,110,114,5,0, + 0,0,114,6,0,0,0,218,25,95,114,101,113,117,105,114, + 101,115,95,98,117,105,108,116,105,110,95,119,114,97,112,112, + 101,114,254,0,0,0,243,10,0,0,0,10,1,10,1,2, + 1,6,255,10,2,114,18,0,0,0,122,52,95,114,101,113, + 117,105,114,101,115,95,98,117,105,108,116,105,110,46,60,108, + 111,99,97,108,115,62,46,95,114,101,113,117,105,114,101,115, + 95,98,117,105,108,116,105,110,95,119,114,97,112,112,101,114, + 78,169,1,114,17,0,0,0,41,2,114,92,0,0,0,114, + 93,0,0,0,114,5,0,0,0,114,91,0,0,0,114,6, + 0,0,0,218,17,95,114,101,113,117,105,114,101,115,95,98, + 117,105,108,116,105,110,252,0,0,0,243,6,0,0,0,12, + 2,10,5,4,1,114,18,0,0,0,114,96,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,114,85,0,0,0,41,4,122,47,68,101,99, + 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, + 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108, + 101,32,105,115,32,102,114,111,122,101,110,46,99,2,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,19,0,0, + 0,115,38,0,0,0,116,0,160,1,124,1,161,1,115,14, + 116,2,100,1,160,3,124,1,161,1,124,1,100,2,141,2, + 130,1,136,0,124,0,124,1,131,2,83,0,169,3,78,122, + 27,123,33,114,125,32,105,115,32,110,111,116,32,97,32,102, + 114,111,122,101,110,32,109,111,100,117,108,101,114,20,0,0, + 0,41,4,114,65,0,0,0,218,9,105,115,95,102,114,111, + 122,101,110,114,88,0,0,0,114,51,0,0,0,114,89,0, + 0,0,114,91,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,24,95,114,101,113,117,105,114,101,115,95,102,114,111, + 122,101,110,95,119,114,97,112,112,101,114,9,1,0,0,114, + 94,0,0,0,114,18,0,0,0,122,50,95,114,101,113,117, + 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, + 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, + 114,111,122,101,110,95,119,114,97,112,112,101,114,78,114,95, + 0,0,0,41,2,114,92,0,0,0,114,100,0,0,0,114, + 5,0,0,0,114,91,0,0,0,114,6,0,0,0,218,16, + 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, + 7,1,0,0,114,97,0,0,0,114,18,0,0,0,114,101, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,74,0,0,0,100,1,125, + 2,116,0,160,1,124,2,116,2,161,2,1,0,116,3,124, + 1,124,0,131,2,125,3,124,1,116,4,106,5,118,0,114, + 33,116,4,106,5,124,1,25,0,125,4,116,6,124,3,124, + 4,131,2,1,0,116,4,106,5,124,1,25,0,83,0,116, + 7,124,3,131,1,83,0,41,3,122,130,76,111,97,100,32, + 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,117,108,101,32,105,110,116,111,32,115,121,115,46,109,111, + 100,117,108,101,115,32,97,110,100,32,114,101,116,117,114,110, + 32,105,116,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,46,32,32,85,115,101,32,108,111,97,100,101,114, + 46,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,122,103,116, + 104,101,32,108,111,97,100,95,109,111,100,117,108,101,40,41, + 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, + 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, + 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, + 32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,105, + 110,115,116,101,97,100,78,41,8,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,16, + 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, + 114,19,0,0,0,218,7,109,111,100,117,108,101,115,218,5, + 95,101,120,101,99,218,5,95,108,111,97,100,41,5,114,34, + 0,0,0,114,90,0,0,0,218,3,109,115,103,218,4,115, + 112,101,99,218,6,109,111,100,117,108,101,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,17,95,108,111,97, + 100,95,109,111,100,117,108,101,95,115,104,105,109,19,1,0, + 0,115,16,0,0,0,4,6,12,2,10,1,10,1,10,1, + 10,1,10,1,8,2,114,18,0,0,0,114,112,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,194,0,0,0,116,0,124,0,100,1, + 100,2,131,3,125,1,116,0,124,0,100,3,100,2,131,3, + 4,0,125,2,114,18,116,1,124,2,131,1,83,0,116,2, + 124,1,100,4,131,2,114,39,9,0,124,1,160,3,124,0, + 161,1,83,0,35,0,4,0,116,4,121,96,1,0,1,0, + 1,0,89,0,110,1,37,0,9,0,124,0,106,5,125,3, + 110,12,35,0,4,0,116,6,121,95,1,0,1,0,1,0, + 100,5,125,3,89,0,110,1,37,0,9,0,124,0,106,7, + 125,4,110,27,35,0,4,0,116,6,121,94,1,0,1,0, + 1,0,124,1,100,2,117,0,114,79,100,6,160,8,124,3, + 161,1,6,0,89,0,83,0,100,7,160,8,124,3,124,1, + 161,2,6,0,89,0,83,0,37,0,100,8,160,8,124,3, + 124,4,161,2,83,0,119,0,119,0,119,0,41,9,122,44, + 84,104,101,32,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,32,111,102,32,77,111,100,117,108,101,84,121,112,101, + 46,95,95,114,101,112,114,95,95,40,41,46,218,10,95,95, + 108,111,97,100,101,114,95,95,78,218,8,95,95,115,112,101, + 99,95,95,218,11,109,111,100,117,108,101,95,114,101,112,114, + 250,1,63,250,13,60,109,111,100,117,108,101,32,123,33,114, + 125,62,250,20,60,109,111,100,117,108,101,32,123,33,114,125, + 32,40,123,33,114,125,41,62,250,23,60,109,111,100,117,108, + 101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125, + 62,41,9,114,13,0,0,0,218,22,95,109,111,100,117,108, + 101,95,114,101,112,114,95,102,114,111,109,95,115,112,101,99, + 114,11,0,0,0,114,115,0,0,0,218,9,69,120,99,101, + 112,116,105,111,110,114,9,0,0,0,114,2,0,0,0,218, + 8,95,95,102,105,108,101,95,95,114,51,0,0,0,41,5, + 114,111,0,0,0,218,6,108,111,97,100,101,114,114,110,0, + 0,0,114,21,0,0,0,218,8,102,105,108,101,110,97,109, + 101,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, @@ -553,7 +567,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, - 1,38,7,114,124,0,0,0,99,0,0,0,0,0,0,0, + 1,38,7,114,125,0,0,0,99,0,0,0,0,0,0,0, 0,0,0,0,0,4,0,0,0,64,0,0,0,115,114,0, 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, 100,2,100,2,100,3,156,3,100,4,100,5,132,2,90,4, @@ -664,492 +678,501 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, - 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, - 0,114,127,0,0,0,218,26,115,117,98,109,111,100,117,108, + 41,7,114,21,0,0,0,114,123,0,0,0,114,127,0,0, + 0,114,128,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, 114,218,7,95,99,97,99,104,101,100,41,6,114,34,0,0, - 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, - 114,127,0,0,0,114,128,0,0,0,32,32,32,32,32,32, - 114,5,0,0,0,114,35,0,0,0,101,1,0,0,115,14, - 0,0,0,6,2,6,1,6,1,6,1,14,1,6,3,10, - 1,114,17,0,0,0,122,19,77,111,100,117,108,101,83,112, - 101,99,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,6,0,0,0,67,0,0,0, - 115,102,0,0,0,100,1,160,0,124,0,106,1,161,1,100, - 2,160,0,124,0,106,2,161,1,103,2,125,1,124,0,106, - 3,100,0,117,1,114,26,124,1,160,4,100,3,160,0,124, - 0,106,3,161,1,161,1,1,0,124,0,106,5,100,0,117, - 1,114,40,124,1,160,4,100,4,160,0,124,0,106,5,161, - 1,161,1,1,0,100,5,160,0,124,0,106,6,106,7,100, - 6,160,8,124,1,161,1,161,2,83,0,41,7,78,122,9, - 110,97,109,101,61,123,33,114,125,122,11,108,111,97,100,101, - 114,61,123,33,114,125,122,11,111,114,105,103,105,110,61,123, - 33,114,125,122,29,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,61, - 123,125,122,6,123,125,40,123,125,41,122,2,44,32,41,9, - 114,51,0,0,0,114,20,0,0,0,114,122,0,0,0,114, - 126,0,0,0,218,6,97,112,112,101,110,100,114,129,0,0, - 0,218,9,95,95,99,108,97,115,115,95,95,114,8,0,0, - 0,218,4,106,111,105,110,41,2,114,34,0,0,0,114,63, - 0,0,0,32,32,114,5,0,0,0,114,54,0,0,0,113, - 1,0,0,115,20,0,0,0,10,1,10,1,4,255,10,2, - 18,1,10,1,6,1,8,1,4,255,22,2,114,17,0,0, - 0,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, - 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0, - 0,0,0,8,0,0,0,67,0,0,0,115,104,0,0,0, - 124,0,106,0,125,2,9,0,124,0,106,1,124,1,106,1, - 107,2,111,38,124,0,106,2,124,1,106,2,107,2,111,38, - 124,0,106,3,124,1,106,3,107,2,111,38,124,2,124,1, - 106,0,107,2,111,38,124,0,106,4,124,1,106,4,107,2, - 111,38,124,0,106,5,124,1,106,5,107,2,83,0,35,0, - 4,0,116,6,121,51,1,0,1,0,1,0,116,7,6,0, - 89,0,83,0,37,0,119,0,114,0,0,0,0,41,8,114, - 129,0,0,0,114,20,0,0,0,114,122,0,0,0,114,126, - 0,0,0,218,6,99,97,99,104,101,100,218,12,104,97,115, - 95,108,111,99,97,116,105,111,110,114,2,0,0,0,218,14, - 78,111,116,73,109,112,108,101,109,101,110,116,101,100,41,3, - 114,34,0,0,0,90,5,111,116,104,101,114,90,4,115,109, - 115,108,32,32,32,114,5,0,0,0,218,6,95,95,101,113, - 95,95,123,1,0,0,115,36,0,0,0,6,1,2,1,12, - 1,10,1,2,255,10,2,2,254,8,3,2,253,10,4,2, - 252,10,5,2,251,2,128,12,6,8,1,2,128,2,255,115, - 12,0,0,0,132,34,39,0,167,9,50,7,179,1,50,7, - 122,17,77,111,100,117,108,101,83,112,101,99,46,95,95,101, - 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,58,0,0,0,124,0,106, - 0,100,0,117,0,114,26,124,0,106,1,100,0,117,1,114, - 26,124,0,106,2,114,26,116,3,100,0,117,0,114,19,116, - 4,130,1,116,3,160,5,124,0,106,1,161,1,124,0,95, - 0,124,0,106,0,83,0,114,0,0,0,0,41,6,114,131, - 0,0,0,114,126,0,0,0,114,130,0,0,0,218,19,95, - 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, - 97,108,218,19,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,69,114,114,111,114,90,11,95,103,101,116,95,99,97, - 99,104,101,100,114,53,0,0,0,32,114,5,0,0,0,114, - 135,0,0,0,135,1,0,0,115,12,0,0,0,10,2,16, - 1,8,1,4,1,14,1,6,1,114,17,0,0,0,122,17, - 77,111,100,117,108,101,83,112,101,99,46,99,97,99,104,101, - 100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,131,0,0, - 0,41,2,114,34,0,0,0,114,135,0,0,0,32,32,114, - 5,0,0,0,114,135,0,0,0,144,1,0,0,115,2,0, - 0,0,10,2,114,17,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,32, - 0,0,0,124,0,106,0,100,1,117,0,114,13,124,0,106, - 1,160,2,100,2,161,1,100,3,25,0,83,0,124,0,106, - 1,83,0,41,4,122,32,84,104,101,32,110,97,109,101,32, - 111,102,32,116,104,101,32,109,111,100,117,108,101,39,115,32, - 112,97,114,101,110,116,46,78,218,1,46,114,26,0,0,0, - 41,3,114,129,0,0,0,114,20,0,0,0,218,10,114,112, - 97,114,116,105,116,105,111,110,114,53,0,0,0,32,114,5, - 0,0,0,218,6,112,97,114,101,110,116,148,1,0,0,115, - 6,0,0,0,10,3,16,1,6,2,114,17,0,0,0,122, - 17,77,111,100,117,108,101,83,112,101,99,46,112,97,114,101, - 110,116,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0, - 83,0,114,0,0,0,0,41,1,114,130,0,0,0,114,53, - 0,0,0,32,114,5,0,0,0,114,136,0,0,0,156,1, - 0,0,115,2,0,0,0,6,2,114,17,0,0,0,122,23, - 77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,108, - 111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,67,0,0,0,115,14,0,0, - 0,116,0,124,1,131,1,124,0,95,1,100,0,83,0,114, - 0,0,0,0,41,2,218,4,98,111,111,108,114,130,0,0, - 0,41,2,114,34,0,0,0,218,5,118,97,108,117,101,32, - 32,114,5,0,0,0,114,136,0,0,0,160,1,0,0,115, - 2,0,0,0,14,2,114,17,0,0,0,41,12,114,8,0, - 0,0,114,7,0,0,0,114,1,0,0,0,114,9,0,0, - 0,114,35,0,0,0,114,54,0,0,0,114,138,0,0,0, - 218,8,112,114,111,112,101,114,116,121,114,135,0,0,0,218, - 6,115,101,116,116,101,114,114,143,0,0,0,114,136,0,0, - 0,114,23,0,0,0,114,5,0,0,0,114,125,0,0,0, - 64,1,0,0,115,34,0,0,0,8,0,4,1,4,36,2, - 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, - 3,10,1,2,7,10,1,4,3,14,1,114,17,0,0,0, - 114,125,0,0,0,169,2,114,126,0,0,0,114,128,0,0, - 0,99,2,0,0,0,0,0,0,0,2,0,0,0,8,0, - 0,0,67,0,0,0,115,152,0,0,0,116,0,124,1,100, - 1,131,2,114,37,116,1,100,2,117,0,114,11,116,2,130, - 1,116,1,106,3,125,4,124,3,100,2,117,0,114,24,124, - 4,124,0,124,1,100,3,141,2,83,0,124,3,114,28,103, - 0,110,1,100,2,125,5,124,4,124,0,124,1,124,5,100, - 4,141,3,83,0,124,3,100,2,117,0,114,67,116,0,124, - 1,100,5,131,2,114,65,9,0,124,1,160,4,124,0,161, - 1,125,3,110,14,35,0,4,0,116,5,121,75,1,0,1, - 0,1,0,100,2,125,3,89,0,110,3,37,0,100,6,125, - 3,116,6,124,0,124,1,124,2,124,3,100,7,141,4,83, - 0,119,0,41,8,122,53,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,118,97,114,105,111,117,115,32,108,111,97, - 100,101,114,32,109,101,116,104,111,100,115,46,90,12,103,101, - 116,95,102,105,108,101,110,97,109,101,78,41,1,114,122,0, - 0,0,41,2,114,122,0,0,0,114,129,0,0,0,114,128, - 0,0,0,70,114,148,0,0,0,41,7,114,10,0,0,0, - 114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0,0,114,125,0, - 0,0,41,6,114,20,0,0,0,114,122,0,0,0,114,126, - 0,0,0,114,128,0,0,0,114,149,0,0,0,90,6,115, - 101,97,114,99,104,32,32,32,32,32,32,114,5,0,0,0, - 114,104,0,0,0,165,1,0,0,115,42,0,0,0,10,2, - 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, - 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, - 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, - 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, - 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, - 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, - 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, - 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, - 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, - 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, - 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, - 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, - 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, - 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, - 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, - 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, - 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, - 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, - 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, - 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, - 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, - 169,1,114,126,0,0,0,70,84,41,13,114,113,0,0,0, - 114,2,0,0,0,114,8,0,0,0,114,112,0,0,0,114, - 121,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, - 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, - 8,95,95,112,97,116,104,95,95,114,125,0,0,0,114,130, - 0,0,0,114,135,0,0,0,114,129,0,0,0,41,8,114, - 110,0,0,0,114,122,0,0,0,114,126,0,0,0,114,109, - 0,0,0,114,20,0,0,0,90,8,108,111,99,97,116,105, - 111,110,114,135,0,0,0,114,129,0,0,0,32,32,32,32, - 32,32,32,32,114,5,0,0,0,218,17,95,115,112,101,99, - 95,102,114,111,109,95,109,111,100,117,108,101,191,1,0,0, - 115,108,0,0,0,2,2,8,1,2,128,12,1,4,1,2, - 128,8,2,4,1,6,2,8,1,2,1,8,1,2,128,12, - 1,4,2,2,128,2,1,8,1,2,128,12,1,8,1,2, - 128,8,1,8,1,2,1,8,1,2,128,12,1,8,1,2, - 128,4,2,2,1,8,1,2,128,12,1,8,1,2,128,2, - 1,12,1,2,128,12,1,8,1,2,128,14,2,18,1,6, - 1,6,1,4,1,2,249,2,252,2,250,2,250,2,251,2, - 246,115,93,0,0,0,129,3,5,0,133,7,14,7,157,3, - 33,0,161,7,42,7,172,3,48,0,176,9,59,7,193,5, - 3,65,9,0,193,9,9,65,20,7,193,24,3,65,28,0, - 193,28,9,65,39,7,193,41,5,65,47,0,193,47,9,65, - 58,7,194,19,1,65,58,7,194,20,1,65,39,7,194,21, - 1,65,20,7,194,22,1,59,7,194,23,1,42,7,194,24, - 1,14,7,114,155,0,0,0,70,169,1,218,8,111,118,101, - 114,114,105,100,101,99,2,0,0,0,0,0,0,0,1,0, - 0,0,8,0,0,0,67,0,0,0,115,204,1,0,0,124, - 2,115,10,116,0,124,1,100,1,100,0,131,3,100,0,117, - 0,114,26,9,0,124,0,106,1,124,1,95,2,110,10,35, - 0,4,0,116,3,121,229,1,0,1,0,1,0,89,0,110, - 1,37,0,124,2,115,36,116,0,124,1,100,2,100,0,131, - 3,100,0,117,0,114,87,124,0,106,4,125,3,124,3,100, - 0,117,0,114,72,124,0,106,5,100,0,117,1,114,72,116, - 6,100,0,117,0,114,54,116,7,130,1,116,6,106,8,125, - 4,124,4,160,9,124,4,161,1,125,3,124,0,106,5,124, - 3,95,10,124,3,124,0,95,4,100,0,124,1,95,11,9, - 0,124,3,124,1,95,12,110,10,35,0,4,0,116,3,121, - 228,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, - 97,116,0,124,1,100,3,100,0,131,3,100,0,117,0,114, - 113,9,0,124,0,106,13,124,1,95,14,110,10,35,0,4, - 0,116,3,121,227,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,124,1,95,15,110,10,35,0,4,0,116, - 3,121,226,1,0,1,0,1,0,89,0,110,1,37,0,124, - 2,115,138,116,0,124,1,100,4,100,0,131,3,100,0,117, - 0,114,159,124,0,106,5,100,0,117,1,114,159,9,0,124, - 0,106,5,124,1,95,16,110,10,35,0,4,0,116,3,121, - 225,1,0,1,0,1,0,89,0,110,1,37,0,124,0,106, - 17,114,221,124,2,115,172,116,0,124,1,100,5,100,0,131, - 3,100,0,117,0,114,188,9,0,124,0,106,18,124,1,95, - 11,110,10,35,0,4,0,116,3,121,224,1,0,1,0,1, - 0,89,0,110,1,37,0,124,2,115,198,116,0,124,1,100, - 6,100,0,131,3,100,0,117,0,114,221,124,0,106,19,100, - 0,117,1,114,221,9,0,124,0,106,19,124,1,95,20,124, - 1,83,0,35,0,4,0,116,3,121,223,1,0,1,0,1, - 0,89,0,124,1,83,0,37,0,124,1,83,0,119,0,119, - 0,119,0,119,0,119,0,119,0,119,0,41,7,78,114,8, - 0,0,0,114,112,0,0,0,218,11,95,95,112,97,99,107, - 97,103,101,95,95,114,154,0,0,0,114,121,0,0,0,114, - 152,0,0,0,41,21,114,12,0,0,0,114,20,0,0,0, - 114,8,0,0,0,114,2,0,0,0,114,122,0,0,0,114, - 129,0,0,0,114,139,0,0,0,114,140,0,0,0,218,16, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 218,7,95,95,110,101,119,95,95,90,5,95,112,97,116,104, - 114,121,0,0,0,114,112,0,0,0,114,143,0,0,0,114, - 158,0,0,0,114,113,0,0,0,114,154,0,0,0,114,136, - 0,0,0,114,126,0,0,0,114,135,0,0,0,114,152,0, - 0,0,41,5,114,109,0,0,0,114,110,0,0,0,114,157, - 0,0,0,114,122,0,0,0,114,159,0,0,0,32,32,32, - 32,32,114,5,0,0,0,218,18,95,105,110,105,116,95,109, - 111,100,117,108,101,95,97,116,116,114,115,236,1,0,0,115, - 142,0,0,0,20,4,2,1,10,1,2,128,12,1,4,1, - 2,128,20,2,6,1,8,1,10,2,8,1,4,1,6,1, - 10,2,8,1,6,1,6,11,2,1,8,1,2,128,12,1, - 4,1,2,128,20,2,2,1,10,1,2,128,12,1,4,1, - 2,128,2,2,8,1,2,128,12,1,4,1,2,128,20,2, - 10,1,2,1,10,1,2,128,12,1,4,1,2,128,6,2, - 20,1,2,1,10,1,2,128,12,1,4,1,2,128,20,2, - 10,1,2,1,8,1,4,3,2,128,12,254,2,1,4,1, - 2,128,4,0,2,254,2,249,2,249,2,249,2,251,2,250, - 2,228,115,121,0,0,0,139,4,16,0,144,7,25,7,193, - 9,3,65,13,0,193,13,7,65,22,7,193,34,4,65,39, - 0,193,39,7,65,48,7,193,50,3,65,54,0,193,54,7, - 65,63,7,194,16,4,66,21,0,194,21,7,66,30,7,194, - 45,4,66,50,0,194,50,7,66,59,7,195,12,4,67,18, - 0,195,18,7,67,28,7,195,31,1,67,28,7,195,32,1, - 66,59,7,195,33,1,66,30,7,195,34,1,65,63,7,195, - 35,1,65,48,7,195,36,1,65,22,7,195,37,1,25,7, - 114,161,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,115,82,0,0,0,100, - 1,125,1,116,0,124,0,106,1,100,2,131,2,114,15,124, - 0,106,1,160,2,124,0,161,1,125,1,110,10,116,0,124, - 0,106,1,100,3,131,2,114,25,116,3,100,4,131,1,130, - 1,124,1,100,1,117,0,114,34,116,4,124,0,106,5,131, - 1,125,1,116,6,124,0,124,1,131,2,1,0,124,1,83, - 0,41,5,122,43,67,114,101,97,116,101,32,97,32,109,111, - 100,117,108,101,32,98,97,115,101,100,32,111,110,32,116,104, - 101,32,112,114,111,118,105,100,101,100,32,115,112,101,99,46, - 78,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101, - 218,11,101,120,101,99,95,109,111,100,117,108,101,122,66,108, - 111,97,100,101,114,115,32,116,104,97,116,32,100,101,102,105, - 110,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,109,117,115,116,32,97,108,115,111,32,100,101,102,105,110, - 101,32,99,114,101,97,116,101,95,109,111,100,117,108,101,40, - 41,41,7,114,10,0,0,0,114,122,0,0,0,114,162,0, - 0,0,114,88,0,0,0,114,21,0,0,0,114,20,0,0, - 0,114,161,0,0,0,169,2,114,109,0,0,0,114,110,0, - 0,0,32,32,114,5,0,0,0,218,16,109,111,100,117,108, - 101,95,102,114,111,109,95,115,112,101,99,52,2,0,0,115, - 18,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, - 10,1,10,1,4,1,114,17,0,0,0,114,165,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,100,0,0,0,124,0,106,0,100,1, - 117,0,114,7,100,2,110,2,124,0,106,0,125,1,124,0, - 106,1,100,1,117,0,114,32,124,0,106,2,100,1,117,0, - 114,25,100,3,160,3,124,1,161,1,83,0,100,4,160,3, - 124,1,124,0,106,2,161,2,83,0,124,0,106,4,114,42, - 100,5,160,3,124,1,124,0,106,1,161,2,83,0,100,6, - 160,3,124,0,106,0,124,0,106,1,161,2,83,0,41,7, - 122,38,82,101,116,117,114,110,32,116,104,101,32,114,101,112, - 114,32,116,111,32,117,115,101,32,102,111,114,32,116,104,101, - 32,109,111,100,117,108,101,46,78,114,115,0,0,0,114,116, - 0,0,0,114,117,0,0,0,114,118,0,0,0,250,18,60, - 109,111,100,117,108,101,32,123,33,114,125,32,40,123,125,41, - 62,41,5,114,20,0,0,0,114,126,0,0,0,114,122,0, - 0,0,114,51,0,0,0,114,136,0,0,0,41,2,114,109, - 0,0,0,114,20,0,0,0,32,32,114,5,0,0,0,114, - 119,0,0,0,69,2,0,0,115,16,0,0,0,20,3,10, - 1,10,1,10,1,14,2,6,2,14,1,16,2,114,17,0, - 0,0,114,119,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,10,0,0,0,67,0,0,0,115,32,1,0, - 0,124,0,106,0,125,2,116,1,124,2,131,1,53,0,1, - 0,116,2,106,3,160,4,124,2,161,1,124,1,117,1,114, - 27,100,1,160,5,124,2,161,1,125,3,116,6,124,3,124, - 2,100,2,141,2,130,1,9,0,124,0,106,7,100,3,117, - 0,114,53,124,0,106,8,100,3,117,0,114,45,116,6,100, - 4,124,0,106,0,100,2,141,2,130,1,116,9,124,0,124, - 1,100,5,100,6,141,3,1,0,110,40,116,9,124,0,124, - 1,100,5,100,6,141,3,1,0,116,10,124,0,106,7,100, - 7,131,2,115,87,116,11,124,0,106,7,131,1,155,0,100, - 8,157,2,125,3,116,12,160,13,124,3,116,14,161,2,1, - 0,124,0,106,7,160,15,124,2,161,1,1,0,110,6,124, - 0,106,7,160,16,124,1,161,1,1,0,116,2,106,3,160, - 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, - 0,106,0,60,0,110,16,35,0,116,2,106,3,160,17,124, - 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, - 0,60,0,119,0,37,0,9,0,100,3,4,0,4,0,131, - 3,1,0,124,1,83,0,35,0,49,0,115,136,119,4,37, - 0,1,0,1,0,1,0,89,0,1,0,1,0,124,1,83, - 0,41,9,122,70,69,120,101,99,117,116,101,32,116,104,101, - 32,115,112,101,99,39,115,32,115,112,101,99,105,102,105,101, - 100,32,109,111,100,117,108,101,32,105,110,32,97,110,32,101, - 120,105,115,116,105,110,103,32,109,111,100,117,108,101,39,115, - 32,110,97,109,101,115,112,97,99,101,46,122,30,109,111,100, - 117,108,101,32,123,33,114,125,32,110,111,116,32,105,110,32, - 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, - 78,250,14,109,105,115,115,105,110,103,32,108,111,97,100,101, - 114,84,114,156,0,0,0,114,163,0,0,0,250,55,46,101, - 120,101,99,95,109,111,100,117,108,101,40,41,32,110,111,116, - 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, - 98,97,99,107,32,116,111,32,108,111,97,100,95,109,111,100, - 117,108,101,40,41,41,18,114,20,0,0,0,114,58,0,0, - 0,114,18,0,0,0,114,105,0,0,0,114,39,0,0,0, - 114,51,0,0,0,114,88,0,0,0,114,122,0,0,0,114, - 129,0,0,0,114,161,0,0,0,114,10,0,0,0,114,6, - 0,0,0,114,101,0,0,0,114,102,0,0,0,218,13,73, - 109,112,111,114,116,87,97,114,110,105,110,103,218,11,108,111, - 97,100,95,109,111,100,117,108,101,114,163,0,0,0,218,3, - 112,111,112,41,4,114,109,0,0,0,114,110,0,0,0,114, - 20,0,0,0,114,108,0,0,0,32,32,32,32,114,5,0, - 0,0,114,106,0,0,0,86,2,0,0,115,50,0,0,0, - 6,2,10,1,16,1,10,1,12,1,2,1,10,1,10,1, - 14,1,16,2,14,2,12,1,16,1,12,2,14,1,12,2, - 14,4,14,1,2,128,14,255,18,1,10,233,4,24,22,128, - 4,0,115,41,0,0,0,135,20,66,3,3,156,65,1,65, - 43,2,193,29,14,66,3,3,193,43,15,65,58,9,193,58, - 1,66,3,3,194,3,4,66,7,11,194,8,3,66,7,11, - 114,106,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,22,1,0,0,9, - 0,124,0,106,0,160,1,124,0,106,2,161,1,1,0,110, - 25,35,0,1,0,1,0,1,0,124,0,106,2,116,3,106, - 4,118,0,114,32,116,3,106,4,160,5,124,0,106,2,161, - 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, - 0,37,0,116,3,106,4,160,5,124,0,106,2,161,1,125, - 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, - 1,100,1,100,0,131,3,100,0,117,0,114,71,9,0,124, - 0,106,0,124,1,95,7,110,10,35,0,4,0,116,8,121, - 138,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, - 1,100,2,100,0,131,3,100,0,117,0,114,109,9,0,124, - 1,106,9,124,1,95,10,116,11,124,1,100,3,131,2,115, - 98,124,0,106,2,160,12,100,4,161,1,100,5,25,0,124, - 1,95,10,110,10,35,0,4,0,116,8,121,137,1,0,1, - 0,1,0,89,0,110,1,37,0,116,6,124,1,100,6,100, - 0,131,3,100,0,117,0,114,134,9,0,124,0,124,1,95, - 13,124,1,83,0,35,0,4,0,116,8,121,136,1,0,1, - 0,1,0,89,0,124,1,83,0,37,0,124,1,83,0,119, - 0,119,0,119,0,41,7,78,114,112,0,0,0,114,158,0, - 0,0,114,154,0,0,0,114,141,0,0,0,114,26,0,0, - 0,114,113,0,0,0,41,14,114,122,0,0,0,114,170,0, - 0,0,114,20,0,0,0,114,18,0,0,0,114,105,0,0, - 0,114,171,0,0,0,114,12,0,0,0,114,112,0,0,0, - 114,2,0,0,0,114,8,0,0,0,114,158,0,0,0,114, - 10,0,0,0,114,142,0,0,0,114,113,0,0,0,114,164, - 0,0,0,32,32,114,5,0,0,0,218,25,95,108,111,97, - 100,95,98,97,99,107,119,97,114,100,95,99,111,109,112,97, - 116,105,98,108,101,116,2,0,0,115,80,0,0,0,2,3, - 16,1,2,128,6,1,12,1,14,1,12,1,2,1,2,128, - 14,3,12,1,16,1,2,1,10,1,2,128,12,1,4,1, - 2,128,16,1,2,1,8,4,10,1,18,1,4,128,12,1, - 4,1,2,128,16,1,2,1,6,1,4,3,2,128,12,254, - 2,1,4,1,2,128,4,0,2,254,2,251,2,246,115,59, - 0,0,0,129,7,9,0,137,24,33,7,184,4,61,0,189, - 7,65,6,7,193,16,18,65,35,0,193,35,7,65,44,7, - 193,54,3,65,59,0,193,59,7,66,5,7,194,8,1,66, - 5,7,194,9,1,65,44,7,194,10,1,65,6,7,114,172, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 11,0,0,0,67,0,0,0,115,248,0,0,0,124,0,106, - 0,100,0,117,1,114,29,116,1,124,0,106,0,100,1,131, - 2,115,29,116,2,124,0,106,0,131,1,155,0,100,2,157, - 2,125,1,116,3,160,4,124,1,116,5,161,2,1,0,116, - 6,124,0,131,1,83,0,116,7,124,0,131,1,125,2,100, - 3,124,0,95,8,9,0,124,2,116,9,106,10,124,0,106, - 11,60,0,9,0,124,0,106,0,100,0,117,0,114,62,124, - 0,106,12,100,0,117,0,114,61,116,13,100,4,124,0,106, - 11,100,5,141,2,130,1,110,6,124,0,106,0,160,14,124, - 2,161,1,1,0,110,22,35,0,1,0,1,0,1,0,9, - 0,116,9,106,10,124,0,106,11,61,0,130,0,35,0,4, - 0,116,15,121,123,1,0,1,0,1,0,89,0,130,0,37, - 0,37,0,116,9,106,10,160,16,124,0,106,11,161,1,125, - 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, - 6,124,0,106,11,124,0,106,0,131,3,1,0,100,7,124, - 0,95,8,124,2,83,0,35,0,100,7,124,0,95,8,119, - 0,37,0,119,0,41,8,78,114,163,0,0,0,114,168,0, - 0,0,84,114,167,0,0,0,114,19,0,0,0,122,18,105, - 109,112,111,114,116,32,123,33,114,125,32,35,32,123,33,114, - 125,70,41,18,114,122,0,0,0,114,10,0,0,0,114,6, - 0,0,0,114,101,0,0,0,114,102,0,0,0,114,169,0, - 0,0,114,172,0,0,0,114,165,0,0,0,90,13,95,105, - 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, - 114,105,0,0,0,114,20,0,0,0,114,129,0,0,0,114, - 88,0,0,0,114,163,0,0,0,114,71,0,0,0,114,171, - 0,0,0,114,84,0,0,0,41,3,114,109,0,0,0,114, - 108,0,0,0,114,110,0,0,0,32,32,32,114,5,0,0, - 0,218,14,95,108,111,97,100,95,117,110,108,111,99,107,101, - 100,152,2,0,0,115,66,0,0,0,10,2,12,2,16,1, - 12,2,8,1,8,2,6,5,2,1,12,1,2,1,10,1, - 10,1,14,1,2,255,12,4,4,128,6,1,2,1,10,1, - 2,3,2,128,12,254,2,1,2,1,4,128,14,5,12,1, - 16,1,6,2,4,2,2,128,10,254,2,245,115,64,0,0, - 0,165,6,65,53,0,172,24,65,5,0,193,4,1,65,53, - 0,193,5,4,65,26,7,193,10,5,65,16,6,193,15,1, - 65,26,7,193,16,7,65,25,13,193,23,3,65,26,7,193, - 26,22,65,53,0,193,53,5,65,58,7,193,59,1,65,25, - 13,114,173,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,67,0,0,0,115,58,0,0,0, - 116,0,124,0,106,1,131,1,53,0,1,0,116,2,124,0, - 131,1,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 35,0,49,0,115,21,119,4,37,0,1,0,1,0,1,0, - 89,0,1,0,1,0,100,1,83,0,41,2,122,191,82,101, - 116,117,114,110,32,97,32,110,101,119,32,109,111,100,117,108, - 101,32,111,98,106,101,99,116,44,32,108,111,97,100,101,100, - 32,98,121,32,116,104,101,32,115,112,101,99,39,115,32,108, - 111,97,100,101,114,46,10,10,32,32,32,32,84,104,101,32, - 109,111,100,117,108,101,32,105,115,32,110,111,116,32,97,100, - 100,101,100,32,116,111,32,105,116,115,32,112,97,114,101,110, - 116,46,10,10,32,32,32,32,73,102,32,97,32,109,111,100, - 117,108,101,32,105,115,32,97,108,114,101,97,100,121,32,105, - 110,32,115,121,115,46,109,111,100,117,108,101,115,44,32,116, - 104,97,116,32,101,120,105,115,116,105,110,103,32,109,111,100, - 117,108,101,32,103,101,116,115,10,32,32,32,32,99,108,111, - 98,98,101,114,101,100,46,10,10,32,32,32,32,78,41,3, - 114,58,0,0,0,114,20,0,0,0,114,173,0,0,0,169, - 1,114,109,0,0,0,32,114,5,0,0,0,114,107,0,0, - 0,197,2,0,0,115,10,0,0,0,12,9,6,1,14,255, - 22,128,4,0,115,12,0,0,0,133,4,16,3,144,4,20, - 11,149,3,20,11,114,107,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, - 140,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, - 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, - 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, - 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, - 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, - 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, - 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, - 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, - 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, - 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, - 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, - 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, - 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, - 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, - 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, - 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, - 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,99, - 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 67,0,0,0,115,34,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,100,2,124,0,106,3,155,2,100,3,116, - 4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,40, - 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,122,8,60,109,111,100,117,108,101,32,122, - 2,32,40,122,2,41,62,78,41,6,114,101,0,0,0,114, - 102,0,0,0,114,103,0,0,0,114,8,0,0,0,114,175, - 0,0,0,114,151,0,0,0,169,1,114,110,0,0,0,32, - 114,5,0,0,0,114,114,0,0,0,223,2,0,0,115,8, - 0,0,0,6,7,2,1,4,255,22,2,114,17,0,0,0, - 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, - 0,0,0,115,42,0,0,0,124,2,100,0,117,1,114,6, - 100,0,83,0,116,0,160,1,124,1,161,1,114,19,116,2, - 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, - 83,0,169,2,78,114,150,0,0,0,41,4,114,65,0,0, - 0,90,10,105,115,95,98,117,105,108,116,105,110,114,104,0, - 0,0,114,151,0,0,0,169,4,218,3,99,108,115,114,90, - 0,0,0,218,4,112,97,116,104,218,6,116,97,114,103,101, - 116,32,32,32,32,114,5,0,0,0,218,9,102,105,110,100, + 0,114,21,0,0,0,114,123,0,0,0,114,127,0,0,0, + 114,128,0,0,0,114,129,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,35,0,0,0,101,1, + 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, + 1,6,3,10,1,114,18,0,0,0,122,19,77,111,100,117, + 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, + 1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, + 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, + 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, + 1,124,0,106,3,100,0,117,1,114,26,124,1,160,4,100, + 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, + 5,100,0,117,1,114,40,124,1,160,4,100,4,160,0,124, + 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, + 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, + 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, + 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, + 105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2, + 44,32,41,9,114,51,0,0,0,114,21,0,0,0,114,123, + 0,0,0,114,127,0,0,0,218,6,97,112,112,101,110,100, + 114,130,0,0,0,218,9,95,95,99,108,97,115,115,95,95, + 114,9,0,0,0,218,4,106,111,105,110,41,2,114,34,0, + 0,0,114,63,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,54,0,0,0,113,1,0,0,115, + 20,0,0,0,10,1,10,1,4,255,10,2,18,1,10,1, + 6,1,8,1,4,255,22,2,114,18,0,0,0,122,19,77, + 111,100,117,108,101,83,112,101,99,46,95,95,114,101,112,114, + 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,67,0,0,0,115,104,0,0,0,124,0,106,0, + 125,2,9,0,124,0,106,1,124,1,106,1,107,2,111,38, + 124,0,106,2,124,1,106,2,107,2,111,38,124,0,106,3, + 124,1,106,3,107,2,111,38,124,2,124,1,106,0,107,2, + 111,38,124,0,106,4,124,1,106,4,107,2,111,38,124,0, + 106,5,124,1,106,5,107,2,83,0,35,0,4,0,116,6, + 121,51,1,0,1,0,1,0,116,7,6,0,89,0,83,0, + 37,0,119,0,114,0,0,0,0,41,8,114,130,0,0,0, + 114,21,0,0,0,114,123,0,0,0,114,127,0,0,0,218, + 6,99,97,99,104,101,100,218,12,104,97,115,95,108,111,99, + 97,116,105,111,110,114,2,0,0,0,218,14,78,111,116,73, + 109,112,108,101,109,101,110,116,101,100,41,3,114,34,0,0, + 0,90,5,111,116,104,101,114,90,4,115,109,115,108,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, + 95,101,113,95,95,123,1,0,0,115,36,0,0,0,6,1, + 2,1,12,1,10,1,2,255,10,2,2,254,8,3,2,253, + 10,4,2,252,10,5,2,251,2,128,12,6,8,1,2,128, + 2,255,115,12,0,0,0,132,34,39,0,167,9,50,7,179, + 1,50,7,122,17,77,111,100,117,108,101,83,112,101,99,46, + 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,67,0,0,0,115,58,0,0,0, + 124,0,106,0,100,0,117,0,114,26,124,0,106,1,100,0, + 117,1,114,26,124,0,106,2,114,26,116,3,100,0,117,0, + 114,19,116,4,130,1,116,3,160,5,124,0,106,1,161,1, + 124,0,95,0,124,0,106,0,83,0,114,0,0,0,0,41, + 6,114,132,0,0,0,114,127,0,0,0,114,131,0,0,0, + 218,19,95,98,111,111,116,115,116,114,97,112,95,101,120,116, + 101,114,110,97,108,218,19,78,111,116,73,109,112,108,101,109, + 101,110,116,101,100,69,114,114,111,114,90,11,95,103,101,116, + 95,99,97,99,104,101,100,114,53,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,136,0,0,0, + 135,1,0,0,115,12,0,0,0,10,2,16,1,8,1,4, + 1,14,1,6,1,114,18,0,0,0,122,17,77,111,100,117, + 108,101,83,112,101,99,46,99,97,99,104,101,100,99,2,0, + 0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,132,0,0,0,41,2,114, + 34,0,0,0,114,136,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,136,0,0,0,144,1,0, + 0,115,2,0,0,0,10,2,114,18,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,115,32,0,0,0,124,0,106,0,100,1,117,0,114, + 13,124,0,106,1,160,2,100,2,161,1,100,3,25,0,83, + 0,124,0,106,1,83,0,41,4,122,32,84,104,101,32,110, + 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, + 101,39,115,32,112,97,114,101,110,116,46,78,218,1,46,114, + 26,0,0,0,41,3,114,130,0,0,0,114,21,0,0,0, + 218,10,114,112,97,114,116,105,116,105,111,110,114,53,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,6,112,97,114,101,110,116,148,1,0,0,115,6,0,0, + 0,10,3,16,1,6,2,114,18,0,0,0,122,17,77,111, + 100,117,108,101,83,112,101,99,46,112,97,114,101,110,116,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 67,0,0,0,115,6,0,0,0,124,0,106,0,83,0,114, + 0,0,0,0,41,1,114,131,0,0,0,114,53,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 137,0,0,0,156,1,0,0,115,2,0,0,0,6,2,114, + 18,0,0,0,122,23,77,111,100,117,108,101,83,112,101,99, + 46,104,97,115,95,108,111,99,97,116,105,111,110,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,67,0, + 0,0,115,14,0,0,0,116,0,124,1,131,1,124,0,95, + 1,100,0,83,0,114,0,0,0,0,41,2,218,4,98,111, + 111,108,114,131,0,0,0,41,2,114,34,0,0,0,218,5, + 118,97,108,117,101,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,137,0,0,0,160,1,0,0,115,2,0, + 0,0,14,2,114,18,0,0,0,41,12,114,9,0,0,0, + 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, + 35,0,0,0,114,54,0,0,0,114,139,0,0,0,218,8, + 112,114,111,112,101,114,116,121,114,136,0,0,0,218,6,115, + 101,116,116,101,114,114,144,0,0,0,114,137,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,126,0,0,0,64,1,0,0,115,34,0,0, + 0,8,0,4,1,4,36,2,1,12,255,8,12,8,10,2, + 12,10,1,4,8,10,1,2,3,10,1,2,7,10,1,4, + 3,14,1,114,18,0,0,0,114,126,0,0,0,169,2,114, + 127,0,0,0,114,129,0,0,0,99,2,0,0,0,0,0, + 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,152, + 0,0,0,116,0,124,1,100,1,131,2,114,37,116,1,100, + 2,117,0,114,11,116,2,130,1,116,1,106,3,125,4,124, + 3,100,2,117,0,114,24,124,4,124,0,124,1,100,3,141, + 2,83,0,124,3,114,28,103,0,110,1,100,2,125,5,124, + 4,124,0,124,1,124,5,100,4,141,3,83,0,124,3,100, + 2,117,0,114,67,116,0,124,1,100,5,131,2,114,65,9, + 0,124,1,160,4,124,0,161,1,125,3,110,14,35,0,4, + 0,116,5,121,75,1,0,1,0,1,0,100,2,125,3,89, + 0,110,3,37,0,100,6,125,3,116,6,124,0,124,1,124, + 2,124,3,100,7,141,4,83,0,119,0,41,8,122,53,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,118,97,114, + 105,111,117,115,32,108,111,97,100,101,114,32,109,101,116,104, + 111,100,115,46,90,12,103,101,116,95,102,105,108,101,110,97, + 109,101,78,41,1,114,123,0,0,0,41,2,114,123,0,0, + 0,114,130,0,0,0,114,129,0,0,0,70,114,149,0,0, + 0,41,7,114,11,0,0,0,114,140,0,0,0,114,141,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,114,129,0,0,0, + 114,88,0,0,0,114,126,0,0,0,41,6,114,21,0,0, + 0,114,123,0,0,0,114,127,0,0,0,114,129,0,0,0, + 114,150,0,0,0,90,6,115,101,97,114,99,104,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,105,0,0, + 0,165,1,0,0,115,42,0,0,0,10,2,8,1,4,1, + 6,1,8,2,12,1,12,1,6,1,2,1,6,255,8,3, + 10,1,2,1,12,1,2,128,12,1,8,1,2,128,4,3, + 16,2,2,250,115,15,0,0,0,175,5,53,0,181,9,65, + 0,7,193,11,1,65,0,7,114,105,0,0,0,99,3,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,50,1,0,0,9,0,124,0,106,0,125,3,110, + 10,35,0,4,0,116,1,121,152,1,0,1,0,1,0,89, + 0,110,7,37,0,124,3,100,0,117,1,114,21,124,3,83, + 0,124,0,106,2,125,4,124,1,100,0,117,0,114,43,9, + 0,124,0,106,3,125,1,110,10,35,0,4,0,116,1,121, + 151,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, + 0,106,4,125,5,110,12,35,0,4,0,116,1,121,150,1, + 0,1,0,1,0,100,0,125,5,89,0,110,1,37,0,124, + 2,100,0,117,0,114,87,124,5,100,0,117,0,114,85,9, + 0,124,1,106,5,125,2,110,14,35,0,4,0,116,1,121, + 149,1,0,1,0,1,0,100,0,125,2,89,0,110,3,37, + 0,124,5,125,2,9,0,124,0,106,6,125,6,110,12,35, + 0,4,0,116,1,121,148,1,0,1,0,1,0,100,0,125, + 6,89,0,110,1,37,0,9,0,116,7,124,0,106,8,131, + 1,125,7,110,12,35,0,4,0,116,1,121,147,1,0,1, + 0,1,0,100,0,125,7,89,0,110,1,37,0,116,9,124, + 4,124,1,124,2,100,1,141,3,125,3,124,5,100,0,117, + 0,114,136,100,2,110,1,100,3,124,3,95,10,124,6,124, + 3,95,11,124,7,124,3,95,12,124,3,83,0,119,0,119, + 0,119,0,119,0,119,0,119,0,41,4,78,169,1,114,127, + 0,0,0,70,84,41,13,114,114,0,0,0,114,2,0,0, + 0,114,9,0,0,0,114,113,0,0,0,114,122,0,0,0, + 218,7,95,79,82,73,71,73,78,218,10,95,95,99,97,99, + 104,101,100,95,95,218,4,108,105,115,116,218,8,95,95,112, + 97,116,104,95,95,114,126,0,0,0,114,131,0,0,0,114, + 136,0,0,0,114,130,0,0,0,41,8,114,111,0,0,0, + 114,123,0,0,0,114,127,0,0,0,114,110,0,0,0,114, + 21,0,0,0,90,8,108,111,99,97,116,105,111,110,114,136, + 0,0,0,114,130,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,17,95,115,112,101,99,95,102, + 114,111,109,95,109,111,100,117,108,101,191,1,0,0,115,108, + 0,0,0,2,2,8,1,2,128,12,1,4,1,2,128,8, + 2,4,1,6,2,8,1,2,1,8,1,2,128,12,1,4, + 2,2,128,2,1,8,1,2,128,12,1,8,1,2,128,8, + 1,8,1,2,1,8,1,2,128,12,1,8,1,2,128,4, + 2,2,1,8,1,2,128,12,1,8,1,2,128,2,1,12, + 1,2,128,12,1,8,1,2,128,14,2,18,1,6,1,6, + 1,4,1,2,249,2,252,2,250,2,250,2,251,2,246,115, + 93,0,0,0,129,3,5,0,133,7,14,7,157,3,33,0, + 161,7,42,7,172,3,48,0,176,9,59,7,193,5,3,65, + 9,0,193,9,9,65,20,7,193,24,3,65,28,0,193,28, + 9,65,39,7,193,41,5,65,47,0,193,47,9,65,58,7, + 194,19,1,65,58,7,194,20,1,65,39,7,194,21,1,65, + 20,7,194,22,1,59,7,194,23,1,42,7,194,24,1,14, + 7,114,156,0,0,0,70,169,1,218,8,111,118,101,114,114, + 105,100,101,99,2,0,0,0,0,0,0,0,1,0,0,0, + 8,0,0,0,67,0,0,0,115,204,1,0,0,124,2,115, + 10,116,0,124,1,100,1,100,0,131,3,100,0,117,0,114, + 26,9,0,124,0,106,1,124,1,95,2,110,10,35,0,4, + 0,116,3,121,229,1,0,1,0,1,0,89,0,110,1,37, + 0,124,2,115,36,116,0,124,1,100,2,100,0,131,3,100, + 0,117,0,114,87,124,0,106,4,125,3,124,3,100,0,117, + 0,114,72,124,0,106,5,100,0,117,1,114,72,116,6,100, + 0,117,0,114,54,116,7,130,1,116,6,106,8,125,4,124, + 4,160,9,124,4,161,1,125,3,124,0,106,5,124,3,95, + 10,124,3,124,0,95,4,100,0,124,1,95,11,9,0,124, + 3,124,1,95,12,110,10,35,0,4,0,116,3,121,228,1, + 0,1,0,1,0,89,0,110,1,37,0,124,2,115,97,116, + 0,124,1,100,3,100,0,131,3,100,0,117,0,114,113,9, + 0,124,0,106,13,124,1,95,14,110,10,35,0,4,0,116, + 3,121,227,1,0,1,0,1,0,89,0,110,1,37,0,9, + 0,124,0,124,1,95,15,110,10,35,0,4,0,116,3,121, + 226,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, + 138,116,0,124,1,100,4,100,0,131,3,100,0,117,0,114, + 159,124,0,106,5,100,0,117,1,114,159,9,0,124,0,106, + 5,124,1,95,16,110,10,35,0,4,0,116,3,121,225,1, + 0,1,0,1,0,89,0,110,1,37,0,124,0,106,17,114, + 221,124,2,115,172,116,0,124,1,100,5,100,0,131,3,100, + 0,117,0,114,188,9,0,124,0,106,18,124,1,95,11,110, + 10,35,0,4,0,116,3,121,224,1,0,1,0,1,0,89, + 0,110,1,37,0,124,2,115,198,116,0,124,1,100,6,100, + 0,131,3,100,0,117,0,114,221,124,0,106,19,100,0,117, + 1,114,221,9,0,124,0,106,19,124,1,95,20,124,1,83, + 0,35,0,4,0,116,3,121,223,1,0,1,0,1,0,89, + 0,124,1,83,0,37,0,124,1,83,0,119,0,119,0,119, + 0,119,0,119,0,119,0,119,0,41,7,78,114,9,0,0, + 0,114,113,0,0,0,218,11,95,95,112,97,99,107,97,103, + 101,95,95,114,155,0,0,0,114,122,0,0,0,114,153,0, + 0,0,41,21,114,13,0,0,0,114,21,0,0,0,114,9, + 0,0,0,114,2,0,0,0,114,123,0,0,0,114,130,0, + 0,0,114,140,0,0,0,114,141,0,0,0,218,16,95,78, + 97,109,101,115,112,97,99,101,76,111,97,100,101,114,218,7, + 95,95,110,101,119,95,95,90,5,95,112,97,116,104,114,122, + 0,0,0,114,113,0,0,0,114,144,0,0,0,114,159,0, + 0,0,114,114,0,0,0,114,155,0,0,0,114,137,0,0, + 0,114,127,0,0,0,114,136,0,0,0,114,153,0,0,0, + 41,5,114,110,0,0,0,114,111,0,0,0,114,158,0,0, + 0,114,123,0,0,0,114,160,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,18,95,105,110,105, + 116,95,109,111,100,117,108,101,95,97,116,116,114,115,236,1, + 0,0,115,142,0,0,0,20,4,2,1,10,1,2,128,12, + 1,4,1,2,128,20,2,6,1,8,1,10,2,8,1,4, + 1,6,1,10,2,8,1,6,1,6,11,2,1,8,1,2, + 128,12,1,4,1,2,128,20,2,2,1,10,1,2,128,12, + 1,4,1,2,128,2,2,8,1,2,128,12,1,4,1,2, + 128,20,2,10,1,2,1,10,1,2,128,12,1,4,1,2, + 128,6,2,20,1,2,1,10,1,2,128,12,1,4,1,2, + 128,20,2,10,1,2,1,8,1,4,3,2,128,12,254,2, + 1,4,1,2,128,4,0,2,254,2,249,2,249,2,249,2, + 251,2,250,2,228,115,121,0,0,0,139,4,16,0,144,7, + 25,7,193,9,3,65,13,0,193,13,7,65,22,7,193,34, + 4,65,39,0,193,39,7,65,48,7,193,50,3,65,54,0, + 193,54,7,65,63,7,194,16,4,66,21,0,194,21,7,66, + 30,7,194,45,4,66,50,0,194,50,7,66,59,7,195,12, + 4,67,18,0,195,18,7,67,28,7,195,31,1,67,28,7, + 195,32,1,66,59,7,195,33,1,66,30,7,195,34,1,65, + 63,7,195,35,1,65,48,7,195,36,1,65,22,7,195,37, + 1,25,7,114,162,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,67,0,0,0,115,82,0, + 0,0,100,1,125,1,116,0,124,0,106,1,100,2,131,2, + 114,15,124,0,106,1,160,2,124,0,161,1,125,1,110,10, + 116,0,124,0,106,1,100,3,131,2,114,25,116,3,100,4, + 131,1,130,1,124,1,100,1,117,0,114,34,116,4,124,0, + 106,5,131,1,125,1,116,6,124,0,124,1,131,2,1,0, + 124,1,83,0,41,5,122,43,67,114,101,97,116,101,32,97, + 32,109,111,100,117,108,101,32,98,97,115,101,100,32,111,110, + 32,116,104,101,32,112,114,111,118,105,100,101,100,32,115,112, + 101,99,46,78,218,13,99,114,101,97,116,101,95,109,111,100, + 117,108,101,218,11,101,120,101,99,95,109,111,100,117,108,101, + 122,66,108,111,97,100,101,114,115,32,116,104,97,116,32,100, + 101,102,105,110,101,32,101,120,101,99,95,109,111,100,117,108, + 101,40,41,32,109,117,115,116,32,97,108,115,111,32,100,101, + 102,105,110,101,32,99,114,101,97,116,101,95,109,111,100,117, + 108,101,40,41,41,7,114,11,0,0,0,114,123,0,0,0, + 114,163,0,0,0,114,88,0,0,0,114,22,0,0,0,114, + 21,0,0,0,114,162,0,0,0,169,2,114,110,0,0,0, + 114,111,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,16,109,111,100,117,108,101,95,102,114,111, + 109,95,115,112,101,99,52,2,0,0,115,18,0,0,0,4, + 3,12,1,14,3,12,1,8,1,8,2,10,1,10,1,4, + 1,114,18,0,0,0,114,166,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,100,0,0,0,124,0,106,0,100,1,117,0,114,7,100, + 2,110,2,124,0,106,0,125,1,124,0,106,1,100,1,117, + 0,114,32,124,0,106,2,100,1,117,0,114,25,100,3,160, + 3,124,1,161,1,83,0,100,4,160,3,124,1,124,0,106, + 2,161,2,83,0,124,0,106,4,114,42,100,5,160,3,124, + 1,124,0,106,1,161,2,83,0,100,6,160,3,124,0,106, + 0,124,0,106,1,161,2,83,0,41,7,122,38,82,101,116, + 117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32, + 117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117, + 108,101,46,78,114,116,0,0,0,114,117,0,0,0,114,118, + 0,0,0,114,119,0,0,0,250,18,60,109,111,100,117,108, + 101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,21, + 0,0,0,114,127,0,0,0,114,123,0,0,0,114,51,0, + 0,0,114,137,0,0,0,41,2,114,110,0,0,0,114,21, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,120,0,0,0,69,2,0,0,115,16,0,0,0, + 20,3,10,1,10,1,10,1,14,2,6,2,14,1,16,2, + 114,18,0,0,0,114,120,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,10,0,0,0,67,0,0,0,115, + 32,1,0,0,124,0,106,0,125,2,116,1,124,2,131,1, + 53,0,1,0,116,2,106,3,160,4,124,2,161,1,124,1, + 117,1,114,27,100,1,160,5,124,2,161,1,125,3,116,6, + 124,3,124,2,100,2,141,2,130,1,9,0,124,0,106,7, + 100,3,117,0,114,53,124,0,106,8,100,3,117,0,114,45, + 116,6,100,4,124,0,106,0,100,2,141,2,130,1,116,9, + 124,0,124,1,100,5,100,6,141,3,1,0,110,40,116,9, + 124,0,124,1,100,5,100,6,141,3,1,0,116,10,124,0, + 106,7,100,7,131,2,115,87,116,11,124,0,106,7,131,1, + 155,0,100,8,157,2,125,3,116,12,160,13,124,3,116,14, + 161,2,1,0,124,0,106,7,160,15,124,2,161,1,1,0, + 110,6,124,0,106,7,160,16,124,1,161,1,1,0,116,2, + 106,3,160,17,124,0,106,0,161,1,125,1,124,1,116,2, + 106,3,124,0,106,0,60,0,110,16,35,0,116,2,106,3, + 160,17,124,0,106,0,161,1,125,1,124,1,116,2,106,3, + 124,0,106,0,60,0,119,0,37,0,9,0,100,3,4,0, + 4,0,131,3,1,0,124,1,83,0,35,0,49,0,115,136, + 119,4,37,0,1,0,1,0,1,0,89,0,1,0,1,0, + 124,1,83,0,41,9,122,70,69,120,101,99,117,116,101,32, + 116,104,101,32,115,112,101,99,39,115,32,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,32,105,110,32,97, + 110,32,101,120,105,115,116,105,110,103,32,109,111,100,117,108, + 101,39,115,32,110,97,109,101,115,112,97,99,101,46,122,30, + 109,111,100,117,108,101,32,123,33,114,125,32,110,111,116,32, + 105,110,32,115,121,115,46,109,111,100,117,108,101,115,114,20, + 0,0,0,78,250,14,109,105,115,115,105,110,103,32,108,111, + 97,100,101,114,84,114,157,0,0,0,114,164,0,0,0,250, + 55,46,101,120,101,99,95,109,111,100,117,108,101,40,41,32, + 110,111,116,32,102,111,117,110,100,59,32,102,97,108,108,105, + 110,103,32,98,97,99,107,32,116,111,32,108,111,97,100,95, + 109,111,100,117,108,101,40,41,41,18,114,21,0,0,0,114, + 58,0,0,0,114,19,0,0,0,114,106,0,0,0,114,39, + 0,0,0,114,51,0,0,0,114,88,0,0,0,114,123,0, + 0,0,114,130,0,0,0,114,162,0,0,0,114,11,0,0, + 0,114,7,0,0,0,114,102,0,0,0,114,103,0,0,0, + 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,218, + 11,108,111,97,100,95,109,111,100,117,108,101,114,164,0,0, + 0,218,3,112,111,112,41,4,114,110,0,0,0,114,111,0, + 0,0,114,21,0,0,0,114,109,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,107,0,0,0, + 86,2,0,0,115,50,0,0,0,6,2,10,1,16,1,10, + 1,12,1,2,1,10,1,10,1,14,1,16,2,14,2,12, + 1,16,1,12,2,14,1,12,2,14,4,14,1,2,128,14, + 255,18,1,10,233,4,24,22,128,4,0,115,41,0,0,0, + 135,20,66,3,3,156,65,1,65,43,2,193,29,14,66,3, + 3,193,43,15,65,58,9,193,58,1,66,3,3,194,3,4, + 66,7,11,194,8,3,66,7,11,114,107,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,22,1,0,0,9,0,124,0,106,0,160,1, + 124,0,106,2,161,1,1,0,110,25,35,0,1,0,1,0, + 1,0,124,0,106,2,116,3,106,4,118,0,114,32,116,3, + 106,4,160,5,124,0,106,2,161,1,125,1,124,1,116,3, + 106,4,124,0,106,2,60,0,130,0,37,0,116,3,106,4, + 160,5,124,0,106,2,161,1,125,1,124,1,116,3,106,4, + 124,0,106,2,60,0,116,6,124,1,100,1,100,0,131,3, + 100,0,117,0,114,71,9,0,124,0,106,0,124,1,95,7, + 110,10,35,0,4,0,116,8,121,138,1,0,1,0,1,0, + 89,0,110,1,37,0,116,6,124,1,100,2,100,0,131,3, + 100,0,117,0,114,109,9,0,124,1,106,9,124,1,95,10, + 116,11,124,1,100,3,131,2,115,98,124,0,106,2,160,12, + 100,4,161,1,100,5,25,0,124,1,95,10,110,10,35,0, + 4,0,116,8,121,137,1,0,1,0,1,0,89,0,110,1, + 37,0,116,6,124,1,100,6,100,0,131,3,100,0,117,0, + 114,134,9,0,124,0,124,1,95,13,124,1,83,0,35,0, + 4,0,116,8,121,136,1,0,1,0,1,0,89,0,124,1, + 83,0,37,0,124,1,83,0,119,0,119,0,119,0,41,7, + 78,114,113,0,0,0,114,159,0,0,0,114,155,0,0,0, + 114,142,0,0,0,114,26,0,0,0,114,114,0,0,0,41, + 14,114,123,0,0,0,114,171,0,0,0,114,21,0,0,0, + 114,19,0,0,0,114,106,0,0,0,114,172,0,0,0,114, + 13,0,0,0,114,113,0,0,0,114,2,0,0,0,114,9, + 0,0,0,114,159,0,0,0,114,11,0,0,0,114,143,0, + 0,0,114,114,0,0,0,114,165,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,25,95,108,111, + 97,100,95,98,97,99,107,119,97,114,100,95,99,111,109,112, + 97,116,105,98,108,101,116,2,0,0,115,80,0,0,0,2, + 3,16,1,2,128,6,1,12,1,14,1,12,1,2,1,2, + 128,14,3,12,1,16,1,2,1,10,1,2,128,12,1,4, + 1,2,128,16,1,2,1,8,4,10,1,18,1,4,128,12, + 1,4,1,2,128,16,1,2,1,6,1,4,3,2,128,12, + 254,2,1,4,1,2,128,4,0,2,254,2,251,2,246,115, + 59,0,0,0,129,7,9,0,137,24,33,7,184,4,61,0, + 189,7,65,6,7,193,16,18,65,35,0,193,35,7,65,44, + 7,193,54,3,65,59,0,193,59,7,66,5,7,194,8,1, + 66,5,7,194,9,1,65,44,7,194,10,1,65,6,7,114, + 173,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,11,0,0,0,67,0,0,0,115,248,0,0,0,124,0, + 106,0,100,0,117,1,114,29,116,1,124,0,106,0,100,1, + 131,2,115,29,116,2,124,0,106,0,131,1,155,0,100,2, + 157,2,125,1,116,3,160,4,124,1,116,5,161,2,1,0, + 116,6,124,0,131,1,83,0,116,7,124,0,131,1,125,2, + 100,3,124,0,95,8,9,0,124,2,116,9,106,10,124,0, + 106,11,60,0,9,0,124,0,106,0,100,0,117,0,114,62, + 124,0,106,12,100,0,117,0,114,61,116,13,100,4,124,0, + 106,11,100,5,141,2,130,1,110,6,124,0,106,0,160,14, + 124,2,161,1,1,0,110,22,35,0,1,0,1,0,1,0, + 9,0,116,9,106,10,124,0,106,11,61,0,130,0,35,0, + 4,0,116,15,121,123,1,0,1,0,1,0,89,0,130,0, + 37,0,37,0,116,9,106,10,160,16,124,0,106,11,161,1, + 125,2,124,2,116,9,106,10,124,0,106,11,60,0,116,17, + 100,6,124,0,106,11,124,0,106,0,131,3,1,0,100,7, + 124,0,95,8,124,2,83,0,35,0,100,7,124,0,95,8, + 119,0,37,0,119,0,41,8,78,114,164,0,0,0,114,169, + 0,0,0,84,114,168,0,0,0,114,20,0,0,0,122,18, + 105,109,112,111,114,116,32,123,33,114,125,32,35,32,123,33, + 114,125,70,41,18,114,123,0,0,0,114,11,0,0,0,114, + 7,0,0,0,114,102,0,0,0,114,103,0,0,0,114,170, + 0,0,0,114,173,0,0,0,114,166,0,0,0,90,13,95, + 105,110,105,116,105,97,108,105,122,105,110,103,114,19,0,0, + 0,114,106,0,0,0,114,21,0,0,0,114,130,0,0,0, + 114,88,0,0,0,114,164,0,0,0,114,71,0,0,0,114, + 172,0,0,0,114,84,0,0,0,41,3,114,110,0,0,0, + 114,109,0,0,0,114,111,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,14,95,108,111,97,100, + 95,117,110,108,111,99,107,101,100,152,2,0,0,115,66,0, + 0,0,10,2,12,2,16,1,12,2,8,1,8,2,6,5, + 2,1,12,1,2,1,10,1,10,1,14,1,2,255,12,4, + 4,128,6,1,2,1,10,1,2,3,2,128,12,254,2,1, + 2,1,4,128,14,5,12,1,16,1,6,2,4,2,2,128, + 10,254,2,245,115,64,0,0,0,165,6,65,53,0,172,24, + 65,5,0,193,4,1,65,53,0,193,5,4,65,26,7,193, + 10,5,65,16,6,193,15,1,65,26,7,193,16,7,65,25, + 13,193,23,3,65,26,7,193,26,22,65,53,0,193,53,5, + 65,58,7,193,59,1,65,25,13,114,174,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, + 0,0,0,115,58,0,0,0,116,0,124,0,106,1,131,1, + 53,0,1,0,116,2,124,0,131,1,2,0,100,1,4,0, + 4,0,131,3,1,0,83,0,35,0,49,0,115,21,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,100,1, + 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, + 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, + 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, + 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, + 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, + 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, + 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, + 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, + 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, + 100,117,108,101,115,44,32,116,104,97,116,32,101,120,105,115, + 116,105,110,103,32,109,111,100,117,108,101,32,103,101,116,115, + 10,32,32,32,32,99,108,111,98,98,101,114,101,100,46,10, + 10,32,32,32,32,78,41,3,114,58,0,0,0,114,21,0, + 0,0,114,174,0,0,0,169,1,114,110,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,108,0, + 0,0,197,2,0,0,115,10,0,0,0,12,9,6,1,14, + 255,22,128,4,0,115,12,0,0,0,133,4,16,3,144,4, + 20,11,149,3,20,11,114,108,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,0, + 115,140,0,0,0,101,0,90,1,100,0,90,2,100,1,90, + 3,100,2,90,4,101,5,100,3,100,4,132,0,131,1,90, + 6,101,7,100,20,100,6,100,7,132,1,131,1,90,8,101, + 7,100,21,100,8,100,9,132,1,131,1,90,9,101,5,100, + 10,100,11,132,0,131,1,90,10,101,5,100,12,100,13,132, + 0,131,1,90,11,101,7,101,12,100,14,100,15,132,0,131, + 1,131,1,90,13,101,7,101,12,100,16,100,17,132,0,131, + 1,131,1,90,14,101,7,101,12,100,18,100,19,132,0,131, + 1,131,1,90,15,101,7,101,16,131,1,90,17,100,5,83, + 0,41,22,218,15,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,122,144,77,101,116,97,32,112,97,116,104,32, + 105,109,112,111,114,116,32,102,111,114,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,115,46,10,10,32,32, + 32,32,65,108,108,32,109,101,116,104,111,100,115,32,97,114, + 101,32,101,105,116,104,101,114,32,99,108,97,115,115,32,111, + 114,32,115,116,97,116,105,99,32,109,101,116,104,111,100,115, + 32,116,111,32,97,118,111,105,100,32,116,104,101,32,110,101, + 101,100,32,116,111,10,32,32,32,32,105,110,115,116,97,110, + 116,105,97,116,101,32,116,104,101,32,99,108,97,115,115,46, + 10,10,32,32,32,32,122,8,98,117,105,108,116,45,105,110, + 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,67,0,0,0,115,34,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,100,2,124,0,106,3,155,2,100,3, + 116,4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,122,8,60,109,111,100,117,108,101,32, + 122,2,32,40,122,2,41,62,78,41,6,114,102,0,0,0, + 114,103,0,0,0,114,104,0,0,0,114,9,0,0,0,114, + 176,0,0,0,114,152,0,0,0,169,1,114,111,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 115,0,0,0,223,2,0,0,115,8,0,0,0,6,7,2, + 1,4,255,22,2,114,18,0,0,0,122,27,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,46,109,111,100,117, + 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,42,0, + 0,0,124,2,100,0,117,1,114,6,100,0,83,0,116,0, + 160,1,124,1,161,1,114,19,116,2,124,1,124,0,124,0, + 106,3,100,1,141,3,83,0,100,0,83,0,169,2,78,114, + 151,0,0,0,41,4,114,65,0,0,0,90,10,105,115,95, + 98,117,105,108,116,105,110,114,105,0,0,0,114,152,0,0, + 0,169,4,218,3,99,108,115,114,90,0,0,0,218,4,112, + 97,116,104,218,6,116,97,114,103,101,116,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,9,102,105,110,100, 95,115,112,101,99,234,2,0,0,115,10,0,0,0,8,2, - 4,1,10,1,16,1,4,2,114,17,0,0,0,122,25,66, + 4,1,10,1,16,1,4,2,114,18,0,0,0,122,25,66, 117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115,42,0, @@ -1173,173 +1196,179 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,101, - 0,0,0,114,102,0,0,0,114,103,0,0,0,114,183,0, - 0,0,114,122,0,0,0,41,4,114,180,0,0,0,114,90, - 0,0,0,114,181,0,0,0,114,109,0,0,0,32,32,32, - 32,114,5,0,0,0,218,11,102,105,110,100,95,109,111,100, - 117,108,101,243,2,0,0,115,10,0,0,0,6,9,2,2, - 4,254,12,3,18,1,114,17,0,0,0,122,27,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,46,0, - 0,0,124,0,106,0,116,1,106,2,118,1,114,17,116,3, - 100,1,160,4,124,0,106,0,161,1,124,0,106,0,100,2, - 141,2,130,1,116,5,116,6,106,7,124,0,131,2,83,0, - 41,4,122,24,67,114,101,97,116,101,32,97,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,114,86,0,0, - 0,114,19,0,0,0,78,41,8,114,20,0,0,0,114,18, - 0,0,0,114,87,0,0,0,114,88,0,0,0,114,51,0, - 0,0,114,75,0,0,0,114,65,0,0,0,90,14,99,114, - 101,97,116,101,95,98,117,105,108,116,105,110,114,174,0,0, - 0,32,114,5,0,0,0,114,162,0,0,0,2,3,0,0, - 115,10,0,0,0,12,3,12,1,4,1,6,255,12,2,114, - 17,0,0,0,122,29,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,99,114,101,97,116,101,95,109,111,100, - 117,108,101,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,116, - 1,106,2,124,0,131,2,1,0,100,1,83,0,41,2,122, - 22,69,120,101,99,32,97,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,78,41,3,114,75,0,0,0,114, - 65,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, - 105,110,114,177,0,0,0,32,114,5,0,0,0,114,163,0, - 0,0,10,3,0,0,115,2,0,0,0,16,3,114,17,0, - 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, - 116,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,1,0,0,0, - 67,0,0,0,243,4,0,0,0,100,1,83,0,41,2,122, - 57,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 32,100,111,32,110,111,116,32,104,97,118,101,32,99,111,100, - 101,32,111,98,106,101,99,116,115,46,78,114,23,0,0,0, - 169,2,114,180,0,0,0,114,90,0,0,0,32,32,114,5, + 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,102, + 0,0,0,114,103,0,0,0,114,104,0,0,0,114,184,0, + 0,0,114,123,0,0,0,41,4,114,181,0,0,0,114,90, + 0,0,0,114,182,0,0,0,114,110,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,11,102,105, + 110,100,95,109,111,100,117,108,101,243,2,0,0,115,10,0, + 0,0,6,9,2,2,4,254,12,3,18,1,114,18,0,0, + 0,122,27,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,46,0,0,0,124,0,106,0,116,1,106,2, + 118,1,114,17,116,3,100,1,160,4,124,0,106,0,161,1, + 124,0,106,0,100,2,141,2,130,1,116,5,116,6,106,7, + 124,0,131,2,83,0,41,4,122,24,67,114,101,97,116,101, + 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,114,86,0,0,0,114,20,0,0,0,78,41,8,114, + 21,0,0,0,114,19,0,0,0,114,87,0,0,0,114,88, + 0,0,0,114,51,0,0,0,114,75,0,0,0,114,65,0, + 0,0,90,14,99,114,101,97,116,101,95,98,117,105,108,116, + 105,110,114,175,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,163,0,0,0,2,3,0,0,115, + 10,0,0,0,12,3,12,1,4,1,6,255,12,2,114,18, + 0,0,0,122,29,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,99,114,101,97,116,101,95,109,111,100,117, + 108,101,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,115,16,0,0,0,116,0,116,1, + 106,2,124,0,131,2,1,0,100,1,83,0,41,2,122,22, + 69,120,101,99,32,97,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,78,41,3,114,75,0,0,0,114,65, + 0,0,0,90,12,101,120,101,99,95,98,117,105,108,116,105, + 110,114,178,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,164,0,0,0,10,3,0,0,115,2, + 0,0,0,16,3,114,18,0,0,0,122,27,66,117,105,108, + 116,105,110,73,109,112,111,114,116,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,1,0,0,0,67,0,0,0,243,4,0,0, + 0,100,1,83,0,41,2,122,57,82,101,116,117,114,110,32, + 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, + 104,97,118,101,32,99,111,100,101,32,111,98,106,101,99,116, + 115,46,78,114,5,0,0,0,169,2,114,181,0,0,0,114, + 90,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, 0,0,0,218,8,103,101,116,95,99,111,100,101,15,3,0, - 0,243,2,0,0,0,4,4,114,17,0,0,0,122,24,66, + 0,243,2,0,0,0,4,4,114,18,0,0,0,122,24,66, 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,67,0,0,0,114,185,0,0, + 0,0,0,0,1,0,0,0,67,0,0,0,114,186,0,0, 0,41,2,122,56,82,101,116,117,114,110,32,78,111,110,101, 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, - 0,0,0,114,186,0,0,0,32,32,114,5,0,0,0,218, - 10,103,101,116,95,115,111,117,114,99,101,21,3,0,0,114, - 188,0,0,0,114,17,0,0,0,122,26,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, - 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, - 3,122,52,82,101,116,117,114,110,32,70,97,108,115,101,32, - 97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, - 99,107,97,103,101,115,46,70,78,114,23,0,0,0,114,186, - 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,27, - 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, + 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,5, + 0,0,0,114,187,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,10,103,101,116,95,115,111,117, + 114,99,101,21,3,0,0,114,189,0,0,0,114,18,0,0, + 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,67,0, + 0,0,114,186,0,0,0,41,3,122,52,82,101,116,117,114, + 110,32,70,97,108,115,101,32,97,115,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,115,32,97,114,101,32, + 110,101,118,101,114,32,112,97,99,107,97,103,101,115,46,70, + 78,114,5,0,0,0,114,187,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,129,0,0,0,27, + 3,0,0,114,189,0,0,0,114,18,0,0,0,122,26,66, 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, - 0,0,41,18,114,8,0,0,0,114,7,0,0,0,114,1, - 0,0,0,114,9,0,0,0,114,151,0,0,0,218,12,115, - 116,97,116,105,99,109,101,116,104,111,100,114,114,0,0,0, - 218,11,99,108,97,115,115,109,101,116,104,111,100,114,183,0, - 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, - 0,114,95,0,0,0,114,187,0,0,0,114,189,0,0,0, - 114,128,0,0,0,114,111,0,0,0,114,170,0,0,0,114, - 23,0,0,0,114,5,0,0,0,114,175,0,0,0,212,2, - 0,0,115,46,0,0,0,8,0,4,2,4,7,2,2,10, - 1,2,10,12,1,2,8,12,1,2,14,10,1,2,7,10, - 1,2,4,2,1,12,1,2,4,2,1,12,1,2,4,2, - 1,12,1,12,4,114,17,0,0,0,114,175,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 64,0,0,0,115,144,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,90,4,101,5,100,3,100,4,132, - 0,131,1,90,6,101,7,100,22,100,6,100,7,132,1,131, - 1,90,8,101,7,100,23,100,8,100,9,132,1,131,1,90, - 9,101,5,100,10,100,11,132,0,131,1,90,10,101,5,100, - 12,100,13,132,0,131,1,90,11,101,7,100,14,100,15,132, - 0,131,1,90,12,101,7,101,13,100,16,100,17,132,0,131, - 1,131,1,90,14,101,7,101,13,100,18,100,19,132,0,131, - 1,131,1,90,15,101,7,101,13,100,20,100,21,132,0,131, - 1,131,1,90,16,100,5,83,0,41,24,218,14,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116, - 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, - 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, - 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, - 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, - 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, - 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, - 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, - 108,97,115,115,46,10,10,32,32,32,32,90,6,102,114,111, - 122,101,110,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,28,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, - 4,116,5,106,6,161,2,83,0,41,4,114,176,0,0,0, - 122,80,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,109,111,100,117,108,101,95,114,101,112,114,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,114,166,0,0,0,78,41,7,114,101,0,0,0,114, - 102,0,0,0,114,103,0,0,0,114,51,0,0,0,114,8, - 0,0,0,114,193,0,0,0,114,151,0,0,0,41,1,218, - 1,109,32,114,5,0,0,0,114,114,0,0,0,47,3,0, - 0,115,8,0,0,0,6,7,2,1,4,255,16,2,114,17, - 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,78, - 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,30,0,0,0,116,0,160,1,124,1, - 161,1,114,13,116,2,124,1,124,0,124,0,106,3,100,1, - 141,3,83,0,100,0,83,0,114,178,0,0,0,41,4,114, - 65,0,0,0,114,98,0,0,0,114,104,0,0,0,114,151, - 0,0,0,114,179,0,0,0,32,32,32,32,114,5,0,0, - 0,114,183,0,0,0,58,3,0,0,115,6,0,0,0,10, - 2,16,1,4,2,114,17,0,0,0,122,24,70,114,111,122, - 101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0, - 160,1,100,1,116,2,161,2,1,0,116,3,160,4,124,1, - 161,1,114,13,124,0,83,0,100,2,83,0,41,3,122,93, - 70,105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,41,5,114,101,0,0,0, - 114,102,0,0,0,114,103,0,0,0,114,65,0,0,0,114, - 98,0,0,0,41,3,114,180,0,0,0,114,90,0,0,0, - 114,181,0,0,0,32,32,32,114,5,0,0,0,114,184,0, + 0,0,41,18,114,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,152,0,0,0,218,12,115, + 116,97,116,105,99,109,101,116,104,111,100,114,115,0,0,0, + 218,11,99,108,97,115,115,109,101,116,104,111,100,114,184,0, + 0,0,114,185,0,0,0,114,163,0,0,0,114,164,0,0, + 0,114,96,0,0,0,114,188,0,0,0,114,190,0,0,0, + 114,129,0,0,0,114,112,0,0,0,114,171,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,176,0,0,0,212,2,0,0,115,46,0,0, + 0,8,0,4,2,4,7,2,2,10,1,2,10,12,1,2, + 8,12,1,2,14,10,1,2,7,10,1,2,4,2,1,12, + 1,2,4,2,1,12,1,2,4,2,1,12,1,12,4,114, + 18,0,0,0,114,176,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,144, + 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, + 2,90,4,101,5,100,3,100,4,132,0,131,1,90,6,101, + 7,100,22,100,6,100,7,132,1,131,1,90,8,101,7,100, + 23,100,8,100,9,132,1,131,1,90,9,101,5,100,10,100, + 11,132,0,131,1,90,10,101,5,100,12,100,13,132,0,131, + 1,90,11,101,7,100,14,100,15,132,0,131,1,90,12,101, + 7,101,13,100,16,100,17,132,0,131,1,131,1,90,14,101, + 7,101,13,100,18,100,19,132,0,131,1,131,1,90,15,101, + 7,101,13,100,20,100,21,132,0,131,1,131,1,90,16,100, + 5,83,0,41,24,218,14,70,114,111,122,101,110,73,109,112, + 111,114,116,101,114,122,142,77,101,116,97,32,112,97,116,104, + 32,105,109,112,111,114,116,32,102,111,114,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,90,6,102,114,111,122,101,110,99,1,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,115,28,0,0,0,116,0,160,1,100,1,116,2,161, + 2,1,0,100,2,160,3,124,0,106,4,116,5,106,6,161, + 2,83,0,41,4,114,177,0,0,0,122,80,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108, + 101,95,114,101,112,114,40,41,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, + 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, + 32,80,121,116,104,111,110,32,51,46,49,50,114,167,0,0, + 0,78,41,7,114,102,0,0,0,114,103,0,0,0,114,104, + 0,0,0,114,51,0,0,0,114,9,0,0,0,114,194,0, + 0,0,114,152,0,0,0,41,1,218,1,109,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,115,0,0,0, + 47,3,0,0,115,8,0,0,0,6,7,2,1,4,255,16, + 2,114,18,0,0,0,122,26,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,109,111,100,117,108,101,95,114,101, + 112,114,78,99,4,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,67,0,0,0,115,30,0,0,0,116,0,160, + 1,124,1,161,1,114,13,116,2,124,1,124,0,124,0,106, + 3,100,1,141,3,83,0,100,0,83,0,114,179,0,0,0, + 41,4,114,65,0,0,0,114,99,0,0,0,114,105,0,0, + 0,114,152,0,0,0,114,180,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,184,0,0,0,58, + 3,0,0,115,6,0,0,0,10,2,16,1,4,2,114,18, + 0,0,0,122,24,70,114,111,122,101,110,73,109,112,111,114, + 116,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,67,0, + 0,0,115,30,0,0,0,116,0,160,1,100,1,116,2,161, + 2,1,0,116,3,160,4,124,1,161,1,114,13,124,0,83, + 0,100,2,83,0,41,3,122,93,70,105,110,100,32,97,32, + 102,114,111,122,101,110,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,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,122,105,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, + 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, + 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, + 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, + 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, + 100,78,41,5,114,102,0,0,0,114,103,0,0,0,114,104, + 0,0,0,114,65,0,0,0,114,99,0,0,0,41,3,114, + 181,0,0,0,114,90,0,0,0,114,182,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,185,0, 0,0,65,3,0,0,115,8,0,0,0,6,7,2,2,4, - 254,18,3,114,17,0,0,0,122,26,70,114,111,122,101,110, + 254,18,3,114,18,0,0,0,122,26,70,114,111,122,101,110, 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,67,0,0,0,114,185,0,0,0,41,2, + 0,1,0,0,0,67,0,0,0,114,186,0,0,0,41,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,23,0, - 0,0,114,174,0,0,0,32,114,5,0,0,0,114,162,0, - 0,0,77,3,0,0,115,2,0,0,0,4,0,114,17,0, - 0,0,122,28,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,99,114,101,97,116,101,95,109,111,100,117,108,101, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, - 125,1,116,2,160,3,124,1,161,1,115,18,116,4,100,1, - 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, - 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, - 106,9,131,2,1,0,100,0,83,0,114,97,0,0,0,41, - 10,114,113,0,0,0,114,20,0,0,0,114,65,0,0,0, - 114,98,0,0,0,114,88,0,0,0,114,51,0,0,0,114, - 75,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, - 95,111,98,106,101,99,116,218,4,101,120,101,99,114,13,0, - 0,0,41,3,114,110,0,0,0,114,20,0,0,0,218,4, - 99,111,100,101,32,32,32,114,5,0,0,0,114,163,0,0, + 108,101,32,99,114,101,97,116,105,111,110,46,78,114,5,0, + 0,0,114,175,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,163,0,0,0,77,3,0,0,115, + 2,0,0,0,4,0,114,18,0,0,0,122,28,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,99,114,101,97, + 116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,64, + 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, + 1,161,1,115,18,116,4,100,1,160,5,124,1,161,1,124, + 1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131, + 2,125,2,116,8,124,2,124,0,106,9,131,2,1,0,100, + 0,83,0,114,98,0,0,0,41,10,114,114,0,0,0,114, + 21,0,0,0,114,65,0,0,0,114,99,0,0,0,114,88, + 0,0,0,114,51,0,0,0,114,75,0,0,0,218,17,103, + 101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116, + 218,4,101,120,101,99,114,14,0,0,0,41,3,114,111,0, + 0,0,114,21,0,0,0,218,4,99,111,100,101,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,164,0,0, 0,81,3,0,0,115,14,0,0,0,8,2,10,1,10,1, - 2,1,6,255,12,2,16,1,114,17,0,0,0,122,26,70, + 2,1,6,255,12,2,16,1,114,18,0,0,0,122,26,70, 114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10, @@ -1350,560 +1379,569 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 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,41,1,114,111,0,0,0,114,186,0,0,0,32,32,114, - 5,0,0,0,114,170,0,0,0,90,3,0,0,115,2,0, - 0,0,10,8,114,17,0,0,0,122,26,70,114,111,122,101, - 110,73,109,112,111,114,116,101,114,46,108,111,97,100,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,243,10,0,0,0,116, - 0,160,1,124,1,161,1,83,0,41,2,122,45,82,101,116, - 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, - 101,99,116,32,102,111,114,32,116,104,101,32,102,114,111,122, - 101,110,32,109,111,100,117,108,101,46,78,41,2,114,65,0, - 0,0,114,195,0,0,0,114,186,0,0,0,32,32,114,5, - 0,0,0,114,187,0,0,0,100,3,0,0,243,2,0,0, - 0,10,4,114,17,0,0,0,122,23,70,114,111,122,101,110, + 78,41,1,114,112,0,0,0,114,187,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,171,0,0, + 0,90,3,0,0,115,2,0,0,0,10,8,114,18,0,0, + 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,243,10,0,0,0,116,0,160,1,124,1,161,1,83, + 0,41,2,122,45,82,101,116,117,114,110,32,116,104,101,32, + 99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32, + 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108, + 101,46,78,41,2,114,65,0,0,0,114,196,0,0,0,114, + 187,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,188,0,0,0,100,3,0,0,243,2,0,0, + 0,10,4,114,18,0,0,0,122,23,70,114,111,122,101,110, 73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, 101,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,67,0,0,0,114,185,0,0,0,41,2,122,54,82, + 0,0,67,0,0,0,114,186,0,0,0,41,2,122,54,82, 101,116,117,114,110,32,78,111,110,101,32,97,115,32,102,114, 111,122,101,110,32,109,111,100,117,108,101,115,32,100,111,32, 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, - 99,111,100,101,46,78,114,23,0,0,0,114,186,0,0,0, - 32,32,114,5,0,0,0,114,189,0,0,0,106,3,0,0, - 114,188,0,0,0,114,17,0,0,0,122,25,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, - 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,114,198,0,0,0,41, - 2,122,46,82,101,116,117,114,110,32,84,114,117,101,32,105, - 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, - 46,78,41,2,114,65,0,0,0,90,17,105,115,95,102,114, - 111,122,101,110,95,112,97,99,107,97,103,101,114,186,0,0, - 0,32,32,114,5,0,0,0,114,128,0,0,0,112,3,0, - 0,114,199,0,0,0,114,17,0,0,0,122,25,70,114,111, + 99,111,100,101,46,78,114,5,0,0,0,114,187,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 190,0,0,0,106,3,0,0,114,189,0,0,0,114,18,0, + 0,0,122,25,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,114,199,0,0,0,41,2,122,46,82,101,116,117,114, + 110,32,84,114,117,101,32,105,102,32,116,104,101,32,102,114, + 111,122,101,110,32,109,111,100,117,108,101,32,105,115,32,97, + 32,112,97,99,107,97,103,101,46,78,41,2,114,65,0,0, + 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, + 107,97,103,101,114,187,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,129,0,0,0,112,3,0, + 0,114,200,0,0,0,114,18,0,0,0,122,25,70,114,111, 122,101,110,73,109,112,111,114,116,101,114,46,105,115,95,112, - 97,99,107,97,103,101,114,190,0,0,0,114,0,0,0,0, - 41,17,114,8,0,0,0,114,7,0,0,0,114,1,0,0, - 0,114,9,0,0,0,114,151,0,0,0,114,191,0,0,0, - 114,114,0,0,0,114,192,0,0,0,114,183,0,0,0,114, - 184,0,0,0,114,162,0,0,0,114,163,0,0,0,114,170, - 0,0,0,114,100,0,0,0,114,187,0,0,0,114,189,0, - 0,0,114,128,0,0,0,114,23,0,0,0,114,5,0,0, - 0,114,193,0,0,0,36,3,0,0,115,48,0,0,0,8, - 0,4,2,4,7,2,2,10,1,2,10,12,1,2,6,12, - 1,2,11,10,1,2,3,10,1,2,8,10,1,2,9,2, - 1,12,1,2,4,2,1,12,1,2,4,2,1,16,1,114, - 17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111,114,116,76,111, - 99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,101, - 120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,116, - 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, - 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, - 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, - 46,78,41,2,114,65,0,0,0,114,66,0,0,0,114,53, - 0,0,0,32,114,5,0,0,0,114,62,0,0,0,125,3, - 0,0,243,2,0,0,0,12,2,114,17,0,0,0,122,28, - 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, - 120,116,46,95,95,101,110,116,101,114,95,95,99,4,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,67,0,0, - 0,114,201,0,0,0,41,2,122,60,82,101,108,101,97,115, - 101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, - 107,32,114,101,103,97,114,100,108,101,115,115,32,111,102,32, - 97,110,121,32,114,97,105,115,101,100,32,101,120,99,101,112, - 116,105,111,110,115,46,78,41,2,114,65,0,0,0,114,68, - 0,0,0,41,4,114,34,0,0,0,218,8,101,120,99,95, - 116,121,112,101,218,9,101,120,99,95,118,97,108,117,101,218, - 13,101,120,99,95,116,114,97,99,101,98,97,99,107,32,32, - 32,32,114,5,0,0,0,114,64,0,0,0,129,3,0,0, - 114,202,0,0,0,114,17,0,0,0,122,27,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, - 95,101,120,105,116,95,95,78,41,6,114,8,0,0,0,114, - 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,62, - 0,0,0,114,64,0,0,0,114,23,0,0,0,114,5,0, - 0,0,114,200,0,0,0,121,3,0,0,115,8,0,0,0, - 8,0,4,2,8,2,12,4,114,17,0,0,0,114,200,0, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,115,64,0,0,0,124,1,160,0, - 100,1,124,2,100,2,24,0,161,2,125,3,116,1,124,3, - 131,1,124,2,107,0,114,18,116,2,100,3,131,1,130,1, - 124,3,100,4,25,0,125,4,124,0,114,30,100,5,160,3, - 124,4,124,0,161,2,83,0,124,4,83,0,41,7,122,50, - 82,101,115,111,108,118,101,32,97,32,114,101,108,97,116,105, - 118,101,32,109,111,100,117,108,101,32,110,97,109,101,32,116, - 111,32,97,110,32,97,98,115,111,108,117,116,101,32,111,110, - 101,46,114,141,0,0,0,114,43,0,0,0,122,50,97,116, - 116,101,109,112,116,101,100,32,114,101,108,97,116,105,118,101, - 32,105,109,112,111,114,116,32,98,101,121,111,110,100,32,116, - 111,112,45,108,101,118,101,108,32,112,97,99,107,97,103,101, - 114,26,0,0,0,250,5,123,125,46,123,125,78,41,4,218, - 6,114,115,112,108,105,116,218,3,108,101,110,114,88,0,0, - 0,114,51,0,0,0,41,5,114,20,0,0,0,218,7,112, - 97,99,107,97,103,101,218,5,108,101,118,101,108,90,4,98, - 105,116,115,90,4,98,97,115,101,32,32,32,32,32,114,5, - 0,0,0,218,13,95,114,101,115,111,108,118,101,95,110,97, - 109,101,134,3,0,0,115,10,0,0,0,16,2,12,1,8, - 1,8,1,20,1,114,17,0,0,0,114,211,0,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,60,0,0,0,116,0,124,0,131,1,155, - 0,100,1,157,2,125,3,116,1,160,2,124,3,116,3,161, - 2,1,0,124,0,160,4,124,1,124,2,161,2,125,4,124, - 4,100,0,117,0,114,25,100,0,83,0,116,5,124,1,124, - 4,131,2,83,0,41,2,78,122,53,46,102,105,110,100,95, - 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, - 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, - 111,32,102,105,110,100,95,109,111,100,117,108,101,40,41,41, - 6,114,6,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,169,0,0,0,114,184,0,0,0,114,104,0,0,0,41, - 5,218,6,102,105,110,100,101,114,114,20,0,0,0,114,181, - 0,0,0,114,108,0,0,0,114,122,0,0,0,32,32,32, - 32,32,114,5,0,0,0,218,17,95,102,105,110,100,95,115, - 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, - 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, - 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, - 0,0,0,0,0,0,10,0,0,0,67,0,0,0,115,30, - 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, - 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, - 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, - 0,125,4,124,3,68,0,93,112,125,5,116,7,131,0,53, - 0,1,0,9,0,124,5,106,8,125,6,110,27,35,0,4, - 0,116,9,121,142,1,0,1,0,1,0,116,10,124,5,124, - 0,124,1,131,3,125,7,124,7,100,1,117,0,114,61,89, - 0,100,1,4,0,4,0,131,3,1,0,113,26,89,0,110, - 7,37,0,124,6,124,0,124,1,124,2,131,3,125,7,100, - 1,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, - 81,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,7,100,1,117,1,114,138,124,4,115,134,124,0,116, - 0,106,6,118,0,114,134,116,0,106,6,124,0,25,0,125, - 8,9,0,124,8,106,11,125,9,110,14,35,0,4,0,116, - 9,121,141,1,0,1,0,1,0,124,7,6,0,89,0,2, - 0,1,0,83,0,37,0,124,9,100,1,117,0,114,130,124, - 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, - 7,2,0,1,0,83,0,113,26,100,1,83,0,119,0,119, - 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, - 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, - 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, - 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, - 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, - 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, - 104,32,105,115,32,101,109,112,116,121,41,12,114,18,0,0, - 0,218,9,109,101,116,97,95,112,97,116,104,114,88,0,0, - 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, - 114,105,0,0,0,114,200,0,0,0,114,183,0,0,0,114, - 2,0,0,0,114,213,0,0,0,114,113,0,0,0,41,10, - 114,20,0,0,0,114,181,0,0,0,114,182,0,0,0,114, - 214,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, - 212,0,0,0,114,183,0,0,0,114,109,0,0,0,114,110, - 0,0,0,114,113,0,0,0,32,32,32,32,32,32,32,32, - 32,32,114,5,0,0,0,218,10,95,102,105,110,100,95,115, - 112,101,99,153,3,0,0,115,76,0,0,0,6,2,8,1, - 8,2,4,3,12,1,10,5,8,1,8,1,2,1,8,1, - 2,128,12,1,12,1,8,1,2,1,12,250,4,5,2,128, - 12,3,12,248,22,128,8,9,14,2,10,1,2,1,8,1, - 2,128,12,1,12,4,2,128,8,2,8,1,8,2,8,2, - 2,239,4,19,2,243,2,244,115,63,0,0,0,159,1,65, - 12,5,161,3,37,4,164,1,65,12,5,165,17,63,11,182, - 1,65,12,5,189,9,65,12,5,193,12,4,65,16,13,193, - 17,3,65,16,13,193,40,3,65,44,2,193,44,9,65,57, - 9,194,13,1,65,57,9,194,14,1,63,11,114,215,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,67,0,0,0,115,110,0,0,0,116,0,124,0,116, - 1,131,2,115,14,116,2,100,1,160,3,116,4,124,0,131, - 1,161,1,131,1,130,1,124,2,100,2,107,0,114,22,116, - 5,100,3,131,1,130,1,124,2,100,2,107,4,114,41,116, - 0,124,1,116,1,131,2,115,35,116,2,100,4,131,1,130, - 1,124,1,115,41,116,6,100,5,131,1,130,1,124,0,115, - 53,124,2,100,2,107,2,114,51,116,5,100,6,131,1,130, - 1,100,7,83,0,100,7,83,0,41,8,122,28,86,101,114, - 105,102,121,32,97,114,103,117,109,101,110,116,115,32,97,114, - 101,32,34,115,97,110,101,34,46,122,31,109,111,100,117,108, - 101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,115, - 116,114,44,32,110,111,116,32,123,125,114,26,0,0,0,122, - 18,108,101,118,101,108,32,109,117,115,116,32,98,101,32,62, - 61,32,48,122,31,95,95,112,97,99,107,97,103,101,95,95, - 32,110,111,116,32,115,101,116,32,116,111,32,97,32,115,116, - 114,105,110,103,122,54,97,116,116,101,109,112,116,101,100,32, - 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,32, - 119,105,116,104,32,110,111,32,107,110,111,119,110,32,112,97, - 114,101,110,116,32,112,97,99,107,97,103,101,122,17,69,109, - 112,116,121,32,109,111,100,117,108,101,32,110,97,109,101,78, - 41,7,218,10,105,115,105,110,115,116,97,110,99,101,218,3, - 115,116,114,218,9,84,121,112,101,69,114,114,111,114,114,51, - 0,0,0,114,3,0,0,0,218,10,86,97,108,117,101,69, - 114,114,111,114,114,88,0,0,0,169,3,114,20,0,0,0, - 114,209,0,0,0,114,210,0,0,0,32,32,32,114,5,0, - 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, - 107,200,3,0,0,115,24,0,0,0,10,2,18,1,8,1, - 8,1,8,1,10,1,8,1,4,1,8,1,12,2,8,1, - 8,255,114,17,0,0,0,114,221,0,0,0,122,16,78,111, - 32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,4, - 123,33,114,125,99,2,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,67,0,0,0,115,20,1,0,0,100,0, - 125,2,124,0,160,0,100,1,161,1,100,2,25,0,125,3, - 124,3,114,64,124,3,116,1,106,2,118,1,114,21,116,3, - 124,1,124,3,131,2,1,0,124,0,116,1,106,2,118,0, - 114,31,116,1,106,2,124,0,25,0,83,0,116,1,106,2, - 124,3,25,0,125,4,9,0,124,4,106,4,125,2,110,23, - 35,0,4,0,116,5,121,137,1,0,1,0,1,0,116,6, - 100,3,23,0,160,7,124,0,124,3,161,2,125,5,116,8, - 124,5,124,0,100,4,141,2,100,0,130,2,37,0,116,9, - 124,0,124,2,131,2,125,6,124,6,100,0,117,0,114,82, - 116,8,116,6,160,7,124,0,161,1,124,0,100,4,141,2, - 130,1,116,10,124,6,131,1,125,7,124,3,114,134,116,1, - 106,2,124,3,25,0,125,4,124,0,160,0,100,1,161,1, - 100,5,25,0,125,8,9,0,116,11,124,4,124,8,124,7, - 131,3,1,0,124,7,83,0,35,0,4,0,116,5,121,136, - 1,0,1,0,1,0,100,6,124,3,155,2,100,7,124,8, - 155,2,157,4,125,5,116,12,160,13,124,5,116,14,161,2, - 1,0,89,0,124,7,83,0,37,0,124,7,83,0,119,0, - 119,0,41,8,78,114,141,0,0,0,114,26,0,0,0,122, - 23,59,32,123,33,114,125,32,105,115,32,110,111,116,32,97, - 32,112,97,99,107,97,103,101,114,19,0,0,0,233,2,0, - 0,0,122,27,67,97,110,110,111,116,32,115,101,116,32,97, - 110,32,97,116,116,114,105,98,117,116,101,32,111,110,32,122, - 18,32,102,111,114,32,99,104,105,108,100,32,109,111,100,117, - 108,101,32,41,15,114,142,0,0,0,114,18,0,0,0,114, - 105,0,0,0,114,75,0,0,0,114,154,0,0,0,114,2, - 0,0,0,218,8,95,69,82,82,95,77,83,71,114,51,0, - 0,0,218,19,77,111,100,117,108,101,78,111,116,70,111,117, - 110,100,69,114,114,111,114,114,215,0,0,0,114,173,0,0, - 0,114,11,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,169,0,0,0,41,9,114,20,0,0,0,218,7,105,109, - 112,111,114,116,95,114,181,0,0,0,114,143,0,0,0,90, - 13,112,97,114,101,110,116,95,109,111,100,117,108,101,114,108, - 0,0,0,114,109,0,0,0,114,110,0,0,0,90,5,99, - 104,105,108,100,32,32,32,32,32,32,32,32,32,114,5,0, - 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, - 97,100,95,117,110,108,111,99,107,101,100,219,3,0,0,115, - 68,0,0,0,4,1,14,1,4,1,10,1,10,1,10,2, - 10,1,10,1,2,1,8,1,2,128,12,1,16,1,14,1, - 2,128,10,1,8,1,18,1,8,2,4,1,10,2,14,1, - 2,1,12,1,4,4,2,128,12,253,16,1,14,1,4,1, - 2,128,4,0,2,253,2,242,115,31,0,0,0,165,3,41, - 0,169,22,63,7,193,37,6,65,45,0,193,45,21,66,5, - 7,194,8,1,66,5,7,194,9,1,63,7,114,226,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,9,0, - 0,0,67,0,0,0,115,132,0,0,0,116,0,124,0,131, - 1,53,0,1,0,116,1,106,2,160,3,124,0,116,4,161, - 2,125,2,124,2,116,4,117,0,114,27,116,5,124,0,124, - 1,131,2,2,0,100,1,4,0,4,0,131,3,1,0,83, - 0,9,0,100,1,4,0,4,0,131,3,1,0,110,11,35, - 0,49,0,115,39,119,4,37,0,1,0,1,0,1,0,89, - 0,1,0,1,0,124,2,100,1,117,0,114,60,100,2,160, - 6,124,0,161,1,125,3,116,7,124,3,124,0,100,3,141, - 2,130,1,116,8,124,0,131,1,1,0,124,2,83,0,41, - 4,122,25,70,105,110,100,32,97,110,100,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,46,78,122,40,105, - 109,112,111,114,116,32,111,102,32,123,125,32,104,97,108,116, - 101,100,59,32,78,111,110,101,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,114,19,0,0,0,41,9,114,58, - 0,0,0,114,18,0,0,0,114,105,0,0,0,114,39,0, - 0,0,218,14,95,78,69,69,68,83,95,76,79,65,68,73, - 78,71,114,226,0,0,0,114,51,0,0,0,114,224,0,0, - 0,114,73,0,0,0,41,4,114,20,0,0,0,114,225,0, - 0,0,114,110,0,0,0,114,83,0,0,0,32,32,32,32, - 114,5,0,0,0,218,14,95,102,105,110,100,95,97,110,100, - 95,108,111,97,100,254,3,0,0,115,30,0,0,0,10,2, - 14,1,8,1,8,1,14,253,2,2,12,254,22,128,8,5, - 2,1,6,1,2,255,12,2,8,2,4,1,115,12,0,0, - 0,132,16,34,3,162,4,38,11,167,3,38,11,114,228,0, - 0,0,114,26,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, - 0,116,0,124,0,124,1,124,2,131,3,1,0,124,2,100, - 1,107,4,114,16,116,1,124,0,124,1,124,2,131,3,125, - 0,116,2,124,0,116,3,131,2,83,0,41,3,97,50,1, - 0,0,73,109,112,111,114,116,32,97,110,100,32,114,101,116, - 117,114,110,32,116,104,101,32,109,111,100,117,108,101,32,98, - 97,115,101,100,32,111,110,32,105,116,115,32,110,97,109,101, - 44,32,116,104,101,32,112,97,99,107,97,103,101,32,116,104, - 101,32,99,97,108,108,32,105,115,10,32,32,32,32,98,101, - 105,110,103,32,109,97,100,101,32,102,114,111,109,44,32,97, - 110,100,32,116,104,101,32,108,101,118,101,108,32,97,100,106, - 117,115,116,109,101,110,116,46,10,10,32,32,32,32,84,104, - 105,115,32,102,117,110,99,116,105,111,110,32,114,101,112,114, - 101,115,101,110,116,115,32,116,104,101,32,103,114,101,97,116, - 101,115,116,32,99,111,109,109,111,110,32,100,101,110,111,109, - 105,110,97,116,111,114,32,111,102,32,102,117,110,99,116,105, - 111,110,97,108,105,116,121,10,32,32,32,32,98,101,116,119, - 101,101,110,32,105,109,112,111,114,116,95,109,111,100,117,108, - 101,32,97,110,100,32,95,95,105,109,112,111,114,116,95,95, - 46,32,84,104,105,115,32,105,110,99,108,117,100,101,115,32, - 115,101,116,116,105,110,103,32,95,95,112,97,99,107,97,103, - 101,95,95,32,105,102,10,32,32,32,32,116,104,101,32,108, - 111,97,100,101,114,32,100,105,100,32,110,111,116,46,10,10, - 32,32,32,32,114,26,0,0,0,78,41,4,114,221,0,0, - 0,114,211,0,0,0,114,228,0,0,0,218,11,95,103,99, - 100,95,105,109,112,111,114,116,114,220,0,0,0,32,32,32, - 114,5,0,0,0,114,229,0,0,0,14,4,0,0,115,8, - 0,0,0,12,9,8,1,12,1,10,1,114,17,0,0,0, - 114,229,0,0,0,169,1,218,9,114,101,99,117,114,115,105, - 118,101,99,3,0,0,0,0,0,0,0,1,0,0,0,9, - 0,0,0,67,0,0,0,115,216,0,0,0,124,1,68,0, - 93,102,125,4,116,0,124,4,116,1,131,2,115,32,124,3, - 114,17,124,0,106,2,100,1,23,0,125,5,110,2,100,2, - 125,5,116,3,100,3,124,5,155,0,100,4,116,4,124,4, - 131,1,106,2,155,0,157,4,131,1,130,1,124,4,100,5, - 107,2,114,53,124,3,115,52,116,5,124,0,100,6,131,2, - 114,52,116,6,124,0,124,0,106,7,124,2,100,7,100,8, - 141,4,1,0,113,2,116,5,124,0,124,4,131,2,115,104, - 100,9,160,8,124,0,106,2,124,4,161,2,125,6,9,0, - 116,9,124,2,124,6,131,2,1,0,113,2,35,0,4,0, - 116,10,121,107,1,0,125,7,1,0,124,7,106,11,124,6, - 107,2,114,98,116,12,106,13,160,14,124,6,116,15,161,2, - 100,10,117,1,114,98,89,0,100,10,125,7,126,7,113,2, - 130,0,100,10,125,7,126,7,119,1,37,0,113,2,124,0, - 83,0,119,0,41,11,122,238,70,105,103,117,114,101,32,111, - 117,116,32,119,104,97,116,32,95,95,105,109,112,111,114,116, - 95,95,32,115,104,111,117,108,100,32,114,101,116,117,114,110, - 46,10,10,32,32,32,32,84,104,101,32,105,109,112,111,114, - 116,95,32,112,97,114,97,109,101,116,101,114,32,105,115,32, - 97,32,99,97,108,108,97,98,108,101,32,119,104,105,99,104, - 32,116,97,107,101,115,32,116,104,101,32,110,97,109,101,32, - 111,102,32,109,111,100,117,108,101,32,116,111,10,32,32,32, - 32,105,109,112,111,114,116,46,32,73,116,32,105,115,32,114, - 101,113,117,105,114,101,100,32,116,111,32,100,101,99,111,117, - 112,108,101,32,116,104,101,32,102,117,110,99,116,105,111,110, - 32,102,114,111,109,32,97,115,115,117,109,105,110,103,32,105, - 109,112,111,114,116,108,105,98,39,115,10,32,32,32,32,105, - 109,112,111,114,116,32,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,32,105,115,32,100,101,115,105,114,101,100,46, - 10,10,32,32,32,32,122,8,46,95,95,97,108,108,95,95, - 122,13,96,96,102,114,111,109,32,108,105,115,116,39,39,122, - 8,73,116,101,109,32,105,110,32,122,18,32,109,117,115,116, - 32,98,101,32,115,116,114,44,32,110,111,116,32,250,1,42, - 218,7,95,95,97,108,108,95,95,84,114,230,0,0,0,114, - 206,0,0,0,78,41,16,114,216,0,0,0,114,217,0,0, - 0,114,8,0,0,0,114,218,0,0,0,114,3,0,0,0, - 114,10,0,0,0,218,16,95,104,97,110,100,108,101,95,102, - 114,111,109,108,105,115,116,114,233,0,0,0,114,51,0,0, - 0,114,75,0,0,0,114,224,0,0,0,114,20,0,0,0, - 114,18,0,0,0,114,105,0,0,0,114,39,0,0,0,114, - 227,0,0,0,41,8,114,110,0,0,0,218,8,102,114,111, - 109,108,105,115,116,114,225,0,0,0,114,231,0,0,0,218, - 1,120,90,5,119,104,101,114,101,90,9,102,114,111,109,95, - 110,97,109,101,90,3,101,120,99,32,32,32,32,32,32,32, - 32,114,5,0,0,0,114,234,0,0,0,29,4,0,0,115, - 58,0,0,0,8,10,10,1,4,1,12,1,4,2,10,1, - 8,1,8,255,8,2,14,1,10,1,2,1,6,255,2,128, - 10,2,14,1,2,1,12,1,2,128,12,1,10,4,16,1, - 2,255,10,2,2,1,10,128,2,245,4,12,2,248,115,36, - 0,0,0,193,2,5,65,8,2,193,8,7,65,39,9,193, - 15,14,65,35,9,193,34,1,65,35,9,193,35,4,65,39, - 9,193,43,1,65,39,9,114,234,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,7,0,0,0,67,0,0, - 0,115,146,0,0,0,124,0,160,0,100,1,161,1,125,1, - 124,0,160,0,100,2,161,1,125,2,124,1,100,3,117,1, - 114,41,124,2,100,3,117,1,114,39,124,1,124,2,106,1, - 107,3,114,39,116,2,160,3,100,4,124,1,155,2,100,5, - 124,2,106,1,155,2,100,6,157,5,116,4,100,7,100,8, - 166,3,1,0,124,1,83,0,124,2,100,3,117,1,114,48, - 124,2,106,1,83,0,116,2,160,3,100,9,116,4,100,7, - 100,8,166,3,1,0,124,0,100,10,25,0,125,1,100,11, - 124,0,118,1,114,71,124,1,160,5,100,12,161,1,100,13, - 25,0,125,1,124,1,83,0,41,14,122,167,67,97,108,99, - 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, - 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, - 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, - 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, - 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, - 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, - 101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,116, - 111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,116, - 32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,117, - 101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,32, - 32,32,32,114,158,0,0,0,114,113,0,0,0,78,122,32, - 95,95,112,97,99,107,97,103,101,95,95,32,33,61,32,95, - 95,115,112,101,99,95,95,46,112,97,114,101,110,116,32,40, - 122,4,32,33,61,32,250,1,41,233,3,0,0,0,41,1, - 90,10,115,116,97,99,107,108,101,118,101,108,122,89,99,97, - 110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,107, - 97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,95, - 95,32,111,114,32,95,95,112,97,99,107,97,103,101,95,95, - 44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,111, - 110,32,95,95,110,97,109,101,95,95,32,97,110,100,32,95, - 95,112,97,116,104,95,95,114,8,0,0,0,114,154,0,0, - 0,114,141,0,0,0,114,26,0,0,0,41,6,114,39,0, - 0,0,114,143,0,0,0,114,101,0,0,0,114,102,0,0, - 0,114,169,0,0,0,114,142,0,0,0,41,3,218,7,103, - 108,111,98,97,108,115,114,209,0,0,0,114,109,0,0,0, - 32,32,32,114,5,0,0,0,218,17,95,99,97,108,99,95, - 95,95,112,97,99,107,97,103,101,95,95,66,4,0,0,115, - 42,0,0,0,10,7,10,1,8,1,18,1,6,1,2,1, - 4,255,4,1,6,255,4,2,6,254,4,3,8,1,6,1, - 6,2,4,2,6,254,8,3,8,1,14,1,4,1,114,17, - 0,0,0,114,240,0,0,0,114,23,0,0,0,99,5,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, - 0,0,115,174,0,0,0,124,4,100,1,107,2,114,9,116, - 0,124,0,131,1,125,5,110,18,124,1,100,2,117,1,114, - 15,124,1,110,1,105,0,125,6,116,1,124,6,131,1,125, - 7,116,0,124,0,124,7,124,4,131,3,125,5,124,3,115, - 74,124,4,100,1,107,2,114,42,116,0,124,0,160,2,100, - 3,161,1,100,1,25,0,131,1,83,0,124,0,115,46,124, - 5,83,0,116,3,124,0,131,1,116,3,124,0,160,2,100, - 3,161,1,100,1,25,0,131,1,24,0,125,8,116,4,106, - 5,124,5,106,6,100,2,116,3,124,5,106,6,131,1,124, - 8,24,0,133,2,25,0,25,0,83,0,116,7,124,5,100, - 4,131,2,114,85,116,8,124,5,124,3,116,0,131,3,83, - 0,124,5,83,0,41,5,97,215,1,0,0,73,109,112,111, - 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, - 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, - 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, - 99,117,114,114,105,110,103,32,102,114,111,109,10,32,32,32, - 32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,116, - 105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,101, - 32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,101, - 110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,84, - 104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,116, - 39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,105, - 102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,100, - 32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,98, - 117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,117, - 108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,112, - 111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,114, - 111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,116, - 32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,32, - 32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,32, - 32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,115, - 101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,101, - 32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,112, - 111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,101, - 108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,114, - 116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,46, - 46,112,107,103,32,105,109,112,111,114,116,32,109,111,100,96, - 96,32,119,111,117,108,100,32,104,97,118,101,32,97,32,39, - 108,101,118,101,108,39,32,111,102,32,50,41,46,10,10,32, - 32,32,32,114,26,0,0,0,78,114,141,0,0,0,114,154, - 0,0,0,41,9,114,229,0,0,0,114,240,0,0,0,218, - 9,112,97,114,116,105,116,105,111,110,114,208,0,0,0,114, - 18,0,0,0,114,105,0,0,0,114,8,0,0,0,114,10, - 0,0,0,114,234,0,0,0,41,9,114,20,0,0,0,114, - 239,0,0,0,218,6,108,111,99,97,108,115,114,235,0,0, - 0,114,210,0,0,0,114,110,0,0,0,90,8,103,108,111, - 98,97,108,115,95,114,209,0,0,0,90,7,99,117,116,95, - 111,102,102,32,32,32,32,32,32,32,32,32,114,5,0,0, - 0,218,10,95,95,105,109,112,111,114,116,95,95,93,4,0, - 0,115,30,0,0,0,8,11,10,1,16,2,8,1,12,1, - 4,1,8,3,18,1,4,1,4,1,26,4,30,3,10,1, - 12,1,4,2,114,17,0,0,0,114,243,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, - 0,0,0,115,38,0,0,0,116,0,160,1,124,0,161,1, - 125,1,124,1,100,0,117,0,114,15,116,2,100,1,124,0, - 23,0,131,1,130,1,116,3,124,1,131,1,83,0,41,2, - 78,122,25,110,111,32,98,117,105,108,116,45,105,110,32,109, - 111,100,117,108,101,32,110,97,109,101,100,32,41,4,114,175, - 0,0,0,114,183,0,0,0,114,88,0,0,0,114,173,0, - 0,0,41,2,114,20,0,0,0,114,109,0,0,0,32,32, - 114,5,0,0,0,218,18,95,98,117,105,108,116,105,110,95, - 102,114,111,109,95,110,97,109,101,130,4,0,0,115,8,0, - 0,0,10,1,8,1,12,1,8,1,114,17,0,0,0,114, - 244,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,67,0,0,0,115,166,0,0,0,124,1, - 97,0,124,0,97,1,116,2,116,1,131,1,125,2,116,1, - 106,3,160,4,161,0,68,0,93,36,92,2,125,3,125,4, - 116,5,124,4,124,2,131,2,114,49,124,3,116,1,106,6, - 118,0,114,30,116,7,125,5,110,9,116,0,160,8,124,3, - 161,1,114,38,116,9,125,5,110,1,113,13,116,10,124,4, - 124,5,131,2,125,6,116,11,124,6,124,4,131,2,1,0, - 113,13,116,1,106,3,116,12,25,0,125,7,100,1,68,0, - 93,23,125,8,124,8,116,1,106,3,118,1,114,69,116,13, - 124,8,131,1,125,9,110,5,116,1,106,3,124,8,25,0, - 125,9,116,14,124,7,124,8,124,9,131,3,1,0,113,57, - 100,2,83,0,41,3,122,250,83,101,116,117,112,32,105,109, - 112,111,114,116,108,105,98,32,98,121,32,105,109,112,111,114, - 116,105,110,103,32,110,101,101,100,101,100,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,32,97,110,100, - 32,105,110,106,101,99,116,105,110,103,32,116,104,101,109,10, - 32,32,32,32,105,110,116,111,32,116,104,101,32,103,108,111, - 98,97,108,32,110,97,109,101,115,112,97,99,101,46,10,10, - 32,32,32,32,65,115,32,115,121,115,32,105,115,32,110,101, - 101,100,101,100,32,102,111,114,32,115,121,115,46,109,111,100, - 117,108,101,115,32,97,99,99,101,115,115,32,97,110,100,32, - 95,105,109,112,32,105,115,32,110,101,101,100,101,100,32,116, - 111,32,108,111,97,100,32,98,117,105,108,116,45,105,110,10, - 32,32,32,32,109,111,100,117,108,101,115,44,32,116,104,111, - 115,101,32,116,119,111,32,109,111,100,117,108,101,115,32,109, - 117,115,116,32,98,101,32,101,120,112,108,105,99,105,116,108, - 121,32,112,97,115,115,101,100,32,105,110,46,10,10,32,32, - 32,32,41,3,114,27,0,0,0,114,101,0,0,0,114,72, - 0,0,0,78,41,15,114,65,0,0,0,114,18,0,0,0, - 114,3,0,0,0,114,105,0,0,0,218,5,105,116,101,109, - 115,114,216,0,0,0,114,87,0,0,0,114,175,0,0,0, - 114,98,0,0,0,114,193,0,0,0,114,155,0,0,0,114, - 161,0,0,0,114,8,0,0,0,114,244,0,0,0,114,11, - 0,0,0,41,10,218,10,115,121,115,95,109,111,100,117,108, - 101,218,11,95,105,109,112,95,109,111,100,117,108,101,90,11, - 109,111,100,117,108,101,95,116,121,112,101,114,20,0,0,0, - 114,110,0,0,0,114,122,0,0,0,114,109,0,0,0,90, - 11,115,101,108,102,95,109,111,100,117,108,101,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,32,32,32,32,32,32, - 32,32,32,32,114,5,0,0,0,218,6,95,115,101,116,117, - 112,137,4,0,0,115,40,0,0,0,4,9,4,1,8,3, - 18,1,10,1,10,1,6,1,10,1,6,1,2,2,10,1, - 10,1,2,128,10,3,8,1,10,1,10,1,10,2,14,1, - 4,251,114,17,0,0,0,114,248,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, - 0,115,38,0,0,0,116,0,124,0,124,1,131,2,1,0, - 116,1,106,2,160,3,116,4,161,1,1,0,116,1,106,2, - 160,3,116,5,161,1,1,0,100,1,83,0,41,2,122,48, - 73,110,115,116,97,108,108,32,105,109,112,111,114,116,101,114, - 115,32,102,111,114,32,98,117,105,108,116,105,110,32,97,110, - 100,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 78,41,6,114,248,0,0,0,114,18,0,0,0,114,214,0, - 0,0,114,132,0,0,0,114,175,0,0,0,114,193,0,0, - 0,41,2,114,246,0,0,0,114,247,0,0,0,32,32,114, - 5,0,0,0,218,8,95,105,110,115,116,97,108,108,172,4, - 0,0,115,6,0,0,0,10,2,12,2,16,1,114,17,0, - 0,0,114,249,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,32,0,0, - 0,100,1,100,2,108,0,125,0,124,0,97,1,124,0,160, - 2,116,3,106,4,116,5,25,0,161,1,1,0,100,2,83, - 0,41,3,122,57,73,110,115,116,97,108,108,32,105,109,112, - 111,114,116,101,114,115,32,116,104,97,116,32,114,101,113,117, - 105,114,101,32,101,120,116,101,114,110,97,108,32,102,105,108, - 101,115,121,115,116,101,109,32,97,99,99,101,115,115,114,26, - 0,0,0,78,41,6,218,26,95,102,114,111,122,101,110,95, - 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110, - 97,108,114,139,0,0,0,114,249,0,0,0,114,18,0,0, - 0,114,105,0,0,0,114,8,0,0,0,41,1,114,250,0, - 0,0,32,114,5,0,0,0,218,27,95,105,110,115,116,97, - 108,108,95,101,120,116,101,114,110,97,108,95,105,109,112,111, - 114,116,101,114,115,180,4,0,0,115,6,0,0,0,8,3, - 4,1,20,1,114,17,0,0,0,114,251,0,0,0,114,190, - 0,0,0,114,0,0,0,0,114,25,0,0,0,41,4,78, - 78,114,23,0,0,0,114,26,0,0,0,41,54,114,9,0, - 0,0,114,6,0,0,0,114,27,0,0,0,114,101,0,0, - 0,114,72,0,0,0,114,139,0,0,0,114,16,0,0,0, - 114,21,0,0,0,114,67,0,0,0,114,38,0,0,0,114, - 48,0,0,0,114,22,0,0,0,114,24,0,0,0,114,56, - 0,0,0,114,58,0,0,0,114,61,0,0,0,114,73,0, - 0,0,114,75,0,0,0,114,84,0,0,0,114,95,0,0, - 0,114,100,0,0,0,114,111,0,0,0,114,124,0,0,0, - 114,125,0,0,0,114,104,0,0,0,114,155,0,0,0,114, - 161,0,0,0,114,165,0,0,0,114,119,0,0,0,114,106, - 0,0,0,114,172,0,0,0,114,173,0,0,0,114,107,0, - 0,0,114,175,0,0,0,114,193,0,0,0,114,200,0,0, - 0,114,211,0,0,0,114,213,0,0,0,114,215,0,0,0, - 114,221,0,0,0,90,15,95,69,82,82,95,77,83,71,95, - 80,82,69,70,73,88,114,223,0,0,0,114,226,0,0,0, - 218,6,111,98,106,101,99,116,114,227,0,0,0,114,228,0, - 0,0,114,229,0,0,0,114,234,0,0,0,114,240,0,0, - 0,114,243,0,0,0,114,244,0,0,0,114,248,0,0,0, - 114,249,0,0,0,114,251,0,0,0,114,23,0,0,0,114, - 5,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,104,0,0,0,4,0,8,22,4,9,4,1,4, - 1,4,3,8,3,8,8,4,8,4,2,16,3,14,4,14, - 77,14,21,8,16,8,37,8,17,14,11,8,8,8,11,8, - 12,8,19,14,26,16,101,10,26,14,45,8,72,8,17,8, - 17,8,30,8,36,8,45,14,15,14,80,14,85,8,13,8, - 9,10,10,8,47,4,16,8,1,8,2,6,32,8,3,10, - 16,14,15,8,37,10,27,8,37,8,7,8,35,12,8,114, - 17,0,0,0, + 97,99,107,97,103,101,114,191,0,0,0,114,0,0,0,0, + 41,17,114,9,0,0,0,114,8,0,0,0,114,1,0,0, + 0,114,10,0,0,0,114,152,0,0,0,114,192,0,0,0, + 114,115,0,0,0,114,193,0,0,0,114,184,0,0,0,114, + 185,0,0,0,114,163,0,0,0,114,164,0,0,0,114,171, + 0,0,0,114,101,0,0,0,114,188,0,0,0,114,190,0, + 0,0,114,129,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,194,0,0,0, + 36,3,0,0,115,48,0,0,0,8,0,4,2,4,7,2, + 2,10,1,2,10,12,1,2,6,12,1,2,11,10,1,2, + 3,10,1,2,8,10,1,2,9,2,1,12,1,2,4,2, + 1,12,1,2,4,2,1,16,1,114,18,0,0,0,114,194, + 0,0,0,99,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,83,0,41,7,218, + 18,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116, + 101,120,116,122,36,67,111,110,116,101,120,116,32,109,97,110, + 97,103,101,114,32,102,111,114,32,116,104,101,32,105,109,112, + 111,114,116,32,108,111,99,107,46,99,1,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,67,0,0,0,243,12, + 0,0,0,116,0,160,1,161,0,1,0,100,1,83,0,41, + 2,122,24,65,99,113,117,105,114,101,32,116,104,101,32,105, + 109,112,111,114,116,32,108,111,99,107,46,78,41,2,114,65, + 0,0,0,114,66,0,0,0,114,53,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,62,0,0, + 0,125,3,0,0,243,2,0,0,0,12,2,114,18,0,0, + 0,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111, + 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99, + 4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 67,0,0,0,114,202,0,0,0,41,2,122,60,82,101,108, + 101,97,115,101,32,116,104,101,32,105,109,112,111,114,116,32, + 108,111,99,107,32,114,101,103,97,114,100,108,101,115,115,32, + 111,102,32,97,110,121,32,114,97,105,115,101,100,32,101,120, + 99,101,112,116,105,111,110,115,46,78,41,2,114,65,0,0, + 0,114,68,0,0,0,41,4,114,34,0,0,0,218,8,101, + 120,99,95,116,121,112,101,218,9,101,120,99,95,118,97,108, + 117,101,218,13,101,120,99,95,116,114,97,99,101,98,97,99, + 107,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,64,0,0,0,129,3,0,0,114,203,0,0,0,114,18, + 0,0,0,122,27,95,73,109,112,111,114,116,76,111,99,107, + 67,111,110,116,101,120,116,46,95,95,101,120,105,116,95,95, + 78,41,6,114,9,0,0,0,114,8,0,0,0,114,1,0, + 0,0,114,10,0,0,0,114,62,0,0,0,114,64,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,201,0,0,0,121,3,0,0,115,8, + 0,0,0,8,0,4,2,8,2,12,4,114,18,0,0,0, + 114,201,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,67,0,0,0,115,64,0,0,0,124, + 1,160,0,100,1,124,2,100,2,24,0,161,2,125,3,116, + 1,124,3,131,1,124,2,107,0,114,18,116,2,100,3,131, + 1,130,1,124,3,100,4,25,0,125,4,124,0,114,30,100, + 5,160,3,124,4,124,0,161,2,83,0,124,4,83,0,41, + 7,122,50,82,101,115,111,108,118,101,32,97,32,114,101,108, + 97,116,105,118,101,32,109,111,100,117,108,101,32,110,97,109, + 101,32,116,111,32,97,110,32,97,98,115,111,108,117,116,101, + 32,111,110,101,46,114,142,0,0,0,114,43,0,0,0,122, + 50,97,116,116,101,109,112,116,101,100,32,114,101,108,97,116, + 105,118,101,32,105,109,112,111,114,116,32,98,101,121,111,110, + 100,32,116,111,112,45,108,101,118,101,108,32,112,97,99,107, + 97,103,101,114,26,0,0,0,250,5,123,125,46,123,125,78, + 41,4,218,6,114,115,112,108,105,116,218,3,108,101,110,114, + 88,0,0,0,114,51,0,0,0,41,5,114,21,0,0,0, + 218,7,112,97,99,107,97,103,101,218,5,108,101,118,101,108, + 90,4,98,105,116,115,90,4,98,97,115,101,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,13,95,114,101, + 115,111,108,118,101,95,110,97,109,101,134,3,0,0,115,10, + 0,0,0,16,2,12,1,8,1,8,1,20,1,114,18,0, + 0,0,114,212,0,0,0,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,60,0,0, + 0,116,0,124,0,131,1,155,0,100,1,157,2,125,3,116, + 1,160,2,124,3,116,3,161,2,1,0,124,0,160,4,124, + 1,124,2,161,2,125,4,124,4,100,0,117,0,114,25,100, + 0,83,0,116,5,124,1,124,4,131,2,83,0,41,2,78, + 122,53,46,102,105,110,100,95,115,112,101,99,40,41,32,110, + 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, + 103,32,98,97,99,107,32,116,111,32,102,105,110,100,95,109, + 111,100,117,108,101,40,41,41,6,114,7,0,0,0,114,102, + 0,0,0,114,103,0,0,0,114,170,0,0,0,114,185,0, + 0,0,114,105,0,0,0,41,5,218,6,102,105,110,100,101, + 114,114,21,0,0,0,114,182,0,0,0,114,109,0,0,0, + 114,123,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,17,95,102,105,110,100,95,115,112,101,99, + 95,108,101,103,97,99,121,143,3,0,0,115,12,0,0,0, + 14,1,12,2,12,1,8,1,4,1,10,1,114,18,0,0, + 0,114,214,0,0,0,99,3,0,0,0,0,0,0,0,0, + 0,0,0,10,0,0,0,67,0,0,0,115,30,1,0,0, + 116,0,106,1,125,3,124,3,100,1,117,0,114,11,116,2, + 100,2,131,1,130,1,124,3,115,19,116,3,160,4,100,3, + 116,5,161,2,1,0,124,0,116,0,106,6,118,0,125,4, + 124,3,68,0,93,112,125,5,116,7,131,0,53,0,1,0, + 9,0,124,5,106,8,125,6,110,27,35,0,4,0,116,9, + 121,142,1,0,1,0,1,0,116,10,124,5,124,0,124,1, + 131,3,125,7,124,7,100,1,117,0,114,61,89,0,100,1, + 4,0,4,0,131,3,1,0,113,26,89,0,110,7,37,0, + 124,6,124,0,124,1,124,2,131,3,125,7,100,1,4,0, + 4,0,131,3,1,0,110,11,35,0,49,0,115,81,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,7, + 100,1,117,1,114,138,124,4,115,134,124,0,116,0,106,6, + 118,0,114,134,116,0,106,6,124,0,25,0,125,8,9,0, + 124,8,106,11,125,9,110,14,35,0,4,0,116,9,121,141, + 1,0,1,0,1,0,124,7,6,0,89,0,2,0,1,0, + 83,0,37,0,124,9,100,1,117,0,114,130,124,7,2,0, + 1,0,83,0,124,9,2,0,1,0,83,0,124,7,2,0, + 1,0,83,0,113,26,100,1,83,0,119,0,119,0,41,4, + 122,21,70,105,110,100,32,97,32,109,111,100,117,108,101,39, + 115,32,115,112,101,99,46,78,122,53,115,121,115,46,109,101, + 116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44, + 32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108, + 121,32,115,104,117,116,116,105,110,103,32,100,111,119,110,122, + 22,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, + 115,32,101,109,112,116,121,41,12,114,19,0,0,0,218,9, + 109,101,116,97,95,112,97,116,104,114,88,0,0,0,114,102, + 0,0,0,114,103,0,0,0,114,170,0,0,0,114,106,0, + 0,0,114,201,0,0,0,114,184,0,0,0,114,2,0,0, + 0,114,214,0,0,0,114,114,0,0,0,41,10,114,21,0, + 0,0,114,182,0,0,0,114,183,0,0,0,114,215,0,0, + 0,90,9,105,115,95,114,101,108,111,97,100,114,213,0,0, + 0,114,184,0,0,0,114,110,0,0,0,114,111,0,0,0, + 114,114,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,10,95,102,105,110,100,95,115,112,101,99, + 153,3,0,0,115,76,0,0,0,6,2,8,1,8,2,4, + 3,12,1,10,5,8,1,8,1,2,1,8,1,2,128,12, + 1,12,1,8,1,2,1,12,250,4,5,2,128,12,3,12, + 248,22,128,8,9,14,2,10,1,2,1,8,1,2,128,12, + 1,12,4,2,128,8,2,8,1,8,2,8,2,2,239,4, + 19,2,243,2,244,115,63,0,0,0,159,1,65,12,5,161, + 3,37,4,164,1,65,12,5,165,17,63,11,182,1,65,12, + 5,189,9,65,12,5,193,12,4,65,16,13,193,17,3,65, + 16,13,193,40,3,65,44,2,193,44,9,65,57,9,194,13, + 1,65,57,9,194,14,1,63,11,114,216,0,0,0,99,3, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, + 0,0,0,115,110,0,0,0,116,0,124,0,116,1,131,2, + 115,14,116,2,100,1,160,3,116,4,124,0,131,1,161,1, + 131,1,130,1,124,2,100,2,107,0,114,22,116,5,100,3, + 131,1,130,1,124,2,100,2,107,4,114,41,116,0,124,1, + 116,1,131,2,115,35,116,2,100,4,131,1,130,1,124,1, + 115,41,116,6,100,5,131,1,130,1,124,0,115,53,124,2, + 100,2,107,2,114,51,116,5,100,6,131,1,130,1,100,7, + 83,0,100,7,83,0,41,8,122,28,86,101,114,105,102,121, + 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34, + 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110, + 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, + 32,110,111,116,32,123,125,114,26,0,0,0,122,18,108,101, + 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, + 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111, + 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110, + 103,122,54,97,116,116,101,109,112,116,101,100,32,114,101,108, + 97,116,105,118,101,32,105,109,112,111,114,116,32,119,105,116, + 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110, + 116,32,112,97,99,107,97,103,101,122,17,69,109,112,116,121, + 32,109,111,100,117,108,101,32,110,97,109,101,78,41,7,218, + 10,105,115,105,110,115,116,97,110,99,101,218,3,115,116,114, + 218,9,84,121,112,101,69,114,114,111,114,114,51,0,0,0, + 114,3,0,0,0,218,10,86,97,108,117,101,69,114,114,111, + 114,114,88,0,0,0,169,3,114,21,0,0,0,114,210,0, + 0,0,114,211,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,13,95,115,97,110,105,116,121,95, + 99,104,101,99,107,200,3,0,0,115,24,0,0,0,10,2, + 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, + 12,2,8,1,8,255,114,18,0,0,0,114,222,0,0,0, + 122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101, + 100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,67,0,0,0,115,20,1, + 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, + 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, + 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, + 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, + 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, + 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, + 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, + 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, + 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, + 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, + 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, + 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, + 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, + 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, + 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, + 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, + 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, + 83,0,119,0,119,0,41,8,78,114,142,0,0,0,114,26, + 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,112,97,99,107,97,103,101,114,20,0,0, + 0,233,2,0,0,0,122,27,67,97,110,110,111,116,32,115, + 101,116,32,97,110,32,97,116,116,114,105,98,117,116,101,32, + 111,110,32,122,18,32,102,111,114,32,99,104,105,108,100,32, + 109,111,100,117,108,101,32,41,15,114,143,0,0,0,114,19, + 0,0,0,114,106,0,0,0,114,75,0,0,0,114,155,0, + 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, + 71,114,51,0,0,0,218,19,77,111,100,117,108,101,78,111, + 116,70,111,117,110,100,69,114,114,111,114,114,216,0,0,0, + 114,174,0,0,0,114,12,0,0,0,114,102,0,0,0,114, + 103,0,0,0,114,170,0,0,0,41,9,114,21,0,0,0, + 218,7,105,109,112,111,114,116,95,114,182,0,0,0,114,144, + 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, + 108,101,114,109,0,0,0,114,110,0,0,0,114,111,0,0, + 0,90,5,99,104,105,108,100,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,23,95,102,105,110,100,95,97, + 110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,100, + 219,3,0,0,115,68,0,0,0,4,1,14,1,4,1,10, + 1,10,1,10,2,10,1,10,1,2,1,8,1,2,128,12, + 1,16,1,14,1,2,128,10,1,8,1,18,1,8,2,4, + 1,10,2,14,1,2,1,12,1,4,4,2,128,12,253,16, + 1,14,1,4,1,2,128,4,0,2,253,2,242,115,31,0, + 0,0,165,3,41,0,169,22,63,7,193,37,6,65,45,0, + 193,45,21,66,5,7,194,8,1,66,5,7,194,9,1,63, + 7,114,227,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,67,0,0,0,115,132,0,0,0, + 116,0,124,0,131,1,53,0,1,0,116,1,106,2,160,3, + 124,0,116,4,161,2,125,2,124,2,116,4,117,0,114,27, + 116,5,124,0,124,1,131,2,2,0,100,1,4,0,4,0, + 131,3,1,0,83,0,9,0,100,1,4,0,4,0,131,3, + 1,0,110,11,35,0,49,0,115,39,119,4,37,0,1,0, + 1,0,1,0,89,0,1,0,1,0,124,2,100,1,117,0, + 114,60,100,2,160,6,124,0,161,1,125,3,116,7,124,3, + 124,0,100,3,141,2,130,1,116,8,124,0,131,1,1,0, + 124,2,83,0,41,4,122,25,70,105,110,100,32,97,110,100, + 32,108,111,97,100,32,116,104,101,32,109,111,100,117,108,101, + 46,78,122,40,105,109,112,111,114,116,32,111,102,32,123,125, + 32,104,97,108,116,101,100,59,32,78,111,110,101,32,105,110, + 32,115,121,115,46,109,111,100,117,108,101,115,114,20,0,0, + 0,41,9,114,58,0,0,0,114,19,0,0,0,114,106,0, + 0,0,114,39,0,0,0,218,14,95,78,69,69,68,83,95, + 76,79,65,68,73,78,71,114,227,0,0,0,114,51,0,0, + 0,114,225,0,0,0,114,73,0,0,0,41,4,114,21,0, + 0,0,114,226,0,0,0,114,111,0,0,0,114,83,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,14,95,102,105,110,100,95,97,110,100,95,108,111,97,100, + 254,3,0,0,115,30,0,0,0,10,2,14,1,8,1,8, + 1,14,253,2,2,12,254,22,128,8,5,2,1,6,1,2, + 255,12,2,8,2,4,1,115,12,0,0,0,132,16,34,3, + 162,4,38,11,167,3,38,11,114,229,0,0,0,114,26,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,115,42,0,0,0,116,0,124,0, + 124,1,124,2,131,3,1,0,124,2,100,1,107,4,114,16, + 116,1,124,0,124,1,124,2,131,3,125,0,116,2,124,0, + 116,3,131,2,83,0,41,3,97,50,1,0,0,73,109,112, + 111,114,116,32,97,110,100,32,114,101,116,117,114,110,32,116, + 104,101,32,109,111,100,117,108,101,32,98,97,115,101,100,32, + 111,110,32,105,116,115,32,110,97,109,101,44,32,116,104,101, + 32,112,97,99,107,97,103,101,32,116,104,101,32,99,97,108, + 108,32,105,115,10,32,32,32,32,98,101,105,110,103,32,109, + 97,100,101,32,102,114,111,109,44,32,97,110,100,32,116,104, + 101,32,108,101,118,101,108,32,97,100,106,117,115,116,109,101, + 110,116,46,10,10,32,32,32,32,84,104,105,115,32,102,117, + 110,99,116,105,111,110,32,114,101,112,114,101,115,101,110,116, + 115,32,116,104,101,32,103,114,101,97,116,101,115,116,32,99, + 111,109,109,111,110,32,100,101,110,111,109,105,110,97,116,111, + 114,32,111,102,32,102,117,110,99,116,105,111,110,97,108,105, + 116,121,10,32,32,32,32,98,101,116,119,101,101,110,32,105, + 109,112,111,114,116,95,109,111,100,117,108,101,32,97,110,100, + 32,95,95,105,109,112,111,114,116,95,95,46,32,84,104,105, + 115,32,105,110,99,108,117,100,101,115,32,115,101,116,116,105, + 110,103,32,95,95,112,97,99,107,97,103,101,95,95,32,105, + 102,10,32,32,32,32,116,104,101,32,108,111,97,100,101,114, + 32,100,105,100,32,110,111,116,46,10,10,32,32,32,32,114, + 26,0,0,0,78,41,4,114,222,0,0,0,114,212,0,0, + 0,114,229,0,0,0,218,11,95,103,99,100,95,105,109,112, + 111,114,116,114,221,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,230,0,0,0,14,4,0,0, + 115,8,0,0,0,12,9,8,1,12,1,10,1,114,18,0, + 0,0,114,230,0,0,0,169,1,218,9,114,101,99,117,114, + 115,105,118,101,99,3,0,0,0,0,0,0,0,1,0,0, + 0,9,0,0,0,67,0,0,0,115,216,0,0,0,124,1, + 68,0,93,102,125,4,116,0,124,4,116,1,131,2,115,32, + 124,3,114,17,124,0,106,2,100,1,23,0,125,5,110,2, + 100,2,125,5,116,3,100,3,124,5,155,0,100,4,116,4, + 124,4,131,1,106,2,155,0,157,4,131,1,130,1,124,4, + 100,5,107,2,114,53,124,3,115,52,116,5,124,0,100,6, + 131,2,114,52,116,6,124,0,124,0,106,7,124,2,100,7, + 100,8,141,4,1,0,113,2,116,5,124,0,124,4,131,2, + 115,104,100,9,160,8,124,0,106,2,124,4,161,2,125,6, + 9,0,116,9,124,2,124,6,131,2,1,0,113,2,35,0, + 4,0,116,10,121,107,1,0,125,7,1,0,124,7,106,11, + 124,6,107,2,114,98,116,12,106,13,160,14,124,6,116,15, + 161,2,100,10,117,1,114,98,89,0,100,10,125,7,126,7, + 113,2,130,0,100,10,125,7,126,7,119,1,37,0,113,2, + 124,0,83,0,119,0,41,11,122,238,70,105,103,117,114,101, + 32,111,117,116,32,119,104,97,116,32,95,95,105,109,112,111, + 114,116,95,95,32,115,104,111,117,108,100,32,114,101,116,117, + 114,110,46,10,10,32,32,32,32,84,104,101,32,105,109,112, + 111,114,116,95,32,112,97,114,97,109,101,116,101,114,32,105, + 115,32,97,32,99,97,108,108,97,98,108,101,32,119,104,105, + 99,104,32,116,97,107,101,115,32,116,104,101,32,110,97,109, + 101,32,111,102,32,109,111,100,117,108,101,32,116,111,10,32, + 32,32,32,105,109,112,111,114,116,46,32,73,116,32,105,115, + 32,114,101,113,117,105,114,101,100,32,116,111,32,100,101,99, + 111,117,112,108,101,32,116,104,101,32,102,117,110,99,116,105, + 111,110,32,102,114,111,109,32,97,115,115,117,109,105,110,103, + 32,105,109,112,111,114,116,108,105,98,39,115,10,32,32,32, + 32,105,109,112,111,114,116,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,105,115,32,100,101,115,105,114,101, + 100,46,10,10,32,32,32,32,122,8,46,95,95,97,108,108, + 95,95,122,13,96,96,102,114,111,109,32,108,105,115,116,39, + 39,122,8,73,116,101,109,32,105,110,32,122,18,32,109,117, + 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,250, + 1,42,218,7,95,95,97,108,108,95,95,84,114,231,0,0, + 0,114,207,0,0,0,78,41,16,114,217,0,0,0,114,218, + 0,0,0,114,9,0,0,0,114,219,0,0,0,114,3,0, + 0,0,114,11,0,0,0,218,16,95,104,97,110,100,108,101, + 95,102,114,111,109,108,105,115,116,114,234,0,0,0,114,51, + 0,0,0,114,75,0,0,0,114,225,0,0,0,114,21,0, + 0,0,114,19,0,0,0,114,106,0,0,0,114,39,0,0, + 0,114,228,0,0,0,41,8,114,111,0,0,0,218,8,102, + 114,111,109,108,105,115,116,114,226,0,0,0,114,232,0,0, + 0,218,1,120,90,5,119,104,101,114,101,90,9,102,114,111, + 109,95,110,97,109,101,90,3,101,120,99,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,235,0,0,0,29, + 4,0,0,115,58,0,0,0,8,10,10,1,4,1,12,1, + 4,2,10,1,8,1,8,255,8,2,14,1,10,1,2,1, + 6,255,2,128,10,2,14,1,2,1,12,1,2,128,12,1, + 10,4,16,1,2,255,10,2,2,1,10,128,2,245,4,12, + 2,248,115,36,0,0,0,193,2,5,65,8,2,193,8,7, + 65,39,9,193,15,14,65,35,9,193,34,1,65,35,9,193, + 35,4,65,39,9,193,43,1,65,39,9,114,235,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0, + 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, + 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, + 100,3,117,1,114,41,124,2,100,3,117,1,114,39,124,1, + 124,2,106,1,107,3,114,39,116,2,160,3,100,4,124,1, + 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, + 100,7,100,8,166,3,1,0,124,1,83,0,124,2,100,3, + 117,1,114,48,124,2,106,1,83,0,116,2,160,3,100,9, + 116,4,100,7,100,8,166,3,1,0,124,0,100,10,25,0, + 125,1,100,11,124,0,118,1,114,71,124,1,160,5,100,12, + 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, + 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, + 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, + 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, + 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, + 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, + 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, + 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, + 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, + 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, + 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, + 46,10,10,32,32,32,32,114,159,0,0,0,114,114,0,0, + 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, + 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, + 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, + 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, + 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, + 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, + 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, + 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, + 110,100,32,95,95,112,97,116,104,95,95,114,9,0,0,0, + 114,155,0,0,0,114,142,0,0,0,114,26,0,0,0,41, + 6,114,39,0,0,0,114,144,0,0,0,114,102,0,0,0, + 114,103,0,0,0,114,170,0,0,0,114,143,0,0,0,41, + 3,218,7,103,108,111,98,97,108,115,114,210,0,0,0,114, + 110,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,17,95,99,97,108,99,95,95,95,112,97,99, + 107,97,103,101,95,95,66,4,0,0,115,42,0,0,0,10, + 7,10,1,8,1,18,1,6,1,2,1,4,255,4,1,6, + 255,4,2,6,254,4,3,8,1,6,1,6,2,4,2,6, + 254,8,3,8,1,14,1,4,1,114,18,0,0,0,114,241, + 0,0,0,114,5,0,0,0,99,5,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,174,0, + 0,0,124,4,100,1,107,2,114,9,116,0,124,0,131,1, + 125,5,110,18,124,1,100,2,117,1,114,15,124,1,110,1, + 105,0,125,6,116,1,124,6,131,1,125,7,116,0,124,0, + 124,7,124,4,131,3,125,5,124,3,115,74,124,4,100,1, + 107,2,114,42,116,0,124,0,160,2,100,3,161,1,100,1, + 25,0,131,1,83,0,124,0,115,46,124,5,83,0,116,3, + 124,0,131,1,116,3,124,0,160,2,100,3,161,1,100,1, + 25,0,131,1,24,0,125,8,116,4,106,5,124,5,106,6, + 100,2,116,3,124,5,106,6,131,1,124,8,24,0,133,2, + 25,0,25,0,83,0,116,7,124,5,100,4,131,2,114,85, + 116,8,124,5,124,3,116,0,131,3,83,0,124,5,83,0, + 41,5,97,215,1,0,0,73,109,112,111,114,116,32,97,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,84,104,101, + 32,39,103,108,111,98,97,108,115,39,32,97,114,103,117,109, + 101,110,116,32,105,115,32,117,115,101,100,32,116,111,32,105, + 110,102,101,114,32,119,104,101,114,101,32,116,104,101,32,105, + 109,112,111,114,116,32,105,115,32,111,99,99,117,114,114,105, + 110,103,32,102,114,111,109,10,32,32,32,32,116,111,32,104, + 97,110,100,108,101,32,114,101,108,97,116,105,118,101,32,105, + 109,112,111,114,116,115,46,32,84,104,101,32,39,108,111,99, + 97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,115, + 32,105,103,110,111,114,101,100,46,32,84,104,101,10,32,32, + 32,32,39,102,114,111,109,108,105,115,116,39,32,97,114,103, + 117,109,101,110,116,32,115,112,101,99,105,102,105,101,115,32, + 119,104,97,116,32,115,104,111,117,108,100,32,101,120,105,115, + 116,32,97,115,32,97,116,116,114,105,98,117,116,101,115,32, + 111,110,32,116,104,101,32,109,111,100,117,108,101,10,32,32, + 32,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, + 32,40,101,46,103,46,32,96,96,102,114,111,109,32,109,111, + 100,117,108,101,32,105,109,112,111,114,116,32,60,102,114,111, + 109,108,105,115,116,62,96,96,41,46,32,32,84,104,101,32, + 39,108,101,118,101,108,39,10,32,32,32,32,97,114,103,117, + 109,101,110,116,32,114,101,112,114,101,115,101,110,116,115,32, + 116,104,101,32,112,97,99,107,97,103,101,32,108,111,99,97, + 116,105,111,110,32,116,111,32,105,109,112,111,114,116,32,102, + 114,111,109,32,105,110,32,97,32,114,101,108,97,116,105,118, + 101,10,32,32,32,32,105,109,112,111,114,116,32,40,101,46, + 103,46,32,96,96,102,114,111,109,32,46,46,112,107,103,32, + 105,109,112,111,114,116,32,109,111,100,96,96,32,119,111,117, + 108,100,32,104,97,118,101,32,97,32,39,108,101,118,101,108, + 39,32,111,102,32,50,41,46,10,10,32,32,32,32,114,26, + 0,0,0,78,114,142,0,0,0,114,155,0,0,0,41,9, + 114,230,0,0,0,114,241,0,0,0,218,9,112,97,114,116, + 105,116,105,111,110,114,209,0,0,0,114,19,0,0,0,114, + 106,0,0,0,114,9,0,0,0,114,11,0,0,0,114,235, + 0,0,0,41,9,114,21,0,0,0,114,240,0,0,0,218, + 6,108,111,99,97,108,115,114,236,0,0,0,114,211,0,0, + 0,114,111,0,0,0,90,8,103,108,111,98,97,108,115,95, + 114,210,0,0,0,90,7,99,117,116,95,111,102,102,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,10,95, + 95,105,109,112,111,114,116,95,95,93,4,0,0,115,30,0, + 0,0,8,11,10,1,16,2,8,1,12,1,4,1,8,3, + 18,1,4,1,4,1,26,4,30,3,10,1,12,1,4,2, + 114,18,0,0,0,114,244,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,67,0,0,0,115, + 38,0,0,0,116,0,160,1,124,0,161,1,125,1,124,1, + 100,0,117,0,114,15,116,2,100,1,124,0,23,0,131,1, + 130,1,116,3,124,1,131,1,83,0,41,2,78,122,25,110, + 111,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, + 101,32,110,97,109,101,100,32,41,4,114,176,0,0,0,114, + 184,0,0,0,114,88,0,0,0,114,174,0,0,0,41,2, + 114,21,0,0,0,114,110,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,18,95,98,117,105,108, + 116,105,110,95,102,114,111,109,95,110,97,109,101,130,4,0, + 0,115,8,0,0,0,10,1,8,1,12,1,8,1,114,18, + 0,0,0,114,245,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,166,0, + 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, + 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, + 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, + 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, + 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, + 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, + 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, + 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, + 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, + 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, + 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, + 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, + 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, + 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, + 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, + 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, + 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, + 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, + 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, + 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, + 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, + 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, + 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, + 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, + 10,10,32,32,32,32,41,3,114,27,0,0,0,114,102,0, + 0,0,114,72,0,0,0,78,41,15,114,65,0,0,0,114, + 19,0,0,0,114,3,0,0,0,114,106,0,0,0,218,5, + 105,116,101,109,115,114,217,0,0,0,114,87,0,0,0,114, + 176,0,0,0,114,99,0,0,0,114,194,0,0,0,114,156, + 0,0,0,114,162,0,0,0,114,9,0,0,0,114,245,0, + 0,0,114,12,0,0,0,41,10,218,10,115,121,115,95,109, + 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, + 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, + 21,0,0,0,114,111,0,0,0,114,123,0,0,0,114,110, + 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, + 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,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, + 115,101,116,117,112,137,4,0,0,115,40,0,0,0,4,9, + 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, + 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, + 10,2,14,1,4,251,114,18,0,0,0,114,249,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,38,0,0,0,116,0,124,0,124,1, + 131,2,1,0,116,1,106,2,160,3,116,4,161,1,1,0, + 116,1,106,2,160,3,116,5,161,1,1,0,100,1,83,0, + 41,2,122,48,73,110,115,116,97,108,108,32,105,109,112,111, + 114,116,101,114,115,32,102,111,114,32,98,117,105,108,116,105, + 110,32,97,110,100,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,78,41,6,114,249,0,0,0,114,19,0,0, + 0,114,215,0,0,0,114,133,0,0,0,114,176,0,0,0, + 114,194,0,0,0,41,2,114,247,0,0,0,114,248,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,8,95,105,110,115,116,97,108,108,172,4,0,0,115,6, + 0,0,0,10,2,12,2,16,1,114,18,0,0,0,114,250, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,32,0,0,0,100,1,100, + 2,108,0,125,0,124,0,97,1,124,0,160,2,116,3,106, + 4,116,5,25,0,161,1,1,0,100,2,83,0,41,3,122, + 57,73,110,115,116,97,108,108,32,105,109,112,111,114,116,101, + 114,115,32,116,104,97,116,32,114,101,113,117,105,114,101,32, + 101,120,116,101,114,110,97,108,32,102,105,108,101,115,121,115, + 116,101,109,32,97,99,99,101,115,115,114,26,0,0,0,78, + 41,6,218,26,95,102,114,111,122,101,110,95,105,109,112,111, + 114,116,108,105,98,95,101,120,116,101,114,110,97,108,114,140, + 0,0,0,114,250,0,0,0,114,19,0,0,0,114,106,0, + 0,0,114,9,0,0,0,41,1,114,251,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,27,95, + 105,110,115,116,97,108,108,95,101,120,116,101,114,110,97,108, + 95,105,109,112,111,114,116,101,114,115,180,4,0,0,115,6, + 0,0,0,8,3,4,1,20,1,114,18,0,0,0,114,252, + 0,0,0,114,191,0,0,0,114,0,0,0,0,114,25,0, + 0,0,41,4,78,78,114,5,0,0,0,114,26,0,0,0, + 41,54,114,10,0,0,0,114,7,0,0,0,114,27,0,0, + 0,114,102,0,0,0,114,72,0,0,0,114,140,0,0,0, + 114,17,0,0,0,114,22,0,0,0,114,67,0,0,0,114, + 38,0,0,0,114,48,0,0,0,114,23,0,0,0,114,24, + 0,0,0,114,56,0,0,0,114,58,0,0,0,114,61,0, + 0,0,114,73,0,0,0,114,75,0,0,0,114,84,0,0, + 0,114,96,0,0,0,114,101,0,0,0,114,112,0,0,0, + 114,125,0,0,0,114,126,0,0,0,114,105,0,0,0,114, + 156,0,0,0,114,162,0,0,0,114,166,0,0,0,114,120, + 0,0,0,114,107,0,0,0,114,173,0,0,0,114,174,0, + 0,0,114,108,0,0,0,114,176,0,0,0,114,194,0,0, + 0,114,201,0,0,0,114,212,0,0,0,114,214,0,0,0, + 114,216,0,0,0,114,222,0,0,0,90,15,95,69,82,82, + 95,77,83,71,95,80,82,69,70,73,88,114,224,0,0,0, + 114,227,0,0,0,218,6,111,98,106,101,99,116,114,228,0, + 0,0,114,229,0,0,0,114,230,0,0,0,114,235,0,0, + 0,114,241,0,0,0,114,244,0,0,0,114,245,0,0,0, + 114,249,0,0,0,114,250,0,0,0,114,252,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,8,60,109,111,100,117,108,101,62,1,0,0, + 0,115,104,0,0,0,4,0,8,22,4,9,4,1,4,1, + 4,3,8,3,8,8,4,8,4,2,16,3,14,4,14,77, + 14,21,8,16,8,37,8,17,14,11,8,8,8,11,8,12, + 8,19,14,26,16,101,10,26,14,45,8,72,8,17,8,17, + 8,30,8,36,8,45,14,15,14,80,14,85,8,13,8,9, + 10,10,8,47,4,16,8,1,8,2,6,32,8,3,10,16, + 14,15,8,37,10,27,8,37,8,7,8,35,12,8,114,18, + 0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 69dc6cad421c1c..07a42a7dca61e3 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -77,24 +77,25 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,28,0,0,0,129,0,124,0,93,9,125,1,116,0, 124,1,131,1,100,0,107,2,86,0,1,0,113,2,100,1, 83,0,41,2,233,1,0,0,0,78,41,1,218,3,108,101, - 110,41,2,218,2,46,48,218,3,115,101,112,32,32,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,46,0,0,0,115,4,0,0,0,6,128,22,0,243,0, - 0,0,0,114,8,0,0,0,218,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 22,0,0,0,104,0,124,0,93,7,125,1,100,0,124,1, - 155,0,157,2,146,2,113,2,83,0,41,1,250,1,58,169, - 0,41,2,114,5,0,0,0,218,1,115,32,32,114,7,0, + 110,41,2,218,2,46,48,218,3,115,101,112,169,0,114,7, + 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,46,0,0,0,115,4,0,0,0,6, + 128,22,0,243,0,0,0,0,114,9,0,0,0,218,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,22,0,0,0,104,0,124,0,93,7,125, + 1,100,0,124,1,155,0,157,2,146,2,113,2,83,0,41, + 1,250,1,58,114,7,0,0,0,41,2,114,5,0,0,0, + 218,1,115,114,7,0,0,0,114,7,0,0,0,114,8,0, 0,0,218,9,60,115,101,116,99,111,109,112,62,50,0,0, - 0,115,2,0,0,0,22,0,114,9,0,0,0,114,14,0, + 0,115,2,0,0,0,22,0,114,10,0,0,0,114,14,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,3,0,0,0,3,0,0,0, 115,62,0,0,0,116,0,106,1,160,2,116,3,161,1,114, 25,116,0,106,1,160,2,116,4,161,1,114,15,100,1,137, - 1,110,2,100,2,137,1,135,1,102,1,100,3,100,4,132, + 0,110,2,100,2,137,0,135,0,102,1,100,3,100,4,132, 8,125,0,124,0,83,0,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, @@ -110,1483 +111,1505 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,115,101,116,46,78,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,169,1,218,3,107,101,121,128,114,7, - 0,0,0,218,11,95,114,101,108,97,120,95,99,97,115,101, - 67,0,0,0,243,2,0,0,0,20,2,114,9,0,0,0, - 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,1,0,0,0,83,0,0,0,243,4,0,0, - 0,100,1,83,0,41,3,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,78, - 114,12,0,0,0,114,12,0,0,0,114,7,0,0,0,114, - 22,0,0,0,71,0,0,0,243,2,0,0,0,4,2,114, - 9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0,0,32, - 64,114,7,0,0,0,218,16,95,109,97,107,101,95,114,101, - 108,97,120,95,99,97,115,101,60,0,0,0,115,16,0,0, - 0,12,1,12,1,6,1,4,2,12,2,4,7,8,253,4, - 3,114,9,0,0,0,114,30,0,0,0,99,1,0,0,0, - 0,0,0,0,0,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,5,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,78, - 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101, - 115,41,1,218,1,120,32,114,7,0,0,0,218,12,95,112, - 97,99,107,95,117,105,110,116,51,50,79,0,0,0,114,23, - 0,0,0,114,9,0,0,0,114,37,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,243,28,0,0,0,116,0,124,0,131,1,100,1,107, - 2,115,8,74,0,130,1,116,1,160,2,124,0,100,2,161, - 2,83,0,41,4,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,32,0,0,0,114,33,0,0,0, - 78,169,3,114,4,0,0,0,114,34,0,0,0,218,10,102, - 114,111,109,95,98,121,116,101,115,169,1,218,4,100,97,116, - 97,32,114,7,0,0,0,218,14,95,117,110,112,97,99,107, - 95,117,105,110,116,51,50,84,0,0,0,243,4,0,0,0, - 16,2,12,1,114,9,0,0,0,114,43,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114,41,0,0,0, - 32,114,7,0,0,0,218,14,95,117,110,112,97,99,107,95, - 117,105,110,116,49,54,89,0,0,0,114,44,0,0,0,114, - 9,0,0,0,114,46,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,71,0,0,0,115,228, - 0,0,0,124,0,115,4,100,1,83,0,116,0,124,0,131, - 1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4,116, - 5,161,1,115,38,124,3,160,6,116,5,161,1,114,51,124, - 3,160,7,116,8,161,1,112,44,124,1,125,1,116,9,124, - 4,23,0,103,1,125,2,113,24,124,3,160,6,100,4,161, - 1,114,76,124,1,160,10,161,0,124,3,160,10,161,0,107, - 3,114,70,124,3,125,1,124,4,103,1,125,2,113,24,124, - 2,160,11,124,4,161,1,1,0,113,24,124,3,112,79,124, - 1,125,1,124,2,160,11,124,4,161,1,1,0,113,24,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,107,124,2,100,3,25,0,115, - 107,124,1,116,9,23,0,83,0,124,1,116,9,160,12,124, - 2,161,1,23,0,83,0,41,8,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,10,0,0,0,114, - 3,0,0,0,114,0,0,0,0,114,11,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,83, - 0,0,0,243,26,0,0,0,103,0,124,0,93,9,125,1, - 124,1,114,2,124,1,160,0,116,1,161,1,145,2,113,2, - 83,0,114,12,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,41,2,114,5,0,0,0,218,1,112,32,32,114,7, - 0,0,0,218,10,60,108,105,115,116,99,111,109,112,62,119, - 0,0,0,115,2,0,0,0,26,0,114,9,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,78, - 41,13,114,4,0,0,0,218,3,109,97,112,114,19,0,0, - 0,218,15,95,112,97,116,104,95,115,112,108,105,116,114,111, - 111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32,114,7,0,0, - 0,218,10,95,112,97,116,104,95,106,111,105,110,96,0,0, - 0,115,42,0,0,0,4,2,4,1,12,1,8,1,4,1, - 4,1,20,1,20,1,14,1,12,1,10,1,16,1,4,3, - 8,1,12,2,8,2,12,1,14,1,20,1,8,2,14,1, - 114,9,0,0,0,114,67,0,0,0,99,0,0,0,0,0, + 110,118,105,114,111,110,114,7,0,0,0,169,1,218,3,107, + 101,121,114,7,0,0,0,114,8,0,0,0,218,11,95,114, + 101,108,97,120,95,99,97,115,101,67,0,0,0,243,2,0, + 0,0,20,2,114,10,0,0,0,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,1,0,0, + 0,83,0,0,0,243,4,0,0,0,100,1,83,0,41,3, + 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,78,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,22,0,0,0,71,0,0,0,243,2,0,0,0, + 4,2,114,10,0,0,0,41,5,114,16,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,22,0,0,0,114,7,0, + 0,0,114,20,0,0,0,114,8,0,0,0,218,16,95,109, + 97,107,101,95,114,101,108,97,120,95,99,97,115,101,60,0, + 0,0,115,16,0,0,0,12,1,12,1,6,1,4,2,12, + 2,4,7,8,253,4,3,114,10,0,0,0,114,30,0,0, + 0,99,1,0,0,0,0,0,0,0,0,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, + 5,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,78,41,2,218,3,105,110,116,218,8,116, + 111,95,98,121,116,101,115,41,1,218,1,120,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,12,95,112,97, + 99,107,95,117,105,110,116,51,50,79,0,0,0,114,23,0, + 0,0,114,10,0,0,0,114,37,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,243,28,0,0,0,116,0,124,0,131,1,100,1,107,2, + 115,8,74,0,130,1,116,1,160,2,124,0,100,2,161,2, + 83,0,41,4,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,32,0,0,0,114,33,0,0,0,78, + 169,3,114,4,0,0,0,114,34,0,0,0,218,10,102,114, + 111,109,95,98,121,116,101,115,169,1,218,4,100,97,116,97, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 14,95,117,110,112,97,99,107,95,117,105,110,116,51,50,84, + 0,0,0,243,4,0,0,0,16,2,12,1,114,10,0,0, + 0,114,43,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,67,0,0,0,114,38,0,0,0, + 41,4,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,33,0,0,0,78,114,39, + 0,0,0,114,41,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,14,95,117,110,112,97,99,107, + 95,117,105,110,116,49,54,89,0,0,0,114,44,0,0,0, + 114,10,0,0,0,114,46,0,0,0,99,0,0,0,0,0, 0,0,0,0,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,4,114,47,0,0,0,99, + 228,0,0,0,124,0,115,4,100,1,83,0,116,0,124,0, + 131,1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4, + 116,5,161,1,115,38,124,3,160,6,116,5,161,1,114,51, + 124,3,160,7,116,8,161,1,112,44,124,1,125,1,116,9, + 124,4,23,0,103,1,125,2,113,24,124,3,160,6,100,4, + 161,1,114,76,124,1,160,10,161,0,124,3,160,10,161,0, + 107,3,114,70,124,3,125,1,124,4,103,1,125,2,113,24, + 124,2,160,11,124,4,161,1,1,0,113,24,124,3,112,79, + 124,1,125,1,124,2,160,11,124,4,161,1,1,0,113,24, + 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,107,124,2,100,3,25,0, + 115,107,124,1,116,9,23,0,83,0,124,1,116,9,160,12, + 124,2,161,1,23,0,83,0,41,8,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,11,0,0,0, + 114,3,0,0,0,114,0,0,0,0,114,12,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 83,0,0,0,114,48,0,0,0,114,12,0,0,0,114,49, - 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, - 32,32,114,7,0,0,0,114,53,0,0,0,128,0,0,0, - 115,6,0,0,0,6,0,6,1,14,255,114,9,0,0,0, - 114,54,0,0,0,78,41,2,114,59,0,0,0,114,62,0, - 0,0,41,1,114,63,0,0,0,32,114,7,0,0,0,114, - 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, - 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,3,0,0,0,115,66,0, - 0,0,116,0,135,2,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,19, - 100,4,136,2,102,2,83,0,136,2,100,5,124,1,133,2, - 25,0,136,2,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,4,0,0,0,51,0,0,0,115,26,0, - 0,0,129,0,124,0,93,8,125,1,136,2,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,41,3,114,5,0,0,0,114, - 52,0,0,0,114,65,0,0,0,32,32,128,114,7,0,0, - 0,114,8,0,0,0,134,0,0,0,115,4,0,0,0,6, - 128,20,0,114,9,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,10,0, - 0,0,78,114,3,0,0,0,41,2,218,3,109,97,120,114, - 51,0,0,0,41,3,114,65,0,0,0,218,1,105,114,65, - 0,0,0,96,32,64,114,7,0,0,0,218,11,95,112,97, - 116,104,95,115,112,108,105,116,132,0,0,0,115,8,0,0, - 0,22,2,8,1,8,1,28,1,114,9,0,0,0,114,73, - 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19,0,0, - 0,90,4,115,116,97,116,169,1,114,65,0,0,0,32,114, - 7,0,0,0,218,10,95,112,97,116,104,95,115,116,97,116, - 140,0,0,0,115,2,0,0,0,10,7,114,9,0,0,0, - 114,75,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,50,0,0,0,9, - 0,116,0,124,0,131,1,125,2,110,11,35,0,4,0,116, - 1,121,24,1,0,1,0,1,0,89,0,100,1,83,0,37, - 0,124,2,106,2,100,2,64,0,124,1,107,2,83,0,119, - 0,41,4,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,78,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,32,32, - 32,114,7,0,0,0,218,18,95,112,97,116,104,95,105,115, - 95,109,111,100,101,95,116,121,112,101,150,0,0,0,115,16, - 0,0,0,2,2,10,1,2,128,12,1,6,1,2,128,14, - 1,2,254,115,12,0,0,0,129,4,6,0,134,7,16,7, - 152,1,16,7,114,79,0,0,0,99,1,0,0,0,0,0, - 0,0,0,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,3,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,78,41,1,114,79,0,0,0,114,74,0, - 0,0,32,114,7,0,0,0,218,12,95,112,97,116,104,95, - 105,115,102,105,108,101,159,0,0,0,243,2,0,0,0,10, - 2,114,9,0,0,0,114,80,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, - 115,22,0,0,0,124,0,115,6,116,0,160,1,161,0,125, - 0,116,2,124,0,100,1,131,2,83,0,41,3,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,78,41,3,114,19,0,0,0,218,6,103,101,116,99, - 119,100,114,79,0,0,0,114,74,0,0,0,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,105,115,100,105,114,164, - 0,0,0,115,6,0,0,0,4,2,8,1,10,1,114,9, - 0,0,0,114,83,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,62,0, - 0,0,124,0,115,4,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,30,124,1,160,4, - 100,6,161,1,112,30,124,1,160,5,100,4,161,1,83,0, - 41,8,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,3,0,0,0,122,2,92,92,78,41,6,114,19, - 0,0,0,114,56,0,0,0,218,7,114,101,112,108,97,99, - 101,114,4,0,0,0,114,27,0,0,0,114,58,0,0,0, - 41,2,114,65,0,0,0,114,64,0,0,0,32,32,114,7, - 0,0,0,218,11,95,112,97,116,104,95,105,115,97,98,115, - 172,0,0,0,115,8,0,0,0,4,2,4,1,22,1,32, - 1,114,9,0,0,0,114,86,0,0,0,99,1,0,0,0, - 0,0,0,0,0,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, - 2,114,84,0,0,0,78,41,2,114,27,0,0,0,114,51, - 0,0,0,114,74,0,0,0,32,114,7,0,0,0,114,86, - 0,0,0,180,0,0,0,114,81,0,0,0,114,9,0,0, - 0,233,182,1,0,0,99,3,0,0,0,0,0,0,0,0, - 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, - 9,0,116,7,160,8,124,4,100,3,161,2,53,0,125,5, - 124,5,160,9,124,1,161,1,1,0,100,4,4,0,4,0, - 131,3,1,0,110,11,35,0,49,0,115,48,119,4,37,0, - 1,0,1,0,1,0,89,0,1,0,1,0,116,2,160,10, - 124,3,124,0,161,2,1,0,100,4,83,0,35,0,4,0, - 116,11,121,88,1,0,1,0,1,0,9,0,116,2,160,12, - 124,3,161,1,1,0,130,0,35,0,4,0,116,11,121,87, - 1,0,1,0,1,0,89,0,130,0,37,0,37,0,119,0, - 119,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, - 87,0,0,0,90,2,119,98,78,41,13,218,6,102,111,114, - 109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0,0,90,6,117,110,108, - 105,110,107,41,6,114,65,0,0,0,114,42,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,32,32,32,32,32,32,114,7, - 0,0,0,218,13,95,119,114,105,116,101,95,97,116,111,109, - 105,99,185,0,0,0,115,44,0,0,0,16,5,6,1,22, - 1,4,255,2,2,14,3,10,1,12,255,22,128,16,2,2, - 128,12,1,2,1,10,1,2,3,2,128,12,254,2,1,2, - 1,4,128,2,254,2,253,115,69,0,0,0,153,6,62,0, - 159,6,43,3,165,6,62,0,171,4,47,11,175,1,62,0, - 176,3,47,11,179,9,62,0,190,7,65,22,7,193,6,5, - 65,12,6,193,11,1,65,22,7,193,12,7,65,21,13,193, - 19,3,65,22,7,193,23,1,65,21,13,193,24,1,65,22, - 7,114,95,0,0,0,105,126,13,0,0,114,45,0,0,0, - 114,33,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,119,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,5,0,0, - 0,67,0,0,0,115,80,1,0,0,124,1,100,1,117,1, - 114,26,116,0,160,1,100,2,116,2,161,2,1,0,124,2, - 100,1,117,1,114,20,100,3,125,3,116,3,124,3,131,1, - 130,1,124,1,114,24,100,4,110,1,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,57,116,11,100,7,131,1,130,1,100,4,160,12, - 124,6,114,63,124,6,110,1,124,8,124,7,124,9,103,3, - 161,1,125,10,124,2,100,1,117,0,114,86,116,8,106,13, - 106,14,100,8,107,2,114,82,100,4,125,2,110,4,116,8, - 106,13,106,14,125,2,116,15,124,2,131,1,125,2,124,2, - 100,4,107,3,114,112,124,2,160,16,161,0,115,105,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,114,162, - 116,22,124,4,131,1,115,134,116,23,116,4,160,24,161,0, - 124,4,131,2,125,4,124,4,100,5,25,0,100,11,107,2, - 114,152,124,4,100,8,25,0,116,25,118,1,114,152,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,10,0,0, - 0,114,3,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,11,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,19,0,0,0,218,6,102,115,112,97,116,104, - 114,73,0,0,0,218,10,114,112,97,114,116,105,116,105,111, - 110,114,16,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,17,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,89,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,86,0,0,0,114,67,0,0,0,114,82,0,0, - 0,114,51,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, - 96,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,6, - 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,32,32,32,32,32,32,32, - 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, - 101,95,102,114,111,109,95,115,111,117,114,99,101,129,1,0, - 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, - 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,1,8,2,8,1,8,1, - 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, - 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, - 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,40,1, - 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133,2, - 25,0,125,1,100,4,125,3,124,3,115,72,116,6,124,1, - 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,72, - 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,88,116,14,100,8,124,2,155,2,157,2,131,1, - 130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16,0,0, - 0,114,105,0,0,0,114,106,0,0,0,114,107,0,0,0, - 114,19,0,0,0,114,103,0,0,0,114,73,0,0,0,114, - 114,0,0,0,114,50,0,0,0,114,51,0,0,0,114,27, - 0,0,0,114,59,0,0,0,114,4,0,0,0,114,116,0, - 0,0,114,111,0,0,0,218,5,99,111,117,110,116,218,6, - 114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32, - 32,32,32,32,114,7,0,0,0,218,17,115,111,117,114,99, - 101,95,102,114,111,109,95,99,97,99,104,101,200,1,0,0, - 115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1,10, - 1,4,1,2,1,8,255,16,2,8,1,16,1,14,2,18, - 1,114,9,0,0,0,114,128,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, - 115,126,0,0,0,116,0,124,0,131,1,100,1,107,2,114, - 8,100,2,83,0,124,0,160,1,100,3,161,1,92,3,125, - 1,125,2,125,3,124,1,114,28,124,3,160,2,161,0,100, - 4,100,5,133,2,25,0,100,6,107,3,114,30,124,0,83, - 0,9,0,116,3,124,0,131,1,125,4,110,18,35,0,4, - 0,116,4,116,5,102,2,121,62,1,0,1,0,1,0,124, - 0,100,2,100,5,133,2,25,0,125,4,89,0,110,1,37, - 0,116,6,124,4,131,1,114,60,124,4,83,0,124,0,83, - 0,119,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,97,0,0,0,233,253, - 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,4, - 0,0,0,114,104,0,0,0,218,5,108,111,119,101,114,114, - 128,0,0,0,114,107,0,0,0,114,111,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,119,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,32,32,32,32,32,114,7,0,0,0,218,15, - 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,240, - 1,0,0,115,26,0,0,0,12,7,4,1,16,1,24,1, - 4,1,2,1,10,1,2,128,16,1,16,1,2,128,16,1, - 2,254,115,12,0,0,0,159,4,36,0,164,15,53,7,190, - 1,53,7,114,135,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,8,0,0,0,67,0,0,0,115,70,0, - 0,0,124,0,160,0,116,1,116,2,131,1,161,1,114,23, - 9,0,116,3,124,0,131,1,83,0,35,0,4,0,116,4, - 121,34,1,0,1,0,1,0,89,0,100,0,83,0,37,0, - 124,0,160,0,116,1,116,5,131,1,161,1,114,32,124,0, - 83,0,100,0,83,0,119,0,114,69,0,0,0,41,6,114, - 58,0,0,0,218,5,116,117,112,108,101,114,127,0,0,0, - 114,121,0,0,0,114,107,0,0,0,114,113,0,0,0,41, - 1,114,120,0,0,0,32,114,7,0,0,0,218,11,95,103, - 101,116,95,99,97,99,104,101,100,3,2,0,0,115,22,0, - 0,0,14,1,2,1,8,1,2,128,12,1,6,1,2,128, - 14,1,4,1,4,2,2,251,115,12,0,0,0,136,3,12, - 0,140,7,22,7,162,1,22,7,114,137,0,0,0,99,1, + 83,0,0,0,243,26,0,0,0,103,0,124,0,93,9,125, + 1,124,1,114,2,124,1,160,0,116,1,161,1,145,2,113, + 2,83,0,114,7,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,5,0,0,0,218,1,112,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,10,60,108, + 105,115,116,99,111,109,112,62,119,0,0,0,115,2,0,0, + 0,26,0,114,10,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,78,41,13,114,4,0,0,0, + 218,3,109,97,112,114,19,0,0,0,218,15,95,112,97,116, + 104,95,115,112,108,105,116,114,111,111,116,114,27,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,50,0,0,0,114, + 51,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 10,95,112,97,116,104,95,106,111,105,110,96,0,0,0,115, + 42,0,0,0,4,2,4,1,12,1,8,1,4,1,4,1, + 20,1,20,1,14,1,12,1,10,1,16,1,4,3,8,1, + 12,2,8,2,12,1,14,1,20,1,8,2,14,1,114,10, + 0,0,0,114,68,0,0,0,99,0,0,0,0,0,0,0, + 0,0,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,4,114,47,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,83,0, + 0,0,114,48,0,0,0,114,7,0,0,0,114,49,0,0, + 0,41,2,114,5,0,0,0,218,4,112,97,114,116,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,54,0, + 0,0,128,0,0,0,115,6,0,0,0,6,0,6,1,14, + 255,114,10,0,0,0,114,55,0,0,0,78,41,2,114,60, + 0,0,0,114,63,0,0,0,41,1,114,64,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,68, + 0,0,0,126,0,0,0,115,6,0,0,0,10,2,2,1, + 8,255,114,10,0,0,0,99,1,0,0,0,0,0,0,0, + 0,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,19,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,4,0,0,0,51,0,0,0,115,26,0,0, + 0,129,0,124,0,93,8,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,52,0,0,0,169,1,114,66, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,9,0, + 0,0,134,0,0,0,115,4,0,0,0,6,128,20,0,114, + 10,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,11,0,0,0,78,114, + 3,0,0,0,41,2,218,3,109,97,120,114,51,0,0,0, + 41,2,114,66,0,0,0,218,1,105,114,7,0,0,0,114, + 72,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104, + 95,115,112,108,105,116,132,0,0,0,115,8,0,0,0,22, + 2,8,1,8,1,28,1,114,10,0,0,0,114,75,0,0, + 0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19,0,0,0,90, + 4,115,116,97,116,114,72,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,10,95,112,97,116,104, + 95,115,116,97,116,140,0,0,0,115,2,0,0,0,10,7, + 114,10,0,0,0,114,76,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, + 50,0,0,0,9,0,116,0,124,0,131,1,125,2,110,11, + 35,0,4,0,116,1,121,24,1,0,1,0,1,0,89,0, + 100,1,83,0,37,0,124,2,106,2,100,2,64,0,124,1, + 107,2,83,0,119,0,41,4,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,78,41,3,114,76,0,0,0,218,7,79,83,69,114,114, + 111,114,218,7,115,116,95,109,111,100,101,41,3,114,66,0, + 0,0,218,4,109,111,100,101,90,9,115,116,97,116,95,105, + 110,102,111,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,18,95,112,97,116,104,95,105,115,95,109,111,100, + 101,95,116,121,112,101,150,0,0,0,115,16,0,0,0,2, + 2,10,1,2,128,12,1,6,1,2,128,14,1,2,254,115, + 12,0,0,0,129,4,6,0,134,7,16,7,152,1,16,7, + 114,80,0,0,0,99,1,0,0,0,0,0,0,0,0,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,3,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,78,41,1,114,80,0,0,0,114,72,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,12,95, + 112,97,116,104,95,105,115,102,105,108,101,159,0,0,0,243, + 2,0,0,0,10,2,114,10,0,0,0,114,81,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,22,0,0,0,124,0,115,6,116,0, + 160,1,161,0,125,0,116,2,124,0,100,1,131,2,83,0, + 41,3,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,78,41,3,114,19,0,0,0,218, + 6,103,101,116,99,119,100,114,80,0,0,0,114,72,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,11,95,112,97,116,104,95,105,115,100,105,114,164,0,0, + 0,115,6,0,0,0,4,2,8,1,10,1,114,10,0,0, + 0,114,84,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,67,0,0,0,115,62,0,0,0, + 124,0,115,4,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,30,124,1,160,4,100,6, + 161,1,112,30,124,1,160,5,100,4,161,1,83,0,41,8, + 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,3,0,0,0,122,2,92,92,78,41,6,114,19,0,0, + 0,114,57,0,0,0,218,7,114,101,112,108,97,99,101,114, + 4,0,0,0,114,27,0,0,0,114,59,0,0,0,41,2, + 114,66,0,0,0,114,65,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104, + 95,105,115,97,98,115,172,0,0,0,115,8,0,0,0,4, + 2,4,1,22,1,32,1,114,10,0,0,0,114,87,0,0, + 0,99,1,0,0,0,0,0,0,0,0,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,2,114,85,0,0,0,78,41,2,114, + 27,0,0,0,114,51,0,0,0,114,72,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,87,0, + 0,0,180,0,0,0,114,82,0,0,0,114,10,0,0,0, + 233,182,1,0,0,99,3,0,0,0,0,0,0,0,0,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,9, + 0,116,7,160,8,124,4,100,3,161,2,53,0,125,5,124, + 5,160,9,124,1,161,1,1,0,100,4,4,0,4,0,131, + 3,1,0,110,11,35,0,49,0,115,48,119,4,37,0,1, + 0,1,0,1,0,89,0,1,0,1,0,116,2,160,10,124, + 3,124,0,161,2,1,0,100,4,83,0,35,0,4,0,116, + 11,121,88,1,0,1,0,1,0,9,0,116,2,160,12,124, + 3,161,1,1,0,130,0,35,0,4,0,116,11,121,87,1, + 0,1,0,1,0,89,0,130,0,37,0,37,0,119,0,119, + 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,88, + 0,0,0,90,2,119,98,78,41,13,218,6,102,111,114,109, + 97,116,218,2,105,100,114,19,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,86,0,0,0,114,77,0,0,0,90,6,117,110,108,105, + 110,107,41,6,114,66,0,0,0,114,42,0,0,0,114,79, + 0,0,0,90,8,112,97,116,104,95,116,109,112,90,2,102, + 100,218,4,102,105,108,101,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,13,95,119,114,105,116,101,95,97, + 116,111,109,105,99,185,0,0,0,115,44,0,0,0,16,5, + 6,1,22,1,4,255,2,2,14,3,10,1,12,255,22,128, + 16,2,2,128,12,1,2,1,10,1,2,3,2,128,12,254, + 2,1,2,1,4,128,2,254,2,253,115,69,0,0,0,153, + 6,62,0,159,6,43,3,165,6,62,0,171,4,47,11,175, + 1,62,0,176,3,47,11,179,9,62,0,190,7,65,22,7, + 193,6,5,65,12,6,193,11,1,65,22,7,193,12,7,65, + 21,13,193,19,3,65,22,7,193,23,1,65,21,13,193,24, + 1,65,22,7,114,96,0,0,0,105,124,13,0,0,114,45, + 0,0,0,114,33,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,119,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, + 5,0,0,0,67,0,0,0,115,80,1,0,0,124,1,100, + 1,117,1,114,26,116,0,160,1,100,2,116,2,161,2,1, + 0,124,2,100,1,117,1,114,20,100,3,125,3,116,3,124, + 3,131,1,130,1,124,1,114,24,100,4,110,1,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,57,116,11,100,7,131,1,130,1,100, + 4,160,12,124,6,114,63,124,6,110,1,124,8,124,7,124, + 9,103,3,161,1,125,10,124,2,100,1,117,0,114,86,116, + 8,106,13,106,14,100,8,107,2,114,82,100,4,125,2,110, + 4,116,8,106,13,106,14,125,2,116,15,124,2,131,1,125, + 2,124,2,100,4,107,3,114,112,124,2,160,16,161,0,115, + 105,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,114,162,116,22,124,4,131,1,115,134,116,23,116,4,160, + 24,161,0,124,4,131,2,125,4,124,4,100,5,25,0,100, + 11,107,2,114,152,124,4,100,8,25,0,116,25,118,1,114, + 152,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, + 11,0,0,0,114,3,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,12,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,19,0,0,0,218,6,102,115,112, + 97,116,104,114,75,0,0,0,218,10,114,112,97,114,116,105, + 116,105,111,110,114,16,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,63,0,0,0,114,17, + 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,90,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,87,0,0,0,114,68,0,0,0,114, + 83,0,0,0,114,51,0,0,0,218,6,108,115,116,114,105, + 112,218,8,95,80,89,67,65,67,72,69,41,12,114,66,0, + 0,0,90,14,100,101,98,117,103,95,111,118,101,114,114,105, + 100,101,114,97,0,0,0,218,7,109,101,115,115,97,103,101, + 218,4,104,101,97,100,114,67,0,0,0,90,4,98,97,115, + 101,114,6,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,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,17,99,97,99, + 104,101,95,102,114,111,109,95,115,111,117,114,99,101,127,1, + 0,0,115,72,0,0,0,8,18,6,1,2,1,4,255,8, + 2,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,1,8,2,8,1,8, + 1,8,1,14,1,14,1,12,1,10,1,8,9,14,1,24, + 5,12,1,2,4,4,1,8,1,2,1,4,253,12,5,114, + 10,0,0,0,114,122,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,5,0,0,0,67,0,0,0,115,40, + 1,0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133, + 2,25,0,125,1,100,4,125,3,124,3,115,72,116,6,124, + 1,131,1,92,2,125,1,125,5,124,5,116,13,107,3,114, + 72,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,88,116,14,100,8,124,2,155,2,157,2,131, + 1,130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,99,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,98,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,123,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,16,0, + 0,0,114,106,0,0,0,114,107,0,0,0,114,108,0,0, + 0,114,19,0,0,0,114,104,0,0,0,114,75,0,0,0, + 114,115,0,0,0,114,50,0,0,0,114,51,0,0,0,114, + 27,0,0,0,114,60,0,0,0,114,4,0,0,0,114,117, + 0,0,0,114,112,0,0,0,218,5,99,111,117,110,116,218, + 6,114,115,112,108,105,116,114,113,0,0,0,114,111,0,0, + 0,218,9,112,97,114,116,105,116,105,111,110,114,68,0,0, + 0,218,15,83,79,85,82,67,69,95,83,85,70,70,73,88, + 69,83,41,10,114,66,0,0,0,114,119,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,97,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,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,17,115,111,117,114, + 99,101,95,102,114,111,109,95,99,97,99,104,101,198,1,0, + 0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1, + 10,1,4,1,2,1,8,255,16,2,8,1,16,1,14,2, + 18,1,114,10,0,0,0,114,129,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,9,0,0,0,67,0,0, + 0,115,126,0,0,0,116,0,124,0,131,1,100,1,107,2, + 114,8,100,2,83,0,124,0,160,1,100,3,161,1,92,3, + 125,1,125,2,125,3,124,1,114,28,124,3,160,2,161,0, + 100,4,100,5,133,2,25,0,100,6,107,3,114,30,124,0, + 83,0,9,0,116,3,124,0,131,1,125,4,110,18,35,0, + 4,0,116,4,116,5,102,2,121,62,1,0,1,0,1,0, + 124,0,100,2,100,5,133,2,25,0,125,4,89,0,110,1, + 37,0,116,6,124,4,131,1,114,60,124,4,83,0,124,0, + 83,0,119,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,98,0,0,0,233, + 253,255,255,255,233,255,255,255,255,90,2,112,121,41,7,114, + 4,0,0,0,114,105,0,0,0,218,5,108,111,119,101,114, + 114,129,0,0,0,114,108,0,0,0,114,112,0,0,0,114, + 81,0,0,0,41,5,218,13,98,121,116,101,99,111,100,101, + 95,112,97,116,104,114,120,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,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,15,95,103,101,116,95,115,111,117,114,99, + 101,102,105,108,101,238,1,0,0,115,26,0,0,0,12,7, + 4,1,16,1,24,1,4,1,2,1,10,1,2,128,16,1, + 16,1,2,128,16,1,2,254,115,12,0,0,0,159,4,36, + 0,164,15,53,7,190,1,53,7,114,136,0,0,0,99,1, 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,52,0,0,0,9,0,116,0,124,0,131,1, - 106,1,125,1,110,12,35,0,4,0,116,2,121,25,1,0, - 1,0,1,0,100,1,125,1,89,0,110,1,37,0,124,1, - 100,2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,32,32,114,7,0, - 0,0,218,10,95,99,97,108,99,95,109,111,100,101,15,2, - 0,0,115,18,0,0,0,2,2,12,1,2,128,12,1,8, - 1,2,128,8,3,4,1,2,251,115,12,0,0,0,129,5, - 7,0,135,9,18,7,153,1,18,7,114,139,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,52,0,0,0,100,6,135,3,102,1,100, - 2,100,3,132,9,125,1,116,0,100,1,117,1,114,15,116, - 0,106,1,125,2,110,4,100,4,100,5,132,0,125,2,124, - 2,124,1,136,3,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,5,0,0,0,31, - 0,0,0,115,76,0,0,0,124,1,100,0,117,0,114,8, - 124,0,106,0,125,1,110,18,124,0,106,0,124,1,107,3, - 114,26,116,1,100,1,124,0,106,0,155,1,100,2,124,1, - 155,1,157,4,124,1,100,3,141,2,130,1,136,4,124,0, - 124,1,103,2,124,2,162,1,82,0,105,0,124,3,164,1, - 142,1,83,0,41,4,78,122,11,108,111,97,100,101,114,32, - 102,111,114,32,122,15,32,99,97,110,110,111,116,32,104,97, - 110,100,108,101,32,169,1,218,4,110,97,109,101,41,2,114, - 141,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, - 114,41,5,218,4,115,101,108,102,114,141,0,0,0,218,4, - 97,114,103,115,218,6,107,119,97,114,103,115,218,6,109,101, - 116,104,111,100,32,32,32,32,128,114,7,0,0,0,218,19, - 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, - 112,101,114,35,2,0,0,115,18,0,0,0,8,1,8,1, - 10,1,4,1,12,1,2,255,2,1,6,255,24,2,114,9, - 0,0,0,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,7,0,0,0,83,0, - 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, - 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, - 2,124,1,124,2,131,2,131,3,1,0,113,2,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,85,0,0, - 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, - 48,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, - 128,18,1,114,9,0,0,0,122,26,95,99,104,101,99,107, + 0,0,0,115,70,0,0,0,124,0,160,0,116,1,116,2, + 131,1,161,1,114,23,9,0,116,3,124,0,131,1,83,0, + 35,0,4,0,116,4,121,34,1,0,1,0,1,0,89,0, + 100,0,83,0,37,0,124,0,160,0,116,1,116,5,131,1, + 161,1,114,32,124,0,83,0,100,0,83,0,119,0,114,70, + 0,0,0,41,6,114,59,0,0,0,218,5,116,117,112,108, + 101,114,128,0,0,0,114,122,0,0,0,114,108,0,0,0, + 114,114,0,0,0,41,1,114,121,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,11,95,103,101, + 116,95,99,97,99,104,101,100,1,2,0,0,115,22,0,0, + 0,14,1,2,1,8,1,2,128,12,1,6,1,2,128,14, + 1,4,1,4,2,2,251,115,12,0,0,0,136,3,12,0, + 140,7,22,7,162,1,22,7,114,138,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,52,0,0,0,9,0,116,0,124,0,131,1,106, + 1,125,1,110,12,35,0,4,0,116,2,121,25,1,0,1, + 0,1,0,100,1,125,1,89,0,110,1,37,0,124,1,100, + 2,79,0,125,1,124,1,83,0,119,0,41,4,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,88,0,0,0,233,128,0,0,0,78,41,3,114, + 76,0,0,0,114,78,0,0,0,114,77,0,0,0,41,2, + 114,66,0,0,0,114,79,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,10,95,99,97,108,99, + 95,109,111,100,101,13,2,0,0,115,18,0,0,0,2,2, + 12,1,2,128,12,1,8,1,2,128,8,3,4,1,2,251, + 115,12,0,0,0,129,5,7,0,135,9,18,7,153,1,18, + 7,114,140,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,3,0,0,0,115,52,0,0,0, + 100,6,135,0,102,1,100,2,100,3,132,9,125,1,116,0, + 100,1,117,1,114,15,116,0,106,1,125,2,110,4,100,4, + 100,5,132,0,125,2,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,5,0,0,0,31,0,0,0,115,76,0,0,0,124, + 1,100,0,117,0,114,8,124,0,106,0,125,1,110,18,124, + 0,106,0,124,1,107,3,114,26,116,1,100,1,124,0,106, + 0,155,1,100,2,124,1,155,1,157,4,124,1,100,3,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,4,78,122,11, + 108,111,97,100,101,114,32,102,111,114,32,122,15,32,99,97, + 110,110,111,116,32,104,97,110,100,108,101,32,169,1,218,4, + 110,97,109,101,41,2,114,142,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,142,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,7,0, + 0,0,114,8,0,0,0,218,19,95,99,104,101,99,107,95, + 110,97,109,101,95,119,114,97,112,112,101,114,33,2,0,0, + 115,18,0,0,0,8,1,8,1,10,1,4,1,12,1,2, + 255,2,1,6,255,24,2,114,10,0,0,0,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,7,0,0,0,83,0,0,0,115,56,0,0,0, + 100,1,68,0,93,16,125,2,116,0,124,1,124,2,131,2, + 114,18,116,1,124,0,124,2,116,2,124,1,124,2,131,2, + 131,3,1,0,113,2,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,86,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,5,95,119,114,97,112, + 46,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, + 128,18,1,114,10,0,0,0,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,114,69,0,0,0,41,2,218,10,95,98,111, - 111,116,115,116,114,97,112,114,157,0,0,0,41,4,114,146, - 0,0,0,114,147,0,0,0,114,157,0,0,0,114,146,0, - 0,0,96,32,32,64,114,7,0,0,0,218,11,95,99,104, - 101,99,107,95,110,97,109,101,27,2,0,0,115,12,0,0, - 0,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, - 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, - 3,124,1,161,1,92,2,125,2,125,3,124,2,100,2,117, - 0,114,34,116,4,124,3,131,1,114,34,100,3,125,4,116, - 0,160,1,124,4,160,5,124,3,100,4,25,0,161,1,116, - 6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109, - 111,100,117,108,101,40,41,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, - 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, - 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, - 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, - 116,101,97,100,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,7,114,99,0,0,0,114, - 100,0,0,0,114,101,0,0,0,218,11,102,105,110,100,95, - 108,111,97,100,101,114,114,4,0,0,0,114,89,0,0,0, - 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, - 5,114,143,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,32,32,32,32,32,114,7,0,0, - 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, - 115,104,105,109,58,2,0,0,115,16,0,0,0,6,7,2, - 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, - 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, - 0,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,32,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,53,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,81,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,32,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,142,0,0, - 0,114,4,0,0,0,218,8,69,79,70,69,114,114,111,114, - 114,43,0,0,0,41,6,114,42,0,0,0,114,141,0,0, - 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, - 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, - 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, - 115,115,105,102,121,95,112,121,99,78,2,0,0,115,28,0, - 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, - 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, - 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7, - 133,2,25,0,131,1,124,2,100,3,64,0,107,3,114,58, - 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,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,169,0,0, - 0,233,12,0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4, - 114,43,0,0,0,114,158,0,0,0,114,172,0,0,0,114, - 142,0,0,0,41,6,114,42,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,141,0,0,0,114,174,0,0,0, - 114,117,0,0,0,32,32,32,32,32,32,114,7,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,111,2,0,0,115,18,0, - 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, - 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, - 0,0,0,0,0,0,0,0,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,19,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,169,0,0, - 0,114,168,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,142,0,0,0,41,4, - 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, - 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, - 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, - 95,104,97,115,104,95,112,121,99,139,2,0,0,115,14,0, - 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, - 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, - 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, - 124,4,116,3,131,2,114,28,116,4,160,5,100,1,124,2, - 161,2,1,0,124,3,100,2,117,1,114,26,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, - 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,141,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,172,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,142,0,0,0,114,89,0,0,0,41,5,114,42,0,0, - 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, - 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, - 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, - 111,100,101,163,2,0,0,115,18,0,0,0,10,2,10,1, - 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, - 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, - 0,0,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,3,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,78,41,6,218, - 9,98,121,116,101,97,114,114,97,121,114,171,0,0,0,218, - 6,101,120,116,101,110,100,114,37,0,0,0,114,183,0,0, - 0,218,5,100,117,109,112,115,41,4,114,187,0,0,0,218, - 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, - 32,32,32,32,114,7,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,176,2,0,0,115,12,0,0,0,8,2,14,1,14,1, - 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, - 84,99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78, - 41,7,114,189,0,0,0,114,171,0,0,0,114,190,0,0, - 0,114,37,0,0,0,114,4,0,0,0,114,183,0,0,0, - 114,191,0,0,0,41,5,114,187,0,0,0,114,180,0,0, - 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, - 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, - 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, - 99,186,2,0,0,115,14,0,0,0,8,2,12,1,14,1, - 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, - 0,0,99,1,0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32, - 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, - 115,111,117,114,99,101,197,2,0,0,115,10,0,0,0,8, - 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, - 0,0,0,169,2,114,163,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,8,0,0,0,67,0,0,0,115,60,1,0,0, - 124,1,100,1,117,0,114,29,100,2,125,1,116,0,124,2, - 100,3,131,2,114,28,9,0,124,2,160,1,124,0,161,1, - 125,1,110,39,35,0,4,0,116,2,121,157,1,0,1,0, - 1,0,89,0,110,30,37,0,110,28,116,3,160,4,124,1, - 161,1,125,1,116,5,124,1,131,1,115,57,9,0,116,6, - 116,3,160,7,161,0,124,1,131,2,125,1,110,10,35,0, - 4,0,116,8,121,156,1,0,1,0,1,0,89,0,110,1, - 37,0,116,9,160,10,124,0,124,2,124,1,100,4,166,3, - 125,4,100,5,124,4,95,11,124,2,100,1,117,0,114,99, - 116,12,131,0,68,0,93,21,92,2,125,5,125,6,124,1, - 160,13,116,14,124,6,131,1,161,1,114,96,124,5,124,0, - 124,1,131,2,125,2,124,2,124,4,95,15,1,0,113,99, - 113,75,100,1,83,0,124,3,116,16,117,0,114,131,116,0, - 124,2,100,6,131,2,114,130,9,0,124,2,160,17,124,0, - 161,1,125,7,110,10,35,0,4,0,116,2,121,155,1,0, - 1,0,1,0,89,0,110,10,37,0,124,7,114,130,103,0, - 124,4,95,18,110,3,124,3,124,4,95,18,124,4,106,18, - 103,0,107,2,114,153,124,1,114,153,116,19,124,1,131,1, - 100,7,25,0,125,8,124,4,106,18,160,20,124,8,161,1, - 1,0,124,4,83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0, - 0,0,114,142,0,0,0,114,19,0,0,0,114,103,0,0, - 0,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, - 114,76,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,136,0,0,0,114,163,0,0, - 0,218,9,95,80,79,80,85,76,65,84,69,114,205,0,0, - 0,114,201,0,0,0,114,73,0,0,0,114,61,0,0,0, - 41,9,114,141,0,0,0,90,8,108,111,99,97,116,105,111, - 110,114,163,0,0,0,114,201,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,205,0,0,0,90,7, - 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, - 114,7,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,214,2, - 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, - 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, - 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, - 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, - 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, - 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, - 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, - 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, - 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, - 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, - 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, - 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, - 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, - 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, - 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, - 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,52,0,0,0,9,0,116,0,160,1, - 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, - 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, - 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, - 111,112,101,110,95,114,101,103,105,115,116,114,121,43,3,0, - 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, - 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, - 7,153,1,24,7,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,9,0,0,0,67,0,0,0, - 115,136,0,0,0,124,0,106,0,114,7,124,0,106,1,125, - 2,110,3,124,0,106,2,125,2,124,2,160,3,124,1,100, - 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, - 3,166,2,125,3,9,0,124,0,160,6,124,3,161,1,53, - 0,125,4,116,7,160,8,124,4,100,4,161,2,125,5,100, - 0,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, - 48,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,5,83,0,35,0,4,0,116,9,121,67,1,0,1, - 0,1,0,89,0,100,0,83,0,37,0,119,0,41,5,78, - 122,5,37,100,46,37,100,114,45,0,0,0,41,2,114,162, - 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, - 114,10,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,89,0,0,0,114,16,0,0,0, - 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,215, - 0,0,0,114,214,0,0,0,90,10,81,117,101,114,121,86, - 97,108,117,101,114,76,0,0,0,41,6,218,3,99,108,115, - 114,162,0,0,0,90,12,114,101,103,105,115,116,114,121,95, - 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, - 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, - 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, - 105,115,116,114,121,50,3,0,0,115,34,0,0,0,6,2, - 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, - 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, - 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, - 0,171,4,47,11,175,1,56,0,176,3,47,11,179,3,56, - 0,184,7,65,2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124, - 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, - 11,100,0,83,0,9,0,116,1,124,4,131,1,1,0,110, - 11,35,0,4,0,116,2,121,60,1,0,1,0,1,0,89, - 0,100,0,83,0,37,0,116,3,131,0,68,0,93,26,92, - 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, - 1,114,57,116,6,160,7,124,1,124,5,124,1,124,4,131, - 2,124,4,100,1,166,3,125,7,124,7,2,0,1,0,83, - 0,113,31,100,0,83,0,119,0,41,2,78,114,203,0,0, - 0,41,8,114,222,0,0,0,114,75,0,0,0,114,76,0, - 0,0,114,207,0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114, - 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, - 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, - 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,65,3,0, - 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, - 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, - 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, - 0,140,4,17,0,145,7,27,7,188,1,27,7,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,67, - 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, - 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, - 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, - 83,0,41,3,122,106,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, + 119,114,97,112,114,70,0,0,0,41,2,218,10,95,98,111, + 111,116,115,116,114,97,112,114,159,0,0,0,41,3,114,148, + 0,0,0,114,149,0,0,0,114,159,0,0,0,114,7,0, + 0,0,114,147,0,0,0,114,8,0,0,0,218,11,95,99, + 104,101,99,107,95,110,97,109,101,25,2,0,0,115,12,0, + 0,0,14,8,8,10,8,1,8,2,10,6,4,1,114,10, + 0,0,0,114,161,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,67,0,0,0,115,72,0, + 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, + 160,3,124,1,161,1,92,2,125,2,125,3,124,2,100,2, + 117,0,114,34,116,4,124,3,131,1,114,34,100,3,125,4, + 116,0,160,1,124,4,160,5,124,3,100,4,25,0,161,1, + 116,6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95, + 109,111,100,117,108,101,40,41,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, + 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, + 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,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, - 122,112,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,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, - 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, - 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, - 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, - 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, - 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, - 105,110,100,95,109,111,100,117,108,101,81,3,0,0,115,14, - 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, - 2,114,9,0,0,0,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,169,2,78,78,114,69,0, - 0,0,41,15,114,149,0,0,0,114,148,0,0,0,114,150, - 0,0,0,114,151,0,0,0,114,218,0,0,0,114,217,0, - 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218, - 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, - 88,69,83,114,216,0,0,0,218,12,115,116,97,116,105,99, - 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, - 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, - 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,213,0,0,0,31,3,0,0,115,30,0,0,0,8, - 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, - 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, - 0,0,114,213,0,0,0,99,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,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,31,124,4,100,5,107,3,83, - 0,41,7,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,3,0,0,0,114,97,0,0,0,114,0,0,0, - 0,114,45,0,0,0,218,8,95,95,105,110,105,116,95,95, - 78,41,4,114,73,0,0,0,114,202,0,0,0,114,125,0, - 0,0,114,104,0,0,0,41,5,114,143,0,0,0,114,162, - 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, - 0,103,3,0,0,115,8,0,0,0,18,3,16,1,14,1, - 16,1,114,9,0,0,0,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,1,0, - 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,169, - 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, - 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, - 101,111,3,0,0,243,2,0,0,0,4,0,114,9,0,0, - 0,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, + 115,116,101,97,100,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,7,114,100,0,0,0, + 114,101,0,0,0,114,102,0,0,0,218,11,102,105,110,100, + 95,108,111,97,100,101,114,114,4,0,0,0,114,90,0,0, + 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, + 41,5,114,144,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,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,17,95,102,105,110,100,95,109, + 111,100,117,108,101,95,115,104,105,109,56,2,0,0,115,16, + 0,0,0,6,7,2,2,4,254,14,6,16,1,4,1,22, + 1,4,1,114,10,0,0,0,114,168,0,0,0,99,3,0, + 0,0,0,0,0,0,0,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,32,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,53,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,81,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,32,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,160,0,0,0, + 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, + 103,101,114,143,0,0,0,114,4,0,0,0,218,8,69,79, + 70,69,114,114,111,114,114,43,0,0,0,41,6,114,42,0, + 0,0,114,142,0,0,0,218,11,101,120,99,95,100,101,116, + 97,105,108,115,90,5,109,97,103,105,99,114,118,0,0,0, + 114,17,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,13,95,99,108,97,115,115,105,102,121,95, + 112,121,99,76,2,0,0,115,28,0,0,0,12,16,8,1, + 16,1,12,1,16,1,12,1,10,1,12,1,8,1,16,1, + 8,2,16,1,16,1,4,1,114,10,0,0,0,114,177,0, + 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0,131,1, + 124,2,100,3,64,0,107,3,114,58,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,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,171,0,0,0,233,12,0,0,0, + 114,31,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,169,0, + 0,0,78,114,170,0,0,0,41,4,114,43,0,0,0,114, + 160,0,0,0,114,174,0,0,0,114,143,0,0,0,41,6, + 114,42,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,142,0,0,0,114,176,0,0,0,114,118,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,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,109,2,0,0,115,18,0,0,0, + 24,19,10,1,12,1,16,1,8,1,22,1,2,255,22,2, + 8,254,114,10,0,0,0,114,181,0,0,0,99,4,0,0, + 0,0,0,0,0,0,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,19,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,171,0,0,0,114, + 170,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,143,0,0,0,41,4,114,42, + 0,0,0,218,11,115,111,117,114,99,101,95,104,97,115,104, + 114,142,0,0,0,114,176,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,18,95,118,97,108,105, + 100,97,116,101,95,104,97,115,104,95,112,121,99,137,2,0, + 0,115,14,0,0,0,16,17,2,1,8,1,4,255,2,2, + 6,254,4,255,114,10,0,0,0,114,183,0,0,0,99,4, 0,0,0,0,0,0,0,0,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,18,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, - 142,0,0,0,114,89,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,143,0,0,0,218,6,109,111,100, - 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, - 218,11,101,120,101,99,95,109,111,100,117,108,101,114,3,0, - 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, - 20,2,114,9,0,0,0,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,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,2,122,26,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,78,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,143,0,0,0,114,162,0,0,0,32,32,114, - 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, - 101,122,3,0,0,115,2,0,0,0,12,3,114,9,0,0, - 0,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,205,0,0,0,114,238,0,0,0,114,244,0, - 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,234,0,0,0,98,3,0,0,115,12,0,0,0,8, - 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, - 114,234,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4, - 0,0,0,116,0,130,1,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,143,0,0,0,114, - 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, - 104,95,109,116,105,109,101,130,3,0,0,115,2,0,0,0, - 4,6,114,9,0,0,0,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,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,3,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,192,0, - 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, - 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, - 116,115,138,3,0,0,115,2,0,0,0,14,12,114,9,0, - 0,0,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,67,0,0,0, - 115,12,0,0,0,124,0,160,0,124,2,124,3,161,2,83, - 0,41,2,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,78,41,1,218,8,115,101, - 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, - 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, - 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, - 97,99,104,101,95,98,121,116,101,99,111,100,101,152,3,0, - 0,115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0, - 114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, - 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, - 0,0,0,162,3,0,0,114,239,0,0,0,114,9,0,0, - 0,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,8,0,0,0,67,0,0,0,115,70,0, - 0,0,124,0,160,0,124,1,161,1,125,2,9,0,124,0, - 160,1,124,2,161,1,125,3,116,4,124,3,131,1,83,0, - 35,0,4,0,116,2,121,34,1,0,125,4,1,0,116,3, - 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, - 126,4,119,1,37,0,119,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,140,0,0,0,78,41, - 5,114,202,0,0,0,218,8,103,101,116,95,100,97,116,97, - 114,76,0,0,0,114,142,0,0,0,114,199,0,0,0,41, - 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, - 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, - 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, - 169,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, - 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, - 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, - 150,7,29,7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,67,0,0,0,115,22,0,0, - 0,116,0,160,1,116,2,124,1,124,2,100,1,100,2,124, - 3,100,3,166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0, - 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, - 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, - 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, - 111,117,114,99,101,95,116,111,95,99,111,100,101,179,3,0, - 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, - 0,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,115,76,0,0,0,116,0,160,1,124,0,161,1, + 125,4,116,2,124,4,116,3,131,2,114,28,116,4,160,5, + 100,1,124,2,161,2,1,0,124,3,100,2,117,1,114,26, + 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,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,142, + 0,0,0,114,66,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,160,0,0,0,114,174,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,143,0,0,0,114,90,0,0,0,41,5, + 114,42,0,0,0,114,142,0,0,0,114,133,0,0,0,114, + 135,0,0,0,218,4,99,111,100,101,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,17,95,99,111,109,112, + 105,108,101,95,98,121,116,101,99,111,100,101,161,2,0,0, + 115,18,0,0,0,10,2,10,1,12,1,8,1,12,1,4, + 1,10,2,4,1,6,255,114,10,0,0,0,114,190,0,0, + 0,99,3,0,0,0,0,0,0,0,0,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,3,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,78,41,6,218,9,98,121,116,101,97,114, + 114,97,121,114,173,0,0,0,218,6,101,120,116,101,110,100, + 114,37,0,0,0,114,185,0,0,0,218,5,100,117,109,112, + 115,41,4,114,189,0,0,0,218,5,109,116,105,109,101,114, + 180,0,0,0,114,42,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,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, + 174,2,0,0,115,12,0,0,0,8,2,14,1,14,1,14, + 1,16,1,4,1,114,10,0,0,0,114,195,0,0,0,84, + 99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,171,0,0,0,78,41, + 7,114,191,0,0,0,114,173,0,0,0,114,192,0,0,0, + 114,37,0,0,0,114,4,0,0,0,114,185,0,0,0,114, + 193,0,0,0,41,5,114,189,0,0,0,114,182,0,0,0, + 90,7,99,104,101,99,107,101,100,114,42,0,0,0,114,17, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,17,95,99,111,100,101,95,116,111,95,104,97,115, + 104,95,112,121,99,184,2,0,0,115,14,0,0,0,8,2, + 12,1,14,1,16,1,10,1,16,1,4,1,114,10,0,0, + 0,114,196,0,0,0,99,1,0,0,0,0,0,0,0,0, + 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,92, + 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,197,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,195, + 2,0,0,115,10,0,0,0,8,5,12,1,10,1,12,1, + 20,1,114,10,0,0,0,114,201,0,0,0,169,2,114,165, + 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,8,0,0,0, + 67,0,0,0,115,60,1,0,0,124,1,100,1,117,0,114, + 29,100,2,125,1,116,0,124,2,100,3,131,2,114,28,9, + 0,124,2,160,1,124,0,161,1,125,1,110,39,35,0,4, + 0,116,2,121,157,1,0,1,0,1,0,89,0,110,30,37, + 0,110,28,116,3,160,4,124,1,161,1,125,1,116,5,124, + 1,131,1,115,57,9,0,116,6,116,3,160,7,161,0,124, + 1,131,2,125,1,110,10,35,0,4,0,116,8,121,156,1, + 0,1,0,1,0,89,0,110,1,37,0,116,9,160,10,124, + 0,124,2,124,1,100,4,166,3,125,4,100,5,124,4,95, + 11,124,2,100,1,117,0,114,99,116,12,131,0,68,0,93, + 21,92,2,125,5,125,6,124,1,160,13,116,14,124,6,131, + 1,161,1,114,96,124,5,124,0,124,1,131,2,125,2,124, + 2,124,4,95,15,1,0,113,99,113,75,100,1,83,0,124, + 3,116,16,117,0,114,131,116,0,124,2,100,6,131,2,114, + 130,9,0,124,2,160,17,124,0,161,1,125,7,110,10,35, + 0,4,0,116,2,121,155,1,0,1,0,1,0,89,0,110, + 10,37,0,124,7,114,130,103,0,124,4,95,18,110,3,124, + 3,124,4,95,18,124,4,106,18,103,0,107,2,114,153,124, + 1,114,153,116,19,124,1,131,1,100,7,25,0,125,8,124, + 4,106,18,160,20,124,8,161,1,1,0,124,4,83,0,119, + 0,119,0,119,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, + 21,114,154,0,0,0,114,204,0,0,0,114,143,0,0,0, + 114,19,0,0,0,114,104,0,0,0,114,87,0,0,0,114, + 68,0,0,0,114,83,0,0,0,114,77,0,0,0,114,160, + 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,59,0,0,0, + 114,137,0,0,0,114,165,0,0,0,218,9,95,80,79,80, + 85,76,65,84,69,114,207,0,0,0,114,203,0,0,0,114, + 75,0,0,0,114,62,0,0,0,41,9,114,142,0,0,0, + 90,8,108,111,99,97,116,105,111,110,114,165,0,0,0,114, + 203,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,207,0,0,0,90,7,100,105,114,110,97,109,101, + 114,7,0,0,0,114,7,0,0,0,114,8,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,212,2,0,0,115,96,0,0, + 0,8,12,4,4,10,1,2,2,12,1,2,128,12,1,4, + 1,2,128,2,251,10,7,8,1,2,1,16,1,2,128,12, + 1,4,1,2,128,16,8,6,1,8,3,14,1,14,1,10, + 1,6,1,4,1,2,253,4,5,8,3,10,2,2,1,12, + 1,2,128,12,1,4,1,2,128,4,2,6,1,2,128,6, + 2,10,1,4,1,12,1,12,1,4,2,2,244,2,228,2, + 249,115,44,0,0,0,140,5,18,0,146,7,27,7,167,7, + 47,0,175,7,56,7,193,45,5,65,51,0,193,51,7,65, + 60,7,194,27,1,65,60,7,194,28,1,56,7,194,29,1, + 27,7,114,214,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,64,0,0,0,115,88,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, + 4,100,3,90,5,101,6,111,15,100,4,101,7,118,0,90, + 8,101,9,100,5,100,6,132,0,131,1,90,10,101,11,100, + 7,100,8,132,0,131,1,90,12,101,11,100,14,100,10,100, + 11,132,1,131,1,90,13,101,11,100,15,100,12,100,13,132, + 1,131,1,90,14,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,122,6,95,100,46,112,121,100,99,1,0,0,0,0, + 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, + 52,0,0,0,9,0,116,0,160,1,116,0,106,2,124,0, + 161,2,83,0,35,0,4,0,116,3,121,25,1,0,1,0, + 1,0,116,0,160,1,116,0,106,4,124,0,161,2,6,0, + 89,0,83,0,37,0,119,0,114,70,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,77,0,0,0,90,18,72,75,69,89,95,76, + 79,67,65,76,95,77,65,67,72,73,78,69,114,20,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, + 41,3,0,0,115,14,0,0,0,2,2,14,1,2,128,12, + 1,18,1,2,128,2,255,115,12,0,0,0,129,6,8,0, + 136,14,24,7,153,1,24,7,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,9,0,0,0,67, - 0,0,0,115,28,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,9,0,116,1,124,2,131,1,125,8, - 110,13,35,0,4,0,116,2,144,1,121,13,1,0,1,0, - 1,0,100,1,125,8,89,0,110,147,37,0,9,0,124,0, - 160,3,124,2,161,1,125,9,110,11,35,0,4,0,116,4, - 144,1,121,12,1,0,1,0,1,0,89,0,110,129,37,0, - 116,5,124,9,100,4,25,0,131,1,125,3,9,0,124,0, - 160,6,124,8,161,1,125,10,110,11,35,0,4,0,116,4, - 144,1,121,11,1,0,1,0,1,0,89,0,110,105,37,0, - 124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8, - 107,3,125,7,116,9,106,10,100,10,107,3,114,140,124,7, - 115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0,124,1, - 124,11,131,5,1,0,110,13,35,0,4,0,116,15,116,16, - 102,2,144,1,121,10,1,0,1,0,1,0,89,0,110,16, - 37,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,114,189,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,1, - 115,7,124,8,100,1,117,1,144,1,114,7,124,3,100,1, - 117,1,144,1,114,7,124,6,114,233,124,5,100,1,117,0, - 114,226,116,9,160,11,124,4,161,1,125,5,116,23,124,14, - 124,5,124,7,131,3,125,10,110,8,116,24,124,14,124,3, - 116,25,124,4,131,1,131,3,125,10,9,0,124,0,160,26, - 124,2,124,8,124,10,161,3,1,0,124,14,83,0,35,0, - 4,0,116,2,144,1,121,9,1,0,1,0,1,0,89,0, - 124,14,83,0,37,0,124,14,83,0,119,0,119,0,119,0, - 119,0,119,0,41,16,122,190,67,111,110,99,114,101,116,101, + 0,0,0,115,136,0,0,0,124,0,106,0,114,7,124,0, + 106,1,125,2,110,3,124,0,106,2,125,2,124,2,160,3, + 124,1,100,1,116,4,106,5,100,0,100,2,133,2,25,0, + 22,0,100,3,166,2,125,3,9,0,124,0,160,6,124,3, + 161,1,53,0,125,4,116,7,160,8,124,4,100,4,161,2, + 125,5,100,0,4,0,4,0,131,3,1,0,110,11,35,0, + 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, + 1,0,1,0,124,5,83,0,35,0,4,0,116,9,121,67, + 1,0,1,0,1,0,89,0,100,0,83,0,37,0,119,0, + 41,5,78,122,5,37,100,46,37,100,114,45,0,0,0,41, + 2,114,164,0,0,0,90,11,115,121,115,95,118,101,114,115, + 105,111,110,114,11,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,90,0,0,0,114,16, + 0,0,0,218,12,118,101,114,115,105,111,110,95,105,110,102, + 111,114,217,0,0,0,114,216,0,0,0,90,10,81,117,101, + 114,121,86,97,108,117,101,114,77,0,0,0,41,6,218,3, + 99,108,115,114,164,0,0,0,90,12,114,101,103,105,115,116, + 114,121,95,107,101,121,114,21,0,0,0,90,4,104,107,101, + 121,218,8,102,105,108,101,112,97,116,104,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,16,95,115,101,97, + 114,99,104,95,114,101,103,105,115,116,114,121,48,3,0,0, + 115,34,0,0,0,6,2,8,1,6,2,6,1,16,1,6, + 255,2,2,12,1,12,1,12,255,22,128,4,4,2,128,12, + 254,6,1,2,128,2,255,115,39,0,0,0,153,5,56,0, + 158,7,43,3,165,6,56,0,171,4,47,11,175,1,56,0, + 176,3,47,11,179,3,56,0,184,7,65,2,7,193,3,1, + 65,2,7,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,67,0,0, + 0,115,122,0,0,0,124,0,160,0,124,1,161,1,125,4, + 124,4,100,0,117,0,114,11,100,0,83,0,9,0,116,1, + 124,4,131,1,1,0,110,11,35,0,4,0,116,2,121,60, + 1,0,1,0,1,0,89,0,100,0,83,0,37,0,116,3, + 131,0,68,0,93,26,92,2,125,5,125,6,124,4,160,4, + 116,5,124,6,131,1,161,1,114,57,116,6,160,7,124,1, + 124,5,124,1,124,4,131,2,124,4,100,1,166,3,125,7, + 124,7,2,0,1,0,83,0,113,31,100,0,83,0,119,0, + 41,2,78,114,205,0,0,0,41,8,114,224,0,0,0,114, + 76,0,0,0,114,77,0,0,0,114,209,0,0,0,114,59, + 0,0,0,114,137,0,0,0,114,160,0,0,0,218,16,115, + 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,41, + 8,114,222,0,0,0,114,164,0,0,0,114,66,0,0,0, + 218,6,116,97,114,103,101,116,114,223,0,0,0,114,165,0, + 0,0,114,213,0,0,0,114,211,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,9,102,105,110, + 100,95,115,112,101,99,63,3,0,0,115,38,0,0,0,10, + 2,8,1,4,1,2,1,10,1,2,128,12,1,6,1,2, + 128,14,1,14,1,6,1,8,1,2,1,6,254,8,3,2, + 252,4,255,2,254,115,12,0,0,0,140,4,17,0,145,7, + 27,7,188,1,27,7,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,67,0,0,0,115,42,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, + 3,124,1,124,2,161,2,125,3,124,3,100,2,117,1,114, + 19,124,3,106,4,83,0,100,2,83,0,41,3,122,106,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,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,122,112,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,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,78,169,5,114,100, + 0,0,0,114,101,0,0,0,114,102,0,0,0,114,227,0, + 0,0,114,165,0,0,0,169,4,114,222,0,0,0,114,164, + 0,0,0,114,66,0,0,0,114,211,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,11,102,105, + 110,100,95,109,111,100,117,108,101,79,3,0,0,115,14,0, + 0,0,6,7,2,2,4,254,12,3,8,1,6,1,4,2, + 114,10,0,0,0,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,169,2,78,78,114,70,0,0, + 0,41,15,114,151,0,0,0,114,150,0,0,0,114,152,0, + 0,0,114,153,0,0,0,114,220,0,0,0,114,219,0,0, + 0,218,11,95,77,83,95,87,73,78,68,79,87,83,218,18, + 69,88,84,69,78,83,73,79,78,95,83,85,70,70,73,88, + 69,83,114,218,0,0,0,218,12,115,116,97,116,105,99,109, + 101,116,104,111,100,114,217,0,0,0,218,11,99,108,97,115, + 115,109,101,116,104,111,100,114,224,0,0,0,114,227,0,0, + 0,114,230,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,215,0,0,0,29, + 3,0,0,115,30,0,0,0,8,0,4,2,2,3,2,255, + 2,4,2,255,12,3,2,2,10,1,2,6,10,1,2,14, + 12,1,2,15,16,1,114,10,0,0,0,114,215,0,0,0, + 99,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,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,31,124,4,100,5,107,3,83,0,41,7,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,3,0,0,0, + 114,98,0,0,0,114,0,0,0,0,114,45,0,0,0,218, + 8,95,95,105,110,105,116,95,95,78,41,4,114,75,0,0, + 0,114,204,0,0,0,114,126,0,0,0,114,105,0,0,0, + 41,5,114,144,0,0,0,114,164,0,0,0,114,121,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,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,207,0,0,0,101, + 3,0,0,115,8,0,0,0,18,3,16,1,14,1,16,1, + 114,10,0,0,0,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,1,0,0,0, + 67,0,0,0,114,24,0,0,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,7,0,0,0,169,2,114, + 144,0,0,0,114,211,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,13,99,114,101,97,116,101, + 95,109,111,100,117,108,101,109,3,0,0,243,2,0,0,0, + 4,0,114,10,0,0,0,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,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,18,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,151,0,0,0,114,143,0,0,0,114,90,0,0,0,114, + 160,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,157,0,0,0,41,3,114,144,0,0, + 0,218,6,109,111,100,117,108,101,114,189,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,101, + 120,101,99,95,109,111,100,117,108,101,112,3,0,0,115,12, + 0,0,0,12,2,8,1,4,1,8,1,4,255,20,2,114, + 10,0,0,0,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,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,2,122,26,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,78,41,2,114,160,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,144,0,0,0,114,164,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,11,108,111,97,100,95, + 109,111,100,117,108,101,120,3,0,0,115,2,0,0,0,12, + 3,114,10,0,0,0,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,151,0,0,0,114,150,0,0,0,114,152, + 0,0,0,114,153,0,0,0,114,207,0,0,0,114,240,0, + 0,0,114,246,0,0,0,114,249,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,236,0,0,0,96,3,0,0,115,12,0,0,0,8,0, + 4,2,8,3,8,8,8,3,12,8,114,10,0,0,0,114, + 236,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4,0, + 0,0,116,0,130,1,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,77,0,0,0,169,2,114,144,0,0,0,114,66, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,10,112,97,116,104,95,109,116,105,109,101,128,3, + 0,0,115,2,0,0,0,4,6,114,10,0,0,0,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,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, + 3,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,194,0,0,0,78,41,1,114,252,0,0, + 0,114,251,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,10,112,97,116,104,95,115,116,97,116, + 115,136,3,0,0,115,2,0,0,0,14,12,114,10,0,0, + 0,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,67,0,0,0,115, + 12,0,0,0,124,0,160,0,124,2,124,3,161,2,83,0, + 41,2,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,78,41,1,218,8,115,101,116, + 95,100,97,116,97,41,4,114,144,0,0,0,114,135,0,0, + 0,90,10,99,97,99,104,101,95,112,97,116,104,114,42,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,15,95,99,97,99,104,101,95,98,121,116,101,99,111, + 100,101,150,3,0,0,115,2,0,0,0,12,8,114,10,0, + 0,0,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,1,0,0, + 0,67,0,0,0,114,24,0,0,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,7,0,0,0,41,3,114,144,0,0, + 0,114,66,0,0,0,114,42,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,254,0,0,0,160, + 3,0,0,114,241,0,0,0,114,10,0,0,0,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,8,0,0,0,67,0,0,0,115,70,0,0,0,124,0, + 160,0,124,1,161,1,125,2,9,0,124,0,160,1,124,2, + 161,1,125,3,116,4,124,3,131,1,83,0,35,0,4,0, + 116,2,121,34,1,0,125,4,1,0,116,3,100,1,124,1, + 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, + 37,0,119,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,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,192,0,0,0,114,182, - 0,0,0,114,168,0,0,0,114,3,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,141,0, - 0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0, - 0,0,114,251,0,0,0,114,76,0,0,0,114,34,0,0, - 0,114,254,0,0,0,114,175,0,0,0,218,10,109,101,109, - 111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77, - 65,71,73,67,95,78,85,77,66,69,82,114,181,0,0,0, - 114,179,0,0,0,114,142,0,0,0,114,173,0,0,0,114, - 158,0,0,0,114,172,0,0,0,114,188,0,0,0,114,4, - 1,0,0,114,16,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,194,0, - 0,0,114,193,0,0,0,114,4,0,0,0,114,253,0,0, - 0,41,15,114,143,0,0,0,114,162,0,0,0,114,134,0, - 0,0,114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0, - 218,2,115,116,114,42,0,0,0,114,174,0,0,0,114,17, - 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,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, - 114,240,0,0,0,187,3,0,0,115,188,0,0,0,10,7, - 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, - 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, - 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, - 2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1, - 12,1,10,1,2,1,2,255,8,2,2,254,10,3,4,1, - 2,1,2,1,4,254,8,4,2,1,4,255,2,128,2,3, - 2,1,2,1,6,1,2,1,2,1,4,251,4,128,18,7, - 4,1,2,128,8,2,2,1,4,255,6,2,2,1,2,1, - 6,254,8,3,10,1,12,1,12,1,18,1,6,1,4,255, - 4,2,8,1,10,1,14,1,6,2,6,1,4,255,2,2, - 14,1,4,3,2,128,14,254,2,1,4,1,2,128,4,0, - 2,254,2,233,2,225,2,250,2,251,115,80,0,0,0,144, - 4,21,0,149,10,33,7,163,5,41,0,169,8,51,7,187, - 5,65,1,0,193,1,8,65,11,7,193,18,65,5,66,24, - 0,194,24,10,66,36,7,195,50,7,67,59,0,195,59,8, - 68,6,7,196,9,1,68,6,7,196,10,1,66,36,7,196, - 11,1,65,11,7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0, - 114,7,0,0,0,114,248,0,0,0,128,3,0,0,115,16, - 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, - 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,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,135,0,4,0,90, - 12,83,0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0, - 114,162,0,0,0,114,65,0,0,0,32,32,32,114,7,0, - 0,0,114,235,0,0,0,21,4,0,0,115,4,0,0,0, - 6,3,10,1,114,9,0,0,0,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,67, - 0,0,0,243,24,0,0,0,124,0,106,0,124,1,106,0, - 107,2,111,11,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,143,0,0,0,90,5, - 111,116,104,101,114,32,32,114,7,0,0,0,218,6,95,95, - 101,113,95,95,27,4,0,0,243,6,0,0,0,12,1,10, - 1,2,255,114,9,0,0,0,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,3,0,0,0,67,0,0,0, - 243,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,141,0,0,0,114,65,0,0,0, - 169,1,114,143,0,0,0,32,114,7,0,0,0,218,8,95, - 95,104,97,115,104,95,95,31,4,0,0,243,2,0,0,0, - 20,1,114,9,0,0,0,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,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,2,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,41, - 3,218,5,115,117,112,101,114,114,10,1,0,0,114,247,0, - 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,13, - 1,0,0,32,32,128,114,7,0,0,0,114,247,0,0,0, - 34,4,0,0,115,2,0,0,0,16,10,114,9,0,0,0, - 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,1,0,0,0,67,0,0,0,243,6,0, - 0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0, - 0,32,32,114,7,0,0,0,114,202,0,0,0,46,4,0, - 0,243,2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0, - 116,0,124,0,116,1,116,2,102,2,131,2,114,38,116,3, - 160,4,116,5,124,1,131,1,161,1,53,0,125,2,124,2, - 160,6,161,0,2,0,100,1,4,0,4,0,131,3,1,0, - 83,0,35,0,49,0,115,30,119,4,37,0,1,0,1,0, - 1,0,89,0,1,0,1,0,100,1,83,0,116,3,160,7, - 124,1,100,2,161,2,53,0,125,2,124,2,160,6,161,0, - 2,0,100,1,4,0,4,0,131,3,1,0,83,0,35,0, - 49,0,115,60,119,4,37,0,1,0,1,0,1,0,89,0, - 1,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,184,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,91,0,0,0,90,9,111, - 112,101,110,95,99,111,100,101,114,109,0,0,0,90,4,114, - 101,97,100,114,92,0,0,0,41,3,114,143,0,0,0,114, - 65,0,0,0,114,94,0,0,0,32,32,32,114,7,0,0, - 0,114,254,0,0,0,51,4,0,0,115,22,0,0,0,14, + 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,141,0,0,0,78,41,5,114,204,0, + 0,0,218,8,103,101,116,95,100,97,116,97,114,77,0,0, + 0,114,143,0,0,0,114,201,0,0,0,41,5,114,144,0, + 0,0,114,164,0,0,0,114,66,0,0,0,114,199,0,0, + 0,218,3,101,120,99,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,10,103,101,116,95,115,111,117,114,99, + 101,167,3,0,0,115,26,0,0,0,10,2,2,1,10,1, + 8,4,2,128,12,253,4,1,2,1,4,255,2,1,2,255, + 10,128,2,255,115,20,0,0,0,134,5,15,0,143,7,33, + 7,150,7,29,7,157,4,33,7,162,1,33,7,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,131,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,9,0,0,0,67,0,0,0,115,22,0, + 0,0,116,0,160,1,116,2,124,1,124,2,100,1,100,2, + 124,3,100,3,166,6,83,0,41,5,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,244, + 0,0,0,84,41,2,218,12,100,111,110,116,95,105,110,104, + 101,114,105,116,114,109,0,0,0,78,41,3,114,160,0,0, + 0,114,243,0,0,0,218,7,99,111,109,112,105,108,101,41, + 4,114,144,0,0,0,114,42,0,0,0,114,66,0,0,0, + 114,3,1,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,14,115,111,117,114,99,101,95,116,111,95, + 99,111,100,101,177,3,0,0,115,6,0,0,0,12,5,4, + 1,6,255,114,10,0,0,0,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,9,0,0,0,67,0,0,0,115,28,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,9,0,116, + 1,124,2,131,1,125,8,110,13,35,0,4,0,116,2,144, + 1,121,13,1,0,1,0,1,0,100,1,125,8,89,0,110, + 147,37,0,9,0,124,0,160,3,124,2,161,1,125,9,110, + 11,35,0,4,0,116,4,144,1,121,12,1,0,1,0,1, + 0,89,0,110,129,37,0,116,5,124,9,100,4,25,0,131, + 1,125,3,9,0,124,0,160,6,124,8,161,1,125,10,110, + 11,35,0,4,0,116,4,144,1,121,11,1,0,1,0,1, + 0,89,0,110,105,37,0,124,1,124,8,100,5,156,2,125, + 11,9,0,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,114,141,124, + 12,100,9,64,0,100,8,107,3,125,7,116,9,106,10,100, + 10,107,3,114,140,124,7,115,122,116,9,106,10,100,11,107, + 2,114,140,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,10,116,14,124,10,124,3,124, + 9,100,12,25,0,124,1,124,11,131,5,1,0,110,13,35, + 0,4,0,116,15,116,16,102,2,144,1,121,10,1,0,1, + 0,1,0,89,0,110,16,37,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,114,189,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,1,115,7,124,8,100,1,117,1,144, + 1,114,7,124,3,100,1,117,1,144,1,114,7,124,6,114, + 233,124,5,100,1,117,0,114,226,116,9,160,11,124,4,161, + 1,125,5,116,23,124,14,124,5,124,7,131,3,125,10,110, + 8,116,24,124,14,124,3,116,25,124,4,131,1,131,3,125, + 10,9,0,124,0,160,26,124,2,124,8,124,10,161,3,1, + 0,124,14,83,0,35,0,4,0,116,2,144,1,121,9,1, + 0,1,0,1,0,89,0,124,14,83,0,37,0,124,14,83, + 0,119,0,119,0,119,0,119,0,119,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,194,0,0,0,114,184,0,0,0,114,170,0,0,0,114, + 3,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,142,0,0,0,114,133,0,0,0,114,135, + 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,204,0,0,0,114, + 122,0,0,0,114,108,0,0,0,114,253,0,0,0,114,77, + 0,0,0,114,34,0,0,0,114,0,1,0,0,114,177,0, + 0,0,218,10,109,101,109,111,114,121,118,105,101,119,114,188, + 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,182,0,0,0,218, + 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, + 69,82,114,183,0,0,0,114,181,0,0,0,114,143,0,0, + 0,114,175,0,0,0,114,160,0,0,0,114,174,0,0,0, + 114,190,0,0,0,114,6,1,0,0,114,16,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,196,0,0,0,114,195,0,0,0,114,4, + 0,0,0,114,255,0,0,0,41,15,114,144,0,0,0,114, + 164,0,0,0,114,135,0,0,0,114,179,0,0,0,114,199, + 0,0,0,114,182,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,133,0,0,0,218,2,115,116,114,42,0,0,0, + 114,176,0,0,0,114,17,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,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,242,0,0,0,185,3,0,0,115,188,0,0,0, + 10,7,4,1,4,1,4,1,4,1,4,1,2,1,10,1, + 2,128,14,1,8,1,2,128,2,2,12,1,2,128,14,1, + 4,1,2,128,12,2,2,1,12,1,2,128,14,1,4,1, + 2,128,2,3,2,1,6,254,2,4,12,1,16,1,12,1, + 4,1,12,1,10,1,2,1,2,255,8,2,2,254,10,3, + 4,1,2,1,2,1,4,254,8,4,2,1,4,255,2,128, + 2,3,2,1,2,1,6,1,2,1,2,1,4,251,4,128, + 18,7,4,1,2,128,8,2,2,1,4,255,6,2,2,1, + 2,1,6,254,8,3,10,1,12,1,12,1,18,1,6,1, + 4,255,4,2,8,1,10,1,14,1,6,2,6,1,4,255, + 2,2,14,1,4,3,2,128,14,254,2,1,4,1,2,128, + 4,0,2,254,2,233,2,225,2,250,2,251,115,80,0,0, + 0,144,4,21,0,149,10,33,7,163,5,41,0,169,8,51, + 7,187,5,65,1,0,193,1,8,65,11,7,193,18,65,5, + 66,24,0,194,24,10,66,36,7,195,50,7,67,59,0,195, + 59,8,68,6,7,196,9,1,68,6,7,196,10,1,66,36, + 7,196,11,1,65,11,7,196,12,1,51,7,196,13,1,33, + 7,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,151,0,0,0, + 114,150,0,0,0,114,152,0,0,0,114,252,0,0,0,114, + 253,0,0,0,114,255,0,0,0,114,254,0,0,0,114,2, + 1,0,0,114,6,1,0,0,114,242,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,250,0,0,0,126,3,0,0,115,16,0,0,0,8, + 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, + 10,0,0,0,114,250,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,0,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,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,135,0,4,0,90,12,83,0,41, + 16,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,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,184,0,0,0,41,3,114,144,0,0,0,114,164,0,0, + 0,114,66,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,237,0,0,0,19,4,0,0,115,4, + 0,0,0,6,3,10,1,114,10,0,0,0,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,67,0,0,0,243,24,0,0,0,124,0,106,0,124, + 1,106,0,107,2,111,11,124,0,106,1,124,1,106,1,107, + 2,83,0,114,70,0,0,0,169,2,218,9,95,95,99,108, + 97,115,115,95,95,114,157,0,0,0,169,2,114,144,0,0, + 0,90,5,111,116,104,101,114,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,6,95,95,101,113,95,95,25, + 4,0,0,243,6,0,0,0,12,1,10,1,2,255,114,10, + 0,0,0,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,3,0,0,0,67,0,0,0,243,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,70,0,0,0,169,3,218,4,104,97,115, + 104,114,142,0,0,0,114,66,0,0,0,169,1,114,144,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,8,95,95,104,97,115,104,95,95,29,4,0,0,243, + 2,0,0,0,20,1,114,10,0,0,0,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,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,2,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,41,3,218,5,115,117,112,101,114,114,12,1,0, + 0,114,249,0,0,0,114,248,0,0,0,169,1,114,15,1, + 0,0,114,7,0,0,0,114,8,0,0,0,114,249,0,0, + 0,32,4,0,0,115,2,0,0,0,16,10,114,10,0,0, + 0,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,1,0,0,0,67,0,0,0,243,6, + 0,0,0,124,0,106,0,83,0,169,2,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,78,114,72,0,0,0,114,248,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,204,0,0,0,44,4,0,0,243,2,0,0,0,6, + 3,114,10,0,0,0,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,9,0,0,0, + 67,0,0,0,115,136,0,0,0,116,0,124,0,116,1,116, + 2,102,2,131,2,114,38,116,3,160,4,116,5,124,1,131, + 1,161,1,53,0,125,2,124,2,160,6,161,0,2,0,100, + 1,4,0,4,0,131,3,1,0,83,0,35,0,49,0,115, + 30,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,100,1,83,0,116,3,160,7,124,1,100,2,161,2,53, + 0,125,2,124,2,160,6,161,0,2,0,100,1,4,0,4, + 0,131,3,1,0,83,0,35,0,49,0,115,60,119,4,37, + 0,1,0,1,0,1,0,89,0,1,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,186,0,0,0,114,250,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,92,0,0,0,90,9,111,112,101,110,95,99,111,100, + 101,114,110,0,0,0,90,4,114,101,97,100,114,93,0,0, + 0,41,3,114,144,0,0,0,114,66,0,0,0,114,95,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,0,1,0,0,49,4,0,0,115,22,0,0,0,14, 2,16,1,6,1,14,255,22,128,4,0,14,3,6,1,14, 255,22,128,4,0,115,24,0,0,0,142,4,25,3,153,4, 29,11,158,3,29,11,172,4,55,3,183,4,59,11,188,3, @@ -1597,1172 +1620,1199 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, 10,70,105,108,101,82,101,97,100,101,114,41,2,218,17,105, 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, - 114,29,1,0,0,41,3,114,143,0,0,0,114,243,0,0, - 0,114,29,1,0,0,32,32,32,114,7,0,0,0,218,19, - 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, - 100,101,114,60,4,0,0,115,4,0,0,0,12,2,8,1, - 114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0,0, - 0,114,150,0,0,0,114,151,0,0,0,114,235,0,0,0, - 114,15,1,0,0,114,21,1,0,0,114,159,0,0,0,114, - 247,0,0,0,114,202,0,0,0,114,254,0,0,0,114,31, - 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, - 95,95,41,1,114,13,1,0,0,64,114,7,0,0,0,114, - 10,1,0,0,16,4,0,0,115,24,0,0,0,8,0,4, - 2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,8, - 4,2,9,18,1,114,9,0,0,0,114,10,1,0,0,99, - 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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65, - 0,0,0,114,9,1,0,0,32,32,32,114,7,0,0,0, - 114,251,0,0,0,70,4,0,0,115,4,0,0,0,8,2, - 14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0, - 124,1,131,1,125,4,124,0,160,1,124,2,124,3,124,4, - 100,1,166,3,83,0,41,2,78,169,1,218,5,95,109,111, - 100,101,41,2,114,139,0,0,0,114,252,0,0,0,41,5, - 114,143,0,0,0,114,134,0,0,0,114,132,0,0,0,114, - 42,0,0,0,114,78,0,0,0,32,32,32,32,32,114,7, - 0,0,0,114,253,0,0,0,75,4,0,0,115,4,0,0, - 0,8,2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0, - 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, - 124,4,114,31,116,1,124,4,131,1,115,31,116,0,124,4, - 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, - 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, - 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, - 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, - 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, - 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, - 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, - 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, - 126,8,119,1,37,0,9,0,116,11,124,1,124,2,124,3, - 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, - 100,2,83,0,35,0,4,0,116,8,121,123,1,0,125,8, - 1,0,116,9,160,10,100,1,124,1,124,8,161,3,1,0, - 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, - 126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0, - 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, - 114,67,0,0,0,114,19,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,172,0,0, - 0,114,95,0,0,0,41,9,114,143,0,0,0,114,65,0, - 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, - 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, - 0,0,0,114,255,0,0,0,32,32,32,32,32,32,32,32, - 32,114,7,0,0,0,114,252,0,0,0,80,4,0,0,115, - 60,0,0,0,12,2,4,1,12,2,12,1,10,1,12,254, - 12,4,10,1,2,1,12,1,2,128,12,1,4,2,12,1, - 6,3,4,1,4,255,14,2,10,128,2,1,12,1,16,1, - 2,128,12,1,8,2,2,1,16,255,10,128,2,254,2,247, - 115,62,0,0,0,171,5,49,2,177,7,65,18,9,186,6, - 65,18,9,193,0,7,65,14,9,193,14,4,65,18,9,193, - 20,12,65,34,0,193,34,7,65,58,7,193,41,7,65,54, - 7,193,54,4,65,58,7,193,59,1,65,58,7,193,60,1, - 65,18,9,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,251,0,0,0,114,253,0,0,0,114, - 252,0,0,0,114,12,0,0,0,114,7,0,0,0,114,32, - 1,0,0,66,4,0,0,115,10,0,0,0,8,0,4,2, - 8,2,8,5,18,5,114,9,0,0,0,114,32,1,0,0, - 99,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,83,0,41,7,218,20,83,111, + 114,32,1,0,0,41,3,114,144,0,0,0,114,245,0,0, + 0,114,32,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,19,103,101,116,95,114,101,115,111,117, + 114,99,101,95,114,101,97,100,101,114,58,4,0,0,115,4, + 0,0,0,12,2,8,1,114,10,0,0,0,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,41,13,114,151, + 0,0,0,114,150,0,0,0,114,152,0,0,0,114,153,0, + 0,0,114,237,0,0,0,114,17,1,0,0,114,23,1,0, + 0,114,161,0,0,0,114,249,0,0,0,114,204,0,0,0, + 114,0,1,0,0,114,34,1,0,0,90,13,95,95,99,108, + 97,115,115,99,101,108,108,95,95,114,7,0,0,0,114,7, + 0,0,0,114,26,1,0,0,114,8,0,0,0,114,12,1, + 0,0,14,4,0,0,115,24,0,0,0,8,0,4,2,8, + 3,8,6,8,4,2,3,14,1,2,11,10,1,8,4,2, + 9,18,1,114,10,0,0,0,114,12,1,0,0,99,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,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,3,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,194,0,0,0,114,7,1,0,0,78,41,3,114,76,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,144,0,0,0,114,66,0,0, + 0,114,11,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,253,0,0,0,68,4,0,0,115,4, + 0,0,0,8,2,14,1,114,10,0,0,0,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,6,0,0,0,67,0,0,0,115,24, + 0,0,0,116,0,124,1,131,1,125,4,124,0,160,1,124, + 2,124,3,124,4,100,1,166,3,83,0,41,2,78,169,1, + 218,5,95,109,111,100,101,41,2,114,140,0,0,0,114,254, + 0,0,0,41,5,114,144,0,0,0,114,135,0,0,0,114, + 133,0,0,0,114,42,0,0,0,114,79,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,255,0, + 0,0,73,4,0,0,115,4,0,0,0,8,2,16,1,114, + 10,0,0,0,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,88,0,0,0,114,37,1,0,0, + 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, + 0,67,0,0,0,115,250,0,0,0,116,0,124,1,131,1, + 92,2,125,4,125,5,103,0,125,6,124,4,114,31,116,1, + 124,4,131,1,115,31,116,0,124,4,131,1,92,2,125,4, + 125,7,124,6,160,2,124,7,161,1,1,0,124,4,114,31, + 116,1,124,4,131,1,114,14,116,3,124,6,131,1,68,0, + 93,47,125,7,116,4,124,4,124,7,131,2,125,4,9,0, + 116,5,160,6,124,4,161,1,1,0,113,35,35,0,4,0, + 116,7,121,58,1,0,1,0,1,0,89,0,113,35,4,0, + 116,8,121,124,1,0,125,8,1,0,116,9,160,10,100,1, + 124,4,124,8,161,3,1,0,89,0,100,2,125,8,126,8, + 1,0,100,2,83,0,100,2,125,8,126,8,119,1,37,0, + 9,0,116,11,124,1,124,2,124,3,131,3,1,0,116,9, + 160,10,100,3,124,1,161,2,1,0,100,2,83,0,35,0, + 4,0,116,8,121,123,1,0,125,8,1,0,116,9,160,10, + 100,1,124,1,124,8,161,3,1,0,89,0,100,2,125,8, + 126,8,100,2,83,0,100,2,125,8,126,8,119,1,37,0, + 119,0,119,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,75,0,0,0,114,84,0,0,0,114,62,0,0,0, + 218,8,114,101,118,101,114,115,101,100,114,68,0,0,0,114, + 19,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,77,0,0, + 0,114,160,0,0,0,114,174,0,0,0,114,96,0,0,0, + 41,9,114,144,0,0,0,114,66,0,0,0,114,42,0,0, + 0,114,38,1,0,0,218,6,112,97,114,101,110,116,114,121, + 0,0,0,114,64,0,0,0,114,69,0,0,0,114,1,1, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,254,0,0,0,78,4,0,0,115,60,0,0,0,12, + 2,4,1,12,2,12,1,10,1,12,254,12,4,10,1,2, + 1,12,1,2,128,12,1,4,2,12,1,6,3,4,1,4, + 255,14,2,10,128,2,1,12,1,16,1,2,128,12,1,8, + 2,2,1,16,255,10,128,2,254,2,247,115,62,0,0,0, + 171,5,49,2,177,7,65,18,9,186,6,65,18,9,193,0, + 7,65,14,9,193,14,4,65,18,9,193,20,12,65,34,0, + 193,34,7,65,58,7,193,41,7,65,54,7,193,54,4,65, + 58,7,193,59,1,65,58,7,193,60,1,65,18,9,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,151,0,0, + 0,114,150,0,0,0,114,152,0,0,0,114,153,0,0,0, + 114,253,0,0,0,114,255,0,0,0,114,254,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,35,1,0,0,64,4,0,0,115,10,0,0, + 0,8,0,4,2,8,2,8,5,18,5,114,10,0,0,0, + 114,35,1,0,0,99,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,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,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,184,0,0,0,114,170,0,0, + 0,41,2,114,142,0,0,0,114,133,0,0,0,41,5,114, + 204,0,0,0,114,0,1,0,0,114,177,0,0,0,114,190, + 0,0,0,114,8,1,0,0,41,5,114,144,0,0,0,114, + 164,0,0,0,114,66,0,0,0,114,42,0,0,0,114,176, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,242,0,0,0,113,4,0,0,115,22,0,0,0, + 10,1,10,1,2,4,2,1,6,254,12,4,2,1,14,1, + 2,1,2,1,6,253,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114, + 24,0,0,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,7,0,0,0,114,248,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,2,1,0,0,129,4, + 0,0,114,25,0,0,0,114,10,0,0,0,122,31,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,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,182,0,0,0,114,168,0,0,0,41,2,114,141, - 0,0,0,114,132,0,0,0,41,5,114,202,0,0,0,114, - 254,0,0,0,114,175,0,0,0,114,188,0,0,0,114,6, - 1,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, - 65,0,0,0,114,42,0,0,0,114,174,0,0,0,32,32, - 32,32,32,114,7,0,0,0,114,240,0,0,0,115,4,0, - 0,115,22,0,0,0,10,1,10,1,2,4,2,1,6,254, - 12,4,2,1,14,1,2,1,2,1,6,253,114,9,0,0, - 0,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,1,0,0, - 0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,0,1,0,0,131,4,0,0, - 114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0, - 0,114,7,0,0,0,114,39,1,0,0,111,4,0,0,115, - 8,0,0,0,8,0,4,2,8,2,12,16,114,9,0,0, - 0,114,39,1,0,0,99,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,28, - 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,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,0,83,0,114,69,0,0, - 0,114,182,0,0,0,41,3,114,143,0,0,0,114,141,0, - 0,0,114,65,0,0,0,32,32,32,114,7,0,0,0,114, - 235,0,0,0,144,4,0,0,115,4,0,0,0,6,1,10, - 1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69, - 0,0,0,114,12,1,0,0,114,14,1,0,0,32,32,114, - 7,0,0,0,114,15,1,0,0,148,4,0,0,114,16,1, - 0,0,114,9,0,0,0,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, - 3,0,0,0,67,0,0,0,114,17,1,0,0,114,69,0, - 0,0,114,18,1,0,0,114,20,1,0,0,32,114,7,0, - 0,0,114,21,1,0,0,152,4,0,0,114,22,1,0,0, - 114,9,0,0,0,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, - 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,3,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,78,41,7,114,158,0,0,0,114,241,0,0,0, - 114,186,0,0,0,90,14,99,114,101,97,116,101,95,100,121, - 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, - 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, - 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, - 0,0,155,4,0,0,115,14,0,0,0,4,2,6,1,4, - 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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,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, + 101,114,46,103,101,116,95,115,111,117,114,99,101,78,41,6, + 114,151,0,0,0,114,150,0,0,0,114,152,0,0,0,114, + 153,0,0,0,114,242,0,0,0,114,2,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,42,1,0,0,109,4,0,0,115,8,0,0,0, + 8,0,4,2,8,2,12,16,114,10,0,0,0,114,42,1, + 0,0,99,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,31,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,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,0,83,0,114,70,0,0,0,114,184,0, + 0,0,41,3,114,144,0,0,0,114,142,0,0,0,114,66, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,237,0,0,0,142,4,0,0,115,4,0,0,0, + 6,1,10,1,114,10,0,0,0,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,67,0,0,0,114,13,1,0, + 0,114,70,0,0,0,114,14,1,0,0,114,16,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 17,1,0,0,146,4,0,0,114,18,1,0,0,114,10,0, + 0,0,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,3,0,0,0,67, + 0,0,0,114,19,1,0,0,114,70,0,0,0,114,20,1, + 0,0,114,22,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,23,1,0,0,150,4,0,0,114, + 24,1,0,0,114,10,0,0,0,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,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,3,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,78,41,7,114,160,0,0,0,114, + 243,0,0,0,114,188,0,0,0,90,14,99,114,101,97,116, + 101,95,100,121,110,97,109,105,99,114,174,0,0,0,114,142, + 0,0,0,114,66,0,0,0,41,3,114,144,0,0,0,114, + 211,0,0,0,114,245,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,240,0,0,0,153,4,0, + 0,115,14,0,0,0,4,2,6,1,4,255,6,2,8,1, + 4,255,4,2,114,10,0,0,0,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,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,160,0,0,0,114,243, + 0,0,0,114,188,0,0,0,90,12,101,120,101,99,95,100, + 121,110,97,109,105,99,114,174,0,0,0,114,142,0,0,0, + 114,66,0,0,0,169,2,114,144,0,0,0,114,245,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,246,0,0,0,161,4,0,0,115,8,0,0,0,14,2, + 6,1,8,1,8,255,114,10,0,0,0,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,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,5,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,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,241,0,0,0,114,186,0,0,0,90,12,101, - 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, - 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, - 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, - 0,0,163,4,0,0,115,8,0,0,0,14,2,6,1,8, - 1,8,255,114,9,0,0,0,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,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, - 2,116,2,135,2,102,1,100,2,100,3,132,8,116,3,68, - 0,131,1,131,1,83,0,41,5,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,3,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,51,0,0,0,115,28,0,0,0,129,0,124,0,93, - 9,125,1,136,2,100,0,124,1,23,0,107,2,86,0,1, - 0,113,2,100,1,83,0,41,2,114,235,0,0,0,78,114, - 12,0,0,0,41,3,114,5,0,0,0,218,6,115,117,102, - 102,105,120,218,9,102,105,108,101,95,110,97,109,101,32,32, - 128,114,7,0,0,0,114,8,0,0,0,172,4,0,0,115, - 6,0,0,0,6,128,2,1,20,255,114,9,0,0,0,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,46, - 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, - 114,62,78,41,4,114,73,0,0,0,114,65,0,0,0,218, - 3,97,110,121,114,231,0,0,0,41,3,114,143,0,0,0, - 114,162,0,0,0,114,42,1,0,0,32,32,64,114,7,0, - 0,0,114,205,0,0,0,169,4,0,0,115,8,0,0,0, - 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0, - 0,0,114,24,0,0,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,12,0,0,0, - 114,246,0,0,0,32,32,114,7,0,0,0,114,240,0,0, - 0,175,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114,7,0, - 0,0,114,0,1,0,0,179,4,0,0,114,25,0,0,0, - 114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0,0,114, - 25,1,0,0,114,74,0,0,0,114,246,0,0,0,32,32, - 114,7,0,0,0,114,202,0,0,0,183,4,0,0,114,26, - 1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1,0,0, - 114,238,0,0,0,114,244,0,0,0,114,205,0,0,0,114, - 240,0,0,0,114,0,1,0,0,114,159,0,0,0,114,202, - 0,0,0,114,12,0,0,0,114,7,0,0,0,114,28,1, - 0,0,136,4,0,0,115,24,0,0,0,8,0,4,2,8, - 6,8,4,8,4,8,3,8,8,8,6,8,6,8,4,2, - 4,14,1,114,9,0,0,0,114,28,1,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, - 0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100,21,132, - 0,90,13,100,22,100,23,132,0,90,14,100,24,83,0,41, - 25,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,99,4,0,0, + 101,32,105,115,32,97,32,112,97,99,107,97,103,101,46,114, + 3,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,51,0,0,0,115,28,0,0,0,129,0, + 124,0,93,9,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,237,0,0, + 0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0, + 0,0,170,4,0,0,115,6,0,0,0,6,128,2,1,20, + 255,114,10,0,0,0,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,46,60,108,111,99,97,108,115,62,46, + 60,103,101,110,101,120,112,114,62,78,41,4,114,75,0,0, + 0,114,66,0,0,0,218,3,97,110,121,114,233,0,0,0, + 114,248,0,0,0,114,7,0,0,0,114,46,1,0,0,114, + 8,0,0,0,114,207,0,0,0,167,4,0,0,115,8,0, + 0,0,14,2,12,1,2,1,8,255,114,10,0,0,0,122, + 30,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,1,0,0,0, + 67,0,0,0,114,24,0,0,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,7,0, + 0,0,114,248,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,242,0,0,0,173,4,0,0,114, + 25,0,0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, + 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,7,0,0,0, + 114,248,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,2,1,0,0,177,4,0,0,114,25,0, + 0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,27,1,0, + 0,114,28,1,0,0,114,72,0,0,0,114,248,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 204,0,0,0,181,4,0,0,114,29,1,0,0,114,10,0, + 0,0,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,151,0,0,0,114,150,0,0, + 0,114,152,0,0,0,114,153,0,0,0,114,237,0,0,0, + 114,17,1,0,0,114,23,1,0,0,114,240,0,0,0,114, + 246,0,0,0,114,207,0,0,0,114,242,0,0,0,114,2, + 1,0,0,114,161,0,0,0,114,204,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,31,1,0,0,134,4,0,0,115,24,0,0,0,8, + 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, + 6,8,4,2,4,14,1,114,10,0,0,0,114,31,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100, + 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, + 24,83,0,41,25,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, + 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,70, + 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, + 97,116,104,114,137,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,12,95, + 112,97,116,104,95,102,105,110,100,101,114,169,4,114,144,0, + 0,0,114,142,0,0,0,114,66,0,0,0,90,11,112,97, + 116,104,95,102,105,110,100,101,114,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,237,0,0,0,194,4,0, + 0,115,8,0,0,0,6,1,6,1,14,1,10,1,114,10, + 0,0,0,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,3,0,0,0,67,0,0, - 0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0,0,41, - 6,218,5,95,110,97,109,101,218,5,95,112,97,116,104,114, - 136,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,12,95,112,97,116,104, - 95,102,105,110,100,101,114,169,4,114,143,0,0,0,114,141, - 0,0,0,114,65,0,0,0,90,11,112,97,116,104,95,102, - 105,110,100,101,114,32,32,32,32,114,7,0,0,0,114,235, - 0,0,0,196,4,0,0,115,8,0,0,0,6,1,6,1, - 14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4,102,2, - 83,0,41,6,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,97,0,0,0,114,10,0,0,0,41,2, - 114,16,0,0,0,114,65,0,0,0,90,8,95,95,112,97, - 116,104,95,95,78,41,2,114,45,1,0,0,114,104,0,0, - 0,41,4,114,143,0,0,0,114,38,1,0,0,218,3,100, - 111,116,90,2,109,101,32,32,32,32,114,7,0,0,0,218, + 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,15, + 100,3,83,0,124,1,100,4,102,2,83,0,41,6,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,98, + 0,0,0,114,11,0,0,0,41,2,114,16,0,0,0,114, + 66,0,0,0,90,8,95,95,112,97,116,104,95,95,78,41, + 2,114,49,1,0,0,114,105,0,0,0,41,4,114,144,0, + 0,0,114,41,1,0,0,218,3,100,111,116,90,2,109,101, + 114,7,0,0,0,114,7,0,0,0,114,8,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,202,4,0,0,115,8,0,0, - 0,18,2,8,1,4,2,8,3,114,9,0,0,0,122,38, + 116,104,95,110,97,109,101,115,200,4,0,0,115,8,0,0, + 0,18,2,8,1,4,2,8,3,114,10,0,0,0,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,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,52,1,0,0,114,154,0,0,0,114,16,0, - 0,0,218,7,109,111,100,117,108,101,115,41,3,114,143,0, + 106,3,124,1,25,0,124,2,131,2,83,0,114,70,0,0, + 0,41,4,114,56,1,0,0,114,156,0,0,0,114,16,0, + 0,0,218,7,109,111,100,117,108,101,115,41,3,114,144,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,32,32,32,114,7,0,0,0,114,47, - 1,0,0,212,4,0,0,115,4,0,0,0,12,1,16,1, - 114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0,0,0, - 116,0,124,0,160,1,161,0,131,1,125,1,124,1,124,0, - 106,2,107,3,114,37,124,0,160,3,124,0,106,4,124,1, - 161,2,125,2,124,2,100,0,117,1,114,34,124,2,106,5, - 100,0,117,0,114,34,124,2,106,6,114,34,124,2,106,6, - 124,0,95,7,124,1,124,0,95,2,124,0,106,7,83,0, - 114,69,0,0,0,41,8,114,136,0,0,0,114,47,1,0, - 0,114,48,1,0,0,114,49,1,0,0,114,45,1,0,0, - 114,163,0,0,0,114,201,0,0,0,114,46,1,0,0,41, - 3,114,143,0,0,0,90,11,112,97,114,101,110,116,95,112, - 97,116,104,114,209,0,0,0,32,32,32,114,7,0,0,0, - 218,12,95,114,101,99,97,108,99,117,108,97,116,101,216,4, - 0,0,115,16,0,0,0,12,2,10,1,14,1,18,3,6, - 1,8,1,6,1,6,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,12, - 0,0,0,116,0,124,0,160,1,161,0,131,1,83,0,114, - 69,0,0,0,41,2,218,4,105,116,101,114,114,54,1,0, - 0,114,20,1,0,0,32,114,7,0,0,0,218,8,95,95, - 105,116,101,114,95,95,229,4,0,0,243,2,0,0,0,12, - 1,114,9,0,0,0,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, - 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,54,1,0, - 0,41,2,114,143,0,0,0,218,5,105,110,100,101,120,32, - 32,114,7,0,0,0,218,11,95,95,103,101,116,105,116,101, - 109,95,95,232,4,0,0,114,58,1,0,0,114,9,0,0, - 0,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,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,46,1,0, - 0,41,3,114,143,0,0,0,114,60,1,0,0,114,65,0, - 0,0,32,32,32,114,7,0,0,0,218,11,95,95,115,101, - 116,105,116,101,109,95,95,235,4,0,0,115,2,0,0,0, - 14,1,114,9,0,0,0,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, - 3,0,0,0,67,0,0,0,114,55,1,0,0,114,69,0, - 0,0,41,2,114,4,0,0,0,114,54,1,0,0,114,20, - 1,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, - 95,95,238,4,0,0,114,58,1,0,0,114,9,0,0,0, - 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,3,0,0,0,67,0,0,0,243,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,89,0,0,0,114,46, - 1,0,0,114,20,1,0,0,32,114,7,0,0,0,218,8, - 95,95,114,101,112,114,95,95,241,4,0,0,114,58,1,0, - 0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32,114,7, + 114,95,110,97,109,101,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,51,1,0,0,210,4,0,0,115,4, + 0,0,0,12,1,16,1,114,10,0,0,0,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,4,0,0,0,67,0, + 0,0,115,80,0,0,0,116,0,124,0,160,1,161,0,131, + 1,125,1,124,1,124,0,106,2,107,3,114,37,124,0,160, + 3,124,0,106,4,124,1,161,2,125,2,124,2,100,0,117, + 1,114,34,124,2,106,5,100,0,117,0,114,34,124,2,106, + 6,114,34,124,2,106,6,124,0,95,7,124,1,124,0,95, + 2,124,0,106,7,83,0,114,70,0,0,0,41,8,114,137, + 0,0,0,114,51,1,0,0,114,52,1,0,0,114,53,1, + 0,0,114,49,1,0,0,114,165,0,0,0,114,203,0,0, + 0,114,50,1,0,0,41,3,114,144,0,0,0,90,11,112, + 97,114,101,110,116,95,112,97,116,104,114,211,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,12, + 95,114,101,99,97,108,99,117,108,97,116,101,214,4,0,0, + 115,16,0,0,0,12,2,10,1,14,1,18,3,6,1,8, + 1,6,1,6,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0,243,12,0,0, + 0,116,0,124,0,160,1,161,0,131,1,83,0,114,70,0, + 0,0,41,2,218,4,105,116,101,114,114,58,1,0,0,114, + 22,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,8,95,95,105,116,101,114,95,95,227,4,0, + 0,243,2,0,0,0,12,1,114,10,0,0,0,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,67,0,0,0,115,12,0,0,0, + 124,0,160,0,161,0,124,1,25,0,83,0,114,70,0,0, + 0,169,1,114,58,1,0,0,41,2,114,144,0,0,0,218, + 5,105,110,100,101,120,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,11,95,95,103,101,116,105,116,101,109, + 95,95,230,4,0,0,114,62,1,0,0,114,10,0,0,0, + 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,67,0,0, + 0,115,14,0,0,0,124,2,124,0,106,0,124,1,60,0, + 100,0,83,0,114,70,0,0,0,41,1,114,50,1,0,0, + 41,3,114,144,0,0,0,114,64,1,0,0,114,66,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,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,14,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0,114,59, + 1,0,0,114,70,0,0,0,41,2,114,4,0,0,0,114, + 58,1,0,0,114,22,1,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,7,95,95,108,101,110,95, + 95,236,4,0,0,114,62,1,0,0,114,10,0,0,0,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,3,0,0,0,67,0,0,0,243,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,90,0,0,0,114,50,1, + 0,0,114,22,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,8,95,95,114,101,112,114,95,95, + 239,4,0,0,114,62,1,0,0,114,10,0,0,0,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,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,70,0, + 0,0,114,63,1,0,0,169,2,114,144,0,0,0,218,4, + 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,244,4,0,0,114,58,1,0,0,114,9,0,0,0,122, + 95,242,4,0,0,114,62,1,0,0,114,10,0,0,0,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,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,46,1, - 0,0,114,61,0,0,0,114,66,1,0,0,32,32,114,7, - 0,0,0,114,61,0,0,0,247,4,0,0,243,2,0,0, - 0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150,0,0, - 0,114,151,0,0,0,114,235,0,0,0,114,52,1,0,0, - 114,47,1,0,0,114,54,1,0,0,114,57,1,0,0,114, - 61,1,0,0,114,62,1,0,0,114,63,1,0,0,114,65, - 1,0,0,114,68,1,0,0,114,61,0,0,0,114,12,0, - 0,0,114,7,0,0,0,114,44,1,0,0,189,4,0,0, - 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, - 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, - 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, - 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,100,18,132,0,90,12,100,19,83,0,41,20,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, - 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,44,1,0,0,114,46,1,0,0,114,50,1,0, - 0,32,32,32,32,114,7,0,0,0,114,235,0,0,0,253, - 4,0,0,115,2,0,0,0,18,1,114,9,0,0,0,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,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 24,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, - 100,2,160,3,124,0,106,4,161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0,0,114, - 101,0,0,0,114,89,0,0,0,114,149,0,0,0,41,1, - 114,243,0,0,0,32,114,7,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,0,5,0,0,115,8,0,0, - 0,6,7,2,1,4,255,12,2,114,9,0,0,0,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,1,0,0,0,67,0,0, - 0,114,24,0,0,0,41,2,78,84,114,12,0,0,0,114, - 246,0,0,0,32,32,114,7,0,0,0,114,205,0,0,0, - 11,5,0,0,243,2,0,0,0,4,1,114,9,0,0,0, - 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, + 1,0,100,0,83,0,114,70,0,0,0,41,2,114,50,1, + 0,0,114,62,0,0,0,114,70,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,62,0,0,0, + 245,4,0,0,243,2,0,0,0,16,1,114,10,0,0,0, + 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,15,114,151,0,0,0,114, + 150,0,0,0,114,152,0,0,0,114,153,0,0,0,114,237, + 0,0,0,114,56,1,0,0,114,51,1,0,0,114,58,1, + 0,0,114,61,1,0,0,114,65,1,0,0,114,66,1,0, + 0,114,67,1,0,0,114,69,1,0,0,114,72,1,0,0, + 114,62,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,48,1,0,0,187,4, + 0,0,115,26,0,0,0,8,0,4,1,8,6,8,6,8, + 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, + 3,114,10,0,0,0,114,48,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, + 115,88,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,100,18,132,0,90,12,100,19,83,0,41,20,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,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,70,0, + 0,0,41,2,114,48,1,0,0,114,50,1,0,0,114,54, + 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,237,0,0,0,251,4,0,0,115,2,0,0,0, + 18,1,114,10,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,115,24,0,0,0,116,0,160,1, + 100,1,116,2,161,2,1,0,100,2,160,3,124,0,106,4, + 161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,100,0, + 0,0,114,101,0,0,0,114,102,0,0,0,114,90,0,0, + 0,114,151,0,0,0,41,1,114,245,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,11,109,111, + 100,117,108,101,95,114,101,112,114,254,4,0,0,115,8,0, + 0,0,6,7,2,1,4,255,12,2,114,10,0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,0,0,0,41,2,78,114,10,0,0,0,114, - 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, - 114,0,1,0,0,14,5,0,0,114,72,1,0,0,114,9, - 0,0,0,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,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,10,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,32,32,114,7,0,0,0,114,240,0,0, - 0,17,5,0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, - 24,0,0,0,114,236,0,0,0,114,12,0,0,0,114,237, - 0,0,0,32,32,114,7,0,0,0,114,238,0,0,0,20, - 5,0,0,114,239,0,0,0,114,9,0,0,0,122,30,95, + 0,0,114,24,0,0,0,41,2,78,84,114,7,0,0,0, + 114,248,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,207,0,0,0,9,5,0,0,243,2,0, + 0,0,4,1,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0, + 41,2,78,114,11,0,0,0,114,7,0,0,0,114,248,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,2,1,0,0,12,5,0,0,114,76,1,0,0,114, + 10,0,0,0,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,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,11, + 0,0,0,122,8,60,115,116,114,105,110,103,62,114,244,0, + 0,0,84,41,1,114,4,1,0,0,41,1,114,5,1,0, + 0,114,248,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,242,0,0,0,15,5,0,0,114,73, + 1,0,0,114,10,0,0,0,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, + 1,0,0,0,67,0,0,0,114,24,0,0,0,114,238,0, + 0,0,114,7,0,0,0,114,239,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,240,0,0,0, + 18,5,0,0,114,241,0,0,0,114,10,0,0,0,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,1,0,0,0,67, + 0,0,0,115,4,0,0,0,100,0,83,0,114,70,0,0, + 0,114,7,0,0,0,114,43,1,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,246,0,0,0,21, + 5,0,0,114,76,1,0,0,114,10,0,0,0,122,28,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,1,0,0,0,67,0, - 0,0,115,4,0,0,0,100,0,83,0,114,69,0,0,0, - 114,12,0,0,0,114,40,1,0,0,32,32,114,7,0,0, - 0,114,244,0,0,0,23,5,0,0,114,72,1,0,0,114, - 9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172,0,0, - 0,114,46,1,0,0,114,245,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,247,0,0,0,26,5,0,0, - 115,8,0,0,0,6,7,4,1,4,255,12,3,114,9,0, - 0,0,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, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,67,0,0,0,115,22,0,0,0,100,1,100,2,108,0, - 109,1,125,2,1,0,124,2,124,0,106,2,131,1,83,0, - 41,3,78,114,0,0,0,0,41,1,218,15,78,97,109,101, - 115,112,97,99,101,82,101,97,100,101,114,41,3,114,30,1, - 0,0,114,73,1,0,0,114,46,1,0,0,41,3,114,143, - 0,0,0,114,243,0,0,0,114,73,1,0,0,32,32,32, - 114,7,0,0,0,114,31,1,0,0,38,5,0,0,115,4, - 0,0,0,12,1,10,1,114,9,0,0,0,122,36,95,78, - 97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,235,0,0,0,114,232,0,0,0,114,71, - 1,0,0,114,205,0,0,0,114,0,1,0,0,114,240,0, - 0,0,114,238,0,0,0,114,244,0,0,0,114,247,0,0, - 0,114,31,1,0,0,114,12,0,0,0,114,7,0,0,0, - 114,70,1,0,0,252,4,0,0,115,22,0,0,0,8,0, - 8,1,2,3,10,1,8,10,8,3,8,3,8,3,8,3, - 8,3,12,12,114,9,0,0,0,114,70,1,0,0,99,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,7,100,6, - 100,7,132,0,131,1,90,8,101,7,100,8,100,9,132,0, - 131,1,90,9,101,7,100,19,100,11,100,12,132,1,131,1, - 90,10,101,7,100,20,100,13,100,14,132,1,131,1,90,11, - 101,7,100,19,100,15,100,16,132,1,131,1,90,12,101,4, - 100,17,100,18,132,0,131,1,90,13,100,10,83,0,41,21, - 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,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,64,0,0,0,116,0,116,1,106,2,160,3,161,0, - 131,1,68,0,93,22,92,2,125,0,125,1,124,1,100,1, - 117,0,114,20,116,1,106,2,124,0,61,0,113,7,116,4, - 124,1,100,2,131,2,114,29,124,1,160,5,161,0,1,0, - 113,7,100,1,83,0,41,3,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,41,6,218,4,108, - 105,115,116,114,16,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,75,1,0,0,41,2, - 114,141,0,0,0,218,6,102,105,110,100,101,114,32,32,114, - 7,0,0,0,114,75,1,0,0,49,5,0,0,115,14,0, - 0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252, - 114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,67,0,0,0,115,78,0,0,0,116,0,106, - 1,100,1,117,1,114,14,116,0,106,1,115,14,116,2,160, - 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, - 18,125,1,9,0,124,1,124,0,131,1,2,0,1,0,83, - 0,35,0,4,0,116,5,121,38,1,0,1,0,1,0,89, - 0,113,17,37,0,100,1,83,0,119,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,16,0,0,0,218,10, - 112,97,116,104,95,104,111,111,107,115,114,99,0,0,0,114, - 100,0,0,0,114,161,0,0,0,114,142,0,0,0,41,2, - 114,65,0,0,0,90,4,104,111,111,107,32,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,59, - 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, - 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, - 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,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,8,0,0,0,67,0,0,0,115,104,0,0, - 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, - 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, - 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, - 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, - 5,121,50,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,124, - 2,83,0,37,0,119,0,119,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, - 10,0,0,0,78,41,7,114,19,0,0,0,114,82,0,0, - 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, - 114,114,111,114,114,16,0,0,0,114,77,1,0,0,218,8, - 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, - 220,0,0,0,114,65,0,0,0,114,79,1,0,0,32,32, - 32,114,7,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,72,5,0,0, - 115,36,0,0,0,8,8,2,1,10,1,2,128,12,1,6, - 3,2,128,2,1,10,1,4,4,2,128,12,253,10,1,12, - 1,4,1,2,128,2,253,2,250,115,24,0,0,0,133,4, - 10,0,138,7,20,7,150,5,29,0,157,17,49,7,178,1, - 49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138,0,0, - 0,116,0,124,2,100,1,131,2,114,27,116,1,160,2,124, - 2,161,1,155,0,100,2,157,2,125,3,116,3,160,4,124, - 3,116,5,161,2,1,0,124,2,160,6,124,1,161,1,92, - 2,125,4,125,5,110,21,116,1,160,2,124,2,161,1,155, - 0,100,3,157,2,125,3,116,3,160,4,124,3,116,5,161, - 2,1,0,124,2,160,7,124,1,161,1,125,4,103,0,125, - 5,124,4,100,0,117,1,114,58,116,1,160,8,124,1,124, - 4,161,2,83,0,116,1,160,9,124,1,100,0,161,2,125, - 6,124,5,124,6,95,10,124,6,83,0,41,4,78,114,160, - 0,0,0,122,53,46,102,105,110,100,95,115,112,101,99,40, + 101,120,101,99,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,0,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, + 3,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,78,41,4, + 114,160,0,0,0,114,174,0,0,0,114,50,1,0,0,114, + 247,0,0,0,114,248,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,249,0,0,0,24,5,0, + 0,115,8,0,0,0,6,7,4,1,4,255,12,3,114,10, + 0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,67,0,0,0,115,22,0,0,0,100,1,100,2,108, + 0,109,1,125,2,1,0,124,2,124,0,106,2,131,1,83, + 0,41,3,78,114,0,0,0,0,41,1,218,15,78,97,109, + 101,115,112,97,99,101,82,101,97,100,101,114,41,3,114,33, + 1,0,0,114,77,1,0,0,114,50,1,0,0,41,3,114, + 144,0,0,0,114,245,0,0,0,114,77,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,34,1, + 0,0,36,5,0,0,115,4,0,0,0,12,1,10,1,114, + 10,0,0,0,122,36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,151,0, + 0,0,114,150,0,0,0,114,152,0,0,0,114,237,0,0, + 0,114,234,0,0,0,114,75,1,0,0,114,207,0,0,0, + 114,2,1,0,0,114,242,0,0,0,114,240,0,0,0,114, + 246,0,0,0,114,249,0,0,0,114,34,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,74,1,0,0,250,4,0,0,115,22,0,0,0, + 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, + 8,3,8,3,12,12,114,10,0,0,0,114,74,1,0,0, + 99,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,7, + 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, + 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, + 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, + 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, + 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, + 41,21,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,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, + 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, + 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, + 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, + 1,0,113,7,100,1,83,0,41,3,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,41,6,218, + 4,108,105,115,116,114,16,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,154,0,0,0,114,79,1,0,0, + 41,2,114,142,0,0,0,218,6,102,105,110,100,101,114,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,79, + 1,0,0,47,5,0,0,115,14,0,0,0,22,4,8,1, + 10,1,10,1,8,1,2,128,4,252,114,10,0,0,0,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,1,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,67,0, + 0,0,115,78,0,0,0,116,0,106,1,100,1,117,1,114, + 14,116,0,106,1,115,14,116,2,160,3,100,2,116,4,161, + 2,1,0,116,0,106,1,68,0,93,18,125,1,9,0,124, + 1,124,0,131,1,2,0,1,0,83,0,35,0,4,0,116, + 5,121,38,1,0,1,0,1,0,89,0,113,17,37,0,100, + 1,83,0,119,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,16,0,0,0,218,10,112,97,116,104,95,104, + 111,111,107,115,114,100,0,0,0,114,101,0,0,0,114,163, + 0,0,0,114,143,0,0,0,41,2,114,66,0,0,0,90, + 4,104,111,111,107,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, + 115,57,5,0,0,115,22,0,0,0,16,3,12,1,10,1, + 2,1,12,1,2,128,12,1,4,1,2,128,4,2,2,253, + 115,12,0,0,0,148,3,26,2,154,7,35,9,166,1,35, + 9,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,8,0,0,0,67,0,0,0,115,104, + 0,0,0,124,1,100,1,107,2,114,21,9,0,116,0,160, + 1,161,0,125,1,110,11,35,0,4,0,116,2,121,51,1, + 0,1,0,1,0,89,0,100,2,83,0,37,0,9,0,116, + 3,106,4,124,1,25,0,125,2,124,2,83,0,35,0,4, + 0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,11,0,0,0,78,41,7,114,19,0,0,0,114,83, + 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, + 100,69,114,114,111,114,114,16,0,0,0,114,81,1,0,0, + 218,8,75,101,121,69,114,114,111,114,114,85,1,0,0,41, + 3,114,222,0,0,0,114,66,0,0,0,114,83,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,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,70,5,0,0,115,36,0,0,0,8,8, + 2,1,10,1,2,128,12,1,6,3,2,128,2,1,10,1, + 4,4,2,128,12,253,10,1,12,1,4,1,2,128,2,253, + 2,250,115,24,0,0,0,133,4,10,0,138,7,20,7,150, + 5,29,0,157,17,49,7,178,1,49,7,179,1,20,7,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,4,0,0, + 0,67,0,0,0,115,138,0,0,0,116,0,124,2,100,1, + 131,2,114,27,116,1,160,2,124,2,161,1,155,0,100,2, + 157,2,125,3,116,3,160,4,124,3,116,5,161,2,1,0, + 124,2,160,6,124,1,161,1,92,2,125,4,125,5,110,21, + 116,1,160,2,124,2,161,1,155,0,100,3,157,2,125,3, + 116,3,160,4,124,3,116,5,161,2,1,0,124,2,160,7, + 124,1,161,1,125,4,103,0,125,5,124,4,100,0,117,1, + 114,58,116,1,160,8,124,1,124,4,161,2,83,0,116,1, + 160,9,124,1,100,0,161,2,125,6,124,5,124,6,95,10, + 124,6,83,0,41,4,78,114,162,0,0,0,122,53,46,102, + 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, + 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,116,111,32,102,105,110,100,95,108,111,97,100,101, + 114,40,41,122,53,46,102,105,110,100,95,115,112,101,99,40, 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, - 100,95,108,111,97,100,101,114,40,41,122,53,46,102,105,110, - 100,95,115,112,101,99,40,41,32,110,111,116,32,102,111,117, - 110,100,59,32,102,97,108,108,105,110,103,32,98,97,99,107, - 32,116,111,32,102,105,110,100,95,109,111,100,117,108,101,40, - 41,41,11,114,152,0,0,0,114,158,0,0,0,90,12,95, - 111,98,106,101,99,116,95,110,97,109,101,114,99,0,0,0, - 114,100,0,0,0,114,161,0,0,0,114,160,0,0,0,114, - 228,0,0,0,114,223,0,0,0,114,206,0,0,0,114,201, - 0,0,0,41,7,114,220,0,0,0,114,162,0,0,0,114, - 79,1,0,0,114,165,0,0,0,114,163,0,0,0,114,164, - 0,0,0,114,209,0,0,0,32,32,32,32,32,32,32,114, - 7,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, - 116,95,115,112,101,99,94,5,0,0,115,26,0,0,0,10, - 4,16,1,12,2,16,1,16,2,12,2,10,1,4,1,8, - 1,12,1,12,1,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0, - 0,115,166,0,0,0,103,0,125,4,124,2,68,0,93,67, - 125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,14, - 113,4,124,0,160,3,124,5,161,1,125,6,124,6,100,1, - 117,1,114,71,116,4,124,6,100,2,131,2,114,35,124,6, - 160,5,124,1,124,3,161,2,125,7,110,6,124,0,160,6, - 124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,46, - 113,4,124,7,106,7,100,1,117,1,114,55,124,7,2,0, - 1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,0, - 114,66,116,9,100,3,131,1,130,1,124,4,160,10,124,8, - 161,1,1,0,113,4,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,225,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,184,0,0, - 0,114,109,0,0,0,218,5,98,121,116,101,115,114,84,1, - 0,0,114,152,0,0,0,114,225,0,0,0,114,85,1,0, - 0,114,163,0,0,0,114,201,0,0,0,114,142,0,0,0, - 114,190,0,0,0,114,158,0,0,0,114,206,0,0,0,41, - 9,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, - 114,224,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,79,1,0, - 0,114,209,0,0,0,114,164,0,0,0,32,32,32,32,32, - 32,32,32,32,114,7,0,0,0,218,9,95,103,101,116,95, - 115,112,101,99,115,5,0,0,115,42,0,0,0,4,5,8, - 1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,8, - 1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,2, - 128,12,2,6,1,4,1,114,9,0,0,0,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,5, - 0,0,0,67,0,0,0,115,94,0,0,0,124,2,100,1, - 117,0,114,7,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,20, - 100,1,83,0,124,4,106,3,100,1,117,0,114,45,124,4, - 106,4,125,5,124,5,114,43,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,124,4,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, + 100,95,109,111,100,117,108,101,40,41,41,11,114,154,0,0, + 0,114,160,0,0,0,90,12,95,111,98,106,101,99,116,95, + 110,97,109,101,114,100,0,0,0,114,101,0,0,0,114,163, + 0,0,0,114,162,0,0,0,114,230,0,0,0,114,225,0, + 0,0,114,208,0,0,0,114,203,0,0,0,41,7,114,222, + 0,0,0,114,164,0,0,0,114,83,1,0,0,114,167,0, + 0,0,114,165,0,0,0,114,166,0,0,0,114,211,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,16,95,108,101,103,97,99,121,95,103,101,116,95,115,112, + 101,99,92,5,0,0,115,26,0,0,0,10,4,16,1,12, + 2,16,1,16,2,12,2,10,1,4,1,8,1,12,1,12, + 1,6,1,4,1,114,10,0,0,0,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,5,0,0,0,67,0,0,0,115,166,0, + 0,0,103,0,125,4,124,2,68,0,93,67,125,5,116,0, + 124,5,116,1,116,2,102,2,131,2,115,14,113,4,124,0, + 160,3,124,5,161,1,125,6,124,6,100,1,117,1,114,71, + 116,4,124,6,100,2,131,2,114,35,124,6,160,5,124,1, + 124,3,161,2,125,7,110,6,124,0,160,6,124,1,124,6, + 161,2,125,7,124,7,100,1,117,0,114,46,113,4,124,7, + 106,7,100,1,117,1,114,55,124,7,2,0,1,0,83,0, + 124,7,106,8,125,8,124,8,100,1,117,0,114,66,116,9, + 100,3,131,1,130,1,124,4,160,10,124,8,161,1,1,0, + 113,4,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,227,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,186,0,0,0,114,110,0, + 0,0,218,5,98,121,116,101,115,114,88,1,0,0,114,154, + 0,0,0,114,227,0,0,0,114,89,1,0,0,114,165,0, + 0,0,114,203,0,0,0,114,143,0,0,0,114,192,0,0, + 0,114,160,0,0,0,114,208,0,0,0,41,9,114,222,0, + 0,0,114,164,0,0,0,114,66,0,0,0,114,226,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,83,1,0,0,114,211,0, + 0,0,114,166,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,9,95,103,101,116,95,115,112,101, + 99,113,5,0,0,115,42,0,0,0,4,5,8,1,14,1, + 2,1,10,1,8,1,10,1,14,1,12,2,8,1,2,1, + 10,1,8,1,6,1,8,1,8,1,10,5,2,128,12,2, + 6,1,4,1,114,10,0,0,0,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,5,0,0,0, + 67,0,0,0,115,94,0,0,0,124,2,100,1,117,0,114, + 7,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,20,100,1,83, + 0,124,4,106,3,100,1,117,0,114,45,124,4,106,4,125, + 5,124,5,114,43,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,124,4,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,16,0,0,0, + 114,66,0,0,0,114,92,1,0,0,114,165,0,0,0,114, + 203,0,0,0,114,206,0,0,0,114,48,1,0,0,41,6, + 114,222,0,0,0,114,164,0,0,0,114,66,0,0,0,114, + 226,0,0,0,114,211,0,0,0,114,91,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,227,0, + 0,0,145,5,0,0,115,26,0,0,0,8,6,6,1,14, + 1,8,1,4,1,10,1,6,1,4,1,6,3,16,1,4, + 1,4,2,4,2,114,10,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, + 125,3,124,3,100,2,117,0,114,18,100,2,83,0,124,3, + 106,4,83,0,41,3,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,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,16, - 0,0,0,114,65,0,0,0,114,88,1,0,0,114,163,0, - 0,0,114,201,0,0,0,114,204,0,0,0,114,44,1,0, - 0,41,6,114,220,0,0,0,114,162,0,0,0,114,65,0, - 0,0,114,224,0,0,0,114,209,0,0,0,114,87,1,0, - 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, - 0,147,5,0,0,115,26,0,0,0,8,6,6,1,14,1, - 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, - 4,2,4,2,114,9,0,0,0,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, - 67,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, - 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, - 4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, - 0,0,0,32,32,32,32,114,7,0,0,0,114,228,0,0, - 0,171,5,0,0,115,14,0,0,0,6,8,2,2,4,254, - 12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124, - 0,105,0,124,1,164,1,142,1,83,0,41,4,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,78,41,3, - 90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,97, - 100,97,116,97,114,89,1,0,0,218,18,102,105,110,100,95, - 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, - 144,0,0,0,114,145,0,0,0,114,89,1,0,0,32,32, - 32,114,7,0,0,0,114,90,1,0,0,187,5,0,0,115, - 4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0, - 0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0,0,0, - 114,84,1,0,0,114,85,1,0,0,114,88,1,0,0,114, - 225,0,0,0,114,228,0,0,0,114,90,1,0,0,114,12, - 0,0,0,114,7,0,0,0,114,74,1,0,0,45,5,0, - 0,115,36,0,0,0,8,0,4,2,2,2,10,1,2,9, - 10,1,2,12,10,1,2,21,10,1,2,20,12,1,2,31, - 12,1,2,23,12,1,2,15,14,1,114,9,0,0,0,114, - 74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,112,0,0,0,103,0, - 125,3,124,2,68,0,93,16,92,2,137,5,125,4,124,3, - 160,0,135,5,102,1,100,1,100,2,132,8,124,4,68,0, - 131,1,161,1,1,0,113,4,124,3,124,0,95,1,124,1, - 112,27,100,3,124,0,95,2,116,3,124,0,106,2,131,1, - 115,43,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,3,0,0,0,51,0,0, - 0,115,24,0,0,0,129,0,124,0,93,7,125,1,124,1, - 136,2,102,2,86,0,1,0,113,2,100,0,83,0,114,69, - 0,0,0,114,12,0,0,0,41,3,114,5,0,0,0,114, - 41,1,0,0,114,163,0,0,0,32,32,128,114,7,0,0, - 0,114,8,0,0,0,216,5,0,0,115,4,0,0,0,6, - 128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41,11,114,190,0, - 0,0,218,8,95,108,111,97,100,101,114,115,114,65,0,0, - 0,114,86,0,0,0,114,67,0,0,0,114,19,0,0,0, - 114,82,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,6,114,143,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,211, - 0,0,0,114,163,0,0,0,32,32,32,32,32,64,114,7, - 0,0,0,114,235,0,0,0,210,5,0,0,115,20,0,0, - 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, - 1,8,1,12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93, - 1,0,0,114,20,1,0,0,32,114,7,0,0,0,114,75, - 1,0,0,226,5,0,0,114,81,0,0,0,114,9,0,0, - 0,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,4,0,0,0, - 67,0,0,0,115,54,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,161,1,125,2,124, - 2,100,2,117,0,114,19,100,2,103,0,102,2,83,0,124, - 2,106,4,124,2,106,5,112,25,103,0,102,2,83,0,41, - 3,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,122,101,70,105,108,101,70,105, - 110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,114, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, - 41,6,114,99,0,0,0,114,100,0,0,0,114,101,0,0, - 0,114,225,0,0,0,114,163,0,0,0,114,201,0,0,0, - 41,3,114,143,0,0,0,114,162,0,0,0,114,209,0,0, - 0,32,32,32,114,7,0,0,0,114,160,0,0,0,232,5, - 0,0,115,14,0,0,0,6,7,2,2,4,254,10,3,8, - 1,8,1,16,1,114,9,0,0,0,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,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,200,0,0,0,41,1, - 114,212,0,0,0,41,7,114,143,0,0,0,114,210,0,0, - 0,114,162,0,0,0,114,65,0,0,0,90,4,115,109,115, - 108,114,224,0,0,0,114,163,0,0,0,32,32,32,32,32, - 32,32,114,7,0,0,0,114,88,1,0,0,247,5,0,0, - 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, - 0,0,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,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,9,0,116,1,124,0,106,2,112,17,116, - 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, - 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, - 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, - 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, - 0,114,56,124,0,106,10,125,6,124,4,160,11,161,0,125, - 7,110,5,124,0,106,12,125,6,124,4,125,7,124,7,124, - 6,118,0,114,108,116,13,124,0,106,2,124,4,131,2,125, - 8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125,3,124,0,106,14,68, - 0,93,55,92,2,125,9,125,10,9,0,116,13,124,0,106, - 2,124,4,124,9,23,0,131,2,125,12,110,12,35,0,4, - 0,116,18,121,189,1,0,1,0,1,0,89,0,1,0,100, - 6,83,0,37,0,116,19,160,20,100,7,124,12,100,3,100, - 8,166,3,1,0,124,7,124,9,23,0,124,6,118,0,114, - 166,116,15,124,12,131,1,114,166,124,0,160,16,124,10,124, - 1,124,12,100,6,124,2,161,5,2,0,1,0,83,0,113, - 111,124,3,114,187,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,119,0,119, - 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,97,0,0,0,114,45,0,0,0,114, - 130,0,0,0,114,235,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, - 104,0,0,0,114,75,0,0,0,114,65,0,0,0,114,19, - 0,0,0,114,82,0,0,0,114,33,1,0,0,114,76,0, - 0,0,114,93,1,0,0,218,11,95,102,105,108,108,95,99, - 97,99,104,101,114,22,0,0,0,114,96,1,0,0,114,131, - 0,0,0,114,95,1,0,0,114,67,0,0,0,114,92,1, - 0,0,114,80,0,0,0,114,88,1,0,0,114,83,0,0, - 0,114,111,0,0,0,114,158,0,0,0,114,172,0,0,0, - 114,206,0,0,0,114,201,0,0,0,41,14,114,143,0,0, - 0,114,162,0,0,0,114,224,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,192,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,210,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, - 209,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,225,0,0,0,252,5,0,0, - 115,94,0,0,0,4,5,14,1,2,1,22,1,2,128,12, - 1,8,1,2,128,10,1,8,1,6,1,6,2,6,1,10, - 1,6,2,4,1,8,2,12,1,14,1,8,1,10,1,8, - 1,24,1,2,255,8,5,14,2,2,1,18,1,2,128,12, - 1,8,1,2,128,16,1,12,1,8,1,10,1,4,1,8, - 255,2,128,4,2,12,1,12,1,8,1,4,1,4,1,2, - 244,2,228,115,31,0,0,0,138,10,21,0,149,9,32,7, - 193,52,8,65,61,2,193,61,7,66,8,9,194,61,1,66, - 8,9,194,62,1,32,7,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,10,0,0,0,67,0, - 0,0,115,194,0,0,0,124,0,106,0,125,1,9,0,116, - 1,160,2,124,1,112,11,116,1,160,3,161,0,161,1,125, - 2,110,15,35,0,4,0,116,4,116,5,116,6,102,3,121, - 96,1,0,1,0,1,0,103,0,125,2,89,0,110,1,37, - 0,116,7,106,8,160,9,100,1,161,1,115,41,116,10,124, - 2,131,1,124,0,95,11,110,37,116,10,131,0,125,3,124, - 2,68,0,93,28,125,4,124,4,160,12,100,2,161,1,92, - 3,125,5,125,6,125,7,124,6,114,67,100,3,160,13,124, - 5,124,7,160,14,161,0,161,2,125,8,110,2,124,5,125, - 8,124,3,160,15,124,8,161,1,1,0,113,46,124,3,124, - 0,95,11,116,7,106,8,160,9,116,16,161,1,114,94,100, - 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100, - 6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0,114,88,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,83,0,0,0,115,20,0,0,0,104,0,124,0,93,6, - 125,1,124,1,160,0,161,0,146,2,113,2,83,0,114,12, - 0,0,0,41,1,114,131,0,0,0,41,2,114,5,0,0, - 0,90,2,102,110,32,32,114,7,0,0,0,114,14,0,0, - 0,76,6,0,0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100, - 105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0,0,114,27,0,0,0, - 114,94,1,0,0,114,95,1,0,0,114,126,0,0,0,114, - 89,0,0,0,114,131,0,0,0,218,3,97,100,100,114,28, - 0,0,0,114,96,1,0,0,41,9,114,143,0,0,0,114, - 65,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, - 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, - 116,101,110,116,115,114,67,1,0,0,114,141,0,0,0,114, - 51,1,0,0,114,41,1,0,0,90,8,110,101,119,95,110, - 97,109,101,32,32,32,32,32,32,32,32,32,114,7,0,0, - 0,114,98,1,0,0,47,6,0,0,115,42,0,0,0,6, - 2,2,1,20,1,2,128,18,1,8,3,2,128,12,3,12, - 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, - 1,12,1,20,1,4,255,2,233,115,13,0,0,0,132,9, - 14,0,142,12,28,7,193,32,1,28,7,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,7,0,0,0,115,18,0,0,0,135,3,135, - 4,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, - 4,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,4,0,0,0,19,0,0,0,115, - 36,0,0,0,116,0,124,0,131,1,115,10,116,1,100,1, - 124,0,100,2,141,2,130,1,136,1,124,0,103,1,136,2, - 162,1,82,0,142,0,83,0,41,4,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,78,41, - 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, - 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, - 7,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,88,6, - 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, - 0,0,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,78,114,12,0,0,0, - 41,5,114,220,0,0,0,114,97,1,0,0,114,102,1,0, - 0,114,220,0,0,0,114,97,1,0,0,96,96,32,64,64, - 114,7,0,0,0,218,9,112,97,116,104,95,104,111,111,107, - 78,6,0,0,115,4,0,0,0,14,10,4,6,114,9,0, - 0,0,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,3,0,0,0,67,0,0,0,114,64,1, - 0,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,89,0,0,0,114,65, - 0,0,0,114,20,1,0,0,32,114,7,0,0,0,114,65, - 1,0,0,96,6,0,0,114,58,1,0,0,114,9,0,0, - 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, - 114,101,112,114,95,95,114,69,0,0,0,41,15,114,149,0, - 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, - 0,114,235,0,0,0,114,75,1,0,0,114,166,0,0,0, - 114,228,0,0,0,114,160,0,0,0,114,88,1,0,0,114, - 225,0,0,0,114,98,1,0,0,114,233,0,0,0,114,103, - 1,0,0,114,65,1,0,0,114,12,0,0,0,114,7,0, - 0,0,114,91,1,0,0,201,5,0,0,115,24,0,0,0, - 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, - 8,51,2,31,10,1,12,17,114,9,0,0,0,114,91,1, - 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15, - 124,2,124,3,107,2,114,28,116,2,124,1,124,2,131,2, - 125,4,110,5,116,3,124,1,124,2,131,2,125,4,124,5, - 115,42,116,4,124,1,124,2,124,4,100,3,141,3,125,5, - 9,0,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,100,0,83,0,35,0,4,0,116,5,121,72,1,0, - 1,0,1,0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0, - 114,39,1,0,0,114,32,1,0,0,114,212,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,41,6,90,2,110,115, - 114,141,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,163,0,0,0,114, - 209,0,0,0,32,32,32,32,32,32,114,7,0,0,0,218, - 14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,102, - 6,0,0,115,40,0,0,0,10,2,10,1,4,1,4,1, - 8,1,8,1,12,1,10,2,4,1,14,1,2,1,8,1, - 8,1,8,1,12,1,2,128,12,1,6,2,2,128,2,254, - 115,15,0,0,0,171,16,61,0,189,7,65,7,7,193,8, - 1,65,7,7,114,108,1,0,0,99,0,0,0,0,0,0, - 0,0,0,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,102,2,125,1,116,5,116,6,102,2,125,2,124, - 0,124,1,124,2,103,3,83,0,41,2,122,95,82,101,116, - 117,114,110,115,32,97,32,108,105,115,116,32,111,102,32,102, - 105,108,101,45,98,97,115,101,100,32,109,111,100,117,108,101, - 32,108,111,97,100,101,114,115,46,10,10,32,32,32,32,69, - 97,99,104,32,105,116,101,109,32,105,115,32,97,32,116,117, - 112,108,101,32,40,108,111,97,100,101,114,44,32,115,117,102, - 102,105,120,101,115,41,46,10,32,32,32,32,78,41,7,114, - 28,1,0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,32,32,32,114,7,0,0,0,114,207,0,0,0,125,6, - 0,0,115,8,0,0,0,12,5,8,1,8,1,10,1,114, - 9,0,0,0,114,207,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,67,0,0,0,115,8, - 0,0,0,124,0,97,0,100,0,83,0,114,69,0,0,0, - 41,1,114,158,0,0,0,41,1,218,17,95,98,111,111,116, - 115,116,114,97,112,95,109,111,100,117,108,101,32,114,7,0, - 0,0,218,21,95,115,101,116,95,98,111,111,116,115,116,114, - 97,112,95,109,111,100,117,108,101,136,6,0,0,115,2,0, - 0,0,8,2,114,9,0,0,0,114,111,1,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,50,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,111,1,0,0,114, - 207,0,0,0,114,16,0,0,0,114,80,1,0,0,114,190, - 0,0,0,114,91,1,0,0,114,103,1,0,0,218,9,109, - 101,116,97,95,112,97,116,104,114,61,0,0,0,114,74,1, - 0,0,41,2,114,110,1,0,0,90,17,115,117,112,112,111, - 114,116,101,100,95,108,111,97,100,101,114,115,32,32,114,7, - 0,0,0,218,8,95,105,110,115,116,97,108,108,141,6,0, - 0,115,8,0,0,0,8,2,6,1,20,1,16,1,114,9, - 0,0,0,114,113,1,0,0,41,1,114,87,0,0,0,114, - 69,0,0,0,41,3,78,78,78,41,2,114,0,0,0,0, - 114,0,0,0,0,41,1,84,41,85,114,151,0,0,0,114, - 158,0,0,0,114,186,0,0,0,114,91,0,0,0,114,16, - 0,0,0,114,99,0,0,0,114,183,0,0,0,114,26,0, - 0,0,114,230,0,0,0,90,2,110,116,114,19,0,0,0, - 114,214,0,0,0,90,5,112,111,115,105,120,114,51,0,0, - 0,218,3,97,108,108,114,59,0,0,0,114,136,0,0,0, - 114,57,0,0,0,114,62,0,0,0,90,20,95,112,97,116, - 104,115,101,112,115,95,119,105,116,104,95,99,111,108,111,110, - 114,29,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,28,0,0, - 0,114,30,0,0,0,114,22,0,0,0,114,37,0,0,0, - 114,43,0,0,0,114,46,0,0,0,114,67,0,0,0,114, - 73,0,0,0,114,75,0,0,0,114,79,0,0,0,114,80, - 0,0,0,114,83,0,0,0,114,86,0,0,0,114,95,0, - 0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,101, - 95,95,114,185,0,0,0,114,35,0,0,0,114,171,0,0, - 0,114,34,0,0,0,114,40,0,0,0,114,7,1,0,0, - 114,116,0,0,0,114,112,0,0,0,114,127,0,0,0,114, - 61,0,0,0,114,109,1,0,0,114,231,0,0,0,114,113, - 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,121,0,0,0,114,128, - 0,0,0,114,135,0,0,0,114,137,0,0,0,114,139,0, - 0,0,114,159,0,0,0,114,166,0,0,0,114,175,0,0, - 0,114,179,0,0,0,114,181,0,0,0,114,188,0,0,0, - 114,193,0,0,0,114,194,0,0,0,114,199,0,0,0,218, - 6,111,98,106,101,99,116,114,208,0,0,0,114,212,0,0, - 0,114,213,0,0,0,114,234,0,0,0,114,248,0,0,0, - 114,10,1,0,0,114,32,1,0,0,114,39,1,0,0,114, - 28,1,0,0,114,44,1,0,0,114,70,1,0,0,114,74, - 1,0,0,114,91,1,0,0,114,108,1,0,0,114,207,0, - 0,0,114,111,1,0,0,114,113,1,0,0,114,12,0,0, - 0,114,7,0,0,0,218,8,60,109,111,100,117,108,101,62, + 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,122,101,80,97,116,104,70,105,110,100,101,114,46,102, + 105,110,100,95,109,111,100,117,108,101,40,41,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, + 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, + 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, + 59,32,117,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,78,114,228,0,0,0,114, + 229,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,230,0,0,0,169,5,0,0,115,14,0,0, + 0,6,8,2,2,4,254,12,3,8,1,4,1,6,1,114, + 10,0,0,0,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,0,0,0, + 0,0,0,0,0,0,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,2, + 1,0,124,2,106,2,124,0,105,0,124,1,164,1,142,1, + 83,0,41,4,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,78,41,3,90,18,105,109,112,111,114,116,108, + 105,98,46,109,101,116,97,100,97,116,97,114,93,1,0,0, + 218,18,102,105,110,100,95,100,105,115,116,114,105,98,117,116, + 105,111,110,115,41,3,114,145,0,0,0,114,146,0,0,0, + 114,93,1,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,94,1,0,0,185,5,0,0,115,4,0, + 0,0,12,10,16,1,114,10,0,0,0,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,114,70,0,0,0,114, + 231,0,0,0,41,14,114,151,0,0,0,114,150,0,0,0, + 114,152,0,0,0,114,153,0,0,0,114,234,0,0,0,114, + 79,1,0,0,114,85,1,0,0,114,235,0,0,0,114,88, + 1,0,0,114,89,1,0,0,114,92,1,0,0,114,227,0, + 0,0,114,230,0,0,0,114,94,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,78,1,0,0,43,5,0,0,115,36,0,0,0,8,0, + 4,2,2,2,10,1,2,9,10,1,2,12,10,1,2,21, + 10,1,2,20,12,1,2,31,12,1,2,23,12,1,2,15, + 14,1,114,10,0,0,0,114,78,1,0,0,99,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,6,0,0,0,7,0,0, + 0,115,112,0,0,0,103,0,125,3,124,2,68,0,93,16, + 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,4, + 124,3,124,0,95,1,124,1,112,27,100,3,124,0,95,2, + 116,3,124,0,106,2,131,1,115,43,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,3,0,0,0,51,0,0,0,115,24,0,0,0,129,0, + 124,0,93,7,125,1,124,1,136,0,102,2,86,0,1,0, + 113,2,100,0,83,0,114,70,0,0,0,114,7,0,0,0, + 114,44,1,0,0,169,1,114,165,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,9,0,0,0,214,5,0,0,115, + 4,0,0,0,6,128,18,0,114,10,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,98,0,0,0,114,131,0,0,0,78, + 41,11,114,192,0,0,0,218,8,95,108,111,97,100,101,114, + 115,114,66,0,0,0,114,87,0,0,0,114,68,0,0,0, + 114,19,0,0,0,114,83,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,144,0,0,0,114,66,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,213,0,0,0,114,7,0,0,0,114,96,1, + 0,0,114,8,0,0,0,114,237,0,0,0,208,5,0,0, + 115,20,0,0,0,4,4,12,1,26,1,6,1,10,2,10, + 1,18,1,6,1,8,1,12,1,114,10,0,0,0,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, + 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,131,0,0,0,78, + 41,1,114,98,1,0,0,114,22,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,79,1,0,0, + 224,5,0,0,114,82,0,0,0,114,10,0,0,0,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,4,0,0,0,67,0,0, + 0,115,54,0,0,0,116,0,160,1,100,1,116,2,161,2, + 1,0,124,0,160,3,124,1,161,1,125,2,124,2,100,2, + 117,0,114,19,100,2,103,0,102,2,83,0,124,2,106,4, + 124,2,106,5,112,25,103,0,102,2,83,0,41,3,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,122,101,70,105,108,101,70,105,110,100,101, + 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,41,6,114, + 100,0,0,0,114,101,0,0,0,114,102,0,0,0,114,227, + 0,0,0,114,165,0,0,0,114,203,0,0,0,41,3,114, + 144,0,0,0,114,164,0,0,0,114,211,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,162,0, + 0,0,230,5,0,0,115,14,0,0,0,6,7,2,2,4, + 254,10,3,8,1,8,1,16,1,114,10,0,0,0,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,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,202,0, + 0,0,41,1,114,214,0,0,0,41,7,114,144,0,0,0, + 114,212,0,0,0,114,164,0,0,0,114,66,0,0,0,90, + 4,115,109,115,108,114,226,0,0,0,114,165,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,92, + 1,0,0,245,5,0,0,115,8,0,0,0,10,1,8,1, + 2,1,6,255,114,10,0,0,0,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,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,9,0,116,1, + 124,0,106,2,112,17,116,3,160,4,161,0,131,1,106,5, + 125,5,110,12,35,0,4,0,116,6,121,190,1,0,1,0, + 1,0,100,4,125,5,89,0,110,1,37,0,124,5,124,0, + 106,7,107,3,114,45,124,0,160,8,161,0,1,0,124,5, + 124,0,95,7,116,9,131,0,114,56,124,0,106,10,125,6, + 124,4,160,11,161,0,125,7,110,5,124,0,106,12,125,6, + 124,4,125,7,124,7,124,6,118,0,114,108,116,13,124,0, + 106,2,124,4,131,2,125,8,124,0,106,14,68,0,93,29, + 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,103, + 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,74,116,17,124,8,131,1, + 125,3,124,0,106,14,68,0,93,55,92,2,125,9,125,10, + 9,0,116,13,124,0,106,2,124,4,124,9,23,0,131,2, + 125,12,110,12,35,0,4,0,116,18,121,189,1,0,1,0, + 1,0,89,0,1,0,100,6,83,0,37,0,116,19,160,20, + 100,7,124,12,100,3,100,8,166,3,1,0,124,7,124,9, + 23,0,124,6,118,0,114,166,116,15,124,12,131,1,114,166, + 124,0,160,16,124,10,124,1,124,12,100,6,124,2,161,5, + 2,0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,98,0,0, + 0,114,45,0,0,0,114,131,0,0,0,114,237,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,105,0,0,0,114,76,0,0,0, + 114,66,0,0,0,114,19,0,0,0,114,83,0,0,0,114, + 36,1,0,0,114,77,0,0,0,114,98,1,0,0,218,11, + 95,102,105,108,108,95,99,97,99,104,101,114,22,0,0,0, + 114,101,1,0,0,114,132,0,0,0,114,100,1,0,0,114, + 68,0,0,0,114,97,1,0,0,114,81,0,0,0,114,92, + 1,0,0,114,84,0,0,0,114,112,0,0,0,114,160,0, + 0,0,114,174,0,0,0,114,208,0,0,0,114,203,0,0, + 0,41,14,114,144,0,0,0,114,164,0,0,0,114,226,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,194,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,45,1,0,0,114,212,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,211,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,227,0,0,0,250, + 5,0,0,115,94,0,0,0,4,5,14,1,2,1,22,1, + 2,128,12,1,8,1,2,128,10,1,8,1,6,1,6,2, + 6,1,10,1,6,2,4,1,8,2,12,1,14,1,8,1, + 10,1,8,1,24,1,2,255,8,5,14,2,2,1,18,1, + 2,128,12,1,8,1,2,128,16,1,12,1,8,1,10,1, + 4,1,8,255,2,128,4,2,12,1,12,1,8,1,4,1, + 4,1,2,244,2,228,115,31,0,0,0,138,10,21,0,149, + 9,32,7,193,52,8,65,61,2,193,61,7,66,8,9,194, + 61,1,66,8,9,194,62,1,32,7,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,10,0,0, + 0,67,0,0,0,115,194,0,0,0,124,0,106,0,125,1, + 9,0,116,1,160,2,124,1,112,11,116,1,160,3,161,0, + 161,1,125,2,110,15,35,0,4,0,116,4,116,5,116,6, + 102,3,121,96,1,0,1,0,1,0,103,0,125,2,89,0, + 110,1,37,0,116,7,106,8,160,9,100,1,161,1,115,41, + 116,10,124,2,131,1,124,0,95,11,110,37,116,10,131,0, + 125,3,124,2,68,0,93,28,125,4,124,4,160,12,100,2, + 161,1,92,3,125,5,125,6,125,7,124,6,114,67,100,3, + 160,13,124,5,124,7,160,14,161,0,161,2,125,8,110,2, + 124,5,125,8,124,3,160,15,124,8,161,1,1,0,113,46, + 124,3,124,0,95,11,116,7,106,8,160,9,116,16,161,1, + 114,94,100,4,100,5,132,0,124,2,68,0,131,1,124,0, + 95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,98,0,0,0,114,89, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,83,0,0,0,115,20,0,0,0,104,0,124, + 0,93,6,125,1,124,1,160,0,161,0,146,2,113,2,83, + 0,114,7,0,0,0,41,1,114,132,0,0,0,41,2,114, + 5,0,0,0,90,2,102,110,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,14,0,0,0,74,6,0,0, + 115,2,0,0,0,20,0,114,10,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,66,0,0,0,114, + 19,0,0,0,90,7,108,105,115,116,100,105,114,114,83,0, + 0,0,114,86,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,16,0,0, + 0,114,26,0,0,0,114,27,0,0,0,114,99,1,0,0, + 114,100,1,0,0,114,127,0,0,0,114,90,0,0,0,114, + 132,0,0,0,218,3,97,100,100,114,28,0,0,0,114,101, + 1,0,0,41,9,114,144,0,0,0,114,66,0,0,0,90, + 8,99,111,110,116,101,110,116,115,90,21,108,111,119,101,114, + 95,115,117,102,102,105,120,95,99,111,110,116,101,110,116,115, + 114,71,1,0,0,114,142,0,0,0,114,55,1,0,0,114, + 45,1,0,0,90,8,110,101,119,95,110,97,109,101,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,103,1, + 0,0,45,6,0,0,115,42,0,0,0,6,2,2,1,20, + 1,2,128,18,1,8,3,2,128,12,3,12,1,6,7,8, + 1,16,1,4,1,18,1,4,2,12,1,6,1,12,1,20, + 1,4,255,2,233,115,13,0,0,0,132,9,14,0,142,12, + 28,7,193,32,1,28,7,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, + 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,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0, + 116,0,124,0,131,1,115,10,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,4,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,72,0,0,0,78,41,2,114,84,0, + 0,0,114,143,0,0,0,114,72,0,0,0,169,2,114,222, + 0,0,0,114,102,1,0,0,114,7,0,0,0,114,8,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,86,6,0,0, + 115,6,0,0,0,8,2,12,1,16,1,114,10,0,0,0, + 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,78,114,7,0,0,0,41,3, + 114,222,0,0,0,114,102,1,0,0,114,108,1,0,0,114, + 7,0,0,0,114,107,1,0,0,114,8,0,0,0,218,9, + 112,97,116,104,95,104,111,111,107,76,6,0,0,115,4,0, + 0,0,14,10,4,6,114,10,0,0,0,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,3,0, + 0,0,67,0,0,0,114,68,1,0,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,90,0,0,0,114,66,0,0,0,114,22,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,69,1,0,0,94,6,0,0,114,62,1,0,0,114,10, + 0,0,0,122,19,70,105,108,101,70,105,110,100,101,114,46, + 95,95,114,101,112,114,95,95,114,70,0,0,0,41,15,114, + 151,0,0,0,114,150,0,0,0,114,152,0,0,0,114,153, + 0,0,0,114,237,0,0,0,114,79,1,0,0,114,168,0, + 0,0,114,230,0,0,0,114,162,0,0,0,114,92,1,0, + 0,114,227,0,0,0,114,103,1,0,0,114,235,0,0,0, + 114,109,1,0,0,114,69,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,95, + 1,0,0,199,5,0,0,115,24,0,0,0,8,0,4,2, + 8,7,8,16,4,4,8,2,8,15,10,5,8,51,2,31, + 10,1,12,17,114,10,0,0,0,114,95,1,0,0,99,4, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,146,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,33, + 124,5,114,18,124,5,106,1,125,4,110,15,124,2,124,3, + 107,2,114,28,116,2,124,1,124,2,131,2,125,4,110,5, + 116,3,124,1,124,2,131,2,125,4,124,5,115,42,116,4, + 124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100,0, + 83,0,35,0,4,0,116,5,121,72,1,0,1,0,1,0, + 89,0,100,0,83,0,37,0,119,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,96,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,165,0,0,0,114,42,1,0,0,114, + 35,1,0,0,114,214,0,0,0,218,9,69,120,99,101,112, + 116,105,111,110,41,6,90,2,110,115,114,142,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,165,0,0,0,114,211,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,95, + 102,105,120,95,117,112,95,109,111,100,117,108,101,100,6,0, + 0,115,40,0,0,0,10,2,10,1,4,1,4,1,8,1, + 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, + 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, + 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, + 7,7,114,114,1,0,0,99,0,0,0,0,0,0,0,0, + 0,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,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, + 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, + 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, + 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, + 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, + 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, + 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, + 120,101,115,41,46,10,32,32,32,32,78,41,7,114,31,1, + 0,0,114,188,0,0,0,218,18,101,120,116,101,110,115,105, + 111,110,95,115,117,102,102,105,120,101,115,114,35,1,0,0, + 114,128,0,0,0,114,42,1,0,0,114,114,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, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,209, + 0,0,0,123,6,0,0,115,8,0,0,0,12,5,8,1, + 8,1,10,1,114,10,0,0,0,114,209,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,67, + 0,0,0,115,8,0,0,0,124,0,97,0,100,0,83,0, + 114,70,0,0,0,41,1,114,160,0,0,0,41,1,218,17, + 95,98,111,111,116,115,116,114,97,112,95,109,111,100,117,108, + 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,21,95,115,101,116,95,98,111,111,116,115,116,114,97,112, + 95,109,111,100,117,108,101,134,6,0,0,115,2,0,0,0, + 8,2,114,10,0,0,0,114,117,1,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,50,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,117,1,0,0,114,209,0, + 0,0,114,16,0,0,0,114,84,1,0,0,114,192,0,0, + 0,114,95,1,0,0,114,109,1,0,0,218,9,109,101,116, + 97,95,112,97,116,104,114,62,0,0,0,114,78,1,0,0, + 41,2,114,116,1,0,0,90,17,115,117,112,112,111,114,116, + 101,100,95,108,111,97,100,101,114,115,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,8,95,105,110,115,116, + 97,108,108,139,6,0,0,115,8,0,0,0,8,2,6,1, + 20,1,16,1,114,10,0,0,0,114,119,1,0,0,41,1, + 114,88,0,0,0,114,70,0,0,0,41,3,78,78,78,41, + 2,114,0,0,0,0,114,0,0,0,0,41,1,84,41,85, + 114,153,0,0,0,114,160,0,0,0,114,188,0,0,0,114, + 92,0,0,0,114,16,0,0,0,114,100,0,0,0,114,185, + 0,0,0,114,26,0,0,0,114,232,0,0,0,90,2,110, + 116,114,19,0,0,0,114,216,0,0,0,90,5,112,111,115, + 105,120,114,51,0,0,0,218,3,97,108,108,114,60,0,0, + 0,114,137,0,0,0,114,58,0,0,0,114,63,0,0,0, + 90,20,95,112,97,116,104,115,101,112,115,95,119,105,116,104, + 95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0,114,22,0,0, + 0,114,37,0,0,0,114,43,0,0,0,114,46,0,0,0, + 114,68,0,0,0,114,75,0,0,0,114,76,0,0,0,114, + 80,0,0,0,114,81,0,0,0,114,84,0,0,0,114,87, + 0,0,0,114,96,0,0,0,218,4,116,121,112,101,218,8, + 95,95,99,111,100,101,95,95,114,187,0,0,0,114,35,0, + 0,0,114,173,0,0,0,114,34,0,0,0,114,40,0,0, + 0,114,9,1,0,0,114,117,0,0,0,114,113,0,0,0, + 114,128,0,0,0,114,62,0,0,0,114,115,1,0,0,114, + 233,0,0,0,114,114,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, + 122,0,0,0,114,129,0,0,0,114,136,0,0,0,114,138, + 0,0,0,114,140,0,0,0,114,161,0,0,0,114,168,0, + 0,0,114,177,0,0,0,114,181,0,0,0,114,183,0,0, + 0,114,190,0,0,0,114,195,0,0,0,114,196,0,0,0, + 114,201,0,0,0,218,6,111,98,106,101,99,116,114,210,0, + 0,0,114,214,0,0,0,114,215,0,0,0,114,236,0,0, + 0,114,250,0,0,0,114,12,1,0,0,114,35,1,0,0, + 114,42,1,0,0,114,31,1,0,0,114,48,1,0,0,114, + 74,1,0,0,114,78,1,0,0,114,95,1,0,0,114,114, + 1,0,0,114,209,0,0,0,114,117,1,0,0,114,119,1, + 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,8,60,109,111,100,117,108,101,62, 1,0,0,0,115,180,0,0,0,4,0,4,22,8,3,8, 1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8, 2,4,3,10,1,6,2,22,2,8,1,8,1,10,1,14, 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, - 127,16,35,12,1,4,2,4,1,6,2,4,1,10,1,8, + 127,16,33,12,1,4,2,4,1,6,2,4,1,10,1,8, 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, 127,14,17,18,50,18,45,18,25,14,53,14,63,14,49,0, - 127,14,29,0,127,10,30,8,23,8,11,12,5,114,9,0, + 127,14,29,0,127,10,30,8,23,8,11,12,5,114,10,0, 0,0, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 63084b7e57d251..988d938f10b861 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -70,264 +70,266 @@ const unsigned char _Py_M__zipimport[] = { 0,41,2,114,3,0,0,0,78,41,3,218,8,95,95,110, 97,109,101,95,95,218,10,95,95,109,111,100,117,108,101,95, 95,218,12,95,95,113,117,97,108,110,97,109,101,95,95,169, - 0,250,18,60,102,114,111,122,101,110,32,122,105,112,105,109, - 112,111,114,116,62,114,3,0,0,0,34,0,0,0,115,4, - 0,0,0,8,0,4,1,243,0,0,0,0,233,22,0,0, - 0,115,4,0,0,0,80,75,5,6,105,255,255,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 64,0,0,0,115,126,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,100,3,132,0,90,4,100,29,100, - 5,100,6,132,1,90,5,100,29,100,7,100,8,132,1,90, - 6,100,29,100,9,100,10,132,1,90,7,100,11,100,12,132, - 0,90,8,100,13,100,14,132,0,90,9,100,15,100,16,132, - 0,90,10,100,17,100,18,132,0,90,11,100,19,100,20,132, - 0,90,12,100,21,100,22,132,0,90,13,100,23,100,24,132, - 0,90,14,100,25,100,26,132,0,90,15,100,27,100,28,132, - 0,90,16,100,4,83,0,41,30,114,4,0,0,0,97,255, - 1,0,0,122,105,112,105,109,112,111,114,116,101,114,40,97, - 114,99,104,105,118,101,112,97,116,104,41,32,45,62,32,122, - 105,112,105,109,112,111,114,116,101,114,32,111,98,106,101,99, - 116,10,10,32,32,32,32,67,114,101,97,116,101,32,97,32, - 110,101,119,32,122,105,112,105,109,112,111,114,116,101,114,32, - 105,110,115,116,97,110,99,101,46,32,39,97,114,99,104,105, - 118,101,112,97,116,104,39,32,109,117,115,116,32,98,101,32, - 97,32,112,97,116,104,32,116,111,10,32,32,32,32,97,32, - 122,105,112,102,105,108,101,44,32,111,114,32,116,111,32,97, - 32,115,112,101,99,105,102,105,99,32,112,97,116,104,32,105, - 110,115,105,100,101,32,97,32,122,105,112,102,105,108,101,46, - 32,70,111,114,32,101,120,97,109,112,108,101,44,32,105,116, - 32,99,97,110,32,98,101,10,32,32,32,32,39,47,116,109, - 112,47,109,121,105,109,112,111,114,116,46,122,105,112,39,44, - 32,111,114,32,39,47,116,109,112,47,109,121,105,109,112,111, - 114,116,46,122,105,112,47,109,121,100,105,114,101,99,116,111, - 114,121,39,44,32,105,102,32,109,121,100,105,114,101,99,116, - 111,114,121,32,105,115,32,97,10,32,32,32,32,118,97,108, - 105,100,32,100,105,114,101,99,116,111,114,121,32,105,110,115, - 105,100,101,32,116,104,101,32,97,114,99,104,105,118,101,46, - 10,10,32,32,32,32,39,90,105,112,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,39,97,114,99,104,105,118,101,112,97,116,104,39, - 32,100,111,101,115,110,39,116,32,112,111,105,110,116,32,116, - 111,32,97,32,118,97,108,105,100,32,90,105,112,10,32,32, - 32,32,97,114,99,104,105,118,101,46,10,10,32,32,32,32, - 84,104,101,32,39,97,114,99,104,105,118,101,39,32,97,116, - 116,114,105,98,117,116,101,32,111,102,32,122,105,112,105,109, - 112,111,114,116,101,114,32,111,98,106,101,99,116,115,32,99, - 111,110,116,97,105,110,115,32,116,104,101,32,110,97,109,101, - 32,111,102,32,116,104,101,10,32,32,32,32,122,105,112,102, - 105,108,101,32,116,97,114,103,101,116,101,100,46,10,32,32, - 32,32,99,2,0,0,0,0,0,0,0,0,0,0,0,9, - 0,0,0,67,0,0,0,115,40,1,0,0,116,0,124,1, - 116,1,131,2,115,14,100,1,100,0,108,2,125,2,124,2, - 160,3,124,1,161,1,125,1,124,1,115,22,116,4,100,2, - 124,1,100,3,141,2,130,1,116,5,114,30,124,1,160,6, - 116,5,116,7,161,2,125,1,103,0,125,3,9,0,9,0, - 116,8,160,9,124,1,161,1,125,4,110,36,35,0,4,0, - 116,10,116,11,102,2,121,147,1,0,1,0,1,0,116,8, - 160,12,124,1,161,1,92,2,125,5,125,6,124,5,124,1, - 107,2,114,66,116,4,100,5,124,1,100,3,141,2,130,1, - 124,5,125,1,124,3,160,13,124,6,161,1,1,0,89,0, - 110,15,37,0,124,4,106,14,100,6,64,0,100,7,107,3, - 114,89,116,4,100,5,124,1,100,3,141,2,130,1,113,91, - 113,33,9,0,116,15,124,1,25,0,125,7,110,18,35,0, - 4,0,116,16,121,146,1,0,1,0,1,0,116,17,124,1, - 131,1,125,7,124,7,116,15,124,1,60,0,89,0,110,1, - 37,0,124,7,124,0,95,18,124,1,124,0,95,19,116,8, - 106,20,124,3,100,0,100,0,100,8,133,3,25,0,142,0, - 124,0,95,21,124,0,106,21,114,144,124,0,4,0,106,21, - 116,7,55,0,2,0,95,21,100,0,83,0,100,0,83,0, - 119,0,119,0,41,9,78,114,0,0,0,0,122,21,97,114, - 99,104,105,118,101,32,112,97,116,104,32,105,115,32,101,109, - 112,116,121,169,1,218,4,112,97,116,104,84,122,14,110,111, - 116,32,97,32,90,105,112,32,102,105,108,101,105,0,240,0, - 0,105,0,128,0,0,233,255,255,255,255,41,22,218,10,105, - 115,105,110,115,116,97,110,99,101,218,3,115,116,114,218,2, - 111,115,90,8,102,115,100,101,99,111,100,101,114,3,0,0, - 0,218,12,97,108,116,95,112,97,116,104,95,115,101,112,218, - 7,114,101,112,108,97,99,101,218,8,112,97,116,104,95,115, - 101,112,218,19,95,98,111,111,116,115,116,114,97,112,95,101, - 120,116,101,114,110,97,108,90,10,95,112,97,116,104,95,115, - 116,97,116,218,7,79,83,69,114,114,111,114,218,10,86,97, - 108,117,101,69,114,114,111,114,90,11,95,112,97,116,104,95, - 115,112,108,105,116,218,6,97,112,112,101,110,100,90,7,115, - 116,95,109,111,100,101,218,20,95,122,105,112,95,100,105,114, - 101,99,116,111,114,121,95,99,97,99,104,101,218,8,75,101, - 121,69,114,114,111,114,218,15,95,114,101,97,100,95,100,105, - 114,101,99,116,111,114,121,218,6,95,102,105,108,101,115,218, - 7,97,114,99,104,105,118,101,218,10,95,112,97,116,104,95, - 106,111,105,110,218,6,112,114,101,102,105,120,41,8,218,4, - 115,101,108,102,114,14,0,0,0,114,18,0,0,0,114,32, - 0,0,0,90,2,115,116,90,7,100,105,114,110,97,109,101, - 90,8,98,97,115,101,110,97,109,101,218,5,102,105,108,101, - 115,32,32,32,32,32,32,32,32,114,10,0,0,0,218,8, - 95,95,105,110,105,116,95,95,64,0,0,0,115,76,0,0, - 0,10,1,8,1,10,1,4,1,12,1,4,1,12,1,4, - 2,2,1,2,1,12,1,2,128,16,1,14,3,8,1,12, - 1,4,1,14,1,2,128,14,3,12,2,2,1,2,240,2, - 18,10,1,2,128,12,1,8,1,12,1,2,128,6,1,6, - 1,22,2,6,1,18,1,4,255,2,249,2,239,115,33,0, - 0,0,162,5,40,0,168,33,65,11,7,193,28,4,65,33, - 0,193,33,15,65,50,7,194,18,1,65,50,7,194,19,1, - 65,11,7,122,20,122,105,112,105,109,112,111,114,116,101,114, - 46,95,95,105,110,105,116,95,95,78,99,3,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 90,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, - 116,3,124,0,124,1,131,2,125,3,124,3,100,2,117,1, - 114,19,124,0,103,0,102,2,83,0,116,4,124,0,124,1, - 131,2,125,4,116,5,124,0,124,4,131,2,114,41,100,2, - 124,0,106,6,155,0,116,7,155,0,124,4,155,0,157,3, - 103,1,102,2,83,0,100,2,103,0,102,2,83,0,41,3, - 97,47,2,0,0,102,105,110,100,95,108,111,97,100,101,114, - 40,102,117,108,108,110,97,109,101,44,32,112,97,116,104,61, - 78,111,110,101,41,32,45,62,32,115,101,108,102,44,32,115, - 116,114,32,111,114,32,78,111,110,101,46,10,10,32,32,32, - 32,32,32,32,32,83,101,97,114,99,104,32,102,111,114,32, - 97,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, - 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, - 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, - 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, - 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, - 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, - 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, - 115,32,116,104,101,32,122,105,112,105,109,112,111,114,116,101, - 114,10,32,32,32,32,32,32,32,32,105,110,115,116,97,110, - 99,101,32,105,116,115,101,108,102,32,105,102,32,116,104,101, - 32,109,111,100,117,108,101,32,119,97,115,32,102,111,117,110, - 100,44,32,97,32,115,116,114,105,110,103,32,99,111,110,116, - 97,105,110,105,110,103,32,116,104,101,10,32,32,32,32,32, - 32,32,32,102,117,108,108,32,112,97,116,104,32,110,97,109, - 101,32,105,102,32,105,116,39,115,32,112,111,115,115,105,98, - 108,121,32,97,32,112,111,114,116,105,111,110,32,111,102,32, - 97,32,110,97,109,101,115,112,97,99,101,32,112,97,99,107, - 97,103,101,44,10,32,32,32,32,32,32,32,32,111,114,32, - 78,111,110,101,32,111,116,104,101,114,119,105,115,101,46,32, - 84,104,101,32,111,112,116,105,111,110,97,108,32,39,112,97, - 116,104,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 105,103,110,111,114,101,100,32,45,45,32,105,116,39,115,10, - 32,32,32,32,32,32,32,32,116,104,101,114,101,32,102,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,105,109,112,111,114,116,101, - 114,32,112,114,111,116,111,99,111,108,46,10,10,32,32,32, - 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, - 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, - 48,46,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,32,32,32,32, - 32,32,32,32,122,102,122,105,112,105,109,112,111,114,116,101, - 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, - 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, - 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, - 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,78,41,8,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,16,95,103,101,116,95,109,111,100,117,108, - 101,95,105,110,102,111,218,16,95,103,101,116,95,109,111,100, - 117,108,101,95,112,97,116,104,218,7,95,105,115,95,100,105, - 114,114,30,0,0,0,114,21,0,0,0,41,5,114,33,0, - 0,0,218,8,102,117,108,108,110,97,109,101,114,14,0,0, - 0,218,2,109,105,218,7,109,111,100,112,97,116,104,32,32, - 32,32,32,114,10,0,0,0,218,11,102,105,110,100,95,108, - 111,97,100,101,114,110,0,0,0,115,20,0,0,0,6,12, - 2,2,4,254,10,3,8,1,8,2,10,7,10,1,24,4, - 8,2,114,11,0,0,0,122,23,122,105,112,105,109,112,111, - 114,116,101,114,46,102,105,110,100,95,108,111,97,100,101,114, - 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,28,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, - 100,2,25,0,83,0,41,4,97,203,1,0,0,102,105,110, - 100,95,109,111,100,117,108,101,40,102,117,108,108,110,97,109, - 101,44,32,112,97,116,104,61,78,111,110,101,41,32,45,62, - 32,115,101,108,102,32,111,114,32,78,111,110,101,46,10,10, - 32,32,32,32,32,32,32,32,83,101,97,114,99,104,32,102, - 111,114,32,97,32,109,111,100,117,108,101,32,115,112,101,99, - 105,102,105,101,100,32,98,121,32,39,102,117,108,108,110,97, - 109,101,39,46,32,39,102,117,108,108,110,97,109,101,39,32, - 109,117,115,116,32,98,101,32,116,104,101,10,32,32,32,32, - 32,32,32,32,102,117,108,108,121,32,113,117,97,108,105,102, - 105,101,100,32,40,100,111,116,116,101,100,41,32,109,111,100, - 117,108,101,32,110,97,109,101,46,32,73,116,32,114,101,116, - 117,114,110,115,32,116,104,101,32,122,105,112,105,109,112,111, - 114,116,101,114,10,32,32,32,32,32,32,32,32,105,110,115, - 116,97,110,99,101,32,105,116,115,101,108,102,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,119,97,115,32,102, - 111,117,110,100,44,32,111,114,32,78,111,110,101,32,105,102, - 32,105,116,32,119,97,115,110,39,116,46,10,32,32,32,32, - 32,32,32,32,84,104,101,32,111,112,116,105,111,110,97,108, - 32,39,112,97,116,104,39,32,97,114,103,117,109,101,110,116, - 32,105,115,32,105,103,110,111,114,101,100,32,45,45,32,105, - 116,39,115,32,116,104,101,114,101,32,102,111,114,32,99,111, - 109,112,97,116,105,98,105,108,105,116,121,10,32,32,32,32, - 32,32,32,32,119,105,116,104,32,116,104,101,32,105,109,112, - 111,114,116,101,114,32,112,114,111,116,111,99,111,108,46,10, - 10,32,32,32,32,32,32,32,32,68,101,112,114,101,99,97, - 116,101,100,32,115,105,110,99,101,32,80,121,116,104,111,110, - 32,51,46,49,48,46,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, - 32,32,32,32,32,32,32,32,122,102,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, - 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, - 114,0,0,0,0,78,41,4,114,36,0,0,0,114,37,0, - 0,0,114,38,0,0,0,114,45,0,0,0,41,3,114,33, - 0,0,0,114,42,0,0,0,114,14,0,0,0,32,32,32, - 114,10,0,0,0,218,11,102,105,110,100,95,109,111,100,117, - 108,101,147,0,0,0,115,8,0,0,0,6,11,2,2,4, - 254,16,3,114,11,0,0,0,122,23,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,99,3,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,67,0,0,0,115,108,0,0,0,116,0,124,0,124, - 1,131,2,125,3,124,3,100,1,117,1,114,17,116,1,160, - 2,124,1,124,0,124,3,100,2,166,3,83,0,116,3,124, - 0,124,1,131,2,125,4,116,4,124,0,124,4,131,2,114, - 52,124,0,106,5,155,0,116,6,155,0,124,4,155,0,157, - 3,125,5,116,1,160,7,124,1,100,1,100,3,100,4,166, - 3,125,6,124,6,106,8,160,9,124,5,161,1,1,0,124, - 6,83,0,100,1,83,0,41,5,122,107,67,114,101,97,116, - 101,32,97,32,77,111,100,117,108,101,83,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,78,111,110,101,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,99,97,110, - 110,111,116,32,98,101,32,102,111,117,110,100,46,10,32,32, - 32,32,32,32,32,32,78,41,1,218,10,105,115,95,112,97, - 99,107,97,103,101,84,41,3,218,4,110,97,109,101,90,6, - 108,111,97,100,101,114,114,47,0,0,0,41,10,114,39,0, - 0,0,218,10,95,98,111,111,116,115,116,114,97,112,90,16, - 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, - 114,40,0,0,0,114,41,0,0,0,114,30,0,0,0,114, - 21,0,0,0,90,10,77,111,100,117,108,101,83,112,101,99, - 90,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,114,25,0,0, - 0,41,7,114,33,0,0,0,114,42,0,0,0,90,6,116, - 97,114,103,101,116,90,11,109,111,100,117,108,101,95,105,110, - 102,111,114,44,0,0,0,114,14,0,0,0,90,4,115,112, - 101,99,32,32,32,32,32,32,32,114,10,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,163,0,0,0,115,24,0, - 0,0,10,5,8,1,16,1,10,7,10,1,18,4,8,1, - 2,1,6,255,12,2,4,1,4,2,114,11,0,0,0,122, - 21,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, - 100,95,115,112,101,99,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,67,0,0,0,115,20,0,0,0, - 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, - 124,2,83,0,41,2,122,166,103,101,116,95,99,111,100,101, - 40,102,117,108,108,110,97,109,101,41,32,45,62,32,99,111, - 100,101,32,111,98,106,101,99,116,46,10,10,32,32,32,32, - 32,32,32,32,82,101,116,117,114,110,32,116,104,101,32,99, - 111,100,101,32,111,98,106,101,99,116,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,32,82,97,105,115,101,32,90,105,112,73,109, - 112,111,114,116,69,114,114,111,114,10,32,32,32,32,32,32, - 32,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, - 99,111,117,108,100,110,39,116,32,98,101,32,105,109,112,111, - 114,116,101,100,46,10,32,32,32,32,32,32,32,32,78,169, - 1,218,16,95,103,101,116,95,109,111,100,117,108,101,95,99, - 111,100,101,169,5,114,33,0,0,0,114,42,0,0,0,218, - 4,99,111,100,101,218,9,105,115,112,97,99,107,97,103,101, - 114,44,0,0,0,32,32,32,32,32,114,10,0,0,0,218, + 0,114,9,0,0,0,114,9,0,0,0,250,18,60,102,114, + 111,122,101,110,32,122,105,112,105,109,112,111,114,116,62,114, + 3,0,0,0,34,0,0,0,115,4,0,0,0,8,0,4, + 1,243,0,0,0,0,233,22,0,0,0,115,4,0,0,0, + 80,75,5,6,105,255,255,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,126, + 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, + 2,100,3,132,0,90,4,100,29,100,5,100,6,132,1,90, + 5,100,29,100,7,100,8,132,1,90,6,100,29,100,9,100, + 10,132,1,90,7,100,11,100,12,132,0,90,8,100,13,100, + 14,132,0,90,9,100,15,100,16,132,0,90,10,100,17,100, + 18,132,0,90,11,100,19,100,20,132,0,90,12,100,21,100, + 22,132,0,90,13,100,23,100,24,132,0,90,14,100,25,100, + 26,132,0,90,15,100,27,100,28,132,0,90,16,100,4,83, + 0,41,30,114,4,0,0,0,97,255,1,0,0,122,105,112, + 105,109,112,111,114,116,101,114,40,97,114,99,104,105,118,101, + 112,97,116,104,41,32,45,62,32,122,105,112,105,109,112,111, + 114,116,101,114,32,111,98,106,101,99,116,10,10,32,32,32, + 32,67,114,101,97,116,101,32,97,32,110,101,119,32,122,105, + 112,105,109,112,111,114,116,101,114,32,105,110,115,116,97,110, + 99,101,46,32,39,97,114,99,104,105,118,101,112,97,116,104, + 39,32,109,117,115,116,32,98,101,32,97,32,112,97,116,104, + 32,116,111,10,32,32,32,32,97,32,122,105,112,102,105,108, + 101,44,32,111,114,32,116,111,32,97,32,115,112,101,99,105, + 102,105,99,32,112,97,116,104,32,105,110,115,105,100,101,32, + 97,32,122,105,112,102,105,108,101,46,32,70,111,114,32,101, + 120,97,109,112,108,101,44,32,105,116,32,99,97,110,32,98, + 101,10,32,32,32,32,39,47,116,109,112,47,109,121,105,109, + 112,111,114,116,46,122,105,112,39,44,32,111,114,32,39,47, + 116,109,112,47,109,121,105,109,112,111,114,116,46,122,105,112, + 47,109,121,100,105,114,101,99,116,111,114,121,39,44,32,105, + 102,32,109,121,100,105,114,101,99,116,111,114,121,32,105,115, + 32,97,10,32,32,32,32,118,97,108,105,100,32,100,105,114, + 101,99,116,111,114,121,32,105,110,115,105,100,101,32,116,104, + 101,32,97,114,99,104,105,118,101,46,10,10,32,32,32,32, + 39,90,105,112,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,39,97,114, + 99,104,105,118,101,112,97,116,104,39,32,100,111,101,115,110, + 39,116,32,112,111,105,110,116,32,116,111,32,97,32,118,97, + 108,105,100,32,90,105,112,10,32,32,32,32,97,114,99,104, + 105,118,101,46,10,10,32,32,32,32,84,104,101,32,39,97, + 114,99,104,105,118,101,39,32,97,116,116,114,105,98,117,116, + 101,32,111,102,32,122,105,112,105,109,112,111,114,116,101,114, + 32,111,98,106,101,99,116,115,32,99,111,110,116,97,105,110, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,10,32,32,32,32,122,105,112,102,105,108,101,32,116,97, + 114,103,101,116,101,100,46,10,32,32,32,32,99,2,0,0, + 0,0,0,0,0,0,0,0,0,9,0,0,0,67,0,0, + 0,115,40,1,0,0,116,0,124,1,116,1,131,2,115,14, + 100,1,100,0,108,2,125,2,124,2,160,3,124,1,161,1, + 125,1,124,1,115,22,116,4,100,2,124,1,100,3,141,2, + 130,1,116,5,114,30,124,1,160,6,116,5,116,7,161,2, + 125,1,103,0,125,3,9,0,9,0,116,8,160,9,124,1, + 161,1,125,4,110,36,35,0,4,0,116,10,116,11,102,2, + 121,147,1,0,1,0,1,0,116,8,160,12,124,1,161,1, + 92,2,125,5,125,6,124,5,124,1,107,2,114,66,116,4, + 100,5,124,1,100,3,141,2,130,1,124,5,125,1,124,3, + 160,13,124,6,161,1,1,0,89,0,110,15,37,0,124,4, + 106,14,100,6,64,0,100,7,107,3,114,89,116,4,100,5, + 124,1,100,3,141,2,130,1,113,91,113,33,9,0,116,15, + 124,1,25,0,125,7,110,18,35,0,4,0,116,16,121,146, + 1,0,1,0,1,0,116,17,124,1,131,1,125,7,124,7, + 116,15,124,1,60,0,89,0,110,1,37,0,124,7,124,0, + 95,18,124,1,124,0,95,19,116,8,106,20,124,3,100,0, + 100,0,100,8,133,3,25,0,142,0,124,0,95,21,124,0, + 106,21,114,144,124,0,4,0,106,21,116,7,55,0,2,0, + 95,21,100,0,83,0,100,0,83,0,119,0,119,0,41,9, + 78,114,0,0,0,0,122,21,97,114,99,104,105,118,101,32, + 112,97,116,104,32,105,115,32,101,109,112,116,121,169,1,218, + 4,112,97,116,104,84,122,14,110,111,116,32,97,32,90,105, + 112,32,102,105,108,101,105,0,240,0,0,105,0,128,0,0, + 233,255,255,255,255,41,22,218,10,105,115,105,110,115,116,97, + 110,99,101,218,3,115,116,114,218,2,111,115,90,8,102,115, + 100,101,99,111,100,101,114,3,0,0,0,218,12,97,108,116, + 95,112,97,116,104,95,115,101,112,218,7,114,101,112,108,97, + 99,101,218,8,112,97,116,104,95,115,101,112,218,19,95,98, + 111,111,116,115,116,114,97,112,95,101,120,116,101,114,110,97, + 108,90,10,95,112,97,116,104,95,115,116,97,116,218,7,79, + 83,69,114,114,111,114,218,10,86,97,108,117,101,69,114,114, + 111,114,90,11,95,112,97,116,104,95,115,112,108,105,116,218, + 6,97,112,112,101,110,100,90,7,115,116,95,109,111,100,101, + 218,20,95,122,105,112,95,100,105,114,101,99,116,111,114,121, + 95,99,97,99,104,101,218,8,75,101,121,69,114,114,111,114, + 218,15,95,114,101,97,100,95,100,105,114,101,99,116,111,114, + 121,218,6,95,102,105,108,101,115,218,7,97,114,99,104,105, + 118,101,218,10,95,112,97,116,104,95,106,111,105,110,218,6, + 112,114,101,102,105,120,41,8,218,4,115,101,108,102,114,14, + 0,0,0,114,18,0,0,0,114,32,0,0,0,90,2,115, + 116,90,7,100,105,114,110,97,109,101,90,8,98,97,115,101, + 110,97,109,101,218,5,102,105,108,101,115,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,8,95,95,105,110, + 105,116,95,95,64,0,0,0,115,76,0,0,0,10,1,8, + 1,10,1,4,1,12,1,4,1,12,1,4,2,2,1,2, + 1,12,1,2,128,16,1,14,3,8,1,12,1,4,1,14, + 1,2,128,14,3,12,2,2,1,2,240,2,18,10,1,2, + 128,12,1,8,1,12,1,2,128,6,1,6,1,22,2,6, + 1,18,1,4,255,2,249,2,239,115,33,0,0,0,162,5, + 40,0,168,33,65,11,7,193,28,4,65,33,0,193,33,15, + 65,50,7,194,18,1,65,50,7,194,19,1,65,11,7,122, + 20,122,105,112,105,109,112,111,114,116,101,114,46,95,95,105, + 110,105,116,95,95,78,99,3,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,67,0,0,0,115,90,0,0,0, + 116,0,160,1,100,1,116,2,161,2,1,0,116,3,124,0, + 124,1,131,2,125,3,124,3,100,2,117,1,114,19,124,0, + 103,0,102,2,83,0,116,4,124,0,124,1,131,2,125,4, + 116,5,124,0,124,4,131,2,114,41,100,2,124,0,106,6, + 155,0,116,7,155,0,124,4,155,0,157,3,103,1,102,2, + 83,0,100,2,103,0,102,2,83,0,41,3,97,47,2,0, + 0,102,105,110,100,95,108,111,97,100,101,114,40,102,117,108, + 108,110,97,109,101,44,32,112,97,116,104,61,78,111,110,101, + 41,32,45,62,32,115,101,108,102,44,32,115,116,114,32,111, + 114,32,78,111,110,101,46,10,10,32,32,32,32,32,32,32, + 32,83,101,97,114,99,104,32,102,111,114,32,97,32,109,111, + 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, + 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102, + 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101, + 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, + 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111, + 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109, + 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104, + 101,32,122,105,112,105,109,112,111,114,116,101,114,10,32,32, + 32,32,32,32,32,32,105,110,115,116,97,110,99,101,32,105, + 116,115,101,108,102,32,105,102,32,116,104,101,32,109,111,100, + 117,108,101,32,119,97,115,32,102,111,117,110,100,44,32,97, + 32,115,116,114,105,110,103,32,99,111,110,116,97,105,110,105, + 110,103,32,116,104,101,10,32,32,32,32,32,32,32,32,102, + 117,108,108,32,112,97,116,104,32,110,97,109,101,32,105,102, + 32,105,116,39,115,32,112,111,115,115,105,98,108,121,32,97, + 32,112,111,114,116,105,111,110,32,111,102,32,97,32,110,97, + 109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,44, + 10,32,32,32,32,32,32,32,32,111,114,32,78,111,110,101, + 32,111,116,104,101,114,119,105,115,101,46,32,84,104,101,32, + 111,112,116,105,111,110,97,108,32,39,112,97,116,104,39,32, + 97,114,103,117,109,101,110,116,32,105,115,32,105,103,110,111, + 114,101,100,32,45,45,32,105,116,39,115,10,32,32,32,32, + 32,32,32,32,116,104,101,114,101,32,102,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,105,109,112,111,114,116,101,114,32,112,114, + 111,116,111,99,111,108,46,10,10,32,32,32,32,32,32,32, + 32,68,101,112,114,101,99,97,116,101,100,32,115,105,110,99, + 101,32,80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32, + 122,102,122,105,112,105,109,112,111,114,116,101,114,46,102,105, + 110,100,95,108,111,97,100,101,114,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,41,8,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,16,95,103,101,116,95,109,111,100,117,108,101,95,105,110, + 102,111,218,16,95,103,101,116,95,109,111,100,117,108,101,95, + 112,97,116,104,218,7,95,105,115,95,100,105,114,114,30,0, + 0,0,114,21,0,0,0,41,5,114,33,0,0,0,218,8, + 102,117,108,108,110,97,109,101,114,14,0,0,0,218,2,109, + 105,218,7,109,111,100,112,97,116,104,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,11,102,105,110,100,95, + 108,111,97,100,101,114,110,0,0,0,115,20,0,0,0,6, + 12,2,2,4,254,10,3,8,1,8,2,10,7,10,1,24, + 4,8,2,114,11,0,0,0,122,23,122,105,112,105,109,112, + 111,114,116,101,114,46,102,105,110,100,95,108,111,97,100,101, + 114,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,67,0,0,0,115,28,0,0,0,116,0,160,1,100, + 1,116,2,161,2,1,0,124,0,160,3,124,1,124,2,161, + 2,100,2,25,0,83,0,41,4,97,203,1,0,0,102,105, + 110,100,95,109,111,100,117,108,101,40,102,117,108,108,110,97, + 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, + 62,32,115,101,108,102,32,111,114,32,78,111,110,101,46,10, + 10,32,32,32,32,32,32,32,32,83,101,97,114,99,104,32, + 102,111,114,32,97,32,109,111,100,117,108,101,32,115,112,101, + 99,105,102,105,101,100,32,98,121,32,39,102,117,108,108,110, + 97,109,101,39,46,32,39,102,117,108,108,110,97,109,101,39, + 32,109,117,115,116,32,98,101,32,116,104,101,10,32,32,32, + 32,32,32,32,32,102,117,108,108,121,32,113,117,97,108,105, + 102,105,101,100,32,40,100,111,116,116,101,100,41,32,109,111, + 100,117,108,101,32,110,97,109,101,46,32,73,116,32,114,101, + 116,117,114,110,115,32,116,104,101,32,122,105,112,105,109,112, + 111,114,116,101,114,10,32,32,32,32,32,32,32,32,105,110, + 115,116,97,110,99,101,32,105,116,115,101,108,102,32,105,102, + 32,116,104,101,32,109,111,100,117,108,101,32,119,97,115,32, + 102,111,117,110,100,44,32,111,114,32,78,111,110,101,32,105, + 102,32,105,116,32,119,97,115,110,39,116,46,10,32,32,32, + 32,32,32,32,32,84,104,101,32,111,112,116,105,111,110,97, + 108,32,39,112,97,116,104,39,32,97,114,103,117,109,101,110, + 116,32,105,115,32,105,103,110,111,114,101,100,32,45,45,32, + 105,116,39,115,32,116,104,101,114,101,32,102,111,114,32,99, + 111,109,112,97,116,105,98,105,108,105,116,121,10,32,32,32, + 32,32,32,32,32,119,105,116,104,32,116,104,101,32,105,109, + 112,111,114,116,101,114,32,112,114,111,116,111,99,111,108,46, + 10,10,32,32,32,32,32,32,32,32,68,101,112,114,101,99, + 97,116,101,100,32,115,105,110,99,101,32,80,121,116,104,111, + 110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,102,122,105,112,105,109, + 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, + 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, + 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, + 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, + 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, + 100,114,0,0,0,0,78,41,4,114,36,0,0,0,114,37, + 0,0,0,114,38,0,0,0,114,45,0,0,0,41,3,114, + 33,0,0,0,114,42,0,0,0,114,14,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,147,0,0,0,115,8, + 0,0,0,6,11,2,2,4,254,16,3,114,11,0,0,0, + 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,99,3,0,0,0,0,0, + 0,0,0,0,0,0,6,0,0,0,67,0,0,0,115,108, + 0,0,0,116,0,124,0,124,1,131,2,125,3,124,3,100, + 1,117,1,114,17,116,1,160,2,124,1,124,0,124,3,100, + 2,166,3,83,0,116,3,124,0,124,1,131,2,125,4,116, + 4,124,0,124,4,131,2,114,52,124,0,106,5,155,0,116, + 6,155,0,124,4,155,0,157,3,125,5,116,1,160,7,124, + 1,100,1,100,3,100,4,166,3,125,6,124,6,106,8,160, + 9,124,5,161,1,1,0,124,6,83,0,100,1,83,0,41, + 5,122,107,67,114,101,97,116,101,32,97,32,77,111,100,117, + 108,101,83,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,78,111,110,101,32,105,102,32,116,104,101,32,109,111, + 100,117,108,101,32,99,97,110,110,111,116,32,98,101,32,102, + 111,117,110,100,46,10,32,32,32,32,32,32,32,32,78,41, + 1,218,10,105,115,95,112,97,99,107,97,103,101,84,41,3, + 218,4,110,97,109,101,90,6,108,111,97,100,101,114,114,47, + 0,0,0,41,10,114,39,0,0,0,218,10,95,98,111,111, + 116,115,116,114,97,112,90,16,115,112,101,99,95,102,114,111, + 109,95,108,111,97,100,101,114,114,40,0,0,0,114,41,0, + 0,0,114,30,0,0,0,114,21,0,0,0,90,10,77,111, + 100,117,108,101,83,112,101,99,90,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,114,25,0,0,0,41,7,114,33,0,0,0, + 114,42,0,0,0,90,6,116,97,114,103,101,116,90,11,109, + 111,100,117,108,101,95,105,110,102,111,114,44,0,0,0,114, + 14,0,0,0,90,4,115,112,101,99,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,9,102,105,110,100,95, + 115,112,101,99,163,0,0,0,115,24,0,0,0,10,5,8, + 1,16,1,10,7,10,1,18,4,8,1,2,1,6,255,12, + 2,4,1,4,2,114,11,0,0,0,122,21,122,105,112,105, + 109,112,111,114,116,101,114,46,102,105,110,100,95,115,112,101, + 99,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,67,0,0,0,115,20,0,0,0,116,0,124,0,124, + 1,131,2,92,3,125,2,125,3,125,4,124,2,83,0,41, + 2,122,166,103,101,116,95,99,111,100,101,40,102,117,108,108, + 110,97,109,101,41,32,45,62,32,99,111,100,101,32,111,98, + 106,101,99,116,46,10,10,32,32,32,32,32,32,32,32,82, + 101,116,117,114,110,32,116,104,101,32,99,111,100,101,32,111, + 98,106,101,99,116,32,102,111,114,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,46,32, + 82,97,105,115,101,32,90,105,112,73,109,112,111,114,116,69, + 114,114,111,114,10,32,32,32,32,32,32,32,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,99,111,117,108,100, + 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, + 10,32,32,32,32,32,32,32,32,78,169,1,218,16,95,103, + 101,116,95,109,111,100,117,108,101,95,99,111,100,101,169,5, + 114,33,0,0,0,114,42,0,0,0,218,4,99,111,100,101, + 218,9,105,115,112,97,99,107,97,103,101,114,44,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, 8,103,101,116,95,99,111,100,101,190,0,0,0,115,4,0, 0,0,16,6,4,1,114,11,0,0,0,122,20,122,105,112, 105,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, @@ -356,223 +358,226 @@ const unsigned char _Py_M__zipimport[] = { 27,0,0,0,114,23,0,0,0,218,9,95,103,101,116,95, 100,97,116,97,41,4,114,33,0,0,0,218,8,112,97,116, 104,110,97,109,101,90,3,107,101,121,218,9,116,111,99,95, - 101,110,116,114,121,32,32,32,32,114,10,0,0,0,218,8, - 103,101,116,95,100,97,116,97,200,0,0,0,115,26,0,0, - 0,4,6,12,1,4,2,16,1,22,1,2,2,12,1,2, - 128,12,1,12,1,2,128,12,1,2,254,115,12,0,0,0, - 158,5,36,0,164,13,49,7,184,1,49,7,122,20,122,105, - 112,105,109,112,111,114,116,101,114,46,103,101,116,95,100,97, - 116,97,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,115,20,0,0,0,116,0,124,0, - 124,1,131,2,92,3,125,2,125,3,125,4,124,4,83,0, - 41,2,122,165,103,101,116,95,102,105,108,101,110,97,109,101, - 40,102,117,108,108,110,97,109,101,41,32,45,62,32,102,105, - 108,101,110,97,109,101,32,115,116,114,105,110,103,46,10,10, - 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, - 104,101,32,102,105,108,101,110,97,109,101,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,111,114,32,114,97,105,115,101,32,90,105, - 112,73,109,112,111,114,116,69,114,114,111,114,10,32,32,32, - 32,32,32,32,32,105,102,32,105,116,32,99,111,117,108,100, - 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, - 10,32,32,32,32,32,32,32,32,78,114,51,0,0,0,114, - 53,0,0,0,32,32,32,32,32,114,10,0,0,0,218,12, - 103,101,116,95,102,105,108,101,110,97,109,101,221,0,0,0, - 115,4,0,0,0,16,8,4,1,114,11,0,0,0,122,24, - 122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115,128,0, - 0,0,116,0,124,0,124,1,131,2,125,2,124,2,100,1, - 117,0,114,18,116,1,100,2,124,1,155,2,157,2,124,1, - 100,3,141,2,130,1,116,2,124,0,124,1,131,2,125,3, - 124,2,114,32,116,3,160,4,124,3,100,4,161,2,125,4, - 110,5,124,3,155,0,100,5,157,2,125,4,9,0,124,0, - 106,5,124,4,25,0,125,5,110,11,35,0,4,0,116,6, - 121,63,1,0,1,0,1,0,89,0,100,1,83,0,37,0, - 116,7,124,0,106,8,124,5,131,2,160,9,161,0,83,0, - 119,0,41,6,122,253,103,101,116,95,115,111,117,114,99,101, - 40,102,117,108,108,110,97,109,101,41,32,45,62,32,115,111, - 117,114,99,101,32,115,116,114,105,110,103,46,10,10,32,32, - 32,32,32,32,32,32,82,101,116,117,114,110,32,116,104,101, - 32,115,111,117,114,99,101,32,99,111,100,101,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,32,82,97,105,115,101,32,90,105,112, - 73,109,112,111,114,116,69,114,114,111,114,10,32,32,32,32, - 32,32,32,32,105,102,32,116,104,101,32,109,111,100,117,108, - 101,32,99,111,117,108,100,110,39,116,32,98,101,32,102,111, - 117,110,100,44,32,114,101,116,117,114,110,32,78,111,110,101, - 32,105,102,32,116,104,101,32,97,114,99,104,105,118,101,32, - 100,111,101,115,10,32,32,32,32,32,32,32,32,99,111,110, - 116,97,105,110,32,116,104,101,32,109,111,100,117,108,101,44, - 32,98,117,116,32,104,97,115,32,110,111,32,115,111,117,114, - 99,101,32,102,111,114,32,105,116,46,10,32,32,32,32,32, - 32,32,32,78,250,18,99,97,110,39,116,32,102,105,110,100, - 32,109,111,100,117,108,101,32,169,1,114,48,0,0,0,250, - 11,95,95,105,110,105,116,95,95,46,112,121,250,3,46,112, - 121,41,10,114,39,0,0,0,114,3,0,0,0,114,40,0, - 0,0,114,22,0,0,0,114,31,0,0,0,114,29,0,0, - 0,114,27,0,0,0,114,60,0,0,0,114,30,0,0,0, - 218,6,100,101,99,111,100,101,41,6,114,33,0,0,0,114, - 42,0,0,0,114,43,0,0,0,114,14,0,0,0,218,8, - 102,117,108,108,112,97,116,104,114,62,0,0,0,32,32,32, - 32,32,32,114,10,0,0,0,218,10,103,101,116,95,115,111, - 117,114,99,101,233,0,0,0,115,30,0,0,0,10,7,8, - 1,18,1,10,2,4,1,14,1,10,2,2,2,12,1,2, - 128,12,1,6,2,2,128,16,1,2,253,115,12,0,0,0, - 166,5,44,0,172,7,54,7,191,1,54,7,122,22,122,105, - 112,105,109,112,111,114,116,101,114,46,103,101,116,95,115,111, - 117,114,99,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,40,0,0,0,116,0, - 124,0,124,1,131,2,125,2,124,2,100,1,117,0,114,18, - 116,1,100,2,124,1,155,2,157,2,124,1,100,3,141,2, - 130,1,124,2,83,0,41,4,122,171,105,115,95,112,97,99, - 107,97,103,101,40,102,117,108,108,110,97,109,101,41,32,45, - 62,32,98,111,111,108,46,10,10,32,32,32,32,32,32,32, - 32,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,115,112,101,99,105, - 102,105,101,100,32,98,121,32,102,117,108,108,110,97,109,101, - 32,105,115,32,97,32,112,97,99,107,97,103,101,46,10,32, - 32,32,32,32,32,32,32,82,97,105,115,101,32,90,105,112, - 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,116, - 104,101,32,109,111,100,117,108,101,32,99,111,117,108,100,110, - 39,116,32,98,101,32,102,111,117,110,100,46,10,32,32,32, - 32,32,32,32,32,78,114,65,0,0,0,114,66,0,0,0, - 41,2,114,39,0,0,0,114,3,0,0,0,41,3,114,33, - 0,0,0,114,42,0,0,0,114,43,0,0,0,32,32,32, - 114,10,0,0,0,114,47,0,0,0,3,1,0,0,115,8, - 0,0,0,10,6,8,1,18,1,4,1,114,11,0,0,0, - 122,22,122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115,0,1, - 0,0,100,1,125,2,116,0,160,1,124,2,116,2,161,2, - 1,0,116,3,124,0,124,1,131,2,92,3,125,3,125,4, - 125,5,116,4,106,5,160,6,124,1,161,1,125,6,124,6, - 100,2,117,0,115,31,116,7,124,6,116,8,131,2,115,40, - 116,8,124,1,131,1,125,6,124,6,116,4,106,5,124,1, - 60,0,124,0,124,6,95,9,9,0,124,4,114,62,116,10, - 124,0,124,1,131,2,125,7,116,11,160,12,124,0,106,13, - 124,7,161,2,125,8,124,8,103,1,124,6,95,14,116,15, - 124,6,100,3,131,2,115,70,116,16,124,6,95,16,116,11, - 160,17,124,6,106,18,124,1,124,5,161,3,1,0,116,19, - 124,3,124,6,106,18,131,2,1,0,110,10,35,0,1,0, - 1,0,1,0,116,4,106,5,124,1,61,0,130,0,37,0, - 9,0,116,4,106,5,124,1,25,0,125,6,110,16,35,0, - 4,0,116,20,121,127,1,0,1,0,1,0,116,21,100,4, - 124,1,155,2,100,5,157,3,131,1,130,1,37,0,116,22, - 160,23,100,6,124,1,124,5,161,3,1,0,124,6,83,0, - 119,0,41,7,97,64,1,0,0,108,111,97,100,95,109,111, - 100,117,108,101,40,102,117,108,108,110,97,109,101,41,32,45, - 62,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,76,111,97,100,32,116,104,101,32,109,111,100,117, - 108,101,32,115,112,101,99,105,102,105,101,100,32,98,121,32, - 39,102,117,108,108,110,97,109,101,39,46,32,39,102,117,108, - 108,110,97,109,101,39,32,109,117,115,116,32,98,101,32,116, - 104,101,10,32,32,32,32,32,32,32,32,102,117,108,108,121, - 32,113,117,97,108,105,102,105,101,100,32,40,100,111,116,116, - 101,100,41,32,109,111,100,117,108,101,32,110,97,109,101,46, - 32,73,116,32,114,101,116,117,114,110,115,32,116,104,101,32, - 105,109,112,111,114,116,101,100,10,32,32,32,32,32,32,32, - 32,109,111,100,117,108,101,44,32,111,114,32,114,97,105,115, - 101,115,32,90,105,112,73,109,112,111,114,116,69,114,114,111, - 114,32,105,102,32,105,116,32,99,111,117,108,100,32,110,111, - 116,32,98,101,32,105,109,112,111,114,116,101,100,46,10,10, - 32,32,32,32,32,32,32,32,68,101,112,114,101,99,97,116, - 101,100,32,115,105,110,99,101,32,80,121,116,104,111,110,32, - 51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,114,122,105,112,105,109, - 112,111,114,116,46,122,105,112,105,109,112,111,114,116,101,114, - 46,108,111,97,100,95,109,111,100,117,108,101,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,59,32,117,115,101,32,101,120,101,99,95,109,111,100, - 117,108,101,40,41,32,105,110,115,116,101,97,100,78,218,12, - 95,95,98,117,105,108,116,105,110,115,95,95,122,14,76,111, - 97,100,101,100,32,109,111,100,117,108,101,32,122,25,32,110, - 111,116,32,102,111,117,110,100,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,122,30,105,109,112,111,114,116,32, - 123,125,32,35,32,108,111,97,100,101,100,32,102,114,111,109, - 32,90,105,112,32,123,125,41,24,114,36,0,0,0,114,37, - 0,0,0,114,38,0,0,0,114,52,0,0,0,218,3,115, - 121,115,218,7,109,111,100,117,108,101,115,218,3,103,101,116, - 114,16,0,0,0,218,12,95,109,111,100,117,108,101,95,116, - 121,112,101,218,10,95,95,108,111,97,100,101,114,95,95,114, - 40,0,0,0,114,22,0,0,0,114,31,0,0,0,114,30, - 0,0,0,90,8,95,95,112,97,116,104,95,95,218,7,104, - 97,115,97,116,116,114,114,72,0,0,0,90,14,95,102,105, - 120,95,117,112,95,109,111,100,117,108,101,218,8,95,95,100, - 105,99,116,95,95,218,4,101,120,101,99,114,27,0,0,0, - 218,11,73,109,112,111,114,116,69,114,114,111,114,114,49,0, - 0,0,218,16,95,118,101,114,98,111,115,101,95,109,101,115, - 115,97,103,101,41,9,114,33,0,0,0,114,42,0,0,0, - 218,3,109,115,103,114,54,0,0,0,114,55,0,0,0,114, - 44,0,0,0,90,3,109,111,100,114,14,0,0,0,114,70, - 0,0,0,32,32,32,32,32,32,32,32,32,114,10,0,0, - 0,218,11,108,111,97,100,95,109,111,100,117,108,101,16,1, - 0,0,115,62,0,0,0,4,9,12,2,16,1,12,1,18, - 1,8,1,10,1,6,1,2,2,4,1,10,3,14,1,8, - 1,10,2,6,1,16,1,14,1,2,128,6,1,8,1,2, - 1,2,128,2,2,12,1,2,128,12,1,16,1,2,128,14, - 1,4,1,2,253,115,29,0,0,0,172,40,65,21,0,193, - 21,9,65,30,7,193,32,5,65,38,0,193,38,15,65,53, - 7,193,63,1,65,53,7,122,23,122,105,112,105,109,112,111, - 114,116,101,114,46,108,111,97,100,95,109,111,100,117,108,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,64,0,0,0,9,0,124,0,160,0, - 124,1,161,1,115,8,100,1,83,0,110,11,35,0,4,0, - 116,1,121,31,1,0,1,0,1,0,89,0,100,1,83,0, - 37,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, - 124,0,124,1,131,2,83,0,119,0,41,4,122,204,82,101, - 116,117,114,110,32,116,104,101,32,82,101,115,111,117,114,99, - 101,82,101,97,100,101,114,32,102,111,114,32,97,32,112,97, - 99,107,97,103,101,32,105,110,32,97,32,122,105,112,32,102, - 105,108,101,46,10,10,32,32,32,32,32,32,32,32,73,102, - 32,39,102,117,108,108,110,97,109,101,39,32,105,115,32,97, - 32,112,97,99,107,97,103,101,32,119,105,116,104,105,110,32, - 116,104,101,32,122,105,112,32,102,105,108,101,44,32,114,101, - 116,117,114,110,32,116,104,101,10,32,32,32,32,32,32,32, - 32,39,82,101,115,111,117,114,99,101,82,101,97,100,101,114, - 39,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, - 32,112,97,99,107,97,103,101,46,32,32,79,116,104,101,114, - 119,105,115,101,32,114,101,116,117,114,110,32,78,111,110,101, - 46,10,32,32,32,32,32,32,32,32,78,114,0,0,0,0, - 41,1,218,9,90,105,112,82,101,97,100,101,114,41,4,114, - 47,0,0,0,114,3,0,0,0,90,17,105,109,112,111,114, - 116,108,105,98,46,114,101,97,100,101,114,115,114,85,0,0, - 0,41,3,114,33,0,0,0,114,42,0,0,0,114,85,0, - 0,0,32,32,32,114,10,0,0,0,218,19,103,101,116,95, - 114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,59, - 1,0,0,115,22,0,0,0,2,6,10,1,4,1,2,255, - 2,128,12,2,6,1,2,128,12,1,10,1,2,253,115,12, - 0,0,0,129,5,9,0,137,7,19,7,159,1,19,7,122, - 31,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, - 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,74,0,0,0,9,0,116,0,124,0, - 106,1,131,1,124,0,95,2,124,0,106,2,116,3,124,0, - 106,1,60,0,100,1,83,0,35,0,4,0,116,4,121,36, - 1,0,1,0,1,0,116,3,160,5,124,0,106,1,100,1, - 161,2,1,0,100,1,124,0,95,2,89,0,100,1,83,0, - 37,0,119,0,41,2,122,41,82,101,108,111,97,100,32,116, - 104,101,32,102,105,108,101,32,100,97,116,97,32,111,102,32, - 116,104,101,32,97,114,99,104,105,118,101,32,112,97,116,104, - 46,78,41,6,114,28,0,0,0,114,30,0,0,0,114,29, - 0,0,0,114,26,0,0,0,114,3,0,0,0,218,3,112, - 111,112,169,1,114,33,0,0,0,32,114,10,0,0,0,218, - 17,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, - 101,115,74,1,0,0,115,18,0,0,0,2,2,12,1,16, - 1,2,128,12,1,14,1,12,1,2,128,2,254,115,12,0, - 0,0,129,12,15,0,143,17,35,7,164,1,35,7,122,29, - 122,105,112,105,109,112,111,114,116,101,114,46,105,110,118,97, - 108,105,100,97,116,101,95,99,97,99,104,101,115,99,1,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, - 0,0,115,24,0,0,0,100,1,124,0,106,0,155,0,116, - 1,155,0,124,0,106,2,155,0,100,2,157,5,83,0,41, - 3,78,122,21,60,122,105,112,105,109,112,111,114,116,101,114, - 32,111,98,106,101,99,116,32,34,122,2,34,62,41,3,114, - 30,0,0,0,114,21,0,0,0,114,32,0,0,0,114,88, - 0,0,0,32,114,10,0,0,0,218,8,95,95,114,101,112, + 101,110,116,114,121,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,218,8,103,101,116,95,100,97,116,97,200,0, + 0,0,115,26,0,0,0,4,6,12,1,4,2,16,1,22, + 1,2,2,12,1,2,128,12,1,12,1,2,128,12,1,2, + 254,115,12,0,0,0,158,5,36,0,164,13,49,7,184,1, + 49,7,122,20,122,105,112,105,109,112,111,114,116,101,114,46, + 103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,67,0,0,0,115,20,0, + 0,0,116,0,124,0,124,1,131,2,92,3,125,2,125,3, + 125,4,124,4,83,0,41,2,122,165,103,101,116,95,102,105, + 108,101,110,97,109,101,40,102,117,108,108,110,97,109,101,41, + 32,45,62,32,102,105,108,101,110,97,109,101,32,115,116,114, + 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101, + 116,117,114,110,32,116,104,101,32,102,105,108,101,110,97,109, + 101,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,111,114,32,114,97, + 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, + 111,114,10,32,32,32,32,32,32,32,32,105,102,32,105,116, + 32,99,111,117,108,100,110,39,116,32,98,101,32,105,109,112, + 111,114,116,101,100,46,10,32,32,32,32,32,32,32,32,78, + 114,51,0,0,0,114,53,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,12,103,101,116,95,102, + 105,108,101,110,97,109,101,221,0,0,0,115,4,0,0,0, + 16,8,4,1,114,11,0,0,0,122,24,122,105,112,105,109, + 112,111,114,116,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, + 8,0,0,0,67,0,0,0,115,128,0,0,0,116,0,124, + 0,124,1,131,2,125,2,124,2,100,1,117,0,114,18,116, + 1,100,2,124,1,155,2,157,2,124,1,100,3,141,2,130, + 1,116,2,124,0,124,1,131,2,125,3,124,2,114,32,116, + 3,160,4,124,3,100,4,161,2,125,4,110,5,124,3,155, + 0,100,5,157,2,125,4,9,0,124,0,106,5,124,4,25, + 0,125,5,110,11,35,0,4,0,116,6,121,63,1,0,1, + 0,1,0,89,0,100,1,83,0,37,0,116,7,124,0,106, + 8,124,5,131,2,160,9,161,0,83,0,119,0,41,6,122, + 253,103,101,116,95,115,111,117,114,99,101,40,102,117,108,108, + 110,97,109,101,41,32,45,62,32,115,111,117,114,99,101,32, + 115,116,114,105,110,103,46,10,10,32,32,32,32,32,32,32, + 32,82,101,116,117,114,110,32,116,104,101,32,115,111,117,114, + 99,101,32,99,111,100,101,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,32,82,97,105,115,101,32,90,105,112,73,109,112,111,114, + 116,69,114,114,111,114,10,32,32,32,32,32,32,32,32,105, + 102,32,116,104,101,32,109,111,100,117,108,101,32,99,111,117, + 108,100,110,39,116,32,98,101,32,102,111,117,110,100,44,32, + 114,101,116,117,114,110,32,78,111,110,101,32,105,102,32,116, + 104,101,32,97,114,99,104,105,118,101,32,100,111,101,115,10, + 32,32,32,32,32,32,32,32,99,111,110,116,97,105,110,32, + 116,104,101,32,109,111,100,117,108,101,44,32,98,117,116,32, + 104,97,115,32,110,111,32,115,111,117,114,99,101,32,102,111, + 114,32,105,116,46,10,32,32,32,32,32,32,32,32,78,250, + 18,99,97,110,39,116,32,102,105,110,100,32,109,111,100,117, + 108,101,32,169,1,114,48,0,0,0,250,11,95,95,105,110, + 105,116,95,95,46,112,121,250,3,46,112,121,41,10,114,39, + 0,0,0,114,3,0,0,0,114,40,0,0,0,114,22,0, + 0,0,114,31,0,0,0,114,29,0,0,0,114,27,0,0, + 0,114,60,0,0,0,114,30,0,0,0,218,6,100,101,99, + 111,100,101,41,6,114,33,0,0,0,114,42,0,0,0,114, + 43,0,0,0,114,14,0,0,0,218,8,102,117,108,108,112, + 97,116,104,114,62,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,10,103,101,116,95,115,111,117, + 114,99,101,233,0,0,0,115,30,0,0,0,10,7,8,1, + 18,1,10,2,4,1,14,1,10,2,2,2,12,1,2,128, + 12,1,6,2,2,128,16,1,2,253,115,12,0,0,0,166, + 5,44,0,172,7,54,7,191,1,54,7,122,22,122,105,112, + 105,109,112,111,114,116,101,114,46,103,101,116,95,115,111,117, + 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,40,0,0,0,116,0,124, + 0,124,1,131,2,125,2,124,2,100,1,117,0,114,18,116, + 1,100,2,124,1,155,2,157,2,124,1,100,3,141,2,130, + 1,124,2,83,0,41,4,122,171,105,115,95,112,97,99,107, + 97,103,101,40,102,117,108,108,110,97,109,101,41,32,45,62, + 32,98,111,111,108,46,10,10,32,32,32,32,32,32,32,32, + 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116, + 104,101,32,109,111,100,117,108,101,32,115,112,101,99,105,102, + 105,101,100,32,98,121,32,102,117,108,108,110,97,109,101,32, + 105,115,32,97,32,112,97,99,107,97,103,101,46,10,32,32, + 32,32,32,32,32,32,82,97,105,115,101,32,90,105,112,73, + 109,112,111,114,116,69,114,114,111,114,32,105,102,32,116,104, + 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, + 116,32,98,101,32,102,111,117,110,100,46,10,32,32,32,32, + 32,32,32,32,78,114,65,0,0,0,114,66,0,0,0,41, + 2,114,39,0,0,0,114,3,0,0,0,41,3,114,33,0, + 0,0,114,42,0,0,0,114,43,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,114,47,0,0,0, + 3,1,0,0,115,8,0,0,0,10,6,8,1,18,1,4, + 1,114,11,0,0,0,122,22,122,105,112,105,109,112,111,114, + 116,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,8,0,0,0,67, + 0,0,0,115,0,1,0,0,100,1,125,2,116,0,160,1, + 124,2,116,2,161,2,1,0,116,3,124,0,124,1,131,2, + 92,3,125,3,125,4,125,5,116,4,106,5,160,6,124,1, + 161,1,125,6,124,6,100,2,117,0,115,31,116,7,124,6, + 116,8,131,2,115,40,116,8,124,1,131,1,125,6,124,6, + 116,4,106,5,124,1,60,0,124,0,124,6,95,9,9,0, + 124,4,114,62,116,10,124,0,124,1,131,2,125,7,116,11, + 160,12,124,0,106,13,124,7,161,2,125,8,124,8,103,1, + 124,6,95,14,116,15,124,6,100,3,131,2,115,70,116,16, + 124,6,95,16,116,11,160,17,124,6,106,18,124,1,124,5, + 161,3,1,0,116,19,124,3,124,6,106,18,131,2,1,0, + 110,10,35,0,1,0,1,0,1,0,116,4,106,5,124,1, + 61,0,130,0,37,0,9,0,116,4,106,5,124,1,25,0, + 125,6,110,16,35,0,4,0,116,20,121,127,1,0,1,0, + 1,0,116,21,100,4,124,1,155,2,100,5,157,3,131,1, + 130,1,37,0,116,22,160,23,100,6,124,1,124,5,161,3, + 1,0,124,6,83,0,119,0,41,7,97,64,1,0,0,108, + 111,97,100,95,109,111,100,117,108,101,40,102,117,108,108,110, + 97,109,101,41,32,45,62,32,109,111,100,117,108,101,46,10, + 10,32,32,32,32,32,32,32,32,76,111,97,100,32,116,104, + 101,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, + 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, + 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, + 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, + 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, + 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, + 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, + 115,32,116,104,101,32,105,109,112,111,114,116,101,100,10,32, + 32,32,32,32,32,32,32,109,111,100,117,108,101,44,32,111, + 114,32,114,97,105,115,101,115,32,90,105,112,73,109,112,111, + 114,116,69,114,114,111,114,32,105,102,32,105,116,32,99,111, + 117,108,100,32,110,111,116,32,98,101,32,105,109,112,111,114, + 116,101,100,46,10,10,32,32,32,32,32,32,32,32,68,101, + 112,114,101,99,97,116,101,100,32,115,105,110,99,101,32,80, + 121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122, + 114,122,105,112,105,109,112,111,114,116,46,122,105,112,105,109, + 112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,117, + 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, + 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, + 104,111,110,32,51,46,49,50,59,32,117,115,101,32,101,120, + 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, + 101,97,100,78,218,12,95,95,98,117,105,108,116,105,110,115, + 95,95,122,14,76,111,97,100,101,100,32,109,111,100,117,108, + 101,32,122,25,32,110,111,116,32,102,111,117,110,100,32,105, + 110,32,115,121,115,46,109,111,100,117,108,101,115,122,30,105, + 109,112,111,114,116,32,123,125,32,35,32,108,111,97,100,101, + 100,32,102,114,111,109,32,90,105,112,32,123,125,41,24,114, + 36,0,0,0,114,37,0,0,0,114,38,0,0,0,114,52, + 0,0,0,218,3,115,121,115,218,7,109,111,100,117,108,101, + 115,218,3,103,101,116,114,16,0,0,0,218,12,95,109,111, + 100,117,108,101,95,116,121,112,101,218,10,95,95,108,111,97, + 100,101,114,95,95,114,40,0,0,0,114,22,0,0,0,114, + 31,0,0,0,114,30,0,0,0,90,8,95,95,112,97,116, + 104,95,95,218,7,104,97,115,97,116,116,114,114,72,0,0, + 0,90,14,95,102,105,120,95,117,112,95,109,111,100,117,108, + 101,218,8,95,95,100,105,99,116,95,95,218,4,101,120,101, + 99,114,27,0,0,0,218,11,73,109,112,111,114,116,69,114, + 114,111,114,114,49,0,0,0,218,16,95,118,101,114,98,111, + 115,101,95,109,101,115,115,97,103,101,41,9,114,33,0,0, + 0,114,42,0,0,0,218,3,109,115,103,114,54,0,0,0, + 114,55,0,0,0,114,44,0,0,0,90,3,109,111,100,114, + 14,0,0,0,114,70,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,218,11,108,111,97,100,95,109, + 111,100,117,108,101,16,1,0,0,115,62,0,0,0,4,9, + 12,2,16,1,12,1,18,1,8,1,10,1,6,1,2,2, + 4,1,10,3,14,1,8,1,10,2,6,1,16,1,14,1, + 2,128,6,1,8,1,2,1,2,128,2,2,12,1,2,128, + 12,1,16,1,2,128,14,1,4,1,2,253,115,29,0,0, + 0,172,40,65,21,0,193,21,9,65,30,7,193,32,5,65, + 38,0,193,38,15,65,53,7,193,63,1,65,53,7,122,23, + 122,105,112,105,109,112,111,114,116,101,114,46,108,111,97,100, + 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,67,0,0,0,115,64,0,0, + 0,9,0,124,0,160,0,124,1,161,1,115,8,100,1,83, + 0,110,11,35,0,4,0,116,1,121,31,1,0,1,0,1, + 0,89,0,100,1,83,0,37,0,100,2,100,3,108,2,109, + 3,125,2,1,0,124,2,124,0,124,1,131,2,83,0,119, + 0,41,4,122,204,82,101,116,117,114,110,32,116,104,101,32, + 82,101,115,111,117,114,99,101,82,101,97,100,101,114,32,102, + 111,114,32,97,32,112,97,99,107,97,103,101,32,105,110,32, + 97,32,122,105,112,32,102,105,108,101,46,10,10,32,32,32, + 32,32,32,32,32,73,102,32,39,102,117,108,108,110,97,109, + 101,39,32,105,115,32,97,32,112,97,99,107,97,103,101,32, + 119,105,116,104,105,110,32,116,104,101,32,122,105,112,32,102, + 105,108,101,44,32,114,101,116,117,114,110,32,116,104,101,10, + 32,32,32,32,32,32,32,32,39,82,101,115,111,117,114,99, + 101,82,101,97,100,101,114,39,32,111,98,106,101,99,116,32, + 102,111,114,32,116,104,101,32,112,97,99,107,97,103,101,46, + 32,32,79,116,104,101,114,119,105,115,101,32,114,101,116,117, + 114,110,32,78,111,110,101,46,10,32,32,32,32,32,32,32, + 32,78,114,0,0,0,0,41,1,218,9,90,105,112,82,101, + 97,100,101,114,41,4,114,47,0,0,0,114,3,0,0,0, + 90,17,105,109,112,111,114,116,108,105,98,46,114,101,97,100, + 101,114,115,114,85,0,0,0,41,3,114,33,0,0,0,114, + 42,0,0,0,114,85,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,218,19,103,101,116,95,114,101, + 115,111,117,114,99,101,95,114,101,97,100,101,114,59,1,0, + 0,115,22,0,0,0,2,6,10,1,4,1,2,255,2,128, + 12,2,6,1,2,128,12,1,10,1,2,253,115,12,0,0, + 0,129,5,9,0,137,7,19,7,159,1,19,7,122,31,122, + 105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,114, + 101,115,111,117,114,99,101,95,114,101,97,100,101,114,99,1, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,74,0,0,0,9,0,116,0,124,0,106,1, + 131,1,124,0,95,2,124,0,106,2,116,3,124,0,106,1, + 60,0,100,1,83,0,35,0,4,0,116,4,121,36,1,0, + 1,0,1,0,116,3,160,5,124,0,106,1,100,1,161,2, + 1,0,100,1,124,0,95,2,89,0,100,1,83,0,37,0, + 119,0,41,2,122,41,82,101,108,111,97,100,32,116,104,101, + 32,102,105,108,101,32,100,97,116,97,32,111,102,32,116,104, + 101,32,97,114,99,104,105,118,101,32,112,97,116,104,46,78, + 41,6,114,28,0,0,0,114,30,0,0,0,114,29,0,0, + 0,114,26,0,0,0,114,3,0,0,0,218,3,112,111,112, + 169,1,114,33,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,17,105,110,118,97,108,105,100,97, + 116,101,95,99,97,99,104,101,115,74,1,0,0,115,18,0, + 0,0,2,2,12,1,16,1,2,128,12,1,14,1,12,1, + 2,128,2,254,115,12,0,0,0,129,12,15,0,143,17,35, + 7,164,1,35,7,122,29,122,105,112,105,109,112,111,114,116, + 101,114,46,105,110,118,97,108,105,100,97,116,101,95,99,97, + 99,104,101,115,99,1,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,67,0,0,0,115,24,0,0,0,100,1, + 124,0,106,0,155,0,116,1,155,0,124,0,106,2,155,0, + 100,2,157,5,83,0,41,3,78,122,21,60,122,105,112,105, + 109,112,111,114,116,101,114,32,111,98,106,101,99,116,32,34, + 122,2,34,62,41,3,114,30,0,0,0,114,21,0,0,0, + 114,32,0,0,0,114,88,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,8,95,95,114,101,112, 114,95,95,84,1,0,0,115,2,0,0,0,24,1,114,11, 0,0,0,122,20,122,105,112,105,109,112,111,114,116,101,114, 46,95,95,114,101,112,114,95,95,169,1,78,41,17,114,6, @@ -581,519 +586,523 @@ const unsigned char _Py_M__zipimport[] = { 114,46,0,0,0,114,50,0,0,0,114,56,0,0,0,114, 63,0,0,0,114,64,0,0,0,114,71,0,0,0,114,47, 0,0,0,114,84,0,0,0,114,86,0,0,0,114,89,0, - 0,0,114,90,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,4,0,0,0,46,0,0,0,115,30,0,0,0,8, - 0,4,1,8,17,10,46,10,37,10,16,8,27,8,10,8, - 21,8,12,8,26,8,13,8,43,8,15,12,10,114,11,0, - 0,0,122,12,95,95,105,110,105,116,95,95,46,112,121,99, - 84,114,67,0,0,0,70,41,3,122,4,46,112,121,99,84, - 70,41,3,114,68,0,0,0,70,70,99,2,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 20,0,0,0,124,0,106,0,124,1,160,1,100,1,161,1, - 100,2,25,0,23,0,83,0,41,3,78,218,1,46,233,2, - 0,0,0,41,2,114,32,0,0,0,218,10,114,112,97,114, - 116,105,116,105,111,110,41,2,114,33,0,0,0,114,42,0, - 0,0,32,32,114,10,0,0,0,114,40,0,0,0,102,1, - 0,0,115,2,0,0,0,20,1,114,11,0,0,0,114,40, + 0,0,114,90,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,114,4,0,0,0, + 46,0,0,0,115,30,0,0,0,8,0,4,1,8,17,10, + 46,10,37,10,16,8,27,8,10,8,21,8,12,8,26,8, + 13,8,43,8,15,12,10,114,11,0,0,0,122,12,95,95, + 105,110,105,116,95,95,46,112,121,99,84,114,67,0,0,0, + 70,41,3,122,4,46,112,121,99,84,70,41,3,114,68,0, + 0,0,70,70,99,2,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,20,0,0,0,124,0, + 106,0,124,1,160,1,100,1,161,1,100,2,25,0,23,0, + 83,0,41,3,78,218,1,46,233,2,0,0,0,41,2,114, + 32,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, + 41,2,114,33,0,0,0,114,42,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,114,40,0,0,0, + 102,1,0,0,115,2,0,0,0,20,1,114,11,0,0,0, + 114,40,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,67,0,0,0,115,18,0,0,0,124, + 1,116,0,23,0,125,2,124,2,124,0,106,1,118,0,83, + 0,114,91,0,0,0,41,2,114,21,0,0,0,114,29,0, + 0,0,41,3,114,33,0,0,0,114,14,0,0,0,90,7, + 100,105,114,112,97,116,104,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,114,41,0,0,0,106,1,0,0,115, + 4,0,0,0,8,4,10,2,114,11,0,0,0,114,41,0, + 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,115,56,0,0,0,116,0,124,0, + 124,1,131,2,125,2,116,1,68,0,93,18,92,3,125,3, + 125,4,125,5,124,2,124,3,23,0,125,6,124,6,124,0, + 106,2,118,0,114,25,124,5,2,0,1,0,83,0,113,7, + 100,0,83,0,114,91,0,0,0,41,3,114,40,0,0,0, + 218,16,95,122,105,112,95,115,101,97,114,99,104,111,114,100, + 101,114,114,29,0,0,0,41,7,114,33,0,0,0,114,42, + 0,0,0,114,14,0,0,0,218,6,115,117,102,102,105,120, + 218,10,105,115,98,121,116,101,99,111,100,101,114,55,0,0, + 0,114,70,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,114,39,0,0,0,115,1,0,0,115,14, + 0,0,0,10,1,14,1,8,1,10,1,8,1,2,255,4, + 2,114,11,0,0,0,114,39,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, + 115,248,4,0,0,9,0,116,0,160,1,124,0,161,1,125, + 1,110,18,35,0,4,0,116,2,144,2,121,123,1,0,1, + 0,1,0,116,3,100,1,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,37,0,124,1,53,0,1,0,9,0,124, + 1,160,4,116,5,11,0,100,3,161,2,1,0,124,1,160, + 6,161,0,125,2,124,1,160,7,116,5,161,1,125,3,110, + 18,35,0,4,0,116,2,144,2,121,122,1,0,1,0,1, + 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,37,0,116,8,124,3,131,1,116,5,107,3,114, + 79,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,124,3,100,0,100,5,133,2,25,0,116,9,107, + 3,114,204,9,0,124,1,160,4,100,6,100,3,161,2,1, + 0,124,1,160,6,161,0,125,4,110,18,35,0,4,0,116, + 2,144,2,121,121,1,0,1,0,1,0,116,3,100,4,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,37,0,116, + 10,124,4,116,11,24,0,116,5,24,0,100,6,131,2,125, + 5,9,0,124,1,160,4,124,5,161,1,1,0,124,1,160, + 7,161,0,125,6,110,18,35,0,4,0,116,2,144,2,121, + 120,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,37,0,124,6,160,12,116, + 9,161,1,125,7,124,7,100,6,107,0,114,173,116,3,100, + 7,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, + 6,124,7,124,7,116,5,23,0,133,2,25,0,125,3,116, + 8,124,3,131,1,116,5,107,3,114,196,116,3,100,8,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,4,116, + 8,124,6,131,1,24,0,124,7,23,0,125,2,116,13,124, + 3,100,9,100,10,133,2,25,0,131,1,125,8,116,13,124, + 3,100,10,100,11,133,2,25,0,131,1,125,9,124,2,124, + 8,107,0,114,233,116,3,100,12,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,2,124,9,107,0,114,246,116, + 3,100,13,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,2,124,8,56,0,125,2,124,2,124,9,24,0,125, + 10,124,10,100,6,107,0,144,1,114,12,116,3,100,14,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,105,0,125, + 11,100,6,125,12,9,0,124,1,160,4,124,2,161,1,1, + 0,110,18,35,0,4,0,116,2,144,2,121,119,1,0,1, + 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,37,0,9,0,124,1,160,7,100,16,161, + 1,125,3,116,8,124,3,131,1,100,5,107,0,144,1,114, + 58,116,14,100,17,131,1,130,1,124,3,100,0,100,5,133, + 2,25,0,100,18,107,3,144,1,114,69,144,2,113,88,116, + 8,124,3,131,1,100,16,107,3,144,1,114,80,116,14,100, + 17,131,1,130,1,116,15,124,3,100,19,100,20,133,2,25, + 0,131,1,125,13,116,15,124,3,100,20,100,9,133,2,25, + 0,131,1,125,14,116,15,124,3,100,9,100,21,133,2,25, + 0,131,1,125,15,116,15,124,3,100,21,100,10,133,2,25, + 0,131,1,125,16,116,13,124,3,100,10,100,11,133,2,25, + 0,131,1,125,17,116,13,124,3,100,11,100,22,133,2,25, + 0,131,1,125,18,116,13,124,3,100,22,100,23,133,2,25, + 0,131,1,125,4,116,15,124,3,100,23,100,24,133,2,25, + 0,131,1,125,19,116,15,124,3,100,24,100,25,133,2,25, + 0,131,1,125,20,116,15,124,3,100,25,100,26,133,2,25, + 0,131,1,125,21,116,13,124,3,100,27,100,16,133,2,25, + 0,131,1,125,22,124,19,124,20,23,0,124,21,23,0,125, + 8,124,22,124,9,107,4,144,1,114,188,116,3,100,28,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,22,124, + 10,55,0,125,22,9,0,124,1,160,7,124,19,161,1,125, + 23,110,18,35,0,4,0,116,2,144,2,121,118,1,0,1, + 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,37,0,116,8,124,23,131,1,124,19,107, + 3,144,1,114,233,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,9,0,116,8,124,1,160,7,124, + 8,124,19,24,0,161,1,131,1,124,8,124,19,24,0,107, + 3,144,2,114,1,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,110,18,35,0,4,0,116,2,144, + 2,121,117,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,37,0,124,13,100, + 29,64,0,144,2,114,30,124,23,160,16,161,0,125,23,110, + 26,9,0,124,23,160,16,100,30,161,1,125,23,110,19,35, + 0,4,0,116,17,144,2,121,116,1,0,1,0,1,0,124, + 23,160,16,100,31,161,1,160,18,116,19,161,1,125,23,89, + 0,110,1,37,0,124,23,160,20,100,32,116,21,161,2,125, + 23,116,22,160,23,124,0,124,23,161,2,125,24,124,24,124, + 14,124,18,124,4,124,22,124,15,124,16,124,17,102,8,125, + 25,124,25,124,11,124,23,60,0,124,12,100,33,55,0,125, + 12,144,1,113,42,9,0,100,0,4,0,4,0,131,3,1, + 0,110,12,35,0,49,0,144,2,115,101,119,4,37,0,1, + 0,1,0,1,0,89,0,1,0,1,0,116,24,160,25,100, + 34,124,12,124,0,161,3,1,0,124,11,83,0,119,0,119, + 0,119,0,119,0,119,0,119,0,119,0,119,0,41,35,78, + 122,21,99,97,110,39,116,32,111,112,101,110,32,90,105,112, + 32,102,105,108,101,58,32,114,13,0,0,0,114,94,0,0, + 0,250,21,99,97,110,39,116,32,114,101,97,100,32,90,105, + 112,32,102,105,108,101,58,32,233,4,0,0,0,114,0,0, + 0,0,122,16,110,111,116,32,97,32,90,105,112,32,102,105, + 108,101,58,32,122,18,99,111,114,114,117,112,116,32,90,105, + 112,32,102,105,108,101,58,32,233,12,0,0,0,233,16,0, + 0,0,233,20,0,0,0,122,28,98,97,100,32,99,101,110, + 116,114,97,108,32,100,105,114,101,99,116,111,114,121,32,115, + 105,122,101,58,32,122,30,98,97,100,32,99,101,110,116,114, + 97,108,32,100,105,114,101,99,116,111,114,121,32,111,102,102, + 115,101,116,58,32,122,38,98,97,100,32,99,101,110,116,114, + 97,108,32,100,105,114,101,99,116,111,114,121,32,115,105,122, + 101,32,111,114,32,111,102,102,115,101,116,58,32,84,233,46, + 0,0,0,250,27,69,79,70,32,114,101,97,100,32,119,104, + 101,114,101,32,110,111,116,32,101,120,112,101,99,116,101,100, + 115,4,0,0,0,80,75,1,2,233,8,0,0,0,233,10, + 0,0,0,233,14,0,0,0,233,24,0,0,0,233,28,0, + 0,0,233,30,0,0,0,233,32,0,0,0,233,34,0,0, + 0,233,42,0,0,0,122,25,98,97,100,32,108,111,99,97, + 108,32,104,101,97,100,101,114,32,111,102,102,115,101,116,58, + 32,105,0,8,0,0,218,5,97,115,99,105,105,90,6,108, + 97,116,105,110,49,250,1,47,114,5,0,0,0,122,33,122, + 105,112,105,109,112,111,114,116,58,32,102,111,117,110,100,32, + 123,125,32,110,97,109,101,115,32,105,110,32,123,33,114,125, + 41,26,218,3,95,105,111,218,9,111,112,101,110,95,99,111, + 100,101,114,23,0,0,0,114,3,0,0,0,218,4,115,101, + 101,107,218,20,69,78,68,95,67,69,78,84,82,65,76,95, + 68,73,82,95,83,73,90,69,90,4,116,101,108,108,218,4, + 114,101,97,100,114,59,0,0,0,218,18,83,84,82,73,78, + 71,95,69,78,68,95,65,82,67,72,73,86,69,218,3,109, + 97,120,218,15,77,65,88,95,67,79,77,77,69,78,84,95, + 76,69,78,218,5,114,102,105,110,100,114,2,0,0,0,218, + 8,69,79,70,69,114,114,111,114,114,1,0,0,0,114,69, + 0,0,0,218,18,85,110,105,99,111,100,101,68,101,99,111, + 100,101,69,114,114,111,114,218,9,116,114,97,110,115,108,97, + 116,101,218,11,99,112,52,51,55,95,116,97,98,108,101,114, + 20,0,0,0,114,21,0,0,0,114,22,0,0,0,114,31, + 0,0,0,114,49,0,0,0,114,82,0,0,0,41,26,114, + 30,0,0,0,218,2,102,112,90,15,104,101,97,100,101,114, + 95,112,111,115,105,116,105,111,110,218,6,98,117,102,102,101, + 114,218,9,102,105,108,101,95,115,105,122,101,90,17,109,97, + 120,95,99,111,109,109,101,110,116,95,115,116,97,114,116,218, + 4,100,97,116,97,90,3,112,111,115,218,11,104,101,97,100, + 101,114,95,115,105,122,101,90,13,104,101,97,100,101,114,95, + 111,102,102,115,101,116,90,10,97,114,99,95,111,102,102,115, + 101,116,114,34,0,0,0,218,5,99,111,117,110,116,218,5, + 102,108,97,103,115,218,8,99,111,109,112,114,101,115,115,218, + 4,116,105,109,101,218,4,100,97,116,101,218,3,99,114,99, + 218,9,100,97,116,97,95,115,105,122,101,218,9,110,97,109, + 101,95,115,105,122,101,218,10,101,120,116,114,97,95,115,105, + 122,101,90,12,99,111,109,109,101,110,116,95,115,105,122,101, + 218,11,102,105,108,101,95,111,102,102,115,101,116,114,48,0, + 0,0,114,14,0,0,0,218,1,116,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,114,28,0,0,0,146,1, + 0,0,115,16,1,0,0,2,1,12,1,2,128,14,1,18, + 1,2,128,6,2,2,1,14,1,8,1,12,1,2,128,14, + 1,18,1,2,128,12,1,18,1,16,1,2,3,12,1,10, + 1,2,128,14,1,10,1,2,1,6,255,2,128,8,2,2, + 1,2,255,2,1,4,255,2,2,10,1,10,1,2,128,14, + 1,10,1,2,1,6,255,2,128,10,2,8,1,10,1,2, + 1,6,255,16,2,12,1,10,1,2,1,6,255,16,2,16, + 2,16,1,8,1,18,1,8,1,18,1,8,1,8,1,10, + 1,18,1,4,2,4,2,2,1,12,1,2,128,14,1,18, + 1,2,128,2,1,10,1,14,1,8,1,18,2,4,1,14, + 1,8,1,16,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,12,1,10,1,18,1,8, + 1,2,2,12,1,2,128,14,1,18,1,2,128,14,1,18, + 1,2,4,28,1,18,1,2,255,2,128,14,2,18,1,2, + 128,10,2,10,2,2,3,12,1,2,128,14,1,20,1,2, + 128,12,2,12,1,20,1,8,1,8,1,4,202,2,6,12, + 196,24,128,14,109,4,1,2,247,2,246,2,246,2,227,2, + 227,2,248,2,246,2,248,115,235,0,0,0,129,5,7,0, + 135,17,24,7,155,1,73,31,3,157,16,46,2,173,1,73, + 31,3,174,17,63,9,191,24,73,31,3,193,24,10,65,35, + 2,193,34,1,73,31,3,193,35,17,65,52,9,193,52,10, + 73,31,3,193,63,9,66,9,2,194,8,1,73,31,3,194, + 9,17,66,26,9,194,26,65,54,73,31,3,196,17,5,68, + 23,2,196,22,1,73,31,3,196,23,17,68,40,9,196,40, + 66,24,73,31,3,199,1,5,71,7,2,199,6,1,73,31, + 3,199,7,17,71,24,9,199,24,17,73,31,3,199,42,23, + 72,2,2,200,1,1,73,31,3,200,2,17,72,19,9,200, + 19,11,73,31,3,200,31,5,72,37,2,200,36,1,73,31, + 3,200,37,16,72,55,9,200,53,35,73,31,3,201,31,5, + 73,36,11,201,37,3,73,36,11,201,52,1,72,55,9,201, + 53,1,72,19,9,201,54,1,71,24,9,201,55,1,68,40, + 9,201,56,1,66,26,9,201,57,1,65,52,9,201,58,1, + 63,9,201,59,1,24,7,114,28,0,0,0,117,190,1,0, + 0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, + 15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, + 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46, + 47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78, + 79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94, + 95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110, + 111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126, + 127,195,135,195,188,195,169,195,162,195,164,195,160,195,165,195, + 167,195,170,195,171,195,168,195,175,195,174,195,172,195,132,195, + 133,195,137,195,166,195,134,195,180,195,182,195,178,195,187,195, + 185,195,191,195,150,195,156,194,162,194,163,194,165,226,130,167, + 198,146,195,161,195,173,195,179,195,186,195,177,195,145,194,170, + 194,186,194,191,226,140,144,194,172,194,189,194,188,194,161,194, + 171,194,187,226,150,145,226,150,146,226,150,147,226,148,130,226, + 148,164,226,149,161,226,149,162,226,149,150,226,149,149,226,149, + 163,226,149,145,226,149,151,226,149,157,226,149,156,226,149,155, + 226,148,144,226,148,148,226,148,180,226,148,172,226,148,156,226, + 148,128,226,148,188,226,149,158,226,149,159,226,149,154,226,149, + 148,226,149,169,226,149,166,226,149,160,226,149,144,226,149,172, + 226,149,167,226,149,168,226,149,164,226,149,165,226,149,153,226, + 149,152,226,149,146,226,149,147,226,149,171,226,149,170,226,148, + 152,226,148,140,226,150,136,226,150,132,226,150,140,226,150,144, + 226,150,128,206,177,195,159,206,147,207,128,206,163,207,131,194, + 181,207,132,206,166,206,152,206,169,206,180,226,136,158,207,134, + 206,181,226,136,169,226,137,161,194,177,226,137,165,226,137,164, + 226,140,160,226,140,161,195,183,226,137,136,194,176,226,136,153, + 194,183,226,136,154,226,129,191,194,178,226,150,160,194,160,99, + 0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 67,0,0,0,115,110,0,0,0,116,0,114,11,116,1,160, + 2,100,1,161,1,1,0,116,3,100,2,131,1,130,1,100, + 3,97,0,9,0,100,4,100,5,108,4,109,5,125,0,1, + 0,110,17,35,0,4,0,116,6,121,54,1,0,1,0,1, + 0,116,1,160,2,100,1,161,1,1,0,116,3,100,2,131, + 1,130,1,37,0,9,0,100,6,97,0,110,5,35,0,100, + 6,97,0,119,0,37,0,116,1,160,2,100,7,161,1,1, + 0,124,0,83,0,119,0,41,8,78,122,27,122,105,112,105, + 109,112,111,114,116,58,32,122,108,105,98,32,85,78,65,86, + 65,73,76,65,66,76,69,250,41,99,97,110,39,116,32,100, + 101,99,111,109,112,114,101,115,115,32,100,97,116,97,59,32, + 122,108,105,98,32,110,111,116,32,97,118,97,105,108,97,98, + 108,101,84,114,0,0,0,0,169,1,218,10,100,101,99,111, + 109,112,114,101,115,115,70,122,25,122,105,112,105,109,112,111, + 114,116,58,32,122,108,105,98,32,97,118,97,105,108,97,98, + 108,101,41,7,218,15,95,105,109,112,111,114,116,105,110,103, + 95,122,108,105,98,114,49,0,0,0,114,82,0,0,0,114, + 3,0,0,0,90,4,122,108,105,98,114,148,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,114,147,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,20, + 95,103,101,116,95,100,101,99,111,109,112,114,101,115,115,95, + 102,117,110,99,48,2,0,0,115,36,0,0,0,4,2,10, + 3,8,1,4,2,2,1,14,1,2,128,12,1,10,1,8, + 1,2,128,2,253,6,5,2,128,8,0,10,2,4,1,2, + 249,115,24,0,0,0,142,6,21,0,148,1,42,0,149,16, + 37,7,165,1,42,0,170,4,46,7,182,1,37,7,114,151, 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, - 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,114, - 91,0,0,0,41,2,114,21,0,0,0,114,29,0,0,0, - 41,3,114,33,0,0,0,114,14,0,0,0,90,7,100,105, - 114,112,97,116,104,32,32,32,114,10,0,0,0,114,41,0, - 0,0,106,1,0,0,115,4,0,0,0,8,4,10,2,114, - 11,0,0,0,114,41,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,56, - 0,0,0,116,0,124,0,124,1,131,2,125,2,116,1,68, - 0,93,18,92,3,125,3,125,4,125,5,124,2,124,3,23, - 0,125,6,124,6,124,0,106,2,118,0,114,25,124,5,2, - 0,1,0,83,0,113,7,100,0,83,0,114,91,0,0,0, - 41,3,114,40,0,0,0,218,16,95,122,105,112,95,115,101, - 97,114,99,104,111,114,100,101,114,114,29,0,0,0,41,7, - 114,33,0,0,0,114,42,0,0,0,114,14,0,0,0,218, - 6,115,117,102,102,105,120,218,10,105,115,98,121,116,101,99, - 111,100,101,114,55,0,0,0,114,70,0,0,0,32,32,32, - 32,32,32,32,114,10,0,0,0,114,39,0,0,0,115,1, - 0,0,115,14,0,0,0,10,1,14,1,8,1,10,1,8, - 1,2,255,4,2,114,11,0,0,0,114,39,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, - 67,0,0,0,115,248,4,0,0,9,0,116,0,160,1,124, - 0,161,1,125,1,110,18,35,0,4,0,116,2,144,2,121, - 123,1,0,1,0,1,0,116,3,100,1,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,124,1,53,0,1, - 0,9,0,124,1,160,4,116,5,11,0,100,3,161,2,1, - 0,124,1,160,6,161,0,125,2,124,1,160,7,116,5,161, - 1,125,3,110,18,35,0,4,0,116,2,144,2,121,122,1, - 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,37,0,116,8,124,3,131,1,116, - 5,107,3,114,79,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,124,3,100,0,100,5,133,2,25, - 0,116,9,107,3,114,204,9,0,124,1,160,4,100,6,100, - 3,161,2,1,0,124,1,160,6,161,0,125,4,110,18,35, - 0,4,0,116,2,144,2,121,121,1,0,1,0,1,0,116, - 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,37,0,116,10,124,4,116,11,24,0,116,5,24,0,100, - 6,131,2,125,5,9,0,124,1,160,4,124,5,161,1,1, - 0,124,1,160,7,161,0,125,6,110,18,35,0,4,0,116, - 2,144,2,121,120,1,0,1,0,1,0,116,3,100,4,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,37,0,124, - 6,160,12,116,9,161,1,125,7,124,7,100,6,107,0,114, - 173,116,3,100,7,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,124,6,124,7,124,7,116,5,23,0,133,2,25, - 0,125,3,116,8,124,3,131,1,116,5,107,3,114,196,116, - 3,100,8,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,4,116,8,124,6,131,1,24,0,124,7,23,0,125, - 2,116,13,124,3,100,9,100,10,133,2,25,0,131,1,125, - 8,116,13,124,3,100,10,100,11,133,2,25,0,131,1,125, - 9,124,2,124,8,107,0,114,233,116,3,100,12,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,2,124,9,107, - 0,114,246,116,3,100,13,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,124,2,124,8,56,0,125,2,124,2,124, - 9,24,0,125,10,124,10,100,6,107,0,144,1,114,12,116, - 3,100,14,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,105,0,125,11,100,6,125,12,9,0,124,1,160,4,124, - 2,161,1,1,0,110,18,35,0,4,0,116,2,144,2,121, - 119,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,9,0,124,1,160, - 7,100,16,161,1,125,3,116,8,124,3,131,1,100,5,107, - 0,144,1,114,58,116,14,100,17,131,1,130,1,124,3,100, - 0,100,5,133,2,25,0,100,18,107,3,144,1,114,69,144, - 2,113,88,116,8,124,3,131,1,100,16,107,3,144,1,114, - 80,116,14,100,17,131,1,130,1,116,15,124,3,100,19,100, - 20,133,2,25,0,131,1,125,13,116,15,124,3,100,20,100, - 9,133,2,25,0,131,1,125,14,116,15,124,3,100,9,100, - 21,133,2,25,0,131,1,125,15,116,15,124,3,100,21,100, - 10,133,2,25,0,131,1,125,16,116,13,124,3,100,10,100, - 11,133,2,25,0,131,1,125,17,116,13,124,3,100,11,100, - 22,133,2,25,0,131,1,125,18,116,13,124,3,100,22,100, - 23,133,2,25,0,131,1,125,4,116,15,124,3,100,23,100, - 24,133,2,25,0,131,1,125,19,116,15,124,3,100,24,100, - 25,133,2,25,0,131,1,125,20,116,15,124,3,100,25,100, - 26,133,2,25,0,131,1,125,21,116,13,124,3,100,27,100, - 16,133,2,25,0,131,1,125,22,124,19,124,20,23,0,124, - 21,23,0,125,8,124,22,124,9,107,4,144,1,114,188,116, - 3,100,28,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,22,124,10,55,0,125,22,9,0,124,1,160,7,124, - 19,161,1,125,23,110,18,35,0,4,0,116,2,144,2,121, - 118,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,116,8,124,23,131, - 1,124,19,107,3,144,1,114,233,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,9,0,116,8,124, - 1,160,7,124,8,124,19,24,0,161,1,131,1,124,8,124, - 19,24,0,107,3,144,2,114,1,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,110,18,35,0,4, - 0,116,2,144,2,121,117,1,0,1,0,1,0,116,3,100, - 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,37, - 0,124,13,100,29,64,0,144,2,114,30,124,23,160,16,161, - 0,125,23,110,26,9,0,124,23,160,16,100,30,161,1,125, - 23,110,19,35,0,4,0,116,17,144,2,121,116,1,0,1, - 0,1,0,124,23,160,16,100,31,161,1,160,18,116,19,161, - 1,125,23,89,0,110,1,37,0,124,23,160,20,100,32,116, - 21,161,2,125,23,116,22,160,23,124,0,124,23,161,2,125, - 24,124,24,124,14,124,18,124,4,124,22,124,15,124,16,124, - 17,102,8,125,25,124,25,124,11,124,23,60,0,124,12,100, - 33,55,0,125,12,144,1,113,42,9,0,100,0,4,0,4, - 0,131,3,1,0,110,12,35,0,49,0,144,2,115,101,119, - 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,116, - 24,160,25,100,34,124,12,124,0,161,3,1,0,124,11,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,119, - 0,41,35,78,122,21,99,97,110,39,116,32,111,112,101,110, - 32,90,105,112,32,102,105,108,101,58,32,114,13,0,0,0, - 114,94,0,0,0,250,21,99,97,110,39,116,32,114,101,97, - 100,32,90,105,112,32,102,105,108,101,58,32,233,4,0,0, - 0,114,0,0,0,0,122,16,110,111,116,32,97,32,90,105, - 112,32,102,105,108,101,58,32,122,18,99,111,114,114,117,112, - 116,32,90,105,112,32,102,105,108,101,58,32,233,12,0,0, - 0,233,16,0,0,0,233,20,0,0,0,122,28,98,97,100, - 32,99,101,110,116,114,97,108,32,100,105,114,101,99,116,111, - 114,121,32,115,105,122,101,58,32,122,30,98,97,100,32,99, - 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, - 32,111,102,102,115,101,116,58,32,122,38,98,97,100,32,99, - 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, - 32,115,105,122,101,32,111,114,32,111,102,102,115,101,116,58, - 32,84,233,46,0,0,0,250,27,69,79,70,32,114,101,97, - 100,32,119,104,101,114,101,32,110,111,116,32,101,120,112,101, - 99,116,101,100,115,4,0,0,0,80,75,1,2,233,8,0, - 0,0,233,10,0,0,0,233,14,0,0,0,233,24,0,0, - 0,233,28,0,0,0,233,30,0,0,0,233,32,0,0,0, - 233,34,0,0,0,233,42,0,0,0,122,25,98,97,100,32, - 108,111,99,97,108,32,104,101,97,100,101,114,32,111,102,102, - 115,101,116,58,32,105,0,8,0,0,218,5,97,115,99,105, - 105,90,6,108,97,116,105,110,49,250,1,47,114,5,0,0, - 0,122,33,122,105,112,105,109,112,111,114,116,58,32,102,111, - 117,110,100,32,123,125,32,110,97,109,101,115,32,105,110,32, - 123,33,114,125,41,26,218,3,95,105,111,218,9,111,112,101, - 110,95,99,111,100,101,114,23,0,0,0,114,3,0,0,0, - 218,4,115,101,101,107,218,20,69,78,68,95,67,69,78,84, - 82,65,76,95,68,73,82,95,83,73,90,69,90,4,116,101, - 108,108,218,4,114,101,97,100,114,59,0,0,0,218,18,83, - 84,82,73,78,71,95,69,78,68,95,65,82,67,72,73,86, - 69,218,3,109,97,120,218,15,77,65,88,95,67,79,77,77, - 69,78,84,95,76,69,78,218,5,114,102,105,110,100,114,2, - 0,0,0,218,8,69,79,70,69,114,114,111,114,114,1,0, - 0,0,114,69,0,0,0,218,18,85,110,105,99,111,100,101, - 68,101,99,111,100,101,69,114,114,111,114,218,9,116,114,97, - 110,115,108,97,116,101,218,11,99,112,52,51,55,95,116,97, - 98,108,101,114,20,0,0,0,114,21,0,0,0,114,22,0, - 0,0,114,31,0,0,0,114,49,0,0,0,114,82,0,0, - 0,41,26,114,30,0,0,0,218,2,102,112,90,15,104,101, - 97,100,101,114,95,112,111,115,105,116,105,111,110,218,6,98, - 117,102,102,101,114,218,9,102,105,108,101,95,115,105,122,101, - 90,17,109,97,120,95,99,111,109,109,101,110,116,95,115,116, - 97,114,116,218,4,100,97,116,97,90,3,112,111,115,218,11, - 104,101,97,100,101,114,95,115,105,122,101,90,13,104,101,97, - 100,101,114,95,111,102,102,115,101,116,90,10,97,114,99,95, - 111,102,102,115,101,116,114,34,0,0,0,218,5,99,111,117, - 110,116,218,5,102,108,97,103,115,218,8,99,111,109,112,114, - 101,115,115,218,4,116,105,109,101,218,4,100,97,116,101,218, - 3,99,114,99,218,9,100,97,116,97,95,115,105,122,101,218, - 9,110,97,109,101,95,115,105,122,101,218,10,101,120,116,114, - 97,95,115,105,122,101,90,12,99,111,109,109,101,110,116,95, - 115,105,122,101,218,11,102,105,108,101,95,111,102,102,115,101, - 116,114,48,0,0,0,114,14,0,0,0,218,1,116,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,114,10,0,0,0,114,28,0, - 0,0,146,1,0,0,115,16,1,0,0,2,1,12,1,2, - 128,14,1,18,1,2,128,6,2,2,1,14,1,8,1,12, - 1,2,128,14,1,18,1,2,128,12,1,18,1,16,1,2, - 3,12,1,10,1,2,128,14,1,10,1,2,1,6,255,2, - 128,8,2,2,1,2,255,2,1,4,255,2,2,10,1,10, - 1,2,128,14,1,10,1,2,1,6,255,2,128,10,2,8, - 1,10,1,2,1,6,255,16,2,12,1,10,1,2,1,6, - 255,16,2,16,2,16,1,8,1,18,1,8,1,18,1,8, - 1,8,1,10,1,18,1,4,2,4,2,2,1,12,1,2, - 128,14,1,18,1,2,128,2,1,10,1,14,1,8,1,18, - 2,4,1,14,1,8,1,16,1,16,1,16,1,16,1,16, - 1,16,1,16,1,16,1,16,1,16,1,16,1,12,1,10, - 1,18,1,8,1,2,2,12,1,2,128,14,1,18,1,2, - 128,14,1,18,1,2,4,28,1,18,1,2,255,2,128,14, - 2,18,1,2,128,10,2,10,2,2,3,12,1,2,128,14, - 1,20,1,2,128,12,2,12,1,20,1,8,1,8,1,4, - 202,2,6,12,196,24,128,14,109,4,1,2,247,2,246,2, - 246,2,227,2,227,2,248,2,246,2,248,115,235,0,0,0, - 129,5,7,0,135,17,24,7,155,1,73,31,3,157,16,46, - 2,173,1,73,31,3,174,17,63,9,191,24,73,31,3,193, - 24,10,65,35,2,193,34,1,73,31,3,193,35,17,65,52, - 9,193,52,10,73,31,3,193,63,9,66,9,2,194,8,1, - 73,31,3,194,9,17,66,26,9,194,26,65,54,73,31,3, - 196,17,5,68,23,2,196,22,1,73,31,3,196,23,17,68, - 40,9,196,40,66,24,73,31,3,199,1,5,71,7,2,199, - 6,1,73,31,3,199,7,17,71,24,9,199,24,17,73,31, - 3,199,42,23,72,2,2,200,1,1,73,31,3,200,2,17, - 72,19,9,200,19,11,73,31,3,200,31,5,72,37,2,200, - 36,1,73,31,3,200,37,16,72,55,9,200,53,35,73,31, - 3,201,31,5,73,36,11,201,37,3,73,36,11,201,52,1, - 72,55,9,201,53,1,72,19,9,201,54,1,71,24,9,201, - 55,1,68,40,9,201,56,1,66,26,9,201,57,1,65,52, - 9,201,58,1,63,9,201,59,1,24,7,114,28,0,0,0, - 117,190,1,0,0,0,1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42, - 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, - 75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, - 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106, - 107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122, - 123,124,125,126,127,195,135,195,188,195,169,195,162,195,164,195, - 160,195,165,195,167,195,170,195,171,195,168,195,175,195,174,195, - 172,195,132,195,133,195,137,195,166,195,134,195,180,195,182,195, - 178,195,187,195,185,195,191,195,150,195,156,194,162,194,163,194, - 165,226,130,167,198,146,195,161,195,173,195,179,195,186,195,177, - 195,145,194,170,194,186,194,191,226,140,144,194,172,194,189,194, - 188,194,161,194,171,194,187,226,150,145,226,150,146,226,150,147, - 226,148,130,226,148,164,226,149,161,226,149,162,226,149,150,226, - 149,149,226,149,163,226,149,145,226,149,151,226,149,157,226,149, - 156,226,149,155,226,148,144,226,148,148,226,148,180,226,148,172, - 226,148,156,226,148,128,226,148,188,226,149,158,226,149,159,226, - 149,154,226,149,148,226,149,169,226,149,166,226,149,160,226,149, - 144,226,149,172,226,149,167,226,149,168,226,149,164,226,149,165, - 226,149,153,226,149,152,226,149,146,226,149,147,226,149,171,226, - 149,170,226,148,152,226,148,140,226,150,136,226,150,132,226,150, - 140,226,150,144,226,150,128,206,177,195,159,206,147,207,128,206, - 163,207,131,194,181,207,132,206,166,206,152,206,169,206,180,226, - 136,158,207,134,206,181,226,136,169,226,137,161,194,177,226,137, - 165,226,137,164,226,140,160,226,140,161,195,183,226,137,136,194, - 176,226,136,153,194,183,226,136,154,226,129,191,194,178,226,150, - 160,194,160,99,0,0,0,0,0,0,0,0,0,0,0,0, - 8,0,0,0,67,0,0,0,115,110,0,0,0,116,0,114, - 11,116,1,160,2,100,1,161,1,1,0,116,3,100,2,131, - 1,130,1,100,3,97,0,9,0,100,4,100,5,108,4,109, - 5,125,0,1,0,110,17,35,0,4,0,116,6,121,54,1, - 0,1,0,1,0,116,1,160,2,100,1,161,1,1,0,116, - 3,100,2,131,1,130,1,37,0,9,0,100,6,97,0,110, - 5,35,0,100,6,97,0,119,0,37,0,116,1,160,2,100, - 7,161,1,1,0,124,0,83,0,119,0,41,8,78,122,27, - 122,105,112,105,109,112,111,114,116,58,32,122,108,105,98,32, - 85,78,65,86,65,73,76,65,66,76,69,250,41,99,97,110, - 39,116,32,100,101,99,111,109,112,114,101,115,115,32,100,97, - 116,97,59,32,122,108,105,98,32,110,111,116,32,97,118,97, - 105,108,97,98,108,101,84,114,0,0,0,0,169,1,218,10, - 100,101,99,111,109,112,114,101,115,115,70,122,25,122,105,112, - 105,109,112,111,114,116,58,32,122,108,105,98,32,97,118,97, - 105,108,97,98,108,101,41,7,218,15,95,105,109,112,111,114, - 116,105,110,103,95,122,108,105,98,114,49,0,0,0,114,82, - 0,0,0,114,3,0,0,0,90,4,122,108,105,98,114,148, - 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,147, - 0,0,0,32,114,10,0,0,0,218,20,95,103,101,116,95, - 100,101,99,111,109,112,114,101,115,115,95,102,117,110,99,48, - 2,0,0,115,36,0,0,0,4,2,10,3,8,1,4,2, - 2,1,14,1,2,128,12,1,10,1,8,1,2,128,2,253, - 6,5,2,128,8,0,10,2,4,1,2,249,115,24,0,0, - 0,142,6,21,0,148,1,42,0,149,16,37,7,165,1,42, - 0,170,4,46,7,182,1,37,7,114,151,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, - 0,0,0,115,132,1,0,0,124,1,92,8,125,2,125,3, - 125,4,125,5,125,6,125,7,125,8,125,9,124,4,100,1, - 107,0,114,18,116,0,100,2,131,1,130,1,116,1,160,2, - 124,0,161,1,53,0,125,10,9,0,124,10,160,3,124,6, - 161,1,1,0,110,17,35,0,4,0,116,4,121,193,1,0, - 1,0,1,0,116,0,100,3,124,0,155,2,157,2,124,0, - 100,4,141,2,130,1,37,0,124,10,160,5,100,5,161,1, - 125,11,116,6,124,11,131,1,100,5,107,3,114,63,116,7, - 100,6,131,1,130,1,124,11,100,0,100,7,133,2,25,0, - 100,8,107,3,114,80,116,0,100,9,124,0,155,2,157,2, - 124,0,100,4,141,2,130,1,116,8,124,11,100,10,100,11, - 133,2,25,0,131,1,125,12,116,8,124,11,100,11,100,5, - 133,2,25,0,131,1,125,13,100,5,124,12,23,0,124,13, - 23,0,125,14,124,6,124,14,55,0,125,6,9,0,124,10, - 160,3,124,6,161,1,1,0,110,17,35,0,4,0,116,4, - 121,192,1,0,1,0,1,0,116,0,100,3,124,0,155,2, - 157,2,124,0,100,4,141,2,130,1,37,0,124,10,160,5, - 124,4,161,1,125,15,116,6,124,15,131,1,124,4,107,3, - 114,145,116,4,100,12,131,1,130,1,9,0,100,0,4,0, - 4,0,131,3,1,0,110,11,35,0,49,0,115,157,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,3, - 100,1,107,2,114,169,124,15,83,0,9,0,116,9,131,0, - 125,16,110,12,35,0,4,0,116,10,121,191,1,0,1,0, - 1,0,116,0,100,13,131,1,130,1,37,0,124,16,124,15, - 100,14,131,2,83,0,119,0,119,0,119,0,41,15,78,114, - 0,0,0,0,122,18,110,101,103,97,116,105,118,101,32,100, - 97,116,97,32,115,105,122,101,114,99,0,0,0,114,13,0, - 0,0,114,111,0,0,0,114,105,0,0,0,114,100,0,0, - 0,115,4,0,0,0,80,75,3,4,122,23,98,97,100,32, - 108,111,99,97,108,32,102,105,108,101,32,104,101,97,100,101, - 114,58,32,233,26,0,0,0,114,110,0,0,0,122,26,122, - 105,112,105,109,112,111,114,116,58,32,99,97,110,39,116,32, - 114,101,97,100,32,100,97,116,97,114,146,0,0,0,105,241, - 255,255,255,41,11,114,3,0,0,0,114,117,0,0,0,114, - 118,0,0,0,114,119,0,0,0,114,23,0,0,0,114,121, - 0,0,0,114,59,0,0,0,114,126,0,0,0,114,1,0, - 0,0,114,151,0,0,0,114,150,0,0,0,41,17,114,30, - 0,0,0,114,62,0,0,0,90,8,100,97,116,97,112,97, - 116,104,114,137,0,0,0,114,141,0,0,0,114,132,0,0, - 0,114,144,0,0,0,114,138,0,0,0,114,139,0,0,0, - 114,140,0,0,0,114,130,0,0,0,114,131,0,0,0,114, - 142,0,0,0,114,143,0,0,0,114,134,0,0,0,90,8, - 114,97,119,95,100,97,116,97,114,148,0,0,0,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,10, - 0,0,0,114,60,0,0,0,69,2,0,0,115,86,0,0, - 0,20,1,8,1,8,1,12,2,2,2,12,1,2,128,12, - 1,18,1,2,128,10,1,12,1,8,1,16,2,18,2,16, - 2,16,1,12,1,8,1,2,1,12,1,2,128,12,1,18, - 1,2,128,10,1,12,1,8,1,2,255,12,233,22,128,8, - 26,4,2,2,3,8,1,2,128,12,1,8,1,2,128,10, - 1,2,254,2,243,2,240,115,88,0,0,0,151,1,66,24, - 3,153,5,31,2,158,1,66,24,3,159,16,47,9,175,59, - 66,24,3,193,43,5,65,49,2,193,48,1,66,24,3,193, - 49,16,66,1,9,194,1,16,66,24,3,194,24,4,66,28, - 11,194,29,3,66,28,11,194,42,3,66,46,0,194,46,11, - 66,57,7,194,63,1,66,57,7,195,0,1,66,1,9,195, - 1,1,47,9,114,60,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,16, - 0,0,0,116,0,124,0,124,1,24,0,131,1,100,1,107, - 1,83,0,41,2,78,114,5,0,0,0,41,1,218,3,97, - 98,115,41,2,90,2,116,49,90,2,116,50,32,32,114,10, - 0,0,0,218,9,95,101,113,95,109,116,105,109,101,115,2, - 0,0,115,2,0,0,0,16,2,114,11,0,0,0,114,154, - 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, - 6,0,0,0,67,0,0,0,115,254,0,0,0,124,3,124, - 2,100,1,156,2,125,5,116,0,160,1,124,4,124,3,124, - 5,161,3,125,6,124,6,100,2,64,0,100,3,107,3,125, - 7,124,7,114,63,124,6,100,4,64,0,100,3,107,3,125, - 8,116,2,106,3,100,5,107,3,114,62,124,8,115,38,116, - 2,106,3,100,6,107,2,114,62,116,4,124,0,124,2,131, - 2,125,9,124,9,100,0,117,1,114,62,116,2,160,5,116, - 0,106,6,124,9,161,2,125,10,116,0,160,7,124,4,124, - 10,124,3,124,5,161,4,1,0,110,40,116,8,124,0,124, - 2,131,2,92,2,125,11,125,12,124,11,114,103,116,9,116, - 10,124,4,100,7,100,8,133,2,25,0,131,1,124,11,131, - 2,114,93,116,10,124,4,100,8,100,9,133,2,25,0,131, - 1,124,12,107,3,114,103,116,11,160,12,100,10,124,3,155, - 2,157,2,161,1,1,0,100,0,83,0,116,13,160,14,124, - 4,100,9,100,0,133,2,25,0,161,1,125,13,116,15,124, - 13,116,16,131,2,115,125,116,17,100,11,124,1,155,2,100, - 12,157,3,131,1,130,1,124,13,83,0,41,13,78,41,2, - 114,48,0,0,0,114,14,0,0,0,114,5,0,0,0,114, - 0,0,0,0,114,94,0,0,0,90,5,110,101,118,101,114, - 90,6,97,108,119,97,121,115,114,106,0,0,0,114,101,0, - 0,0,114,102,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,122, - 16,99,111,109,112,105,108,101,100,32,109,111,100,117,108,101, - 32,122,21,32,105,115,32,110,111,116,32,97,32,99,111,100, - 101,32,111,98,106,101,99,116,41,18,114,22,0,0,0,90, - 13,95,99,108,97,115,115,105,102,121,95,112,121,99,218,4, - 95,105,109,112,90,21,99,104,101,99,107,95,104,97,115,104, - 95,98,97,115,101,100,95,112,121,99,115,218,15,95,103,101, - 116,95,112,121,99,95,115,111,117,114,99,101,218,11,115,111, - 117,114,99,101,95,104,97,115,104,90,17,95,82,65,87,95, - 77,65,71,73,67,95,78,85,77,66,69,82,90,18,95,118, - 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, - 218,29,95,103,101,116,95,109,116,105,109,101,95,97,110,100, - 95,115,105,122,101,95,111,102,95,115,111,117,114,99,101,114, - 154,0,0,0,114,2,0,0,0,114,49,0,0,0,114,82, - 0,0,0,218,7,109,97,114,115,104,97,108,90,5,108,111, - 97,100,115,114,16,0,0,0,218,10,95,99,111,100,101,95, - 116,121,112,101,218,9,84,121,112,101,69,114,114,111,114,41, - 14,114,33,0,0,0,114,61,0,0,0,114,70,0,0,0, - 114,42,0,0,0,114,133,0,0,0,90,11,101,120,99,95, - 100,101,116,97,105,108,115,114,136,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,90,12,115,111,117,114,99,101,95,98, - 121,116,101,115,114,157,0,0,0,90,12,115,111,117,114,99, - 101,95,109,116,105,109,101,90,11,115,111,117,114,99,101,95, - 115,105,122,101,114,54,0,0,0,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,114,10,0,0,0,218,15,95,117, - 110,109,97,114,115,104,97,108,95,99,111,100,101,123,2,0, - 0,115,72,0,0,0,2,2,2,1,6,254,14,5,12,2, - 4,1,12,1,10,1,2,1,2,255,8,1,2,255,10,2, - 8,1,4,1,4,1,2,1,4,254,4,5,8,1,4,255, - 2,128,8,4,6,255,4,3,22,3,18,1,2,255,4,2, - 8,1,4,255,4,2,18,2,10,1,16,1,4,1,114,11, - 0,0,0,114,162,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,28,0, - 0,0,124,0,160,0,100,1,100,2,161,2,125,0,124,0, - 160,0,100,3,100,2,161,2,125,0,124,0,83,0,41,4, - 78,115,2,0,0,0,13,10,243,1,0,0,0,10,243,1, - 0,0,0,13,41,1,114,20,0,0,0,41,1,218,6,115, - 111,117,114,99,101,32,114,10,0,0,0,218,23,95,110,111, - 114,109,97,108,105,122,101,95,108,105,110,101,95,101,110,100, - 105,110,103,115,168,2,0,0,115,6,0,0,0,12,1,12, - 1,4,1,114,11,0,0,0,114,166,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,6,0,0,0,67,0, - 0,0,115,24,0,0,0,116,0,124,1,131,1,125,1,116, - 1,124,1,124,0,100,1,100,2,100,3,141,4,83,0,41, - 4,78,114,80,0,0,0,84,41,1,90,12,100,111,110,116, - 95,105,110,104,101,114,105,116,41,2,114,166,0,0,0,218, - 7,99,111,109,112,105,108,101,41,2,114,61,0,0,0,114, - 165,0,0,0,32,32,114,10,0,0,0,218,15,95,99,111, - 109,112,105,108,101,95,115,111,117,114,99,101,175,2,0,0, - 115,4,0,0,0,8,1,16,1,114,11,0,0,0,114,168, + 9,0,0,0,67,0,0,0,115,132,1,0,0,124,1,92, + 8,125,2,125,3,125,4,125,5,125,6,125,7,125,8,125, + 9,124,4,100,1,107,0,114,18,116,0,100,2,131,1,130, + 1,116,1,160,2,124,0,161,1,53,0,125,10,9,0,124, + 10,160,3,124,6,161,1,1,0,110,17,35,0,4,0,116, + 4,121,193,1,0,1,0,1,0,116,0,100,3,124,0,155, + 2,157,2,124,0,100,4,141,2,130,1,37,0,124,10,160, + 5,100,5,161,1,125,11,116,6,124,11,131,1,100,5,107, + 3,114,63,116,7,100,6,131,1,130,1,124,11,100,0,100, + 7,133,2,25,0,100,8,107,3,114,80,116,0,100,9,124, + 0,155,2,157,2,124,0,100,4,141,2,130,1,116,8,124, + 11,100,10,100,11,133,2,25,0,131,1,125,12,116,8,124, + 11,100,11,100,5,133,2,25,0,131,1,125,13,100,5,124, + 12,23,0,124,13,23,0,125,14,124,6,124,14,55,0,125, + 6,9,0,124,10,160,3,124,6,161,1,1,0,110,17,35, + 0,4,0,116,4,121,192,1,0,1,0,1,0,116,0,100, + 3,124,0,155,2,157,2,124,0,100,4,141,2,130,1,37, + 0,124,10,160,5,124,4,161,1,125,15,116,6,124,15,131, + 1,124,4,107,3,114,145,116,4,100,12,131,1,130,1,9, + 0,100,0,4,0,4,0,131,3,1,0,110,11,35,0,49, + 0,115,157,119,4,37,0,1,0,1,0,1,0,89,0,1, + 0,1,0,124,3,100,1,107,2,114,169,124,15,83,0,9, + 0,116,9,131,0,125,16,110,12,35,0,4,0,116,10,121, + 191,1,0,1,0,1,0,116,0,100,13,131,1,130,1,37, + 0,124,16,124,15,100,14,131,2,83,0,119,0,119,0,119, + 0,41,15,78,114,0,0,0,0,122,18,110,101,103,97,116, + 105,118,101,32,100,97,116,97,32,115,105,122,101,114,99,0, + 0,0,114,13,0,0,0,114,111,0,0,0,114,105,0,0, + 0,114,100,0,0,0,115,4,0,0,0,80,75,3,4,122, + 23,98,97,100,32,108,111,99,97,108,32,102,105,108,101,32, + 104,101,97,100,101,114,58,32,233,26,0,0,0,114,110,0, + 0,0,122,26,122,105,112,105,109,112,111,114,116,58,32,99, + 97,110,39,116,32,114,101,97,100,32,100,97,116,97,114,146, + 0,0,0,105,241,255,255,255,41,11,114,3,0,0,0,114, + 117,0,0,0,114,118,0,0,0,114,119,0,0,0,114,23, + 0,0,0,114,121,0,0,0,114,59,0,0,0,114,126,0, + 0,0,114,1,0,0,0,114,151,0,0,0,114,150,0,0, + 0,41,17,114,30,0,0,0,114,62,0,0,0,90,8,100, + 97,116,97,112,97,116,104,114,137,0,0,0,114,141,0,0, + 0,114,132,0,0,0,114,144,0,0,0,114,138,0,0,0, + 114,139,0,0,0,114,140,0,0,0,114,130,0,0,0,114, + 131,0,0,0,114,142,0,0,0,114,143,0,0,0,114,134, + 0,0,0,90,8,114,97,119,95,100,97,116,97,114,148,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,60,0,0,0,69,2,0,0,115,86,0,0,0,20, + 1,8,1,8,1,12,2,2,2,12,1,2,128,12,1,18, + 1,2,128,10,1,12,1,8,1,16,2,18,2,16,2,16, + 1,12,1,8,1,2,1,12,1,2,128,12,1,18,1,2, + 128,10,1,12,1,8,1,2,255,12,233,22,128,8,26,4, + 2,2,3,8,1,2,128,12,1,8,1,2,128,10,1,2, + 254,2,243,2,240,115,88,0,0,0,151,1,66,24,3,153, + 5,31,2,158,1,66,24,3,159,16,47,9,175,59,66,24, + 3,193,43,5,65,49,2,193,48,1,66,24,3,193,49,16, + 66,1,9,194,1,16,66,24,3,194,24,4,66,28,11,194, + 29,3,66,28,11,194,42,3,66,46,0,194,46,11,66,57, + 7,194,63,1,66,57,7,195,0,1,66,1,9,195,1,1, + 47,9,114,60,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, + 0,116,0,124,0,124,1,24,0,131,1,100,1,107,1,83, + 0,41,2,78,114,5,0,0,0,41,1,218,3,97,98,115, + 41,2,90,2,116,49,90,2,116,50,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,9,95,101,113,95,109, + 116,105,109,101,115,2,0,0,115,2,0,0,0,16,2,114, + 11,0,0,0,114,154,0,0,0,99,5,0,0,0,0,0, + 0,0,0,0,0,0,6,0,0,0,67,0,0,0,115,254, + 0,0,0,124,3,124,2,100,1,156,2,125,5,116,0,160, + 1,124,4,124,3,124,5,161,3,125,6,124,6,100,2,64, + 0,100,3,107,3,125,7,124,7,114,63,124,6,100,4,64, + 0,100,3,107,3,125,8,116,2,106,3,100,5,107,3,114, + 62,124,8,115,38,116,2,106,3,100,6,107,2,114,62,116, + 4,124,0,124,2,131,2,125,9,124,9,100,0,117,1,114, + 62,116,2,160,5,116,0,106,6,124,9,161,2,125,10,116, + 0,160,7,124,4,124,10,124,3,124,5,161,4,1,0,110, + 40,116,8,124,0,124,2,131,2,92,2,125,11,125,12,124, + 11,114,103,116,9,116,10,124,4,100,7,100,8,133,2,25, + 0,131,1,124,11,131,2,114,93,116,10,124,4,100,8,100, + 9,133,2,25,0,131,1,124,12,107,3,114,103,116,11,160, + 12,100,10,124,3,155,2,157,2,161,1,1,0,100,0,83, + 0,116,13,160,14,124,4,100,9,100,0,133,2,25,0,161, + 1,125,13,116,15,124,13,116,16,131,2,115,125,116,17,100, + 11,124,1,155,2,100,12,157,3,131,1,130,1,124,13,83, + 0,41,13,78,41,2,114,48,0,0,0,114,14,0,0,0, + 114,5,0,0,0,114,0,0,0,0,114,94,0,0,0,90, + 5,110,101,118,101,114,90,6,97,108,119,97,121,115,114,106, + 0,0,0,114,101,0,0,0,114,102,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,122,16,99,111,109,112,105,108,101,100,32, + 109,111,100,117,108,101,32,122,21,32,105,115,32,110,111,116, + 32,97,32,99,111,100,101,32,111,98,106,101,99,116,41,18, + 114,22,0,0,0,90,13,95,99,108,97,115,115,105,102,121, + 95,112,121,99,218,4,95,105,109,112,90,21,99,104,101,99, + 107,95,104,97,115,104,95,98,97,115,101,100,95,112,121,99, + 115,218,15,95,103,101,116,95,112,121,99,95,115,111,117,114, + 99,101,218,11,115,111,117,114,99,101,95,104,97,115,104,90, + 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, + 69,82,90,18,95,118,97,108,105,100,97,116,101,95,104,97, + 115,104,95,112,121,99,218,29,95,103,101,116,95,109,116,105, + 109,101,95,97,110,100,95,115,105,122,101,95,111,102,95,115, + 111,117,114,99,101,114,154,0,0,0,114,2,0,0,0,114, + 49,0,0,0,114,82,0,0,0,218,7,109,97,114,115,104, + 97,108,90,5,108,111,97,100,115,114,16,0,0,0,218,10, + 95,99,111,100,101,95,116,121,112,101,218,9,84,121,112,101, + 69,114,114,111,114,41,14,114,33,0,0,0,114,61,0,0, + 0,114,70,0,0,0,114,42,0,0,0,114,133,0,0,0, + 90,11,101,120,99,95,100,101,116,97,105,108,115,114,136,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,90,12,115,111, + 117,114,99,101,95,98,121,116,101,115,114,157,0,0,0,90, + 12,115,111,117,114,99,101,95,109,116,105,109,101,90,11,115, + 111,117,114,99,101,95,115,105,122,101,114,54,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,15, + 95,117,110,109,97,114,115,104,97,108,95,99,111,100,101,123, + 2,0,0,115,72,0,0,0,2,2,2,1,6,254,14,5, + 12,2,4,1,12,1,10,1,2,1,2,255,8,1,2,255, + 10,2,8,1,4,1,4,1,2,1,4,254,4,5,8,1, + 4,255,2,128,8,4,6,255,4,3,22,3,18,1,2,255, + 4,2,8,1,4,255,4,2,18,2,10,1,16,1,4,1, + 114,11,0,0,0,114,162,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 28,0,0,0,124,0,160,0,100,1,100,2,161,2,125,0, + 124,0,160,0,100,3,100,2,161,2,125,0,124,0,83,0, + 41,4,78,115,2,0,0,0,13,10,243,1,0,0,0,10, + 243,1,0,0,0,13,41,1,114,20,0,0,0,41,1,218, + 6,115,111,117,114,99,101,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,23,95,110,111,114,109,97,108,105, + 122,101,95,108,105,110,101,95,101,110,100,105,110,103,115,168, + 2,0,0,115,6,0,0,0,12,1,12,1,4,1,114,11, + 0,0,0,114,166,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,67,0,0,0,115,24,0, + 0,0,116,0,124,1,131,1,125,1,116,1,124,1,124,0, + 100,1,100,2,100,3,141,4,83,0,41,4,78,114,80,0, + 0,0,84,41,1,90,12,100,111,110,116,95,105,110,104,101, + 114,105,116,41,2,114,166,0,0,0,218,7,99,111,109,112, + 105,108,101,41,2,114,61,0,0,0,114,165,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,15, + 95,99,111,109,112,105,108,101,95,115,111,117,114,99,101,175, + 2,0,0,115,4,0,0,0,8,1,16,1,114,11,0,0, + 0,114,168,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,11,0,0,0,67,0,0,0,115,68,0,0,0, + 116,0,160,1,124,0,100,1,63,0,100,2,23,0,124,0, + 100,3,63,0,100,4,64,0,124,0,100,5,64,0,124,1, + 100,6,63,0,124,1,100,3,63,0,100,7,64,0,124,1, + 100,5,64,0,100,8,20,0,100,9,100,9,100,9,102,9, + 161,1,83,0,41,10,78,233,9,0,0,0,105,188,7,0, + 0,233,5,0,0,0,233,15,0,0,0,233,31,0,0,0, + 233,11,0,0,0,233,63,0,0,0,114,94,0,0,0,114, + 15,0,0,0,41,2,114,138,0,0,0,90,6,109,107,116, + 105,109,101,41,2,218,1,100,114,145,0,0,0,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,218,14,95,112, + 97,114,115,101,95,100,111,115,116,105,109,101,181,2,0,0, + 115,18,0,0,0,4,1,10,1,10,1,6,1,6,1,10, + 1,10,1,6,1,6,249,114,11,0,0,0,114,176,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,10,0, + 0,0,67,0,0,0,115,112,0,0,0,9,0,124,1,100, + 1,100,0,133,2,25,0,100,2,118,0,115,11,74,0,130, + 1,124,1,100,0,100,1,133,2,25,0,125,1,124,0,106, + 0,124,1,25,0,125,2,124,2,100,3,25,0,125,3,124, + 2,100,4,25,0,125,4,124,2,100,5,25,0,125,5,116, + 1,124,4,124,3,131,2,124,5,102,2,83,0,35,0,4, + 0,116,2,116,3,116,4,102,3,121,55,1,0,1,0,1, + 0,89,0,100,6,83,0,37,0,119,0,41,7,78,114,15, + 0,0,0,169,2,218,1,99,218,1,111,114,170,0,0,0, + 233,6,0,0,0,233,3,0,0,0,41,2,114,0,0,0, + 0,114,0,0,0,0,41,5,114,29,0,0,0,114,176,0, + 0,0,114,27,0,0,0,218,10,73,110,100,101,120,69,114, + 114,111,114,114,161,0,0,0,41,6,114,33,0,0,0,114, + 14,0,0,0,114,62,0,0,0,114,138,0,0,0,114,139, + 0,0,0,90,17,117,110,99,111,109,112,114,101,115,115,101, + 100,95,115,105,122,101,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,114,158,0,0,0,194,2,0,0,115,26, + 0,0,0,2,1,20,2,12,1,10,1,8,3,8,1,8, + 1,14,1,2,128,18,1,6,1,2,128,2,255,115,12,0, + 0,0,129,39,41,0,169,10,54,7,183,1,54,7,114,158, 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 11,0,0,0,67,0,0,0,115,68,0,0,0,116,0,160, - 1,124,0,100,1,63,0,100,2,23,0,124,0,100,3,63, - 0,100,4,64,0,124,0,100,5,64,0,124,1,100,6,63, - 0,124,1,100,3,63,0,100,7,64,0,124,1,100,5,64, - 0,100,8,20,0,100,9,100,9,100,9,102,9,161,1,83, - 0,41,10,78,233,9,0,0,0,105,188,7,0,0,233,5, - 0,0,0,233,15,0,0,0,233,31,0,0,0,233,11,0, - 0,0,233,63,0,0,0,114,94,0,0,0,114,15,0,0, - 0,41,2,114,138,0,0,0,90,6,109,107,116,105,109,101, - 41,2,218,1,100,114,145,0,0,0,32,32,114,10,0,0, - 0,218,14,95,112,97,114,115,101,95,100,111,115,116,105,109, - 101,181,2,0,0,115,18,0,0,0,4,1,10,1,10,1, - 6,1,6,1,10,1,10,1,6,1,6,249,114,11,0,0, - 0,114,176,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,10,0,0,0,67,0,0,0,115,112,0,0,0, - 9,0,124,1,100,1,100,0,133,2,25,0,100,2,118,0, - 115,11,74,0,130,1,124,1,100,0,100,1,133,2,25,0, - 125,1,124,0,106,0,124,1,25,0,125,2,124,2,100,3, - 25,0,125,3,124,2,100,4,25,0,125,4,124,2,100,5, - 25,0,125,5,116,1,124,4,124,3,131,2,124,5,102,2, - 83,0,35,0,4,0,116,2,116,3,116,4,102,3,121,55, - 1,0,1,0,1,0,89,0,100,6,83,0,37,0,119,0, - 41,7,78,114,15,0,0,0,169,2,218,1,99,218,1,111, - 114,170,0,0,0,233,6,0,0,0,233,3,0,0,0,41, - 2,114,0,0,0,0,114,0,0,0,0,41,5,114,29,0, - 0,0,114,176,0,0,0,114,27,0,0,0,218,10,73,110, - 100,101,120,69,114,114,111,114,114,161,0,0,0,41,6,114, - 33,0,0,0,114,14,0,0,0,114,62,0,0,0,114,138, - 0,0,0,114,139,0,0,0,90,17,117,110,99,111,109,112, - 114,101,115,115,101,100,95,115,105,122,101,32,32,32,32,32, - 32,114,10,0,0,0,114,158,0,0,0,194,2,0,0,115, - 26,0,0,0,2,1,20,2,12,1,10,1,8,3,8,1, - 8,1,14,1,2,128,18,1,6,1,2,128,2,255,115,12, - 0,0,0,129,39,41,0,169,10,54,7,183,1,54,7,114, - 158,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,67,0,0,0,115,82,0,0,0,124,1, - 100,1,100,0,133,2,25,0,100,2,118,0,115,10,74,0, - 130,1,124,1,100,0,100,1,133,2,25,0,125,1,9,0, - 124,0,106,0,124,1,25,0,125,2,110,11,35,0,4,0, - 116,1,121,40,1,0,1,0,1,0,89,0,100,0,83,0, - 37,0,116,2,124,0,106,3,124,2,131,2,83,0,119,0, - 41,3,78,114,15,0,0,0,114,177,0,0,0,41,4,114, - 29,0,0,0,114,27,0,0,0,114,60,0,0,0,114,30, - 0,0,0,41,3,114,33,0,0,0,114,14,0,0,0,114, - 62,0,0,0,32,32,32,114,10,0,0,0,114,156,0,0, - 0,213,2,0,0,115,20,0,0,0,20,2,12,1,2,2, - 12,1,2,128,12,1,6,1,2,128,12,2,2,253,115,12, - 0,0,0,145,5,23,0,151,7,33,7,168,1,33,7,114, - 156,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,9,0,0,0,67,0,0,0,115,14,1,0,0,116,0, - 124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,0, - 93,100,92,3,125,4,125,5,125,6,124,2,124,4,23,0, - 125,7,116,2,160,3,100,1,124,0,106,4,116,5,124,7, - 100,2,100,3,166,5,1,0,9,0,124,0,106,6,124,7, - 25,0,125,8,110,10,35,0,4,0,116,7,121,134,1,0, - 1,0,1,0,89,0,113,9,37,0,124,8,100,4,25,0, - 125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,0, - 125,11,124,5,114,89,9,0,116,9,124,0,124,9,124,7, - 124,1,124,10,131,5,125,11,110,24,35,0,4,0,116,10, - 121,133,1,0,125,12,1,0,124,12,125,3,89,0,100,0, - 125,12,126,12,110,10,100,0,125,12,126,12,119,1,37,0, - 116,11,124,9,124,10,131,2,125,11,124,11,100,0,117,0, - 114,99,113,9,124,8,100,4,25,0,125,9,124,11,124,6, - 124,9,102,3,2,0,1,0,83,0,124,3,114,124,100,5, - 124,3,155,0,157,2,125,13,116,12,124,13,124,1,100,6, - 141,2,124,3,130,2,116,12,100,7,124,1,155,2,157,2, - 124,1,100,6,141,2,130,1,119,0,119,0,41,8,78,122, - 13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,94, - 0,0,0,41,1,90,9,118,101,114,98,111,115,105,116,121, - 114,0,0,0,0,122,20,109,111,100,117,108,101,32,108,111, - 97,100,32,102,97,105,108,101,100,58,32,114,66,0,0,0, - 114,65,0,0,0,41,13,114,40,0,0,0,114,96,0,0, - 0,114,49,0,0,0,114,82,0,0,0,114,30,0,0,0, - 114,21,0,0,0,114,29,0,0,0,114,27,0,0,0,114, - 60,0,0,0,114,162,0,0,0,114,81,0,0,0,114,168, - 0,0,0,114,3,0,0,0,41,14,114,33,0,0,0,114, - 42,0,0,0,114,14,0,0,0,90,12,105,109,112,111,114, - 116,95,101,114,114,111,114,114,97,0,0,0,114,98,0,0, - 0,114,55,0,0,0,114,70,0,0,0,114,62,0,0,0, - 114,44,0,0,0,114,133,0,0,0,114,54,0,0,0,90, - 3,101,120,99,114,83,0,0,0,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,114,10,0,0,0,114,52,0,0, - 0,228,2,0,0,115,64,0,0,0,10,1,4,1,14,1, - 8,1,22,1,2,1,12,1,2,128,12,1,4,1,2,128, - 8,2,12,1,4,1,4,1,2,1,18,1,2,128,12,1, - 14,1,10,128,10,2,8,1,2,3,8,1,14,1,4,2, - 10,1,14,1,18,2,2,241,2,247,115,42,0,0,0,158, - 5,36,2,164,7,45,9,189,8,65,6,2,193,6,7,65, - 24,9,193,13,2,65,20,9,193,20,4,65,24,9,194,5, - 1,65,24,9,194,6,1,45,9,114,52,0,0,0,41,46, - 114,92,0,0,0,90,26,95,102,114,111,122,101,110,95,105, - 109,112,111,114,116,108,105,98,95,101,120,116,101,114,110,97, - 108,114,22,0,0,0,114,1,0,0,0,114,2,0,0,0, - 90,17,95,102,114,111,122,101,110,95,105,109,112,111,114,116, - 108,105,98,114,49,0,0,0,114,155,0,0,0,114,117,0, - 0,0,114,159,0,0,0,114,73,0,0,0,114,138,0,0, - 0,114,36,0,0,0,90,7,95,95,97,108,108,95,95,114, - 21,0,0,0,90,15,112,97,116,104,95,115,101,112,97,114, - 97,116,111,114,115,114,19,0,0,0,114,81,0,0,0,114, - 3,0,0,0,114,26,0,0,0,218,4,116,121,112,101,114, - 76,0,0,0,114,120,0,0,0,114,122,0,0,0,114,124, - 0,0,0,90,13,95,76,111,97,100,101,114,66,97,115,105, - 99,115,114,4,0,0,0,114,96,0,0,0,114,40,0,0, - 0,114,41,0,0,0,114,39,0,0,0,114,28,0,0,0, - 114,129,0,0,0,114,149,0,0,0,114,151,0,0,0,114, - 60,0,0,0,114,154,0,0,0,114,162,0,0,0,218,8, - 95,95,99,111,100,101,95,95,114,160,0,0,0,114,166,0, - 0,0,114,168,0,0,0,114,176,0,0,0,114,158,0,0, - 0,114,156,0,0,0,114,52,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,8,60,109,111,100,117,108,101,62,1, - 0,0,0,115,90,0,0,0,4,0,8,16,16,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,2,6,3, - 14,1,16,3,4,4,8,2,4,2,4,1,4,1,18,2, - 0,127,0,127,12,50,12,1,2,1,2,1,4,252,8,9, - 8,4,8,9,8,31,2,126,2,254,4,29,8,5,8,21, - 8,46,8,8,10,40,8,5,8,7,8,6,8,13,8,19, - 12,15,114,11,0,0,0, + 8,0,0,0,67,0,0,0,115,82,0,0,0,124,1,100, + 1,100,0,133,2,25,0,100,2,118,0,115,10,74,0,130, + 1,124,1,100,0,100,1,133,2,25,0,125,1,9,0,124, + 0,106,0,124,1,25,0,125,2,110,11,35,0,4,0,116, + 1,121,40,1,0,1,0,1,0,89,0,100,0,83,0,37, + 0,116,2,124,0,106,3,124,2,131,2,83,0,119,0,41, + 3,78,114,15,0,0,0,114,177,0,0,0,41,4,114,29, + 0,0,0,114,27,0,0,0,114,60,0,0,0,114,30,0, + 0,0,41,3,114,33,0,0,0,114,14,0,0,0,114,62, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,156,0,0,0,213,2,0,0,115,20,0,0,0, + 20,2,12,1,2,2,12,1,2,128,12,1,6,1,2,128, + 12,2,2,253,115,12,0,0,0,145,5,23,0,151,7,33, + 7,168,1,33,7,114,156,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, + 14,1,0,0,116,0,124,0,124,1,131,2,125,2,100,0, + 125,3,116,1,68,0,93,100,92,3,125,4,125,5,125,6, + 124,2,124,4,23,0,125,7,116,2,160,3,100,1,124,0, + 106,4,116,5,124,7,100,2,100,3,166,5,1,0,9,0, + 124,0,106,6,124,7,25,0,125,8,110,10,35,0,4,0, + 116,7,121,134,1,0,1,0,1,0,89,0,113,9,37,0, + 124,8,100,4,25,0,125,9,116,8,124,0,106,4,124,8, + 131,2,125,10,100,0,125,11,124,5,114,89,9,0,116,9, + 124,0,124,9,124,7,124,1,124,10,131,5,125,11,110,24, + 35,0,4,0,116,10,121,133,1,0,125,12,1,0,124,12, + 125,3,89,0,100,0,125,12,126,12,110,10,100,0,125,12, + 126,12,119,1,37,0,116,11,124,9,124,10,131,2,125,11, + 124,11,100,0,117,0,114,99,113,9,124,8,100,4,25,0, + 125,9,124,11,124,6,124,9,102,3,2,0,1,0,83,0, + 124,3,114,124,100,5,124,3,155,0,157,2,125,13,116,12, + 124,13,124,1,100,6,141,2,124,3,130,2,116,12,100,7, + 124,1,155,2,157,2,124,1,100,6,141,2,130,1,119,0, + 119,0,41,8,78,122,13,116,114,121,105,110,103,32,123,125, + 123,125,123,125,114,94,0,0,0,41,1,90,9,118,101,114, + 98,111,115,105,116,121,114,0,0,0,0,122,20,109,111,100, + 117,108,101,32,108,111,97,100,32,102,97,105,108,101,100,58, + 32,114,66,0,0,0,114,65,0,0,0,41,13,114,40,0, + 0,0,114,96,0,0,0,114,49,0,0,0,114,82,0,0, + 0,114,30,0,0,0,114,21,0,0,0,114,29,0,0,0, + 114,27,0,0,0,114,60,0,0,0,114,162,0,0,0,114, + 81,0,0,0,114,168,0,0,0,114,3,0,0,0,41,14, + 114,33,0,0,0,114,42,0,0,0,114,14,0,0,0,90, + 12,105,109,112,111,114,116,95,101,114,114,111,114,114,97,0, + 0,0,114,98,0,0,0,114,55,0,0,0,114,70,0,0, + 0,114,62,0,0,0,114,44,0,0,0,114,133,0,0,0, + 114,54,0,0,0,90,3,101,120,99,114,83,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,52, + 0,0,0,228,2,0,0,115,64,0,0,0,10,1,4,1, + 14,1,8,1,22,1,2,1,12,1,2,128,12,1,4,1, + 2,128,8,2,12,1,4,1,4,1,2,1,18,1,2,128, + 12,1,14,1,10,128,10,2,8,1,2,3,8,1,14,1, + 4,2,10,1,14,1,18,2,2,241,2,247,115,42,0,0, + 0,158,5,36,2,164,7,45,9,189,8,65,6,2,193,6, + 7,65,24,9,193,13,2,65,20,9,193,20,4,65,24,9, + 194,5,1,65,24,9,194,6,1,45,9,114,52,0,0,0, + 41,46,114,92,0,0,0,90,26,95,102,114,111,122,101,110, + 95,105,109,112,111,114,116,108,105,98,95,101,120,116,101,114, + 110,97,108,114,22,0,0,0,114,1,0,0,0,114,2,0, + 0,0,90,17,95,102,114,111,122,101,110,95,105,109,112,111, + 114,116,108,105,98,114,49,0,0,0,114,155,0,0,0,114, + 117,0,0,0,114,159,0,0,0,114,73,0,0,0,114,138, + 0,0,0,114,36,0,0,0,90,7,95,95,97,108,108,95, + 95,114,21,0,0,0,90,15,112,97,116,104,95,115,101,112, + 97,114,97,116,111,114,115,114,19,0,0,0,114,81,0,0, + 0,114,3,0,0,0,114,26,0,0,0,218,4,116,121,112, + 101,114,76,0,0,0,114,120,0,0,0,114,122,0,0,0, + 114,124,0,0,0,90,13,95,76,111,97,100,101,114,66,97, + 115,105,99,115,114,4,0,0,0,114,96,0,0,0,114,40, + 0,0,0,114,41,0,0,0,114,39,0,0,0,114,28,0, + 0,0,114,129,0,0,0,114,149,0,0,0,114,151,0,0, + 0,114,60,0,0,0,114,154,0,0,0,114,162,0,0,0, + 218,8,95,95,99,111,100,101,95,95,114,160,0,0,0,114, + 166,0,0,0,114,168,0,0,0,114,176,0,0,0,114,158, + 0,0,0,114,156,0,0,0,114,52,0,0,0,114,9,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,218,8,60,109,111,100,117,108,101,62,1,0,0,0,115, + 90,0,0,0,4,0,8,16,16,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,2,6,3,14,1,16,3, + 4,4,8,2,4,2,4,1,4,1,18,2,0,127,0,127, + 12,50,12,1,2,1,2,1,4,252,8,9,8,4,8,9, + 8,31,2,126,2,254,4,29,8,5,8,21,8,46,8,8, + 10,40,8,5,8,7,8,6,8,13,8,19,12,15,114,11, + 0,0,0, }; diff --git a/Python/marshal.c b/Python/marshal.c index 80517b3d65d41a..52bf2a51aaaec0 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -518,8 +518,9 @@ w_complex_object(PyObject *v, char flag, WFILE *p) w_object(co->co_code, p); w_object(co->co_consts, p); w_object(co->co_names, p); - w_object(co->co_localsplusnames, p); - w_string(co->co_localspluskinds, co->co_nlocalsplus, p); + w_object(co->co_varnames, p); + w_object(co->co_freevars, p); + w_object(co->co_cellvars, p); w_object(co->co_filename, p); w_object(co->co_name, p); w_long(co->co_firstlineno, p); @@ -1305,8 +1306,9 @@ r_object(RFILE *p) PyObject *code = NULL; PyObject *consts = NULL; PyObject *names = NULL; - PyObject *localsplusnames = NULL; - _PyLocalsPlusKinds localspluskinds = NULL; + PyObject *varnames = NULL; + PyObject *freevars = NULL; + PyObject *cellvars = NULL; PyObject *filename = NULL; PyObject *name = NULL; int firstlineno; @@ -1345,22 +1347,16 @@ r_object(RFILE *p) names = r_object(p); if (names == NULL) goto code_error; - localsplusnames = r_object(p); - if (localsplusnames == NULL) + varnames = r_object(p); + if (varnames == NULL) + goto code_error; + Py_ssize_t nlocals = PyTuple_GET_SIZE(varnames); + freevars = r_object(p); + if (freevars == NULL) + goto code_error; + cellvars = r_object(p); + if (cellvars == NULL) goto code_error; - - assert(PyTuple_GET_SIZE(localsplusnames) < INT_MAX); - int nlocalsplus = (int)PyTuple_GET_SIZE(localsplusnames); - if (nlocalsplus) { - if (_PyCode_InitLocalsPlusKinds(nlocalsplus, - &localspluskinds) < 0) { - goto code_error; - } - for (int i = 0; i < nlocalsplus; i++) { - localspluskinds[i] = r_byte(p); - } - } - filename = r_object(p); if (filename == NULL) goto code_error; @@ -1379,8 +1375,7 @@ r_object(RFILE *p) if (PySys_Audit("code.__new__", "OOOiiiiii", code, filename, name, argcount, posonlyargcount, - kwonlyargcount, nlocalsplus, stacksize, - flags) < 0) { + kwonlyargcount, nlocals, stacksize, flags) < 0) { goto code_error; } @@ -1396,8 +1391,9 @@ r_object(RFILE *p) .consts = consts, .names = names, - .localsplusnames = localsplusnames, - .localspluskinds = localspluskinds, + .varnames = varnames, + .cellvars = cellvars, + .freevars = freevars, .argcount = argcount, .posonlyargcount = posonlyargcount, @@ -1407,26 +1403,22 @@ r_object(RFILE *p) .exceptiontable = exceptiontable, }; - if (_PyCode_Validate(&con) < 0) { goto code_error; } - v = (PyObject *)_PyCode_New(&con); if (v == NULL) { goto code_error; } - - localspluskinds = NULL; // This keeps it from getting freed below. - v = r_ref_insert(v, idx, flag, p); code_error: Py_XDECREF(code); Py_XDECREF(consts); Py_XDECREF(names); - Py_XDECREF(localsplusnames); - _PyCode_ClearLocalsPlusKinds(localspluskinds); + Py_XDECREF(varnames); + Py_XDECREF(freevars); + Py_XDECREF(cellvars); Py_XDECREF(filename); Py_XDECREF(name); Py_XDECREF(linetable); diff --git a/Python/suggestions.c b/Python/suggestions.c index 43c0ef09cb4bbc..2e76551f363ed4 100644 --- a/Python/suggestions.c +++ b/Python/suggestions.c @@ -3,7 +3,6 @@ #include "pycore_frame.h" #include "pycore_pyerrors.h" -#include "pycore_code.h" // _PyCode_GetVarnames() #define MAX_CANDIDATE_ITEMS 750 #define MAX_STRING_SIZE 40 @@ -211,12 +210,8 @@ offer_suggestions_for_name_error(PyNameErrorObject *exc) PyFrameObject *frame = traceback->tb_frame; assert(frame != NULL); PyCodeObject *code = PyFrame_GetCode(frame); - assert(code != NULL && code->co_localsplusnames != NULL); - PyObject *varnames = _PyCode_GetVarnames(code); - if (varnames == NULL) { - return NULL; - } - PyObject *dir = PySequence_List(varnames); + assert(code != NULL && code->co_varnames != NULL); + PyObject *dir = PySequence_List(code->co_varnames); Py_DECREF(code); if (dir == NULL) { return NULL; diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index 756b52c3c57a61..c1d2cd8ced68c4 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -871,8 +871,7 @@ def __init__(self, gdbval, cast_to=None): self.f_lineno = int_from_int(self.field('f_lineno')) self.f_lasti = int_from_int(self.field('f_lasti')) self.co_nlocals = int_from_int(self.co.field('co_nlocals')) - pnames = self.co.field('co_localsplusnames') - self.co_localsplusnames = PyTupleObjectPtr.from_pyobject_ptr(pnames) + self.co_varnames = PyTupleObjectPtr.from_pyobject_ptr(self.co.field('co_varnames')) def iter_locals(self): ''' @@ -885,10 +884,9 @@ def iter_locals(self): f_localsplus = self.field('f_localsptr') for i in safe_range(self.co_nlocals): pyop_value = PyObjectPtr.from_pyobject_ptr(f_localsplus[i]) - if pyop_value.is_null(): - continue - pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_localsplusnames[i]) - yield (pyop_name, pyop_value) + if not pyop_value.is_null(): + pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_varnames[i]) + yield (pyop_name, pyop_value) def _f_globals(self): f_localsplus = self.field('f_localsptr') From webhook-mailer at python.org Fri Jun 4 13:36:17 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Jun 2021 17:36:17 -0000 Subject: [Python-checkins] bpo-44041: Add test for sqlite3 column count (GH-25907) Message-ID: https://github.com/python/cpython/commit/8363ac8607eca7398e568e1336154e1262a995a0 commit: 8363ac8607eca7398e568e1336154e1262a995a0 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-04T18:36:08+01:00 summary: bpo-44041: Add test for sqlite3 column count (GH-25907) files: M Lib/sqlite3/test/dbapi.py diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 77fafe093002eb..4bda6aa393e3ff 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -555,6 +555,17 @@ def test_last_row_id_insert_o_r(self): ] self.assertEqual(results, expected) + def test_column_count(self): + # Check that column count is updated correctly for cached statements + select = "select * from test" + res = self.cu.execute(select) + old_count = len(res.description) + # Add a new column and execute the cached select query again + self.cu.execute("alter table test add newcol") + res = self.cu.execute(select) + new_count = len(res.description) + self.assertEqual(new_count - old_count, 1) + class ThreadTests(unittest.TestCase): def setUp(self): From webhook-mailer at python.org Fri Jun 4 14:34:08 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Jun 2021 18:34:08 -0000 Subject: [Python-checkins] bpo-43853: Handle sqlite3_value_text() errors (GH-25422) Message-ID: https://github.com/python/cpython/commit/006fd869e4798b68e266f5de89c83ddb531a756b commit: 006fd869e4798b68e266f5de89c83ddb531a756b branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-04T19:34:00+01:00 summary: bpo-43853: Handle sqlite3_value_text() errors (GH-25422) files: A Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst M Lib/sqlite3/test/userfunctions.py M Modules/_sqlite/connection.c diff --git a/Lib/sqlite3/test/userfunctions.py b/Lib/sqlite3/test/userfunctions.py index 148d9f596a91c8..6f57d1911b24d8 100644 --- a/Lib/sqlite3/test/userfunctions.py +++ b/Lib/sqlite3/test/userfunctions.py @@ -236,9 +236,11 @@ def test_func_exception(self): def test_param_string(self): cur = self.con.cursor() - cur.execute("select isstring(?)", ("foo",)) - val = cur.fetchone()[0] - self.assertEqual(val, 1) + for text in ["foo", str()]: + with self.subTest(text=text): + cur.execute("select isstring(?)", (text,)) + val = cur.fetchone()[0] + self.assertEqual(val, 1) def test_param_int(self): cur = self.con.cursor() @@ -391,9 +393,9 @@ def test_aggr_exception_in_finalize(self): def test_aggr_check_param_str(self): cur = self.con.cursor() - cur.execute("select checkType('str', ?)", ("foo",)) + cur.execute("select checkTypes('str', ?, ?)", ("foo", str())) val = cur.fetchone()[0] - self.assertEqual(val, 1) + self.assertEqual(val, 2) def test_aggr_check_param_int(self): cur = self.con.cursor() diff --git a/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst b/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst new file mode 100644 index 00000000000000..c5c3a0ae83c7f4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst @@ -0,0 +1,3 @@ +Improve :mod:`sqlite3` error handling: ``sqlite3_value_text()`` errors that +set ``SQLITE_NOMEM`` now raise :exc:`MemoryError`. Patch by Erlend E. +Aasland. diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 47ae9aaf4ae683..e310dc3b43c5b9 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -550,7 +550,6 @@ _pysqlite_build_py_params(sqlite3_context *context, int argc, int i; sqlite3_value* cur_value; PyObject* cur_py_value; - const char* val_str; args = PyTuple_New(argc); if (!args) { @@ -566,15 +565,19 @@ _pysqlite_build_py_params(sqlite3_context *context, int argc, case SQLITE_FLOAT: cur_py_value = PyFloat_FromDouble(sqlite3_value_double(cur_value)); break; - case SQLITE_TEXT: - val_str = (const char*)sqlite3_value_text(cur_value); - cur_py_value = PyUnicode_FromString(val_str); - /* TODO: have a way to show errors here */ - if (!cur_py_value) { - PyErr_Clear(); - cur_py_value = Py_NewRef(Py_None); + case SQLITE_TEXT: { + sqlite3 *db = sqlite3_context_db_handle(context); + const char *text = (const char *)sqlite3_value_text(cur_value); + + if (text == NULL && sqlite3_errcode(db) == SQLITE_NOMEM) { + PyErr_NoMemory(); + goto error; } + + Py_ssize_t size = sqlite3_value_bytes(cur_value); + cur_py_value = PyUnicode_FromStringAndSize(text, size); break; + } case SQLITE_BLOB: { sqlite3 *db = sqlite3_context_db_handle(context); const void *blob = sqlite3_value_blob(cur_value); From webhook-mailer at python.org Fri Jun 4 14:38:10 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Jun 2021 18:38:10 -0000 Subject: [Python-checkins] bpo-44048: Fix two hashlib test cases under FIPS mode (GH-26470) (GH-26531) Message-ID: https://github.com/python/cpython/commit/3f4d801bf907a5fcab50f3b64475d1410b90a80f commit: 3f4d801bf907a5fcab50f3b64475d1410b90a80f branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-04T19:38:02+01:00 summary: bpo-44048: Fix two hashlib test cases under FIPS mode (GH-26470) (GH-26531) test_disallow_instantiation and test_readonly_types try to test all the available digests, however under FIPS mode, while the algorithms are available, trying to use them will fail with a ValueError. (cherry picked from commit a46c220edc5cf716d0b71eb80ac29ecdb4ebb430) Co-authored-by: stratakis Co-authored-by: stratakis files: M Lib/test/test_hashlib.py diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index ad2ed69e24b2c4..76754b6b8e13da 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -909,7 +909,11 @@ def test_disallow_instantiation(self): continue # all other types have DISALLOW_INSTANTIATION for constructor in constructors: - h = constructor() + # In FIPS mode some algorithms are not available raising ValueError + try: + h = constructor() + except ValueError: + continue with self.subTest(constructor=constructor): hash_type = type(h) self.assertRaises(TypeError, hash_type) @@ -930,7 +934,11 @@ def test_readonly_types(self): for algorithm, constructors in self.constructors_to_test.items(): # all other types have DISALLOW_INSTANTIATION for constructor in constructors: - hash_type = type(constructor()) + # In FIPS mode some algorithms are not available raising ValueError + try: + hash_type = type(constructor()) + except ValueError: + continue with self.subTest(hash_type=hash_type): with self.assertRaisesRegex(TypeError, "immutable type"): hash_type.value = False From webhook-mailer at python.org Fri Jun 4 14:54:58 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 04 Jun 2021 18:54:58 -0000 Subject: [Python-checkins] bpo-43853: Handle sqlite3_value_text() errors (GH-25422) Message-ID: https://github.com/python/cpython/commit/067d6d46575b5cf30bbf7c812defee1517106a34 commit: 067d6d46575b5cf30bbf7c812defee1517106a34 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-04T11:54:39-07:00 summary: bpo-43853: Handle sqlite3_value_text() errors (GH-25422) (cherry picked from commit 006fd869e4798b68e266f5de89c83ddb531a756b) Co-authored-by: Erlend Egeberg Aasland files: A Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst M Lib/sqlite3/test/userfunctions.py M Modules/_sqlite/connection.c diff --git a/Lib/sqlite3/test/userfunctions.py b/Lib/sqlite3/test/userfunctions.py index 148d9f596a91c8..6f57d1911b24d8 100644 --- a/Lib/sqlite3/test/userfunctions.py +++ b/Lib/sqlite3/test/userfunctions.py @@ -236,9 +236,11 @@ def test_func_exception(self): def test_param_string(self): cur = self.con.cursor() - cur.execute("select isstring(?)", ("foo",)) - val = cur.fetchone()[0] - self.assertEqual(val, 1) + for text in ["foo", str()]: + with self.subTest(text=text): + cur.execute("select isstring(?)", (text,)) + val = cur.fetchone()[0] + self.assertEqual(val, 1) def test_param_int(self): cur = self.con.cursor() @@ -391,9 +393,9 @@ def test_aggr_exception_in_finalize(self): def test_aggr_check_param_str(self): cur = self.con.cursor() - cur.execute("select checkType('str', ?)", ("foo",)) + cur.execute("select checkTypes('str', ?, ?)", ("foo", str())) val = cur.fetchone()[0] - self.assertEqual(val, 1) + self.assertEqual(val, 2) def test_aggr_check_param_int(self): cur = self.con.cursor() diff --git a/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst b/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst new file mode 100644 index 00000000000000..c5c3a0ae83c7f4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst @@ -0,0 +1,3 @@ +Improve :mod:`sqlite3` error handling: ``sqlite3_value_text()`` errors that +set ``SQLITE_NOMEM`` now raise :exc:`MemoryError`. Patch by Erlend E. +Aasland. diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index e124b17782dfe5..fccffabc4b2a0b 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -576,7 +576,6 @@ _pysqlite_build_py_params(sqlite3_context *context, int argc, int i; sqlite3_value* cur_value; PyObject* cur_py_value; - const char* val_str; args = PyTuple_New(argc); if (!args) { @@ -592,15 +591,19 @@ _pysqlite_build_py_params(sqlite3_context *context, int argc, case SQLITE_FLOAT: cur_py_value = PyFloat_FromDouble(sqlite3_value_double(cur_value)); break; - case SQLITE_TEXT: - val_str = (const char*)sqlite3_value_text(cur_value); - cur_py_value = PyUnicode_FromString(val_str); - /* TODO: have a way to show errors here */ - if (!cur_py_value) { - PyErr_Clear(); - cur_py_value = Py_NewRef(Py_None); + case SQLITE_TEXT: { + sqlite3 *db = sqlite3_context_db_handle(context); + const char *text = (const char *)sqlite3_value_text(cur_value); + + if (text == NULL && sqlite3_errcode(db) == SQLITE_NOMEM) { + PyErr_NoMemory(); + goto error; } + + Py_ssize_t size = sqlite3_value_bytes(cur_value); + cur_py_value = PyUnicode_FromStringAndSize(text, size); break; + } case SQLITE_BLOB: { sqlite3 *db = sqlite3_context_db_handle(context); const void *blob = sqlite3_value_blob(cur_value); From webhook-mailer at python.org Fri Jun 4 16:42:30 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Jun 2021 20:42:30 -0000 Subject: [Python-checkins] bpo-44315: Remove unused connection argument from pysqlite_step() (GH-26535) Message-ID: https://github.com/python/cpython/commit/7459208de194db6222d7e3aa301c2b831dbe566d commit: 7459208de194db6222d7e3aa301c2b831dbe566d branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-04T21:42:20+01:00 summary: bpo-44315: Remove unused connection argument from pysqlite_step() (GH-26535) files: M Modules/_sqlite/connection.c M Modules/_sqlite/cursor.c M Modules/_sqlite/util.c M Modules/_sqlite/util.h diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index e310dc3b43c5b9..c2f3bc0f201250 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -432,7 +432,7 @@ pysqlite_connection_commit_impl(pysqlite_Connection *self) goto error; } - rc = pysqlite_step(statement, self); + rc = pysqlite_step(statement); if (rc != SQLITE_DONE) { _pysqlite_seterror(self->db); } @@ -482,7 +482,7 @@ pysqlite_connection_rollback_impl(pysqlite_Connection *self) goto error; } - rc = pysqlite_step(statement, self); + rc = pysqlite_step(statement); if (rc != SQLITE_DONE) { _pysqlite_seterror(self->db); } diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 7f33b3deb30f7b..c2e8de5b6c0f00 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -568,7 +568,7 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation goto error; } - rc = pysqlite_step(self->statement->st, self->connection); + rc = pysqlite_step(self->statement->st); if (rc != SQLITE_DONE && rc != SQLITE_ROW) { if (PyErr_Occurred()) { /* there was an error that occurred in a user-defined callback */ @@ -773,7 +773,7 @@ pysqlite_cursor_executescript(pysqlite_Cursor *self, PyObject *script_obj) /* execute statement, and ignore results of SELECT statements */ do { - rc = pysqlite_step(statement, self->connection); + rc = pysqlite_step(statement); if (PyErr_Occurred()) { (void)sqlite3_finalize(statement); goto error; @@ -847,7 +847,7 @@ pysqlite_cursor_iternext(pysqlite_Cursor *self) } if (self->statement) { - rc = pysqlite_step(self->statement->st, self->connection); + rc = pysqlite_step(self->statement->st); if (PyErr_Occurred()) { (void)pysqlite_statement_reset(self->statement); Py_DECREF(next_row); diff --git a/Modules/_sqlite/util.c b/Modules/_sqlite/util.c index 3676935b9e9beb..2de819e9e85293 100644 --- a/Modules/_sqlite/util.c +++ b/Modules/_sqlite/util.c @@ -24,7 +24,8 @@ #include "module.h" #include "connection.h" -int pysqlite_step(sqlite3_stmt* statement, pysqlite_Connection* connection) +int +pysqlite_step(sqlite3_stmt *statement) { int rc; diff --git a/Modules/_sqlite/util.h b/Modules/_sqlite/util.h index 82e58139d02f9c..f308f03f71f440 100644 --- a/Modules/_sqlite/util.h +++ b/Modules/_sqlite/util.h @@ -29,7 +29,7 @@ #include "sqlite3.h" #include "connection.h" -int pysqlite_step(sqlite3_stmt* statement, pysqlite_Connection* connection); +int pysqlite_step(sqlite3_stmt *statement); /** * Checks the SQLite error code and sets the appropriate DB-API exception. From webhook-mailer at python.org Fri Jun 4 17:41:27 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Fri, 04 Jun 2021 21:41:27 -0000 Subject: [Python-checkins] Align comment for better readability. (GH-26192) Message-ID: https://github.com/python/cpython/commit/2780df478129c4f1042df2868b6adf2bf507cd6e commit: 2780df478129c4f1042df2868b6adf2bf507cd6e branch: main author: Kazantcev Andrey <45011689+heckad at users.noreply.github.com> committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-04T18:41:23-03:00 summary: Align comment for better readability. (GH-26192) files: M Modules/_ctypes/_ctypes.c diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 5f8a723f6373ae..b31e912933450a 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -24,16 +24,16 @@ Name methods, members, getsets ============================================================================== PyCStructType_Type __new__(), from_address(), __mul__(), from_param() -UnionType_Type __new__(), from_address(), __mul__(), from_param() -PyCPointerType_Type __new__(), from_address(), __mul__(), from_param(), set_type() +UnionType_Type __new__(), from_address(), __mul__(), from_param() +PyCPointerType_Type __new__(), from_address(), __mul__(), from_param(), set_type() PyCArrayType_Type __new__(), from_address(), __mul__(), from_param() PyCSimpleType_Type __new__(), from_address(), __mul__(), from_param() PyCData_Type - Struct_Type __new__(), __init__() + Struct_Type __new__(), __init__() PyCPointer_Type __new__(), __init__(), _as_parameter_, contents - PyCArray_Type __new__(), __init__(), _as_parameter_, __get/setitem__(), __len__() - Simple_Type __new__(), __init__(), _as_parameter_ + PyCArray_Type __new__(), __init__(), _as_parameter_, __get/setitem__(), __len__() + Simple_Type __new__(), __init__(), _as_parameter_ PyCField_Type PyCStgDict_Type From webhook-mailer at python.org Fri Jun 4 18:08:05 2021 From: webhook-mailer at python.org (iritkatriel) Date: Fri, 04 Jun 2021 22:08:05 -0000 Subject: [Python-checkins] bpo-44279: revert 'exceptions are raised' back to 'exceptions occur' (GH-26492) Message-ID: https://github.com/python/cpython/commit/dda9ecbfece28aad7b8ba7eaf7951dd9816f78b1 commit: dda9ecbfece28aad7b8ba7eaf7951dd9816f78b1 branch: main author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-04T23:07:57+01:00 summary: bpo-44279: revert 'exceptions are raised' back to 'exceptions occur' (GH-26492) files: M Doc/library/contextlib.rst diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index 98df29277e3b7..c9065be32e638 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -267,7 +267,7 @@ Functions and classes provided: .. function:: suppress(*exceptions) Return a context manager that suppresses any of the specified exceptions - if they are raised in the body of a :keyword:`!with` statement and then + if they occur in the body of a :keyword:`!with` statement and then resumes execution with the first statement following the end of the :keyword:`!with` statement. From webhook-mailer at python.org Fri Jun 4 18:09:49 2021 From: webhook-mailer at python.org (iritkatriel) Date: Fri, 04 Jun 2021 22:09:49 -0000 Subject: [Python-checkins] bpo-44279: revert 'exceptions are raised' back to 'exceptions occur' (GH-26492) (GH-26539) Message-ID: https://github.com/python/cpython/commit/ea298e1e33eb03b2b4ea2f4556e59b11e3bf240f commit: ea298e1e33eb03b2b4ea2f4556e59b11e3bf240f branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-04T23:09:45+01:00 summary: bpo-44279: revert 'exceptions are raised' back to 'exceptions occur' (GH-26492) (GH-26539) (cherry picked from commit dda9ecbfece28aad7b8ba7eaf7951dd9816f78b1) Co-authored-by: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> files: M Doc/library/contextlib.rst diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index cfc37a63aedbf3..f87ee210550cc6 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -191,7 +191,7 @@ Functions and classes provided: .. function:: suppress(*exceptions) Return a context manager that suppresses any of the specified exceptions - if they are raised in the body of a :keyword:`!with` statement and then + if they occur in the body of a :keyword:`!with` statement and then resumes execution with the first statement following the end of the :keyword:`!with` statement. From webhook-mailer at python.org Fri Jun 4 18:10:12 2021 From: webhook-mailer at python.org (iritkatriel) Date: Fri, 04 Jun 2021 22:10:12 -0000 Subject: [Python-checkins] bpo-44279: revert 'exceptions are raised' back to 'exceptions occur' (GH-26492) (GH-26538) Message-ID: https://github.com/python/cpython/commit/1065ba66b535b786d6dc5f7d912c6486d9a834ae commit: 1065ba66b535b786d6dc5f7d912c6486d9a834ae branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-04T23:10:07+01:00 summary: bpo-44279: revert 'exceptions are raised' back to 'exceptions occur' (GH-26492) (GH-26538) (cherry picked from commit dda9ecbfece28aad7b8ba7eaf7951dd9816f78b1) Co-authored-by: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> files: M Doc/library/contextlib.rst diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index 98df29277e3b7d..c9065be32e6386 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -267,7 +267,7 @@ Functions and classes provided: .. function:: suppress(*exceptions) Return a context manager that suppresses any of the specified exceptions - if they are raised in the body of a :keyword:`!with` statement and then + if they occur in the body of a :keyword:`!with` statement and then resumes execution with the first statement following the end of the :keyword:`!with` statement. From webhook-mailer at python.org Fri Jun 4 19:28:41 2021 From: webhook-mailer at python.org (rhettinger) Date: Fri, 04 Jun 2021 23:28:41 -0000 Subject: [Python-checkins] Update nonstandard variable names (GH-26540) Message-ID: https://github.com/python/cpython/commit/3668e118f77c4e53167b75352c53674e758e1877 commit: 3668e118f77c4e53167b75352c53674e758e1877 branch: main author: Raymond Hettinger committer: rhettinger date: 2021-06-04T16:28:31-07:00 summary: Update nonstandard variable names (GH-26540) files: M Lib/statistics.py diff --git a/Lib/statistics.py b/Lib/statistics.py index 26009b0cbe430..1314095332a15 100644 --- a/Lib/statistics.py +++ b/Lib/statistics.py @@ -924,10 +924,10 @@ def correlation(x, y, /): xbar = fsum(x) / n ybar = fsum(y) / n sxy = fsum((xi - xbar) * (yi - ybar) for xi, yi in zip(x, y)) - s2x = fsum((xi - xbar) ** 2.0 for xi in x) - s2y = fsum((yi - ybar) ** 2.0 for yi in y) + sxx = fsum((xi - xbar) ** 2.0 for xi in x) + syy = fsum((yi - ybar) ** 2.0 for yi in y) try: - return sxy / sqrt(s2x * s2y) + return sxy / sqrt(sxx * syy) except ZeroDivisionError: raise StatisticsError('at least one of the inputs is constant') @@ -968,9 +968,9 @@ def linear_regression(x, y, /): xbar = fsum(x) / n ybar = fsum(y) / n sxy = fsum((xi - xbar) * (yi - ybar) for xi, yi in zip(x, y)) - s2x = fsum((xi - xbar) ** 2.0 for xi in x) + sxx = fsum((xi - xbar) ** 2.0 for xi in x) try: - slope = sxy / s2x # equivalent to: covariance(x, y) / variance(x) + slope = sxy / sxx # equivalent to: covariance(x, y) / variance(x) except ZeroDivisionError: raise StatisticsError('x is constant') intercept = ybar - slope * xbar From webhook-mailer at python.org Fri Jun 4 19:33:28 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Jun 2021 23:33:28 -0000 Subject: [Python-checkins] bpo-38323: Skip SubprocessMultiLoopWatcherTest as they can hang the test suite (GH-26542) Message-ID: https://github.com/python/cpython/commit/f171877ebe276749f31386baed5841ce37cbee2e commit: f171877ebe276749f31386baed5841ce37cbee2e branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-05T00:33:20+01:00 summary: bpo-38323: Skip SubprocessMultiLoopWatcherTest as they can hang the test suite (GH-26542) files: M Lib/test/test_asyncio/test_subprocess.py diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 225a3babc844b8..3cf88188ecf3b1 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -665,6 +665,8 @@ class SubprocessThreadedWatcherTests(SubprocessWatcherMixin, Watcher = unix_events.ThreadedChildWatcher + @unittest.skip("bpo-38323: MultiLoopChildWatcher has a race condition \ + and these tests can hang the test suite") class SubprocessMultiLoopWatcherTests(SubprocessWatcherMixin, test_utils.TestCase): From webhook-mailer at python.org Fri Jun 4 20:00:03 2021 From: webhook-mailer at python.org (miss-islington) Date: Sat, 05 Jun 2021 00:00:03 -0000 Subject: [Python-checkins] bpo-38323: Skip SubprocessMultiLoopWatcherTest as they can hang the test suite (GH-26542) Message-ID: https://github.com/python/cpython/commit/b3c50b29e14d8f089aee3e0980298bfc74cb3ba7 commit: b3c50b29e14d8f089aee3e0980298bfc74cb3ba7 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-04T16:59:55-07:00 summary: bpo-38323: Skip SubprocessMultiLoopWatcherTest as they can hang the test suite (GH-26542) (cherry picked from commit f171877ebe276749f31386baed5841ce37cbee2e) Co-authored-by: Pablo Galindo files: M Lib/test/test_asyncio/test_subprocess.py diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 6657a88e657c25..693cc412904307 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -684,6 +684,8 @@ class SubprocessThreadedWatcherTests(SubprocessWatcherMixin, Watcher = unix_events.ThreadedChildWatcher + @unittest.skip("bpo-38323: MultiLoopChildWatcher has a race condition \ + and these tests can hang the test suite") class SubprocessMultiLoopWatcherTests(SubprocessWatcherMixin, test_utils.TestCase): From webhook-mailer at python.org Fri Jun 4 20:06:03 2021 From: webhook-mailer at python.org (pablogsal) Date: Sat, 05 Jun 2021 00:06:03 -0000 Subject: [Python-checkins] bpo-38323: Skip SubprocessMultiLoopWatcherTest as they can hang the test suite (GH-26542) (GH-26544) Message-ID: https://github.com/python/cpython/commit/0d441d2e70e365b5dc517d8ff24a20b97bc4536a commit: 0d441d2e70e365b5dc517d8ff24a20b97bc4536a branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-05T01:05:54+01:00 summary: bpo-38323: Skip SubprocessMultiLoopWatcherTest as they can hang the test suite (GH-26542) (GH-26544) (cherry picked from commit f171877ebe276749f31386baed5841ce37cbee2e) Co-authored-by: Pablo Galindo Co-authored-by: Pablo Galindo files: M Lib/test/test_asyncio/test_subprocess.py diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 225a3babc844b8..3cf88188ecf3b1 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -665,6 +665,8 @@ class SubprocessThreadedWatcherTests(SubprocessWatcherMixin, Watcher = unix_events.ThreadedChildWatcher + @unittest.skip("bpo-38323: MultiLoopChildWatcher has a race condition \ + and these tests can hang the test suite") class SubprocessMultiLoopWatcherTests(SubprocessWatcherMixin, test_utils.TestCase): From webhook-mailer at python.org Fri Jun 4 21:49:33 2021 From: webhook-mailer at python.org (rhettinger) Date: Sat, 05 Jun 2021 01:49:33 -0000 Subject: [Python-checkins] Improve speed and accuracy for correlation() (GH-26135) (GH-26151) Message-ID: https://github.com/python/cpython/commit/5442cfa67b6ddf41daaf93b322942da3d20d2402 commit: 5442cfa67b6ddf41daaf93b322942da3d20d2402 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-06-04T18:49:29-07:00 summary: Improve speed and accuracy for correlation() (GH-26135) (GH-26151) files: M Lib/statistics.py diff --git a/Lib/statistics.py b/Lib/statistics.py index b1b613171d2c8..ceb8af81b0d3d 100644 --- a/Lib/statistics.py +++ b/Lib/statistics.py @@ -107,9 +107,12 @@ __all__ = [ 'NormalDist', 'StatisticsError', + 'correlation', + 'covariance', 'fmean', 'geometric_mean', 'harmonic_mean', + 'linear_regression', 'mean', 'median', 'median_grouped', @@ -122,9 +125,6 @@ 'quantiles', 'stdev', 'variance', - 'correlation', - 'covariance', - 'linear_regression', ] import math @@ -882,10 +882,10 @@ def covariance(x, y, /): raise StatisticsError('covariance requires that both inputs have same number of data points') if n < 2: raise StatisticsError('covariance requires at least two data points') - xbar = fmean(x) - ybar = fmean(y) - total = fsum((xi - xbar) * (yi - ybar) for xi, yi in zip(x, y)) - return total / (n - 1) + xbar = fsum(x) / n + ybar = fsum(y) / n + sxy = fsum((xi - xbar) * (yi - ybar) for xi, yi in zip(x, y)) + return sxy / (n - 1) def correlation(x, y, /): @@ -910,11 +910,13 @@ def correlation(x, y, /): raise StatisticsError('correlation requires that both inputs have same number of data points') if n < 2: raise StatisticsError('correlation requires at least two data points') - cov = covariance(x, y) - stdx = stdev(x) - stdy = stdev(y) + xbar = fsum(x) / n + ybar = fsum(y) / n + sxy = fsum((xi - xbar) * (yi - ybar) for xi, yi in zip(x, y)) + s2x = fsum((xi - xbar) ** 2.0 for xi in x) + s2y = fsum((yi - ybar) ** 2.0 for yi in y) try: - return cov / (stdx * stdy) + return sxy / sqrt(s2x * s2y) except ZeroDivisionError: raise StatisticsError('at least one of the inputs is constant') @@ -957,7 +959,7 @@ def linear_regression(x, y, /): sxy = fsum((xi - xbar) * (yi - ybar) for xi, yi in zip(x, y)) s2x = fsum((xi - xbar) ** 2.0 for xi in x) try: - slope = sxy / s2x + slope = sxy / s2x # equivalent to: covariance(x, y) / variance(x) except ZeroDivisionError: raise StatisticsError('x is constant') intercept = ybar - slope * xbar From webhook-mailer at python.org Fri Jun 4 22:38:42 2021 From: webhook-mailer at python.org (rhettinger) Date: Sat, 05 Jun 2021 02:38:42 -0000 Subject: [Python-checkins] Update nonstandard variable names (GH-26540) (GH-26546) Message-ID: https://github.com/python/cpython/commit/4642caf232a3f01468e76f19cd0c88175e10ee28 commit: 4642caf232a3f01468e76f19cd0c88175e10ee28 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-06-04T19:38:30-07:00 summary: Update nonstandard variable names (GH-26540) (GH-26546) files: M Lib/statistics.py diff --git a/Lib/statistics.py b/Lib/statistics.py index ceb8af81b0d3d..268cc71a0952b 100644 --- a/Lib/statistics.py +++ b/Lib/statistics.py @@ -913,10 +913,10 @@ def correlation(x, y, /): xbar = fsum(x) / n ybar = fsum(y) / n sxy = fsum((xi - xbar) * (yi - ybar) for xi, yi in zip(x, y)) - s2x = fsum((xi - xbar) ** 2.0 for xi in x) - s2y = fsum((yi - ybar) ** 2.0 for yi in y) + sxx = fsum((xi - xbar) ** 2.0 for xi in x) + syy = fsum((yi - ybar) ** 2.0 for yi in y) try: - return sxy / sqrt(s2x * s2y) + return sxy / sqrt(sxx * syy) except ZeroDivisionError: raise StatisticsError('at least one of the inputs is constant') @@ -957,9 +957,9 @@ def linear_regression(x, y, /): xbar = fsum(x) / n ybar = fsum(y) / n sxy = fsum((xi - xbar) * (yi - ybar) for xi, yi in zip(x, y)) - s2x = fsum((xi - xbar) ** 2.0 for xi in x) + sxx = fsum((xi - xbar) ** 2.0 for xi in x) try: - slope = sxy / s2x # equivalent to: covariance(x, y) / variance(x) + slope = sxy / sxx # equivalent to: covariance(x, y) / variance(x) except ZeroDivisionError: raise StatisticsError('x is constant') intercept = ybar - slope * xbar From webhook-mailer at python.org Fri Jun 4 22:50:47 2021 From: webhook-mailer at python.org (pablogsal) Date: Sat, 05 Jun 2021 02:50:47 -0000 Subject: [Python-checkins] bpo-44304: Fix crash in the sqlite3 module when the GC clears Statement objects (GH-26545) Message-ID: https://github.com/python/cpython/commit/fa106a685c1f199aca5be5c2d0277a14cc9057bd commit: fa106a685c1f199aca5be5c2d0277a14cc9057bd branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-05T03:50:39+01:00 summary: bpo-44304: Fix crash in the sqlite3 module when the GC clears Statement objects (GH-26545) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst M Lib/sqlite3/test/userfunctions.py M Modules/_sqlite/statement.c diff --git a/Lib/sqlite3/test/userfunctions.py b/Lib/sqlite3/test/userfunctions.py index 6f57d1911b24d..429089072496e 100644 --- a/Lib/sqlite3/test/userfunctions.py +++ b/Lib/sqlite3/test/userfunctions.py @@ -23,6 +23,7 @@ import unittest import unittest.mock +import gc import sqlite3 as sqlite def func_returntext(): @@ -322,6 +323,22 @@ def test_func_deterministic_keyword_only(self): with self.assertRaises(TypeError): self.con.create_function("deterministic", 0, int, True) + def test_function_destructor_via_gc(self): + # See bpo-44304: The destructor of the user function can + # crash if is called without the GIL from the gc functions + dest = sqlite.connect(':memory:') + def md5sum(t): + return + + dest.create_function("md5", 1, md5sum) + x = dest("create table lang (name, first_appeared)") + del md5sum, dest + + y = [x] + y.append(y) + + del x,y + gc.collect() class AggregateTests(unittest.TestCase): def setUp(self): diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst new file mode 100644 index 0000000000000..89104e8e387ed --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst @@ -0,0 +1,2 @@ +Fix a crash in the :mod:`sqlite3` module that happened when the garbage +collector clears :class:`sqlite.Statement` objects. Patch by Pablo Galindo diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index c86645ad42b64..c9dd882945328 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -403,6 +403,10 @@ stmt_dealloc(pysqlite_Statement *self) if (self->in_weakreflist != NULL) { PyObject_ClearWeakRefs((PyObject*)self); } + if (self->st) { + sqlite3_finalize(self->st); + self->st = 0; + } tp->tp_clear((PyObject *)self); tp->tp_free(self); Py_DECREF(tp); @@ -411,13 +415,6 @@ stmt_dealloc(pysqlite_Statement *self) static int stmt_clear(pysqlite_Statement *self) { - if (self->st) { - Py_BEGIN_ALLOW_THREADS - sqlite3_finalize(self->st); - Py_END_ALLOW_THREADS - self->st = 0; - } - Py_CLEAR(self->sql); return 0; } From webhook-mailer at python.org Fri Jun 4 23:09:48 2021 From: webhook-mailer at python.org (miss-islington) Date: Sat, 05 Jun 2021 03:09:48 -0000 Subject: [Python-checkins] bpo-44304: Fix crash in the sqlite3 module when the GC clears Statement objects (GH-26545) Message-ID: https://github.com/python/cpython/commit/ad2f3b74b5615aa36a82d1fdbc45bb7468aa1d72 commit: ad2f3b74b5615aa36a82d1fdbc45bb7468aa1d72 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-04T20:09:40-07:00 summary: bpo-44304: Fix crash in the sqlite3 module when the GC clears Statement objects (GH-26545) (cherry picked from commit fa106a685c1f199aca5be5c2d0277a14cc9057bd) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst M Lib/sqlite3/test/userfunctions.py M Modules/_sqlite/statement.c diff --git a/Lib/sqlite3/test/userfunctions.py b/Lib/sqlite3/test/userfunctions.py index 6f57d1911b24d8..429089072496ed 100644 --- a/Lib/sqlite3/test/userfunctions.py +++ b/Lib/sqlite3/test/userfunctions.py @@ -23,6 +23,7 @@ import unittest import unittest.mock +import gc import sqlite3 as sqlite def func_returntext(): @@ -322,6 +323,22 @@ def test_func_deterministic_keyword_only(self): with self.assertRaises(TypeError): self.con.create_function("deterministic", 0, int, True) + def test_function_destructor_via_gc(self): + # See bpo-44304: The destructor of the user function can + # crash if is called without the GIL from the gc functions + dest = sqlite.connect(':memory:') + def md5sum(t): + return + + dest.create_function("md5", 1, md5sum) + x = dest("create table lang (name, first_appeared)") + del md5sum, dest + + y = [x] + y.append(y) + + del x,y + gc.collect() class AggregateTests(unittest.TestCase): def setUp(self): diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst new file mode 100644 index 00000000000000..89104e8e387ed1 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst @@ -0,0 +1,2 @@ +Fix a crash in the :mod:`sqlite3` module that happened when the garbage +collector clears :class:`sqlite.Statement` objects. Patch by Pablo Galindo diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index e6dc4fd89528d2..cf7fba6ce9a24c 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -397,6 +397,10 @@ stmt_dealloc(pysqlite_Statement *self) if (self->in_weakreflist != NULL) { PyObject_ClearWeakRefs((PyObject*)self); } + if (self->st) { + sqlite3_finalize(self->st); + self->st = 0; + } tp->tp_clear((PyObject *)self); tp->tp_free(self); Py_DECREF(tp); @@ -405,13 +409,6 @@ stmt_dealloc(pysqlite_Statement *self) static int stmt_clear(pysqlite_Statement *self) { - if (self->st) { - Py_BEGIN_ALLOW_THREADS - sqlite3_finalize(self->st); - Py_END_ALLOW_THREADS - self->st = 0; - } - Py_CLEAR(self->sql); return 0; } From webhook-mailer at python.org Sat Jun 5 18:41:21 2021 From: webhook-mailer at python.org (pablogsal) Date: Sat, 05 Jun 2021 22:41:21 -0000 Subject: [Python-checkins] bpo-44304: Ensure the sqlite3 destructor callback is always called with the GIL held (GH-26551) Message-ID: https://github.com/python/cpython/commit/6e3b7cf3af3ed7758b2c2193c1d393feb8ab8f72 commit: 6e3b7cf3af3ed7758b2c2193c1d393feb8ab8f72 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-05T23:41:11+01:00 summary: bpo-44304: Ensure the sqlite3 destructor callback is always called with the GIL held (GH-26551) files: M Modules/_sqlite/connection.c M Modules/_sqlite/statement.c diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index c2f3bc0f20125..fbee1b7ce52a2 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -825,7 +825,12 @@ static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self) static void _destructor(void* args) { + // This function may be called without the GIL held, so we need to ensure + // that we destroy 'args' with the GIL + PyGILState_STATE gstate; + gstate = PyGILState_Ensure(); Py_DECREF((PyObject*)args); + PyGILState_Release(gstate); } /*[clinic input] diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index c9dd882945328..f12ef67d261c7 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -404,7 +404,9 @@ stmt_dealloc(pysqlite_Statement *self) PyObject_ClearWeakRefs((PyObject*)self); } if (self->st) { + Py_BEGIN_ALLOW_THREADS sqlite3_finalize(self->st); + Py_END_ALLOW_THREADS self->st = 0; } tp->tp_clear((PyObject *)self); From webhook-mailer at python.org Sat Jun 5 19:13:33 2021 From: webhook-mailer at python.org (pablogsal) Date: Sat, 05 Jun 2021 23:13:33 -0000 Subject: [Python-checkins] bpo-44304: Ensure the sqlite3 destructor callback is always called with the GIL held (GH-26551) (GH_26552) Message-ID: https://github.com/python/cpython/commit/317e9ed4363a86b1364573c5a5e30011a080ce6d commit: 317e9ed4363a86b1364573c5a5e30011a080ce6d branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-06T00:13:27+01:00 summary: bpo-44304: Ensure the sqlite3 destructor callback is always called with the GIL held (GH-26551) (GH_26552) (cherry picked from commit 6e3b7cf3af3ed7758b2c2193c1d393feb8ab8f72) Co-authored-by: Pablo Galindo files: M Modules/_sqlite/connection.c M Modules/_sqlite/statement.c diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index fccffabc4b2a0..8e42a36bd3372 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -851,7 +851,12 @@ static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self) static void _destructor(void* args) { + // This function may be called without the GIL held, so we need to ensure + // that we destroy 'args' with the GIL + PyGILState_STATE gstate; + gstate = PyGILState_Ensure(); Py_DECREF((PyObject*)args); + PyGILState_Release(gstate); } /*[clinic input] diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index cf7fba6ce9a24..072b07d4eaba5 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -398,7 +398,9 @@ stmt_dealloc(pysqlite_Statement *self) PyObject_ClearWeakRefs((PyObject*)self); } if (self->st) { + Py_BEGIN_ALLOW_THREADS sqlite3_finalize(self->st); + Py_END_ALLOW_THREADS self->st = 0; } tp->tp_clear((PyObject *)self); From webhook-mailer at python.org Sat Jun 5 22:34:14 2021 From: webhook-mailer at python.org (corona10) Date: Sun, 06 Jun 2021 02:34:14 -0000 Subject: [Python-checkins] bpo-44320: Fix markup for W3C C14N test suite (GH-26556) Message-ID: https://github.com/python/cpython/commit/71be46170490d08743c714b9fa4484038aa7a23e commit: 71be46170490d08743c714b9fa4484038aa7a23e branch: main author: NAKAMURA Osamu committer: corona10 date: 2021-06-06T11:34:10+09:00 summary: bpo-44320: Fix markup for W3C C14N test suite (GH-26556) files: M Doc/license.rst diff --git a/Doc/license.rst b/Doc/license.rst index f487d98b2b43a..d459ff664ceed 100644 --- a/Doc/license.rst +++ b/Doc/license.rst @@ -955,7 +955,7 @@ W3C C14N test suite The C14N 2.0 test suite in the :mod:`test` package (``Lib/test/xmltestdata/c14n-20/``) was retrieved from the W3C website at https://www.w3.org/TR/xml-c14n2-testcases/ and is distributed under the -3-clause BSD license: +3-clause BSD license:: Copyright (c) 2013 W3C(R) (MIT, ERCIM, Keio, Beihang), All Rights Reserved. From webhook-mailer at python.org Sat Jun 5 22:57:03 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 06 Jun 2021 02:57:03 -0000 Subject: [Python-checkins] bpo-44320: Fix markup for W3C C14N test suite (GH-26556) Message-ID: https://github.com/python/cpython/commit/3b87137176f790e93493fcb5543001f1cab8daf7 commit: 3b87137176f790e93493fcb5543001f1cab8daf7 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-05T19:56:47-07:00 summary: bpo-44320: Fix markup for W3C C14N test suite (GH-26556) (cherry picked from commit 71be46170490d08743c714b9fa4484038aa7a23e) Co-authored-by: NAKAMURA Osamu files: M Doc/license.rst diff --git a/Doc/license.rst b/Doc/license.rst index f487d98b2b43a..d459ff664ceed 100644 --- a/Doc/license.rst +++ b/Doc/license.rst @@ -955,7 +955,7 @@ W3C C14N test suite The C14N 2.0 test suite in the :mod:`test` package (``Lib/test/xmltestdata/c14n-20/``) was retrieved from the W3C website at https://www.w3.org/TR/xml-c14n2-testcases/ and is distributed under the -3-clause BSD license: +3-clause BSD license:: Copyright (c) 2013 W3C(R) (MIT, ERCIM, Keio, Beihang), All Rights Reserved. From webhook-mailer at python.org Sat Jun 5 22:57:28 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 06 Jun 2021 02:57:28 -0000 Subject: [Python-checkins] bpo-44320: Fix markup for W3C C14N test suite (GH-26556) Message-ID: https://github.com/python/cpython/commit/8e2c0fd7ada79107f7e0d9c465e77fb36a9486e5 commit: 8e2c0fd7ada79107f7e0d9c465e77fb36a9486e5 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-05T19:57:24-07:00 summary: bpo-44320: Fix markup for W3C C14N test suite (GH-26556) (cherry picked from commit 71be46170490d08743c714b9fa4484038aa7a23e) Co-authored-by: NAKAMURA Osamu files: M Doc/license.rst diff --git a/Doc/license.rst b/Doc/license.rst index f487d98b2b43a..d459ff664ceed 100644 --- a/Doc/license.rst +++ b/Doc/license.rst @@ -955,7 +955,7 @@ W3C C14N test suite The C14N 2.0 test suite in the :mod:`test` package (``Lib/test/xmltestdata/c14n-20/``) was retrieved from the W3C website at https://www.w3.org/TR/xml-c14n2-testcases/ and is distributed under the -3-clause BSD license: +3-clause BSD license:: Copyright (c) 2013 W3C(R) (MIT, ERCIM, Keio, Beihang), All Rights Reserved. From webhook-mailer at python.org Sun Jun 6 14:22:56 2021 From: webhook-mailer at python.org (rhettinger) Date: Sun, 06 Jun 2021 18:22:56 -0000 Subject: [Python-checkins] Update bisect docstrings (GH-26548) Message-ID: https://github.com/python/cpython/commit/18e9edb7b3b9d71ad6e0753af843551e8e415208 commit: 18e9edb7b3b9d71ad6e0753af843551e8e415208 branch: main author: hrchu committer: rhettinger date: 2021-06-06T11:22:48-07:00 summary: Update bisect docstrings (GH-26548) files: M Modules/_bisectmodule.c M Modules/clinic/_bisectmodule.c.h diff --git a/Modules/_bisectmodule.c b/Modules/_bisectmodule.c index 2d7c15bc1744b6..aa63b685609cc0 100644 --- a/Modules/_bisectmodule.c +++ b/Modules/_bisectmodule.c @@ -73,8 +73,8 @@ _bisect.bisect_right -> Py_ssize_t Return the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e <= x, and all e in -a[i:] have e > x. So if x already appears in the list, i points just -beyond the rightmost x already there +a[i:] have e > x. So if x already appears in the list, a.insert(i, x) will +insert just after the rightmost x already there. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. @@ -83,7 +83,7 @@ slice of a to be searched. static Py_ssize_t _bisect_bisect_right_impl(PyObject *module, PyObject *a, PyObject *x, Py_ssize_t lo, Py_ssize_t hi, PyObject *key) -/*[clinic end generated code: output=3a4bc09cc7c8a73d input=1313e9ca20c8bc3c]*/ +/*[clinic end generated code: output=3a4bc09cc7c8a73d input=40fcc5afa06ae593]*/ { return internal_bisect_right(a, x, lo, hi, key); } @@ -199,8 +199,8 @@ _bisect.bisect_left -> Py_ssize_t Return the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e < x, and all e in -a[i:] have e >= x. So if x already appears in the list, i points just -before the leftmost x already there. +a[i:] have e >= x. So if x already appears in the list, a.insert(i, x) will +insert just before the leftmost x already there. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. @@ -209,7 +209,7 @@ slice of a to be searched. static Py_ssize_t _bisect_bisect_left_impl(PyObject *module, PyObject *a, PyObject *x, Py_ssize_t lo, Py_ssize_t hi, PyObject *key) -/*[clinic end generated code: output=70749d6e5cae9284 input=3cbeec690f2f6c6e]*/ +/*[clinic end generated code: output=70749d6e5cae9284 input=90dd35b50ceb05e3]*/ { return internal_bisect_left(a, x, lo, hi, key); } diff --git a/Modules/clinic/_bisectmodule.c.h b/Modules/clinic/_bisectmodule.c.h index 304e46cf158a74..f118f4bbf86288 100644 --- a/Modules/clinic/_bisectmodule.c.h +++ b/Modules/clinic/_bisectmodule.c.h @@ -9,8 +9,8 @@ PyDoc_STRVAR(_bisect_bisect_right__doc__, "Return the index where to insert item x in list a, assuming a is sorted.\n" "\n" "The return value i is such that all e in a[:i] have e <= x, and all e in\n" -"a[i:] have e > x. So if x already appears in the list, i points just\n" -"beyond the rightmost x already there\n" +"a[i:] have e > x. So if x already appears in the list, a.insert(i, x) will\n" +"insert just after the rightmost x already there.\n" "\n" "Optional args lo (default 0) and hi (default len(a)) bound the\n" "slice of a to be searched."); @@ -172,8 +172,8 @@ PyDoc_STRVAR(_bisect_bisect_left__doc__, "Return the index where to insert item x in list a, assuming a is sorted.\n" "\n" "The return value i is such that all e in a[:i] have e < x, and all e in\n" -"a[i:] have e >= x. So if x already appears in the list, i points just\n" -"before the leftmost x already there.\n" +"a[i:] have e >= x. So if x already appears in the list, a.insert(i, x) will\n" +"insert just before the leftmost x already there.\n" "\n" "Optional args lo (default 0) and hi (default len(a)) bound the\n" "slice of a to be searched."); @@ -327,4 +327,4 @@ _bisect_insort_left(PyObject *module, PyObject *const *args, Py_ssize_t nargs, P exit: return return_value; } -/*[clinic end generated code: output=b3a5be025aa4ed7e input=a9049054013a1b77]*/ +/*[clinic end generated code: output=aeb97db6db79bf96 input=a9049054013a1b77]*/ From webhook-mailer at python.org Sun Jun 6 15:53:03 2021 From: webhook-mailer at python.org (rhettinger) Date: Sun, 06 Jun 2021 19:53:03 -0000 Subject: [Python-checkins] bpo-44227: Update bisect docstrings (GH-26548) (GH-26563) Message-ID: https://github.com/python/cpython/commit/b5cedd098043dc58ecf9c2f33774cd7646506a92 commit: b5cedd098043dc58ecf9c2f33774cd7646506a92 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-06-06T12:52:42-07:00 summary: bpo-44227: Update bisect docstrings (GH-26548) (GH-26563) files: M Modules/_bisectmodule.c M Modules/clinic/_bisectmodule.c.h diff --git a/Modules/_bisectmodule.c b/Modules/_bisectmodule.c index 2d7c15bc1744b6..aa63b685609cc0 100644 --- a/Modules/_bisectmodule.c +++ b/Modules/_bisectmodule.c @@ -73,8 +73,8 @@ _bisect.bisect_right -> Py_ssize_t Return the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e <= x, and all e in -a[i:] have e > x. So if x already appears in the list, i points just -beyond the rightmost x already there +a[i:] have e > x. So if x already appears in the list, a.insert(i, x) will +insert just after the rightmost x already there. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. @@ -83,7 +83,7 @@ slice of a to be searched. static Py_ssize_t _bisect_bisect_right_impl(PyObject *module, PyObject *a, PyObject *x, Py_ssize_t lo, Py_ssize_t hi, PyObject *key) -/*[clinic end generated code: output=3a4bc09cc7c8a73d input=1313e9ca20c8bc3c]*/ +/*[clinic end generated code: output=3a4bc09cc7c8a73d input=40fcc5afa06ae593]*/ { return internal_bisect_right(a, x, lo, hi, key); } @@ -199,8 +199,8 @@ _bisect.bisect_left -> Py_ssize_t Return the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e < x, and all e in -a[i:] have e >= x. So if x already appears in the list, i points just -before the leftmost x already there. +a[i:] have e >= x. So if x already appears in the list, a.insert(i, x) will +insert just before the leftmost x already there. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched. @@ -209,7 +209,7 @@ slice of a to be searched. static Py_ssize_t _bisect_bisect_left_impl(PyObject *module, PyObject *a, PyObject *x, Py_ssize_t lo, Py_ssize_t hi, PyObject *key) -/*[clinic end generated code: output=70749d6e5cae9284 input=3cbeec690f2f6c6e]*/ +/*[clinic end generated code: output=70749d6e5cae9284 input=90dd35b50ceb05e3]*/ { return internal_bisect_left(a, x, lo, hi, key); } diff --git a/Modules/clinic/_bisectmodule.c.h b/Modules/clinic/_bisectmodule.c.h index 304e46cf158a74..f118f4bbf86288 100644 --- a/Modules/clinic/_bisectmodule.c.h +++ b/Modules/clinic/_bisectmodule.c.h @@ -9,8 +9,8 @@ PyDoc_STRVAR(_bisect_bisect_right__doc__, "Return the index where to insert item x in list a, assuming a is sorted.\n" "\n" "The return value i is such that all e in a[:i] have e <= x, and all e in\n" -"a[i:] have e > x. So if x already appears in the list, i points just\n" -"beyond the rightmost x already there\n" +"a[i:] have e > x. So if x already appears in the list, a.insert(i, x) will\n" +"insert just after the rightmost x already there.\n" "\n" "Optional args lo (default 0) and hi (default len(a)) bound the\n" "slice of a to be searched."); @@ -172,8 +172,8 @@ PyDoc_STRVAR(_bisect_bisect_left__doc__, "Return the index where to insert item x in list a, assuming a is sorted.\n" "\n" "The return value i is such that all e in a[:i] have e < x, and all e in\n" -"a[i:] have e >= x. So if x already appears in the list, i points just\n" -"before the leftmost x already there.\n" +"a[i:] have e >= x. So if x already appears in the list, a.insert(i, x) will\n" +"insert just before the leftmost x already there.\n" "\n" "Optional args lo (default 0) and hi (default len(a)) bound the\n" "slice of a to be searched."); @@ -327,4 +327,4 @@ _bisect_insort_left(PyObject *module, PyObject *const *args, Py_ssize_t nargs, P exit: return return_value; } -/*[clinic end generated code: output=b3a5be025aa4ed7e input=a9049054013a1b77]*/ +/*[clinic end generated code: output=aeb97db6db79bf96 input=a9049054013a1b77]*/ From webhook-mailer at python.org Sun Jun 6 18:11:52 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 06 Jun 2021 22:11:52 -0000 Subject: [Python-checkins] bpo-44327: Remove unused members from pysqlite_Connection (GH-26565) Message-ID: https://github.com/python/cpython/commit/505624e917a2d3d845304f8d34fccd41f06d4720 commit: 505624e917a2d3d845304f8d34fccd41f06d4720 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-06T23:11:44+01:00 summary: bpo-44327: Remove unused members from pysqlite_Connection (GH-26565) * Remove timeout_started * Remove timeout member files: M Modules/_sqlite/connection.c M Modules/_sqlite/connection.h diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index fbee1b7ce52a2..4ec74dd26fab6 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -172,7 +172,6 @@ pysqlite_connection_init(pysqlite_Connection *self, PyObject *args, } self->detect_types = detect_types; - self->timeout = timeout; (void)sqlite3_busy_timeout(self->db, (int)(timeout*1000)); self->thread_ident = PyThread_get_thread_ident(); self->check_same_thread = check_same_thread; diff --git a/Modules/_sqlite/connection.h b/Modules/_sqlite/connection.h index 03845a696d2bf..88c58b385ba84 100644 --- a/Modules/_sqlite/connection.h +++ b/Modules/_sqlite/connection.h @@ -41,13 +41,6 @@ typedef struct * bitwise combination thereof makes sense */ int detect_types; - /* the timeout value in seconds for database locks */ - double timeout; - - /* for internal use in the timeout handler: when did the timeout handler - * first get called with count=0? */ - double timeout_started; - /* None for autocommit, otherwise a PyUnicode with the isolation level */ PyObject* isolation_level; From webhook-mailer at python.org Sun Jun 6 18:12:20 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 06 Jun 2021 22:12:20 -0000 Subject: [Python-checkins] bpo-44326: Remove unused members from pysqlite_Statement (GH-26564) Message-ID: https://github.com/python/cpython/commit/0d12f245523178eb62e22f5da5a276bfc7004ac4 commit: 0d12f245523178eb62e22f5da5a276bfc7004ac4 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-06T23:12:07+01:00 summary: bpo-44326: Remove unused members from pysqlite_Statement (GH-26564) * Remove unused db member of pysqlite_Statement * Remove unused sql method from statement object files: M Modules/_sqlite/statement.c M Modules/_sqlite/statement.h diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index f12ef67d261c7..5c38b4607b428 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -84,9 +84,7 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) return NULL; } - self->db = connection->db; self->st = NULL; - self->sql = Py_NewRef(sql); self->in_use = 0; self->is_dml = 0; self->in_weakreflist = NULL; @@ -110,7 +108,7 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) } Py_BEGIN_ALLOW_THREADS - rc = sqlite3_prepare_v2(self->db, + rc = sqlite3_prepare_v2(connection->db, sql_cstr, (int)sql_cstr_len + 1, &self->st, @@ -120,7 +118,7 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) PyObject_GC_Track(self); if (rc != SQLITE_OK) { - _pysqlite_seterror(self->db); + _pysqlite_seterror(connection->db); goto error; } @@ -409,23 +407,14 @@ stmt_dealloc(pysqlite_Statement *self) Py_END_ALLOW_THREADS self->st = 0; } - tp->tp_clear((PyObject *)self); tp->tp_free(self); Py_DECREF(tp); } -static int -stmt_clear(pysqlite_Statement *self) -{ - Py_CLEAR(self->sql); - return 0; -} - static int stmt_traverse(pysqlite_Statement *self, visitproc visit, void *arg) { Py_VISIT(Py_TYPE(self)); - Py_VISIT(self->sql); return 0; } @@ -507,7 +496,6 @@ static PyType_Slot stmt_slots[] = { {Py_tp_members, stmt_members}, {Py_tp_dealloc, stmt_dealloc}, {Py_tp_traverse, stmt_traverse}, - {Py_tp_clear, stmt_clear}, {0, NULL}, }; diff --git a/Modules/_sqlite/statement.h b/Modules/_sqlite/statement.h index e8c86a0ec963f..b06f6155e15c2 100644 --- a/Modules/_sqlite/statement.h +++ b/Modules/_sqlite/statement.h @@ -32,9 +32,7 @@ typedef struct { PyObject_HEAD - sqlite3* db; sqlite3_stmt* st; - PyObject* sql; int in_use; int is_dml; PyObject* in_weakreflist; /* List of weak references */ From webhook-mailer at python.org Sun Jun 6 21:42:41 2021 From: webhook-mailer at python.org (terryjreedy) Date: Mon, 07 Jun 2021 01:42:41 -0000 Subject: [Python-checkins] bpo-44322: Document more SyntaxError details. (GH-26562) Message-ID: https://github.com/python/cpython/commit/67dfa6f2a508c325715625fe442f2ce20270a8b3 commit: 67dfa6f2a508c325715625fe442f2ce20270a8b3 branch: main author: Terry Jan Reedy committer: terryjreedy date: 2021-06-06T21:42:31-04:00 summary: bpo-44322: Document more SyntaxError details. (GH-26562) 1. SyntaxError args have a tuple of other attributes. 2. Attributes are adjusted for errors in f-string field expressions. 3. Compile() can raise SyntaxErrors. files: A Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst M Doc/library/exceptions.rst diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 173c1c285f01af..d5d81dfd9e6382 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -409,14 +409,16 @@ The following exceptions are the exceptions that are usually raised. .. versionadded:: 3.5 -.. exception:: SyntaxError +.. exception:: SyntaxError(message, details) Raised when the parser encounters a syntax error. This may occur in an - :keyword:`import` statement, in a call to the built-in functions :func:`exec` + :keyword:`import` statement, in a call to the built-in functions + :func:`compile`, :func:`exec`, or :func:`eval`, or when reading the initial script or standard input (also interactively). The :func:`str` of the exception instance returns only the error message. + Details is a tuple whose members are also available as separate attributes. .. attribute:: filename @@ -446,6 +448,11 @@ The following exceptions are the exceptions that are usually raised. The column in the end line where the error occurred finishes. This is 1-indexed: the first character in the line has an ``offset`` of 1. + For errors in f-string fields, the message is prefixed by "f-string: " + and the offsets are offsets in a text constructed from the replacement + expression. For example, compiling f'Bad {a b} field' results in this + args attribute: ('f-string: ...', ('', 1, 2, '(a b)\n', 1, 5)). + .. versionchanged:: 3.10 Added the :attr:`end_lineno` and :attr:`end_offset` attributes. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst b/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst new file mode 100644 index 00000000000000..48dd7e6d97662d --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst @@ -0,0 +1,2 @@ +Document that SyntaxError args have a details tuple and that details are +adjusted for errors in f-string field replacement expressions. From webhook-mailer at python.org Sun Jun 6 22:09:44 2021 From: webhook-mailer at python.org (terryjreedy) Date: Mon, 07 Jun 2021 02:09:44 -0000 Subject: [Python-checkins] bpo-44322: Document more SyntaxError details. (GH-26562) Message-ID: https://github.com/python/cpython/commit/2af690fdb26d0312de056b54ddb113d3c44dee8c commit: 2af690fdb26d0312de056b54ddb113d3c44dee8c branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2021-06-06T22:09:34-04:00 summary: bpo-44322: Document more SyntaxError details. (GH-26562) 1. SyntaxError args have a tuple of other attributes. 2. Attributes are adjusted for errors in f-string field expressions. 3. Compile() can raise SyntaxErrors. (cherry picked from commit 67dfa6f2a508c325715625fe442f2ce20270a8b3) Co-authored-by: Terry Jan Reedy files: A Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst M Doc/library/exceptions.rst diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 173c1c285f01af..d5d81dfd9e6382 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -409,14 +409,16 @@ The following exceptions are the exceptions that are usually raised. .. versionadded:: 3.5 -.. exception:: SyntaxError +.. exception:: SyntaxError(message, details) Raised when the parser encounters a syntax error. This may occur in an - :keyword:`import` statement, in a call to the built-in functions :func:`exec` + :keyword:`import` statement, in a call to the built-in functions + :func:`compile`, :func:`exec`, or :func:`eval`, or when reading the initial script or standard input (also interactively). The :func:`str` of the exception instance returns only the error message. + Details is a tuple whose members are also available as separate attributes. .. attribute:: filename @@ -446,6 +448,11 @@ The following exceptions are the exceptions that are usually raised. The column in the end line where the error occurred finishes. This is 1-indexed: the first character in the line has an ``offset`` of 1. + For errors in f-string fields, the message is prefixed by "f-string: " + and the offsets are offsets in a text constructed from the replacement + expression. For example, compiling f'Bad {a b} field' results in this + args attribute: ('f-string: ...', ('', 1, 2, '(a b)\n', 1, 5)). + .. versionchanged:: 3.10 Added the :attr:`end_lineno` and :attr:`end_offset` attributes. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst b/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst new file mode 100644 index 00000000000000..48dd7e6d97662d --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst @@ -0,0 +1,2 @@ +Document that SyntaxError args have a details tuple and that details are +adjusted for errors in f-string field replacement expressions. From webhook-mailer at python.org Sun Jun 6 22:14:54 2021 From: webhook-mailer at python.org (jaraco) Date: Mon, 07 Jun 2021 02:14:54 -0000 Subject: [Python-checkins] bpo-37449: ensurepip uses importlib.resources.files() traversable APIs (#22659) Message-ID: https://github.com/python/cpython/commit/afb2eed72b32a35b4726ff35f92e4fbf54926046 commit: afb2eed72b32a35b4726ff35f92e4fbf54926046 branch: main author: wim glenn committer: jaraco date: 2021-06-06T22:14:47-04:00 summary: bpo-37449: ensurepip uses importlib.resources.files() traversable APIs (#22659) * `ensurepip` now uses `importlib.resources.files()` traversable APIs * Update Lib/ensurepip/__init__.py Co-authored-by: Jason R. Coombs * Update Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst Co-authored-by: Jason R. Coombs Co-authored-by: Jason R. Coombs files: A Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst D Lib/ensurepip/_bundled/__init__.py M Lib/ensurepip/__init__.py diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 4c606b9f2a89b8..834fc6bdc64b35 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -8,7 +8,6 @@ from importlib import resources - __all__ = ["version", "bootstrap"] _PACKAGE_NAMES = ('setuptools', 'pip') _SETUPTOOLS_VERSION = "56.0.0" @@ -79,8 +78,8 @@ def _get_packages(): def _run_pip(args, additional_paths=None): - # Run the bootstraping in a subprocess to avoid leaking any state that happens - # after pip has executed. Particulary, this avoids the case when pip holds onto + # Run the bootstrapping in a subprocess to avoid leaking any state that happens + # after pip has executed. Particularly, this avoids the case when pip holds onto # the files in *additional_paths*, preventing us to remove them at the end of the # invocation. code = f""" @@ -164,9 +163,9 @@ def _bootstrap(*, root=None, upgrade=False, user=False, for name, package in _get_packages().items(): if package.wheel_name: # Use bundled wheel package - from ensurepip import _bundled wheel_name = package.wheel_name - whl = resources.read_binary(_bundled, wheel_name) + wheel_path = resources.files("ensurepip") / "_bundled" / wheel_name + whl = wheel_path.read_bytes() else: # Use the wheel package directory with open(package.wheel_path, "rb") as fp: diff --git a/Lib/ensurepip/_bundled/__init__.py b/Lib/ensurepip/_bundled/__init__.py deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst b/Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst new file mode 100644 index 00000000000000..2202ae0a9ac969 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-11-20-23-48.bpo-37449.f-t3V6.rst @@ -0,0 +1 @@ +``ensurepip`` now uses ``importlib.resources.files()`` traversable APIs From webhook-mailer at python.org Sun Jun 6 22:57:57 2021 From: webhook-mailer at python.org (terryjreedy) Date: Mon, 07 Jun 2021 02:57:57 -0000 Subject: [Python-checkins] [3.9] bpo-44322: Document more SyntaxError details. (GH-26562) Message-ID: https://github.com/python/cpython/commit/d5f8bd60e1203a41996b3ee370d6f09389070627 commit: d5f8bd60e1203a41996b3ee370d6f09389070627 branch: 3.9 author: Terry Jan Reedy committer: terryjreedy date: 2021-06-06T22:57:53-04:00 summary: [3.9] bpo-44322: Document more SyntaxError details. (GH-26562) 1. SyntaxError args have a tuple of other attributes. 2. Attributes are adjusted for errors in f-string field expressions. 3. Compile() can raise SyntaxErrors. (cherry picked from commit 67dfa6f2a508c325715625fe442f2ce20270a8b3) files: A Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst M Doc/library/exceptions.rst diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 7170b2c2b754f8..6bed5c70f0ad04 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -390,14 +390,16 @@ The following exceptions are the exceptions that are usually raised. .. versionadded:: 3.5 -.. exception:: SyntaxError +.. exception:: SyntaxError(message, details) Raised when the parser encounters a syntax error. This may occur in an - :keyword:`import` statement, in a call to the built-in functions :func:`exec` + :keyword:`import` statement, in a call to the built-in functions + :func:`compile`, :func:`exec`, or :func:`eval`, or when reading the initial script or standard input (also interactively). The :func:`str` of the exception instance returns only the error message. + Details is a tuple whose members are also available as separate attributes. .. attribute:: filename @@ -417,6 +419,11 @@ The following exceptions are the exceptions that are usually raised. The source code text involved in the error. + For errors in f-string fields, the message is prefixed by "f-string: " + and the offsets are offsets in a text constructed from the replacement + expression. For example, compiling f'Bad {a b} field' results in this + args attribute: ('f-string: ...', ('', 1, 4, '(a b)\n')). + .. exception:: IndentationError diff --git a/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst b/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst new file mode 100644 index 00000000000000..48dd7e6d97662d --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst @@ -0,0 +1,2 @@ +Document that SyntaxError args have a details tuple and that details are +adjusted for errors in f-string field replacement expressions. From webhook-mailer at python.org Mon Jun 7 03:06:42 2021 From: webhook-mailer at python.org (mdickinson) Date: Mon, 07 Jun 2021 07:06:42 -0000 Subject: [Python-checkins] bpo-44258: support PEP 515 for Fraction's initialization from string (GH-26422) Message-ID: https://github.com/python/cpython/commit/89e50ab36fac6a0e7f1998501f36fcd2872a6604 commit: 89e50ab36fac6a0e7f1998501f36fcd2872a6604 branch: main author: Sergey B Kirpichev committer: mdickinson date: 2021-06-07T08:06:33+01:00 summary: bpo-44258: support PEP 515 for Fraction's initialization from string (GH-26422) * bpo-44258: support PEP 515 for Fraction's initialization from string * regexps's version * A different regexps version, which doesn't suffer from catastrophic backtracking * revert denom -> den * strip "_" from the decimal str, add few tests * drop redundant tests * Add versionchanged & whatsnew entry * Amend Fraction constructor docs * Change .. versionchanged:... files: A Misc/NEWS.d/next/Library/2021-05-28-09-43-33.bpo-44258.nh5F7R.rst M Doc/library/fractions.rst M Doc/whatsnew/3.11.rst M Lib/fractions.py M Lib/test/test_fractions.py diff --git a/Doc/library/fractions.rst b/Doc/library/fractions.rst index a4d006eb58ffeb..d04de8f8e95a61 100644 --- a/Doc/library/fractions.rst +++ b/Doc/library/fractions.rst @@ -42,7 +42,8 @@ another rational number, or from a string. where the optional ``sign`` may be either '+' or '-' and ``numerator`` and ``denominator`` (if present) are strings of - decimal digits. In addition, any string that represents a finite + decimal digits (underscores may be used to delimit digits as with + integral literals in code). In addition, any string that represents a finite value and is accepted by the :class:`float` constructor is also accepted by the :class:`Fraction` constructor. In either form the input string may also have leading and/or trailing whitespace. @@ -89,6 +90,10 @@ another rational number, or from a string. and *denominator*. :func:`math.gcd` always return a :class:`int` type. Previously, the GCD type depended on *numerator* and *denominator*. + .. versionchanged:: 3.11 + Underscores are now permitted when creating a :class:`Fraction` instance + from a string, following :PEP:`515` rules. + .. attribute:: numerator Numerator of the Fraction in lowest term. diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 1ea8cbaf9a82a3..8c81b08de2cfba 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -86,6 +86,11 @@ New Modules Improved Modules ================ +fractions +--------- + +Support :PEP:`515`-style initialization of :class:`~fractions.Fraction` from +string. (Contributed by Sergey B Kirpichev in :issue:`44258`.) Optimizations ============= diff --git a/Lib/fractions.py b/Lib/fractions.py index 66e6831a5c7bcc..180cd94c2879cc 100644 --- a/Lib/fractions.py +++ b/Lib/fractions.py @@ -21,17 +21,17 @@ _PyHASH_INF = sys.hash_info.inf _RATIONAL_FORMAT = re.compile(r""" - \A\s* # optional whitespace at the start, then - (?P[-+]?) # an optional sign, then - (?=\d|\.\d) # lookahead for digit or .digit - (?P\d*) # numerator (possibly empty) - (?: # followed by - (?:/(?P\d+))? # an optional denominator - | # or - (?:\.(?P\d*))? # an optional fractional part - (?:E(?P[-+]?\d+))? # and optional exponent + \A\s* # optional whitespace at the start, + (?P[-+]?) # an optional sign, then + (?=\d|\.\d) # lookahead for digit or .digit + (?P\d*|\d+(_\d+)*) # numerator (possibly empty) + (?: # followed by + (?:/(?P\d+(_\d+)*))? # an optional denominator + | # or + (?:\.(?Pd*|\d+(_\d+)*))? # an optional fractional part + (?:E(?P[-+]?\d+(_\d+)*))? # and optional exponent ) - \s*\Z # and optional whitespace to finish + \s*\Z # and optional whitespace to finish """, re.VERBOSE | re.IGNORECASE) @@ -122,6 +122,7 @@ def __new__(cls, numerator=0, denominator=None, *, _normalize=True): denominator = 1 decimal = m.group('decimal') if decimal: + decimal = decimal.replace('_', '') scale = 10**len(decimal) numerator = numerator * scale + int(decimal) denominator *= scale diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py index 949ddd9072862f..bbf7709fe959be 100644 --- a/Lib/test/test_fractions.py +++ b/Lib/test/test_fractions.py @@ -173,6 +173,12 @@ def testFromString(self): self.assertEqual((-12300, 1), _components(F("-1.23e4"))) self.assertEqual((0, 1), _components(F(" .0e+0\t"))) self.assertEqual((0, 1), _components(F("-0.000e0"))) + self.assertEqual((123, 1), _components(F("1_2_3"))) + self.assertEqual((41, 107), _components(F("1_2_3/3_2_1"))) + self.assertEqual((6283, 2000), _components(F("3.14_15"))) + self.assertEqual((6283, 2*10**13), _components(F("3.14_15e-1_0"))) + self.assertEqual((101, 100), _components(F("1.01"))) + self.assertEqual((101, 100), _components(F("1.0_1"))) self.assertRaisesMessage( ZeroDivisionError, "Fraction(3, 0)", @@ -210,6 +216,62 @@ def testFromString(self): # Allow 3. and .3, but not . ValueError, "Invalid literal for Fraction: '.'", F, ".") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '_'", + F, "_") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '_1'", + F, "_1") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1__2'", + F, "1__2") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '/_'", + F, "/_") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1_/'", + F, "1_/") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '_1/'", + F, "_1/") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1__2/'", + F, "1__2/") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1/_'", + F, "1/_") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1/_1'", + F, "1/_1") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1/1__2'", + F, "1/1__2") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1._111'", + F, "1._111") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1.1__1'", + F, "1.1__1") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1.1e+_1'", + F, "1.1e+_1") + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1.1e+1__1'", + F, "1.1e+1__1") + # Test catastrophic backtracking. + val = "9"*50 + "_" + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '" + val + "'", + F, val) + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1/" + val + "'", + F, "1/" + val) + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1." + val + "'", + F, "1." + val) + self.assertRaisesMessage( + ValueError, "Invalid literal for Fraction: '1.1+e" + val + "'", + F, "1.1+e" + val) def testImmutable(self): r = F(7, 3) diff --git a/Misc/NEWS.d/next/Library/2021-05-28-09-43-33.bpo-44258.nh5F7R.rst b/Misc/NEWS.d/next/Library/2021-05-28-09-43-33.bpo-44258.nh5F7R.rst new file mode 100644 index 00000000000000..b9636899700f6e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-05-28-09-43-33.bpo-44258.nh5F7R.rst @@ -0,0 +1 @@ +Support PEP 515 for Fraction's initialization from string. From webhook-mailer at python.org Mon Jun 7 13:38:17 2021 From: webhook-mailer at python.org (markshannon) Date: Mon, 07 Jun 2021 17:38:17 -0000 Subject: [Python-checkins] bpo-44187: Quickening infrastructure (GH-26264) Message-ID: https://github.com/python/cpython/commit/001eb520b5757294dc455c900d94b7b153de6cdd commit: 001eb520b5757294dc455c900d94b7b153de6cdd branch: main author: Mark Shannon committer: markshannon date: 2021-06-07T18:38:06+01:00 summary: bpo-44187: Quickening infrastructure (GH-26264) * Add co_firstinstr field to code object. * Implement barebones quickening. * Use non-quickened bytecode when tracing. * Add NEWS item * Add new file to Windows build. * Don't specialize instructions with EXTENDED_ARG. files: A Misc/NEWS.d/next/Core and Builtins/2021-05-20-12-43-04.bpo-44187.3lk0L1.rst A Python/specialize.c M Include/cpython/code.h M Include/internal/pycore_code.h M Lib/test/libregrtest/refleak.py M Makefile.pre.in M Objects/codeobject.c M PCbuild/pythoncore.vcxproj M PCbuild/pythoncore.vcxproj.filters M Python/ceval.c M Python/clinic/sysmodule.c.h M Python/sysmodule.c diff --git a/Include/cpython/code.h b/Include/cpython/code.h index 5c0fae47e79f2c..98d728bf96269c 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -7,9 +7,11 @@ typedef uint16_t _Py_CODEUNIT; #ifdef WORDS_BIGENDIAN # define _Py_OPCODE(word) ((word) >> 8) # define _Py_OPARG(word) ((word) & 255) +# define _Py_MAKECODEUNIT(opcode, oparg) (((opcode)<<8)|(oparg)) #else # define _Py_OPCODE(word) ((word) & 255) # define _Py_OPARG(word) ((word) >> 8) +# define _Py_MAKECODEUNIT(opcode, oparg) ((opcode)|((oparg)<<8)) #endif typedef struct _PyOpcache _PyOpcache; @@ -43,16 +45,20 @@ struct PyCodeObject { /* These fields are set with provided values on new code objects. */ // The hottest fields (in the eval loop) are grouped here at the top. - PyObject *co_code; /* instruction opcodes */ PyObject *co_consts; /* list (constants used) */ PyObject *co_names; /* list of strings (names used) */ + _Py_CODEUNIT *co_firstinstr; /* Pointer to first instruction, used for quickening */ + PyObject *co_exceptiontable; /* Byte string encoding exception handling table */ int co_flags; /* CO_..., see below */ + int co_warmup; /* Warmup counter for quickening */ + // The rest are not so impactful on performance. int co_argcount; /* #arguments, except *args */ int co_posonlyargcount; /* #positional only arguments */ int co_kwonlyargcount; /* #keyword only arguments */ int co_stacksize; /* #entries needed for evaluation stack */ int co_firstlineno; /* first source line number */ + PyObject *co_code; /* instruction opcodes */ PyObject *co_varnames; /* tuple of strings (local variable names) */ PyObject *co_cellvars; /* tuple of strings (cell variable names) */ PyObject *co_freevars; /* tuple of strings (free variable names) */ @@ -60,7 +66,6 @@ struct PyCodeObject { PyObject *co_name; /* unicode (name, for reference) */ PyObject *co_linetable; /* string (encoding addr<->lineno mapping) See Objects/lnotab_notes.txt for details. */ - PyObject *co_exceptiontable; /* Byte string encoding exception handling table */ /* These fields are set with computed values on new code objects. */ @@ -78,6 +83,10 @@ struct PyCodeObject { Type is a void* to keep the format private in codeobject.c to force people to go through the proper APIs. */ void *co_extra; + /* Quickened instructions and cache, or NULL + This should be treated as opaque by all code except the specializer and + interpreter. */ + union _cache_or_instruction *co_quickened; /* Per opcodes just-in-time cache * diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index dab6c34dd1732d..cb723503499529 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -4,6 +4,7 @@ extern "C" { #endif +/* Legacy Opcache */ typedef struct { PyObject *ptr; /* Cached pointer (borrowed reference) */ @@ -26,6 +27,129 @@ struct _PyOpcache { }; +/* PEP 659 + * Specialization and quickening structs and helper functions + */ + +typedef struct { + int32_t cache_count; + int32_t _; /* Force 8 byte size */ +} _PyEntryZero; + +typedef struct { + uint8_t original_oparg; + uint8_t counter; + uint16_t index; +} _PyAdaptiveEntry; + +/* Add specialized versions of entries to this union. + * + * Do not break the invariant: sizeof(SpecializedCacheEntry) == 8 + * Preserving this invariant is necessary because: + - If any one form uses more space, then all must and on 64 bit machines + this is likely to double the memory consumption of caches + - The function for calculating the offset of caches assumes a 4:1 + cache:instruction size ratio. Changing that would need careful + analysis to choose a new function. + */ +typedef union { + _PyEntryZero zero; + _PyAdaptiveEntry adaptive; +} SpecializedCacheEntry; + +#define INSTRUCTIONS_PER_ENTRY (sizeof(SpecializedCacheEntry)/sizeof(_Py_CODEUNIT)) + +/* Maximum size of code to quicken, in code units. */ +#define MAX_SIZE_TO_QUICKEN 5000 + +typedef union _cache_or_instruction { + _Py_CODEUNIT code[1]; + SpecializedCacheEntry entry; +} SpecializedCacheOrInstruction; + +/* Get pointer to the nth cache entry, from the first instruction and n. + * Cache entries are indexed backwards, with [count-1] first in memory, and [0] last. + * The zeroth entry immediately precedes the instructions. + */ +static inline SpecializedCacheEntry * +_GetSpecializedCacheEntry(_Py_CODEUNIT *first_instr, Py_ssize_t n) +{ + SpecializedCacheOrInstruction *last_cache_plus_one = (SpecializedCacheOrInstruction *)first_instr; + assert(&last_cache_plus_one->code[0] == first_instr); + return &last_cache_plus_one[-1-n].entry; +} + +/* Following two functions form a pair. + * + * oparg_from_offset_and_index() is used to compute the oparg + * when quickening, so that offset_from_oparg_and_nexti() + * can be used at runtime to compute the offset. + * + * The relationship between the three values is currently + * offset == (index>>1) + oparg + * This relation is chosen based on the following observations: + * 1. typically 1 in 4 instructions need a cache + * 2. instructions that need a cache typically use 2 entries + * These observations imply: offset ? index/2 + * We use the oparg to fine tune the relation to avoid wasting space + * and allow consecutive instructions to use caches. + * + * If the number of cache entries < number of instructions/2 we will waste + * some small amoount of space. + * If the number of cache entries > (number of instructions/2) + 255, then + * some instructions will not be able to use a cache. + * In practice, we expect some small amount of wasted space in a shorter functions + * and only functions exceeding a 1000 lines or more not to have enugh cache space. + * + */ +static inline int +oparg_from_offset_and_nexti(int offset, int nexti) +{ + return offset-(nexti>>1); +} + +static inline int +offset_from_oparg_and_nexti(int oparg, int nexti) +{ + return (nexti>>1)+oparg; +} + +/* Get pointer to the cache entry associated with an instruction. + * nexti is the index of the instruction plus one. + * nexti is used as it corresponds to the instruction pointer in the interpreter. + * This doesn't check that an entry has been allocated for that instruction. */ +static inline SpecializedCacheEntry * +_GetSpecializedCacheEntryForInstruction(_Py_CODEUNIT *first_instr, int nexti, int oparg) +{ + return _GetSpecializedCacheEntry( + first_instr, + offset_from_oparg_and_nexti(oparg, nexti) + ); +} + +#define QUICKENING_WARMUP_DELAY 8 + +/* We want to compare to zero for efficiency, so we offset values accordingly */ +#define QUICKENING_INITIAL_WARMUP_VALUE (-QUICKENING_WARMUP_DELAY) +#define QUICKENING_WARMUP_COLDEST 1 + +static inline void +PyCodeObject_IncrementWarmup(PyCodeObject * co) +{ + co->co_warmup++; +} + +/* Used by the interpreter to determine when a code object should be quickened */ +static inline int +PyCodeObject_IsWarmedUp(PyCodeObject * co) +{ + return (co->co_warmup == 0); +} + +int _Py_Quicken(PyCodeObject *code); + +extern Py_ssize_t _Py_QuickenedCount; + struct _PyCodeConstructor { /* metadata */ PyObject *filename; diff --git a/Lib/test/libregrtest/refleak.py b/Lib/test/libregrtest/refleak.py index 7c7086a806b1cd..65b660bbc5b795 100644 --- a/Lib/test/libregrtest/refleak.py +++ b/Lib/test/libregrtest/refleak.py @@ -73,9 +73,10 @@ def get_pooled_int(value): alloc_deltas = [0] * repcount fd_deltas = [0] * repcount getallocatedblocks = sys.getallocatedblocks + getallocatedblocks = sys.getallocatedblocks gettotalrefcount = sys.gettotalrefcount + _getquickenedcount = sys._getquickenedcount fd_count = os_helper.fd_count - # initialize variables to make pyflakes quiet rc_before = alloc_before = fd_before = 0 @@ -92,7 +93,7 @@ def get_pooled_int(value): # dash_R_cleanup() ends with collecting cyclic trash: # read memory statistics immediately after. - alloc_after = getallocatedblocks() + alloc_after = getallocatedblocks() - _getquickenedcount() rc_after = gettotalrefcount() fd_after = fd_count() diff --git a/Makefile.pre.in b/Makefile.pre.in index 798c53fa7c695f..859b53947cab1a 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -378,6 +378,7 @@ PYTHON_OBJS= \ Python/pythonrun.o \ Python/pytime.o \ Python/bootstrap_hash.o \ + Python/specialize.o \ Python/structmember.o \ Python/symtable.o \ Python/sysmodule.o \ diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-20-12-43-04.bpo-44187.3lk0L1.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-20-12-43-04.bpo-44187.3lk0L1.rst new file mode 100644 index 00000000000000..067dedd0f7dda3 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-05-20-12-43-04.bpo-44187.3lk0L1.rst @@ -0,0 +1,3 @@ +Implement quickening in the interpreter. This offers no advantages as +yet, but is an enabler of future optimizations. See PEP 659 for full +explanation. diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 75e81821450f52..768f5d1d7ee295 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -211,6 +211,7 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) Py_INCREF(con->code); co->co_code = con->code; + co->co_firstinstr = (_Py_CODEUNIT *)PyBytes_AS_STRING(con->code); co->co_firstlineno = con->firstlineno; Py_INCREF(con->linetable); co->co_linetable = con->linetable; @@ -250,6 +251,8 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) co->co_opcache = NULL; co->co_opcache_flag = 0; co->co_opcache_size = 0; + co->co_warmup = QUICKENING_INITIAL_WARMUP_VALUE; + co->co_quickened = NULL; } /* The caller is responsible for ensuring that the given data is valid. */ @@ -376,7 +379,8 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, if (_PyCode_Validate(&con) < 0) { return NULL; } - + assert(PyBytes_GET_SIZE(code) % sizeof(_Py_CODEUNIT) == 0); + assert(_Py_IS_ALIGNED(PyBytes_AS_STRING(code), sizeof(_Py_CODEUNIT))); if (nlocals != PyTuple_GET_SIZE(varnames)) { PyErr_SetString(PyExc_ValueError, "code: co_nlocals != len(co_varnames)"); @@ -1039,6 +1043,10 @@ code_dealloc(PyCodeObject *co) PyMem_Free(co->co_cell2arg); if (co->co_weakreflist != NULL) PyObject_ClearWeakRefs((PyObject*)co); + if (co->co_quickened) { + PyMem_Free(co->co_quickened); + _Py_QuickenedCount--; + } PyObject_Free(co); } diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index 0382977d6c367a..66d35e0cb24d0e 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -487,6 +487,7 @@ + diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index 55b57ef29dc0c9..22904d5093aa46 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -1103,6 +1103,9 @@ Python + + Python + Python diff --git a/Python/ceval.c b/Python/ceval.c index 4dff7bd2df9834..619eff29e1807a 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1343,6 +1343,14 @@ eval_frame_handle_pending(PyThreadState *tstate) #define JUMPTO(x) (next_instr = first_instr + (x)) #define JUMPBY(x) (next_instr += (x)) +/* Get opcode and oparg from original instructions, not quickened form. */ +#define TRACING_NEXTOPARG() do { \ + _Py_CODEUNIT word = ((_Py_CODEUNIT *)PyBytes_AS_STRING(co->co_code))[INSTR_OFFSET()]; \ + opcode = _Py_OPCODE(word); \ + oparg = _Py_OPARG(word); \ + next_instr++; \ + } while (0) + /* OpCode prediction macros Some opcodes tend to come in pairs thus making it possible to predict the second code when the first is run. For example, @@ -1644,15 +1652,23 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) if (PyDTrace_FUNCTION_ENTRY_ENABLED()) dtrace_function_entry(f); + /* Increment the warmup counter and quicken if warm enough + * _Py_Quicken is idempotent so we don't worry about overflow */ + if (!PyCodeObject_IsWarmedUp(co)) { + PyCodeObject_IncrementWarmup(co); + if (PyCodeObject_IsWarmedUp(co)) { + if (_Py_Quicken(co)) { + goto exit_eval_frame; + } + } + } + + names = co->co_names; consts = co->co_consts; fastlocals = f->f_localsptr; + first_instr = co->co_firstinstr; freevars = f->f_localsptr + co->co_nlocals; - assert(PyBytes_Check(co->co_code)); - assert(PyBytes_GET_SIZE(co->co_code) <= INT_MAX); - assert(PyBytes_GET_SIZE(co->co_code) % sizeof(_Py_CODEUNIT) == 0); - assert(_Py_IS_ALIGNED(PyBytes_AS_STRING(co->co_code), sizeof(_Py_CODEUNIT))); - first_instr = (_Py_CODEUNIT *) PyBytes_AS_STRING(co->co_code); /* f->f_lasti refers to the index of the last instruction, unless it's -1 in which case next_instr should be first_instr. @@ -1757,7 +1773,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) tracing_dispatch: f->f_lasti = INSTR_OFFSET(); - NEXTOPARG(); + TRACING_NEXTOPARG(); if (PyDTrace_LINE_ENABLED()) maybe_dtrace_line(f, &trace_info); diff --git a/Python/clinic/sysmodule.c.h b/Python/clinic/sysmodule.c.h index 04c84811498873..763fe7a96fefa9 100644 --- a/Python/clinic/sysmodule.c.h +++ b/Python/clinic/sysmodule.c.h @@ -710,6 +710,33 @@ sys_gettotalrefcount(PyObject *module, PyObject *Py_UNUSED(ignored)) #endif /* defined(Py_REF_DEBUG) */ +PyDoc_STRVAR(sys__getquickenedcount__doc__, +"_getquickenedcount($module, /)\n" +"--\n" +"\n"); + +#define SYS__GETQUICKENEDCOUNT_METHODDEF \ + {"_getquickenedcount", (PyCFunction)sys__getquickenedcount, METH_NOARGS, sys__getquickenedcount__doc__}, + +static Py_ssize_t +sys__getquickenedcount_impl(PyObject *module); + +static PyObject * +sys__getquickenedcount(PyObject *module, PyObject *Py_UNUSED(ignored)) +{ + PyObject *return_value = NULL; + Py_ssize_t _return_value; + + _return_value = sys__getquickenedcount_impl(module); + if ((_return_value == -1) && PyErr_Occurred()) { + goto exit; + } + return_value = PyLong_FromSsize_t(_return_value); + +exit: + return return_value; +} + PyDoc_STRVAR(sys_getallocatedblocks__doc__, "getallocatedblocks($module, /)\n" "--\n" @@ -983,4 +1010,4 @@ sys__deactivate_opcache(PyObject *module, PyObject *Py_UNUSED(ignored)) #ifndef SYS_GETANDROIDAPILEVEL_METHODDEF #define SYS_GETANDROIDAPILEVEL_METHODDEF #endif /* !defined(SYS_GETANDROIDAPILEVEL_METHODDEF) */ -/*[clinic end generated code: output=68c62b9ca317a0c8 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=e77bf636a177c5c3 input=a9049054013a1b77]*/ diff --git a/Python/specialize.c b/Python/specialize.c new file mode 100644 index 00000000000000..07152d80538307 --- /dev/null +++ b/Python/specialize.c @@ -0,0 +1,197 @@ + +#include "Python.h" +#include "pycore_code.h" +#include "opcode.h" + + +/* We layout the quickened data as a bi-directional array: + * Instructions upwards, cache entries downwards. + * first_instr is aligned to a SpecializedCacheEntry. + * The nth instruction is located at first_instr[n] + * The nth cache is located at ((SpecializedCacheEntry *)first_instr)[-1-n] + * The first (index 0) cache entry is reserved for the count, to enable finding + * the first instruction from the base pointer. + * The cache_count argument must include space for the count. + * We use the SpecializedCacheOrInstruction union to refer to the data + * to avoid type punning. + + Layout of quickened data, each line 8 bytes for M cache entries and N instructions: + + <---- co->co_quickened + + + ... + + <--- co->co_first_instr + + ... + +*/ + +Py_ssize_t _Py_QuickenedCount = 0; + +static SpecializedCacheOrInstruction * +allocate(int cache_count, int instruction_count) +{ + assert(sizeof(SpecializedCacheOrInstruction) == 2*sizeof(int32_t)); + assert(sizeof(SpecializedCacheEntry) == 2*sizeof(int32_t)); + assert(cache_count > 0); + assert(instruction_count > 0); + int count = cache_count + (instruction_count + INSTRUCTIONS_PER_ENTRY -1)/INSTRUCTIONS_PER_ENTRY; + SpecializedCacheOrInstruction *array = (SpecializedCacheOrInstruction *) + PyMem_Malloc(sizeof(SpecializedCacheOrInstruction) * count); + if (array == NULL) { + PyErr_NoMemory(); + return NULL; + } + _Py_QuickenedCount++; + array[0].entry.zero.cache_count = cache_count; + return array; +} + +static int +get_cache_count(SpecializedCacheOrInstruction *quickened) { + return quickened[0].entry.zero.cache_count; +} + +/* Map from opcode to adaptive opcode. + Values of zero are ignored. */ +static uint8_t adaptive_opcodes[256] = { 0 }; + +/* The number of cache entries required for a "family" of instructions. */ +static uint8_t cache_requirements[256] = { 0 }; + +/* Return the oparg for the cache_offset and instruction index. + * + * If no cache is needed then return the original oparg. + * If a cache is needed, but cannot be accessed because + * oparg would be too large, then return -1. + * + * Also updates the cache_offset, as it may need to be incremented by + * more than the cache requirements, if many instructions do not need caches. + * + * See pycore_code.h for details of how the cache offset, + * instruction index and oparg are related */ +static int +oparg_from_instruction_and_update_offset(int index, int opcode, int original_oparg, int *cache_offset) { + /* The instruction pointer in the interpreter points to the next + * instruction, so we compute the offset using nexti (index + 1) */ + int nexti = index + 1; + uint8_t need = cache_requirements[opcode]; + if (need == 0) { + return original_oparg; + } + assert(adaptive_opcodes[opcode] != 0); + int oparg = oparg_from_offset_and_nexti(*cache_offset, nexti); + assert(*cache_offset == offset_from_oparg_and_nexti(oparg, nexti)); + /* Some cache space is wasted here as the minimum possible offset is (nexti>>1) */ + if (oparg < 0) { + oparg = 0; + *cache_offset = offset_from_oparg_and_nexti(oparg, nexti); + } + else if (oparg > 255) { + return -1; + } + *cache_offset += need; + return oparg; +} + +static int +entries_needed(_Py_CODEUNIT *code, int len) +{ + int cache_offset = 0; + int previous_opcode = -1; + for (int i = 0; i < len; i++) { + uint8_t opcode = _Py_OPCODE(code[i]); + if (previous_opcode != EXTENDED_ARG) { + oparg_from_instruction_and_update_offset(i, opcode, 0, &cache_offset); + } + previous_opcode = opcode; + } + return cache_offset + 1; // One extra for the count entry +} + +static inline _Py_CODEUNIT * +first_instruction(SpecializedCacheOrInstruction *quickened) +{ + return &quickened[get_cache_count(quickened)].code[0]; +} + +/** Insert adaptive instructions and superinstructions. + * + * Skip instruction preceded by EXTENDED_ARG for adaptive + * instructions as those are both very rare and tricky + * to handle. + */ +static void +optimize(SpecializedCacheOrInstruction *quickened, int len) +{ + _Py_CODEUNIT *instructions = first_instruction(quickened); + int cache_offset = 0; + int previous_opcode = -1; + for(int i = 0; i < len; i++) { + int opcode = _Py_OPCODE(instructions[i]); + int oparg = _Py_OPARG(instructions[i]); + uint8_t adaptive_opcode = adaptive_opcodes[opcode]; + if (adaptive_opcode && previous_opcode != EXTENDED_ARG) { + int new_oparg = oparg_from_instruction_and_update_offset( + i, opcode, oparg, &cache_offset + ); + if (new_oparg < 0) { + /* Not possible to allocate a cache for this instruction */ + previous_opcode = opcode; + continue; + } + instructions[i] = _Py_MAKECODEUNIT(adaptive_opcode, new_oparg); + previous_opcode = adaptive_opcode; + int entries_needed = cache_requirements[opcode]; + if (entries_needed) { + /* Initialize the adpative cache entry */ + int cache0_offset = cache_offset-entries_needed; + SpecializedCacheEntry *cache = + _GetSpecializedCacheEntry(instructions, cache0_offset); + cache->adaptive.original_oparg = oparg; + cache->adaptive.counter = 0; + } + } + else { + /* Super instructions don't use the cache, + * so no need to update the offset. */ + switch (opcode) { + /* Insert superinstructions here + E.g. + case LOAD_FAST: + if (previous_opcode == LOAD_FAST) + instructions[i-1] = _Py_MAKECODEUNIT(LOAD_FAST__LOAD_FAST, oparg); + */ + } + previous_opcode = opcode; + } + } + assert(cache_offset+1 == get_cache_count(quickened)); +} + +int +_Py_Quicken(PyCodeObject *code) { + if (code->co_quickened) { + return 0; + } + Py_ssize_t size = PyBytes_GET_SIZE(code->co_code); + int instr_count = (int)(size/sizeof(_Py_CODEUNIT)); + if (instr_count > MAX_SIZE_TO_QUICKEN) { + code->co_warmup = QUICKENING_WARMUP_COLDEST; + return 0; + } + int entry_count = entries_needed(code->co_firstinstr, instr_count); + SpecializedCacheOrInstruction *quickened = allocate(entry_count, instr_count); + if (quickened == NULL) { + return -1; + } + _Py_CODEUNIT *new_instructions = first_instruction(quickened); + memcpy(new_instructions, code->co_firstinstr, size); + optimize(quickened, instr_count); + code->co_quickened = quickened; + code->co_firstinstr = new_instructions; + return 0; +} + diff --git a/Python/sysmodule.c b/Python/sysmodule.c index f1f4492f83c7b1..b71a096eaa0fcb 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -18,6 +18,7 @@ Data members: #include "pycore_ceval.h" // _Py_RecursionLimitLowerWaterMark() #include "pycore_initconfig.h" // _PyStatus_EXCEPTION() #include "pycore_object.h" // _PyObject_IS_GC() +#include "pycore_code.h" // _Py_QuickenedCount #include "pycore_pathconfig.h" // _PyPathConfig_ComputeSysPath0() #include "pycore_pyerrors.h" // _PyErr_Fetch() #include "pycore_pylifecycle.h" // _PyErr_WriteUnraisableDefaultHook() @@ -1763,8 +1764,20 @@ sys_gettotalrefcount_impl(PyObject *module) { return _Py_GetRefTotal(); } + #endif /* Py_REF_DEBUG */ +/*[clinic input] +sys._getquickenedcount -> Py_ssize_t +[clinic start generated code]*/ + +static Py_ssize_t +sys__getquickenedcount_impl(PyObject *module) +/*[clinic end generated code: output=1ab259e7f91248a2 input=249d448159eca912]*/ +{ + return _Py_QuickenedCount; +} + /*[clinic input] sys.getallocatedblocks -> Py_ssize_t @@ -1995,6 +2008,7 @@ static PyMethodDef sys_methods[] = { #endif SYS_GETFILESYSTEMENCODING_METHODDEF SYS_GETFILESYSTEMENCODEERRORS_METHODDEF + SYS__GETQUICKENEDCOUNT_METHODDEF #ifdef Py_TRACE_REFS {"getobjects", _Py_GetObjects, METH_VARARGS}, #endif From webhook-mailer at python.org Mon Jun 7 14:22:48 2021 From: webhook-mailer at python.org (ericsnowcurrently) Date: Mon, 07 Jun 2021 18:22:48 -0000 Subject: [Python-checkins] bpo-43693: Un-revert commits 2c1e258 and b2bf2bc. (gh-26577) Message-ID: https://github.com/python/cpython/commit/2ab27c4af4ddf7528e1375e77c787c7fbb09b5e6 commit: 2ab27c4af4ddf7528e1375e77c787c7fbb09b5e6 branch: main author: Eric Snow committer: ericsnowcurrently date: 2021-06-07T12:22:26-06:00 summary: bpo-43693: Un-revert commits 2c1e258 and b2bf2bc. (gh-26577) These were reverted in gh-26530 (commit 17c4edc) due to refleaks. * 2c1e258 - Compute deref offsets in compiler (gh-25152) * b2bf2bc - Add new internal code objects fields: co_fastlocalnames and co_fastlocalkinds. (gh-26388) This change fixes the refleaks. https://bugs.python.org/issue43693 files: A Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst A Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst M Doc/library/dis.rst M Include/cpython/code.h M Include/internal/pycore_code.h M Lib/ctypes/test/test_values.py M Lib/dis.py M Lib/importlib/_bootstrap_external.py M Lib/test/test_dis.py M Objects/clinic/codeobject.c.h M Objects/codeobject.c M Objects/frameobject.c M Objects/typeobject.c M Programs/test_frozenmain.h M Python/ceval.c M Python/compile.c M Python/frozen_hello.h M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h M Python/marshal.c M Python/suggestions.c M Tools/gdb/libpython.py diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index a4746bcabc76bc..bc206f7d2e96af 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1058,17 +1058,24 @@ All of the following opcodes use their arguments. .. opcode:: LOAD_CLOSURE (i) - Pushes a reference to the cell contained in slot *i* of the cell and free - variable storage. The name of the variable is ``co_cellvars[i]`` if *i* is - less than the length of *co_cellvars*. Otherwise it is ``co_freevars[i - - len(co_cellvars)]``. + Pushes a reference to the cell contained in slot ``i`` of the "fast locals" + storage. The name of the variable is ``co_fastlocalnames[i]``. + + Note that ``LOAD_CLOSURE`` is effectively an alias for ``LOAD_FAST``. + It exists to keep bytecode a little more readable. + + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. .. opcode:: LOAD_DEREF (i) - Loads the cell contained in slot *i* of the cell and free variable storage. + Loads the cell contained in slot ``i`` of the "fast locals" storage. Pushes a reference to the object the cell contains on the stack. + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. + .. opcode:: LOAD_CLASSDEREF (i) @@ -1078,20 +1085,29 @@ All of the following opcodes use their arguments. .. versionadded:: 3.4 + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. + .. opcode:: STORE_DEREF (i) - Stores TOS into the cell contained in slot *i* of the cell and free variable + Stores TOS into the cell contained in slot ``i`` of the "fast locals" storage. + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. + .. opcode:: DELETE_DEREF (i) - Empties the cell contained in slot *i* of the cell and free variable storage. + Empties the cell contained in slot ``i`` of the "fast locals" storage. Used by the :keyword:`del` statement. .. versionadded:: 3.2 + .. versionchanged:: 3.11 + ``i`` is no longer offset by the length of ``co_varnames``. + .. opcode:: RAISE_VARARGS (argc) diff --git a/Include/cpython/code.h b/Include/cpython/code.h index 98d728bf96269c..c81f9f3395e4e1 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -3,6 +3,8 @@ #endif typedef uint16_t _Py_CODEUNIT; +// Each oparg must fit in the second half of _Py_CODEUNIT, hence 8 bits. +#define _Py_MAX_OPARG 255 #ifdef WORDS_BIGENDIAN # define _Py_OPCODE(word) ((word) >> 8) @@ -16,6 +18,11 @@ typedef uint16_t _Py_CODEUNIT; typedef struct _PyOpcache _PyOpcache; + +// These are duplicated from pycore_code.h. +typedef unsigned char _PyLocalsPlusKind; +typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; + /* Bytecode object */ struct PyCodeObject { PyObject_HEAD @@ -47,7 +54,9 @@ struct PyCodeObject { // The hottest fields (in the eval loop) are grouped here at the top. PyObject *co_consts; /* list (constants used) */ PyObject *co_names; /* list of strings (names used) */ - _Py_CODEUNIT *co_firstinstr; /* Pointer to first instruction, used for quickening */ + _Py_CODEUNIT *co_firstinstr; /* Pointer to first instruction, used for quickening. + Unlike the other "hot" fields, this one is + actually derived from co_code. */ PyObject *co_exceptiontable; /* Byte string encoding exception handling table */ int co_flags; /* CO_..., see below */ int co_warmup; /* Warmup counter for quickening */ @@ -59,9 +68,8 @@ struct PyCodeObject { int co_stacksize; /* #entries needed for evaluation stack */ int co_firstlineno; /* first source line number */ PyObject *co_code; /* instruction opcodes */ - PyObject *co_varnames; /* tuple of strings (local variable names) */ - PyObject *co_cellvars; /* tuple of strings (cell variable names) */ - PyObject *co_freevars; /* tuple of strings (free variable names) */ + PyObject *co_localsplusnames; /* tuple mapping offsets to names */ + _PyLocalsPlusKinds co_localspluskinds; /* array mapping to local kinds */ PyObject *co_filename; /* unicode (where it was loaded from) */ PyObject *co_name; /* unicode (name, for reference) */ PyObject *co_linetable; /* string (encoding addr<->lineno mapping) See @@ -70,11 +78,15 @@ struct PyCodeObject { /* These fields are set with computed values on new code objects. */ int *co_cell2arg; /* Maps cell vars which are arguments. */ - // These are redundant but offer some performance benefit. + // redundant values (derived from co_localsplusnames and co_localspluskinds) int co_nlocalsplus; /* number of local + cell + free variables */ int co_nlocals; /* number of local variables */ int co_ncellvars; /* number of cell variables */ int co_nfreevars; /* number of free variables */ + // lazily-computed values + PyObject *co_varnames; /* tuple of strings (local variable names) */ + PyObject *co_cellvars; /* tuple of strings (cell variable names) */ + PyObject *co_freevars; /* tuple of strings (free variable names) */ /* The remaining fields are zeroed out on new code objects. */ @@ -152,7 +164,7 @@ struct PyCodeObject { PyAPI_DATA(PyTypeObject) PyCode_Type; #define PyCode_Check(op) Py_IS_TYPE(op, &PyCode_Type) -#define PyCode_GetNumFree(op) (PyTuple_GET_SIZE((op)->co_freevars)) +#define PyCode_GetNumFree(op) ((op)->co_nfreevars) /* Public interface */ PyAPI_FUNC(PyCodeObject *) PyCode_New( diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index cb723503499529..d1ff597bf54610 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -150,6 +150,58 @@ int _Py_Quicken(PyCodeObject *code); extern Py_ssize_t _Py_QuickenedCount; + +/* "Locals plus" for a code object is the set of locals + cell vars + + * free vars. This relates to variable names as well as offsets into + * the "fast locals" storage array of execution frames. The compiler + * builds the list of names, their offsets, and the corresponding + * kind of local. + * + * Those kinds represent the source of the initial value and the + * variable's scope (as related to closures). A "local" is an + * argument or other variable defined in the current scope. A "free" + * variable is one that is defined in an outer scope and comes from + * the function's closure. A "cell" variable is a local that escapes + * into an inner function as part of a closure, and thus must be + * wrapped in a cell. Any "local" can also be a "cell", but the + * "free" kind is mutually exclusive with both. + */ + +// We would use an enum if C let us specify the storage type. +typedef unsigned char _PyLocalsPlusKind; +/* Note that these all fit within _PyLocalsPlusKind, as do combinations. */ +// Later, we will use the smaller numbers to differentiate the different +// kinds of locals (e.g. pos-only arg, varkwargs, local-only). +#define CO_FAST_LOCAL 0x20 +#define CO_FAST_CELL 0x40 +#define CO_FAST_FREE 0x80 + +typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; + +static inline int +_PyCode_InitLocalsPlusKinds(int num, _PyLocalsPlusKinds *pkinds) +{ + if (num == 0) { + *pkinds = NULL; + return 0; + } + _PyLocalsPlusKinds kinds = PyMem_NEW(_PyLocalsPlusKind, num); + if (kinds == NULL) { + PyErr_NoMemory(); + return -1; + } + *pkinds = kinds; + return 0; +} + +static inline void +_PyCode_ClearLocalsPlusKinds(_PyLocalsPlusKinds kinds) +{ + if (kinds != NULL) { + PyMem_Free(kinds); + } +} + struct _PyCodeConstructor { /* metadata */ PyObject *filename; @@ -166,13 +218,13 @@ struct _PyCodeConstructor { PyObject *names; /* mapping frame offsets to information */ - PyObject *varnames; - PyObject *cellvars; - PyObject *freevars; + PyObject *localsplusnames; + _PyLocalsPlusKinds localspluskinds; /* args (within varnames) */ int argcount; int posonlyargcount; + // XXX Replace argcount with posorkwargcount (argcount - posonlyargcount). int kwonlyargcount; /* needed to create the frame */ @@ -199,6 +251,11 @@ PyAPI_FUNC(PyCodeObject *) _PyCode_New(struct _PyCodeConstructor *); int _PyCode_InitOpcache(PyCodeObject *co); +/* Getters for internal PyCodeObject data. */ +PyAPI_FUNC(PyObject *) _PyCode_GetVarnames(PyCodeObject *); +PyAPI_FUNC(PyObject *) _PyCode_GetCellvars(PyCodeObject *); +PyAPI_FUNC(PyObject *) _PyCode_GetFreevars(PyCodeObject *); + #ifdef __cplusplus } diff --git a/Lib/ctypes/test/test_values.py b/Lib/ctypes/test/test_values.py index 92c3c284f2359c..5aa0d75fcbf0cb 100644 --- a/Lib/ctypes/test/test_values.py +++ b/Lib/ctypes/test/test_values.py @@ -80,9 +80,9 @@ class struct_frozen(Structure): continue items.append((entry.name.decode("ascii"), entry.size)) - expected = [("__hello__", 138), - ("__phello__", -138), - ("__phello__.spam", 138), + expected = [("__hello__", 128), + ("__phello__", -128), + ("__phello__.spam", 128), ] self.assertEqual(items, expected, "PyImport_FrozenModules example " "in Doc/library/ctypes.rst may be out of date") diff --git a/Lib/dis.py b/Lib/dis.py index bc7c4d4a8d52c0..48a6ab8e41df3f 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -273,15 +273,15 @@ def get_instructions(x, *, first_line=None): the disassembled code object. """ co = _get_code_object(x) - cell_names = co.co_cellvars + co.co_freevars linestarts = dict(findlinestarts(co)) if first_line is not None: line_offset = first_line - co.co_firstlineno else: line_offset = 0 - return _get_instructions_bytes(co.co_code, co.co_varnames, co.co_names, - co.co_consts, cell_names, linestarts, - line_offset) + return _get_instructions_bytes(co.co_code, + co._varname_from_oparg, + co.co_names, co.co_consts, + linestarts, line_offset) def _get_const_info(const_index, const_list): """Helper to get optional details about const references @@ -295,7 +295,7 @@ def _get_const_info(const_index, const_list): argval = const_list[const_index] return argval, repr(argval) -def _get_name_info(name_index, name_list): +def _get_name_info(name_index, get_name, **extrainfo): """Helper to get optional details about named references Returns the dereferenced name as both value and repr if the name @@ -303,8 +303,8 @@ def _get_name_info(name_index, name_list): Otherwise returns the name index and its repr(). """ argval = name_index - if name_list is not None: - argval = name_list[name_index] + if get_name is not None: + argval = get_name(name_index, **extrainfo) argrepr = argval else: argrepr = repr(argval) @@ -336,8 +336,10 @@ def parse_exception_table(code): except StopIteration: return entries -def _get_instructions_bytes(code, varnames=None, names=None, constants=None, - cells=None, linestarts=None, line_offset=0, exception_entries=()): +def _get_instructions_bytes(code, varname_from_oparg=None, + names=None, constants=None, + linestarts=None, line_offset=0, + exception_entries=()): """Iterate over the instructions in a bytecode string. Generates a sequence of Instruction namedtuples giving the details of each @@ -346,6 +348,7 @@ def _get_instructions_bytes(code, varnames=None, names=None, constants=None, arguments. """ + get_name = None if names is None else names.__getitem__ labels = set(findlabels(code)) for start, end, target, _, _ in exception_entries: for i in range(start, end): @@ -368,20 +371,18 @@ def _get_instructions_bytes(code, varnames=None, names=None, constants=None, if op in hasconst: argval, argrepr = _get_const_info(arg, constants) elif op in hasname: - argval, argrepr = _get_name_info(arg, names) + argval, argrepr = _get_name_info(arg, get_name) elif op in hasjabs: argval = arg*2 argrepr = "to " + repr(argval) elif op in hasjrel: argval = offset + 2 + arg*2 argrepr = "to " + repr(argval) - elif op in haslocal: - argval, argrepr = _get_name_info(arg, varnames) + elif op in haslocal or op in hasfree: + argval, argrepr = _get_name_info(arg, varname_from_oparg) elif op in hascompare: argval = cmp_op[arg] argrepr = argval - elif op in hasfree: - argval, argrepr = _get_name_info(arg, cells) elif op == FORMAT_VALUE: argval, argrepr = FORMAT_VALUE_CONVERTERS[arg & 0x3] argval = (argval, bool(arg & 0x4)) @@ -398,11 +399,11 @@ def _get_instructions_bytes(code, varnames=None, names=None, constants=None, def disassemble(co, lasti=-1, *, file=None): """Disassemble a code object.""" - cell_names = co.co_cellvars + co.co_freevars linestarts = dict(findlinestarts(co)) exception_entries = parse_exception_table(co) - _disassemble_bytes(co.co_code, lasti, co.co_varnames, co.co_names, - co.co_consts, cell_names, linestarts, file=file, + _disassemble_bytes(co.co_code, lasti, + co._varname_from_oparg, + co.co_names, co.co_consts, linestarts, file=file, exception_entries=exception_entries) def _disassemble_recursive(co, *, file=None, depth=None): @@ -416,8 +417,8 @@ def _disassemble_recursive(co, *, file=None, depth=None): print("Disassembly of %r:" % (x,), file=file) _disassemble_recursive(x, file=file, depth=depth) -def _disassemble_bytes(code, lasti=-1, varnames=None, names=None, - constants=None, cells=None, linestarts=None, +def _disassemble_bytes(code, lasti=-1, varname_from_oparg=None, + names=None, constants=None, linestarts=None, *, file=None, line_offset=0, exception_entries=()): # Omit the line number column entirely if we have no line number info show_lineno = bool(linestarts) @@ -434,8 +435,8 @@ def _disassemble_bytes(code, lasti=-1, varnames=None, names=None, offset_width = len(str(maxoffset)) else: offset_width = 4 - for instr in _get_instructions_bytes(code, varnames, names, - constants, cells, linestarts, + for instr in _get_instructions_bytes(code, varname_from_oparg, names, + constants, linestarts, line_offset=line_offset, exception_entries=exception_entries): new_source_line = (show_lineno and instr.starts_line is not None and @@ -517,7 +518,6 @@ def __init__(self, x, *, first_line=None, current_offset=None): else: self.first_line = first_line self._line_offset = first_line - co.co_firstlineno - self._cell_names = co.co_cellvars + co.co_freevars self._linestarts = dict(findlinestarts(co)) self._original_object = x self.current_offset = current_offset @@ -525,8 +525,9 @@ def __init__(self, x, *, first_line=None, current_offset=None): def __iter__(self): co = self.codeobj - return _get_instructions_bytes(co.co_code, co.co_varnames, co.co_names, - co.co_consts, self._cell_names, + return _get_instructions_bytes(co.co_code, + co._varname_from_oparg, + co.co_names, co.co_consts, self._linestarts, line_offset=self._line_offset, exception_entries=self.exception_entries) @@ -554,9 +555,9 @@ def dis(self): else: offset = -1 with io.StringIO() as output: - _disassemble_bytes(co.co_code, varnames=co.co_varnames, + _disassemble_bytes(co.co_code, + varname_from_oparg=co._varname_from_oparg, names=co.co_names, constants=co.co_consts, - cells=self._cell_names, linestarts=self._linestarts, line_offset=self._line_offset, file=output, diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index ee720f84a4b0f9..39552186c8735d 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -355,6 +355,8 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3450 Use exception table for unwinding ("zero cost" exception handling) # Python 3.11a1 3451 (Add CALL_METHOD_KW) # Python 3.11a1 3452 (drop nlocals from marshaled code objects) +# Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds) +# Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -364,7 +366,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3452).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3454).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index f341a3e5750349..b119d183d66c10 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -427,7 +427,7 @@ def foo(x): return foo dis_nested_0 = """\ -%3d 0 LOAD_CLOSURE 0 (y) +%3d 0 LOAD_CLOSURE 2 (y) 2 BUILD_TUPLE 1 4 LOAD_CONST 1 () 6 LOAD_CONST 2 ('_h..foo') @@ -444,12 +444,12 @@ def foo(x): dis_nested_1 = """%s Disassembly of : -%3d 0 LOAD_CLOSURE 0 (x) +%3d 0 LOAD_CLOSURE 1 (x) 2 BUILD_TUPLE 1 4 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) 6 LOAD_CONST 2 ('_h..foo..') 8 MAKE_FUNCTION 8 (closure) - 10 LOAD_DEREF 1 (y) + 10 LOAD_DEREF 2 (y) 12 GET_ITER 14 CALL_FUNCTION 1 16 RETURN_VALUE @@ -467,7 +467,7 @@ def foo(x): 2 LOAD_FAST 0 (.0) >> 4 FOR_ITER 6 (to 18) 6 STORE_FAST 1 (z) - 8 LOAD_DEREF 0 (x) + 8 LOAD_DEREF 2 (x) 10 LOAD_FAST 1 (z) 12 BINARY_ADD 14 LIST_APPEND 2 @@ -962,16 +962,16 @@ def jumpy(): Instruction = dis.Instruction expected_opinfo_outer = [ Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=0, starts_line=2, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=6, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=10, starts_line=None, is_jump_target=False), Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=14, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=16, starts_line=7, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=22, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=24, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=26, starts_line=None, is_jump_target=False), @@ -985,20 +985,20 @@ def jumpy(): expected_opinfo_f = [ Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=0, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=0, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=1, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=5, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=6, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=12, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=14, starts_line=None, is_jump_target=False), Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=18, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=6, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=30, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=32, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=34, starts_line=6, is_jump_target=False), @@ -1007,10 +1007,10 @@ def jumpy(): expected_opinfo_inner = [ Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=0, starts_line=4, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=0, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=1, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6, argrepr='', offset=14, starts_line=None, is_jump_target=False), diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst new file mode 100644 index 00000000000000..948c4d52482dc0 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-02-15-02-16.bpo-43693.l3Ureu.rst @@ -0,0 +1,4 @@ +Compute cell offsets relative to locals in compiler. Allows the interpreter +to treats locals and cells a single array, which is slightly more efficient. +Also make the LOAD_CLOSURE opcode an alias for LOAD_FAST. Preserving +LOAD_CLOSURE helps keep bytecode a bit more readable. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst new file mode 100644 index 00000000000000..83b7ba260e6a22 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-05-21-20-53-49.bpo-43693.-NN3J_.rst @@ -0,0 +1,3 @@ +``PyCodeObject`` gained ``co_fastlocalnames`` and ``co_fastlocalkinds`` as +the the authoritative source of fast locals info. Marshaled code objects +have changed accordingly. diff --git a/Objects/clinic/codeobject.c.h b/Objects/clinic/codeobject.c.h index 7ffdf07e49ada0..c1ad09cea05890 100644 --- a/Objects/clinic/codeobject.c.h +++ b/Objects/clinic/codeobject.c.h @@ -373,4 +373,41 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje exit: return return_value; } -/*[clinic end generated code: output=a272b22f63ea002e input=a9049054013a1b77]*/ + +PyDoc_STRVAR(code__varname_from_oparg__doc__, +"_varname_from_oparg($self, /, oparg)\n" +"--\n" +"\n" +"(internal-only) Return the local variable name for the given oparg.\n" +"\n" +"WARNING: this method is for internal use only and may change or go away."); + +#define CODE__VARNAME_FROM_OPARG_METHODDEF \ + {"_varname_from_oparg", (PyCFunction)(void(*)(void))code__varname_from_oparg, METH_FASTCALL|METH_KEYWORDS, code__varname_from_oparg__doc__}, + +static PyObject * +code__varname_from_oparg_impl(PyCodeObject *self, int oparg); + +static PyObject * +code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"oparg", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "_varname_from_oparg", 0}; + PyObject *argsbuf[1]; + int oparg; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); + if (!args) { + goto exit; + } + oparg = _PyLong_AsInt(args[0]); + if (oparg == -1 && PyErr_Occurred()) { + goto exit; + } + return_value = code__varname_from_oparg_impl(self, oparg); + +exit: + return return_value; +} +/*[clinic end generated code: output=ba4c5487e0364ce8 input=a9049054013a1b77]*/ diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 768f5d1d7ee295..1a99ec361e6b5b 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -154,6 +154,93 @@ validate_and_copy_tuple(PyObject *tup) * _PyCode_New() ******************/ +// This is also used in compile.c. +void +_Py_set_localsplus_info(int offset, PyObject *name, _PyLocalsPlusKind kind, + PyObject *names, _PyLocalsPlusKinds kinds) +{ + Py_INCREF(name); + PyTuple_SET_ITEM(names, offset, name); + kinds[offset] = kind; + + if (kind == CO_FAST_CELL) { + // Cells can overlap with args, so mark those cases. + int nlocalsplus = (int)PyTuple_GET_SIZE(names); + for (int i = 0; i < nlocalsplus; i++) { + _PyLocalsPlusKind kind = kinds[i]; + if (kind && !(kind & CO_FAST_LOCAL)) { + // We've moved past the locals. + break; + } + PyObject *varname = PyTuple_GET_ITEM(names, i); + int cmp = PyUnicode_Compare(name, varname); + if (cmp == 0) { + kinds[i] |= CO_FAST_CELL; + break; + } + assert(cmp > 0 || !PyErr_Occurred()); + } + } +} + +static void +get_localsplus_counts(PyObject *names, _PyLocalsPlusKinds kinds, + int *pnlocals, int *pncellvars, + int *pnfreevars) +{ + int nlocals = 0; + int ncellvars = 0; + int nfreevars = 0; + int nlocalsplus = Py_SAFE_DOWNCAST(PyTuple_GET_SIZE(names), + Py_ssize_t, int); + for (int i = 0; i < nlocalsplus; i++) { + if (kinds[i] & CO_FAST_LOCAL) { + nlocals += 1; + } + else if (kinds[i] & CO_FAST_CELL) { + ncellvars += 1; + } + else if (kinds[i] & CO_FAST_FREE) { + nfreevars += 1; + } + } + if (pnlocals != NULL) { + *pnlocals = nlocals; + } + if (pncellvars != NULL) { + *pncellvars = ncellvars; + } + if (pnfreevars != NULL) { + *pnfreevars = nfreevars; + } +} + +static PyObject * +get_localsplus_names(PyCodeObject *co, _PyLocalsPlusKind kind, int num) +{ + PyObject *names = PyTuple_New(num); + if (names == NULL) { + return NULL; + } + int index = 0; + for (int offset = 0; offset < co->co_nlocalsplus; offset++) { + if ((co->co_localspluskinds[offset] & kind) == 0) { + continue; + } + // For now there may be duplicates, which we ignore. + if (kind == CO_FAST_CELL && co->co_localspluskinds[offset] != kind) { + continue; + } + assert(index < num); + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, offset); + Py_INCREF(name); + PyTuple_SET_ITEM(names, index, name); + index += 1; + } + assert(index == num); + return names; +} + int _PyCode_Validate(struct _PyCodeConstructor *con) { @@ -164,9 +251,9 @@ _PyCode_Validate(struct _PyCodeConstructor *con) con->code == NULL || !PyBytes_Check(con->code) || con->consts == NULL || !PyTuple_Check(con->consts) || con->names == NULL || !PyTuple_Check(con->names) || - con->varnames == NULL || !PyTuple_Check(con->varnames) || - con->freevars == NULL || !PyTuple_Check(con->freevars) || - con->cellvars == NULL || !PyTuple_Check(con->cellvars) || + con->localsplusnames == NULL || !PyTuple_Check(con->localsplusnames) || + (PyTuple_GET_SIZE(con->localsplusnames) && con->localspluskinds == NULL) || + (!PyTuple_GET_SIZE(con->localsplusnames) && con->localspluskinds != NULL) || con->name == NULL || !PyUnicode_Check(con->name) || con->filename == NULL || !PyUnicode_Check(con->filename) || con->linetable == NULL || !PyBytes_Check(con->linetable) || @@ -180,20 +267,30 @@ _PyCode_Validate(struct _PyCodeConstructor *con) a long running assumption in ceval.c and many parts of the interpreter. */ if (PyBytes_GET_SIZE(con->code) > INT_MAX) { - PyErr_SetString(PyExc_OverflowError, "co_code larger than INT_MAX"); + PyErr_SetString(PyExc_OverflowError, + "code: co_code larger than INT_MAX"); + return -1; + } + if (PyBytes_GET_SIZE(con->code) % sizeof(_Py_CODEUNIT) != 0 || + !_Py_IS_ALIGNED(PyBytes_AS_STRING(con->code), sizeof(_Py_CODEUNIT)) + ) { + PyErr_SetString(PyExc_ValueError, "code: co_code is malformed"); return -1; } /* Ensure that the co_varnames has enough names to cover the arg counts. * Note that totalargs = nlocals - nplainlocals. We check nplainlocals * here to avoid the possibility of overflow (however remote). */ - int nplainlocals = (int)PyTuple_GET_SIZE(con->varnames) - + int nlocals; + get_localsplus_counts(con->localsplusnames, con->localspluskinds, + &nlocals, NULL, NULL); + int nplainlocals = nlocals - con->argcount - con->kwonlyargcount - ((con->flags & CO_VARARGS) != 0) - ((con->flags & CO_VARKEYWORDS) != 0); if (nplainlocals < 0) { - PyErr_SetString(PyExc_ValueError, "code: varnames is too small"); + PyErr_SetString(PyExc_ValueError, "code: co_varnames is too small"); return -1; } @@ -203,6 +300,11 @@ _PyCode_Validate(struct _PyCodeConstructor *con) static void init_code(PyCodeObject *co, struct _PyCodeConstructor *con) { + int nlocalsplus = (int)PyTuple_GET_SIZE(con->localsplusnames); + int nlocals, ncellvars, nfreevars; + get_localsplus_counts(con->localsplusnames, con->localspluskinds, + &nlocals, &ncellvars, &nfreevars); + Py_INCREF(con->filename); co->co_filename = con->filename; Py_INCREF(con->name); @@ -221,12 +323,10 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) Py_INCREF(con->names); co->co_names = con->names; - Py_INCREF(con->varnames); - co->co_varnames = con->varnames; - Py_INCREF(con->cellvars); - co->co_cellvars = con->cellvars; - Py_INCREF(con->freevars); - co->co_freevars = con->freevars; + Py_INCREF(con->localsplusnames); + co->co_localsplusnames = con->localsplusnames; + // We take ownership of the kinds array. + co->co_localspluskinds = con->localspluskinds; co->co_argcount = con->argcount; co->co_posonlyargcount = con->posonlyargcount; @@ -239,10 +339,13 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) /* derived values */ co->co_cell2arg = NULL; // This will be set soon. - co->co_nlocals = (int)PyTuple_GET_SIZE(con->varnames); - co->co_ncellvars = (int)PyTuple_GET_SIZE(con->cellvars); - co->co_nfreevars = (int)PyTuple_GET_SIZE(con->freevars); - co->co_nlocalsplus = co->co_nlocals + co->co_ncellvars + co->co_nfreevars; + co->co_nlocalsplus = nlocalsplus; + co->co_nlocals = nlocals; + co->co_ncellvars = ncellvars; + co->co_nfreevars = nfreevars; + co->co_varnames = NULL; + co->co_cellvars = NULL; + co->co_freevars = NULL; /* not set */ co->co_weakreflist = NULL; @@ -274,24 +377,10 @@ _PyCode_New(struct _PyCodeConstructor *con) if (intern_string_constants(con->consts, NULL) < 0) { return NULL; } - if (intern_strings(con->varnames) < 0) { - return NULL; - } - if (intern_strings(con->freevars) < 0) { - return NULL; - } - if (intern_strings(con->cellvars) < 0) { + if (intern_strings(con->localsplusnames) < 0) { return NULL; } - /* Check for any inner or outer closure references */ - int ncellvars = (int)PyTuple_GET_SIZE(con->cellvars); - if (!ncellvars && !PyTuple_GET_SIZE(con->freevars)) { - con->flags |= CO_NOFREE; - } else { - con->flags &= ~CO_NOFREE; - } - PyCodeObject *co = PyObject_New(PyCodeObject, &PyCode_Type); if (co == NULL) { PyErr_NoMemory(); @@ -299,18 +388,26 @@ _PyCode_New(struct _PyCodeConstructor *con) } init_code(co, con); + /* Check for any inner or outer closure references */ + if (!co->co_ncellvars && !co->co_nfreevars) { + co->co_flags |= CO_NOFREE; + } else { + co->co_flags &= ~CO_NOFREE; + } + /* Create mapping between cells and arguments if needed. */ - if (ncellvars) { + if (co->co_ncellvars) { int totalargs = co->co_argcount + co->co_kwonlyargcount + ((co->co_flags & CO_VARARGS) != 0) + ((co->co_flags & CO_VARKEYWORDS) != 0); assert(totalargs <= co->co_nlocals); /* Find cells which are also arguments. */ - for (int i = 0; i < ncellvars; i++) { - PyObject *cellname = PyTuple_GET_ITEM(co->co_cellvars, i); + for (int i = 0; i < co->co_ncellvars; i++) { + PyObject *cellname = PyTuple_GET_ITEM(co->co_localsplusnames, + i + co->co_nlocals); for (int j = 0; j < totalargs; j++) { - PyObject *argname = PyTuple_GET_ITEM(co->co_varnames, j); + PyObject *argname = PyTuple_GET_ITEM(co->co_localsplusnames, j); int cmp = PyUnicode_Compare(cellname, argname); if (cmp == -1 && PyErr_Occurred()) { Py_DECREF(co); @@ -318,13 +415,13 @@ _PyCode_New(struct _PyCodeConstructor *con) } if (cmp == 0) { if (co->co_cell2arg == NULL) { - co->co_cell2arg = PyMem_NEW(int, ncellvars); + co->co_cell2arg = PyMem_NEW(int, co->co_ncellvars); if (co->co_cell2arg == NULL) { Py_DECREF(co); PyErr_NoMemory(); return NULL; } - for (int k = 0; k < ncellvars; k++) { + for (int k = 0; k < co->co_ncellvars; k++) { co->co_cell2arg[k] = CO_CELL_NOT_AN_ARG; } } @@ -352,6 +449,47 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, PyObject *filename, PyObject *name, int firstlineno, PyObject *linetable, PyObject *exceptiontable) { + PyCodeObject *co = NULL; + PyObject *localsplusnames = NULL; + _PyLocalsPlusKinds localspluskinds = NULL; + + if (varnames == NULL || !PyTuple_Check(varnames) || + cellvars == NULL || !PyTuple_Check(cellvars) || + freevars == NULL || !PyTuple_Check(freevars) + ) { + PyErr_BadInternalCall(); + return NULL; + } + + // Set the "fast locals plus" info. + int nvarnames = (int)PyTuple_GET_SIZE(varnames); + int ncellvars = (int)PyTuple_GET_SIZE(cellvars); + int nfreevars = (int)PyTuple_GET_SIZE(freevars); + int nlocalsplus = nvarnames + ncellvars + nfreevars; + localsplusnames = PyTuple_New(nlocalsplus); + if (localsplusnames == NULL) { + goto error; + } + if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { + goto error; + } + int offset = 0; + for (int i = 0; i < nvarnames; i++, offset++) { + PyObject *name = PyTuple_GET_ITEM(varnames, i); + _Py_set_localsplus_info(offset, name, CO_FAST_LOCAL, + localsplusnames, localspluskinds); + } + for (int i = 0; i < ncellvars; i++, offset++) { + PyObject *name = PyTuple_GET_ITEM(cellvars, i); + _Py_set_localsplus_info(offset, name, CO_FAST_CELL, + localsplusnames, localspluskinds); + } + for (int i = 0; i < nfreevars; i++, offset++) { + PyObject *name = PyTuple_GET_ITEM(freevars, i); + _Py_set_localsplus_info(offset, name, CO_FAST_FREE, + localsplusnames, localspluskinds); + } + struct _PyCodeConstructor con = { .filename = filename, .name = name, @@ -364,9 +502,8 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, .consts = consts, .names = names, - .varnames = varnames, - .cellvars = cellvars, - .freevars = freevars, + .localsplusnames = localsplusnames, + .localspluskinds = localspluskinds, .argcount = argcount, .posonlyargcount = posonlyargcount, @@ -376,18 +513,35 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, .exceptiontable = exceptiontable, }; + if (_PyCode_Validate(&con) < 0) { - return NULL; + goto error; } assert(PyBytes_GET_SIZE(code) % sizeof(_Py_CODEUNIT) == 0); assert(_Py_IS_ALIGNED(PyBytes_AS_STRING(code), sizeof(_Py_CODEUNIT))); if (nlocals != PyTuple_GET_SIZE(varnames)) { PyErr_SetString(PyExc_ValueError, "code: co_nlocals != len(co_varnames)"); - return NULL; + goto error; } - return _PyCode_New(&con); + co = _PyCode_New(&con); + if (co == NULL) { + goto error; + } + + localspluskinds = NULL; // This keeps it from getting freed below. + Py_INCREF(varnames); + co->co_varnames = varnames; + Py_INCREF(cellvars); + co->co_cellvars = cellvars; + Py_INCREF(freevars); + co->co_freevars = freevars; + +error: + Py_XDECREF(localsplusnames); + _PyCode_ClearLocalsPlusKinds(localspluskinds); + return co; } PyCodeObject * @@ -438,9 +592,7 @@ PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno) .linetable = emptystring, .consts = nulltuple, .names = nulltuple, - .varnames = nulltuple, - .cellvars = nulltuple, - .freevars = nulltuple, + .localsplusnames = nulltuple, .exceptiontable = emptystring, }; result = _PyCode_New(&con); @@ -883,6 +1035,56 @@ _PyCode_SetExtra(PyObject *code, Py_ssize_t index, void *extra) } +/****************** + * other PyCodeObject accessor functions + ******************/ + +PyObject * +_PyCode_GetVarnames(PyCodeObject *co) +{ + if (co->co_varnames == NULL) { + // PyCodeObject owns this reference. + co->co_varnames = get_localsplus_names(co, CO_FAST_LOCAL, + co->co_nlocals); + if (co->co_varnames == NULL) { + return NULL; + } + } + Py_INCREF(co->co_varnames); + return co->co_varnames; +} + +PyObject * +_PyCode_GetCellvars(PyCodeObject *co) +{ + if (co->co_cellvars == NULL) { + // PyCodeObject owns this reference. + co->co_cellvars = get_localsplus_names(co, CO_FAST_CELL, + co->co_ncellvars); + if (co->co_cellvars == NULL) { + return NULL; + } + } + Py_INCREF(co->co_cellvars); + return co->co_cellvars; +} + +PyObject * +_PyCode_GetFreevars(PyCodeObject *co) +{ + if (co->co_freevars == NULL) { + // PyCodeObject owns this reference. + co->co_freevars = get_localsplus_names(co, CO_FAST_FREE, + co->co_nfreevars); + if (co->co_freevars == NULL) { + return NULL; + } + } + Py_INCREF(co->co_freevars); + return co->co_freevars; +} + + /****************** * PyCode_Type ******************/ @@ -1032,6 +1234,8 @@ code_dealloc(PyCodeObject *co) Py_XDECREF(co->co_code); Py_XDECREF(co->co_consts); Py_XDECREF(co->co_names); + Py_XDECREF(co->co_localsplusnames); + _PyCode_ClearLocalsPlusKinds(co->co_localspluskinds); Py_XDECREF(co->co_varnames); Py_XDECREF(co->co_freevars); Py_XDECREF(co->co_cellvars); @@ -1094,8 +1298,6 @@ code_richcompare(PyObject *self, PyObject *other, int op) if (!eq) goto unequal; eq = co->co_kwonlyargcount == cp->co_kwonlyargcount; if (!eq) goto unequal; - eq = co->co_nlocals == cp->co_nlocals; - if (!eq) goto unequal; eq = co->co_flags == cp->co_flags; if (!eq) goto unequal; eq = co->co_firstlineno == cp->co_firstlineno; @@ -1119,11 +1321,8 @@ code_richcompare(PyObject *self, PyObject *other, int op) eq = PyObject_RichCompareBool(co->co_names, cp->co_names, Py_EQ); if (eq <= 0) goto unequal; - eq = PyObject_RichCompareBool(co->co_varnames, cp->co_varnames, Py_EQ); - if (eq <= 0) goto unequal; - eq = PyObject_RichCompareBool(co->co_freevars, cp->co_freevars, Py_EQ); - if (eq <= 0) goto unequal; - eq = PyObject_RichCompareBool(co->co_cellvars, cp->co_cellvars, Py_EQ); + eq = PyObject_RichCompareBool(co->co_localsplusnames, + cp->co_localsplusnames, Py_EQ); if (eq <= 0) goto unequal; if (op == Py_EQ) @@ -1148,7 +1347,7 @@ code_richcompare(PyObject *self, PyObject *other, int op) static Py_hash_t code_hash(PyCodeObject *co) { - Py_hash_t h, h0, h1, h2, h3, h4, h5, h6; + Py_hash_t h, h0, h1, h2, h3, h4; h0 = PyObject_Hash(co->co_name); if (h0 == -1) return -1; h1 = PyObject_Hash(co->co_code); @@ -1157,15 +1356,11 @@ code_hash(PyCodeObject *co) if (h2 == -1) return -1; h3 = PyObject_Hash(co->co_names); if (h3 == -1) return -1; - h4 = PyObject_Hash(co->co_varnames); + h4 = PyObject_Hash(co->co_localsplusnames); if (h4 == -1) return -1; - h5 = PyObject_Hash(co->co_freevars); - if (h5 == -1) return -1; - h6 = PyObject_Hash(co->co_cellvars); - if (h6 == -1) return -1; - h = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ h5 ^ h6 ^ + h = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ co->co_argcount ^ co->co_posonlyargcount ^ co->co_kwonlyargcount ^ - co->co_nlocals ^ co->co_flags; + co->co_flags; if (h == -1) h = -2; return h; } @@ -1177,15 +1372,11 @@ static PyMemberDef code_memberlist[] = { {"co_argcount", T_INT, OFF(co_argcount), READONLY}, {"co_posonlyargcount", T_INT, OFF(co_posonlyargcount), READONLY}, {"co_kwonlyargcount", T_INT, OFF(co_kwonlyargcount), READONLY}, - {"co_nlocals", T_INT, OFF(co_nlocals), READONLY}, {"co_stacksize",T_INT, OFF(co_stacksize), READONLY}, {"co_flags", T_INT, OFF(co_flags), READONLY}, {"co_code", T_OBJECT, OFF(co_code), READONLY}, {"co_consts", T_OBJECT, OFF(co_consts), READONLY}, {"co_names", T_OBJECT, OFF(co_names), READONLY}, - {"co_varnames", T_OBJECT, OFF(co_varnames), READONLY}, - {"co_freevars", T_OBJECT, OFF(co_freevars), READONLY}, - {"co_cellvars", T_OBJECT, OFF(co_cellvars), READONLY}, {"co_filename", T_OBJECT, OFF(co_filename), READONLY}, {"co_name", T_OBJECT, OFF(co_name), READONLY}, {"co_firstlineno", T_INT, OFF(co_firstlineno), READONLY}, @@ -1195,15 +1386,43 @@ static PyMemberDef code_memberlist[] = { }; - static PyObject * code_getlnotab(PyCodeObject *code, void *closure) { return decode_linetable(code); } +static PyObject * +code_getnlocals(PyCodeObject *code, void *closure) +{ + return PyLong_FromLong(code->co_nlocals); +} + +static PyObject * +code_getvarnames(PyCodeObject *code, void *closure) +{ + return _PyCode_GetVarnames(code); +} + +static PyObject * +code_getcellvars(PyCodeObject *code, void *closure) +{ + return _PyCode_GetCellvars(code); +} + +static PyObject * +code_getfreevars(PyCodeObject *code, void *closure) +{ + return _PyCode_GetFreevars(code); +} + static PyGetSetDef code_getsetlist[] = { {"co_lnotab", (getter)code_getlnotab, NULL, NULL}, + // The following old names are kept for backward compatibility. + {"co_nlocals", (getter)code_getnlocals, NULL, NULL}, + {"co_varnames", (getter)code_getvarnames, NULL, NULL}, + {"co_cellvars", (getter)code_getcellvars, NULL, NULL}, + {"co_freevars", (getter)code_getfreevars, NULL, NULL}, {0} }; @@ -1212,15 +1431,17 @@ static PyObject * code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args)) { Py_ssize_t res = _PyObject_SIZE(Py_TYPE(co)); - _PyCodeObjectExtra *co_extra = (_PyCodeObjectExtra*) co->co_extra; - if (co->co_cell2arg != NULL && co->co_cellvars != NULL) { - res += co->co_ncellvars * sizeof(Py_ssize_t); - } + _PyCodeObjectExtra *co_extra = (_PyCodeObjectExtra*) co->co_extra; if (co_extra != NULL) { res += sizeof(_PyCodeObjectExtra) + (co_extra->ce_size-1) * sizeof(co_extra->ce_extras[0]); } + + if (co->co_cell2arg != NULL && co->co_cellvars != NULL) { + res += co->co_ncellvars * sizeof(Py_ssize_t); + } + if (co->co_opcache != NULL) { assert(co->co_opcache_map != NULL); // co_opcache_map @@ -1228,6 +1449,7 @@ code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args)) // co_opcache res += co->co_opcache_size * sizeof(_PyOpcache); } + return PyLong_FromSsize_t(res); } @@ -1298,11 +1520,65 @@ code_replace_impl(PyCodeObject *self, int co_argcount, return NULL; } - return (PyObject *)PyCode_NewWithPosOnlyArgs( + PyCodeObject *co = NULL; + PyObject *varnames = NULL; + PyObject *cellvars = NULL; + PyObject *freevars = NULL; + if (co_varnames == NULL) { + varnames = get_localsplus_names(self, CO_FAST_LOCAL, self->co_nlocals); + if (varnames == NULL) { + goto error; + } + co_varnames = varnames; + } + if (co_cellvars == NULL) { + cellvars = get_localsplus_names(self, CO_FAST_CELL, self->co_ncellvars); + if (cellvars == NULL) { + goto error; + } + co_cellvars = cellvars; + } + if (co_freevars == NULL) { + freevars = get_localsplus_names(self, CO_FAST_FREE, self->co_nfreevars); + if (freevars == NULL) { + goto error; + } + co_freevars = freevars; + } + + co = PyCode_NewWithPosOnlyArgs( co_argcount, co_posonlyargcount, co_kwonlyargcount, co_nlocals, co_stacksize, co_flags, (PyObject*)co_code, co_consts, co_names, co_varnames, co_freevars, co_cellvars, co_filename, co_name, co_firstlineno, (PyObject*)co_linetable, (PyObject*)co_exceptiontable); + +error: + Py_XDECREF(varnames); + Py_XDECREF(cellvars); + Py_XDECREF(freevars); + return (PyObject *)co; +} + +/*[clinic input] +code._varname_from_oparg + + oparg: int + +(internal-only) Return the local variable name for the given oparg. + +WARNING: this method is for internal use only and may change or go away. +[clinic start generated code]*/ + +static PyObject * +code__varname_from_oparg_impl(PyCodeObject *self, int oparg) +/*[clinic end generated code: output=1fd1130413184206 input=c5fa3ee9bac7d4ca]*/ +{ + PyObject *name = PyTuple_GetItem(self->co_localsplusnames, oparg); + if (name == NULL) { + return NULL; + } + Py_INCREF(name); + return name; } /* XXX code objects need to participate in GC? */ @@ -1311,6 +1587,7 @@ static struct PyMethodDef code_methods[] = { {"__sizeof__", (PyCFunction)code_sizeof, METH_NOARGS}, {"co_lines", (PyCFunction)code_linesiterator, METH_NOARGS}, CODE_REPLACE_METHODDEF + CODE__VARNAME_FROM_OPARG_METHODDEF {NULL, NULL} /* sentinel */ }; diff --git a/Objects/frameobject.c b/Objects/frameobject.c index 1bfae90b9b2c8c..ef5ff4e6983546 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -4,6 +4,7 @@ #include "pycore_ceval.h" // _PyEval_BuiltinsFromGlobals() #include "pycore_moduleobject.h" // _PyModule_GetDict() #include "pycore_object.h" // _PyObject_GC_UNTRACK() +#include "pycore_code.h" // CO_FAST_LOCAL, etc. #include "frameobject.h" // PyFrameObject #include "pycore_frame.h" @@ -659,9 +660,9 @@ frame_traverse(PyFrameObject *f, visitproc visit, void *arg) Py_VISIT(f->f_trace); /* locals */ - PyObject **fastlocals = f->f_localsptr; - for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++fastlocals) { - Py_VISIT(*fastlocals); + PyObject **localsplus = f->f_localsptr; + for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++localsplus) { + Py_VISIT(*localsplus); } /* stack */ @@ -684,9 +685,9 @@ frame_tp_clear(PyFrameObject *f) Py_CLEAR(f->f_trace); /* locals */ - PyObject **fastlocals = f->f_localsptr; - for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++fastlocals) { - Py_CLEAR(*fastlocals); + PyObject **localsplus = f->f_localsptr; + for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++localsplus) { + Py_CLEAR(*localsplus); } /* stack */ @@ -917,112 +918,13 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, return f; } -/* Convert between "fast" version of locals and dictionary version. - - map and values are input arguments. map is a tuple of strings. - values is an array of PyObject*. At index i, map[i] is the name of - the variable with value values[i]. The function copies the first - nmap variable from map/values into dict. If values[i] is NULL, - the variable is deleted from dict. - - If deref is true, then the values being copied are cell variables - and the value is extracted from the cell variable before being put - in dict. - */ - -static int -map_to_dict(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, - int deref) -{ - Py_ssize_t j; - assert(PyTuple_Check(map)); - assert(PyDict_Check(dict)); - assert(PyTuple_Size(map) >= nmap); - for (j=0; j < nmap; j++) { - PyObject *key = PyTuple_GET_ITEM(map, j); - PyObject *value = values[j]; - assert(PyUnicode_Check(key)); - if (deref && value != NULL) { - assert(PyCell_Check(value)); - value = PyCell_GET(value); - } - if (value == NULL) { - if (PyObject_DelItem(dict, key) != 0) { - if (PyErr_ExceptionMatches(PyExc_KeyError)) - PyErr_Clear(); - else - return -1; - } - } - else { - if (PyObject_SetItem(dict, key, value) != 0) - return -1; - } - } - return 0; -} - -/* Copy values from the "locals" dict into the fast locals. - - dict is an input argument containing string keys representing - variables names and arbitrary PyObject* as values. - - map and values are input arguments. map is a tuple of strings. - values is an array of PyObject*. At index i, map[i] is the name of - the variable with value values[i]. The function copies the first - nmap variable from map/values into dict. If values[i] is NULL, - the variable is deleted from dict. - - If deref is true, then the values being copied are cell variables - and the value is extracted from the cell variable before being put - in dict. If clear is true, then variables in map but not in dict - are set to NULL in map; if clear is false, variables missing in - dict are ignored. - - Exceptions raised while modifying the dict are silently ignored, - because there is no good way to report them. -*/ - -static void -dict_to_map(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, - int deref, int clear) -{ - Py_ssize_t j; - assert(PyTuple_Check(map)); - assert(PyDict_Check(dict)); - assert(PyTuple_Size(map) >= nmap); - for (j=0; j < nmap; j++) { - PyObject *key = PyTuple_GET_ITEM(map, j); - PyObject *value = PyObject_GetItem(dict, key); - assert(PyUnicode_Check(key)); - /* We only care about NULLs if clear is true. */ - if (value == NULL) { - PyErr_Clear(); - if (!clear) - continue; - } - if (deref) { - assert(PyCell_Check(values[j])); - if (PyCell_GET(values[j]) != value) { - if (PyCell_Set(values[j], value) < 0) - PyErr_Clear(); - } - } else if (values[j] != value) { - Py_XINCREF(value); - Py_XSETREF(values[j], value); - } - Py_XDECREF(value); - } -} - int PyFrame_FastToLocalsWithError(PyFrameObject *f) { /* Merge fast locals into f->f_locals */ - PyObject *locals, *map; + PyObject *locals; PyObject **fast; PyCodeObject *co; - Py_ssize_t j; if (f == NULL) { PyErr_BadInternalCall(); @@ -1035,25 +937,9 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) return -1; } co = f->f_code; - map = co->co_varnames; - if (!PyTuple_Check(map)) { - PyErr_Format(PyExc_SystemError, - "co_varnames must be a tuple, not %s", - Py_TYPE(map)->tp_name); - return -1; - } fast = f->f_localsptr; - j = PyTuple_GET_SIZE(map); - if (j > co->co_nlocals) - j = co->co_nlocals; - if (co->co_nlocals) { - if (map_to_dict(map, j, locals, fast, 0) < 0) - return -1; - } - if (co->co_ncellvars || co->co_nfreevars) { - if (map_to_dict(co->co_cellvars, co->co_ncellvars, - locals, fast + co->co_nlocals, 1)) - return -1; + for (int i = 0; i < co->co_nlocalsplus; i++) { + _PyLocalsPlusKind kind = co->co_localspluskinds[i]; /* If the namespace is unoptimized, then one of the following cases applies: @@ -1063,10 +949,42 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) We don't want to accidentally copy free variables into the locals dict used by the class. */ - if (co->co_flags & CO_OPTIMIZED) { - if (map_to_dict(co->co_freevars, co->co_nfreevars, locals, - fast + co->co_nlocals + co->co_ncellvars, 1) < 0) + if (kind & CO_FAST_FREE && !(co->co_flags & CO_OPTIMIZED)) { + continue; + } + + /* Some args are also cells. For now each of those variables + has two indices in the fast array, with both marked as cells + but only one marked as an arg. That one is always set + to NULL in _PyEval_MakeFrameVector() and the other index + gets the cell holding the arg value. So we ignore the + former here and will later use the cell for the variable. + */ + if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { + assert(fast[i] == NULL); + continue; + } + + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); + PyObject *value = fast[i]; + if (kind & (CO_FAST_CELL | CO_FAST_FREE) && value != NULL) { + assert(PyCell_Check(value)); + value = PyCell_GET(value); + } + if (value == NULL) { + if (PyObject_DelItem(locals, name) != 0) { + if (PyErr_ExceptionMatches(PyExc_KeyError)) { + PyErr_Clear(); + } + else { + return -1; + } + } + } + else { + if (PyObject_SetItem(locals, name, value) != 0) { return -1; + } } } return 0; @@ -1088,36 +1006,51 @@ void PyFrame_LocalsToFast(PyFrameObject *f, int clear) { /* Merge locals into fast locals */ - PyObject *locals, *map; + PyObject *locals; PyObject **fast; PyObject *error_type, *error_value, *error_traceback; PyCodeObject *co; - Py_ssize_t j; if (f == NULL) return; locals = _PyFrame_Specials(f)[FRAME_SPECIALS_LOCALS_OFFSET]; - co = f->f_code; - map = co->co_varnames; if (locals == NULL) return; - if (!PyTuple_Check(map)) - return; - PyErr_Fetch(&error_type, &error_value, &error_traceback); fast = f->f_localsptr; - j = PyTuple_GET_SIZE(map); - if (j > co->co_nlocals) - j = co->co_nlocals; - if (co->co_nlocals) - dict_to_map(co->co_varnames, j, locals, fast, 0, clear); - if (co->co_ncellvars || co->co_nfreevars) { - dict_to_map(co->co_cellvars, co->co_ncellvars, - locals, fast + co->co_nlocals, 1, clear); + co = f->f_code; + + PyErr_Fetch(&error_type, &error_value, &error_traceback); + for (int i = 0; i < co->co_nlocalsplus; i++) { + _PyLocalsPlusKind kind = co->co_localspluskinds[i]; + + /* Same test as in PyFrame_FastToLocals() above. */ + if (kind & CO_FAST_FREE && !(co->co_flags & CO_OPTIMIZED)) { + continue; + } /* Same test as in PyFrame_FastToLocals() above. */ - if (co->co_flags & CO_OPTIMIZED) { - dict_to_map(co->co_freevars, co->co_nfreevars, locals, - fast + co->co_nlocals + co->co_ncellvars, 1, - clear); + if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { + continue; } + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); + PyObject *value = PyObject_GetItem(locals, name); + /* We only care about NULLs if clear is true. */ + if (value == NULL) { + PyErr_Clear(); + if (!clear) { + continue; + } + } + if (kind & (CO_FAST_CELL | CO_FAST_FREE)) { + assert(PyCell_Check(fast[i])); + if (PyCell_GET(fast[i]) != value) { + if (PyCell_Set(fast[i], value) < 0) { + PyErr_Clear(); + } + } + } else if (fast[i] != value) { + Py_XINCREF(value); + Py_XSETREF(fast[i], value); + } + Py_XDECREF(value); } PyErr_Restore(error_type, error_value, error_traceback); } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index bf792e21c162dd..bd2cade3bd68b4 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2,6 +2,7 @@ #include "Python.h" #include "pycore_call.h" +#include "pycore_code.h" // CO_FAST_FREE #include "pycore_compile.h" // _Py_Mangle() #include "pycore_initconfig.h" #include "pycore_moduleobject.h" // _PyModule_GetDef() @@ -8894,13 +8895,15 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, return -1; } + // Look for __class__ in the free vars. PyTypeObject *type = NULL; - for (i = 0; i < co->co_nfreevars; i++) { - PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i); + i = co->co_nlocals + co->co_ncellvars; + for (; i < co->co_nlocalsplus; i++) { + assert(co->co_localspluskinds[i] & CO_FAST_FREE); + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); assert(PyUnicode_Check(name)); if (_PyUnicode_EqualToASCIIId(name, &PyId___class__)) { - Py_ssize_t index = co->co_nlocals + co->co_ncellvars + i; - PyObject *cell = f->f_localsptr[index]; + PyObject *cell = f->f_localsptr[i]; if (cell == NULL || !PyCell_Check(cell)) { PyErr_SetString(PyExc_RuntimeError, "super(): bad __class__ cell"); diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index f5140b8a806b49..5757c150343087 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -19,10 +19,9 @@ unsigned char M_test_frozenmain[] = { 121,115,90,17,95,116,101,115,116,105,110,116,101,114,110,97, 108,99,97,112,105,218,5,112,114,105,110,116,218,4,97,114, 103,118,90,11,103,101,116,95,99,111,110,102,105,103,115,114, - 2,0,0,0,218,3,107,101,121,169,0,114,8,0,0,0, - 114,8,0,0,0,250,18,116,101,115,116,95,102,114,111,122, - 101,110,109,97,105,110,46,112,121,218,8,60,109,111,100,117, - 108,101,62,1,0,0,0,115,16,0,0,0,8,3,8,1, - 8,2,12,1,12,1,8,1,26,7,4,249,243,0,0,0, - 0, + 2,0,0,0,218,3,107,101,121,169,0,250,18,116,101,115, + 116,95,102,114,111,122,101,110,109,97,105,110,46,112,121,218, + 8,60,109,111,100,117,108,101,62,1,0,0,0,115,16,0, + 0,0,8,3,8,1,8,2,12,1,12,1,8,1,26,7, + 4,249,243,0,0,0,0, }; diff --git a/Python/ceval.c b/Python/ceval.c index 619eff29e1807a..032bc0cd87129a 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1446,7 +1446,7 @@ eval_frame_handle_pending(PyThreadState *tstate) /* Local variable macros */ -#define GETLOCAL(i) (fastlocals[i]) +#define GETLOCAL(i) (localsplus[i]) /* The SETLOCAL() macro must not DECREF the local variable in-place and then store the new value; it must copy the old value to a temporary @@ -1577,7 +1577,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) const _Py_CODEUNIT *next_instr; int opcode; /* Current opcode */ int oparg; /* Current opcode argument, if any */ - PyObject **fastlocals, **freevars, **specials; + PyObject **localsplus, **specials; PyObject *retval = NULL; /* Return value */ _Py_atomic_int * const eval_breaker = &tstate->interp->ceval.eval_breaker; PyCodeObject *co; @@ -1666,9 +1666,8 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) names = co->co_names; consts = co->co_consts; - fastlocals = f->f_localsptr; + localsplus = f->f_localsptr; first_instr = co->co_firstinstr; - freevars = f->f_localsptr + co->co_nlocals; /* f->f_lasti refers to the index of the last instruction, unless it's -1 in which case next_instr should be first_instr. @@ -1836,12 +1835,15 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) DISPATCH(); } + /* We keep LOAD_CLOSURE so that the bytecode stays more readable. */ + case TARGET(LOAD_CLOSURE): case TARGET(LOAD_FAST): { PyObject *value = GETLOCAL(oparg); if (value == NULL) { format_exc_check_arg(tstate, PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, - PyTuple_GetItem(co->co_varnames, oparg)); + PyTuple_GetItem(co->co_localsplusnames, + oparg)); goto error; } Py_INCREF(value); @@ -3069,13 +3071,13 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) format_exc_check_arg( tstate, PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, - PyTuple_GetItem(co->co_varnames, oparg) + PyTuple_GetItem(co->co_localsplusnames, oparg) ); goto error; } case TARGET(DELETE_DEREF): { - PyObject *cell = freevars[oparg]; + PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); if (oldobj != NULL) { PyCell_SET(cell, NULL); @@ -3086,21 +3088,11 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) goto error; } - case TARGET(LOAD_CLOSURE): { - PyObject *cell = freevars[oparg]; - Py_INCREF(cell); - PUSH(cell); - DISPATCH(); - } - case TARGET(LOAD_CLASSDEREF): { PyObject *name, *value, *locals = LOCALS(); - Py_ssize_t idx; assert(locals); - assert(oparg >= co->co_ncellvars); - idx = oparg - co->co_ncellvars; - assert(idx >= 0 && idx < co->co_nfreevars); - name = PyTuple_GET_ITEM(co->co_freevars, idx); + assert(oparg >= 0 && oparg < co->co_nlocalsplus); + name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg); if (PyDict_CheckExact(locals)) { value = PyDict_GetItemWithError(locals, name); if (value != NULL) { @@ -3120,7 +3112,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } } if (!value) { - PyObject *cell = freevars[oparg]; + PyObject *cell = GETLOCAL(oparg); value = PyCell_GET(cell); if (value == NULL) { format_exc_unbound(tstate, co, oparg); @@ -3133,7 +3125,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } case TARGET(LOAD_DEREF): { - PyObject *cell = freevars[oparg]; + PyObject *cell = GETLOCAL(oparg); PyObject *value = PyCell_GET(cell); if (value == NULL) { format_exc_unbound(tstate, co, oparg); @@ -3146,7 +3138,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) case TARGET(STORE_DEREF): { PyObject *v = POP(); - PyObject *cell = freevars[oparg]; + PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); PyCell_SET(cell, v); Py_XDECREF(oldobj); @@ -4652,7 +4644,7 @@ format_missing(PyThreadState *tstate, const char *kind, static void missing_arguments(PyThreadState *tstate, PyCodeObject *co, Py_ssize_t missing, Py_ssize_t defcount, - PyObject **fastlocals, PyObject *qualname) + PyObject **localsplus, PyObject *qualname) { Py_ssize_t i, j = 0; Py_ssize_t start, end; @@ -4674,7 +4666,7 @@ missing_arguments(PyThreadState *tstate, PyCodeObject *co, } for (i = start; i < end; i++) { if (GETLOCAL(i) == NULL) { - PyObject *raw = PyTuple_GET_ITEM(co->co_varnames, i); + PyObject *raw = PyTuple_GET_ITEM(co->co_localsplusnames, i); PyObject *name = PyObject_Repr(raw); if (name == NULL) { Py_DECREF(missing_names); @@ -4691,7 +4683,7 @@ missing_arguments(PyThreadState *tstate, PyCodeObject *co, static void too_many_positional(PyThreadState *tstate, PyCodeObject *co, Py_ssize_t given, PyObject *defaults, - PyObject **fastlocals, PyObject *qualname) + PyObject **localsplus, PyObject *qualname) { int plural; Py_ssize_t kwonly_given = 0; @@ -4755,7 +4747,7 @@ positional_only_passed_as_keyword(PyThreadState *tstate, PyCodeObject *co, PyObject* posonly_names = PyList_New(0); for(int k=0; k < co->co_posonlyargcount; k++){ - PyObject* posonly_name = PyTuple_GET_ITEM(co->co_varnames, k); + PyObject* posonly_name = PyTuple_GET_ITEM(co->co_localsplusnames, k); for (int k2=0; k2fc_code; const Py_ssize_t total_args = co->co_argcount + co->co_kwonlyargcount; - PyObject **freevars = fastlocals + co->co_nlocals; /* Create a dictionary for keyword parameters (**kwags) */ PyObject *kwdict; @@ -4957,7 +4948,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, /* Speed hack: do raw pointer compares. As names are normally interned this should almost always hit. */ - co_varnames = ((PyTupleObject *)(co->co_varnames))->ob_item; + co_varnames = ((PyTupleObject *)(co->co_localsplusnames))->ob_item; for (j = co->co_posonlyargcount; j < total_args; j++) { PyObject *varname = co_varnames[j]; if (varname == keyword) { @@ -5013,7 +5004,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, /* Check the number of positional arguments */ if ((argcount > co->co_argcount) && !(co->co_flags & CO_VARARGS)) { - too_many_positional(tstate, co, argcount, con->fc_defaults, fastlocals, + too_many_positional(tstate, co, argcount, con->fc_defaults, localsplus, con->fc_qualname); goto fail; } @@ -5029,7 +5020,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, } } if (missing) { - missing_arguments(tstate, co, missing, defcount, fastlocals, + missing_arguments(tstate, co, missing, defcount, localsplus, con->fc_qualname); goto fail; } @@ -5055,7 +5046,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, for (i = co->co_argcount; i < total_args; i++) { if (GETLOCAL(i) != NULL) continue; - PyObject *varname = PyTuple_GET_ITEM(co->co_varnames, i); + PyObject *varname = PyTuple_GET_ITEM(co->co_localsplusnames, i); if (con->fc_kwdefaults != NULL) { PyObject *def = PyDict_GetItemWithError(con->fc_kwdefaults, varname); if (def) { @@ -5070,12 +5061,13 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, missing++; } if (missing) { - missing_arguments(tstate, co, missing, -1, fastlocals, + missing_arguments(tstate, co, missing, -1, localsplus, con->fc_qualname); goto fail; } } + /* Allocate and initialize storage for cell vars, and copy free vars into frame. */ for (i = 0; i < co->co_ncellvars; ++i) { @@ -5100,7 +5092,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, for (i = 0; i < co->co_nfreevars; ++i) { PyObject *o = PyTuple_GET_ITEM(con->fc_closure, i); Py_INCREF(o); - freevars[co->co_ncellvars + i] = o; + localsplus[co->co_nlocals + co->co_ncellvars + i] = o; } return 0; @@ -6433,15 +6425,11 @@ format_exc_unbound(PyThreadState *tstate, PyCodeObject *co, int oparg) /* Don't stomp existing exception */ if (_PyErr_Occurred(tstate)) return; - if (oparg < co->co_ncellvars) { - name = PyTuple_GET_ITEM(co->co_cellvars, - oparg); - format_exc_check_arg(tstate, - PyExc_UnboundLocalError, - UNBOUNDLOCAL_ERROR_MSG, - name); + name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg); + if (oparg < co->co_ncellvars + co->co_nlocals) { + format_exc_check_arg(tstate, PyExc_UnboundLocalError, + UNBOUNDLOCAL_ERROR_MSG, name); } else { - name = PyTuple_GET_ITEM(co->co_freevars, oparg - co->co_ncellvars); format_exc_check_arg(tstate, PyExc_NameError, UNBOUNDFREE_ERROR_MSG, name); } @@ -6483,16 +6471,14 @@ unicode_concatenate(PyThreadState *tstate, PyObject *v, PyObject *w, switch (opcode) { case STORE_FAST: { - PyObject **fastlocals = f->f_localsptr; + PyObject **localsplus = f->f_localsptr; if (GETLOCAL(oparg) == v) SETLOCAL(oparg, NULL); break; } case STORE_DEREF: { - PyObject **freevars = (f->f_localsptr + - f->f_code->co_nlocals); - PyObject *c = freevars[oparg]; + PyObject *c = f->f_localsptr[oparg]; if (PyCell_GET(c) == v) { PyCell_SET(c, NULL); Py_DECREF(v); diff --git a/Python/compile.c b/Python/compile.c index 03d522b34f113b..d5a0234c0fee2f 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2047,16 +2047,16 @@ static int compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, PyObject *qualname) { - Py_ssize_t i, free = PyCode_GetNumFree(co); if (qualname == NULL) qualname = co->co_name; - if (free) { - for (i = 0; i < free; ++i) { + if (co->co_nfreevars) { + int i = co->co_nlocals + co->co_ncellvars; + for (; i < co->co_nlocalsplus; ++i) { /* Bypass com_addop_varname because it will generate LOAD_DEREF but LOAD_CLOSURE is needed. */ - PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i); + PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); /* Special case: If a class contains a method with a free variable that has the same name as a method, @@ -2076,6 +2076,10 @@ compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, arg = compiler_lookup_arg(c->u->u_freevars, name); } if (arg == -1) { + PyObject *freevars = _PyCode_GetFreevars(co); + if (freevars == NULL) { + PyErr_Clear(); + } PyErr_Format(PyExc_SystemError, "compiler_lookup_arg(name=%R) with reftype=%d failed in %S; " "freevars of code %S: %R", @@ -2083,13 +2087,14 @@ compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, reftype, c->u->u_name, co->co_name, - co->co_freevars); + freevars); + Py_DECREF(freevars); return 0; } ADDOP_I(c, LOAD_CLOSURE, arg); } flags |= 0x08; - ADDOP_I(c, BUILD_TUPLE, free); + ADDOP_I(c, BUILD_TUPLE, co->co_nfreevars); } ADDOP_LOAD_CONST(c, (PyObject*)co); ADDOP_LOAD_CONST(c, qualname); @@ -7176,6 +7181,46 @@ merge_const_one(struct compiler *c, PyObject **obj) return 1; } +// This is in codeobject.c. +extern void _Py_set_localsplus_info(int, PyObject *, _PyLocalsPlusKind, + PyObject *, _PyLocalsPlusKinds); + +static void +compute_localsplus_info(struct compiler *c, + PyObject *names, _PyLocalsPlusKinds kinds) +{ + int nlocalsplus = (int)PyTuple_GET_SIZE(names); + + PyObject *k, *v; + Py_ssize_t pos = 0; + while (PyDict_Next(c->u->u_varnames, &pos, &k, &v)) { + int offset = (int)PyLong_AS_LONG(v); + assert(offset >= 0); + assert(offset < nlocalsplus); + // For now we do not distinguish arg kinds. + _Py_set_localsplus_info(offset, k, CO_FAST_LOCAL, names, kinds); + } + int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); + + pos = 0; + while (PyDict_Next(c->u->u_cellvars, &pos, &k, &v)) { + int offset = (int)PyLong_AS_LONG(v); + assert(offset >= 0); + offset += nlocals; + assert(offset < nlocalsplus); + _Py_set_localsplus_info(offset, k, CO_FAST_CELL, names, kinds); + } + + pos = 0; + while (PyDict_Next(c->u->u_freevars, &pos, &k, &v)) { + int offset = (int)PyLong_AS_LONG(v); + assert(offset >= 0); + offset += nlocals; + assert(offset < nlocalsplus); + _Py_set_localsplus_info(offset, k, CO_FAST_FREE, names, kinds); + } +} + static PyCodeObject * makecode(struct compiler *c, struct assembler *a, PyObject *constslist, int maxdepth) @@ -7183,36 +7228,22 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, PyCodeObject *co = NULL; PyObject *names = NULL; PyObject *consts = NULL; - PyObject *varnames = NULL; + PyObject *localsplusnames = NULL; + _PyLocalsPlusKinds localspluskinds = NULL; PyObject *name = NULL; - PyObject *freevars = NULL; - PyObject *cellvars = NULL; - int flags; - int posorkeywordargcount, posonlyargcount, kwonlyargcount; names = dict_keys_inorder(c->u->u_names, 0); - varnames = dict_keys_inorder(c->u->u_varnames, 0); - if (!names || !varnames) { + if (!names) { goto error; } - cellvars = dict_keys_inorder(c->u->u_cellvars, 0); - if (!cellvars) - goto error; - freevars = dict_keys_inorder(c->u->u_freevars, PyTuple_GET_SIZE(cellvars)); - if (!freevars) - goto error; - - if (!merge_const_one(c, &names) || - !merge_const_one(c, &varnames) || - !merge_const_one(c, &cellvars) || - !merge_const_one(c, &freevars)) - { + if (!merge_const_one(c, &names)) { goto error; } - flags = compute_code_flags(c); - if (flags < 0) + int flags = compute_code_flags(c); + if (flags < 0) { goto error; + } consts = PyList_AsTuple(constslist); /* PyCode_New requires a tuple */ if (consts == NULL) { @@ -7222,9 +7253,32 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, goto error; } - posonlyargcount = Py_SAFE_DOWNCAST(c->u->u_posonlyargcount, Py_ssize_t, int); - posorkeywordargcount = Py_SAFE_DOWNCAST(c->u->u_argcount, Py_ssize_t, int); - kwonlyargcount = Py_SAFE_DOWNCAST(c->u->u_kwonlyargcount, Py_ssize_t, int); + assert(c->u->u_posonlyargcount < INT_MAX); + assert(c->u->u_argcount < INT_MAX); + assert(c->u->u_kwonlyargcount < INT_MAX); + int posonlyargcount = (int)c->u->u_posonlyargcount; + int posorkwargcount = (int)c->u->u_argcount; + assert(INT_MAX - posonlyargcount - posorkwargcount > 0); + int kwonlyargcount = (int)c->u->u_kwonlyargcount; + + Py_ssize_t nlocals = PyDict_GET_SIZE(c->u->u_varnames); + Py_ssize_t ncellvars = PyDict_GET_SIZE(c->u->u_cellvars); + Py_ssize_t nfreevars = PyDict_GET_SIZE(c->u->u_freevars); + assert(nlocals < INT_MAX); + assert(ncellvars < INT_MAX); + assert(nfreevars < INT_MAX); + assert(INT_MAX - nlocals - ncellvars - nfreevars > 0); + int nlocalsplus = (int)nlocals + (int)ncellvars + (int)nfreevars; + + localsplusnames = PyTuple_New(nlocalsplus); + if (localsplusnames == NULL) { + goto error; + } + if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { + goto error; + } + compute_localsplus_info(c, localsplusnames, localspluskinds); + struct _PyCodeConstructor con = { .filename = c->c_filename, .name = c->u->u_name, @@ -7237,11 +7291,10 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, .consts = consts, .names = names, - .varnames = varnames, - .cellvars = cellvars, - .freevars = freevars, + .localsplusnames = localsplusnames, + .localspluskinds = localspluskinds, - .argcount = posonlyargcount + posorkeywordargcount, + .argcount = posonlyargcount + posorkwargcount, .posonlyargcount = posonlyargcount, .kwonlyargcount = kwonlyargcount, @@ -7249,18 +7302,30 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, .exceptiontable = a->a_except_table, }; + if (_PyCode_Validate(&con) < 0) { goto error; } + + if (!merge_const_one(c, &localsplusnames)) { + _PyCode_ClearLocalsPlusKinds(con.localspluskinds); + goto error; + } + con.localsplusnames = localsplusnames; + co = _PyCode_New(&con); + if (co == NULL) { + goto error; + } + + localspluskinds = NULL; // This keeps it from getting freed below. error: Py_XDECREF(names); Py_XDECREF(consts); - Py_XDECREF(varnames); + Py_XDECREF(localsplusnames); + _PyCode_ClearLocalsPlusKinds(localspluskinds); Py_XDECREF(name); - Py_XDECREF(freevars); - Py_XDECREF(cellvars); return co; } @@ -7371,6 +7436,24 @@ guarantee_lineno_for_exits(struct assembler *a, int firstlineno) { } } +static void +offset_derefs(basicblock *entryblock, int nlocals) +{ + for (basicblock *b = entryblock; b != NULL; b = b->b_next) { + for (int i = 0; i < b->b_iused; i++) { + struct instr *inst = &b->b_instr[i]; + switch(inst->i_opcode) { + case LOAD_CLOSURE: + case LOAD_DEREF: + case STORE_DEREF: + case DELETE_DEREF: + case LOAD_CLASSDEREF: + inst->i_oparg += nlocals; + } + } + } +} + static PyCodeObject * assemble(struct compiler *c, int addNone) { @@ -7426,6 +7509,9 @@ assemble(struct compiler *c, int addNone) a.a_entry = entryblock; a.a_nblocks = nblocks; + assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); + offset_derefs(entryblock, (int)PyDict_GET_SIZE(c->u->u_varnames)); + consts = consts_dict_keys_inorder(c->u->u_consts); if (consts == NULL) { goto error; diff --git a/Python/frozen_hello.h b/Python/frozen_hello.h index 967dd053dd0278..1e150630161f53 100644 --- a/Python/frozen_hello.h +++ b/Python/frozen_hello.h @@ -5,8 +5,7 @@ const unsigned char _Py_M__hello[] = { 100,1,131,1,1,0,100,2,83,0,41,3,84,122,12,72, 101,108,108,111,32,119,111,114,108,100,33,78,41,2,90,11, 105,110,105,116,105,97,108,105,122,101,100,218,5,112,114,105, - 110,116,169,0,114,1,0,0,0,114,1,0,0,0,122,14, - 60,102,114,111,122,101,110,32,104,101,108,108,111,62,218,8, - 60,109,111,100,117,108,101,62,1,0,0,0,115,4,0,0, - 0,4,0,12,1,243,0,0,0,0, + 110,116,169,0,122,14,60,102,114,111,122,101,110,32,104,101, + 108,108,111,62,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,4,0,0,0,4,0,12,1,243,0,0,0,0, }; diff --git a/Python/importlib.h b/Python/importlib.h index 8637b097135ed7..1c59989743c801 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -59,94 +59,91 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 106,0,6,0,89,0,83,0,37,0,119,0,169,1,78,41, 3,218,12,95,95,113,117,97,108,110,97,109,101,95,95,218, 14,65,116,116,114,105,98,117,116,101,69,114,114,111,114,218, - 4,116,121,112,101,41,1,218,3,111,98,106,169,0,114,5, - 0,0,0,250,29,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,218,12,95,111,98,106,101,99,116,95,110,97,109,101, - 23,0,0,0,115,14,0,0,0,2,1,6,1,2,128,12, - 1,14,1,2,128,2,255,115,12,0,0,0,129,2,4,0, - 132,12,18,7,147,1,18,7,114,7,0,0,0,78,99,2, - 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,67, - 0,0,0,115,56,0,0,0,100,1,68,0,93,16,125,2, - 116,0,124,1,124,2,131,2,114,18,116,1,124,0,124,2, - 116,2,124,1,124,2,131,2,131,3,1,0,113,2,124,0, - 106,3,160,4,124,1,106,3,161,1,1,0,100,2,83,0, - 41,3,122,47,83,105,109,112,108,101,32,115,117,98,115,116, - 105,116,117,116,101,32,102,111,114,32,102,117,110,99,116,111, - 111,108,115,46,117,112,100,97,116,101,95,119,114,97,112,112, - 101,114,46,41,4,218,10,95,95,109,111,100,117,108,101,95, - 95,218,8,95,95,110,97,109,101,95,95,114,1,0,0,0, - 218,7,95,95,100,111,99,95,95,78,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,218,7,114,101,112,108,97,99,101,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,5,95, - 119,114,97,112,40,0,0,0,115,10,0,0,0,8,2,10, - 1,18,1,2,128,18,1,243,0,0,0,0,114,17,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,67,0,0,0,115,12,0,0,0,116,0,116,1,131, - 1,124,0,131,1,83,0,114,0,0,0,0,41,2,114,3, - 0,0,0,218,3,115,121,115,169,1,218,4,110,97,109,101, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 11,95,110,101,119,95,109,111,100,117,108,101,48,0,0,0, - 115,2,0,0,0,12,1,114,18,0,0,0,114,22,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,64,0,0,0,115,12,0,0,0,101,0,90,1,100, - 0,90,2,100,1,83,0,41,2,218,14,95,68,101,97,100, - 108,111,99,107,69,114,114,111,114,78,41,3,114,9,0,0, - 0,114,8,0,0,0,114,1,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 23,0,0,0,61,0,0,0,115,4,0,0,0,8,0,4, - 1,114,18,0,0,0,114,23,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0, - 115,56,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,83,0,41,13,218, - 11,95,77,111,100,117,108,101,76,111,99,107,122,169,65,32, - 114,101,99,117,114,115,105,118,101,32,108,111,99,107,32,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,32,119,104, - 105,99,104,32,105,115,32,97,98,108,101,32,116,111,32,100, - 101,116,101,99,116,32,100,101,97,100,108,111,99,107,115,10, - 32,32,32,32,40,101,46,103,46,32,116,104,114,101,97,100, - 32,49,32,116,114,121,105,110,103,32,116,111,32,116,97,107, - 101,32,108,111,99,107,115,32,65,32,116,104,101,110,32,66, - 44,32,97,110,100,32,116,104,114,101,97,100,32,50,32,116, - 114,121,105,110,103,32,116,111,10,32,32,32,32,116,97,107, - 101,32,108,111,99,107,115,32,66,32,116,104,101,110,32,65, - 41,46,10,32,32,32,32,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,67,0,0,0,115,48,0,0, - 0,116,0,160,1,161,0,124,0,95,2,116,0,160,1,161, - 0,124,0,95,3,124,1,124,0,95,4,100,0,124,0,95, - 5,100,1,124,0,95,6,100,1,124,0,95,7,100,0,83, - 0,169,2,78,233,0,0,0,0,41,8,218,7,95,116,104, - 114,101,97,100,90,13,97,108,108,111,99,97,116,101,95,108, - 111,99,107,218,4,108,111,99,107,218,6,119,97,107,101,117, - 112,114,21,0,0,0,218,5,111,119,110,101,114,218,5,99, - 111,117,110,116,218,7,119,97,105,116,101,114,115,169,2,218, - 4,115,101,108,102,114,21,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,8,95,95,105,110,105, - 116,95,95,71,0,0,0,115,12,0,0,0,10,1,10,1, - 6,1,6,1,6,1,10,1,114,18,0,0,0,122,20,95, - 77,111,100,117,108,101,76,111,99,107,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,86,0,0,0,116,0,160, - 1,161,0,125,1,124,0,106,2,125,2,116,3,131,0,125, - 3,9,0,116,4,160,5,124,2,161,1,125,4,124,4,100, - 0,117,0,114,22,100,2,83,0,124,4,106,2,125,2,124, - 2,124,1,107,2,114,31,100,1,83,0,124,2,124,3,118, - 0,114,37,100,2,83,0,124,3,160,6,124,2,161,1,1, - 0,113,11,41,3,78,84,70,41,7,114,27,0,0,0,218, - 9,103,101,116,95,105,100,101,110,116,114,30,0,0,0,218, - 3,115,101,116,218,12,95,98,108,111,99,107,105,110,103,95, - 111,110,218,3,103,101,116,218,3,97,100,100,41,5,114,34, - 0,0,0,90,2,109,101,218,3,116,105,100,90,4,115,101, - 101,110,114,28,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,12,104,97,115,95,100,101,97,100, + 4,116,121,112,101,41,1,218,3,111,98,106,32,250,29,60, + 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, + 46,95,98,111,111,116,115,116,114,97,112,62,218,12,95,111, + 98,106,101,99,116,95,110,97,109,101,23,0,0,0,115,14, + 0,0,0,2,1,6,1,2,128,12,1,14,1,2,128,2, + 255,115,12,0,0,0,129,2,4,0,132,12,18,7,147,1, + 18,7,114,6,0,0,0,78,99,2,0,0,0,0,0,0, + 0,0,0,0,0,7,0,0,0,67,0,0,0,115,56,0, + 0,0,100,1,68,0,93,16,125,2,116,0,124,1,124,2, + 131,2,114,18,116,1,124,0,124,2,116,2,124,1,124,2, + 131,2,131,3,1,0,113,2,124,0,106,3,160,4,124,1, + 106,3,161,1,1,0,100,2,83,0,41,3,122,47,83,105, + 109,112,108,101,32,115,117,98,115,116,105,116,117,116,101,32, + 102,111,114,32,102,117,110,99,116,111,111,108,115,46,117,112, + 100,97,116,101,95,119,114,97,112,112,101,114,46,41,4,218, + 10,95,95,109,111,100,117,108,101,95,95,218,8,95,95,110, + 97,109,101,95,95,114,1,0,0,0,218,7,95,95,100,111, + 99,95,95,78,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,218, + 7,114,101,112,108,97,99,101,32,32,32,114,5,0,0,0, + 218,5,95,119,114,97,112,40,0,0,0,115,10,0,0,0, + 8,2,10,1,18,1,2,128,18,1,243,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,67,0,0,0,115,12,0,0,0,116,0, + 116,1,131,1,124,0,131,1,83,0,114,0,0,0,0,41, + 2,114,3,0,0,0,218,3,115,121,115,169,1,218,4,110, + 97,109,101,32,114,5,0,0,0,218,11,95,110,101,119,95, + 109,111,100,117,108,101,48,0,0,0,115,2,0,0,0,12, + 1,114,17,0,0,0,114,21,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0, + 115,12,0,0,0,101,0,90,1,100,0,90,2,100,1,83, + 0,41,2,218,14,95,68,101,97,100,108,111,99,107,69,114, + 114,111,114,78,41,3,114,8,0,0,0,114,7,0,0,0, + 114,1,0,0,0,169,0,114,5,0,0,0,114,22,0,0, + 0,61,0,0,0,115,4,0,0,0,8,0,4,1,114,17, + 0,0,0,114,22,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,64,0,0,0,115,56,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,83,0,41,13,218,11,95,77, + 111,100,117,108,101,76,111,99,107,122,169,65,32,114,101,99, + 117,114,115,105,118,101,32,108,111,99,107,32,105,109,112,108, + 101,109,101,110,116,97,116,105,111,110,32,119,104,105,99,104, + 32,105,115,32,97,98,108,101,32,116,111,32,100,101,116,101, + 99,116,32,100,101,97,100,108,111,99,107,115,10,32,32,32, + 32,40,101,46,103,46,32,116,104,114,101,97,100,32,49,32, + 116,114,121,105,110,103,32,116,111,32,116,97,107,101,32,108, + 111,99,107,115,32,65,32,116,104,101,110,32,66,44,32,97, + 110,100,32,116,104,114,101,97,100,32,50,32,116,114,121,105, + 110,103,32,116,111,10,32,32,32,32,116,97,107,101,32,108, + 111,99,107,115,32,66,32,116,104,101,110,32,65,41,46,10, + 32,32,32,32,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,67,0,0,0,115,48,0,0,0,116,0, + 160,1,161,0,124,0,95,2,116,0,160,1,161,0,124,0, + 95,3,124,1,124,0,95,4,100,0,124,0,95,5,100,1, + 124,0,95,6,100,1,124,0,95,7,100,0,83,0,169,2, + 78,233,0,0,0,0,41,8,218,7,95,116,104,114,101,97, + 100,90,13,97,108,108,111,99,97,116,101,95,108,111,99,107, + 218,4,108,111,99,107,218,6,119,97,107,101,117,112,114,20, + 0,0,0,218,5,111,119,110,101,114,218,5,99,111,117,110, + 116,218,7,119,97,105,116,101,114,115,169,2,218,4,115,101, + 108,102,114,20,0,0,0,32,32,114,5,0,0,0,218,8, + 95,95,105,110,105,116,95,95,71,0,0,0,115,12,0,0, + 0,10,1,10,1,6,1,6,1,6,1,10,1,114,17,0, + 0,0,122,20,95,77,111,100,117,108,101,76,111,99,107,46, + 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,67,0,0,0,115,86,0, + 0,0,116,0,160,1,161,0,125,1,124,0,106,2,125,2, + 116,3,131,0,125,3,9,0,116,4,160,5,124,2,161,1, + 125,4,124,4,100,0,117,0,114,22,100,2,83,0,124,4, + 106,2,125,2,124,2,124,1,107,2,114,31,100,1,83,0, + 124,2,124,3,118,0,114,37,100,2,83,0,124,3,160,6, + 124,2,161,1,1,0,113,11,41,3,78,84,70,41,7,114, + 27,0,0,0,218,9,103,101,116,95,105,100,101,110,116,114, + 30,0,0,0,218,3,115,101,116,218,12,95,98,108,111,99, + 107,105,110,103,95,111,110,218,3,103,101,116,218,3,97,100, + 100,41,5,114,34,0,0,0,90,2,109,101,218,3,116,105, + 100,90,4,115,101,101,110,114,28,0,0,0,32,32,32,32, + 32,114,5,0,0,0,218,12,104,97,115,95,100,101,97,100, 108,111,99,107,79,0,0,0,115,28,0,0,0,8,2,6, 1,6,1,2,1,10,1,8,1,4,1,6,1,8,1,4, - 1,8,1,4,6,10,1,2,242,114,18,0,0,0,122,24, + 1,8,1,4,6,10,1,2,242,114,17,0,0,0,122,24, 95,77,111,100,117,108,101,76,111,99,107,46,104,97,115,95, 100,101,97,100,108,111,99,107,99,1,0,0,0,0,0,0, 0,0,0,0,0,9,0,0,0,67,0,0,0,115,204,0, @@ -179,38 +176,37 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 107,32,100,101,116,101,99,116,101,100,32,98,121,32,37,114, 70,41,12,114,27,0,0,0,114,36,0,0,0,114,38,0, 0,0,114,28,0,0,0,114,31,0,0,0,114,30,0,0, - 0,114,42,0,0,0,114,23,0,0,0,114,29,0,0,0, + 0,114,42,0,0,0,114,22,0,0,0,114,29,0,0,0, 218,7,97,99,113,117,105,114,101,114,32,0,0,0,218,7, 114,101,108,101,97,115,101,169,2,114,34,0,0,0,114,41, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,44,0,0,0,100,0,0,0,115,44,0,0,0, - 8,6,8,1,2,1,2,1,8,1,20,1,6,1,14,1, - 2,1,10,252,10,13,8,248,12,1,12,1,14,1,12,248, - 22,128,10,10,10,1,2,244,2,128,10,14,115,56,0,0, - 0,137,4,65,32,0,141,22,65,10,3,163,5,65,32,0, - 173,23,65,10,3,193,4,6,65,32,0,193,10,4,65,14, - 11,193,14,1,65,32,0,193,15,3,65,14,11,193,18,14, - 65,32,0,193,32,5,65,37,7,122,19,95,77,111,100,117, - 108,101,76,111,99,107,46,97,99,113,117,105,114,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, - 0,0,0,115,148,0,0,0,116,0,160,1,161,0,125,1, - 124,0,106,2,53,0,1,0,124,0,106,3,124,1,107,3, - 114,17,116,4,100,1,131,1,130,1,124,0,106,5,100,2, - 107,4,115,24,74,0,130,1,124,0,4,0,106,5,100,3, - 56,0,2,0,95,5,124,0,106,5,100,2,107,2,114,54, - 100,0,124,0,95,3,124,0,106,6,114,54,124,0,4,0, - 106,6,100,3,56,0,2,0,95,6,124,0,106,7,160,8, - 161,0,1,0,100,0,4,0,4,0,131,3,1,0,100,0, - 83,0,35,0,49,0,115,66,119,4,37,0,1,0,1,0, - 1,0,89,0,1,0,1,0,100,0,83,0,41,4,78,250, - 31,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32, - 117,110,45,97,99,113,117,105,114,101,100,32,108,111,99,107, - 114,26,0,0,0,114,43,0,0,0,41,9,114,27,0,0, - 0,114,36,0,0,0,114,28,0,0,0,114,30,0,0,0, - 218,12,82,117,110,116,105,109,101,69,114,114,111,114,114,31, - 0,0,0,114,32,0,0,0,114,29,0,0,0,114,45,0, - 0,0,114,46,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,45,0,0,0,125,0,0,0,115, + 0,0,0,32,32,114,5,0,0,0,114,44,0,0,0,100, + 0,0,0,115,44,0,0,0,8,6,8,1,2,1,2,1, + 8,1,20,1,6,1,14,1,2,1,10,252,10,13,8,248, + 12,1,12,1,14,1,12,248,22,128,10,10,10,1,2,244, + 2,128,10,14,115,56,0,0,0,137,4,65,32,0,141,22, + 65,10,3,163,5,65,32,0,173,23,65,10,3,193,4,6, + 65,32,0,193,10,4,65,14,11,193,14,1,65,32,0,193, + 15,3,65,14,11,193,18,14,65,32,0,193,32,5,65,37, + 7,122,19,95,77,111,100,117,108,101,76,111,99,107,46,97, + 99,113,117,105,114,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,67,0,0,0,115,148,0,0,0, + 116,0,160,1,161,0,125,1,124,0,106,2,53,0,1,0, + 124,0,106,3,124,1,107,3,114,17,116,4,100,1,131,1, + 130,1,124,0,106,5,100,2,107,4,115,24,74,0,130,1, + 124,0,4,0,106,5,100,3,56,0,2,0,95,5,124,0, + 106,5,100,2,107,2,114,54,100,0,124,0,95,3,124,0, + 106,6,114,54,124,0,4,0,106,6,100,3,56,0,2,0, + 95,6,124,0,106,7,160,8,161,0,1,0,100,0,4,0, + 4,0,131,3,1,0,100,0,83,0,35,0,49,0,115,66, + 119,4,37,0,1,0,1,0,1,0,89,0,1,0,1,0, + 100,0,83,0,41,4,78,250,31,99,97,110,110,111,116,32, + 114,101,108,101,97,115,101,32,117,110,45,97,99,113,117,105, + 114,101,100,32,108,111,99,107,114,26,0,0,0,114,43,0, + 0,0,41,9,114,27,0,0,0,114,36,0,0,0,114,28, + 0,0,0,114,30,0,0,0,218,12,82,117,110,116,105,109, + 101,69,114,114,111,114,114,31,0,0,0,114,32,0,0,0, + 114,29,0,0,0,114,45,0,0,0,114,46,0,0,0,32, + 32,114,5,0,0,0,114,45,0,0,0,125,0,0,0,115, 28,0,0,0,8,1,8,1,10,1,8,1,14,1,14,1, 10,1,6,1,6,1,14,1,10,1,14,247,22,128,4,0, 115,15,0,0,0,135,47,61,3,189,4,65,1,11,193,2, @@ -220,70 +216,66 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, 1,161,2,83,0,41,2,78,122,23,95,77,111,100,117,108, 101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,123, - 125,169,3,218,6,102,111,114,109,97,116,114,21,0,0,0, - 218,2,105,100,169,1,114,34,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,8,95,95,114,101, - 112,114,95,95,138,0,0,0,243,2,0,0,0,18,1,114, - 18,0,0,0,122,20,95,77,111,100,117,108,101,76,111,99, - 107,46,95,95,114,101,112,114,95,95,78,41,9,114,9,0, - 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, - 0,114,35,0,0,0,114,42,0,0,0,114,44,0,0,0, - 114,45,0,0,0,114,54,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,24, - 0,0,0,65,0,0,0,115,14,0,0,0,8,0,4,1, - 8,5,8,8,8,21,8,25,12,13,114,18,0,0,0,114, - 24,0,0,0,99,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,16,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,122,86,65,32,115,105,109,112,108,101,32,95,77,111, - 100,117,108,101,76,111,99,107,32,101,113,117,105,118,97,108, - 101,110,116,32,102,111,114,32,80,121,116,104,111,110,32,98, - 117,105,108,100,115,32,119,105,116,104,111,117,116,10,32,32, - 32,32,109,117,108,116,105,45,116,104,114,101,97,100,105,110, - 103,32,115,117,112,112,111,114,116,46,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,67,0,0,0,115, - 16,0,0,0,124,1,124,0,95,0,100,1,124,0,95,1, - 100,0,83,0,114,25,0,0,0,41,2,114,21,0,0,0, - 114,31,0,0,0,114,33,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,35,0,0,0,146,0, - 0,0,243,4,0,0,0,6,1,10,1,114,18,0,0,0, - 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, - 115,18,0,0,0,124,0,4,0,106,0,100,1,55,0,2, - 0,95,0,100,2,83,0,41,3,78,114,43,0,0,0,84, - 41,1,114,31,0,0,0,114,53,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,44,0,0,0, - 150,0,0,0,115,4,0,0,0,14,1,4,1,114,18,0, - 0,0,122,24,95,68,117,109,109,121,77,111,100,117,108,101, - 76,111,99,107,46,97,99,113,117,105,114,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, - 0,115,36,0,0,0,124,0,106,0,100,1,107,2,114,9, - 116,1,100,2,131,1,130,1,124,0,4,0,106,0,100,3, - 56,0,2,0,95,0,100,0,83,0,41,4,78,114,26,0, - 0,0,114,47,0,0,0,114,43,0,0,0,41,2,114,31, - 0,0,0,114,48,0,0,0,114,53,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,45,0,0, - 0,154,0,0,0,115,6,0,0,0,10,1,8,1,18,1, - 114,18,0,0,0,122,24,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,46,114,101,108,101,97,115,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 67,0,0,0,114,49,0,0,0,41,2,78,122,28,95,68, - 117,109,109,121,77,111,100,117,108,101,76,111,99,107,40,123, - 33,114,125,41,32,97,116,32,123,125,114,50,0,0,0,114, - 53,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,54,0,0,0,159,0,0,0,114,55,0,0, - 0,114,18,0,0,0,122,25,95,68,117,109,109,121,77,111, + 125,169,3,218,6,102,111,114,109,97,116,114,20,0,0,0, + 218,2,105,100,169,1,114,34,0,0,0,32,114,5,0,0, + 0,218,8,95,95,114,101,112,114,95,95,138,0,0,0,243, + 2,0,0,0,18,1,114,17,0,0,0,122,20,95,77,111, 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, - 95,78,41,8,114,9,0,0,0,114,8,0,0,0,114,1, - 0,0,0,114,10,0,0,0,114,35,0,0,0,114,44,0, - 0,0,114,45,0,0,0,114,54,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 95,78,41,9,114,8,0,0,0,114,7,0,0,0,114,1, + 0,0,0,114,9,0,0,0,114,35,0,0,0,114,42,0, + 0,0,114,44,0,0,0,114,45,0,0,0,114,54,0,0, + 0,114,23,0,0,0,114,5,0,0,0,114,24,0,0,0, + 65,0,0,0,115,14,0,0,0,8,0,4,1,8,5,8, + 8,8,21,8,25,12,13,114,17,0,0,0,114,24,0,0, + 0,99,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,16,95, + 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,122, + 86,65,32,115,105,109,112,108,101,32,95,77,111,100,117,108, + 101,76,111,99,107,32,101,113,117,105,118,97,108,101,110,116, + 32,102,111,114,32,80,121,116,104,111,110,32,98,117,105,108, + 100,115,32,119,105,116,104,111,117,116,10,32,32,32,32,109, + 117,108,116,105,45,116,104,114,101,97,100,105,110,103,32,115, + 117,112,112,111,114,116,46,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, + 0,124,1,124,0,95,0,100,1,124,0,95,1,100,0,83, + 0,114,25,0,0,0,41,2,114,20,0,0,0,114,31,0, + 0,0,114,33,0,0,0,32,32,114,5,0,0,0,114,35, + 0,0,0,146,0,0,0,243,4,0,0,0,6,1,10,1, + 114,17,0,0,0,122,25,95,68,117,109,109,121,77,111,100, + 117,108,101,76,111,99,107,46,95,95,105,110,105,116,95,95, + 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,18,0,0,0,124,0,4,0,106,0, + 100,1,55,0,2,0,95,0,100,2,83,0,41,3,78,114, + 43,0,0,0,84,41,1,114,31,0,0,0,114,53,0,0, + 0,32,114,5,0,0,0,114,44,0,0,0,150,0,0,0, + 115,4,0,0,0,14,1,4,1,114,17,0,0,0,122,24, + 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, + 46,97,99,113,117,105,114,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,67,0,0,0,115,36,0, + 0,0,124,0,106,0,100,1,107,2,114,9,116,1,100,2, + 131,1,130,1,124,0,4,0,106,0,100,3,56,0,2,0, + 95,0,100,0,83,0,41,4,78,114,26,0,0,0,114,47, + 0,0,0,114,43,0,0,0,41,2,114,31,0,0,0,114, + 48,0,0,0,114,53,0,0,0,32,114,5,0,0,0,114, + 45,0,0,0,154,0,0,0,115,6,0,0,0,10,1,8, + 1,18,1,114,17,0,0,0,122,24,95,68,117,109,109,121, + 77,111,100,117,108,101,76,111,99,107,46,114,101,108,101,97, + 115,101,99,1,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,67,0,0,0,114,49,0,0,0,41,2,78,122, + 28,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, + 107,40,123,33,114,125,41,32,97,116,32,123,125,114,50,0, + 0,0,114,53,0,0,0,32,114,5,0,0,0,114,54,0, + 0,0,159,0,0,0,114,55,0,0,0,114,17,0,0,0, + 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, + 99,107,46,95,95,114,101,112,114,95,95,78,41,8,114,8, + 0,0,0,114,7,0,0,0,114,1,0,0,0,114,9,0, + 0,0,114,35,0,0,0,114,44,0,0,0,114,45,0,0, + 0,114,54,0,0,0,114,23,0,0,0,114,5,0,0,0, 114,56,0,0,0,142,0,0,0,115,12,0,0,0,8,0, - 4,1,8,3,8,4,8,4,12,5,114,18,0,0,0,114, + 4,1,8,3,8,4,8,4,12,5,114,17,0,0,0,114, 56,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, 0,2,0,0,0,64,0,0,0,115,36,0,0,0,101,0, 90,1,100,0,90,2,100,1,100,2,132,0,90,3,100,3, @@ -293,134 +285,130 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,0,0,2,0,0,0,67,0,0,0,115,16,0, 0,0,124,1,124,0,95,0,100,0,124,0,95,1,100,0, 83,0,114,0,0,0,0,41,2,218,5,95,110,97,109,101, - 218,5,95,108,111,99,107,114,33,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,35,0,0,0, - 165,0,0,0,114,57,0,0,0,114,18,0,0,0,122,27, - 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, - 101,114,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,67,0,0,0, - 115,26,0,0,0,116,0,124,0,106,1,131,1,124,0,95, - 2,124,0,106,2,160,3,161,0,1,0,100,0,83,0,114, - 0,0,0,0,41,4,218,16,95,103,101,116,95,109,111,100, - 117,108,101,95,108,111,99,107,114,59,0,0,0,114,60,0, - 0,0,114,44,0,0,0,114,53,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,9,95,95,101, - 110,116,101,114,95,95,169,0,0,0,115,4,0,0,0,12, - 1,14,1,114,18,0,0,0,122,28,95,77,111,100,117,108, - 101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,101, - 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,79,0,0,0,115,14,0,0,0, - 124,0,106,0,160,1,161,0,1,0,100,0,83,0,114,0, - 0,0,0,41,2,114,60,0,0,0,114,45,0,0,0,41, - 3,114,34,0,0,0,218,4,97,114,103,115,90,6,107,119, - 97,114,103,115,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,8,95,95,101,120,105,116,95,95,173,0,0, - 0,115,2,0,0,0,14,1,114,18,0,0,0,122,27,95, - 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, - 114,46,95,95,101,120,105,116,95,95,78,41,6,114,9,0, - 0,0,114,8,0,0,0,114,1,0,0,0,114,35,0,0, - 0,114,62,0,0,0,114,64,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 58,0,0,0,163,0,0,0,115,8,0,0,0,8,0,8, - 2,8,4,12,4,114,18,0,0,0,114,58,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 67,0,0,0,115,138,0,0,0,116,0,160,1,161,0,1, - 0,9,0,9,0,116,2,124,0,25,0,131,0,125,1,110, - 12,35,0,4,0,116,3,121,68,1,0,1,0,1,0,100, - 1,125,1,89,0,110,1,37,0,124,1,100,1,117,0,114, - 55,116,4,100,1,117,0,114,37,116,5,124,0,131,1,125, - 1,110,4,116,6,124,0,131,1,125,1,124,0,102,1,100, - 2,100,3,132,1,125,2,116,7,160,8,124,1,124,2,161, - 2,116,2,124,0,60,0,116,0,160,9,161,0,1,0,124, - 1,83,0,35,0,116,0,160,9,161,0,1,0,119,0,37, - 0,119,0,41,4,122,139,71,101,116,32,111,114,32,99,114, - 101,97,116,101,32,116,104,101,32,109,111,100,117,108,101,32, - 108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,110, - 32,109,111,100,117,108,101,32,110,97,109,101,46,10,10,32, - 32,32,32,65,99,113,117,105,114,101,47,114,101,108,101,97, - 115,101,32,105,110,116,101,114,110,97,108,108,121,32,116,104, - 101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,32, - 108,111,99,107,32,116,111,32,112,114,111,116,101,99,116,10, - 32,32,32,32,95,109,111,100,117,108,101,95,108,111,99,107, - 115,46,78,99,2,0,0,0,0,0,0,0,0,0,0,0, - 8,0,0,0,83,0,0,0,115,56,0,0,0,116,0,160, - 1,161,0,1,0,9,0,116,2,160,3,124,1,161,1,124, - 0,117,0,114,15,116,2,124,1,61,0,116,0,160,4,161, - 0,1,0,100,0,83,0,35,0,116,0,160,4,161,0,1, - 0,119,0,37,0,114,0,0,0,0,41,5,218,4,95,105, - 109,112,218,12,97,99,113,117,105,114,101,95,108,111,99,107, - 218,13,95,109,111,100,117,108,101,95,108,111,99,107,115,114, - 39,0,0,0,218,12,114,101,108,101,97,115,101,95,108,111, - 99,107,41,2,218,3,114,101,102,114,21,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,2,99, - 98,198,0,0,0,115,16,0,0,0,8,1,2,1,14,4, - 6,1,12,2,2,128,10,0,2,128,115,8,0,0,0,133, - 10,21,0,149,6,27,7,122,28,95,103,101,116,95,109,111, - 100,117,108,101,95,108,111,99,107,46,60,108,111,99,97,108, - 115,62,46,99,98,41,10,114,65,0,0,0,114,66,0,0, - 0,114,67,0,0,0,218,8,75,101,121,69,114,114,111,114, - 114,27,0,0,0,114,56,0,0,0,114,24,0,0,0,218, - 8,95,119,101,97,107,114,101,102,114,69,0,0,0,114,68, - 0,0,0,41,3,114,21,0,0,0,114,28,0,0,0,114, - 70,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,61,0,0,0,179,0,0,0,115,40,0,0, - 0,8,6,2,1,2,1,12,1,2,128,12,1,8,1,2, - 128,8,2,8,1,10,1,8,2,12,2,16,11,8,2,4, - 2,2,128,10,254,2,128,2,234,115,26,0,0,0,134,5, - 12,0,139,1,61,0,140,9,23,7,149,34,61,0,189,6, - 65,3,7,193,4,1,23,7,114,61,0,0,0,99,1,0, + 218,5,95,108,111,99,107,114,33,0,0,0,32,32,114,5, + 0,0,0,114,35,0,0,0,165,0,0,0,114,57,0,0, + 0,114,17,0,0,0,122,27,95,77,111,100,117,108,101,76, + 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, + 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,67,0,0,0,115,26,0,0,0,116,0,124, + 0,106,1,131,1,124,0,95,2,124,0,106,2,160,3,161, + 0,1,0,100,0,83,0,114,0,0,0,0,41,4,218,16, + 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, + 114,59,0,0,0,114,60,0,0,0,114,44,0,0,0,114, + 53,0,0,0,32,114,5,0,0,0,218,9,95,95,101,110, + 116,101,114,95,95,169,0,0,0,115,4,0,0,0,12,1, + 14,1,114,17,0,0,0,122,28,95,77,111,100,117,108,101, + 76,111,99,107,77,97,110,97,103,101,114,46,95,95,101,110, + 116,101,114,95,95,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,79,0,0,0,115,14,0,0,0,124, + 0,106,0,160,1,161,0,1,0,100,0,83,0,114,0,0, + 0,0,41,2,114,60,0,0,0,114,45,0,0,0,41,3, + 114,34,0,0,0,218,4,97,114,103,115,90,6,107,119,97, + 114,103,115,32,32,32,114,5,0,0,0,218,8,95,95,101, + 120,105,116,95,95,173,0,0,0,115,2,0,0,0,14,1, + 114,17,0,0,0,122,27,95,77,111,100,117,108,101,76,111, + 99,107,77,97,110,97,103,101,114,46,95,95,101,120,105,116, + 95,95,78,41,6,114,8,0,0,0,114,7,0,0,0,114, + 1,0,0,0,114,35,0,0,0,114,62,0,0,0,114,64, + 0,0,0,114,23,0,0,0,114,5,0,0,0,114,58,0, + 0,0,163,0,0,0,115,8,0,0,0,8,0,8,2,8, + 4,12,4,114,17,0,0,0,114,58,0,0,0,99,1,0, 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,56,0,0,0,116,0,124,0,131,1,125,1,9, - 0,124,1,160,1,161,0,1,0,110,11,35,0,4,0,116, - 2,121,27,1,0,1,0,1,0,89,0,100,1,83,0,37, - 0,124,1,160,3,161,0,1,0,100,1,83,0,119,0,41, - 2,122,189,65,99,113,117,105,114,101,115,32,116,104,101,110, - 32,114,101,108,101,97,115,101,115,32,116,104,101,32,109,111, - 100,117,108,101,32,108,111,99,107,32,102,111,114,32,97,32, - 103,105,118,101,110,32,109,111,100,117,108,101,32,110,97,109, - 101,46,10,10,32,32,32,32,84,104,105,115,32,105,115,32, - 117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,97, - 32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,108, - 101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,101, - 100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,118, - 101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,32, - 105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,116, - 104,101,114,32,116,104,114,101,97,100,46,10,32,32,32,32, - 78,41,4,114,61,0,0,0,114,44,0,0,0,114,23,0, - 0,0,114,45,0,0,0,41,2,114,21,0,0,0,114,28, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,19,95,108,111,99,107,95,117,110,108,111,99,107, - 95,109,111,100,117,108,101,216,0,0,0,115,18,0,0,0, - 8,6,2,1,10,1,2,128,12,1,6,3,2,128,12,2, - 2,251,115,12,0,0,0,133,4,10,0,138,7,20,7,155, - 1,20,7,114,73,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,79,0,0,0,115,14,0, - 0,0,124,0,124,1,105,0,124,2,164,1,142,1,83,0, - 41,2,97,46,1,0,0,114,101,109,111,118,101,95,105,109, - 112,111,114,116,108,105,98,95,102,114,97,109,101,115,32,105, - 110,32,105,109,112,111,114,116,46,99,32,119,105,108,108,32, - 97,108,119,97,121,115,32,114,101,109,111,118,101,32,115,101, - 113,117,101,110,99,101,115,10,32,32,32,32,111,102,32,105, - 109,112,111,114,116,108,105,98,32,102,114,97,109,101,115,32, - 116,104,97,116,32,101,110,100,32,119,105,116,104,32,97,32, - 99,97,108,108,32,116,111,32,116,104,105,115,32,102,117,110, - 99,116,105,111,110,10,10,32,32,32,32,85,115,101,32,105, - 116,32,105,110,115,116,101,97,100,32,111,102,32,97,32,110, - 111,114,109,97,108,32,99,97,108,108,32,105,110,32,112,108, - 97,99,101,115,32,119,104,101,114,101,32,105,110,99,108,117, - 100,105,110,103,32,116,104,101,32,105,109,112,111,114,116,108, - 105,98,10,32,32,32,32,102,114,97,109,101,115,32,105,110, - 116,114,111,100,117,99,101,115,32,117,110,119,97,110,116,101, - 100,32,110,111,105,115,101,32,105,110,116,111,32,116,104,101, - 32,116,114,97,99,101,98,97,99,107,32,40,101,46,103,46, - 32,119,104,101,110,32,101,120,101,99,117,116,105,110,103,10, - 32,32,32,32,109,111,100,117,108,101,32,99,111,100,101,41, - 10,32,32,32,32,78,114,5,0,0,0,41,3,218,1,102, - 114,63,0,0,0,90,4,107,119,100,115,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,25,95,99,97,108, + 0,0,115,138,0,0,0,116,0,160,1,161,0,1,0,9, + 0,9,0,116,2,124,0,25,0,131,0,125,1,110,12,35, + 0,4,0,116,3,121,68,1,0,1,0,1,0,100,1,125, + 1,89,0,110,1,37,0,124,1,100,1,117,0,114,55,116, + 4,100,1,117,0,114,37,116,5,124,0,131,1,125,1,110, + 4,116,6,124,0,131,1,125,1,124,0,102,1,100,2,100, + 3,132,1,125,2,116,7,160,8,124,1,124,2,161,2,116, + 2,124,0,60,0,116,0,160,9,161,0,1,0,124,1,83, + 0,35,0,116,0,160,9,161,0,1,0,119,0,37,0,119, + 0,41,4,122,139,71,101,116,32,111,114,32,99,114,101,97, + 116,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, + 99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,109, + 111,100,117,108,101,32,110,97,109,101,46,10,10,32,32,32, + 32,65,99,113,117,105,114,101,47,114,101,108,101,97,115,101, + 32,105,110,116,101,114,110,97,108,108,121,32,116,104,101,32, + 103,108,111,98,97,108,32,105,109,112,111,114,116,32,108,111, + 99,107,32,116,111,32,112,114,111,116,101,99,116,10,32,32, + 32,32,95,109,111,100,117,108,101,95,108,111,99,107,115,46, + 78,99,2,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,83,0,0,0,115,56,0,0,0,116,0,160,1,161, + 0,1,0,9,0,116,2,160,3,124,1,161,1,124,0,117, + 0,114,15,116,2,124,1,61,0,116,0,160,4,161,0,1, + 0,100,0,83,0,35,0,116,0,160,4,161,0,1,0,119, + 0,37,0,114,0,0,0,0,41,5,218,4,95,105,109,112, + 218,12,97,99,113,117,105,114,101,95,108,111,99,107,218,13, + 95,109,111,100,117,108,101,95,108,111,99,107,115,114,39,0, + 0,0,218,12,114,101,108,101,97,115,101,95,108,111,99,107, + 41,2,218,3,114,101,102,114,20,0,0,0,32,32,114,5, + 0,0,0,218,2,99,98,198,0,0,0,115,16,0,0,0, + 8,1,2,1,14,4,6,1,12,2,2,128,10,0,2,128, + 115,8,0,0,0,133,10,21,0,149,6,27,7,122,28,95, + 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,46, + 60,108,111,99,97,108,115,62,46,99,98,41,10,114,65,0, + 0,0,114,66,0,0,0,114,67,0,0,0,218,8,75,101, + 121,69,114,114,111,114,114,27,0,0,0,114,56,0,0,0, + 114,24,0,0,0,218,8,95,119,101,97,107,114,101,102,114, + 69,0,0,0,114,68,0,0,0,41,3,114,20,0,0,0, + 114,28,0,0,0,114,70,0,0,0,32,32,32,114,5,0, + 0,0,114,61,0,0,0,179,0,0,0,115,40,0,0,0, + 8,6,2,1,2,1,12,1,2,128,12,1,8,1,2,128, + 8,2,8,1,10,1,8,2,12,2,16,11,8,2,4,2, + 2,128,10,254,2,128,2,234,115,26,0,0,0,134,5,12, + 0,139,1,61,0,140,9,23,7,149,34,61,0,189,6,65, + 3,7,193,4,1,23,7,114,61,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, + 0,115,56,0,0,0,116,0,124,0,131,1,125,1,9,0, + 124,1,160,1,161,0,1,0,110,11,35,0,4,0,116,2, + 121,27,1,0,1,0,1,0,89,0,100,1,83,0,37,0, + 124,1,160,3,161,0,1,0,100,1,83,0,119,0,41,2, + 122,189,65,99,113,117,105,114,101,115,32,116,104,101,110,32, + 114,101,108,101,97,115,101,115,32,116,104,101,32,109,111,100, + 117,108,101,32,108,111,99,107,32,102,111,114,32,97,32,103, + 105,118,101,110,32,109,111,100,117,108,101,32,110,97,109,101, + 46,10,10,32,32,32,32,84,104,105,115,32,105,115,32,117, + 115,101,100,32,116,111,32,101,110,115,117,114,101,32,97,32, + 109,111,100,117,108,101,32,105,115,32,99,111,109,112,108,101, + 116,101,108,121,32,105,110,105,116,105,97,108,105,122,101,100, + 44,32,105,110,32,116,104,101,10,32,32,32,32,101,118,101, + 110,116,32,105,116,32,105,115,32,98,101,105,110,103,32,105, + 109,112,111,114,116,101,100,32,98,121,32,97,110,111,116,104, + 101,114,32,116,104,114,101,97,100,46,10,32,32,32,32,78, + 41,4,114,61,0,0,0,114,44,0,0,0,114,22,0,0, + 0,114,45,0,0,0,41,2,114,20,0,0,0,114,28,0, + 0,0,32,32,114,5,0,0,0,218,19,95,108,111,99,107, + 95,117,110,108,111,99,107,95,109,111,100,117,108,101,216,0, + 0,0,115,18,0,0,0,8,6,2,1,10,1,2,128,12, + 1,6,3,2,128,12,2,2,251,115,12,0,0,0,133,4, + 10,0,138,7,20,7,155,1,20,7,114,73,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 79,0,0,0,115,14,0,0,0,124,0,124,1,105,0,124, + 2,164,1,142,1,83,0,41,2,97,46,1,0,0,114,101, + 109,111,118,101,95,105,109,112,111,114,116,108,105,98,95,102, + 114,97,109,101,115,32,105,110,32,105,109,112,111,114,116,46, + 99,32,119,105,108,108,32,97,108,119,97,121,115,32,114,101, + 109,111,118,101,32,115,101,113,117,101,110,99,101,115,10,32, + 32,32,32,111,102,32,105,109,112,111,114,116,108,105,98,32, + 102,114,97,109,101,115,32,116,104,97,116,32,101,110,100,32, + 119,105,116,104,32,97,32,99,97,108,108,32,116,111,32,116, + 104,105,115,32,102,117,110,99,116,105,111,110,10,10,32,32, + 32,32,85,115,101,32,105,116,32,105,110,115,116,101,97,100, + 32,111,102,32,97,32,110,111,114,109,97,108,32,99,97,108, + 108,32,105,110,32,112,108,97,99,101,115,32,119,104,101,114, + 101,32,105,110,99,108,117,100,105,110,103,32,116,104,101,32, + 105,109,112,111,114,116,108,105,98,10,32,32,32,32,102,114, + 97,109,101,115,32,105,110,116,114,111,100,117,99,101,115,32, + 117,110,119,97,110,116,101,100,32,110,111,105,115,101,32,105, + 110,116,111,32,116,104,101,32,116,114,97,99,101,98,97,99, + 107,32,40,101,46,103,46,32,119,104,101,110,32,101,120,101, + 99,117,116,105,110,103,10,32,32,32,32,109,111,100,117,108, + 101,32,99,111,100,101,41,10,32,32,32,32,78,114,23,0, + 0,0,41,3,218,1,102,114,63,0,0,0,90,4,107,119, + 100,115,32,32,32,114,5,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,233,0,0,0,115,2,0,0,0,14,8, - 114,18,0,0,0,114,75,0,0,0,114,43,0,0,0,41, + 114,17,0,0,0,114,75,0,0,0,114,43,0,0,0,41, 1,218,9,118,101,114,98,111,115,105,116,121,99,1,0,0, 0,0,0,0,0,1,0,0,0,4,0,0,0,71,0,0, 0,115,58,0,0,0,116,0,106,1,106,2,124,1,107,5, @@ -432,133 +420,131 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 105,102,32,45,118,47,80,89,84,72,79,78,86,69,82,66, 79,83,69,32,105,115,32,116,117,114,110,101,100,32,111,110, 46,41,2,250,1,35,122,7,105,109,112,111,114,116,32,122, - 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,19, + 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,18, 0,0,0,218,5,102,108,97,103,115,218,7,118,101,114,98, 111,115,101,218,10,115,116,97,114,116,115,119,105,116,104,218, 5,112,114,105,110,116,114,51,0,0,0,218,6,115,116,100, 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,76, - 0,0,0,114,63,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,16,95,118,101,114,98,111,115, - 101,95,109,101,115,115,97,103,101,244,0,0,0,115,10,0, - 0,0,12,2,10,1,8,1,24,1,4,253,114,18,0,0, - 0,114,84,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,243,26,0,0,0, - 135,0,102,1,100,1,100,2,132,8,125,1,116,0,124,1, - 136,0,131,2,1,0,124,1,83,0,41,4,122,49,68,101, - 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, - 121,32,116,104,101,32,110,97,109,101,100,32,109,111,100,117, - 108,101,32,105,115,32,98,117,105,108,116,45,105,110,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 19,0,0,0,115,38,0,0,0,124,1,116,0,106,1,118, - 1,114,14,116,2,100,1,160,3,124,1,161,1,124,1,100, - 2,141,2,130,1,136,0,124,0,124,1,131,2,83,0,41, - 3,78,250,29,123,33,114,125,32,105,115,32,110,111,116,32, - 97,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,114,20,0,0,0,41,4,114,19,0,0,0,218,20,98, - 117,105,108,116,105,110,95,109,111,100,117,108,101,95,110,97, - 109,101,115,218,11,73,109,112,111,114,116,69,114,114,111,114, - 114,51,0,0,0,169,2,114,34,0,0,0,218,8,102,117, - 108,108,110,97,109,101,169,1,218,3,102,120,110,114,5,0, - 0,0,114,6,0,0,0,218,25,95,114,101,113,117,105,114, - 101,115,95,98,117,105,108,116,105,110,95,119,114,97,112,112, - 101,114,254,0,0,0,243,10,0,0,0,10,1,10,1,2, - 1,6,255,10,2,114,18,0,0,0,122,52,95,114,101,113, - 117,105,114,101,115,95,98,117,105,108,116,105,110,46,60,108, - 111,99,97,108,115,62,46,95,114,101,113,117,105,114,101,115, - 95,98,117,105,108,116,105,110,95,119,114,97,112,112,101,114, - 78,169,1,114,17,0,0,0,41,2,114,92,0,0,0,114, - 93,0,0,0,114,5,0,0,0,114,91,0,0,0,114,6, - 0,0,0,218,17,95,114,101,113,117,105,114,101,115,95,98, - 117,105,108,116,105,110,252,0,0,0,243,6,0,0,0,12, - 2,10,5,4,1,114,18,0,0,0,114,96,0,0,0,99, + 0,0,0,114,63,0,0,0,32,32,32,114,5,0,0,0, + 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, + 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, + 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,114,85,0,0,0,41,4,122,47,68,101,99, - 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, - 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108, - 101,32,105,115,32,102,114,111,122,101,110,46,99,2,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,19,0,0, - 0,115,38,0,0,0,116,0,160,1,124,1,161,1,115,14, - 116,2,100,1,160,3,124,1,161,1,124,1,100,2,141,2, - 130,1,136,0,124,0,124,1,131,2,83,0,169,3,78,122, - 27,123,33,114,125,32,105,115,32,110,111,116,32,97,32,102, - 114,111,122,101,110,32,109,111,100,117,108,101,114,20,0,0, - 0,41,4,114,65,0,0,0,218,9,105,115,95,102,114,111, - 122,101,110,114,88,0,0,0,114,51,0,0,0,114,89,0, - 0,0,114,91,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,24,95,114,101,113,117,105,114,101,115,95,102,114,111, - 122,101,110,95,119,114,97,112,112,101,114,9,1,0,0,114, - 94,0,0,0,114,18,0,0,0,122,50,95,114,101,113,117, - 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, - 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, - 114,111,122,101,110,95,119,114,97,112,112,101,114,78,114,95, - 0,0,0,41,2,114,92,0,0,0,114,100,0,0,0,114, - 5,0,0,0,114,91,0,0,0,114,6,0,0,0,218,16, - 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, - 7,1,0,0,114,97,0,0,0,114,18,0,0,0,114,101, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,74,0,0,0,100,1,125, - 2,116,0,160,1,124,2,116,2,161,2,1,0,116,3,124, - 1,124,0,131,2,125,3,124,1,116,4,106,5,118,0,114, - 33,116,4,106,5,124,1,25,0,125,4,116,6,124,3,124, - 4,131,2,1,0,116,4,106,5,124,1,25,0,83,0,116, - 7,124,3,131,1,83,0,41,3,122,130,76,111,97,100,32, - 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, - 100,117,108,101,32,105,110,116,111,32,115,121,115,46,109,111, - 100,117,108,101,115,32,97,110,100,32,114,101,116,117,114,110, - 32,105,116,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,46,32,32,85,115,101,32,108,111,97,100,101,114, - 46,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,122,103,116, - 104,101,32,108,111,97,100,95,109,111,100,117,108,101,40,41, - 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, - 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, - 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, - 32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,105, - 110,115,116,101,97,100,78,41,8,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,16, - 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, - 114,19,0,0,0,218,7,109,111,100,117,108,101,115,218,5, - 95,101,120,101,99,218,5,95,108,111,97,100,41,5,114,34, - 0,0,0,114,90,0,0,0,218,3,109,115,103,218,4,115, - 112,101,99,218,6,109,111,100,117,108,101,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,17,95,108,111,97, - 100,95,109,111,100,117,108,101,95,115,104,105,109,19,1,0, - 0,115,16,0,0,0,4,6,12,2,10,1,10,1,10,1, - 10,1,10,1,8,2,114,18,0,0,0,114,112,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,194,0,0,0,116,0,124,0,100,1, - 100,2,131,3,125,1,116,0,124,0,100,3,100,2,131,3, - 4,0,125,2,114,18,116,1,124,2,131,1,83,0,116,2, - 124,1,100,4,131,2,114,39,9,0,124,1,160,3,124,0, - 161,1,83,0,35,0,4,0,116,4,121,96,1,0,1,0, - 1,0,89,0,110,1,37,0,9,0,124,0,106,5,125,3, - 110,12,35,0,4,0,116,6,121,95,1,0,1,0,1,0, - 100,5,125,3,89,0,110,1,37,0,9,0,124,0,106,7, - 125,4,110,27,35,0,4,0,116,6,121,94,1,0,1,0, - 1,0,124,1,100,2,117,0,114,79,100,6,160,8,124,3, - 161,1,6,0,89,0,83,0,100,7,160,8,124,3,124,1, - 161,2,6,0,89,0,83,0,37,0,100,8,160,8,124,3, - 124,4,161,2,83,0,119,0,119,0,119,0,41,9,122,44, - 84,104,101,32,105,109,112,108,101,109,101,110,116,97,116,105, - 111,110,32,111,102,32,77,111,100,117,108,101,84,121,112,101, - 46,95,95,114,101,112,114,95,95,40,41,46,218,10,95,95, - 108,111,97,100,101,114,95,95,78,218,8,95,95,115,112,101, - 99,95,95,218,11,109,111,100,117,108,101,95,114,101,112,114, - 250,1,63,250,13,60,109,111,100,117,108,101,32,123,33,114, - 125,62,250,20,60,109,111,100,117,108,101,32,123,33,114,125, - 32,40,123,33,114,125,41,62,250,23,60,109,111,100,117,108, - 101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125, - 62,41,9,114,13,0,0,0,218,22,95,109,111,100,117,108, - 101,95,114,101,112,114,95,102,114,111,109,95,115,112,101,99, - 114,11,0,0,0,114,115,0,0,0,218,9,69,120,99,101, - 112,116,105,111,110,114,9,0,0,0,114,2,0,0,0,218, - 8,95,95,102,105,108,101,95,95,114,51,0,0,0,41,5, - 114,111,0,0,0,218,6,108,111,97,100,101,114,114,110,0, - 0,0,114,21,0,0,0,218,8,102,105,108,101,110,97,109, - 101,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 3,0,0,0,243,26,0,0,0,135,2,102,1,100,1,100, + 2,132,8,125,1,116,0,124,1,136,2,131,2,1,0,124, + 1,83,0,41,4,122,49,68,101,99,111,114,97,116,111,114, + 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, + 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, + 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,19,0,0,0,115,38,0, + 0,0,124,1,116,0,106,1,118,1,114,14,116,2,100,1, + 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,2, + 124,0,124,1,131,2,83,0,41,3,78,250,29,123,33,114, + 125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,114,19,0,0,0,41, + 4,114,18,0,0,0,218,20,98,117,105,108,116,105,110,95, + 109,111,100,117,108,101,95,110,97,109,101,115,218,11,73,109, + 112,111,114,116,69,114,114,111,114,114,51,0,0,0,169,3, + 114,34,0,0,0,218,8,102,117,108,108,110,97,109,101,218, + 3,102,120,110,32,32,128,114,5,0,0,0,218,25,95,114, + 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,95, + 119,114,97,112,112,101,114,254,0,0,0,243,10,0,0,0, + 10,1,10,1,2,1,6,255,10,2,114,17,0,0,0,122, + 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, + 105,110,46,60,108,111,99,97,108,115,62,46,95,114,101,113, + 117,105,114,101,115,95,98,117,105,108,116,105,110,95,119,114, + 97,112,112,101,114,78,169,1,114,16,0,0,0,41,3,114, + 91,0,0,0,114,92,0,0,0,114,91,0,0,0,96,32, + 64,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, + 115,95,98,117,105,108,116,105,110,252,0,0,0,243,6,0, + 0,0,12,2,10,5,4,1,114,17,0,0,0,114,95,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,114,85,0,0,0,41,4,122,47, + 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, + 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, + 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, + 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, + 2,141,2,130,1,136,2,124,0,124,1,131,2,83,0,169, + 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, + 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, + 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, + 102,114,111,122,101,110,114,88,0,0,0,114,51,0,0,0, + 114,89,0,0,0,32,32,128,114,5,0,0,0,218,24,95, + 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, + 119,114,97,112,112,101,114,9,1,0,0,114,93,0,0,0, + 114,17,0,0,0,122,50,95,114,101,113,117,105,114,101,115, + 95,102,114,111,122,101,110,46,60,108,111,99,97,108,115,62, + 46,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, + 110,95,119,114,97,112,112,101,114,78,114,94,0,0,0,41, + 3,114,91,0,0,0,114,99,0,0,0,114,91,0,0,0, + 96,32,64,114,5,0,0,0,218,16,95,114,101,113,117,105, + 114,101,115,95,102,114,111,122,101,110,7,1,0,0,114,96, + 0,0,0,114,17,0,0,0,114,100,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,115,74,0,0,0,100,1,125,2,116,0,160,1,124, + 2,116,2,161,2,1,0,116,3,124,1,124,0,131,2,125, + 3,124,1,116,4,106,5,118,0,114,33,116,4,106,5,124, + 1,25,0,125,4,116,6,124,3,124,4,131,2,1,0,116, + 4,106,5,124,1,25,0,83,0,116,7,124,3,131,1,83, + 0,41,3,122,130,76,111,97,100,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, + 110,116,111,32,115,121,115,46,109,111,100,117,108,101,115,32, + 97,110,100,32,114,101,116,117,114,110,32,105,116,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,46,32,32, + 85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101,32,108,111,97, + 100,95,109,111,100,117,108,101,40,41,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, + 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, + 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, + 32,51,46,49,50,59,32,117,115,101,32,101,120,101,99,95, + 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, + 78,41,8,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,16,115,112,101,99,95,102, + 114,111,109,95,108,111,97,100,101,114,114,18,0,0,0,218, + 7,109,111,100,117,108,101,115,218,5,95,101,120,101,99,218, + 5,95,108,111,97,100,41,5,114,34,0,0,0,114,90,0, + 0,0,218,3,109,115,103,218,4,115,112,101,99,218,6,109, + 111,100,117,108,101,32,32,32,32,32,114,5,0,0,0,218, + 17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,104, + 105,109,19,1,0,0,115,16,0,0,0,4,6,12,2,10, + 1,10,1,10,1,10,1,10,1,8,2,114,17,0,0,0, + 114,111,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,194,0,0,0,116, + 0,124,0,100,1,100,2,131,3,125,1,116,0,124,0,100, + 3,100,2,131,3,4,0,125,2,114,18,116,1,124,2,131, + 1,83,0,116,2,124,1,100,4,131,2,114,39,9,0,124, + 1,160,3,124,0,161,1,83,0,35,0,4,0,116,4,121, + 96,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, + 0,106,5,125,3,110,12,35,0,4,0,116,6,121,95,1, + 0,1,0,1,0,100,5,125,3,89,0,110,1,37,0,9, + 0,124,0,106,7,125,4,110,27,35,0,4,0,116,6,121, + 94,1,0,1,0,1,0,124,1,100,2,117,0,114,79,100, + 6,160,8,124,3,161,1,6,0,89,0,83,0,100,7,160, + 8,124,3,124,1,161,2,6,0,89,0,83,0,37,0,100, + 8,160,8,124,3,124,4,161,2,83,0,119,0,119,0,119, + 0,41,9,122,44,84,104,101,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,111,102,32,77,111,100,117,108, + 101,84,121,112,101,46,95,95,114,101,112,114,95,95,40,41, + 46,218,10,95,95,108,111,97,100,101,114,95,95,78,218,8, + 95,95,115,112,101,99,95,95,218,11,109,111,100,117,108,101, + 95,114,101,112,114,250,1,63,250,13,60,109,111,100,117,108, + 101,32,123,33,114,125,62,250,20,60,109,111,100,117,108,101, + 32,123,33,114,125,32,40,123,33,114,125,41,62,250,23,60, + 109,111,100,117,108,101,32,123,33,114,125,32,102,114,111,109, + 32,123,33,114,125,62,41,9,114,12,0,0,0,218,22,95, + 109,111,100,117,108,101,95,114,101,112,114,95,102,114,111,109, + 95,115,112,101,99,114,10,0,0,0,114,114,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,114,8,0,0,0,114, + 2,0,0,0,218,8,95,95,102,105,108,101,95,95,114,51, + 0,0,0,41,5,114,110,0,0,0,218,6,108,111,97,100, + 101,114,114,109,0,0,0,114,20,0,0,0,218,8,102,105, + 108,101,110,97,109,101,32,32,32,32,32,114,5,0,0,0, 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, @@ -567,7 +553,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, - 1,38,7,114,125,0,0,0,99,0,0,0,0,0,0,0, + 1,38,7,114,124,0,0,0,99,0,0,0,0,0,0,0, 0,0,0,0,0,4,0,0,0,64,0,0,0,115,114,0, 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, 100,2,100,2,100,3,156,3,100,4,100,5,132,2,90,4, @@ -678,501 +664,492 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, - 41,7,114,21,0,0,0,114,123,0,0,0,114,127,0,0, - 0,114,128,0,0,0,218,26,115,117,98,109,111,100,117,108, + 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, + 0,114,127,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, 114,218,7,95,99,97,99,104,101,100,41,6,114,34,0,0, - 0,114,21,0,0,0,114,123,0,0,0,114,127,0,0,0, - 114,128,0,0,0,114,129,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,35,0,0,0,101,1, - 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, - 1,6,3,10,1,114,18,0,0,0,122,19,77,111,100,117, - 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, - 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, - 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, - 1,124,0,106,3,100,0,117,1,114,26,124,1,160,4,100, - 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, - 5,100,0,117,1,114,40,124,1,160,4,100,4,160,0,124, - 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, - 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, - 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, - 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, - 105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2, - 44,32,41,9,114,51,0,0,0,114,21,0,0,0,114,123, - 0,0,0,114,127,0,0,0,218,6,97,112,112,101,110,100, - 114,130,0,0,0,218,9,95,95,99,108,97,115,115,95,95, - 114,9,0,0,0,218,4,106,111,105,110,41,2,114,34,0, - 0,0,114,63,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,54,0,0,0,113,1,0,0,115, - 20,0,0,0,10,1,10,1,4,255,10,2,18,1,10,1, - 6,1,8,1,4,255,22,2,114,18,0,0,0,122,19,77, - 111,100,117,108,101,83,112,101,99,46,95,95,114,101,112,114, - 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,104,0,0,0,124,0,106,0, - 125,2,9,0,124,0,106,1,124,1,106,1,107,2,111,38, - 124,0,106,2,124,1,106,2,107,2,111,38,124,0,106,3, - 124,1,106,3,107,2,111,38,124,2,124,1,106,0,107,2, - 111,38,124,0,106,4,124,1,106,4,107,2,111,38,124,0, - 106,5,124,1,106,5,107,2,83,0,35,0,4,0,116,6, - 121,51,1,0,1,0,1,0,116,7,6,0,89,0,83,0, - 37,0,119,0,114,0,0,0,0,41,8,114,130,0,0,0, - 114,21,0,0,0,114,123,0,0,0,114,127,0,0,0,218, - 6,99,97,99,104,101,100,218,12,104,97,115,95,108,111,99, - 97,116,105,111,110,114,2,0,0,0,218,14,78,111,116,73, - 109,112,108,101,109,101,110,116,101,100,41,3,114,34,0,0, - 0,90,5,111,116,104,101,114,90,4,115,109,115,108,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, - 95,101,113,95,95,123,1,0,0,115,36,0,0,0,6,1, - 2,1,12,1,10,1,2,255,10,2,2,254,8,3,2,253, - 10,4,2,252,10,5,2,251,2,128,12,6,8,1,2,128, - 2,255,115,12,0,0,0,132,34,39,0,167,9,50,7,179, - 1,50,7,122,17,77,111,100,117,108,101,83,112,101,99,46, - 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,67,0,0,0,115,58,0,0,0, - 124,0,106,0,100,0,117,0,114,26,124,0,106,1,100,0, - 117,1,114,26,124,0,106,2,114,26,116,3,100,0,117,0, - 114,19,116,4,130,1,116,3,160,5,124,0,106,1,161,1, - 124,0,95,0,124,0,106,0,83,0,114,0,0,0,0,41, - 6,114,132,0,0,0,114,127,0,0,0,114,131,0,0,0, - 218,19,95,98,111,111,116,115,116,114,97,112,95,101,120,116, - 101,114,110,97,108,218,19,78,111,116,73,109,112,108,101,109, - 101,110,116,101,100,69,114,114,111,114,90,11,95,103,101,116, - 95,99,97,99,104,101,100,114,53,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,136,0,0,0, - 135,1,0,0,115,12,0,0,0,10,2,16,1,8,1,4, - 1,14,1,6,1,114,18,0,0,0,122,17,77,111,100,117, - 108,101,83,112,101,99,46,99,97,99,104,101,100,99,2,0, - 0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,132,0,0,0,41,2,114, - 34,0,0,0,114,136,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,136,0,0,0,144,1,0, - 0,115,2,0,0,0,10,2,114,18,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,115,32,0,0,0,124,0,106,0,100,1,117,0,114, - 13,124,0,106,1,160,2,100,2,161,1,100,3,25,0,83, - 0,124,0,106,1,83,0,41,4,122,32,84,104,101,32,110, - 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, - 101,39,115,32,112,97,114,101,110,116,46,78,218,1,46,114, - 26,0,0,0,41,3,114,130,0,0,0,114,21,0,0,0, - 218,10,114,112,97,114,116,105,116,105,111,110,114,53,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,6,112,97,114,101,110,116,148,1,0,0,115,6,0,0, - 0,10,3,16,1,6,2,114,18,0,0,0,122,17,77,111, - 100,117,108,101,83,112,101,99,46,112,97,114,101,110,116,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 67,0,0,0,115,6,0,0,0,124,0,106,0,83,0,114, - 0,0,0,0,41,1,114,131,0,0,0,114,53,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 137,0,0,0,156,1,0,0,115,2,0,0,0,6,2,114, - 18,0,0,0,122,23,77,111,100,117,108,101,83,112,101,99, - 46,104,97,115,95,108,111,99,97,116,105,111,110,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,67,0, - 0,0,115,14,0,0,0,116,0,124,1,131,1,124,0,95, - 1,100,0,83,0,114,0,0,0,0,41,2,218,4,98,111, - 111,108,114,131,0,0,0,41,2,114,34,0,0,0,218,5, - 118,97,108,117,101,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,137,0,0,0,160,1,0,0,115,2,0, - 0,0,14,2,114,18,0,0,0,41,12,114,9,0,0,0, - 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, - 35,0,0,0,114,54,0,0,0,114,139,0,0,0,218,8, - 112,114,111,112,101,114,116,121,114,136,0,0,0,218,6,115, - 101,116,116,101,114,114,144,0,0,0,114,137,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,126,0,0,0,64,1,0,0,115,34,0,0, - 0,8,0,4,1,4,36,2,1,12,255,8,12,8,10,2, - 12,10,1,4,8,10,1,2,3,10,1,2,7,10,1,4, - 3,14,1,114,18,0,0,0,114,126,0,0,0,169,2,114, - 127,0,0,0,114,129,0,0,0,99,2,0,0,0,0,0, - 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,152, - 0,0,0,116,0,124,1,100,1,131,2,114,37,116,1,100, - 2,117,0,114,11,116,2,130,1,116,1,106,3,125,4,124, - 3,100,2,117,0,114,24,124,4,124,0,124,1,100,3,141, - 2,83,0,124,3,114,28,103,0,110,1,100,2,125,5,124, - 4,124,0,124,1,124,5,100,4,141,3,83,0,124,3,100, - 2,117,0,114,67,116,0,124,1,100,5,131,2,114,65,9, - 0,124,1,160,4,124,0,161,1,125,3,110,14,35,0,4, - 0,116,5,121,75,1,0,1,0,1,0,100,2,125,3,89, - 0,110,3,37,0,100,6,125,3,116,6,124,0,124,1,124, - 2,124,3,100,7,141,4,83,0,119,0,41,8,122,53,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,118,97,114, - 105,111,117,115,32,108,111,97,100,101,114,32,109,101,116,104, - 111,100,115,46,90,12,103,101,116,95,102,105,108,101,110,97, - 109,101,78,41,1,114,123,0,0,0,41,2,114,123,0,0, - 0,114,130,0,0,0,114,129,0,0,0,70,114,149,0,0, - 0,41,7,114,11,0,0,0,114,140,0,0,0,114,141,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,114,129,0,0,0, - 114,88,0,0,0,114,126,0,0,0,41,6,114,21,0,0, - 0,114,123,0,0,0,114,127,0,0,0,114,129,0,0,0, - 114,150,0,0,0,90,6,115,101,97,114,99,104,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,105,0,0, - 0,165,1,0,0,115,42,0,0,0,10,2,8,1,4,1, - 6,1,8,2,12,1,12,1,6,1,2,1,6,255,8,3, - 10,1,2,1,12,1,2,128,12,1,8,1,2,128,4,3, - 16,2,2,250,115,15,0,0,0,175,5,53,0,181,9,65, - 0,7,193,11,1,65,0,7,114,105,0,0,0,99,3,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,50,1,0,0,9,0,124,0,106,0,125,3,110, - 10,35,0,4,0,116,1,121,152,1,0,1,0,1,0,89, - 0,110,7,37,0,124,3,100,0,117,1,114,21,124,3,83, - 0,124,0,106,2,125,4,124,1,100,0,117,0,114,43,9, - 0,124,0,106,3,125,1,110,10,35,0,4,0,116,1,121, - 151,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, - 0,106,4,125,5,110,12,35,0,4,0,116,1,121,150,1, - 0,1,0,1,0,100,0,125,5,89,0,110,1,37,0,124, - 2,100,0,117,0,114,87,124,5,100,0,117,0,114,85,9, - 0,124,1,106,5,125,2,110,14,35,0,4,0,116,1,121, - 149,1,0,1,0,1,0,100,0,125,2,89,0,110,3,37, - 0,124,5,125,2,9,0,124,0,106,6,125,6,110,12,35, - 0,4,0,116,1,121,148,1,0,1,0,1,0,100,0,125, - 6,89,0,110,1,37,0,9,0,116,7,124,0,106,8,131, - 1,125,7,110,12,35,0,4,0,116,1,121,147,1,0,1, - 0,1,0,100,0,125,7,89,0,110,1,37,0,116,9,124, - 4,124,1,124,2,100,1,141,3,125,3,124,5,100,0,117, - 0,114,136,100,2,110,1,100,3,124,3,95,10,124,6,124, - 3,95,11,124,7,124,3,95,12,124,3,83,0,119,0,119, - 0,119,0,119,0,119,0,119,0,41,4,78,169,1,114,127, - 0,0,0,70,84,41,13,114,114,0,0,0,114,2,0,0, - 0,114,9,0,0,0,114,113,0,0,0,114,122,0,0,0, - 218,7,95,79,82,73,71,73,78,218,10,95,95,99,97,99, - 104,101,100,95,95,218,4,108,105,115,116,218,8,95,95,112, - 97,116,104,95,95,114,126,0,0,0,114,131,0,0,0,114, - 136,0,0,0,114,130,0,0,0,41,8,114,111,0,0,0, - 114,123,0,0,0,114,127,0,0,0,114,110,0,0,0,114, - 21,0,0,0,90,8,108,111,99,97,116,105,111,110,114,136, - 0,0,0,114,130,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,17,95,115,112,101,99,95,102, - 114,111,109,95,109,111,100,117,108,101,191,1,0,0,115,108, - 0,0,0,2,2,8,1,2,128,12,1,4,1,2,128,8, - 2,4,1,6,2,8,1,2,1,8,1,2,128,12,1,4, - 2,2,128,2,1,8,1,2,128,12,1,8,1,2,128,8, - 1,8,1,2,1,8,1,2,128,12,1,8,1,2,128,4, - 2,2,1,8,1,2,128,12,1,8,1,2,128,2,1,12, - 1,2,128,12,1,8,1,2,128,14,2,18,1,6,1,6, - 1,4,1,2,249,2,252,2,250,2,250,2,251,2,246,115, - 93,0,0,0,129,3,5,0,133,7,14,7,157,3,33,0, - 161,7,42,7,172,3,48,0,176,9,59,7,193,5,3,65, - 9,0,193,9,9,65,20,7,193,24,3,65,28,0,193,28, - 9,65,39,7,193,41,5,65,47,0,193,47,9,65,58,7, - 194,19,1,65,58,7,194,20,1,65,39,7,194,21,1,65, - 20,7,194,22,1,59,7,194,23,1,42,7,194,24,1,14, - 7,114,156,0,0,0,70,169,1,218,8,111,118,101,114,114, - 105,100,101,99,2,0,0,0,0,0,0,0,1,0,0,0, - 8,0,0,0,67,0,0,0,115,204,1,0,0,124,2,115, - 10,116,0,124,1,100,1,100,0,131,3,100,0,117,0,114, - 26,9,0,124,0,106,1,124,1,95,2,110,10,35,0,4, - 0,116,3,121,229,1,0,1,0,1,0,89,0,110,1,37, - 0,124,2,115,36,116,0,124,1,100,2,100,0,131,3,100, - 0,117,0,114,87,124,0,106,4,125,3,124,3,100,0,117, - 0,114,72,124,0,106,5,100,0,117,1,114,72,116,6,100, - 0,117,0,114,54,116,7,130,1,116,6,106,8,125,4,124, - 4,160,9,124,4,161,1,125,3,124,0,106,5,124,3,95, - 10,124,3,124,0,95,4,100,0,124,1,95,11,9,0,124, - 3,124,1,95,12,110,10,35,0,4,0,116,3,121,228,1, - 0,1,0,1,0,89,0,110,1,37,0,124,2,115,97,116, - 0,124,1,100,3,100,0,131,3,100,0,117,0,114,113,9, - 0,124,0,106,13,124,1,95,14,110,10,35,0,4,0,116, - 3,121,227,1,0,1,0,1,0,89,0,110,1,37,0,9, - 0,124,0,124,1,95,15,110,10,35,0,4,0,116,3,121, - 226,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, - 138,116,0,124,1,100,4,100,0,131,3,100,0,117,0,114, - 159,124,0,106,5,100,0,117,1,114,159,9,0,124,0,106, - 5,124,1,95,16,110,10,35,0,4,0,116,3,121,225,1, - 0,1,0,1,0,89,0,110,1,37,0,124,0,106,17,114, - 221,124,2,115,172,116,0,124,1,100,5,100,0,131,3,100, - 0,117,0,114,188,9,0,124,0,106,18,124,1,95,11,110, - 10,35,0,4,0,116,3,121,224,1,0,1,0,1,0,89, - 0,110,1,37,0,124,2,115,198,116,0,124,1,100,6,100, - 0,131,3,100,0,117,0,114,221,124,0,106,19,100,0,117, - 1,114,221,9,0,124,0,106,19,124,1,95,20,124,1,83, - 0,35,0,4,0,116,3,121,223,1,0,1,0,1,0,89, - 0,124,1,83,0,37,0,124,1,83,0,119,0,119,0,119, - 0,119,0,119,0,119,0,119,0,41,7,78,114,9,0,0, - 0,114,113,0,0,0,218,11,95,95,112,97,99,107,97,103, - 101,95,95,114,155,0,0,0,114,122,0,0,0,114,153,0, - 0,0,41,21,114,13,0,0,0,114,21,0,0,0,114,9, - 0,0,0,114,2,0,0,0,114,123,0,0,0,114,130,0, - 0,0,114,140,0,0,0,114,141,0,0,0,218,16,95,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,218,7, - 95,95,110,101,119,95,95,90,5,95,112,97,116,104,114,122, - 0,0,0,114,113,0,0,0,114,144,0,0,0,114,159,0, - 0,0,114,114,0,0,0,114,155,0,0,0,114,137,0,0, - 0,114,127,0,0,0,114,136,0,0,0,114,153,0,0,0, - 41,5,114,110,0,0,0,114,111,0,0,0,114,158,0,0, - 0,114,123,0,0,0,114,160,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,18,95,105,110,105, - 116,95,109,111,100,117,108,101,95,97,116,116,114,115,236,1, - 0,0,115,142,0,0,0,20,4,2,1,10,1,2,128,12, - 1,4,1,2,128,20,2,6,1,8,1,10,2,8,1,4, - 1,6,1,10,2,8,1,6,1,6,11,2,1,8,1,2, - 128,12,1,4,1,2,128,20,2,2,1,10,1,2,128,12, - 1,4,1,2,128,2,2,8,1,2,128,12,1,4,1,2, - 128,20,2,10,1,2,1,10,1,2,128,12,1,4,1,2, - 128,6,2,20,1,2,1,10,1,2,128,12,1,4,1,2, - 128,20,2,10,1,2,1,8,1,4,3,2,128,12,254,2, - 1,4,1,2,128,4,0,2,254,2,249,2,249,2,249,2, - 251,2,250,2,228,115,121,0,0,0,139,4,16,0,144,7, - 25,7,193,9,3,65,13,0,193,13,7,65,22,7,193,34, - 4,65,39,0,193,39,7,65,48,7,193,50,3,65,54,0, - 193,54,7,65,63,7,194,16,4,66,21,0,194,21,7,66, - 30,7,194,45,4,66,50,0,194,50,7,66,59,7,195,12, - 4,67,18,0,195,18,7,67,28,7,195,31,1,67,28,7, - 195,32,1,66,59,7,195,33,1,66,30,7,195,34,1,65, - 63,7,195,35,1,65,48,7,195,36,1,65,22,7,195,37, - 1,25,7,114,162,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,82,0, - 0,0,100,1,125,1,116,0,124,0,106,1,100,2,131,2, - 114,15,124,0,106,1,160,2,124,0,161,1,125,1,110,10, - 116,0,124,0,106,1,100,3,131,2,114,25,116,3,100,4, - 131,1,130,1,124,1,100,1,117,0,114,34,116,4,124,0, - 106,5,131,1,125,1,116,6,124,0,124,1,131,2,1,0, - 124,1,83,0,41,5,122,43,67,114,101,97,116,101,32,97, - 32,109,111,100,117,108,101,32,98,97,115,101,100,32,111,110, - 32,116,104,101,32,112,114,111,118,105,100,101,100,32,115,112, - 101,99,46,78,218,13,99,114,101,97,116,101,95,109,111,100, - 117,108,101,218,11,101,120,101,99,95,109,111,100,117,108,101, - 122,66,108,111,97,100,101,114,115,32,116,104,97,116,32,100, - 101,102,105,110,101,32,101,120,101,99,95,109,111,100,117,108, - 101,40,41,32,109,117,115,116,32,97,108,115,111,32,100,101, - 102,105,110,101,32,99,114,101,97,116,101,95,109,111,100,117, - 108,101,40,41,41,7,114,11,0,0,0,114,123,0,0,0, - 114,163,0,0,0,114,88,0,0,0,114,22,0,0,0,114, - 21,0,0,0,114,162,0,0,0,169,2,114,110,0,0,0, - 114,111,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,16,109,111,100,117,108,101,95,102,114,111, - 109,95,115,112,101,99,52,2,0,0,115,18,0,0,0,4, - 3,12,1,14,3,12,1,8,1,8,2,10,1,10,1,4, - 1,114,18,0,0,0,114,166,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, - 115,100,0,0,0,124,0,106,0,100,1,117,0,114,7,100, - 2,110,2,124,0,106,0,125,1,124,0,106,1,100,1,117, - 0,114,32,124,0,106,2,100,1,117,0,114,25,100,3,160, - 3,124,1,161,1,83,0,100,4,160,3,124,1,124,0,106, - 2,161,2,83,0,124,0,106,4,114,42,100,5,160,3,124, - 1,124,0,106,1,161,2,83,0,100,6,160,3,124,0,106, - 0,124,0,106,1,161,2,83,0,41,7,122,38,82,101,116, - 117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32, - 117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117, - 108,101,46,78,114,116,0,0,0,114,117,0,0,0,114,118, - 0,0,0,114,119,0,0,0,250,18,60,109,111,100,117,108, - 101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,21, - 0,0,0,114,127,0,0,0,114,123,0,0,0,114,51,0, - 0,0,114,137,0,0,0,41,2,114,110,0,0,0,114,21, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,120,0,0,0,69,2,0,0,115,16,0,0,0, - 20,3,10,1,10,1,10,1,14,2,6,2,14,1,16,2, - 114,18,0,0,0,114,120,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,10,0,0,0,67,0,0,0,115, - 32,1,0,0,124,0,106,0,125,2,116,1,124,2,131,1, - 53,0,1,0,116,2,106,3,160,4,124,2,161,1,124,1, - 117,1,114,27,100,1,160,5,124,2,161,1,125,3,116,6, - 124,3,124,2,100,2,141,2,130,1,9,0,124,0,106,7, - 100,3,117,0,114,53,124,0,106,8,100,3,117,0,114,45, - 116,6,100,4,124,0,106,0,100,2,141,2,130,1,116,9, - 124,0,124,1,100,5,100,6,141,3,1,0,110,40,116,9, - 124,0,124,1,100,5,100,6,141,3,1,0,116,10,124,0, - 106,7,100,7,131,2,115,87,116,11,124,0,106,7,131,1, - 155,0,100,8,157,2,125,3,116,12,160,13,124,3,116,14, - 161,2,1,0,124,0,106,7,160,15,124,2,161,1,1,0, - 110,6,124,0,106,7,160,16,124,1,161,1,1,0,116,2, - 106,3,160,17,124,0,106,0,161,1,125,1,124,1,116,2, - 106,3,124,0,106,0,60,0,110,16,35,0,116,2,106,3, - 160,17,124,0,106,0,161,1,125,1,124,1,116,2,106,3, - 124,0,106,0,60,0,119,0,37,0,9,0,100,3,4,0, - 4,0,131,3,1,0,124,1,83,0,35,0,49,0,115,136, - 119,4,37,0,1,0,1,0,1,0,89,0,1,0,1,0, - 124,1,83,0,41,9,122,70,69,120,101,99,117,116,101,32, - 116,104,101,32,115,112,101,99,39,115,32,115,112,101,99,105, - 102,105,101,100,32,109,111,100,117,108,101,32,105,110,32,97, - 110,32,101,120,105,115,116,105,110,103,32,109,111,100,117,108, - 101,39,115,32,110,97,109,101,115,112,97,99,101,46,122,30, - 109,111,100,117,108,101,32,123,33,114,125,32,110,111,116,32, - 105,110,32,115,121,115,46,109,111,100,117,108,101,115,114,20, - 0,0,0,78,250,14,109,105,115,115,105,110,103,32,108,111, - 97,100,101,114,84,114,157,0,0,0,114,164,0,0,0,250, - 55,46,101,120,101,99,95,109,111,100,117,108,101,40,41,32, - 110,111,116,32,102,111,117,110,100,59,32,102,97,108,108,105, - 110,103,32,98,97,99,107,32,116,111,32,108,111,97,100,95, - 109,111,100,117,108,101,40,41,41,18,114,21,0,0,0,114, - 58,0,0,0,114,19,0,0,0,114,106,0,0,0,114,39, - 0,0,0,114,51,0,0,0,114,88,0,0,0,114,123,0, - 0,0,114,130,0,0,0,114,162,0,0,0,114,11,0,0, - 0,114,7,0,0,0,114,102,0,0,0,114,103,0,0,0, - 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,218, - 11,108,111,97,100,95,109,111,100,117,108,101,114,164,0,0, - 0,218,3,112,111,112,41,4,114,110,0,0,0,114,111,0, - 0,0,114,21,0,0,0,114,109,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,107,0,0,0, - 86,2,0,0,115,50,0,0,0,6,2,10,1,16,1,10, - 1,12,1,2,1,10,1,10,1,14,1,16,2,14,2,12, - 1,16,1,12,2,14,1,12,2,14,4,14,1,2,128,14, - 255,18,1,10,233,4,24,22,128,4,0,115,41,0,0,0, - 135,20,66,3,3,156,65,1,65,43,2,193,29,14,66,3, - 3,193,43,15,65,58,9,193,58,1,66,3,3,194,3,4, - 66,7,11,194,8,3,66,7,11,114,107,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,22,1,0,0,9,0,124,0,106,0,160,1, - 124,0,106,2,161,1,1,0,110,25,35,0,1,0,1,0, - 1,0,124,0,106,2,116,3,106,4,118,0,114,32,116,3, - 106,4,160,5,124,0,106,2,161,1,125,1,124,1,116,3, - 106,4,124,0,106,2,60,0,130,0,37,0,116,3,106,4, - 160,5,124,0,106,2,161,1,125,1,124,1,116,3,106,4, - 124,0,106,2,60,0,116,6,124,1,100,1,100,0,131,3, - 100,0,117,0,114,71,9,0,124,0,106,0,124,1,95,7, - 110,10,35,0,4,0,116,8,121,138,1,0,1,0,1,0, - 89,0,110,1,37,0,116,6,124,1,100,2,100,0,131,3, - 100,0,117,0,114,109,9,0,124,1,106,9,124,1,95,10, - 116,11,124,1,100,3,131,2,115,98,124,0,106,2,160,12, - 100,4,161,1,100,5,25,0,124,1,95,10,110,10,35,0, - 4,0,116,8,121,137,1,0,1,0,1,0,89,0,110,1, - 37,0,116,6,124,1,100,6,100,0,131,3,100,0,117,0, - 114,134,9,0,124,0,124,1,95,13,124,1,83,0,35,0, - 4,0,116,8,121,136,1,0,1,0,1,0,89,0,124,1, - 83,0,37,0,124,1,83,0,119,0,119,0,119,0,41,7, - 78,114,113,0,0,0,114,159,0,0,0,114,155,0,0,0, - 114,142,0,0,0,114,26,0,0,0,114,114,0,0,0,41, - 14,114,123,0,0,0,114,171,0,0,0,114,21,0,0,0, - 114,19,0,0,0,114,106,0,0,0,114,172,0,0,0,114, - 13,0,0,0,114,113,0,0,0,114,2,0,0,0,114,9, - 0,0,0,114,159,0,0,0,114,11,0,0,0,114,143,0, - 0,0,114,114,0,0,0,114,165,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,25,95,108,111, - 97,100,95,98,97,99,107,119,97,114,100,95,99,111,109,112, - 97,116,105,98,108,101,116,2,0,0,115,80,0,0,0,2, - 3,16,1,2,128,6,1,12,1,14,1,12,1,2,1,2, - 128,14,3,12,1,16,1,2,1,10,1,2,128,12,1,4, - 1,2,128,16,1,2,1,8,4,10,1,18,1,4,128,12, - 1,4,1,2,128,16,1,2,1,6,1,4,3,2,128,12, - 254,2,1,4,1,2,128,4,0,2,254,2,251,2,246,115, - 59,0,0,0,129,7,9,0,137,24,33,7,184,4,61,0, - 189,7,65,6,7,193,16,18,65,35,0,193,35,7,65,44, - 7,193,54,3,65,59,0,193,59,7,66,5,7,194,8,1, - 66,5,7,194,9,1,65,44,7,194,10,1,65,6,7,114, - 173,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,11,0,0,0,67,0,0,0,115,248,0,0,0,124,0, - 106,0,100,0,117,1,114,29,116,1,124,0,106,0,100,1, - 131,2,115,29,116,2,124,0,106,0,131,1,155,0,100,2, - 157,2,125,1,116,3,160,4,124,1,116,5,161,2,1,0, - 116,6,124,0,131,1,83,0,116,7,124,0,131,1,125,2, - 100,3,124,0,95,8,9,0,124,2,116,9,106,10,124,0, - 106,11,60,0,9,0,124,0,106,0,100,0,117,0,114,62, - 124,0,106,12,100,0,117,0,114,61,116,13,100,4,124,0, - 106,11,100,5,141,2,130,1,110,6,124,0,106,0,160,14, - 124,2,161,1,1,0,110,22,35,0,1,0,1,0,1,0, - 9,0,116,9,106,10,124,0,106,11,61,0,130,0,35,0, - 4,0,116,15,121,123,1,0,1,0,1,0,89,0,130,0, - 37,0,37,0,116,9,106,10,160,16,124,0,106,11,161,1, - 125,2,124,2,116,9,106,10,124,0,106,11,60,0,116,17, - 100,6,124,0,106,11,124,0,106,0,131,3,1,0,100,7, - 124,0,95,8,124,2,83,0,35,0,100,7,124,0,95,8, - 119,0,37,0,119,0,41,8,78,114,164,0,0,0,114,169, - 0,0,0,84,114,168,0,0,0,114,20,0,0,0,122,18, - 105,109,112,111,114,116,32,123,33,114,125,32,35,32,123,33, - 114,125,70,41,18,114,123,0,0,0,114,11,0,0,0,114, - 7,0,0,0,114,102,0,0,0,114,103,0,0,0,114,170, - 0,0,0,114,173,0,0,0,114,166,0,0,0,90,13,95, - 105,110,105,116,105,97,108,105,122,105,110,103,114,19,0,0, - 0,114,106,0,0,0,114,21,0,0,0,114,130,0,0,0, - 114,88,0,0,0,114,164,0,0,0,114,71,0,0,0,114, - 172,0,0,0,114,84,0,0,0,41,3,114,110,0,0,0, - 114,109,0,0,0,114,111,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,14,95,108,111,97,100, - 95,117,110,108,111,99,107,101,100,152,2,0,0,115,66,0, - 0,0,10,2,12,2,16,1,12,2,8,1,8,2,6,5, - 2,1,12,1,2,1,10,1,10,1,14,1,2,255,12,4, - 4,128,6,1,2,1,10,1,2,3,2,128,12,254,2,1, - 2,1,4,128,14,5,12,1,16,1,6,2,4,2,2,128, - 10,254,2,245,115,64,0,0,0,165,6,65,53,0,172,24, - 65,5,0,193,4,1,65,53,0,193,5,4,65,26,7,193, - 10,5,65,16,6,193,15,1,65,26,7,193,16,7,65,25, - 13,193,23,3,65,26,7,193,26,22,65,53,0,193,53,5, - 65,58,7,193,59,1,65,25,13,114,174,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, - 0,0,0,115,58,0,0,0,116,0,124,0,106,1,131,1, - 53,0,1,0,116,2,124,0,131,1,2,0,100,1,4,0, - 4,0,131,3,1,0,83,0,35,0,49,0,115,21,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,100,1, - 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, - 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, - 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, - 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, - 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, - 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, - 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, - 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, - 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, - 100,117,108,101,115,44,32,116,104,97,116,32,101,120,105,115, - 116,105,110,103,32,109,111,100,117,108,101,32,103,101,116,115, - 10,32,32,32,32,99,108,111,98,98,101,114,101,100,46,10, - 10,32,32,32,32,78,41,3,114,58,0,0,0,114,21,0, - 0,0,114,174,0,0,0,169,1,114,110,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,108,0, - 0,0,197,2,0,0,115,10,0,0,0,12,9,6,1,14, - 255,22,128,4,0,115,12,0,0,0,133,4,16,3,144,4, - 20,11,149,3,20,11,114,108,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,0, - 115,140,0,0,0,101,0,90,1,100,0,90,2,100,1,90, - 3,100,2,90,4,101,5,100,3,100,4,132,0,131,1,90, - 6,101,7,100,20,100,6,100,7,132,1,131,1,90,8,101, - 7,100,21,100,8,100,9,132,1,131,1,90,9,101,5,100, - 10,100,11,132,0,131,1,90,10,101,5,100,12,100,13,132, - 0,131,1,90,11,101,7,101,12,100,14,100,15,132,0,131, - 1,131,1,90,13,101,7,101,12,100,16,100,17,132,0,131, - 1,131,1,90,14,101,7,101,12,100,18,100,19,132,0,131, - 1,131,1,90,15,101,7,101,16,131,1,90,17,100,5,83, - 0,41,22,218,15,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,122,144,77,101,116,97,32,112,97,116,104,32, - 105,109,112,111,114,116,32,102,111,114,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,115,46,10,10,32,32, - 32,32,65,108,108,32,109,101,116,104,111,100,115,32,97,114, - 101,32,101,105,116,104,101,114,32,99,108,97,115,115,32,111, - 114,32,115,116,97,116,105,99,32,109,101,116,104,111,100,115, - 32,116,111,32,97,118,111,105,100,32,116,104,101,32,110,101, - 101,100,32,116,111,10,32,32,32,32,105,110,115,116,97,110, - 116,105,97,116,101,32,116,104,101,32,99,108,97,115,115,46, - 10,10,32,32,32,32,122,8,98,117,105,108,116,45,105,110, - 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,34,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,100,2,124,0,106,3,155,2,100,3, - 116,4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,122,8,60,109,111,100,117,108,101,32, - 122,2,32,40,122,2,41,62,78,41,6,114,102,0,0,0, - 114,103,0,0,0,114,104,0,0,0,114,9,0,0,0,114, - 176,0,0,0,114,152,0,0,0,169,1,114,111,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 115,0,0,0,223,2,0,0,115,8,0,0,0,6,7,2, - 1,4,255,22,2,114,18,0,0,0,122,27,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,46,109,111,100,117, - 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,42,0, - 0,0,124,2,100,0,117,1,114,6,100,0,83,0,116,0, - 160,1,124,1,161,1,114,19,116,2,124,1,124,0,124,0, - 106,3,100,1,141,3,83,0,100,0,83,0,169,2,78,114, - 151,0,0,0,41,4,114,65,0,0,0,90,10,105,115,95, - 98,117,105,108,116,105,110,114,105,0,0,0,114,152,0,0, - 0,169,4,218,3,99,108,115,114,90,0,0,0,218,4,112, - 97,116,104,218,6,116,97,114,103,101,116,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,9,102,105,110,100, + 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, + 114,127,0,0,0,114,128,0,0,0,32,32,32,32,32,32, + 114,5,0,0,0,114,35,0,0,0,101,1,0,0,115,14, + 0,0,0,6,2,6,1,6,1,6,1,14,1,6,3,10, + 1,114,17,0,0,0,122,19,77,111,100,117,108,101,83,112, + 101,99,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,6,0,0,0,67,0,0,0, + 115,102,0,0,0,100,1,160,0,124,0,106,1,161,1,100, + 2,160,0,124,0,106,2,161,1,103,2,125,1,124,0,106, + 3,100,0,117,1,114,26,124,1,160,4,100,3,160,0,124, + 0,106,3,161,1,161,1,1,0,124,0,106,5,100,0,117, + 1,114,40,124,1,160,4,100,4,160,0,124,0,106,5,161, + 1,161,1,1,0,100,5,160,0,124,0,106,6,106,7,100, + 6,160,8,124,1,161,1,161,2,83,0,41,7,78,122,9, + 110,97,109,101,61,123,33,114,125,122,11,108,111,97,100,101, + 114,61,123,33,114,125,122,11,111,114,105,103,105,110,61,123, + 33,114,125,122,29,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,61, + 123,125,122,6,123,125,40,123,125,41,122,2,44,32,41,9, + 114,51,0,0,0,114,20,0,0,0,114,122,0,0,0,114, + 126,0,0,0,218,6,97,112,112,101,110,100,114,129,0,0, + 0,218,9,95,95,99,108,97,115,115,95,95,114,8,0,0, + 0,218,4,106,111,105,110,41,2,114,34,0,0,0,114,63, + 0,0,0,32,32,114,5,0,0,0,114,54,0,0,0,113, + 1,0,0,115,20,0,0,0,10,1,10,1,4,255,10,2, + 18,1,10,1,6,1,8,1,4,255,22,2,114,17,0,0, + 0,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, + 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0, + 0,0,0,8,0,0,0,67,0,0,0,115,104,0,0,0, + 124,0,106,0,125,2,9,0,124,0,106,1,124,1,106,1, + 107,2,111,38,124,0,106,2,124,1,106,2,107,2,111,38, + 124,0,106,3,124,1,106,3,107,2,111,38,124,2,124,1, + 106,0,107,2,111,38,124,0,106,4,124,1,106,4,107,2, + 111,38,124,0,106,5,124,1,106,5,107,2,83,0,35,0, + 4,0,116,6,121,51,1,0,1,0,1,0,116,7,6,0, + 89,0,83,0,37,0,119,0,114,0,0,0,0,41,8,114, + 129,0,0,0,114,20,0,0,0,114,122,0,0,0,114,126, + 0,0,0,218,6,99,97,99,104,101,100,218,12,104,97,115, + 95,108,111,99,97,116,105,111,110,114,2,0,0,0,218,14, + 78,111,116,73,109,112,108,101,109,101,110,116,101,100,41,3, + 114,34,0,0,0,90,5,111,116,104,101,114,90,4,115,109, + 115,108,32,32,32,114,5,0,0,0,218,6,95,95,101,113, + 95,95,123,1,0,0,115,36,0,0,0,6,1,2,1,12, + 1,10,1,2,255,10,2,2,254,8,3,2,253,10,4,2, + 252,10,5,2,251,2,128,12,6,8,1,2,128,2,255,115, + 12,0,0,0,132,34,39,0,167,9,50,7,179,1,50,7, + 122,17,77,111,100,117,108,101,83,112,101,99,46,95,95,101, + 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,58,0,0,0,124,0,106, + 0,100,0,117,0,114,26,124,0,106,1,100,0,117,1,114, + 26,124,0,106,2,114,26,116,3,100,0,117,0,114,19,116, + 4,130,1,116,3,160,5,124,0,106,1,161,1,124,0,95, + 0,124,0,106,0,83,0,114,0,0,0,0,41,6,114,131, + 0,0,0,114,126,0,0,0,114,130,0,0,0,218,19,95, + 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, + 97,108,218,19,78,111,116,73,109,112,108,101,109,101,110,116, + 101,100,69,114,114,111,114,90,11,95,103,101,116,95,99,97, + 99,104,101,100,114,53,0,0,0,32,114,5,0,0,0,114, + 135,0,0,0,135,1,0,0,115,12,0,0,0,10,2,16, + 1,8,1,4,1,14,1,6,1,114,17,0,0,0,122,17, + 77,111,100,117,108,101,83,112,101,99,46,99,97,99,104,101, + 100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,131,0,0, + 0,41,2,114,34,0,0,0,114,135,0,0,0,32,32,114, + 5,0,0,0,114,135,0,0,0,144,1,0,0,115,2,0, + 0,0,10,2,114,17,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,32, + 0,0,0,124,0,106,0,100,1,117,0,114,13,124,0,106, + 1,160,2,100,2,161,1,100,3,25,0,83,0,124,0,106, + 1,83,0,41,4,122,32,84,104,101,32,110,97,109,101,32, + 111,102,32,116,104,101,32,109,111,100,117,108,101,39,115,32, + 112,97,114,101,110,116,46,78,218,1,46,114,26,0,0,0, + 41,3,114,129,0,0,0,114,20,0,0,0,218,10,114,112, + 97,114,116,105,116,105,111,110,114,53,0,0,0,32,114,5, + 0,0,0,218,6,112,97,114,101,110,116,148,1,0,0,115, + 6,0,0,0,10,3,16,1,6,2,114,17,0,0,0,122, + 17,77,111,100,117,108,101,83,112,101,99,46,112,97,114,101, + 110,116,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0, + 83,0,114,0,0,0,0,41,1,114,130,0,0,0,114,53, + 0,0,0,32,114,5,0,0,0,114,136,0,0,0,156,1, + 0,0,115,2,0,0,0,6,2,114,17,0,0,0,122,23, + 77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,108, + 111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,67,0,0,0,115,14,0,0, + 0,116,0,124,1,131,1,124,0,95,1,100,0,83,0,114, + 0,0,0,0,41,2,218,4,98,111,111,108,114,130,0,0, + 0,41,2,114,34,0,0,0,218,5,118,97,108,117,101,32, + 32,114,5,0,0,0,114,136,0,0,0,160,1,0,0,115, + 2,0,0,0,14,2,114,17,0,0,0,41,12,114,8,0, + 0,0,114,7,0,0,0,114,1,0,0,0,114,9,0,0, + 0,114,35,0,0,0,114,54,0,0,0,114,138,0,0,0, + 218,8,112,114,111,112,101,114,116,121,114,135,0,0,0,218, + 6,115,101,116,116,101,114,114,143,0,0,0,114,136,0,0, + 0,114,23,0,0,0,114,5,0,0,0,114,125,0,0,0, + 64,1,0,0,115,34,0,0,0,8,0,4,1,4,36,2, + 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, + 3,10,1,2,7,10,1,4,3,14,1,114,17,0,0,0, + 114,125,0,0,0,169,2,114,126,0,0,0,114,128,0,0, + 0,99,2,0,0,0,0,0,0,0,2,0,0,0,8,0, + 0,0,67,0,0,0,115,152,0,0,0,116,0,124,1,100, + 1,131,2,114,37,116,1,100,2,117,0,114,11,116,2,130, + 1,116,1,106,3,125,4,124,3,100,2,117,0,114,24,124, + 4,124,0,124,1,100,3,141,2,83,0,124,3,114,28,103, + 0,110,1,100,2,125,5,124,4,124,0,124,1,124,5,100, + 4,141,3,83,0,124,3,100,2,117,0,114,67,116,0,124, + 1,100,5,131,2,114,65,9,0,124,1,160,4,124,0,161, + 1,125,3,110,14,35,0,4,0,116,5,121,75,1,0,1, + 0,1,0,100,2,125,3,89,0,110,3,37,0,100,6,125, + 3,116,6,124,0,124,1,124,2,124,3,100,7,141,4,83, + 0,119,0,41,8,122,53,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,118,97,114,105,111,117,115,32,108,111,97, + 100,101,114,32,109,101,116,104,111,100,115,46,90,12,103,101, + 116,95,102,105,108,101,110,97,109,101,78,41,1,114,122,0, + 0,0,41,2,114,122,0,0,0,114,129,0,0,0,114,128, + 0,0,0,70,114,148,0,0,0,41,7,114,10,0,0,0, + 114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0,0,114,125,0, + 0,0,41,6,114,20,0,0,0,114,122,0,0,0,114,126, + 0,0,0,114,128,0,0,0,114,149,0,0,0,90,6,115, + 101,97,114,99,104,32,32,32,32,32,32,114,5,0,0,0, + 114,104,0,0,0,165,1,0,0,115,42,0,0,0,10,2, + 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, + 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, + 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, + 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, + 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, + 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, + 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, + 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, + 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, + 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, + 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, + 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, + 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, + 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, + 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, + 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, + 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, + 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, + 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, + 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, + 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, + 169,1,114,126,0,0,0,70,84,41,13,114,113,0,0,0, + 114,2,0,0,0,114,8,0,0,0,114,112,0,0,0,114, + 121,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, + 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, + 8,95,95,112,97,116,104,95,95,114,125,0,0,0,114,130, + 0,0,0,114,135,0,0,0,114,129,0,0,0,41,8,114, + 110,0,0,0,114,122,0,0,0,114,126,0,0,0,114,109, + 0,0,0,114,20,0,0,0,90,8,108,111,99,97,116,105, + 111,110,114,135,0,0,0,114,129,0,0,0,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,17,95,115,112,101,99, + 95,102,114,111,109,95,109,111,100,117,108,101,191,1,0,0, + 115,108,0,0,0,2,2,8,1,2,128,12,1,4,1,2, + 128,8,2,4,1,6,2,8,1,2,1,8,1,2,128,12, + 1,4,2,2,128,2,1,8,1,2,128,12,1,8,1,2, + 128,8,1,8,1,2,1,8,1,2,128,12,1,8,1,2, + 128,4,2,2,1,8,1,2,128,12,1,8,1,2,128,2, + 1,12,1,2,128,12,1,8,1,2,128,14,2,18,1,6, + 1,6,1,4,1,2,249,2,252,2,250,2,250,2,251,2, + 246,115,93,0,0,0,129,3,5,0,133,7,14,7,157,3, + 33,0,161,7,42,7,172,3,48,0,176,9,59,7,193,5, + 3,65,9,0,193,9,9,65,20,7,193,24,3,65,28,0, + 193,28,9,65,39,7,193,41,5,65,47,0,193,47,9,65, + 58,7,194,19,1,65,58,7,194,20,1,65,39,7,194,21, + 1,65,20,7,194,22,1,59,7,194,23,1,42,7,194,24, + 1,14,7,114,155,0,0,0,70,169,1,218,8,111,118,101, + 114,114,105,100,101,99,2,0,0,0,0,0,0,0,1,0, + 0,0,8,0,0,0,67,0,0,0,115,204,1,0,0,124, + 2,115,10,116,0,124,1,100,1,100,0,131,3,100,0,117, + 0,114,26,9,0,124,0,106,1,124,1,95,2,110,10,35, + 0,4,0,116,3,121,229,1,0,1,0,1,0,89,0,110, + 1,37,0,124,2,115,36,116,0,124,1,100,2,100,0,131, + 3,100,0,117,0,114,87,124,0,106,4,125,3,124,3,100, + 0,117,0,114,72,124,0,106,5,100,0,117,1,114,72,116, + 6,100,0,117,0,114,54,116,7,130,1,116,6,106,8,125, + 4,124,4,160,9,124,4,161,1,125,3,124,0,106,5,124, + 3,95,10,124,3,124,0,95,4,100,0,124,1,95,11,9, + 0,124,3,124,1,95,12,110,10,35,0,4,0,116,3,121, + 228,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, + 97,116,0,124,1,100,3,100,0,131,3,100,0,117,0,114, + 113,9,0,124,0,106,13,124,1,95,14,110,10,35,0,4, + 0,116,3,121,227,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,124,1,95,15,110,10,35,0,4,0,116, + 3,121,226,1,0,1,0,1,0,89,0,110,1,37,0,124, + 2,115,138,116,0,124,1,100,4,100,0,131,3,100,0,117, + 0,114,159,124,0,106,5,100,0,117,1,114,159,9,0,124, + 0,106,5,124,1,95,16,110,10,35,0,4,0,116,3,121, + 225,1,0,1,0,1,0,89,0,110,1,37,0,124,0,106, + 17,114,221,124,2,115,172,116,0,124,1,100,5,100,0,131, + 3,100,0,117,0,114,188,9,0,124,0,106,18,124,1,95, + 11,110,10,35,0,4,0,116,3,121,224,1,0,1,0,1, + 0,89,0,110,1,37,0,124,2,115,198,116,0,124,1,100, + 6,100,0,131,3,100,0,117,0,114,221,124,0,106,19,100, + 0,117,1,114,221,9,0,124,0,106,19,124,1,95,20,124, + 1,83,0,35,0,4,0,116,3,121,223,1,0,1,0,1, + 0,89,0,124,1,83,0,37,0,124,1,83,0,119,0,119, + 0,119,0,119,0,119,0,119,0,119,0,41,7,78,114,8, + 0,0,0,114,112,0,0,0,218,11,95,95,112,97,99,107, + 97,103,101,95,95,114,154,0,0,0,114,121,0,0,0,114, + 152,0,0,0,41,21,114,12,0,0,0,114,20,0,0,0, + 114,8,0,0,0,114,2,0,0,0,114,122,0,0,0,114, + 129,0,0,0,114,139,0,0,0,114,140,0,0,0,218,16, + 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, + 218,7,95,95,110,101,119,95,95,90,5,95,112,97,116,104, + 114,121,0,0,0,114,112,0,0,0,114,143,0,0,0,114, + 158,0,0,0,114,113,0,0,0,114,154,0,0,0,114,136, + 0,0,0,114,126,0,0,0,114,135,0,0,0,114,152,0, + 0,0,41,5,114,109,0,0,0,114,110,0,0,0,114,157, + 0,0,0,114,122,0,0,0,114,159,0,0,0,32,32,32, + 32,32,114,5,0,0,0,218,18,95,105,110,105,116,95,109, + 111,100,117,108,101,95,97,116,116,114,115,236,1,0,0,115, + 142,0,0,0,20,4,2,1,10,1,2,128,12,1,4,1, + 2,128,20,2,6,1,8,1,10,2,8,1,4,1,6,1, + 10,2,8,1,6,1,6,11,2,1,8,1,2,128,12,1, + 4,1,2,128,20,2,2,1,10,1,2,128,12,1,4,1, + 2,128,2,2,8,1,2,128,12,1,4,1,2,128,20,2, + 10,1,2,1,10,1,2,128,12,1,4,1,2,128,6,2, + 20,1,2,1,10,1,2,128,12,1,4,1,2,128,20,2, + 10,1,2,1,8,1,4,3,2,128,12,254,2,1,4,1, + 2,128,4,0,2,254,2,249,2,249,2,249,2,251,2,250, + 2,228,115,121,0,0,0,139,4,16,0,144,7,25,7,193, + 9,3,65,13,0,193,13,7,65,22,7,193,34,4,65,39, + 0,193,39,7,65,48,7,193,50,3,65,54,0,193,54,7, + 65,63,7,194,16,4,66,21,0,194,21,7,66,30,7,194, + 45,4,66,50,0,194,50,7,66,59,7,195,12,4,67,18, + 0,195,18,7,67,28,7,195,31,1,67,28,7,195,32,1, + 66,59,7,195,33,1,66,30,7,195,34,1,65,63,7,195, + 35,1,65,48,7,195,36,1,65,22,7,195,37,1,25,7, + 114,161,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,115,82,0,0,0,100, + 1,125,1,116,0,124,0,106,1,100,2,131,2,114,15,124, + 0,106,1,160,2,124,0,161,1,125,1,110,10,116,0,124, + 0,106,1,100,3,131,2,114,25,116,3,100,4,131,1,130, + 1,124,1,100,1,117,0,114,34,116,4,124,0,106,5,131, + 1,125,1,116,6,124,0,124,1,131,2,1,0,124,1,83, + 0,41,5,122,43,67,114,101,97,116,101,32,97,32,109,111, + 100,117,108,101,32,98,97,115,101,100,32,111,110,32,116,104, + 101,32,112,114,111,118,105,100,101,100,32,115,112,101,99,46, + 78,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101, + 218,11,101,120,101,99,95,109,111,100,117,108,101,122,66,108, + 111,97,100,101,114,115,32,116,104,97,116,32,100,101,102,105, + 110,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,109,117,115,116,32,97,108,115,111,32,100,101,102,105,110, + 101,32,99,114,101,97,116,101,95,109,111,100,117,108,101,40, + 41,41,7,114,10,0,0,0,114,122,0,0,0,114,162,0, + 0,0,114,88,0,0,0,114,21,0,0,0,114,20,0,0, + 0,114,161,0,0,0,169,2,114,109,0,0,0,114,110,0, + 0,0,32,32,114,5,0,0,0,218,16,109,111,100,117,108, + 101,95,102,114,111,109,95,115,112,101,99,52,2,0,0,115, + 18,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, + 10,1,10,1,4,1,114,17,0,0,0,114,165,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,100,0,0,0,124,0,106,0,100,1, + 117,0,114,7,100,2,110,2,124,0,106,0,125,1,124,0, + 106,1,100,1,117,0,114,32,124,0,106,2,100,1,117,0, + 114,25,100,3,160,3,124,1,161,1,83,0,100,4,160,3, + 124,1,124,0,106,2,161,2,83,0,124,0,106,4,114,42, + 100,5,160,3,124,1,124,0,106,1,161,2,83,0,100,6, + 160,3,124,0,106,0,124,0,106,1,161,2,83,0,41,7, + 122,38,82,101,116,117,114,110,32,116,104,101,32,114,101,112, + 114,32,116,111,32,117,115,101,32,102,111,114,32,116,104,101, + 32,109,111,100,117,108,101,46,78,114,115,0,0,0,114,116, + 0,0,0,114,117,0,0,0,114,118,0,0,0,250,18,60, + 109,111,100,117,108,101,32,123,33,114,125,32,40,123,125,41, + 62,41,5,114,20,0,0,0,114,126,0,0,0,114,122,0, + 0,0,114,51,0,0,0,114,136,0,0,0,41,2,114,109, + 0,0,0,114,20,0,0,0,32,32,114,5,0,0,0,114, + 119,0,0,0,69,2,0,0,115,16,0,0,0,20,3,10, + 1,10,1,10,1,14,2,6,2,14,1,16,2,114,17,0, + 0,0,114,119,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,10,0,0,0,67,0,0,0,115,32,1,0, + 0,124,0,106,0,125,2,116,1,124,2,131,1,53,0,1, + 0,116,2,106,3,160,4,124,2,161,1,124,1,117,1,114, + 27,100,1,160,5,124,2,161,1,125,3,116,6,124,3,124, + 2,100,2,141,2,130,1,9,0,124,0,106,7,100,3,117, + 0,114,53,124,0,106,8,100,3,117,0,114,45,116,6,100, + 4,124,0,106,0,100,2,141,2,130,1,116,9,124,0,124, + 1,100,5,100,6,141,3,1,0,110,40,116,9,124,0,124, + 1,100,5,100,6,141,3,1,0,116,10,124,0,106,7,100, + 7,131,2,115,87,116,11,124,0,106,7,131,1,155,0,100, + 8,157,2,125,3,116,12,160,13,124,3,116,14,161,2,1, + 0,124,0,106,7,160,15,124,2,161,1,1,0,110,6,124, + 0,106,7,160,16,124,1,161,1,1,0,116,2,106,3,160, + 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, + 0,106,0,60,0,110,16,35,0,116,2,106,3,160,17,124, + 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, + 0,60,0,119,0,37,0,9,0,100,3,4,0,4,0,131, + 3,1,0,124,1,83,0,35,0,49,0,115,136,119,4,37, + 0,1,0,1,0,1,0,89,0,1,0,1,0,124,1,83, + 0,41,9,122,70,69,120,101,99,117,116,101,32,116,104,101, + 32,115,112,101,99,39,115,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,117,108,101,32,105,110,32,97,110,32,101, + 120,105,115,116,105,110,103,32,109,111,100,117,108,101,39,115, + 32,110,97,109,101,115,112,97,99,101,46,122,30,109,111,100, + 117,108,101,32,123,33,114,125,32,110,111,116,32,105,110,32, + 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, + 78,250,14,109,105,115,115,105,110,103,32,108,111,97,100,101, + 114,84,114,156,0,0,0,114,163,0,0,0,250,55,46,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,110,111,116, + 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, + 98,97,99,107,32,116,111,32,108,111,97,100,95,109,111,100, + 117,108,101,40,41,41,18,114,20,0,0,0,114,58,0,0, + 0,114,18,0,0,0,114,105,0,0,0,114,39,0,0,0, + 114,51,0,0,0,114,88,0,0,0,114,122,0,0,0,114, + 129,0,0,0,114,161,0,0,0,114,10,0,0,0,114,6, + 0,0,0,114,101,0,0,0,114,102,0,0,0,218,13,73, + 109,112,111,114,116,87,97,114,110,105,110,103,218,11,108,111, + 97,100,95,109,111,100,117,108,101,114,163,0,0,0,218,3, + 112,111,112,41,4,114,109,0,0,0,114,110,0,0,0,114, + 20,0,0,0,114,108,0,0,0,32,32,32,32,114,5,0, + 0,0,114,106,0,0,0,86,2,0,0,115,50,0,0,0, + 6,2,10,1,16,1,10,1,12,1,2,1,10,1,10,1, + 14,1,16,2,14,2,12,1,16,1,12,2,14,1,12,2, + 14,4,14,1,2,128,14,255,18,1,10,233,4,24,22,128, + 4,0,115,41,0,0,0,135,20,66,3,3,156,65,1,65, + 43,2,193,29,14,66,3,3,193,43,15,65,58,9,193,58, + 1,66,3,3,194,3,4,66,7,11,194,8,3,66,7,11, + 114,106,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,22,1,0,0,9, + 0,124,0,106,0,160,1,124,0,106,2,161,1,1,0,110, + 25,35,0,1,0,1,0,1,0,124,0,106,2,116,3,106, + 4,118,0,114,32,116,3,106,4,160,5,124,0,106,2,161, + 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, + 0,37,0,116,3,106,4,160,5,124,0,106,2,161,1,125, + 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, + 1,100,1,100,0,131,3,100,0,117,0,114,71,9,0,124, + 0,106,0,124,1,95,7,110,10,35,0,4,0,116,8,121, + 138,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, + 1,100,2,100,0,131,3,100,0,117,0,114,109,9,0,124, + 1,106,9,124,1,95,10,116,11,124,1,100,3,131,2,115, + 98,124,0,106,2,160,12,100,4,161,1,100,5,25,0,124, + 1,95,10,110,10,35,0,4,0,116,8,121,137,1,0,1, + 0,1,0,89,0,110,1,37,0,116,6,124,1,100,6,100, + 0,131,3,100,0,117,0,114,134,9,0,124,0,124,1,95, + 13,124,1,83,0,35,0,4,0,116,8,121,136,1,0,1, + 0,1,0,89,0,124,1,83,0,37,0,124,1,83,0,119, + 0,119,0,119,0,41,7,78,114,112,0,0,0,114,158,0, + 0,0,114,154,0,0,0,114,141,0,0,0,114,26,0,0, + 0,114,113,0,0,0,41,14,114,122,0,0,0,114,170,0, + 0,0,114,20,0,0,0,114,18,0,0,0,114,105,0,0, + 0,114,171,0,0,0,114,12,0,0,0,114,112,0,0,0, + 114,2,0,0,0,114,8,0,0,0,114,158,0,0,0,114, + 10,0,0,0,114,142,0,0,0,114,113,0,0,0,114,164, + 0,0,0,32,32,114,5,0,0,0,218,25,95,108,111,97, + 100,95,98,97,99,107,119,97,114,100,95,99,111,109,112,97, + 116,105,98,108,101,116,2,0,0,115,80,0,0,0,2,3, + 16,1,2,128,6,1,12,1,14,1,12,1,2,1,2,128, + 14,3,12,1,16,1,2,1,10,1,2,128,12,1,4,1, + 2,128,16,1,2,1,8,4,10,1,18,1,4,128,12,1, + 4,1,2,128,16,1,2,1,6,1,4,3,2,128,12,254, + 2,1,4,1,2,128,4,0,2,254,2,251,2,246,115,59, + 0,0,0,129,7,9,0,137,24,33,7,184,4,61,0,189, + 7,65,6,7,193,16,18,65,35,0,193,35,7,65,44,7, + 193,54,3,65,59,0,193,59,7,66,5,7,194,8,1,66, + 5,7,194,9,1,65,44,7,194,10,1,65,6,7,114,172, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 11,0,0,0,67,0,0,0,115,248,0,0,0,124,0,106, + 0,100,0,117,1,114,29,116,1,124,0,106,0,100,1,131, + 2,115,29,116,2,124,0,106,0,131,1,155,0,100,2,157, + 2,125,1,116,3,160,4,124,1,116,5,161,2,1,0,116, + 6,124,0,131,1,83,0,116,7,124,0,131,1,125,2,100, + 3,124,0,95,8,9,0,124,2,116,9,106,10,124,0,106, + 11,60,0,9,0,124,0,106,0,100,0,117,0,114,62,124, + 0,106,12,100,0,117,0,114,61,116,13,100,4,124,0,106, + 11,100,5,141,2,130,1,110,6,124,0,106,0,160,14,124, + 2,161,1,1,0,110,22,35,0,1,0,1,0,1,0,9, + 0,116,9,106,10,124,0,106,11,61,0,130,0,35,0,4, + 0,116,15,121,123,1,0,1,0,1,0,89,0,130,0,37, + 0,37,0,116,9,106,10,160,16,124,0,106,11,161,1,125, + 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, + 6,124,0,106,11,124,0,106,0,131,3,1,0,100,7,124, + 0,95,8,124,2,83,0,35,0,100,7,124,0,95,8,119, + 0,37,0,119,0,41,8,78,114,163,0,0,0,114,168,0, + 0,0,84,114,167,0,0,0,114,19,0,0,0,122,18,105, + 109,112,111,114,116,32,123,33,114,125,32,35,32,123,33,114, + 125,70,41,18,114,122,0,0,0,114,10,0,0,0,114,6, + 0,0,0,114,101,0,0,0,114,102,0,0,0,114,169,0, + 0,0,114,172,0,0,0,114,165,0,0,0,90,13,95,105, + 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, + 114,105,0,0,0,114,20,0,0,0,114,129,0,0,0,114, + 88,0,0,0,114,163,0,0,0,114,71,0,0,0,114,171, + 0,0,0,114,84,0,0,0,41,3,114,109,0,0,0,114, + 108,0,0,0,114,110,0,0,0,32,32,32,114,5,0,0, + 0,218,14,95,108,111,97,100,95,117,110,108,111,99,107,101, + 100,152,2,0,0,115,66,0,0,0,10,2,12,2,16,1, + 12,2,8,1,8,2,6,5,2,1,12,1,2,1,10,1, + 10,1,14,1,2,255,12,4,4,128,6,1,2,1,10,1, + 2,3,2,128,12,254,2,1,2,1,4,128,14,5,12,1, + 16,1,6,2,4,2,2,128,10,254,2,245,115,64,0,0, + 0,165,6,65,53,0,172,24,65,5,0,193,4,1,65,53, + 0,193,5,4,65,26,7,193,10,5,65,16,6,193,15,1, + 65,26,7,193,16,7,65,25,13,193,23,3,65,26,7,193, + 26,22,65,53,0,193,53,5,65,58,7,193,59,1,65,25, + 13,114,173,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,67,0,0,0,115,58,0,0,0, + 116,0,124,0,106,1,131,1,53,0,1,0,116,2,124,0, + 131,1,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 35,0,49,0,115,21,119,4,37,0,1,0,1,0,1,0, + 89,0,1,0,1,0,100,1,83,0,41,2,122,191,82,101, + 116,117,114,110,32,97,32,110,101,119,32,109,111,100,117,108, + 101,32,111,98,106,101,99,116,44,32,108,111,97,100,101,100, + 32,98,121,32,116,104,101,32,115,112,101,99,39,115,32,108, + 111,97,100,101,114,46,10,10,32,32,32,32,84,104,101,32, + 109,111,100,117,108,101,32,105,115,32,110,111,116,32,97,100, + 100,101,100,32,116,111,32,105,116,115,32,112,97,114,101,110, + 116,46,10,10,32,32,32,32,73,102,32,97,32,109,111,100, + 117,108,101,32,105,115,32,97,108,114,101,97,100,121,32,105, + 110,32,115,121,115,46,109,111,100,117,108,101,115,44,32,116, + 104,97,116,32,101,120,105,115,116,105,110,103,32,109,111,100, + 117,108,101,32,103,101,116,115,10,32,32,32,32,99,108,111, + 98,98,101,114,101,100,46,10,10,32,32,32,32,78,41,3, + 114,58,0,0,0,114,20,0,0,0,114,173,0,0,0,169, + 1,114,109,0,0,0,32,114,5,0,0,0,114,107,0,0, + 0,197,2,0,0,115,10,0,0,0,12,9,6,1,14,255, + 22,128,4,0,115,12,0,0,0,133,4,16,3,144,4,20, + 11,149,3,20,11,114,107,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, + 140,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, + 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, + 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, + 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, + 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, + 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, + 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, + 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, + 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, + 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,99, + 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 67,0,0,0,115,34,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,100,2,124,0,106,3,155,2,100,3,116, + 4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,40, + 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, + 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, + 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, + 32,51,46,49,50,122,8,60,109,111,100,117,108,101,32,122, + 2,32,40,122,2,41,62,78,41,6,114,101,0,0,0,114, + 102,0,0,0,114,103,0,0,0,114,8,0,0,0,114,175, + 0,0,0,114,151,0,0,0,169,1,114,110,0,0,0,32, + 114,5,0,0,0,114,114,0,0,0,223,2,0,0,115,8, + 0,0,0,6,7,2,1,4,255,22,2,114,17,0,0,0, + 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, + 0,0,0,115,42,0,0,0,124,2,100,0,117,1,114,6, + 100,0,83,0,116,0,160,1,124,1,161,1,114,19,116,2, + 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, + 83,0,169,2,78,114,150,0,0,0,41,4,114,65,0,0, + 0,90,10,105,115,95,98,117,105,108,116,105,110,114,104,0, + 0,0,114,151,0,0,0,169,4,218,3,99,108,115,114,90, + 0,0,0,218,4,112,97,116,104,218,6,116,97,114,103,101, + 116,32,32,32,32,114,5,0,0,0,218,9,102,105,110,100, 95,115,112,101,99,234,2,0,0,115,10,0,0,0,8,2, - 4,1,10,1,16,1,4,2,114,18,0,0,0,122,25,66, + 4,1,10,1,16,1,4,2,114,17,0,0,0,122,25,66, 117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115,42,0, @@ -1196,179 +1173,173 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,102, - 0,0,0,114,103,0,0,0,114,104,0,0,0,114,184,0, - 0,0,114,123,0,0,0,41,4,114,181,0,0,0,114,90, - 0,0,0,114,182,0,0,0,114,110,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,11,102,105, - 110,100,95,109,111,100,117,108,101,243,2,0,0,115,10,0, - 0,0,6,9,2,2,4,254,12,3,18,1,114,18,0,0, - 0,122,27,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,46,0,0,0,124,0,106,0,116,1,106,2, - 118,1,114,17,116,3,100,1,160,4,124,0,106,0,161,1, - 124,0,106,0,100,2,141,2,130,1,116,5,116,6,106,7, - 124,0,131,2,83,0,41,4,122,24,67,114,101,97,116,101, - 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,114,86,0,0,0,114,20,0,0,0,78,41,8,114, - 21,0,0,0,114,19,0,0,0,114,87,0,0,0,114,88, - 0,0,0,114,51,0,0,0,114,75,0,0,0,114,65,0, - 0,0,90,14,99,114,101,97,116,101,95,98,117,105,108,116, - 105,110,114,175,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,163,0,0,0,2,3,0,0,115, - 10,0,0,0,12,3,12,1,4,1,6,255,12,2,114,18, - 0,0,0,122,29,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,99,114,101,97,116,101,95,109,111,100,117, - 108,101,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,116,1, - 106,2,124,0,131,2,1,0,100,1,83,0,41,2,122,22, - 69,120,101,99,32,97,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,78,41,3,114,75,0,0,0,114,65, - 0,0,0,90,12,101,120,101,99,95,98,117,105,108,116,105, - 110,114,178,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,164,0,0,0,10,3,0,0,115,2, - 0,0,0,16,3,114,18,0,0,0,122,27,66,117,105,108, - 116,105,110,73,109,112,111,114,116,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,1,0,0,0,67,0,0,0,243,4,0,0, - 0,100,1,83,0,41,2,122,57,82,101,116,117,114,110,32, - 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, - 104,97,118,101,32,99,111,100,101,32,111,98,106,101,99,116, - 115,46,78,114,5,0,0,0,169,2,114,181,0,0,0,114, - 90,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,183,0, + 0,0,114,122,0,0,0,41,4,114,180,0,0,0,114,90, + 0,0,0,114,181,0,0,0,114,109,0,0,0,32,32,32, + 32,114,5,0,0,0,218,11,102,105,110,100,95,109,111,100, + 117,108,101,243,2,0,0,115,10,0,0,0,6,9,2,2, + 4,254,12,3,18,1,114,17,0,0,0,122,27,66,117,105, + 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,46,0, + 0,0,124,0,106,0,116,1,106,2,118,1,114,17,116,3, + 100,1,160,4,124,0,106,0,161,1,124,0,106,0,100,2, + 141,2,130,1,116,5,116,6,106,7,124,0,131,2,83,0, + 41,4,122,24,67,114,101,97,116,101,32,97,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,114,86,0,0, + 0,114,19,0,0,0,78,41,8,114,20,0,0,0,114,18, + 0,0,0,114,87,0,0,0,114,88,0,0,0,114,51,0, + 0,0,114,75,0,0,0,114,65,0,0,0,90,14,99,114, + 101,97,116,101,95,98,117,105,108,116,105,110,114,174,0,0, + 0,32,114,5,0,0,0,114,162,0,0,0,2,3,0,0, + 115,10,0,0,0,12,3,12,1,4,1,6,255,12,2,114, + 17,0,0,0,122,29,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,99,114,101,97,116,101,95,109,111,100, + 117,108,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,116, + 1,106,2,124,0,131,2,1,0,100,1,83,0,41,2,122, + 22,69,120,101,99,32,97,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,78,41,3,114,75,0,0,0,114, + 65,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, + 105,110,114,177,0,0,0,32,114,5,0,0,0,114,163,0, + 0,0,10,3,0,0,115,2,0,0,0,16,3,114,17,0, + 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, + 116,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,1,0,0,0, + 67,0,0,0,243,4,0,0,0,100,1,83,0,41,2,122, + 57,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,100,111,32,110,111,116,32,104,97,118,101,32,99,111,100, + 101,32,111,98,106,101,99,116,115,46,78,114,23,0,0,0, + 169,2,114,180,0,0,0,114,90,0,0,0,32,32,114,5, 0,0,0,218,8,103,101,116,95,99,111,100,101,15,3,0, - 0,243,2,0,0,0,4,4,114,18,0,0,0,122,24,66, + 0,243,2,0,0,0,4,4,114,17,0,0,0,122,24,66, 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,67,0,0,0,114,186,0,0, + 0,0,0,0,1,0,0,0,67,0,0,0,114,185,0,0, 0,41,2,122,56,82,101,116,117,114,110,32,78,111,110,101, 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,5, - 0,0,0,114,187,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,10,103,101,116,95,115,111,117, - 114,99,101,21,3,0,0,114,189,0,0,0,114,18,0,0, - 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,67,0, - 0,0,114,186,0,0,0,41,3,122,52,82,101,116,117,114, - 110,32,70,97,108,115,101,32,97,115,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,115,32,97,114,101,32, - 110,101,118,101,114,32,112,97,99,107,97,103,101,115,46,70, - 78,114,5,0,0,0,114,187,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,129,0,0,0,27, - 3,0,0,114,189,0,0,0,114,18,0,0,0,122,26,66, + 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, + 0,0,0,114,186,0,0,0,32,32,114,5,0,0,0,218, + 10,103,101,116,95,115,111,117,114,99,101,21,3,0,0,114, + 188,0,0,0,114,17,0,0,0,122,26,66,117,105,108,116, + 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, + 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, + 3,122,52,82,101,116,117,114,110,32,70,97,108,115,101,32, + 97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, + 99,107,97,103,101,115,46,70,78,114,23,0,0,0,114,186, + 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,27, + 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, - 0,0,41,18,114,9,0,0,0,114,8,0,0,0,114,1, - 0,0,0,114,10,0,0,0,114,152,0,0,0,218,12,115, - 116,97,116,105,99,109,101,116,104,111,100,114,115,0,0,0, - 218,11,99,108,97,115,115,109,101,116,104,111,100,114,184,0, - 0,0,114,185,0,0,0,114,163,0,0,0,114,164,0,0, - 0,114,96,0,0,0,114,188,0,0,0,114,190,0,0,0, - 114,129,0,0,0,114,112,0,0,0,114,171,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,176,0,0,0,212,2,0,0,115,46,0,0, - 0,8,0,4,2,4,7,2,2,10,1,2,10,12,1,2, - 8,12,1,2,14,10,1,2,7,10,1,2,4,2,1,12, - 1,2,4,2,1,12,1,2,4,2,1,12,1,12,4,114, - 18,0,0,0,114,176,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,144, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, - 2,90,4,101,5,100,3,100,4,132,0,131,1,90,6,101, - 7,100,22,100,6,100,7,132,1,131,1,90,8,101,7,100, - 23,100,8,100,9,132,1,131,1,90,9,101,5,100,10,100, - 11,132,0,131,1,90,10,101,5,100,12,100,13,132,0,131, - 1,90,11,101,7,100,14,100,15,132,0,131,1,90,12,101, - 7,101,13,100,16,100,17,132,0,131,1,131,1,90,14,101, - 7,101,13,100,18,100,19,132,0,131,1,131,1,90,15,101, - 7,101,13,100,20,100,21,132,0,131,1,131,1,90,16,100, - 5,83,0,41,24,218,14,70,114,111,122,101,110,73,109,112, - 111,114,116,101,114,122,142,77,101,116,97,32,112,97,116,104, - 32,105,109,112,111,114,116,32,102,111,114,32,102,114,111,122, - 101,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, - 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, - 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, - 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, - 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, - 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, - 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, - 10,32,32,32,32,90,6,102,114,111,122,101,110,99,1,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,115,28,0,0,0,116,0,160,1,100,1,116,2,161, - 2,1,0,100,2,160,3,124,0,106,4,116,5,106,6,161, - 2,83,0,41,4,114,177,0,0,0,122,80,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108, - 101,95,114,101,112,114,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,114,167,0,0, - 0,78,41,7,114,102,0,0,0,114,103,0,0,0,114,104, - 0,0,0,114,51,0,0,0,114,9,0,0,0,114,194,0, - 0,0,114,152,0,0,0,41,1,218,1,109,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,115,0,0,0, - 47,3,0,0,115,8,0,0,0,6,7,2,1,4,255,16, - 2,114,18,0,0,0,122,26,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,109,111,100,117,108,101,95,114,101, - 112,114,78,99,4,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,67,0,0,0,115,30,0,0,0,116,0,160, - 1,124,1,161,1,114,13,116,2,124,1,124,0,124,0,106, - 3,100,1,141,3,83,0,100,0,83,0,114,179,0,0,0, - 41,4,114,65,0,0,0,114,99,0,0,0,114,105,0,0, - 0,114,152,0,0,0,114,180,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,184,0,0,0,58, - 3,0,0,115,6,0,0,0,10,2,16,1,4,2,114,18, - 0,0,0,122,24,70,114,111,122,101,110,73,109,112,111,114, - 116,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,67,0, - 0,0,115,30,0,0,0,116,0,160,1,100,1,116,2,161, - 2,1,0,116,3,160,4,124,1,161,1,114,13,124,0,83, - 0,100,2,83,0,41,3,122,93,70,105,110,100,32,97,32, - 102,114,111,122,101,110,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,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,122,105,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, - 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, - 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, - 100,78,41,5,114,102,0,0,0,114,103,0,0,0,114,104, - 0,0,0,114,65,0,0,0,114,99,0,0,0,41,3,114, - 181,0,0,0,114,90,0,0,0,114,182,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,185,0, + 0,0,41,18,114,8,0,0,0,114,7,0,0,0,114,1, + 0,0,0,114,9,0,0,0,114,151,0,0,0,218,12,115, + 116,97,116,105,99,109,101,116,104,111,100,114,114,0,0,0, + 218,11,99,108,97,115,115,109,101,116,104,111,100,114,183,0, + 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, + 0,114,95,0,0,0,114,187,0,0,0,114,189,0,0,0, + 114,128,0,0,0,114,111,0,0,0,114,170,0,0,0,114, + 23,0,0,0,114,5,0,0,0,114,175,0,0,0,212,2, + 0,0,115,46,0,0,0,8,0,4,2,4,7,2,2,10, + 1,2,10,12,1,2,8,12,1,2,14,10,1,2,7,10, + 1,2,4,2,1,12,1,2,4,2,1,12,1,2,4,2, + 1,12,1,12,4,114,17,0,0,0,114,175,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 64,0,0,0,115,144,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,90,4,101,5,100,3,100,4,132, + 0,131,1,90,6,101,7,100,22,100,6,100,7,132,1,131, + 1,90,8,101,7,100,23,100,8,100,9,132,1,131,1,90, + 9,101,5,100,10,100,11,132,0,131,1,90,10,101,5,100, + 12,100,13,132,0,131,1,90,11,101,7,100,14,100,15,132, + 0,131,1,90,12,101,7,101,13,100,16,100,17,132,0,131, + 1,131,1,90,14,101,7,101,13,100,18,100,19,132,0,131, + 1,131,1,90,15,101,7,101,13,100,20,100,21,132,0,131, + 1,131,1,90,16,100,5,83,0,41,24,218,14,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116, + 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, + 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, + 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, + 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, + 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, + 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, + 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, + 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, + 108,97,115,115,46,10,10,32,32,32,32,90,6,102,114,111, + 122,101,110,99,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,28,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, + 4,116,5,106,6,161,2,83,0,41,4,114,176,0,0,0, + 122,80,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 46,109,111,100,117,108,101,95,114,101,112,114,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,114,166,0,0,0,78,41,7,114,101,0,0,0,114, + 102,0,0,0,114,103,0,0,0,114,51,0,0,0,114,8, + 0,0,0,114,193,0,0,0,114,151,0,0,0,41,1,218, + 1,109,32,114,5,0,0,0,114,114,0,0,0,47,3,0, + 0,115,8,0,0,0,6,7,2,1,4,255,16,2,114,17, + 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,78, + 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,67,0,0,0,115,30,0,0,0,116,0,160,1,124,1, + 161,1,114,13,116,2,124,1,124,0,124,0,106,3,100,1, + 141,3,83,0,100,0,83,0,114,178,0,0,0,41,4,114, + 65,0,0,0,114,98,0,0,0,114,104,0,0,0,114,151, + 0,0,0,114,179,0,0,0,32,32,32,32,114,5,0,0, + 0,114,183,0,0,0,58,3,0,0,115,6,0,0,0,10, + 2,16,1,4,2,114,17,0,0,0,122,24,70,114,111,122, + 101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0, + 160,1,100,1,116,2,161,2,1,0,116,3,160,4,124,1, + 161,1,114,13,124,0,83,0,100,2,83,0,41,3,122,93, + 70,105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,41,5,114,101,0,0,0, + 114,102,0,0,0,114,103,0,0,0,114,65,0,0,0,114, + 98,0,0,0,41,3,114,180,0,0,0,114,90,0,0,0, + 114,181,0,0,0,32,32,32,114,5,0,0,0,114,184,0, 0,0,65,3,0,0,115,8,0,0,0,6,7,2,2,4, - 254,18,3,114,18,0,0,0,122,26,70,114,111,122,101,110, + 254,18,3,114,17,0,0,0,122,26,70,114,111,122,101,110, 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,67,0,0,0,114,186,0,0,0,41,2, + 0,1,0,0,0,67,0,0,0,114,185,0,0,0,41,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,5,0, - 0,0,114,175,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,163,0,0,0,77,3,0,0,115, - 2,0,0,0,4,0,114,18,0,0,0,122,28,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,46,99,114,101,97, - 116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,64, - 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, - 1,161,1,115,18,116,4,100,1,160,5,124,1,161,1,124, - 1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131, - 2,125,2,116,8,124,2,124,0,106,9,131,2,1,0,100, - 0,83,0,114,98,0,0,0,41,10,114,114,0,0,0,114, - 21,0,0,0,114,65,0,0,0,114,99,0,0,0,114,88, - 0,0,0,114,51,0,0,0,114,75,0,0,0,218,17,103, - 101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116, - 218,4,101,120,101,99,114,14,0,0,0,41,3,114,111,0, - 0,0,114,21,0,0,0,218,4,99,111,100,101,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,164,0,0, + 108,101,32,99,114,101,97,116,105,111,110,46,78,114,23,0, + 0,0,114,174,0,0,0,32,114,5,0,0,0,114,162,0, + 0,0,77,3,0,0,115,2,0,0,0,4,0,114,17,0, + 0,0,122,28,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,99,114,101,97,116,101,95,109,111,100,117,108,101, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, + 125,1,116,2,160,3,124,1,161,1,115,18,116,4,100,1, + 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, + 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, + 106,9,131,2,1,0,100,0,83,0,114,97,0,0,0,41, + 10,114,113,0,0,0,114,20,0,0,0,114,65,0,0,0, + 114,98,0,0,0,114,88,0,0,0,114,51,0,0,0,114, + 75,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, + 95,111,98,106,101,99,116,218,4,101,120,101,99,114,13,0, + 0,0,41,3,114,110,0,0,0,114,20,0,0,0,218,4, + 99,111,100,101,32,32,32,114,5,0,0,0,114,163,0,0, 0,81,3,0,0,115,14,0,0,0,8,2,10,1,10,1, - 2,1,6,255,12,2,16,1,114,18,0,0,0,122,26,70, + 2,1,6,255,12,2,16,1,114,17,0,0,0,122,26,70, 114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10, @@ -1379,569 +1350,560 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 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,41,1,114,112,0,0,0,114,187,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,171,0,0, - 0,90,3,0,0,115,2,0,0,0,10,8,114,18,0,0, - 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,243,10,0,0,0,116,0,160,1,124,1,161,1,83, - 0,41,2,122,45,82,101,116,117,114,110,32,116,104,101,32, - 99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32, - 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,46,78,41,2,114,65,0,0,0,114,196,0,0,0,114, - 187,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,188,0,0,0,100,3,0,0,243,2,0,0, - 0,10,4,114,18,0,0,0,122,23,70,114,111,122,101,110, + 78,41,1,114,111,0,0,0,114,186,0,0,0,32,32,114, + 5,0,0,0,114,170,0,0,0,90,3,0,0,115,2,0, + 0,0,10,8,114,17,0,0,0,122,26,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,108,111,97,100,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,243,10,0,0,0,116, + 0,160,1,124,1,161,1,83,0,41,2,122,45,82,101,116, + 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, + 101,99,116,32,102,111,114,32,116,104,101,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,46,78,41,2,114,65,0, + 0,0,114,195,0,0,0,114,186,0,0,0,32,32,114,5, + 0,0,0,114,187,0,0,0,100,3,0,0,243,2,0,0, + 0,10,4,114,17,0,0,0,122,23,70,114,111,122,101,110, 73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, 101,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,67,0,0,0,114,186,0,0,0,41,2,122,54,82, + 0,0,67,0,0,0,114,185,0,0,0,41,2,122,54,82, 101,116,117,114,110,32,78,111,110,101,32,97,115,32,102,114, 111,122,101,110,32,109,111,100,117,108,101,115,32,100,111,32, 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, - 99,111,100,101,46,78,114,5,0,0,0,114,187,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 190,0,0,0,106,3,0,0,114,189,0,0,0,114,18,0, - 0,0,122,25,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,114,199,0,0,0,41,2,122,46,82,101,116,117,114, - 110,32,84,114,117,101,32,105,102,32,116,104,101,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,32,105,115,32,97, - 32,112,97,99,107,97,103,101,46,78,41,2,114,65,0,0, - 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, - 107,97,103,101,114,187,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,129,0,0,0,112,3,0, - 0,114,200,0,0,0,114,18,0,0,0,122,25,70,114,111, + 99,111,100,101,46,78,114,23,0,0,0,114,186,0,0,0, + 32,32,114,5,0,0,0,114,189,0,0,0,106,3,0,0, + 114,188,0,0,0,114,17,0,0,0,122,25,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, + 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,114,198,0,0,0,41, + 2,122,46,82,101,116,117,114,110,32,84,114,117,101,32,105, + 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, + 46,78,41,2,114,65,0,0,0,90,17,105,115,95,102,114, + 111,122,101,110,95,112,97,99,107,97,103,101,114,186,0,0, + 0,32,32,114,5,0,0,0,114,128,0,0,0,112,3,0, + 0,114,199,0,0,0,114,17,0,0,0,122,25,70,114,111, 122,101,110,73,109,112,111,114,116,101,114,46,105,115,95,112, - 97,99,107,97,103,101,114,191,0,0,0,114,0,0,0,0, - 41,17,114,9,0,0,0,114,8,0,0,0,114,1,0,0, - 0,114,10,0,0,0,114,152,0,0,0,114,192,0,0,0, - 114,115,0,0,0,114,193,0,0,0,114,184,0,0,0,114, - 185,0,0,0,114,163,0,0,0,114,164,0,0,0,114,171, - 0,0,0,114,101,0,0,0,114,188,0,0,0,114,190,0, - 0,0,114,129,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,194,0,0,0, - 36,3,0,0,115,48,0,0,0,8,0,4,2,4,7,2, - 2,10,1,2,10,12,1,2,6,12,1,2,11,10,1,2, - 3,10,1,2,8,10,1,2,9,2,1,12,1,2,4,2, - 1,12,1,2,4,2,1,16,1,114,18,0,0,0,114,194, - 0,0,0,99,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,83,0,41,7,218, - 18,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116, - 101,120,116,122,36,67,111,110,116,101,120,116,32,109,97,110, - 97,103,101,114,32,102,111,114,32,116,104,101,32,105,109,112, - 111,114,116,32,108,111,99,107,46,99,1,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,67,0,0,0,243,12, - 0,0,0,116,0,160,1,161,0,1,0,100,1,83,0,41, - 2,122,24,65,99,113,117,105,114,101,32,116,104,101,32,105, - 109,112,111,114,116,32,108,111,99,107,46,78,41,2,114,65, - 0,0,0,114,66,0,0,0,114,53,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,62,0,0, - 0,125,3,0,0,243,2,0,0,0,12,2,114,18,0,0, - 0,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111, - 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99, - 4,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 67,0,0,0,114,202,0,0,0,41,2,122,60,82,101,108, - 101,97,115,101,32,116,104,101,32,105,109,112,111,114,116,32, - 108,111,99,107,32,114,101,103,97,114,100,108,101,115,115,32, - 111,102,32,97,110,121,32,114,97,105,115,101,100,32,101,120, - 99,101,112,116,105,111,110,115,46,78,41,2,114,65,0,0, - 0,114,68,0,0,0,41,4,114,34,0,0,0,218,8,101, - 120,99,95,116,121,112,101,218,9,101,120,99,95,118,97,108, - 117,101,218,13,101,120,99,95,116,114,97,99,101,98,97,99, - 107,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,64,0,0,0,129,3,0,0,114,203,0,0,0,114,18, - 0,0,0,122,27,95,73,109,112,111,114,116,76,111,99,107, - 67,111,110,116,101,120,116,46,95,95,101,120,105,116,95,95, - 78,41,6,114,9,0,0,0,114,8,0,0,0,114,1,0, - 0,0,114,10,0,0,0,114,62,0,0,0,114,64,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,201,0,0,0,121,3,0,0,115,8, - 0,0,0,8,0,4,2,8,2,12,4,114,18,0,0,0, - 114,201,0,0,0,99,3,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,67,0,0,0,115,64,0,0,0,124, - 1,160,0,100,1,124,2,100,2,24,0,161,2,125,3,116, - 1,124,3,131,1,124,2,107,0,114,18,116,2,100,3,131, - 1,130,1,124,3,100,4,25,0,125,4,124,0,114,30,100, - 5,160,3,124,4,124,0,161,2,83,0,124,4,83,0,41, - 7,122,50,82,101,115,111,108,118,101,32,97,32,114,101,108, - 97,116,105,118,101,32,109,111,100,117,108,101,32,110,97,109, - 101,32,116,111,32,97,110,32,97,98,115,111,108,117,116,101, - 32,111,110,101,46,114,142,0,0,0,114,43,0,0,0,122, - 50,97,116,116,101,109,112,116,101,100,32,114,101,108,97,116, - 105,118,101,32,105,109,112,111,114,116,32,98,101,121,111,110, - 100,32,116,111,112,45,108,101,118,101,108,32,112,97,99,107, - 97,103,101,114,26,0,0,0,250,5,123,125,46,123,125,78, - 41,4,218,6,114,115,112,108,105,116,218,3,108,101,110,114, - 88,0,0,0,114,51,0,0,0,41,5,114,21,0,0,0, - 218,7,112,97,99,107,97,103,101,218,5,108,101,118,101,108, - 90,4,98,105,116,115,90,4,98,97,115,101,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,13,95,114,101, - 115,111,108,118,101,95,110,97,109,101,134,3,0,0,115,10, - 0,0,0,16,2,12,1,8,1,8,1,20,1,114,18,0, - 0,0,114,212,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,60,0,0, - 0,116,0,124,0,131,1,155,0,100,1,157,2,125,3,116, - 1,160,2,124,3,116,3,161,2,1,0,124,0,160,4,124, - 1,124,2,161,2,125,4,124,4,100,0,117,0,114,25,100, - 0,83,0,116,5,124,1,124,4,131,2,83,0,41,2,78, - 122,53,46,102,105,110,100,95,115,112,101,99,40,41,32,110, - 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, - 103,32,98,97,99,107,32,116,111,32,102,105,110,100,95,109, - 111,100,117,108,101,40,41,41,6,114,7,0,0,0,114,102, - 0,0,0,114,103,0,0,0,114,170,0,0,0,114,185,0, - 0,0,114,105,0,0,0,41,5,218,6,102,105,110,100,101, - 114,114,21,0,0,0,114,182,0,0,0,114,109,0,0,0, - 114,123,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,17,95,102,105,110,100,95,115,112,101,99, - 95,108,101,103,97,99,121,143,3,0,0,115,12,0,0,0, - 14,1,12,2,12,1,8,1,4,1,10,1,114,18,0,0, - 0,114,214,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,10,0,0,0,67,0,0,0,115,30,1,0,0, - 116,0,106,1,125,3,124,3,100,1,117,0,114,11,116,2, - 100,2,131,1,130,1,124,3,115,19,116,3,160,4,100,3, - 116,5,161,2,1,0,124,0,116,0,106,6,118,0,125,4, - 124,3,68,0,93,112,125,5,116,7,131,0,53,0,1,0, - 9,0,124,5,106,8,125,6,110,27,35,0,4,0,116,9, - 121,142,1,0,1,0,1,0,116,10,124,5,124,0,124,1, - 131,3,125,7,124,7,100,1,117,0,114,61,89,0,100,1, - 4,0,4,0,131,3,1,0,113,26,89,0,110,7,37,0, - 124,6,124,0,124,1,124,2,131,3,125,7,100,1,4,0, - 4,0,131,3,1,0,110,11,35,0,49,0,115,81,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,7, - 100,1,117,1,114,138,124,4,115,134,124,0,116,0,106,6, - 118,0,114,134,116,0,106,6,124,0,25,0,125,8,9,0, - 124,8,106,11,125,9,110,14,35,0,4,0,116,9,121,141, - 1,0,1,0,1,0,124,7,6,0,89,0,2,0,1,0, - 83,0,37,0,124,9,100,1,117,0,114,130,124,7,2,0, - 1,0,83,0,124,9,2,0,1,0,83,0,124,7,2,0, - 1,0,83,0,113,26,100,1,83,0,119,0,119,0,41,4, - 122,21,70,105,110,100,32,97,32,109,111,100,117,108,101,39, - 115,32,115,112,101,99,46,78,122,53,115,121,115,46,109,101, - 116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44, - 32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108, - 121,32,115,104,117,116,116,105,110,103,32,100,111,119,110,122, - 22,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, - 115,32,101,109,112,116,121,41,12,114,19,0,0,0,218,9, - 109,101,116,97,95,112,97,116,104,114,88,0,0,0,114,102, - 0,0,0,114,103,0,0,0,114,170,0,0,0,114,106,0, - 0,0,114,201,0,0,0,114,184,0,0,0,114,2,0,0, - 0,114,214,0,0,0,114,114,0,0,0,41,10,114,21,0, - 0,0,114,182,0,0,0,114,183,0,0,0,114,215,0,0, - 0,90,9,105,115,95,114,101,108,111,97,100,114,213,0,0, - 0,114,184,0,0,0,114,110,0,0,0,114,111,0,0,0, - 114,114,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,10,95,102,105,110,100,95,115,112,101,99, - 153,3,0,0,115,76,0,0,0,6,2,8,1,8,2,4, - 3,12,1,10,5,8,1,8,1,2,1,8,1,2,128,12, - 1,12,1,8,1,2,1,12,250,4,5,2,128,12,3,12, - 248,22,128,8,9,14,2,10,1,2,1,8,1,2,128,12, - 1,12,4,2,128,8,2,8,1,8,2,8,2,2,239,4, - 19,2,243,2,244,115,63,0,0,0,159,1,65,12,5,161, - 3,37,4,164,1,65,12,5,165,17,63,11,182,1,65,12, - 5,189,9,65,12,5,193,12,4,65,16,13,193,17,3,65, - 16,13,193,40,3,65,44,2,193,44,9,65,57,9,194,13, - 1,65,57,9,194,14,1,63,11,114,216,0,0,0,99,3, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, - 0,0,0,115,110,0,0,0,116,0,124,0,116,1,131,2, - 115,14,116,2,100,1,160,3,116,4,124,0,131,1,161,1, - 131,1,130,1,124,2,100,2,107,0,114,22,116,5,100,3, - 131,1,130,1,124,2,100,2,107,4,114,41,116,0,124,1, - 116,1,131,2,115,35,116,2,100,4,131,1,130,1,124,1, - 115,41,116,6,100,5,131,1,130,1,124,0,115,53,124,2, - 100,2,107,2,114,51,116,5,100,6,131,1,130,1,100,7, - 83,0,100,7,83,0,41,8,122,28,86,101,114,105,102,121, - 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34, - 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110, - 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, - 32,110,111,116,32,123,125,114,26,0,0,0,122,18,108,101, - 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, - 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111, - 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110, - 103,122,54,97,116,116,101,109,112,116,101,100,32,114,101,108, - 97,116,105,118,101,32,105,109,112,111,114,116,32,119,105,116, - 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110, - 116,32,112,97,99,107,97,103,101,122,17,69,109,112,116,121, - 32,109,111,100,117,108,101,32,110,97,109,101,78,41,7,218, - 10,105,115,105,110,115,116,97,110,99,101,218,3,115,116,114, - 218,9,84,121,112,101,69,114,114,111,114,114,51,0,0,0, - 114,3,0,0,0,218,10,86,97,108,117,101,69,114,114,111, - 114,114,88,0,0,0,169,3,114,21,0,0,0,114,210,0, - 0,0,114,211,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,13,95,115,97,110,105,116,121,95, - 99,104,101,99,107,200,3,0,0,115,24,0,0,0,10,2, - 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, - 12,2,8,1,8,255,114,18,0,0,0,114,222,0,0,0, - 122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101, - 100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0, - 0,0,0,0,0,8,0,0,0,67,0,0,0,115,20,1, - 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, - 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, - 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, - 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, - 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, - 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, - 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, - 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, - 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, - 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, - 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, - 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, - 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, - 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, - 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, - 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, - 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, - 83,0,119,0,119,0,41,8,78,114,142,0,0,0,114,26, - 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, - 111,116,32,97,32,112,97,99,107,97,103,101,114,20,0,0, - 0,233,2,0,0,0,122,27,67,97,110,110,111,116,32,115, - 101,116,32,97,110,32,97,116,116,114,105,98,117,116,101,32, - 111,110,32,122,18,32,102,111,114,32,99,104,105,108,100,32, - 109,111,100,117,108,101,32,41,15,114,143,0,0,0,114,19, - 0,0,0,114,106,0,0,0,114,75,0,0,0,114,155,0, - 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, - 71,114,51,0,0,0,218,19,77,111,100,117,108,101,78,111, - 116,70,111,117,110,100,69,114,114,111,114,114,216,0,0,0, - 114,174,0,0,0,114,12,0,0,0,114,102,0,0,0,114, - 103,0,0,0,114,170,0,0,0,41,9,114,21,0,0,0, - 218,7,105,109,112,111,114,116,95,114,182,0,0,0,114,144, - 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, - 108,101,114,109,0,0,0,114,110,0,0,0,114,111,0,0, - 0,90,5,99,104,105,108,100,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,23,95,102,105,110,100,95,97, - 110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,100, - 219,3,0,0,115,68,0,0,0,4,1,14,1,4,1,10, - 1,10,1,10,2,10,1,10,1,2,1,8,1,2,128,12, - 1,16,1,14,1,2,128,10,1,8,1,18,1,8,2,4, - 1,10,2,14,1,2,1,12,1,4,4,2,128,12,253,16, - 1,14,1,4,1,2,128,4,0,2,253,2,242,115,31,0, - 0,0,165,3,41,0,169,22,63,7,193,37,6,65,45,0, - 193,45,21,66,5,7,194,8,1,66,5,7,194,9,1,63, - 7,114,227,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,67,0,0,0,115,132,0,0,0, - 116,0,124,0,131,1,53,0,1,0,116,1,106,2,160,3, - 124,0,116,4,161,2,125,2,124,2,116,4,117,0,114,27, - 116,5,124,0,124,1,131,2,2,0,100,1,4,0,4,0, - 131,3,1,0,83,0,9,0,100,1,4,0,4,0,131,3, - 1,0,110,11,35,0,49,0,115,39,119,4,37,0,1,0, - 1,0,1,0,89,0,1,0,1,0,124,2,100,1,117,0, - 114,60,100,2,160,6,124,0,161,1,125,3,116,7,124,3, - 124,0,100,3,141,2,130,1,116,8,124,0,131,1,1,0, - 124,2,83,0,41,4,122,25,70,105,110,100,32,97,110,100, - 32,108,111,97,100,32,116,104,101,32,109,111,100,117,108,101, - 46,78,122,40,105,109,112,111,114,116,32,111,102,32,123,125, - 32,104,97,108,116,101,100,59,32,78,111,110,101,32,105,110, - 32,115,121,115,46,109,111,100,117,108,101,115,114,20,0,0, - 0,41,9,114,58,0,0,0,114,19,0,0,0,114,106,0, - 0,0,114,39,0,0,0,218,14,95,78,69,69,68,83,95, - 76,79,65,68,73,78,71,114,227,0,0,0,114,51,0,0, - 0,114,225,0,0,0,114,73,0,0,0,41,4,114,21,0, - 0,0,114,226,0,0,0,114,111,0,0,0,114,83,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,14,95,102,105,110,100,95,97,110,100,95,108,111,97,100, - 254,3,0,0,115,30,0,0,0,10,2,14,1,8,1,8, - 1,14,253,2,2,12,254,22,128,8,5,2,1,6,1,2, - 255,12,2,8,2,4,1,115,12,0,0,0,132,16,34,3, - 162,4,38,11,167,3,38,11,114,229,0,0,0,114,26,0, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,42,0,0,0,116,0,124,0, - 124,1,124,2,131,3,1,0,124,2,100,1,107,4,114,16, - 116,1,124,0,124,1,124,2,131,3,125,0,116,2,124,0, - 116,3,131,2,83,0,41,3,97,50,1,0,0,73,109,112, - 111,114,116,32,97,110,100,32,114,101,116,117,114,110,32,116, - 104,101,32,109,111,100,117,108,101,32,98,97,115,101,100,32, - 111,110,32,105,116,115,32,110,97,109,101,44,32,116,104,101, - 32,112,97,99,107,97,103,101,32,116,104,101,32,99,97,108, - 108,32,105,115,10,32,32,32,32,98,101,105,110,103,32,109, - 97,100,101,32,102,114,111,109,44,32,97,110,100,32,116,104, - 101,32,108,101,118,101,108,32,97,100,106,117,115,116,109,101, - 110,116,46,10,10,32,32,32,32,84,104,105,115,32,102,117, - 110,99,116,105,111,110,32,114,101,112,114,101,115,101,110,116, - 115,32,116,104,101,32,103,114,101,97,116,101,115,116,32,99, - 111,109,109,111,110,32,100,101,110,111,109,105,110,97,116,111, - 114,32,111,102,32,102,117,110,99,116,105,111,110,97,108,105, - 116,121,10,32,32,32,32,98,101,116,119,101,101,110,32,105, - 109,112,111,114,116,95,109,111,100,117,108,101,32,97,110,100, - 32,95,95,105,109,112,111,114,116,95,95,46,32,84,104,105, - 115,32,105,110,99,108,117,100,101,115,32,115,101,116,116,105, - 110,103,32,95,95,112,97,99,107,97,103,101,95,95,32,105, - 102,10,32,32,32,32,116,104,101,32,108,111,97,100,101,114, - 32,100,105,100,32,110,111,116,46,10,10,32,32,32,32,114, - 26,0,0,0,78,41,4,114,222,0,0,0,114,212,0,0, - 0,114,229,0,0,0,218,11,95,103,99,100,95,105,109,112, - 111,114,116,114,221,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,230,0,0,0,14,4,0,0, - 115,8,0,0,0,12,9,8,1,12,1,10,1,114,18,0, - 0,0,114,230,0,0,0,169,1,218,9,114,101,99,117,114, - 115,105,118,101,99,3,0,0,0,0,0,0,0,1,0,0, - 0,9,0,0,0,67,0,0,0,115,216,0,0,0,124,1, - 68,0,93,102,125,4,116,0,124,4,116,1,131,2,115,32, - 124,3,114,17,124,0,106,2,100,1,23,0,125,5,110,2, - 100,2,125,5,116,3,100,3,124,5,155,0,100,4,116,4, - 124,4,131,1,106,2,155,0,157,4,131,1,130,1,124,4, - 100,5,107,2,114,53,124,3,115,52,116,5,124,0,100,6, - 131,2,114,52,116,6,124,0,124,0,106,7,124,2,100,7, - 100,8,141,4,1,0,113,2,116,5,124,0,124,4,131,2, - 115,104,100,9,160,8,124,0,106,2,124,4,161,2,125,6, - 9,0,116,9,124,2,124,6,131,2,1,0,113,2,35,0, - 4,0,116,10,121,107,1,0,125,7,1,0,124,7,106,11, - 124,6,107,2,114,98,116,12,106,13,160,14,124,6,116,15, - 161,2,100,10,117,1,114,98,89,0,100,10,125,7,126,7, - 113,2,130,0,100,10,125,7,126,7,119,1,37,0,113,2, - 124,0,83,0,119,0,41,11,122,238,70,105,103,117,114,101, - 32,111,117,116,32,119,104,97,116,32,95,95,105,109,112,111, - 114,116,95,95,32,115,104,111,117,108,100,32,114,101,116,117, - 114,110,46,10,10,32,32,32,32,84,104,101,32,105,109,112, - 111,114,116,95,32,112,97,114,97,109,101,116,101,114,32,105, - 115,32,97,32,99,97,108,108,97,98,108,101,32,119,104,105, - 99,104,32,116,97,107,101,115,32,116,104,101,32,110,97,109, - 101,32,111,102,32,109,111,100,117,108,101,32,116,111,10,32, - 32,32,32,105,109,112,111,114,116,46,32,73,116,32,105,115, - 32,114,101,113,117,105,114,101,100,32,116,111,32,100,101,99, - 111,117,112,108,101,32,116,104,101,32,102,117,110,99,116,105, - 111,110,32,102,114,111,109,32,97,115,115,117,109,105,110,103, - 32,105,109,112,111,114,116,108,105,98,39,115,10,32,32,32, - 32,105,109,112,111,114,116,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,105,115,32,100,101,115,105,114,101, - 100,46,10,10,32,32,32,32,122,8,46,95,95,97,108,108, - 95,95,122,13,96,96,102,114,111,109,32,108,105,115,116,39, - 39,122,8,73,116,101,109,32,105,110,32,122,18,32,109,117, - 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,250, - 1,42,218,7,95,95,97,108,108,95,95,84,114,231,0,0, - 0,114,207,0,0,0,78,41,16,114,217,0,0,0,114,218, - 0,0,0,114,9,0,0,0,114,219,0,0,0,114,3,0, - 0,0,114,11,0,0,0,218,16,95,104,97,110,100,108,101, - 95,102,114,111,109,108,105,115,116,114,234,0,0,0,114,51, - 0,0,0,114,75,0,0,0,114,225,0,0,0,114,21,0, - 0,0,114,19,0,0,0,114,106,0,0,0,114,39,0,0, - 0,114,228,0,0,0,41,8,114,111,0,0,0,218,8,102, - 114,111,109,108,105,115,116,114,226,0,0,0,114,232,0,0, - 0,218,1,120,90,5,119,104,101,114,101,90,9,102,114,111, - 109,95,110,97,109,101,90,3,101,120,99,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,235,0,0,0,29, - 4,0,0,115,58,0,0,0,8,10,10,1,4,1,12,1, - 4,2,10,1,8,1,8,255,8,2,14,1,10,1,2,1, - 6,255,2,128,10,2,14,1,2,1,12,1,2,128,12,1, - 10,4,16,1,2,255,10,2,2,1,10,128,2,245,4,12, - 2,248,115,36,0,0,0,193,2,5,65,8,2,193,8,7, - 65,39,9,193,15,14,65,35,9,193,34,1,65,35,9,193, - 35,4,65,39,9,193,43,1,65,39,9,114,235,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0, - 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, - 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, - 100,3,117,1,114,41,124,2,100,3,117,1,114,39,124,1, - 124,2,106,1,107,3,114,39,116,2,160,3,100,4,124,1, - 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, - 100,7,100,8,166,3,1,0,124,1,83,0,124,2,100,3, - 117,1,114,48,124,2,106,1,83,0,116,2,160,3,100,9, - 116,4,100,7,100,8,166,3,1,0,124,0,100,10,25,0, - 125,1,100,11,124,0,118,1,114,71,124,1,160,5,100,12, - 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, - 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, - 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, - 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, - 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, - 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, - 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, - 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, - 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, - 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, - 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, - 46,10,10,32,32,32,32,114,159,0,0,0,114,114,0,0, - 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, - 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, - 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, - 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, - 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, - 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, - 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, - 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, - 110,100,32,95,95,112,97,116,104,95,95,114,9,0,0,0, - 114,155,0,0,0,114,142,0,0,0,114,26,0,0,0,41, - 6,114,39,0,0,0,114,144,0,0,0,114,102,0,0,0, - 114,103,0,0,0,114,170,0,0,0,114,143,0,0,0,41, - 3,218,7,103,108,111,98,97,108,115,114,210,0,0,0,114, - 110,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,17,95,99,97,108,99,95,95,95,112,97,99, - 107,97,103,101,95,95,66,4,0,0,115,42,0,0,0,10, - 7,10,1,8,1,18,1,6,1,2,1,4,255,4,1,6, - 255,4,2,6,254,4,3,8,1,6,1,6,2,4,2,6, - 254,8,3,8,1,14,1,4,1,114,18,0,0,0,114,241, - 0,0,0,114,5,0,0,0,99,5,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,174,0, - 0,0,124,4,100,1,107,2,114,9,116,0,124,0,131,1, - 125,5,110,18,124,1,100,2,117,1,114,15,124,1,110,1, - 105,0,125,6,116,1,124,6,131,1,125,7,116,0,124,0, - 124,7,124,4,131,3,125,5,124,3,115,74,124,4,100,1, - 107,2,114,42,116,0,124,0,160,2,100,3,161,1,100,1, - 25,0,131,1,83,0,124,0,115,46,124,5,83,0,116,3, - 124,0,131,1,116,3,124,0,160,2,100,3,161,1,100,1, - 25,0,131,1,24,0,125,8,116,4,106,5,124,5,106,6, - 100,2,116,3,124,5,106,6,131,1,124,8,24,0,133,2, - 25,0,25,0,83,0,116,7,124,5,100,4,131,2,114,85, - 116,8,124,5,124,3,116,0,131,3,83,0,124,5,83,0, - 41,5,97,215,1,0,0,73,109,112,111,114,116,32,97,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,84,104,101, - 32,39,103,108,111,98,97,108,115,39,32,97,114,103,117,109, - 101,110,116,32,105,115,32,117,115,101,100,32,116,111,32,105, - 110,102,101,114,32,119,104,101,114,101,32,116,104,101,32,105, - 109,112,111,114,116,32,105,115,32,111,99,99,117,114,114,105, - 110,103,32,102,114,111,109,10,32,32,32,32,116,111,32,104, - 97,110,100,108,101,32,114,101,108,97,116,105,118,101,32,105, - 109,112,111,114,116,115,46,32,84,104,101,32,39,108,111,99, - 97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,115, - 32,105,103,110,111,114,101,100,46,32,84,104,101,10,32,32, - 32,32,39,102,114,111,109,108,105,115,116,39,32,97,114,103, - 117,109,101,110,116,32,115,112,101,99,105,102,105,101,115,32, - 119,104,97,116,32,115,104,111,117,108,100,32,101,120,105,115, - 116,32,97,115,32,97,116,116,114,105,98,117,116,101,115,32, - 111,110,32,116,104,101,32,109,111,100,117,108,101,10,32,32, - 32,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, - 32,40,101,46,103,46,32,96,96,102,114,111,109,32,109,111, - 100,117,108,101,32,105,109,112,111,114,116,32,60,102,114,111, - 109,108,105,115,116,62,96,96,41,46,32,32,84,104,101,32, - 39,108,101,118,101,108,39,10,32,32,32,32,97,114,103,117, - 109,101,110,116,32,114,101,112,114,101,115,101,110,116,115,32, - 116,104,101,32,112,97,99,107,97,103,101,32,108,111,99,97, - 116,105,111,110,32,116,111,32,105,109,112,111,114,116,32,102, - 114,111,109,32,105,110,32,97,32,114,101,108,97,116,105,118, - 101,10,32,32,32,32,105,109,112,111,114,116,32,40,101,46, - 103,46,32,96,96,102,114,111,109,32,46,46,112,107,103,32, - 105,109,112,111,114,116,32,109,111,100,96,96,32,119,111,117, - 108,100,32,104,97,118,101,32,97,32,39,108,101,118,101,108, - 39,32,111,102,32,50,41,46,10,10,32,32,32,32,114,26, - 0,0,0,78,114,142,0,0,0,114,155,0,0,0,41,9, - 114,230,0,0,0,114,241,0,0,0,218,9,112,97,114,116, - 105,116,105,111,110,114,209,0,0,0,114,19,0,0,0,114, - 106,0,0,0,114,9,0,0,0,114,11,0,0,0,114,235, - 0,0,0,41,9,114,21,0,0,0,114,240,0,0,0,218, - 6,108,111,99,97,108,115,114,236,0,0,0,114,211,0,0, - 0,114,111,0,0,0,90,8,103,108,111,98,97,108,115,95, - 114,210,0,0,0,90,7,99,117,116,95,111,102,102,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,10,95, - 95,105,109,112,111,114,116,95,95,93,4,0,0,115,30,0, - 0,0,8,11,10,1,16,2,8,1,12,1,4,1,8,3, - 18,1,4,1,4,1,26,4,30,3,10,1,12,1,4,2, - 114,18,0,0,0,114,244,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,67,0,0,0,115, - 38,0,0,0,116,0,160,1,124,0,161,1,125,1,124,1, - 100,0,117,0,114,15,116,2,100,1,124,0,23,0,131,1, - 130,1,116,3,124,1,131,1,83,0,41,2,78,122,25,110, - 111,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,32,110,97,109,101,100,32,41,4,114,176,0,0,0,114, - 184,0,0,0,114,88,0,0,0,114,174,0,0,0,41,2, - 114,21,0,0,0,114,110,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,18,95,98,117,105,108, - 116,105,110,95,102,114,111,109,95,110,97,109,101,130,4,0, - 0,115,8,0,0,0,10,1,8,1,12,1,8,1,114,18, - 0,0,0,114,245,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,166,0, - 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, - 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, - 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, - 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, - 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, - 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, - 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, - 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, - 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, - 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, - 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, - 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, - 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, - 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, - 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, - 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, - 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, - 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, - 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, - 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, - 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, - 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, - 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, - 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, - 10,10,32,32,32,32,41,3,114,27,0,0,0,114,102,0, - 0,0,114,72,0,0,0,78,41,15,114,65,0,0,0,114, - 19,0,0,0,114,3,0,0,0,114,106,0,0,0,218,5, - 105,116,101,109,115,114,217,0,0,0,114,87,0,0,0,114, - 176,0,0,0,114,99,0,0,0,114,194,0,0,0,114,156, - 0,0,0,114,162,0,0,0,114,9,0,0,0,114,245,0, - 0,0,114,12,0,0,0,41,10,218,10,115,121,115,95,109, - 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, - 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, - 21,0,0,0,114,111,0,0,0,114,123,0,0,0,114,110, - 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, - 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,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, - 115,101,116,117,112,137,4,0,0,115,40,0,0,0,4,9, - 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, - 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, - 10,2,14,1,4,251,114,18,0,0,0,114,249,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,38,0,0,0,116,0,124,0,124,1, - 131,2,1,0,116,1,106,2,160,3,116,4,161,1,1,0, - 116,1,106,2,160,3,116,5,161,1,1,0,100,1,83,0, - 41,2,122,48,73,110,115,116,97,108,108,32,105,109,112,111, - 114,116,101,114,115,32,102,111,114,32,98,117,105,108,116,105, - 110,32,97,110,100,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,78,41,6,114,249,0,0,0,114,19,0,0, - 0,114,215,0,0,0,114,133,0,0,0,114,176,0,0,0, - 114,194,0,0,0,41,2,114,247,0,0,0,114,248,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,8,95,105,110,115,116,97,108,108,172,4,0,0,115,6, - 0,0,0,10,2,12,2,16,1,114,18,0,0,0,114,250, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,32,0,0,0,100,1,100, - 2,108,0,125,0,124,0,97,1,124,0,160,2,116,3,106, - 4,116,5,25,0,161,1,1,0,100,2,83,0,41,3,122, - 57,73,110,115,116,97,108,108,32,105,109,112,111,114,116,101, - 114,115,32,116,104,97,116,32,114,101,113,117,105,114,101,32, - 101,120,116,101,114,110,97,108,32,102,105,108,101,115,121,115, - 116,101,109,32,97,99,99,101,115,115,114,26,0,0,0,78, - 41,6,218,26,95,102,114,111,122,101,110,95,105,109,112,111, - 114,116,108,105,98,95,101,120,116,101,114,110,97,108,114,140, - 0,0,0,114,250,0,0,0,114,19,0,0,0,114,106,0, - 0,0,114,9,0,0,0,41,1,114,251,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,27,95, - 105,110,115,116,97,108,108,95,101,120,116,101,114,110,97,108, - 95,105,109,112,111,114,116,101,114,115,180,4,0,0,115,6, - 0,0,0,8,3,4,1,20,1,114,18,0,0,0,114,252, - 0,0,0,114,191,0,0,0,114,0,0,0,0,114,25,0, - 0,0,41,4,78,78,114,5,0,0,0,114,26,0,0,0, - 41,54,114,10,0,0,0,114,7,0,0,0,114,27,0,0, - 0,114,102,0,0,0,114,72,0,0,0,114,140,0,0,0, - 114,17,0,0,0,114,22,0,0,0,114,67,0,0,0,114, - 38,0,0,0,114,48,0,0,0,114,23,0,0,0,114,24, - 0,0,0,114,56,0,0,0,114,58,0,0,0,114,61,0, - 0,0,114,73,0,0,0,114,75,0,0,0,114,84,0,0, - 0,114,96,0,0,0,114,101,0,0,0,114,112,0,0,0, - 114,125,0,0,0,114,126,0,0,0,114,105,0,0,0,114, - 156,0,0,0,114,162,0,0,0,114,166,0,0,0,114,120, - 0,0,0,114,107,0,0,0,114,173,0,0,0,114,174,0, - 0,0,114,108,0,0,0,114,176,0,0,0,114,194,0,0, - 0,114,201,0,0,0,114,212,0,0,0,114,214,0,0,0, - 114,216,0,0,0,114,222,0,0,0,90,15,95,69,82,82, - 95,77,83,71,95,80,82,69,70,73,88,114,224,0,0,0, - 114,227,0,0,0,218,6,111,98,106,101,99,116,114,228,0, - 0,0,114,229,0,0,0,114,230,0,0,0,114,235,0,0, - 0,114,241,0,0,0,114,244,0,0,0,114,245,0,0,0, - 114,249,0,0,0,114,250,0,0,0,114,252,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,8,60,109,111,100,117,108,101,62,1,0,0, - 0,115,104,0,0,0,4,0,8,22,4,9,4,1,4,1, - 4,3,8,3,8,8,4,8,4,2,16,3,14,4,14,77, - 14,21,8,16,8,37,8,17,14,11,8,8,8,11,8,12, - 8,19,14,26,16,101,10,26,14,45,8,72,8,17,8,17, - 8,30,8,36,8,45,14,15,14,80,14,85,8,13,8,9, - 10,10,8,47,4,16,8,1,8,2,6,32,8,3,10,16, - 14,15,8,37,10,27,8,37,8,7,8,35,12,8,114,18, - 0,0,0, + 97,99,107,97,103,101,114,190,0,0,0,114,0,0,0,0, + 41,17,114,8,0,0,0,114,7,0,0,0,114,1,0,0, + 0,114,9,0,0,0,114,151,0,0,0,114,191,0,0,0, + 114,114,0,0,0,114,192,0,0,0,114,183,0,0,0,114, + 184,0,0,0,114,162,0,0,0,114,163,0,0,0,114,170, + 0,0,0,114,100,0,0,0,114,187,0,0,0,114,189,0, + 0,0,114,128,0,0,0,114,23,0,0,0,114,5,0,0, + 0,114,193,0,0,0,36,3,0,0,115,48,0,0,0,8, + 0,4,2,4,7,2,2,10,1,2,10,12,1,2,6,12, + 1,2,11,10,1,2,3,10,1,2,8,10,1,2,9,2, + 1,12,1,2,4,2,1,12,1,2,4,2,1,16,1,114, + 17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111,114,116,76,111, + 99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,101, + 120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,116, + 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, + 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, + 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, + 46,78,41,2,114,65,0,0,0,114,66,0,0,0,114,53, + 0,0,0,32,114,5,0,0,0,114,62,0,0,0,125,3, + 0,0,243,2,0,0,0,12,2,114,17,0,0,0,122,28, + 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, + 120,116,46,95,95,101,110,116,101,114,95,95,99,4,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,67,0,0, + 0,114,201,0,0,0,41,2,122,60,82,101,108,101,97,115, + 101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, + 107,32,114,101,103,97,114,100,108,101,115,115,32,111,102,32, + 97,110,121,32,114,97,105,115,101,100,32,101,120,99,101,112, + 116,105,111,110,115,46,78,41,2,114,65,0,0,0,114,68, + 0,0,0,41,4,114,34,0,0,0,218,8,101,120,99,95, + 116,121,112,101,218,9,101,120,99,95,118,97,108,117,101,218, + 13,101,120,99,95,116,114,97,99,101,98,97,99,107,32,32, + 32,32,114,5,0,0,0,114,64,0,0,0,129,3,0,0, + 114,202,0,0,0,114,17,0,0,0,122,27,95,73,109,112, + 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, + 95,101,120,105,116,95,95,78,41,6,114,8,0,0,0,114, + 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,62, + 0,0,0,114,64,0,0,0,114,23,0,0,0,114,5,0, + 0,0,114,200,0,0,0,121,3,0,0,115,8,0,0,0, + 8,0,4,2,8,2,12,4,114,17,0,0,0,114,200,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,67,0,0,0,115,64,0,0,0,124,1,160,0, + 100,1,124,2,100,2,24,0,161,2,125,3,116,1,124,3, + 131,1,124,2,107,0,114,18,116,2,100,3,131,1,130,1, + 124,3,100,4,25,0,125,4,124,0,114,30,100,5,160,3, + 124,4,124,0,161,2,83,0,124,4,83,0,41,7,122,50, + 82,101,115,111,108,118,101,32,97,32,114,101,108,97,116,105, + 118,101,32,109,111,100,117,108,101,32,110,97,109,101,32,116, + 111,32,97,110,32,97,98,115,111,108,117,116,101,32,111,110, + 101,46,114,141,0,0,0,114,43,0,0,0,122,50,97,116, + 116,101,109,112,116,101,100,32,114,101,108,97,116,105,118,101, + 32,105,109,112,111,114,116,32,98,101,121,111,110,100,32,116, + 111,112,45,108,101,118,101,108,32,112,97,99,107,97,103,101, + 114,26,0,0,0,250,5,123,125,46,123,125,78,41,4,218, + 6,114,115,112,108,105,116,218,3,108,101,110,114,88,0,0, + 0,114,51,0,0,0,41,5,114,20,0,0,0,218,7,112, + 97,99,107,97,103,101,218,5,108,101,118,101,108,90,4,98, + 105,116,115,90,4,98,97,115,101,32,32,32,32,32,114,5, + 0,0,0,218,13,95,114,101,115,111,108,118,101,95,110,97, + 109,101,134,3,0,0,115,10,0,0,0,16,2,12,1,8, + 1,8,1,20,1,114,17,0,0,0,114,211,0,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,60,0,0,0,116,0,124,0,131,1,155, + 0,100,1,157,2,125,3,116,1,160,2,124,3,116,3,161, + 2,1,0,124,0,160,4,124,1,124,2,161,2,125,4,124, + 4,100,0,117,0,114,25,100,0,83,0,116,5,124,1,124, + 4,131,2,83,0,41,2,78,122,53,46,102,105,110,100,95, + 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, + 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, + 111,32,102,105,110,100,95,109,111,100,117,108,101,40,41,41, + 6,114,6,0,0,0,114,101,0,0,0,114,102,0,0,0, + 114,169,0,0,0,114,184,0,0,0,114,104,0,0,0,41, + 5,218,6,102,105,110,100,101,114,114,20,0,0,0,114,181, + 0,0,0,114,108,0,0,0,114,122,0,0,0,32,32,32, + 32,32,114,5,0,0,0,218,17,95,102,105,110,100,95,115, + 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, + 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, + 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,10,0,0,0,67,0,0,0,115,30, + 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, + 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, + 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, + 0,125,4,124,3,68,0,93,112,125,5,116,7,131,0,53, + 0,1,0,9,0,124,5,106,8,125,6,110,27,35,0,4, + 0,116,9,121,142,1,0,1,0,1,0,116,10,124,5,124, + 0,124,1,131,3,125,7,124,7,100,1,117,0,114,61,89, + 0,100,1,4,0,4,0,131,3,1,0,113,26,89,0,110, + 7,37,0,124,6,124,0,124,1,124,2,131,3,125,7,100, + 1,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, + 81,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,7,100,1,117,1,114,138,124,4,115,134,124,0,116, + 0,106,6,118,0,114,134,116,0,106,6,124,0,25,0,125, + 8,9,0,124,8,106,11,125,9,110,14,35,0,4,0,116, + 9,121,141,1,0,1,0,1,0,124,7,6,0,89,0,2, + 0,1,0,83,0,37,0,124,9,100,1,117,0,114,130,124, + 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, + 7,2,0,1,0,83,0,113,26,100,1,83,0,119,0,119, + 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, + 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, + 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, + 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, + 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, + 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, + 104,32,105,115,32,101,109,112,116,121,41,12,114,18,0,0, + 0,218,9,109,101,116,97,95,112,97,116,104,114,88,0,0, + 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, + 114,105,0,0,0,114,200,0,0,0,114,183,0,0,0,114, + 2,0,0,0,114,213,0,0,0,114,113,0,0,0,41,10, + 114,20,0,0,0,114,181,0,0,0,114,182,0,0,0,114, + 214,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, + 212,0,0,0,114,183,0,0,0,114,109,0,0,0,114,110, + 0,0,0,114,113,0,0,0,32,32,32,32,32,32,32,32, + 32,32,114,5,0,0,0,218,10,95,102,105,110,100,95,115, + 112,101,99,153,3,0,0,115,76,0,0,0,6,2,8,1, + 8,2,4,3,12,1,10,5,8,1,8,1,2,1,8,1, + 2,128,12,1,12,1,8,1,2,1,12,250,4,5,2,128, + 12,3,12,248,22,128,8,9,14,2,10,1,2,1,8,1, + 2,128,12,1,12,4,2,128,8,2,8,1,8,2,8,2, + 2,239,4,19,2,243,2,244,115,63,0,0,0,159,1,65, + 12,5,161,3,37,4,164,1,65,12,5,165,17,63,11,182, + 1,65,12,5,189,9,65,12,5,193,12,4,65,16,13,193, + 17,3,65,16,13,193,40,3,65,44,2,193,44,9,65,57, + 9,194,13,1,65,57,9,194,14,1,63,11,114,215,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,67,0,0,0,115,110,0,0,0,116,0,124,0,116, + 1,131,2,115,14,116,2,100,1,160,3,116,4,124,0,131, + 1,161,1,131,1,130,1,124,2,100,2,107,0,114,22,116, + 5,100,3,131,1,130,1,124,2,100,2,107,4,114,41,116, + 0,124,1,116,1,131,2,115,35,116,2,100,4,131,1,130, + 1,124,1,115,41,116,6,100,5,131,1,130,1,124,0,115, + 53,124,2,100,2,107,2,114,51,116,5,100,6,131,1,130, + 1,100,7,83,0,100,7,83,0,41,8,122,28,86,101,114, + 105,102,121,32,97,114,103,117,109,101,110,116,115,32,97,114, + 101,32,34,115,97,110,101,34,46,122,31,109,111,100,117,108, + 101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,115, + 116,114,44,32,110,111,116,32,123,125,114,26,0,0,0,122, + 18,108,101,118,101,108,32,109,117,115,116,32,98,101,32,62, + 61,32,48,122,31,95,95,112,97,99,107,97,103,101,95,95, + 32,110,111,116,32,115,101,116,32,116,111,32,97,32,115,116, + 114,105,110,103,122,54,97,116,116,101,109,112,116,101,100,32, + 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,32, + 119,105,116,104,32,110,111,32,107,110,111,119,110,32,112,97, + 114,101,110,116,32,112,97,99,107,97,103,101,122,17,69,109, + 112,116,121,32,109,111,100,117,108,101,32,110,97,109,101,78, + 41,7,218,10,105,115,105,110,115,116,97,110,99,101,218,3, + 115,116,114,218,9,84,121,112,101,69,114,114,111,114,114,51, + 0,0,0,114,3,0,0,0,218,10,86,97,108,117,101,69, + 114,114,111,114,114,88,0,0,0,169,3,114,20,0,0,0, + 114,209,0,0,0,114,210,0,0,0,32,32,32,114,5,0, + 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, + 107,200,3,0,0,115,24,0,0,0,10,2,18,1,8,1, + 8,1,8,1,10,1,8,1,4,1,8,1,12,2,8,1, + 8,255,114,17,0,0,0,114,221,0,0,0,122,16,78,111, + 32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,4, + 123,33,114,125,99,2,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,67,0,0,0,115,20,1,0,0,100,0, + 125,2,124,0,160,0,100,1,161,1,100,2,25,0,125,3, + 124,3,114,64,124,3,116,1,106,2,118,1,114,21,116,3, + 124,1,124,3,131,2,1,0,124,0,116,1,106,2,118,0, + 114,31,116,1,106,2,124,0,25,0,83,0,116,1,106,2, + 124,3,25,0,125,4,9,0,124,4,106,4,125,2,110,23, + 35,0,4,0,116,5,121,137,1,0,1,0,1,0,116,6, + 100,3,23,0,160,7,124,0,124,3,161,2,125,5,116,8, + 124,5,124,0,100,4,141,2,100,0,130,2,37,0,116,9, + 124,0,124,2,131,2,125,6,124,6,100,0,117,0,114,82, + 116,8,116,6,160,7,124,0,161,1,124,0,100,4,141,2, + 130,1,116,10,124,6,131,1,125,7,124,3,114,134,116,1, + 106,2,124,3,25,0,125,4,124,0,160,0,100,1,161,1, + 100,5,25,0,125,8,9,0,116,11,124,4,124,8,124,7, + 131,3,1,0,124,7,83,0,35,0,4,0,116,5,121,136, + 1,0,1,0,1,0,100,6,124,3,155,2,100,7,124,8, + 155,2,157,4,125,5,116,12,160,13,124,5,116,14,161,2, + 1,0,89,0,124,7,83,0,37,0,124,7,83,0,119,0, + 119,0,41,8,78,114,141,0,0,0,114,26,0,0,0,122, + 23,59,32,123,33,114,125,32,105,115,32,110,111,116,32,97, + 32,112,97,99,107,97,103,101,114,19,0,0,0,233,2,0, + 0,0,122,27,67,97,110,110,111,116,32,115,101,116,32,97, + 110,32,97,116,116,114,105,98,117,116,101,32,111,110,32,122, + 18,32,102,111,114,32,99,104,105,108,100,32,109,111,100,117, + 108,101,32,41,15,114,142,0,0,0,114,18,0,0,0,114, + 105,0,0,0,114,75,0,0,0,114,154,0,0,0,114,2, + 0,0,0,218,8,95,69,82,82,95,77,83,71,114,51,0, + 0,0,218,19,77,111,100,117,108,101,78,111,116,70,111,117, + 110,100,69,114,114,111,114,114,215,0,0,0,114,173,0,0, + 0,114,11,0,0,0,114,101,0,0,0,114,102,0,0,0, + 114,169,0,0,0,41,9,114,20,0,0,0,218,7,105,109, + 112,111,114,116,95,114,181,0,0,0,114,143,0,0,0,90, + 13,112,97,114,101,110,116,95,109,111,100,117,108,101,114,108, + 0,0,0,114,109,0,0,0,114,110,0,0,0,90,5,99, + 104,105,108,100,32,32,32,32,32,32,32,32,32,114,5,0, + 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, + 97,100,95,117,110,108,111,99,107,101,100,219,3,0,0,115, + 68,0,0,0,4,1,14,1,4,1,10,1,10,1,10,2, + 10,1,10,1,2,1,8,1,2,128,12,1,16,1,14,1, + 2,128,10,1,8,1,18,1,8,2,4,1,10,2,14,1, + 2,1,12,1,4,4,2,128,12,253,16,1,14,1,4,1, + 2,128,4,0,2,253,2,242,115,31,0,0,0,165,3,41, + 0,169,22,63,7,193,37,6,65,45,0,193,45,21,66,5, + 7,194,8,1,66,5,7,194,9,1,63,7,114,226,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,9,0, + 0,0,67,0,0,0,115,132,0,0,0,116,0,124,0,131, + 1,53,0,1,0,116,1,106,2,160,3,124,0,116,4,161, + 2,125,2,124,2,116,4,117,0,114,27,116,5,124,0,124, + 1,131,2,2,0,100,1,4,0,4,0,131,3,1,0,83, + 0,9,0,100,1,4,0,4,0,131,3,1,0,110,11,35, + 0,49,0,115,39,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,124,2,100,1,117,0,114,60,100,2,160, + 6,124,0,161,1,125,3,116,7,124,3,124,0,100,3,141, + 2,130,1,116,8,124,0,131,1,1,0,124,2,83,0,41, + 4,122,25,70,105,110,100,32,97,110,100,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,46,78,122,40,105, + 109,112,111,114,116,32,111,102,32,123,125,32,104,97,108,116, + 101,100,59,32,78,111,110,101,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,114,19,0,0,0,41,9,114,58, + 0,0,0,114,18,0,0,0,114,105,0,0,0,114,39,0, + 0,0,218,14,95,78,69,69,68,83,95,76,79,65,68,73, + 78,71,114,226,0,0,0,114,51,0,0,0,114,224,0,0, + 0,114,73,0,0,0,41,4,114,20,0,0,0,114,225,0, + 0,0,114,110,0,0,0,114,83,0,0,0,32,32,32,32, + 114,5,0,0,0,218,14,95,102,105,110,100,95,97,110,100, + 95,108,111,97,100,254,3,0,0,115,30,0,0,0,10,2, + 14,1,8,1,8,1,14,253,2,2,12,254,22,128,8,5, + 2,1,6,1,2,255,12,2,8,2,4,1,115,12,0,0, + 0,132,16,34,3,162,4,38,11,167,3,38,11,114,228,0, + 0,0,114,26,0,0,0,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, + 0,116,0,124,0,124,1,124,2,131,3,1,0,124,2,100, + 1,107,4,114,16,116,1,124,0,124,1,124,2,131,3,125, + 0,116,2,124,0,116,3,131,2,83,0,41,3,97,50,1, + 0,0,73,109,112,111,114,116,32,97,110,100,32,114,101,116, + 117,114,110,32,116,104,101,32,109,111,100,117,108,101,32,98, + 97,115,101,100,32,111,110,32,105,116,115,32,110,97,109,101, + 44,32,116,104,101,32,112,97,99,107,97,103,101,32,116,104, + 101,32,99,97,108,108,32,105,115,10,32,32,32,32,98,101, + 105,110,103,32,109,97,100,101,32,102,114,111,109,44,32,97, + 110,100,32,116,104,101,32,108,101,118,101,108,32,97,100,106, + 117,115,116,109,101,110,116,46,10,10,32,32,32,32,84,104, + 105,115,32,102,117,110,99,116,105,111,110,32,114,101,112,114, + 101,115,101,110,116,115,32,116,104,101,32,103,114,101,97,116, + 101,115,116,32,99,111,109,109,111,110,32,100,101,110,111,109, + 105,110,97,116,111,114,32,111,102,32,102,117,110,99,116,105, + 111,110,97,108,105,116,121,10,32,32,32,32,98,101,116,119, + 101,101,110,32,105,109,112,111,114,116,95,109,111,100,117,108, + 101,32,97,110,100,32,95,95,105,109,112,111,114,116,95,95, + 46,32,84,104,105,115,32,105,110,99,108,117,100,101,115,32, + 115,101,116,116,105,110,103,32,95,95,112,97,99,107,97,103, + 101,95,95,32,105,102,10,32,32,32,32,116,104,101,32,108, + 111,97,100,101,114,32,100,105,100,32,110,111,116,46,10,10, + 32,32,32,32,114,26,0,0,0,78,41,4,114,221,0,0, + 0,114,211,0,0,0,114,228,0,0,0,218,11,95,103,99, + 100,95,105,109,112,111,114,116,114,220,0,0,0,32,32,32, + 114,5,0,0,0,114,229,0,0,0,14,4,0,0,115,8, + 0,0,0,12,9,8,1,12,1,10,1,114,17,0,0,0, + 114,229,0,0,0,169,1,218,9,114,101,99,117,114,115,105, + 118,101,99,3,0,0,0,0,0,0,0,1,0,0,0,9, + 0,0,0,67,0,0,0,115,216,0,0,0,124,1,68,0, + 93,102,125,4,116,0,124,4,116,1,131,2,115,32,124,3, + 114,17,124,0,106,2,100,1,23,0,125,5,110,2,100,2, + 125,5,116,3,100,3,124,5,155,0,100,4,116,4,124,4, + 131,1,106,2,155,0,157,4,131,1,130,1,124,4,100,5, + 107,2,114,53,124,3,115,52,116,5,124,0,100,6,131,2, + 114,52,116,6,124,0,124,0,106,7,124,2,100,7,100,8, + 141,4,1,0,113,2,116,5,124,0,124,4,131,2,115,104, + 100,9,160,8,124,0,106,2,124,4,161,2,125,6,9,0, + 116,9,124,2,124,6,131,2,1,0,113,2,35,0,4,0, + 116,10,121,107,1,0,125,7,1,0,124,7,106,11,124,6, + 107,2,114,98,116,12,106,13,160,14,124,6,116,15,161,2, + 100,10,117,1,114,98,89,0,100,10,125,7,126,7,113,2, + 130,0,100,10,125,7,126,7,119,1,37,0,113,2,124,0, + 83,0,119,0,41,11,122,238,70,105,103,117,114,101,32,111, + 117,116,32,119,104,97,116,32,95,95,105,109,112,111,114,116, + 95,95,32,115,104,111,117,108,100,32,114,101,116,117,114,110, + 46,10,10,32,32,32,32,84,104,101,32,105,109,112,111,114, + 116,95,32,112,97,114,97,109,101,116,101,114,32,105,115,32, + 97,32,99,97,108,108,97,98,108,101,32,119,104,105,99,104, + 32,116,97,107,101,115,32,116,104,101,32,110,97,109,101,32, + 111,102,32,109,111,100,117,108,101,32,116,111,10,32,32,32, + 32,105,109,112,111,114,116,46,32,73,116,32,105,115,32,114, + 101,113,117,105,114,101,100,32,116,111,32,100,101,99,111,117, + 112,108,101,32,116,104,101,32,102,117,110,99,116,105,111,110, + 32,102,114,111,109,32,97,115,115,117,109,105,110,103,32,105, + 109,112,111,114,116,108,105,98,39,115,10,32,32,32,32,105, + 109,112,111,114,116,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,105,115,32,100,101,115,105,114,101,100,46, + 10,10,32,32,32,32,122,8,46,95,95,97,108,108,95,95, + 122,13,96,96,102,114,111,109,32,108,105,115,116,39,39,122, + 8,73,116,101,109,32,105,110,32,122,18,32,109,117,115,116, + 32,98,101,32,115,116,114,44,32,110,111,116,32,250,1,42, + 218,7,95,95,97,108,108,95,95,84,114,230,0,0,0,114, + 206,0,0,0,78,41,16,114,216,0,0,0,114,217,0,0, + 0,114,8,0,0,0,114,218,0,0,0,114,3,0,0,0, + 114,10,0,0,0,218,16,95,104,97,110,100,108,101,95,102, + 114,111,109,108,105,115,116,114,233,0,0,0,114,51,0,0, + 0,114,75,0,0,0,114,224,0,0,0,114,20,0,0,0, + 114,18,0,0,0,114,105,0,0,0,114,39,0,0,0,114, + 227,0,0,0,41,8,114,110,0,0,0,218,8,102,114,111, + 109,108,105,115,116,114,225,0,0,0,114,231,0,0,0,218, + 1,120,90,5,119,104,101,114,101,90,9,102,114,111,109,95, + 110,97,109,101,90,3,101,120,99,32,32,32,32,32,32,32, + 32,114,5,0,0,0,114,234,0,0,0,29,4,0,0,115, + 58,0,0,0,8,10,10,1,4,1,12,1,4,2,10,1, + 8,1,8,255,8,2,14,1,10,1,2,1,6,255,2,128, + 10,2,14,1,2,1,12,1,2,128,12,1,10,4,16,1, + 2,255,10,2,2,1,10,128,2,245,4,12,2,248,115,36, + 0,0,0,193,2,5,65,8,2,193,8,7,65,39,9,193, + 15,14,65,35,9,193,34,1,65,35,9,193,35,4,65,39, + 9,193,43,1,65,39,9,114,234,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,7,0,0,0,67,0,0, + 0,115,146,0,0,0,124,0,160,0,100,1,161,1,125,1, + 124,0,160,0,100,2,161,1,125,2,124,1,100,3,117,1, + 114,41,124,2,100,3,117,1,114,39,124,1,124,2,106,1, + 107,3,114,39,116,2,160,3,100,4,124,1,155,2,100,5, + 124,2,106,1,155,2,100,6,157,5,116,4,100,7,100,8, + 166,3,1,0,124,1,83,0,124,2,100,3,117,1,114,48, + 124,2,106,1,83,0,116,2,160,3,100,9,116,4,100,7, + 100,8,166,3,1,0,124,0,100,10,25,0,125,1,100,11, + 124,0,118,1,114,71,124,1,160,5,100,12,161,1,100,13, + 25,0,125,1,124,1,83,0,41,14,122,167,67,97,108,99, + 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, + 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, + 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, + 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, + 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, + 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, + 101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,116, + 111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,116, + 32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,117, + 101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,32, + 32,32,32,114,158,0,0,0,114,113,0,0,0,78,122,32, + 95,95,112,97,99,107,97,103,101,95,95,32,33,61,32,95, + 95,115,112,101,99,95,95,46,112,97,114,101,110,116,32,40, + 122,4,32,33,61,32,250,1,41,233,3,0,0,0,41,1, + 90,10,115,116,97,99,107,108,101,118,101,108,122,89,99,97, + 110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,107, + 97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,95, + 95,32,111,114,32,95,95,112,97,99,107,97,103,101,95,95, + 44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,111, + 110,32,95,95,110,97,109,101,95,95,32,97,110,100,32,95, + 95,112,97,116,104,95,95,114,8,0,0,0,114,154,0,0, + 0,114,141,0,0,0,114,26,0,0,0,41,6,114,39,0, + 0,0,114,143,0,0,0,114,101,0,0,0,114,102,0,0, + 0,114,169,0,0,0,114,142,0,0,0,41,3,218,7,103, + 108,111,98,97,108,115,114,209,0,0,0,114,109,0,0,0, + 32,32,32,114,5,0,0,0,218,17,95,99,97,108,99,95, + 95,95,112,97,99,107,97,103,101,95,95,66,4,0,0,115, + 42,0,0,0,10,7,10,1,8,1,18,1,6,1,2,1, + 4,255,4,1,6,255,4,2,6,254,4,3,8,1,6,1, + 6,2,4,2,6,254,8,3,8,1,14,1,4,1,114,17, + 0,0,0,114,240,0,0,0,114,23,0,0,0,99,5,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, + 0,0,115,174,0,0,0,124,4,100,1,107,2,114,9,116, + 0,124,0,131,1,125,5,110,18,124,1,100,2,117,1,114, + 15,124,1,110,1,105,0,125,6,116,1,124,6,131,1,125, + 7,116,0,124,0,124,7,124,4,131,3,125,5,124,3,115, + 74,124,4,100,1,107,2,114,42,116,0,124,0,160,2,100, + 3,161,1,100,1,25,0,131,1,83,0,124,0,115,46,124, + 5,83,0,116,3,124,0,131,1,116,3,124,0,160,2,100, + 3,161,1,100,1,25,0,131,1,24,0,125,8,116,4,106, + 5,124,5,106,6,100,2,116,3,124,5,106,6,131,1,124, + 8,24,0,133,2,25,0,25,0,83,0,116,7,124,5,100, + 4,131,2,114,85,116,8,124,5,124,3,116,0,131,3,83, + 0,124,5,83,0,41,5,97,215,1,0,0,73,109,112,111, + 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, + 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, + 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, + 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, + 99,117,114,114,105,110,103,32,102,114,111,109,10,32,32,32, + 32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,116, + 105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,101, + 32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,101, + 110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,84, + 104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,116, + 39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,105, + 102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,100, + 32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,98, + 117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,117, + 108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,112, + 111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,114, + 111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,116, + 32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,32, + 32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,32, + 32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,115, + 101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,101, + 32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,112, + 111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,101, + 108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,114, + 116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,46, + 46,112,107,103,32,105,109,112,111,114,116,32,109,111,100,96, + 96,32,119,111,117,108,100,32,104,97,118,101,32,97,32,39, + 108,101,118,101,108,39,32,111,102,32,50,41,46,10,10,32, + 32,32,32,114,26,0,0,0,78,114,141,0,0,0,114,154, + 0,0,0,41,9,114,229,0,0,0,114,240,0,0,0,218, + 9,112,97,114,116,105,116,105,111,110,114,208,0,0,0,114, + 18,0,0,0,114,105,0,0,0,114,8,0,0,0,114,10, + 0,0,0,114,234,0,0,0,41,9,114,20,0,0,0,114, + 239,0,0,0,218,6,108,111,99,97,108,115,114,235,0,0, + 0,114,210,0,0,0,114,110,0,0,0,90,8,103,108,111, + 98,97,108,115,95,114,209,0,0,0,90,7,99,117,116,95, + 111,102,102,32,32,32,32,32,32,32,32,32,114,5,0,0, + 0,218,10,95,95,105,109,112,111,114,116,95,95,93,4,0, + 0,115,30,0,0,0,8,11,10,1,16,2,8,1,12,1, + 4,1,8,3,18,1,4,1,4,1,26,4,30,3,10,1, + 12,1,4,2,114,17,0,0,0,114,243,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, + 0,0,0,115,38,0,0,0,116,0,160,1,124,0,161,1, + 125,1,124,1,100,0,117,0,114,15,116,2,100,1,124,0, + 23,0,131,1,130,1,116,3,124,1,131,1,83,0,41,2, + 78,122,25,110,111,32,98,117,105,108,116,45,105,110,32,109, + 111,100,117,108,101,32,110,97,109,101,100,32,41,4,114,175, + 0,0,0,114,183,0,0,0,114,88,0,0,0,114,173,0, + 0,0,41,2,114,20,0,0,0,114,109,0,0,0,32,32, + 114,5,0,0,0,218,18,95,98,117,105,108,116,105,110,95, + 102,114,111,109,95,110,97,109,101,130,4,0,0,115,8,0, + 0,0,10,1,8,1,12,1,8,1,114,17,0,0,0,114, + 244,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,67,0,0,0,115,166,0,0,0,124,1, + 97,0,124,0,97,1,116,2,116,1,131,1,125,2,116,1, + 106,3,160,4,161,0,68,0,93,36,92,2,125,3,125,4, + 116,5,124,4,124,2,131,2,114,49,124,3,116,1,106,6, + 118,0,114,30,116,7,125,5,110,9,116,0,160,8,124,3, + 161,1,114,38,116,9,125,5,110,1,113,13,116,10,124,4, + 124,5,131,2,125,6,116,11,124,6,124,4,131,2,1,0, + 113,13,116,1,106,3,116,12,25,0,125,7,100,1,68,0, + 93,23,125,8,124,8,116,1,106,3,118,1,114,69,116,13, + 124,8,131,1,125,9,110,5,116,1,106,3,124,8,25,0, + 125,9,116,14,124,7,124,8,124,9,131,3,1,0,113,57, + 100,2,83,0,41,3,122,250,83,101,116,117,112,32,105,109, + 112,111,114,116,108,105,98,32,98,121,32,105,109,112,111,114, + 116,105,110,103,32,110,101,101,100,101,100,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,115,32,97,110,100, + 32,105,110,106,101,99,116,105,110,103,32,116,104,101,109,10, + 32,32,32,32,105,110,116,111,32,116,104,101,32,103,108,111, + 98,97,108,32,110,97,109,101,115,112,97,99,101,46,10,10, + 32,32,32,32,65,115,32,115,121,115,32,105,115,32,110,101, + 101,100,101,100,32,102,111,114,32,115,121,115,46,109,111,100, + 117,108,101,115,32,97,99,99,101,115,115,32,97,110,100,32, + 95,105,109,112,32,105,115,32,110,101,101,100,101,100,32,116, + 111,32,108,111,97,100,32,98,117,105,108,116,45,105,110,10, + 32,32,32,32,109,111,100,117,108,101,115,44,32,116,104,111, + 115,101,32,116,119,111,32,109,111,100,117,108,101,115,32,109, + 117,115,116,32,98,101,32,101,120,112,108,105,99,105,116,108, + 121,32,112,97,115,115,101,100,32,105,110,46,10,10,32,32, + 32,32,41,3,114,27,0,0,0,114,101,0,0,0,114,72, + 0,0,0,78,41,15,114,65,0,0,0,114,18,0,0,0, + 114,3,0,0,0,114,105,0,0,0,218,5,105,116,101,109, + 115,114,216,0,0,0,114,87,0,0,0,114,175,0,0,0, + 114,98,0,0,0,114,193,0,0,0,114,155,0,0,0,114, + 161,0,0,0,114,8,0,0,0,114,244,0,0,0,114,11, + 0,0,0,41,10,218,10,115,121,115,95,109,111,100,117,108, + 101,218,11,95,105,109,112,95,109,111,100,117,108,101,90,11, + 109,111,100,117,108,101,95,116,121,112,101,114,20,0,0,0, + 114,110,0,0,0,114,122,0,0,0,114,109,0,0,0,90, + 11,115,101,108,102,95,109,111,100,117,108,101,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,32,32,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,6,95,115,101,116,117, + 112,137,4,0,0,115,40,0,0,0,4,9,4,1,8,3, + 18,1,10,1,10,1,6,1,10,1,6,1,2,2,10,1, + 10,1,2,128,10,3,8,1,10,1,10,1,10,2,14,1, + 4,251,114,17,0,0,0,114,248,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, + 0,115,38,0,0,0,116,0,124,0,124,1,131,2,1,0, + 116,1,106,2,160,3,116,4,161,1,1,0,116,1,106,2, + 160,3,116,5,161,1,1,0,100,1,83,0,41,2,122,48, + 73,110,115,116,97,108,108,32,105,109,112,111,114,116,101,114, + 115,32,102,111,114,32,98,117,105,108,116,105,110,32,97,110, + 100,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, + 78,41,6,114,248,0,0,0,114,18,0,0,0,114,214,0, + 0,0,114,132,0,0,0,114,175,0,0,0,114,193,0,0, + 0,41,2,114,246,0,0,0,114,247,0,0,0,32,32,114, + 5,0,0,0,218,8,95,105,110,115,116,97,108,108,172,4, + 0,0,115,6,0,0,0,10,2,12,2,16,1,114,17,0, + 0,0,114,249,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,32,0,0, + 0,100,1,100,2,108,0,125,0,124,0,97,1,124,0,160, + 2,116,3,106,4,116,5,25,0,161,1,1,0,100,2,83, + 0,41,3,122,57,73,110,115,116,97,108,108,32,105,109,112, + 111,114,116,101,114,115,32,116,104,97,116,32,114,101,113,117, + 105,114,101,32,101,120,116,101,114,110,97,108,32,102,105,108, + 101,115,121,115,116,101,109,32,97,99,99,101,115,115,114,26, + 0,0,0,78,41,6,218,26,95,102,114,111,122,101,110,95, + 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110, + 97,108,114,139,0,0,0,114,249,0,0,0,114,18,0,0, + 0,114,105,0,0,0,114,8,0,0,0,41,1,114,250,0, + 0,0,32,114,5,0,0,0,218,27,95,105,110,115,116,97, + 108,108,95,101,120,116,101,114,110,97,108,95,105,109,112,111, + 114,116,101,114,115,180,4,0,0,115,6,0,0,0,8,3, + 4,1,20,1,114,17,0,0,0,114,251,0,0,0,114,190, + 0,0,0,114,0,0,0,0,114,25,0,0,0,41,4,78, + 78,114,23,0,0,0,114,26,0,0,0,41,54,114,9,0, + 0,0,114,6,0,0,0,114,27,0,0,0,114,101,0,0, + 0,114,72,0,0,0,114,139,0,0,0,114,16,0,0,0, + 114,21,0,0,0,114,67,0,0,0,114,38,0,0,0,114, + 48,0,0,0,114,22,0,0,0,114,24,0,0,0,114,56, + 0,0,0,114,58,0,0,0,114,61,0,0,0,114,73,0, + 0,0,114,75,0,0,0,114,84,0,0,0,114,95,0,0, + 0,114,100,0,0,0,114,111,0,0,0,114,124,0,0,0, + 114,125,0,0,0,114,104,0,0,0,114,155,0,0,0,114, + 161,0,0,0,114,165,0,0,0,114,119,0,0,0,114,106, + 0,0,0,114,172,0,0,0,114,173,0,0,0,114,107,0, + 0,0,114,175,0,0,0,114,193,0,0,0,114,200,0,0, + 0,114,211,0,0,0,114,213,0,0,0,114,215,0,0,0, + 114,221,0,0,0,90,15,95,69,82,82,95,77,83,71,95, + 80,82,69,70,73,88,114,223,0,0,0,114,226,0,0,0, + 218,6,111,98,106,101,99,116,114,227,0,0,0,114,228,0, + 0,0,114,229,0,0,0,114,234,0,0,0,114,240,0,0, + 0,114,243,0,0,0,114,244,0,0,0,114,248,0,0,0, + 114,249,0,0,0,114,251,0,0,0,114,23,0,0,0,114, + 5,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,104,0,0,0,4,0,8,22,4,9,4,1,4, + 1,4,3,8,3,8,8,4,8,4,2,16,3,14,4,14, + 77,14,21,8,16,8,37,8,17,14,11,8,8,8,11,8, + 12,8,19,14,26,16,101,10,26,14,45,8,72,8,17,8, + 17,8,30,8,36,8,45,14,15,14,80,14,85,8,13,8, + 9,10,10,8,47,4,16,8,1,8,2,6,32,8,3,10, + 16,14,15,8,37,10,27,8,37,8,7,8,35,12,8,114, + 17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 07a42a7dca61e3..69dc6cad421c1c 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -77,25 +77,24 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,28,0,0,0,129,0,124,0,93,9,125,1,116,0, 124,1,131,1,100,0,107,2,86,0,1,0,113,2,100,1, 83,0,41,2,233,1,0,0,0,78,41,1,218,3,108,101, - 110,41,2,218,2,46,48,218,3,115,101,112,169,0,114,7, - 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,46,0,0,0,115,4,0,0,0,6, - 128,22,0,243,0,0,0,0,114,9,0,0,0,218,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,22,0,0,0,104,0,124,0,93,7,125, - 1,100,0,124,1,155,0,157,2,146,2,113,2,83,0,41, - 1,250,1,58,114,7,0,0,0,41,2,114,5,0,0,0, - 218,1,115,114,7,0,0,0,114,7,0,0,0,114,8,0, + 110,41,2,218,2,46,48,218,3,115,101,112,32,32,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,46,0,0,0,115,4,0,0,0,6,128,22,0,243,0, + 0,0,0,114,8,0,0,0,218,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 22,0,0,0,104,0,124,0,93,7,125,1,100,0,124,1, + 155,0,157,2,146,2,113,2,83,0,41,1,250,1,58,169, + 0,41,2,114,5,0,0,0,218,1,115,32,32,114,7,0, 0,0,218,9,60,115,101,116,99,111,109,112,62,50,0,0, - 0,115,2,0,0,0,22,0,114,10,0,0,0,114,14,0, + 0,115,2,0,0,0,22,0,114,9,0,0,0,114,14,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,3,0,0,0,3,0,0,0, 115,62,0,0,0,116,0,106,1,160,2,116,3,161,1,114, 25,116,0,106,1,160,2,116,4,161,1,114,15,100,1,137, - 0,110,2,100,2,137,0,135,0,102,1,100,3,100,4,132, + 1,110,2,100,2,137,1,135,1,102,1,100,3,100,4,132, 8,125,0,124,0,83,0,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, @@ -111,1505 +110,1483 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,115,101,116,46,78,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,7,0,0,0,169,1,218,3,107, - 101,121,114,7,0,0,0,114,8,0,0,0,218,11,95,114, - 101,108,97,120,95,99,97,115,101,67,0,0,0,243,2,0, - 0,0,20,2,114,10,0,0,0,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,1,0,0, - 0,83,0,0,0,243,4,0,0,0,100,1,83,0,41,3, - 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,78,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,22,0,0,0,71,0,0,0,243,2,0,0,0, - 4,2,114,10,0,0,0,41,5,114,16,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,22,0,0,0,114,7,0, - 0,0,114,20,0,0,0,114,8,0,0,0,218,16,95,109, - 97,107,101,95,114,101,108,97,120,95,99,97,115,101,60,0, - 0,0,115,16,0,0,0,12,1,12,1,6,1,4,2,12, - 2,4,7,8,253,4,3,114,10,0,0,0,114,30,0,0, - 0,99,1,0,0,0,0,0,0,0,0,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, - 5,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,78,41,2,218,3,105,110,116,218,8,116, - 111,95,98,121,116,101,115,41,1,218,1,120,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,12,95,112,97, - 99,107,95,117,105,110,116,51,50,79,0,0,0,114,23,0, - 0,0,114,10,0,0,0,114,37,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,243,28,0,0,0,116,0,124,0,131,1,100,1,107,2, - 115,8,74,0,130,1,116,1,160,2,124,0,100,2,161,2, - 83,0,41,4,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,32,0,0,0,114,33,0,0,0,78, - 169,3,114,4,0,0,0,114,34,0,0,0,218,10,102,114, - 111,109,95,98,121,116,101,115,169,1,218,4,100,97,116,97, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 14,95,117,110,112,97,99,107,95,117,105,110,116,51,50,84, - 0,0,0,243,4,0,0,0,16,2,12,1,114,10,0,0, - 0,114,43,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,114,38,0,0,0, - 41,4,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,33,0,0,0,78,114,39, - 0,0,0,114,41,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,14,95,117,110,112,97,99,107, - 95,117,105,110,116,49,54,89,0,0,0,114,44,0,0,0, - 114,10,0,0,0,114,46,0,0,0,99,0,0,0,0,0, + 110,118,105,114,111,110,169,1,218,3,107,101,121,128,114,7, + 0,0,0,218,11,95,114,101,108,97,120,95,99,97,115,101, + 67,0,0,0,243,2,0,0,0,20,2,114,9,0,0,0, + 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,1,0,0,0,83,0,0,0,243,4,0,0, + 0,100,1,83,0,41,3,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,78, + 114,12,0,0,0,114,12,0,0,0,114,7,0,0,0,114, + 22,0,0,0,71,0,0,0,243,2,0,0,0,4,2,114, + 9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0,0,32, + 64,114,7,0,0,0,218,16,95,109,97,107,101,95,114,101, + 108,97,120,95,99,97,115,101,60,0,0,0,115,16,0,0, + 0,12,1,12,1,6,1,4,2,12,2,4,7,8,253,4, + 3,114,9,0,0,0,114,30,0,0,0,99,1,0,0,0, + 0,0,0,0,0,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,5,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,78, + 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101, + 115,41,1,218,1,120,32,114,7,0,0,0,218,12,95,112, + 97,99,107,95,117,105,110,116,51,50,79,0,0,0,114,23, + 0,0,0,114,9,0,0,0,114,37,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,243,28,0,0,0,116,0,124,0,131,1,100,1,107, + 2,115,8,74,0,130,1,116,1,160,2,124,0,100,2,161, + 2,83,0,41,4,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,32,0,0,0,114,33,0,0,0, + 78,169,3,114,4,0,0,0,114,34,0,0,0,218,10,102, + 114,111,109,95,98,121,116,101,115,169,1,218,4,100,97,116, + 97,32,114,7,0,0,0,218,14,95,117,110,112,97,99,107, + 95,117,105,110,116,51,50,84,0,0,0,243,4,0,0,0, + 16,2,12,1,114,9,0,0,0,114,43,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114,41,0,0,0, + 32,114,7,0,0,0,218,14,95,117,110,112,97,99,107,95, + 117,105,110,116,49,54,89,0,0,0,114,44,0,0,0,114, + 9,0,0,0,114,46,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,71,0,0,0,115,228, + 0,0,0,124,0,115,4,100,1,83,0,116,0,124,0,131, + 1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4,116, + 5,161,1,115,38,124,3,160,6,116,5,161,1,114,51,124, + 3,160,7,116,8,161,1,112,44,124,1,125,1,116,9,124, + 4,23,0,103,1,125,2,113,24,124,3,160,6,100,4,161, + 1,114,76,124,1,160,10,161,0,124,3,160,10,161,0,107, + 3,114,70,124,3,125,1,124,4,103,1,125,2,113,24,124, + 2,160,11,124,4,161,1,1,0,113,24,124,3,112,79,124, + 1,125,1,124,2,160,11,124,4,161,1,1,0,113,24,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,107,124,2,100,3,25,0,115, + 107,124,1,116,9,23,0,83,0,124,1,116,9,160,12,124, + 2,161,1,23,0,83,0,41,8,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,10,0,0,0,114, + 3,0,0,0,114,0,0,0,0,114,11,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,83, + 0,0,0,243,26,0,0,0,103,0,124,0,93,9,125,1, + 124,1,114,2,124,1,160,0,116,1,161,1,145,2,113,2, + 83,0,114,12,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,41,2,114,5,0,0,0,218,1,112,32,32,114,7, + 0,0,0,218,10,60,108,105,115,116,99,111,109,112,62,119, + 0,0,0,115,2,0,0,0,26,0,114,9,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,78, + 41,13,114,4,0,0,0,218,3,109,97,112,114,19,0,0, + 0,218,15,95,112,97,116,104,95,115,112,108,105,116,114,111, + 111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32,114,7,0,0, + 0,218,10,95,112,97,116,104,95,106,111,105,110,96,0,0, + 0,115,42,0,0,0,4,2,4,1,12,1,8,1,4,1, + 4,1,20,1,20,1,14,1,12,1,10,1,16,1,4,3, + 8,1,12,2,8,2,12,1,14,1,20,1,8,2,14,1, + 114,9,0,0,0,114,67,0,0,0,99,0,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,71,0,0,0,115, - 228,0,0,0,124,0,115,4,100,1,83,0,116,0,124,0, - 131,1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4, - 116,5,161,1,115,38,124,3,160,6,116,5,161,1,114,51, - 124,3,160,7,116,8,161,1,112,44,124,1,125,1,116,9, - 124,4,23,0,103,1,125,2,113,24,124,3,160,6,100,4, - 161,1,114,76,124,1,160,10,161,0,124,3,160,10,161,0, - 107,3,114,70,124,3,125,1,124,4,103,1,125,2,113,24, - 124,2,160,11,124,4,161,1,1,0,113,24,124,3,112,79, - 124,1,125,1,124,2,160,11,124,4,161,1,1,0,113,24, - 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,107,124,2,100,3,25,0, - 115,107,124,1,116,9,23,0,83,0,124,1,116,9,160,12, - 124,2,161,1,23,0,83,0,41,8,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,11,0,0,0, - 114,3,0,0,0,114,0,0,0,0,114,12,0,0,0,99, + 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,4,114,47,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 83,0,0,0,243,26,0,0,0,103,0,124,0,93,9,125, - 1,124,1,114,2,124,1,160,0,116,1,161,1,145,2,113, - 2,83,0,114,7,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,5,0,0,0,218,1,112,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,10,60,108, - 105,115,116,99,111,109,112,62,119,0,0,0,115,2,0,0, - 0,26,0,114,10,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,78,41,13,114,4,0,0,0, - 218,3,109,97,112,114,19,0,0,0,218,15,95,112,97,116, - 104,95,115,112,108,105,116,114,111,111,116,114,27,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,50,0,0,0,114, - 51,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 10,95,112,97,116,104,95,106,111,105,110,96,0,0,0,115, - 42,0,0,0,4,2,4,1,12,1,8,1,4,1,4,1, - 20,1,20,1,14,1,12,1,10,1,16,1,4,3,8,1, - 12,2,8,2,12,1,14,1,20,1,8,2,14,1,114,10, - 0,0,0,114,68,0,0,0,99,0,0,0,0,0,0,0, - 0,0,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,4,114,47,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,83,0, - 0,0,114,48,0,0,0,114,7,0,0,0,114,49,0,0, - 0,41,2,114,5,0,0,0,218,4,112,97,114,116,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,54,0, - 0,0,128,0,0,0,115,6,0,0,0,6,0,6,1,14, - 255,114,10,0,0,0,114,55,0,0,0,78,41,2,114,60, - 0,0,0,114,63,0,0,0,41,1,114,64,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,68, - 0,0,0,126,0,0,0,115,6,0,0,0,10,2,2,1, - 8,255,114,10,0,0,0,99,1,0,0,0,0,0,0,0, - 0,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,19,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,4,0,0,0,51,0,0,0,115,26,0,0, - 0,129,0,124,0,93,8,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,52,0,0,0,169,1,114,66, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,9,0, - 0,0,134,0,0,0,115,4,0,0,0,6,128,20,0,114, - 10,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,11,0,0,0,78,114, - 3,0,0,0,41,2,218,3,109,97,120,114,51,0,0,0, - 41,2,114,66,0,0,0,218,1,105,114,7,0,0,0,114, - 72,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104, - 95,115,112,108,105,116,132,0,0,0,115,8,0,0,0,22, - 2,8,1,8,1,28,1,114,10,0,0,0,114,75,0,0, - 0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19,0,0,0,90, - 4,115,116,97,116,114,72,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,10,95,112,97,116,104, - 95,115,116,97,116,140,0,0,0,115,2,0,0,0,10,7, - 114,10,0,0,0,114,76,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, - 50,0,0,0,9,0,116,0,124,0,131,1,125,2,110,11, - 35,0,4,0,116,1,121,24,1,0,1,0,1,0,89,0, - 100,1,83,0,37,0,124,2,106,2,100,2,64,0,124,1, - 107,2,83,0,119,0,41,4,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,78,41,3,114,76,0,0,0,218,7,79,83,69,114,114, - 111,114,218,7,115,116,95,109,111,100,101,41,3,114,66,0, - 0,0,218,4,109,111,100,101,90,9,115,116,97,116,95,105, - 110,102,111,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,18,95,112,97,116,104,95,105,115,95,109,111,100, - 101,95,116,121,112,101,150,0,0,0,115,16,0,0,0,2, - 2,10,1,2,128,12,1,6,1,2,128,14,1,2,254,115, - 12,0,0,0,129,4,6,0,134,7,16,7,152,1,16,7, - 114,80,0,0,0,99,1,0,0,0,0,0,0,0,0,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,3,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,78,41,1,114,80,0,0,0,114,72,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,12,95, - 112,97,116,104,95,105,115,102,105,108,101,159,0,0,0,243, - 2,0,0,0,10,2,114,10,0,0,0,114,81,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,22,0,0,0,124,0,115,6,116,0, - 160,1,161,0,125,0,116,2,124,0,100,1,131,2,83,0, - 41,3,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,78,41,3,114,19,0,0,0,218, - 6,103,101,116,99,119,100,114,80,0,0,0,114,72,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,11,95,112,97,116,104,95,105,115,100,105,114,164,0,0, - 0,115,6,0,0,0,4,2,8,1,10,1,114,10,0,0, - 0,114,84,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,115,62,0,0,0, - 124,0,115,4,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,30,124,1,160,4,100,6, - 161,1,112,30,124,1,160,5,100,4,161,1,83,0,41,8, - 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,3,0,0,0,122,2,92,92,78,41,6,114,19,0,0, - 0,114,57,0,0,0,218,7,114,101,112,108,97,99,101,114, - 4,0,0,0,114,27,0,0,0,114,59,0,0,0,41,2, - 114,66,0,0,0,114,65,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104, - 95,105,115,97,98,115,172,0,0,0,115,8,0,0,0,4, - 2,4,1,22,1,32,1,114,10,0,0,0,114,87,0,0, - 0,99,1,0,0,0,0,0,0,0,0,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,2,114,85,0,0,0,78,41,2,114, - 27,0,0,0,114,51,0,0,0,114,72,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,87,0, - 0,0,180,0,0,0,114,82,0,0,0,114,10,0,0,0, - 233,182,1,0,0,99,3,0,0,0,0,0,0,0,0,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,9, - 0,116,7,160,8,124,4,100,3,161,2,53,0,125,5,124, - 5,160,9,124,1,161,1,1,0,100,4,4,0,4,0,131, - 3,1,0,110,11,35,0,49,0,115,48,119,4,37,0,1, - 0,1,0,1,0,89,0,1,0,1,0,116,2,160,10,124, - 3,124,0,161,2,1,0,100,4,83,0,35,0,4,0,116, - 11,121,88,1,0,1,0,1,0,9,0,116,2,160,12,124, - 3,161,1,1,0,130,0,35,0,4,0,116,11,121,87,1, - 0,1,0,1,0,89,0,130,0,37,0,37,0,119,0,119, - 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,88, - 0,0,0,90,2,119,98,78,41,13,218,6,102,111,114,109, - 97,116,218,2,105,100,114,19,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,86,0,0,0,114,77,0,0,0,90,6,117,110,108,105, - 110,107,41,6,114,66,0,0,0,114,42,0,0,0,114,79, - 0,0,0,90,8,112,97,116,104,95,116,109,112,90,2,102, - 100,218,4,102,105,108,101,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,13,95,119,114,105,116,101,95,97, - 116,111,109,105,99,185,0,0,0,115,44,0,0,0,16,5, - 6,1,22,1,4,255,2,2,14,3,10,1,12,255,22,128, - 16,2,2,128,12,1,2,1,10,1,2,3,2,128,12,254, - 2,1,2,1,4,128,2,254,2,253,115,69,0,0,0,153, - 6,62,0,159,6,43,3,165,6,62,0,171,4,47,11,175, - 1,62,0,176,3,47,11,179,9,62,0,190,7,65,22,7, - 193,6,5,65,12,6,193,11,1,65,22,7,193,12,7,65, - 21,13,193,19,3,65,22,7,193,23,1,65,21,13,193,24, - 1,65,22,7,114,96,0,0,0,105,124,13,0,0,114,45, - 0,0,0,114,33,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,119,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, - 5,0,0,0,67,0,0,0,115,80,1,0,0,124,1,100, - 1,117,1,114,26,116,0,160,1,100,2,116,2,161,2,1, - 0,124,2,100,1,117,1,114,20,100,3,125,3,116,3,124, - 3,131,1,130,1,124,1,114,24,100,4,110,1,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,57,116,11,100,7,131,1,130,1,100, - 4,160,12,124,6,114,63,124,6,110,1,124,8,124,7,124, - 9,103,3,161,1,125,10,124,2,100,1,117,0,114,86,116, - 8,106,13,106,14,100,8,107,2,114,82,100,4,125,2,110, - 4,116,8,106,13,106,14,125,2,116,15,124,2,131,1,125, - 2,124,2,100,4,107,3,114,112,124,2,160,16,161,0,115, - 105,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,114,162,116,22,124,4,131,1,115,134,116,23,116,4,160, - 24,161,0,124,4,131,2,125,4,124,4,100,5,25,0,100, - 11,107,2,114,152,124,4,100,8,25,0,116,25,118,1,114, - 152,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, - 11,0,0,0,114,3,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,12,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,19,0,0,0,218,6,102,115,112, - 97,116,104,114,75,0,0,0,218,10,114,112,97,114,116,105, - 116,105,111,110,114,16,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,63,0,0,0,114,17, - 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,90,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,87,0,0,0,114,68,0,0,0,114, - 83,0,0,0,114,51,0,0,0,218,6,108,115,116,114,105, - 112,218,8,95,80,89,67,65,67,72,69,41,12,114,66,0, - 0,0,90,14,100,101,98,117,103,95,111,118,101,114,114,105, - 100,101,114,97,0,0,0,218,7,109,101,115,115,97,103,101, - 218,4,104,101,97,100,114,67,0,0,0,90,4,98,97,115, - 101,114,6,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,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,17,99,97,99, - 104,101,95,102,114,111,109,95,115,111,117,114,99,101,127,1, - 0,0,115,72,0,0,0,8,18,6,1,2,1,4,255,8, - 2,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,1,8,2,8,1,8, - 1,8,1,14,1,14,1,12,1,10,1,8,9,14,1,24, - 5,12,1,2,4,4,1,8,1,2,1,4,253,12,5,114, - 10,0,0,0,114,122,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,67,0,0,0,115,40, - 1,0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133, - 2,25,0,125,1,100,4,125,3,124,3,115,72,116,6,124, - 1,131,1,92,2,125,1,125,5,124,5,116,13,107,3,114, - 72,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,88,116,14,100,8,124,2,155,2,157,2,131, - 1,130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,99,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,98,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,123,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,16,0, - 0,0,114,106,0,0,0,114,107,0,0,0,114,108,0,0, - 0,114,19,0,0,0,114,104,0,0,0,114,75,0,0,0, - 114,115,0,0,0,114,50,0,0,0,114,51,0,0,0,114, - 27,0,0,0,114,60,0,0,0,114,4,0,0,0,114,117, - 0,0,0,114,112,0,0,0,218,5,99,111,117,110,116,218, - 6,114,115,112,108,105,116,114,113,0,0,0,114,111,0,0, - 0,218,9,112,97,114,116,105,116,105,111,110,114,68,0,0, - 0,218,15,83,79,85,82,67,69,95,83,85,70,70,73,88, - 69,83,41,10,114,66,0,0,0,114,119,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,97,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,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,17,115,111,117,114, - 99,101,95,102,114,111,109,95,99,97,99,104,101,198,1,0, - 0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1, - 10,1,4,1,2,1,8,255,16,2,8,1,16,1,14,2, - 18,1,114,10,0,0,0,114,129,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,9,0,0,0,67,0,0, - 0,115,126,0,0,0,116,0,124,0,131,1,100,1,107,2, - 114,8,100,2,83,0,124,0,160,1,100,3,161,1,92,3, - 125,1,125,2,125,3,124,1,114,28,124,3,160,2,161,0, - 100,4,100,5,133,2,25,0,100,6,107,3,114,30,124,0, - 83,0,9,0,116,3,124,0,131,1,125,4,110,18,35,0, - 4,0,116,4,116,5,102,2,121,62,1,0,1,0,1,0, - 124,0,100,2,100,5,133,2,25,0,125,4,89,0,110,1, - 37,0,116,6,124,4,131,1,114,60,124,4,83,0,124,0, - 83,0,119,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,98,0,0,0,233, - 253,255,255,255,233,255,255,255,255,90,2,112,121,41,7,114, - 4,0,0,0,114,105,0,0,0,218,5,108,111,119,101,114, - 114,129,0,0,0,114,108,0,0,0,114,112,0,0,0,114, - 81,0,0,0,41,5,218,13,98,121,116,101,99,111,100,101, - 95,112,97,116,104,114,120,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,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,15,95,103,101,116,95,115,111,117,114,99, - 101,102,105,108,101,238,1,0,0,115,26,0,0,0,12,7, - 4,1,16,1,24,1,4,1,2,1,10,1,2,128,16,1, - 16,1,2,128,16,1,2,254,115,12,0,0,0,159,4,36, - 0,164,15,53,7,190,1,53,7,114,136,0,0,0,99,1, + 83,0,0,0,114,48,0,0,0,114,12,0,0,0,114,49, + 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, + 32,32,114,7,0,0,0,114,53,0,0,0,128,0,0,0, + 115,6,0,0,0,6,0,6,1,14,255,114,9,0,0,0, + 114,54,0,0,0,78,41,2,114,59,0,0,0,114,62,0, + 0,0,41,1,114,63,0,0,0,32,114,7,0,0,0,114, + 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, + 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,66,0, + 0,0,116,0,135,2,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,19, + 100,4,136,2,102,2,83,0,136,2,100,5,124,1,133,2, + 25,0,136,2,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,4,0,0,0,51,0,0,0,115,26,0, + 0,0,129,0,124,0,93,8,125,1,136,2,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,41,3,114,5,0,0,0,114, + 52,0,0,0,114,65,0,0,0,32,32,128,114,7,0,0, + 0,114,8,0,0,0,134,0,0,0,115,4,0,0,0,6, + 128,20,0,114,9,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,10,0, + 0,0,78,114,3,0,0,0,41,2,218,3,109,97,120,114, + 51,0,0,0,41,3,114,65,0,0,0,218,1,105,114,65, + 0,0,0,96,32,64,114,7,0,0,0,218,11,95,112,97, + 116,104,95,115,112,108,105,116,132,0,0,0,115,8,0,0, + 0,22,2,8,1,8,1,28,1,114,9,0,0,0,114,73, + 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19,0,0, + 0,90,4,115,116,97,116,169,1,114,65,0,0,0,32,114, + 7,0,0,0,218,10,95,112,97,116,104,95,115,116,97,116, + 140,0,0,0,115,2,0,0,0,10,7,114,9,0,0,0, + 114,75,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,50,0,0,0,9, + 0,116,0,124,0,131,1,125,2,110,11,35,0,4,0,116, + 1,121,24,1,0,1,0,1,0,89,0,100,1,83,0,37, + 0,124,2,106,2,100,2,64,0,124,1,107,2,83,0,119, + 0,41,4,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,78,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,32,32, + 32,114,7,0,0,0,218,18,95,112,97,116,104,95,105,115, + 95,109,111,100,101,95,116,121,112,101,150,0,0,0,115,16, + 0,0,0,2,2,10,1,2,128,12,1,6,1,2,128,14, + 1,2,254,115,12,0,0,0,129,4,6,0,134,7,16,7, + 152,1,16,7,114,79,0,0,0,99,1,0,0,0,0,0, + 0,0,0,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,3,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,78,41,1,114,79,0,0,0,114,74,0, + 0,0,32,114,7,0,0,0,218,12,95,112,97,116,104,95, + 105,115,102,105,108,101,159,0,0,0,243,2,0,0,0,10, + 2,114,9,0,0,0,114,80,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 115,22,0,0,0,124,0,115,6,116,0,160,1,161,0,125, + 0,116,2,124,0,100,1,131,2,83,0,41,3,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,78,41,3,114,19,0,0,0,218,6,103,101,116,99, + 119,100,114,79,0,0,0,114,74,0,0,0,32,114,7,0, + 0,0,218,11,95,112,97,116,104,95,105,115,100,105,114,164, + 0,0,0,115,6,0,0,0,4,2,8,1,10,1,114,9, + 0,0,0,114,83,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,62,0, + 0,0,124,0,115,4,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,30,124,1,160,4, + 100,6,161,1,112,30,124,1,160,5,100,4,161,1,83,0, + 41,8,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,3,0,0,0,122,2,92,92,78,41,6,114,19, + 0,0,0,114,56,0,0,0,218,7,114,101,112,108,97,99, + 101,114,4,0,0,0,114,27,0,0,0,114,58,0,0,0, + 41,2,114,65,0,0,0,114,64,0,0,0,32,32,114,7, + 0,0,0,218,11,95,112,97,116,104,95,105,115,97,98,115, + 172,0,0,0,115,8,0,0,0,4,2,4,1,22,1,32, + 1,114,9,0,0,0,114,86,0,0,0,99,1,0,0,0, + 0,0,0,0,0,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, + 2,114,84,0,0,0,78,41,2,114,27,0,0,0,114,51, + 0,0,0,114,74,0,0,0,32,114,7,0,0,0,114,86, + 0,0,0,180,0,0,0,114,81,0,0,0,114,9,0,0, + 0,233,182,1,0,0,99,3,0,0,0,0,0,0,0,0, + 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, + 9,0,116,7,160,8,124,4,100,3,161,2,53,0,125,5, + 124,5,160,9,124,1,161,1,1,0,100,4,4,0,4,0, + 131,3,1,0,110,11,35,0,49,0,115,48,119,4,37,0, + 1,0,1,0,1,0,89,0,1,0,1,0,116,2,160,10, + 124,3,124,0,161,2,1,0,100,4,83,0,35,0,4,0, + 116,11,121,88,1,0,1,0,1,0,9,0,116,2,160,12, + 124,3,161,1,1,0,130,0,35,0,4,0,116,11,121,87, + 1,0,1,0,1,0,89,0,130,0,37,0,37,0,119,0, + 119,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, + 87,0,0,0,90,2,119,98,78,41,13,218,6,102,111,114, + 109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0,0,90,6,117,110,108, + 105,110,107,41,6,114,65,0,0,0,114,42,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,32,32,32,32,32,32,114,7, + 0,0,0,218,13,95,119,114,105,116,101,95,97,116,111,109, + 105,99,185,0,0,0,115,44,0,0,0,16,5,6,1,22, + 1,4,255,2,2,14,3,10,1,12,255,22,128,16,2,2, + 128,12,1,2,1,10,1,2,3,2,128,12,254,2,1,2, + 1,4,128,2,254,2,253,115,69,0,0,0,153,6,62,0, + 159,6,43,3,165,6,62,0,171,4,47,11,175,1,62,0, + 176,3,47,11,179,9,62,0,190,7,65,22,7,193,6,5, + 65,12,6,193,11,1,65,22,7,193,12,7,65,21,13,193, + 19,3,65,22,7,193,23,1,65,21,13,193,24,1,65,22, + 7,114,95,0,0,0,105,126,13,0,0,114,45,0,0,0, + 114,33,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,119,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,5,0,0, + 0,67,0,0,0,115,80,1,0,0,124,1,100,1,117,1, + 114,26,116,0,160,1,100,2,116,2,161,2,1,0,124,2, + 100,1,117,1,114,20,100,3,125,3,116,3,124,3,131,1, + 130,1,124,1,114,24,100,4,110,1,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,57,116,11,100,7,131,1,130,1,100,4,160,12, + 124,6,114,63,124,6,110,1,124,8,124,7,124,9,103,3, + 161,1,125,10,124,2,100,1,117,0,114,86,116,8,106,13, + 106,14,100,8,107,2,114,82,100,4,125,2,110,4,116,8, + 106,13,106,14,125,2,116,15,124,2,131,1,125,2,124,2, + 100,4,107,3,114,112,124,2,160,16,161,0,115,105,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,114,162, + 116,22,124,4,131,1,115,134,116,23,116,4,160,24,161,0, + 124,4,131,2,125,4,124,4,100,5,25,0,100,11,107,2, + 114,152,124,4,100,8,25,0,116,25,118,1,114,152,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,10,0,0, + 0,114,3,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,11,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,19,0,0,0,218,6,102,115,112,97,116,104, + 114,73,0,0,0,218,10,114,112,97,114,116,105,116,105,111, + 110,114,16,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,17,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,89,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,86,0,0,0,114,67,0,0,0,114,82,0,0, + 0,114,51,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, + 96,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,6, + 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,32,32,32,32,32,32,32, + 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, + 101,95,102,114,111,109,95,115,111,117,114,99,101,129,1,0, + 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, + 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,1,8,2,8,1,8,1, + 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, + 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, + 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,40,1, + 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133,2, + 25,0,125,1,100,4,125,3,124,3,115,72,116,6,124,1, + 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,72, + 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,88,116,14,100,8,124,2,155,2,157,2,131,1, + 130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16,0,0, + 0,114,105,0,0,0,114,106,0,0,0,114,107,0,0,0, + 114,19,0,0,0,114,103,0,0,0,114,73,0,0,0,114, + 114,0,0,0,114,50,0,0,0,114,51,0,0,0,114,27, + 0,0,0,114,59,0,0,0,114,4,0,0,0,114,116,0, + 0,0,114,111,0,0,0,218,5,99,111,117,110,116,218,6, + 114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32, + 32,32,32,32,114,7,0,0,0,218,17,115,111,117,114,99, + 101,95,102,114,111,109,95,99,97,99,104,101,200,1,0,0, + 115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1,10, + 1,4,1,2,1,8,255,16,2,8,1,16,1,14,2,18, + 1,114,9,0,0,0,114,128,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, + 115,126,0,0,0,116,0,124,0,131,1,100,1,107,2,114, + 8,100,2,83,0,124,0,160,1,100,3,161,1,92,3,125, + 1,125,2,125,3,124,1,114,28,124,3,160,2,161,0,100, + 4,100,5,133,2,25,0,100,6,107,3,114,30,124,0,83, + 0,9,0,116,3,124,0,131,1,125,4,110,18,35,0,4, + 0,116,4,116,5,102,2,121,62,1,0,1,0,1,0,124, + 0,100,2,100,5,133,2,25,0,125,4,89,0,110,1,37, + 0,116,6,124,4,131,1,114,60,124,4,83,0,124,0,83, + 0,119,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,97,0,0,0,233,253, + 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,4, + 0,0,0,114,104,0,0,0,218,5,108,111,119,101,114,114, + 128,0,0,0,114,107,0,0,0,114,111,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,119,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,32,32,32,32,32,114,7,0,0,0,218,15, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,240, + 1,0,0,115,26,0,0,0,12,7,4,1,16,1,24,1, + 4,1,2,1,10,1,2,128,16,1,16,1,2,128,16,1, + 2,254,115,12,0,0,0,159,4,36,0,164,15,53,7,190, + 1,53,7,114,135,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,116,1,116,2,131,1,161,1,114,23, + 9,0,116,3,124,0,131,1,83,0,35,0,4,0,116,4, + 121,34,1,0,1,0,1,0,89,0,100,0,83,0,37,0, + 124,0,160,0,116,1,116,5,131,1,161,1,114,32,124,0, + 83,0,100,0,83,0,119,0,114,69,0,0,0,41,6,114, + 58,0,0,0,218,5,116,117,112,108,101,114,127,0,0,0, + 114,121,0,0,0,114,107,0,0,0,114,113,0,0,0,41, + 1,114,120,0,0,0,32,114,7,0,0,0,218,11,95,103, + 101,116,95,99,97,99,104,101,100,3,2,0,0,115,22,0, + 0,0,14,1,2,1,8,1,2,128,12,1,6,1,2,128, + 14,1,4,1,4,2,2,251,115,12,0,0,0,136,3,12, + 0,140,7,22,7,162,1,22,7,114,137,0,0,0,99,1, 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,70,0,0,0,124,0,160,0,116,1,116,2, - 131,1,161,1,114,23,9,0,116,3,124,0,131,1,83,0, - 35,0,4,0,116,4,121,34,1,0,1,0,1,0,89,0, - 100,0,83,0,37,0,124,0,160,0,116,1,116,5,131,1, - 161,1,114,32,124,0,83,0,100,0,83,0,119,0,114,70, - 0,0,0,41,6,114,59,0,0,0,218,5,116,117,112,108, - 101,114,128,0,0,0,114,122,0,0,0,114,108,0,0,0, - 114,114,0,0,0,41,1,114,121,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,11,95,103,101, - 116,95,99,97,99,104,101,100,1,2,0,0,115,22,0,0, - 0,14,1,2,1,8,1,2,128,12,1,6,1,2,128,14, - 1,4,1,4,2,2,251,115,12,0,0,0,136,3,12,0, - 140,7,22,7,162,1,22,7,114,138,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,52,0,0,0,9,0,116,0,124,0,131,1,106, - 1,125,1,110,12,35,0,4,0,116,2,121,25,1,0,1, - 0,1,0,100,1,125,1,89,0,110,1,37,0,124,1,100, - 2,79,0,125,1,124,1,83,0,119,0,41,4,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,88,0,0,0,233,128,0,0,0,78,41,3,114, - 76,0,0,0,114,78,0,0,0,114,77,0,0,0,41,2, - 114,66,0,0,0,114,79,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,10,95,99,97,108,99, - 95,109,111,100,101,13,2,0,0,115,18,0,0,0,2,2, - 12,1,2,128,12,1,8,1,2,128,8,3,4,1,2,251, - 115,12,0,0,0,129,5,7,0,135,9,18,7,153,1,18, - 7,114,140,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,3,0,0,0,115,52,0,0,0, - 100,6,135,0,102,1,100,2,100,3,132,9,125,1,116,0, - 100,1,117,1,114,15,116,0,106,1,125,2,110,4,100,4, - 100,5,132,0,125,2,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,5,0,0,0,31,0,0,0,115,76,0,0,0,124, - 1,100,0,117,0,114,8,124,0,106,0,125,1,110,18,124, - 0,106,0,124,1,107,3,114,26,116,1,100,1,124,0,106, - 0,155,1,100,2,124,1,155,1,157,4,124,1,100,3,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,4,78,122,11, - 108,111,97,100,101,114,32,102,111,114,32,122,15,32,99,97, - 110,110,111,116,32,104,97,110,100,108,101,32,169,1,218,4, - 110,97,109,101,41,2,114,142,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,142,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,7,0, - 0,0,114,8,0,0,0,218,19,95,99,104,101,99,107,95, - 110,97,109,101,95,119,114,97,112,112,101,114,33,2,0,0, - 115,18,0,0,0,8,1,8,1,10,1,4,1,12,1,2, - 255,2,1,6,255,24,2,114,10,0,0,0,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,7,0,0,0,83,0,0,0,115,56,0,0,0, - 100,1,68,0,93,16,125,2,116,0,124,1,124,2,131,2, - 114,18,116,1,124,0,124,2,116,2,124,1,124,2,131,2, - 131,3,1,0,113,2,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,86,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,5,95,119,114,97,112, - 46,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, - 128,18,1,114,10,0,0,0,122,26,95,99,104,101,99,107, + 0,0,0,115,52,0,0,0,9,0,116,0,124,0,131,1, + 106,1,125,1,110,12,35,0,4,0,116,2,121,25,1,0, + 1,0,1,0,100,1,125,1,89,0,110,1,37,0,124,1, + 100,2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,32,32,114,7,0, + 0,0,218,10,95,99,97,108,99,95,109,111,100,101,15,2, + 0,0,115,18,0,0,0,2,2,12,1,2,128,12,1,8, + 1,2,128,8,3,4,1,2,251,115,12,0,0,0,129,5, + 7,0,135,9,18,7,153,1,18,7,114,139,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 3,0,0,0,115,52,0,0,0,100,6,135,3,102,1,100, + 2,100,3,132,9,125,1,116,0,100,1,117,1,114,15,116, + 0,106,1,125,2,110,4,100,4,100,5,132,0,125,2,124, + 2,124,1,136,3,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,5,0,0,0,31, + 0,0,0,115,76,0,0,0,124,1,100,0,117,0,114,8, + 124,0,106,0,125,1,110,18,124,0,106,0,124,1,107,3, + 114,26,116,1,100,1,124,0,106,0,155,1,100,2,124,1, + 155,1,157,4,124,1,100,3,141,2,130,1,136,4,124,0, + 124,1,103,2,124,2,162,1,82,0,105,0,124,3,164,1, + 142,1,83,0,41,4,78,122,11,108,111,97,100,101,114,32, + 102,111,114,32,122,15,32,99,97,110,110,111,116,32,104,97, + 110,100,108,101,32,169,1,218,4,110,97,109,101,41,2,114, + 141,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, + 114,41,5,218,4,115,101,108,102,114,141,0,0,0,218,4, + 97,114,103,115,218,6,107,119,97,114,103,115,218,6,109,101, + 116,104,111,100,32,32,32,32,128,114,7,0,0,0,218,19, + 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, + 112,101,114,35,2,0,0,115,18,0,0,0,8,1,8,1, + 10,1,4,1,12,1,2,255,2,1,6,255,24,2,114,9, + 0,0,0,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,7,0,0,0,83,0, + 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, + 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, + 2,124,1,124,2,131,2,131,3,1,0,113,2,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,85,0,0, + 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, + 48,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, + 128,18,1,114,9,0,0,0,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,114,70,0,0,0,41,2,218,10,95,98,111, - 111,116,115,116,114,97,112,114,159,0,0,0,41,3,114,148, - 0,0,0,114,149,0,0,0,114,159,0,0,0,114,7,0, - 0,0,114,147,0,0,0,114,8,0,0,0,218,11,95,99, - 104,101,99,107,95,110,97,109,101,25,2,0,0,115,12,0, - 0,0,14,8,8,10,8,1,8,2,10,6,4,1,114,10, - 0,0,0,114,161,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,67,0,0,0,115,72,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, - 160,3,124,1,161,1,92,2,125,2,125,3,124,2,100,2, - 117,0,114,34,116,4,124,3,131,1,114,34,100,3,125,4, - 116,0,160,1,124,4,160,5,124,3,100,4,25,0,161,1, - 116,6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95, - 109,111,100,117,108,101,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, - 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, - 115,116,101,97,100,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,7,114,100,0,0,0, - 114,101,0,0,0,114,102,0,0,0,218,11,102,105,110,100, - 95,108,111,97,100,101,114,114,4,0,0,0,114,90,0,0, - 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, - 41,5,114,144,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,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,17,95,102,105,110,100,95,109, - 111,100,117,108,101,95,115,104,105,109,56,2,0,0,115,16, - 0,0,0,6,7,2,2,4,254,14,6,16,1,4,1,22, - 1,4,1,114,10,0,0,0,114,168,0,0,0,99,3,0, - 0,0,0,0,0,0,0,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,32,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,53,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,81,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,32,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,160,0,0,0, - 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, - 103,101,114,143,0,0,0,114,4,0,0,0,218,8,69,79, - 70,69,114,114,111,114,114,43,0,0,0,41,6,114,42,0, - 0,0,114,142,0,0,0,218,11,101,120,99,95,100,101,116, - 97,105,108,115,90,5,109,97,103,105,99,114,118,0,0,0, - 114,17,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,13,95,99,108,97,115,115,105,102,121,95, - 112,121,99,76,2,0,0,115,28,0,0,0,12,16,8,1, - 16,1,12,1,16,1,12,1,10,1,12,1,8,1,16,1, - 8,2,16,1,16,1,4,1,114,10,0,0,0,114,177,0, - 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0,131,1, - 124,2,100,3,64,0,107,3,114,58,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,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, + 119,114,97,112,114,69,0,0,0,41,2,218,10,95,98,111, + 111,116,115,116,114,97,112,114,157,0,0,0,41,4,114,146, + 0,0,0,114,147,0,0,0,114,157,0,0,0,114,146,0, + 0,0,96,32,32,64,114,7,0,0,0,218,11,95,99,104, + 101,99,107,95,110,97,109,101,27,2,0,0,115,12,0,0, + 0,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, + 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, + 3,124,1,161,1,92,2,125,2,125,3,124,2,100,2,117, + 0,114,34,116,4,124,3,131,1,114,34,100,3,125,4,116, + 0,160,1,124,4,160,5,124,3,100,4,25,0,161,1,116, + 6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109, + 111,100,117,108,101,40,41,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, + 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, + 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, + 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, + 116,101,97,100,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,7,114,99,0,0,0,114, + 100,0,0,0,114,101,0,0,0,218,11,102,105,110,100,95, + 108,111,97,100,101,114,114,4,0,0,0,114,89,0,0,0, + 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, + 5,114,143,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,32,32,32,32,32,114,7,0,0, + 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, + 115,104,105,109,58,2,0,0,115,16,0,0,0,6,7,2, + 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, + 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, + 0,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,32,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,53,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,81,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,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,171,0,0,0,233,12,0,0,0, - 114,31,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,169,0, - 0,0,78,114,170,0,0,0,41,4,114,43,0,0,0,114, - 160,0,0,0,114,174,0,0,0,114,143,0,0,0,41,6, - 114,42,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,142,0,0,0,114,176,0,0,0,114,118,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,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,109,2,0,0,115,18,0,0,0, - 24,19,10,1,12,1,16,1,8,1,22,1,2,255,22,2, - 8,254,114,10,0,0,0,114,181,0,0,0,99,4,0,0, - 0,0,0,0,0,0,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,19,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,171,0,0,0,114, - 170,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,143,0,0,0,41,4,114,42, - 0,0,0,218,11,115,111,117,114,99,101,95,104,97,115,104, - 114,142,0,0,0,114,176,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,18,95,118,97,108,105, - 100,97,116,101,95,104,97,115,104,95,112,121,99,137,2,0, - 0,115,14,0,0,0,16,17,2,1,8,1,4,255,2,2, - 6,254,4,255,114,10,0,0,0,114,183,0,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, - 0,0,0,115,76,0,0,0,116,0,160,1,124,0,161,1, - 125,4,116,2,124,4,116,3,131,2,114,28,116,4,160,5, - 100,1,124,2,161,2,1,0,124,3,100,2,117,1,114,26, - 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,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,142, - 0,0,0,114,66,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,160,0,0,0,114,174,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,143,0,0,0,114,90,0,0,0,41,5, - 114,42,0,0,0,114,142,0,0,0,114,133,0,0,0,114, - 135,0,0,0,218,4,99,111,100,101,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,17,95,99,111,109,112, - 105,108,101,95,98,121,116,101,99,111,100,101,161,2,0,0, - 115,18,0,0,0,10,2,10,1,12,1,8,1,12,1,4, - 1,10,2,4,1,6,255,114,10,0,0,0,114,190,0,0, - 0,99,3,0,0,0,0,0,0,0,0,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,3,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,78,41,6,218,9,98,121,116,101,97,114, - 114,97,121,114,173,0,0,0,218,6,101,120,116,101,110,100, - 114,37,0,0,0,114,185,0,0,0,218,5,100,117,109,112, - 115,41,4,114,189,0,0,0,218,5,109,116,105,109,101,114, - 180,0,0,0,114,42,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,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, - 174,2,0,0,115,12,0,0,0,8,2,14,1,14,1,14, - 1,16,1,4,1,114,10,0,0,0,114,195,0,0,0,84, - 99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,171,0,0,0,78,41, - 7,114,191,0,0,0,114,173,0,0,0,114,192,0,0,0, - 114,37,0,0,0,114,4,0,0,0,114,185,0,0,0,114, - 193,0,0,0,41,5,114,189,0,0,0,114,182,0,0,0, - 90,7,99,104,101,99,107,101,100,114,42,0,0,0,114,17, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,17,95,99,111,100,101,95,116,111,95,104,97,115, - 104,95,112,121,99,184,2,0,0,115,14,0,0,0,8,2, - 12,1,14,1,16,1,10,1,16,1,4,1,114,10,0,0, - 0,114,196,0,0,0,99,1,0,0,0,0,0,0,0,0, - 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,92, - 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,197,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,195, - 2,0,0,115,10,0,0,0,8,5,12,1,10,1,12,1, - 20,1,114,10,0,0,0,114,201,0,0,0,169,2,114,165, - 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,8,0,0,0, - 67,0,0,0,115,60,1,0,0,124,1,100,1,117,0,114, - 29,100,2,125,1,116,0,124,2,100,3,131,2,114,28,9, - 0,124,2,160,1,124,0,161,1,125,1,110,39,35,0,4, - 0,116,2,121,157,1,0,1,0,1,0,89,0,110,30,37, - 0,110,28,116,3,160,4,124,1,161,1,125,1,116,5,124, - 1,131,1,115,57,9,0,116,6,116,3,160,7,161,0,124, - 1,131,2,125,1,110,10,35,0,4,0,116,8,121,156,1, - 0,1,0,1,0,89,0,110,1,37,0,116,9,160,10,124, - 0,124,2,124,1,100,4,166,3,125,4,100,5,124,4,95, - 11,124,2,100,1,117,0,114,99,116,12,131,0,68,0,93, - 21,92,2,125,5,125,6,124,1,160,13,116,14,124,6,131, - 1,161,1,114,96,124,5,124,0,124,1,131,2,125,2,124, - 2,124,4,95,15,1,0,113,99,113,75,100,1,83,0,124, - 3,116,16,117,0,114,131,116,0,124,2,100,6,131,2,114, - 130,9,0,124,2,160,17,124,0,161,1,125,7,110,10,35, - 0,4,0,116,2,121,155,1,0,1,0,1,0,89,0,110, - 10,37,0,124,7,114,130,103,0,124,4,95,18,110,3,124, - 3,124,4,95,18,124,4,106,18,103,0,107,2,114,153,124, - 1,114,153,116,19,124,1,131,1,100,7,25,0,125,8,124, - 4,106,18,160,20,124,8,161,1,1,0,124,4,83,0,119, - 0,119,0,119,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, - 21,114,154,0,0,0,114,204,0,0,0,114,143,0,0,0, - 114,19,0,0,0,114,104,0,0,0,114,87,0,0,0,114, - 68,0,0,0,114,83,0,0,0,114,77,0,0,0,114,160, - 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,59,0,0,0, - 114,137,0,0,0,114,165,0,0,0,218,9,95,80,79,80, - 85,76,65,84,69,114,207,0,0,0,114,203,0,0,0,114, - 75,0,0,0,114,62,0,0,0,41,9,114,142,0,0,0, - 90,8,108,111,99,97,116,105,111,110,114,165,0,0,0,114, - 203,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,207,0,0,0,90,7,100,105,114,110,97,109,101, - 114,7,0,0,0,114,7,0,0,0,114,8,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,212,2,0,0,115,96,0,0, - 0,8,12,4,4,10,1,2,2,12,1,2,128,12,1,4, - 1,2,128,2,251,10,7,8,1,2,1,16,1,2,128,12, - 1,4,1,2,128,16,8,6,1,8,3,14,1,14,1,10, - 1,6,1,4,1,2,253,4,5,8,3,10,2,2,1,12, - 1,2,128,12,1,4,1,2,128,4,2,6,1,2,128,6, - 2,10,1,4,1,12,1,12,1,4,2,2,244,2,228,2, - 249,115,44,0,0,0,140,5,18,0,146,7,27,7,167,7, - 47,0,175,7,56,7,193,45,5,65,51,0,193,51,7,65, - 60,7,194,27,1,65,60,7,194,28,1,56,7,194,29,1, - 27,7,114,214,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,64,0,0,0,115,88,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, - 4,100,3,90,5,101,6,111,15,100,4,101,7,118,0,90, - 8,101,9,100,5,100,6,132,0,131,1,90,10,101,11,100, - 7,100,8,132,0,131,1,90,12,101,11,100,14,100,10,100, - 11,132,1,131,1,90,13,101,11,100,15,100,12,100,13,132, - 1,131,1,90,14,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,122,6,95,100,46,112,121,100,99,1,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, - 52,0,0,0,9,0,116,0,160,1,116,0,106,2,124,0, - 161,2,83,0,35,0,4,0,116,3,121,25,1,0,1,0, - 1,0,116,0,160,1,116,0,106,4,124,0,161,2,6,0, - 89,0,83,0,37,0,119,0,114,70,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,77,0,0,0,90,18,72,75,69,89,95,76, - 79,67,65,76,95,77,65,67,72,73,78,69,114,20,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, - 41,3,0,0,115,14,0,0,0,2,2,14,1,2,128,12, - 1,18,1,2,128,2,255,115,12,0,0,0,129,6,8,0, - 136,14,24,7,153,1,24,7,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,9,0,0,0,67, - 0,0,0,115,136,0,0,0,124,0,106,0,114,7,124,0, - 106,1,125,2,110,3,124,0,106,2,125,2,124,2,160,3, - 124,1,100,1,116,4,106,5,100,0,100,2,133,2,25,0, - 22,0,100,3,166,2,125,3,9,0,124,0,160,6,124,3, - 161,1,53,0,125,4,116,7,160,8,124,4,100,4,161,2, - 125,5,100,0,4,0,4,0,131,3,1,0,110,11,35,0, - 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,124,5,83,0,35,0,4,0,116,9,121,67, - 1,0,1,0,1,0,89,0,100,0,83,0,37,0,119,0, - 41,5,78,122,5,37,100,46,37,100,114,45,0,0,0,41, - 2,114,164,0,0,0,90,11,115,121,115,95,118,101,114,115, - 105,111,110,114,11,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,90,0,0,0,114,16, - 0,0,0,218,12,118,101,114,115,105,111,110,95,105,110,102, - 111,114,217,0,0,0,114,216,0,0,0,90,10,81,117,101, - 114,121,86,97,108,117,101,114,77,0,0,0,41,6,218,3, - 99,108,115,114,164,0,0,0,90,12,114,101,103,105,115,116, - 114,121,95,107,101,121,114,21,0,0,0,90,4,104,107,101, - 121,218,8,102,105,108,101,112,97,116,104,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,16,95,115,101,97, - 114,99,104,95,114,101,103,105,115,116,114,121,48,3,0,0, - 115,34,0,0,0,6,2,8,1,6,2,6,1,16,1,6, - 255,2,2,12,1,12,1,12,255,22,128,4,4,2,128,12, - 254,6,1,2,128,2,255,115,39,0,0,0,153,5,56,0, - 158,7,43,3,165,6,56,0,171,4,47,11,175,1,56,0, - 176,3,47,11,179,3,56,0,184,7,65,2,7,193,3,1, - 65,2,7,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,67,0,0, - 0,115,122,0,0,0,124,0,160,0,124,1,161,1,125,4, - 124,4,100,0,117,0,114,11,100,0,83,0,9,0,116,1, - 124,4,131,1,1,0,110,11,35,0,4,0,116,2,121,60, - 1,0,1,0,1,0,89,0,100,0,83,0,37,0,116,3, - 131,0,68,0,93,26,92,2,125,5,125,6,124,4,160,4, - 116,5,124,6,131,1,161,1,114,57,116,6,160,7,124,1, - 124,5,124,1,124,4,131,2,124,4,100,1,166,3,125,7, - 124,7,2,0,1,0,83,0,113,31,100,0,83,0,119,0, - 41,2,78,114,205,0,0,0,41,8,114,224,0,0,0,114, - 76,0,0,0,114,77,0,0,0,114,209,0,0,0,114,59, - 0,0,0,114,137,0,0,0,114,160,0,0,0,218,16,115, - 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,41, - 8,114,222,0,0,0,114,164,0,0,0,114,66,0,0,0, - 218,6,116,97,114,103,101,116,114,223,0,0,0,114,165,0, - 0,0,114,213,0,0,0,114,211,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,9,102,105,110, - 100,95,115,112,101,99,63,3,0,0,115,38,0,0,0,10, - 2,8,1,4,1,2,1,10,1,2,128,12,1,6,1,2, - 128,14,1,14,1,6,1,8,1,2,1,6,254,8,3,2, - 252,4,255,2,254,115,12,0,0,0,140,4,17,0,145,7, - 27,7,188,1,27,7,122,31,87,105,110,100,111,119,115,82, + 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,32,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,142,0,0, + 0,114,4,0,0,0,218,8,69,79,70,69,114,114,111,114, + 114,43,0,0,0,41,6,114,42,0,0,0,114,141,0,0, + 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, + 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, + 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, + 115,115,105,102,121,95,112,121,99,78,2,0,0,115,28,0, + 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, + 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, + 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7, + 133,2,25,0,131,1,124,2,100,3,64,0,107,3,114,58, + 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,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,169,0,0, + 0,233,12,0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4, + 114,43,0,0,0,114,158,0,0,0,114,172,0,0,0,114, + 142,0,0,0,41,6,114,42,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,141,0,0,0,114,174,0,0,0, + 114,117,0,0,0,32,32,32,32,32,32,114,7,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,111,2,0,0,115,18,0, + 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, + 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, + 0,0,0,0,0,0,0,0,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,19,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,169,0,0, + 0,114,168,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,142,0,0,0,41,4, + 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, + 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, + 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, + 95,104,97,115,104,95,112,121,99,139,2,0,0,115,14,0, + 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, + 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, + 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, + 124,4,116,3,131,2,114,28,116,4,160,5,100,1,124,2, + 161,2,1,0,124,3,100,2,117,1,114,26,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, + 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,141,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,172,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,142,0,0,0,114,89,0,0,0,41,5,114,42,0,0, + 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, + 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, + 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, + 111,100,101,163,2,0,0,115,18,0,0,0,10,2,10,1, + 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, + 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, + 0,0,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,3,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,78,41,6,218, + 9,98,121,116,101,97,114,114,97,121,114,171,0,0,0,218, + 6,101,120,116,101,110,100,114,37,0,0,0,114,183,0,0, + 0,218,5,100,117,109,112,115,41,4,114,187,0,0,0,218, + 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, + 32,32,32,32,114,7,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,176,2,0,0,115,12,0,0,0,8,2,14,1,14,1, + 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, + 84,99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78, + 41,7,114,189,0,0,0,114,171,0,0,0,114,190,0,0, + 0,114,37,0,0,0,114,4,0,0,0,114,183,0,0,0, + 114,191,0,0,0,41,5,114,187,0,0,0,114,180,0,0, + 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, + 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, + 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, + 99,186,2,0,0,115,14,0,0,0,8,2,12,1,14,1, + 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, + 0,0,99,1,0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32, + 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, + 115,111,117,114,99,101,197,2,0,0,115,10,0,0,0,8, + 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, + 0,0,0,169,2,114,163,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,8,0,0,0,67,0,0,0,115,60,1,0,0, + 124,1,100,1,117,0,114,29,100,2,125,1,116,0,124,2, + 100,3,131,2,114,28,9,0,124,2,160,1,124,0,161,1, + 125,1,110,39,35,0,4,0,116,2,121,157,1,0,1,0, + 1,0,89,0,110,30,37,0,110,28,116,3,160,4,124,1, + 161,1,125,1,116,5,124,1,131,1,115,57,9,0,116,6, + 116,3,160,7,161,0,124,1,131,2,125,1,110,10,35,0, + 4,0,116,8,121,156,1,0,1,0,1,0,89,0,110,1, + 37,0,116,9,160,10,124,0,124,2,124,1,100,4,166,3, + 125,4,100,5,124,4,95,11,124,2,100,1,117,0,114,99, + 116,12,131,0,68,0,93,21,92,2,125,5,125,6,124,1, + 160,13,116,14,124,6,131,1,161,1,114,96,124,5,124,0, + 124,1,131,2,125,2,124,2,124,4,95,15,1,0,113,99, + 113,75,100,1,83,0,124,3,116,16,117,0,114,131,116,0, + 124,2,100,6,131,2,114,130,9,0,124,2,160,17,124,0, + 161,1,125,7,110,10,35,0,4,0,116,2,121,155,1,0, + 1,0,1,0,89,0,110,10,37,0,124,7,114,130,103,0, + 124,4,95,18,110,3,124,3,124,4,95,18,124,4,106,18, + 103,0,107,2,114,153,124,1,114,153,116,19,124,1,131,1, + 100,7,25,0,125,8,124,4,106,18,160,20,124,8,161,1, + 1,0,124,4,83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0, + 0,0,114,142,0,0,0,114,19,0,0,0,114,103,0,0, + 0,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, + 114,76,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,136,0,0,0,114,163,0,0, + 0,218,9,95,80,79,80,85,76,65,84,69,114,205,0,0, + 0,114,201,0,0,0,114,73,0,0,0,114,61,0,0,0, + 41,9,114,141,0,0,0,90,8,108,111,99,97,116,105,111, + 110,114,163,0,0,0,114,201,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,205,0,0,0,90,7, + 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, + 114,7,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,214,2, + 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, + 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, + 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, + 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, + 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, + 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, + 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, + 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, + 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, + 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, + 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, + 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, + 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, + 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, + 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,52,0,0,0,9,0,116,0,160,1, + 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, + 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, + 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, + 111,112,101,110,95,114,101,103,105,115,116,114,121,43,3,0, + 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, + 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, + 7,153,1,24,7,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,9,0,0,0,67,0,0,0, + 115,136,0,0,0,124,0,106,0,114,7,124,0,106,1,125, + 2,110,3,124,0,106,2,125,2,124,2,160,3,124,1,100, + 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, + 3,166,2,125,3,9,0,124,0,160,6,124,3,161,1,53, + 0,125,4,116,7,160,8,124,4,100,4,161,2,125,5,100, + 0,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, + 48,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,5,83,0,35,0,4,0,116,9,121,67,1,0,1, + 0,1,0,89,0,100,0,83,0,37,0,119,0,41,5,78, + 122,5,37,100,46,37,100,114,45,0,0,0,41,2,114,162, + 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, + 114,10,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,89,0,0,0,114,16,0,0,0, + 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,215, + 0,0,0,114,214,0,0,0,90,10,81,117,101,114,121,86, + 97,108,117,101,114,76,0,0,0,41,6,218,3,99,108,115, + 114,162,0,0,0,90,12,114,101,103,105,115,116,114,121,95, + 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, + 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, + 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, + 105,115,116,114,121,50,3,0,0,115,34,0,0,0,6,2, + 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, + 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, + 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, + 0,171,4,47,11,175,1,56,0,176,3,47,11,179,3,56, + 0,184,7,65,2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124, + 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, + 11,100,0,83,0,9,0,116,1,124,4,131,1,1,0,110, + 11,35,0,4,0,116,2,121,60,1,0,1,0,1,0,89, + 0,100,0,83,0,37,0,116,3,131,0,68,0,93,26,92, + 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, + 1,114,57,116,6,160,7,124,1,124,5,124,1,124,4,131, + 2,124,4,100,1,166,3,125,7,124,7,2,0,1,0,83, + 0,113,31,100,0,83,0,119,0,41,2,78,114,203,0,0, + 0,41,8,114,222,0,0,0,114,75,0,0,0,114,76,0, + 0,0,114,207,0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114, + 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, + 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, + 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, + 0,0,218,9,102,105,110,100,95,115,112,101,99,65,3,0, + 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, + 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, + 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, + 0,140,4,17,0,145,7,27,7,188,1,27,7,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,67, + 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, + 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, + 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, + 83,0,41,3,122,106,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,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, + 122,112,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,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, + 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, + 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, + 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, + 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, + 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,81,3,0,0,115,14, + 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, + 2,114,9,0,0,0,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,115,112,101,99,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, - 3,124,1,124,2,161,2,125,3,124,3,100,2,117,1,114, - 19,124,3,106,4,83,0,100,2,83,0,41,3,122,106,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,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,122,112,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,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,78,169,5,114,100, - 0,0,0,114,101,0,0,0,114,102,0,0,0,114,227,0, - 0,0,114,165,0,0,0,169,4,114,222,0,0,0,114,164, - 0,0,0,114,66,0,0,0,114,211,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,102,105, - 110,100,95,109,111,100,117,108,101,79,3,0,0,115,14,0, - 0,0,6,7,2,2,4,254,12,3,8,1,6,1,4,2, - 114,10,0,0,0,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,169,2,78,78,114,70,0,0, - 0,41,15,114,151,0,0,0,114,150,0,0,0,114,152,0, - 0,0,114,153,0,0,0,114,220,0,0,0,114,219,0,0, - 0,218,11,95,77,83,95,87,73,78,68,79,87,83,218,18, - 69,88,84,69,78,83,73,79,78,95,83,85,70,70,73,88, - 69,83,114,218,0,0,0,218,12,115,116,97,116,105,99,109, - 101,116,104,111,100,114,217,0,0,0,218,11,99,108,97,115, - 115,109,101,116,104,111,100,114,224,0,0,0,114,227,0,0, - 0,114,230,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,215,0,0,0,29, - 3,0,0,115,30,0,0,0,8,0,4,2,2,3,2,255, - 2,4,2,255,12,3,2,2,10,1,2,6,10,1,2,14, - 12,1,2,15,16,1,114,10,0,0,0,114,215,0,0,0, - 99,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, + 110,100,95,109,111,100,117,108,101,169,2,78,78,114,69,0, + 0,0,41,15,114,149,0,0,0,114,148,0,0,0,114,150, + 0,0,0,114,151,0,0,0,114,218,0,0,0,114,217,0, + 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218, + 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, + 88,69,83,114,216,0,0,0,218,12,115,116,97,116,105,99, + 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, + 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, + 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,213,0,0,0,31,3,0,0,115,30,0,0,0,8, + 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, + 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, + 0,0,114,213,0,0,0,99,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,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,31,124,4,100,5,107,3,83, + 0,41,7,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,3,0,0,0,114,97,0,0,0,114,0,0,0, + 0,114,45,0,0,0,218,8,95,95,105,110,105,116,95,95, + 78,41,4,114,73,0,0,0,114,202,0,0,0,114,125,0, + 0,0,114,104,0,0,0,41,5,114,143,0,0,0,114,162, + 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, + 0,103,3,0,0,115,8,0,0,0,18,3,16,1,14,1, + 16,1,114,9,0,0,0,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,1,0, + 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,169, + 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, + 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, + 101,111,3,0,0,243,2,0,0,0,4,0,114,9,0,0, + 0,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,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,18,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, + 142,0,0,0,114,89,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,143,0,0,0,218,6,109,111,100, + 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, + 218,11,101,120,101,99,95,109,111,100,117,108,101,114,3,0, + 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, + 20,2,114,9,0,0,0,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,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,2,122,26,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,78,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,143,0,0,0,114,162,0,0,0,32,32,114, + 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, + 101,122,3,0,0,115,2,0,0,0,12,3,114,9,0,0, + 0,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,205,0,0,0,114,238,0,0,0,114,244,0, + 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,234,0,0,0,98,3,0,0,115,12,0,0,0,8, + 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, + 114,234,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4, + 0,0,0,116,0,130,1,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,143,0,0,0,114, + 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, + 104,95,109,116,105,109,101,130,3,0,0,115,2,0,0,0, + 4,6,114,9,0,0,0,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,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,31,124,4,100,5,107,3,83,0,41,7,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,3,0,0,0, - 114,98,0,0,0,114,0,0,0,0,114,45,0,0,0,218, - 8,95,95,105,110,105,116,95,95,78,41,4,114,75,0,0, - 0,114,204,0,0,0,114,126,0,0,0,114,105,0,0,0, - 41,5,114,144,0,0,0,114,164,0,0,0,114,121,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,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,207,0,0,0,101, - 3,0,0,115,8,0,0,0,18,3,16,1,14,1,16,1, - 114,10,0,0,0,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,1,0,0,0, - 67,0,0,0,114,24,0,0,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,7,0,0,0,169,2,114, - 144,0,0,0,114,211,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,13,99,114,101,97,116,101, - 95,109,111,100,117,108,101,109,3,0,0,243,2,0,0,0, - 4,0,114,10,0,0,0,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,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,18,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,151,0,0,0,114,143,0,0,0,114,90,0,0,0,114, - 160,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,157,0,0,0,41,3,114,144,0,0, - 0,218,6,109,111,100,117,108,101,114,189,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,101, - 120,101,99,95,109,111,100,117,108,101,112,3,0,0,115,12, - 0,0,0,12,2,8,1,4,1,8,1,4,255,20,2,114, - 10,0,0,0,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,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,2,122,26,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,78,41,2,114,160,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,144,0,0,0,114,164,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,11,108,111,97,100,95, - 109,111,100,117,108,101,120,3,0,0,115,2,0,0,0,12, - 3,114,10,0,0,0,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,151,0,0,0,114,150,0,0,0,114,152, - 0,0,0,114,153,0,0,0,114,207,0,0,0,114,240,0, - 0,0,114,246,0,0,0,114,249,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,236,0,0,0,96,3,0,0,115,12,0,0,0,8,0, - 4,2,8,3,8,8,8,3,12,8,114,10,0,0,0,114, - 236,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4,0, - 0,0,116,0,130,1,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,77,0,0,0,169,2,114,144,0,0,0,114,66, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,10,112,97,116,104,95,109,116,105,109,101,128,3, - 0,0,115,2,0,0,0,4,6,114,10,0,0,0,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,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, - 3,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,194,0,0,0,78,41,1,114,252,0,0, - 0,114,251,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,10,112,97,116,104,95,115,116,97,116, - 115,136,3,0,0,115,2,0,0,0,14,12,114,10,0,0, - 0,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,67,0,0,0,115, - 12,0,0,0,124,0,160,0,124,2,124,3,161,2,83,0, - 41,2,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,78,41,1,218,8,115,101,116, - 95,100,97,116,97,41,4,114,144,0,0,0,114,135,0,0, - 0,90,10,99,97,99,104,101,95,112,97,116,104,114,42,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,15,95,99,97,99,104,101,95,98,121,116,101,99,111, - 100,101,150,3,0,0,115,2,0,0,0,12,8,114,10,0, - 0,0,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,1,0,0, - 0,67,0,0,0,114,24,0,0,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,7,0,0,0,41,3,114,144,0,0, - 0,114,66,0,0,0,114,42,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,254,0,0,0,160, - 3,0,0,114,241,0,0,0,114,10,0,0,0,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,8,0,0,0,67,0,0,0,115,70,0,0,0,124,0, - 160,0,124,1,161,1,125,2,9,0,124,0,160,1,124,2, - 161,1,125,3,116,4,124,3,131,1,83,0,35,0,4,0, - 116,2,121,34,1,0,125,4,1,0,116,3,100,1,124,1, - 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, - 37,0,119,0,41,4,122,52,67,111,110,99,114,101,116,101, + 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,3,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,192,0, + 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, + 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, + 116,115,138,3,0,0,115,2,0,0,0,14,12,114,9,0, + 0,0,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,67,0,0,0, + 115,12,0,0,0,124,0,160,0,124,2,124,3,161,2,83, + 0,41,2,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,78,41,1,218,8,115,101, + 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, + 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, + 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, + 97,99,104,101,95,98,121,116,101,99,111,100,101,152,3,0, + 0,115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0, + 114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, + 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, + 0,0,0,162,3,0,0,114,239,0,0,0,114,9,0,0, + 0,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,8,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,124,1,161,1,125,2,9,0,124,0, + 160,1,124,2,161,1,125,3,116,4,124,3,131,1,83,0, + 35,0,4,0,116,2,121,34,1,0,125,4,1,0,116,3, + 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, + 126,4,119,1,37,0,119,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,140,0,0,0,78,41, + 5,114,202,0,0,0,218,8,103,101,116,95,100,97,116,97, + 114,76,0,0,0,114,142,0,0,0,114,199,0,0,0,41, + 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, + 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, + 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, + 169,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, + 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, + 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, + 150,7,29,7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,67,0,0,0,115,22,0,0, + 0,116,0,160,1,116,2,124,1,124,2,100,1,100,2,124, + 3,100,3,166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0, + 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, + 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, + 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, + 111,117,114,99,101,95,116,111,95,99,111,100,101,179,3,0, + 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, + 0,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,9,0,0,0,67, + 0,0,0,115,28,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,9,0,116,1,124,2,131,1,125,8, + 110,13,35,0,4,0,116,2,144,1,121,13,1,0,1,0, + 1,0,100,1,125,8,89,0,110,147,37,0,9,0,124,0, + 160,3,124,2,161,1,125,9,110,11,35,0,4,0,116,4, + 144,1,121,12,1,0,1,0,1,0,89,0,110,129,37,0, + 116,5,124,9,100,4,25,0,131,1,125,3,9,0,124,0, + 160,6,124,8,161,1,125,10,110,11,35,0,4,0,116,4, + 144,1,121,11,1,0,1,0,1,0,89,0,110,105,37,0, + 124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8, + 107,3,125,7,116,9,106,10,100,10,107,3,114,140,124,7, + 115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0,124,1, + 124,11,131,5,1,0,110,13,35,0,4,0,116,15,116,16, + 102,2,144,1,121,10,1,0,1,0,1,0,89,0,110,16, + 37,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,114,189,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,1, + 115,7,124,8,100,1,117,1,144,1,114,7,124,3,100,1, + 117,1,144,1,114,7,124,6,114,233,124,5,100,1,117,0, + 114,226,116,9,160,11,124,4,161,1,125,5,116,23,124,14, + 124,5,124,7,131,3,125,10,110,8,116,24,124,14,124,3, + 116,25,124,4,131,1,131,3,125,10,9,0,124,0,160,26, + 124,2,124,8,124,10,161,3,1,0,124,14,83,0,35,0, + 4,0,116,2,144,1,121,9,1,0,1,0,1,0,89,0, + 124,14,83,0,37,0,124,14,83,0,119,0,119,0,119,0, + 119,0,119,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,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,141,0,0,0,78,41,5,114,204,0, - 0,0,218,8,103,101,116,95,100,97,116,97,114,77,0,0, - 0,114,143,0,0,0,114,201,0,0,0,41,5,114,144,0, - 0,0,114,164,0,0,0,114,66,0,0,0,114,199,0,0, - 0,218,3,101,120,99,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,10,103,101,116,95,115,111,117,114,99, - 101,167,3,0,0,115,26,0,0,0,10,2,2,1,10,1, - 8,4,2,128,12,253,4,1,2,1,4,255,2,1,2,255, - 10,128,2,255,115,20,0,0,0,134,5,15,0,143,7,33, - 7,150,7,29,7,157,4,33,7,162,1,33,7,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,131,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,9,0,0,0,67,0,0,0,115,22,0, - 0,0,116,0,160,1,116,2,124,1,124,2,100,1,100,2, - 124,3,100,3,166,6,83,0,41,5,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,244, - 0,0,0,84,41,2,218,12,100,111,110,116,95,105,110,104, - 101,114,105,116,114,109,0,0,0,78,41,3,114,160,0,0, - 0,114,243,0,0,0,218,7,99,111,109,112,105,108,101,41, - 4,114,144,0,0,0,114,42,0,0,0,114,66,0,0,0, - 114,3,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,14,115,111,117,114,99,101,95,116,111,95, - 99,111,100,101,177,3,0,0,115,6,0,0,0,12,5,4, - 1,6,255,114,10,0,0,0,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,9,0,0,0,67,0,0,0,115,28,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,9,0,116, - 1,124,2,131,1,125,8,110,13,35,0,4,0,116,2,144, - 1,121,13,1,0,1,0,1,0,100,1,125,8,89,0,110, - 147,37,0,9,0,124,0,160,3,124,2,161,1,125,9,110, - 11,35,0,4,0,116,4,144,1,121,12,1,0,1,0,1, - 0,89,0,110,129,37,0,116,5,124,9,100,4,25,0,131, - 1,125,3,9,0,124,0,160,6,124,8,161,1,125,10,110, - 11,35,0,4,0,116,4,144,1,121,11,1,0,1,0,1, - 0,89,0,110,105,37,0,124,1,124,8,100,5,156,2,125, - 11,9,0,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,114,141,124, - 12,100,9,64,0,100,8,107,3,125,7,116,9,106,10,100, - 10,107,3,114,140,124,7,115,122,116,9,106,10,100,11,107, - 2,114,140,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,10,116,14,124,10,124,3,124, - 9,100,12,25,0,124,1,124,11,131,5,1,0,110,13,35, - 0,4,0,116,15,116,16,102,2,144,1,121,10,1,0,1, - 0,1,0,89,0,110,16,37,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,114,189,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,1,115,7,124,8,100,1,117,1,144, - 1,114,7,124,3,100,1,117,1,144,1,114,7,124,6,114, - 233,124,5,100,1,117,0,114,226,116,9,160,11,124,4,161, - 1,125,5,116,23,124,14,124,5,124,7,131,3,125,10,110, - 8,116,24,124,14,124,3,116,25,124,4,131,1,131,3,125, - 10,9,0,124,0,160,26,124,2,124,8,124,10,161,3,1, - 0,124,14,83,0,35,0,4,0,116,2,144,1,121,9,1, - 0,1,0,1,0,89,0,124,14,83,0,37,0,124,14,83, - 0,119,0,119,0,119,0,119,0,119,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,194,0,0,0,114,184,0,0,0,114,170,0,0,0,114, - 3,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,142,0,0,0,114,133,0,0,0,114,135, - 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,204,0,0,0,114, - 122,0,0,0,114,108,0,0,0,114,253,0,0,0,114,77, - 0,0,0,114,34,0,0,0,114,0,1,0,0,114,177,0, - 0,0,218,10,109,101,109,111,114,121,118,105,101,119,114,188, - 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,182,0,0,0,218, - 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, - 69,82,114,183,0,0,0,114,181,0,0,0,114,143,0,0, - 0,114,175,0,0,0,114,160,0,0,0,114,174,0,0,0, - 114,190,0,0,0,114,6,1,0,0,114,16,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,196,0,0,0,114,195,0,0,0,114,4, - 0,0,0,114,255,0,0,0,41,15,114,144,0,0,0,114, - 164,0,0,0,114,135,0,0,0,114,179,0,0,0,114,199, - 0,0,0,114,182,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,133,0,0,0,218,2,115,116,114,42,0,0,0, - 114,176,0,0,0,114,17,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,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,242,0,0,0,185,3,0,0,115,188,0,0,0, - 10,7,4,1,4,1,4,1,4,1,4,1,2,1,10,1, - 2,128,14,1,8,1,2,128,2,2,12,1,2,128,14,1, - 4,1,2,128,12,2,2,1,12,1,2,128,14,1,4,1, - 2,128,2,3,2,1,6,254,2,4,12,1,16,1,12,1, - 4,1,12,1,10,1,2,1,2,255,8,2,2,254,10,3, - 4,1,2,1,2,1,4,254,8,4,2,1,4,255,2,128, - 2,3,2,1,2,1,6,1,2,1,2,1,4,251,4,128, - 18,7,4,1,2,128,8,2,2,1,4,255,6,2,2,1, - 2,1,6,254,8,3,10,1,12,1,12,1,18,1,6,1, - 4,255,4,2,8,1,10,1,14,1,6,2,6,1,4,255, - 2,2,14,1,4,3,2,128,14,254,2,1,4,1,2,128, - 4,0,2,254,2,233,2,225,2,250,2,251,115,80,0,0, - 0,144,4,21,0,149,10,33,7,163,5,41,0,169,8,51, - 7,187,5,65,1,0,193,1,8,65,11,7,193,18,65,5, - 66,24,0,194,24,10,66,36,7,195,50,7,67,59,0,195, - 59,8,68,6,7,196,9,1,68,6,7,196,10,1,66,36, - 7,196,11,1,65,11,7,196,12,1,51,7,196,13,1,33, - 7,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,151,0,0,0, - 114,150,0,0,0,114,152,0,0,0,114,252,0,0,0,114, - 253,0,0,0,114,255,0,0,0,114,254,0,0,0,114,2, - 1,0,0,114,6,1,0,0,114,242,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,250,0,0,0,126,3,0,0,115,16,0,0,0,8, - 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, - 10,0,0,0,114,250,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,0,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,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,135,0,4,0,90,12,83,0,41, - 16,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,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,184,0,0,0,41,3,114,144,0,0,0,114,164,0,0, - 0,114,66,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,237,0,0,0,19,4,0,0,115,4, - 0,0,0,6,3,10,1,114,10,0,0,0,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,67,0,0,0,243,24,0,0,0,124,0,106,0,124, - 1,106,0,107,2,111,11,124,0,106,1,124,1,106,1,107, - 2,83,0,114,70,0,0,0,169,2,218,9,95,95,99,108, - 97,115,115,95,95,114,157,0,0,0,169,2,114,144,0,0, - 0,90,5,111,116,104,101,114,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,6,95,95,101,113,95,95,25, - 4,0,0,243,6,0,0,0,12,1,10,1,2,255,114,10, - 0,0,0,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,3,0,0,0,67,0,0,0,243,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,70,0,0,0,169,3,218,4,104,97,115, - 104,114,142,0,0,0,114,66,0,0,0,169,1,114,144,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,8,95,95,104,97,115,104,95,95,29,4,0,0,243, - 2,0,0,0,20,1,114,10,0,0,0,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,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,2,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,41,3,218,5,115,117,112,101,114,114,12,1,0, - 0,114,249,0,0,0,114,248,0,0,0,169,1,114,15,1, - 0,0,114,7,0,0,0,114,8,0,0,0,114,249,0,0, - 0,32,4,0,0,115,2,0,0,0,16,10,114,10,0,0, - 0,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,1,0,0,0,67,0,0,0,243,6, - 0,0,0,124,0,106,0,83,0,169,2,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,78,114,72,0,0,0,114,248,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,204,0,0,0,44,4,0,0,243,2,0,0,0,6, - 3,114,10,0,0,0,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,9,0,0,0, - 67,0,0,0,115,136,0,0,0,116,0,124,0,116,1,116, - 2,102,2,131,2,114,38,116,3,160,4,116,5,124,1,131, - 1,161,1,53,0,125,2,124,2,160,6,161,0,2,0,100, - 1,4,0,4,0,131,3,1,0,83,0,35,0,49,0,115, - 30,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,100,1,83,0,116,3,160,7,124,1,100,2,161,2,53, - 0,125,2,124,2,160,6,161,0,2,0,100,1,4,0,4, - 0,131,3,1,0,83,0,35,0,49,0,115,60,119,4,37, - 0,1,0,1,0,1,0,89,0,1,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,186,0,0,0,114,250,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,92,0,0,0,90,9,111,112,101,110,95,99,111,100, - 101,114,110,0,0,0,90,4,114,101,97,100,114,93,0,0, - 0,41,3,114,144,0,0,0,114,66,0,0,0,114,95,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,0,1,0,0,49,4,0,0,115,22,0,0,0,14, + 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,192,0,0,0,114,182, + 0,0,0,114,168,0,0,0,114,3,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,141,0, + 0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0, + 0,0,114,251,0,0,0,114,76,0,0,0,114,34,0,0, + 0,114,254,0,0,0,114,175,0,0,0,218,10,109,101,109, + 111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77, + 65,71,73,67,95,78,85,77,66,69,82,114,181,0,0,0, + 114,179,0,0,0,114,142,0,0,0,114,173,0,0,0,114, + 158,0,0,0,114,172,0,0,0,114,188,0,0,0,114,4, + 1,0,0,114,16,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,194,0, + 0,0,114,193,0,0,0,114,4,0,0,0,114,253,0,0, + 0,41,15,114,143,0,0,0,114,162,0,0,0,114,134,0, + 0,0,114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0, + 218,2,115,116,114,42,0,0,0,114,174,0,0,0,114,17, + 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,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, + 114,240,0,0,0,187,3,0,0,115,188,0,0,0,10,7, + 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, + 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, + 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, + 2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1, + 12,1,10,1,2,1,2,255,8,2,2,254,10,3,4,1, + 2,1,2,1,4,254,8,4,2,1,4,255,2,128,2,3, + 2,1,2,1,6,1,2,1,2,1,4,251,4,128,18,7, + 4,1,2,128,8,2,2,1,4,255,6,2,2,1,2,1, + 6,254,8,3,10,1,12,1,12,1,18,1,6,1,4,255, + 4,2,8,1,10,1,14,1,6,2,6,1,4,255,2,2, + 14,1,4,3,2,128,14,254,2,1,4,1,2,128,4,0, + 2,254,2,233,2,225,2,250,2,251,115,80,0,0,0,144, + 4,21,0,149,10,33,7,163,5,41,0,169,8,51,7,187, + 5,65,1,0,193,1,8,65,11,7,193,18,65,5,66,24, + 0,194,24,10,66,36,7,195,50,7,67,59,0,195,59,8, + 68,6,7,196,9,1,68,6,7,196,10,1,66,36,7,196, + 11,1,65,11,7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0, + 114,7,0,0,0,114,248,0,0,0,128,3,0,0,115,16, + 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, + 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,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,135,0,4,0,90, + 12,83,0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0, + 114,162,0,0,0,114,65,0,0,0,32,32,32,114,7,0, + 0,0,114,235,0,0,0,21,4,0,0,115,4,0,0,0, + 6,3,10,1,114,9,0,0,0,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,67, + 0,0,0,243,24,0,0,0,124,0,106,0,124,1,106,0, + 107,2,111,11,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,143,0,0,0,90,5, + 111,116,104,101,114,32,32,114,7,0,0,0,218,6,95,95, + 101,113,95,95,27,4,0,0,243,6,0,0,0,12,1,10, + 1,2,255,114,9,0,0,0,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,3,0,0,0,67,0,0,0, + 243,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,141,0,0,0,114,65,0,0,0, + 169,1,114,143,0,0,0,32,114,7,0,0,0,218,8,95, + 95,104,97,115,104,95,95,31,4,0,0,243,2,0,0,0, + 20,1,114,9,0,0,0,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,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,2,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,41, + 3,218,5,115,117,112,101,114,114,10,1,0,0,114,247,0, + 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,13, + 1,0,0,32,32,128,114,7,0,0,0,114,247,0,0,0, + 34,4,0,0,115,2,0,0,0,16,10,114,9,0,0,0, + 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,1,0,0,0,67,0,0,0,243,6,0, + 0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0, + 0,32,32,114,7,0,0,0,114,202,0,0,0,46,4,0, + 0,243,2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0, + 116,0,124,0,116,1,116,2,102,2,131,2,114,38,116,3, + 160,4,116,5,124,1,131,1,161,1,53,0,125,2,124,2, + 160,6,161,0,2,0,100,1,4,0,4,0,131,3,1,0, + 83,0,35,0,49,0,115,30,119,4,37,0,1,0,1,0, + 1,0,89,0,1,0,1,0,100,1,83,0,116,3,160,7, + 124,1,100,2,161,2,53,0,125,2,124,2,160,6,161,0, + 2,0,100,1,4,0,4,0,131,3,1,0,83,0,35,0, + 49,0,115,60,119,4,37,0,1,0,1,0,1,0,89,0, + 1,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,184,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,91,0,0,0,90,9,111, + 112,101,110,95,99,111,100,101,114,109,0,0,0,90,4,114, + 101,97,100,114,92,0,0,0,41,3,114,143,0,0,0,114, + 65,0,0,0,114,94,0,0,0,32,32,32,114,7,0,0, + 0,114,254,0,0,0,51,4,0,0,115,22,0,0,0,14, 2,16,1,6,1,14,255,22,128,4,0,14,3,6,1,14, 255,22,128,4,0,115,24,0,0,0,142,4,25,3,153,4, 29,11,158,3,29,11,172,4,55,3,183,4,59,11,188,3, @@ -1620,1199 +1597,1172 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, 10,70,105,108,101,82,101,97,100,101,114,41,2,218,17,105, 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, - 114,32,1,0,0,41,3,114,144,0,0,0,114,245,0,0, - 0,114,32,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,19,103,101,116,95,114,101,115,111,117, - 114,99,101,95,114,101,97,100,101,114,58,4,0,0,115,4, - 0,0,0,12,2,8,1,114,10,0,0,0,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,41,13,114,151, - 0,0,0,114,150,0,0,0,114,152,0,0,0,114,153,0, - 0,0,114,237,0,0,0,114,17,1,0,0,114,23,1,0, - 0,114,161,0,0,0,114,249,0,0,0,114,204,0,0,0, - 114,0,1,0,0,114,34,1,0,0,90,13,95,95,99,108, - 97,115,115,99,101,108,108,95,95,114,7,0,0,0,114,7, - 0,0,0,114,26,1,0,0,114,8,0,0,0,114,12,1, - 0,0,14,4,0,0,115,24,0,0,0,8,0,4,2,8, - 3,8,6,8,4,2,3,14,1,2,11,10,1,8,4,2, - 9,18,1,114,10,0,0,0,114,12,1,0,0,99,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,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,3,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,194,0,0,0,114,7,1,0,0,78,41,3,114,76,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,144,0,0,0,114,66,0,0, - 0,114,11,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,253,0,0,0,68,4,0,0,115,4, - 0,0,0,8,2,14,1,114,10,0,0,0,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,6,0,0,0,67,0,0,0,115,24, - 0,0,0,116,0,124,1,131,1,125,4,124,0,160,1,124, - 2,124,3,124,4,100,1,166,3,83,0,41,2,78,169,1, - 218,5,95,109,111,100,101,41,2,114,140,0,0,0,114,254, - 0,0,0,41,5,114,144,0,0,0,114,135,0,0,0,114, - 133,0,0,0,114,42,0,0,0,114,79,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,255,0, - 0,0,73,4,0,0,115,4,0,0,0,8,2,16,1,114, - 10,0,0,0,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,88,0,0,0,114,37,1,0,0, - 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, - 0,67,0,0,0,115,250,0,0,0,116,0,124,1,131,1, - 92,2,125,4,125,5,103,0,125,6,124,4,114,31,116,1, - 124,4,131,1,115,31,116,0,124,4,131,1,92,2,125,4, - 125,7,124,6,160,2,124,7,161,1,1,0,124,4,114,31, - 116,1,124,4,131,1,114,14,116,3,124,6,131,1,68,0, - 93,47,125,7,116,4,124,4,124,7,131,2,125,4,9,0, - 116,5,160,6,124,4,161,1,1,0,113,35,35,0,4,0, - 116,7,121,58,1,0,1,0,1,0,89,0,113,35,4,0, - 116,8,121,124,1,0,125,8,1,0,116,9,160,10,100,1, - 124,4,124,8,161,3,1,0,89,0,100,2,125,8,126,8, - 1,0,100,2,83,0,100,2,125,8,126,8,119,1,37,0, - 9,0,116,11,124,1,124,2,124,3,131,3,1,0,116,9, - 160,10,100,3,124,1,161,2,1,0,100,2,83,0,35,0, - 4,0,116,8,121,123,1,0,125,8,1,0,116,9,160,10, - 100,1,124,1,124,8,161,3,1,0,89,0,100,2,125,8, - 126,8,100,2,83,0,100,2,125,8,126,8,119,1,37,0, - 119,0,119,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,75,0,0,0,114,84,0,0,0,114,62,0,0,0, - 218,8,114,101,118,101,114,115,101,100,114,68,0,0,0,114, - 19,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,77,0,0, - 0,114,160,0,0,0,114,174,0,0,0,114,96,0,0,0, - 41,9,114,144,0,0,0,114,66,0,0,0,114,42,0,0, - 0,114,38,1,0,0,218,6,112,97,114,101,110,116,114,121, - 0,0,0,114,64,0,0,0,114,69,0,0,0,114,1,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,254,0,0,0,78,4,0,0,115,60,0,0,0,12, - 2,4,1,12,2,12,1,10,1,12,254,12,4,10,1,2, - 1,12,1,2,128,12,1,4,2,12,1,6,3,4,1,4, - 255,14,2,10,128,2,1,12,1,16,1,2,128,12,1,8, - 2,2,1,16,255,10,128,2,254,2,247,115,62,0,0,0, - 171,5,49,2,177,7,65,18,9,186,6,65,18,9,193,0, - 7,65,14,9,193,14,4,65,18,9,193,20,12,65,34,0, - 193,34,7,65,58,7,193,41,7,65,54,7,193,54,4,65, - 58,7,193,59,1,65,58,7,193,60,1,65,18,9,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,151,0,0, - 0,114,150,0,0,0,114,152,0,0,0,114,153,0,0,0, - 114,253,0,0,0,114,255,0,0,0,114,254,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,35,1,0,0,64,4,0,0,115,10,0,0, - 0,8,0,4,2,8,2,8,5,18,5,114,10,0,0,0, - 114,35,1,0,0,99,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,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,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,184,0,0,0,114,170,0,0, - 0,41,2,114,142,0,0,0,114,133,0,0,0,41,5,114, - 204,0,0,0,114,0,1,0,0,114,177,0,0,0,114,190, - 0,0,0,114,8,1,0,0,41,5,114,144,0,0,0,114, - 164,0,0,0,114,66,0,0,0,114,42,0,0,0,114,176, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,242,0,0,0,113,4,0,0,115,22,0,0,0, - 10,1,10,1,2,4,2,1,6,254,12,4,2,1,14,1, - 2,1,2,1,6,253,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114, - 24,0,0,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,7,0,0,0,114,248,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,2,1,0,0,129,4, - 0,0,114,25,0,0,0,114,10,0,0,0,122,31,83,111, + 114,29,1,0,0,41,3,114,143,0,0,0,114,243,0,0, + 0,114,29,1,0,0,32,32,32,114,7,0,0,0,218,19, + 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, + 100,101,114,60,4,0,0,115,4,0,0,0,12,2,8,1, + 114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0,0, + 0,114,150,0,0,0,114,151,0,0,0,114,235,0,0,0, + 114,15,1,0,0,114,21,1,0,0,114,159,0,0,0,114, + 247,0,0,0,114,202,0,0,0,114,254,0,0,0,114,31, + 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, + 95,95,41,1,114,13,1,0,0,64,114,7,0,0,0,114, + 10,1,0,0,16,4,0,0,115,24,0,0,0,8,0,4, + 2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,8, + 4,2,9,18,1,114,9,0,0,0,114,10,1,0,0,99, + 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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65, + 0,0,0,114,9,1,0,0,32,32,32,114,7,0,0,0, + 114,251,0,0,0,70,4,0,0,115,4,0,0,0,8,2, + 14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0, + 124,1,131,1,125,4,124,0,160,1,124,2,124,3,124,4, + 100,1,166,3,83,0,41,2,78,169,1,218,5,95,109,111, + 100,101,41,2,114,139,0,0,0,114,252,0,0,0,41,5, + 114,143,0,0,0,114,134,0,0,0,114,132,0,0,0,114, + 42,0,0,0,114,78,0,0,0,32,32,32,32,32,114,7, + 0,0,0,114,253,0,0,0,75,4,0,0,115,4,0,0, + 0,8,2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0, + 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, + 124,4,114,31,116,1,124,4,131,1,115,31,116,0,124,4, + 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, + 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, + 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, + 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, + 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, + 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, + 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, + 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, + 126,8,119,1,37,0,9,0,116,11,124,1,124,2,124,3, + 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, + 100,2,83,0,35,0,4,0,116,8,121,123,1,0,125,8, + 1,0,116,9,160,10,100,1,124,1,124,8,161,3,1,0, + 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, + 126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0, + 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, + 114,67,0,0,0,114,19,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,172,0,0, + 0,114,95,0,0,0,41,9,114,143,0,0,0,114,65,0, + 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, + 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, + 0,0,0,114,255,0,0,0,32,32,32,32,32,32,32,32, + 32,114,7,0,0,0,114,252,0,0,0,80,4,0,0,115, + 60,0,0,0,12,2,4,1,12,2,12,1,10,1,12,254, + 12,4,10,1,2,1,12,1,2,128,12,1,4,2,12,1, + 6,3,4,1,4,255,14,2,10,128,2,1,12,1,16,1, + 2,128,12,1,8,2,2,1,16,255,10,128,2,254,2,247, + 115,62,0,0,0,171,5,49,2,177,7,65,18,9,186,6, + 65,18,9,193,0,7,65,14,9,193,14,4,65,18,9,193, + 20,12,65,34,0,193,34,7,65,58,7,193,41,7,65,54, + 7,193,54,4,65,58,7,193,59,1,65,58,7,193,60,1, + 65,18,9,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,251,0,0,0,114,253,0,0,0,114, + 252,0,0,0,114,12,0,0,0,114,7,0,0,0,114,32, + 1,0,0,66,4,0,0,115,10,0,0,0,8,0,4,2, + 8,2,8,5,18,5,114,9,0,0,0,114,32,1,0,0, + 99,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,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,46,103,101,116,95,115,111,117,114,99,101,78,41,6, - 114,151,0,0,0,114,150,0,0,0,114,152,0,0,0,114, - 153,0,0,0,114,242,0,0,0,114,2,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,42,1,0,0,109,4,0,0,115,8,0,0,0, - 8,0,4,2,8,2,12,16,114,10,0,0,0,114,42,1, - 0,0,99,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,31,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,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,0,83,0,114,70,0,0,0,114,184,0, - 0,0,41,3,114,144,0,0,0,114,142,0,0,0,114,66, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,237,0,0,0,142,4,0,0,115,4,0,0,0, - 6,1,10,1,114,10,0,0,0,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,67,0,0,0,114,13,1,0, - 0,114,70,0,0,0,114,14,1,0,0,114,16,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 17,1,0,0,146,4,0,0,114,18,1,0,0,114,10,0, - 0,0,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,3,0,0,0,67, - 0,0,0,114,19,1,0,0,114,70,0,0,0,114,20,1, - 0,0,114,22,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,23,1,0,0,150,4,0,0,114, - 24,1,0,0,114,10,0,0,0,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,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,3,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,78,41,7,114,160,0,0,0,114, - 243,0,0,0,114,188,0,0,0,90,14,99,114,101,97,116, - 101,95,100,121,110,97,109,105,99,114,174,0,0,0,114,142, - 0,0,0,114,66,0,0,0,41,3,114,144,0,0,0,114, - 211,0,0,0,114,245,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,240,0,0,0,153,4,0, - 0,115,14,0,0,0,4,2,6,1,4,255,6,2,8,1, - 4,255,4,2,114,10,0,0,0,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,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,160,0,0,0,114,243, - 0,0,0,114,188,0,0,0,90,12,101,120,101,99,95,100, - 121,110,97,109,105,99,114,174,0,0,0,114,142,0,0,0, - 114,66,0,0,0,169,2,114,144,0,0,0,114,245,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,246,0,0,0,161,4,0,0,115,8,0,0,0,14,2, - 6,1,8,1,8,255,114,10,0,0,0,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,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,5,122,49,82,101, - 116,117,114,110,32,84,114,117,101,32,105,102,32,116,104,101, + 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,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,182,0,0,0,114,168,0,0,0,41,2,114,141, + 0,0,0,114,132,0,0,0,41,5,114,202,0,0,0,114, + 254,0,0,0,114,175,0,0,0,114,188,0,0,0,114,6, + 1,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, + 65,0,0,0,114,42,0,0,0,114,174,0,0,0,32,32, + 32,32,32,114,7,0,0,0,114,240,0,0,0,115,4,0, + 0,115,22,0,0,0,10,1,10,1,2,4,2,1,6,254, + 12,4,2,1,14,1,2,1,2,1,6,253,114,9,0,0, + 0,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,1,0,0, + 0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0, + 32,32,114,7,0,0,0,114,0,1,0,0,131,4,0,0, + 114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0, + 0,114,7,0,0,0,114,39,1,0,0,111,4,0,0,115, + 8,0,0,0,8,0,4,2,8,2,12,16,114,9,0,0, + 0,114,39,1,0,0,99,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,28, + 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,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,0,83,0,114,69,0,0, + 0,114,182,0,0,0,41,3,114,143,0,0,0,114,141,0, + 0,0,114,65,0,0,0,32,32,32,114,7,0,0,0,114, + 235,0,0,0,144,4,0,0,115,4,0,0,0,6,1,10, + 1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69, + 0,0,0,114,12,1,0,0,114,14,1,0,0,32,32,114, + 7,0,0,0,114,15,1,0,0,148,4,0,0,114,16,1, + 0,0,114,9,0,0,0,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, + 3,0,0,0,67,0,0,0,114,17,1,0,0,114,69,0, + 0,0,114,18,1,0,0,114,20,1,0,0,32,114,7,0, + 0,0,114,21,1,0,0,152,4,0,0,114,22,1,0,0, + 114,9,0,0,0,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, + 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,3,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,78,41,7,114,158,0,0,0,114,241,0,0,0, + 114,186,0,0,0,90,14,99,114,101,97,116,101,95,100,121, + 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, + 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, + 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, + 0,0,155,4,0,0,115,14,0,0,0,4,2,6,1,4, + 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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,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,32,105,115,32,97,32,112,97,99,107,97,103,101,46,114, - 3,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,51,0,0,0,115,28,0,0,0,129,0, - 124,0,93,9,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,237,0,0, - 0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0, - 0,0,170,4,0,0,115,6,0,0,0,6,128,2,1,20, - 255,114,10,0,0,0,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,46,60,108,111,99,97,108,115,62,46, - 60,103,101,110,101,120,112,114,62,78,41,4,114,75,0,0, - 0,114,66,0,0,0,218,3,97,110,121,114,233,0,0,0, - 114,248,0,0,0,114,7,0,0,0,114,46,1,0,0,114, - 8,0,0,0,114,207,0,0,0,167,4,0,0,115,8,0, - 0,0,14,2,12,1,2,1,8,255,114,10,0,0,0,122, - 30,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,1,0,0,0, - 67,0,0,0,114,24,0,0,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,7,0, - 0,0,114,248,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,242,0,0,0,173,4,0,0,114, - 25,0,0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, - 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,7,0,0,0, - 114,248,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,2,1,0,0,177,4,0,0,114,25,0, - 0,0,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,27,1,0, - 0,114,28,1,0,0,114,72,0,0,0,114,248,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 204,0,0,0,181,4,0,0,114,29,1,0,0,114,10,0, - 0,0,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,151,0,0,0,114,150,0,0, - 0,114,152,0,0,0,114,153,0,0,0,114,237,0,0,0, - 114,17,1,0,0,114,23,1,0,0,114,240,0,0,0,114, - 246,0,0,0,114,207,0,0,0,114,242,0,0,0,114,2, - 1,0,0,114,161,0,0,0,114,204,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,31,1,0,0,134,4,0,0,115,24,0,0,0,8, - 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, - 6,8,4,2,4,14,1,114,10,0,0,0,114,31,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100, - 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, - 24,83,0,41,25,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, - 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,70, - 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, - 97,116,104,114,137,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,12,95, - 112,97,116,104,95,102,105,110,100,101,114,169,4,114,144,0, - 0,0,114,142,0,0,0,114,66,0,0,0,90,11,112,97, - 116,104,95,102,105,110,100,101,114,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,237,0,0,0,194,4,0, - 0,115,8,0,0,0,6,1,6,1,14,1,10,1,114,10, - 0,0,0,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, + 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,241,0,0,0,114,186,0,0,0,90,12,101, + 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, + 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, + 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, + 0,0,163,4,0,0,115,8,0,0,0,14,2,6,1,8, + 1,8,255,114,9,0,0,0,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,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, + 2,116,2,135,2,102,1,100,2,100,3,132,8,116,3,68, + 0,131,1,131,1,83,0,41,5,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,3,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,51,0,0,0,115,28,0,0,0,129,0,124,0,93, + 9,125,1,136,2,100,0,124,1,23,0,107,2,86,0,1, + 0,113,2,100,1,83,0,41,2,114,235,0,0,0,78,114, + 12,0,0,0,41,3,114,5,0,0,0,218,6,115,117,102, + 102,105,120,218,9,102,105,108,101,95,110,97,109,101,32,32, + 128,114,7,0,0,0,114,8,0,0,0,172,4,0,0,115, + 6,0,0,0,6,128,2,1,20,255,114,9,0,0,0,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,46, + 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, + 114,62,78,41,4,114,73,0,0,0,114,65,0,0,0,218, + 3,97,110,121,114,231,0,0,0,41,3,114,143,0,0,0, + 114,162,0,0,0,114,42,1,0,0,32,32,64,114,7,0, + 0,0,114,205,0,0,0,169,4,0,0,115,8,0,0,0, + 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0, + 114,246,0,0,0,32,32,114,7,0,0,0,114,240,0,0, + 0,175,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114,7,0, + 0,0,114,0,1,0,0,179,4,0,0,114,25,0,0,0, + 114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0,0,114, + 25,1,0,0,114,74,0,0,0,114,246,0,0,0,32,32, + 114,7,0,0,0,114,202,0,0,0,183,4,0,0,114,26, + 1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1,0,0, + 114,238,0,0,0,114,244,0,0,0,114,205,0,0,0,114, + 240,0,0,0,114,0,1,0,0,114,159,0,0,0,114,202, + 0,0,0,114,12,0,0,0,114,7,0,0,0,114,28,1, + 0,0,136,4,0,0,115,24,0,0,0,8,0,4,2,8, + 6,8,4,8,4,8,3,8,8,8,6,8,6,8,4,2, + 4,14,1,114,9,0,0,0,114,28,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, + 0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100,21,132, + 0,90,13,100,22,100,23,132,0,90,14,100,24,83,0,41, + 25,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,99,4,0,0, 0,0,0,0,0,0,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,15, - 100,3,83,0,124,1,100,4,102,2,83,0,41,6,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,98, - 0,0,0,114,11,0,0,0,41,2,114,16,0,0,0,114, - 66,0,0,0,90,8,95,95,112,97,116,104,95,95,78,41, - 2,114,49,1,0,0,114,105,0,0,0,41,4,114,144,0, - 0,0,114,41,1,0,0,218,3,100,111,116,90,2,109,101, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0,0,41, + 6,218,5,95,110,97,109,101,218,5,95,112,97,116,104,114, + 136,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,12,95,112,97,116,104, + 95,102,105,110,100,101,114,169,4,114,143,0,0,0,114,141, + 0,0,0,114,65,0,0,0,90,11,112,97,116,104,95,102, + 105,110,100,101,114,32,32,32,32,114,7,0,0,0,114,235, + 0,0,0,196,4,0,0,115,8,0,0,0,6,1,6,1, + 14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4,102,2, + 83,0,41,6,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,97,0,0,0,114,10,0,0,0,41,2, + 114,16,0,0,0,114,65,0,0,0,90,8,95,95,112,97, + 116,104,95,95,78,41,2,114,45,1,0,0,114,104,0,0, + 0,41,4,114,143,0,0,0,114,38,1,0,0,218,3,100, + 111,116,90,2,109,101,32,32,32,32,114,7,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,200,4,0,0,115,8,0,0, - 0,18,2,8,1,4,2,8,3,114,10,0,0,0,122,38, + 116,104,95,110,97,109,101,115,202,4,0,0,115,8,0,0, + 0,18,2,8,1,4,2,8,3,114,9,0,0,0,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,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,70,0,0, - 0,41,4,114,56,1,0,0,114,156,0,0,0,114,16,0, - 0,0,218,7,109,111,100,117,108,101,115,41,3,114,144,0, + 106,3,124,1,25,0,124,2,131,2,83,0,114,69,0,0, + 0,41,4,114,52,1,0,0,114,154,0,0,0,114,16,0, + 0,0,218,7,109,111,100,117,108,101,115,41,3,114,143,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,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,51,1,0,0,210,4,0,0,115,4, - 0,0,0,12,1,16,1,114,10,0,0,0,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,4,0,0,0,67,0, - 0,0,115,80,0,0,0,116,0,124,0,160,1,161,0,131, - 1,125,1,124,1,124,0,106,2,107,3,114,37,124,0,160, - 3,124,0,106,4,124,1,161,2,125,2,124,2,100,0,117, - 1,114,34,124,2,106,5,100,0,117,0,114,34,124,2,106, - 6,114,34,124,2,106,6,124,0,95,7,124,1,124,0,95, - 2,124,0,106,7,83,0,114,70,0,0,0,41,8,114,137, - 0,0,0,114,51,1,0,0,114,52,1,0,0,114,53,1, - 0,0,114,49,1,0,0,114,165,0,0,0,114,203,0,0, - 0,114,50,1,0,0,41,3,114,144,0,0,0,90,11,112, - 97,114,101,110,116,95,112,97,116,104,114,211,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,12, - 95,114,101,99,97,108,99,117,108,97,116,101,214,4,0,0, - 115,16,0,0,0,12,2,10,1,14,1,18,3,6,1,8, - 1,6,1,6,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0,243,12,0,0, - 0,116,0,124,0,160,1,161,0,131,1,83,0,114,70,0, - 0,0,41,2,218,4,105,116,101,114,114,58,1,0,0,114, - 22,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,8,95,95,105,116,101,114,95,95,227,4,0, - 0,243,2,0,0,0,12,1,114,10,0,0,0,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,67,0,0,0,115,12,0,0,0, - 124,0,160,0,161,0,124,1,25,0,83,0,114,70,0,0, - 0,169,1,114,58,1,0,0,41,2,114,144,0,0,0,218, - 5,105,110,100,101,120,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,11,95,95,103,101,116,105,116,101,109, - 95,95,230,4,0,0,114,62,1,0,0,114,10,0,0,0, - 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,67,0,0, - 0,115,14,0,0,0,124,2,124,0,106,0,124,1,60,0, - 100,0,83,0,114,70,0,0,0,41,1,114,50,1,0,0, - 41,3,114,144,0,0,0,114,64,1,0,0,114,66,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,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,14,1,114,10,0,0,0,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,3,0,0,0,67,0,0,0,114,59, - 1,0,0,114,70,0,0,0,41,2,114,4,0,0,0,114, - 58,1,0,0,114,22,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,7,95,95,108,101,110,95, - 95,236,4,0,0,114,62,1,0,0,114,10,0,0,0,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,3,0,0,0,67,0,0,0,243,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,90,0,0,0,114,50,1, - 0,0,114,22,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,8,95,95,114,101,112,114,95,95, - 239,4,0,0,114,62,1,0,0,114,10,0,0,0,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,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,70,0, - 0,0,114,63,1,0,0,169,2,114,144,0,0,0,218,4, - 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, + 114,95,110,97,109,101,32,32,32,114,7,0,0,0,114,47, + 1,0,0,212,4,0,0,115,4,0,0,0,12,1,16,1, + 114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0,0,0, + 116,0,124,0,160,1,161,0,131,1,125,1,124,1,124,0, + 106,2,107,3,114,37,124,0,160,3,124,0,106,4,124,1, + 161,2,125,2,124,2,100,0,117,1,114,34,124,2,106,5, + 100,0,117,0,114,34,124,2,106,6,114,34,124,2,106,6, + 124,0,95,7,124,1,124,0,95,2,124,0,106,7,83,0, + 114,69,0,0,0,41,8,114,136,0,0,0,114,47,1,0, + 0,114,48,1,0,0,114,49,1,0,0,114,45,1,0,0, + 114,163,0,0,0,114,201,0,0,0,114,46,1,0,0,41, + 3,114,143,0,0,0,90,11,112,97,114,101,110,116,95,112, + 97,116,104,114,209,0,0,0,32,32,32,114,7,0,0,0, + 218,12,95,114,101,99,97,108,99,117,108,97,116,101,216,4, + 0,0,115,16,0,0,0,12,2,10,1,14,1,18,3,6, + 1,8,1,6,1,6,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,12, + 0,0,0,116,0,124,0,160,1,161,0,131,1,83,0,114, + 69,0,0,0,41,2,218,4,105,116,101,114,114,54,1,0, + 0,114,20,1,0,0,32,114,7,0,0,0,218,8,95,95, + 105,116,101,114,95,95,229,4,0,0,243,2,0,0,0,12, + 1,114,9,0,0,0,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, + 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,54,1,0, + 0,41,2,114,143,0,0,0,218,5,105,110,100,101,120,32, + 32,114,7,0,0,0,218,11,95,95,103,101,116,105,116,101, + 109,95,95,232,4,0,0,114,58,1,0,0,114,9,0,0, + 0,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,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,46,1,0, + 0,41,3,114,143,0,0,0,114,60,1,0,0,114,65,0, + 0,0,32,32,32,114,7,0,0,0,218,11,95,95,115,101, + 116,105,116,101,109,95,95,235,4,0,0,115,2,0,0,0, + 14,1,114,9,0,0,0,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, + 3,0,0,0,67,0,0,0,114,55,1,0,0,114,69,0, + 0,0,41,2,114,4,0,0,0,114,54,1,0,0,114,20, + 1,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, + 95,95,238,4,0,0,114,58,1,0,0,114,9,0,0,0, + 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,3,0,0,0,67,0,0,0,243,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,89,0,0,0,114,46, + 1,0,0,114,20,1,0,0,32,114,7,0,0,0,218,8, + 95,95,114,101,112,114,95,95,241,4,0,0,114,58,1,0, + 0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32,114,7, 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,242,4,0,0,114,62,1,0,0,114,10,0,0,0,122, + 95,244,4,0,0,114,58,1,0,0,114,9,0,0,0,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,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,70,0,0,0,41,2,114,50,1, - 0,0,114,62,0,0,0,114,70,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,62,0,0,0, - 245,4,0,0,243,2,0,0,0,16,1,114,10,0,0,0, - 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,15,114,151,0,0,0,114, - 150,0,0,0,114,152,0,0,0,114,153,0,0,0,114,237, - 0,0,0,114,56,1,0,0,114,51,1,0,0,114,58,1, - 0,0,114,61,1,0,0,114,65,1,0,0,114,66,1,0, - 0,114,67,1,0,0,114,69,1,0,0,114,72,1,0,0, - 114,62,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,48,1,0,0,187,4, - 0,0,115,26,0,0,0,8,0,4,1,8,6,8,6,8, - 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, - 3,114,10,0,0,0,114,48,1,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, - 115,88,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,100,18,132,0,90,12,100,19,83,0,41,20,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,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,70,0, - 0,0,41,2,114,48,1,0,0,114,50,1,0,0,114,54, - 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,237,0,0,0,251,4,0,0,115,2,0,0,0, - 18,1,114,10,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,24,0,0,0,116,0,160,1, - 100,1,116,2,161,2,1,0,100,2,160,3,124,0,106,4, - 161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,100,0, - 0,0,114,101,0,0,0,114,102,0,0,0,114,90,0,0, - 0,114,151,0,0,0,41,1,114,245,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,109,111, - 100,117,108,101,95,114,101,112,114,254,4,0,0,115,8,0, - 0,0,6,7,2,1,4,255,12,2,114,10,0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,0,0,0,41,2,78,84,114,7,0,0,0, - 114,248,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,207,0,0,0,9,5,0,0,243,2,0, - 0,0,4,1,114,10,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0, - 41,2,78,114,11,0,0,0,114,7,0,0,0,114,248,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,2,1,0,0,12,5,0,0,114,76,1,0,0,114, - 10,0,0,0,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,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,11, - 0,0,0,122,8,60,115,116,114,105,110,103,62,114,244,0, - 0,0,84,41,1,114,4,1,0,0,41,1,114,5,1,0, - 0,114,248,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,242,0,0,0,15,5,0,0,114,73, - 1,0,0,114,10,0,0,0,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, - 1,0,0,0,67,0,0,0,114,24,0,0,0,114,238,0, - 0,0,114,7,0,0,0,114,239,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,240,0,0,0, - 18,5,0,0,114,241,0,0,0,114,10,0,0,0,122,30, + 1,0,100,0,83,0,114,69,0,0,0,41,2,114,46,1, + 0,0,114,61,0,0,0,114,66,1,0,0,32,32,114,7, + 0,0,0,114,61,0,0,0,247,4,0,0,243,2,0,0, + 0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150,0,0, + 0,114,151,0,0,0,114,235,0,0,0,114,52,1,0,0, + 114,47,1,0,0,114,54,1,0,0,114,57,1,0,0,114, + 61,1,0,0,114,62,1,0,0,114,63,1,0,0,114,65, + 1,0,0,114,68,1,0,0,114,61,0,0,0,114,12,0, + 0,0,114,7,0,0,0,114,44,1,0,0,189,4,0,0, + 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, + 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, + 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, + 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,100,18,132,0,90,12,100,19,83,0,41,20,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, + 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,44,1,0,0,114,46,1,0,0,114,50,1,0, + 0,32,32,32,32,114,7,0,0,0,114,235,0,0,0,253, + 4,0,0,115,2,0,0,0,18,1,114,9,0,0,0,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,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 24,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 100,2,160,3,124,0,106,4,161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0,0,114, + 101,0,0,0,114,89,0,0,0,114,149,0,0,0,41,1, + 114,243,0,0,0,32,114,7,0,0,0,218,11,109,111,100, + 117,108,101,95,114,101,112,114,0,5,0,0,115,8,0,0, + 0,6,7,2,1,4,255,12,2,114,9,0,0,0,122,28, 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,1,0,0,0,67, - 0,0,0,115,4,0,0,0,100,0,83,0,114,70,0,0, - 0,114,7,0,0,0,114,43,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,246,0,0,0,21, - 5,0,0,114,76,1,0,0,114,10,0,0,0,122,28,95, + 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,1,0,0,0,67,0,0, + 0,114,24,0,0,0,41,2,78,84,114,12,0,0,0,114, + 246,0,0,0,32,32,114,7,0,0,0,114,205,0,0,0, + 11,5,0,0,243,2,0,0,0,4,1,114,9,0,0,0, + 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,1,0,0,0,67,0, + 0,0,114,24,0,0,0,41,2,78,114,10,0,0,0,114, + 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, + 114,0,1,0,0,14,5,0,0,114,72,1,0,0,114,9, + 0,0,0,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,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,10,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,32,32,114,7,0,0,0,114,240,0,0, + 0,17,5,0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, + 24,0,0,0,114,236,0,0,0,114,12,0,0,0,114,237, + 0,0,0,32,32,114,7,0,0,0,114,238,0,0,0,20, + 5,0,0,114,239,0,0,0,114,9,0,0,0,122,30,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,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, - 3,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,78,41,4, - 114,160,0,0,0,114,174,0,0,0,114,50,1,0,0,114, - 247,0,0,0,114,248,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,249,0,0,0,24,5,0, - 0,115,8,0,0,0,6,7,4,1,4,255,12,3,114,10, - 0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,67,0,0,0,115,22,0,0,0,100,1,100,2,108, - 0,109,1,125,2,1,0,124,2,124,0,106,2,131,1,83, - 0,41,3,78,114,0,0,0,0,41,1,218,15,78,97,109, - 101,115,112,97,99,101,82,101,97,100,101,114,41,3,114,33, - 1,0,0,114,77,1,0,0,114,50,1,0,0,41,3,114, - 144,0,0,0,114,245,0,0,0,114,77,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,34,1, - 0,0,36,5,0,0,115,4,0,0,0,12,1,10,1,114, - 10,0,0,0,122,36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,151,0, - 0,0,114,150,0,0,0,114,152,0,0,0,114,237,0,0, - 0,114,234,0,0,0,114,75,1,0,0,114,207,0,0,0, - 114,2,1,0,0,114,242,0,0,0,114,240,0,0,0,114, - 246,0,0,0,114,249,0,0,0,114,34,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,74,1,0,0,250,4,0,0,115,22,0,0,0, - 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, - 8,3,8,3,12,12,114,10,0,0,0,114,74,1,0,0, - 99,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,7, - 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, - 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, - 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, - 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, - 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, - 41,21,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,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, - 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, - 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, - 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, - 1,0,113,7,100,1,83,0,41,3,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,41,6,218, - 4,108,105,115,116,114,16,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,154,0,0,0,114,79,1,0,0, - 41,2,114,142,0,0,0,218,6,102,105,110,100,101,114,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,79, - 1,0,0,47,5,0,0,115,14,0,0,0,22,4,8,1, - 10,1,10,1,8,1,2,128,4,252,114,10,0,0,0,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,1,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,67,0, - 0,0,115,78,0,0,0,116,0,106,1,100,1,117,1,114, - 14,116,0,106,1,115,14,116,2,160,3,100,2,116,4,161, - 2,1,0,116,0,106,1,68,0,93,18,125,1,9,0,124, - 1,124,0,131,1,2,0,1,0,83,0,35,0,4,0,116, - 5,121,38,1,0,1,0,1,0,89,0,113,17,37,0,100, - 1,83,0,119,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,16,0,0,0,218,10,112,97,116,104,95,104, - 111,111,107,115,114,100,0,0,0,114,101,0,0,0,114,163, - 0,0,0,114,143,0,0,0,41,2,114,66,0,0,0,90, - 4,104,111,111,107,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, - 115,57,5,0,0,115,22,0,0,0,16,3,12,1,10,1, - 2,1,12,1,2,128,12,1,4,1,2,128,4,2,2,253, - 115,12,0,0,0,148,3,26,2,154,7,35,9,166,1,35, - 9,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,8,0,0,0,67,0,0,0,115,104, - 0,0,0,124,1,100,1,107,2,114,21,9,0,116,0,160, - 1,161,0,125,1,110,11,35,0,4,0,116,2,121,51,1, - 0,1,0,1,0,89,0,100,2,83,0,37,0,9,0,116, - 3,106,4,124,1,25,0,125,2,124,2,83,0,35,0,4, - 0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,11,0,0,0,78,41,7,114,19,0,0,0,114,83, - 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, - 100,69,114,114,111,114,114,16,0,0,0,114,81,1,0,0, - 218,8,75,101,121,69,114,114,111,114,114,85,1,0,0,41, - 3,114,222,0,0,0,114,66,0,0,0,114,83,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,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,70,5,0,0,115,36,0,0,0,8,8, - 2,1,10,1,2,128,12,1,6,3,2,128,2,1,10,1, - 4,4,2,128,12,253,10,1,12,1,4,1,2,128,2,253, - 2,250,115,24,0,0,0,133,4,10,0,138,7,20,7,150, - 5,29,0,157,17,49,7,178,1,49,7,179,1,20,7,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,4,0,0, - 0,67,0,0,0,115,138,0,0,0,116,0,124,2,100,1, - 131,2,114,27,116,1,160,2,124,2,161,1,155,0,100,2, - 157,2,125,3,116,3,160,4,124,3,116,5,161,2,1,0, - 124,2,160,6,124,1,161,1,92,2,125,4,125,5,110,21, - 116,1,160,2,124,2,161,1,155,0,100,3,157,2,125,3, - 116,3,160,4,124,3,116,5,161,2,1,0,124,2,160,7, - 124,1,161,1,125,4,103,0,125,5,124,4,100,0,117,1, - 114,58,116,1,160,8,124,1,124,4,161,2,83,0,116,1, - 160,9,124,1,100,0,161,2,125,6,124,5,124,6,95,10, - 124,6,83,0,41,4,78,114,162,0,0,0,122,53,46,102, - 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, - 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,116,111,32,102,105,110,100,95,108,111,97,100,101, - 114,40,41,122,53,46,102,105,110,100,95,115,112,101,99,40, + 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,1,0,0,0,67,0, + 0,0,115,4,0,0,0,100,0,83,0,114,69,0,0,0, + 114,12,0,0,0,114,40,1,0,0,32,32,114,7,0,0, + 0,114,244,0,0,0,23,5,0,0,114,72,1,0,0,114, + 9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172,0,0, + 0,114,46,1,0,0,114,245,0,0,0,114,246,0,0,0, + 32,32,114,7,0,0,0,114,247,0,0,0,26,5,0,0, + 115,8,0,0,0,6,7,4,1,4,255,12,3,114,9,0, + 0,0,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, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,67,0,0,0,115,22,0,0,0,100,1,100,2,108,0, + 109,1,125,2,1,0,124,2,124,0,106,2,131,1,83,0, + 41,3,78,114,0,0,0,0,41,1,218,15,78,97,109,101, + 115,112,97,99,101,82,101,97,100,101,114,41,3,114,30,1, + 0,0,114,73,1,0,0,114,46,1,0,0,41,3,114,143, + 0,0,0,114,243,0,0,0,114,73,1,0,0,32,32,32, + 114,7,0,0,0,114,31,1,0,0,38,5,0,0,115,4, + 0,0,0,12,1,10,1,114,9,0,0,0,122,36,95,78, + 97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0,0,114, + 150,0,0,0,114,235,0,0,0,114,232,0,0,0,114,71, + 1,0,0,114,205,0,0,0,114,0,1,0,0,114,240,0, + 0,0,114,238,0,0,0,114,244,0,0,0,114,247,0,0, + 0,114,31,1,0,0,114,12,0,0,0,114,7,0,0,0, + 114,70,1,0,0,252,4,0,0,115,22,0,0,0,8,0, + 8,1,2,3,10,1,8,10,8,3,8,3,8,3,8,3, + 8,3,12,12,114,9,0,0,0,114,70,1,0,0,99,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,7,100,6, + 100,7,132,0,131,1,90,8,101,7,100,8,100,9,132,0, + 131,1,90,9,101,7,100,19,100,11,100,12,132,1,131,1, + 90,10,101,7,100,20,100,13,100,14,132,1,131,1,90,11, + 101,7,100,19,100,15,100,16,132,1,131,1,90,12,101,4, + 100,17,100,18,132,0,131,1,90,13,100,10,83,0,41,21, + 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,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,64,0,0,0,116,0,116,1,106,2,160,3,161,0, + 131,1,68,0,93,22,92,2,125,0,125,1,124,1,100,1, + 117,0,114,20,116,1,106,2,124,0,61,0,113,7,116,4, + 124,1,100,2,131,2,114,29,124,1,160,5,161,0,1,0, + 113,7,100,1,83,0,41,3,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,41,6,218,4,108, + 105,115,116,114,16,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,75,1,0,0,41,2, + 114,141,0,0,0,218,6,102,105,110,100,101,114,32,32,114, + 7,0,0,0,114,75,1,0,0,49,5,0,0,115,14,0, + 0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252, + 114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,67,0,0,0,115,78,0,0,0,116,0,106, + 1,100,1,117,1,114,14,116,0,106,1,115,14,116,2,160, + 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, + 18,125,1,9,0,124,1,124,0,131,1,2,0,1,0,83, + 0,35,0,4,0,116,5,121,38,1,0,1,0,1,0,89, + 0,113,17,37,0,100,1,83,0,119,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,16,0,0,0,218,10, + 112,97,116,104,95,104,111,111,107,115,114,99,0,0,0,114, + 100,0,0,0,114,161,0,0,0,114,142,0,0,0,41,2, + 114,65,0,0,0,90,4,104,111,111,107,32,32,114,7,0, + 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,59, + 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, + 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, + 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,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,8,0,0,0,67,0,0,0,115,104,0,0, + 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, + 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, + 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, + 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, + 5,121,50,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,124, + 2,83,0,37,0,119,0,119,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, + 10,0,0,0,78,41,7,114,19,0,0,0,114,82,0,0, + 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, + 114,114,111,114,114,16,0,0,0,114,77,1,0,0,218,8, + 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, + 220,0,0,0,114,65,0,0,0,114,79,1,0,0,32,32, + 32,114,7,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,72,5,0,0, + 115,36,0,0,0,8,8,2,1,10,1,2,128,12,1,6, + 3,2,128,2,1,10,1,4,4,2,128,12,253,10,1,12, + 1,4,1,2,128,2,253,2,250,115,24,0,0,0,133,4, + 10,0,138,7,20,7,150,5,29,0,157,17,49,7,178,1, + 49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138,0,0, + 0,116,0,124,2,100,1,131,2,114,27,116,1,160,2,124, + 2,161,1,155,0,100,2,157,2,125,3,116,3,160,4,124, + 3,116,5,161,2,1,0,124,2,160,6,124,1,161,1,92, + 2,125,4,125,5,110,21,116,1,160,2,124,2,161,1,155, + 0,100,3,157,2,125,3,116,3,160,4,124,3,116,5,161, + 2,1,0,124,2,160,7,124,1,161,1,125,4,103,0,125, + 5,124,4,100,0,117,1,114,58,116,1,160,8,124,1,124, + 4,161,2,83,0,116,1,160,9,124,1,100,0,161,2,125, + 6,124,5,124,6,95,10,124,6,83,0,41,4,78,114,160, + 0,0,0,122,53,46,102,105,110,100,95,115,112,101,99,40, 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, - 100,95,109,111,100,117,108,101,40,41,41,11,114,154,0,0, - 0,114,160,0,0,0,90,12,95,111,98,106,101,99,116,95, - 110,97,109,101,114,100,0,0,0,114,101,0,0,0,114,163, - 0,0,0,114,162,0,0,0,114,230,0,0,0,114,225,0, - 0,0,114,208,0,0,0,114,203,0,0,0,41,7,114,222, - 0,0,0,114,164,0,0,0,114,83,1,0,0,114,167,0, - 0,0,114,165,0,0,0,114,166,0,0,0,114,211,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,16,95,108,101,103,97,99,121,95,103,101,116,95,115,112, - 101,99,92,5,0,0,115,26,0,0,0,10,4,16,1,12, - 2,16,1,16,2,12,2,10,1,4,1,8,1,12,1,12, - 1,6,1,4,1,114,10,0,0,0,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,5,0,0,0,67,0,0,0,115,166,0, - 0,0,103,0,125,4,124,2,68,0,93,67,125,5,116,0, - 124,5,116,1,116,2,102,2,131,2,115,14,113,4,124,0, - 160,3,124,5,161,1,125,6,124,6,100,1,117,1,114,71, - 116,4,124,6,100,2,131,2,114,35,124,6,160,5,124,1, - 124,3,161,2,125,7,110,6,124,0,160,6,124,1,124,6, - 161,2,125,7,124,7,100,1,117,0,114,46,113,4,124,7, - 106,7,100,1,117,1,114,55,124,7,2,0,1,0,83,0, - 124,7,106,8,125,8,124,8,100,1,117,0,114,66,116,9, - 100,3,131,1,130,1,124,4,160,10,124,8,161,1,1,0, - 113,4,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,227,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,186,0,0,0,114,110,0, - 0,0,218,5,98,121,116,101,115,114,88,1,0,0,114,154, - 0,0,0,114,227,0,0,0,114,89,1,0,0,114,165,0, - 0,0,114,203,0,0,0,114,143,0,0,0,114,192,0,0, - 0,114,160,0,0,0,114,208,0,0,0,41,9,114,222,0, - 0,0,114,164,0,0,0,114,66,0,0,0,114,226,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,83,1,0,0,114,211,0, - 0,0,114,166,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,9,95,103,101,116,95,115,112,101, - 99,113,5,0,0,115,42,0,0,0,4,5,8,1,14,1, - 2,1,10,1,8,1,10,1,14,1,12,2,8,1,2,1, - 10,1,8,1,6,1,8,1,8,1,10,5,2,128,12,2, - 6,1,4,1,114,10,0,0,0,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,5,0,0,0, - 67,0,0,0,115,94,0,0,0,124,2,100,1,117,0,114, - 7,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,20,100,1,83, - 0,124,4,106,3,100,1,117,0,114,45,124,4,106,4,125, - 5,124,5,114,43,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,124,4,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,16,0,0,0, - 114,66,0,0,0,114,92,1,0,0,114,165,0,0,0,114, - 203,0,0,0,114,206,0,0,0,114,48,1,0,0,41,6, - 114,222,0,0,0,114,164,0,0,0,114,66,0,0,0,114, - 226,0,0,0,114,211,0,0,0,114,91,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,227,0, - 0,0,145,5,0,0,115,26,0,0,0,8,6,6,1,14, - 1,8,1,4,1,10,1,6,1,4,1,6,3,16,1,4, - 1,4,2,4,2,114,10,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, - 125,3,124,3,100,2,117,0,114,18,100,2,83,0,124,3, - 106,4,83,0,41,3,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, + 100,95,108,111,97,100,101,114,40,41,122,53,46,102,105,110, + 100,95,115,112,101,99,40,41,32,110,111,116,32,102,111,117, + 110,100,59,32,102,97,108,108,105,110,103,32,98,97,99,107, + 32,116,111,32,102,105,110,100,95,109,111,100,117,108,101,40, + 41,41,11,114,152,0,0,0,114,158,0,0,0,90,12,95, + 111,98,106,101,99,116,95,110,97,109,101,114,99,0,0,0, + 114,100,0,0,0,114,161,0,0,0,114,160,0,0,0,114, + 228,0,0,0,114,223,0,0,0,114,206,0,0,0,114,201, + 0,0,0,41,7,114,220,0,0,0,114,162,0,0,0,114, + 79,1,0,0,114,165,0,0,0,114,163,0,0,0,114,164, + 0,0,0,114,209,0,0,0,32,32,32,32,32,32,32,114, + 7,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, + 116,95,115,112,101,99,94,5,0,0,115,26,0,0,0,10, + 4,16,1,12,2,16,1,16,2,12,2,10,1,4,1,8, + 1,12,1,12,1,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0, + 0,115,166,0,0,0,103,0,125,4,124,2,68,0,93,67, + 125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,14, + 113,4,124,0,160,3,124,5,161,1,125,6,124,6,100,1, + 117,1,114,71,116,4,124,6,100,2,131,2,114,35,124,6, + 160,5,124,1,124,3,161,2,125,7,110,6,124,0,160,6, + 124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,46, + 113,4,124,7,106,7,100,1,117,1,114,55,124,7,2,0, + 1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,0, + 114,66,116,9,100,3,131,1,130,1,124,4,160,10,124,8, + 161,1,1,0,113,4,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,225,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,184,0,0, + 0,114,109,0,0,0,218,5,98,121,116,101,115,114,84,1, + 0,0,114,152,0,0,0,114,225,0,0,0,114,85,1,0, + 0,114,163,0,0,0,114,201,0,0,0,114,142,0,0,0, + 114,190,0,0,0,114,158,0,0,0,114,206,0,0,0,41, + 9,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, + 114,224,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,79,1,0, + 0,114,209,0,0,0,114,164,0,0,0,32,32,32,32,32, + 32,32,32,32,114,7,0,0,0,218,9,95,103,101,116,95, + 115,112,101,99,115,5,0,0,115,42,0,0,0,4,5,8, + 1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,8, + 1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,2, + 128,12,2,6,1,4,1,114,9,0,0,0,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,5, + 0,0,0,67,0,0,0,115,94,0,0,0,124,2,100,1, + 117,0,114,7,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,20, + 100,1,83,0,124,4,106,3,100,1,117,0,114,45,124,4, + 106,4,125,5,124,5,114,43,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,124,4,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,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102, - 105,110,100,95,109,111,100,117,108,101,40,41,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, - 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, - 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, - 59,32,117,115,101,32,102,105,110,100,95,115,112,101,99,40, - 41,32,105,110,115,116,101,97,100,78,114,228,0,0,0,114, - 229,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,230,0,0,0,169,5,0,0,115,14,0,0, - 0,6,8,2,2,4,254,12,3,8,1,4,1,6,1,114, - 10,0,0,0,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,0,0,0, - 0,0,0,0,0,0,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,2, - 1,0,124,2,106,2,124,0,105,0,124,1,164,1,142,1, - 83,0,41,4,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,78,41,3,90,18,105,109,112,111,114,116,108, - 105,98,46,109,101,116,97,100,97,116,97,114,93,1,0,0, - 218,18,102,105,110,100,95,100,105,115,116,114,105,98,117,116, - 105,111,110,115,41,3,114,145,0,0,0,114,146,0,0,0, - 114,93,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,94,1,0,0,185,5,0,0,115,4,0, - 0,0,12,10,16,1,114,10,0,0,0,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,114,70,0,0,0,114, - 231,0,0,0,41,14,114,151,0,0,0,114,150,0,0,0, - 114,152,0,0,0,114,153,0,0,0,114,234,0,0,0,114, - 79,1,0,0,114,85,1,0,0,114,235,0,0,0,114,88, - 1,0,0,114,89,1,0,0,114,92,1,0,0,114,227,0, - 0,0,114,230,0,0,0,114,94,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,78,1,0,0,43,5,0,0,115,36,0,0,0,8,0, - 4,2,2,2,10,1,2,9,10,1,2,12,10,1,2,21, - 10,1,2,20,12,1,2,31,12,1,2,23,12,1,2,15, - 14,1,114,10,0,0,0,114,78,1,0,0,99,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,6,0,0,0,7,0,0, - 0,115,112,0,0,0,103,0,125,3,124,2,68,0,93,16, - 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,4, - 124,3,124,0,95,1,124,1,112,27,100,3,124,0,95,2, - 116,3,124,0,106,2,131,1,115,43,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,3,0,0,0,51,0,0,0,115,24,0,0,0,129,0, - 124,0,93,7,125,1,124,1,136,0,102,2,86,0,1,0, - 113,2,100,0,83,0,114,70,0,0,0,114,7,0,0,0, - 114,44,1,0,0,169,1,114,165,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,9,0,0,0,214,5,0,0,115, - 4,0,0,0,6,128,18,0,114,10,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,98,0,0,0,114,131,0,0,0,78, - 41,11,114,192,0,0,0,218,8,95,108,111,97,100,101,114, - 115,114,66,0,0,0,114,87,0,0,0,114,68,0,0,0, - 114,19,0,0,0,114,83,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,144,0,0,0,114,66,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,213,0,0,0,114,7,0,0,0,114,96,1, - 0,0,114,8,0,0,0,114,237,0,0,0,208,5,0,0, - 115,20,0,0,0,4,4,12,1,26,1,6,1,10,2,10, - 1,18,1,6,1,8,1,12,1,114,10,0,0,0,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, - 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,131,0,0,0,78, - 41,1,114,98,1,0,0,114,22,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,79,1,0,0, - 224,5,0,0,114,82,0,0,0,114,10,0,0,0,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,4,0,0,0,67,0,0, - 0,115,54,0,0,0,116,0,160,1,100,1,116,2,161,2, - 1,0,124,0,160,3,124,1,161,1,125,2,124,2,100,2, - 117,0,114,19,100,2,103,0,102,2,83,0,124,2,106,4, - 124,2,106,5,112,25,103,0,102,2,83,0,41,3,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,122,101,70,105,108,101,70,105,110,100,101, - 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, - 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, - 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, - 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,78,41,6,114, - 100,0,0,0,114,101,0,0,0,114,102,0,0,0,114,227, - 0,0,0,114,165,0,0,0,114,203,0,0,0,41,3,114, - 144,0,0,0,114,164,0,0,0,114,211,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,162,0, - 0,0,230,5,0,0,115,14,0,0,0,6,7,2,2,4, - 254,10,3,8,1,8,1,16,1,114,10,0,0,0,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,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,202,0, - 0,0,41,1,114,214,0,0,0,41,7,114,144,0,0,0, - 114,212,0,0,0,114,164,0,0,0,114,66,0,0,0,90, - 4,115,109,115,108,114,226,0,0,0,114,165,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,92, - 1,0,0,245,5,0,0,115,8,0,0,0,10,1,8,1, - 2,1,6,255,114,10,0,0,0,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,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,9,0,116,1, - 124,0,106,2,112,17,116,3,160,4,161,0,131,1,106,5, - 125,5,110,12,35,0,4,0,116,6,121,190,1,0,1,0, - 1,0,100,4,125,5,89,0,110,1,37,0,124,5,124,0, - 106,7,107,3,114,45,124,0,160,8,161,0,1,0,124,5, - 124,0,95,7,116,9,131,0,114,56,124,0,106,10,125,6, - 124,4,160,11,161,0,125,7,110,5,124,0,106,12,125,6, - 124,4,125,7,124,7,124,6,118,0,114,108,116,13,124,0, - 106,2,124,4,131,2,125,8,124,0,106,14,68,0,93,29, - 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,103, - 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,74,116,17,124,8,131,1, - 125,3,124,0,106,14,68,0,93,55,92,2,125,9,125,10, - 9,0,116,13,124,0,106,2,124,4,124,9,23,0,131,2, - 125,12,110,12,35,0,4,0,116,18,121,189,1,0,1,0, - 1,0,89,0,1,0,100,6,83,0,37,0,116,19,160,20, - 100,7,124,12,100,3,100,8,166,3,1,0,124,7,124,9, - 23,0,124,6,118,0,114,166,116,15,124,12,131,1,114,166, - 124,0,160,16,124,10,124,1,124,12,100,6,124,2,161,5, - 2,0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,98,0,0, - 0,114,45,0,0,0,114,131,0,0,0,114,237,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,105,0,0,0,114,76,0,0,0, - 114,66,0,0,0,114,19,0,0,0,114,83,0,0,0,114, - 36,1,0,0,114,77,0,0,0,114,98,1,0,0,218,11, - 95,102,105,108,108,95,99,97,99,104,101,114,22,0,0,0, - 114,101,1,0,0,114,132,0,0,0,114,100,1,0,0,114, - 68,0,0,0,114,97,1,0,0,114,81,0,0,0,114,92, - 1,0,0,114,84,0,0,0,114,112,0,0,0,114,160,0, - 0,0,114,174,0,0,0,114,208,0,0,0,114,203,0,0, - 0,41,14,114,144,0,0,0,114,164,0,0,0,114,226,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,194,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,45,1,0,0,114,212,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,211,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,227,0,0,0,250, - 5,0,0,115,94,0,0,0,4,5,14,1,2,1,22,1, - 2,128,12,1,8,1,2,128,10,1,8,1,6,1,6,2, - 6,1,10,1,6,2,4,1,8,2,12,1,14,1,8,1, - 10,1,8,1,24,1,2,255,8,5,14,2,2,1,18,1, - 2,128,12,1,8,1,2,128,16,1,12,1,8,1,10,1, - 4,1,8,255,2,128,4,2,12,1,12,1,8,1,4,1, - 4,1,2,244,2,228,115,31,0,0,0,138,10,21,0,149, - 9,32,7,193,52,8,65,61,2,193,61,7,66,8,9,194, - 61,1,66,8,9,194,62,1,32,7,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,10,0,0, - 0,67,0,0,0,115,194,0,0,0,124,0,106,0,125,1, - 9,0,116,1,160,2,124,1,112,11,116,1,160,3,161,0, - 161,1,125,2,110,15,35,0,4,0,116,4,116,5,116,6, - 102,3,121,96,1,0,1,0,1,0,103,0,125,2,89,0, - 110,1,37,0,116,7,106,8,160,9,100,1,161,1,115,41, - 116,10,124,2,131,1,124,0,95,11,110,37,116,10,131,0, - 125,3,124,2,68,0,93,28,125,4,124,4,160,12,100,2, - 161,1,92,3,125,5,125,6,125,7,124,6,114,67,100,3, - 160,13,124,5,124,7,160,14,161,0,161,2,125,8,110,2, - 124,5,125,8,124,3,160,15,124,8,161,1,1,0,113,46, - 124,3,124,0,95,11,116,7,106,8,160,9,116,16,161,1, - 114,94,100,4,100,5,132,0,124,2,68,0,131,1,124,0, - 95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,98,0,0,0,114,89, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,83,0,0,0,115,20,0,0,0,104,0,124, - 0,93,6,125,1,124,1,160,0,161,0,146,2,113,2,83, - 0,114,7,0,0,0,41,1,114,132,0,0,0,41,2,114, - 5,0,0,0,90,2,102,110,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,14,0,0,0,74,6,0,0, - 115,2,0,0,0,20,0,114,10,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,66,0,0,0,114, - 19,0,0,0,90,7,108,105,115,116,100,105,114,114,83,0, - 0,0,114,86,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,16,0,0, - 0,114,26,0,0,0,114,27,0,0,0,114,99,1,0,0, - 114,100,1,0,0,114,127,0,0,0,114,90,0,0,0,114, - 132,0,0,0,218,3,97,100,100,114,28,0,0,0,114,101, - 1,0,0,41,9,114,144,0,0,0,114,66,0,0,0,90, - 8,99,111,110,116,101,110,116,115,90,21,108,111,119,101,114, - 95,115,117,102,102,105,120,95,99,111,110,116,101,110,116,115, - 114,71,1,0,0,114,142,0,0,0,114,55,1,0,0,114, - 45,1,0,0,90,8,110,101,119,95,110,97,109,101,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,103,1, - 0,0,45,6,0,0,115,42,0,0,0,6,2,2,1,20, - 1,2,128,18,1,8,3,2,128,12,3,12,1,6,7,8, - 1,16,1,4,1,18,1,4,2,12,1,6,1,12,1,20, - 1,4,255,2,233,115,13,0,0,0,132,9,14,0,142,12, - 28,7,193,32,1,28,7,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, - 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,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0, - 116,0,124,0,131,1,115,10,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,4,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,72,0,0,0,78,41,2,114,84,0, - 0,0,114,143,0,0,0,114,72,0,0,0,169,2,114,222, - 0,0,0,114,102,1,0,0,114,7,0,0,0,114,8,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,86,6,0,0, - 115,6,0,0,0,8,2,12,1,16,1,114,10,0,0,0, - 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,78,114,7,0,0,0,41,3, - 114,222,0,0,0,114,102,1,0,0,114,108,1,0,0,114, - 7,0,0,0,114,107,1,0,0,114,8,0,0,0,218,9, - 112,97,116,104,95,104,111,111,107,76,6,0,0,115,4,0, - 0,0,14,10,4,6,114,10,0,0,0,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,3,0, - 0,0,67,0,0,0,114,68,1,0,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,90,0,0,0,114,66,0,0,0,114,22,1,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,69,1,0,0,94,6,0,0,114,62,1,0,0,114,10, - 0,0,0,122,19,70,105,108,101,70,105,110,100,101,114,46, - 95,95,114,101,112,114,95,95,114,70,0,0,0,41,15,114, - 151,0,0,0,114,150,0,0,0,114,152,0,0,0,114,153, - 0,0,0,114,237,0,0,0,114,79,1,0,0,114,168,0, - 0,0,114,230,0,0,0,114,162,0,0,0,114,92,1,0, - 0,114,227,0,0,0,114,103,1,0,0,114,235,0,0,0, - 114,109,1,0,0,114,69,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,95, - 1,0,0,199,5,0,0,115,24,0,0,0,8,0,4,2, - 8,7,8,16,4,4,8,2,8,15,10,5,8,51,2,31, - 10,1,12,17,114,10,0,0,0,114,95,1,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,146,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,33, - 124,5,114,18,124,5,106,1,125,4,110,15,124,2,124,3, - 107,2,114,28,116,2,124,1,124,2,131,2,125,4,110,5, - 116,3,124,1,124,2,131,2,125,4,124,5,115,42,116,4, - 124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100,0, - 83,0,35,0,4,0,116,5,121,72,1,0,1,0,1,0, - 89,0,100,0,83,0,37,0,119,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,96,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,165,0,0,0,114,42,1,0,0,114, - 35,1,0,0,114,214,0,0,0,218,9,69,120,99,101,112, - 116,105,111,110,41,6,90,2,110,115,114,142,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,165,0,0,0,114,211,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,95, - 102,105,120,95,117,112,95,109,111,100,117,108,101,100,6,0, - 0,115,40,0,0,0,10,2,10,1,4,1,4,1,8,1, - 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, - 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, - 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, - 7,7,114,114,1,0,0,99,0,0,0,0,0,0,0,0, - 0,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,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, - 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, - 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, - 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, - 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, - 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, - 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, - 120,101,115,41,46,10,32,32,32,32,78,41,7,114,31,1, - 0,0,114,188,0,0,0,218,18,101,120,116,101,110,115,105, - 111,110,95,115,117,102,102,105,120,101,115,114,35,1,0,0, - 114,128,0,0,0,114,42,1,0,0,114,114,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, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,209, - 0,0,0,123,6,0,0,115,8,0,0,0,12,5,8,1, - 8,1,10,1,114,10,0,0,0,114,209,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,67, - 0,0,0,115,8,0,0,0,124,0,97,0,100,0,83,0, - 114,70,0,0,0,41,1,114,160,0,0,0,41,1,218,17, - 95,98,111,111,116,115,116,114,97,112,95,109,111,100,117,108, - 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,21,95,115,101,116,95,98,111,111,116,115,116,114,97,112, - 95,109,111,100,117,108,101,134,6,0,0,115,2,0,0,0, - 8,2,114,10,0,0,0,114,117,1,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,50,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,117,1,0,0,114,209,0, - 0,0,114,16,0,0,0,114,84,1,0,0,114,192,0,0, - 0,114,95,1,0,0,114,109,1,0,0,218,9,109,101,116, - 97,95,112,97,116,104,114,62,0,0,0,114,78,1,0,0, - 41,2,114,116,1,0,0,90,17,115,117,112,112,111,114,116, - 101,100,95,108,111,97,100,101,114,115,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,8,95,105,110,115,116, - 97,108,108,139,6,0,0,115,8,0,0,0,8,2,6,1, - 20,1,16,1,114,10,0,0,0,114,119,1,0,0,41,1, - 114,88,0,0,0,114,70,0,0,0,41,3,78,78,78,41, - 2,114,0,0,0,0,114,0,0,0,0,41,1,84,41,85, - 114,153,0,0,0,114,160,0,0,0,114,188,0,0,0,114, - 92,0,0,0,114,16,0,0,0,114,100,0,0,0,114,185, - 0,0,0,114,26,0,0,0,114,232,0,0,0,90,2,110, - 116,114,19,0,0,0,114,216,0,0,0,90,5,112,111,115, - 105,120,114,51,0,0,0,218,3,97,108,108,114,60,0,0, - 0,114,137,0,0,0,114,58,0,0,0,114,63,0,0,0, - 90,20,95,112,97,116,104,115,101,112,115,95,119,105,116,104, - 95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0,114,22,0,0, - 0,114,37,0,0,0,114,43,0,0,0,114,46,0,0,0, - 114,68,0,0,0,114,75,0,0,0,114,76,0,0,0,114, - 80,0,0,0,114,81,0,0,0,114,84,0,0,0,114,87, - 0,0,0,114,96,0,0,0,218,4,116,121,112,101,218,8, - 95,95,99,111,100,101,95,95,114,187,0,0,0,114,35,0, - 0,0,114,173,0,0,0,114,34,0,0,0,114,40,0,0, - 0,114,9,1,0,0,114,117,0,0,0,114,113,0,0,0, - 114,128,0,0,0,114,62,0,0,0,114,115,1,0,0,114, - 233,0,0,0,114,114,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, - 122,0,0,0,114,129,0,0,0,114,136,0,0,0,114,138, - 0,0,0,114,140,0,0,0,114,161,0,0,0,114,168,0, - 0,0,114,177,0,0,0,114,181,0,0,0,114,183,0,0, - 0,114,190,0,0,0,114,195,0,0,0,114,196,0,0,0, - 114,201,0,0,0,218,6,111,98,106,101,99,116,114,210,0, - 0,0,114,214,0,0,0,114,215,0,0,0,114,236,0,0, - 0,114,250,0,0,0,114,12,1,0,0,114,35,1,0,0, - 114,42,1,0,0,114,31,1,0,0,114,48,1,0,0,114, - 74,1,0,0,114,78,1,0,0,114,95,1,0,0,114,114, - 1,0,0,114,209,0,0,0,114,117,1,0,0,114,119,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,8,60,109,111,100,117,108,101,62, + 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,16, + 0,0,0,114,65,0,0,0,114,88,1,0,0,114,163,0, + 0,0,114,201,0,0,0,114,204,0,0,0,114,44,1,0, + 0,41,6,114,220,0,0,0,114,162,0,0,0,114,65,0, + 0,0,114,224,0,0,0,114,209,0,0,0,114,87,1,0, + 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, + 0,147,5,0,0,115,26,0,0,0,8,6,6,1,14,1, + 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, + 4,2,4,2,114,9,0,0,0,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, + 67,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, + 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, + 4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, + 0,0,0,32,32,32,32,114,7,0,0,0,114,228,0,0, + 0,171,5,0,0,115,14,0,0,0,6,8,2,2,4,254, + 12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124, + 0,105,0,124,1,164,1,142,1,83,0,41,4,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,78,41,3, + 90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,97, + 100,97,116,97,114,89,1,0,0,218,18,102,105,110,100,95, + 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, + 144,0,0,0,114,145,0,0,0,114,89,1,0,0,32,32, + 32,114,7,0,0,0,114,90,1,0,0,187,5,0,0,115, + 4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0, + 0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0,0,0, + 114,84,1,0,0,114,85,1,0,0,114,88,1,0,0,114, + 225,0,0,0,114,228,0,0,0,114,90,1,0,0,114,12, + 0,0,0,114,7,0,0,0,114,74,1,0,0,45,5,0, + 0,115,36,0,0,0,8,0,4,2,2,2,10,1,2,9, + 10,1,2,12,10,1,2,21,10,1,2,20,12,1,2,31, + 12,1,2,23,12,1,2,15,14,1,114,9,0,0,0,114, + 74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,112,0,0,0,103,0, + 125,3,124,2,68,0,93,16,92,2,137,5,125,4,124,3, + 160,0,135,5,102,1,100,1,100,2,132,8,124,4,68,0, + 131,1,161,1,1,0,113,4,124,3,124,0,95,1,124,1, + 112,27,100,3,124,0,95,2,116,3,124,0,106,2,131,1, + 115,43,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,3,0,0,0,51,0,0, + 0,115,24,0,0,0,129,0,124,0,93,7,125,1,124,1, + 136,2,102,2,86,0,1,0,113,2,100,0,83,0,114,69, + 0,0,0,114,12,0,0,0,41,3,114,5,0,0,0,114, + 41,1,0,0,114,163,0,0,0,32,32,128,114,7,0,0, + 0,114,8,0,0,0,216,5,0,0,115,4,0,0,0,6, + 128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41,11,114,190,0, + 0,0,218,8,95,108,111,97,100,101,114,115,114,65,0,0, + 0,114,86,0,0,0,114,67,0,0,0,114,19,0,0,0, + 114,82,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,6,114,143,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,211, + 0,0,0,114,163,0,0,0,32,32,32,32,32,64,114,7, + 0,0,0,114,235,0,0,0,210,5,0,0,115,20,0,0, + 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, + 1,8,1,12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93, + 1,0,0,114,20,1,0,0,32,114,7,0,0,0,114,75, + 1,0,0,226,5,0,0,114,81,0,0,0,114,9,0,0, + 0,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,4,0,0,0, + 67,0,0,0,115,54,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,124,0,160,3,124,1,161,1,125,2,124, + 2,100,2,117,0,114,19,100,2,103,0,102,2,83,0,124, + 2,106,4,124,2,106,5,112,25,103,0,102,2,83,0,41, + 3,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,122,101,70,105,108,101,70,105, + 110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,114, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, + 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, + 41,6,114,99,0,0,0,114,100,0,0,0,114,101,0,0, + 0,114,225,0,0,0,114,163,0,0,0,114,201,0,0,0, + 41,3,114,143,0,0,0,114,162,0,0,0,114,209,0,0, + 0,32,32,32,114,7,0,0,0,114,160,0,0,0,232,5, + 0,0,115,14,0,0,0,6,7,2,2,4,254,10,3,8, + 1,8,1,16,1,114,9,0,0,0,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,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,200,0,0,0,41,1, + 114,212,0,0,0,41,7,114,143,0,0,0,114,210,0,0, + 0,114,162,0,0,0,114,65,0,0,0,90,4,115,109,115, + 108,114,224,0,0,0,114,163,0,0,0,32,32,32,32,32, + 32,32,114,7,0,0,0,114,88,1,0,0,247,5,0,0, + 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, + 0,0,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,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,9,0,116,1,124,0,106,2,112,17,116, + 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, + 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, + 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, + 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, + 0,114,56,124,0,106,10,125,6,124,4,160,11,161,0,125, + 7,110,5,124,0,106,12,125,6,124,4,125,7,124,7,124, + 6,118,0,114,108,116,13,124,0,106,2,124,4,131,2,125, + 8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125,3,124,0,106,14,68, + 0,93,55,92,2,125,9,125,10,9,0,116,13,124,0,106, + 2,124,4,124,9,23,0,131,2,125,12,110,12,35,0,4, + 0,116,18,121,189,1,0,1,0,1,0,89,0,1,0,100, + 6,83,0,37,0,116,19,160,20,100,7,124,12,100,3,100, + 8,166,3,1,0,124,7,124,9,23,0,124,6,118,0,114, + 166,116,15,124,12,131,1,114,166,124,0,160,16,124,10,124, + 1,124,12,100,6,124,2,161,5,2,0,1,0,83,0,113, + 111,124,3,114,187,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,119,0,119, + 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,97,0,0,0,114,45,0,0,0,114, + 130,0,0,0,114,235,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, + 104,0,0,0,114,75,0,0,0,114,65,0,0,0,114,19, + 0,0,0,114,82,0,0,0,114,33,1,0,0,114,76,0, + 0,0,114,93,1,0,0,218,11,95,102,105,108,108,95,99, + 97,99,104,101,114,22,0,0,0,114,96,1,0,0,114,131, + 0,0,0,114,95,1,0,0,114,67,0,0,0,114,92,1, + 0,0,114,80,0,0,0,114,88,1,0,0,114,83,0,0, + 0,114,111,0,0,0,114,158,0,0,0,114,172,0,0,0, + 114,206,0,0,0,114,201,0,0,0,41,14,114,143,0,0, + 0,114,162,0,0,0,114,224,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,192,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,210,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, + 209,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,114,7,0,0,0,114,225,0,0,0,252,5,0,0, + 115,94,0,0,0,4,5,14,1,2,1,22,1,2,128,12, + 1,8,1,2,128,10,1,8,1,6,1,6,2,6,1,10, + 1,6,2,4,1,8,2,12,1,14,1,8,1,10,1,8, + 1,24,1,2,255,8,5,14,2,2,1,18,1,2,128,12, + 1,8,1,2,128,16,1,12,1,8,1,10,1,4,1,8, + 255,2,128,4,2,12,1,12,1,8,1,4,1,4,1,2, + 244,2,228,115,31,0,0,0,138,10,21,0,149,9,32,7, + 193,52,8,65,61,2,193,61,7,66,8,9,194,61,1,66, + 8,9,194,62,1,32,7,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,10,0,0,0,67,0, + 0,0,115,194,0,0,0,124,0,106,0,125,1,9,0,116, + 1,160,2,124,1,112,11,116,1,160,3,161,0,161,1,125, + 2,110,15,35,0,4,0,116,4,116,5,116,6,102,3,121, + 96,1,0,1,0,1,0,103,0,125,2,89,0,110,1,37, + 0,116,7,106,8,160,9,100,1,161,1,115,41,116,10,124, + 2,131,1,124,0,95,11,110,37,116,10,131,0,125,3,124, + 2,68,0,93,28,125,4,124,4,160,12,100,2,161,1,92, + 3,125,5,125,6,125,7,124,6,114,67,100,3,160,13,124, + 5,124,7,160,14,161,0,161,2,125,8,110,2,124,5,125, + 8,124,3,160,15,124,8,161,1,1,0,113,46,124,3,124, + 0,95,11,116,7,106,8,160,9,116,16,161,1,114,94,100, + 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100, + 6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0,114,88,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,83,0,0,0,115,20,0,0,0,104,0,124,0,93,6, + 125,1,124,1,160,0,161,0,146,2,113,2,83,0,114,12, + 0,0,0,41,1,114,131,0,0,0,41,2,114,5,0,0, + 0,90,2,102,110,32,32,114,7,0,0,0,114,14,0,0, + 0,76,6,0,0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100, + 105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0,0,114,27,0,0,0, + 114,94,1,0,0,114,95,1,0,0,114,126,0,0,0,114, + 89,0,0,0,114,131,0,0,0,218,3,97,100,100,114,28, + 0,0,0,114,96,1,0,0,41,9,114,143,0,0,0,114, + 65,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, + 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, + 116,101,110,116,115,114,67,1,0,0,114,141,0,0,0,114, + 51,1,0,0,114,41,1,0,0,90,8,110,101,119,95,110, + 97,109,101,32,32,32,32,32,32,32,32,32,114,7,0,0, + 0,114,98,1,0,0,47,6,0,0,115,42,0,0,0,6, + 2,2,1,20,1,2,128,18,1,8,3,2,128,12,3,12, + 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, + 1,12,1,20,1,4,255,2,233,115,13,0,0,0,132,9, + 14,0,142,12,28,7,193,32,1,28,7,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,7,0,0,0,115,18,0,0,0,135,3,135, + 4,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, + 4,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,4,0,0,0,19,0,0,0,115, + 36,0,0,0,116,0,124,0,131,1,115,10,116,1,100,1, + 124,0,100,2,141,2,130,1,136,1,124,0,103,1,136,2, + 162,1,82,0,142,0,83,0,41,4,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,78,41, + 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, + 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, + 7,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,88,6, + 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, + 0,0,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,78,114,12,0,0,0, + 41,5,114,220,0,0,0,114,97,1,0,0,114,102,1,0, + 0,114,220,0,0,0,114,97,1,0,0,96,96,32,64,64, + 114,7,0,0,0,218,9,112,97,116,104,95,104,111,111,107, + 78,6,0,0,115,4,0,0,0,14,10,4,6,114,9,0, + 0,0,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,3,0,0,0,67,0,0,0,114,64,1, + 0,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,89,0,0,0,114,65, + 0,0,0,114,20,1,0,0,32,114,7,0,0,0,114,65, + 1,0,0,96,6,0,0,114,58,1,0,0,114,9,0,0, + 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, + 114,101,112,114,95,95,114,69,0,0,0,41,15,114,149,0, + 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, + 0,114,235,0,0,0,114,75,1,0,0,114,166,0,0,0, + 114,228,0,0,0,114,160,0,0,0,114,88,1,0,0,114, + 225,0,0,0,114,98,1,0,0,114,233,0,0,0,114,103, + 1,0,0,114,65,1,0,0,114,12,0,0,0,114,7,0, + 0,0,114,91,1,0,0,201,5,0,0,115,24,0,0,0, + 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, + 8,51,2,31,10,1,12,17,114,9,0,0,0,114,91,1, + 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15, + 124,2,124,3,107,2,114,28,116,2,124,1,124,2,131,2, + 125,4,110,5,116,3,124,1,124,2,131,2,125,4,124,5, + 115,42,116,4,124,1,124,2,124,4,100,3,141,3,125,5, + 9,0,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,100,0,83,0,35,0,4,0,116,5,121,72,1,0, + 1,0,1,0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0, + 114,39,1,0,0,114,32,1,0,0,114,212,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,41,6,90,2,110,115, + 114,141,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,163,0,0,0,114, + 209,0,0,0,32,32,32,32,32,32,114,7,0,0,0,218, + 14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,102, + 6,0,0,115,40,0,0,0,10,2,10,1,4,1,4,1, + 8,1,8,1,12,1,10,2,4,1,14,1,2,1,8,1, + 8,1,8,1,12,1,2,128,12,1,6,2,2,128,2,254, + 115,15,0,0,0,171,16,61,0,189,7,65,7,7,193,8, + 1,65,7,7,114,108,1,0,0,99,0,0,0,0,0,0, + 0,0,0,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,102,2,125,1,116,5,116,6,102,2,125,2,124, + 0,124,1,124,2,103,3,83,0,41,2,122,95,82,101,116, + 117,114,110,115,32,97,32,108,105,115,116,32,111,102,32,102, + 105,108,101,45,98,97,115,101,100,32,109,111,100,117,108,101, + 32,108,111,97,100,101,114,115,46,10,10,32,32,32,32,69, + 97,99,104,32,105,116,101,109,32,105,115,32,97,32,116,117, + 112,108,101,32,40,108,111,97,100,101,114,44,32,115,117,102, + 102,105,120,101,115,41,46,10,32,32,32,32,78,41,7,114, + 28,1,0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,32,32,32,114,7,0,0,0,114,207,0,0,0,125,6, + 0,0,115,8,0,0,0,12,5,8,1,8,1,10,1,114, + 9,0,0,0,114,207,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,67,0,0,0,115,8, + 0,0,0,124,0,97,0,100,0,83,0,114,69,0,0,0, + 41,1,114,158,0,0,0,41,1,218,17,95,98,111,111,116, + 115,116,114,97,112,95,109,111,100,117,108,101,32,114,7,0, + 0,0,218,21,95,115,101,116,95,98,111,111,116,115,116,114, + 97,112,95,109,111,100,117,108,101,136,6,0,0,115,2,0, + 0,0,8,2,114,9,0,0,0,114,111,1,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,50,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,111,1,0,0,114, + 207,0,0,0,114,16,0,0,0,114,80,1,0,0,114,190, + 0,0,0,114,91,1,0,0,114,103,1,0,0,218,9,109, + 101,116,97,95,112,97,116,104,114,61,0,0,0,114,74,1, + 0,0,41,2,114,110,1,0,0,90,17,115,117,112,112,111, + 114,116,101,100,95,108,111,97,100,101,114,115,32,32,114,7, + 0,0,0,218,8,95,105,110,115,116,97,108,108,141,6,0, + 0,115,8,0,0,0,8,2,6,1,20,1,16,1,114,9, + 0,0,0,114,113,1,0,0,41,1,114,87,0,0,0,114, + 69,0,0,0,41,3,78,78,78,41,2,114,0,0,0,0, + 114,0,0,0,0,41,1,84,41,85,114,151,0,0,0,114, + 158,0,0,0,114,186,0,0,0,114,91,0,0,0,114,16, + 0,0,0,114,99,0,0,0,114,183,0,0,0,114,26,0, + 0,0,114,230,0,0,0,90,2,110,116,114,19,0,0,0, + 114,214,0,0,0,90,5,112,111,115,105,120,114,51,0,0, + 0,218,3,97,108,108,114,59,0,0,0,114,136,0,0,0, + 114,57,0,0,0,114,62,0,0,0,90,20,95,112,97,116, + 104,115,101,112,115,95,119,105,116,104,95,99,111,108,111,110, + 114,29,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,28,0,0, + 0,114,30,0,0,0,114,22,0,0,0,114,37,0,0,0, + 114,43,0,0,0,114,46,0,0,0,114,67,0,0,0,114, + 73,0,0,0,114,75,0,0,0,114,79,0,0,0,114,80, + 0,0,0,114,83,0,0,0,114,86,0,0,0,114,95,0, + 0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,101, + 95,95,114,185,0,0,0,114,35,0,0,0,114,171,0,0, + 0,114,34,0,0,0,114,40,0,0,0,114,7,1,0,0, + 114,116,0,0,0,114,112,0,0,0,114,127,0,0,0,114, + 61,0,0,0,114,109,1,0,0,114,231,0,0,0,114,113, + 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,121,0,0,0,114,128, + 0,0,0,114,135,0,0,0,114,137,0,0,0,114,139,0, + 0,0,114,159,0,0,0,114,166,0,0,0,114,175,0,0, + 0,114,179,0,0,0,114,181,0,0,0,114,188,0,0,0, + 114,193,0,0,0,114,194,0,0,0,114,199,0,0,0,218, + 6,111,98,106,101,99,116,114,208,0,0,0,114,212,0,0, + 0,114,213,0,0,0,114,234,0,0,0,114,248,0,0,0, + 114,10,1,0,0,114,32,1,0,0,114,39,1,0,0,114, + 28,1,0,0,114,44,1,0,0,114,70,1,0,0,114,74, + 1,0,0,114,91,1,0,0,114,108,1,0,0,114,207,0, + 0,0,114,111,1,0,0,114,113,1,0,0,114,12,0,0, + 0,114,7,0,0,0,218,8,60,109,111,100,117,108,101,62, 1,0,0,0,115,180,0,0,0,4,0,4,22,8,3,8, 1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8, 2,4,3,10,1,6,2,22,2,8,1,8,1,10,1,14, 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, - 127,16,33,12,1,4,2,4,1,6,2,4,1,10,1,8, + 127,16,35,12,1,4,2,4,1,6,2,4,1,10,1,8, 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, 127,14,17,18,50,18,45,18,25,14,53,14,63,14,49,0, - 127,14,29,0,127,10,30,8,23,8,11,12,5,114,10,0, + 127,14,29,0,127,10,30,8,23,8,11,12,5,114,9,0, 0,0, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 988d938f10b861..63084b7e57d251 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -70,266 +70,264 @@ const unsigned char _Py_M__zipimport[] = { 0,41,2,114,3,0,0,0,78,41,3,218,8,95,95,110, 97,109,101,95,95,218,10,95,95,109,111,100,117,108,101,95, 95,218,12,95,95,113,117,97,108,110,97,109,101,95,95,169, - 0,114,9,0,0,0,114,9,0,0,0,250,18,60,102,114, - 111,122,101,110,32,122,105,112,105,109,112,111,114,116,62,114, - 3,0,0,0,34,0,0,0,115,4,0,0,0,8,0,4, - 1,243,0,0,0,0,233,22,0,0,0,115,4,0,0,0, - 80,75,5,6,105,255,255,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,126, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, - 2,100,3,132,0,90,4,100,29,100,5,100,6,132,1,90, - 5,100,29,100,7,100,8,132,1,90,6,100,29,100,9,100, - 10,132,1,90,7,100,11,100,12,132,0,90,8,100,13,100, - 14,132,0,90,9,100,15,100,16,132,0,90,10,100,17,100, - 18,132,0,90,11,100,19,100,20,132,0,90,12,100,21,100, - 22,132,0,90,13,100,23,100,24,132,0,90,14,100,25,100, - 26,132,0,90,15,100,27,100,28,132,0,90,16,100,4,83, - 0,41,30,114,4,0,0,0,97,255,1,0,0,122,105,112, - 105,109,112,111,114,116,101,114,40,97,114,99,104,105,118,101, - 112,97,116,104,41,32,45,62,32,122,105,112,105,109,112,111, - 114,116,101,114,32,111,98,106,101,99,116,10,10,32,32,32, - 32,67,114,101,97,116,101,32,97,32,110,101,119,32,122,105, - 112,105,109,112,111,114,116,101,114,32,105,110,115,116,97,110, - 99,101,46,32,39,97,114,99,104,105,118,101,112,97,116,104, - 39,32,109,117,115,116,32,98,101,32,97,32,112,97,116,104, - 32,116,111,10,32,32,32,32,97,32,122,105,112,102,105,108, - 101,44,32,111,114,32,116,111,32,97,32,115,112,101,99,105, - 102,105,99,32,112,97,116,104,32,105,110,115,105,100,101,32, - 97,32,122,105,112,102,105,108,101,46,32,70,111,114,32,101, - 120,97,109,112,108,101,44,32,105,116,32,99,97,110,32,98, - 101,10,32,32,32,32,39,47,116,109,112,47,109,121,105,109, - 112,111,114,116,46,122,105,112,39,44,32,111,114,32,39,47, - 116,109,112,47,109,121,105,109,112,111,114,116,46,122,105,112, - 47,109,121,100,105,114,101,99,116,111,114,121,39,44,32,105, - 102,32,109,121,100,105,114,101,99,116,111,114,121,32,105,115, - 32,97,10,32,32,32,32,118,97,108,105,100,32,100,105,114, - 101,99,116,111,114,121,32,105,110,115,105,100,101,32,116,104, - 101,32,97,114,99,104,105,118,101,46,10,10,32,32,32,32, - 39,90,105,112,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,39,97,114, - 99,104,105,118,101,112,97,116,104,39,32,100,111,101,115,110, - 39,116,32,112,111,105,110,116,32,116,111,32,97,32,118,97, - 108,105,100,32,90,105,112,10,32,32,32,32,97,114,99,104, - 105,118,101,46,10,10,32,32,32,32,84,104,101,32,39,97, - 114,99,104,105,118,101,39,32,97,116,116,114,105,98,117,116, - 101,32,111,102,32,122,105,112,105,109,112,111,114,116,101,114, - 32,111,98,106,101,99,116,115,32,99,111,110,116,97,105,110, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,10,32,32,32,32,122,105,112,102,105,108,101,32,116,97, - 114,103,101,116,101,100,46,10,32,32,32,32,99,2,0,0, - 0,0,0,0,0,0,0,0,0,9,0,0,0,67,0,0, - 0,115,40,1,0,0,116,0,124,1,116,1,131,2,115,14, - 100,1,100,0,108,2,125,2,124,2,160,3,124,1,161,1, - 125,1,124,1,115,22,116,4,100,2,124,1,100,3,141,2, - 130,1,116,5,114,30,124,1,160,6,116,5,116,7,161,2, - 125,1,103,0,125,3,9,0,9,0,116,8,160,9,124,1, - 161,1,125,4,110,36,35,0,4,0,116,10,116,11,102,2, - 121,147,1,0,1,0,1,0,116,8,160,12,124,1,161,1, - 92,2,125,5,125,6,124,5,124,1,107,2,114,66,116,4, - 100,5,124,1,100,3,141,2,130,1,124,5,125,1,124,3, - 160,13,124,6,161,1,1,0,89,0,110,15,37,0,124,4, - 106,14,100,6,64,0,100,7,107,3,114,89,116,4,100,5, - 124,1,100,3,141,2,130,1,113,91,113,33,9,0,116,15, - 124,1,25,0,125,7,110,18,35,0,4,0,116,16,121,146, - 1,0,1,0,1,0,116,17,124,1,131,1,125,7,124,7, - 116,15,124,1,60,0,89,0,110,1,37,0,124,7,124,0, - 95,18,124,1,124,0,95,19,116,8,106,20,124,3,100,0, - 100,0,100,8,133,3,25,0,142,0,124,0,95,21,124,0, - 106,21,114,144,124,0,4,0,106,21,116,7,55,0,2,0, - 95,21,100,0,83,0,100,0,83,0,119,0,119,0,41,9, - 78,114,0,0,0,0,122,21,97,114,99,104,105,118,101,32, - 112,97,116,104,32,105,115,32,101,109,112,116,121,169,1,218, - 4,112,97,116,104,84,122,14,110,111,116,32,97,32,90,105, - 112,32,102,105,108,101,105,0,240,0,0,105,0,128,0,0, - 233,255,255,255,255,41,22,218,10,105,115,105,110,115,116,97, - 110,99,101,218,3,115,116,114,218,2,111,115,90,8,102,115, - 100,101,99,111,100,101,114,3,0,0,0,218,12,97,108,116, - 95,112,97,116,104,95,115,101,112,218,7,114,101,112,108,97, - 99,101,218,8,112,97,116,104,95,115,101,112,218,19,95,98, - 111,111,116,115,116,114,97,112,95,101,120,116,101,114,110,97, - 108,90,10,95,112,97,116,104,95,115,116,97,116,218,7,79, - 83,69,114,114,111,114,218,10,86,97,108,117,101,69,114,114, - 111,114,90,11,95,112,97,116,104,95,115,112,108,105,116,218, - 6,97,112,112,101,110,100,90,7,115,116,95,109,111,100,101, - 218,20,95,122,105,112,95,100,105,114,101,99,116,111,114,121, - 95,99,97,99,104,101,218,8,75,101,121,69,114,114,111,114, - 218,15,95,114,101,97,100,95,100,105,114,101,99,116,111,114, - 121,218,6,95,102,105,108,101,115,218,7,97,114,99,104,105, - 118,101,218,10,95,112,97,116,104,95,106,111,105,110,218,6, - 112,114,101,102,105,120,41,8,218,4,115,101,108,102,114,14, - 0,0,0,114,18,0,0,0,114,32,0,0,0,90,2,115, - 116,90,7,100,105,114,110,97,109,101,90,8,98,97,115,101, - 110,97,109,101,218,5,102,105,108,101,115,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,8,95,95,105,110, - 105,116,95,95,64,0,0,0,115,76,0,0,0,10,1,8, - 1,10,1,4,1,12,1,4,1,12,1,4,2,2,1,2, - 1,12,1,2,128,16,1,14,3,8,1,12,1,4,1,14, - 1,2,128,14,3,12,2,2,1,2,240,2,18,10,1,2, - 128,12,1,8,1,12,1,2,128,6,1,6,1,22,2,6, - 1,18,1,4,255,2,249,2,239,115,33,0,0,0,162,5, - 40,0,168,33,65,11,7,193,28,4,65,33,0,193,33,15, - 65,50,7,194,18,1,65,50,7,194,19,1,65,11,7,122, - 20,122,105,112,105,109,112,111,114,116,101,114,46,95,95,105, - 110,105,116,95,95,78,99,3,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,115,90,0,0,0, - 116,0,160,1,100,1,116,2,161,2,1,0,116,3,124,0, - 124,1,131,2,125,3,124,3,100,2,117,1,114,19,124,0, - 103,0,102,2,83,0,116,4,124,0,124,1,131,2,125,4, - 116,5,124,0,124,4,131,2,114,41,100,2,124,0,106,6, - 155,0,116,7,155,0,124,4,155,0,157,3,103,1,102,2, - 83,0,100,2,103,0,102,2,83,0,41,3,97,47,2,0, - 0,102,105,110,100,95,108,111,97,100,101,114,40,102,117,108, - 108,110,97,109,101,44,32,112,97,116,104,61,78,111,110,101, - 41,32,45,62,32,115,101,108,102,44,32,115,116,114,32,111, - 114,32,78,111,110,101,46,10,10,32,32,32,32,32,32,32, - 32,83,101,97,114,99,104,32,102,111,114,32,97,32,109,111, - 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, - 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102, - 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101, - 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, - 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111, - 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109, - 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104, - 101,32,122,105,112,105,109,112,111,114,116,101,114,10,32,32, - 32,32,32,32,32,32,105,110,115,116,97,110,99,101,32,105, - 116,115,101,108,102,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,119,97,115,32,102,111,117,110,100,44,32,97, - 32,115,116,114,105,110,103,32,99,111,110,116,97,105,110,105, - 110,103,32,116,104,101,10,32,32,32,32,32,32,32,32,102, - 117,108,108,32,112,97,116,104,32,110,97,109,101,32,105,102, - 32,105,116,39,115,32,112,111,115,115,105,98,108,121,32,97, - 32,112,111,114,116,105,111,110,32,111,102,32,97,32,110,97, - 109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,44, - 10,32,32,32,32,32,32,32,32,111,114,32,78,111,110,101, - 32,111,116,104,101,114,119,105,115,101,46,32,84,104,101,32, - 111,112,116,105,111,110,97,108,32,39,112,97,116,104,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,105,103,110,111, - 114,101,100,32,45,45,32,105,116,39,115,10,32,32,32,32, - 32,32,32,32,116,104,101,114,101,32,102,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,105,109,112,111,114,116,101,114,32,112,114, - 111,116,111,99,111,108,46,10,10,32,32,32,32,32,32,32, - 32,68,101,112,114,101,99,97,116,101,100,32,115,105,110,99, - 101,32,80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32, - 122,102,122,105,112,105,109,112,111,114,116,101,114,46,102,105, - 110,100,95,108,111,97,100,101,114,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,41,8,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,16,95,103,101,116,95,109,111,100,117,108,101,95,105,110, - 102,111,218,16,95,103,101,116,95,109,111,100,117,108,101,95, - 112,97,116,104,218,7,95,105,115,95,100,105,114,114,30,0, - 0,0,114,21,0,0,0,41,5,114,33,0,0,0,218,8, - 102,117,108,108,110,97,109,101,114,14,0,0,0,218,2,109, - 105,218,7,109,111,100,112,97,116,104,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,11,102,105,110,100,95, - 108,111,97,100,101,114,110,0,0,0,115,20,0,0,0,6, - 12,2,2,4,254,10,3,8,1,8,2,10,7,10,1,24, - 4,8,2,114,11,0,0,0,122,23,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,108,111,97,100,101, - 114,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,67,0,0,0,115,28,0,0,0,116,0,160,1,100, - 1,116,2,161,2,1,0,124,0,160,3,124,1,124,2,161, - 2,100,2,25,0,83,0,41,4,97,203,1,0,0,102,105, - 110,100,95,109,111,100,117,108,101,40,102,117,108,108,110,97, - 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, - 62,32,115,101,108,102,32,111,114,32,78,111,110,101,46,10, - 10,32,32,32,32,32,32,32,32,83,101,97,114,99,104,32, - 102,111,114,32,97,32,109,111,100,117,108,101,32,115,112,101, - 99,105,102,105,101,100,32,98,121,32,39,102,117,108,108,110, - 97,109,101,39,46,32,39,102,117,108,108,110,97,109,101,39, - 32,109,117,115,116,32,98,101,32,116,104,101,10,32,32,32, - 32,32,32,32,32,102,117,108,108,121,32,113,117,97,108,105, - 102,105,101,100,32,40,100,111,116,116,101,100,41,32,109,111, - 100,117,108,101,32,110,97,109,101,46,32,73,116,32,114,101, - 116,117,114,110,115,32,116,104,101,32,122,105,112,105,109,112, - 111,114,116,101,114,10,32,32,32,32,32,32,32,32,105,110, - 115,116,97,110,99,101,32,105,116,115,101,108,102,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,119,97,115,32, - 102,111,117,110,100,44,32,111,114,32,78,111,110,101,32,105, - 102,32,105,116,32,119,97,115,110,39,116,46,10,32,32,32, - 32,32,32,32,32,84,104,101,32,111,112,116,105,111,110,97, - 108,32,39,112,97,116,104,39,32,97,114,103,117,109,101,110, - 116,32,105,115,32,105,103,110,111,114,101,100,32,45,45,32, - 105,116,39,115,32,116,104,101,114,101,32,102,111,114,32,99, - 111,109,112,97,116,105,98,105,108,105,116,121,10,32,32,32, - 32,32,32,32,32,119,105,116,104,32,116,104,101,32,105,109, - 112,111,114,116,101,114,32,112,114,111,116,111,99,111,108,46, - 10,10,32,32,32,32,32,32,32,32,68,101,112,114,101,99, - 97,116,101,100,32,115,105,110,99,101,32,80,121,116,104,111, - 110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,102,122,105,112,105,109, - 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, - 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, - 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, - 100,114,0,0,0,0,78,41,4,114,36,0,0,0,114,37, - 0,0,0,114,38,0,0,0,114,45,0,0,0,41,3,114, - 33,0,0,0,114,42,0,0,0,114,14,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,11,102, - 105,110,100,95,109,111,100,117,108,101,147,0,0,0,115,8, - 0,0,0,6,11,2,2,4,254,16,3,114,11,0,0,0, - 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,99,3,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,67,0,0,0,115,108, - 0,0,0,116,0,124,0,124,1,131,2,125,3,124,3,100, - 1,117,1,114,17,116,1,160,2,124,1,124,0,124,3,100, - 2,166,3,83,0,116,3,124,0,124,1,131,2,125,4,116, - 4,124,0,124,4,131,2,114,52,124,0,106,5,155,0,116, - 6,155,0,124,4,155,0,157,3,125,5,116,1,160,7,124, - 1,100,1,100,3,100,4,166,3,125,6,124,6,106,8,160, - 9,124,5,161,1,1,0,124,6,83,0,100,1,83,0,41, - 5,122,107,67,114,101,97,116,101,32,97,32,77,111,100,117, - 108,101,83,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,78,111,110,101,32,105,102,32,116,104,101,32,109,111, - 100,117,108,101,32,99,97,110,110,111,116,32,98,101,32,102, - 111,117,110,100,46,10,32,32,32,32,32,32,32,32,78,41, - 1,218,10,105,115,95,112,97,99,107,97,103,101,84,41,3, - 218,4,110,97,109,101,90,6,108,111,97,100,101,114,114,47, - 0,0,0,41,10,114,39,0,0,0,218,10,95,98,111,111, - 116,115,116,114,97,112,90,16,115,112,101,99,95,102,114,111, - 109,95,108,111,97,100,101,114,114,40,0,0,0,114,41,0, - 0,0,114,30,0,0,0,114,21,0,0,0,90,10,77,111, - 100,117,108,101,83,112,101,99,90,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,114,25,0,0,0,41,7,114,33,0,0,0, - 114,42,0,0,0,90,6,116,97,114,103,101,116,90,11,109, - 111,100,117,108,101,95,105,110,102,111,114,44,0,0,0,114, - 14,0,0,0,90,4,115,112,101,99,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,9,102,105,110,100,95, - 115,112,101,99,163,0,0,0,115,24,0,0,0,10,5,8, - 1,16,1,10,7,10,1,18,4,8,1,2,1,6,255,12, - 2,4,1,4,2,114,11,0,0,0,122,21,122,105,112,105, - 109,112,111,114,116,101,114,46,102,105,110,100,95,115,112,101, - 99,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,67,0,0,0,115,20,0,0,0,116,0,124,0,124, - 1,131,2,92,3,125,2,125,3,125,4,124,2,83,0,41, - 2,122,166,103,101,116,95,99,111,100,101,40,102,117,108,108, - 110,97,109,101,41,32,45,62,32,99,111,100,101,32,111,98, - 106,101,99,116,46,10,10,32,32,32,32,32,32,32,32,82, - 101,116,117,114,110,32,116,104,101,32,99,111,100,101,32,111, - 98,106,101,99,116,32,102,111,114,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,46,32, - 82,97,105,115,101,32,90,105,112,73,109,112,111,114,116,69, - 114,114,111,114,10,32,32,32,32,32,32,32,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,99,111,117,108,100, - 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, - 10,32,32,32,32,32,32,32,32,78,169,1,218,16,95,103, - 101,116,95,109,111,100,117,108,101,95,99,111,100,101,169,5, - 114,33,0,0,0,114,42,0,0,0,218,4,99,111,100,101, - 218,9,105,115,112,97,99,107,97,103,101,114,44,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 0,250,18,60,102,114,111,122,101,110,32,122,105,112,105,109, + 112,111,114,116,62,114,3,0,0,0,34,0,0,0,115,4, + 0,0,0,8,0,4,1,243,0,0,0,0,233,22,0,0, + 0,115,4,0,0,0,80,75,5,6,105,255,255,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 64,0,0,0,115,126,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,100,3,132,0,90,4,100,29,100, + 5,100,6,132,1,90,5,100,29,100,7,100,8,132,1,90, + 6,100,29,100,9,100,10,132,1,90,7,100,11,100,12,132, + 0,90,8,100,13,100,14,132,0,90,9,100,15,100,16,132, + 0,90,10,100,17,100,18,132,0,90,11,100,19,100,20,132, + 0,90,12,100,21,100,22,132,0,90,13,100,23,100,24,132, + 0,90,14,100,25,100,26,132,0,90,15,100,27,100,28,132, + 0,90,16,100,4,83,0,41,30,114,4,0,0,0,97,255, + 1,0,0,122,105,112,105,109,112,111,114,116,101,114,40,97, + 114,99,104,105,118,101,112,97,116,104,41,32,45,62,32,122, + 105,112,105,109,112,111,114,116,101,114,32,111,98,106,101,99, + 116,10,10,32,32,32,32,67,114,101,97,116,101,32,97,32, + 110,101,119,32,122,105,112,105,109,112,111,114,116,101,114,32, + 105,110,115,116,97,110,99,101,46,32,39,97,114,99,104,105, + 118,101,112,97,116,104,39,32,109,117,115,116,32,98,101,32, + 97,32,112,97,116,104,32,116,111,10,32,32,32,32,97,32, + 122,105,112,102,105,108,101,44,32,111,114,32,116,111,32,97, + 32,115,112,101,99,105,102,105,99,32,112,97,116,104,32,105, + 110,115,105,100,101,32,97,32,122,105,112,102,105,108,101,46, + 32,70,111,114,32,101,120,97,109,112,108,101,44,32,105,116, + 32,99,97,110,32,98,101,10,32,32,32,32,39,47,116,109, + 112,47,109,121,105,109,112,111,114,116,46,122,105,112,39,44, + 32,111,114,32,39,47,116,109,112,47,109,121,105,109,112,111, + 114,116,46,122,105,112,47,109,121,100,105,114,101,99,116,111, + 114,121,39,44,32,105,102,32,109,121,100,105,114,101,99,116, + 111,114,121,32,105,115,32,97,10,32,32,32,32,118,97,108, + 105,100,32,100,105,114,101,99,116,111,114,121,32,105,110,115, + 105,100,101,32,116,104,101,32,97,114,99,104,105,118,101,46, + 10,10,32,32,32,32,39,90,105,112,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,39,97,114,99,104,105,118,101,112,97,116,104,39, + 32,100,111,101,115,110,39,116,32,112,111,105,110,116,32,116, + 111,32,97,32,118,97,108,105,100,32,90,105,112,10,32,32, + 32,32,97,114,99,104,105,118,101,46,10,10,32,32,32,32, + 84,104,101,32,39,97,114,99,104,105,118,101,39,32,97,116, + 116,114,105,98,117,116,101,32,111,102,32,122,105,112,105,109, + 112,111,114,116,101,114,32,111,98,106,101,99,116,115,32,99, + 111,110,116,97,105,110,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,116,104,101,10,32,32,32,32,122,105,112,102, + 105,108,101,32,116,97,114,103,101,116,101,100,46,10,32,32, + 32,32,99,2,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,67,0,0,0,115,40,1,0,0,116,0,124,1, + 116,1,131,2,115,14,100,1,100,0,108,2,125,2,124,2, + 160,3,124,1,161,1,125,1,124,1,115,22,116,4,100,2, + 124,1,100,3,141,2,130,1,116,5,114,30,124,1,160,6, + 116,5,116,7,161,2,125,1,103,0,125,3,9,0,9,0, + 116,8,160,9,124,1,161,1,125,4,110,36,35,0,4,0, + 116,10,116,11,102,2,121,147,1,0,1,0,1,0,116,8, + 160,12,124,1,161,1,92,2,125,5,125,6,124,5,124,1, + 107,2,114,66,116,4,100,5,124,1,100,3,141,2,130,1, + 124,5,125,1,124,3,160,13,124,6,161,1,1,0,89,0, + 110,15,37,0,124,4,106,14,100,6,64,0,100,7,107,3, + 114,89,116,4,100,5,124,1,100,3,141,2,130,1,113,91, + 113,33,9,0,116,15,124,1,25,0,125,7,110,18,35,0, + 4,0,116,16,121,146,1,0,1,0,1,0,116,17,124,1, + 131,1,125,7,124,7,116,15,124,1,60,0,89,0,110,1, + 37,0,124,7,124,0,95,18,124,1,124,0,95,19,116,8, + 106,20,124,3,100,0,100,0,100,8,133,3,25,0,142,0, + 124,0,95,21,124,0,106,21,114,144,124,0,4,0,106,21, + 116,7,55,0,2,0,95,21,100,0,83,0,100,0,83,0, + 119,0,119,0,41,9,78,114,0,0,0,0,122,21,97,114, + 99,104,105,118,101,32,112,97,116,104,32,105,115,32,101,109, + 112,116,121,169,1,218,4,112,97,116,104,84,122,14,110,111, + 116,32,97,32,90,105,112,32,102,105,108,101,105,0,240,0, + 0,105,0,128,0,0,233,255,255,255,255,41,22,218,10,105, + 115,105,110,115,116,97,110,99,101,218,3,115,116,114,218,2, + 111,115,90,8,102,115,100,101,99,111,100,101,114,3,0,0, + 0,218,12,97,108,116,95,112,97,116,104,95,115,101,112,218, + 7,114,101,112,108,97,99,101,218,8,112,97,116,104,95,115, + 101,112,218,19,95,98,111,111,116,115,116,114,97,112,95,101, + 120,116,101,114,110,97,108,90,10,95,112,97,116,104,95,115, + 116,97,116,218,7,79,83,69,114,114,111,114,218,10,86,97, + 108,117,101,69,114,114,111,114,90,11,95,112,97,116,104,95, + 115,112,108,105,116,218,6,97,112,112,101,110,100,90,7,115, + 116,95,109,111,100,101,218,20,95,122,105,112,95,100,105,114, + 101,99,116,111,114,121,95,99,97,99,104,101,218,8,75,101, + 121,69,114,114,111,114,218,15,95,114,101,97,100,95,100,105, + 114,101,99,116,111,114,121,218,6,95,102,105,108,101,115,218, + 7,97,114,99,104,105,118,101,218,10,95,112,97,116,104,95, + 106,111,105,110,218,6,112,114,101,102,105,120,41,8,218,4, + 115,101,108,102,114,14,0,0,0,114,18,0,0,0,114,32, + 0,0,0,90,2,115,116,90,7,100,105,114,110,97,109,101, + 90,8,98,97,115,101,110,97,109,101,218,5,102,105,108,101, + 115,32,32,32,32,32,32,32,32,114,10,0,0,0,218,8, + 95,95,105,110,105,116,95,95,64,0,0,0,115,76,0,0, + 0,10,1,8,1,10,1,4,1,12,1,4,1,12,1,4, + 2,2,1,2,1,12,1,2,128,16,1,14,3,8,1,12, + 1,4,1,14,1,2,128,14,3,12,2,2,1,2,240,2, + 18,10,1,2,128,12,1,8,1,12,1,2,128,6,1,6, + 1,22,2,6,1,18,1,4,255,2,249,2,239,115,33,0, + 0,0,162,5,40,0,168,33,65,11,7,193,28,4,65,33, + 0,193,33,15,65,50,7,194,18,1,65,50,7,194,19,1, + 65,11,7,122,20,122,105,112,105,109,112,111,114,116,101,114, + 46,95,95,105,110,105,116,95,95,78,99,3,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 90,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 116,3,124,0,124,1,131,2,125,3,124,3,100,2,117,1, + 114,19,124,0,103,0,102,2,83,0,116,4,124,0,124,1, + 131,2,125,4,116,5,124,0,124,4,131,2,114,41,100,2, + 124,0,106,6,155,0,116,7,155,0,124,4,155,0,157,3, + 103,1,102,2,83,0,100,2,103,0,102,2,83,0,41,3, + 97,47,2,0,0,102,105,110,100,95,108,111,97,100,101,114, + 40,102,117,108,108,110,97,109,101,44,32,112,97,116,104,61, + 78,111,110,101,41,32,45,62,32,115,101,108,102,44,32,115, + 116,114,32,111,114,32,78,111,110,101,46,10,10,32,32,32, + 32,32,32,32,32,83,101,97,114,99,104,32,102,111,114,32, + 97,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, + 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, + 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, + 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, + 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, + 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, + 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, + 115,32,116,104,101,32,122,105,112,105,109,112,111,114,116,101, + 114,10,32,32,32,32,32,32,32,32,105,110,115,116,97,110, + 99,101,32,105,116,115,101,108,102,32,105,102,32,116,104,101, + 32,109,111,100,117,108,101,32,119,97,115,32,102,111,117,110, + 100,44,32,97,32,115,116,114,105,110,103,32,99,111,110,116, + 97,105,110,105,110,103,32,116,104,101,10,32,32,32,32,32, + 32,32,32,102,117,108,108,32,112,97,116,104,32,110,97,109, + 101,32,105,102,32,105,116,39,115,32,112,111,115,115,105,98, + 108,121,32,97,32,112,111,114,116,105,111,110,32,111,102,32, + 97,32,110,97,109,101,115,112,97,99,101,32,112,97,99,107, + 97,103,101,44,10,32,32,32,32,32,32,32,32,111,114,32, + 78,111,110,101,32,111,116,104,101,114,119,105,115,101,46,32, + 84,104,101,32,111,112,116,105,111,110,97,108,32,39,112,97, + 116,104,39,32,97,114,103,117,109,101,110,116,32,105,115,32, + 105,103,110,111,114,101,100,32,45,45,32,105,116,39,115,10, + 32,32,32,32,32,32,32,32,116,104,101,114,101,32,102,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,105,109,112,111,114,116,101, + 114,32,112,114,111,116,111,99,111,108,46,10,10,32,32,32, + 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, + 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, + 48,46,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,32,32,32,32, + 32,32,32,32,122,102,122,105,112,105,109,112,111,114,116,101, + 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,41,8,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,16,95,103,101,116,95,109,111,100,117,108, + 101,95,105,110,102,111,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,112,97,116,104,218,7,95,105,115,95,100,105, + 114,114,30,0,0,0,114,21,0,0,0,41,5,114,33,0, + 0,0,218,8,102,117,108,108,110,97,109,101,114,14,0,0, + 0,218,2,109,105,218,7,109,111,100,112,97,116,104,32,32, + 32,32,32,114,10,0,0,0,218,11,102,105,110,100,95,108, + 111,97,100,101,114,110,0,0,0,115,20,0,0,0,6,12, + 2,2,4,254,10,3,8,1,8,2,10,7,10,1,24,4, + 8,2,114,11,0,0,0,122,23,122,105,112,105,109,112,111, + 114,116,101,114,46,102,105,110,100,95,108,111,97,100,101,114, + 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,28,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, + 100,2,25,0,83,0,41,4,97,203,1,0,0,102,105,110, + 100,95,109,111,100,117,108,101,40,102,117,108,108,110,97,109, + 101,44,32,112,97,116,104,61,78,111,110,101,41,32,45,62, + 32,115,101,108,102,32,111,114,32,78,111,110,101,46,10,10, + 32,32,32,32,32,32,32,32,83,101,97,114,99,104,32,102, + 111,114,32,97,32,109,111,100,117,108,101,32,115,112,101,99, + 105,102,105,101,100,32,98,121,32,39,102,117,108,108,110,97, + 109,101,39,46,32,39,102,117,108,108,110,97,109,101,39,32, + 109,117,115,116,32,98,101,32,116,104,101,10,32,32,32,32, + 32,32,32,32,102,117,108,108,121,32,113,117,97,108,105,102, + 105,101,100,32,40,100,111,116,116,101,100,41,32,109,111,100, + 117,108,101,32,110,97,109,101,46,32,73,116,32,114,101,116, + 117,114,110,115,32,116,104,101,32,122,105,112,105,109,112,111, + 114,116,101,114,10,32,32,32,32,32,32,32,32,105,110,115, + 116,97,110,99,101,32,105,116,115,101,108,102,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,119,97,115,32,102, + 111,117,110,100,44,32,111,114,32,78,111,110,101,32,105,102, + 32,105,116,32,119,97,115,110,39,116,46,10,32,32,32,32, + 32,32,32,32,84,104,101,32,111,112,116,105,111,110,97,108, + 32,39,112,97,116,104,39,32,97,114,103,117,109,101,110,116, + 32,105,115,32,105,103,110,111,114,101,100,32,45,45,32,105, + 116,39,115,32,116,104,101,114,101,32,102,111,114,32,99,111, + 109,112,97,116,105,98,105,108,105,116,121,10,32,32,32,32, + 32,32,32,32,119,105,116,104,32,116,104,101,32,105,109,112, + 111,114,116,101,114,32,112,114,111,116,111,99,111,108,46,10, + 10,32,32,32,32,32,32,32,32,68,101,112,114,101,99,97, + 116,101,100,32,115,105,110,99,101,32,80,121,116,104,111,110, + 32,51,46,49,48,46,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, + 32,32,32,32,32,32,32,32,122,102,122,105,112,105,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 114,0,0,0,0,78,41,4,114,36,0,0,0,114,37,0, + 0,0,114,38,0,0,0,114,45,0,0,0,41,3,114,33, + 0,0,0,114,42,0,0,0,114,14,0,0,0,32,32,32, + 114,10,0,0,0,218,11,102,105,110,100,95,109,111,100,117, + 108,101,147,0,0,0,115,8,0,0,0,6,11,2,2,4, + 254,16,3,114,11,0,0,0,122,23,122,105,112,105,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,3,0,0,0,0,0,0,0,0,0,0,0,6,0, + 0,0,67,0,0,0,115,108,0,0,0,116,0,124,0,124, + 1,131,2,125,3,124,3,100,1,117,1,114,17,116,1,160, + 2,124,1,124,0,124,3,100,2,166,3,83,0,116,3,124, + 0,124,1,131,2,125,4,116,4,124,0,124,4,131,2,114, + 52,124,0,106,5,155,0,116,6,155,0,124,4,155,0,157, + 3,125,5,116,1,160,7,124,1,100,1,100,3,100,4,166, + 3,125,6,124,6,106,8,160,9,124,5,161,1,1,0,124, + 6,83,0,100,1,83,0,41,5,122,107,67,114,101,97,116, + 101,32,97,32,77,111,100,117,108,101,83,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,78,111,110,101,32,105, + 102,32,116,104,101,32,109,111,100,117,108,101,32,99,97,110, + 110,111,116,32,98,101,32,102,111,117,110,100,46,10,32,32, + 32,32,32,32,32,32,78,41,1,218,10,105,115,95,112,97, + 99,107,97,103,101,84,41,3,218,4,110,97,109,101,90,6, + 108,111,97,100,101,114,114,47,0,0,0,41,10,114,39,0, + 0,0,218,10,95,98,111,111,116,115,116,114,97,112,90,16, + 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, + 114,40,0,0,0,114,41,0,0,0,114,30,0,0,0,114, + 21,0,0,0,90,10,77,111,100,117,108,101,83,112,101,99, + 90,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,114,25,0,0, + 0,41,7,114,33,0,0,0,114,42,0,0,0,90,6,116, + 97,114,103,101,116,90,11,109,111,100,117,108,101,95,105,110, + 102,111,114,44,0,0,0,114,14,0,0,0,90,4,115,112, + 101,99,32,32,32,32,32,32,32,114,10,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,163,0,0,0,115,24,0, + 0,0,10,5,8,1,16,1,10,7,10,1,18,4,8,1, + 2,1,6,255,12,2,4,1,4,2,114,11,0,0,0,122, + 21,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, + 100,95,115,112,101,99,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,67,0,0,0,115,20,0,0,0, + 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, + 124,2,83,0,41,2,122,166,103,101,116,95,99,111,100,101, + 40,102,117,108,108,110,97,109,101,41,32,45,62,32,99,111, + 100,101,32,111,98,106,101,99,116,46,10,10,32,32,32,32, + 32,32,32,32,82,101,116,117,114,110,32,116,104,101,32,99, + 111,100,101,32,111,98,106,101,99,116,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,46,32,82,97,105,115,101,32,90,105,112,73,109, + 112,111,114,116,69,114,114,111,114,10,32,32,32,32,32,32, + 32,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, + 99,111,117,108,100,110,39,116,32,98,101,32,105,109,112,111, + 114,116,101,100,46,10,32,32,32,32,32,32,32,32,78,169, + 1,218,16,95,103,101,116,95,109,111,100,117,108,101,95,99, + 111,100,101,169,5,114,33,0,0,0,114,42,0,0,0,218, + 4,99,111,100,101,218,9,105,115,112,97,99,107,97,103,101, + 114,44,0,0,0,32,32,32,32,32,114,10,0,0,0,218, 8,103,101,116,95,99,111,100,101,190,0,0,0,115,4,0, 0,0,16,6,4,1,114,11,0,0,0,122,20,122,105,112, 105,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, @@ -358,226 +356,223 @@ const unsigned char _Py_M__zipimport[] = { 27,0,0,0,114,23,0,0,0,218,9,95,103,101,116,95, 100,97,116,97,41,4,114,33,0,0,0,218,8,112,97,116, 104,110,97,109,101,90,3,107,101,121,218,9,116,111,99,95, - 101,110,116,114,121,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,218,8,103,101,116,95,100,97,116,97,200,0, - 0,0,115,26,0,0,0,4,6,12,1,4,2,16,1,22, - 1,2,2,12,1,2,128,12,1,12,1,2,128,12,1,2, - 254,115,12,0,0,0,158,5,36,0,164,13,49,7,184,1, - 49,7,122,20,122,105,112,105,109,112,111,114,116,101,114,46, - 103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,20,0, - 0,0,116,0,124,0,124,1,131,2,92,3,125,2,125,3, - 125,4,124,4,83,0,41,2,122,165,103,101,116,95,102,105, - 108,101,110,97,109,101,40,102,117,108,108,110,97,109,101,41, - 32,45,62,32,102,105,108,101,110,97,109,101,32,115,116,114, - 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,32,116,104,101,32,102,105,108,101,110,97,109, - 101,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,111,114,32,114,97, - 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, - 111,114,10,32,32,32,32,32,32,32,32,105,102,32,105,116, - 32,99,111,117,108,100,110,39,116,32,98,101,32,105,109,112, - 111,114,116,101,100,46,10,32,32,32,32,32,32,32,32,78, - 114,51,0,0,0,114,53,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,12,103,101,116,95,102, - 105,108,101,110,97,109,101,221,0,0,0,115,4,0,0,0, - 16,8,4,1,114,11,0,0,0,122,24,122,105,112,105,109, - 112,111,114,116,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, - 8,0,0,0,67,0,0,0,115,128,0,0,0,116,0,124, - 0,124,1,131,2,125,2,124,2,100,1,117,0,114,18,116, - 1,100,2,124,1,155,2,157,2,124,1,100,3,141,2,130, - 1,116,2,124,0,124,1,131,2,125,3,124,2,114,32,116, - 3,160,4,124,3,100,4,161,2,125,4,110,5,124,3,155, - 0,100,5,157,2,125,4,9,0,124,0,106,5,124,4,25, - 0,125,5,110,11,35,0,4,0,116,6,121,63,1,0,1, - 0,1,0,89,0,100,1,83,0,37,0,116,7,124,0,106, - 8,124,5,131,2,160,9,161,0,83,0,119,0,41,6,122, - 253,103,101,116,95,115,111,117,114,99,101,40,102,117,108,108, - 110,97,109,101,41,32,45,62,32,115,111,117,114,99,101,32, - 115,116,114,105,110,103,46,10,10,32,32,32,32,32,32,32, - 32,82,101,116,117,114,110,32,116,104,101,32,115,111,117,114, - 99,101,32,99,111,100,101,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,32,82,97,105,115,101,32,90,105,112,73,109,112,111,114, - 116,69,114,114,111,114,10,32,32,32,32,32,32,32,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,99,111,117, - 108,100,110,39,116,32,98,101,32,102,111,117,110,100,44,32, - 114,101,116,117,114,110,32,78,111,110,101,32,105,102,32,116, - 104,101,32,97,114,99,104,105,118,101,32,100,111,101,115,10, - 32,32,32,32,32,32,32,32,99,111,110,116,97,105,110,32, - 116,104,101,32,109,111,100,117,108,101,44,32,98,117,116,32, - 104,97,115,32,110,111,32,115,111,117,114,99,101,32,102,111, - 114,32,105,116,46,10,32,32,32,32,32,32,32,32,78,250, - 18,99,97,110,39,116,32,102,105,110,100,32,109,111,100,117, - 108,101,32,169,1,114,48,0,0,0,250,11,95,95,105,110, - 105,116,95,95,46,112,121,250,3,46,112,121,41,10,114,39, - 0,0,0,114,3,0,0,0,114,40,0,0,0,114,22,0, - 0,0,114,31,0,0,0,114,29,0,0,0,114,27,0,0, - 0,114,60,0,0,0,114,30,0,0,0,218,6,100,101,99, - 111,100,101,41,6,114,33,0,0,0,114,42,0,0,0,114, - 43,0,0,0,114,14,0,0,0,218,8,102,117,108,108,112, - 97,116,104,114,62,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,10,103,101,116,95,115,111,117, - 114,99,101,233,0,0,0,115,30,0,0,0,10,7,8,1, - 18,1,10,2,4,1,14,1,10,2,2,2,12,1,2,128, - 12,1,6,2,2,128,16,1,2,253,115,12,0,0,0,166, - 5,44,0,172,7,54,7,191,1,54,7,122,22,122,105,112, - 105,109,112,111,114,116,101,114,46,103,101,116,95,115,111,117, - 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,40,0,0,0,116,0,124, - 0,124,1,131,2,125,2,124,2,100,1,117,0,114,18,116, - 1,100,2,124,1,155,2,157,2,124,1,100,3,141,2,130, - 1,124,2,83,0,41,4,122,171,105,115,95,112,97,99,107, - 97,103,101,40,102,117,108,108,110,97,109,101,41,32,45,62, - 32,98,111,111,108,46,10,10,32,32,32,32,32,32,32,32, - 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116, - 104,101,32,109,111,100,117,108,101,32,115,112,101,99,105,102, - 105,101,100,32,98,121,32,102,117,108,108,110,97,109,101,32, - 105,115,32,97,32,112,97,99,107,97,103,101,46,10,32,32, - 32,32,32,32,32,32,82,97,105,115,101,32,90,105,112,73, - 109,112,111,114,116,69,114,114,111,114,32,105,102,32,116,104, - 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, - 116,32,98,101,32,102,111,117,110,100,46,10,32,32,32,32, - 32,32,32,32,78,114,65,0,0,0,114,66,0,0,0,41, - 2,114,39,0,0,0,114,3,0,0,0,41,3,114,33,0, - 0,0,114,42,0,0,0,114,43,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,47,0,0,0, - 3,1,0,0,115,8,0,0,0,10,6,8,1,18,1,4, - 1,114,11,0,0,0,122,22,122,105,112,105,109,112,111,114, - 116,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,8,0,0,0,67, - 0,0,0,115,0,1,0,0,100,1,125,2,116,0,160,1, - 124,2,116,2,161,2,1,0,116,3,124,0,124,1,131,2, - 92,3,125,3,125,4,125,5,116,4,106,5,160,6,124,1, - 161,1,125,6,124,6,100,2,117,0,115,31,116,7,124,6, - 116,8,131,2,115,40,116,8,124,1,131,1,125,6,124,6, - 116,4,106,5,124,1,60,0,124,0,124,6,95,9,9,0, - 124,4,114,62,116,10,124,0,124,1,131,2,125,7,116,11, - 160,12,124,0,106,13,124,7,161,2,125,8,124,8,103,1, - 124,6,95,14,116,15,124,6,100,3,131,2,115,70,116,16, - 124,6,95,16,116,11,160,17,124,6,106,18,124,1,124,5, - 161,3,1,0,116,19,124,3,124,6,106,18,131,2,1,0, - 110,10,35,0,1,0,1,0,1,0,116,4,106,5,124,1, - 61,0,130,0,37,0,9,0,116,4,106,5,124,1,25,0, - 125,6,110,16,35,0,4,0,116,20,121,127,1,0,1,0, - 1,0,116,21,100,4,124,1,155,2,100,5,157,3,131,1, - 130,1,37,0,116,22,160,23,100,6,124,1,124,5,161,3, - 1,0,124,6,83,0,119,0,41,7,97,64,1,0,0,108, - 111,97,100,95,109,111,100,117,108,101,40,102,117,108,108,110, - 97,109,101,41,32,45,62,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,32,32,32,32,76,111,97,100,32,116,104, - 101,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, - 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, - 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, - 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, - 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, - 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, - 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, - 115,32,116,104,101,32,105,109,112,111,114,116,101,100,10,32, - 32,32,32,32,32,32,32,109,111,100,117,108,101,44,32,111, - 114,32,114,97,105,115,101,115,32,90,105,112,73,109,112,111, - 114,116,69,114,114,111,114,32,105,102,32,105,116,32,99,111, - 117,108,100,32,110,111,116,32,98,101,32,105,109,112,111,114, - 116,101,100,46,10,10,32,32,32,32,32,32,32,32,68,101, - 112,114,101,99,97,116,101,100,32,115,105,110,99,101,32,80, - 121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122, - 114,122,105,112,105,109,112,111,114,116,46,122,105,112,105,109, - 112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,117, - 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,101,120, - 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, - 101,97,100,78,218,12,95,95,98,117,105,108,116,105,110,115, - 95,95,122,14,76,111,97,100,101,100,32,109,111,100,117,108, - 101,32,122,25,32,110,111,116,32,102,111,117,110,100,32,105, - 110,32,115,121,115,46,109,111,100,117,108,101,115,122,30,105, - 109,112,111,114,116,32,123,125,32,35,32,108,111,97,100,101, - 100,32,102,114,111,109,32,90,105,112,32,123,125,41,24,114, - 36,0,0,0,114,37,0,0,0,114,38,0,0,0,114,52, - 0,0,0,218,3,115,121,115,218,7,109,111,100,117,108,101, - 115,218,3,103,101,116,114,16,0,0,0,218,12,95,109,111, - 100,117,108,101,95,116,121,112,101,218,10,95,95,108,111,97, - 100,101,114,95,95,114,40,0,0,0,114,22,0,0,0,114, - 31,0,0,0,114,30,0,0,0,90,8,95,95,112,97,116, - 104,95,95,218,7,104,97,115,97,116,116,114,114,72,0,0, - 0,90,14,95,102,105,120,95,117,112,95,109,111,100,117,108, - 101,218,8,95,95,100,105,99,116,95,95,218,4,101,120,101, - 99,114,27,0,0,0,218,11,73,109,112,111,114,116,69,114, - 114,111,114,114,49,0,0,0,218,16,95,118,101,114,98,111, - 115,101,95,109,101,115,115,97,103,101,41,9,114,33,0,0, - 0,114,42,0,0,0,218,3,109,115,103,114,54,0,0,0, - 114,55,0,0,0,114,44,0,0,0,90,3,109,111,100,114, - 14,0,0,0,114,70,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,218,11,108,111,97,100,95,109, - 111,100,117,108,101,16,1,0,0,115,62,0,0,0,4,9, - 12,2,16,1,12,1,18,1,8,1,10,1,6,1,2,2, - 4,1,10,3,14,1,8,1,10,2,6,1,16,1,14,1, - 2,128,6,1,8,1,2,1,2,128,2,2,12,1,2,128, - 12,1,16,1,2,128,14,1,4,1,2,253,115,29,0,0, - 0,172,40,65,21,0,193,21,9,65,30,7,193,32,5,65, - 38,0,193,38,15,65,53,7,193,63,1,65,53,7,122,23, - 122,105,112,105,109,112,111,114,116,101,114,46,108,111,97,100, - 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,67,0,0,0,115,64,0,0, - 0,9,0,124,0,160,0,124,1,161,1,115,8,100,1,83, - 0,110,11,35,0,4,0,116,1,121,31,1,0,1,0,1, - 0,89,0,100,1,83,0,37,0,100,2,100,3,108,2,109, - 3,125,2,1,0,124,2,124,0,124,1,131,2,83,0,119, - 0,41,4,122,204,82,101,116,117,114,110,32,116,104,101,32, - 82,101,115,111,117,114,99,101,82,101,97,100,101,114,32,102, - 111,114,32,97,32,112,97,99,107,97,103,101,32,105,110,32, - 97,32,122,105,112,32,102,105,108,101,46,10,10,32,32,32, - 32,32,32,32,32,73,102,32,39,102,117,108,108,110,97,109, - 101,39,32,105,115,32,97,32,112,97,99,107,97,103,101,32, - 119,105,116,104,105,110,32,116,104,101,32,122,105,112,32,102, - 105,108,101,44,32,114,101,116,117,114,110,32,116,104,101,10, - 32,32,32,32,32,32,32,32,39,82,101,115,111,117,114,99, - 101,82,101,97,100,101,114,39,32,111,98,106,101,99,116,32, - 102,111,114,32,116,104,101,32,112,97,99,107,97,103,101,46, - 32,32,79,116,104,101,114,119,105,115,101,32,114,101,116,117, - 114,110,32,78,111,110,101,46,10,32,32,32,32,32,32,32, - 32,78,114,0,0,0,0,41,1,218,9,90,105,112,82,101, - 97,100,101,114,41,4,114,47,0,0,0,114,3,0,0,0, - 90,17,105,109,112,111,114,116,108,105,98,46,114,101,97,100, - 101,114,115,114,85,0,0,0,41,3,114,33,0,0,0,114, - 42,0,0,0,114,85,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,218,19,103,101,116,95,114,101, - 115,111,117,114,99,101,95,114,101,97,100,101,114,59,1,0, - 0,115,22,0,0,0,2,6,10,1,4,1,2,255,2,128, - 12,2,6,1,2,128,12,1,10,1,2,253,115,12,0,0, - 0,129,5,9,0,137,7,19,7,159,1,19,7,122,31,122, - 105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,114, - 101,115,111,117,114,99,101,95,114,101,97,100,101,114,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,74,0,0,0,9,0,116,0,124,0,106,1, - 131,1,124,0,95,2,124,0,106,2,116,3,124,0,106,1, - 60,0,100,1,83,0,35,0,4,0,116,4,121,36,1,0, - 1,0,1,0,116,3,160,5,124,0,106,1,100,1,161,2, - 1,0,100,1,124,0,95,2,89,0,100,1,83,0,37,0, - 119,0,41,2,122,41,82,101,108,111,97,100,32,116,104,101, - 32,102,105,108,101,32,100,97,116,97,32,111,102,32,116,104, - 101,32,97,114,99,104,105,118,101,32,112,97,116,104,46,78, - 41,6,114,28,0,0,0,114,30,0,0,0,114,29,0,0, - 0,114,26,0,0,0,114,3,0,0,0,218,3,112,111,112, - 169,1,114,33,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,17,105,110,118,97,108,105,100,97, - 116,101,95,99,97,99,104,101,115,74,1,0,0,115,18,0, - 0,0,2,2,12,1,16,1,2,128,12,1,14,1,12,1, - 2,128,2,254,115,12,0,0,0,129,12,15,0,143,17,35, - 7,164,1,35,7,122,29,122,105,112,105,109,112,111,114,116, - 101,114,46,105,110,118,97,108,105,100,97,116,101,95,99,97, - 99,104,101,115,99,1,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,67,0,0,0,115,24,0,0,0,100,1, - 124,0,106,0,155,0,116,1,155,0,124,0,106,2,155,0, - 100,2,157,5,83,0,41,3,78,122,21,60,122,105,112,105, - 109,112,111,114,116,101,114,32,111,98,106,101,99,116,32,34, - 122,2,34,62,41,3,114,30,0,0,0,114,21,0,0,0, - 114,32,0,0,0,114,88,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,8,95,95,114,101,112, + 101,110,116,114,121,32,32,32,32,114,10,0,0,0,218,8, + 103,101,116,95,100,97,116,97,200,0,0,0,115,26,0,0, + 0,4,6,12,1,4,2,16,1,22,1,2,2,12,1,2, + 128,12,1,12,1,2,128,12,1,2,254,115,12,0,0,0, + 158,5,36,0,164,13,49,7,184,1,49,7,122,20,122,105, + 112,105,109,112,111,114,116,101,114,46,103,101,116,95,100,97, + 116,97,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,115,20,0,0,0,116,0,124,0, + 124,1,131,2,92,3,125,2,125,3,125,4,124,4,83,0, + 41,2,122,165,103,101,116,95,102,105,108,101,110,97,109,101, + 40,102,117,108,108,110,97,109,101,41,32,45,62,32,102,105, + 108,101,110,97,109,101,32,115,116,114,105,110,103,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, + 104,101,32,102,105,108,101,110,97,109,101,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,111,114,32,114,97,105,115,101,32,90,105, + 112,73,109,112,111,114,116,69,114,114,111,114,10,32,32,32, + 32,32,32,32,32,105,102,32,105,116,32,99,111,117,108,100, + 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, + 10,32,32,32,32,32,32,32,32,78,114,51,0,0,0,114, + 53,0,0,0,32,32,32,32,32,114,10,0,0,0,218,12, + 103,101,116,95,102,105,108,101,110,97,109,101,221,0,0,0, + 115,4,0,0,0,16,8,4,1,114,11,0,0,0,122,24, + 122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115,128,0, + 0,0,116,0,124,0,124,1,131,2,125,2,124,2,100,1, + 117,0,114,18,116,1,100,2,124,1,155,2,157,2,124,1, + 100,3,141,2,130,1,116,2,124,0,124,1,131,2,125,3, + 124,2,114,32,116,3,160,4,124,3,100,4,161,2,125,4, + 110,5,124,3,155,0,100,5,157,2,125,4,9,0,124,0, + 106,5,124,4,25,0,125,5,110,11,35,0,4,0,116,6, + 121,63,1,0,1,0,1,0,89,0,100,1,83,0,37,0, + 116,7,124,0,106,8,124,5,131,2,160,9,161,0,83,0, + 119,0,41,6,122,253,103,101,116,95,115,111,117,114,99,101, + 40,102,117,108,108,110,97,109,101,41,32,45,62,32,115,111, + 117,114,99,101,32,115,116,114,105,110,103,46,10,10,32,32, + 32,32,32,32,32,32,82,101,116,117,114,110,32,116,104,101, + 32,115,111,117,114,99,101,32,99,111,100,101,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,32,82,97,105,115,101,32,90,105,112, + 73,109,112,111,114,116,69,114,114,111,114,10,32,32,32,32, + 32,32,32,32,105,102,32,116,104,101,32,109,111,100,117,108, + 101,32,99,111,117,108,100,110,39,116,32,98,101,32,102,111, + 117,110,100,44,32,114,101,116,117,114,110,32,78,111,110,101, + 32,105,102,32,116,104,101,32,97,114,99,104,105,118,101,32, + 100,111,101,115,10,32,32,32,32,32,32,32,32,99,111,110, + 116,97,105,110,32,116,104,101,32,109,111,100,117,108,101,44, + 32,98,117,116,32,104,97,115,32,110,111,32,115,111,117,114, + 99,101,32,102,111,114,32,105,116,46,10,32,32,32,32,32, + 32,32,32,78,250,18,99,97,110,39,116,32,102,105,110,100, + 32,109,111,100,117,108,101,32,169,1,114,48,0,0,0,250, + 11,95,95,105,110,105,116,95,95,46,112,121,250,3,46,112, + 121,41,10,114,39,0,0,0,114,3,0,0,0,114,40,0, + 0,0,114,22,0,0,0,114,31,0,0,0,114,29,0,0, + 0,114,27,0,0,0,114,60,0,0,0,114,30,0,0,0, + 218,6,100,101,99,111,100,101,41,6,114,33,0,0,0,114, + 42,0,0,0,114,43,0,0,0,114,14,0,0,0,218,8, + 102,117,108,108,112,97,116,104,114,62,0,0,0,32,32,32, + 32,32,32,114,10,0,0,0,218,10,103,101,116,95,115,111, + 117,114,99,101,233,0,0,0,115,30,0,0,0,10,7,8, + 1,18,1,10,2,4,1,14,1,10,2,2,2,12,1,2, + 128,12,1,6,2,2,128,16,1,2,253,115,12,0,0,0, + 166,5,44,0,172,7,54,7,191,1,54,7,122,22,122,105, + 112,105,109,112,111,114,116,101,114,46,103,101,116,95,115,111, + 117,114,99,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,40,0,0,0,116,0, + 124,0,124,1,131,2,125,2,124,2,100,1,117,0,114,18, + 116,1,100,2,124,1,155,2,157,2,124,1,100,3,141,2, + 130,1,124,2,83,0,41,4,122,171,105,115,95,112,97,99, + 107,97,103,101,40,102,117,108,108,110,97,109,101,41,32,45, + 62,32,98,111,111,108,46,10,10,32,32,32,32,32,32,32, + 32,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,115,112,101,99,105, + 102,105,101,100,32,98,121,32,102,117,108,108,110,97,109,101, + 32,105,115,32,97,32,112,97,99,107,97,103,101,46,10,32, + 32,32,32,32,32,32,32,82,97,105,115,101,32,90,105,112, + 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,116, + 104,101,32,109,111,100,117,108,101,32,99,111,117,108,100,110, + 39,116,32,98,101,32,102,111,117,110,100,46,10,32,32,32, + 32,32,32,32,32,78,114,65,0,0,0,114,66,0,0,0, + 41,2,114,39,0,0,0,114,3,0,0,0,41,3,114,33, + 0,0,0,114,42,0,0,0,114,43,0,0,0,32,32,32, + 114,10,0,0,0,114,47,0,0,0,3,1,0,0,115,8, + 0,0,0,10,6,8,1,18,1,4,1,114,11,0,0,0, + 122,22,122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115,0,1, + 0,0,100,1,125,2,116,0,160,1,124,2,116,2,161,2, + 1,0,116,3,124,0,124,1,131,2,92,3,125,3,125,4, + 125,5,116,4,106,5,160,6,124,1,161,1,125,6,124,6, + 100,2,117,0,115,31,116,7,124,6,116,8,131,2,115,40, + 116,8,124,1,131,1,125,6,124,6,116,4,106,5,124,1, + 60,0,124,0,124,6,95,9,9,0,124,4,114,62,116,10, + 124,0,124,1,131,2,125,7,116,11,160,12,124,0,106,13, + 124,7,161,2,125,8,124,8,103,1,124,6,95,14,116,15, + 124,6,100,3,131,2,115,70,116,16,124,6,95,16,116,11, + 160,17,124,6,106,18,124,1,124,5,161,3,1,0,116,19, + 124,3,124,6,106,18,131,2,1,0,110,10,35,0,1,0, + 1,0,1,0,116,4,106,5,124,1,61,0,130,0,37,0, + 9,0,116,4,106,5,124,1,25,0,125,6,110,16,35,0, + 4,0,116,20,121,127,1,0,1,0,1,0,116,21,100,4, + 124,1,155,2,100,5,157,3,131,1,130,1,37,0,116,22, + 160,23,100,6,124,1,124,5,161,3,1,0,124,6,83,0, + 119,0,41,7,97,64,1,0,0,108,111,97,100,95,109,111, + 100,117,108,101,40,102,117,108,108,110,97,109,101,41,32,45, + 62,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,76,111,97,100,32,116,104,101,32,109,111,100,117, + 108,101,32,115,112,101,99,105,102,105,101,100,32,98,121,32, + 39,102,117,108,108,110,97,109,101,39,46,32,39,102,117,108, + 108,110,97,109,101,39,32,109,117,115,116,32,98,101,32,116, + 104,101,10,32,32,32,32,32,32,32,32,102,117,108,108,121, + 32,113,117,97,108,105,102,105,101,100,32,40,100,111,116,116, + 101,100,41,32,109,111,100,117,108,101,32,110,97,109,101,46, + 32,73,116,32,114,101,116,117,114,110,115,32,116,104,101,32, + 105,109,112,111,114,116,101,100,10,32,32,32,32,32,32,32, + 32,109,111,100,117,108,101,44,32,111,114,32,114,97,105,115, + 101,115,32,90,105,112,73,109,112,111,114,116,69,114,114,111, + 114,32,105,102,32,105,116,32,99,111,117,108,100,32,110,111, + 116,32,98,101,32,105,109,112,111,114,116,101,100,46,10,10, + 32,32,32,32,32,32,32,32,68,101,112,114,101,99,97,116, + 101,100,32,115,105,110,99,101,32,80,121,116,104,111,110,32, + 51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,114,122,105,112,105,109, + 112,111,114,116,46,122,105,112,105,109,112,111,114,116,101,114, + 46,108,111,97,100,95,109,111,100,117,108,101,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,59,32,117,115,101,32,101,120,101,99,95,109,111,100, + 117,108,101,40,41,32,105,110,115,116,101,97,100,78,218,12, + 95,95,98,117,105,108,116,105,110,115,95,95,122,14,76,111, + 97,100,101,100,32,109,111,100,117,108,101,32,122,25,32,110, + 111,116,32,102,111,117,110,100,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,122,30,105,109,112,111,114,116,32, + 123,125,32,35,32,108,111,97,100,101,100,32,102,114,111,109, + 32,90,105,112,32,123,125,41,24,114,36,0,0,0,114,37, + 0,0,0,114,38,0,0,0,114,52,0,0,0,218,3,115, + 121,115,218,7,109,111,100,117,108,101,115,218,3,103,101,116, + 114,16,0,0,0,218,12,95,109,111,100,117,108,101,95,116, + 121,112,101,218,10,95,95,108,111,97,100,101,114,95,95,114, + 40,0,0,0,114,22,0,0,0,114,31,0,0,0,114,30, + 0,0,0,90,8,95,95,112,97,116,104,95,95,218,7,104, + 97,115,97,116,116,114,114,72,0,0,0,90,14,95,102,105, + 120,95,117,112,95,109,111,100,117,108,101,218,8,95,95,100, + 105,99,116,95,95,218,4,101,120,101,99,114,27,0,0,0, + 218,11,73,109,112,111,114,116,69,114,114,111,114,114,49,0, + 0,0,218,16,95,118,101,114,98,111,115,101,95,109,101,115, + 115,97,103,101,41,9,114,33,0,0,0,114,42,0,0,0, + 218,3,109,115,103,114,54,0,0,0,114,55,0,0,0,114, + 44,0,0,0,90,3,109,111,100,114,14,0,0,0,114,70, + 0,0,0,32,32,32,32,32,32,32,32,32,114,10,0,0, + 0,218,11,108,111,97,100,95,109,111,100,117,108,101,16,1, + 0,0,115,62,0,0,0,4,9,12,2,16,1,12,1,18, + 1,8,1,10,1,6,1,2,2,4,1,10,3,14,1,8, + 1,10,2,6,1,16,1,14,1,2,128,6,1,8,1,2, + 1,2,128,2,2,12,1,2,128,12,1,16,1,2,128,14, + 1,4,1,2,253,115,29,0,0,0,172,40,65,21,0,193, + 21,9,65,30,7,193,32,5,65,38,0,193,38,15,65,53, + 7,193,63,1,65,53,7,122,23,122,105,112,105,109,112,111, + 114,116,101,114,46,108,111,97,100,95,109,111,100,117,108,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,64,0,0,0,9,0,124,0,160,0, + 124,1,161,1,115,8,100,1,83,0,110,11,35,0,4,0, + 116,1,121,31,1,0,1,0,1,0,89,0,100,1,83,0, + 37,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, + 124,0,124,1,131,2,83,0,119,0,41,4,122,204,82,101, + 116,117,114,110,32,116,104,101,32,82,101,115,111,117,114,99, + 101,82,101,97,100,101,114,32,102,111,114,32,97,32,112,97, + 99,107,97,103,101,32,105,110,32,97,32,122,105,112,32,102, + 105,108,101,46,10,10,32,32,32,32,32,32,32,32,73,102, + 32,39,102,117,108,108,110,97,109,101,39,32,105,115,32,97, + 32,112,97,99,107,97,103,101,32,119,105,116,104,105,110,32, + 116,104,101,32,122,105,112,32,102,105,108,101,44,32,114,101, + 116,117,114,110,32,116,104,101,10,32,32,32,32,32,32,32, + 32,39,82,101,115,111,117,114,99,101,82,101,97,100,101,114, + 39,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, + 32,112,97,99,107,97,103,101,46,32,32,79,116,104,101,114, + 119,105,115,101,32,114,101,116,117,114,110,32,78,111,110,101, + 46,10,32,32,32,32,32,32,32,32,78,114,0,0,0,0, + 41,1,218,9,90,105,112,82,101,97,100,101,114,41,4,114, + 47,0,0,0,114,3,0,0,0,90,17,105,109,112,111,114, + 116,108,105,98,46,114,101,97,100,101,114,115,114,85,0,0, + 0,41,3,114,33,0,0,0,114,42,0,0,0,114,85,0, + 0,0,32,32,32,114,10,0,0,0,218,19,103,101,116,95, + 114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,59, + 1,0,0,115,22,0,0,0,2,6,10,1,4,1,2,255, + 2,128,12,2,6,1,2,128,12,1,10,1,2,253,115,12, + 0,0,0,129,5,9,0,137,7,19,7,159,1,19,7,122, + 31,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, + 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,74,0,0,0,9,0,116,0,124,0, + 106,1,131,1,124,0,95,2,124,0,106,2,116,3,124,0, + 106,1,60,0,100,1,83,0,35,0,4,0,116,4,121,36, + 1,0,1,0,1,0,116,3,160,5,124,0,106,1,100,1, + 161,2,1,0,100,1,124,0,95,2,89,0,100,1,83,0, + 37,0,119,0,41,2,122,41,82,101,108,111,97,100,32,116, + 104,101,32,102,105,108,101,32,100,97,116,97,32,111,102,32, + 116,104,101,32,97,114,99,104,105,118,101,32,112,97,116,104, + 46,78,41,6,114,28,0,0,0,114,30,0,0,0,114,29, + 0,0,0,114,26,0,0,0,114,3,0,0,0,218,3,112, + 111,112,169,1,114,33,0,0,0,32,114,10,0,0,0,218, + 17,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, + 101,115,74,1,0,0,115,18,0,0,0,2,2,12,1,16, + 1,2,128,12,1,14,1,12,1,2,128,2,254,115,12,0, + 0,0,129,12,15,0,143,17,35,7,164,1,35,7,122,29, + 122,105,112,105,109,112,111,114,116,101,114,46,105,110,118,97, + 108,105,100,97,116,101,95,99,97,99,104,101,115,99,1,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, + 0,0,115,24,0,0,0,100,1,124,0,106,0,155,0,116, + 1,155,0,124,0,106,2,155,0,100,2,157,5,83,0,41, + 3,78,122,21,60,122,105,112,105,109,112,111,114,116,101,114, + 32,111,98,106,101,99,116,32,34,122,2,34,62,41,3,114, + 30,0,0,0,114,21,0,0,0,114,32,0,0,0,114,88, + 0,0,0,32,114,10,0,0,0,218,8,95,95,114,101,112, 114,95,95,84,1,0,0,115,2,0,0,0,24,1,114,11, 0,0,0,122,20,122,105,112,105,109,112,111,114,116,101,114, 46,95,95,114,101,112,114,95,95,169,1,78,41,17,114,6, @@ -586,523 +581,519 @@ const unsigned char _Py_M__zipimport[] = { 114,46,0,0,0,114,50,0,0,0,114,56,0,0,0,114, 63,0,0,0,114,64,0,0,0,114,71,0,0,0,114,47, 0,0,0,114,84,0,0,0,114,86,0,0,0,114,89,0, - 0,0,114,90,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,4,0,0,0, - 46,0,0,0,115,30,0,0,0,8,0,4,1,8,17,10, - 46,10,37,10,16,8,27,8,10,8,21,8,12,8,26,8, - 13,8,43,8,15,12,10,114,11,0,0,0,122,12,95,95, - 105,110,105,116,95,95,46,112,121,99,84,114,67,0,0,0, - 70,41,3,122,4,46,112,121,99,84,70,41,3,114,68,0, - 0,0,70,70,99,2,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,20,0,0,0,124,0, - 106,0,124,1,160,1,100,1,161,1,100,2,25,0,23,0, - 83,0,41,3,78,218,1,46,233,2,0,0,0,41,2,114, - 32,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, - 41,2,114,33,0,0,0,114,42,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,40,0,0,0, - 102,1,0,0,115,2,0,0,0,20,1,114,11,0,0,0, - 114,40,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,67,0,0,0,115,18,0,0,0,124, - 1,116,0,23,0,125,2,124,2,124,0,106,1,118,0,83, - 0,114,91,0,0,0,41,2,114,21,0,0,0,114,29,0, - 0,0,41,3,114,33,0,0,0,114,14,0,0,0,90,7, - 100,105,114,112,97,116,104,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,114,41,0,0,0,106,1,0,0,115, - 4,0,0,0,8,4,10,2,114,11,0,0,0,114,41,0, - 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,56,0,0,0,116,0,124,0, - 124,1,131,2,125,2,116,1,68,0,93,18,92,3,125,3, - 125,4,125,5,124,2,124,3,23,0,125,6,124,6,124,0, - 106,2,118,0,114,25,124,5,2,0,1,0,83,0,113,7, - 100,0,83,0,114,91,0,0,0,41,3,114,40,0,0,0, - 218,16,95,122,105,112,95,115,101,97,114,99,104,111,114,100, - 101,114,114,29,0,0,0,41,7,114,33,0,0,0,114,42, - 0,0,0,114,14,0,0,0,218,6,115,117,102,102,105,120, - 218,10,105,115,98,121,116,101,99,111,100,101,114,55,0,0, - 0,114,70,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,114,39,0,0,0,115,1,0,0,115,14, - 0,0,0,10,1,14,1,8,1,10,1,8,1,2,255,4, - 2,114,11,0,0,0,114,39,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, - 115,248,4,0,0,9,0,116,0,160,1,124,0,161,1,125, - 1,110,18,35,0,4,0,116,2,144,2,121,123,1,0,1, - 0,1,0,116,3,100,1,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,37,0,124,1,53,0,1,0,9,0,124, - 1,160,4,116,5,11,0,100,3,161,2,1,0,124,1,160, - 6,161,0,125,2,124,1,160,7,116,5,161,1,125,3,110, - 18,35,0,4,0,116,2,144,2,121,122,1,0,1,0,1, - 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,37,0,116,8,124,3,131,1,116,5,107,3,114, - 79,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,124,3,100,0,100,5,133,2,25,0,116,9,107, - 3,114,204,9,0,124,1,160,4,100,6,100,3,161,2,1, - 0,124,1,160,6,161,0,125,4,110,18,35,0,4,0,116, - 2,144,2,121,121,1,0,1,0,1,0,116,3,100,4,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,37,0,116, - 10,124,4,116,11,24,0,116,5,24,0,100,6,131,2,125, - 5,9,0,124,1,160,4,124,5,161,1,1,0,124,1,160, - 7,161,0,125,6,110,18,35,0,4,0,116,2,144,2,121, - 120,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,124,6,160,12,116, - 9,161,1,125,7,124,7,100,6,107,0,114,173,116,3,100, - 7,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, - 6,124,7,124,7,116,5,23,0,133,2,25,0,125,3,116, - 8,124,3,131,1,116,5,107,3,114,196,116,3,100,8,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,4,116, - 8,124,6,131,1,24,0,124,7,23,0,125,2,116,13,124, - 3,100,9,100,10,133,2,25,0,131,1,125,8,116,13,124, - 3,100,10,100,11,133,2,25,0,131,1,125,9,124,2,124, - 8,107,0,114,233,116,3,100,12,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,124,2,124,9,107,0,114,246,116, - 3,100,13,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,2,124,8,56,0,125,2,124,2,124,9,24,0,125, - 10,124,10,100,6,107,0,144,1,114,12,116,3,100,14,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,105,0,125, - 11,100,6,125,12,9,0,124,1,160,4,124,2,161,1,1, - 0,110,18,35,0,4,0,116,2,144,2,121,119,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,37,0,9,0,124,1,160,7,100,16,161, - 1,125,3,116,8,124,3,131,1,100,5,107,0,144,1,114, - 58,116,14,100,17,131,1,130,1,124,3,100,0,100,5,133, - 2,25,0,100,18,107,3,144,1,114,69,144,2,113,88,116, - 8,124,3,131,1,100,16,107,3,144,1,114,80,116,14,100, - 17,131,1,130,1,116,15,124,3,100,19,100,20,133,2,25, - 0,131,1,125,13,116,15,124,3,100,20,100,9,133,2,25, - 0,131,1,125,14,116,15,124,3,100,9,100,21,133,2,25, - 0,131,1,125,15,116,15,124,3,100,21,100,10,133,2,25, - 0,131,1,125,16,116,13,124,3,100,10,100,11,133,2,25, - 0,131,1,125,17,116,13,124,3,100,11,100,22,133,2,25, - 0,131,1,125,18,116,13,124,3,100,22,100,23,133,2,25, - 0,131,1,125,4,116,15,124,3,100,23,100,24,133,2,25, - 0,131,1,125,19,116,15,124,3,100,24,100,25,133,2,25, - 0,131,1,125,20,116,15,124,3,100,25,100,26,133,2,25, - 0,131,1,125,21,116,13,124,3,100,27,100,16,133,2,25, - 0,131,1,125,22,124,19,124,20,23,0,124,21,23,0,125, - 8,124,22,124,9,107,4,144,1,114,188,116,3,100,28,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,22,124, - 10,55,0,125,22,9,0,124,1,160,7,124,19,161,1,125, - 23,110,18,35,0,4,0,116,2,144,2,121,118,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,37,0,116,8,124,23,131,1,124,19,107, - 3,144,1,114,233,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,9,0,116,8,124,1,160,7,124, - 8,124,19,24,0,161,1,131,1,124,8,124,19,24,0,107, - 3,144,2,114,1,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,110,18,35,0,4,0,116,2,144, - 2,121,117,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,37,0,124,13,100, - 29,64,0,144,2,114,30,124,23,160,16,161,0,125,23,110, - 26,9,0,124,23,160,16,100,30,161,1,125,23,110,19,35, - 0,4,0,116,17,144,2,121,116,1,0,1,0,1,0,124, - 23,160,16,100,31,161,1,160,18,116,19,161,1,125,23,89, - 0,110,1,37,0,124,23,160,20,100,32,116,21,161,2,125, - 23,116,22,160,23,124,0,124,23,161,2,125,24,124,24,124, - 14,124,18,124,4,124,22,124,15,124,16,124,17,102,8,125, - 25,124,25,124,11,124,23,60,0,124,12,100,33,55,0,125, - 12,144,1,113,42,9,0,100,0,4,0,4,0,131,3,1, - 0,110,12,35,0,49,0,144,2,115,101,119,4,37,0,1, - 0,1,0,1,0,89,0,1,0,1,0,116,24,160,25,100, - 34,124,12,124,0,161,3,1,0,124,11,83,0,119,0,119, - 0,119,0,119,0,119,0,119,0,119,0,119,0,41,35,78, - 122,21,99,97,110,39,116,32,111,112,101,110,32,90,105,112, - 32,102,105,108,101,58,32,114,13,0,0,0,114,94,0,0, - 0,250,21,99,97,110,39,116,32,114,101,97,100,32,90,105, - 112,32,102,105,108,101,58,32,233,4,0,0,0,114,0,0, - 0,0,122,16,110,111,116,32,97,32,90,105,112,32,102,105, - 108,101,58,32,122,18,99,111,114,114,117,112,116,32,90,105, - 112,32,102,105,108,101,58,32,233,12,0,0,0,233,16,0, - 0,0,233,20,0,0,0,122,28,98,97,100,32,99,101,110, - 116,114,97,108,32,100,105,114,101,99,116,111,114,121,32,115, - 105,122,101,58,32,122,30,98,97,100,32,99,101,110,116,114, - 97,108,32,100,105,114,101,99,116,111,114,121,32,111,102,102, - 115,101,116,58,32,122,38,98,97,100,32,99,101,110,116,114, - 97,108,32,100,105,114,101,99,116,111,114,121,32,115,105,122, - 101,32,111,114,32,111,102,102,115,101,116,58,32,84,233,46, - 0,0,0,250,27,69,79,70,32,114,101,97,100,32,119,104, - 101,114,101,32,110,111,116,32,101,120,112,101,99,116,101,100, - 115,4,0,0,0,80,75,1,2,233,8,0,0,0,233,10, - 0,0,0,233,14,0,0,0,233,24,0,0,0,233,28,0, - 0,0,233,30,0,0,0,233,32,0,0,0,233,34,0,0, - 0,233,42,0,0,0,122,25,98,97,100,32,108,111,99,97, - 108,32,104,101,97,100,101,114,32,111,102,102,115,101,116,58, - 32,105,0,8,0,0,218,5,97,115,99,105,105,90,6,108, - 97,116,105,110,49,250,1,47,114,5,0,0,0,122,33,122, - 105,112,105,109,112,111,114,116,58,32,102,111,117,110,100,32, - 123,125,32,110,97,109,101,115,32,105,110,32,123,33,114,125, - 41,26,218,3,95,105,111,218,9,111,112,101,110,95,99,111, - 100,101,114,23,0,0,0,114,3,0,0,0,218,4,115,101, - 101,107,218,20,69,78,68,95,67,69,78,84,82,65,76,95, - 68,73,82,95,83,73,90,69,90,4,116,101,108,108,218,4, - 114,101,97,100,114,59,0,0,0,218,18,83,84,82,73,78, - 71,95,69,78,68,95,65,82,67,72,73,86,69,218,3,109, - 97,120,218,15,77,65,88,95,67,79,77,77,69,78,84,95, - 76,69,78,218,5,114,102,105,110,100,114,2,0,0,0,218, - 8,69,79,70,69,114,114,111,114,114,1,0,0,0,114,69, - 0,0,0,218,18,85,110,105,99,111,100,101,68,101,99,111, - 100,101,69,114,114,111,114,218,9,116,114,97,110,115,108,97, - 116,101,218,11,99,112,52,51,55,95,116,97,98,108,101,114, - 20,0,0,0,114,21,0,0,0,114,22,0,0,0,114,31, - 0,0,0,114,49,0,0,0,114,82,0,0,0,41,26,114, - 30,0,0,0,218,2,102,112,90,15,104,101,97,100,101,114, - 95,112,111,115,105,116,105,111,110,218,6,98,117,102,102,101, - 114,218,9,102,105,108,101,95,115,105,122,101,90,17,109,97, - 120,95,99,111,109,109,101,110,116,95,115,116,97,114,116,218, - 4,100,97,116,97,90,3,112,111,115,218,11,104,101,97,100, - 101,114,95,115,105,122,101,90,13,104,101,97,100,101,114,95, - 111,102,102,115,101,116,90,10,97,114,99,95,111,102,102,115, - 101,116,114,34,0,0,0,218,5,99,111,117,110,116,218,5, - 102,108,97,103,115,218,8,99,111,109,112,114,101,115,115,218, - 4,116,105,109,101,218,4,100,97,116,101,218,3,99,114,99, - 218,9,100,97,116,97,95,115,105,122,101,218,9,110,97,109, - 101,95,115,105,122,101,218,10,101,120,116,114,97,95,115,105, - 122,101,90,12,99,111,109,109,101,110,116,95,115,105,122,101, - 218,11,102,105,108,101,95,111,102,102,115,101,116,114,48,0, - 0,0,114,14,0,0,0,218,1,116,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,114,28,0,0,0,146,1, - 0,0,115,16,1,0,0,2,1,12,1,2,128,14,1,18, - 1,2,128,6,2,2,1,14,1,8,1,12,1,2,128,14, - 1,18,1,2,128,12,1,18,1,16,1,2,3,12,1,10, - 1,2,128,14,1,10,1,2,1,6,255,2,128,8,2,2, - 1,2,255,2,1,4,255,2,2,10,1,10,1,2,128,14, - 1,10,1,2,1,6,255,2,128,10,2,8,1,10,1,2, - 1,6,255,16,2,12,1,10,1,2,1,6,255,16,2,16, - 2,16,1,8,1,18,1,8,1,18,1,8,1,8,1,10, - 1,18,1,4,2,4,2,2,1,12,1,2,128,14,1,18, - 1,2,128,2,1,10,1,14,1,8,1,18,2,4,1,14, - 1,8,1,16,1,16,1,16,1,16,1,16,1,16,1,16, - 1,16,1,16,1,16,1,16,1,12,1,10,1,18,1,8, - 1,2,2,12,1,2,128,14,1,18,1,2,128,14,1,18, - 1,2,4,28,1,18,1,2,255,2,128,14,2,18,1,2, - 128,10,2,10,2,2,3,12,1,2,128,14,1,20,1,2, - 128,12,2,12,1,20,1,8,1,8,1,4,202,2,6,12, - 196,24,128,14,109,4,1,2,247,2,246,2,246,2,227,2, - 227,2,248,2,246,2,248,115,235,0,0,0,129,5,7,0, - 135,17,24,7,155,1,73,31,3,157,16,46,2,173,1,73, - 31,3,174,17,63,9,191,24,73,31,3,193,24,10,65,35, - 2,193,34,1,73,31,3,193,35,17,65,52,9,193,52,10, - 73,31,3,193,63,9,66,9,2,194,8,1,73,31,3,194, - 9,17,66,26,9,194,26,65,54,73,31,3,196,17,5,68, - 23,2,196,22,1,73,31,3,196,23,17,68,40,9,196,40, - 66,24,73,31,3,199,1,5,71,7,2,199,6,1,73,31, - 3,199,7,17,71,24,9,199,24,17,73,31,3,199,42,23, - 72,2,2,200,1,1,73,31,3,200,2,17,72,19,9,200, - 19,11,73,31,3,200,31,5,72,37,2,200,36,1,73,31, - 3,200,37,16,72,55,9,200,53,35,73,31,3,201,31,5, - 73,36,11,201,37,3,73,36,11,201,52,1,72,55,9,201, - 53,1,72,19,9,201,54,1,71,24,9,201,55,1,68,40, - 9,201,56,1,66,26,9,201,57,1,65,52,9,201,58,1, - 63,9,201,59,1,24,7,114,28,0,0,0,117,190,1,0, - 0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46, - 47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, - 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78, - 79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94, - 95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110, - 111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126, - 127,195,135,195,188,195,169,195,162,195,164,195,160,195,165,195, - 167,195,170,195,171,195,168,195,175,195,174,195,172,195,132,195, - 133,195,137,195,166,195,134,195,180,195,182,195,178,195,187,195, - 185,195,191,195,150,195,156,194,162,194,163,194,165,226,130,167, - 198,146,195,161,195,173,195,179,195,186,195,177,195,145,194,170, - 194,186,194,191,226,140,144,194,172,194,189,194,188,194,161,194, - 171,194,187,226,150,145,226,150,146,226,150,147,226,148,130,226, - 148,164,226,149,161,226,149,162,226,149,150,226,149,149,226,149, - 163,226,149,145,226,149,151,226,149,157,226,149,156,226,149,155, - 226,148,144,226,148,148,226,148,180,226,148,172,226,148,156,226, - 148,128,226,148,188,226,149,158,226,149,159,226,149,154,226,149, - 148,226,149,169,226,149,166,226,149,160,226,149,144,226,149,172, - 226,149,167,226,149,168,226,149,164,226,149,165,226,149,153,226, - 149,152,226,149,146,226,149,147,226,149,171,226,149,170,226,148, - 152,226,148,140,226,150,136,226,150,132,226,150,140,226,150,144, - 226,150,128,206,177,195,159,206,147,207,128,206,163,207,131,194, - 181,207,132,206,166,206,152,206,169,206,180,226,136,158,207,134, - 206,181,226,136,169,226,137,161,194,177,226,137,165,226,137,164, - 226,140,160,226,140,161,195,183,226,137,136,194,176,226,136,153, - 194,183,226,136,154,226,129,191,194,178,226,150,160,194,160,99, - 0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 67,0,0,0,115,110,0,0,0,116,0,114,11,116,1,160, - 2,100,1,161,1,1,0,116,3,100,2,131,1,130,1,100, - 3,97,0,9,0,100,4,100,5,108,4,109,5,125,0,1, - 0,110,17,35,0,4,0,116,6,121,54,1,0,1,0,1, - 0,116,1,160,2,100,1,161,1,1,0,116,3,100,2,131, - 1,130,1,37,0,9,0,100,6,97,0,110,5,35,0,100, - 6,97,0,119,0,37,0,116,1,160,2,100,7,161,1,1, - 0,124,0,83,0,119,0,41,8,78,122,27,122,105,112,105, - 109,112,111,114,116,58,32,122,108,105,98,32,85,78,65,86, - 65,73,76,65,66,76,69,250,41,99,97,110,39,116,32,100, - 101,99,111,109,112,114,101,115,115,32,100,97,116,97,59,32, - 122,108,105,98,32,110,111,116,32,97,118,97,105,108,97,98, - 108,101,84,114,0,0,0,0,169,1,218,10,100,101,99,111, - 109,112,114,101,115,115,70,122,25,122,105,112,105,109,112,111, - 114,116,58,32,122,108,105,98,32,97,118,97,105,108,97,98, - 108,101,41,7,218,15,95,105,109,112,111,114,116,105,110,103, - 95,122,108,105,98,114,49,0,0,0,114,82,0,0,0,114, - 3,0,0,0,90,4,122,108,105,98,114,148,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,114,147,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,20, - 95,103,101,116,95,100,101,99,111,109,112,114,101,115,115,95, - 102,117,110,99,48,2,0,0,115,36,0,0,0,4,2,10, - 3,8,1,4,2,2,1,14,1,2,128,12,1,10,1,8, - 1,2,128,2,253,6,5,2,128,8,0,10,2,4,1,2, - 249,115,24,0,0,0,142,6,21,0,148,1,42,0,149,16, - 37,7,165,1,42,0,170,4,46,7,182,1,37,7,114,151, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,67,0,0,0,115,132,1,0,0,124,1,92, - 8,125,2,125,3,125,4,125,5,125,6,125,7,125,8,125, - 9,124,4,100,1,107,0,114,18,116,0,100,2,131,1,130, - 1,116,1,160,2,124,0,161,1,53,0,125,10,9,0,124, - 10,160,3,124,6,161,1,1,0,110,17,35,0,4,0,116, - 4,121,193,1,0,1,0,1,0,116,0,100,3,124,0,155, - 2,157,2,124,0,100,4,141,2,130,1,37,0,124,10,160, - 5,100,5,161,1,125,11,116,6,124,11,131,1,100,5,107, - 3,114,63,116,7,100,6,131,1,130,1,124,11,100,0,100, - 7,133,2,25,0,100,8,107,3,114,80,116,0,100,9,124, - 0,155,2,157,2,124,0,100,4,141,2,130,1,116,8,124, - 11,100,10,100,11,133,2,25,0,131,1,125,12,116,8,124, - 11,100,11,100,5,133,2,25,0,131,1,125,13,100,5,124, - 12,23,0,124,13,23,0,125,14,124,6,124,14,55,0,125, - 6,9,0,124,10,160,3,124,6,161,1,1,0,110,17,35, - 0,4,0,116,4,121,192,1,0,1,0,1,0,116,0,100, - 3,124,0,155,2,157,2,124,0,100,4,141,2,130,1,37, - 0,124,10,160,5,124,4,161,1,125,15,116,6,124,15,131, - 1,124,4,107,3,114,145,116,4,100,12,131,1,130,1,9, - 0,100,0,4,0,4,0,131,3,1,0,110,11,35,0,49, - 0,115,157,119,4,37,0,1,0,1,0,1,0,89,0,1, - 0,1,0,124,3,100,1,107,2,114,169,124,15,83,0,9, - 0,116,9,131,0,125,16,110,12,35,0,4,0,116,10,121, - 191,1,0,1,0,1,0,116,0,100,13,131,1,130,1,37, - 0,124,16,124,15,100,14,131,2,83,0,119,0,119,0,119, - 0,41,15,78,114,0,0,0,0,122,18,110,101,103,97,116, - 105,118,101,32,100,97,116,97,32,115,105,122,101,114,99,0, - 0,0,114,13,0,0,0,114,111,0,0,0,114,105,0,0, - 0,114,100,0,0,0,115,4,0,0,0,80,75,3,4,122, - 23,98,97,100,32,108,111,99,97,108,32,102,105,108,101,32, - 104,101,97,100,101,114,58,32,233,26,0,0,0,114,110,0, - 0,0,122,26,122,105,112,105,109,112,111,114,116,58,32,99, - 97,110,39,116,32,114,101,97,100,32,100,97,116,97,114,146, - 0,0,0,105,241,255,255,255,41,11,114,3,0,0,0,114, - 117,0,0,0,114,118,0,0,0,114,119,0,0,0,114,23, - 0,0,0,114,121,0,0,0,114,59,0,0,0,114,126,0, - 0,0,114,1,0,0,0,114,151,0,0,0,114,150,0,0, - 0,41,17,114,30,0,0,0,114,62,0,0,0,90,8,100, - 97,116,97,112,97,116,104,114,137,0,0,0,114,141,0,0, - 0,114,132,0,0,0,114,144,0,0,0,114,138,0,0,0, - 114,139,0,0,0,114,140,0,0,0,114,130,0,0,0,114, - 131,0,0,0,114,142,0,0,0,114,143,0,0,0,114,134, - 0,0,0,90,8,114,97,119,95,100,97,116,97,114,148,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,60,0,0,0,69,2,0,0,115,86,0,0,0,20, - 1,8,1,8,1,12,2,2,2,12,1,2,128,12,1,18, - 1,2,128,10,1,12,1,8,1,16,2,18,2,16,2,16, - 1,12,1,8,1,2,1,12,1,2,128,12,1,18,1,2, - 128,10,1,12,1,8,1,2,255,12,233,22,128,8,26,4, - 2,2,3,8,1,2,128,12,1,8,1,2,128,10,1,2, - 254,2,243,2,240,115,88,0,0,0,151,1,66,24,3,153, - 5,31,2,158,1,66,24,3,159,16,47,9,175,59,66,24, - 3,193,43,5,65,49,2,193,48,1,66,24,3,193,49,16, - 66,1,9,194,1,16,66,24,3,194,24,4,66,28,11,194, - 29,3,66,28,11,194,42,3,66,46,0,194,46,11,66,57, - 7,194,63,1,66,57,7,195,0,1,66,1,9,195,1,1, - 47,9,114,60,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, - 0,116,0,124,0,124,1,24,0,131,1,100,1,107,1,83, - 0,41,2,78,114,5,0,0,0,41,1,218,3,97,98,115, - 41,2,90,2,116,49,90,2,116,50,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,9,95,101,113,95,109, - 116,105,109,101,115,2,0,0,115,2,0,0,0,16,2,114, - 11,0,0,0,114,154,0,0,0,99,5,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,67,0,0,0,115,254, - 0,0,0,124,3,124,2,100,1,156,2,125,5,116,0,160, - 1,124,4,124,3,124,5,161,3,125,6,124,6,100,2,64, - 0,100,3,107,3,125,7,124,7,114,63,124,6,100,4,64, - 0,100,3,107,3,125,8,116,2,106,3,100,5,107,3,114, - 62,124,8,115,38,116,2,106,3,100,6,107,2,114,62,116, - 4,124,0,124,2,131,2,125,9,124,9,100,0,117,1,114, - 62,116,2,160,5,116,0,106,6,124,9,161,2,125,10,116, - 0,160,7,124,4,124,10,124,3,124,5,161,4,1,0,110, - 40,116,8,124,0,124,2,131,2,92,2,125,11,125,12,124, - 11,114,103,116,9,116,10,124,4,100,7,100,8,133,2,25, - 0,131,1,124,11,131,2,114,93,116,10,124,4,100,8,100, - 9,133,2,25,0,131,1,124,12,107,3,114,103,116,11,160, - 12,100,10,124,3,155,2,157,2,161,1,1,0,100,0,83, - 0,116,13,160,14,124,4,100,9,100,0,133,2,25,0,161, - 1,125,13,116,15,124,13,116,16,131,2,115,125,116,17,100, - 11,124,1,155,2,100,12,157,3,131,1,130,1,124,13,83, - 0,41,13,78,41,2,114,48,0,0,0,114,14,0,0,0, - 114,5,0,0,0,114,0,0,0,0,114,94,0,0,0,90, - 5,110,101,118,101,114,90,6,97,108,119,97,121,115,114,106, - 0,0,0,114,101,0,0,0,114,102,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,122,16,99,111,109,112,105,108,101,100,32, - 109,111,100,117,108,101,32,122,21,32,105,115,32,110,111,116, - 32,97,32,99,111,100,101,32,111,98,106,101,99,116,41,18, - 114,22,0,0,0,90,13,95,99,108,97,115,115,105,102,121, - 95,112,121,99,218,4,95,105,109,112,90,21,99,104,101,99, - 107,95,104,97,115,104,95,98,97,115,101,100,95,112,121,99, - 115,218,15,95,103,101,116,95,112,121,99,95,115,111,117,114, - 99,101,218,11,115,111,117,114,99,101,95,104,97,115,104,90, - 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, - 69,82,90,18,95,118,97,108,105,100,97,116,101,95,104,97, - 115,104,95,112,121,99,218,29,95,103,101,116,95,109,116,105, - 109,101,95,97,110,100,95,115,105,122,101,95,111,102,95,115, - 111,117,114,99,101,114,154,0,0,0,114,2,0,0,0,114, - 49,0,0,0,114,82,0,0,0,218,7,109,97,114,115,104, - 97,108,90,5,108,111,97,100,115,114,16,0,0,0,218,10, - 95,99,111,100,101,95,116,121,112,101,218,9,84,121,112,101, - 69,114,114,111,114,41,14,114,33,0,0,0,114,61,0,0, - 0,114,70,0,0,0,114,42,0,0,0,114,133,0,0,0, - 90,11,101,120,99,95,100,101,116,97,105,108,115,114,136,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,90,12,115,111, - 117,114,99,101,95,98,121,116,101,115,114,157,0,0,0,90, - 12,115,111,117,114,99,101,95,109,116,105,109,101,90,11,115, - 111,117,114,99,101,95,115,105,122,101,114,54,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,15, - 95,117,110,109,97,114,115,104,97,108,95,99,111,100,101,123, - 2,0,0,115,72,0,0,0,2,2,2,1,6,254,14,5, - 12,2,4,1,12,1,10,1,2,1,2,255,8,1,2,255, - 10,2,8,1,4,1,4,1,2,1,4,254,4,5,8,1, - 4,255,2,128,8,4,6,255,4,3,22,3,18,1,2,255, - 4,2,8,1,4,255,4,2,18,2,10,1,16,1,4,1, - 114,11,0,0,0,114,162,0,0,0,99,1,0,0,0,0, + 0,0,114,90,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,4,0,0,0,46,0,0,0,115,30,0,0,0,8, + 0,4,1,8,17,10,46,10,37,10,16,8,27,8,10,8, + 21,8,12,8,26,8,13,8,43,8,15,12,10,114,11,0, + 0,0,122,12,95,95,105,110,105,116,95,95,46,112,121,99, + 84,114,67,0,0,0,70,41,3,122,4,46,112,121,99,84, + 70,41,3,114,68,0,0,0,70,70,99,2,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 28,0,0,0,124,0,160,0,100,1,100,2,161,2,125,0, - 124,0,160,0,100,3,100,2,161,2,125,0,124,0,83,0, - 41,4,78,115,2,0,0,0,13,10,243,1,0,0,0,10, - 243,1,0,0,0,13,41,1,114,20,0,0,0,41,1,218, - 6,115,111,117,114,99,101,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,23,95,110,111,114,109,97,108,105, - 122,101,95,108,105,110,101,95,101,110,100,105,110,103,115,168, - 2,0,0,115,6,0,0,0,12,1,12,1,4,1,114,11, - 0,0,0,114,166,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,67,0,0,0,115,24,0, - 0,0,116,0,124,1,131,1,125,1,116,1,124,1,124,0, - 100,1,100,2,100,3,141,4,83,0,41,4,78,114,80,0, - 0,0,84,41,1,90,12,100,111,110,116,95,105,110,104,101, - 114,105,116,41,2,114,166,0,0,0,218,7,99,111,109,112, - 105,108,101,41,2,114,61,0,0,0,114,165,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,15, - 95,99,111,109,112,105,108,101,95,115,111,117,114,99,101,175, - 2,0,0,115,4,0,0,0,8,1,16,1,114,11,0,0, - 0,114,168,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,11,0,0,0,67,0,0,0,115,68,0,0,0, - 116,0,160,1,124,0,100,1,63,0,100,2,23,0,124,0, - 100,3,63,0,100,4,64,0,124,0,100,5,64,0,124,1, - 100,6,63,0,124,1,100,3,63,0,100,7,64,0,124,1, - 100,5,64,0,100,8,20,0,100,9,100,9,100,9,102,9, - 161,1,83,0,41,10,78,233,9,0,0,0,105,188,7,0, - 0,233,5,0,0,0,233,15,0,0,0,233,31,0,0,0, - 233,11,0,0,0,233,63,0,0,0,114,94,0,0,0,114, - 15,0,0,0,41,2,114,138,0,0,0,90,6,109,107,116, - 105,109,101,41,2,218,1,100,114,145,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,218,14,95,112, - 97,114,115,101,95,100,111,115,116,105,109,101,181,2,0,0, - 115,18,0,0,0,4,1,10,1,10,1,6,1,6,1,10, - 1,10,1,6,1,6,249,114,11,0,0,0,114,176,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,10,0, - 0,0,67,0,0,0,115,112,0,0,0,9,0,124,1,100, - 1,100,0,133,2,25,0,100,2,118,0,115,11,74,0,130, - 1,124,1,100,0,100,1,133,2,25,0,125,1,124,0,106, - 0,124,1,25,0,125,2,124,2,100,3,25,0,125,3,124, - 2,100,4,25,0,125,4,124,2,100,5,25,0,125,5,116, - 1,124,4,124,3,131,2,124,5,102,2,83,0,35,0,4, - 0,116,2,116,3,116,4,102,3,121,55,1,0,1,0,1, - 0,89,0,100,6,83,0,37,0,119,0,41,7,78,114,15, - 0,0,0,169,2,218,1,99,218,1,111,114,170,0,0,0, - 233,6,0,0,0,233,3,0,0,0,41,2,114,0,0,0, - 0,114,0,0,0,0,41,5,114,29,0,0,0,114,176,0, - 0,0,114,27,0,0,0,218,10,73,110,100,101,120,69,114, - 114,111,114,114,161,0,0,0,41,6,114,33,0,0,0,114, - 14,0,0,0,114,62,0,0,0,114,138,0,0,0,114,139, - 0,0,0,90,17,117,110,99,111,109,112,114,101,115,115,101, - 100,95,115,105,122,101,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,114,158,0,0,0,194,2,0,0,115,26, - 0,0,0,2,1,20,2,12,1,10,1,8,3,8,1,8, - 1,14,1,2,128,18,1,6,1,2,128,2,255,115,12,0, - 0,0,129,39,41,0,169,10,54,7,183,1,54,7,114,158, + 20,0,0,0,124,0,106,0,124,1,160,1,100,1,161,1, + 100,2,25,0,23,0,83,0,41,3,78,218,1,46,233,2, + 0,0,0,41,2,114,32,0,0,0,218,10,114,112,97,114, + 116,105,116,105,111,110,41,2,114,33,0,0,0,114,42,0, + 0,0,32,32,114,10,0,0,0,114,40,0,0,0,102,1, + 0,0,115,2,0,0,0,20,1,114,11,0,0,0,114,40, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, + 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,114, + 91,0,0,0,41,2,114,21,0,0,0,114,29,0,0,0, + 41,3,114,33,0,0,0,114,14,0,0,0,90,7,100,105, + 114,112,97,116,104,32,32,32,114,10,0,0,0,114,41,0, + 0,0,106,1,0,0,115,4,0,0,0,8,4,10,2,114, + 11,0,0,0,114,41,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,56, + 0,0,0,116,0,124,0,124,1,131,2,125,2,116,1,68, + 0,93,18,92,3,125,3,125,4,125,5,124,2,124,3,23, + 0,125,6,124,6,124,0,106,2,118,0,114,25,124,5,2, + 0,1,0,83,0,113,7,100,0,83,0,114,91,0,0,0, + 41,3,114,40,0,0,0,218,16,95,122,105,112,95,115,101, + 97,114,99,104,111,114,100,101,114,114,29,0,0,0,41,7, + 114,33,0,0,0,114,42,0,0,0,114,14,0,0,0,218, + 6,115,117,102,102,105,120,218,10,105,115,98,121,116,101,99, + 111,100,101,114,55,0,0,0,114,70,0,0,0,32,32,32, + 32,32,32,32,114,10,0,0,0,114,39,0,0,0,115,1, + 0,0,115,14,0,0,0,10,1,14,1,8,1,10,1,8, + 1,2,255,4,2,114,11,0,0,0,114,39,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 67,0,0,0,115,248,4,0,0,9,0,116,0,160,1,124, + 0,161,1,125,1,110,18,35,0,4,0,116,2,144,2,121, + 123,1,0,1,0,1,0,116,3,100,1,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,37,0,124,1,53,0,1, + 0,9,0,124,1,160,4,116,5,11,0,100,3,161,2,1, + 0,124,1,160,6,161,0,125,2,124,1,160,7,116,5,161, + 1,125,3,110,18,35,0,4,0,116,2,144,2,121,122,1, + 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,37,0,116,8,124,3,131,1,116, + 5,107,3,114,79,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,3,100,0,100,5,133,2,25, + 0,116,9,107,3,114,204,9,0,124,1,160,4,100,6,100, + 3,161,2,1,0,124,1,160,6,161,0,125,4,110,18,35, + 0,4,0,116,2,144,2,121,121,1,0,1,0,1,0,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,37,0,116,10,124,4,116,11,24,0,116,5,24,0,100, + 6,131,2,125,5,9,0,124,1,160,4,124,5,161,1,1, + 0,124,1,160,7,161,0,125,6,110,18,35,0,4,0,116, + 2,144,2,121,120,1,0,1,0,1,0,116,3,100,4,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,37,0,124, + 6,160,12,116,9,161,1,125,7,124,7,100,6,107,0,114, + 173,116,3,100,7,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,124,6,124,7,124,7,116,5,23,0,133,2,25, + 0,125,3,116,8,124,3,131,1,116,5,107,3,114,196,116, + 3,100,8,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,4,116,8,124,6,131,1,24,0,124,7,23,0,125, + 2,116,13,124,3,100,9,100,10,133,2,25,0,131,1,125, + 8,116,13,124,3,100,10,100,11,133,2,25,0,131,1,125, + 9,124,2,124,8,107,0,114,233,116,3,100,12,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,2,124,9,107, + 0,114,246,116,3,100,13,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,2,124,8,56,0,125,2,124,2,124, + 9,24,0,125,10,124,10,100,6,107,0,144,1,114,12,116, + 3,100,14,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,105,0,125,11,100,6,125,12,9,0,124,1,160,4,124, + 2,161,1,1,0,110,18,35,0,4,0,116,2,144,2,121, + 119,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,37,0,9,0,124,1,160, + 7,100,16,161,1,125,3,116,8,124,3,131,1,100,5,107, + 0,144,1,114,58,116,14,100,17,131,1,130,1,124,3,100, + 0,100,5,133,2,25,0,100,18,107,3,144,1,114,69,144, + 2,113,88,116,8,124,3,131,1,100,16,107,3,144,1,114, + 80,116,14,100,17,131,1,130,1,116,15,124,3,100,19,100, + 20,133,2,25,0,131,1,125,13,116,15,124,3,100,20,100, + 9,133,2,25,0,131,1,125,14,116,15,124,3,100,9,100, + 21,133,2,25,0,131,1,125,15,116,15,124,3,100,21,100, + 10,133,2,25,0,131,1,125,16,116,13,124,3,100,10,100, + 11,133,2,25,0,131,1,125,17,116,13,124,3,100,11,100, + 22,133,2,25,0,131,1,125,18,116,13,124,3,100,22,100, + 23,133,2,25,0,131,1,125,4,116,15,124,3,100,23,100, + 24,133,2,25,0,131,1,125,19,116,15,124,3,100,24,100, + 25,133,2,25,0,131,1,125,20,116,15,124,3,100,25,100, + 26,133,2,25,0,131,1,125,21,116,13,124,3,100,27,100, + 16,133,2,25,0,131,1,125,22,124,19,124,20,23,0,124, + 21,23,0,125,8,124,22,124,9,107,4,144,1,114,188,116, + 3,100,28,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,22,124,10,55,0,125,22,9,0,124,1,160,7,124, + 19,161,1,125,23,110,18,35,0,4,0,116,2,144,2,121, + 118,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,37,0,116,8,124,23,131, + 1,124,19,107,3,144,1,114,233,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,9,0,116,8,124, + 1,160,7,124,8,124,19,24,0,161,1,131,1,124,8,124, + 19,24,0,107,3,144,2,114,1,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,110,18,35,0,4, + 0,116,2,144,2,121,117,1,0,1,0,1,0,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,37, + 0,124,13,100,29,64,0,144,2,114,30,124,23,160,16,161, + 0,125,23,110,26,9,0,124,23,160,16,100,30,161,1,125, + 23,110,19,35,0,4,0,116,17,144,2,121,116,1,0,1, + 0,1,0,124,23,160,16,100,31,161,1,160,18,116,19,161, + 1,125,23,89,0,110,1,37,0,124,23,160,20,100,32,116, + 21,161,2,125,23,116,22,160,23,124,0,124,23,161,2,125, + 24,124,24,124,14,124,18,124,4,124,22,124,15,124,16,124, + 17,102,8,125,25,124,25,124,11,124,23,60,0,124,12,100, + 33,55,0,125,12,144,1,113,42,9,0,100,0,4,0,4, + 0,131,3,1,0,110,12,35,0,49,0,144,2,115,101,119, + 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,116, + 24,160,25,100,34,124,12,124,0,161,3,1,0,124,11,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,119, + 0,41,35,78,122,21,99,97,110,39,116,32,111,112,101,110, + 32,90,105,112,32,102,105,108,101,58,32,114,13,0,0,0, + 114,94,0,0,0,250,21,99,97,110,39,116,32,114,101,97, + 100,32,90,105,112,32,102,105,108,101,58,32,233,4,0,0, + 0,114,0,0,0,0,122,16,110,111,116,32,97,32,90,105, + 112,32,102,105,108,101,58,32,122,18,99,111,114,114,117,112, + 116,32,90,105,112,32,102,105,108,101,58,32,233,12,0,0, + 0,233,16,0,0,0,233,20,0,0,0,122,28,98,97,100, + 32,99,101,110,116,114,97,108,32,100,105,114,101,99,116,111, + 114,121,32,115,105,122,101,58,32,122,30,98,97,100,32,99, + 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, + 32,111,102,102,115,101,116,58,32,122,38,98,97,100,32,99, + 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, + 32,115,105,122,101,32,111,114,32,111,102,102,115,101,116,58, + 32,84,233,46,0,0,0,250,27,69,79,70,32,114,101,97, + 100,32,119,104,101,114,101,32,110,111,116,32,101,120,112,101, + 99,116,101,100,115,4,0,0,0,80,75,1,2,233,8,0, + 0,0,233,10,0,0,0,233,14,0,0,0,233,24,0,0, + 0,233,28,0,0,0,233,30,0,0,0,233,32,0,0,0, + 233,34,0,0,0,233,42,0,0,0,122,25,98,97,100,32, + 108,111,99,97,108,32,104,101,97,100,101,114,32,111,102,102, + 115,101,116,58,32,105,0,8,0,0,218,5,97,115,99,105, + 105,90,6,108,97,116,105,110,49,250,1,47,114,5,0,0, + 0,122,33,122,105,112,105,109,112,111,114,116,58,32,102,111, + 117,110,100,32,123,125,32,110,97,109,101,115,32,105,110,32, + 123,33,114,125,41,26,218,3,95,105,111,218,9,111,112,101, + 110,95,99,111,100,101,114,23,0,0,0,114,3,0,0,0, + 218,4,115,101,101,107,218,20,69,78,68,95,67,69,78,84, + 82,65,76,95,68,73,82,95,83,73,90,69,90,4,116,101, + 108,108,218,4,114,101,97,100,114,59,0,0,0,218,18,83, + 84,82,73,78,71,95,69,78,68,95,65,82,67,72,73,86, + 69,218,3,109,97,120,218,15,77,65,88,95,67,79,77,77, + 69,78,84,95,76,69,78,218,5,114,102,105,110,100,114,2, + 0,0,0,218,8,69,79,70,69,114,114,111,114,114,1,0, + 0,0,114,69,0,0,0,218,18,85,110,105,99,111,100,101, + 68,101,99,111,100,101,69,114,114,111,114,218,9,116,114,97, + 110,115,108,97,116,101,218,11,99,112,52,51,55,95,116,97, + 98,108,101,114,20,0,0,0,114,21,0,0,0,114,22,0, + 0,0,114,31,0,0,0,114,49,0,0,0,114,82,0,0, + 0,41,26,114,30,0,0,0,218,2,102,112,90,15,104,101, + 97,100,101,114,95,112,111,115,105,116,105,111,110,218,6,98, + 117,102,102,101,114,218,9,102,105,108,101,95,115,105,122,101, + 90,17,109,97,120,95,99,111,109,109,101,110,116,95,115,116, + 97,114,116,218,4,100,97,116,97,90,3,112,111,115,218,11, + 104,101,97,100,101,114,95,115,105,122,101,90,13,104,101,97, + 100,101,114,95,111,102,102,115,101,116,90,10,97,114,99,95, + 111,102,102,115,101,116,114,34,0,0,0,218,5,99,111,117, + 110,116,218,5,102,108,97,103,115,218,8,99,111,109,112,114, + 101,115,115,218,4,116,105,109,101,218,4,100,97,116,101,218, + 3,99,114,99,218,9,100,97,116,97,95,115,105,122,101,218, + 9,110,97,109,101,95,115,105,122,101,218,10,101,120,116,114, + 97,95,115,105,122,101,90,12,99,111,109,109,101,110,116,95, + 115,105,122,101,218,11,102,105,108,101,95,111,102,102,115,101, + 116,114,48,0,0,0,114,14,0,0,0,218,1,116,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,114,10,0,0,0,114,28,0, + 0,0,146,1,0,0,115,16,1,0,0,2,1,12,1,2, + 128,14,1,18,1,2,128,6,2,2,1,14,1,8,1,12, + 1,2,128,14,1,18,1,2,128,12,1,18,1,16,1,2, + 3,12,1,10,1,2,128,14,1,10,1,2,1,6,255,2, + 128,8,2,2,1,2,255,2,1,4,255,2,2,10,1,10, + 1,2,128,14,1,10,1,2,1,6,255,2,128,10,2,8, + 1,10,1,2,1,6,255,16,2,12,1,10,1,2,1,6, + 255,16,2,16,2,16,1,8,1,18,1,8,1,18,1,8, + 1,8,1,10,1,18,1,4,2,4,2,2,1,12,1,2, + 128,14,1,18,1,2,128,2,1,10,1,14,1,8,1,18, + 2,4,1,14,1,8,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,16,1,16,1,12,1,10, + 1,18,1,8,1,2,2,12,1,2,128,14,1,18,1,2, + 128,14,1,18,1,2,4,28,1,18,1,2,255,2,128,14, + 2,18,1,2,128,10,2,10,2,2,3,12,1,2,128,14, + 1,20,1,2,128,12,2,12,1,20,1,8,1,8,1,4, + 202,2,6,12,196,24,128,14,109,4,1,2,247,2,246,2, + 246,2,227,2,227,2,248,2,246,2,248,115,235,0,0,0, + 129,5,7,0,135,17,24,7,155,1,73,31,3,157,16,46, + 2,173,1,73,31,3,174,17,63,9,191,24,73,31,3,193, + 24,10,65,35,2,193,34,1,73,31,3,193,35,17,65,52, + 9,193,52,10,73,31,3,193,63,9,66,9,2,194,8,1, + 73,31,3,194,9,17,66,26,9,194,26,65,54,73,31,3, + 196,17,5,68,23,2,196,22,1,73,31,3,196,23,17,68, + 40,9,196,40,66,24,73,31,3,199,1,5,71,7,2,199, + 6,1,73,31,3,199,7,17,71,24,9,199,24,17,73,31, + 3,199,42,23,72,2,2,200,1,1,73,31,3,200,2,17, + 72,19,9,200,19,11,73,31,3,200,31,5,72,37,2,200, + 36,1,73,31,3,200,37,16,72,55,9,200,53,35,73,31, + 3,201,31,5,73,36,11,201,37,3,73,36,11,201,52,1, + 72,55,9,201,53,1,72,19,9,201,54,1,71,24,9,201, + 55,1,68,40,9,201,56,1,66,26,9,201,57,1,65,52, + 9,201,58,1,63,9,201,59,1,24,7,114,28,0,0,0, + 117,190,1,0,0,0,1,2,3,4,5,6,7,8,9,10, + 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42, + 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, + 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, + 75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, + 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106, + 107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122, + 123,124,125,126,127,195,135,195,188,195,169,195,162,195,164,195, + 160,195,165,195,167,195,170,195,171,195,168,195,175,195,174,195, + 172,195,132,195,133,195,137,195,166,195,134,195,180,195,182,195, + 178,195,187,195,185,195,191,195,150,195,156,194,162,194,163,194, + 165,226,130,167,198,146,195,161,195,173,195,179,195,186,195,177, + 195,145,194,170,194,186,194,191,226,140,144,194,172,194,189,194, + 188,194,161,194,171,194,187,226,150,145,226,150,146,226,150,147, + 226,148,130,226,148,164,226,149,161,226,149,162,226,149,150,226, + 149,149,226,149,163,226,149,145,226,149,151,226,149,157,226,149, + 156,226,149,155,226,148,144,226,148,148,226,148,180,226,148,172, + 226,148,156,226,148,128,226,148,188,226,149,158,226,149,159,226, + 149,154,226,149,148,226,149,169,226,149,166,226,149,160,226,149, + 144,226,149,172,226,149,167,226,149,168,226,149,164,226,149,165, + 226,149,153,226,149,152,226,149,146,226,149,147,226,149,171,226, + 149,170,226,148,152,226,148,140,226,150,136,226,150,132,226,150, + 140,226,150,144,226,150,128,206,177,195,159,206,147,207,128,206, + 163,207,131,194,181,207,132,206,166,206,152,206,169,206,180,226, + 136,158,207,134,206,181,226,136,169,226,137,161,194,177,226,137, + 165,226,137,164,226,140,160,226,140,161,195,183,226,137,136,194, + 176,226,136,153,194,183,226,136,154,226,129,191,194,178,226,150, + 160,194,160,99,0,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,67,0,0,0,115,110,0,0,0,116,0,114, + 11,116,1,160,2,100,1,161,1,1,0,116,3,100,2,131, + 1,130,1,100,3,97,0,9,0,100,4,100,5,108,4,109, + 5,125,0,1,0,110,17,35,0,4,0,116,6,121,54,1, + 0,1,0,1,0,116,1,160,2,100,1,161,1,1,0,116, + 3,100,2,131,1,130,1,37,0,9,0,100,6,97,0,110, + 5,35,0,100,6,97,0,119,0,37,0,116,1,160,2,100, + 7,161,1,1,0,124,0,83,0,119,0,41,8,78,122,27, + 122,105,112,105,109,112,111,114,116,58,32,122,108,105,98,32, + 85,78,65,86,65,73,76,65,66,76,69,250,41,99,97,110, + 39,116,32,100,101,99,111,109,112,114,101,115,115,32,100,97, + 116,97,59,32,122,108,105,98,32,110,111,116,32,97,118,97, + 105,108,97,98,108,101,84,114,0,0,0,0,169,1,218,10, + 100,101,99,111,109,112,114,101,115,115,70,122,25,122,105,112, + 105,109,112,111,114,116,58,32,122,108,105,98,32,97,118,97, + 105,108,97,98,108,101,41,7,218,15,95,105,109,112,111,114, + 116,105,110,103,95,122,108,105,98,114,49,0,0,0,114,82, + 0,0,0,114,3,0,0,0,90,4,122,108,105,98,114,148, + 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,147, + 0,0,0,32,114,10,0,0,0,218,20,95,103,101,116,95, + 100,101,99,111,109,112,114,101,115,115,95,102,117,110,99,48, + 2,0,0,115,36,0,0,0,4,2,10,3,8,1,4,2, + 2,1,14,1,2,128,12,1,10,1,8,1,2,128,2,253, + 6,5,2,128,8,0,10,2,4,1,2,249,115,24,0,0, + 0,142,6,21,0,148,1,42,0,149,16,37,7,165,1,42, + 0,170,4,46,7,182,1,37,7,114,151,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, + 0,0,0,115,132,1,0,0,124,1,92,8,125,2,125,3, + 125,4,125,5,125,6,125,7,125,8,125,9,124,4,100,1, + 107,0,114,18,116,0,100,2,131,1,130,1,116,1,160,2, + 124,0,161,1,53,0,125,10,9,0,124,10,160,3,124,6, + 161,1,1,0,110,17,35,0,4,0,116,4,121,193,1,0, + 1,0,1,0,116,0,100,3,124,0,155,2,157,2,124,0, + 100,4,141,2,130,1,37,0,124,10,160,5,100,5,161,1, + 125,11,116,6,124,11,131,1,100,5,107,3,114,63,116,7, + 100,6,131,1,130,1,124,11,100,0,100,7,133,2,25,0, + 100,8,107,3,114,80,116,0,100,9,124,0,155,2,157,2, + 124,0,100,4,141,2,130,1,116,8,124,11,100,10,100,11, + 133,2,25,0,131,1,125,12,116,8,124,11,100,11,100,5, + 133,2,25,0,131,1,125,13,100,5,124,12,23,0,124,13, + 23,0,125,14,124,6,124,14,55,0,125,6,9,0,124,10, + 160,3,124,6,161,1,1,0,110,17,35,0,4,0,116,4, + 121,192,1,0,1,0,1,0,116,0,100,3,124,0,155,2, + 157,2,124,0,100,4,141,2,130,1,37,0,124,10,160,5, + 124,4,161,1,125,15,116,6,124,15,131,1,124,4,107,3, + 114,145,116,4,100,12,131,1,130,1,9,0,100,0,4,0, + 4,0,131,3,1,0,110,11,35,0,49,0,115,157,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,3, + 100,1,107,2,114,169,124,15,83,0,9,0,116,9,131,0, + 125,16,110,12,35,0,4,0,116,10,121,191,1,0,1,0, + 1,0,116,0,100,13,131,1,130,1,37,0,124,16,124,15, + 100,14,131,2,83,0,119,0,119,0,119,0,41,15,78,114, + 0,0,0,0,122,18,110,101,103,97,116,105,118,101,32,100, + 97,116,97,32,115,105,122,101,114,99,0,0,0,114,13,0, + 0,0,114,111,0,0,0,114,105,0,0,0,114,100,0,0, + 0,115,4,0,0,0,80,75,3,4,122,23,98,97,100,32, + 108,111,99,97,108,32,102,105,108,101,32,104,101,97,100,101, + 114,58,32,233,26,0,0,0,114,110,0,0,0,122,26,122, + 105,112,105,109,112,111,114,116,58,32,99,97,110,39,116,32, + 114,101,97,100,32,100,97,116,97,114,146,0,0,0,105,241, + 255,255,255,41,11,114,3,0,0,0,114,117,0,0,0,114, + 118,0,0,0,114,119,0,0,0,114,23,0,0,0,114,121, + 0,0,0,114,59,0,0,0,114,126,0,0,0,114,1,0, + 0,0,114,151,0,0,0,114,150,0,0,0,41,17,114,30, + 0,0,0,114,62,0,0,0,90,8,100,97,116,97,112,97, + 116,104,114,137,0,0,0,114,141,0,0,0,114,132,0,0, + 0,114,144,0,0,0,114,138,0,0,0,114,139,0,0,0, + 114,140,0,0,0,114,130,0,0,0,114,131,0,0,0,114, + 142,0,0,0,114,143,0,0,0,114,134,0,0,0,90,8, + 114,97,119,95,100,97,116,97,114,148,0,0,0,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,10, + 0,0,0,114,60,0,0,0,69,2,0,0,115,86,0,0, + 0,20,1,8,1,8,1,12,2,2,2,12,1,2,128,12, + 1,18,1,2,128,10,1,12,1,8,1,16,2,18,2,16, + 2,16,1,12,1,8,1,2,1,12,1,2,128,12,1,18, + 1,2,128,10,1,12,1,8,1,2,255,12,233,22,128,8, + 26,4,2,2,3,8,1,2,128,12,1,8,1,2,128,10, + 1,2,254,2,243,2,240,115,88,0,0,0,151,1,66,24, + 3,153,5,31,2,158,1,66,24,3,159,16,47,9,175,59, + 66,24,3,193,43,5,65,49,2,193,48,1,66,24,3,193, + 49,16,66,1,9,194,1,16,66,24,3,194,24,4,66,28, + 11,194,29,3,66,28,11,194,42,3,66,46,0,194,46,11, + 66,57,7,194,63,1,66,57,7,195,0,1,66,1,9,195, + 1,1,47,9,114,60,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,16, + 0,0,0,116,0,124,0,124,1,24,0,131,1,100,1,107, + 1,83,0,41,2,78,114,5,0,0,0,41,1,218,3,97, + 98,115,41,2,90,2,116,49,90,2,116,50,32,32,114,10, + 0,0,0,218,9,95,101,113,95,109,116,105,109,101,115,2, + 0,0,115,2,0,0,0,16,2,114,11,0,0,0,114,154, + 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, + 6,0,0,0,67,0,0,0,115,254,0,0,0,124,3,124, + 2,100,1,156,2,125,5,116,0,160,1,124,4,124,3,124, + 5,161,3,125,6,124,6,100,2,64,0,100,3,107,3,125, + 7,124,7,114,63,124,6,100,4,64,0,100,3,107,3,125, + 8,116,2,106,3,100,5,107,3,114,62,124,8,115,38,116, + 2,106,3,100,6,107,2,114,62,116,4,124,0,124,2,131, + 2,125,9,124,9,100,0,117,1,114,62,116,2,160,5,116, + 0,106,6,124,9,161,2,125,10,116,0,160,7,124,4,124, + 10,124,3,124,5,161,4,1,0,110,40,116,8,124,0,124, + 2,131,2,92,2,125,11,125,12,124,11,114,103,116,9,116, + 10,124,4,100,7,100,8,133,2,25,0,131,1,124,11,131, + 2,114,93,116,10,124,4,100,8,100,9,133,2,25,0,131, + 1,124,12,107,3,114,103,116,11,160,12,100,10,124,3,155, + 2,157,2,161,1,1,0,100,0,83,0,116,13,160,14,124, + 4,100,9,100,0,133,2,25,0,161,1,125,13,116,15,124, + 13,116,16,131,2,115,125,116,17,100,11,124,1,155,2,100, + 12,157,3,131,1,130,1,124,13,83,0,41,13,78,41,2, + 114,48,0,0,0,114,14,0,0,0,114,5,0,0,0,114, + 0,0,0,0,114,94,0,0,0,90,5,110,101,118,101,114, + 90,6,97,108,119,97,121,115,114,106,0,0,0,114,101,0, + 0,0,114,102,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,122, + 16,99,111,109,112,105,108,101,100,32,109,111,100,117,108,101, + 32,122,21,32,105,115,32,110,111,116,32,97,32,99,111,100, + 101,32,111,98,106,101,99,116,41,18,114,22,0,0,0,90, + 13,95,99,108,97,115,115,105,102,121,95,112,121,99,218,4, + 95,105,109,112,90,21,99,104,101,99,107,95,104,97,115,104, + 95,98,97,115,101,100,95,112,121,99,115,218,15,95,103,101, + 116,95,112,121,99,95,115,111,117,114,99,101,218,11,115,111, + 117,114,99,101,95,104,97,115,104,90,17,95,82,65,87,95, + 77,65,71,73,67,95,78,85,77,66,69,82,90,18,95,118, + 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, + 218,29,95,103,101,116,95,109,116,105,109,101,95,97,110,100, + 95,115,105,122,101,95,111,102,95,115,111,117,114,99,101,114, + 154,0,0,0,114,2,0,0,0,114,49,0,0,0,114,82, + 0,0,0,218,7,109,97,114,115,104,97,108,90,5,108,111, + 97,100,115,114,16,0,0,0,218,10,95,99,111,100,101,95, + 116,121,112,101,218,9,84,121,112,101,69,114,114,111,114,41, + 14,114,33,0,0,0,114,61,0,0,0,114,70,0,0,0, + 114,42,0,0,0,114,133,0,0,0,90,11,101,120,99,95, + 100,101,116,97,105,108,115,114,136,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,90,12,115,111,117,114,99,101,95,98, + 121,116,101,115,114,157,0,0,0,90,12,115,111,117,114,99, + 101,95,109,116,105,109,101,90,11,115,111,117,114,99,101,95, + 115,105,122,101,114,54,0,0,0,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,114,10,0,0,0,218,15,95,117, + 110,109,97,114,115,104,97,108,95,99,111,100,101,123,2,0, + 0,115,72,0,0,0,2,2,2,1,6,254,14,5,12,2, + 4,1,12,1,10,1,2,1,2,255,8,1,2,255,10,2, + 8,1,4,1,4,1,2,1,4,254,4,5,8,1,4,255, + 2,128,8,4,6,255,4,3,22,3,18,1,2,255,4,2, + 8,1,4,255,4,2,18,2,10,1,16,1,4,1,114,11, + 0,0,0,114,162,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,28,0, + 0,0,124,0,160,0,100,1,100,2,161,2,125,0,124,0, + 160,0,100,3,100,2,161,2,125,0,124,0,83,0,41,4, + 78,115,2,0,0,0,13,10,243,1,0,0,0,10,243,1, + 0,0,0,13,41,1,114,20,0,0,0,41,1,218,6,115, + 111,117,114,99,101,32,114,10,0,0,0,218,23,95,110,111, + 114,109,97,108,105,122,101,95,108,105,110,101,95,101,110,100, + 105,110,103,115,168,2,0,0,115,6,0,0,0,12,1,12, + 1,4,1,114,11,0,0,0,114,166,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,6,0,0,0,67,0, + 0,0,115,24,0,0,0,116,0,124,1,131,1,125,1,116, + 1,124,1,124,0,100,1,100,2,100,3,141,4,83,0,41, + 4,78,114,80,0,0,0,84,41,1,90,12,100,111,110,116, + 95,105,110,104,101,114,105,116,41,2,114,166,0,0,0,218, + 7,99,111,109,112,105,108,101,41,2,114,61,0,0,0,114, + 165,0,0,0,32,32,114,10,0,0,0,218,15,95,99,111, + 109,112,105,108,101,95,115,111,117,114,99,101,175,2,0,0, + 115,4,0,0,0,8,1,16,1,114,11,0,0,0,114,168, 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 8,0,0,0,67,0,0,0,115,82,0,0,0,124,1,100, - 1,100,0,133,2,25,0,100,2,118,0,115,10,74,0,130, - 1,124,1,100,0,100,1,133,2,25,0,125,1,9,0,124, - 0,106,0,124,1,25,0,125,2,110,11,35,0,4,0,116, - 1,121,40,1,0,1,0,1,0,89,0,100,0,83,0,37, - 0,116,2,124,0,106,3,124,2,131,2,83,0,119,0,41, - 3,78,114,15,0,0,0,114,177,0,0,0,41,4,114,29, - 0,0,0,114,27,0,0,0,114,60,0,0,0,114,30,0, - 0,0,41,3,114,33,0,0,0,114,14,0,0,0,114,62, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,156,0,0,0,213,2,0,0,115,20,0,0,0, - 20,2,12,1,2,2,12,1,2,128,12,1,6,1,2,128, - 12,2,2,253,115,12,0,0,0,145,5,23,0,151,7,33, - 7,168,1,33,7,114,156,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, - 14,1,0,0,116,0,124,0,124,1,131,2,125,2,100,0, - 125,3,116,1,68,0,93,100,92,3,125,4,125,5,125,6, - 124,2,124,4,23,0,125,7,116,2,160,3,100,1,124,0, - 106,4,116,5,124,7,100,2,100,3,166,5,1,0,9,0, - 124,0,106,6,124,7,25,0,125,8,110,10,35,0,4,0, - 116,7,121,134,1,0,1,0,1,0,89,0,113,9,37,0, - 124,8,100,4,25,0,125,9,116,8,124,0,106,4,124,8, - 131,2,125,10,100,0,125,11,124,5,114,89,9,0,116,9, - 124,0,124,9,124,7,124,1,124,10,131,5,125,11,110,24, - 35,0,4,0,116,10,121,133,1,0,125,12,1,0,124,12, - 125,3,89,0,100,0,125,12,126,12,110,10,100,0,125,12, - 126,12,119,1,37,0,116,11,124,9,124,10,131,2,125,11, - 124,11,100,0,117,0,114,99,113,9,124,8,100,4,25,0, - 125,9,124,11,124,6,124,9,102,3,2,0,1,0,83,0, - 124,3,114,124,100,5,124,3,155,0,157,2,125,13,116,12, - 124,13,124,1,100,6,141,2,124,3,130,2,116,12,100,7, - 124,1,155,2,157,2,124,1,100,6,141,2,130,1,119,0, - 119,0,41,8,78,122,13,116,114,121,105,110,103,32,123,125, - 123,125,123,125,114,94,0,0,0,41,1,90,9,118,101,114, - 98,111,115,105,116,121,114,0,0,0,0,122,20,109,111,100, - 117,108,101,32,108,111,97,100,32,102,97,105,108,101,100,58, - 32,114,66,0,0,0,114,65,0,0,0,41,13,114,40,0, - 0,0,114,96,0,0,0,114,49,0,0,0,114,82,0,0, - 0,114,30,0,0,0,114,21,0,0,0,114,29,0,0,0, - 114,27,0,0,0,114,60,0,0,0,114,162,0,0,0,114, - 81,0,0,0,114,168,0,0,0,114,3,0,0,0,41,14, - 114,33,0,0,0,114,42,0,0,0,114,14,0,0,0,90, - 12,105,109,112,111,114,116,95,101,114,114,111,114,114,97,0, - 0,0,114,98,0,0,0,114,55,0,0,0,114,70,0,0, - 0,114,62,0,0,0,114,44,0,0,0,114,133,0,0,0, - 114,54,0,0,0,90,3,101,120,99,114,83,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,52, - 0,0,0,228,2,0,0,115,64,0,0,0,10,1,4,1, - 14,1,8,1,22,1,2,1,12,1,2,128,12,1,4,1, - 2,128,8,2,12,1,4,1,4,1,2,1,18,1,2,128, - 12,1,14,1,10,128,10,2,8,1,2,3,8,1,14,1, - 4,2,10,1,14,1,18,2,2,241,2,247,115,42,0,0, - 0,158,5,36,2,164,7,45,9,189,8,65,6,2,193,6, - 7,65,24,9,193,13,2,65,20,9,193,20,4,65,24,9, - 194,5,1,65,24,9,194,6,1,45,9,114,52,0,0,0, - 41,46,114,92,0,0,0,90,26,95,102,114,111,122,101,110, - 95,105,109,112,111,114,116,108,105,98,95,101,120,116,101,114, - 110,97,108,114,22,0,0,0,114,1,0,0,0,114,2,0, - 0,0,90,17,95,102,114,111,122,101,110,95,105,109,112,111, - 114,116,108,105,98,114,49,0,0,0,114,155,0,0,0,114, - 117,0,0,0,114,159,0,0,0,114,73,0,0,0,114,138, - 0,0,0,114,36,0,0,0,90,7,95,95,97,108,108,95, - 95,114,21,0,0,0,90,15,112,97,116,104,95,115,101,112, - 97,114,97,116,111,114,115,114,19,0,0,0,114,81,0,0, - 0,114,3,0,0,0,114,26,0,0,0,218,4,116,121,112, - 101,114,76,0,0,0,114,120,0,0,0,114,122,0,0,0, - 114,124,0,0,0,90,13,95,76,111,97,100,101,114,66,97, - 115,105,99,115,114,4,0,0,0,114,96,0,0,0,114,40, - 0,0,0,114,41,0,0,0,114,39,0,0,0,114,28,0, - 0,0,114,129,0,0,0,114,149,0,0,0,114,151,0,0, - 0,114,60,0,0,0,114,154,0,0,0,114,162,0,0,0, - 218,8,95,95,99,111,100,101,95,95,114,160,0,0,0,114, - 166,0,0,0,114,168,0,0,0,114,176,0,0,0,114,158, - 0,0,0,114,156,0,0,0,114,52,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,218,8,60,109,111,100,117,108,101,62,1,0,0,0,115, - 90,0,0,0,4,0,8,16,16,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,1,8,2,6,3,14,1,16,3, - 4,4,8,2,4,2,4,1,4,1,18,2,0,127,0,127, - 12,50,12,1,2,1,2,1,4,252,8,9,8,4,8,9, - 8,31,2,126,2,254,4,29,8,5,8,21,8,46,8,8, - 10,40,8,5,8,7,8,6,8,13,8,19,12,15,114,11, - 0,0,0, + 11,0,0,0,67,0,0,0,115,68,0,0,0,116,0,160, + 1,124,0,100,1,63,0,100,2,23,0,124,0,100,3,63, + 0,100,4,64,0,124,0,100,5,64,0,124,1,100,6,63, + 0,124,1,100,3,63,0,100,7,64,0,124,1,100,5,64, + 0,100,8,20,0,100,9,100,9,100,9,102,9,161,1,83, + 0,41,10,78,233,9,0,0,0,105,188,7,0,0,233,5, + 0,0,0,233,15,0,0,0,233,31,0,0,0,233,11,0, + 0,0,233,63,0,0,0,114,94,0,0,0,114,15,0,0, + 0,41,2,114,138,0,0,0,90,6,109,107,116,105,109,101, + 41,2,218,1,100,114,145,0,0,0,32,32,114,10,0,0, + 0,218,14,95,112,97,114,115,101,95,100,111,115,116,105,109, + 101,181,2,0,0,115,18,0,0,0,4,1,10,1,10,1, + 6,1,6,1,10,1,10,1,6,1,6,249,114,11,0,0, + 0,114,176,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,10,0,0,0,67,0,0,0,115,112,0,0,0, + 9,0,124,1,100,1,100,0,133,2,25,0,100,2,118,0, + 115,11,74,0,130,1,124,1,100,0,100,1,133,2,25,0, + 125,1,124,0,106,0,124,1,25,0,125,2,124,2,100,3, + 25,0,125,3,124,2,100,4,25,0,125,4,124,2,100,5, + 25,0,125,5,116,1,124,4,124,3,131,2,124,5,102,2, + 83,0,35,0,4,0,116,2,116,3,116,4,102,3,121,55, + 1,0,1,0,1,0,89,0,100,6,83,0,37,0,119,0, + 41,7,78,114,15,0,0,0,169,2,218,1,99,218,1,111, + 114,170,0,0,0,233,6,0,0,0,233,3,0,0,0,41, + 2,114,0,0,0,0,114,0,0,0,0,41,5,114,29,0, + 0,0,114,176,0,0,0,114,27,0,0,0,218,10,73,110, + 100,101,120,69,114,114,111,114,114,161,0,0,0,41,6,114, + 33,0,0,0,114,14,0,0,0,114,62,0,0,0,114,138, + 0,0,0,114,139,0,0,0,90,17,117,110,99,111,109,112, + 114,101,115,115,101,100,95,115,105,122,101,32,32,32,32,32, + 32,114,10,0,0,0,114,158,0,0,0,194,2,0,0,115, + 26,0,0,0,2,1,20,2,12,1,10,1,8,3,8,1, + 8,1,14,1,2,128,18,1,6,1,2,128,2,255,115,12, + 0,0,0,129,39,41,0,169,10,54,7,183,1,54,7,114, + 158,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,67,0,0,0,115,82,0,0,0,124,1, + 100,1,100,0,133,2,25,0,100,2,118,0,115,10,74,0, + 130,1,124,1,100,0,100,1,133,2,25,0,125,1,9,0, + 124,0,106,0,124,1,25,0,125,2,110,11,35,0,4,0, + 116,1,121,40,1,0,1,0,1,0,89,0,100,0,83,0, + 37,0,116,2,124,0,106,3,124,2,131,2,83,0,119,0, + 41,3,78,114,15,0,0,0,114,177,0,0,0,41,4,114, + 29,0,0,0,114,27,0,0,0,114,60,0,0,0,114,30, + 0,0,0,41,3,114,33,0,0,0,114,14,0,0,0,114, + 62,0,0,0,32,32,32,114,10,0,0,0,114,156,0,0, + 0,213,2,0,0,115,20,0,0,0,20,2,12,1,2,2, + 12,1,2,128,12,1,6,1,2,128,12,2,2,253,115,12, + 0,0,0,145,5,23,0,151,7,33,7,168,1,33,7,114, + 156,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,9,0,0,0,67,0,0,0,115,14,1,0,0,116,0, + 124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,0, + 93,100,92,3,125,4,125,5,125,6,124,2,124,4,23,0, + 125,7,116,2,160,3,100,1,124,0,106,4,116,5,124,7, + 100,2,100,3,166,5,1,0,9,0,124,0,106,6,124,7, + 25,0,125,8,110,10,35,0,4,0,116,7,121,134,1,0, + 1,0,1,0,89,0,113,9,37,0,124,8,100,4,25,0, + 125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,0, + 125,11,124,5,114,89,9,0,116,9,124,0,124,9,124,7, + 124,1,124,10,131,5,125,11,110,24,35,0,4,0,116,10, + 121,133,1,0,125,12,1,0,124,12,125,3,89,0,100,0, + 125,12,126,12,110,10,100,0,125,12,126,12,119,1,37,0, + 116,11,124,9,124,10,131,2,125,11,124,11,100,0,117,0, + 114,99,113,9,124,8,100,4,25,0,125,9,124,11,124,6, + 124,9,102,3,2,0,1,0,83,0,124,3,114,124,100,5, + 124,3,155,0,157,2,125,13,116,12,124,13,124,1,100,6, + 141,2,124,3,130,2,116,12,100,7,124,1,155,2,157,2, + 124,1,100,6,141,2,130,1,119,0,119,0,41,8,78,122, + 13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,94, + 0,0,0,41,1,90,9,118,101,114,98,111,115,105,116,121, + 114,0,0,0,0,122,20,109,111,100,117,108,101,32,108,111, + 97,100,32,102,97,105,108,101,100,58,32,114,66,0,0,0, + 114,65,0,0,0,41,13,114,40,0,0,0,114,96,0,0, + 0,114,49,0,0,0,114,82,0,0,0,114,30,0,0,0, + 114,21,0,0,0,114,29,0,0,0,114,27,0,0,0,114, + 60,0,0,0,114,162,0,0,0,114,81,0,0,0,114,168, + 0,0,0,114,3,0,0,0,41,14,114,33,0,0,0,114, + 42,0,0,0,114,14,0,0,0,90,12,105,109,112,111,114, + 116,95,101,114,114,111,114,114,97,0,0,0,114,98,0,0, + 0,114,55,0,0,0,114,70,0,0,0,114,62,0,0,0, + 114,44,0,0,0,114,133,0,0,0,114,54,0,0,0,90, + 3,101,120,99,114,83,0,0,0,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,114,10,0,0,0,114,52,0,0, + 0,228,2,0,0,115,64,0,0,0,10,1,4,1,14,1, + 8,1,22,1,2,1,12,1,2,128,12,1,4,1,2,128, + 8,2,12,1,4,1,4,1,2,1,18,1,2,128,12,1, + 14,1,10,128,10,2,8,1,2,3,8,1,14,1,4,2, + 10,1,14,1,18,2,2,241,2,247,115,42,0,0,0,158, + 5,36,2,164,7,45,9,189,8,65,6,2,193,6,7,65, + 24,9,193,13,2,65,20,9,193,20,4,65,24,9,194,5, + 1,65,24,9,194,6,1,45,9,114,52,0,0,0,41,46, + 114,92,0,0,0,90,26,95,102,114,111,122,101,110,95,105, + 109,112,111,114,116,108,105,98,95,101,120,116,101,114,110,97, + 108,114,22,0,0,0,114,1,0,0,0,114,2,0,0,0, + 90,17,95,102,114,111,122,101,110,95,105,109,112,111,114,116, + 108,105,98,114,49,0,0,0,114,155,0,0,0,114,117,0, + 0,0,114,159,0,0,0,114,73,0,0,0,114,138,0,0, + 0,114,36,0,0,0,90,7,95,95,97,108,108,95,95,114, + 21,0,0,0,90,15,112,97,116,104,95,115,101,112,97,114, + 97,116,111,114,115,114,19,0,0,0,114,81,0,0,0,114, + 3,0,0,0,114,26,0,0,0,218,4,116,121,112,101,114, + 76,0,0,0,114,120,0,0,0,114,122,0,0,0,114,124, + 0,0,0,90,13,95,76,111,97,100,101,114,66,97,115,105, + 99,115,114,4,0,0,0,114,96,0,0,0,114,40,0,0, + 0,114,41,0,0,0,114,39,0,0,0,114,28,0,0,0, + 114,129,0,0,0,114,149,0,0,0,114,151,0,0,0,114, + 60,0,0,0,114,154,0,0,0,114,162,0,0,0,218,8, + 95,95,99,111,100,101,95,95,114,160,0,0,0,114,166,0, + 0,0,114,168,0,0,0,114,176,0,0,0,114,158,0,0, + 0,114,156,0,0,0,114,52,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,8,60,109,111,100,117,108,101,62,1, + 0,0,0,115,90,0,0,0,4,0,8,16,16,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,2,6,3, + 14,1,16,3,4,4,8,2,4,2,4,1,4,1,18,2, + 0,127,0,127,12,50,12,1,2,1,2,1,4,252,8,9, + 8,4,8,9,8,31,2,126,2,254,4,29,8,5,8,21, + 8,46,8,8,10,40,8,5,8,7,8,6,8,13,8,19, + 12,15,114,11,0,0,0, }; diff --git a/Python/marshal.c b/Python/marshal.c index 52bf2a51aaaec0..80517b3d65d41a 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -518,9 +518,8 @@ w_complex_object(PyObject *v, char flag, WFILE *p) w_object(co->co_code, p); w_object(co->co_consts, p); w_object(co->co_names, p); - w_object(co->co_varnames, p); - w_object(co->co_freevars, p); - w_object(co->co_cellvars, p); + w_object(co->co_localsplusnames, p); + w_string(co->co_localspluskinds, co->co_nlocalsplus, p); w_object(co->co_filename, p); w_object(co->co_name, p); w_long(co->co_firstlineno, p); @@ -1306,9 +1305,8 @@ r_object(RFILE *p) PyObject *code = NULL; PyObject *consts = NULL; PyObject *names = NULL; - PyObject *varnames = NULL; - PyObject *freevars = NULL; - PyObject *cellvars = NULL; + PyObject *localsplusnames = NULL; + _PyLocalsPlusKinds localspluskinds = NULL; PyObject *filename = NULL; PyObject *name = NULL; int firstlineno; @@ -1347,16 +1345,22 @@ r_object(RFILE *p) names = r_object(p); if (names == NULL) goto code_error; - varnames = r_object(p); - if (varnames == NULL) - goto code_error; - Py_ssize_t nlocals = PyTuple_GET_SIZE(varnames); - freevars = r_object(p); - if (freevars == NULL) - goto code_error; - cellvars = r_object(p); - if (cellvars == NULL) + localsplusnames = r_object(p); + if (localsplusnames == NULL) goto code_error; + + assert(PyTuple_GET_SIZE(localsplusnames) < INT_MAX); + int nlocalsplus = (int)PyTuple_GET_SIZE(localsplusnames); + if (nlocalsplus) { + if (_PyCode_InitLocalsPlusKinds(nlocalsplus, + &localspluskinds) < 0) { + goto code_error; + } + for (int i = 0; i < nlocalsplus; i++) { + localspluskinds[i] = r_byte(p); + } + } + filename = r_object(p); if (filename == NULL) goto code_error; @@ -1375,7 +1379,8 @@ r_object(RFILE *p) if (PySys_Audit("code.__new__", "OOOiiiiii", code, filename, name, argcount, posonlyargcount, - kwonlyargcount, nlocals, stacksize, flags) < 0) { + kwonlyargcount, nlocalsplus, stacksize, + flags) < 0) { goto code_error; } @@ -1391,9 +1396,8 @@ r_object(RFILE *p) .consts = consts, .names = names, - .varnames = varnames, - .cellvars = cellvars, - .freevars = freevars, + .localsplusnames = localsplusnames, + .localspluskinds = localspluskinds, .argcount = argcount, .posonlyargcount = posonlyargcount, @@ -1403,22 +1407,26 @@ r_object(RFILE *p) .exceptiontable = exceptiontable, }; + if (_PyCode_Validate(&con) < 0) { goto code_error; } + v = (PyObject *)_PyCode_New(&con); if (v == NULL) { goto code_error; } + + localspluskinds = NULL; // This keeps it from getting freed below. + v = r_ref_insert(v, idx, flag, p); code_error: Py_XDECREF(code); Py_XDECREF(consts); Py_XDECREF(names); - Py_XDECREF(varnames); - Py_XDECREF(freevars); - Py_XDECREF(cellvars); + Py_XDECREF(localsplusnames); + _PyCode_ClearLocalsPlusKinds(localspluskinds); Py_XDECREF(filename); Py_XDECREF(name); Py_XDECREF(linetable); diff --git a/Python/suggestions.c b/Python/suggestions.c index 2e76551f363ed4..3dfcbfe3ab0c37 100644 --- a/Python/suggestions.c +++ b/Python/suggestions.c @@ -3,6 +3,7 @@ #include "pycore_frame.h" #include "pycore_pyerrors.h" +#include "pycore_code.h" // _PyCode_GetVarnames() #define MAX_CANDIDATE_ITEMS 750 #define MAX_STRING_SIZE 40 @@ -210,8 +211,13 @@ offer_suggestions_for_name_error(PyNameErrorObject *exc) PyFrameObject *frame = traceback->tb_frame; assert(frame != NULL); PyCodeObject *code = PyFrame_GetCode(frame); - assert(code != NULL && code->co_varnames != NULL); - PyObject *dir = PySequence_List(code->co_varnames); + assert(code != NULL && code->co_localsplusnames != NULL); + PyObject *varnames = _PyCode_GetVarnames(code); + if (varnames == NULL) { + return NULL; + } + PyObject *dir = PySequence_List(varnames); + Py_DECREF(varnames); Py_DECREF(code); if (dir == NULL) { return NULL; diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index c1d2cd8ced68c4..756b52c3c57a61 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -871,7 +871,8 @@ def __init__(self, gdbval, cast_to=None): self.f_lineno = int_from_int(self.field('f_lineno')) self.f_lasti = int_from_int(self.field('f_lasti')) self.co_nlocals = int_from_int(self.co.field('co_nlocals')) - self.co_varnames = PyTupleObjectPtr.from_pyobject_ptr(self.co.field('co_varnames')) + pnames = self.co.field('co_localsplusnames') + self.co_localsplusnames = PyTupleObjectPtr.from_pyobject_ptr(pnames) def iter_locals(self): ''' @@ -884,9 +885,10 @@ def iter_locals(self): f_localsplus = self.field('f_localsptr') for i in safe_range(self.co_nlocals): pyop_value = PyObjectPtr.from_pyobject_ptr(f_localsplus[i]) - if not pyop_value.is_null(): - pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_varnames[i]) - yield (pyop_name, pyop_value) + if pyop_value.is_null(): + continue + pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_localsplusnames[i]) + yield (pyop_name, pyop_value) def _f_globals(self): f_localsplus = self.field('f_localsptr') From webhook-mailer at python.org Mon Jun 7 16:26:10 2021 From: webhook-mailer at python.org (zooba) Date: Mon, 07 Jun 2021 20:26:10 -0000 Subject: [Python-checkins] bpo-41299: Reduce lag in Windows threading timeouts by using a higher precision time source (GH-26568) Message-ID: https://github.com/python/cpython/commit/449e6f0ef395231e3abe467f910b02d7f075c27f commit: 449e6f0ef395231e3abe467f910b02d7f075c27f branch: main author: Ryan Hileman committer: zooba date: 2021-06-07T21:26:02+01:00 summary: bpo-41299: Reduce lag in Windows threading timeouts by using a higher precision time source (GH-26568) files: A Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst M Python/thread_nt.h diff --git a/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst b/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst new file mode 100644 index 00000000000000..71f700ffa1553e --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst @@ -0,0 +1 @@ +Fix 16ms jitter when using timeouts in :mod:`threading`, such as with :meth:`threading.Lock.acquire` or :meth:`threading.Condition.wait`. diff --git a/Python/thread_nt.h b/Python/thread_nt.h index 05b982d32dc526..0ce5e94f89bf72 100644 --- a/Python/thread_nt.h +++ b/Python/thread_nt.h @@ -76,16 +76,22 @@ EnterNonRecursiveMutex(PNRMUTEX mutex, DWORD milliseconds) } } else if (milliseconds != 0) { /* wait at least until the target */ - ULONGLONG now, target = GetTickCount64() + milliseconds; + _PyTime_t now = _PyTime_GetPerfCounter(); + if (now <= 0) { + Py_FatalError("_PyTime_GetPerfCounter() == 0"); + } + _PyTime_t nanoseconds = _PyTime_FromNanoseconds((_PyTime_t)milliseconds * 1000000); + _PyTime_t target = now + nanoseconds; while (mutex->locked) { - if (PyCOND_TIMEDWAIT(&mutex->cv, &mutex->cs, (long long)milliseconds*1000) < 0) { + _PyTime_t microseconds = _PyTime_AsMicroseconds(nanoseconds, _PyTime_ROUND_TIMEOUT); + if (PyCOND_TIMEDWAIT(&mutex->cv, &mutex->cs, microseconds) < 0) { result = WAIT_FAILED; break; } - now = GetTickCount64(); + now = _PyTime_GetPerfCounter(); if (target <= now) break; - milliseconds = (DWORD)(target-now); + nanoseconds = target - now; } } if (!mutex->locked) { From webhook-mailer at python.org Mon Jun 7 17:56:38 2021 From: webhook-mailer at python.org (terryjreedy) Date: Mon, 07 Jun 2021 21:56:38 -0000 Subject: [Python-checkins] Use absolute imports in IDLE tests (GH-26581) Message-ID: https://github.com/python/cpython/commit/e915db3e9e512249a6f494c0b331db2d021e1f56 commit: e915db3e9e512249a6f494c0b331db2d021e1f56 branch: main author: Terry Jan Reedy committer: terryjreedy date: 2021-06-07T17:56:34-04:00 summary: Use absolute imports in IDLE tests (GH-26581) Relative imports do not work when running test_x as main. files: M Lib/idlelib/idle_test/test_colorizer.py diff --git a/Lib/idlelib/idle_test/test_colorizer.py b/Lib/idlelib/idle_test/test_colorizer.py index b0b120e75a1553..308bc389384d33 100644 --- a/Lib/idlelib/idle_test/test_colorizer.py +++ b/Lib/idlelib/idle_test/test_colorizer.py @@ -3,7 +3,7 @@ from test.support import requires import unittest from unittest import mock -from .tkinter_testing_utils import run_in_tk_mainloop +from idlelib.idle_test.tkinter_testing_utils import run_in_tk_mainloop from functools import partial import textwrap From webhook-mailer at python.org Mon Jun 7 18:15:41 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 07 Jun 2021 22:15:41 -0000 Subject: [Python-checkins] Use absolute imports in IDLE tests (GH-26581) Message-ID: https://github.com/python/cpython/commit/8524e32d77b6741cdd7f947c009b10b54c6529b8 commit: 8524e32d77b6741cdd7f947c009b10b54c6529b8 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-07T15:15:31-07:00 summary: Use absolute imports in IDLE tests (GH-26581) Relative imports do not work when running test_x as main. (cherry picked from commit e915db3e9e512249a6f494c0b331db2d021e1f56) Co-authored-by: Terry Jan Reedy files: M Lib/idlelib/idle_test/test_colorizer.py diff --git a/Lib/idlelib/idle_test/test_colorizer.py b/Lib/idlelib/idle_test/test_colorizer.py index b0b120e75a1553..308bc389384d33 100644 --- a/Lib/idlelib/idle_test/test_colorizer.py +++ b/Lib/idlelib/idle_test/test_colorizer.py @@ -3,7 +3,7 @@ from test.support import requires import unittest from unittest import mock -from .tkinter_testing_utils import run_in_tk_mainloop +from idlelib.idle_test.tkinter_testing_utils import run_in_tk_mainloop from functools import partial import textwrap From webhook-mailer at python.org Mon Jun 7 18:52:11 2021 From: webhook-mailer at python.org (ericsnowcurrently) Date: Mon, 07 Jun 2021 22:52:11 -0000 Subject: [Python-checkins] bpo-43693: Add the MAKE_CELL opcode and interleave fast locals offsets. (gh-26396) Message-ID: https://github.com/python/cpython/commit/631f9938b1604d4f893417ec339b9e0fa9196fb1 commit: 631f9938b1604d4f893417ec339b9e0fa9196fb1 branch: main author: Eric Snow committer: ericsnowcurrently date: 2021-06-07T16:52:00-06:00 summary: bpo-43693: Add the MAKE_CELL opcode and interleave fast locals offsets. (gh-26396) This moves logic out of the frame initialization code and into the compiler and eval loop. Doing so simplifies the runtime code and allows us to optimize it better. https://bugs.python.org/issue43693 files: A Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst M Doc/library/dis.rst M Include/cpython/code.h M Include/internal/pycore_frame.h M Include/opcode.h M Lib/importlib/_bootstrap_external.py M Lib/opcode.py M Lib/test/test_dis.py M Lib/test/test_scope.py M Objects/frameobject.c M Objects/typeobject.c M Python/ceval.c M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/opcode_targets.h diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index bc206f7d2e96af..65fbb00bd6597b 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1056,6 +1056,14 @@ All of the following opcodes use their arguments. Deletes local ``co_varnames[var_num]``. +.. opcode:: MAKE_CELL (i) + + Creates a new cell in slot ``i``. If that slot is empty then + that value is stored into the new cell. + + .. versionadded:: 3.11 + + .. opcode:: LOAD_CLOSURE (i) Pushes a reference to the cell contained in slot ``i`` of the "fast locals" diff --git a/Include/cpython/code.h b/Include/cpython/code.h index c81f9f3395e4e1..a3383744546ff0 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -2,9 +2,16 @@ # error "this header file must not be included directly" #endif +/* Each instruction in a code object is a fixed-width value, + * currently 2 bytes: 1-byte opcode + 1-byte oparg. The EXTENDED_ARG + * opcode allows for larger values but the current limit is 3 uses + * of EXTENDED_ARG (see Python/wordcode_helpers.h), for a maximum + * 32-bit value. This aligns with the note in Python/compile.c + * (compiler_addop_i_line) indicating that the max oparg value is + * 2**32 - 1, rather than INT_MAX. + */ + typedef uint16_t _Py_CODEUNIT; -// Each oparg must fit in the second half of _Py_CODEUNIT, hence 8 bits. -#define _Py_MAX_OPARG 255 #ifdef WORDS_BIGENDIAN # define _Py_OPCODE(word) ((word) >> 8) diff --git a/Include/internal/pycore_frame.h b/Include/internal/pycore_frame.h index 44f58fb6948712..11c3a2c01e7e2f 100644 --- a/Include/internal/pycore_frame.h +++ b/Include/internal/pycore_frame.h @@ -32,6 +32,8 @@ _PyFrame_GetBuiltins(PyFrameObject *f) int _PyFrame_TakeLocals(PyFrameObject *f); +PyAPI_FUNC(int) _PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg); + #ifdef __cplusplus } #endif diff --git a/Include/opcode.h b/Include/opcode.h index a3a8b2a15613e6..c65e2f41133fc6 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -113,10 +113,11 @@ extern "C" { #define CALL_FUNCTION 131 #define MAKE_FUNCTION 132 #define BUILD_SLICE 133 -#define LOAD_CLOSURE 135 -#define LOAD_DEREF 136 -#define STORE_DEREF 137 -#define DELETE_DEREF 138 +#define MAKE_CELL 135 +#define LOAD_CLOSURE 136 +#define LOAD_DEREF 137 +#define STORE_DEREF 138 +#define DELETE_DEREF 139 #define CALL_FUNCTION_KW 141 #define CALL_FUNCTION_EX 142 #define EXTENDED_ARG 144 diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 39552186c8735d..009b45f00d8cf6 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -357,6 +357,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3452 (drop nlocals from marshaled code objects) # Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds) # Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693) +# Python 3.11a1 3455 (add MAKE_CELL bpo-43693) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -366,7 +367,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3454).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3455).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/opcode.py b/Lib/opcode.py index da143fe01f512c..4d5343179e5932 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -181,14 +181,16 @@ def jabs_op(name, op): def_op('MAKE_FUNCTION', 132) # Flags def_op('BUILD_SLICE', 133) # Number of items -def_op('LOAD_CLOSURE', 135) +def_op('MAKE_CELL', 135) hasfree.append(135) -def_op('LOAD_DEREF', 136) +def_op('LOAD_CLOSURE', 136) hasfree.append(136) -def_op('STORE_DEREF', 137) +def_op('LOAD_DEREF', 137) hasfree.append(137) -def_op('DELETE_DEREF', 138) +def_op('STORE_DEREF', 138) hasfree.append(138) +def_op('DELETE_DEREF', 139) +hasfree.append(139) def_op('CALL_FUNCTION_KW', 141) # #args + #kwargs def_op('CALL_FUNCTION_EX', 142) # Flags diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index b119d183d66c10..b81fcb551427a2 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -427,15 +427,17 @@ def foo(x): return foo dis_nested_0 = """\ -%3d 0 LOAD_CLOSURE 2 (y) - 2 BUILD_TUPLE 1 - 4 LOAD_CONST 1 () - 6 LOAD_CONST 2 ('_h..foo') - 8 MAKE_FUNCTION 8 (closure) - 10 STORE_FAST 1 (foo) - -%3d 12 LOAD_FAST 1 (foo) - 14 RETURN_VALUE + 0 MAKE_CELL 2 (y) + +%3d 2 LOAD_CLOSURE 2 (y) + 4 BUILD_TUPLE 1 + 6 LOAD_CONST 1 () + 8 LOAD_CONST 2 ('_h..foo') + 10 MAKE_FUNCTION 8 (closure) + 12 STORE_FAST 1 (foo) + +%3d 14 LOAD_FAST 1 (foo) + 16 RETURN_VALUE """ % (_h.__code__.co_firstlineno + 1, __file__, _h.__code__.co_firstlineno + 1, @@ -444,15 +446,17 @@ def foo(x): dis_nested_1 = """%s Disassembly of : -%3d 0 LOAD_CLOSURE 1 (x) - 2 BUILD_TUPLE 1 - 4 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) - 6 LOAD_CONST 2 ('_h..foo..') - 8 MAKE_FUNCTION 8 (closure) - 10 LOAD_DEREF 2 (y) - 12 GET_ITER - 14 CALL_FUNCTION 1 - 16 RETURN_VALUE + 0 MAKE_CELL 1 (x) + +%3d 2 LOAD_CLOSURE 1 (x) + 4 BUILD_TUPLE 1 + 6 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) + 8 LOAD_CONST 2 ('_h..foo..') + 10 MAKE_FUNCTION 8 (closure) + 12 LOAD_DEREF 2 (y) + 14 GET_ITER + 16 CALL_FUNCTION 1 + 18 RETURN_VALUE """ % (dis_nested_0, __file__, _h.__code__.co_firstlineno + 1, @@ -958,59 +962,64 @@ def jumpy(): #print('expected_opinfo_jumpy = [\n ', #',\n '.join(map(str, _instructions)), ',\n]', sep='') +#dis.dis(outer) Instruction = dis.Instruction expected_opinfo_outer = [ - Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=0, starts_line=2, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=16, starts_line=7, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello world!', argrepr="'Hello world!'", offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7, argrepr='', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=36, starts_line=8, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=38, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=3, argval='a', argrepr='a', offset=0, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=4, argval='b', argrepr='b', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=4, starts_line=2, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=10, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=12, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=14, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=7, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=30, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=32, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello world!', argrepr="'Hello world!'", offset=34, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7, argrepr='', offset=36, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=40, starts_line=8, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=42, starts_line=None, is_jump_target=False), ] expected_opinfo_f = [ - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=0, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=5, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=6, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=6, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=34, starts_line=6, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=3, argval='c', argrepr='c', offset=0, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=4, argval='d', argrepr='d', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=4, starts_line=3, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=5, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=6, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='c', argrepr='c', offset=10, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='d', argrepr='d', offset=12, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=14, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=16, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=20, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=24, starts_line=5, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='a', argrepr='a', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=6, argval='b', argrepr='b', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='c', argrepr='c', offset=30, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='d', argrepr='d', offset=32, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=34, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=38, starts_line=6, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=40, starts_line=None, is_jump_target=False), ] expected_opinfo_inner = [ Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=0, starts_line=4, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6, argrepr='', offset=14, starts_line=None, is_jump_target=False), diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py index 4239b26408ecdf..29d60ffe53f036 100644 --- a/Lib/test/test_scope.py +++ b/Lib/test/test_scope.py @@ -176,6 +176,57 @@ def bar(): self.assertEqual(foo(a=42), 50) self.assertEqual(foo(), 25) + def testCellIsArgAndEscapes(self): + # We need to be sure that a cell passed in as an arg still + # gets wrapped in a new cell if the arg escapes into an + # inner function (closure). + + def external(): + value = 42 + def inner(): + return value + cell, = inner.__closure__ + return cell + cell_ext = external() + + def spam(arg): + def eggs(): + return arg + return eggs + + eggs = spam(cell_ext) + cell_closure, = eggs.__closure__ + cell_eggs = eggs() + + self.assertIs(cell_eggs, cell_ext) + self.assertIsNot(cell_eggs, cell_closure) + + def testCellIsLocalAndEscapes(self): + # We need to be sure that a cell bound to a local still + # gets wrapped in a new cell if the local escapes into an + # inner function (closure). + + def external(): + value = 42 + def inner(): + return value + cell, = inner.__closure__ + return cell + cell_ext = external() + + def spam(arg): + cell = arg + def eggs(): + return cell + return eggs + + eggs = spam(cell_ext) + cell_closure, = eggs.__closure__ + cell_eggs = eggs() + + self.assertIs(cell_eggs, cell_ext) + self.assertIsNot(cell_eggs, cell_closure) + def testRecursion(self): def f(x): diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst new file mode 100644 index 00000000000000..c5fb29ba462e7d --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst @@ -0,0 +1,5 @@ +A new opcode MAKE_CELL has been added that effectively moves some of +the work done on function entry into the compiler and into the eval +loop. In addition to creating the required cell objects, the new +opcode converts relevant arguments (and other locals) to cell +variables on function entry. diff --git a/Objects/frameobject.c b/Objects/frameobject.c index ef5ff4e6983546..b29cd53bcccd31 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -918,6 +918,19 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, return f; } +int +_PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg) +{ + const _Py_CODEUNIT *code = + (const _Py_CODEUNIT *)PyBytes_AS_STRING(f->f_code->co_code); + for (int i = 0; i < f->f_lasti; i++) { + if (_Py_OPCODE(code[i]) == opcode && _Py_OPARG(code[i]) == oparg) { + return 1; + } + } + return 0; +} + int PyFrame_FastToLocalsWithError(PyFrameObject *f) { @@ -961,15 +974,52 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) former here and will later use the cell for the variable. */ if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { - assert(fast[i] == NULL); continue; } PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); PyObject *value = fast[i]; - if (kind & (CO_FAST_CELL | CO_FAST_FREE) && value != NULL) { - assert(PyCell_Check(value)); - value = PyCell_GET(value); + if (f->f_state != FRAME_CLEARED) { + int cellargoffset = CO_CELL_NOT_AN_ARG; + if (co->co_cell2arg != NULL) { + cellargoffset = co->co_cell2arg[i - co->co_nlocals]; + } + if (kind & CO_FAST_FREE) { + // The cell was set by _PyEval_MakeFrameVector() from + // the function's closure. + assert(value != NULL && PyCell_Check(value)); + value = PyCell_GET(value); + } + else if (kind & CO_FAST_CELL) { + // Note that no *_DEREF ops can happen before MAKE_CELL + // executes. So there's no need to duplicate the work + // that MAKE_CELL would otherwise do later, if it hasn't + // run yet. + if (value != NULL) { + if (PyCell_Check(value) && + _PyFrame_OpAlreadyRan(f, MAKE_CELL, i)) { + // (likely) MAKE_CELL must have executed already. + value = PyCell_GET(value); + } + // (unlikely) Otherwise it must be an initial value set + // by an earlier call to PyFrame_FastToLocals(). + } + else { + // (unlikely) MAKE_CELL hasn't executed yet. + if (cellargoffset != CO_CELL_NOT_AN_ARG) { + // It is an arg that escapes into an inner + // function so we use the initial value that + // was already set by _PyEval_MakeFrameVector(). + // Normally the arg value would always be set. + // However, it can be NULL if it was deleted via + // PyFrame_LocalsToFast(). + value = fast[cellargoffset]; + } + } + } + } + else { + assert(value == NULL); } if (value == NULL) { if (PyObject_DelItem(locals, name) != 0) { @@ -1010,8 +1060,9 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) PyObject **fast; PyObject *error_type, *error_value, *error_traceback; PyCodeObject *co; - if (f == NULL) + if (f == NULL || f->f_state == FRAME_CLEARED) { return; + } locals = _PyFrame_Specials(f)[FRAME_SPECIALS_LOCALS_OFFSET]; if (locals == NULL) return; @@ -1039,16 +1090,67 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) continue; } } - if (kind & (CO_FAST_CELL | CO_FAST_FREE)) { - assert(PyCell_Check(fast[i])); - if (PyCell_GET(fast[i]) != value) { - if (PyCell_Set(fast[i], value) < 0) { - PyErr_Clear(); + PyObject *oldvalue = fast[i]; + int cellargoffset = CO_CELL_NOT_AN_ARG; + if (co->co_cell2arg != NULL) { + cellargoffset = co->co_cell2arg[i - co->co_nlocals]; + } + PyObject *cell = NULL; + if (kind == CO_FAST_FREE) { + // The cell was cell by _PyEval_MakeFrameVector() from + // the function's closure. + assert(oldvalue != NULL && PyCell_Check(oldvalue)); + cell = oldvalue; + } + else if (kind & CO_FAST_CELL && oldvalue != NULL) { + if (cellargoffset != CO_CELL_NOT_AN_ARG) { + // (likely) MAKE_CELL must have executed already. + // It's the cell for an arg. + assert(PyCell_Check(oldvalue)); + cell = oldvalue; + } + else { + if (PyCell_Check(oldvalue) && + _PyFrame_OpAlreadyRan(f, MAKE_CELL, i)) { + // (likely) MAKE_CELL must have executed already. + cell = oldvalue; } + // (unlikely) Otherwise, it must have been set to some + // initial value by an earlier call to PyFrame_LocalsToFast(). + } + } + if (cell != NULL) { + oldvalue = PyCell_GET(cell); + if (value != oldvalue) { + Py_XDECREF(oldvalue); + Py_XINCREF(value); + PyCell_SET(cell, value); + } + } + else { + int offset = i; + if (kind & CO_FAST_CELL) { + // (unlikely) MAKE_CELL hasn't executed yet. + // Note that there is no need to create the cell that + // MAKE_CELL would otherwise create later, since no + // *_DEREF ops can happen before MAKE_CELL has run. + if (cellargoffset != CO_CELL_NOT_AN_ARG) { + // It's the cell for an arg. + // Replace the initial value that was set by + // _PyEval_MakeFrameVector(). + // Normally the arg value would always be set. + // However, it can be NULL if it was deleted + // via an earlier PyFrame_LocalsToFast() call. + offset = cellargoffset; + oldvalue = fast[offset]; + } + // Otherwise set an initial value for MAKE_CELL to use + // when it runs later. + } + if (value != oldvalue) { + Py_XINCREF(value); + Py_XSETREF(fast[offset], value); } - } else if (fast[i] != value) { - Py_XINCREF(value); - Py_XSETREF(fast[i], value); } Py_XDECREF(value); } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index bd2cade3bd68b4..4c7e5d4567f76c 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -11,6 +11,8 @@ #include "pycore_pystate.h" // _PyThreadState_GET() #include "pycore_unionobject.h" // _Py_Union(), _Py_union_type_or #include "frameobject.h" +#include "pycore_frame.h" // _PyFrame_OpAlreadyRan +#include "opcode.h" // MAKE_CELL #include "structmember.h" // PyMemberDef #include @@ -8877,14 +8879,17 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, } PyObject *obj = f->f_localsptr[0]; - Py_ssize_t i; + int i; if (obj == NULL && co->co_cell2arg) { /* The first argument might be a cell. */ for (i = 0; i < co->co_ncellvars; i++) { if (co->co_cell2arg[i] == 0) { - PyObject *cell = f->f_localsptr[co->co_nlocals + i]; - assert(PyCell_Check(cell)); - obj = PyCell_GET(cell); + int celloffset = co->co_nlocals + i; + PyObject *cell = f->f_localsptr[celloffset]; + if (PyCell_Check(cell) && + _PyFrame_OpAlreadyRan(f, MAKE_CELL, celloffset)) { + obj = PyCell_GET(cell); + } break; } } diff --git a/Python/ceval.c b/Python/ceval.c index 032bc0cd87129a..a8abead23038ce 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3076,6 +3076,34 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) goto error; } + case TARGET(MAKE_CELL): { + PyObject *initial = GETLOCAL(oparg); + // Normally initial would be NULL. However, it + // might have been set to an initial value during + // a call to PyFrame_LocalsToFast(). + PyObject *cell = PyCell_New(initial); + if (cell == NULL) { + goto error; + } + /* If it is an arg then copy the arg into the cell. */ + if (initial == NULL && co->co_cell2arg != NULL) { + int argoffset = co->co_cell2arg[oparg - co->co_nlocals]; + if (argoffset != CO_CELL_NOT_AN_ARG) { + PyObject *arg = GETLOCAL(argoffset); + // It will have been set in initialize_locals() but + // may have been deleted PyFrame_LocalsToFast(). + if (arg != NULL) {; + Py_INCREF(arg); + PyCell_SET(cell, arg); + /* Clear the local copy. */ + SETLOCAL(argoffset, NULL); + } + } + } + SETLOCAL(oparg, cell); + DISPATCH(); + } + case TARGET(DELETE_DEREF): { PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); @@ -5067,27 +5095,6 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, } } - - /* Allocate and initialize storage for cell vars, and copy free - vars into frame. */ - for (i = 0; i < co->co_ncellvars; ++i) { - PyObject *c; - Py_ssize_t arg; - /* Possibly account for the cell variable being an argument. */ - if (co->co_cell2arg != NULL && - (arg = co->co_cell2arg[i]) != CO_CELL_NOT_AN_ARG) { - c = PyCell_New(GETLOCAL(arg)); - /* Clear the local copy. */ - SETLOCAL(arg, NULL); - } - else { - c = PyCell_New(NULL); - } - if (c == NULL) - goto fail; - SETLOCAL(co->co_nlocals + i, c); - } - /* Copy closure variables to free variables */ for (i = 0; i < co->co_nfreevars; ++i) { PyObject *o = PyTuple_GET_ITEM(con->fc_closure, i); diff --git a/Python/compile.c b/Python/compile.c index d5a0234c0fee2f..056dacf9b6c5d3 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1185,6 +1185,8 @@ stack_effect(int opcode, int oparg, int jump) return -1; /* Closures */ + case MAKE_CELL: + return 0; case LOAD_CLOSURE: return 1; case LOAD_DEREF: @@ -7373,15 +7375,47 @@ optimize_cfg(struct compiler *c, struct assembler *a, PyObject *consts); static int ensure_exits_have_lineno(struct compiler *c); +static inline int +insert_instruction(basicblock *block, int pos, struct instr *instr) { + if (compiler_next_instr(block) < 0) { + return -1; + } + for (int i = block->b_iused-1; i > pos; i--) { + block->b_instr[i] = block->b_instr[i-1]; + } + block->b_instr[pos] = *instr; + return 0; +} + static int -insert_generator_prefix(struct compiler *c, basicblock *entryblock) { +insert_prefix_instructions(struct compiler *c, basicblock *entryblock) { int flags = compute_code_flags(c); if (flags < 0) { return -1; } - int kind; + + /* Set up cells for any variable that escapes, to be put in a closure. */ + PyObject *k, *v; + Py_ssize_t pos = 0; + while (PyDict_Next(c->u->u_cellvars, &pos, &k, &v)) { + assert(PyLong_AS_LONG(v) < INT_MAX); + int cellindex = (int)PyLong_AS_LONG(v); + struct instr make_cell = { + .i_opcode = MAKE_CELL, + // This will get fixed in offset_derefs(). + .i_oparg = cellindex, + .i_lineno = -1, + .i_target = NULL, + }; + if (insert_instruction(entryblock, (int)(pos - 1), &make_cell) < 0) { + return -1; + } + } + + /* Add the generator prefix instructions. */ if (flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR)) { + int kind; if (flags & CO_COROUTINE) { kind = 1; } @@ -7391,20 +7425,18 @@ insert_generator_prefix(struct compiler *c, basicblock *entryblock) { else { kind = 0; } + + struct instr gen_start = { + .i_opcode = GEN_START, + .i_oparg = kind, + .i_lineno = -1, + .i_target = NULL, + }; + if (insert_instruction(entryblock, 0, &gen_start) < 0) { + return -1; + } } - else { - return 0; - } - if (compiler_next_instr(entryblock) < 0) { - return -1; - } - for (int i = entryblock->b_iused-1; i > 0; i--) { - entryblock->b_instr[i] = entryblock->b_instr[i-1]; - } - entryblock->b_instr[0].i_opcode = GEN_START; - entryblock->b_instr[0].i_oparg = kind; - entryblock->b_instr[0].i_lineno = -1; - entryblock->b_instr[0].i_target = NULL; + return 0; } @@ -7437,12 +7469,15 @@ guarantee_lineno_for_exits(struct assembler *a, int firstlineno) { } static void -offset_derefs(basicblock *entryblock, int nlocals) +fix_cell_offsets(struct compiler *c, basicblock *entryblock) { + assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); + int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); for (basicblock *b = entryblock; b != NULL; b = b->b_next) { for (int i = 0; i < b->b_iused; i++) { struct instr *inst = &b->b_instr[i]; switch(inst->i_opcode) { + case MAKE_CELL: case LOAD_CLOSURE: case LOAD_DEREF: case STORE_DEREF: @@ -7492,7 +7527,7 @@ assemble(struct compiler *c, int addNone) } assert(entryblock != NULL); - if (insert_generator_prefix(c, entryblock)) { + if (insert_prefix_instructions(c, entryblock)) { goto error; } @@ -7509,8 +7544,7 @@ assemble(struct compiler *c, int addNone) a.a_entry = entryblock; a.a_nblocks = nblocks; - assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); - offset_derefs(entryblock, (int)PyDict_GET_SIZE(c->u->u_varnames)); + fix_cell_offsets(c, entryblock); consts = consts_dict_keys_inorder(c->u->u_consts); if (consts == NULL) { diff --git a/Python/importlib.h b/Python/importlib.h index 1c59989743c801..16ccf3076f23bb 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -430,1480 +430,1480 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,243,26,0,0,0,135,2,102,1,100,1,100, - 2,132,8,125,1,116,0,124,1,136,2,131,2,1,0,124, - 1,83,0,41,4,122,49,68,101,99,111,114,97,116,111,114, - 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, - 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, - 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,19,0,0,0,115,38,0, - 0,0,124,1,116,0,106,1,118,1,114,14,116,2,100,1, - 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,2, - 124,0,124,1,131,2,83,0,41,3,78,250,29,123,33,114, - 125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,114,19,0,0,0,41, - 4,114,18,0,0,0,218,20,98,117,105,108,116,105,110,95, - 109,111,100,117,108,101,95,110,97,109,101,115,218,11,73,109, - 112,111,114,116,69,114,114,111,114,114,51,0,0,0,169,3, - 114,34,0,0,0,218,8,102,117,108,108,110,97,109,101,218, - 3,102,120,110,32,32,128,114,5,0,0,0,218,25,95,114, + 3,0,0,0,243,28,0,0,0,135,2,136,2,102,1,100, + 1,100,2,132,8,125,1,116,0,124,1,137,2,131,2,1, + 0,124,1,83,0,41,4,122,49,68,101,99,111,114,97,116, + 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, + 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, + 32,98,117,105,108,116,45,105,110,46,99,2,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,19,0,0,0,115, + 38,0,0,0,124,1,116,0,106,1,118,1,114,14,116,2, + 100,1,160,3,124,1,161,1,124,1,100,2,141,2,130,1, + 137,2,124,0,124,1,131,2,83,0,41,3,78,250,29,123, + 33,114,125,32,105,115,32,110,111,116,32,97,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,114,19,0,0, + 0,41,4,114,18,0,0,0,218,20,98,117,105,108,116,105, + 110,95,109,111,100,117,108,101,95,110,97,109,101,115,218,11, + 73,109,112,111,114,116,69,114,114,111,114,114,51,0,0,0, + 169,3,114,34,0,0,0,218,8,102,117,108,108,110,97,109, + 101,218,3,102,120,110,32,32,128,114,5,0,0,0,218,25, + 95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,105, + 110,95,119,114,97,112,112,101,114,254,0,0,0,243,10,0, + 0,0,10,1,10,1,2,1,6,255,10,2,114,17,0,0, + 0,122,52,95,114,101,113,117,105,114,101,115,95,98,117,105, + 108,116,105,110,46,60,108,111,99,97,108,115,62,46,95,114, 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,95, - 119,114,97,112,112,101,114,254,0,0,0,243,10,0,0,0, - 10,1,10,1,2,1,6,255,10,2,114,17,0,0,0,122, - 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, - 105,110,46,60,108,111,99,97,108,115,62,46,95,114,101,113, - 117,105,114,101,115,95,98,117,105,108,116,105,110,95,119,114, - 97,112,112,101,114,78,169,1,114,16,0,0,0,41,3,114, - 91,0,0,0,114,92,0,0,0,114,91,0,0,0,96,32, - 64,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, - 115,95,98,117,105,108,116,105,110,252,0,0,0,243,6,0, - 0,0,12,2,10,5,4,1,114,17,0,0,0,114,95,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,114,85,0,0,0,41,4,122,47, - 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, - 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, - 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, - 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, - 2,141,2,130,1,136,2,124,0,124,1,131,2,83,0,169, - 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, - 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, - 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, - 102,114,111,122,101,110,114,88,0,0,0,114,51,0,0,0, - 114,89,0,0,0,32,32,128,114,5,0,0,0,218,24,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, - 119,114,97,112,112,101,114,9,1,0,0,114,93,0,0,0, - 114,17,0,0,0,122,50,95,114,101,113,117,105,114,101,115, - 95,102,114,111,122,101,110,46,60,108,111,99,97,108,115,62, - 46,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, - 110,95,119,114,97,112,112,101,114,78,114,94,0,0,0,41, - 3,114,91,0,0,0,114,99,0,0,0,114,91,0,0,0, - 96,32,64,114,5,0,0,0,218,16,95,114,101,113,117,105, - 114,101,115,95,102,114,111,122,101,110,7,1,0,0,114,96, - 0,0,0,114,17,0,0,0,114,100,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,115,74,0,0,0,100,1,125,2,116,0,160,1,124, - 2,116,2,161,2,1,0,116,3,124,1,124,0,131,2,125, - 3,124,1,116,4,106,5,118,0,114,33,116,4,106,5,124, - 1,25,0,125,4,116,6,124,3,124,4,131,2,1,0,116, - 4,106,5,124,1,25,0,83,0,116,7,124,3,131,1,83, - 0,41,3,122,130,76,111,97,100,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, - 110,116,111,32,115,121,115,46,109,111,100,117,108,101,115,32, - 97,110,100,32,114,101,116,117,114,110,32,105,116,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,46,32,32, - 85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101,32,108,111,97, - 100,95,109,111,100,117,108,101,40,41,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,59,32,117,115,101,32,101,120,101,99,95, - 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, - 78,41,8,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,16,115,112,101,99,95,102, - 114,111,109,95,108,111,97,100,101,114,114,18,0,0,0,218, - 7,109,111,100,117,108,101,115,218,5,95,101,120,101,99,218, - 5,95,108,111,97,100,41,5,114,34,0,0,0,114,90,0, - 0,0,218,3,109,115,103,218,4,115,112,101,99,218,6,109, - 111,100,117,108,101,32,32,32,32,32,114,5,0,0,0,218, - 17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,104, - 105,109,19,1,0,0,115,16,0,0,0,4,6,12,2,10, - 1,10,1,10,1,10,1,10,1,8,2,114,17,0,0,0, - 114,111,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,194,0,0,0,116, - 0,124,0,100,1,100,2,131,3,125,1,116,0,124,0,100, - 3,100,2,131,3,4,0,125,2,114,18,116,1,124,2,131, - 1,83,0,116,2,124,1,100,4,131,2,114,39,9,0,124, - 1,160,3,124,0,161,1,83,0,35,0,4,0,116,4,121, - 96,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, - 0,106,5,125,3,110,12,35,0,4,0,116,6,121,95,1, - 0,1,0,1,0,100,5,125,3,89,0,110,1,37,0,9, - 0,124,0,106,7,125,4,110,27,35,0,4,0,116,6,121, - 94,1,0,1,0,1,0,124,1,100,2,117,0,114,79,100, - 6,160,8,124,3,161,1,6,0,89,0,83,0,100,7,160, - 8,124,3,124,1,161,2,6,0,89,0,83,0,37,0,100, - 8,160,8,124,3,124,4,161,2,83,0,119,0,119,0,119, - 0,41,9,122,44,84,104,101,32,105,109,112,108,101,109,101, - 110,116,97,116,105,111,110,32,111,102,32,77,111,100,117,108, - 101,84,121,112,101,46,95,95,114,101,112,114,95,95,40,41, - 46,218,10,95,95,108,111,97,100,101,114,95,95,78,218,8, - 95,95,115,112,101,99,95,95,218,11,109,111,100,117,108,101, - 95,114,101,112,114,250,1,63,250,13,60,109,111,100,117,108, - 101,32,123,33,114,125,62,250,20,60,109,111,100,117,108,101, - 32,123,33,114,125,32,40,123,33,114,125,41,62,250,23,60, - 109,111,100,117,108,101,32,123,33,114,125,32,102,114,111,109, - 32,123,33,114,125,62,41,9,114,12,0,0,0,218,22,95, - 109,111,100,117,108,101,95,114,101,112,114,95,102,114,111,109, - 95,115,112,101,99,114,10,0,0,0,114,114,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,114,8,0,0,0,114, - 2,0,0,0,218,8,95,95,102,105,108,101,95,95,114,51, - 0,0,0,41,5,114,110,0,0,0,218,6,108,111,97,100, - 101,114,114,109,0,0,0,114,20,0,0,0,218,8,102,105, - 108,101,110,97,109,101,32,32,32,32,32,114,5,0,0,0, - 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, - 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, - 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, - 128,12,1,8,1,2,128,2,1,8,1,2,128,12,1,8, - 1,14,1,16,2,2,128,12,2,2,250,2,252,2,251,115, - 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, - 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, - 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, - 1,38,7,114,124,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,64,0,0,0,115,114,0, - 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, - 100,2,100,2,100,3,156,3,100,4,100,5,132,2,90,4, - 100,6,100,7,132,0,90,5,100,8,100,9,132,0,90,6, - 101,7,100,10,100,11,132,0,131,1,90,8,101,8,106,9, - 100,12,100,11,132,0,131,1,90,8,101,7,100,13,100,14, - 132,0,131,1,90,10,101,7,100,15,100,16,132,0,131,1, - 90,11,101,11,106,9,100,17,100,16,132,0,131,1,90,11, - 100,2,83,0,41,18,218,10,77,111,100,117,108,101,83,112, - 101,99,97,208,5,0,0,84,104,101,32,115,112,101,99,105, - 102,105,99,97,116,105,111,110,32,102,111,114,32,97,32,109, - 111,100,117,108,101,44,32,117,115,101,100,32,102,111,114,32, - 108,111,97,100,105,110,103,46,10,10,32,32,32,32,65,32, - 109,111,100,117,108,101,39,115,32,115,112,101,99,32,105,115, - 32,116,104,101,32,115,111,117,114,99,101,32,102,111,114,32, - 105,110,102,111,114,109,97,116,105,111,110,32,97,98,111,117, - 116,32,116,104,101,32,109,111,100,117,108,101,46,32,32,70, - 111,114,10,32,32,32,32,100,97,116,97,32,97,115,115,111, - 99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32, - 109,111,100,117,108,101,44,32,105,110,99,108,117,100,105,110, - 103,32,115,111,117,114,99,101,44,32,117,115,101,32,116,104, - 101,32,115,112,101,99,39,115,10,32,32,32,32,108,111,97, - 100,101,114,46,10,10,32,32,32,32,96,110,97,109,101,96, - 32,105,115,32,116,104,101,32,97,98,115,111,108,117,116,101, - 32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,100, - 117,108,101,46,32,32,96,108,111,97,100,101,114,96,32,105, - 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, - 32,116,111,32,117,115,101,32,119,104,101,110,32,108,111,97, - 100,105,110,103,32,116,104,101,32,109,111,100,117,108,101,46, - 32,32,96,112,97,114,101,110,116,96,32,105,115,32,116,104, - 101,32,110,97,109,101,32,111,102,32,116,104,101,10,32,32, - 32,32,112,97,99,107,97,103,101,32,116,104,101,32,109,111, - 100,117,108,101,32,105,115,32,105,110,46,32,32,84,104,101, - 32,112,97,114,101,110,116,32,105,115,32,100,101,114,105,118, - 101,100,32,102,114,111,109,32,116,104,101,32,110,97,109,101, - 46,10,10,32,32,32,32,96,105,115,95,112,97,99,107,97, - 103,101,96,32,100,101,116,101,114,109,105,110,101,115,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, - 99,111,110,115,105,100,101,114,101,100,32,97,32,112,97,99, - 107,97,103,101,32,111,114,10,32,32,32,32,110,111,116,46, - 32,32,79,110,32,109,111,100,117,108,101,115,32,116,104,105, - 115,32,105,115,32,114,101,102,108,101,99,116,101,100,32,98, - 121,32,116,104,101,32,96,95,95,112,97,116,104,95,95,96, - 32,97,116,116,114,105,98,117,116,101,46,10,10,32,32,32, - 32,96,111,114,105,103,105,110,96,32,105,115,32,116,104,101, - 32,115,112,101,99,105,102,105,99,32,108,111,99,97,116,105, - 111,110,32,117,115,101,100,32,98,121,32,116,104,101,32,108, - 111,97,100,101,114,32,102,114,111,109,32,119,104,105,99,104, - 32,116,111,10,32,32,32,32,108,111,97,100,32,116,104,101, - 32,109,111,100,117,108,101,44,32,105,102,32,116,104,97,116, - 32,105,110,102,111,114,109,97,116,105,111,110,32,105,115,32, - 97,118,97,105,108,97,98,108,101,46,32,32,87,104,101,110, - 32,102,105,108,101,110,97,109,101,32,105,115,10,32,32,32, - 32,115,101,116,44,32,111,114,105,103,105,110,32,119,105,108, - 108,32,109,97,116,99,104,46,10,10,32,32,32,32,96,104, - 97,115,95,108,111,99,97,116,105,111,110,96,32,105,110,100, - 105,99,97,116,101,115,32,116,104,97,116,32,97,32,115,112, - 101,99,39,115,32,34,111,114,105,103,105,110,34,32,114,101, - 102,108,101,99,116,115,32,97,32,108,111,99,97,116,105,111, - 110,46,10,32,32,32,32,87,104,101,110,32,116,104,105,115, - 32,105,115,32,84,114,117,101,44,32,96,95,95,102,105,108, - 101,95,95,96,32,97,116,116,114,105,98,117,116,101,32,111, - 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, - 115,101,116,46,10,10,32,32,32,32,96,99,97,99,104,101, - 100,96,32,105,115,32,116,104,101,32,108,111,99,97,116,105, - 111,110,32,111,102,32,116,104,101,32,99,97,99,104,101,100, - 32,98,121,116,101,99,111,100,101,32,102,105,108,101,44,32, - 105,102,32,97,110,121,46,32,32,73,116,10,32,32,32,32, - 99,111,114,114,101,115,112,111,110,100,115,32,116,111,32,116, - 104,101,32,96,95,95,99,97,99,104,101,100,95,95,96,32, - 97,116,116,114,105,98,117,116,101,46,10,10,32,32,32,32, - 96,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,96,32,105,115,32, - 116,104,101,32,115,101,113,117,101,110,99,101,32,111,102,32, - 112,97,116,104,32,101,110,116,114,105,101,115,32,116,111,10, - 32,32,32,32,115,101,97,114,99,104,32,119,104,101,110,32, - 105,109,112,111,114,116,105,110,103,32,115,117,98,109,111,100, - 117,108,101,115,46,32,32,73,102,32,115,101,116,44,32,105, - 115,95,112,97,99,107,97,103,101,32,115,104,111,117,108,100, - 32,98,101,10,32,32,32,32,84,114,117,101,45,45,97,110, - 100,32,70,97,108,115,101,32,111,116,104,101,114,119,105,115, - 101,46,10,10,32,32,32,32,80,97,99,107,97,103,101,115, - 32,97,114,101,32,115,105,109,112,108,121,32,109,111,100,117, - 108,101,115,32,116,104,97,116,32,40,109,97,121,41,32,104, - 97,118,101,32,115,117,98,109,111,100,117,108,101,115,46,32, - 32,73,102,32,97,32,115,112,101,99,10,32,32,32,32,104, - 97,115,32,97,32,110,111,110,45,78,111,110,101,32,118,97, - 108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112,111,114,116,10, - 32,32,32,32,115,121,115,116,101,109,32,119,105,108,108,32, - 99,111,110,115,105,100,101,114,32,109,111,100,117,108,101,115, - 32,108,111,97,100,101,100,32,102,114,111,109,32,116,104,101, - 32,115,112,101,99,32,97,115,32,112,97,99,107,97,103,101, - 115,46,10,10,32,32,32,32,79,110,108,121,32,102,105,110, - 100,101,114,115,32,40,115,101,101,32,105,109,112,111,114,116, - 108,105,98,46,97,98,99,46,77,101,116,97,80,97,116,104, - 70,105,110,100,101,114,32,97,110,100,10,32,32,32,32,105, - 109,112,111,114,116,108,105,98,46,97,98,99,46,80,97,116, - 104,69,110,116,114,121,70,105,110,100,101,114,41,32,115,104, - 111,117,108,100,32,109,111,100,105,102,121,32,77,111,100,117, - 108,101,83,112,101,99,32,105,110,115,116,97,110,99,101,115, - 46,10,10,32,32,32,32,78,41,3,218,6,111,114,105,103, - 105,110,218,12,108,111,97,100,101,114,95,115,116,97,116,101, - 218,10,105,115,95,112,97,99,107,97,103,101,99,3,0,0, - 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, - 0,115,54,0,0,0,124,1,124,0,95,0,124,2,124,0, - 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, - 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, - 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, - 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, - 0,114,127,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, - 114,218,7,95,99,97,99,104,101,100,41,6,114,34,0,0, - 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, - 114,127,0,0,0,114,128,0,0,0,32,32,32,32,32,32, - 114,5,0,0,0,114,35,0,0,0,101,1,0,0,115,14, - 0,0,0,6,2,6,1,6,1,6,1,14,1,6,3,10, - 1,114,17,0,0,0,122,19,77,111,100,117,108,101,83,112, - 101,99,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,6,0,0,0,67,0,0,0, - 115,102,0,0,0,100,1,160,0,124,0,106,1,161,1,100, - 2,160,0,124,0,106,2,161,1,103,2,125,1,124,0,106, - 3,100,0,117,1,114,26,124,1,160,4,100,3,160,0,124, - 0,106,3,161,1,161,1,1,0,124,0,106,5,100,0,117, - 1,114,40,124,1,160,4,100,4,160,0,124,0,106,5,161, - 1,161,1,1,0,100,5,160,0,124,0,106,6,106,7,100, - 6,160,8,124,1,161,1,161,2,83,0,41,7,78,122,9, - 110,97,109,101,61,123,33,114,125,122,11,108,111,97,100,101, - 114,61,123,33,114,125,122,11,111,114,105,103,105,110,61,123, - 33,114,125,122,29,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,61, - 123,125,122,6,123,125,40,123,125,41,122,2,44,32,41,9, - 114,51,0,0,0,114,20,0,0,0,114,122,0,0,0,114, - 126,0,0,0,218,6,97,112,112,101,110,100,114,129,0,0, - 0,218,9,95,95,99,108,97,115,115,95,95,114,8,0,0, - 0,218,4,106,111,105,110,41,2,114,34,0,0,0,114,63, - 0,0,0,32,32,114,5,0,0,0,114,54,0,0,0,113, - 1,0,0,115,20,0,0,0,10,1,10,1,4,255,10,2, - 18,1,10,1,6,1,8,1,4,255,22,2,114,17,0,0, - 0,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, - 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0, - 0,0,0,8,0,0,0,67,0,0,0,115,104,0,0,0, - 124,0,106,0,125,2,9,0,124,0,106,1,124,1,106,1, - 107,2,111,38,124,0,106,2,124,1,106,2,107,2,111,38, - 124,0,106,3,124,1,106,3,107,2,111,38,124,2,124,1, - 106,0,107,2,111,38,124,0,106,4,124,1,106,4,107,2, - 111,38,124,0,106,5,124,1,106,5,107,2,83,0,35,0, - 4,0,116,6,121,51,1,0,1,0,1,0,116,7,6,0, - 89,0,83,0,37,0,119,0,114,0,0,0,0,41,8,114, - 129,0,0,0,114,20,0,0,0,114,122,0,0,0,114,126, - 0,0,0,218,6,99,97,99,104,101,100,218,12,104,97,115, - 95,108,111,99,97,116,105,111,110,114,2,0,0,0,218,14, - 78,111,116,73,109,112,108,101,109,101,110,116,101,100,41,3, - 114,34,0,0,0,90,5,111,116,104,101,114,90,4,115,109, - 115,108,32,32,32,114,5,0,0,0,218,6,95,95,101,113, - 95,95,123,1,0,0,115,36,0,0,0,6,1,2,1,12, - 1,10,1,2,255,10,2,2,254,8,3,2,253,10,4,2, - 252,10,5,2,251,2,128,12,6,8,1,2,128,2,255,115, - 12,0,0,0,132,34,39,0,167,9,50,7,179,1,50,7, - 122,17,77,111,100,117,108,101,83,112,101,99,46,95,95,101, - 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,58,0,0,0,124,0,106, - 0,100,0,117,0,114,26,124,0,106,1,100,0,117,1,114, - 26,124,0,106,2,114,26,116,3,100,0,117,0,114,19,116, - 4,130,1,116,3,160,5,124,0,106,1,161,1,124,0,95, - 0,124,0,106,0,83,0,114,0,0,0,0,41,6,114,131, - 0,0,0,114,126,0,0,0,114,130,0,0,0,218,19,95, - 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, - 97,108,218,19,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,69,114,114,111,114,90,11,95,103,101,116,95,99,97, - 99,104,101,100,114,53,0,0,0,32,114,5,0,0,0,114, - 135,0,0,0,135,1,0,0,115,12,0,0,0,10,2,16, - 1,8,1,4,1,14,1,6,1,114,17,0,0,0,122,17, - 77,111,100,117,108,101,83,112,101,99,46,99,97,99,104,101, - 100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,131,0,0, - 0,41,2,114,34,0,0,0,114,135,0,0,0,32,32,114, - 5,0,0,0,114,135,0,0,0,144,1,0,0,115,2,0, - 0,0,10,2,114,17,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,32, - 0,0,0,124,0,106,0,100,1,117,0,114,13,124,0,106, - 1,160,2,100,2,161,1,100,3,25,0,83,0,124,0,106, - 1,83,0,41,4,122,32,84,104,101,32,110,97,109,101,32, - 111,102,32,116,104,101,32,109,111,100,117,108,101,39,115,32, - 112,97,114,101,110,116,46,78,218,1,46,114,26,0,0,0, - 41,3,114,129,0,0,0,114,20,0,0,0,218,10,114,112, - 97,114,116,105,116,105,111,110,114,53,0,0,0,32,114,5, - 0,0,0,218,6,112,97,114,101,110,116,148,1,0,0,115, - 6,0,0,0,10,3,16,1,6,2,114,17,0,0,0,122, - 17,77,111,100,117,108,101,83,112,101,99,46,112,97,114,101, - 110,116,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0, - 83,0,114,0,0,0,0,41,1,114,130,0,0,0,114,53, - 0,0,0,32,114,5,0,0,0,114,136,0,0,0,156,1, - 0,0,115,2,0,0,0,6,2,114,17,0,0,0,122,23, - 77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,108, - 111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,67,0,0,0,115,14,0,0, - 0,116,0,124,1,131,1,124,0,95,1,100,0,83,0,114, - 0,0,0,0,41,2,218,4,98,111,111,108,114,130,0,0, - 0,41,2,114,34,0,0,0,218,5,118,97,108,117,101,32, - 32,114,5,0,0,0,114,136,0,0,0,160,1,0,0,115, - 2,0,0,0,14,2,114,17,0,0,0,41,12,114,8,0, - 0,0,114,7,0,0,0,114,1,0,0,0,114,9,0,0, - 0,114,35,0,0,0,114,54,0,0,0,114,138,0,0,0, - 218,8,112,114,111,112,101,114,116,121,114,135,0,0,0,218, - 6,115,101,116,116,101,114,114,143,0,0,0,114,136,0,0, - 0,114,23,0,0,0,114,5,0,0,0,114,125,0,0,0, - 64,1,0,0,115,34,0,0,0,8,0,4,1,4,36,2, - 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, - 3,10,1,2,7,10,1,4,3,14,1,114,17,0,0,0, - 114,125,0,0,0,169,2,114,126,0,0,0,114,128,0,0, - 0,99,2,0,0,0,0,0,0,0,2,0,0,0,8,0, - 0,0,67,0,0,0,115,152,0,0,0,116,0,124,1,100, - 1,131,2,114,37,116,1,100,2,117,0,114,11,116,2,130, - 1,116,1,106,3,125,4,124,3,100,2,117,0,114,24,124, - 4,124,0,124,1,100,3,141,2,83,0,124,3,114,28,103, - 0,110,1,100,2,125,5,124,4,124,0,124,1,124,5,100, - 4,141,3,83,0,124,3,100,2,117,0,114,67,116,0,124, - 1,100,5,131,2,114,65,9,0,124,1,160,4,124,0,161, - 1,125,3,110,14,35,0,4,0,116,5,121,75,1,0,1, - 0,1,0,100,2,125,3,89,0,110,3,37,0,100,6,125, - 3,116,6,124,0,124,1,124,2,124,3,100,7,141,4,83, - 0,119,0,41,8,122,53,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,118,97,114,105,111,117,115,32,108,111,97, - 100,101,114,32,109,101,116,104,111,100,115,46,90,12,103,101, - 116,95,102,105,108,101,110,97,109,101,78,41,1,114,122,0, - 0,0,41,2,114,122,0,0,0,114,129,0,0,0,114,128, - 0,0,0,70,114,148,0,0,0,41,7,114,10,0,0,0, - 114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0,0,114,125,0, - 0,0,41,6,114,20,0,0,0,114,122,0,0,0,114,126, - 0,0,0,114,128,0,0,0,114,149,0,0,0,90,6,115, - 101,97,114,99,104,32,32,32,32,32,32,114,5,0,0,0, - 114,104,0,0,0,165,1,0,0,115,42,0,0,0,10,2, - 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, - 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, - 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, - 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, - 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, - 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, - 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, - 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, - 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, - 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, - 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, - 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, - 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, - 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, - 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, - 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, - 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, - 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, - 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, - 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, - 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, - 169,1,114,126,0,0,0,70,84,41,13,114,113,0,0,0, - 114,2,0,0,0,114,8,0,0,0,114,112,0,0,0,114, - 121,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, - 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, - 8,95,95,112,97,116,104,95,95,114,125,0,0,0,114,130, - 0,0,0,114,135,0,0,0,114,129,0,0,0,41,8,114, - 110,0,0,0,114,122,0,0,0,114,126,0,0,0,114,109, - 0,0,0,114,20,0,0,0,90,8,108,111,99,97,116,105, - 111,110,114,135,0,0,0,114,129,0,0,0,32,32,32,32, - 32,32,32,32,114,5,0,0,0,218,17,95,115,112,101,99, - 95,102,114,111,109,95,109,111,100,117,108,101,191,1,0,0, - 115,108,0,0,0,2,2,8,1,2,128,12,1,4,1,2, - 128,8,2,4,1,6,2,8,1,2,1,8,1,2,128,12, - 1,4,2,2,128,2,1,8,1,2,128,12,1,8,1,2, - 128,8,1,8,1,2,1,8,1,2,128,12,1,8,1,2, - 128,4,2,2,1,8,1,2,128,12,1,8,1,2,128,2, - 1,12,1,2,128,12,1,8,1,2,128,14,2,18,1,6, - 1,6,1,4,1,2,249,2,252,2,250,2,250,2,251,2, - 246,115,93,0,0,0,129,3,5,0,133,7,14,7,157,3, - 33,0,161,7,42,7,172,3,48,0,176,9,59,7,193,5, - 3,65,9,0,193,9,9,65,20,7,193,24,3,65,28,0, - 193,28,9,65,39,7,193,41,5,65,47,0,193,47,9,65, - 58,7,194,19,1,65,58,7,194,20,1,65,39,7,194,21, - 1,65,20,7,194,22,1,59,7,194,23,1,42,7,194,24, - 1,14,7,114,155,0,0,0,70,169,1,218,8,111,118,101, - 114,114,105,100,101,99,2,0,0,0,0,0,0,0,1,0, - 0,0,8,0,0,0,67,0,0,0,115,204,1,0,0,124, - 2,115,10,116,0,124,1,100,1,100,0,131,3,100,0,117, - 0,114,26,9,0,124,0,106,1,124,1,95,2,110,10,35, - 0,4,0,116,3,121,229,1,0,1,0,1,0,89,0,110, - 1,37,0,124,2,115,36,116,0,124,1,100,2,100,0,131, - 3,100,0,117,0,114,87,124,0,106,4,125,3,124,3,100, - 0,117,0,114,72,124,0,106,5,100,0,117,1,114,72,116, - 6,100,0,117,0,114,54,116,7,130,1,116,6,106,8,125, - 4,124,4,160,9,124,4,161,1,125,3,124,0,106,5,124, - 3,95,10,124,3,124,0,95,4,100,0,124,1,95,11,9, - 0,124,3,124,1,95,12,110,10,35,0,4,0,116,3,121, - 228,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, - 97,116,0,124,1,100,3,100,0,131,3,100,0,117,0,114, - 113,9,0,124,0,106,13,124,1,95,14,110,10,35,0,4, - 0,116,3,121,227,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,124,1,95,15,110,10,35,0,4,0,116, - 3,121,226,1,0,1,0,1,0,89,0,110,1,37,0,124, - 2,115,138,116,0,124,1,100,4,100,0,131,3,100,0,117, - 0,114,159,124,0,106,5,100,0,117,1,114,159,9,0,124, - 0,106,5,124,1,95,16,110,10,35,0,4,0,116,3,121, - 225,1,0,1,0,1,0,89,0,110,1,37,0,124,0,106, - 17,114,221,124,2,115,172,116,0,124,1,100,5,100,0,131, - 3,100,0,117,0,114,188,9,0,124,0,106,18,124,1,95, - 11,110,10,35,0,4,0,116,3,121,224,1,0,1,0,1, - 0,89,0,110,1,37,0,124,2,115,198,116,0,124,1,100, - 6,100,0,131,3,100,0,117,0,114,221,124,0,106,19,100, - 0,117,1,114,221,9,0,124,0,106,19,124,1,95,20,124, - 1,83,0,35,0,4,0,116,3,121,223,1,0,1,0,1, - 0,89,0,124,1,83,0,37,0,124,1,83,0,119,0,119, - 0,119,0,119,0,119,0,119,0,119,0,41,7,78,114,8, - 0,0,0,114,112,0,0,0,218,11,95,95,112,97,99,107, - 97,103,101,95,95,114,154,0,0,0,114,121,0,0,0,114, - 152,0,0,0,41,21,114,12,0,0,0,114,20,0,0,0, - 114,8,0,0,0,114,2,0,0,0,114,122,0,0,0,114, - 129,0,0,0,114,139,0,0,0,114,140,0,0,0,218,16, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 218,7,95,95,110,101,119,95,95,90,5,95,112,97,116,104, - 114,121,0,0,0,114,112,0,0,0,114,143,0,0,0,114, - 158,0,0,0,114,113,0,0,0,114,154,0,0,0,114,136, - 0,0,0,114,126,0,0,0,114,135,0,0,0,114,152,0, - 0,0,41,5,114,109,0,0,0,114,110,0,0,0,114,157, - 0,0,0,114,122,0,0,0,114,159,0,0,0,32,32,32, - 32,32,114,5,0,0,0,218,18,95,105,110,105,116,95,109, - 111,100,117,108,101,95,97,116,116,114,115,236,1,0,0,115, - 142,0,0,0,20,4,2,1,10,1,2,128,12,1,4,1, - 2,128,20,2,6,1,8,1,10,2,8,1,4,1,6,1, - 10,2,8,1,6,1,6,11,2,1,8,1,2,128,12,1, - 4,1,2,128,20,2,2,1,10,1,2,128,12,1,4,1, - 2,128,2,2,8,1,2,128,12,1,4,1,2,128,20,2, - 10,1,2,1,10,1,2,128,12,1,4,1,2,128,6,2, - 20,1,2,1,10,1,2,128,12,1,4,1,2,128,20,2, - 10,1,2,1,8,1,4,3,2,128,12,254,2,1,4,1, - 2,128,4,0,2,254,2,249,2,249,2,249,2,251,2,250, - 2,228,115,121,0,0,0,139,4,16,0,144,7,25,7,193, - 9,3,65,13,0,193,13,7,65,22,7,193,34,4,65,39, - 0,193,39,7,65,48,7,193,50,3,65,54,0,193,54,7, - 65,63,7,194,16,4,66,21,0,194,21,7,66,30,7,194, - 45,4,66,50,0,194,50,7,66,59,7,195,12,4,67,18, - 0,195,18,7,67,28,7,195,31,1,67,28,7,195,32,1, - 66,59,7,195,33,1,66,30,7,195,34,1,65,63,7,195, - 35,1,65,48,7,195,36,1,65,22,7,195,37,1,25,7, - 114,161,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,115,82,0,0,0,100, - 1,125,1,116,0,124,0,106,1,100,2,131,2,114,15,124, - 0,106,1,160,2,124,0,161,1,125,1,110,10,116,0,124, - 0,106,1,100,3,131,2,114,25,116,3,100,4,131,1,130, - 1,124,1,100,1,117,0,114,34,116,4,124,0,106,5,131, - 1,125,1,116,6,124,0,124,1,131,2,1,0,124,1,83, - 0,41,5,122,43,67,114,101,97,116,101,32,97,32,109,111, - 100,117,108,101,32,98,97,115,101,100,32,111,110,32,116,104, - 101,32,112,114,111,118,105,100,101,100,32,115,112,101,99,46, - 78,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101, - 218,11,101,120,101,99,95,109,111,100,117,108,101,122,66,108, - 111,97,100,101,114,115,32,116,104,97,116,32,100,101,102,105, - 110,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,109,117,115,116,32,97,108,115,111,32,100,101,102,105,110, - 101,32,99,114,101,97,116,101,95,109,111,100,117,108,101,40, - 41,41,7,114,10,0,0,0,114,122,0,0,0,114,162,0, - 0,0,114,88,0,0,0,114,21,0,0,0,114,20,0,0, - 0,114,161,0,0,0,169,2,114,109,0,0,0,114,110,0, - 0,0,32,32,114,5,0,0,0,218,16,109,111,100,117,108, - 101,95,102,114,111,109,95,115,112,101,99,52,2,0,0,115, - 18,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, - 10,1,10,1,4,1,114,17,0,0,0,114,165,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,100,0,0,0,124,0,106,0,100,1, - 117,0,114,7,100,2,110,2,124,0,106,0,125,1,124,0, - 106,1,100,1,117,0,114,32,124,0,106,2,100,1,117,0, - 114,25,100,3,160,3,124,1,161,1,83,0,100,4,160,3, - 124,1,124,0,106,2,161,2,83,0,124,0,106,4,114,42, - 100,5,160,3,124,1,124,0,106,1,161,2,83,0,100,6, - 160,3,124,0,106,0,124,0,106,1,161,2,83,0,41,7, - 122,38,82,101,116,117,114,110,32,116,104,101,32,114,101,112, - 114,32,116,111,32,117,115,101,32,102,111,114,32,116,104,101, - 32,109,111,100,117,108,101,46,78,114,115,0,0,0,114,116, - 0,0,0,114,117,0,0,0,114,118,0,0,0,250,18,60, - 109,111,100,117,108,101,32,123,33,114,125,32,40,123,125,41, - 62,41,5,114,20,0,0,0,114,126,0,0,0,114,122,0, - 0,0,114,51,0,0,0,114,136,0,0,0,41,2,114,109, - 0,0,0,114,20,0,0,0,32,32,114,5,0,0,0,114, - 119,0,0,0,69,2,0,0,115,16,0,0,0,20,3,10, - 1,10,1,10,1,14,2,6,2,14,1,16,2,114,17,0, - 0,0,114,119,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,10,0,0,0,67,0,0,0,115,32,1,0, - 0,124,0,106,0,125,2,116,1,124,2,131,1,53,0,1, - 0,116,2,106,3,160,4,124,2,161,1,124,1,117,1,114, - 27,100,1,160,5,124,2,161,1,125,3,116,6,124,3,124, - 2,100,2,141,2,130,1,9,0,124,0,106,7,100,3,117, - 0,114,53,124,0,106,8,100,3,117,0,114,45,116,6,100, - 4,124,0,106,0,100,2,141,2,130,1,116,9,124,0,124, - 1,100,5,100,6,141,3,1,0,110,40,116,9,124,0,124, - 1,100,5,100,6,141,3,1,0,116,10,124,0,106,7,100, - 7,131,2,115,87,116,11,124,0,106,7,131,1,155,0,100, - 8,157,2,125,3,116,12,160,13,124,3,116,14,161,2,1, - 0,124,0,106,7,160,15,124,2,161,1,1,0,110,6,124, - 0,106,7,160,16,124,1,161,1,1,0,116,2,106,3,160, - 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, - 0,106,0,60,0,110,16,35,0,116,2,106,3,160,17,124, - 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, - 0,60,0,119,0,37,0,9,0,100,3,4,0,4,0,131, - 3,1,0,124,1,83,0,35,0,49,0,115,136,119,4,37, - 0,1,0,1,0,1,0,89,0,1,0,1,0,124,1,83, - 0,41,9,122,70,69,120,101,99,117,116,101,32,116,104,101, - 32,115,112,101,99,39,115,32,115,112,101,99,105,102,105,101, - 100,32,109,111,100,117,108,101,32,105,110,32,97,110,32,101, - 120,105,115,116,105,110,103,32,109,111,100,117,108,101,39,115, - 32,110,97,109,101,115,112,97,99,101,46,122,30,109,111,100, - 117,108,101,32,123,33,114,125,32,110,111,116,32,105,110,32, - 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, - 78,250,14,109,105,115,115,105,110,103,32,108,111,97,100,101, - 114,84,114,156,0,0,0,114,163,0,0,0,250,55,46,101, - 120,101,99,95,109,111,100,117,108,101,40,41,32,110,111,116, - 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, - 98,97,99,107,32,116,111,32,108,111,97,100,95,109,111,100, - 117,108,101,40,41,41,18,114,20,0,0,0,114,58,0,0, - 0,114,18,0,0,0,114,105,0,0,0,114,39,0,0,0, - 114,51,0,0,0,114,88,0,0,0,114,122,0,0,0,114, - 129,0,0,0,114,161,0,0,0,114,10,0,0,0,114,6, - 0,0,0,114,101,0,0,0,114,102,0,0,0,218,13,73, - 109,112,111,114,116,87,97,114,110,105,110,103,218,11,108,111, - 97,100,95,109,111,100,117,108,101,114,163,0,0,0,218,3, - 112,111,112,41,4,114,109,0,0,0,114,110,0,0,0,114, - 20,0,0,0,114,108,0,0,0,32,32,32,32,114,5,0, - 0,0,114,106,0,0,0,86,2,0,0,115,50,0,0,0, - 6,2,10,1,16,1,10,1,12,1,2,1,10,1,10,1, - 14,1,16,2,14,2,12,1,16,1,12,2,14,1,12,2, - 14,4,14,1,2,128,14,255,18,1,10,233,4,24,22,128, - 4,0,115,41,0,0,0,135,20,66,3,3,156,65,1,65, - 43,2,193,29,14,66,3,3,193,43,15,65,58,9,193,58, - 1,66,3,3,194,3,4,66,7,11,194,8,3,66,7,11, - 114,106,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,22,1,0,0,9, - 0,124,0,106,0,160,1,124,0,106,2,161,1,1,0,110, - 25,35,0,1,0,1,0,1,0,124,0,106,2,116,3,106, - 4,118,0,114,32,116,3,106,4,160,5,124,0,106,2,161, - 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, - 0,37,0,116,3,106,4,160,5,124,0,106,2,161,1,125, - 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, - 1,100,1,100,0,131,3,100,0,117,0,114,71,9,0,124, - 0,106,0,124,1,95,7,110,10,35,0,4,0,116,8,121, - 138,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, - 1,100,2,100,0,131,3,100,0,117,0,114,109,9,0,124, - 1,106,9,124,1,95,10,116,11,124,1,100,3,131,2,115, - 98,124,0,106,2,160,12,100,4,161,1,100,5,25,0,124, - 1,95,10,110,10,35,0,4,0,116,8,121,137,1,0,1, - 0,1,0,89,0,110,1,37,0,116,6,124,1,100,6,100, - 0,131,3,100,0,117,0,114,134,9,0,124,0,124,1,95, - 13,124,1,83,0,35,0,4,0,116,8,121,136,1,0,1, - 0,1,0,89,0,124,1,83,0,37,0,124,1,83,0,119, - 0,119,0,119,0,41,7,78,114,112,0,0,0,114,158,0, - 0,0,114,154,0,0,0,114,141,0,0,0,114,26,0,0, - 0,114,113,0,0,0,41,14,114,122,0,0,0,114,170,0, - 0,0,114,20,0,0,0,114,18,0,0,0,114,105,0,0, - 0,114,171,0,0,0,114,12,0,0,0,114,112,0,0,0, - 114,2,0,0,0,114,8,0,0,0,114,158,0,0,0,114, - 10,0,0,0,114,142,0,0,0,114,113,0,0,0,114,164, - 0,0,0,32,32,114,5,0,0,0,218,25,95,108,111,97, - 100,95,98,97,99,107,119,97,114,100,95,99,111,109,112,97, - 116,105,98,108,101,116,2,0,0,115,80,0,0,0,2,3, - 16,1,2,128,6,1,12,1,14,1,12,1,2,1,2,128, - 14,3,12,1,16,1,2,1,10,1,2,128,12,1,4,1, - 2,128,16,1,2,1,8,4,10,1,18,1,4,128,12,1, - 4,1,2,128,16,1,2,1,6,1,4,3,2,128,12,254, - 2,1,4,1,2,128,4,0,2,254,2,251,2,246,115,59, - 0,0,0,129,7,9,0,137,24,33,7,184,4,61,0,189, - 7,65,6,7,193,16,18,65,35,0,193,35,7,65,44,7, - 193,54,3,65,59,0,193,59,7,66,5,7,194,8,1,66, - 5,7,194,9,1,65,44,7,194,10,1,65,6,7,114,172, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 11,0,0,0,67,0,0,0,115,248,0,0,0,124,0,106, - 0,100,0,117,1,114,29,116,1,124,0,106,0,100,1,131, - 2,115,29,116,2,124,0,106,0,131,1,155,0,100,2,157, - 2,125,1,116,3,160,4,124,1,116,5,161,2,1,0,116, - 6,124,0,131,1,83,0,116,7,124,0,131,1,125,2,100, - 3,124,0,95,8,9,0,124,2,116,9,106,10,124,0,106, - 11,60,0,9,0,124,0,106,0,100,0,117,0,114,62,124, - 0,106,12,100,0,117,0,114,61,116,13,100,4,124,0,106, - 11,100,5,141,2,130,1,110,6,124,0,106,0,160,14,124, - 2,161,1,1,0,110,22,35,0,1,0,1,0,1,0,9, - 0,116,9,106,10,124,0,106,11,61,0,130,0,35,0,4, - 0,116,15,121,123,1,0,1,0,1,0,89,0,130,0,37, - 0,37,0,116,9,106,10,160,16,124,0,106,11,161,1,125, - 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, - 6,124,0,106,11,124,0,106,0,131,3,1,0,100,7,124, - 0,95,8,124,2,83,0,35,0,100,7,124,0,95,8,119, - 0,37,0,119,0,41,8,78,114,163,0,0,0,114,168,0, - 0,0,84,114,167,0,0,0,114,19,0,0,0,122,18,105, - 109,112,111,114,116,32,123,33,114,125,32,35,32,123,33,114, - 125,70,41,18,114,122,0,0,0,114,10,0,0,0,114,6, - 0,0,0,114,101,0,0,0,114,102,0,0,0,114,169,0, - 0,0,114,172,0,0,0,114,165,0,0,0,90,13,95,105, - 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, - 114,105,0,0,0,114,20,0,0,0,114,129,0,0,0,114, - 88,0,0,0,114,163,0,0,0,114,71,0,0,0,114,171, - 0,0,0,114,84,0,0,0,41,3,114,109,0,0,0,114, - 108,0,0,0,114,110,0,0,0,32,32,32,114,5,0,0, - 0,218,14,95,108,111,97,100,95,117,110,108,111,99,107,101, - 100,152,2,0,0,115,66,0,0,0,10,2,12,2,16,1, - 12,2,8,1,8,2,6,5,2,1,12,1,2,1,10,1, - 10,1,14,1,2,255,12,4,4,128,6,1,2,1,10,1, - 2,3,2,128,12,254,2,1,2,1,4,128,14,5,12,1, - 16,1,6,2,4,2,2,128,10,254,2,245,115,64,0,0, - 0,165,6,65,53,0,172,24,65,5,0,193,4,1,65,53, - 0,193,5,4,65,26,7,193,10,5,65,16,6,193,15,1, - 65,26,7,193,16,7,65,25,13,193,23,3,65,26,7,193, - 26,22,65,53,0,193,53,5,65,58,7,193,59,1,65,25, - 13,114,173,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,67,0,0,0,115,58,0,0,0, - 116,0,124,0,106,1,131,1,53,0,1,0,116,2,124,0, - 131,1,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 35,0,49,0,115,21,119,4,37,0,1,0,1,0,1,0, - 89,0,1,0,1,0,100,1,83,0,41,2,122,191,82,101, - 116,117,114,110,32,97,32,110,101,119,32,109,111,100,117,108, - 101,32,111,98,106,101,99,116,44,32,108,111,97,100,101,100, - 32,98,121,32,116,104,101,32,115,112,101,99,39,115,32,108, - 111,97,100,101,114,46,10,10,32,32,32,32,84,104,101,32, - 109,111,100,117,108,101,32,105,115,32,110,111,116,32,97,100, - 100,101,100,32,116,111,32,105,116,115,32,112,97,114,101,110, - 116,46,10,10,32,32,32,32,73,102,32,97,32,109,111,100, - 117,108,101,32,105,115,32,97,108,114,101,97,100,121,32,105, - 110,32,115,121,115,46,109,111,100,117,108,101,115,44,32,116, - 104,97,116,32,101,120,105,115,116,105,110,103,32,109,111,100, - 117,108,101,32,103,101,116,115,10,32,32,32,32,99,108,111, - 98,98,101,114,101,100,46,10,10,32,32,32,32,78,41,3, - 114,58,0,0,0,114,20,0,0,0,114,173,0,0,0,169, - 1,114,109,0,0,0,32,114,5,0,0,0,114,107,0,0, - 0,197,2,0,0,115,10,0,0,0,12,9,6,1,14,255, - 22,128,4,0,115,12,0,0,0,133,4,16,3,144,4,20, - 11,149,3,20,11,114,107,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, - 140,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, - 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, - 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, - 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, - 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, - 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, - 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, - 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, - 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, - 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, - 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, - 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, - 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, - 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, - 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, - 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, - 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,99, - 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 67,0,0,0,115,34,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,100,2,124,0,106,3,155,2,100,3,116, - 4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,40, - 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,122,8,60,109,111,100,117,108,101,32,122, - 2,32,40,122,2,41,62,78,41,6,114,101,0,0,0,114, - 102,0,0,0,114,103,0,0,0,114,8,0,0,0,114,175, - 0,0,0,114,151,0,0,0,169,1,114,110,0,0,0,32, - 114,5,0,0,0,114,114,0,0,0,223,2,0,0,115,8, - 0,0,0,6,7,2,1,4,255,22,2,114,17,0,0,0, - 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, - 0,0,0,115,42,0,0,0,124,2,100,0,117,1,114,6, - 100,0,83,0,116,0,160,1,124,1,161,1,114,19,116,2, - 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, - 83,0,169,2,78,114,150,0,0,0,41,4,114,65,0,0, - 0,90,10,105,115,95,98,117,105,108,116,105,110,114,104,0, - 0,0,114,151,0,0,0,169,4,218,3,99,108,115,114,90, - 0,0,0,218,4,112,97,116,104,218,6,116,97,114,103,101, - 116,32,32,32,32,114,5,0,0,0,218,9,102,105,110,100, - 95,115,112,101,99,234,2,0,0,115,10,0,0,0,8,2, - 4,1,10,1,16,1,4,2,114,17,0,0,0,122,25,66, - 117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115,42,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, - 160,3,124,1,124,2,161,2,125,3,124,3,100,2,117,1, - 114,19,124,3,106,4,83,0,100,2,83,0,41,3,122,175, - 70,105,110,100,32,116,104,101,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,73,102,32,39,112,97,116,104,39,32,105,115,32, - 101,118,101,114,32,115,112,101,99,105,102,105,101,100,32,116, - 104,101,110,32,116,104,101,32,115,101,97,114,99,104,32,105, - 115,32,99,111,110,115,105,100,101,114,101,100,32,97,32,102, - 97,105,108,117,114,101,46,10,10,32,32,32,32,32,32,32, - 32,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,122, - 106,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,101, - 0,0,0,114,102,0,0,0,114,103,0,0,0,114,183,0, - 0,0,114,122,0,0,0,41,4,114,180,0,0,0,114,90, - 0,0,0,114,181,0,0,0,114,109,0,0,0,32,32,32, - 32,114,5,0,0,0,218,11,102,105,110,100,95,109,111,100, - 117,108,101,243,2,0,0,115,10,0,0,0,6,9,2,2, - 4,254,12,3,18,1,114,17,0,0,0,122,27,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,46,0, - 0,0,124,0,106,0,116,1,106,2,118,1,114,17,116,3, - 100,1,160,4,124,0,106,0,161,1,124,0,106,0,100,2, - 141,2,130,1,116,5,116,6,106,7,124,0,131,2,83,0, - 41,4,122,24,67,114,101,97,116,101,32,97,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,114,86,0,0, - 0,114,19,0,0,0,78,41,8,114,20,0,0,0,114,18, - 0,0,0,114,87,0,0,0,114,88,0,0,0,114,51,0, - 0,0,114,75,0,0,0,114,65,0,0,0,90,14,99,114, - 101,97,116,101,95,98,117,105,108,116,105,110,114,174,0,0, - 0,32,114,5,0,0,0,114,162,0,0,0,2,3,0,0, - 115,10,0,0,0,12,3,12,1,4,1,6,255,12,2,114, - 17,0,0,0,122,29,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,99,114,101,97,116,101,95,109,111,100, - 117,108,101,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,116, - 1,106,2,124,0,131,2,1,0,100,1,83,0,41,2,122, - 22,69,120,101,99,32,97,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,78,41,3,114,75,0,0,0,114, - 65,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, - 105,110,114,177,0,0,0,32,114,5,0,0,0,114,163,0, - 0,0,10,3,0,0,115,2,0,0,0,16,3,114,17,0, - 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, - 116,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,1,0,0,0, - 67,0,0,0,243,4,0,0,0,100,1,83,0,41,2,122, - 57,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 32,100,111,32,110,111,116,32,104,97,118,101,32,99,111,100, - 101,32,111,98,106,101,99,116,115,46,78,114,23,0,0,0, - 169,2,114,180,0,0,0,114,90,0,0,0,32,32,114,5, - 0,0,0,218,8,103,101,116,95,99,111,100,101,15,3,0, - 0,243,2,0,0,0,4,4,114,17,0,0,0,122,24,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,67,0,0,0,114,185,0,0, - 0,41,2,122,56,82,101,116,117,114,110,32,78,111,110,101, + 119,114,97,112,112,101,114,78,169,1,114,16,0,0,0,41, + 3,114,91,0,0,0,114,92,0,0,0,114,91,0,0,0, + 96,32,64,114,5,0,0,0,218,17,95,114,101,113,117,105, + 114,101,115,95,98,117,105,108,116,105,110,252,0,0,0,243, + 8,0,0,0,2,128,12,2,10,5,4,1,114,17,0,0, + 0,114,95,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,114,85,0,0,0, + 41,4,122,47,68,101,99,111,114,97,116,111,114,32,116,111, + 32,118,101,114,105,102,121,32,116,104,101,32,110,97,109,101, + 100,32,109,111,100,117,108,101,32,105,115,32,102,114,111,122, + 101,110,46,99,2,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,19,0,0,0,115,38,0,0,0,116,0,160, + 1,124,1,161,1,115,14,116,2,100,1,160,3,124,1,161, + 1,124,1,100,2,141,2,130,1,137,2,124,0,124,1,131, + 2,83,0,169,3,78,122,27,123,33,114,125,32,105,115,32, + 110,111,116,32,97,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,114,19,0,0,0,41,4,114,65,0,0,0,218, + 9,105,115,95,102,114,111,122,101,110,114,88,0,0,0,114, + 51,0,0,0,114,89,0,0,0,32,32,128,114,5,0,0, + 0,218,24,95,114,101,113,117,105,114,101,115,95,102,114,111, + 122,101,110,95,119,114,97,112,112,101,114,9,1,0,0,114, + 93,0,0,0,114,17,0,0,0,122,50,95,114,101,113,117, + 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, + 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, + 114,111,122,101,110,95,119,114,97,112,112,101,114,78,114,94, + 0,0,0,41,3,114,91,0,0,0,114,99,0,0,0,114, + 91,0,0,0,96,32,64,114,5,0,0,0,218,16,95,114, + 101,113,117,105,114,101,115,95,102,114,111,122,101,110,7,1, + 0,0,114,96,0,0,0,114,17,0,0,0,114,100,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,67,0,0,0,115,74,0,0,0,100,1,125,2,116, + 0,160,1,124,2,116,2,161,2,1,0,116,3,124,1,124, + 0,131,2,125,3,124,1,116,4,106,5,118,0,114,33,116, + 4,106,5,124,1,25,0,125,4,116,6,124,3,124,4,131, + 2,1,0,116,4,106,5,124,1,25,0,83,0,116,7,124, + 3,131,1,83,0,41,3,122,130,76,111,97,100,32,116,104, + 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, + 108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,117, + 108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,105, + 116,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,46,32,32,85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101, + 32,108,111,97,100,95,109,111,100,117,108,101,40,41,32,109, + 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, + 116,101,97,100,78,41,8,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,16,115,112, + 101,99,95,102,114,111,109,95,108,111,97,100,101,114,114,18, + 0,0,0,218,7,109,111,100,117,108,101,115,218,5,95,101, + 120,101,99,218,5,95,108,111,97,100,41,5,114,34,0,0, + 0,114,90,0,0,0,218,3,109,115,103,218,4,115,112,101, + 99,218,6,109,111,100,117,108,101,32,32,32,32,32,114,5, + 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, + 101,95,115,104,105,109,19,1,0,0,115,16,0,0,0,4, + 6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,114, + 17,0,0,0,114,111,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,194, + 0,0,0,116,0,124,0,100,1,100,2,131,3,125,1,116, + 0,124,0,100,3,100,2,131,3,4,0,125,2,114,18,116, + 1,124,2,131,1,83,0,116,2,124,1,100,4,131,2,114, + 39,9,0,124,1,160,3,124,0,161,1,83,0,35,0,4, + 0,116,4,121,96,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,106,5,125,3,110,12,35,0,4,0,116, + 6,121,95,1,0,1,0,1,0,100,5,125,3,89,0,110, + 1,37,0,9,0,124,0,106,7,125,4,110,27,35,0,4, + 0,116,6,121,94,1,0,1,0,1,0,124,1,100,2,117, + 0,114,79,100,6,160,8,124,3,161,1,6,0,89,0,83, + 0,100,7,160,8,124,3,124,1,161,2,6,0,89,0,83, + 0,37,0,100,8,160,8,124,3,124,4,161,2,83,0,119, + 0,119,0,119,0,41,9,122,44,84,104,101,32,105,109,112, + 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,77, + 111,100,117,108,101,84,121,112,101,46,95,95,114,101,112,114, + 95,95,40,41,46,218,10,95,95,108,111,97,100,101,114,95, + 95,78,218,8,95,95,115,112,101,99,95,95,218,11,109,111, + 100,117,108,101,95,114,101,112,114,250,1,63,250,13,60,109, + 111,100,117,108,101,32,123,33,114,125,62,250,20,60,109,111, + 100,117,108,101,32,123,33,114,125,32,40,123,33,114,125,41, + 62,250,23,60,109,111,100,117,108,101,32,123,33,114,125,32, + 102,114,111,109,32,123,33,114,125,62,41,9,114,12,0,0, + 0,218,22,95,109,111,100,117,108,101,95,114,101,112,114,95, + 102,114,111,109,95,115,112,101,99,114,10,0,0,0,114,114, + 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,8, + 0,0,0,114,2,0,0,0,218,8,95,95,102,105,108,101, + 95,95,114,51,0,0,0,41,5,114,110,0,0,0,218,6, + 108,111,97,100,101,114,114,109,0,0,0,114,20,0,0,0, + 218,8,102,105,108,101,110,97,109,101,32,32,32,32,32,114, + 5,0,0,0,218,12,95,109,111,100,117,108,101,95,114,101, + 112,114,38,1,0,0,115,56,0,0,0,12,2,16,1,8, + 1,10,1,2,1,10,1,2,128,12,1,4,1,2,128,2, + 2,8,1,2,128,12,1,8,1,2,128,2,1,8,1,2, + 128,12,1,8,1,14,1,16,2,2,128,12,2,2,250,2, + 252,2,251,115,47,0,0,0,152,4,29,0,157,7,38,7, + 168,3,44,0,172,9,55,7,185,3,61,0,189,16,65,23, + 7,193,15,6,65,23,7,193,30,1,65,23,7,193,31,1, + 55,7,193,32,1,38,7,114,124,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, + 0,115,114,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,100,2,100,2,100,3,156,3,100,4,100,5, + 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, + 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, + 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, + 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, + 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, + 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, + 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, + 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, + 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, + 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, + 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, + 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, + 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, + 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, + 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, + 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, + 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, + 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, + 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, + 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, + 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, + 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, + 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, + 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, + 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, + 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, + 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, + 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, + 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, + 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, + 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, + 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, + 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, + 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, + 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, + 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, + 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, + 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, + 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, + 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, + 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, + 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, + 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, + 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, + 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, + 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, + 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, + 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, + 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, + 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, + 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, + 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, + 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, + 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, + 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, + 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, + 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, + 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, + 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, + 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, + 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, + 32,32,32,32,96,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,96, + 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, + 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, + 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, + 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, + 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, + 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, + 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, + 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, + 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, + 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, + 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, + 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, + 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, + 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, + 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, + 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, + 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, + 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, + 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, + 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, + 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, + 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, + 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, + 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, + 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, + 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, + 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, + 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, + 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, + 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, + 99,3,0,0,0,0,0,0,0,3,0,0,0,2,0,0, + 0,67,0,0,0,115,54,0,0,0,124,1,124,0,95,0, + 124,2,124,0,95,1,124,3,124,0,95,2,124,4,124,0, + 95,3,124,5,114,16,103,0,110,1,100,0,124,0,95,4, + 100,1,124,0,95,5,100,0,124,0,95,6,100,0,83,0, + 41,2,78,70,41,7,114,20,0,0,0,114,122,0,0,0, + 114,126,0,0,0,114,127,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,218,13,95,115,101,116,95,102,105,108, + 101,97,116,116,114,218,7,95,99,97,99,104,101,100,41,6, + 114,34,0,0,0,114,20,0,0,0,114,122,0,0,0,114, + 126,0,0,0,114,127,0,0,0,114,128,0,0,0,32,32, + 32,32,32,32,114,5,0,0,0,114,35,0,0,0,101,1, + 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, + 1,6,3,10,1,114,17,0,0,0,122,19,77,111,100,117, + 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, + 1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, + 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, + 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, + 1,124,0,106,3,100,0,117,1,114,26,124,1,160,4,100, + 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, + 5,100,0,117,1,114,40,124,1,160,4,100,4,160,0,124, + 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, + 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, + 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, + 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, + 105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2, + 44,32,41,9,114,51,0,0,0,114,20,0,0,0,114,122, + 0,0,0,114,126,0,0,0,218,6,97,112,112,101,110,100, + 114,129,0,0,0,218,9,95,95,99,108,97,115,115,95,95, + 114,8,0,0,0,218,4,106,111,105,110,41,2,114,34,0, + 0,0,114,63,0,0,0,32,32,114,5,0,0,0,114,54, + 0,0,0,113,1,0,0,115,20,0,0,0,10,1,10,1, + 4,255,10,2,18,1,10,1,6,1,8,1,4,255,22,2, + 114,17,0,0,0,122,19,77,111,100,117,108,101,83,112,101, + 99,46,95,95,114,101,112,114,95,95,99,2,0,0,0,0, + 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, + 104,0,0,0,124,0,106,0,125,2,9,0,124,0,106,1, + 124,1,106,1,107,2,111,38,124,0,106,2,124,1,106,2, + 107,2,111,38,124,0,106,3,124,1,106,3,107,2,111,38, + 124,2,124,1,106,0,107,2,111,38,124,0,106,4,124,1, + 106,4,107,2,111,38,124,0,106,5,124,1,106,5,107,2, + 83,0,35,0,4,0,116,6,121,51,1,0,1,0,1,0, + 116,7,6,0,89,0,83,0,37,0,119,0,114,0,0,0, + 0,41,8,114,129,0,0,0,114,20,0,0,0,114,122,0, + 0,0,114,126,0,0,0,218,6,99,97,99,104,101,100,218, + 12,104,97,115,95,108,111,99,97,116,105,111,110,114,2,0, + 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, + 101,100,41,3,114,34,0,0,0,90,5,111,116,104,101,114, + 90,4,115,109,115,108,32,32,32,114,5,0,0,0,218,6, + 95,95,101,113,95,95,123,1,0,0,115,36,0,0,0,6, + 1,2,1,12,1,10,1,2,255,10,2,2,254,8,3,2, + 253,10,4,2,252,10,5,2,251,2,128,12,6,8,1,2, + 128,2,255,115,12,0,0,0,132,34,39,0,167,9,50,7, + 179,1,50,7,122,17,77,111,100,117,108,101,83,112,101,99, + 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,67,0,0,0,115,58,0,0, + 0,124,0,106,0,100,0,117,0,114,26,124,0,106,1,100, + 0,117,1,114,26,124,0,106,2,114,26,116,3,100,0,117, + 0,114,19,116,4,130,1,116,3,160,5,124,0,106,1,161, + 1,124,0,95,0,124,0,106,0,83,0,114,0,0,0,0, + 41,6,114,131,0,0,0,114,126,0,0,0,114,130,0,0, + 0,218,19,95,98,111,111,116,115,116,114,97,112,95,101,120, + 116,101,114,110,97,108,218,19,78,111,116,73,109,112,108,101, + 109,101,110,116,101,100,69,114,114,111,114,90,11,95,103,101, + 116,95,99,97,99,104,101,100,114,53,0,0,0,32,114,5, + 0,0,0,114,135,0,0,0,135,1,0,0,115,12,0,0, + 0,10,2,16,1,8,1,4,1,14,1,6,1,114,17,0, + 0,0,122,17,77,111,100,117,108,101,83,112,101,99,46,99, + 97,99,104,101,100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1, + 114,131,0,0,0,41,2,114,34,0,0,0,114,135,0,0, + 0,32,32,114,5,0,0,0,114,135,0,0,0,144,1,0, + 0,115,2,0,0,0,10,2,114,17,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,115,32,0,0,0,124,0,106,0,100,1,117,0,114, + 13,124,0,106,1,160,2,100,2,161,1,100,3,25,0,83, + 0,124,0,106,1,83,0,41,4,122,32,84,104,101,32,110, + 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, + 101,39,115,32,112,97,114,101,110,116,46,78,218,1,46,114, + 26,0,0,0,41,3,114,129,0,0,0,114,20,0,0,0, + 218,10,114,112,97,114,116,105,116,105,111,110,114,53,0,0, + 0,32,114,5,0,0,0,218,6,112,97,114,101,110,116,148, + 1,0,0,115,6,0,0,0,10,3,16,1,6,2,114,17, + 0,0,0,122,17,77,111,100,117,108,101,83,112,101,99,46, + 112,97,114,101,110,116,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,67,0,0,0,115,6,0,0,0, + 124,0,106,0,83,0,114,0,0,0,0,41,1,114,130,0, + 0,0,114,53,0,0,0,32,114,5,0,0,0,114,136,0, + 0,0,156,1,0,0,115,2,0,0,0,6,2,114,17,0, + 0,0,122,23,77,111,100,117,108,101,83,112,101,99,46,104, + 97,115,95,108,111,99,97,116,105,111,110,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,67,0,0,0, + 115,14,0,0,0,116,0,124,1,131,1,124,0,95,1,100, + 0,83,0,114,0,0,0,0,41,2,218,4,98,111,111,108, + 114,130,0,0,0,41,2,114,34,0,0,0,218,5,118,97, + 108,117,101,32,32,114,5,0,0,0,114,136,0,0,0,160, + 1,0,0,115,2,0,0,0,14,2,114,17,0,0,0,41, + 12,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, + 114,9,0,0,0,114,35,0,0,0,114,54,0,0,0,114, + 138,0,0,0,218,8,112,114,111,112,101,114,116,121,114,135, + 0,0,0,218,6,115,101,116,116,101,114,114,143,0,0,0, + 114,136,0,0,0,114,23,0,0,0,114,5,0,0,0,114, + 125,0,0,0,64,1,0,0,115,34,0,0,0,8,0,4, + 1,4,36,2,1,12,255,8,12,8,10,2,12,10,1,4, + 8,10,1,2,3,10,1,2,7,10,1,4,3,14,1,114, + 17,0,0,0,114,125,0,0,0,169,2,114,126,0,0,0, + 114,128,0,0,0,99,2,0,0,0,0,0,0,0,2,0, + 0,0,8,0,0,0,67,0,0,0,115,152,0,0,0,116, + 0,124,1,100,1,131,2,114,37,116,1,100,2,117,0,114, + 11,116,2,130,1,116,1,106,3,125,4,124,3,100,2,117, + 0,114,24,124,4,124,0,124,1,100,3,141,2,83,0,124, + 3,114,28,103,0,110,1,100,2,125,5,124,4,124,0,124, + 1,124,5,100,4,141,3,83,0,124,3,100,2,117,0,114, + 67,116,0,124,1,100,5,131,2,114,65,9,0,124,1,160, + 4,124,0,161,1,125,3,110,14,35,0,4,0,116,5,121, + 75,1,0,1,0,1,0,100,2,125,3,89,0,110,3,37, + 0,100,6,125,3,116,6,124,0,124,1,124,2,124,3,100, + 7,141,4,83,0,119,0,41,8,122,53,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,118,97,114,105,111,117,115, + 32,108,111,97,100,101,114,32,109,101,116,104,111,100,115,46, + 90,12,103,101,116,95,102,105,108,101,110,97,109,101,78,41, + 1,114,122,0,0,0,41,2,114,122,0,0,0,114,129,0, + 0,0,114,128,0,0,0,70,114,148,0,0,0,41,7,114, + 10,0,0,0,114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0, + 0,114,125,0,0,0,41,6,114,20,0,0,0,114,122,0, + 0,0,114,126,0,0,0,114,128,0,0,0,114,149,0,0, + 0,90,6,115,101,97,114,99,104,32,32,32,32,32,32,114, + 5,0,0,0,114,104,0,0,0,165,1,0,0,115,42,0, + 0,0,10,2,8,1,4,1,6,1,8,2,12,1,12,1, + 6,1,2,1,6,255,8,3,10,1,2,1,12,1,2,128, + 12,1,8,1,2,128,4,3,16,2,2,250,115,15,0,0, + 0,175,5,53,0,181,9,65,0,7,193,11,1,65,0,7, + 114,104,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,50,1,0,0,9, + 0,124,0,106,0,125,3,110,10,35,0,4,0,116,1,121, + 152,1,0,1,0,1,0,89,0,110,7,37,0,124,3,100, + 0,117,1,114,21,124,3,83,0,124,0,106,2,125,4,124, + 1,100,0,117,0,114,43,9,0,124,0,106,3,125,1,110, + 10,35,0,4,0,116,1,121,151,1,0,1,0,1,0,89, + 0,110,1,37,0,9,0,124,0,106,4,125,5,110,12,35, + 0,4,0,116,1,121,150,1,0,1,0,1,0,100,0,125, + 5,89,0,110,1,37,0,124,2,100,0,117,0,114,87,124, + 5,100,0,117,0,114,85,9,0,124,1,106,5,125,2,110, + 14,35,0,4,0,116,1,121,149,1,0,1,0,1,0,100, + 0,125,2,89,0,110,3,37,0,124,5,125,2,9,0,124, + 0,106,6,125,6,110,12,35,0,4,0,116,1,121,148,1, + 0,1,0,1,0,100,0,125,6,89,0,110,1,37,0,9, + 0,116,7,124,0,106,8,131,1,125,7,110,12,35,0,4, + 0,116,1,121,147,1,0,1,0,1,0,100,0,125,7,89, + 0,110,1,37,0,116,9,124,4,124,1,124,2,100,1,141, + 3,125,3,124,5,100,0,117,0,114,136,100,2,110,1,100, + 3,124,3,95,10,124,6,124,3,95,11,124,7,124,3,95, + 12,124,3,83,0,119,0,119,0,119,0,119,0,119,0,119, + 0,41,4,78,169,1,114,126,0,0,0,70,84,41,13,114, + 113,0,0,0,114,2,0,0,0,114,8,0,0,0,114,112, + 0,0,0,114,121,0,0,0,218,7,95,79,82,73,71,73, + 78,218,10,95,95,99,97,99,104,101,100,95,95,218,4,108, + 105,115,116,218,8,95,95,112,97,116,104,95,95,114,125,0, + 0,0,114,130,0,0,0,114,135,0,0,0,114,129,0,0, + 0,41,8,114,110,0,0,0,114,122,0,0,0,114,126,0, + 0,0,114,109,0,0,0,114,20,0,0,0,90,8,108,111, + 99,97,116,105,111,110,114,135,0,0,0,114,129,0,0,0, + 32,32,32,32,32,32,32,32,114,5,0,0,0,218,17,95, + 115,112,101,99,95,102,114,111,109,95,109,111,100,117,108,101, + 191,1,0,0,115,108,0,0,0,2,2,8,1,2,128,12, + 1,4,1,2,128,8,2,4,1,6,2,8,1,2,1,8, + 1,2,128,12,1,4,2,2,128,2,1,8,1,2,128,12, + 1,8,1,2,128,8,1,8,1,2,1,8,1,2,128,12, + 1,8,1,2,128,4,2,2,1,8,1,2,128,12,1,8, + 1,2,128,2,1,12,1,2,128,12,1,8,1,2,128,14, + 2,18,1,6,1,6,1,4,1,2,249,2,252,2,250,2, + 250,2,251,2,246,115,93,0,0,0,129,3,5,0,133,7, + 14,7,157,3,33,0,161,7,42,7,172,3,48,0,176,9, + 59,7,193,5,3,65,9,0,193,9,9,65,20,7,193,24, + 3,65,28,0,193,28,9,65,39,7,193,41,5,65,47,0, + 193,47,9,65,58,7,194,19,1,65,58,7,194,20,1,65, + 39,7,194,21,1,65,20,7,194,22,1,59,7,194,23,1, + 42,7,194,24,1,14,7,114,155,0,0,0,70,169,1,218, + 8,111,118,101,114,114,105,100,101,99,2,0,0,0,0,0, + 0,0,1,0,0,0,8,0,0,0,67,0,0,0,115,204, + 1,0,0,124,2,115,10,116,0,124,1,100,1,100,0,131, + 3,100,0,117,0,114,26,9,0,124,0,106,1,124,1,95, + 2,110,10,35,0,4,0,116,3,121,229,1,0,1,0,1, + 0,89,0,110,1,37,0,124,2,115,36,116,0,124,1,100, + 2,100,0,131,3,100,0,117,0,114,87,124,0,106,4,125, + 3,124,3,100,0,117,0,114,72,124,0,106,5,100,0,117, + 1,114,72,116,6,100,0,117,0,114,54,116,7,130,1,116, + 6,106,8,125,4,124,4,160,9,124,4,161,1,125,3,124, + 0,106,5,124,3,95,10,124,3,124,0,95,4,100,0,124, + 1,95,11,9,0,124,3,124,1,95,12,110,10,35,0,4, + 0,116,3,121,228,1,0,1,0,1,0,89,0,110,1,37, + 0,124,2,115,97,116,0,124,1,100,3,100,0,131,3,100, + 0,117,0,114,113,9,0,124,0,106,13,124,1,95,14,110, + 10,35,0,4,0,116,3,121,227,1,0,1,0,1,0,89, + 0,110,1,37,0,9,0,124,0,124,1,95,15,110,10,35, + 0,4,0,116,3,121,226,1,0,1,0,1,0,89,0,110, + 1,37,0,124,2,115,138,116,0,124,1,100,4,100,0,131, + 3,100,0,117,0,114,159,124,0,106,5,100,0,117,1,114, + 159,9,0,124,0,106,5,124,1,95,16,110,10,35,0,4, + 0,116,3,121,225,1,0,1,0,1,0,89,0,110,1,37, + 0,124,0,106,17,114,221,124,2,115,172,116,0,124,1,100, + 5,100,0,131,3,100,0,117,0,114,188,9,0,124,0,106, + 18,124,1,95,11,110,10,35,0,4,0,116,3,121,224,1, + 0,1,0,1,0,89,0,110,1,37,0,124,2,115,198,116, + 0,124,1,100,6,100,0,131,3,100,0,117,0,114,221,124, + 0,106,19,100,0,117,1,114,221,9,0,124,0,106,19,124, + 1,95,20,124,1,83,0,35,0,4,0,116,3,121,223,1, + 0,1,0,1,0,89,0,124,1,83,0,37,0,124,1,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,41, + 7,78,114,8,0,0,0,114,112,0,0,0,218,11,95,95, + 112,97,99,107,97,103,101,95,95,114,154,0,0,0,114,121, + 0,0,0,114,152,0,0,0,41,21,114,12,0,0,0,114, + 20,0,0,0,114,8,0,0,0,114,2,0,0,0,114,122, + 0,0,0,114,129,0,0,0,114,139,0,0,0,114,140,0, + 0,0,218,16,95,78,97,109,101,115,112,97,99,101,76,111, + 97,100,101,114,218,7,95,95,110,101,119,95,95,90,5,95, + 112,97,116,104,114,121,0,0,0,114,112,0,0,0,114,143, + 0,0,0,114,158,0,0,0,114,113,0,0,0,114,154,0, + 0,0,114,136,0,0,0,114,126,0,0,0,114,135,0,0, + 0,114,152,0,0,0,41,5,114,109,0,0,0,114,110,0, + 0,0,114,157,0,0,0,114,122,0,0,0,114,159,0,0, + 0,32,32,32,32,32,114,5,0,0,0,218,18,95,105,110, + 105,116,95,109,111,100,117,108,101,95,97,116,116,114,115,236, + 1,0,0,115,142,0,0,0,20,4,2,1,10,1,2,128, + 12,1,4,1,2,128,20,2,6,1,8,1,10,2,8,1, + 4,1,6,1,10,2,8,1,6,1,6,11,2,1,8,1, + 2,128,12,1,4,1,2,128,20,2,2,1,10,1,2,128, + 12,1,4,1,2,128,2,2,8,1,2,128,12,1,4,1, + 2,128,20,2,10,1,2,1,10,1,2,128,12,1,4,1, + 2,128,6,2,20,1,2,1,10,1,2,128,12,1,4,1, + 2,128,20,2,10,1,2,1,8,1,4,3,2,128,12,254, + 2,1,4,1,2,128,4,0,2,254,2,249,2,249,2,249, + 2,251,2,250,2,228,115,121,0,0,0,139,4,16,0,144, + 7,25,7,193,9,3,65,13,0,193,13,7,65,22,7,193, + 34,4,65,39,0,193,39,7,65,48,7,193,50,3,65,54, + 0,193,54,7,65,63,7,194,16,4,66,21,0,194,21,7, + 66,30,7,194,45,4,66,50,0,194,50,7,66,59,7,195, + 12,4,67,18,0,195,18,7,67,28,7,195,31,1,67,28, + 7,195,32,1,66,59,7,195,33,1,66,30,7,195,34,1, + 65,63,7,195,35,1,65,48,7,195,36,1,65,22,7,195, + 37,1,25,7,114,161,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,82, + 0,0,0,100,1,125,1,116,0,124,0,106,1,100,2,131, + 2,114,15,124,0,106,1,160,2,124,0,161,1,125,1,110, + 10,116,0,124,0,106,1,100,3,131,2,114,25,116,3,100, + 4,131,1,130,1,124,1,100,1,117,0,114,34,116,4,124, + 0,106,5,131,1,125,1,116,6,124,0,124,1,131,2,1, + 0,124,1,83,0,41,5,122,43,67,114,101,97,116,101,32, + 97,32,109,111,100,117,108,101,32,98,97,115,101,100,32,111, + 110,32,116,104,101,32,112,114,111,118,105,100,101,100,32,115, + 112,101,99,46,78,218,13,99,114,101,97,116,101,95,109,111, + 100,117,108,101,218,11,101,120,101,99,95,109,111,100,117,108, + 101,122,66,108,111,97,100,101,114,115,32,116,104,97,116,32, + 100,101,102,105,110,101,32,101,120,101,99,95,109,111,100,117, + 108,101,40,41,32,109,117,115,116,32,97,108,115,111,32,100, + 101,102,105,110,101,32,99,114,101,97,116,101,95,109,111,100, + 117,108,101,40,41,41,7,114,10,0,0,0,114,122,0,0, + 0,114,162,0,0,0,114,88,0,0,0,114,21,0,0,0, + 114,20,0,0,0,114,161,0,0,0,169,2,114,109,0,0, + 0,114,110,0,0,0,32,32,114,5,0,0,0,218,16,109, + 111,100,117,108,101,95,102,114,111,109,95,115,112,101,99,52, + 2,0,0,115,18,0,0,0,4,3,12,1,14,3,12,1, + 8,1,8,2,10,1,10,1,4,1,114,17,0,0,0,114, + 165,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,100,0,0,0,124,0, + 106,0,100,1,117,0,114,7,100,2,110,2,124,0,106,0, + 125,1,124,0,106,1,100,1,117,0,114,32,124,0,106,2, + 100,1,117,0,114,25,100,3,160,3,124,1,161,1,83,0, + 100,4,160,3,124,1,124,0,106,2,161,2,83,0,124,0, + 106,4,114,42,100,5,160,3,124,1,124,0,106,1,161,2, + 83,0,100,6,160,3,124,0,106,0,124,0,106,1,161,2, + 83,0,41,7,122,38,82,101,116,117,114,110,32,116,104,101, + 32,114,101,112,114,32,116,111,32,117,115,101,32,102,111,114, + 32,116,104,101,32,109,111,100,117,108,101,46,78,114,115,0, + 0,0,114,116,0,0,0,114,117,0,0,0,114,118,0,0, + 0,250,18,60,109,111,100,117,108,101,32,123,33,114,125,32, + 40,123,125,41,62,41,5,114,20,0,0,0,114,126,0,0, + 0,114,122,0,0,0,114,51,0,0,0,114,136,0,0,0, + 41,2,114,109,0,0,0,114,20,0,0,0,32,32,114,5, + 0,0,0,114,119,0,0,0,69,2,0,0,115,16,0,0, + 0,20,3,10,1,10,1,10,1,14,2,6,2,14,1,16, + 2,114,17,0,0,0,114,119,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,10,0,0,0,67,0,0,0, + 115,32,1,0,0,124,0,106,0,125,2,116,1,124,2,131, + 1,53,0,1,0,116,2,106,3,160,4,124,2,161,1,124, + 1,117,1,114,27,100,1,160,5,124,2,161,1,125,3,116, + 6,124,3,124,2,100,2,141,2,130,1,9,0,124,0,106, + 7,100,3,117,0,114,53,124,0,106,8,100,3,117,0,114, + 45,116,6,100,4,124,0,106,0,100,2,141,2,130,1,116, + 9,124,0,124,1,100,5,100,6,141,3,1,0,110,40,116, + 9,124,0,124,1,100,5,100,6,141,3,1,0,116,10,124, + 0,106,7,100,7,131,2,115,87,116,11,124,0,106,7,131, + 1,155,0,100,8,157,2,125,3,116,12,160,13,124,3,116, + 14,161,2,1,0,124,0,106,7,160,15,124,2,161,1,1, + 0,110,6,124,0,106,7,160,16,124,1,161,1,1,0,116, + 2,106,3,160,17,124,0,106,0,161,1,125,1,124,1,116, + 2,106,3,124,0,106,0,60,0,110,16,35,0,116,2,106, + 3,160,17,124,0,106,0,161,1,125,1,124,1,116,2,106, + 3,124,0,106,0,60,0,119,0,37,0,9,0,100,3,4, + 0,4,0,131,3,1,0,124,1,83,0,35,0,49,0,115, + 136,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, + 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, + 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, + 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, + 30,109,111,100,117,108,101,32,123,33,114,125,32,110,111,116, + 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,114, + 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, + 111,97,100,101,114,84,114,156,0,0,0,114,163,0,0,0, + 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, + 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, + 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, + 114,58,0,0,0,114,18,0,0,0,114,105,0,0,0,114, + 39,0,0,0,114,51,0,0,0,114,88,0,0,0,114,122, + 0,0,0,114,129,0,0,0,114,161,0,0,0,114,10,0, + 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, + 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, + 218,11,108,111,97,100,95,109,111,100,117,108,101,114,163,0, + 0,0,218,3,112,111,112,41,4,114,109,0,0,0,114,110, + 0,0,0,114,20,0,0,0,114,108,0,0,0,32,32,32, + 32,114,5,0,0,0,114,106,0,0,0,86,2,0,0,115, + 50,0,0,0,6,2,10,1,16,1,10,1,12,1,2,1, + 10,1,10,1,14,1,16,2,14,2,12,1,16,1,12,2, + 14,1,12,2,14,4,14,1,2,128,14,255,18,1,10,233, + 4,24,22,128,4,0,115,41,0,0,0,135,20,66,3,3, + 156,65,1,65,43,2,193,29,14,66,3,3,193,43,15,65, + 58,9,193,58,1,66,3,3,194,3,4,66,7,11,194,8, + 3,66,7,11,114,106,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,22, + 1,0,0,9,0,124,0,106,0,160,1,124,0,106,2,161, + 1,1,0,110,25,35,0,1,0,1,0,1,0,124,0,106, + 2,116,3,106,4,118,0,114,32,116,3,106,4,160,5,124, + 0,106,2,161,1,125,1,124,1,116,3,106,4,124,0,106, + 2,60,0,130,0,37,0,116,3,106,4,160,5,124,0,106, + 2,161,1,125,1,124,1,116,3,106,4,124,0,106,2,60, + 0,116,6,124,1,100,1,100,0,131,3,100,0,117,0,114, + 71,9,0,124,0,106,0,124,1,95,7,110,10,35,0,4, + 0,116,8,121,138,1,0,1,0,1,0,89,0,110,1,37, + 0,116,6,124,1,100,2,100,0,131,3,100,0,117,0,114, + 109,9,0,124,1,106,9,124,1,95,10,116,11,124,1,100, + 3,131,2,115,98,124,0,106,2,160,12,100,4,161,1,100, + 5,25,0,124,1,95,10,110,10,35,0,4,0,116,8,121, + 137,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, + 1,100,6,100,0,131,3,100,0,117,0,114,134,9,0,124, + 0,124,1,95,13,124,1,83,0,35,0,4,0,116,8,121, + 136,1,0,1,0,1,0,89,0,124,1,83,0,37,0,124, + 1,83,0,119,0,119,0,119,0,41,7,78,114,112,0,0, + 0,114,158,0,0,0,114,154,0,0,0,114,141,0,0,0, + 114,26,0,0,0,114,113,0,0,0,41,14,114,122,0,0, + 0,114,170,0,0,0,114,20,0,0,0,114,18,0,0,0, + 114,105,0,0,0,114,171,0,0,0,114,12,0,0,0,114, + 112,0,0,0,114,2,0,0,0,114,8,0,0,0,114,158, + 0,0,0,114,10,0,0,0,114,142,0,0,0,114,113,0, + 0,0,114,164,0,0,0,32,32,114,5,0,0,0,218,25, + 95,108,111,97,100,95,98,97,99,107,119,97,114,100,95,99, + 111,109,112,97,116,105,98,108,101,116,2,0,0,115,80,0, + 0,0,2,3,16,1,2,128,6,1,12,1,14,1,12,1, + 2,1,2,128,14,3,12,1,16,1,2,1,10,1,2,128, + 12,1,4,1,2,128,16,1,2,1,8,4,10,1,18,1, + 4,128,12,1,4,1,2,128,16,1,2,1,6,1,4,3, + 2,128,12,254,2,1,4,1,2,128,4,0,2,254,2,251, + 2,246,115,59,0,0,0,129,7,9,0,137,24,33,7,184, + 4,61,0,189,7,65,6,7,193,16,18,65,35,0,193,35, + 7,65,44,7,193,54,3,65,59,0,193,59,7,66,5,7, + 194,8,1,66,5,7,194,9,1,65,44,7,194,10,1,65, + 6,7,114,172,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,11,0,0,0,67,0,0,0,115,248,0,0, + 0,124,0,106,0,100,0,117,1,114,29,116,1,124,0,106, + 0,100,1,131,2,115,29,116,2,124,0,106,0,131,1,155, + 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, + 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, + 1,125,2,100,3,124,0,95,8,9,0,124,2,116,9,106, + 10,124,0,106,11,60,0,9,0,124,0,106,0,100,0,117, + 0,114,62,124,0,106,12,100,0,117,0,114,61,116,13,100, + 4,124,0,106,11,100,5,141,2,130,1,110,6,124,0,106, + 0,160,14,124,2,161,1,1,0,110,22,35,0,1,0,1, + 0,1,0,9,0,116,9,106,10,124,0,106,11,61,0,130, + 0,35,0,4,0,116,15,121,123,1,0,1,0,1,0,89, + 0,130,0,37,0,37,0,116,9,106,10,160,16,124,0,106, + 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, + 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, + 0,100,7,124,0,95,8,124,2,83,0,35,0,100,7,124, + 0,95,8,119,0,37,0,119,0,41,8,78,114,163,0,0, + 0,114,168,0,0,0,84,114,167,0,0,0,114,19,0,0, + 0,122,18,105,109,112,111,114,116,32,123,33,114,125,32,35, + 32,123,33,114,125,70,41,18,114,122,0,0,0,114,10,0, + 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, + 0,114,169,0,0,0,114,172,0,0,0,114,165,0,0,0, + 90,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114, + 18,0,0,0,114,105,0,0,0,114,20,0,0,0,114,129, + 0,0,0,114,88,0,0,0,114,163,0,0,0,114,71,0, + 0,0,114,171,0,0,0,114,84,0,0,0,41,3,114,109, + 0,0,0,114,108,0,0,0,114,110,0,0,0,32,32,32, + 114,5,0,0,0,218,14,95,108,111,97,100,95,117,110,108, + 111,99,107,101,100,152,2,0,0,115,66,0,0,0,10,2, + 12,2,16,1,12,2,8,1,8,2,6,5,2,1,12,1, + 2,1,10,1,10,1,14,1,2,255,12,4,4,128,6,1, + 2,1,10,1,2,3,2,128,12,254,2,1,2,1,4,128, + 14,5,12,1,16,1,6,2,4,2,2,128,10,254,2,245, + 115,64,0,0,0,165,6,65,53,0,172,24,65,5,0,193, + 4,1,65,53,0,193,5,4,65,26,7,193,10,5,65,16, + 6,193,15,1,65,26,7,193,16,7,65,25,13,193,23,3, + 65,26,7,193,26,22,65,53,0,193,53,5,65,58,7,193, + 59,1,65,25,13,114,173,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, + 58,0,0,0,116,0,124,0,106,1,131,1,53,0,1,0, + 116,2,124,0,131,1,2,0,100,1,4,0,4,0,131,3, + 1,0,83,0,35,0,49,0,115,21,119,4,37,0,1,0, + 1,0,1,0,89,0,1,0,1,0,100,1,83,0,41,2, + 122,191,82,101,116,117,114,110,32,97,32,110,101,119,32,109, + 111,100,117,108,101,32,111,98,106,101,99,116,44,32,108,111, + 97,100,101,100,32,98,121,32,116,104,101,32,115,112,101,99, + 39,115,32,108,111,97,100,101,114,46,10,10,32,32,32,32, + 84,104,101,32,109,111,100,117,108,101,32,105,115,32,110,111, + 116,32,97,100,100,101,100,32,116,111,32,105,116,115,32,112, + 97,114,101,110,116,46,10,10,32,32,32,32,73,102,32,97, + 32,109,111,100,117,108,101,32,105,115,32,97,108,114,101,97, + 100,121,32,105,110,32,115,121,115,46,109,111,100,117,108,101, + 115,44,32,116,104,97,116,32,101,120,105,115,116,105,110,103, + 32,109,111,100,117,108,101,32,103,101,116,115,10,32,32,32, + 32,99,108,111,98,98,101,114,101,100,46,10,10,32,32,32, + 32,78,41,3,114,58,0,0,0,114,20,0,0,0,114,173, + 0,0,0,169,1,114,109,0,0,0,32,114,5,0,0,0, + 114,107,0,0,0,197,2,0,0,115,10,0,0,0,12,9, + 6,1,14,255,22,128,4,0,115,12,0,0,0,133,4,16, + 3,144,4,20,11,149,3,20,11,114,107,0,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, + 0,0,0,115,140,0,0,0,101,0,90,1,100,0,90,2, + 100,1,90,3,100,2,90,4,101,5,100,3,100,4,132,0, + 131,1,90,6,101,7,100,20,100,6,100,7,132,1,131,1, + 90,8,101,7,100,21,100,8,100,9,132,1,131,1,90,9, + 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, + 100,13,132,0,131,1,90,11,101,7,101,12,100,14,100,15, + 132,0,131,1,131,1,90,13,101,7,101,12,100,16,100,17, + 132,0,131,1,131,1,90,14,101,7,101,12,100,18,100,19, + 132,0,131,1,131,1,90,15,101,7,101,16,131,1,90,17, + 100,5,83,0,41,22,218,15,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,122,144,77,101,116,97,32,112,97, + 116,104,32,105,109,112,111,114,116,32,102,111,114,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,115,46,10, + 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115, + 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115, + 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104, + 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101, + 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115, + 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97, + 115,115,46,10,10,32,32,32,32,122,8,98,117,105,108,116, + 45,105,110,99,1,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,67,0,0,0,115,34,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,100,2,124,0,106,3,155, + 2,100,3,116,4,106,5,155,0,100,4,157,5,83,0,41, + 6,250,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,81,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, + 101,112,114,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,122,8,60,109,111,100,117, + 108,101,32,122,2,32,40,122,2,41,62,78,41,6,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,8,0, + 0,0,114,175,0,0,0,114,151,0,0,0,169,1,114,110, + 0,0,0,32,114,5,0,0,0,114,114,0,0,0,223,2, + 0,0,115,8,0,0,0,6,7,2,1,4,255,22,2,114, + 17,0,0,0,122,27,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,109,111,100,117,108,101,95,114,101,112, + 114,78,99,4,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,67,0,0,0,115,42,0,0,0,124,2,100,0, + 117,1,114,6,100,0,83,0,116,0,160,1,124,1,161,1, + 114,19,116,2,124,1,124,0,124,0,106,3,100,1,141,3, + 83,0,100,0,83,0,169,2,78,114,150,0,0,0,41,4, + 114,65,0,0,0,90,10,105,115,95,98,117,105,108,116,105, + 110,114,104,0,0,0,114,151,0,0,0,169,4,218,3,99, + 108,115,114,90,0,0,0,218,4,112,97,116,104,218,6,116, + 97,114,103,101,116,32,32,32,32,114,5,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,234,2,0,0,115,10,0, + 0,0,8,2,4,1,10,1,16,1,4,2,114,17,0,0, + 0,122,25,66,117,105,108,116,105,110,73,109,112,111,114,116, + 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,67,0,0, + 0,115,42,0,0,0,116,0,160,1,100,1,116,2,161,2, + 1,0,124,0,160,3,124,1,124,2,161,2,125,3,124,3, + 100,2,117,1,114,19,124,3,106,4,83,0,100,2,83,0, + 41,3,122,175,70,105,110,100,32,116,104,101,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,32,32,32,32,73,102,32,39,112,97,116,104,39, + 32,105,115,32,101,118,101,114,32,115,112,101,99,105,102,105, + 101,100,32,116,104,101,110,32,116,104,101,32,115,101,97,114, + 99,104,32,105,115,32,99,111,110,115,105,100,101,114,101,100, + 32,97,32,102,97,105,108,117,114,101,46,10,10,32,32,32, + 32,32,32,32,32,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,122,106,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, + 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, + 41,5,114,101,0,0,0,114,102,0,0,0,114,103,0,0, + 0,114,183,0,0,0,114,122,0,0,0,41,4,114,180,0, + 0,0,114,90,0,0,0,114,181,0,0,0,114,109,0,0, + 0,32,32,32,32,114,5,0,0,0,218,11,102,105,110,100, + 95,109,111,100,117,108,101,243,2,0,0,115,10,0,0,0, + 6,9,2,2,4,254,12,3,18,1,114,17,0,0,0,122, + 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,46,0,0,0,124,0,106,0,116,1,106,2,118,1, + 114,17,116,3,100,1,160,4,124,0,106,0,161,1,124,0, + 106,0,100,2,141,2,130,1,116,5,116,6,106,7,124,0, + 131,2,83,0,41,4,122,24,67,114,101,97,116,101,32,97, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 114,86,0,0,0,114,19,0,0,0,78,41,8,114,20,0, + 0,0,114,18,0,0,0,114,87,0,0,0,114,88,0,0, + 0,114,51,0,0,0,114,75,0,0,0,114,65,0,0,0, + 90,14,99,114,101,97,116,101,95,98,117,105,108,116,105,110, + 114,174,0,0,0,32,114,5,0,0,0,114,162,0,0,0, + 2,3,0,0,115,10,0,0,0,12,3,12,1,4,1,6, + 255,12,2,114,17,0,0,0,122,29,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,46,99,114,101,97,116,101, + 95,109,111,100,117,108,101,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, + 0,116,0,116,1,106,2,124,0,131,2,1,0,100,1,83, + 0,41,2,122,22,69,120,101,99,32,97,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,78,41,3,114,75, + 0,0,0,114,65,0,0,0,90,12,101,120,101,99,95,98, + 117,105,108,116,105,110,114,177,0,0,0,32,114,5,0,0, + 0,114,163,0,0,0,10,3,0,0,115,2,0,0,0,16, + 3,114,17,0,0,0,122,27,66,117,105,108,116,105,110,73, + 109,112,111,114,116,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, + 1,0,0,0,67,0,0,0,243,4,0,0,0,100,1,83, + 0,41,2,122,57,82,101,116,117,114,110,32,78,111,110,101, 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, - 0,0,0,114,186,0,0,0,32,32,114,5,0,0,0,218, - 10,103,101,116,95,115,111,117,114,99,101,21,3,0,0,114, - 188,0,0,0,114,17,0,0,0,122,26,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, - 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, - 3,122,52,82,101,116,117,114,110,32,70,97,108,115,101,32, - 97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, - 99,107,97,103,101,115,46,70,78,114,23,0,0,0,114,186, - 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,27, + 32,99,111,100,101,32,111,98,106,101,99,116,115,46,78,114, + 23,0,0,0,169,2,114,180,0,0,0,114,90,0,0,0, + 32,32,114,5,0,0,0,218,8,103,101,116,95,99,111,100, + 101,15,3,0,0,243,2,0,0,0,4,4,114,17,0,0, + 0,122,24,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,67,0,0,0, + 114,185,0,0,0,41,2,122,56,82,101,116,117,114,110,32, + 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, + 104,97,118,101,32,115,111,117,114,99,101,32,99,111,100,101, + 46,78,114,23,0,0,0,114,186,0,0,0,32,32,114,5, + 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,21, 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, - 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, - 0,0,41,18,114,8,0,0,0,114,7,0,0,0,114,1, - 0,0,0,114,9,0,0,0,114,151,0,0,0,218,12,115, - 116,97,116,105,99,109,101,116,104,111,100,114,114,0,0,0, - 218,11,99,108,97,115,115,109,101,116,104,111,100,114,183,0, - 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, - 0,114,95,0,0,0,114,187,0,0,0,114,189,0,0,0, - 114,128,0,0,0,114,111,0,0,0,114,170,0,0,0,114, - 23,0,0,0,114,5,0,0,0,114,175,0,0,0,212,2, - 0,0,115,46,0,0,0,8,0,4,2,4,7,2,2,10, - 1,2,10,12,1,2,8,12,1,2,14,10,1,2,7,10, - 1,2,4,2,1,12,1,2,4,2,1,12,1,2,4,2, - 1,12,1,12,4,114,17,0,0,0,114,175,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 64,0,0,0,115,144,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,90,4,101,5,100,3,100,4,132, - 0,131,1,90,6,101,7,100,22,100,6,100,7,132,1,131, - 1,90,8,101,7,100,23,100,8,100,9,132,1,131,1,90, - 9,101,5,100,10,100,11,132,0,131,1,90,10,101,5,100, - 12,100,13,132,0,131,1,90,11,101,7,100,14,100,15,132, - 0,131,1,90,12,101,7,101,13,100,16,100,17,132,0,131, - 1,131,1,90,14,101,7,101,13,100,18,100,19,132,0,131, - 1,131,1,90,15,101,7,101,13,100,20,100,21,132,0,131, - 1,131,1,90,16,100,5,83,0,41,24,218,14,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116, - 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, - 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, - 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, - 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, - 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, - 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, - 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, - 108,97,115,115,46,10,10,32,32,32,32,90,6,102,114,111, - 122,101,110,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,28,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, - 4,116,5,106,6,161,2,83,0,41,4,114,176,0,0,0, - 122,80,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,109,111,100,117,108,101,95,114,101,112,114,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,114,166,0,0,0,78,41,7,114,101,0,0,0,114, - 102,0,0,0,114,103,0,0,0,114,51,0,0,0,114,8, - 0,0,0,114,193,0,0,0,114,151,0,0,0,41,1,218, - 1,109,32,114,5,0,0,0,114,114,0,0,0,47,3,0, - 0,115,8,0,0,0,6,7,2,1,4,255,16,2,114,17, - 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,78, - 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,30,0,0,0,116,0,160,1,124,1, - 161,1,114,13,116,2,124,1,124,0,124,0,106,3,100,1, - 141,3,83,0,100,0,83,0,114,178,0,0,0,41,4,114, - 65,0,0,0,114,98,0,0,0,114,104,0,0,0,114,151, - 0,0,0,114,179,0,0,0,32,32,32,32,114,5,0,0, - 0,114,183,0,0,0,58,3,0,0,115,6,0,0,0,10, - 2,16,1,4,2,114,17,0,0,0,122,24,70,114,111,122, - 101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0, - 160,1,100,1,116,2,161,2,1,0,116,3,160,4,124,1, - 161,1,114,13,124,0,83,0,100,2,83,0,41,3,122,93, - 70,105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,41,5,114,101,0,0,0, - 114,102,0,0,0,114,103,0,0,0,114,65,0,0,0,114, - 98,0,0,0,41,3,114,180,0,0,0,114,90,0,0,0, - 114,181,0,0,0,32,32,32,114,5,0,0,0,114,184,0, - 0,0,65,3,0,0,115,8,0,0,0,6,7,2,2,4, - 254,18,3,114,17,0,0,0,122,26,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, + 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,67,0,0,0,114,185, + 0,0,0,41,3,122,52,82,101,116,117,114,110,32,70,97, + 108,115,101,32,97,115,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,115,32,97,114,101,32,110,101,118,101, + 114,32,112,97,99,107,97,103,101,115,46,70,78,114,23,0, + 0,0,114,186,0,0,0,32,32,114,5,0,0,0,114,128, + 0,0,0,27,3,0,0,114,188,0,0,0,114,17,0,0, + 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,105,115,95,112,97,99,107,97,103,101,169,2,78, + 78,114,0,0,0,0,41,18,114,8,0,0,0,114,7,0, + 0,0,114,1,0,0,0,114,9,0,0,0,114,151,0,0, + 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, + 114,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, + 100,114,183,0,0,0,114,184,0,0,0,114,162,0,0,0, + 114,163,0,0,0,114,95,0,0,0,114,187,0,0,0,114, + 189,0,0,0,114,128,0,0,0,114,111,0,0,0,114,170, + 0,0,0,114,23,0,0,0,114,5,0,0,0,114,175,0, + 0,0,212,2,0,0,115,46,0,0,0,8,0,4,2,4, + 7,2,2,10,1,2,10,12,1,2,8,12,1,2,14,10, + 1,2,7,10,1,2,4,2,1,12,1,2,4,2,1,12, + 1,2,4,2,1,12,1,12,4,114,17,0,0,0,114,175, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,64,0,0,0,115,144,0,0,0,101,0,90, + 1,100,0,90,2,100,1,90,3,100,2,90,4,101,5,100, + 3,100,4,132,0,131,1,90,6,101,7,100,22,100,6,100, + 7,132,1,131,1,90,8,101,7,100,23,100,8,100,9,132, + 1,131,1,90,9,101,5,100,10,100,11,132,0,131,1,90, + 10,101,5,100,12,100,13,132,0,131,1,90,11,101,7,100, + 14,100,15,132,0,131,1,90,12,101,7,101,13,100,16,100, + 17,132,0,131,1,131,1,90,14,101,7,101,13,100,18,100, + 19,132,0,131,1,131,1,90,15,101,7,101,13,100,20,100, + 21,132,0,131,1,131,1,90,16,100,5,83,0,41,24,218, + 14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,122, + 142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, + 116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,109, + 101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,101, + 114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,105, + 99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,111, + 105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32, + 32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116, + 104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,90, + 6,102,114,111,122,101,110,99,1,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,160, + 3,124,0,106,4,116,5,106,6,161,2,83,0,41,4,114, + 176,0,0,0,122,80,70,114,111,122,101,110,73,109,112,111, + 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,114,166,0,0,0,78,41,7,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,51,0, + 0,0,114,8,0,0,0,114,193,0,0,0,114,151,0,0, + 0,41,1,218,1,109,32,114,5,0,0,0,114,114,0,0, + 0,47,3,0,0,115,8,0,0,0,6,7,2,1,4,255, + 16,2,114,17,0,0,0,122,26,70,114,111,122,101,110,73, + 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, + 101,112,114,78,99,4,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,67,0,0,0,115,30,0,0,0,116,0, + 160,1,124,1,161,1,114,13,116,2,124,1,124,0,124,0, + 106,3,100,1,141,3,83,0,100,0,83,0,114,178,0,0, + 0,41,4,114,65,0,0,0,114,98,0,0,0,114,104,0, + 0,0,114,151,0,0,0,114,179,0,0,0,32,32,32,32, + 114,5,0,0,0,114,183,0,0,0,58,3,0,0,115,6, + 0,0,0,10,2,16,1,4,2,114,17,0,0,0,122,24, + 70,114,111,122,101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0, + 0,0,116,0,160,1,100,1,116,2,161,2,1,0,116,3, + 160,4,124,1,161,1,114,13,124,0,83,0,100,2,83,0, + 41,3,122,93,70,105,110,100,32,97,32,102,114,111,122,101, + 110,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,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,122,105,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,41,5,114, + 101,0,0,0,114,102,0,0,0,114,103,0,0,0,114,65, + 0,0,0,114,98,0,0,0,41,3,114,180,0,0,0,114, + 90,0,0,0,114,181,0,0,0,32,32,32,114,5,0,0, + 0,114,184,0,0,0,65,3,0,0,115,8,0,0,0,6, + 7,2,2,4,254,18,3,114,17,0,0,0,122,26,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,67,0,0,0,114,185,0, + 0,0,41,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,23,0,0,0,114,174,0,0,0,32,114,5,0,0, + 0,114,162,0,0,0,77,3,0,0,115,2,0,0,0,4, + 0,114,17,0,0,0,122,28,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,99,114,101,97,116,101,95,109,111, 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,67,0,0,0,114,185,0,0,0,41,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,23,0, - 0,0,114,174,0,0,0,32,114,5,0,0,0,114,162,0, - 0,0,77,3,0,0,115,2,0,0,0,4,0,114,17,0, - 0,0,122,28,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,99,114,101,97,116,101,95,109,111,100,117,108,101, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, - 125,1,116,2,160,3,124,1,161,1,115,18,116,4,100,1, - 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, - 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, - 106,9,131,2,1,0,100,0,83,0,114,97,0,0,0,41, - 10,114,113,0,0,0,114,20,0,0,0,114,65,0,0,0, - 114,98,0,0,0,114,88,0,0,0,114,51,0,0,0,114, - 75,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, - 95,111,98,106,101,99,116,218,4,101,120,101,99,114,13,0, - 0,0,41,3,114,110,0,0,0,114,20,0,0,0,218,4, - 99,111,100,101,32,32,32,114,5,0,0,0,114,163,0,0, - 0,81,3,0,0,115,14,0,0,0,8,2,10,1,10,1, - 2,1,6,255,12,2,16,1,114,17,0,0,0,122,26,70, - 114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10, - 0,0,0,116,0,124,0,124,1,131,2,83,0,41,2,122, - 95,76,111,97,100,32,97,32,102,114,111,122,101,110,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, - 78,41,1,114,111,0,0,0,114,186,0,0,0,32,32,114, - 5,0,0,0,114,170,0,0,0,90,3,0,0,115,2,0, - 0,0,10,8,114,17,0,0,0,122,26,70,114,111,122,101, - 110,73,109,112,111,114,116,101,114,46,108,111,97,100,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,243,10,0,0,0,116, - 0,160,1,124,1,161,1,83,0,41,2,122,45,82,101,116, - 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, - 101,99,116,32,102,111,114,32,116,104,101,32,102,114,111,122, - 101,110,32,109,111,100,117,108,101,46,78,41,2,114,65,0, - 0,0,114,195,0,0,0,114,186,0,0,0,32,32,114,5, - 0,0,0,114,187,0,0,0,100,3,0,0,243,2,0,0, - 0,10,4,114,17,0,0,0,122,23,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,67,0,0,0,114,185,0,0,0,41,2,122,54,82, - 101,116,117,114,110,32,78,111,110,101,32,97,115,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,115,32,100,111,32, - 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, - 99,111,100,101,46,78,114,23,0,0,0,114,186,0,0,0, - 32,32,114,5,0,0,0,114,189,0,0,0,106,3,0,0, - 114,188,0,0,0,114,17,0,0,0,122,25,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, - 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,114,198,0,0,0,41, - 2,122,46,82,101,116,117,114,110,32,84,114,117,101,32,105, - 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, - 46,78,41,2,114,65,0,0,0,90,17,105,115,95,102,114, - 111,122,101,110,95,112,97,99,107,97,103,101,114,186,0,0, - 0,32,32,114,5,0,0,0,114,128,0,0,0,112,3,0, - 0,114,199,0,0,0,114,17,0,0,0,122,25,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,46,105,115,95,112, - 97,99,107,97,103,101,114,190,0,0,0,114,0,0,0,0, - 41,17,114,8,0,0,0,114,7,0,0,0,114,1,0,0, - 0,114,9,0,0,0,114,151,0,0,0,114,191,0,0,0, - 114,114,0,0,0,114,192,0,0,0,114,183,0,0,0,114, - 184,0,0,0,114,162,0,0,0,114,163,0,0,0,114,170, - 0,0,0,114,100,0,0,0,114,187,0,0,0,114,189,0, - 0,0,114,128,0,0,0,114,23,0,0,0,114,5,0,0, - 0,114,193,0,0,0,36,3,0,0,115,48,0,0,0,8, - 0,4,2,4,7,2,2,10,1,2,10,12,1,2,6,12, - 1,2,11,10,1,2,3,10,1,2,8,10,1,2,9,2, - 1,12,1,2,4,2,1,12,1,2,4,2,1,16,1,114, - 17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111,114,116,76,111, - 99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,101, - 120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,116, - 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, - 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, - 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, - 46,78,41,2,114,65,0,0,0,114,66,0,0,0,114,53, - 0,0,0,32,114,5,0,0,0,114,62,0,0,0,125,3, - 0,0,243,2,0,0,0,12,2,114,17,0,0,0,122,28, + 0,4,0,0,0,67,0,0,0,115,64,0,0,0,124,0, + 106,0,106,1,125,1,116,2,160,3,124,1,161,1,115,18, + 116,4,100,1,160,5,124,1,161,1,124,1,100,2,141,2, + 130,1,116,6,116,2,106,7,124,1,131,2,125,2,116,8, + 124,2,124,0,106,9,131,2,1,0,100,0,83,0,114,97, + 0,0,0,41,10,114,113,0,0,0,114,20,0,0,0,114, + 65,0,0,0,114,98,0,0,0,114,88,0,0,0,114,51, + 0,0,0,114,75,0,0,0,218,17,103,101,116,95,102,114, + 111,122,101,110,95,111,98,106,101,99,116,218,4,101,120,101, + 99,114,13,0,0,0,41,3,114,110,0,0,0,114,20,0, + 0,0,218,4,99,111,100,101,32,32,32,114,5,0,0,0, + 114,163,0,0,0,81,3,0,0,115,14,0,0,0,8,2, + 10,1,10,1,2,1,6,255,12,2,16,1,114,17,0,0, + 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0, + 0,0,115,10,0,0,0,116,0,124,0,124,1,131,2,83, + 0,41,2,122,95,76,111,97,100,32,97,32,102,114,111,122, + 101,110,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,78,41,1,114,111,0,0,0,114,186,0,0, + 0,32,32,114,5,0,0,0,114,170,0,0,0,90,3,0, + 0,115,2,0,0,0,10,8,114,17,0,0,0,122,26,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,108,111, + 97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,243,10, + 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,122, + 45,82,101,116,117,114,110,32,116,104,101,32,99,111,100,101, + 32,111,98,106,101,99,116,32,102,111,114,32,116,104,101,32, + 102,114,111,122,101,110,32,109,111,100,117,108,101,46,78,41, + 2,114,65,0,0,0,114,195,0,0,0,114,186,0,0,0, + 32,32,114,5,0,0,0,114,187,0,0,0,100,3,0,0, + 243,2,0,0,0,10,4,114,17,0,0,0,122,23,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,103,101,116, + 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, + 2,122,54,82,101,116,117,114,110,32,78,111,110,101,32,97, + 115,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, + 32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,117, + 114,99,101,32,99,111,100,101,46,78,114,23,0,0,0,114, + 186,0,0,0,32,32,114,5,0,0,0,114,189,0,0,0, + 106,3,0,0,114,188,0,0,0,114,17,0,0,0,122,25, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,103, + 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,114,198, + 0,0,0,41,2,122,46,82,101,116,117,114,110,32,84,114, + 117,101,32,105,102,32,116,104,101,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,32,105,115,32,97,32,112,97,99, + 107,97,103,101,46,78,41,2,114,65,0,0,0,90,17,105, + 115,95,102,114,111,122,101,110,95,112,97,99,107,97,103,101, + 114,186,0,0,0,32,32,114,5,0,0,0,114,128,0,0, + 0,112,3,0,0,114,199,0,0,0,114,17,0,0,0,122, + 25,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46, + 105,115,95,112,97,99,107,97,103,101,114,190,0,0,0,114, + 0,0,0,0,41,17,114,8,0,0,0,114,7,0,0,0, + 114,1,0,0,0,114,9,0,0,0,114,151,0,0,0,114, + 191,0,0,0,114,114,0,0,0,114,192,0,0,0,114,183, + 0,0,0,114,184,0,0,0,114,162,0,0,0,114,163,0, + 0,0,114,170,0,0,0,114,100,0,0,0,114,187,0,0, + 0,114,189,0,0,0,114,128,0,0,0,114,23,0,0,0, + 114,5,0,0,0,114,193,0,0,0,36,3,0,0,115,48, + 0,0,0,8,0,4,2,4,7,2,2,10,1,2,10,12, + 1,2,6,12,1,2,11,10,1,2,3,10,1,2,8,10, + 1,2,9,2,1,12,1,2,4,2,1,12,1,2,4,2, + 1,16,1,114,17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111, + 114,116,76,111,99,107,67,111,110,116,101,120,116,122,36,67, + 111,110,116,101,120,116,32,109,97,110,97,103,101,114,32,102, + 111,114,32,116,104,101,32,105,109,112,111,114,116,32,108,111, + 99,107,46,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,67,0,0,0,243,12,0,0,0,116,0,160, + 1,161,0,1,0,100,1,83,0,41,2,122,24,65,99,113, + 117,105,114,101,32,116,104,101,32,105,109,112,111,114,116,32, + 108,111,99,107,46,78,41,2,114,65,0,0,0,114,66,0, + 0,0,114,53,0,0,0,32,114,5,0,0,0,114,62,0, + 0,0,125,3,0,0,243,2,0,0,0,12,2,114,17,0, + 0,0,122,28,95,73,109,112,111,114,116,76,111,99,107,67, + 111,110,116,101,120,116,46,95,95,101,110,116,101,114,95,95, + 99,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,67,0,0,0,114,201,0,0,0,41,2,122,60,82,101, + 108,101,97,115,101,32,116,104,101,32,105,109,112,111,114,116, + 32,108,111,99,107,32,114,101,103,97,114,100,108,101,115,115, + 32,111,102,32,97,110,121,32,114,97,105,115,101,100,32,101, + 120,99,101,112,116,105,111,110,115,46,78,41,2,114,65,0, + 0,0,114,68,0,0,0,41,4,114,34,0,0,0,218,8, + 101,120,99,95,116,121,112,101,218,9,101,120,99,95,118,97, + 108,117,101,218,13,101,120,99,95,116,114,97,99,101,98,97, + 99,107,32,32,32,32,114,5,0,0,0,114,64,0,0,0, + 129,3,0,0,114,202,0,0,0,114,17,0,0,0,122,27, 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, - 120,116,46,95,95,101,110,116,101,114,95,95,99,4,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,67,0,0, - 0,114,201,0,0,0,41,2,122,60,82,101,108,101,97,115, - 101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, - 107,32,114,101,103,97,114,100,108,101,115,115,32,111,102,32, - 97,110,121,32,114,97,105,115,101,100,32,101,120,99,101,112, - 116,105,111,110,115,46,78,41,2,114,65,0,0,0,114,68, - 0,0,0,41,4,114,34,0,0,0,218,8,101,120,99,95, - 116,121,112,101,218,9,101,120,99,95,118,97,108,117,101,218, - 13,101,120,99,95,116,114,97,99,101,98,97,99,107,32,32, - 32,32,114,5,0,0,0,114,64,0,0,0,129,3,0,0, - 114,202,0,0,0,114,17,0,0,0,122,27,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, - 95,101,120,105,116,95,95,78,41,6,114,8,0,0,0,114, - 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,62, - 0,0,0,114,64,0,0,0,114,23,0,0,0,114,5,0, - 0,0,114,200,0,0,0,121,3,0,0,115,8,0,0,0, - 8,0,4,2,8,2,12,4,114,17,0,0,0,114,200,0, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,115,64,0,0,0,124,1,160,0, - 100,1,124,2,100,2,24,0,161,2,125,3,116,1,124,3, - 131,1,124,2,107,0,114,18,116,2,100,3,131,1,130,1, - 124,3,100,4,25,0,125,4,124,0,114,30,100,5,160,3, - 124,4,124,0,161,2,83,0,124,4,83,0,41,7,122,50, - 82,101,115,111,108,118,101,32,97,32,114,101,108,97,116,105, - 118,101,32,109,111,100,117,108,101,32,110,97,109,101,32,116, - 111,32,97,110,32,97,98,115,111,108,117,116,101,32,111,110, - 101,46,114,141,0,0,0,114,43,0,0,0,122,50,97,116, - 116,101,109,112,116,101,100,32,114,101,108,97,116,105,118,101, - 32,105,109,112,111,114,116,32,98,101,121,111,110,100,32,116, - 111,112,45,108,101,118,101,108,32,112,97,99,107,97,103,101, - 114,26,0,0,0,250,5,123,125,46,123,125,78,41,4,218, - 6,114,115,112,108,105,116,218,3,108,101,110,114,88,0,0, - 0,114,51,0,0,0,41,5,114,20,0,0,0,218,7,112, - 97,99,107,97,103,101,218,5,108,101,118,101,108,90,4,98, - 105,116,115,90,4,98,97,115,101,32,32,32,32,32,114,5, - 0,0,0,218,13,95,114,101,115,111,108,118,101,95,110,97, - 109,101,134,3,0,0,115,10,0,0,0,16,2,12,1,8, - 1,8,1,20,1,114,17,0,0,0,114,211,0,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,60,0,0,0,116,0,124,0,131,1,155, - 0,100,1,157,2,125,3,116,1,160,2,124,3,116,3,161, - 2,1,0,124,0,160,4,124,1,124,2,161,2,125,4,124, - 4,100,0,117,0,114,25,100,0,83,0,116,5,124,1,124, - 4,131,2,83,0,41,2,78,122,53,46,102,105,110,100,95, - 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, - 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, - 111,32,102,105,110,100,95,109,111,100,117,108,101,40,41,41, - 6,114,6,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,169,0,0,0,114,184,0,0,0,114,104,0,0,0,41, - 5,218,6,102,105,110,100,101,114,114,20,0,0,0,114,181, - 0,0,0,114,108,0,0,0,114,122,0,0,0,32,32,32, - 32,32,114,5,0,0,0,218,17,95,102,105,110,100,95,115, - 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, - 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, - 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, - 0,0,0,0,0,0,10,0,0,0,67,0,0,0,115,30, - 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, - 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, - 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, - 0,125,4,124,3,68,0,93,112,125,5,116,7,131,0,53, - 0,1,0,9,0,124,5,106,8,125,6,110,27,35,0,4, - 0,116,9,121,142,1,0,1,0,1,0,116,10,124,5,124, - 0,124,1,131,3,125,7,124,7,100,1,117,0,114,61,89, - 0,100,1,4,0,4,0,131,3,1,0,113,26,89,0,110, - 7,37,0,124,6,124,0,124,1,124,2,131,3,125,7,100, - 1,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, - 81,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,7,100,1,117,1,114,138,124,4,115,134,124,0,116, - 0,106,6,118,0,114,134,116,0,106,6,124,0,25,0,125, - 8,9,0,124,8,106,11,125,9,110,14,35,0,4,0,116, - 9,121,141,1,0,1,0,1,0,124,7,6,0,89,0,2, - 0,1,0,83,0,37,0,124,9,100,1,117,0,114,130,124, - 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, - 7,2,0,1,0,83,0,113,26,100,1,83,0,119,0,119, - 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, - 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, - 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, - 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, - 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, - 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, - 104,32,105,115,32,101,109,112,116,121,41,12,114,18,0,0, - 0,218,9,109,101,116,97,95,112,97,116,104,114,88,0,0, - 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, - 114,105,0,0,0,114,200,0,0,0,114,183,0,0,0,114, - 2,0,0,0,114,213,0,0,0,114,113,0,0,0,41,10, - 114,20,0,0,0,114,181,0,0,0,114,182,0,0,0,114, - 214,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, - 212,0,0,0,114,183,0,0,0,114,109,0,0,0,114,110, - 0,0,0,114,113,0,0,0,32,32,32,32,32,32,32,32, - 32,32,114,5,0,0,0,218,10,95,102,105,110,100,95,115, - 112,101,99,153,3,0,0,115,76,0,0,0,6,2,8,1, - 8,2,4,3,12,1,10,5,8,1,8,1,2,1,8,1, - 2,128,12,1,12,1,8,1,2,1,12,250,4,5,2,128, - 12,3,12,248,22,128,8,9,14,2,10,1,2,1,8,1, - 2,128,12,1,12,4,2,128,8,2,8,1,8,2,8,2, - 2,239,4,19,2,243,2,244,115,63,0,0,0,159,1,65, - 12,5,161,3,37,4,164,1,65,12,5,165,17,63,11,182, - 1,65,12,5,189,9,65,12,5,193,12,4,65,16,13,193, - 17,3,65,16,13,193,40,3,65,44,2,193,44,9,65,57, - 9,194,13,1,65,57,9,194,14,1,63,11,114,215,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,67,0,0,0,115,110,0,0,0,116,0,124,0,116, - 1,131,2,115,14,116,2,100,1,160,3,116,4,124,0,131, - 1,161,1,131,1,130,1,124,2,100,2,107,0,114,22,116, - 5,100,3,131,1,130,1,124,2,100,2,107,4,114,41,116, - 0,124,1,116,1,131,2,115,35,116,2,100,4,131,1,130, - 1,124,1,115,41,116,6,100,5,131,1,130,1,124,0,115, - 53,124,2,100,2,107,2,114,51,116,5,100,6,131,1,130, - 1,100,7,83,0,100,7,83,0,41,8,122,28,86,101,114, - 105,102,121,32,97,114,103,117,109,101,110,116,115,32,97,114, - 101,32,34,115,97,110,101,34,46,122,31,109,111,100,117,108, - 101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,115, - 116,114,44,32,110,111,116,32,123,125,114,26,0,0,0,122, - 18,108,101,118,101,108,32,109,117,115,116,32,98,101,32,62, - 61,32,48,122,31,95,95,112,97,99,107,97,103,101,95,95, - 32,110,111,116,32,115,101,116,32,116,111,32,97,32,115,116, - 114,105,110,103,122,54,97,116,116,101,109,112,116,101,100,32, - 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,32, - 119,105,116,104,32,110,111,32,107,110,111,119,110,32,112,97, - 114,101,110,116,32,112,97,99,107,97,103,101,122,17,69,109, - 112,116,121,32,109,111,100,117,108,101,32,110,97,109,101,78, - 41,7,218,10,105,115,105,110,115,116,97,110,99,101,218,3, - 115,116,114,218,9,84,121,112,101,69,114,114,111,114,114,51, - 0,0,0,114,3,0,0,0,218,10,86,97,108,117,101,69, - 114,114,111,114,114,88,0,0,0,169,3,114,20,0,0,0, - 114,209,0,0,0,114,210,0,0,0,32,32,32,114,5,0, - 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, - 107,200,3,0,0,115,24,0,0,0,10,2,18,1,8,1, - 8,1,8,1,10,1,8,1,4,1,8,1,12,2,8,1, - 8,255,114,17,0,0,0,114,221,0,0,0,122,16,78,111, - 32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,4, - 123,33,114,125,99,2,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,67,0,0,0,115,20,1,0,0,100,0, - 125,2,124,0,160,0,100,1,161,1,100,2,25,0,125,3, - 124,3,114,64,124,3,116,1,106,2,118,1,114,21,116,3, - 124,1,124,3,131,2,1,0,124,0,116,1,106,2,118,0, - 114,31,116,1,106,2,124,0,25,0,83,0,116,1,106,2, - 124,3,25,0,125,4,9,0,124,4,106,4,125,2,110,23, - 35,0,4,0,116,5,121,137,1,0,1,0,1,0,116,6, - 100,3,23,0,160,7,124,0,124,3,161,2,125,5,116,8, - 124,5,124,0,100,4,141,2,100,0,130,2,37,0,116,9, - 124,0,124,2,131,2,125,6,124,6,100,0,117,0,114,82, - 116,8,116,6,160,7,124,0,161,1,124,0,100,4,141,2, - 130,1,116,10,124,6,131,1,125,7,124,3,114,134,116,1, - 106,2,124,3,25,0,125,4,124,0,160,0,100,1,161,1, - 100,5,25,0,125,8,9,0,116,11,124,4,124,8,124,7, - 131,3,1,0,124,7,83,0,35,0,4,0,116,5,121,136, - 1,0,1,0,1,0,100,6,124,3,155,2,100,7,124,8, - 155,2,157,4,125,5,116,12,160,13,124,5,116,14,161,2, - 1,0,89,0,124,7,83,0,37,0,124,7,83,0,119,0, - 119,0,41,8,78,114,141,0,0,0,114,26,0,0,0,122, - 23,59,32,123,33,114,125,32,105,115,32,110,111,116,32,97, - 32,112,97,99,107,97,103,101,114,19,0,0,0,233,2,0, - 0,0,122,27,67,97,110,110,111,116,32,115,101,116,32,97, - 110,32,97,116,116,114,105,98,117,116,101,32,111,110,32,122, - 18,32,102,111,114,32,99,104,105,108,100,32,109,111,100,117, - 108,101,32,41,15,114,142,0,0,0,114,18,0,0,0,114, - 105,0,0,0,114,75,0,0,0,114,154,0,0,0,114,2, - 0,0,0,218,8,95,69,82,82,95,77,83,71,114,51,0, - 0,0,218,19,77,111,100,117,108,101,78,111,116,70,111,117, - 110,100,69,114,114,111,114,114,215,0,0,0,114,173,0,0, - 0,114,11,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,169,0,0,0,41,9,114,20,0,0,0,218,7,105,109, - 112,111,114,116,95,114,181,0,0,0,114,143,0,0,0,90, - 13,112,97,114,101,110,116,95,109,111,100,117,108,101,114,108, - 0,0,0,114,109,0,0,0,114,110,0,0,0,90,5,99, - 104,105,108,100,32,32,32,32,32,32,32,32,32,114,5,0, - 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, - 97,100,95,117,110,108,111,99,107,101,100,219,3,0,0,115, - 68,0,0,0,4,1,14,1,4,1,10,1,10,1,10,2, - 10,1,10,1,2,1,8,1,2,128,12,1,16,1,14,1, - 2,128,10,1,8,1,18,1,8,2,4,1,10,2,14,1, - 2,1,12,1,4,4,2,128,12,253,16,1,14,1,4,1, - 2,128,4,0,2,253,2,242,115,31,0,0,0,165,3,41, - 0,169,22,63,7,193,37,6,65,45,0,193,45,21,66,5, - 7,194,8,1,66,5,7,194,9,1,63,7,114,226,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,9,0, - 0,0,67,0,0,0,115,132,0,0,0,116,0,124,0,131, - 1,53,0,1,0,116,1,106,2,160,3,124,0,116,4,161, - 2,125,2,124,2,116,4,117,0,114,27,116,5,124,0,124, - 1,131,2,2,0,100,1,4,0,4,0,131,3,1,0,83, - 0,9,0,100,1,4,0,4,0,131,3,1,0,110,11,35, - 0,49,0,115,39,119,4,37,0,1,0,1,0,1,0,89, - 0,1,0,1,0,124,2,100,1,117,0,114,60,100,2,160, - 6,124,0,161,1,125,3,116,7,124,3,124,0,100,3,141, - 2,130,1,116,8,124,0,131,1,1,0,124,2,83,0,41, - 4,122,25,70,105,110,100,32,97,110,100,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,46,78,122,40,105, - 109,112,111,114,116,32,111,102,32,123,125,32,104,97,108,116, - 101,100,59,32,78,111,110,101,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,114,19,0,0,0,41,9,114,58, - 0,0,0,114,18,0,0,0,114,105,0,0,0,114,39,0, - 0,0,218,14,95,78,69,69,68,83,95,76,79,65,68,73, - 78,71,114,226,0,0,0,114,51,0,0,0,114,224,0,0, - 0,114,73,0,0,0,41,4,114,20,0,0,0,114,225,0, - 0,0,114,110,0,0,0,114,83,0,0,0,32,32,32,32, - 114,5,0,0,0,218,14,95,102,105,110,100,95,97,110,100, - 95,108,111,97,100,254,3,0,0,115,30,0,0,0,10,2, - 14,1,8,1,8,1,14,253,2,2,12,254,22,128,8,5, - 2,1,6,1,2,255,12,2,8,2,4,1,115,12,0,0, - 0,132,16,34,3,162,4,38,11,167,3,38,11,114,228,0, - 0,0,114,26,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, - 0,116,0,124,0,124,1,124,2,131,3,1,0,124,2,100, - 1,107,4,114,16,116,1,124,0,124,1,124,2,131,3,125, - 0,116,2,124,0,116,3,131,2,83,0,41,3,97,50,1, - 0,0,73,109,112,111,114,116,32,97,110,100,32,114,101,116, - 117,114,110,32,116,104,101,32,109,111,100,117,108,101,32,98, - 97,115,101,100,32,111,110,32,105,116,115,32,110,97,109,101, - 44,32,116,104,101,32,112,97,99,107,97,103,101,32,116,104, - 101,32,99,97,108,108,32,105,115,10,32,32,32,32,98,101, - 105,110,103,32,109,97,100,101,32,102,114,111,109,44,32,97, - 110,100,32,116,104,101,32,108,101,118,101,108,32,97,100,106, - 117,115,116,109,101,110,116,46,10,10,32,32,32,32,84,104, - 105,115,32,102,117,110,99,116,105,111,110,32,114,101,112,114, - 101,115,101,110,116,115,32,116,104,101,32,103,114,101,97,116, - 101,115,116,32,99,111,109,109,111,110,32,100,101,110,111,109, - 105,110,97,116,111,114,32,111,102,32,102,117,110,99,116,105, - 111,110,97,108,105,116,121,10,32,32,32,32,98,101,116,119, - 101,101,110,32,105,109,112,111,114,116,95,109,111,100,117,108, - 101,32,97,110,100,32,95,95,105,109,112,111,114,116,95,95, - 46,32,84,104,105,115,32,105,110,99,108,117,100,101,115,32, - 115,101,116,116,105,110,103,32,95,95,112,97,99,107,97,103, - 101,95,95,32,105,102,10,32,32,32,32,116,104,101,32,108, - 111,97,100,101,114,32,100,105,100,32,110,111,116,46,10,10, - 32,32,32,32,114,26,0,0,0,78,41,4,114,221,0,0, - 0,114,211,0,0,0,114,228,0,0,0,218,11,95,103,99, - 100,95,105,109,112,111,114,116,114,220,0,0,0,32,32,32, - 114,5,0,0,0,114,229,0,0,0,14,4,0,0,115,8, - 0,0,0,12,9,8,1,12,1,10,1,114,17,0,0,0, - 114,229,0,0,0,169,1,218,9,114,101,99,117,114,115,105, - 118,101,99,3,0,0,0,0,0,0,0,1,0,0,0,9, - 0,0,0,67,0,0,0,115,216,0,0,0,124,1,68,0, - 93,102,125,4,116,0,124,4,116,1,131,2,115,32,124,3, - 114,17,124,0,106,2,100,1,23,0,125,5,110,2,100,2, - 125,5,116,3,100,3,124,5,155,0,100,4,116,4,124,4, - 131,1,106,2,155,0,157,4,131,1,130,1,124,4,100,5, - 107,2,114,53,124,3,115,52,116,5,124,0,100,6,131,2, - 114,52,116,6,124,0,124,0,106,7,124,2,100,7,100,8, - 141,4,1,0,113,2,116,5,124,0,124,4,131,2,115,104, - 100,9,160,8,124,0,106,2,124,4,161,2,125,6,9,0, - 116,9,124,2,124,6,131,2,1,0,113,2,35,0,4,0, - 116,10,121,107,1,0,125,7,1,0,124,7,106,11,124,6, - 107,2,114,98,116,12,106,13,160,14,124,6,116,15,161,2, - 100,10,117,1,114,98,89,0,100,10,125,7,126,7,113,2, - 130,0,100,10,125,7,126,7,119,1,37,0,113,2,124,0, - 83,0,119,0,41,11,122,238,70,105,103,117,114,101,32,111, - 117,116,32,119,104,97,116,32,95,95,105,109,112,111,114,116, - 95,95,32,115,104,111,117,108,100,32,114,101,116,117,114,110, - 46,10,10,32,32,32,32,84,104,101,32,105,109,112,111,114, - 116,95,32,112,97,114,97,109,101,116,101,114,32,105,115,32, - 97,32,99,97,108,108,97,98,108,101,32,119,104,105,99,104, - 32,116,97,107,101,115,32,116,104,101,32,110,97,109,101,32, - 111,102,32,109,111,100,117,108,101,32,116,111,10,32,32,32, - 32,105,109,112,111,114,116,46,32,73,116,32,105,115,32,114, - 101,113,117,105,114,101,100,32,116,111,32,100,101,99,111,117, - 112,108,101,32,116,104,101,32,102,117,110,99,116,105,111,110, - 32,102,114,111,109,32,97,115,115,117,109,105,110,103,32,105, - 109,112,111,114,116,108,105,98,39,115,10,32,32,32,32,105, - 109,112,111,114,116,32,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,32,105,115,32,100,101,115,105,114,101,100,46, - 10,10,32,32,32,32,122,8,46,95,95,97,108,108,95,95, - 122,13,96,96,102,114,111,109,32,108,105,115,116,39,39,122, - 8,73,116,101,109,32,105,110,32,122,18,32,109,117,115,116, - 32,98,101,32,115,116,114,44,32,110,111,116,32,250,1,42, - 218,7,95,95,97,108,108,95,95,84,114,230,0,0,0,114, - 206,0,0,0,78,41,16,114,216,0,0,0,114,217,0,0, - 0,114,8,0,0,0,114,218,0,0,0,114,3,0,0,0, - 114,10,0,0,0,218,16,95,104,97,110,100,108,101,95,102, - 114,111,109,108,105,115,116,114,233,0,0,0,114,51,0,0, - 0,114,75,0,0,0,114,224,0,0,0,114,20,0,0,0, - 114,18,0,0,0,114,105,0,0,0,114,39,0,0,0,114, - 227,0,0,0,41,8,114,110,0,0,0,218,8,102,114,111, - 109,108,105,115,116,114,225,0,0,0,114,231,0,0,0,218, - 1,120,90,5,119,104,101,114,101,90,9,102,114,111,109,95, - 110,97,109,101,90,3,101,120,99,32,32,32,32,32,32,32, - 32,114,5,0,0,0,114,234,0,0,0,29,4,0,0,115, - 58,0,0,0,8,10,10,1,4,1,12,1,4,2,10,1, - 8,1,8,255,8,2,14,1,10,1,2,1,6,255,2,128, - 10,2,14,1,2,1,12,1,2,128,12,1,10,4,16,1, - 2,255,10,2,2,1,10,128,2,245,4,12,2,248,115,36, - 0,0,0,193,2,5,65,8,2,193,8,7,65,39,9,193, - 15,14,65,35,9,193,34,1,65,35,9,193,35,4,65,39, - 9,193,43,1,65,39,9,114,234,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,7,0,0,0,67,0,0, - 0,115,146,0,0,0,124,0,160,0,100,1,161,1,125,1, - 124,0,160,0,100,2,161,1,125,2,124,1,100,3,117,1, - 114,41,124,2,100,3,117,1,114,39,124,1,124,2,106,1, - 107,3,114,39,116,2,160,3,100,4,124,1,155,2,100,5, - 124,2,106,1,155,2,100,6,157,5,116,4,100,7,100,8, - 166,3,1,0,124,1,83,0,124,2,100,3,117,1,114,48, - 124,2,106,1,83,0,116,2,160,3,100,9,116,4,100,7, - 100,8,166,3,1,0,124,0,100,10,25,0,125,1,100,11, - 124,0,118,1,114,71,124,1,160,5,100,12,161,1,100,13, - 25,0,125,1,124,1,83,0,41,14,122,167,67,97,108,99, - 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, - 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, - 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, - 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, - 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, - 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, - 101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,116, - 111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,116, - 32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,117, - 101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,32, - 32,32,32,114,158,0,0,0,114,113,0,0,0,78,122,32, - 95,95,112,97,99,107,97,103,101,95,95,32,33,61,32,95, - 95,115,112,101,99,95,95,46,112,97,114,101,110,116,32,40, - 122,4,32,33,61,32,250,1,41,233,3,0,0,0,41,1, - 90,10,115,116,97,99,107,108,101,118,101,108,122,89,99,97, - 110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,107, - 97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,95, - 95,32,111,114,32,95,95,112,97,99,107,97,103,101,95,95, - 44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,111, - 110,32,95,95,110,97,109,101,95,95,32,97,110,100,32,95, - 95,112,97,116,104,95,95,114,8,0,0,0,114,154,0,0, - 0,114,141,0,0,0,114,26,0,0,0,41,6,114,39,0, - 0,0,114,143,0,0,0,114,101,0,0,0,114,102,0,0, - 0,114,169,0,0,0,114,142,0,0,0,41,3,218,7,103, - 108,111,98,97,108,115,114,209,0,0,0,114,109,0,0,0, - 32,32,32,114,5,0,0,0,218,17,95,99,97,108,99,95, - 95,95,112,97,99,107,97,103,101,95,95,66,4,0,0,115, - 42,0,0,0,10,7,10,1,8,1,18,1,6,1,2,1, - 4,255,4,1,6,255,4,2,6,254,4,3,8,1,6,1, - 6,2,4,2,6,254,8,3,8,1,14,1,4,1,114,17, - 0,0,0,114,240,0,0,0,114,23,0,0,0,99,5,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, - 0,0,115,174,0,0,0,124,4,100,1,107,2,114,9,116, - 0,124,0,131,1,125,5,110,18,124,1,100,2,117,1,114, - 15,124,1,110,1,105,0,125,6,116,1,124,6,131,1,125, - 7,116,0,124,0,124,7,124,4,131,3,125,5,124,3,115, - 74,124,4,100,1,107,2,114,42,116,0,124,0,160,2,100, - 3,161,1,100,1,25,0,131,1,83,0,124,0,115,46,124, - 5,83,0,116,3,124,0,131,1,116,3,124,0,160,2,100, - 3,161,1,100,1,25,0,131,1,24,0,125,8,116,4,106, - 5,124,5,106,6,100,2,116,3,124,5,106,6,131,1,124, - 8,24,0,133,2,25,0,25,0,83,0,116,7,124,5,100, - 4,131,2,114,85,116,8,124,5,124,3,116,0,131,3,83, - 0,124,5,83,0,41,5,97,215,1,0,0,73,109,112,111, - 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, - 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, - 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, - 99,117,114,114,105,110,103,32,102,114,111,109,10,32,32,32, - 32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,116, - 105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,101, - 32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,101, - 110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,84, - 104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,116, - 39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,105, - 102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,100, - 32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,98, - 117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,117, - 108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,112, - 111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,114, - 111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,116, - 32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,32, - 32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,32, - 32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,115, - 101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,101, - 32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,112, - 111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,101, - 108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,114, - 116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,46, - 46,112,107,103,32,105,109,112,111,114,116,32,109,111,100,96, - 96,32,119,111,117,108,100,32,104,97,118,101,32,97,32,39, - 108,101,118,101,108,39,32,111,102,32,50,41,46,10,10,32, - 32,32,32,114,26,0,0,0,78,114,141,0,0,0,114,154, - 0,0,0,41,9,114,229,0,0,0,114,240,0,0,0,218, - 9,112,97,114,116,105,116,105,111,110,114,208,0,0,0,114, - 18,0,0,0,114,105,0,0,0,114,8,0,0,0,114,10, - 0,0,0,114,234,0,0,0,41,9,114,20,0,0,0,114, - 239,0,0,0,218,6,108,111,99,97,108,115,114,235,0,0, - 0,114,210,0,0,0,114,110,0,0,0,90,8,103,108,111, - 98,97,108,115,95,114,209,0,0,0,90,7,99,117,116,95, - 111,102,102,32,32,32,32,32,32,32,32,32,114,5,0,0, - 0,218,10,95,95,105,109,112,111,114,116,95,95,93,4,0, - 0,115,30,0,0,0,8,11,10,1,16,2,8,1,12,1, - 4,1,8,3,18,1,4,1,4,1,26,4,30,3,10,1, - 12,1,4,2,114,17,0,0,0,114,243,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, - 0,0,0,115,38,0,0,0,116,0,160,1,124,0,161,1, - 125,1,124,1,100,0,117,0,114,15,116,2,100,1,124,0, - 23,0,131,1,130,1,116,3,124,1,131,1,83,0,41,2, - 78,122,25,110,111,32,98,117,105,108,116,45,105,110,32,109, - 111,100,117,108,101,32,110,97,109,101,100,32,41,4,114,175, - 0,0,0,114,183,0,0,0,114,88,0,0,0,114,173,0, - 0,0,41,2,114,20,0,0,0,114,109,0,0,0,32,32, - 114,5,0,0,0,218,18,95,98,117,105,108,116,105,110,95, - 102,114,111,109,95,110,97,109,101,130,4,0,0,115,8,0, - 0,0,10,1,8,1,12,1,8,1,114,17,0,0,0,114, - 244,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,67,0,0,0,115,166,0,0,0,124,1, - 97,0,124,0,97,1,116,2,116,1,131,1,125,2,116,1, - 106,3,160,4,161,0,68,0,93,36,92,2,125,3,125,4, - 116,5,124,4,124,2,131,2,114,49,124,3,116,1,106,6, - 118,0,114,30,116,7,125,5,110,9,116,0,160,8,124,3, - 161,1,114,38,116,9,125,5,110,1,113,13,116,10,124,4, - 124,5,131,2,125,6,116,11,124,6,124,4,131,2,1,0, - 113,13,116,1,106,3,116,12,25,0,125,7,100,1,68,0, - 93,23,125,8,124,8,116,1,106,3,118,1,114,69,116,13, - 124,8,131,1,125,9,110,5,116,1,106,3,124,8,25,0, - 125,9,116,14,124,7,124,8,124,9,131,3,1,0,113,57, - 100,2,83,0,41,3,122,250,83,101,116,117,112,32,105,109, - 112,111,114,116,108,105,98,32,98,121,32,105,109,112,111,114, - 116,105,110,103,32,110,101,101,100,101,100,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,32,97,110,100, - 32,105,110,106,101,99,116,105,110,103,32,116,104,101,109,10, - 32,32,32,32,105,110,116,111,32,116,104,101,32,103,108,111, - 98,97,108,32,110,97,109,101,115,112,97,99,101,46,10,10, - 32,32,32,32,65,115,32,115,121,115,32,105,115,32,110,101, - 101,100,101,100,32,102,111,114,32,115,121,115,46,109,111,100, - 117,108,101,115,32,97,99,99,101,115,115,32,97,110,100,32, - 95,105,109,112,32,105,115,32,110,101,101,100,101,100,32,116, - 111,32,108,111,97,100,32,98,117,105,108,116,45,105,110,10, - 32,32,32,32,109,111,100,117,108,101,115,44,32,116,104,111, - 115,101,32,116,119,111,32,109,111,100,117,108,101,115,32,109, - 117,115,116,32,98,101,32,101,120,112,108,105,99,105,116,108, - 121,32,112,97,115,115,101,100,32,105,110,46,10,10,32,32, - 32,32,41,3,114,27,0,0,0,114,101,0,0,0,114,72, - 0,0,0,78,41,15,114,65,0,0,0,114,18,0,0,0, - 114,3,0,0,0,114,105,0,0,0,218,5,105,116,101,109, - 115,114,216,0,0,0,114,87,0,0,0,114,175,0,0,0, - 114,98,0,0,0,114,193,0,0,0,114,155,0,0,0,114, - 161,0,0,0,114,8,0,0,0,114,244,0,0,0,114,11, - 0,0,0,41,10,218,10,115,121,115,95,109,111,100,117,108, - 101,218,11,95,105,109,112,95,109,111,100,117,108,101,90,11, - 109,111,100,117,108,101,95,116,121,112,101,114,20,0,0,0, - 114,110,0,0,0,114,122,0,0,0,114,109,0,0,0,90, - 11,115,101,108,102,95,109,111,100,117,108,101,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,32,32,32,32,32,32, - 32,32,32,32,114,5,0,0,0,218,6,95,115,101,116,117, - 112,137,4,0,0,115,40,0,0,0,4,9,4,1,8,3, - 18,1,10,1,10,1,6,1,10,1,6,1,2,2,10,1, - 10,1,2,128,10,3,8,1,10,1,10,1,10,2,14,1, - 4,251,114,17,0,0,0,114,248,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, - 0,115,38,0,0,0,116,0,124,0,124,1,131,2,1,0, - 116,1,106,2,160,3,116,4,161,1,1,0,116,1,106,2, - 160,3,116,5,161,1,1,0,100,1,83,0,41,2,122,48, - 73,110,115,116,97,108,108,32,105,109,112,111,114,116,101,114, - 115,32,102,111,114,32,98,117,105,108,116,105,110,32,97,110, - 100,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 78,41,6,114,248,0,0,0,114,18,0,0,0,114,214,0, - 0,0,114,132,0,0,0,114,175,0,0,0,114,193,0,0, - 0,41,2,114,246,0,0,0,114,247,0,0,0,32,32,114, - 5,0,0,0,218,8,95,105,110,115,116,97,108,108,172,4, - 0,0,115,6,0,0,0,10,2,12,2,16,1,114,17,0, - 0,0,114,249,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,32,0,0, - 0,100,1,100,2,108,0,125,0,124,0,97,1,124,0,160, - 2,116,3,106,4,116,5,25,0,161,1,1,0,100,2,83, - 0,41,3,122,57,73,110,115,116,97,108,108,32,105,109,112, - 111,114,116,101,114,115,32,116,104,97,116,32,114,101,113,117, - 105,114,101,32,101,120,116,101,114,110,97,108,32,102,105,108, - 101,115,121,115,116,101,109,32,97,99,99,101,115,115,114,26, - 0,0,0,78,41,6,218,26,95,102,114,111,122,101,110,95, - 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110, - 97,108,114,139,0,0,0,114,249,0,0,0,114,18,0,0, - 0,114,105,0,0,0,114,8,0,0,0,41,1,114,250,0, - 0,0,32,114,5,0,0,0,218,27,95,105,110,115,116,97, - 108,108,95,101,120,116,101,114,110,97,108,95,105,109,112,111, - 114,116,101,114,115,180,4,0,0,115,6,0,0,0,8,3, - 4,1,20,1,114,17,0,0,0,114,251,0,0,0,114,190, - 0,0,0,114,0,0,0,0,114,25,0,0,0,41,4,78, - 78,114,23,0,0,0,114,26,0,0,0,41,54,114,9,0, - 0,0,114,6,0,0,0,114,27,0,0,0,114,101,0,0, - 0,114,72,0,0,0,114,139,0,0,0,114,16,0,0,0, - 114,21,0,0,0,114,67,0,0,0,114,38,0,0,0,114, - 48,0,0,0,114,22,0,0,0,114,24,0,0,0,114,56, - 0,0,0,114,58,0,0,0,114,61,0,0,0,114,73,0, - 0,0,114,75,0,0,0,114,84,0,0,0,114,95,0,0, - 0,114,100,0,0,0,114,111,0,0,0,114,124,0,0,0, - 114,125,0,0,0,114,104,0,0,0,114,155,0,0,0,114, - 161,0,0,0,114,165,0,0,0,114,119,0,0,0,114,106, - 0,0,0,114,172,0,0,0,114,173,0,0,0,114,107,0, - 0,0,114,175,0,0,0,114,193,0,0,0,114,200,0,0, - 0,114,211,0,0,0,114,213,0,0,0,114,215,0,0,0, - 114,221,0,0,0,90,15,95,69,82,82,95,77,83,71,95, - 80,82,69,70,73,88,114,223,0,0,0,114,226,0,0,0, - 218,6,111,98,106,101,99,116,114,227,0,0,0,114,228,0, - 0,0,114,229,0,0,0,114,234,0,0,0,114,240,0,0, - 0,114,243,0,0,0,114,244,0,0,0,114,248,0,0,0, - 114,249,0,0,0,114,251,0,0,0,114,23,0,0,0,114, - 5,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,104,0,0,0,4,0,8,22,4,9,4,1,4, - 1,4,3,8,3,8,8,4,8,4,2,16,3,14,4,14, - 77,14,21,8,16,8,37,8,17,14,11,8,8,8,11,8, - 12,8,19,14,26,16,101,10,26,14,45,8,72,8,17,8, - 17,8,30,8,36,8,45,14,15,14,80,14,85,8,13,8, - 9,10,10,8,47,4,16,8,1,8,2,6,32,8,3,10, - 16,14,15,8,37,10,27,8,37,8,7,8,35,12,8,114, - 17,0,0,0, + 120,116,46,95,95,101,120,105,116,95,95,78,41,6,114,8, + 0,0,0,114,7,0,0,0,114,1,0,0,0,114,9,0, + 0,0,114,62,0,0,0,114,64,0,0,0,114,23,0,0, + 0,114,5,0,0,0,114,200,0,0,0,121,3,0,0,115, + 8,0,0,0,8,0,4,2,8,2,12,4,114,17,0,0, + 0,114,200,0,0,0,99,3,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,67,0,0,0,115,64,0,0,0, + 124,1,160,0,100,1,124,2,100,2,24,0,161,2,125,3, + 116,1,124,3,131,1,124,2,107,0,114,18,116,2,100,3, + 131,1,130,1,124,3,100,4,25,0,125,4,124,0,114,30, + 100,5,160,3,124,4,124,0,161,2,83,0,124,4,83,0, + 41,7,122,50,82,101,115,111,108,118,101,32,97,32,114,101, + 108,97,116,105,118,101,32,109,111,100,117,108,101,32,110,97, + 109,101,32,116,111,32,97,110,32,97,98,115,111,108,117,116, + 101,32,111,110,101,46,114,141,0,0,0,114,43,0,0,0, + 122,50,97,116,116,101,109,112,116,101,100,32,114,101,108,97, + 116,105,118,101,32,105,109,112,111,114,116,32,98,101,121,111, + 110,100,32,116,111,112,45,108,101,118,101,108,32,112,97,99, + 107,97,103,101,114,26,0,0,0,250,5,123,125,46,123,125, + 78,41,4,218,6,114,115,112,108,105,116,218,3,108,101,110, + 114,88,0,0,0,114,51,0,0,0,41,5,114,20,0,0, + 0,218,7,112,97,99,107,97,103,101,218,5,108,101,118,101, + 108,90,4,98,105,116,115,90,4,98,97,115,101,32,32,32, + 32,32,114,5,0,0,0,218,13,95,114,101,115,111,108,118, + 101,95,110,97,109,101,134,3,0,0,115,10,0,0,0,16, + 2,12,1,8,1,8,1,20,1,114,17,0,0,0,114,211, + 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,60,0,0,0,116,0,124, + 0,131,1,155,0,100,1,157,2,125,3,116,1,160,2,124, + 3,116,3,161,2,1,0,124,0,160,4,124,1,124,2,161, + 2,125,4,124,4,100,0,117,0,114,25,100,0,83,0,116, + 5,124,1,124,4,131,2,83,0,41,2,78,122,53,46,102, + 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, + 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, + 101,40,41,41,6,114,6,0,0,0,114,101,0,0,0,114, + 102,0,0,0,114,169,0,0,0,114,184,0,0,0,114,104, + 0,0,0,41,5,218,6,102,105,110,100,101,114,114,20,0, + 0,0,114,181,0,0,0,114,108,0,0,0,114,122,0,0, + 0,32,32,32,32,32,114,5,0,0,0,218,17,95,102,105, + 110,100,95,115,112,101,99,95,108,101,103,97,99,121,143,3, + 0,0,115,12,0,0,0,14,1,12,2,12,1,8,1,4, + 1,10,1,114,17,0,0,0,114,213,0,0,0,99,3,0, + 0,0,0,0,0,0,0,0,0,0,10,0,0,0,67,0, + 0,0,115,30,1,0,0,116,0,106,1,125,3,124,3,100, + 1,117,0,114,11,116,2,100,2,131,1,130,1,124,3,115, + 19,116,3,160,4,100,3,116,5,161,2,1,0,124,0,116, + 0,106,6,118,0,125,4,124,3,68,0,93,112,125,5,116, + 7,131,0,53,0,1,0,9,0,124,5,106,8,125,6,110, + 27,35,0,4,0,116,9,121,142,1,0,1,0,1,0,116, + 10,124,5,124,0,124,1,131,3,125,7,124,7,100,1,117, + 0,114,61,89,0,100,1,4,0,4,0,131,3,1,0,113, + 26,89,0,110,7,37,0,124,6,124,0,124,1,124,2,131, + 3,125,7,100,1,4,0,4,0,131,3,1,0,110,11,35, + 0,49,0,115,81,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,124,7,100,1,117,1,114,138,124,4,115, + 134,124,0,116,0,106,6,118,0,114,134,116,0,106,6,124, + 0,25,0,125,8,9,0,124,8,106,11,125,9,110,14,35, + 0,4,0,116,9,121,141,1,0,1,0,1,0,124,7,6, + 0,89,0,2,0,1,0,83,0,37,0,124,9,100,1,117, + 0,114,130,124,7,2,0,1,0,83,0,124,9,2,0,1, + 0,83,0,124,7,2,0,1,0,83,0,113,26,100,1,83, + 0,119,0,119,0,41,4,122,21,70,105,110,100,32,97,32, + 109,111,100,117,108,101,39,115,32,115,112,101,99,46,78,122, + 53,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, + 115,32,78,111,110,101,44,32,80,121,116,104,111,110,32,105, + 115,32,108,105,107,101,108,121,32,115,104,117,116,116,105,110, + 103,32,100,111,119,110,122,22,115,121,115,46,109,101,116,97, + 95,112,97,116,104,32,105,115,32,101,109,112,116,121,41,12, + 114,18,0,0,0,218,9,109,101,116,97,95,112,97,116,104, + 114,88,0,0,0,114,101,0,0,0,114,102,0,0,0,114, + 169,0,0,0,114,105,0,0,0,114,200,0,0,0,114,183, + 0,0,0,114,2,0,0,0,114,213,0,0,0,114,113,0, + 0,0,41,10,114,20,0,0,0,114,181,0,0,0,114,182, + 0,0,0,114,214,0,0,0,90,9,105,115,95,114,101,108, + 111,97,100,114,212,0,0,0,114,183,0,0,0,114,109,0, + 0,0,114,110,0,0,0,114,113,0,0,0,32,32,32,32, + 32,32,32,32,32,32,114,5,0,0,0,218,10,95,102,105, + 110,100,95,115,112,101,99,153,3,0,0,115,76,0,0,0, + 6,2,8,1,8,2,4,3,12,1,10,5,8,1,8,1, + 2,1,8,1,2,128,12,1,12,1,8,1,2,1,12,250, + 4,5,2,128,12,3,12,248,22,128,8,9,14,2,10,1, + 2,1,8,1,2,128,12,1,12,4,2,128,8,2,8,1, + 8,2,8,2,2,239,4,19,2,243,2,244,115,63,0,0, + 0,159,1,65,12,5,161,3,37,4,164,1,65,12,5,165, + 17,63,11,182,1,65,12,5,189,9,65,12,5,193,12,4, + 65,16,13,193,17,3,65,16,13,193,40,3,65,44,2,193, + 44,9,65,57,9,194,13,1,65,57,9,194,14,1,63,11, + 114,215,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,67,0,0,0,115,110,0,0,0,116, + 0,124,0,116,1,131,2,115,14,116,2,100,1,160,3,116, + 4,124,0,131,1,161,1,131,1,130,1,124,2,100,2,107, + 0,114,22,116,5,100,3,131,1,130,1,124,2,100,2,107, + 4,114,41,116,0,124,1,116,1,131,2,115,35,116,2,100, + 4,131,1,130,1,124,1,115,41,116,6,100,5,131,1,130, + 1,124,0,115,53,124,2,100,2,107,2,114,51,116,5,100, + 6,131,1,130,1,100,7,83,0,100,7,83,0,41,8,122, + 28,86,101,114,105,102,121,32,97,114,103,117,109,101,110,116, + 115,32,97,114,101,32,34,115,97,110,101,34,46,122,31,109, + 111,100,117,108,101,32,110,97,109,101,32,109,117,115,116,32, + 98,101,32,115,116,114,44,32,110,111,116,32,123,125,114,26, + 0,0,0,122,18,108,101,118,101,108,32,109,117,115,116,32, + 98,101,32,62,61,32,48,122,31,95,95,112,97,99,107,97, + 103,101,95,95,32,110,111,116,32,115,101,116,32,116,111,32, + 97,32,115,116,114,105,110,103,122,54,97,116,116,101,109,112, + 116,101,100,32,114,101,108,97,116,105,118,101,32,105,109,112, + 111,114,116,32,119,105,116,104,32,110,111,32,107,110,111,119, + 110,32,112,97,114,101,110,116,32,112,97,99,107,97,103,101, + 122,17,69,109,112,116,121,32,109,111,100,117,108,101,32,110, + 97,109,101,78,41,7,218,10,105,115,105,110,115,116,97,110, + 99,101,218,3,115,116,114,218,9,84,121,112,101,69,114,114, + 111,114,114,51,0,0,0,114,3,0,0,0,218,10,86,97, + 108,117,101,69,114,114,111,114,114,88,0,0,0,169,3,114, + 20,0,0,0,114,209,0,0,0,114,210,0,0,0,32,32, + 32,114,5,0,0,0,218,13,95,115,97,110,105,116,121,95, + 99,104,101,99,107,200,3,0,0,115,24,0,0,0,10,2, + 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, + 12,2,8,1,8,255,114,17,0,0,0,114,221,0,0,0, + 122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101, + 100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,67,0,0,0,115,20,1, + 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, + 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, + 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, + 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, + 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, + 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, + 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, + 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, + 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, + 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, + 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, + 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, + 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, + 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, + 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, + 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, + 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, + 83,0,119,0,119,0,41,8,78,114,141,0,0,0,114,26, + 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,112,97,99,107,97,103,101,114,19,0,0, + 0,233,2,0,0,0,122,27,67,97,110,110,111,116,32,115, + 101,116,32,97,110,32,97,116,116,114,105,98,117,116,101,32, + 111,110,32,122,18,32,102,111,114,32,99,104,105,108,100,32, + 109,111,100,117,108,101,32,41,15,114,142,0,0,0,114,18, + 0,0,0,114,105,0,0,0,114,75,0,0,0,114,154,0, + 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, + 71,114,51,0,0,0,218,19,77,111,100,117,108,101,78,111, + 116,70,111,117,110,100,69,114,114,111,114,114,215,0,0,0, + 114,173,0,0,0,114,11,0,0,0,114,101,0,0,0,114, + 102,0,0,0,114,169,0,0,0,41,9,114,20,0,0,0, + 218,7,105,109,112,111,114,116,95,114,181,0,0,0,114,143, + 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, + 108,101,114,108,0,0,0,114,109,0,0,0,114,110,0,0, + 0,90,5,99,104,105,108,100,32,32,32,32,32,32,32,32, + 32,114,5,0,0,0,218,23,95,102,105,110,100,95,97,110, + 100,95,108,111,97,100,95,117,110,108,111,99,107,101,100,219, + 3,0,0,115,68,0,0,0,4,1,14,1,4,1,10,1, + 10,1,10,2,10,1,10,1,2,1,8,1,2,128,12,1, + 16,1,14,1,2,128,10,1,8,1,18,1,8,2,4,1, + 10,2,14,1,2,1,12,1,4,4,2,128,12,253,16,1, + 14,1,4,1,2,128,4,0,2,253,2,242,115,31,0,0, + 0,165,3,41,0,169,22,63,7,193,37,6,65,45,0,193, + 45,21,66,5,7,194,8,1,66,5,7,194,9,1,63,7, + 114,226,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,67,0,0,0,115,132,0,0,0,116, + 0,124,0,131,1,53,0,1,0,116,1,106,2,160,3,124, + 0,116,4,161,2,125,2,124,2,116,4,117,0,114,27,116, + 5,124,0,124,1,131,2,2,0,100,1,4,0,4,0,131, + 3,1,0,83,0,9,0,100,1,4,0,4,0,131,3,1, + 0,110,11,35,0,49,0,115,39,119,4,37,0,1,0,1, + 0,1,0,89,0,1,0,1,0,124,2,100,1,117,0,114, + 60,100,2,160,6,124,0,161,1,125,3,116,7,124,3,124, + 0,100,3,141,2,130,1,116,8,124,0,131,1,1,0,124, + 2,83,0,41,4,122,25,70,105,110,100,32,97,110,100,32, + 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,46, + 78,122,40,105,109,112,111,114,116,32,111,102,32,123,125,32, + 104,97,108,116,101,100,59,32,78,111,110,101,32,105,110,32, + 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, + 41,9,114,58,0,0,0,114,18,0,0,0,114,105,0,0, + 0,114,39,0,0,0,218,14,95,78,69,69,68,83,95,76, + 79,65,68,73,78,71,114,226,0,0,0,114,51,0,0,0, + 114,224,0,0,0,114,73,0,0,0,41,4,114,20,0,0, + 0,114,225,0,0,0,114,110,0,0,0,114,83,0,0,0, + 32,32,32,32,114,5,0,0,0,218,14,95,102,105,110,100, + 95,97,110,100,95,108,111,97,100,254,3,0,0,115,30,0, + 0,0,10,2,14,1,8,1,8,1,14,253,2,2,12,254, + 22,128,8,5,2,1,6,1,2,255,12,2,8,2,4,1, + 115,12,0,0,0,132,16,34,3,162,4,38,11,167,3,38, + 11,114,228,0,0,0,114,26,0,0,0,99,3,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,42,0,0,0,116,0,124,0,124,1,124,2,131,3,1, + 0,124,2,100,1,107,4,114,16,116,1,124,0,124,1,124, + 2,131,3,125,0,116,2,124,0,116,3,131,2,83,0,41, + 3,97,50,1,0,0,73,109,112,111,114,116,32,97,110,100, + 32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,117, + 108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,32, + 110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,103, + 101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,32, + 32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,111, + 109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,108, + 32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,32, + 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, + 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,103, + 114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,100, + 101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,117, + 110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,32, + 98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,109, + 111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,111, + 114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,117, + 100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,97, + 99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,116, + 104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,111, + 116,46,10,10,32,32,32,32,114,26,0,0,0,78,41,4, + 114,221,0,0,0,114,211,0,0,0,114,228,0,0,0,218, + 11,95,103,99,100,95,105,109,112,111,114,116,114,220,0,0, + 0,32,32,32,114,5,0,0,0,114,229,0,0,0,14,4, + 0,0,115,8,0,0,0,12,9,8,1,12,1,10,1,114, + 17,0,0,0,114,229,0,0,0,169,1,218,9,114,101,99, + 117,114,115,105,118,101,99,3,0,0,0,0,0,0,0,1, + 0,0,0,9,0,0,0,67,0,0,0,115,216,0,0,0, + 124,1,68,0,93,102,125,4,116,0,124,4,116,1,131,2, + 115,32,124,3,114,17,124,0,106,2,100,1,23,0,125,5, + 110,2,100,2,125,5,116,3,100,3,124,5,155,0,100,4, + 116,4,124,4,131,1,106,2,155,0,157,4,131,1,130,1, + 124,4,100,5,107,2,114,53,124,3,115,52,116,5,124,0, + 100,6,131,2,114,52,116,6,124,0,124,0,106,7,124,2, + 100,7,100,8,141,4,1,0,113,2,116,5,124,0,124,4, + 131,2,115,104,100,9,160,8,124,0,106,2,124,4,161,2, + 125,6,9,0,116,9,124,2,124,6,131,2,1,0,113,2, + 35,0,4,0,116,10,121,107,1,0,125,7,1,0,124,7, + 106,11,124,6,107,2,114,98,116,12,106,13,160,14,124,6, + 116,15,161,2,100,10,117,1,114,98,89,0,100,10,125,7, + 126,7,113,2,130,0,100,10,125,7,126,7,119,1,37,0, + 113,2,124,0,83,0,119,0,41,11,122,238,70,105,103,117, + 114,101,32,111,117,116,32,119,104,97,116,32,95,95,105,109, + 112,111,114,116,95,95,32,115,104,111,117,108,100,32,114,101, + 116,117,114,110,46,10,10,32,32,32,32,84,104,101,32,105, + 109,112,111,114,116,95,32,112,97,114,97,109,101,116,101,114, + 32,105,115,32,97,32,99,97,108,108,97,98,108,101,32,119, + 104,105,99,104,32,116,97,107,101,115,32,116,104,101,32,110, + 97,109,101,32,111,102,32,109,111,100,117,108,101,32,116,111, + 10,32,32,32,32,105,109,112,111,114,116,46,32,73,116,32, + 105,115,32,114,101,113,117,105,114,101,100,32,116,111,32,100, + 101,99,111,117,112,108,101,32,116,104,101,32,102,117,110,99, + 116,105,111,110,32,102,114,111,109,32,97,115,115,117,109,105, + 110,103,32,105,109,112,111,114,116,108,105,98,39,115,10,32, + 32,32,32,105,109,112,111,114,116,32,105,109,112,108,101,109, + 101,110,116,97,116,105,111,110,32,105,115,32,100,101,115,105, + 114,101,100,46,10,10,32,32,32,32,122,8,46,95,95,97, + 108,108,95,95,122,13,96,96,102,114,111,109,32,108,105,115, + 116,39,39,122,8,73,116,101,109,32,105,110,32,122,18,32, + 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, + 32,250,1,42,218,7,95,95,97,108,108,95,95,84,114,230, + 0,0,0,114,206,0,0,0,78,41,16,114,216,0,0,0, + 114,217,0,0,0,114,8,0,0,0,114,218,0,0,0,114, + 3,0,0,0,114,10,0,0,0,218,16,95,104,97,110,100, + 108,101,95,102,114,111,109,108,105,115,116,114,233,0,0,0, + 114,51,0,0,0,114,75,0,0,0,114,224,0,0,0,114, + 20,0,0,0,114,18,0,0,0,114,105,0,0,0,114,39, + 0,0,0,114,227,0,0,0,41,8,114,110,0,0,0,218, + 8,102,114,111,109,108,105,115,116,114,225,0,0,0,114,231, + 0,0,0,218,1,120,90,5,119,104,101,114,101,90,9,102, + 114,111,109,95,110,97,109,101,90,3,101,120,99,32,32,32, + 32,32,32,32,32,114,5,0,0,0,114,234,0,0,0,29, + 4,0,0,115,58,0,0,0,8,10,10,1,4,1,12,1, + 4,2,10,1,8,1,8,255,8,2,14,1,10,1,2,1, + 6,255,2,128,10,2,14,1,2,1,12,1,2,128,12,1, + 10,4,16,1,2,255,10,2,2,1,10,128,2,245,4,12, + 2,248,115,36,0,0,0,193,2,5,65,8,2,193,8,7, + 65,39,9,193,15,14,65,35,9,193,34,1,65,35,9,193, + 35,4,65,39,9,193,43,1,65,39,9,114,234,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0, + 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, + 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, + 100,3,117,1,114,41,124,2,100,3,117,1,114,39,124,1, + 124,2,106,1,107,3,114,39,116,2,160,3,100,4,124,1, + 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, + 100,7,100,8,166,3,1,0,124,1,83,0,124,2,100,3, + 117,1,114,48,124,2,106,1,83,0,116,2,160,3,100,9, + 116,4,100,7,100,8,166,3,1,0,124,0,100,10,25,0, + 125,1,100,11,124,0,118,1,114,71,124,1,160,5,100,12, + 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, + 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, + 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, + 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, + 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, + 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, + 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, + 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, + 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, + 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, + 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, + 46,10,10,32,32,32,32,114,158,0,0,0,114,113,0,0, + 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, + 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, + 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, + 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, + 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, + 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, + 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, + 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, + 110,100,32,95,95,112,97,116,104,95,95,114,8,0,0,0, + 114,154,0,0,0,114,141,0,0,0,114,26,0,0,0,41, + 6,114,39,0,0,0,114,143,0,0,0,114,101,0,0,0, + 114,102,0,0,0,114,169,0,0,0,114,142,0,0,0,41, + 3,218,7,103,108,111,98,97,108,115,114,209,0,0,0,114, + 109,0,0,0,32,32,32,114,5,0,0,0,218,17,95,99, + 97,108,99,95,95,95,112,97,99,107,97,103,101,95,95,66, + 4,0,0,115,42,0,0,0,10,7,10,1,8,1,18,1, + 6,1,2,1,4,255,4,1,6,255,4,2,6,254,4,3, + 8,1,6,1,6,2,4,2,6,254,8,3,8,1,14,1, + 4,1,114,17,0,0,0,114,240,0,0,0,114,23,0,0, + 0,99,5,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,67,0,0,0,115,174,0,0,0,124,4,100,1,107, + 2,114,9,116,0,124,0,131,1,125,5,110,18,124,1,100, + 2,117,1,114,15,124,1,110,1,105,0,125,6,116,1,124, + 6,131,1,125,7,116,0,124,0,124,7,124,4,131,3,125, + 5,124,3,115,74,124,4,100,1,107,2,114,42,116,0,124, + 0,160,2,100,3,161,1,100,1,25,0,131,1,83,0,124, + 0,115,46,124,5,83,0,116,3,124,0,131,1,116,3,124, + 0,160,2,100,3,161,1,100,1,25,0,131,1,24,0,125, + 8,116,4,106,5,124,5,106,6,100,2,116,3,124,5,106, + 6,131,1,124,8,24,0,133,2,25,0,25,0,83,0,116, + 7,124,5,100,4,131,2,114,85,116,8,124,5,124,3,116, + 0,131,3,83,0,124,5,83,0,41,5,97,215,1,0,0, + 73,109,112,111,114,116,32,97,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,84,104,101,32,39,103,108,111,98,97, + 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, + 117,115,101,100,32,116,111,32,105,110,102,101,114,32,119,104, + 101,114,101,32,116,104,101,32,105,109,112,111,114,116,32,105, + 115,32,111,99,99,117,114,114,105,110,103,32,102,114,111,109, + 10,32,32,32,32,116,111,32,104,97,110,100,108,101,32,114, + 101,108,97,116,105,118,101,32,105,109,112,111,114,116,115,46, + 32,84,104,101,32,39,108,111,99,97,108,115,39,32,97,114, + 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, + 100,46,32,84,104,101,10,32,32,32,32,39,102,114,111,109, + 108,105,115,116,39,32,97,114,103,117,109,101,110,116,32,115, + 112,101,99,105,102,105,101,115,32,119,104,97,116,32,115,104, + 111,117,108,100,32,101,120,105,115,116,32,97,115,32,97,116, + 116,114,105,98,117,116,101,115,32,111,110,32,116,104,101,32, + 109,111,100,117,108,101,10,32,32,32,32,98,101,105,110,103, + 32,105,109,112,111,114,116,101,100,32,40,101,46,103,46,32, + 96,96,102,114,111,109,32,109,111,100,117,108,101,32,105,109, + 112,111,114,116,32,60,102,114,111,109,108,105,115,116,62,96, + 96,41,46,32,32,84,104,101,32,39,108,101,118,101,108,39, + 10,32,32,32,32,97,114,103,117,109,101,110,116,32,114,101, + 112,114,101,115,101,110,116,115,32,116,104,101,32,112,97,99, + 107,97,103,101,32,108,111,99,97,116,105,111,110,32,116,111, + 32,105,109,112,111,114,116,32,102,114,111,109,32,105,110,32, + 97,32,114,101,108,97,116,105,118,101,10,32,32,32,32,105, + 109,112,111,114,116,32,40,101,46,103,46,32,96,96,102,114, + 111,109,32,46,46,112,107,103,32,105,109,112,111,114,116,32, + 109,111,100,96,96,32,119,111,117,108,100,32,104,97,118,101, + 32,97,32,39,108,101,118,101,108,39,32,111,102,32,50,41, + 46,10,10,32,32,32,32,114,26,0,0,0,78,114,141,0, + 0,0,114,154,0,0,0,41,9,114,229,0,0,0,114,240, + 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,208, + 0,0,0,114,18,0,0,0,114,105,0,0,0,114,8,0, + 0,0,114,10,0,0,0,114,234,0,0,0,41,9,114,20, + 0,0,0,114,239,0,0,0,218,6,108,111,99,97,108,115, + 114,235,0,0,0,114,210,0,0,0,114,110,0,0,0,90, + 8,103,108,111,98,97,108,115,95,114,209,0,0,0,90,7, + 99,117,116,95,111,102,102,32,32,32,32,32,32,32,32,32, + 114,5,0,0,0,218,10,95,95,105,109,112,111,114,116,95, + 95,93,4,0,0,115,30,0,0,0,8,11,10,1,16,2, + 8,1,12,1,4,1,8,3,18,1,4,1,4,1,26,4, + 30,3,10,1,12,1,4,2,114,17,0,0,0,114,243,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,115,38,0,0,0,116,0,160,1, + 124,0,161,1,125,1,124,1,100,0,117,0,114,15,116,2, + 100,1,124,0,23,0,131,1,130,1,116,3,124,1,131,1, + 83,0,41,2,78,122,25,110,111,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,32,110,97,109,101,100,32, + 41,4,114,175,0,0,0,114,183,0,0,0,114,88,0,0, + 0,114,173,0,0,0,41,2,114,20,0,0,0,114,109,0, + 0,0,32,32,114,5,0,0,0,218,18,95,98,117,105,108, + 116,105,110,95,102,114,111,109,95,110,97,109,101,130,4,0, + 0,115,8,0,0,0,10,1,8,1,12,1,8,1,114,17, + 0,0,0,114,244,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,166,0, + 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, + 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, + 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, + 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, + 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, + 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, + 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, + 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, + 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, + 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, + 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, + 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, + 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, + 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, + 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, + 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, + 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, + 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, + 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, + 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, + 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, + 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, + 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, + 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, + 10,10,32,32,32,32,41,3,114,27,0,0,0,114,101,0, + 0,0,114,72,0,0,0,78,41,15,114,65,0,0,0,114, + 18,0,0,0,114,3,0,0,0,114,105,0,0,0,218,5, + 105,116,101,109,115,114,216,0,0,0,114,87,0,0,0,114, + 175,0,0,0,114,98,0,0,0,114,193,0,0,0,114,155, + 0,0,0,114,161,0,0,0,114,8,0,0,0,114,244,0, + 0,0,114,11,0,0,0,41,10,218,10,115,121,115,95,109, + 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, + 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, + 20,0,0,0,114,110,0,0,0,114,122,0,0,0,114,109, + 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, + 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,32,32, + 32,32,32,32,32,32,32,32,114,5,0,0,0,218,6,95, + 115,101,116,117,112,137,4,0,0,115,40,0,0,0,4,9, + 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, + 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, + 10,2,14,1,4,251,114,17,0,0,0,114,248,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,38,0,0,0,116,0,124,0,124,1, + 131,2,1,0,116,1,106,2,160,3,116,4,161,1,1,0, + 116,1,106,2,160,3,116,5,161,1,1,0,100,1,83,0, + 41,2,122,48,73,110,115,116,97,108,108,32,105,109,112,111, + 114,116,101,114,115,32,102,111,114,32,98,117,105,108,116,105, + 110,32,97,110,100,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,78,41,6,114,248,0,0,0,114,18,0,0, + 0,114,214,0,0,0,114,132,0,0,0,114,175,0,0,0, + 114,193,0,0,0,41,2,114,246,0,0,0,114,247,0,0, + 0,32,32,114,5,0,0,0,218,8,95,105,110,115,116,97, + 108,108,172,4,0,0,115,6,0,0,0,10,2,12,2,16, + 1,114,17,0,0,0,114,249,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,32,0,0,0,100,1,100,2,108,0,125,0,124,0,97, + 1,124,0,160,2,116,3,106,4,116,5,25,0,161,1,1, + 0,100,2,83,0,41,3,122,57,73,110,115,116,97,108,108, + 32,105,109,112,111,114,116,101,114,115,32,116,104,97,116,32, + 114,101,113,117,105,114,101,32,101,120,116,101,114,110,97,108, + 32,102,105,108,101,115,121,115,116,101,109,32,97,99,99,101, + 115,115,114,26,0,0,0,78,41,6,218,26,95,102,114,111, + 122,101,110,95,105,109,112,111,114,116,108,105,98,95,101,120, + 116,101,114,110,97,108,114,139,0,0,0,114,249,0,0,0, + 114,18,0,0,0,114,105,0,0,0,114,8,0,0,0,41, + 1,114,250,0,0,0,32,114,5,0,0,0,218,27,95,105, + 110,115,116,97,108,108,95,101,120,116,101,114,110,97,108,95, + 105,109,112,111,114,116,101,114,115,180,4,0,0,115,6,0, + 0,0,8,3,4,1,20,1,114,17,0,0,0,114,251,0, + 0,0,114,190,0,0,0,114,0,0,0,0,114,25,0,0, + 0,41,4,78,78,114,23,0,0,0,114,26,0,0,0,41, + 54,114,9,0,0,0,114,6,0,0,0,114,27,0,0,0, + 114,101,0,0,0,114,72,0,0,0,114,139,0,0,0,114, + 16,0,0,0,114,21,0,0,0,114,67,0,0,0,114,38, + 0,0,0,114,48,0,0,0,114,22,0,0,0,114,24,0, + 0,0,114,56,0,0,0,114,58,0,0,0,114,61,0,0, + 0,114,73,0,0,0,114,75,0,0,0,114,84,0,0,0, + 114,95,0,0,0,114,100,0,0,0,114,111,0,0,0,114, + 124,0,0,0,114,125,0,0,0,114,104,0,0,0,114,155, + 0,0,0,114,161,0,0,0,114,165,0,0,0,114,119,0, + 0,0,114,106,0,0,0,114,172,0,0,0,114,173,0,0, + 0,114,107,0,0,0,114,175,0,0,0,114,193,0,0,0, + 114,200,0,0,0,114,211,0,0,0,114,213,0,0,0,114, + 215,0,0,0,114,221,0,0,0,90,15,95,69,82,82,95, + 77,83,71,95,80,82,69,70,73,88,114,223,0,0,0,114, + 226,0,0,0,218,6,111,98,106,101,99,116,114,227,0,0, + 0,114,228,0,0,0,114,229,0,0,0,114,234,0,0,0, + 114,240,0,0,0,114,243,0,0,0,114,244,0,0,0,114, + 248,0,0,0,114,249,0,0,0,114,251,0,0,0,114,23, + 0,0,0,114,5,0,0,0,218,8,60,109,111,100,117,108, + 101,62,1,0,0,0,115,104,0,0,0,4,0,8,22,4, + 9,4,1,4,1,4,3,8,3,8,8,4,8,4,2,16, + 3,14,4,14,77,14,21,8,16,8,37,8,17,14,11,8, + 8,8,11,8,12,8,19,14,26,16,101,10,26,14,45,8, + 72,8,17,8,17,8,30,8,36,8,45,14,15,14,80,14, + 85,8,13,8,9,10,10,8,47,4,16,8,1,8,2,6, + 32,8,3,10,16,14,15,8,37,10,27,8,37,8,7,8, + 35,12,8,114,17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 69dc6cad421c1c..f8642890580d7b 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -92,1232 +92,1256 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,3,0,0,0,3,0,0,0, - 115,62,0,0,0,116,0,106,1,160,2,116,3,161,1,114, - 25,116,0,106,1,160,2,116,4,161,1,114,15,100,1,137, - 1,110,2,100,2,137,1,135,1,102,1,100,3,100,4,132, - 8,125,0,124,0,83,0,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,2,0,0,0,19,0,0,0,115,20,0,0,0,116, - 0,106,1,106,2,12,0,111,9,136,0,116,3,106,4,118, - 0,83,0,41,2,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,78,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,169,1,218,3,107,101,121,128,114,7, - 0,0,0,218,11,95,114,101,108,97,120,95,99,97,115,101, - 67,0,0,0,243,2,0,0,0,20,2,114,9,0,0,0, - 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,1,0,0,0,83,0,0,0,243,4,0,0, - 0,100,1,83,0,41,3,122,53,84,114,117,101,32,105,102, + 115,64,0,0,0,135,1,116,0,106,1,160,2,116,3,161, + 1,114,26,116,0,106,1,160,2,116,4,161,1,114,16,100, + 1,138,1,110,2,100,2,138,1,136,1,102,1,100,3,100, + 4,132,8,125,0,124,0,83,0,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,2,0,0,0,19,0,0,0,115,20,0,0, + 0,116,0,106,1,106,2,12,0,111,9,137,0,116,3,106, + 4,118,0,83,0,41,2,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,46,70,78, - 114,12,0,0,0,114,12,0,0,0,114,7,0,0,0,114, - 22,0,0,0,71,0,0,0,243,2,0,0,0,4,2,114, - 9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0,0,32, - 64,114,7,0,0,0,218,16,95,109,97,107,101,95,114,101, - 108,97,120,95,99,97,115,101,60,0,0,0,115,16,0,0, - 0,12,1,12,1,6,1,4,2,12,2,4,7,8,253,4, - 3,114,9,0,0,0,114,30,0,0,0,99,1,0,0,0, - 0,0,0,0,0,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,5,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,78, - 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101, - 115,41,1,218,1,120,32,114,7,0,0,0,218,12,95,112, - 97,99,107,95,117,105,110,116,51,50,79,0,0,0,114,23, - 0,0,0,114,9,0,0,0,114,37,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,243,28,0,0,0,116,0,124,0,131,1,100,1,107, - 2,115,8,74,0,130,1,116,1,160,2,124,0,100,2,161, - 2,83,0,41,4,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,32,0,0,0,114,33,0,0,0, - 78,169,3,114,4,0,0,0,114,34,0,0,0,218,10,102, - 114,111,109,95,98,121,116,101,115,169,1,218,4,100,97,116, - 97,32,114,7,0,0,0,218,14,95,117,110,112,97,99,107, - 95,117,105,110,116,51,50,84,0,0,0,243,4,0,0,0, - 16,2,12,1,114,9,0,0,0,114,43,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114,41,0,0,0, - 32,114,7,0,0,0,218,14,95,117,110,112,97,99,107,95, - 117,105,110,116,49,54,89,0,0,0,114,44,0,0,0,114, - 9,0,0,0,114,46,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,71,0,0,0,115,228, - 0,0,0,124,0,115,4,100,1,83,0,116,0,124,0,131, - 1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4,116, - 5,161,1,115,38,124,3,160,6,116,5,161,1,114,51,124, - 3,160,7,116,8,161,1,112,44,124,1,125,1,116,9,124, - 4,23,0,103,1,125,2,113,24,124,3,160,6,100,4,161, - 1,114,76,124,1,160,10,161,0,124,3,160,10,161,0,107, - 3,114,70,124,3,125,1,124,4,103,1,125,2,113,24,124, - 2,160,11,124,4,161,1,1,0,113,24,124,3,112,79,124, - 1,125,1,124,2,160,11,124,4,161,1,1,0,113,24,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,107,124,2,100,3,25,0,115, - 107,124,1,116,9,23,0,83,0,124,1,116,9,160,12,124, - 2,161,1,23,0,83,0,41,8,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,10,0,0,0,114, - 3,0,0,0,114,0,0,0,0,114,11,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,83, - 0,0,0,243,26,0,0,0,103,0,124,0,93,9,125,1, - 124,1,114,2,124,1,160,0,116,1,161,1,145,2,113,2, - 83,0,114,12,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,41,2,114,5,0,0,0,218,1,112,32,32,114,7, - 0,0,0,218,10,60,108,105,115,116,99,111,109,112,62,119, - 0,0,0,115,2,0,0,0,26,0,114,9,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,78, - 41,13,114,4,0,0,0,218,3,109,97,112,114,19,0,0, - 0,218,15,95,112,97,116,104,95,115,112,108,105,116,114,111, - 111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32,114,7,0,0, - 0,218,10,95,112,97,116,104,95,106,111,105,110,96,0,0, - 0,115,42,0,0,0,4,2,4,1,12,1,8,1,4,1, - 4,1,20,1,20,1,14,1,12,1,10,1,16,1,4,3, - 8,1,12,2,8,2,12,1,14,1,20,1,8,2,14,1, - 114,9,0,0,0,114,67,0,0,0,99,0,0,0,0,0, - 0,0,0,0,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,4,114,47,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 83,0,0,0,114,48,0,0,0,114,12,0,0,0,114,49, - 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, - 32,32,114,7,0,0,0,114,53,0,0,0,128,0,0,0, - 115,6,0,0,0,6,0,6,1,14,255,114,9,0,0,0, - 114,54,0,0,0,78,41,2,114,59,0,0,0,114,62,0, - 0,0,41,1,114,63,0,0,0,32,114,7,0,0,0,114, - 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, - 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,3,0,0,0,115,66,0, - 0,0,116,0,135,2,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,19, - 100,4,136,2,102,2,83,0,136,2,100,5,124,1,133,2, - 25,0,136,2,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,4,0,0,0,51,0,0,0,115,26,0, - 0,0,129,0,124,0,93,8,125,1,136,2,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,41,3,114,5,0,0,0,114, - 52,0,0,0,114,65,0,0,0,32,32,128,114,7,0,0, - 0,114,8,0,0,0,134,0,0,0,115,4,0,0,0,6, - 128,20,0,114,9,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,10,0, - 0,0,78,114,3,0,0,0,41,2,218,3,109,97,120,114, - 51,0,0,0,41,3,114,65,0,0,0,218,1,105,114,65, - 0,0,0,96,32,64,114,7,0,0,0,218,11,95,112,97, - 116,104,95,115,112,108,105,116,132,0,0,0,115,8,0,0, - 0,22,2,8,1,8,1,28,1,114,9,0,0,0,114,73, - 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19,0,0, - 0,90,4,115,116,97,116,169,1,114,65,0,0,0,32,114, - 7,0,0,0,218,10,95,112,97,116,104,95,115,116,97,116, - 140,0,0,0,115,2,0,0,0,10,7,114,9,0,0,0, - 114,75,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,50,0,0,0,9, - 0,116,0,124,0,131,1,125,2,110,11,35,0,4,0,116, - 1,121,24,1,0,1,0,1,0,89,0,100,1,83,0,37, - 0,124,2,106,2,100,2,64,0,124,1,107,2,83,0,119, - 0,41,4,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,78,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,32,32, - 32,114,7,0,0,0,218,18,95,112,97,116,104,95,105,115, - 95,109,111,100,101,95,116,121,112,101,150,0,0,0,115,16, - 0,0,0,2,2,10,1,2,128,12,1,6,1,2,128,14, - 1,2,254,115,12,0,0,0,129,4,6,0,134,7,16,7, - 152,1,16,7,114,79,0,0,0,99,1,0,0,0,0,0, - 0,0,0,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,3,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,78,41,1,114,79,0,0,0,114,74,0, - 0,0,32,114,7,0,0,0,218,12,95,112,97,116,104,95, - 105,115,102,105,108,101,159,0,0,0,243,2,0,0,0,10, - 2,114,9,0,0,0,114,80,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, - 115,22,0,0,0,124,0,115,6,116,0,160,1,161,0,125, - 0,116,2,124,0,100,1,131,2,83,0,41,3,122,30,82, + 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,78,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,169,1,218,3,107,101,121,128, + 114,7,0,0,0,218,11,95,114,101,108,97,120,95,99,97, + 115,101,67,0,0,0,243,2,0,0,0,20,2,114,9,0, + 0,0,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,1,0,0,0,83,0,0,0,243,4, + 0,0,0,100,1,83,0,41,3,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,78,114,12,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,22,0,0,0,71,0,0,0,243,2,0,0,0,4, + 2,114,9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0, + 0,32,64,114,7,0,0,0,218,16,95,109,97,107,101,95, + 114,101,108,97,120,95,99,97,115,101,60,0,0,0,115,18, + 0,0,0,2,128,12,1,12,1,6,1,4,2,12,2,4, + 7,8,253,4,3,114,9,0,0,0,114,30,0,0,0,99, + 1,0,0,0,0,0,0,0,0,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,5,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,78,41,2,218,3,105,110,116,218,8,116,111,95, + 98,121,116,101,115,41,1,218,1,120,32,114,7,0,0,0, + 218,12,95,112,97,99,107,95,117,105,110,116,51,50,79,0, + 0,0,114,23,0,0,0,114,9,0,0,0,114,37,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,67,0,0,0,243,28,0,0,0,116,0,124,0,131, + 1,100,1,107,2,115,8,74,0,130,1,116,1,160,2,124, + 0,100,2,161,2,83,0,41,4,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,32,0,0,0,114, + 33,0,0,0,78,169,3,114,4,0,0,0,114,34,0,0, + 0,218,10,102,114,111,109,95,98,121,116,101,115,169,1,218, + 4,100,97,116,97,32,114,7,0,0,0,218,14,95,117,110, + 112,97,99,107,95,117,105,110,116,51,50,84,0,0,0,243, + 4,0,0,0,16,2,12,1,114,9,0,0,0,114,43,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114, + 41,0,0,0,32,114,7,0,0,0,218,14,95,117,110,112, + 97,99,107,95,117,105,110,116,49,54,89,0,0,0,114,44, + 0,0,0,114,9,0,0,0,114,46,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,71,0, + 0,0,115,228,0,0,0,124,0,115,4,100,1,83,0,116, + 0,124,0,131,1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124, + 3,160,4,116,5,161,1,115,38,124,3,160,6,116,5,161, + 1,114,51,124,3,160,7,116,8,161,1,112,44,124,1,125, + 1,116,9,124,4,23,0,103,1,125,2,113,24,124,3,160, + 6,100,4,161,1,114,76,124,1,160,10,161,0,124,3,160, + 10,161,0,107,3,114,70,124,3,125,1,124,4,103,1,125, + 2,113,24,124,2,160,11,124,4,161,1,1,0,113,24,124, + 3,112,79,124,1,125,1,124,2,160,11,124,4,161,1,1, + 0,113,24,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,107,124,2,100, + 3,25,0,115,107,124,1,116,9,23,0,83,0,124,1,116, + 9,160,12,124,2,161,1,23,0,83,0,41,8,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,105,115,100,105,114,46,105,0,64, - 0,0,78,41,3,114,19,0,0,0,218,6,103,101,116,99, - 119,100,114,79,0,0,0,114,74,0,0,0,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,105,115,100,105,114,164, - 0,0,0,115,6,0,0,0,4,2,8,1,10,1,114,9, - 0,0,0,114,83,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,62,0, - 0,0,124,0,115,4,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,30,124,1,160,4, - 100,6,161,1,112,30,124,1,160,5,100,4,161,1,83,0, - 41,8,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,3,0,0,0,122,2,92,92,78,41,6,114,19, - 0,0,0,114,56,0,0,0,218,7,114,101,112,108,97,99, - 101,114,4,0,0,0,114,27,0,0,0,114,58,0,0,0, - 41,2,114,65,0,0,0,114,64,0,0,0,32,32,114,7, - 0,0,0,218,11,95,112,97,116,104,95,105,115,97,98,115, - 172,0,0,0,115,8,0,0,0,4,2,4,1,22,1,32, - 1,114,9,0,0,0,114,86,0,0,0,99,1,0,0,0, + 115,46,112,97,116,104,46,106,111,105,110,40,41,46,114,10, + 0,0,0,114,3,0,0,0,114,0,0,0,0,114,11,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,83,0,0,0,243,26,0,0,0,103,0,124,0, + 93,9,125,1,124,1,114,2,124,1,160,0,116,1,161,1, + 145,2,113,2,83,0,114,12,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,41,2,114,5,0,0,0,218,1,112, + 32,32,114,7,0,0,0,218,10,60,108,105,115,116,99,111, + 109,112,62,119,0,0,0,115,2,0,0,0,26,0,114,9, + 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,78,41,13,114,4,0,0,0,218,3,109,97,112, + 114,19,0,0,0,218,15,95,112,97,116,104,95,115,112,108, + 105,116,114,111,111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32, + 114,7,0,0,0,218,10,95,112,97,116,104,95,106,111,105, + 110,96,0,0,0,115,42,0,0,0,4,2,4,1,12,1, + 8,1,4,1,4,1,20,1,20,1,14,1,12,1,10,1, + 16,1,4,3,8,1,12,2,8,2,12,1,14,1,20,1, + 8,2,14,1,114,9,0,0,0,114,67,0,0,0,99,0, + 0,0,0,0,0,0,0,0,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,4,114,47, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,83,0,0,0,114,48,0,0,0,114,12,0, + 0,0,114,49,0,0,0,41,2,114,5,0,0,0,218,4, + 112,97,114,116,32,32,114,7,0,0,0,114,53,0,0,0, + 128,0,0,0,115,6,0,0,0,6,0,6,1,14,255,114, + 9,0,0,0,114,54,0,0,0,78,41,2,114,59,0,0, + 0,114,62,0,0,0,41,1,114,63,0,0,0,32,114,7, + 0,0,0,114,67,0,0,0,126,0,0,0,115,6,0,0, + 0,10,2,2,1,8,255,114,9,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, + 0,115,68,0,0,0,135,2,116,0,136,2,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,20,100,4,137,2,102,2,83,0,137,2, + 100,5,124,1,133,2,25,0,137,2,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,4,0,0,0,51, + 0,0,0,115,26,0,0,0,129,0,124,0,93,8,125,1, + 137,2,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,41,3, + 114,5,0,0,0,114,52,0,0,0,114,65,0,0,0,32, + 32,128,114,7,0,0,0,114,8,0,0,0,134,0,0,0, + 115,4,0,0,0,6,128,20,0,114,9,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,10,0,0,0,78,114,3,0,0,0,41,2, + 218,3,109,97,120,114,51,0,0,0,41,3,114,65,0,0, + 0,218,1,105,114,65,0,0,0,96,32,64,114,7,0,0, + 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, + 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, + 1,114,9,0,0,0,114,73,0,0,0,99,1,0,0,0, 0,0,0,0,0,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, - 2,114,84,0,0,0,78,41,2,114,27,0,0,0,114,51, - 0,0,0,114,74,0,0,0,32,114,7,0,0,0,114,86, - 0,0,0,180,0,0,0,114,81,0,0,0,114,9,0,0, - 0,233,182,1,0,0,99,3,0,0,0,0,0,0,0,0, - 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, - 9,0,116,7,160,8,124,4,100,3,161,2,53,0,125,5, - 124,5,160,9,124,1,161,1,1,0,100,4,4,0,4,0, - 131,3,1,0,110,11,35,0,49,0,115,48,119,4,37,0, - 1,0,1,0,1,0,89,0,1,0,1,0,116,2,160,10, - 124,3,124,0,161,2,1,0,100,4,83,0,35,0,4,0, - 116,11,121,88,1,0,1,0,1,0,9,0,116,2,160,12, - 124,3,161,1,1,0,130,0,35,0,4,0,116,11,121,87, - 1,0,1,0,1,0,89,0,130,0,37,0,37,0,119,0, - 119,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, - 87,0,0,0,90,2,119,98,78,41,13,218,6,102,111,114, - 109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0,0,90,6,117,110,108, - 105,110,107,41,6,114,65,0,0,0,114,42,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,32,32,32,32,32,32,114,7, - 0,0,0,218,13,95,119,114,105,116,101,95,97,116,111,109, - 105,99,185,0,0,0,115,44,0,0,0,16,5,6,1,22, - 1,4,255,2,2,14,3,10,1,12,255,22,128,16,2,2, - 128,12,1,2,1,10,1,2,3,2,128,12,254,2,1,2, - 1,4,128,2,254,2,253,115,69,0,0,0,153,6,62,0, - 159,6,43,3,165,6,62,0,171,4,47,11,175,1,62,0, - 176,3,47,11,179,9,62,0,190,7,65,22,7,193,6,5, - 65,12,6,193,11,1,65,22,7,193,12,7,65,21,13,193, - 19,3,65,22,7,193,23,1,65,21,13,193,24,1,65,22, - 7,114,95,0,0,0,105,126,13,0,0,114,45,0,0,0, - 114,33,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,119,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,5,0,0, - 0,67,0,0,0,115,80,1,0,0,124,1,100,1,117,1, - 114,26,116,0,160,1,100,2,116,2,161,2,1,0,124,2, - 100,1,117,1,114,20,100,3,125,3,116,3,124,3,131,1, - 130,1,124,1,114,24,100,4,110,1,100,5,125,2,116,4, + 115,10,0,0,0,116,0,160,1,124,0,161,1,83,0,41, + 2,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,78,41,2,114,19,0,0,0,90,4,115,116,97,116,169, + 1,114,65,0,0,0,32,114,7,0,0,0,218,10,95,112, + 97,116,104,95,115,116,97,116,140,0,0,0,115,2,0,0, + 0,10,7,114,9,0,0,0,114,75,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,50,0,0,0,9,0,116,0,124,0,131,1,125, + 2,110,11,35,0,4,0,116,1,121,24,1,0,1,0,1, + 0,89,0,100,1,83,0,37,0,124,2,106,2,100,2,64, + 0,124,1,107,2,83,0,119,0,41,4,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,78,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,32,32,32,114,7,0,0,0,218,18, + 95,112,97,116,104,95,105,115,95,109,111,100,101,95,116,121, + 112,101,150,0,0,0,115,16,0,0,0,2,2,10,1,2, + 128,12,1,6,1,2,128,14,1,2,254,115,12,0,0,0, + 129,4,6,0,134,7,16,7,152,1,16,7,114,79,0,0, + 0,99,1,0,0,0,0,0,0,0,0,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,3,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,78,41,1, + 114,79,0,0,0,114,74,0,0,0,32,114,7,0,0,0, + 218,12,95,112,97,116,104,95,105,115,102,105,108,101,159,0, + 0,0,243,2,0,0,0,10,2,114,9,0,0,0,114,80, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,22,0,0,0,124,0,115, + 6,116,0,160,1,161,0,125,0,116,2,124,0,100,1,131, + 2,83,0,41,3,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,78,41,3,114,19,0, + 0,0,218,6,103,101,116,99,119,100,114,79,0,0,0,114, + 74,0,0,0,32,114,7,0,0,0,218,11,95,112,97,116, + 104,95,105,115,100,105,114,164,0,0,0,115,6,0,0,0, + 4,2,8,1,10,1,114,9,0,0,0,114,83,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,62,0,0,0,124,0,115,4,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,30,124,1,160,4,100,6,161,1,112,30,124,1, + 160,5,100,4,161,1,83,0,41,8,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,3,0,0,0,122, + 2,92,92,78,41,6,114,19,0,0,0,114,56,0,0,0, + 218,7,114,101,112,108,97,99,101,114,4,0,0,0,114,27, + 0,0,0,114,58,0,0,0,41,2,114,65,0,0,0,114, + 64,0,0,0,32,32,114,7,0,0,0,218,11,95,112,97, + 116,104,95,105,115,97,98,115,172,0,0,0,115,8,0,0, + 0,4,2,4,1,22,1,32,1,114,9,0,0,0,114,86, + 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,114,84,0,0,0,78,41, + 2,114,27,0,0,0,114,51,0,0,0,114,74,0,0,0, + 32,114,7,0,0,0,114,86,0,0,0,180,0,0,0,114, + 81,0,0,0,114,9,0,0,0,233,182,1,0,0,99,3, + 0,0,0,0,0,0,0,0,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,9,0,116,7,160,8,124,4, + 100,3,161,2,53,0,125,5,124,5,160,9,124,1,161,1, + 1,0,100,4,4,0,4,0,131,3,1,0,110,11,35,0, + 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, + 1,0,1,0,116,2,160,10,124,3,124,0,161,2,1,0, + 100,4,83,0,35,0,4,0,116,11,121,88,1,0,1,0, + 1,0,9,0,116,2,160,12,124,3,161,1,1,0,130,0, + 35,0,4,0,116,11,121,87,1,0,1,0,1,0,89,0, + 130,0,37,0,37,0,119,0,119,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,87,0,0,0,90,2,119,98, + 78,41,13,218,6,102,111,114,109,97,116,218,2,105,100,114, + 19,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,85,0,0,0,114,76, + 0,0,0,90,6,117,110,108,105,110,107,41,6,114,65,0, + 0,0,114,42,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, + 32,32,32,32,32,32,114,7,0,0,0,218,13,95,119,114, + 105,116,101,95,97,116,111,109,105,99,185,0,0,0,115,44, + 0,0,0,16,5,6,1,22,1,4,255,2,2,14,3,10, + 1,12,255,22,128,16,2,2,128,12,1,2,1,10,1,2, + 3,2,128,12,254,2,1,2,1,4,128,2,254,2,253,115, + 69,0,0,0,153,6,62,0,159,6,43,3,165,6,62,0, + 171,4,47,11,175,1,62,0,176,3,47,11,179,9,62,0, + 190,7,65,22,7,193,6,5,65,12,6,193,11,1,65,22, + 7,193,12,7,65,21,13,193,19,3,65,22,7,193,23,1, + 65,21,13,193,24,1,65,22,7,114,95,0,0,0,105,127, + 13,0,0,114,45,0,0,0,114,33,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,119,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,5,0,0,0,67,0,0,0,115,80,1, + 0,0,124,1,100,1,117,1,114,26,116,0,160,1,100,2, + 116,2,161,2,1,0,124,2,100,1,117,1,114,20,100,3, + 125,3,116,3,124,3,131,1,130,1,124,1,114,24,100,4, + 110,1,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,57,116,11,100,7, + 131,1,130,1,100,4,160,12,124,6,114,63,124,6,110,1, + 124,8,124,7,124,9,103,3,161,1,125,10,124,2,100,1, + 117,0,114,86,116,8,106,13,106,14,100,8,107,2,114,82, + 100,4,125,2,110,4,116,8,106,13,106,14,125,2,116,15, + 124,2,131,1,125,2,124,2,100,4,107,3,114,112,124,2, + 160,16,161,0,115,105,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,114,162,116,22,124,4,131,1,115,134, + 116,23,116,4,160,24,161,0,124,4,131,2,125,4,124,4, + 100,5,25,0,100,11,107,2,114,152,124,4,100,8,25,0, + 116,25,118,1,114,152,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,10,0,0,0,114,3,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, + 11,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,19,0,0,0, + 218,6,102,115,112,97,116,104,114,73,0,0,0,218,10,114, + 112,97,114,116,105,116,105,111,110,114,16,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,17,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,89,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,86,0,0,0,114, + 67,0,0,0,114,82,0,0,0,114,51,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,96,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,6,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,32,32,32,32,32,32,32,32,32,32,32,32,114,7,0, + 0,0,218,17,99,97,99,104,101,95,102,114,111,109,95,115, + 111,117,114,99,101,130,1,0,0,115,72,0,0,0,8,18, + 6,1,2,1,4,255,8,2,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,1,8,2,8,1,8,1,8,1,14,1,14,1,12,1, + 10,1,8,9,14,1,24,5,12,1,2,4,4,1,8,1, + 2,1,4,253,12,5,114,9,0,0,0,114,121,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,67,0,0,0,115,40,1,0,0,116,0,106,1,106,2, + 100,1,117,0,114,10,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,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,57,116,11,100,7,131,1,130,1,100,4,160,12, - 124,6,114,63,124,6,110,1,124,8,124,7,124,9,103,3, - 161,1,125,10,124,2,100,1,117,0,114,86,116,8,106,13, - 106,14,100,8,107,2,114,82,100,4,125,2,110,4,116,8, - 106,13,106,14,125,2,116,15,124,2,131,1,125,2,124,2, - 100,4,107,3,114,112,124,2,160,16,161,0,115,105,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,114,162, - 116,22,124,4,131,1,115,134,116,23,116,4,160,24,161,0, - 124,4,131,2,125,4,124,4,100,5,25,0,100,11,107,2, - 114,152,124,4,100,8,25,0,116,25,118,1,114,152,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,10,0,0, - 0,114,3,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,11,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,19,0,0,0,218,6,102,115,112,97,116,104, - 114,73,0,0,0,218,10,114,112,97,114,116,105,116,105,111, - 110,114,16,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,17,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,89,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,86,0,0,0,114,67,0,0,0,114,82,0,0, - 0,114,51,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, - 96,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,6, - 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,32,32,32,32,32,32,32, - 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, - 101,95,102,114,111,109,95,115,111,117,114,99,101,129,1,0, - 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, - 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,1,8,2,8,1,8,1, - 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, - 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, - 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,40,1, - 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133,2, - 25,0,125,1,100,4,125,3,124,3,115,72,116,6,124,1, - 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,72, - 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,88,116,14,100,8,124,2,155,2,157,2,131,1, - 130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16,0,0, - 0,114,105,0,0,0,114,106,0,0,0,114,107,0,0,0, - 114,19,0,0,0,114,103,0,0,0,114,73,0,0,0,114, - 114,0,0,0,114,50,0,0,0,114,51,0,0,0,114,27, - 0,0,0,114,59,0,0,0,114,4,0,0,0,114,116,0, - 0,0,114,111,0,0,0,218,5,99,111,117,110,116,218,6, - 114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32, - 32,32,32,32,114,7,0,0,0,218,17,115,111,117,114,99, - 101,95,102,114,111,109,95,99,97,99,104,101,200,1,0,0, - 115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1,10, - 1,4,1,2,1,8,255,16,2,8,1,16,1,14,2,18, - 1,114,9,0,0,0,114,128,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, - 115,126,0,0,0,116,0,124,0,131,1,100,1,107,2,114, - 8,100,2,83,0,124,0,160,1,100,3,161,1,92,3,125, - 1,125,2,125,3,124,1,114,28,124,3,160,2,161,0,100, - 4,100,5,133,2,25,0,100,6,107,3,114,30,124,0,83, - 0,9,0,116,3,124,0,131,1,125,4,110,18,35,0,4, - 0,116,4,116,5,102,2,121,62,1,0,1,0,1,0,124, - 0,100,2,100,5,133,2,25,0,125,4,89,0,110,1,37, - 0,116,6,124,4,131,1,114,60,124,4,83,0,124,0,83, - 0,119,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,97,0,0,0,233,253, - 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,4, - 0,0,0,114,104,0,0,0,218,5,108,111,119,101,114,114, - 128,0,0,0,114,107,0,0,0,114,111,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,119,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,32,32,32,32,32,114,7,0,0,0,218,15, - 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,240, - 1,0,0,115,26,0,0,0,12,7,4,1,16,1,24,1, - 4,1,2,1,10,1,2,128,16,1,16,1,2,128,16,1, - 2,254,115,12,0,0,0,159,4,36,0,164,15,53,7,190, - 1,53,7,114,135,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,8,0,0,0,67,0,0,0,115,70,0, - 0,0,124,0,160,0,116,1,116,2,131,1,161,1,114,23, - 9,0,116,3,124,0,131,1,83,0,35,0,4,0,116,4, - 121,34,1,0,1,0,1,0,89,0,100,0,83,0,37,0, - 124,0,160,0,116,1,116,5,131,1,161,1,114,32,124,0, - 83,0,100,0,83,0,119,0,114,69,0,0,0,41,6,114, - 58,0,0,0,218,5,116,117,112,108,101,114,127,0,0,0, - 114,121,0,0,0,114,107,0,0,0,114,113,0,0,0,41, - 1,114,120,0,0,0,32,114,7,0,0,0,218,11,95,103, - 101,116,95,99,97,99,104,101,100,3,2,0,0,115,22,0, - 0,0,14,1,2,1,8,1,2,128,12,1,6,1,2,128, - 14,1,4,1,4,2,2,251,115,12,0,0,0,136,3,12, - 0,140,7,22,7,162,1,22,7,114,137,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,52,0,0,0,9,0,116,0,124,0,131,1, - 106,1,125,1,110,12,35,0,4,0,116,2,121,25,1,0, - 1,0,1,0,100,1,125,1,89,0,110,1,37,0,124,1, - 100,2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,32,32,114,7,0, - 0,0,218,10,95,99,97,108,99,95,109,111,100,101,15,2, - 0,0,115,18,0,0,0,2,2,12,1,2,128,12,1,8, - 1,2,128,8,3,4,1,2,251,115,12,0,0,0,129,5, - 7,0,135,9,18,7,153,1,18,7,114,139,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,52,0,0,0,100,6,135,3,102,1,100, - 2,100,3,132,9,125,1,116,0,100,1,117,1,114,15,116, - 0,106,1,125,2,110,4,100,4,100,5,132,0,125,2,124, - 2,124,1,136,3,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,5,0,0,0,31, - 0,0,0,115,76,0,0,0,124,1,100,0,117,0,114,8, - 124,0,106,0,125,1,110,18,124,0,106,0,124,1,107,3, - 114,26,116,1,100,1,124,0,106,0,155,1,100,2,124,1, - 155,1,157,4,124,1,100,3,141,2,130,1,136,4,124,0, - 124,1,103,2,124,2,162,1,82,0,105,0,124,3,164,1, - 142,1,83,0,41,4,78,122,11,108,111,97,100,101,114,32, - 102,111,114,32,122,15,32,99,97,110,110,111,116,32,104,97, - 110,100,108,101,32,169,1,218,4,110,97,109,101,41,2,114, - 141,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, - 114,41,5,218,4,115,101,108,102,114,141,0,0,0,218,4, - 97,114,103,115,218,6,107,119,97,114,103,115,218,6,109,101, - 116,104,111,100,32,32,32,32,128,114,7,0,0,0,218,19, - 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, - 112,101,114,35,2,0,0,115,18,0,0,0,8,1,8,1, - 10,1,4,1,12,1,2,255,2,1,6,255,24,2,114,9, - 0,0,0,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,7,0,0,0,83,0, - 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, - 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, - 2,124,1,124,2,131,2,131,3,1,0,113,2,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,85,0,0, - 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, - 48,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, - 128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218,10,95,98,111, - 111,116,115,116,114,97,112,114,157,0,0,0,41,4,114,146, - 0,0,0,114,147,0,0,0,114,157,0,0,0,114,146,0, - 0,0,96,32,32,64,114,7,0,0,0,218,11,95,99,104, - 101,99,107,95,110,97,109,101,27,2,0,0,115,12,0,0, - 0,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, - 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, - 3,124,1,161,1,92,2,125,2,125,3,124,2,100,2,117, - 0,114,34,116,4,124,3,131,1,114,34,100,3,125,4,116, - 0,160,1,124,4,160,5,124,3,100,4,25,0,161,1,116, - 6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109, - 111,100,117,108,101,40,41,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, - 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, - 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, - 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, - 116,101,97,100,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,7,114,99,0,0,0,114, - 100,0,0,0,114,101,0,0,0,218,11,102,105,110,100,95, - 108,111,97,100,101,114,114,4,0,0,0,114,89,0,0,0, - 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, - 5,114,143,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,32,32,32,32,32,114,7,0,0, - 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, - 115,104,105,109,58,2,0,0,115,16,0,0,0,6,7,2, - 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, - 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, - 0,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,32,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,53,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,81,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,32,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,142,0,0, - 0,114,4,0,0,0,218,8,69,79,70,69,114,114,111,114, - 114,43,0,0,0,41,6,114,42,0,0,0,114,141,0,0, - 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, - 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, - 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, - 115,115,105,102,121,95,112,121,99,78,2,0,0,115,28,0, - 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, - 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, - 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7, - 133,2,25,0,131,1,124,2,100,3,64,0,107,3,114,58, - 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,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,169,0,0, - 0,233,12,0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4, - 114,43,0,0,0,114,158,0,0,0,114,172,0,0,0,114, - 142,0,0,0,41,6,114,42,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,141,0,0,0,114,174,0,0,0, - 114,117,0,0,0,32,32,32,32,32,32,114,7,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,111,2,0,0,115,18,0, - 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, - 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, - 0,0,0,0,0,0,0,0,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,19,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,169,0,0, - 0,114,168,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,142,0,0,0,41,4, - 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, - 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, - 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, - 95,104,97,115,104,95,112,121,99,139,2,0,0,115,14,0, - 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, - 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, - 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, - 124,4,116,3,131,2,114,28,116,4,160,5,100,1,124,2, - 161,2,1,0,124,3,100,2,117,1,114,26,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, - 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,141,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,172,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,142,0,0,0,114,89,0,0,0,41,5,114,42,0,0, - 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, - 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, - 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, - 111,100,101,163,2,0,0,115,18,0,0,0,10,2,10,1, - 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, - 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, - 0,0,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,3,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,78,41,6,218, - 9,98,121,116,101,97,114,114,97,121,114,171,0,0,0,218, - 6,101,120,116,101,110,100,114,37,0,0,0,114,183,0,0, - 0,218,5,100,117,109,112,115,41,4,114,187,0,0,0,218, - 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, - 32,32,32,32,114,7,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,176,2,0,0,115,12,0,0,0,8,2,14,1,14,1, - 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, - 84,99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78, - 41,7,114,189,0,0,0,114,171,0,0,0,114,190,0,0, - 0,114,37,0,0,0,114,4,0,0,0,114,183,0,0,0, - 114,191,0,0,0,41,5,114,187,0,0,0,114,180,0,0, - 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, - 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, - 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, - 99,186,2,0,0,115,14,0,0,0,8,2,12,1,14,1, - 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, - 0,0,99,1,0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32, - 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, - 115,111,117,114,99,101,197,2,0,0,115,10,0,0,0,8, - 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, - 0,0,0,169,2,114,163,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,8,0,0,0,67,0,0,0,115,60,1,0,0, - 124,1,100,1,117,0,114,29,100,2,125,1,116,0,124,2, - 100,3,131,2,114,28,9,0,124,2,160,1,124,0,161,1, - 125,1,110,39,35,0,4,0,116,2,121,157,1,0,1,0, - 1,0,89,0,110,30,37,0,110,28,116,3,160,4,124,1, - 161,1,125,1,116,5,124,1,131,1,115,57,9,0,116,6, - 116,3,160,7,161,0,124,1,131,2,125,1,110,10,35,0, - 4,0,116,8,121,156,1,0,1,0,1,0,89,0,110,1, - 37,0,116,9,160,10,124,0,124,2,124,1,100,4,166,3, - 125,4,100,5,124,4,95,11,124,2,100,1,117,0,114,99, - 116,12,131,0,68,0,93,21,92,2,125,5,125,6,124,1, - 160,13,116,14,124,6,131,1,161,1,114,96,124,5,124,0, - 124,1,131,2,125,2,124,2,124,4,95,15,1,0,113,99, - 113,75,100,1,83,0,124,3,116,16,117,0,114,131,116,0, - 124,2,100,6,131,2,114,130,9,0,124,2,160,17,124,0, - 161,1,125,7,110,10,35,0,4,0,116,2,121,155,1,0, - 1,0,1,0,89,0,110,10,37,0,124,7,114,130,103,0, - 124,4,95,18,110,3,124,3,124,4,95,18,124,4,106,18, - 103,0,107,2,114,153,124,1,114,153,116,19,124,1,131,1, - 100,7,25,0,125,8,124,4,106,18,160,20,124,8,161,1, - 1,0,124,4,83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0, - 0,0,114,142,0,0,0,114,19,0,0,0,114,103,0,0, - 0,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, - 114,76,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,136,0,0,0,114,163,0,0, - 0,218,9,95,80,79,80,85,76,65,84,69,114,205,0,0, - 0,114,201,0,0,0,114,73,0,0,0,114,61,0,0,0, - 41,9,114,141,0,0,0,90,8,108,111,99,97,116,105,111, - 110,114,163,0,0,0,114,201,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,205,0,0,0,90,7, - 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, - 114,7,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,214,2, - 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, - 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, - 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, - 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, - 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, - 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, - 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, - 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, - 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, - 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, - 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, - 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, - 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, - 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, - 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, - 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, + 125,1,125,2,100,3,125,3,116,0,106,7,100,1,117,1, + 114,51,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,51,124,1,116,12, + 124,4,131,1,100,1,133,2,25,0,125,1,100,4,125,3, + 124,3,115,72,116,6,124,1,131,1,92,2,125,1,125,5, + 124,5,116,13,107,3,114,72,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,88,116,14,100,8, + 124,2,155,2,157,2,131,1,130,1,124,6,100,9,107,2, + 114,132,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,112,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, + 115,132,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,98,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,97,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,122,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,16,0,0,0,114,105,0,0,0,114,106, + 0,0,0,114,107,0,0,0,114,19,0,0,0,114,103,0, + 0,0,114,73,0,0,0,114,114,0,0,0,114,50,0,0, + 0,114,51,0,0,0,114,27,0,0,0,114,59,0,0,0, + 114,4,0,0,0,114,116,0,0,0,114,111,0,0,0,218, + 5,99,111,117,110,116,218,6,114,115,112,108,105,116,114,112, + 0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32,32,32,32,32,114,7,0,0, + 0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99, + 97,99,104,101,201,1,0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8, + 1,14,1,8,1,16,1,10,1,4,1,2,1,8,255,16, + 2,8,1,16,1,14,2,18,1,114,9,0,0,0,114,128, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,67,0,0,0,115,126,0,0,0,116,0,124, + 0,131,1,100,1,107,2,114,8,100,2,83,0,124,0,160, + 1,100,3,161,1,92,3,125,1,125,2,125,3,124,1,114, + 28,124,3,160,2,161,0,100,4,100,5,133,2,25,0,100, + 6,107,3,114,30,124,0,83,0,9,0,116,3,124,0,131, + 1,125,4,110,18,35,0,4,0,116,4,116,5,102,2,121, + 62,1,0,1,0,1,0,124,0,100,2,100,5,133,2,25, + 0,125,4,89,0,110,1,37,0,116,6,124,4,131,1,114, + 60,124,4,83,0,124,0,83,0,119,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,97,0,0,0,233,253,255,255,255,233,255,255,255,255, + 90,2,112,121,41,7,114,4,0,0,0,114,104,0,0,0, + 218,5,108,111,119,101,114,114,128,0,0,0,114,107,0,0, + 0,114,111,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,119,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,32,32,32,32, + 32,114,7,0,0,0,218,15,95,103,101,116,95,115,111,117, + 114,99,101,102,105,108,101,241,1,0,0,115,26,0,0,0, + 12,7,4,1,16,1,24,1,4,1,2,1,10,1,2,128, + 16,1,16,1,2,128,16,1,2,254,115,12,0,0,0,159, + 4,36,0,164,15,53,7,190,1,53,7,114,135,0,0,0, 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,52,0,0,0,9,0,116,0,160,1, - 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, - 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, - 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, - 111,112,101,110,95,114,101,103,105,115,116,114,121,43,3,0, - 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, - 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, - 7,153,1,24,7,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,9,0,0,0,67,0,0,0, - 115,136,0,0,0,124,0,106,0,114,7,124,0,106,1,125, - 2,110,3,124,0,106,2,125,2,124,2,160,3,124,1,100, - 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, - 3,166,2,125,3,9,0,124,0,160,6,124,3,161,1,53, - 0,125,4,116,7,160,8,124,4,100,4,161,2,125,5,100, - 0,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, - 48,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,5,83,0,35,0,4,0,116,9,121,67,1,0,1, - 0,1,0,89,0,100,0,83,0,37,0,119,0,41,5,78, - 122,5,37,100,46,37,100,114,45,0,0,0,41,2,114,162, - 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, - 114,10,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,89,0,0,0,114,16,0,0,0, - 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,215, - 0,0,0,114,214,0,0,0,90,10,81,117,101,114,121,86, - 97,108,117,101,114,76,0,0,0,41,6,218,3,99,108,115, - 114,162,0,0,0,90,12,114,101,103,105,115,116,114,121,95, - 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, - 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, - 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, - 105,115,116,114,121,50,3,0,0,115,34,0,0,0,6,2, - 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, - 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, - 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, - 0,171,4,47,11,175,1,56,0,176,3,47,11,179,3,56, - 0,184,7,65,2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124, - 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, - 11,100,0,83,0,9,0,116,1,124,4,131,1,1,0,110, - 11,35,0,4,0,116,2,121,60,1,0,1,0,1,0,89, - 0,100,0,83,0,37,0,116,3,131,0,68,0,93,26,92, - 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, - 1,114,57,116,6,160,7,124,1,124,5,124,1,124,4,131, - 2,124,4,100,1,166,3,125,7,124,7,2,0,1,0,83, - 0,113,31,100,0,83,0,119,0,41,2,78,114,203,0,0, - 0,41,8,114,222,0,0,0,114,75,0,0,0,114,76,0, - 0,0,114,207,0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114, - 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, - 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, - 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,65,3,0, - 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, - 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, - 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, - 0,140,4,17,0,145,7,27,7,188,1,27,7,122,31,87, + 0,67,0,0,0,115,70,0,0,0,124,0,160,0,116,1, + 116,2,131,1,161,1,114,23,9,0,116,3,124,0,131,1, + 83,0,35,0,4,0,116,4,121,34,1,0,1,0,1,0, + 89,0,100,0,83,0,37,0,124,0,160,0,116,1,116,5, + 131,1,161,1,114,32,124,0,83,0,100,0,83,0,119,0, + 114,69,0,0,0,41,6,114,58,0,0,0,218,5,116,117, + 112,108,101,114,127,0,0,0,114,121,0,0,0,114,107,0, + 0,0,114,113,0,0,0,41,1,114,120,0,0,0,32,114, + 7,0,0,0,218,11,95,103,101,116,95,99,97,99,104,101, + 100,4,2,0,0,115,22,0,0,0,14,1,2,1,8,1, + 2,128,12,1,6,1,2,128,14,1,4,1,4,2,2,251, + 115,12,0,0,0,136,3,12,0,140,7,22,7,162,1,22, + 7,114,137,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,8,0,0,0,67,0,0,0,115,52,0,0,0, + 9,0,116,0,124,0,131,1,106,1,125,1,110,12,35,0, + 4,0,116,2,121,25,1,0,1,0,1,0,100,1,125,1, + 89,0,110,1,37,0,124,1,100,2,79,0,125,1,124,1, + 83,0,119,0,41,4,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,87,0,0,0, + 233,128,0,0,0,78,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,32,32,114,7,0,0,0,218,10,95,99,97,108, + 99,95,109,111,100,101,16,2,0,0,115,18,0,0,0,2, + 2,12,1,2,128,12,1,8,1,2,128,8,3,4,1,2, + 251,115,12,0,0,0,129,5,7,0,135,9,18,7,153,1, + 18,7,114,139,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,3,0,0,0,115,54,0,0, + 0,135,3,100,6,136,3,102,1,100,2,100,3,132,9,125, + 1,116,0,100,1,117,1,114,16,116,0,106,1,125,2,110, + 4,100,4,100,5,132,0,125,2,124,2,124,1,137,3,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,5,0,0,0,31,0,0,0,115,76,0, + 0,0,124,1,100,0,117,0,114,8,124,0,106,0,125,1, + 110,18,124,0,106,0,124,1,107,3,114,26,116,1,100,1, + 124,0,106,0,155,1,100,2,124,1,155,1,157,4,124,1, + 100,3,141,2,130,1,137,4,124,0,124,1,103,2,124,2, + 162,1,82,0,105,0,124,3,164,1,142,1,83,0,41,4, + 78,122,11,108,111,97,100,101,114,32,102,111,114,32,122,15, + 32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,169, + 1,218,4,110,97,109,101,41,2,114,141,0,0,0,218,11, + 73,109,112,111,114,116,69,114,114,111,114,41,5,218,4,115, + 101,108,102,114,141,0,0,0,218,4,97,114,103,115,218,6, + 107,119,97,114,103,115,218,6,109,101,116,104,111,100,32,32, + 32,32,128,114,7,0,0,0,218,19,95,99,104,101,99,107, + 95,110,97,109,101,95,119,114,97,112,112,101,114,36,2,0, + 0,115,18,0,0,0,8,1,8,1,10,1,4,1,12,1, + 2,255,2,1,6,255,24,2,114,9,0,0,0,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,7,0,0,0,83,0,0,0,115,56,0,0, + 0,100,1,68,0,93,16,125,2,116,0,124,1,124,2,131, + 2,114,18,116,1,124,0,124,2,116,2,124,1,124,2,131, + 2,131,3,1,0,113,2,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,85,0,0,0,32,32,32,114,7, + 0,0,0,218,5,95,119,114,97,112,49,2,0,0,115,10, + 0,0,0,8,1,10,1,18,1,2,128,18,1,114,9,0, + 0,0,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,114,69, + 0,0,0,41,2,218,10,95,98,111,111,116,115,116,114,97, + 112,114,157,0,0,0,41,4,114,146,0,0,0,114,147,0, + 0,0,114,157,0,0,0,114,146,0,0,0,96,32,32,64, + 114,7,0,0,0,218,11,95,99,104,101,99,107,95,110,97, + 109,101,28,2,0,0,115,14,0,0,0,2,128,14,8,8, + 10,8,1,8,2,10,6,4,1,114,9,0,0,0,114,159, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 6,0,0,0,67,0,0,0,115,72,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,161, + 1,92,2,125,2,125,3,124,2,100,2,117,0,114,34,116, + 4,124,3,131,1,114,34,100,3,125,4,116,0,160,1,124, + 4,160,5,124,3,100,4,25,0,161,1,116,6,161,2,1, + 0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109,111,100,117,108, + 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 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,7,114,99,0,0,0,114,100,0,0,0, + 114,101,0,0,0,218,11,102,105,110,100,95,108,111,97,100, + 101,114,114,4,0,0,0,114,89,0,0,0,218,13,73,109, + 112,111,114,116,87,97,114,110,105,110,103,41,5,114,143,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,32,32,32,32,32,114,7,0,0,0,218,17,95, + 102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,109, + 59,2,0,0,115,16,0,0,0,6,7,2,2,4,254,14, + 6,16,1,4,1,22,1,4,1,114,9,0,0,0,114,166, + 0,0,0,99,3,0,0,0,0,0,0,0,0,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, + 32,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,53,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,81,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, + 32,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,142,0,0,0,114,4,0, + 0,0,218,8,69,79,70,69,114,114,111,114,114,43,0,0, + 0,41,6,114,42,0,0,0,114,141,0,0,0,218,11,101, + 120,99,95,100,101,116,97,105,108,115,90,5,109,97,103,105, + 99,114,117,0,0,0,114,17,0,0,0,32,32,32,32,32, + 32,114,7,0,0,0,218,13,95,99,108,97,115,115,105,102, + 121,95,112,121,99,79,2,0,0,115,28,0,0,0,12,16, + 8,1,16,1,12,1,16,1,12,1,10,1,12,1,8,1, + 16,1,8,2,16,1,16,1,4,1,114,9,0,0,0,114, + 175,0,0,0,99,5,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0, + 131,1,124,2,100,3,64,0,107,3,114,58,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,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,169,0,0,0,233,12,0, + 0,0,114,31,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, + 167,0,0,0,78,114,168,0,0,0,41,4,114,43,0,0, + 0,114,158,0,0,0,114,172,0,0,0,114,142,0,0,0, + 41,6,114,42,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,141,0,0,0,114,174,0,0,0,114,117,0,0, + 0,32,32,32,32,32,32,114,7,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,112,2,0,0,115,18,0,0,0,24,19, + 10,1,12,1,16,1,8,1,22,1,2,255,22,2,8,254, + 114,9,0,0,0,114,179,0,0,0,99,4,0,0,0,0, + 0,0,0,0,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,19,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,169,0,0,0,114,168,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,142,0,0,0,41,4,114,42,0,0, + 0,218,11,115,111,117,114,99,101,95,104,97,115,104,114,141, + 0,0,0,114,174,0,0,0,32,32,32,32,114,7,0,0, + 0,218,18,95,118,97,108,105,100,97,116,101,95,104,97,115, + 104,95,112,121,99,140,2,0,0,115,14,0,0,0,16,17, + 2,1,8,1,4,255,2,2,6,254,4,255,114,9,0,0, + 0,114,181,0,0,0,99,4,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,67,0,0,0,115,76,0,0,0, + 116,0,160,1,124,0,161,1,125,4,116,2,124,4,116,3, + 131,2,114,28,116,4,160,5,100,1,124,2,161,2,1,0, + 124,3,100,2,117,1,114,26,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,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,141,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, + 172,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,142,0,0, + 0,114,89,0,0,0,41,5,114,42,0,0,0,114,141,0, + 0,0,114,132,0,0,0,114,134,0,0,0,218,4,99,111, + 100,101,32,32,32,32,32,114,7,0,0,0,218,17,95,99, + 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,164, + 2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,1, + 12,1,4,1,10,2,4,1,6,255,114,9,0,0,0,114, + 188,0,0,0,99,3,0,0,0,0,0,0,0,0,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,3,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,78,41,6,218,9,98,121,116, + 101,97,114,114,97,121,114,171,0,0,0,218,6,101,120,116, + 101,110,100,114,37,0,0,0,114,183,0,0,0,218,5,100, + 117,109,112,115,41,4,114,187,0,0,0,218,5,109,116,105, + 109,101,114,178,0,0,0,114,42,0,0,0,32,32,32,32, + 114,7,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,177,2,0, + 0,115,12,0,0,0,8,2,14,1,14,1,14,1,16,1, + 4,1,114,9,0,0,0,114,193,0,0,0,84,99,3,0, + 0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78,41,7,114,189, + 0,0,0,114,171,0,0,0,114,190,0,0,0,114,37,0, + 0,0,114,4,0,0,0,114,183,0,0,0,114,191,0,0, + 0,41,5,114,187,0,0,0,114,180,0,0,0,90,7,99, + 104,101,99,107,101,100,114,42,0,0,0,114,17,0,0,0, + 32,32,32,32,32,114,7,0,0,0,218,17,95,99,111,100, + 101,95,116,111,95,104,97,115,104,95,112,121,99,187,2,0, + 0,115,14,0,0,0,8,2,12,1,14,1,16,1,10,1, + 16,1,4,1,114,9,0,0,0,114,194,0,0,0,99,1, + 0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32,32,32,114,7, + 0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,114, + 99,101,198,2,0,0,115,10,0,0,0,8,5,12,1,10, + 1,12,1,20,1,114,9,0,0,0,114,199,0,0,0,169, + 2,114,163,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,8, + 0,0,0,67,0,0,0,115,60,1,0,0,124,1,100,1, + 117,0,114,29,100,2,125,1,116,0,124,2,100,3,131,2, + 114,28,9,0,124,2,160,1,124,0,161,1,125,1,110,39, + 35,0,4,0,116,2,121,157,1,0,1,0,1,0,89,0, + 110,30,37,0,110,28,116,3,160,4,124,1,161,1,125,1, + 116,5,124,1,131,1,115,57,9,0,116,6,116,3,160,7, + 161,0,124,1,131,2,125,1,110,10,35,0,4,0,116,8, + 121,156,1,0,1,0,1,0,89,0,110,1,37,0,116,9, + 160,10,124,0,124,2,124,1,100,4,166,3,125,4,100,5, + 124,4,95,11,124,2,100,1,117,0,114,99,116,12,131,0, + 68,0,93,21,92,2,125,5,125,6,124,1,160,13,116,14, + 124,6,131,1,161,1,114,96,124,5,124,0,124,1,131,2, + 125,2,124,2,124,4,95,15,1,0,113,99,113,75,100,1, + 83,0,124,3,116,16,117,0,114,131,116,0,124,2,100,6, + 131,2,114,130,9,0,124,2,160,17,124,0,161,1,125,7, + 110,10,35,0,4,0,116,2,121,155,1,0,1,0,1,0, + 89,0,110,10,37,0,124,7,114,130,103,0,124,4,95,18, + 110,3,124,3,124,4,95,18,124,4,106,18,103,0,107,2, + 114,153,124,1,114,153,116,19,124,1,131,1,100,7,25,0, + 125,8,124,4,106,18,160,20,124,8,161,1,1,0,124,4, + 83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0,0,0,114,142, + 0,0,0,114,19,0,0,0,114,103,0,0,0,114,86,0, + 0,0,114,67,0,0,0,114,82,0,0,0,114,76,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,136,0,0,0,114,163,0,0,0,218,9,95, + 80,79,80,85,76,65,84,69,114,205,0,0,0,114,201,0, + 0,0,114,73,0,0,0,114,61,0,0,0,41,9,114,141, + 0,0,0,90,8,108,111,99,97,116,105,111,110,114,163,0, + 0,0,114,201,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,205,0,0,0,90,7,100,105,114,110, + 97,109,101,32,32,32,32,32,32,32,32,32,114,7,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,215,2,0,0,115,96, + 0,0,0,8,12,4,4,10,1,2,2,12,1,2,128,12, + 1,4,1,2,128,2,251,10,7,8,1,2,1,16,1,2, + 128,12,1,4,1,2,128,16,8,6,1,8,3,14,1,14, + 1,10,1,6,1,4,1,2,253,4,5,8,3,10,2,2, + 1,12,1,2,128,12,1,4,1,2,128,4,2,6,1,2, + 128,6,2,10,1,4,1,12,1,12,1,4,2,2,244,2, + 228,2,249,115,44,0,0,0,140,5,18,0,146,7,27,7, + 167,7,47,0,175,7,56,7,193,45,5,65,51,0,193,51, + 7,65,60,7,194,27,1,65,60,7,194,28,1,56,7,194, + 29,1,27,7,114,212,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,88, + 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, + 2,90,4,100,3,90,5,101,6,111,15,100,4,101,7,118, + 0,90,8,101,9,100,5,100,6,132,0,131,1,90,10,101, + 11,100,7,100,8,132,0,131,1,90,12,101,11,100,14,100, + 10,100,11,132,1,131,1,90,13,101,11,100,15,100,12,100, + 13,132,1,131,1,90,14,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,46,102,105,110,100,95,115,112,101,99,99,3, + 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,122,6,95,100,46,112,121,100,99,1,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, + 0,115,52,0,0,0,9,0,116,0,160,1,116,0,106,2, + 124,0,161,2,83,0,35,0,4,0,116,3,121,25,1,0, + 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, + 6,0,89,0,83,0,37,0,119,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,114,20, + 0,0,0,32,114,7,0,0,0,218,14,95,111,112,101,110, + 95,114,101,103,105,115,116,114,121,44,3,0,0,115,14,0, + 0,0,2,2,14,1,2,128,12,1,18,1,2,128,2,255, + 115,12,0,0,0,129,6,8,0,136,14,24,7,153,1,24, + 7,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,9,0,0,0,67,0,0,0,115,136,0,0, + 0,124,0,106,0,114,7,124,0,106,1,125,2,110,3,124, + 0,106,2,125,2,124,2,160,3,124,1,100,1,116,4,106, + 5,100,0,100,2,133,2,25,0,22,0,100,3,166,2,125, + 3,9,0,124,0,160,6,124,3,161,1,53,0,125,4,116, + 7,160,8,124,4,100,4,161,2,125,5,100,0,4,0,4, + 0,131,3,1,0,110,11,35,0,49,0,115,48,119,4,37, + 0,1,0,1,0,1,0,89,0,1,0,1,0,124,5,83, + 0,35,0,4,0,116,9,121,67,1,0,1,0,1,0,89, + 0,100,0,83,0,37,0,119,0,41,5,78,122,5,37,100, + 46,37,100,114,45,0,0,0,41,2,114,162,0,0,0,90, + 11,115,121,115,95,118,101,114,115,105,111,110,114,10,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,89,0,0,0,114,16,0,0,0,218,12,118,101, + 114,115,105,111,110,95,105,110,102,111,114,215,0,0,0,114, + 214,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101, + 114,76,0,0,0,41,6,218,3,99,108,115,114,162,0,0, + 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114, + 21,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101, + 112,97,116,104,32,32,32,32,32,32,114,7,0,0,0,218, + 16,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114, + 121,51,3,0,0,115,34,0,0,0,6,2,8,1,6,2, + 6,1,16,1,6,255,2,2,12,1,12,1,12,255,22,128, + 4,4,2,128,12,254,6,1,2,128,2,255,115,39,0,0, + 0,153,5,56,0,158,7,43,3,165,6,56,0,171,4,47, + 11,175,1,56,0,176,3,47,11,179,3,56,0,184,7,65, + 2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124,0,160,0,124, + 1,161,1,125,4,124,4,100,0,117,0,114,11,100,0,83, + 0,9,0,116,1,124,4,131,1,1,0,110,11,35,0,4, + 0,116,2,121,60,1,0,1,0,1,0,89,0,100,0,83, + 0,37,0,116,3,131,0,68,0,93,26,92,2,125,5,125, + 6,124,4,160,4,116,5,124,6,131,1,161,1,114,57,116, + 6,160,7,124,1,124,5,124,1,124,4,131,2,124,4,100, + 1,166,3,125,7,124,7,2,0,1,0,83,0,113,31,100, + 0,83,0,119,0,41,2,78,114,203,0,0,0,41,8,114, + 222,0,0,0,114,75,0,0,0,114,76,0,0,0,114,207, + 0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114,162,0,0,0, + 114,65,0,0,0,218,6,116,97,114,103,101,116,114,221,0, + 0,0,114,163,0,0,0,114,211,0,0,0,114,209,0,0, + 0,32,32,32,32,32,32,32,32,114,7,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,66,3,0,0,115,38,0, + 0,0,10,2,8,1,4,1,2,1,10,1,2,128,12,1, + 6,1,2,128,14,1,14,1,6,1,8,1,2,1,6,254, + 8,3,2,252,4,255,2,254,115,12,0,0,0,140,4,17, + 0,145,7,27,7,188,1,27,7,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,67,0,0,0,115, + 42,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 124,0,160,3,124,1,124,2,161,2,125,3,124,3,100,2, + 117,1,114,19,124,3,106,4,83,0,100,2,83,0,41,3, + 122,106,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,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,122,112,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,40, + 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, + 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, + 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, + 32,51,46,49,50,59,32,117,115,101,32,102,105,110,100,95, + 115,112,101,99,40,41,32,105,110,115,116,101,97,100,78,169, + 5,114,99,0,0,0,114,100,0,0,0,114,101,0,0,0, + 114,225,0,0,0,114,163,0,0,0,169,4,114,220,0,0, + 0,114,162,0,0,0,114,65,0,0,0,114,209,0,0,0, + 32,32,32,32,114,7,0,0,0,218,11,102,105,110,100,95, + 109,111,100,117,108,101,82,3,0,0,115,14,0,0,0,6, + 7,2,2,4,254,12,3,8,1,6,1,4,2,114,9,0, + 0,0,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,169,2,78,78,114,69,0,0,0,41,15, + 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, + 151,0,0,0,114,218,0,0,0,114,217,0,0,0,218,11, + 95,77,83,95,87,73,78,68,79,87,83,218,18,69,88,84, + 69,78,83,73,79,78,95,83,85,70,70,73,88,69,83,114, + 216,0,0,0,218,12,115,116,97,116,105,99,109,101,116,104, + 111,100,114,215,0,0,0,218,11,99,108,97,115,115,109,101, + 116,104,111,100,114,222,0,0,0,114,225,0,0,0,114,228, + 0,0,0,114,12,0,0,0,114,7,0,0,0,114,213,0, + 0,0,32,3,0,0,115,30,0,0,0,8,0,4,2,2, + 3,2,255,2,4,2,255,12,3,2,2,10,1,2,6,10, + 1,2,14,12,1,2,15,16,1,114,9,0,0,0,114,213, + 0,0,0,99,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, + 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,31,124,4,100,5,107,3,83,0,41,7,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,3, + 0,0,0,114,97,0,0,0,114,0,0,0,0,114,45,0, + 0,0,218,8,95,95,105,110,105,116,95,95,78,41,4,114, + 73,0,0,0,114,202,0,0,0,114,125,0,0,0,114,104, + 0,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, + 120,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,32,32, + 32,32,32,114,7,0,0,0,114,205,0,0,0,104,3,0, + 0,115,8,0,0,0,18,3,16,1,14,1,16,1,114,9, + 0,0,0,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0,169,2,114,143,0, + 0,0,114,209,0,0,0,32,32,114,7,0,0,0,218,13, + 99,114,101,97,116,101,95,109,111,100,117,108,101,112,3,0, + 0,243,2,0,0,0,4,0,114,9,0,0,0,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,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,18,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,142,0,0,0, + 114,89,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,143,0,0,0,218,6,109,111,100,117,108,101,114, + 187,0,0,0,32,32,32,114,7,0,0,0,218,11,101,120, + 101,99,95,109,111,100,117,108,101,115,3,0,0,115,12,0, + 0,0,12,2,8,1,4,1,8,1,4,255,20,2,114,9, + 0,0,0,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,4,0,0,0,67, - 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, - 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, - 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, - 83,0,41,3,122,106,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,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, - 122,112,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,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, - 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, - 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, - 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, - 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, - 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, - 105,110,100,95,109,111,100,117,108,101,81,3,0,0,115,14, - 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, - 2,114,9,0,0,0,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,169,2,78,78,114,69,0, - 0,0,41,15,114,149,0,0,0,114,148,0,0,0,114,150, - 0,0,0,114,151,0,0,0,114,218,0,0,0,114,217,0, - 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218, - 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, - 88,69,83,114,216,0,0,0,218,12,115,116,97,116,105,99, - 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, - 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, - 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,213,0,0,0,31,3,0,0,115,30,0,0,0,8, - 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, - 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, - 0,0,114,213,0,0,0,99,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,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,31,124,4,100,5,107,3,83, - 0,41,7,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,3,0,0,0,114,97,0,0,0,114,0,0,0, - 0,114,45,0,0,0,218,8,95,95,105,110,105,116,95,95, - 78,41,4,114,73,0,0,0,114,202,0,0,0,114,125,0, - 0,0,114,104,0,0,0,41,5,114,143,0,0,0,114,162, - 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, - 0,103,3,0,0,115,8,0,0,0,18,3,16,1,14,1, - 16,1,114,9,0,0,0,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,1,0, - 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,169, - 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, - 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, - 101,111,3,0,0,243,2,0,0,0,4,0,114,9,0,0, - 0,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,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,18,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, - 142,0,0,0,114,89,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,143,0,0,0,218,6,109,111,100, - 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, - 218,11,101,120,101,99,95,109,111,100,117,108,101,114,3,0, - 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, - 20,2,114,9,0,0,0,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,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,2,122,26,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,78,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,143,0,0,0,114,162,0,0,0,32,32,114, - 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, - 101,122,3,0,0,115,2,0,0,0,12,3,114,9,0,0, - 0,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,205,0,0,0,114,238,0,0,0,114,244,0, - 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,234,0,0,0,98,3,0,0,115,12,0,0,0,8, - 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, - 114,234,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4, - 0,0,0,116,0,130,1,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,143,0,0,0,114, - 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, - 104,95,109,116,105,109,101,130,3,0,0,115,2,0,0,0, - 4,6,114,9,0,0,0,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,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,3,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,192,0, - 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, - 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, - 116,115,138,3,0,0,115,2,0,0,0,14,12,114,9,0, - 0,0,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,67,0,0,0, - 115,12,0,0,0,124,0,160,0,124,2,124,3,161,2,83, - 0,41,2,122,228,79,112,116,105,111,110,97,108,32,109,101, + 0,0,0,115,12,0,0,0,116,0,160,1,124,0,124,1, + 161,2,83,0,41,2,122,26,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,78,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, + 143,0,0,0,114,162,0,0,0,32,32,114,7,0,0,0, + 218,11,108,111,97,100,95,109,111,100,117,108,101,123,3,0, + 0,115,2,0,0,0,12,3,114,9,0,0,0,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, + 205,0,0,0,114,238,0,0,0,114,244,0,0,0,114,247, + 0,0,0,114,12,0,0,0,114,7,0,0,0,114,234,0, + 0,0,99,3,0,0,115,12,0,0,0,8,0,4,2,8, + 3,8,8,8,3,12,8,114,9,0,0,0,114,234,0,0, + 0,99,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,1,0,0,0,67,0,0,0,115,4,0,0,0,116, + 0,130,1,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,143,0,0,0,114,65,0,0,0, + 32,32,114,7,0,0,0,218,10,112,97,116,104,95,109,116, + 105,109,101,131,3,0,0,115,2,0,0,0,4,6,114,9, + 0,0,0,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,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,3,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,192,0,0,0,78,41, + 1,114,250,0,0,0,114,249,0,0,0,32,32,114,7,0, + 0,0,218,10,112,97,116,104,95,115,116,97,116,115,139,3, + 0,0,115,2,0,0,0,14,12,114,9,0,0,0,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,67,0,0,0,115,12,0,0, + 0,124,0,160,0,124,2,124,3,161,2,83,0,41,2,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,78,41,1,218,8,115,101,116,95,100,97, + 116,97,41,4,114,143,0,0,0,114,134,0,0,0,90,10, + 99,97,99,104,101,95,112,97,116,104,114,42,0,0,0,32, + 32,32,32,114,7,0,0,0,218,15,95,99,97,99,104,101, + 95,98,121,116,101,99,111,100,101,153,3,0,0,115,2,0, + 0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, + 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, @@ -1326,492 +1350,469 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,78,41,1,218,8,115,101, - 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, - 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, - 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, - 97,99,104,101,95,98,121,116,101,99,111,100,101,152,3,0, - 0,115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0, - 114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, - 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, - 0,0,0,162,3,0,0,114,239,0,0,0,114,9,0,0, - 0,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,8,0,0,0,67,0,0,0,115,70,0, - 0,0,124,0,160,0,124,1,161,1,125,2,9,0,124,0, - 160,1,124,2,161,1,125,3,116,4,124,3,131,1,83,0, - 35,0,4,0,116,2,121,34,1,0,125,4,1,0,116,3, - 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, - 126,4,119,1,37,0,119,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,140,0,0,0,78,41, - 5,114,202,0,0,0,218,8,103,101,116,95,100,97,116,97, - 114,76,0,0,0,114,142,0,0,0,114,199,0,0,0,41, - 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, - 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, - 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, - 169,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, - 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, - 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, - 150,7,29,7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,67,0,0,0,115,22,0,0, - 0,116,0,160,1,116,2,124,1,124,2,100,1,100,2,124, - 3,100,3,166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0, - 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, - 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, - 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, - 111,117,114,99,101,95,116,111,95,99,111,100,101,179,3,0, - 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, - 0,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,9,0,0,0,67, - 0,0,0,115,28,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,9,0,116,1,124,2,131,1,125,8, - 110,13,35,0,4,0,116,2,144,1,121,13,1,0,1,0, - 1,0,100,1,125,8,89,0,110,147,37,0,9,0,124,0, - 160,3,124,2,161,1,125,9,110,11,35,0,4,0,116,4, - 144,1,121,12,1,0,1,0,1,0,89,0,110,129,37,0, - 116,5,124,9,100,4,25,0,131,1,125,3,9,0,124,0, - 160,6,124,8,161,1,125,10,110,11,35,0,4,0,116,4, - 144,1,121,11,1,0,1,0,1,0,89,0,110,105,37,0, - 124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8, - 107,3,125,7,116,9,106,10,100,10,107,3,114,140,124,7, - 115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0,124,1, - 124,11,131,5,1,0,110,13,35,0,4,0,116,15,116,16, - 102,2,144,1,121,10,1,0,1,0,1,0,89,0,110,16, - 37,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,114,189,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,1, - 115,7,124,8,100,1,117,1,144,1,114,7,124,3,100,1, - 117,1,144,1,114,7,124,6,114,233,124,5,100,1,117,0, - 114,226,116,9,160,11,124,4,161,1,125,5,116,23,124,14, - 124,5,124,7,131,3,125,10,110,8,116,24,124,14,124,3, - 116,25,124,4,131,1,131,3,125,10,9,0,124,0,160,26, - 124,2,124,8,124,10,161,3,1,0,124,14,83,0,35,0, - 4,0,116,2,144,1,121,9,1,0,1,0,1,0,89,0, - 124,14,83,0,37,0,124,14,83,0,119,0,119,0,119,0, - 119,0,119,0,41,16,122,190,67,111,110,99,114,101,116,101, + 115,46,10,32,32,32,32,32,32,32,32,78,114,12,0,0, + 0,41,3,114,143,0,0,0,114,65,0,0,0,114,42,0, + 0,0,32,32,32,114,7,0,0,0,114,252,0,0,0,163, + 3,0,0,114,239,0,0,0,114,9,0,0,0,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,8,0,0,0,67,0,0,0,115,70,0,0,0,124,0, + 160,0,124,1,161,1,125,2,9,0,124,0,160,1,124,2, + 161,1,125,3,116,4,124,3,131,1,83,0,35,0,4,0, + 116,2,121,34,1,0,125,4,1,0,116,3,100,1,124,1, + 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, + 37,0,119,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,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,192,0,0,0,114,182, - 0,0,0,114,168,0,0,0,114,3,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,141,0, - 0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0, - 0,0,114,251,0,0,0,114,76,0,0,0,114,34,0,0, - 0,114,254,0,0,0,114,175,0,0,0,218,10,109,101,109, - 111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77, - 65,71,73,67,95,78,85,77,66,69,82,114,181,0,0,0, - 114,179,0,0,0,114,142,0,0,0,114,173,0,0,0,114, - 158,0,0,0,114,172,0,0,0,114,188,0,0,0,114,4, - 1,0,0,114,16,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,194,0, - 0,0,114,193,0,0,0,114,4,0,0,0,114,253,0,0, - 0,41,15,114,143,0,0,0,114,162,0,0,0,114,134,0, - 0,0,114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0, - 218,2,115,116,114,42,0,0,0,114,174,0,0,0,114,17, - 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,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, - 114,240,0,0,0,187,3,0,0,115,188,0,0,0,10,7, - 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, - 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, - 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, - 2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1, - 12,1,10,1,2,1,2,255,8,2,2,254,10,3,4,1, - 2,1,2,1,4,254,8,4,2,1,4,255,2,128,2,3, - 2,1,2,1,6,1,2,1,2,1,4,251,4,128,18,7, - 4,1,2,128,8,2,2,1,4,255,6,2,2,1,2,1, - 6,254,8,3,10,1,12,1,12,1,18,1,6,1,4,255, - 4,2,8,1,10,1,14,1,6,2,6,1,4,255,2,2, - 14,1,4,3,2,128,14,254,2,1,4,1,2,128,4,0, - 2,254,2,233,2,225,2,250,2,251,115,80,0,0,0,144, - 4,21,0,149,10,33,7,163,5,41,0,169,8,51,7,187, - 5,65,1,0,193,1,8,65,11,7,193,18,65,5,66,24, - 0,194,24,10,66,36,7,195,50,7,67,59,0,195,59,8, - 68,6,7,196,9,1,68,6,7,196,10,1,66,36,7,196, - 11,1,65,11,7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0, - 114,7,0,0,0,114,248,0,0,0,128,3,0,0,115,16, - 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, - 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,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,135,0,4,0,90, - 12,83,0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0, - 114,162,0,0,0,114,65,0,0,0,32,32,32,114,7,0, - 0,0,114,235,0,0,0,21,4,0,0,115,4,0,0,0, - 6,3,10,1,114,9,0,0,0,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,67, - 0,0,0,243,24,0,0,0,124,0,106,0,124,1,106,0, - 107,2,111,11,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,143,0,0,0,90,5, - 111,116,104,101,114,32,32,114,7,0,0,0,218,6,95,95, - 101,113,95,95,27,4,0,0,243,6,0,0,0,12,1,10, - 1,2,255,114,9,0,0,0,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,3,0,0,0,67,0,0,0, - 243,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,141,0,0,0,114,65,0,0,0, - 169,1,114,143,0,0,0,32,114,7,0,0,0,218,8,95, - 95,104,97,115,104,95,95,31,4,0,0,243,2,0,0,0, - 20,1,114,9,0,0,0,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,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,2,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,41, - 3,218,5,115,117,112,101,114,114,10,1,0,0,114,247,0, - 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,13, - 1,0,0,32,32,128,114,7,0,0,0,114,247,0,0,0, - 34,4,0,0,115,2,0,0,0,16,10,114,9,0,0,0, - 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,1,0,0,0,67,0,0,0,243,6,0, - 0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0, - 0,32,32,114,7,0,0,0,114,202,0,0,0,46,4,0, - 0,243,2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0, - 116,0,124,0,116,1,116,2,102,2,131,2,114,38,116,3, - 160,4,116,5,124,1,131,1,161,1,53,0,125,2,124,2, - 160,6,161,0,2,0,100,1,4,0,4,0,131,3,1,0, - 83,0,35,0,49,0,115,30,119,4,37,0,1,0,1,0, - 1,0,89,0,1,0,1,0,100,1,83,0,116,3,160,7, - 124,1,100,2,161,2,53,0,125,2,124,2,160,6,161,0, - 2,0,100,1,4,0,4,0,131,3,1,0,83,0,35,0, - 49,0,115,60,119,4,37,0,1,0,1,0,1,0,89,0, - 1,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,184,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,91,0,0,0,90,9,111, - 112,101,110,95,99,111,100,101,114,109,0,0,0,90,4,114, - 101,97,100,114,92,0,0,0,41,3,114,143,0,0,0,114, - 65,0,0,0,114,94,0,0,0,32,32,32,114,7,0,0, - 0,114,254,0,0,0,51,4,0,0,115,22,0,0,0,14, - 2,16,1,6,1,14,255,22,128,4,0,14,3,6,1,14, - 255,22,128,4,0,115,24,0,0,0,142,4,25,3,153,4, - 29,11,158,3,29,11,172,4,55,3,183,4,59,11,188,3, - 59,11,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,67,0,0,0,115,20,0,0, - 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,124, - 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, - 10,70,105,108,101,82,101,97,100,101,114,41,2,218,17,105, - 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, - 114,29,1,0,0,41,3,114,143,0,0,0,114,243,0,0, - 0,114,29,1,0,0,32,32,32,114,7,0,0,0,218,19, + 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,140,0,0,0,78,41,5,114,202,0, + 0,0,218,8,103,101,116,95,100,97,116,97,114,76,0,0, + 0,114,142,0,0,0,114,199,0,0,0,41,5,114,143,0, + 0,0,114,162,0,0,0,114,65,0,0,0,114,197,0,0, + 0,218,3,101,120,99,32,32,32,32,32,114,7,0,0,0, + 218,10,103,101,116,95,115,111,117,114,99,101,170,3,0,0, + 115,26,0,0,0,10,2,2,1,10,1,8,4,2,128,12, + 253,4,1,2,1,4,255,2,1,2,255,10,128,2,255,115, + 20,0,0,0,134,5,15,0,143,7,33,7,150,7,29,7, + 157,4,33,7,162,1,33,7,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,130,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, + 9,0,0,0,67,0,0,0,115,22,0,0,0,116,0,160, + 1,116,2,124,1,124,2,100,1,100,2,124,3,100,3,166, + 6,83,0,41,5,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, + 108,0,0,0,78,41,3,114,158,0,0,0,114,241,0,0, + 0,218,7,99,111,109,112,105,108,101,41,4,114,143,0,0, + 0,114,42,0,0,0,114,65,0,0,0,114,1,1,0,0, + 32,32,32,32,114,7,0,0,0,218,14,115,111,117,114,99, + 101,95,116,111,95,99,111,100,101,180,3,0,0,115,6,0, + 0,0,12,5,4,1,6,255,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115, + 28,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,9,0,116,1,124,2,131,1,125,8,110,13,35,0, + 4,0,116,2,144,1,121,13,1,0,1,0,1,0,100,1, + 125,8,89,0,110,147,37,0,9,0,124,0,160,3,124,2, + 161,1,125,9,110,11,35,0,4,0,116,4,144,1,121,12, + 1,0,1,0,1,0,89,0,110,129,37,0,116,5,124,9, + 100,4,25,0,131,1,125,3,9,0,124,0,160,6,124,8, + 161,1,125,10,110,11,35,0,4,0,116,4,144,1,121,11, + 1,0,1,0,1,0,89,0,110,105,37,0,124,1,124,8, + 100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8,107,3,125,7, + 116,9,106,10,100,10,107,3,114,140,124,7,115,122,116,9, + 106,10,100,11,107,2,114,140,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,10,116,14, + 124,10,124,3,124,9,100,12,25,0,124,1,124,11,131,5, + 1,0,110,13,35,0,4,0,116,15,116,16,102,2,144,1, + 121,10,1,0,1,0,1,0,89,0,110,16,37,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,114,189,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,1,115,7,124,8, + 100,1,117,1,144,1,114,7,124,3,100,1,117,1,144,1, + 114,7,124,6,114,233,124,5,100,1,117,0,114,226,116,9, + 160,11,124,4,161,1,125,5,116,23,124,14,124,5,124,7, + 131,3,125,10,110,8,116,24,124,14,124,3,116,25,124,4, + 131,1,131,3,125,10,9,0,124,0,160,26,124,2,124,8, + 124,10,161,3,1,0,124,14,83,0,35,0,4,0,116,2, + 144,1,121,9,1,0,1,0,1,0,89,0,124,14,83,0, + 37,0,124,14,83,0,119,0,119,0,119,0,119,0,119,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,192,0,0,0,114,182,0,0,0,114, + 168,0,0,0,114,3,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,141,0,0,0,114,132, + 0,0,0,114,134,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, + 202,0,0,0,114,121,0,0,0,114,107,0,0,0,114,251, + 0,0,0,114,76,0,0,0,114,34,0,0,0,114,254,0, + 0,0,114,175,0,0,0,218,10,109,101,109,111,114,121,118, + 105,101,119,114,186,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, + 180,0,0,0,218,17,95,82,65,87,95,77,65,71,73,67, + 95,78,85,77,66,69,82,114,181,0,0,0,114,179,0,0, + 0,114,142,0,0,0,114,173,0,0,0,114,158,0,0,0, + 114,172,0,0,0,114,188,0,0,0,114,4,1,0,0,114, + 16,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,194,0,0,0,114,193, + 0,0,0,114,4,0,0,0,114,253,0,0,0,41,15,114, + 143,0,0,0,114,162,0,0,0,114,134,0,0,0,114,177, + 0,0,0,114,197,0,0,0,114,180,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,132,0,0,0,218,2,115,116, + 114,42,0,0,0,114,174,0,0,0,114,17,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,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,114,7,0,0,0,114,240,0,0, + 0,188,3,0,0,115,188,0,0,0,10,7,4,1,4,1, + 4,1,4,1,4,1,2,1,10,1,2,128,14,1,8,1, + 2,128,2,2,12,1,2,128,14,1,4,1,2,128,12,2, + 2,1,12,1,2,128,14,1,4,1,2,128,2,3,2,1, + 6,254,2,4,12,1,16,1,12,1,4,1,12,1,10,1, + 2,1,2,255,8,2,2,254,10,3,4,1,2,1,2,1, + 4,254,8,4,2,1,4,255,2,128,2,3,2,1,2,1, + 6,1,2,1,2,1,4,251,4,128,18,7,4,1,2,128, + 8,2,2,1,4,255,6,2,2,1,2,1,6,254,8,3, + 10,1,12,1,12,1,18,1,6,1,4,255,4,2,8,1, + 10,1,14,1,6,2,6,1,4,255,2,2,14,1,4,3, + 2,128,14,254,2,1,4,1,2,128,4,0,2,254,2,233, + 2,225,2,250,2,251,115,80,0,0,0,144,4,21,0,149, + 10,33,7,163,5,41,0,169,8,51,7,187,5,65,1,0, + 193,1,8,65,11,7,193,18,65,5,66,24,0,194,24,10, + 66,36,7,195,50,7,67,59,0,195,59,8,68,6,7,196, + 9,1,68,6,7,196,10,1,66,36,7,196,11,1,65,11, + 7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0,114,7,0,0, + 0,114,248,0,0,0,129,3,0,0,115,16,0,0,0,8, + 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, + 9,0,0,0,114,248,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,94, + 0,0,0,135,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,136,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,136,0,4,0,90,12,83, + 0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0,114,162, + 0,0,0,114,65,0,0,0,32,32,32,114,7,0,0,0, + 114,235,0,0,0,22,4,0,0,115,4,0,0,0,6,3, + 10,1,114,9,0,0,0,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,67,0,0, + 0,243,24,0,0,0,124,0,106,0,124,1,106,0,107,2, + 111,11,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,143,0,0,0,90,5,111,116, + 104,101,114,32,32,114,7,0,0,0,218,6,95,95,101,113, + 95,95,28,4,0,0,243,6,0,0,0,12,1,10,1,2, + 255,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,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,141,0,0,0,114,65,0,0,0,169,1, + 114,143,0,0,0,32,114,7,0,0,0,218,8,95,95,104, + 97,115,104,95,95,32,4,0,0,243,2,0,0,0,20,1, + 114,9,0,0,0,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,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,2,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,41,3,218, + 5,115,117,112,101,114,114,10,1,0,0,114,247,0,0,0, + 41,3,114,143,0,0,0,114,162,0,0,0,114,13,1,0, + 0,32,32,128,114,7,0,0,0,114,247,0,0,0,35,4, + 0,0,115,2,0,0,0,16,10,114,9,0,0,0,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,1,0,0,0,67,0,0,0,243,6,0,0,0, + 124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0,0,32, + 32,114,7,0,0,0,114,202,0,0,0,47,4,0,0,243, + 2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0,116,0, + 124,0,116,1,116,2,102,2,131,2,114,38,116,3,160,4, + 116,5,124,1,131,1,161,1,53,0,125,2,124,2,160,6, + 161,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 35,0,49,0,115,30,119,4,37,0,1,0,1,0,1,0, + 89,0,1,0,1,0,100,1,83,0,116,3,160,7,124,1, + 100,2,161,2,53,0,125,2,124,2,160,6,161,0,2,0, + 100,1,4,0,4,0,131,3,1,0,83,0,35,0,49,0, + 115,60,119,4,37,0,1,0,1,0,1,0,89,0,1,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,184,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,91,0,0,0,90,9,111,112,101, + 110,95,99,111,100,101,114,109,0,0,0,90,4,114,101,97, + 100,114,92,0,0,0,41,3,114,143,0,0,0,114,65,0, + 0,0,114,94,0,0,0,32,32,32,114,7,0,0,0,114, + 254,0,0,0,52,4,0,0,115,22,0,0,0,14,2,16, + 1,6,1,14,255,22,128,4,0,14,3,6,1,14,255,22, + 128,4,0,115,24,0,0,0,142,4,25,3,153,4,29,11, + 158,3,29,11,172,4,55,3,183,4,59,11,188,3,59,11, + 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,67,0,0,0,115,20,0,0,0,100, + 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,131, + 1,83,0,41,3,78,114,0,0,0,0,41,1,218,10,70, + 105,108,101,82,101,97,100,101,114,41,2,218,17,105,109,112, + 111,114,116,108,105,98,46,114,101,97,100,101,114,115,114,29, + 1,0,0,41,3,114,143,0,0,0,114,243,0,0,0,114, + 29,1,0,0,32,32,32,114,7,0,0,0,218,19,103,101, + 116,95,114,101,115,111,117,114,99,101,95,114,101,97,100,101, + 114,61,4,0,0,115,4,0,0,0,12,2,8,1,114,9, + 0,0,0,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,60,4,0,0,115,4,0,0,0,12,2,8,1, - 114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0,0, - 0,114,150,0,0,0,114,151,0,0,0,114,235,0,0,0, - 114,15,1,0,0,114,21,1,0,0,114,159,0,0,0,114, - 247,0,0,0,114,202,0,0,0,114,254,0,0,0,114,31, - 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, - 95,95,41,1,114,13,1,0,0,64,114,7,0,0,0,114, - 10,1,0,0,16,4,0,0,115,24,0,0,0,8,0,4, - 2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,8, - 4,2,9,18,1,114,9,0,0,0,114,10,1,0,0,99, - 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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65, - 0,0,0,114,9,1,0,0,32,32,32,114,7,0,0,0, - 114,251,0,0,0,70,4,0,0,115,4,0,0,0,8,2, - 14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0, - 124,1,131,1,125,4,124,0,160,1,124,2,124,3,124,4, - 100,1,166,3,83,0,41,2,78,169,1,218,5,95,109,111, - 100,101,41,2,114,139,0,0,0,114,252,0,0,0,41,5, - 114,143,0,0,0,114,134,0,0,0,114,132,0,0,0,114, - 42,0,0,0,114,78,0,0,0,32,32,32,32,32,114,7, - 0,0,0,114,253,0,0,0,75,4,0,0,115,4,0,0, - 0,8,2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0, - 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, - 124,4,114,31,116,1,124,4,131,1,115,31,116,0,124,4, - 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, - 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, - 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, - 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, - 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, - 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, - 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, - 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, - 126,8,119,1,37,0,9,0,116,11,124,1,124,2,124,3, - 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, - 100,2,83,0,35,0,4,0,116,8,121,123,1,0,125,8, - 1,0,116,9,160,10,100,1,124,1,124,8,161,3,1,0, - 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, - 126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0, - 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, - 114,67,0,0,0,114,19,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,172,0,0, - 0,114,95,0,0,0,41,9,114,143,0,0,0,114,65,0, - 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, - 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, - 0,0,0,114,255,0,0,0,32,32,32,32,32,32,32,32, - 32,114,7,0,0,0,114,252,0,0,0,80,4,0,0,115, - 60,0,0,0,12,2,4,1,12,2,12,1,10,1,12,254, - 12,4,10,1,2,1,12,1,2,128,12,1,4,2,12,1, - 6,3,4,1,4,255,14,2,10,128,2,1,12,1,16,1, - 2,128,12,1,8,2,2,1,16,255,10,128,2,254,2,247, - 115,62,0,0,0,171,5,49,2,177,7,65,18,9,186,6, - 65,18,9,193,0,7,65,14,9,193,14,4,65,18,9,193, - 20,12,65,34,0,193,34,7,65,58,7,193,41,7,65,54, - 7,193,54,4,65,58,7,193,59,1,65,58,7,193,60,1, - 65,18,9,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,251,0,0,0,114,253,0,0,0,114, - 252,0,0,0,114,12,0,0,0,114,7,0,0,0,114,32, - 1,0,0,66,4,0,0,115,10,0,0,0,8,0,4,2, - 8,2,8,5,18,5,114,9,0,0,0,114,32,1,0,0, - 99,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,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,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,182,0,0,0,114,168,0,0,0,41,2,114,141, - 0,0,0,114,132,0,0,0,41,5,114,202,0,0,0,114, - 254,0,0,0,114,175,0,0,0,114,188,0,0,0,114,6, - 1,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, - 65,0,0,0,114,42,0,0,0,114,174,0,0,0,32,32, - 32,32,32,114,7,0,0,0,114,240,0,0,0,115,4,0, - 0,115,22,0,0,0,10,1,10,1,2,4,2,1,6,254, - 12,4,2,1,14,1,2,1,2,1,6,253,114,9,0,0, - 0,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,1,0,0, - 0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,0,1,0,0,131,4,0,0, - 114,25,0,0,0,114,9,0,0,0,122,31,83,111,117,114, + 100,101,114,41,13,114,149,0,0,0,114,148,0,0,0,114, + 150,0,0,0,114,151,0,0,0,114,235,0,0,0,114,15, + 1,0,0,114,21,1,0,0,114,159,0,0,0,114,247,0, + 0,0,114,202,0,0,0,114,254,0,0,0,114,31,1,0, + 0,90,13,95,95,99,108,97,115,115,99,101,108,108,95,95, + 41,1,114,13,1,0,0,64,114,7,0,0,0,114,10,1, + 0,0,17,4,0,0,115,24,0,0,0,10,128,4,2,8, + 3,8,6,8,4,2,3,14,1,2,11,10,1,8,4,2, + 9,18,1,114,9,0,0,0,114,10,1,0,0,99,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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65,0,0, + 0,114,9,1,0,0,32,32,32,114,7,0,0,0,114,251, + 0,0,0,71,4,0,0,115,4,0,0,0,8,2,14,1, + 114,9,0,0,0,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,6, + 0,0,0,67,0,0,0,115,24,0,0,0,116,0,124,1, + 131,1,125,4,124,0,160,1,124,2,124,3,124,4,100,1, + 166,3,83,0,41,2,78,169,1,218,5,95,109,111,100,101, + 41,2,114,139,0,0,0,114,252,0,0,0,41,5,114,143, + 0,0,0,114,134,0,0,0,114,132,0,0,0,114,42,0, + 0,0,114,78,0,0,0,32,32,32,32,32,114,7,0,0, + 0,114,253,0,0,0,76,4,0,0,115,4,0,0,0,8, + 2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0,116,0, + 124,1,131,1,92,2,125,4,125,5,103,0,125,6,124,4, + 114,31,116,1,124,4,131,1,115,31,116,0,124,4,131,1, + 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, + 124,4,114,31,116,1,124,4,131,1,114,14,116,3,124,6, + 131,1,68,0,93,47,125,7,116,4,124,4,124,7,131,2, + 125,4,9,0,116,5,160,6,124,4,161,1,1,0,113,35, + 35,0,4,0,116,7,121,58,1,0,1,0,1,0,89,0, + 113,35,4,0,116,8,121,124,1,0,125,8,1,0,116,9, + 160,10,100,1,124,4,124,8,161,3,1,0,89,0,100,2, + 125,8,126,8,1,0,100,2,83,0,100,2,125,8,126,8, + 119,1,37,0,9,0,116,11,124,1,124,2,124,3,131,3, + 1,0,116,9,160,10,100,3,124,1,161,2,1,0,100,2, + 83,0,35,0,4,0,116,8,121,123,1,0,125,8,1,0, + 116,9,160,10,100,1,124,1,124,8,161,3,1,0,89,0, + 100,2,125,8,126,8,100,2,83,0,100,2,125,8,126,8, + 119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0,0,114, + 61,0,0,0,218,8,114,101,118,101,114,115,101,100,114,67, + 0,0,0,114,19,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,172,0,0,0,114, + 95,0,0,0,41,9,114,143,0,0,0,114,65,0,0,0, + 114,42,0,0,0,114,35,1,0,0,218,6,112,97,114,101, + 110,116,114,120,0,0,0,114,63,0,0,0,114,68,0,0, + 0,114,255,0,0,0,32,32,32,32,32,32,32,32,32,114, + 7,0,0,0,114,252,0,0,0,81,4,0,0,115,60,0, + 0,0,12,2,4,1,12,2,12,1,10,1,12,254,12,4, + 10,1,2,1,12,1,2,128,12,1,4,2,12,1,6,3, + 4,1,4,255,14,2,10,128,2,1,12,1,16,1,2,128, + 12,1,8,2,2,1,16,255,10,128,2,254,2,247,115,62, + 0,0,0,171,5,49,2,177,7,65,18,9,186,6,65,18, + 9,193,0,7,65,14,9,193,14,4,65,18,9,193,20,12, + 65,34,0,193,34,7,65,58,7,193,41,7,65,54,7,193, + 54,4,65,58,7,193,59,1,65,58,7,193,60,1,65,18, + 9,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,251,0,0,0,114,253,0,0,0,114,252,0, + 0,0,114,12,0,0,0,114,7,0,0,0,114,32,1,0, + 0,67,4,0,0,115,10,0,0,0,8,0,4,2,8,2, + 8,5,18,5,114,9,0,0,0,114,32,1,0,0,99,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,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, - 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,240,0,0,0,114,0,1,0,0,114,12,0,0, - 0,114,7,0,0,0,114,39,1,0,0,111,4,0,0,115, - 8,0,0,0,8,0,4,2,8,2,12,16,114,9,0,0, - 0,114,39,1,0,0,99,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,28, - 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,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,0,83,0,114,69,0,0, - 0,114,182,0,0,0,41,3,114,143,0,0,0,114,141,0, - 0,0,114,65,0,0,0,32,32,32,114,7,0,0,0,114, - 235,0,0,0,144,4,0,0,115,4,0,0,0,6,1,10, - 1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69, - 0,0,0,114,12,1,0,0,114,14,1,0,0,32,32,114, - 7,0,0,0,114,15,1,0,0,148,4,0,0,114,16,1, - 0,0,114,9,0,0,0,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, - 3,0,0,0,67,0,0,0,114,17,1,0,0,114,69,0, - 0,0,114,18,1,0,0,114,20,1,0,0,32,114,7,0, - 0,0,114,21,1,0,0,152,4,0,0,114,22,1,0,0, - 114,9,0,0,0,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, - 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,3,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,78,41,7,114,158,0,0,0,114,241,0,0,0, - 114,186,0,0,0,90,14,99,114,101,97,116,101,95,100,121, - 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, - 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, - 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, - 0,0,155,4,0,0,115,14,0,0,0,4,2,6,1,4, - 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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,5,0, + 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, + 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,182,0,0,0,114,168,0,0,0,41,2,114,141,0,0, + 0,114,132,0,0,0,41,5,114,202,0,0,0,114,254,0, + 0,0,114,175,0,0,0,114,188,0,0,0,114,6,1,0, + 0,41,5,114,143,0,0,0,114,162,0,0,0,114,65,0, + 0,0,114,42,0,0,0,114,174,0,0,0,32,32,32,32, + 32,114,7,0,0,0,114,240,0,0,0,116,4,0,0,115, + 22,0,0,0,10,1,10,1,2,4,2,1,6,254,12,4, + 2,1,14,1,2,1,2,1,6,253,114,9,0,0,0,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,1,0,0,0,67, + 0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32, + 114,7,0,0,0,114,0,1,0,0,132,4,0,0,114,25, + 0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0,0,114, + 7,0,0,0,114,39,1,0,0,112,4,0,0,115,8,0, + 0,0,8,0,4,2,8,2,12,16,114,9,0,0,0,114, + 39,1,0,0,99,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,28,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,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,0,83,0,114,69,0,0,0,114, + 182,0,0,0,41,3,114,143,0,0,0,114,141,0,0,0, + 114,65,0,0,0,32,32,32,114,7,0,0,0,114,235,0, + 0,0,145,4,0,0,115,4,0,0,0,6,1,10,1,114, + 9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69,0,0, + 0,114,12,1,0,0,114,14,1,0,0,32,32,114,7,0, + 0,0,114,15,1,0,0,149,4,0,0,114,16,1,0,0, + 114,9,0,0,0,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,3,0, + 0,0,67,0,0,0,114,17,1,0,0,114,69,0,0,0, + 114,18,1,0,0,114,20,1,0,0,32,114,7,0,0,0, + 114,21,1,0,0,153,4,0,0,114,22,1,0,0,114,9, + 0,0,0,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,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,241,0,0,0,114,186,0,0,0,90,12,101, - 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, - 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, - 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, - 0,0,163,4,0,0,115,8,0,0,0,14,2,6,1,8, - 1,8,255,114,9,0,0,0,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,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, - 2,116,2,135,2,102,1,100,2,100,3,132,8,116,3,68, + 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, + 3,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,78,41,7,114,158,0,0,0,114,241,0,0,0,114,186, + 0,0,0,90,14,99,114,101,97,116,101,95,100,121,110,97, + 109,105,99,114,172,0,0,0,114,141,0,0,0,114,65,0, + 0,0,41,3,114,143,0,0,0,114,209,0,0,0,114,243, + 0,0,0,32,32,32,114,7,0,0,0,114,238,0,0,0, + 156,4,0,0,115,14,0,0,0,4,2,6,1,4,255,6, + 2,8,1,4,255,4,2,114,9,0,0,0,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,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,241,0,0,0,114,186,0,0,0,90,12,101,120,101, + 99,95,100,121,110,97,109,105,99,114,172,0,0,0,114,141, + 0,0,0,114,65,0,0,0,169,2,114,143,0,0,0,114, + 243,0,0,0,32,32,114,7,0,0,0,114,244,0,0,0, + 164,4,0,0,115,8,0,0,0,14,2,6,1,8,1,8, + 255,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,38,0,0, + 0,135,2,116,0,124,0,106,1,131,1,100,1,25,0,138, + 2,116,2,136,2,102,1,100,2,100,3,132,8,116,3,68, 0,131,1,131,1,83,0,41,5,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,3,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, 0,0,51,0,0,0,115,28,0,0,0,129,0,124,0,93, - 9,125,1,136,2,100,0,124,1,23,0,107,2,86,0,1, + 9,125,1,137,2,100,0,124,1,23,0,107,2,86,0,1, 0,113,2,100,1,83,0,41,2,114,235,0,0,0,78,114, 12,0,0,0,41,3,114,5,0,0,0,218,6,115,117,102, 102,105,120,218,9,102,105,108,101,95,110,97,109,101,32,32, - 128,114,7,0,0,0,114,8,0,0,0,172,4,0,0,115, + 128,114,7,0,0,0,114,8,0,0,0,173,4,0,0,115, 6,0,0,0,6,128,2,1,20,255,114,9,0,0,0,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,46, @@ -1819,950 +1820,950 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,62,78,41,4,114,73,0,0,0,114,65,0,0,0,218, 3,97,110,121,114,231,0,0,0,41,3,114,143,0,0,0, 114,162,0,0,0,114,42,1,0,0,32,32,64,114,7,0, - 0,0,114,205,0,0,0,169,4,0,0,115,8,0,0,0, - 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0, - 0,0,114,24,0,0,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,12,0,0,0, - 114,246,0,0,0,32,32,114,7,0,0,0,114,240,0,0, - 0,175,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114,7,0, - 0,0,114,0,1,0,0,179,4,0,0,114,25,0,0,0, - 114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0,0,114, - 25,1,0,0,114,74,0,0,0,114,246,0,0,0,32,32, - 114,7,0,0,0,114,202,0,0,0,183,4,0,0,114,26, - 1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1,0,0, - 114,238,0,0,0,114,244,0,0,0,114,205,0,0,0,114, - 240,0,0,0,114,0,1,0,0,114,159,0,0,0,114,202, - 0,0,0,114,12,0,0,0,114,7,0,0,0,114,28,1, - 0,0,136,4,0,0,115,24,0,0,0,8,0,4,2,8, - 6,8,4,8,4,8,3,8,8,8,6,8,6,8,4,2, - 4,14,1,114,9,0,0,0,114,28,1,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, - 0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100,21,132, - 0,90,13,100,22,100,23,132,0,90,14,100,24,83,0,41, - 25,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,99,4,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, - 0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0,0,41, - 6,218,5,95,110,97,109,101,218,5,95,112,97,116,104,114, - 136,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,12,95,112,97,116,104, - 95,102,105,110,100,101,114,169,4,114,143,0,0,0,114,141, - 0,0,0,114,65,0,0,0,90,11,112,97,116,104,95,102, - 105,110,100,101,114,32,32,32,32,114,7,0,0,0,114,235, - 0,0,0,196,4,0,0,115,8,0,0,0,6,1,6,1, - 14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4,102,2, - 83,0,41,6,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,97,0,0,0,114,10,0,0,0,41,2, - 114,16,0,0,0,114,65,0,0,0,90,8,95,95,112,97, - 116,104,95,95,78,41,2,114,45,1,0,0,114,104,0,0, - 0,41,4,114,143,0,0,0,114,38,1,0,0,218,3,100, - 111,116,90,2,109,101,32,32,32,32,114,7,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,202,4,0,0,115,8,0,0, - 0,18,2,8,1,4,2,8,3,114,9,0,0,0,122,38, + 0,0,114,205,0,0,0,170,4,0,0,115,10,0,0,0, + 2,128,14,2,12,1,2,1,8,255,114,9,0,0,0,122, + 30,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,1,0,0,0, + 67,0,0,0,114,24,0,0,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,12,0, + 0,0,114,246,0,0,0,32,32,114,7,0,0,0,114,240, + 0,0,0,176,4,0,0,114,25,0,0,0,114,9,0,0, + 0,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,1,0,0,0, + 67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114, + 7,0,0,0,114,0,1,0,0,180,4,0,0,114,25,0, + 0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0, + 0,114,25,1,0,0,114,74,0,0,0,114,246,0,0,0, + 32,32,114,7,0,0,0,114,202,0,0,0,184,4,0,0, + 114,26,1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1, + 0,0,114,238,0,0,0,114,244,0,0,0,114,205,0,0, + 0,114,240,0,0,0,114,0,1,0,0,114,159,0,0,0, + 114,202,0,0,0,114,12,0,0,0,114,7,0,0,0,114, + 28,1,0,0,137,4,0,0,115,24,0,0,0,8,0,4, + 2,8,6,8,4,8,4,8,3,8,8,8,6,8,6,8, + 4,2,4,14,1,114,9,0,0,0,114,28,1,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100, + 21,132,0,90,13,100,22,100,23,132,0,90,14,100,24,83, + 0,41,25,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,99,4, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, + 0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0, + 0,41,6,218,5,95,110,97,109,101,218,5,95,112,97,116, + 104,114,136,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,12,95,112,97, + 116,104,95,102,105,110,100,101,114,169,4,114,143,0,0,0, + 114,141,0,0,0,114,65,0,0,0,90,11,112,97,116,104, + 95,102,105,110,100,101,114,32,32,32,32,114,7,0,0,0, + 114,235,0,0,0,197,4,0,0,115,8,0,0,0,6,1, + 6,1,14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4, + 102,2,83,0,41,6,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,97,0,0,0,114,10,0,0,0, + 41,2,114,16,0,0,0,114,65,0,0,0,90,8,95,95, + 112,97,116,104,95,95,78,41,2,114,45,1,0,0,114,104, + 0,0,0,41,4,114,143,0,0,0,114,38,1,0,0,218, + 3,100,111,116,90,2,109,101,32,32,32,32,114,7,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,203,4,0,0,115,8, + 0,0,0,18,2,8,1,4,2,8,3,114,9,0,0,0, + 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,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,52,1,0,0,114,154,0,0,0,114, + 16,0,0,0,218,7,109,111,100,117,108,101,115,41,3,114, + 143,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,32,32,32,114,7,0,0,0, + 114,47,1,0,0,213,4,0,0,115,4,0,0,0,12,1, + 16,1,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0, + 0,0,116,0,124,0,160,1,161,0,131,1,125,1,124,1, + 124,0,106,2,107,3,114,37,124,0,160,3,124,0,106,4, + 124,1,161,2,125,2,124,2,100,0,117,1,114,34,124,2, + 106,5,100,0,117,0,114,34,124,2,106,6,114,34,124,2, + 106,6,124,0,95,7,124,1,124,0,95,2,124,0,106,7, + 83,0,114,69,0,0,0,41,8,114,136,0,0,0,114,47, + 1,0,0,114,48,1,0,0,114,49,1,0,0,114,45,1, + 0,0,114,163,0,0,0,114,201,0,0,0,114,46,1,0, + 0,41,3,114,143,0,0,0,90,11,112,97,114,101,110,116, + 95,112,97,116,104,114,209,0,0,0,32,32,32,114,7,0, + 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, + 217,4,0,0,115,16,0,0,0,12,2,10,1,14,1,18, + 3,6,1,8,1,6,1,6,1,114,9,0,0,0,122,27, 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,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,52,1,0,0,114,154,0,0,0,114,16,0, - 0,0,218,7,109,111,100,117,108,101,115,41,3,114,143,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,32,32,32,114,7,0,0,0,114,47, - 1,0,0,212,4,0,0,115,4,0,0,0,12,1,16,1, - 114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0,0,0, - 116,0,124,0,160,1,161,0,131,1,125,1,124,1,124,0, - 106,2,107,3,114,37,124,0,160,3,124,0,106,4,124,1, - 161,2,125,2,124,2,100,0,117,1,114,34,124,2,106,5, - 100,0,117,0,114,34,124,2,106,6,114,34,124,2,106,6, - 124,0,95,7,124,1,124,0,95,2,124,0,106,7,83,0, - 114,69,0,0,0,41,8,114,136,0,0,0,114,47,1,0, - 0,114,48,1,0,0,114,49,1,0,0,114,45,1,0,0, - 114,163,0,0,0,114,201,0,0,0,114,46,1,0,0,41, - 3,114,143,0,0,0,90,11,112,97,114,101,110,116,95,112, - 97,116,104,114,209,0,0,0,32,32,32,114,7,0,0,0, - 218,12,95,114,101,99,97,108,99,117,108,97,116,101,216,4, - 0,0,115,16,0,0,0,12,2,10,1,14,1,18,3,6, - 1,8,1,6,1,6,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,12, - 0,0,0,116,0,124,0,160,1,161,0,131,1,83,0,114, - 69,0,0,0,41,2,218,4,105,116,101,114,114,54,1,0, - 0,114,20,1,0,0,32,114,7,0,0,0,218,8,95,95, - 105,116,101,114,95,95,229,4,0,0,243,2,0,0,0,12, - 1,114,9,0,0,0,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, - 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,54,1,0, - 0,41,2,114,143,0,0,0,218,5,105,110,100,101,120,32, - 32,114,7,0,0,0,218,11,95,95,103,101,116,105,116,101, - 109,95,95,232,4,0,0,114,58,1,0,0,114,9,0,0, - 0,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,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,46,1,0, - 0,41,3,114,143,0,0,0,114,60,1,0,0,114,65,0, - 0,0,32,32,32,114,7,0,0,0,218,11,95,95,115,101, - 116,105,116,101,109,95,95,235,4,0,0,115,2,0,0,0, - 14,1,114,9,0,0,0,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, - 3,0,0,0,67,0,0,0,114,55,1,0,0,114,69,0, - 0,0,41,2,114,4,0,0,0,114,54,1,0,0,114,20, - 1,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, - 95,95,238,4,0,0,114,58,1,0,0,114,9,0,0,0, - 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,3,0,0,0,67,0,0,0,243,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,89,0,0,0,114,46, + 114,101,99,97,108,99,117,108,97,116,101,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 243,12,0,0,0,116,0,124,0,160,1,161,0,131,1,83, + 0,114,69,0,0,0,41,2,218,4,105,116,101,114,114,54, 1,0,0,114,20,1,0,0,32,114,7,0,0,0,218,8, - 95,95,114,101,112,114,95,95,241,4,0,0,114,58,1,0, - 0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32,114,7, - 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,244,4,0,0,114,58,1,0,0,114,9,0,0,0,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,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,46,1, - 0,0,114,61,0,0,0,114,66,1,0,0,32,32,114,7, - 0,0,0,114,61,0,0,0,247,4,0,0,243,2,0,0, - 0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150,0,0, - 0,114,151,0,0,0,114,235,0,0,0,114,52,1,0,0, - 114,47,1,0,0,114,54,1,0,0,114,57,1,0,0,114, - 61,1,0,0,114,62,1,0,0,114,63,1,0,0,114,65, - 1,0,0,114,68,1,0,0,114,61,0,0,0,114,12,0, - 0,0,114,7,0,0,0,114,44,1,0,0,189,4,0,0, - 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, - 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, - 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, - 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,100,18,132,0,90,12,100,19,83,0,41,20,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, - 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,44,1,0,0,114,46,1,0,0,114,50,1,0, - 0,32,32,32,32,114,7,0,0,0,114,235,0,0,0,253, - 4,0,0,115,2,0,0,0,18,1,114,9,0,0,0,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,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 24,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, - 100,2,160,3,124,0,106,4,161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0,0,114, - 101,0,0,0,114,89,0,0,0,114,149,0,0,0,41,1, - 114,243,0,0,0,32,114,7,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,0,5,0,0,115,8,0,0, - 0,6,7,2,1,4,255,12,2,114,9,0,0,0,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, + 95,95,105,116,101,114,95,95,230,4,0,0,243,2,0,0, + 0,12,1,114,9,0,0,0,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,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,54, + 1,0,0,41,2,114,143,0,0,0,218,5,105,110,100,101, + 120,32,32,114,7,0,0,0,218,11,95,95,103,101,116,105, + 116,101,109,95,95,233,4,0,0,114,58,1,0,0,114,9, + 0,0,0,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, + 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,46, + 1,0,0,41,3,114,143,0,0,0,114,60,1,0,0,114, + 65,0,0,0,32,32,32,114,7,0,0,0,218,11,95,95, + 115,101,116,105,116,101,109,95,95,236,4,0,0,115,2,0, + 0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,55,1,0,0,114, + 69,0,0,0,41,2,114,4,0,0,0,114,54,1,0,0, + 114,20,1,0,0,32,114,7,0,0,0,218,7,95,95,108, + 101,110,95,95,239,4,0,0,114,58,1,0,0,114,9,0, + 0,0,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,3,0,0,0,67,0,0,0,243, + 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,89,0,0,0, + 114,46,1,0,0,114,20,1,0,0,32,114,7,0,0,0, + 218,8,95,95,114,101,112,114,95,95,242,4,0,0,114,58, + 1,0,0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32, + 114,7,0,0,0,218,12,95,95,99,111,110,116,97,105,110, + 115,95,95,245,4,0,0,114,58,1,0,0,114,9,0,0, + 0,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,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, + 46,1,0,0,114,61,0,0,0,114,66,1,0,0,32,32, + 114,7,0,0,0,114,61,0,0,0,248,4,0,0,243,2, + 0,0,0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150, + 0,0,0,114,151,0,0,0,114,235,0,0,0,114,52,1, + 0,0,114,47,1,0,0,114,54,1,0,0,114,57,1,0, + 0,114,61,1,0,0,114,62,1,0,0,114,63,1,0,0, + 114,65,1,0,0,114,68,1,0,0,114,61,0,0,0,114, + 12,0,0,0,114,7,0,0,0,114,44,1,0,0,190,4, + 0,0,115,26,0,0,0,8,0,4,1,8,6,8,6,8, + 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, + 3,114,9,0,0,0,114,44,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, + 115,88,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,100,18,132,0,90,12,100,19,83,0,41,20,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,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,44,1,0,0,114,46,1,0,0,114,50, + 1,0,0,32,32,32,32,114,7,0,0,0,114,235,0,0, + 0,254,4,0,0,115,2,0,0,0,18,1,114,9,0,0, + 0,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,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,24,0,0,0,116,0,160,1,100,1,116,2,161,2, + 1,0,100,2,160,3,124,0,106,4,161,1,83,0,41,4, + 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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0, + 0,114,101,0,0,0,114,89,0,0,0,114,149,0,0,0, + 41,1,114,243,0,0,0,32,114,7,0,0,0,218,11,109, + 111,100,117,108,101,95,114,101,112,114,1,5,0,0,115,8, + 0,0,0,6,7,2,1,4,255,12,2,114,9,0,0,0, + 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,1,0,0,0,67, + 0,0,0,114,24,0,0,0,41,2,78,84,114,12,0,0, + 0,114,246,0,0,0,32,32,114,7,0,0,0,114,205,0, + 0,0,12,5,0,0,243,2,0,0,0,4,1,114,9,0, + 0,0,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,1,0,0,0, + 67,0,0,0,114,24,0,0,0,41,2,78,114,10,0,0, + 0,114,12,0,0,0,114,246,0,0,0,32,32,114,7,0, + 0,0,114,0,1,0,0,15,5,0,0,114,72,1,0,0, + 114,9,0,0,0,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,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, + 10,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,32,32,114,7,0,0,0,114,240, + 0,0,0,18,5,0,0,114,69,1,0,0,114,9,0,0, + 0,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,1,0,0,0,67,0,0, - 0,114,24,0,0,0,41,2,78,84,114,12,0,0,0,114, - 246,0,0,0,32,32,114,7,0,0,0,114,205,0,0,0, - 11,5,0,0,243,2,0,0,0,4,1,114,9,0,0,0, - 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,1,0,0,0,67,0, - 0,0,114,24,0,0,0,41,2,78,114,10,0,0,0,114, - 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, - 114,0,1,0,0,14,5,0,0,114,72,1,0,0,114,9, - 0,0,0,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,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,10,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,32,32,114,7,0,0,0,114,240,0,0, - 0,17,5,0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, - 24,0,0,0,114,236,0,0,0,114,12,0,0,0,114,237, - 0,0,0,32,32,114,7,0,0,0,114,238,0,0,0,20, - 5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, - 0,0,115,4,0,0,0,100,0,83,0,114,69,0,0,0, - 114,12,0,0,0,114,40,1,0,0,32,32,114,7,0,0, - 0,114,244,0,0,0,23,5,0,0,114,72,1,0,0,114, + 0,114,24,0,0,0,114,236,0,0,0,114,12,0,0,0, + 114,237,0,0,0,32,32,114,7,0,0,0,114,238,0,0, + 0,21,5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, + 0,0,114,12,0,0,0,114,40,1,0,0,32,32,114,7, + 0,0,0,114,244,0,0,0,24,5,0,0,114,72,1,0, + 0,114,9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172, + 0,0,0,114,46,1,0,0,114,245,0,0,0,114,246,0, + 0,0,32,32,114,7,0,0,0,114,247,0,0,0,27,5, + 0,0,115,8,0,0,0,6,7,4,1,4,255,12,3,114, 9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172,0,0, - 0,114,46,1,0,0,114,245,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,247,0,0,0,26,5,0,0, - 115,8,0,0,0,6,7,4,1,4,255,12,3,114,9,0, - 0,0,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, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,67,0,0,0,115,22,0,0,0,100,1,100,2,108,0, - 109,1,125,2,1,0,124,2,124,0,106,2,131,1,83,0, - 41,3,78,114,0,0,0,0,41,1,218,15,78,97,109,101, - 115,112,97,99,101,82,101,97,100,101,114,41,3,114,30,1, - 0,0,114,73,1,0,0,114,46,1,0,0,41,3,114,143, - 0,0,0,114,243,0,0,0,114,73,1,0,0,32,32,32, - 114,7,0,0,0,114,31,1,0,0,38,5,0,0,115,4, - 0,0,0,12,1,10,1,114,9,0,0,0,122,36,95,78, - 97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,235,0,0,0,114,232,0,0,0,114,71, - 1,0,0,114,205,0,0,0,114,0,1,0,0,114,240,0, - 0,0,114,238,0,0,0,114,244,0,0,0,114,247,0,0, - 0,114,31,1,0,0,114,12,0,0,0,114,7,0,0,0, - 114,70,1,0,0,252,4,0,0,115,22,0,0,0,8,0, - 8,1,2,3,10,1,8,10,8,3,8,3,8,3,8,3, - 8,3,12,12,114,9,0,0,0,114,70,1,0,0,99,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,7,100,6, - 100,7,132,0,131,1,90,8,101,7,100,8,100,9,132,0, - 131,1,90,9,101,7,100,19,100,11,100,12,132,1,131,1, - 90,10,101,7,100,20,100,13,100,14,132,1,131,1,90,11, - 101,7,100,19,100,15,100,16,132,1,131,1,90,12,101,4, - 100,17,100,18,132,0,131,1,90,13,100,10,83,0,41,21, - 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,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,64,0,0,0,116,0,116,1,106,2,160,3,161,0, - 131,1,68,0,93,22,92,2,125,0,125,1,124,1,100,1, - 117,0,114,20,116,1,106,2,124,0,61,0,113,7,116,4, - 124,1,100,2,131,2,114,29,124,1,160,5,161,0,1,0, - 113,7,100,1,83,0,41,3,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,41,6,218,4,108, - 105,115,116,114,16,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,75,1,0,0,41,2, - 114,141,0,0,0,218,6,102,105,110,100,101,114,32,32,114, - 7,0,0,0,114,75,1,0,0,49,5,0,0,115,14,0, - 0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252, - 114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,67,0,0,0,115,78,0,0,0,116,0,106, - 1,100,1,117,1,114,14,116,0,106,1,115,14,116,2,160, - 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, - 18,125,1,9,0,124,1,124,0,131,1,2,0,1,0,83, - 0,35,0,4,0,116,5,121,38,1,0,1,0,1,0,89, - 0,113,17,37,0,100,1,83,0,119,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,16,0,0,0,218,10, - 112,97,116,104,95,104,111,111,107,115,114,99,0,0,0,114, - 100,0,0,0,114,161,0,0,0,114,142,0,0,0,41,2, - 114,65,0,0,0,90,4,104,111,111,107,32,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,59, - 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, - 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, - 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,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,8,0,0,0,67,0,0,0,115,104,0,0, - 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, - 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, - 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, - 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, - 5,121,50,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,124, - 2,83,0,37,0,119,0,119,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, - 10,0,0,0,78,41,7,114,19,0,0,0,114,82,0,0, - 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, - 114,114,111,114,114,16,0,0,0,114,77,1,0,0,218,8, - 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, - 220,0,0,0,114,65,0,0,0,114,79,1,0,0,32,32, - 32,114,7,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,72,5,0,0, - 115,36,0,0,0,8,8,2,1,10,1,2,128,12,1,6, - 3,2,128,2,1,10,1,4,4,2,128,12,253,10,1,12, - 1,4,1,2,128,2,253,2,250,115,24,0,0,0,133,4, - 10,0,138,7,20,7,150,5,29,0,157,17,49,7,178,1, - 49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138,0,0, - 0,116,0,124,2,100,1,131,2,114,27,116,1,160,2,124, - 2,161,1,155,0,100,2,157,2,125,3,116,3,160,4,124, - 3,116,5,161,2,1,0,124,2,160,6,124,1,161,1,92, - 2,125,4,125,5,110,21,116,1,160,2,124,2,161,1,155, - 0,100,3,157,2,125,3,116,3,160,4,124,3,116,5,161, - 2,1,0,124,2,160,7,124,1,161,1,125,4,103,0,125, - 5,124,4,100,0,117,1,114,58,116,1,160,8,124,1,124, - 4,161,2,83,0,116,1,160,9,124,1,100,0,161,2,125, - 6,124,5,124,6,95,10,124,6,83,0,41,4,78,114,160, - 0,0,0,122,53,46,102,105,110,100,95,115,112,101,99,40, - 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, - 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, - 100,95,108,111,97,100,101,114,40,41,122,53,46,102,105,110, - 100,95,115,112,101,99,40,41,32,110,111,116,32,102,111,117, - 110,100,59,32,102,97,108,108,105,110,103,32,98,97,99,107, - 32,116,111,32,102,105,110,100,95,109,111,100,117,108,101,40, - 41,41,11,114,152,0,0,0,114,158,0,0,0,90,12,95, - 111,98,106,101,99,116,95,110,97,109,101,114,99,0,0,0, - 114,100,0,0,0,114,161,0,0,0,114,160,0,0,0,114, - 228,0,0,0,114,223,0,0,0,114,206,0,0,0,114,201, - 0,0,0,41,7,114,220,0,0,0,114,162,0,0,0,114, - 79,1,0,0,114,165,0,0,0,114,163,0,0,0,114,164, - 0,0,0,114,209,0,0,0,32,32,32,32,32,32,32,114, - 7,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, - 116,95,115,112,101,99,94,5,0,0,115,26,0,0,0,10, - 4,16,1,12,2,16,1,16,2,12,2,10,1,4,1,8, - 1,12,1,12,1,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0, - 0,115,166,0,0,0,103,0,125,4,124,2,68,0,93,67, - 125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,14, - 113,4,124,0,160,3,124,5,161,1,125,6,124,6,100,1, - 117,1,114,71,116,4,124,6,100,2,131,2,114,35,124,6, - 160,5,124,1,124,3,161,2,125,7,110,6,124,0,160,6, - 124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,46, - 113,4,124,7,106,7,100,1,117,1,114,55,124,7,2,0, - 1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,0, - 114,66,116,9,100,3,131,1,130,1,124,4,160,10,124,8, - 161,1,1,0,113,4,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,225,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,184,0,0, - 0,114,109,0,0,0,218,5,98,121,116,101,115,114,84,1, - 0,0,114,152,0,0,0,114,225,0,0,0,114,85,1,0, - 0,114,163,0,0,0,114,201,0,0,0,114,142,0,0,0, - 114,190,0,0,0,114,158,0,0,0,114,206,0,0,0,41, - 9,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, - 114,224,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,79,1,0, - 0,114,209,0,0,0,114,164,0,0,0,32,32,32,32,32, - 32,32,32,32,114,7,0,0,0,218,9,95,103,101,116,95, - 115,112,101,99,115,5,0,0,115,42,0,0,0,4,5,8, - 1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,8, - 1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,2, - 128,12,2,6,1,4,1,114,9,0,0,0,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,5, - 0,0,0,67,0,0,0,115,94,0,0,0,124,2,100,1, - 117,0,114,7,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,20, - 100,1,83,0,124,4,106,3,100,1,117,0,114,45,124,4, - 106,4,125,5,124,5,114,43,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,124,4,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,16, - 0,0,0,114,65,0,0,0,114,88,1,0,0,114,163,0, - 0,0,114,201,0,0,0,114,204,0,0,0,114,44,1,0, - 0,41,6,114,220,0,0,0,114,162,0,0,0,114,65,0, - 0,0,114,224,0,0,0,114,209,0,0,0,114,87,1,0, - 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, - 0,147,5,0,0,115,26,0,0,0,8,6,6,1,14,1, - 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, - 4,2,4,2,114,9,0,0,0,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, - 67,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, - 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, - 4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, - 0,0,0,32,32,32,32,114,7,0,0,0,114,228,0,0, - 0,171,5,0,0,115,14,0,0,0,6,8,2,2,4,254, - 12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124, - 0,105,0,124,1,164,1,142,1,83,0,41,4,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,78,41,3, - 90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,97, - 100,97,116,97,114,89,1,0,0,218,18,102,105,110,100,95, - 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, - 144,0,0,0,114,145,0,0,0,114,89,1,0,0,32,32, - 32,114,7,0,0,0,114,90,1,0,0,187,5,0,0,115, - 4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0, - 0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0,0,0, - 114,84,1,0,0,114,85,1,0,0,114,88,1,0,0,114, - 225,0,0,0,114,228,0,0,0,114,90,1,0,0,114,12, - 0,0,0,114,7,0,0,0,114,74,1,0,0,45,5,0, - 0,115,36,0,0,0,8,0,4,2,2,2,10,1,2,9, - 10,1,2,12,10,1,2,21,10,1,2,20,12,1,2,31, - 12,1,2,23,12,1,2,15,14,1,114,9,0,0,0,114, - 74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,112,0,0,0,103,0, - 125,3,124,2,68,0,93,16,92,2,137,5,125,4,124,3, - 160,0,135,5,102,1,100,1,100,2,132,8,124,4,68,0, - 131,1,161,1,1,0,113,4,124,3,124,0,95,1,124,1, - 112,27,100,3,124,0,95,2,116,3,124,0,106,2,131,1, - 115,43,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,3,0,0,0,51,0,0, - 0,115,24,0,0,0,129,0,124,0,93,7,125,1,124,1, - 136,2,102,2,86,0,1,0,113,2,100,0,83,0,114,69, - 0,0,0,114,12,0,0,0,41,3,114,5,0,0,0,114, - 41,1,0,0,114,163,0,0,0,32,32,128,114,7,0,0, - 0,114,8,0,0,0,216,5,0,0,115,4,0,0,0,6, - 128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41,11,114,190,0, - 0,0,218,8,95,108,111,97,100,101,114,115,114,65,0,0, - 0,114,86,0,0,0,114,67,0,0,0,114,19,0,0,0, - 114,82,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,6,114,143,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,211, - 0,0,0,114,163,0,0,0,32,32,32,32,32,64,114,7, - 0,0,0,114,235,0,0,0,210,5,0,0,115,20,0,0, - 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, - 1,8,1,12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93, - 1,0,0,114,20,1,0,0,32,114,7,0,0,0,114,75, - 1,0,0,226,5,0,0,114,81,0,0,0,114,9,0,0, - 0,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,4,0,0,0, - 67,0,0,0,115,54,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,161,1,125,2,124, - 2,100,2,117,0,114,19,100,2,103,0,102,2,83,0,124, - 2,106,4,124,2,106,5,112,25,103,0,102,2,83,0,41, - 3,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,122,101,70,105,108,101,70,105, - 110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,114, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, - 41,6,114,99,0,0,0,114,100,0,0,0,114,101,0,0, - 0,114,225,0,0,0,114,163,0,0,0,114,201,0,0,0, - 41,3,114,143,0,0,0,114,162,0,0,0,114,209,0,0, - 0,32,32,32,114,7,0,0,0,114,160,0,0,0,232,5, - 0,0,115,14,0,0,0,6,7,2,2,4,254,10,3,8, - 1,8,1,16,1,114,9,0,0,0,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,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,200,0,0,0,41,1, - 114,212,0,0,0,41,7,114,143,0,0,0,114,210,0,0, - 0,114,162,0,0,0,114,65,0,0,0,90,4,115,109,115, - 108,114,224,0,0,0,114,163,0,0,0,32,32,32,32,32, - 32,32,114,7,0,0,0,114,88,1,0,0,247,5,0,0, - 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, - 0,0,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,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,9,0,116,1,124,0,106,2,112,17,116, - 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, - 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, - 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, - 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, - 0,114,56,124,0,106,10,125,6,124,4,160,11,161,0,125, - 7,110,5,124,0,106,12,125,6,124,4,125,7,124,7,124, - 6,118,0,114,108,116,13,124,0,106,2,124,4,131,2,125, - 8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125,3,124,0,106,14,68, - 0,93,55,92,2,125,9,125,10,9,0,116,13,124,0,106, - 2,124,4,124,9,23,0,131,2,125,12,110,12,35,0,4, - 0,116,18,121,189,1,0,1,0,1,0,89,0,1,0,100, - 6,83,0,37,0,116,19,160,20,100,7,124,12,100,3,100, - 8,166,3,1,0,124,7,124,9,23,0,124,6,118,0,114, - 166,116,15,124,12,131,1,114,166,124,0,160,16,124,10,124, - 1,124,12,100,6,124,2,161,5,2,0,1,0,83,0,113, - 111,124,3,114,187,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,119,0,119, - 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,97,0,0,0,114,45,0,0,0,114, - 130,0,0,0,114,235,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, - 104,0,0,0,114,75,0,0,0,114,65,0,0,0,114,19, - 0,0,0,114,82,0,0,0,114,33,1,0,0,114,76,0, - 0,0,114,93,1,0,0,218,11,95,102,105,108,108,95,99, - 97,99,104,101,114,22,0,0,0,114,96,1,0,0,114,131, - 0,0,0,114,95,1,0,0,114,67,0,0,0,114,92,1, - 0,0,114,80,0,0,0,114,88,1,0,0,114,83,0,0, - 0,114,111,0,0,0,114,158,0,0,0,114,172,0,0,0, - 114,206,0,0,0,114,201,0,0,0,41,14,114,143,0,0, - 0,114,162,0,0,0,114,224,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,192,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,210,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, - 209,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,225,0,0,0,252,5,0,0, - 115,94,0,0,0,4,5,14,1,2,1,22,1,2,128,12, - 1,8,1,2,128,10,1,8,1,6,1,6,2,6,1,10, - 1,6,2,4,1,8,2,12,1,14,1,8,1,10,1,8, - 1,24,1,2,255,8,5,14,2,2,1,18,1,2,128,12, - 1,8,1,2,128,16,1,12,1,8,1,10,1,4,1,8, - 255,2,128,4,2,12,1,12,1,8,1,4,1,4,1,2, - 244,2,228,115,31,0,0,0,138,10,21,0,149,9,32,7, - 193,52,8,65,61,2,193,61,7,66,8,9,194,61,1,66, - 8,9,194,62,1,32,7,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,10,0,0,0,67,0, - 0,0,115,194,0,0,0,124,0,106,0,125,1,9,0,116, - 1,160,2,124,1,112,11,116,1,160,3,161,0,161,1,125, - 2,110,15,35,0,4,0,116,4,116,5,116,6,102,3,121, - 96,1,0,1,0,1,0,103,0,125,2,89,0,110,1,37, - 0,116,7,106,8,160,9,100,1,161,1,115,41,116,10,124, - 2,131,1,124,0,95,11,110,37,116,10,131,0,125,3,124, - 2,68,0,93,28,125,4,124,4,160,12,100,2,161,1,92, - 3,125,5,125,6,125,7,124,6,114,67,100,3,160,13,124, - 5,124,7,160,14,161,0,161,2,125,8,110,2,124,5,125, - 8,124,3,160,15,124,8,161,1,1,0,113,46,124,3,124, - 0,95,11,116,7,106,8,160,9,116,16,161,1,114,94,100, - 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100, - 6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0,114,88,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,83,0,0,0,115,20,0,0,0,104,0,124,0,93,6, - 125,1,124,1,160,0,161,0,146,2,113,2,83,0,114,12, - 0,0,0,41,1,114,131,0,0,0,41,2,114,5,0,0, - 0,90,2,102,110,32,32,114,7,0,0,0,114,14,0,0, - 0,76,6,0,0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100, - 105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0,0,114,27,0,0,0, - 114,94,1,0,0,114,95,1,0,0,114,126,0,0,0,114, - 89,0,0,0,114,131,0,0,0,218,3,97,100,100,114,28, - 0,0,0,114,96,1,0,0,41,9,114,143,0,0,0,114, - 65,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, - 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, - 116,101,110,116,115,114,67,1,0,0,114,141,0,0,0,114, - 51,1,0,0,114,41,1,0,0,90,8,110,101,119,95,110, - 97,109,101,32,32,32,32,32,32,32,32,32,114,7,0,0, - 0,114,98,1,0,0,47,6,0,0,115,42,0,0,0,6, - 2,2,1,20,1,2,128,18,1,8,3,2,128,12,3,12, - 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, - 1,12,1,20,1,4,255,2,233,115,13,0,0,0,132,9, - 14,0,142,12,28,7,193,32,1,28,7,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,7,0,0,0,115,18,0,0,0,135,3,135, - 4,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, - 4,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,4,0,0,0,19,0,0,0,115, - 36,0,0,0,116,0,124,0,131,1,115,10,116,1,100,1, - 124,0,100,2,141,2,130,1,136,1,124,0,103,1,136,2, - 162,1,82,0,142,0,83,0,41,4,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,78,41, - 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, - 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, - 7,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,88,6, - 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, - 0,0,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,78,114,12,0,0,0, - 41,5,114,220,0,0,0,114,97,1,0,0,114,102,1,0, - 0,114,220,0,0,0,114,97,1,0,0,96,96,32,64,64, - 114,7,0,0,0,218,9,112,97,116,104,95,104,111,111,107, - 78,6,0,0,115,4,0,0,0,14,10,4,6,114,9,0, - 0,0,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,3,0,0,0,67,0,0,0,114,64,1, - 0,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,89,0,0,0,114,65, - 0,0,0,114,20,1,0,0,32,114,7,0,0,0,114,65, - 1,0,0,96,6,0,0,114,58,1,0,0,114,9,0,0, - 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, - 114,101,112,114,95,95,114,69,0,0,0,41,15,114,149,0, - 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, - 0,114,235,0,0,0,114,75,1,0,0,114,166,0,0,0, - 114,228,0,0,0,114,160,0,0,0,114,88,1,0,0,114, - 225,0,0,0,114,98,1,0,0,114,233,0,0,0,114,103, - 1,0,0,114,65,1,0,0,114,12,0,0,0,114,7,0, - 0,0,114,91,1,0,0,201,5,0,0,115,24,0,0,0, - 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, - 8,51,2,31,10,1,12,17,114,9,0,0,0,114,91,1, - 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15, - 124,2,124,3,107,2,114,28,116,2,124,1,124,2,131,2, - 125,4,110,5,116,3,124,1,124,2,131,2,125,4,124,5, - 115,42,116,4,124,1,124,2,124,4,100,3,141,3,125,5, - 9,0,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,100,0,83,0,35,0,4,0,116,5,121,72,1,0, - 1,0,1,0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0, - 114,39,1,0,0,114,32,1,0,0,114,212,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,41,6,90,2,110,115, - 114,141,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,163,0,0,0,114, - 209,0,0,0,32,32,32,32,32,32,114,7,0,0,0,218, - 14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,102, - 6,0,0,115,40,0,0,0,10,2,10,1,4,1,4,1, - 8,1,8,1,12,1,10,2,4,1,14,1,2,1,8,1, - 8,1,8,1,12,1,2,128,12,1,6,2,2,128,2,254, - 115,15,0,0,0,171,16,61,0,189,7,65,7,7,193,8, - 1,65,7,7,114,108,1,0,0,99,0,0,0,0,0,0, - 0,0,0,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,102,2,125,1,116,5,116,6,102,2,125,2,124, - 0,124,1,124,2,103,3,83,0,41,2,122,95,82,101,116, - 117,114,110,115,32,97,32,108,105,115,116,32,111,102,32,102, - 105,108,101,45,98,97,115,101,100,32,109,111,100,117,108,101, - 32,108,111,97,100,101,114,115,46,10,10,32,32,32,32,69, - 97,99,104,32,105,116,101,109,32,105,115,32,97,32,116,117, - 112,108,101,32,40,108,111,97,100,101,114,44,32,115,117,102, - 102,105,120,101,115,41,46,10,32,32,32,32,78,41,7,114, - 28,1,0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,32,32,32,114,7,0,0,0,114,207,0,0,0,125,6, - 0,0,115,8,0,0,0,12,5,8,1,8,1,10,1,114, - 9,0,0,0,114,207,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,67,0,0,0,115,8, - 0,0,0,124,0,97,0,100,0,83,0,114,69,0,0,0, - 41,1,114,158,0,0,0,41,1,218,17,95,98,111,111,116, - 115,116,114,97,112,95,109,111,100,117,108,101,32,114,7,0, - 0,0,218,21,95,115,101,116,95,98,111,111,116,115,116,114, - 97,112,95,109,111,100,117,108,101,136,6,0,0,115,2,0, - 0,0,8,2,114,9,0,0,0,114,111,1,0,0,99,1, + 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,67,0,0,0,115,22,0,0,0,100,1,100,2, + 108,0,109,1,125,2,1,0,124,2,124,0,106,2,131,1, + 83,0,41,3,78,114,0,0,0,0,41,1,218,15,78,97, + 109,101,115,112,97,99,101,82,101,97,100,101,114,41,3,114, + 30,1,0,0,114,73,1,0,0,114,46,1,0,0,41,3, + 114,143,0,0,0,114,243,0,0,0,114,73,1,0,0,32, + 32,32,114,7,0,0,0,114,31,1,0,0,39,5,0,0, + 115,4,0,0,0,12,1,10,1,114,9,0,0,0,122,36, + 95,78,97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0, + 0,114,150,0,0,0,114,235,0,0,0,114,232,0,0,0, + 114,71,1,0,0,114,205,0,0,0,114,0,1,0,0,114, + 240,0,0,0,114,238,0,0,0,114,244,0,0,0,114,247, + 0,0,0,114,31,1,0,0,114,12,0,0,0,114,7,0, + 0,0,114,70,1,0,0,253,4,0,0,115,22,0,0,0, + 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, + 8,3,8,3,12,12,114,9,0,0,0,114,70,1,0,0, + 99,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,7, + 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, + 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, + 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, + 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, + 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, + 41,21,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,0, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,50,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,111,1,0,0,114, - 207,0,0,0,114,16,0,0,0,114,80,1,0,0,114,190, - 0,0,0,114,91,1,0,0,114,103,1,0,0,218,9,109, - 101,116,97,95,112,97,116,104,114,61,0,0,0,114,74,1, - 0,0,41,2,114,110,1,0,0,90,17,115,117,112,112,111, - 114,116,101,100,95,108,111,97,100,101,114,115,32,32,114,7, - 0,0,0,218,8,95,105,110,115,116,97,108,108,141,6,0, - 0,115,8,0,0,0,8,2,6,1,20,1,16,1,114,9, - 0,0,0,114,113,1,0,0,41,1,114,87,0,0,0,114, - 69,0,0,0,41,3,78,78,78,41,2,114,0,0,0,0, - 114,0,0,0,0,41,1,84,41,85,114,151,0,0,0,114, - 158,0,0,0,114,186,0,0,0,114,91,0,0,0,114,16, - 0,0,0,114,99,0,0,0,114,183,0,0,0,114,26,0, - 0,0,114,230,0,0,0,90,2,110,116,114,19,0,0,0, - 114,214,0,0,0,90,5,112,111,115,105,120,114,51,0,0, - 0,218,3,97,108,108,114,59,0,0,0,114,136,0,0,0, - 114,57,0,0,0,114,62,0,0,0,90,20,95,112,97,116, - 104,115,101,112,115,95,119,105,116,104,95,99,111,108,111,110, - 114,29,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,28,0,0, - 0,114,30,0,0,0,114,22,0,0,0,114,37,0,0,0, - 114,43,0,0,0,114,46,0,0,0,114,67,0,0,0,114, - 73,0,0,0,114,75,0,0,0,114,79,0,0,0,114,80, - 0,0,0,114,83,0,0,0,114,86,0,0,0,114,95,0, - 0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,101, - 95,95,114,185,0,0,0,114,35,0,0,0,114,171,0,0, - 0,114,34,0,0,0,114,40,0,0,0,114,7,1,0,0, - 114,116,0,0,0,114,112,0,0,0,114,127,0,0,0,114, - 61,0,0,0,114,109,1,0,0,114,231,0,0,0,114,113, - 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,121,0,0,0,114,128, - 0,0,0,114,135,0,0,0,114,137,0,0,0,114,139,0, - 0,0,114,159,0,0,0,114,166,0,0,0,114,175,0,0, - 0,114,179,0,0,0,114,181,0,0,0,114,188,0,0,0, - 114,193,0,0,0,114,194,0,0,0,114,199,0,0,0,218, - 6,111,98,106,101,99,116,114,208,0,0,0,114,212,0,0, - 0,114,213,0,0,0,114,234,0,0,0,114,248,0,0,0, - 114,10,1,0,0,114,32,1,0,0,114,39,1,0,0,114, - 28,1,0,0,114,44,1,0,0,114,70,1,0,0,114,74, - 1,0,0,114,91,1,0,0,114,108,1,0,0,114,207,0, - 0,0,114,111,1,0,0,114,113,1,0,0,114,12,0,0, - 0,114,7,0,0,0,218,8,60,109,111,100,117,108,101,62, - 1,0,0,0,115,180,0,0,0,4,0,4,22,8,3,8, - 1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8, - 2,4,3,10,1,6,2,22,2,8,1,8,1,10,1,14, - 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, - 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, - 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, - 127,16,35,12,1,4,2,4,1,6,2,4,1,10,1,8, - 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, - 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, - 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, - 127,14,17,18,50,18,45,18,25,14,53,14,63,14,49,0, - 127,14,29,0,127,10,30,8,23,8,11,12,5,114,9,0, - 0,0, + 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, + 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, + 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, + 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, + 1,0,113,7,100,1,83,0,41,3,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,41,6,218, + 4,108,105,115,116,114,16,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,75,1,0,0, + 41,2,114,141,0,0,0,218,6,102,105,110,100,101,114,32, + 32,114,7,0,0,0,114,75,1,0,0,50,5,0,0,115, + 14,0,0,0,22,4,8,1,10,1,10,1,8,1,2,128, + 4,252,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,67,0,0,0,115,78,0,0,0,116, + 0,106,1,100,1,117,1,114,14,116,0,106,1,115,14,116, + 2,160,3,100,2,116,4,161,2,1,0,116,0,106,1,68, + 0,93,18,125,1,9,0,124,1,124,0,131,1,2,0,1, + 0,83,0,35,0,4,0,116,5,121,38,1,0,1,0,1, + 0,89,0,113,17,37,0,100,1,83,0,119,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,16,0,0,0, + 218,10,112,97,116,104,95,104,111,111,107,115,114,99,0,0, + 0,114,100,0,0,0,114,161,0,0,0,114,142,0,0,0, + 41,2,114,65,0,0,0,90,4,104,111,111,107,32,32,114, + 7,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, + 115,60,5,0,0,115,22,0,0,0,16,3,12,1,10,1, + 2,1,12,1,2,128,12,1,4,1,2,128,4,2,2,253, + 115,12,0,0,0,148,3,26,2,154,7,35,9,166,1,35, + 9,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,8,0,0,0,67,0,0,0,115,104, + 0,0,0,124,1,100,1,107,2,114,21,9,0,116,0,160, + 1,161,0,125,1,110,11,35,0,4,0,116,2,121,51,1, + 0,1,0,1,0,89,0,100,2,83,0,37,0,9,0,116, + 3,106,4,124,1,25,0,125,2,124,2,83,0,35,0,4, + 0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,10,0,0,0,78,41,7,114,19,0,0,0,114,82, + 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, + 100,69,114,114,111,114,114,16,0,0,0,114,77,1,0,0, + 218,8,75,101,121,69,114,114,111,114,114,81,1,0,0,41, + 3,114,220,0,0,0,114,65,0,0,0,114,79,1,0,0, + 32,32,32,114,7,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,73,5, + 0,0,115,36,0,0,0,8,8,2,1,10,1,2,128,12, + 1,6,3,2,128,2,1,10,1,4,4,2,128,12,253,10, + 1,12,1,4,1,2,128,2,253,2,250,115,24,0,0,0, + 133,4,10,0,138,7,20,7,150,5,29,0,157,17,49,7, + 178,1,49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138, + 0,0,0,116,0,124,2,100,1,131,2,114,27,116,1,160, + 2,124,2,161,1,155,0,100,2,157,2,125,3,116,3,160, + 4,124,3,116,5,161,2,1,0,124,2,160,6,124,1,161, + 1,92,2,125,4,125,5,110,21,116,1,160,2,124,2,161, + 1,155,0,100,3,157,2,125,3,116,3,160,4,124,3,116, + 5,161,2,1,0,124,2,160,7,124,1,161,1,125,4,103, + 0,125,5,124,4,100,0,117,1,114,58,116,1,160,8,124, + 1,124,4,161,2,83,0,116,1,160,9,124,1,100,0,161, + 2,125,6,124,5,124,6,95,10,124,6,83,0,41,4,78, + 114,160,0,0,0,122,53,46,102,105,110,100,95,115,112,101, + 99,40,41,32,110,111,116,32,102,111,117,110,100,59,32,102, + 97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,102, + 105,110,100,95,108,111,97,100,101,114,40,41,122,53,46,102, + 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, + 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, + 101,40,41,41,11,114,152,0,0,0,114,158,0,0,0,90, + 12,95,111,98,106,101,99,116,95,110,97,109,101,114,99,0, + 0,0,114,100,0,0,0,114,161,0,0,0,114,160,0,0, + 0,114,228,0,0,0,114,223,0,0,0,114,206,0,0,0, + 114,201,0,0,0,41,7,114,220,0,0,0,114,162,0,0, + 0,114,79,1,0,0,114,165,0,0,0,114,163,0,0,0, + 114,164,0,0,0,114,209,0,0,0,32,32,32,32,32,32, + 32,114,7,0,0,0,218,16,95,108,101,103,97,99,121,95, + 103,101,116,95,115,112,101,99,95,5,0,0,115,26,0,0, + 0,10,4,16,1,12,2,16,1,16,2,12,2,10,1,4, + 1,8,1,12,1,12,1,6,1,4,1,114,9,0,0,0, + 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,5,0,0,0,67, + 0,0,0,115,166,0,0,0,103,0,125,4,124,2,68,0, + 93,67,125,5,116,0,124,5,116,1,116,2,102,2,131,2, + 115,14,113,4,124,0,160,3,124,5,161,1,125,6,124,6, + 100,1,117,1,114,71,116,4,124,6,100,2,131,2,114,35, + 124,6,160,5,124,1,124,3,161,2,125,7,110,6,124,0, + 160,6,124,1,124,6,161,2,125,7,124,7,100,1,117,0, + 114,46,113,4,124,7,106,7,100,1,117,1,114,55,124,7, + 2,0,1,0,83,0,124,7,106,8,125,8,124,8,100,1, + 117,0,114,66,116,9,100,3,131,1,130,1,124,4,160,10, + 124,8,161,1,1,0,113,4,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,225,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,184, + 0,0,0,114,109,0,0,0,218,5,98,121,116,101,115,114, + 84,1,0,0,114,152,0,0,0,114,225,0,0,0,114,85, + 1,0,0,114,163,0,0,0,114,201,0,0,0,114,142,0, + 0,0,114,190,0,0,0,114,158,0,0,0,114,206,0,0, + 0,41,9,114,220,0,0,0,114,162,0,0,0,114,65,0, + 0,0,114,224,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,79, + 1,0,0,114,209,0,0,0,114,164,0,0,0,32,32,32, + 32,32,32,32,32,32,114,7,0,0,0,218,9,95,103,101, + 116,95,115,112,101,99,116,5,0,0,115,42,0,0,0,4, + 5,8,1,14,1,2,1,10,1,8,1,10,1,14,1,12, + 2,8,1,2,1,10,1,8,1,6,1,8,1,8,1,10, + 5,2,128,12,2,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,94,0,0,0,124,2, + 100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3,100,1,117,0,114,45, + 124,4,106,4,125,5,124,5,114,43,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,124,4,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,16,0,0,0,114,65,0,0,0,114,88,1,0,0,114, + 163,0,0,0,114,201,0,0,0,114,204,0,0,0,114,44, + 1,0,0,41,6,114,220,0,0,0,114,162,0,0,0,114, + 65,0,0,0,114,224,0,0,0,114,209,0,0,0,114,87, + 1,0,0,32,32,32,32,32,32,114,7,0,0,0,114,225, + 0,0,0,148,5,0,0,115,26,0,0,0,8,6,6,1, + 14,1,8,1,4,1,10,1,6,1,4,1,6,3,16,1, + 4,1,4,2,4,2,114,9,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100, + 1,116,2,161,2,1,0,124,0,160,3,124,1,124,2,161, + 2,125,3,124,3,100,2,117,0,114,18,100,2,83,0,124, + 3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46, + 102,105,110,100,95,109,111,100,117,108,101,40,41,32,105,115, + 32,100,101,112,114,101,99,97,116,101,100,32,97,110,100,32, + 115,108,97,116,101,100,32,102,111,114,32,114,101,109,111,118, + 97,108,32,105,110,32,80,121,116,104,111,110,32,51,46,49, + 50,59,32,117,115,101,32,102,105,110,100,95,115,112,101,99, + 40,41,32,105,110,115,116,101,97,100,78,114,226,0,0,0, + 114,227,0,0,0,32,32,32,32,114,7,0,0,0,114,228, + 0,0,0,172,5,0,0,115,14,0,0,0,6,8,2,2, + 4,254,12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0, + 0,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,2,1,0,124,2,106, + 2,124,0,105,0,124,1,164,1,142,1,83,0,41,4,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,78, + 41,3,90,18,105,109,112,111,114,116,108,105,98,46,109,101, + 116,97,100,97,116,97,114,89,1,0,0,218,18,102,105,110, + 100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,41, + 3,114,144,0,0,0,114,145,0,0,0,114,89,1,0,0, + 32,32,32,114,7,0,0,0,114,90,1,0,0,188,5,0, + 0,115,4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69, + 0,0,0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0, + 0,0,114,84,1,0,0,114,85,1,0,0,114,88,1,0, + 0,114,225,0,0,0,114,228,0,0,0,114,90,1,0,0, + 114,12,0,0,0,114,7,0,0,0,114,74,1,0,0,46, + 5,0,0,115,36,0,0,0,8,0,4,2,2,2,10,1, + 2,9,10,1,2,12,10,1,2,21,10,1,2,20,12,1, + 2,31,12,1,2,23,12,1,2,15,14,1,114,9,0,0, + 0,114,74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,114,0,0,0, + 135,5,103,0,125,3,124,2,68,0,93,16,92,2,138,5, + 125,4,124,3,160,0,136,5,102,1,100,1,100,2,132,8, + 124,4,68,0,131,1,161,1,1,0,113,5,124,3,124,0, + 95,1,124,1,112,28,100,3,124,0,95,2,116,3,124,0, + 106,2,131,1,115,44,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,3,0,0, + 0,51,0,0,0,115,24,0,0,0,129,0,124,0,93,7, + 125,1,124,1,137,2,102,2,86,0,1,0,113,2,100,0, + 83,0,114,69,0,0,0,114,12,0,0,0,41,3,114,5, + 0,0,0,114,41,1,0,0,114,163,0,0,0,32,32,128, + 114,7,0,0,0,114,8,0,0,0,217,5,0,0,115,4, + 0,0,0,6,128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41, + 11,114,190,0,0,0,218,8,95,108,111,97,100,101,114,115, + 114,65,0,0,0,114,86,0,0,0,114,67,0,0,0,114, + 19,0,0,0,114,82,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,6,114, + 143,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,211,0,0,0,114,163,0,0,0,32,32,32,32, + 32,64,114,7,0,0,0,114,235,0,0,0,211,5,0,0, + 115,22,0,0,0,2,128,4,4,12,1,26,1,6,1,10, + 2,10,1,18,1,6,1,8,1,12,1,114,9,0,0,0, + 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,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,130,0,0, + 0,78,41,1,114,93,1,0,0,114,20,1,0,0,32,114, + 7,0,0,0,114,75,1,0,0,227,5,0,0,114,81,0, + 0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0,0,0,116, + 0,160,1,100,1,116,2,161,2,1,0,124,0,160,3,124, + 1,161,1,125,2,124,2,100,2,117,0,114,19,100,2,103, + 0,102,2,83,0,124,2,106,4,124,2,106,5,112,25,103, + 0,102,2,83,0,41,3,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,122,101, + 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, + 108,111,97,100,101,114,40,41,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, + 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, + 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, + 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, + 115,116,101,97,100,78,41,6,114,99,0,0,0,114,100,0, + 0,0,114,101,0,0,0,114,225,0,0,0,114,163,0,0, + 0,114,201,0,0,0,41,3,114,143,0,0,0,114,162,0, + 0,0,114,209,0,0,0,32,32,32,114,7,0,0,0,114, + 160,0,0,0,233,5,0,0,115,14,0,0,0,6,7,2, + 2,4,254,10,3,8,1,8,1,16,1,114,9,0,0,0, + 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,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, + 200,0,0,0,41,1,114,212,0,0,0,41,7,114,143,0, + 0,0,114,210,0,0,0,114,162,0,0,0,114,65,0,0, + 0,90,4,115,109,115,108,114,224,0,0,0,114,163,0,0, + 0,32,32,32,32,32,32,32,114,7,0,0,0,114,88,1, + 0,0,248,5,0,0,115,8,0,0,0,10,1,8,1,2, + 1,6,255,114,9,0,0,0,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,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,9,0,116,1,124, + 0,106,2,112,17,116,3,160,4,161,0,131,1,106,5,125, + 5,110,12,35,0,4,0,116,6,121,190,1,0,1,0,1, + 0,100,4,125,5,89,0,110,1,37,0,124,5,124,0,106, + 7,107,3,114,45,124,0,160,8,161,0,1,0,124,5,124, + 0,95,7,116,9,131,0,114,56,124,0,106,10,125,6,124, + 4,160,11,161,0,125,7,110,5,124,0,106,12,125,6,124, + 4,125,7,124,7,124,6,118,0,114,108,116,13,124,0,106, + 2,124,4,131,2,125,8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125, + 3,124,0,106,14,68,0,93,55,92,2,125,9,125,10,9, + 0,116,13,124,0,106,2,124,4,124,9,23,0,131,2,125, + 12,110,12,35,0,4,0,116,18,121,189,1,0,1,0,1, + 0,89,0,1,0,100,6,83,0,37,0,116,19,160,20,100, + 7,124,12,100,3,100,8,166,3,1,0,124,7,124,9,23, + 0,124,6,118,0,114,166,116,15,124,12,131,1,114,166,124, + 0,160,16,124,10,124,1,124,12,100,6,124,2,161,5,2, + 0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,97,0,0,0, + 114,45,0,0,0,114,130,0,0,0,114,235,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,104,0,0,0,114,75,0,0,0,114, + 65,0,0,0,114,19,0,0,0,114,82,0,0,0,114,33, + 1,0,0,114,76,0,0,0,114,93,1,0,0,218,11,95, + 102,105,108,108,95,99,97,99,104,101,114,22,0,0,0,114, + 96,1,0,0,114,131,0,0,0,114,95,1,0,0,114,67, + 0,0,0,114,92,1,0,0,114,80,0,0,0,114,88,1, + 0,0,114,83,0,0,0,114,111,0,0,0,114,158,0,0, + 0,114,172,0,0,0,114,206,0,0,0,114,201,0,0,0, + 41,14,114,143,0,0,0,114,162,0,0,0,114,224,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,192,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,210,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,209,0,0,0,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,114,7,0,0,0,114,225,0, + 0,0,253,5,0,0,115,94,0,0,0,4,5,14,1,2, + 1,22,1,2,128,12,1,8,1,2,128,10,1,8,1,6, + 1,6,2,6,1,10,1,6,2,4,1,8,2,12,1,14, + 1,8,1,10,1,8,1,24,1,2,255,8,5,14,2,2, + 1,18,1,2,128,12,1,8,1,2,128,16,1,12,1,8, + 1,10,1,4,1,8,255,2,128,4,2,12,1,12,1,8, + 1,4,1,4,1,2,244,2,228,115,31,0,0,0,138,10, + 21,0,149,9,32,7,193,52,8,65,61,2,193,61,7,66, + 8,9,194,61,1,66,8,9,194,62,1,32,7,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, + 10,0,0,0,67,0,0,0,115,194,0,0,0,124,0,106, + 0,125,1,9,0,116,1,160,2,124,1,112,11,116,1,160, + 3,161,0,161,1,125,2,110,15,35,0,4,0,116,4,116, + 5,116,6,102,3,121,96,1,0,1,0,1,0,103,0,125, + 2,89,0,110,1,37,0,116,7,106,8,160,9,100,1,161, + 1,115,41,116,10,124,2,131,1,124,0,95,11,110,37,116, + 10,131,0,125,3,124,2,68,0,93,28,125,4,124,4,160, + 12,100,2,161,1,92,3,125,5,125,6,125,7,124,6,114, + 67,100,3,160,13,124,5,124,7,160,14,161,0,161,2,125, + 8,110,2,124,5,125,8,124,3,160,15,124,8,161,1,1, + 0,113,46,124,3,124,0,95,11,116,7,106,8,160,9,116, + 16,161,1,114,94,100,4,100,5,132,0,124,2,68,0,131, + 1,124,0,95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0, + 0,114,88,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,83,0,0,0,115,20,0,0,0, + 104,0,124,0,93,6,125,1,124,1,160,0,161,0,146,2, + 113,2,83,0,114,12,0,0,0,41,1,114,131,0,0,0, + 41,2,114,5,0,0,0,90,2,102,110,32,32,114,7,0, + 0,0,114,14,0,0,0,77,6,0,0,115,2,0,0,0, + 20,0,114,9,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,19,0,0,0,90, + 7,108,105,115,116,100,105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0, + 0,114,27,0,0,0,114,94,1,0,0,114,95,1,0,0, + 114,126,0,0,0,114,89,0,0,0,114,131,0,0,0,218, + 3,97,100,100,114,28,0,0,0,114,96,1,0,0,41,9, + 114,143,0,0,0,114,65,0,0,0,90,8,99,111,110,116, + 101,110,116,115,90,21,108,111,119,101,114,95,115,117,102,102, + 105,120,95,99,111,110,116,101,110,116,115,114,67,1,0,0, + 114,141,0,0,0,114,51,1,0,0,114,41,1,0,0,90, + 8,110,101,119,95,110,97,109,101,32,32,32,32,32,32,32, + 32,32,114,7,0,0,0,114,98,1,0,0,48,6,0,0, + 115,42,0,0,0,6,2,2,1,20,1,2,128,18,1,8, + 3,2,128,12,3,12,1,6,7,8,1,16,1,4,1,18, + 1,4,2,12,1,6,1,12,1,20,1,4,255,2,233,115, + 13,0,0,0,132,9,14,0,142,12,28,7,193,32,1,28, + 7,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,7,0,0,0,115,22, + 0,0,0,135,3,135,4,136,3,136,4,102,2,100,1,100, + 2,132,8,125,2,124,2,83,0,41,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0,116,0, + 124,0,131,1,115,10,116,1,100,1,124,0,100,2,141,2, + 130,1,137,1,124,0,103,1,137,2,162,1,82,0,142,0, + 83,0,41,4,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,78,41,2,114,83,0,0,0, + 114,142,0,0,0,41,3,114,65,0,0,0,114,220,0,0, + 0,114,97,1,0,0,32,128,128,114,7,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,89,6,0,0,115,6,0,0, + 0,8,2,12,1,16,1,114,9,0,0,0,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,78,114,12,0,0,0,41,5,114,220,0,0, + 0,114,97,1,0,0,114,102,1,0,0,114,220,0,0,0, + 114,97,1,0,0,96,96,32,64,64,114,7,0,0,0,218, + 9,112,97,116,104,95,104,111,111,107,79,6,0,0,115,6, + 0,0,0,4,128,14,10,4,6,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,64,1,0,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,89,0,0,0,114,65,0,0,0,114, + 20,1,0,0,32,114,7,0,0,0,114,65,1,0,0,97, + 6,0,0,114,58,1,0,0,114,9,0,0,0,122,19,70, + 105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114, + 95,95,114,69,0,0,0,41,15,114,149,0,0,0,114,148, + 0,0,0,114,150,0,0,0,114,151,0,0,0,114,235,0, + 0,0,114,75,1,0,0,114,166,0,0,0,114,228,0,0, + 0,114,160,0,0,0,114,88,1,0,0,114,225,0,0,0, + 114,98,1,0,0,114,233,0,0,0,114,103,1,0,0,114, + 65,1,0,0,114,12,0,0,0,114,7,0,0,0,114,91, + 1,0,0,202,5,0,0,115,24,0,0,0,8,0,4,2, + 8,7,8,16,4,4,8,2,8,15,10,5,8,51,2,31, + 10,1,12,17,114,9,0,0,0,114,91,1,0,0,99,4, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,146,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,33, + 124,5,114,18,124,5,106,1,125,4,110,15,124,2,124,3, + 107,2,114,28,116,2,124,1,124,2,131,2,125,4,110,5, + 116,3,124,1,124,2,131,2,125,4,124,5,115,42,116,4, + 124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100,0, + 83,0,35,0,4,0,116,5,121,72,1,0,1,0,1,0, + 89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0,114,39,1,0, + 0,114,32,1,0,0,114,212,0,0,0,218,9,69,120,99, + 101,112,116,105,111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0, + 32,32,32,32,32,32,114,7,0,0,0,218,14,95,102,105, + 120,95,117,112,95,109,111,100,117,108,101,103,6,0,0,115, + 40,0,0,0,10,2,10,1,4,1,4,1,8,1,8,1, + 12,1,10,2,4,1,14,1,2,1,8,1,8,1,8,1, + 12,1,2,128,12,1,6,2,2,128,2,254,115,15,0,0, + 0,171,16,61,0,189,7,65,7,7,193,8,1,65,7,7, + 114,108,1,0,0,99,0,0,0,0,0,0,0,0,0,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,102, + 2,125,1,116,5,116,6,102,2,125,2,124,0,124,1,124, + 2,103,3,83,0,41,2,122,95,82,101,116,117,114,110,115, + 32,97,32,108,105,115,116,32,111,102,32,102,105,108,101,45, + 98,97,115,101,100,32,109,111,100,117,108,101,32,108,111,97, + 100,101,114,115,46,10,10,32,32,32,32,69,97,99,104,32, + 105,116,101,109,32,105,115,32,97,32,116,117,112,108,101,32, + 40,108,111,97,100,101,114,44,32,115,117,102,102,105,120,101, + 115,41,46,10,32,32,32,32,78,41,7,114,28,1,0,0, + 114,186,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,127, + 0,0,0,114,39,1,0,0,114,113,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,32,32,32, + 114,7,0,0,0,114,207,0,0,0,126,6,0,0,115,8, + 0,0,0,12,5,8,1,8,1,10,1,114,9,0,0,0, + 114,207,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,124, + 0,97,0,100,0,83,0,114,69,0,0,0,41,1,114,158, + 0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,97, + 112,95,109,111,100,117,108,101,32,114,7,0,0,0,218,21, + 95,115,101,116,95,98,111,111,116,115,116,114,97,112,95,109, + 111,100,117,108,101,137,6,0,0,115,2,0,0,0,8,2, + 114,9,0,0,0,114,111,1,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 50,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,111,1,0,0,114,207,0,0,0, + 114,16,0,0,0,114,80,1,0,0,114,190,0,0,0,114, + 91,1,0,0,114,103,1,0,0,218,9,109,101,116,97,95, + 112,97,116,104,114,61,0,0,0,114,74,1,0,0,41,2, + 114,110,1,0,0,90,17,115,117,112,112,111,114,116,101,100, + 95,108,111,97,100,101,114,115,32,32,114,7,0,0,0,218, + 8,95,105,110,115,116,97,108,108,142,6,0,0,115,8,0, + 0,0,8,2,6,1,20,1,16,1,114,9,0,0,0,114, + 113,1,0,0,41,1,114,87,0,0,0,114,69,0,0,0, + 41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0, + 0,41,1,84,41,85,114,151,0,0,0,114,158,0,0,0, + 114,186,0,0,0,114,91,0,0,0,114,16,0,0,0,114, + 99,0,0,0,114,183,0,0,0,114,26,0,0,0,114,230, + 0,0,0,90,2,110,116,114,19,0,0,0,114,214,0,0, + 0,90,5,112,111,115,105,120,114,51,0,0,0,218,3,97, + 108,108,114,59,0,0,0,114,136,0,0,0,114,57,0,0, + 0,114,62,0,0,0,90,20,95,112,97,116,104,115,101,112, + 115,95,119,105,116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0, + 0,0,114,22,0,0,0,114,37,0,0,0,114,43,0,0, + 0,114,46,0,0,0,114,67,0,0,0,114,73,0,0,0, + 114,75,0,0,0,114,79,0,0,0,114,80,0,0,0,114, + 83,0,0,0,114,86,0,0,0,114,95,0,0,0,218,4, + 116,121,112,101,218,8,95,95,99,111,100,101,95,95,114,185, + 0,0,0,114,35,0,0,0,114,171,0,0,0,114,34,0, + 0,0,114,40,0,0,0,114,7,1,0,0,114,116,0,0, + 0,114,112,0,0,0,114,127,0,0,0,114,61,0,0,0, + 114,109,1,0,0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0,114, + 135,0,0,0,114,137,0,0,0,114,139,0,0,0,114,159, + 0,0,0,114,166,0,0,0,114,175,0,0,0,114,179,0, + 0,0,114,181,0,0,0,114,188,0,0,0,114,193,0,0, + 0,114,194,0,0,0,114,199,0,0,0,218,6,111,98,106, + 101,99,116,114,208,0,0,0,114,212,0,0,0,114,213,0, + 0,0,114,234,0,0,0,114,248,0,0,0,114,10,1,0, + 0,114,32,1,0,0,114,39,1,0,0,114,28,1,0,0, + 114,44,1,0,0,114,70,1,0,0,114,74,1,0,0,114, + 91,1,0,0,114,108,1,0,0,114,207,0,0,0,114,111, + 1,0,0,114,113,1,0,0,114,12,0,0,0,114,7,0, + 0,0,218,8,60,109,111,100,117,108,101,62,1,0,0,0, + 115,180,0,0,0,4,0,4,22,8,3,8,1,8,1,8, + 1,8,1,10,3,4,1,8,1,10,1,8,2,4,3,10, + 1,6,2,22,2,8,1,8,1,10,1,14,1,4,4,4, + 1,2,1,2,1,4,255,8,4,6,16,8,3,8,5,8, + 5,4,6,10,1,8,30,8,6,8,8,8,10,8,9,8, + 5,4,7,10,1,8,8,10,5,10,22,0,127,16,36,12, + 1,4,2,4,1,6,2,4,1,10,1,8,2,6,2,8, + 2,16,2,8,71,8,40,8,19,8,12,8,12,8,31,8, + 20,8,33,8,28,10,24,10,13,10,10,8,11,6,14,4, + 3,2,1,12,255,14,73,14,67,16,30,0,127,14,17,18, + 50,18,45,18,25,14,53,14,63,14,49,0,127,14,29,0, + 127,10,30,8,23,8,11,12,5,114,9,0,0,0, }; diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 65c03ef0e949a1..94b2a7c9b6e930 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -134,12 +134,12 @@ static void *opcode_targets[256] = { &&TARGET_MAKE_FUNCTION, &&TARGET_BUILD_SLICE, &&_unknown_opcode, + &&TARGET_MAKE_CELL, &&TARGET_LOAD_CLOSURE, &&TARGET_LOAD_DEREF, &&TARGET_STORE_DEREF, &&TARGET_DELETE_DEREF, &&_unknown_opcode, - &&_unknown_opcode, &&TARGET_CALL_FUNCTION_KW, &&TARGET_CALL_FUNCTION_EX, &&_unknown_opcode, From webhook-mailer at python.org Mon Jun 7 19:58:56 2021 From: webhook-mailer at python.org (ericsnowcurrently) Date: Mon, 07 Jun 2021 23:58:56 -0000 Subject: [Python-checkins] bpo-43693: Silence some compiler warnings. (gh-26588) Message-ID: https://github.com/python/cpython/commit/165c884154901deae46b5e328a6414d130e6bfff commit: 165c884154901deae46b5e328a6414d130e6bfff branch: main author: Eric Snow committer: ericsnowcurrently date: 2021-06-07T17:58:38-06:00 summary: bpo-43693: Silence some compiler warnings. (gh-26588) The plan is to eventually make PyCodeObject opaque in the public C-API, with the full struct moved to Include/internal/pycore_code.h. _PyLocalsPlusKinds and _PyLocalsPlusKind started off there but were needed on PyCodeObject, hence the duplication. This led to warnings with some compilers. (Apparently it does not trigger a warning on my install of GCC.) This change eliminates the superfluous typedef. https://bugs.python.org/issue43693 files: M Include/cpython/code.h M Include/internal/pycore_code.h diff --git a/Include/cpython/code.h b/Include/cpython/code.h index a3383744546ff..a3db7d9d5eff7 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -26,7 +26,6 @@ typedef uint16_t _Py_CODEUNIT; typedef struct _PyOpcache _PyOpcache; -// These are duplicated from pycore_code.h. typedef unsigned char _PyLocalsPlusKind; typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index d1ff597bf5461..2709e082b05b1 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -167,8 +167,8 @@ extern Py_ssize_t _Py_QuickenedCount; * "free" kind is mutually exclusive with both. */ -// We would use an enum if C let us specify the storage type. -typedef unsigned char _PyLocalsPlusKind; +// For now _PyLocalsPlusKind and _PyLocalsPlusKinds are defined +// in Include/cpython/code.h. /* Note that these all fit within _PyLocalsPlusKind, as do combinations. */ // Later, we will use the smaller numbers to differentiate the different // kinds of locals (e.g. pos-only arg, varkwargs, local-only). @@ -176,8 +176,6 @@ typedef unsigned char _PyLocalsPlusKind; #define CO_FAST_CELL 0x40 #define CO_FAST_FREE 0x80 -typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; - static inline int _PyCode_InitLocalsPlusKinds(int num, _PyLocalsPlusKinds *pkinds) { From webhook-mailer at python.org Mon Jun 7 20:15:55 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Jun 2021 00:15:55 -0000 Subject: [Python-checkins] fix: use unambiguous punction in 'invalid escape sequence' message (GH-26582) Message-ID: https://github.com/python/cpython/commit/ffd87b7093109c279caf8e3ca060f408a102388a commit: ffd87b7093109c279caf8e3ca060f408a102388a branch: main author: Ned Batchelder committer: pablogsal date: 2021-06-08T01:15:46+01:00 summary: fix: use unambiguous punction in 'invalid escape sequence' message (GH-26582) files: M Lib/test/test_cmd_line_script.py M Parser/string_parser.c diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py index af29c171d4282f..6ffec918ebbd59 100644 --- a/Lib/test/test_cmd_line_script.py +++ b/Lib/test/test_cmd_line_script.py @@ -651,7 +651,7 @@ def test_syntaxerror_invalid_escape_sequence_multi_line(self): stderr.splitlines()[-3:], [ b' foo = """\\q"""', b' ^^^^^^^^', - b'SyntaxError: invalid escape sequence \\q' + b'SyntaxError: invalid escape sequence \'\\q\'' ], ) diff --git a/Parser/string_parser.c b/Parser/string_parser.c index b919633ded8d9d..fa41a360c3fb5b 100644 --- a/Parser/string_parser.c +++ b/Parser/string_parser.c @@ -12,7 +12,7 @@ static int warn_invalid_escape_sequence(Parser *p, unsigned char first_invalid_escape_char, Token *t) { PyObject *msg = - PyUnicode_FromFormat("invalid escape sequence \\%c", first_invalid_escape_char); + PyUnicode_FromFormat("invalid escape sequence '\\%c'", first_invalid_escape_char); if (msg == NULL) { return -1; } @@ -27,7 +27,7 @@ warn_invalid_escape_sequence(Parser *p, unsigned char first_invalid_escape_char, since _PyPegen_raise_error uses p->tokens[p->fill - 1] for the error location, if p->known_err_token is not set. */ p->known_err_token = t; - RAISE_SYNTAX_ERROR("invalid escape sequence \\%c", first_invalid_escape_char); + RAISE_SYNTAX_ERROR("invalid escape sequence '\\%c'", first_invalid_escape_char); } Py_DECREF(msg); return -1; From webhook-mailer at python.org Mon Jun 7 20:36:31 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 08 Jun 2021 00:36:31 -0000 Subject: [Python-checkins] fix: use unambiguous punction in 'invalid escape sequence' message (GH-26582) Message-ID: https://github.com/python/cpython/commit/d80f4265db63a1692455abb8d1c77d0d72151bbb commit: d80f4265db63a1692455abb8d1c77d0d72151bbb branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-07T17:36:19-07:00 summary: fix: use unambiguous punction in 'invalid escape sequence' message (GH-26582) (cherry picked from commit ffd87b7093109c279caf8e3ca060f408a102388a) Co-authored-by: Ned Batchelder files: M Lib/test/test_cmd_line_script.py M Parser/string_parser.c diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py index af29c171d4282f..6ffec918ebbd59 100644 --- a/Lib/test/test_cmd_line_script.py +++ b/Lib/test/test_cmd_line_script.py @@ -651,7 +651,7 @@ def test_syntaxerror_invalid_escape_sequence_multi_line(self): stderr.splitlines()[-3:], [ b' foo = """\\q"""', b' ^^^^^^^^', - b'SyntaxError: invalid escape sequence \\q' + b'SyntaxError: invalid escape sequence \'\\q\'' ], ) diff --git a/Parser/string_parser.c b/Parser/string_parser.c index b919633ded8d9d..fa41a360c3fb5b 100644 --- a/Parser/string_parser.c +++ b/Parser/string_parser.c @@ -12,7 +12,7 @@ static int warn_invalid_escape_sequence(Parser *p, unsigned char first_invalid_escape_char, Token *t) { PyObject *msg = - PyUnicode_FromFormat("invalid escape sequence \\%c", first_invalid_escape_char); + PyUnicode_FromFormat("invalid escape sequence '\\%c'", first_invalid_escape_char); if (msg == NULL) { return -1; } @@ -27,7 +27,7 @@ warn_invalid_escape_sequence(Parser *p, unsigned char first_invalid_escape_char, since _PyPegen_raise_error uses p->tokens[p->fill - 1] for the error location, if p->known_err_token is not set. */ p->known_err_token = t; - RAISE_SYNTAX_ERROR("invalid escape sequence \\%c", first_invalid_escape_char); + RAISE_SYNTAX_ERROR("invalid escape sequence '\\%c'", first_invalid_escape_char); } Py_DECREF(msg); return -1; From webhook-mailer at python.org Tue Jun 8 03:23:07 2021 From: webhook-mailer at python.org (JulienPalard) Date: Tue, 08 Jun 2021 07:23:07 -0000 Subject: [Python-checkins] bpo-42238: Doc CI: Disable suspicious checks. (GH-26575) Message-ID: https://github.com/python/cpython/commit/227a09325e7bf82ecd303b4696c054a086b29a00 commit: 227a09325e7bf82ecd303b4696c054a086b29a00 branch: main author: Julien Palard committer: JulienPalard date: 2021-06-08T09:22:58+02:00 summary: bpo-42238: Doc CI: Disable suspicious checks. (GH-26575) They are slow and raise too many false positive, I'm in the slow process to try to change this. files: M .github/workflows/doc.yml M .travis.yml diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 1bc14a22ac6976..519884177f64ac 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -38,7 +38,7 @@ jobs: - name: 'Install build dependencies' run: make -C Doc/ PYTHON=../python venv - name: 'Build documentation' - run: xvfb-run make -C Doc/ PYTHON=../python SPHINXOPTS="-q -W --keep-going -j4" doctest html suspicious + run: xvfb-run make -C Doc/ PYTHON=../python SPHINXOPTS="-q -W --keep-going -j4" doctest html - name: 'Upload' uses: actions/upload-artifact at v2.2.3 with: diff --git a/.travis.yml b/.travis.yml index c92404559a7d3a..4b85da1a44c036 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,7 +53,7 @@ matrix: - cd Doc - make venv PYTHON=python script: - - make check html suspicious SPHINXOPTS="-q -W -j4" + - make check html SPHINXOPTS="-q -W -j4" - name: "Documentation tests" os: linux language: c From webhook-mailer at python.org Tue Jun 8 05:47:37 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Tue, 08 Jun 2021 09:47:37 -0000 Subject: [Python-checkins] Use `from` imports (GH-26594) Message-ID: https://github.com/python/cpython/commit/d56e700d6c7ebf1a424260d0e4f0c291d1f5b3af commit: d56e700d6c7ebf1a424260d0e4f0c291d1f5b3af branch: main author: Machinexa2 committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-08T06:47:15-03:00 summary: Use `from` imports (GH-26594) from imports files: M Lib/concurrent/futures/process.py diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py index 764719859f7cea..9904db78c5b4ce 100644 --- a/Lib/concurrent/futures/process.py +++ b/Lib/concurrent/futures/process.py @@ -56,7 +56,7 @@ from functools import partial import itertools import sys -import traceback +from traceback import format_exception _threads_wakeups = weakref.WeakKeyDictionary() @@ -123,8 +123,7 @@ def __str__(self): class _ExceptionWithTraceback: def __init__(self, exc, tb): - tb = traceback.format_exception(type(exc), exc, tb) - tb = ''.join(tb) + tb = ''.join(format_exception(type(exc), exc, tb)) self.exc = exc self.tb = '\n"""\n%s"""' % tb def __reduce__(self): @@ -166,7 +165,7 @@ def __init__(self, max_size=0, *, ctx, pending_work_items, shutdown_lock, def _on_queue_feeder_error(self, e, obj): if isinstance(obj, _CallItem): - tb = traceback.format_exception(type(e), e, e.__traceback__) + tb = format_exception(type(e), e, e.__traceback__) e.__cause__ = _RemoteTraceback('\n"""\n{}"""'.format(''.join(tb))) work_item = self.pending_work_items.pop(obj.work_id, None) with self.shutdown_lock: @@ -384,7 +383,7 @@ def wait_result_broken_or_wakeup(self): result_item = result_reader.recv() is_broken = False except BaseException as e: - cause = traceback.format_exception(type(e), e, e.__traceback__) + cause = format_exception(type(e), e, e.__traceback__) elif wakeup_reader in ready: is_broken = False From webhook-mailer at python.org Tue Jun 8 07:24:58 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Jun 2021 11:24:58 -0000 Subject: [Python-checkins] bpo-44348: Revert "bpo-39573: Py_TYPE becomes a static inline function (GH-26493)" (GH-26596) Message-ID: https://github.com/python/cpython/commit/6d518bb3a11f9b16098f45b21a13ebe8f537f045 commit: 6d518bb3a11f9b16098f45b21a13ebe8f537f045 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-08T12:24:40+01:00 summary: bpo-44348: Revert "bpo-39573: Py_TYPE becomes a static inline function (GH-26493)" (GH-26596) This reverts commit f3fa63ec75fdbb4a08a10957a5c631bf0c4a5970 as is causing crashes in some Windows tests in the buildbots. files: D Misc/NEWS.d/next/C API/2021-06-03-00-59-48.bpo-39573.-elHTJ.rst M Doc/c-api/structures.rst M Doc/whatsnew/3.11.rst M Include/object.h M Modules/_testcapimodule.c diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst index 1a6e14eae59239..20d5485d5544c2 100644 --- a/Doc/c-api/structures.rst +++ b/Doc/c-api/structures.rst @@ -99,10 +99,7 @@ the definition of all other Python objects. Return a :term:`borrowed reference`. - Use the :c:func:`Py_SET_TYPE` function to set an object type. - - .. versionchanged:: 3.11 - :c:func:`Py_TYPE()` is changed to an inline static function. + The :c:func:`Py_SET_TYPE` function must be used to set an object type. .. c:function:: int Py_IS_TYPE(PyObject *o, PyTypeObject *type) @@ -124,10 +121,9 @@ the definition of all other Python objects. Get the reference count of the Python object *o*. - Use the :c:func:`Py_SET_REFCNT()` function to set an object reference count. - .. versionchanged:: 3.10 :c:func:`Py_REFCNT()` is changed to the inline static function. + Use :c:func:`Py_SET_REFCNT()` to set an object reference count. .. c:function:: void Py_SET_REFCNT(PyObject *o, Py_ssize_t refcnt) @@ -141,10 +137,7 @@ the definition of all other Python objects. Get the size of the Python object *o*. - Use the :c:func:`Py_SET_SIZE` function to set an object size. - - .. versionchanged:: 3.11 - :c:func:`Py_SIZE()` is changed to an inline static function. + The :c:func:`Py_SET_SIZE` function must be used to set an object size. .. c:function:: void Py_SET_SIZE(PyVarObject *o, Py_ssize_t size) diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 8c81b08de2cfba..00011278a51c4c 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -154,34 +154,6 @@ Porting to Python 3.11 (:c:member:`PyTypeObject.tp_traverse`). (Contributed by Victor Stinner in :issue:`44263`.) -* Since :c:func:`Py_TYPE()` is changed to a inline static function, - ``Py_TYPE(obj) = new_type`` must be replaced with - ``Py_SET_TYPE(obj, new_type)``: see the :c:func:`Py_SET_TYPE()` function - (available since Python 3.9). For backward compatibility, this macro can be - used:: - - #if PY_VERSION_HEX < 0x030900A4 && !defined(Py_SET_TYPE) - static inline void _Py_SET_TYPE(PyObject *ob, PyTypeObject *type) - { ob->ob_type = type; } - #define Py_SET_TYPE(ob, type) _Py_SET_TYPE(_PyObject_CAST(ob), type) - #endif - - (Contributed by Victor Stinner in :issue:`39573`.) - -* Since :c:func:`Py_SIZE()` is changed to a inline static function, - ``Py_SIZE(obj) = new_size`` must be replaced with - ``Py_SET_SIZE(obj, new_size)``: see the :c:func:`Py_SET_SIZE()` function - (available since Python 3.9). For backward compatibility, this macro can be - used:: - - #if PY_VERSION_HEX < 0x030900A4 && !defined(Py_SET_SIZE) - static inline void _Py_SET_SIZE(PyVarObject *ob, Py_ssize_t size) - { ob->ob_size = size; } - #define Py_SET_SIZE(ob, size) _Py_SET_SIZE((PyVarObject*)(ob), size) - #endif - - (Contributed by Victor Stinner in :issue:`39573`.) - Deprecated ---------- diff --git a/Include/object.h b/Include/object.h index a3b5d0d29d3e7b..4c069998574b4a 100644 --- a/Include/object.h +++ b/Include/object.h @@ -134,16 +134,10 @@ static inline Py_ssize_t _Py_REFCNT(const PyObject *ob) { // bpo-39573: The Py_SET_TYPE() function must be used to set an object type. -static inline PyTypeObject* _Py_TYPE(const PyObject *ob) { - return ob->ob_type; -} -#define Py_TYPE(ob) _Py_TYPE(_PyObject_CAST_CONST(ob)) +#define Py_TYPE(ob) (_PyObject_CAST(ob)->ob_type) // bpo-39573: The Py_SET_SIZE() function must be used to set an object size. -static inline Py_ssize_t _Py_SIZE(const PyVarObject *ob) { - return ob->ob_size; -} -#define Py_SIZE(ob) _Py_SIZE(_PyVarObject_CAST_CONST(ob)) +#define Py_SIZE(ob) (_PyVarObject_CAST(ob)->ob_size) static inline int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { diff --git a/Misc/NEWS.d/next/C API/2021-06-03-00-59-48.bpo-39573.-elHTJ.rst b/Misc/NEWS.d/next/C API/2021-06-03-00-59-48.bpo-39573.-elHTJ.rst deleted file mode 100644 index d9641ed97e170d..00000000000000 --- a/Misc/NEWS.d/next/C API/2021-06-03-00-59-48.bpo-39573.-elHTJ.rst +++ /dev/null @@ -1,3 +0,0 @@ -Convert the :c:func:`Py_TYPE` and :c:func:`Py_SIZE` macros to static inline -functions. The :c:func:`Py_SET_TYPE` and :c:func:`Py_SET_SIZE` functions -must now be used to set an object type and size. Patch by Victor Stinner. diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 9b106a56637372..ab47949d89e635 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -5423,9 +5423,10 @@ test_set_type_size(PyObject *self, PyObject *Py_UNUSED(ignored)) assert(Py_TYPE(obj) == &PyList_Type); assert(Py_SIZE(obj) == 0); - // bpo-39573: Test Py_SET_TYPE() and Py_SET_SIZE() functions. - Py_SET_TYPE(obj, &PyList_Type); - Py_SET_SIZE(obj, 0); + // bpo-39573: Check that Py_TYPE() and Py_SIZE() can be used + // as l-values to set an object type and size. + Py_TYPE(obj) = &PyList_Type; + Py_SIZE(obj) = 0; Py_DECREF(obj); Py_RETURN_NONE; From webhook-mailer at python.org Tue Jun 8 07:25:26 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Jun 2021 11:25:26 -0000 Subject: [Python-checkins] bpo-44335: Fix a regression when identifying invalid characters in syntax errors (GH-26589) Message-ID: https://github.com/python/cpython/commit/d334c73b56756e90c33ce06e3a6ec23271aa099d commit: d334c73b56756e90c33ce06e3a6ec23271aa099d branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-08T12:25:22+01:00 summary: bpo-44335: Fix a regression when identifying invalid characters in syntax errors (GH-26589) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst M Lib/test/test_exceptions.py M Parser/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 5fb651f4c22e5..df5778d7e5f6a 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -211,6 +211,7 @@ def testSyntaxErrorOffset(self): check('lambda x: x = 2', 1, 1) check('f{a + b + c}', 1, 2) check('[file for str(file) in []\n])', 2, 2) + check('a = ? hello ? ? world ?', 1, 5) check('[\nfile\nfor str(file)\nin\n[]\n]', 3, 5) check('[file for\n str(file) in []]', 2, 2) check("ages = {'Alice'=22, 'Bob'=23}", 1, 16) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst new file mode 100644 index 0000000000000..b57904e5da607 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst @@ -0,0 +1,2 @@ +Fix a regression when identifying incorrect characters in syntax errors. +Patch by Pablo Galindo diff --git a/Parser/pegen.c b/Parser/pegen.c index aac7e368a799f..c69a042f8de12 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -1288,7 +1288,9 @@ _PyPegen_run_parser(Parser *p) reset_parser_state(p); _PyPegen_parse(p); if (PyErr_Occurred()) { - if (PyErr_ExceptionMatches(PyExc_SyntaxError)) { + // Prioritize tokenizer errors to custom syntax errors raised + // on the second phase only if the errors come from the parser. + if (p->tok->done != E_ERROR && PyErr_ExceptionMatches(PyExc_SyntaxError)) { _PyPegen_check_tokenizer_errors(p); } return NULL; From webhook-mailer at python.org Tue Jun 8 07:47:05 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 08 Jun 2021 11:47:05 -0000 Subject: [Python-checkins] bpo-44335: Fix a regression when identifying invalid characters in syntax errors (GH-26589) Message-ID: https://github.com/python/cpython/commit/933b5b63598968c1ab4976f92570696a33c72cc4 commit: 933b5b63598968c1ab4976f92570696a33c72cc4 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-08T04:46:56-07:00 summary: bpo-44335: Fix a regression when identifying invalid characters in syntax errors (GH-26589) (cherry picked from commit d334c73b56756e90c33ce06e3a6ec23271aa099d) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst M Lib/test/test_exceptions.py M Parser/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 5fb651f4c22e5..df5778d7e5f6a 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -211,6 +211,7 @@ def testSyntaxErrorOffset(self): check('lambda x: x = 2', 1, 1) check('f{a + b + c}', 1, 2) check('[file for str(file) in []\n])', 2, 2) + check('a = ? hello ? ? world ?', 1, 5) check('[\nfile\nfor str(file)\nin\n[]\n]', 3, 5) check('[file for\n str(file) in []]', 2, 2) check("ages = {'Alice'=22, 'Bob'=23}", 1, 16) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst new file mode 100644 index 0000000000000..b57904e5da607 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst @@ -0,0 +1,2 @@ +Fix a regression when identifying incorrect characters in syntax errors. +Patch by Pablo Galindo diff --git a/Parser/pegen.c b/Parser/pegen.c index aac7e368a799f..c69a042f8de12 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -1288,7 +1288,9 @@ _PyPegen_run_parser(Parser *p) reset_parser_state(p); _PyPegen_parse(p); if (PyErr_Occurred()) { - if (PyErr_ExceptionMatches(PyExc_SyntaxError)) { + // Prioritize tokenizer errors to custom syntax errors raised + // on the second phase only if the errors come from the parser. + if (p->tok->done != E_ERROR && PyErr_ExceptionMatches(PyExc_SyntaxError)) { _PyPegen_check_tokenizer_errors(p); } return NULL; From webhook-mailer at python.org Tue Jun 8 08:16:33 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Jun 2021 12:16:33 -0000 Subject: [Python-checkins] Fix compiler errors for unused variables (GH-26601) Message-ID: https://github.com/python/cpython/commit/781dc76577b1810666f4ce04d8fc20d8b43fb374 commit: 781dc76577b1810666f4ce04d8fc20d8b43fb374 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-08T13:16:24+01:00 summary: Fix compiler errors for unused variables (GH-26601) files: M Modules/_sqlite/connection.c M Python/compile.c diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 4ec74dd26fab6..9199c347caab0 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -276,7 +276,7 @@ connection_close(pysqlite_Connection *self) { if (self->db) { int rc = sqlite3_close_v2(self->db); - assert(rc == SQLITE_OK); + assert(rc == SQLITE_OK), (void)rc; self->db = NULL; } } diff --git a/Python/compile.c b/Python/compile.c index 056dacf9b6c5d..c97938adaafcf 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -7192,6 +7192,7 @@ compute_localsplus_info(struct compiler *c, PyObject *names, _PyLocalsPlusKinds kinds) { int nlocalsplus = (int)PyTuple_GET_SIZE(names); + (void)nlocalsplus; // Avoid compiler errors for unused variable PyObject *k, *v; Py_ssize_t pos = 0; From webhook-mailer at python.org Tue Jun 8 08:18:03 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Jun 2021 12:18:03 -0000 Subject: [Python-checkins] Revert "bpo-43693: Add the MAKE_CELL opcode and interleave fast locals offsets. (gh-26396)" (GH-26597) Message-ID: https://github.com/python/cpython/commit/3fe921cd49959181163671364c8b84faa88f7895 commit: 3fe921cd49959181163671364c8b84faa88f7895 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-08T13:17:55+01:00 summary: Revert "bpo-43693: Add the MAKE_CELL opcode and interleave fast locals offsets. (gh-26396)" (GH-26597) This reverts commit 631f9938b1604d4f893417ec339b9e0fa9196fb1. files: D Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst M Doc/library/dis.rst M Include/cpython/code.h M Include/internal/pycore_frame.h M Include/opcode.h M Lib/importlib/_bootstrap_external.py M Lib/opcode.py M Lib/test/test_dis.py M Lib/test/test_scope.py M Objects/frameobject.c M Objects/typeobject.c M Python/ceval.c M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/opcode_targets.h diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index 65fbb00bd6597b..bc206f7d2e96af 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1056,14 +1056,6 @@ All of the following opcodes use their arguments. Deletes local ``co_varnames[var_num]``. -.. opcode:: MAKE_CELL (i) - - Creates a new cell in slot ``i``. If that slot is empty then - that value is stored into the new cell. - - .. versionadded:: 3.11 - - .. opcode:: LOAD_CLOSURE (i) Pushes a reference to the cell contained in slot ``i`` of the "fast locals" diff --git a/Include/cpython/code.h b/Include/cpython/code.h index a3db7d9d5eff7a..773df7cb9a600e 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -2,16 +2,9 @@ # error "this header file must not be included directly" #endif -/* Each instruction in a code object is a fixed-width value, - * currently 2 bytes: 1-byte opcode + 1-byte oparg. The EXTENDED_ARG - * opcode allows for larger values but the current limit is 3 uses - * of EXTENDED_ARG (see Python/wordcode_helpers.h), for a maximum - * 32-bit value. This aligns with the note in Python/compile.c - * (compiler_addop_i_line) indicating that the max oparg value is - * 2**32 - 1, rather than INT_MAX. - */ - typedef uint16_t _Py_CODEUNIT; +// Each oparg must fit in the second half of _Py_CODEUNIT, hence 8 bits. +#define _Py_MAX_OPARG 255 #ifdef WORDS_BIGENDIAN # define _Py_OPCODE(word) ((word) >> 8) diff --git a/Include/internal/pycore_frame.h b/Include/internal/pycore_frame.h index 11c3a2c01e7e2f..44f58fb6948712 100644 --- a/Include/internal/pycore_frame.h +++ b/Include/internal/pycore_frame.h @@ -32,8 +32,6 @@ _PyFrame_GetBuiltins(PyFrameObject *f) int _PyFrame_TakeLocals(PyFrameObject *f); -PyAPI_FUNC(int) _PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg); - #ifdef __cplusplus } #endif diff --git a/Include/opcode.h b/Include/opcode.h index c65e2f41133fc6..a3a8b2a15613e6 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -113,11 +113,10 @@ extern "C" { #define CALL_FUNCTION 131 #define MAKE_FUNCTION 132 #define BUILD_SLICE 133 -#define MAKE_CELL 135 -#define LOAD_CLOSURE 136 -#define LOAD_DEREF 137 -#define STORE_DEREF 138 -#define DELETE_DEREF 139 +#define LOAD_CLOSURE 135 +#define LOAD_DEREF 136 +#define STORE_DEREF 137 +#define DELETE_DEREF 138 #define CALL_FUNCTION_KW 141 #define CALL_FUNCTION_EX 142 #define EXTENDED_ARG 144 diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 009b45f00d8cf6..39552186c8735d 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -357,7 +357,6 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3452 (drop nlocals from marshaled code objects) # Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds) # Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693) -# Python 3.11a1 3455 (add MAKE_CELL bpo-43693) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -367,7 +366,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3455).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3454).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/opcode.py b/Lib/opcode.py index 4d5343179e5932..da143fe01f512c 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -181,16 +181,14 @@ def jabs_op(name, op): def_op('MAKE_FUNCTION', 132) # Flags def_op('BUILD_SLICE', 133) # Number of items -def_op('MAKE_CELL', 135) +def_op('LOAD_CLOSURE', 135) hasfree.append(135) -def_op('LOAD_CLOSURE', 136) +def_op('LOAD_DEREF', 136) hasfree.append(136) -def_op('LOAD_DEREF', 137) +def_op('STORE_DEREF', 137) hasfree.append(137) -def_op('STORE_DEREF', 138) +def_op('DELETE_DEREF', 138) hasfree.append(138) -def_op('DELETE_DEREF', 139) -hasfree.append(139) def_op('CALL_FUNCTION_KW', 141) # #args + #kwargs def_op('CALL_FUNCTION_EX', 142) # Flags diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index b81fcb551427a2..b119d183d66c10 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -427,17 +427,15 @@ def foo(x): return foo dis_nested_0 = """\ - 0 MAKE_CELL 2 (y) - -%3d 2 LOAD_CLOSURE 2 (y) - 4 BUILD_TUPLE 1 - 6 LOAD_CONST 1 () - 8 LOAD_CONST 2 ('_h..foo') - 10 MAKE_FUNCTION 8 (closure) - 12 STORE_FAST 1 (foo) - -%3d 14 LOAD_FAST 1 (foo) - 16 RETURN_VALUE +%3d 0 LOAD_CLOSURE 2 (y) + 2 BUILD_TUPLE 1 + 4 LOAD_CONST 1 () + 6 LOAD_CONST 2 ('_h..foo') + 8 MAKE_FUNCTION 8 (closure) + 10 STORE_FAST 1 (foo) + +%3d 12 LOAD_FAST 1 (foo) + 14 RETURN_VALUE """ % (_h.__code__.co_firstlineno + 1, __file__, _h.__code__.co_firstlineno + 1, @@ -446,17 +444,15 @@ def foo(x): dis_nested_1 = """%s Disassembly of : - 0 MAKE_CELL 1 (x) - -%3d 2 LOAD_CLOSURE 1 (x) - 4 BUILD_TUPLE 1 - 6 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) - 8 LOAD_CONST 2 ('_h..foo..') - 10 MAKE_FUNCTION 8 (closure) - 12 LOAD_DEREF 2 (y) - 14 GET_ITER - 16 CALL_FUNCTION 1 - 18 RETURN_VALUE +%3d 0 LOAD_CLOSURE 1 (x) + 2 BUILD_TUPLE 1 + 4 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) + 6 LOAD_CONST 2 ('_h..foo..') + 8 MAKE_FUNCTION 8 (closure) + 10 LOAD_DEREF 2 (y) + 12 GET_ITER + 14 CALL_FUNCTION 1 + 16 RETURN_VALUE """ % (dis_nested_0, __file__, _h.__code__.co_firstlineno + 1, @@ -962,64 +958,59 @@ def jumpy(): #print('expected_opinfo_jumpy = [\n ', #',\n '.join(map(str, _instructions)), ',\n]', sep='') -#dis.dis(outer) Instruction = dis.Instruction expected_opinfo_outer = [ - Instruction(opname='MAKE_CELL', opcode=135, arg=3, argval='a', argrepr='a', offset=0, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_CELL', opcode=135, arg=4, argval='b', argrepr='b', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=4, starts_line=2, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=7, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello world!', argrepr="'Hello world!'", offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7, argrepr='', offset=36, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=40, starts_line=8, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=42, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=0, starts_line=2, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=10, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=12, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=14, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=16, starts_line=7, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=24, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello world!', argrepr="'Hello world!'", offset=30, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7, argrepr='', offset=32, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=34, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=36, starts_line=8, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=38, starts_line=None, is_jump_target=False), ] expected_opinfo_f = [ - Instruction(opname='MAKE_CELL', opcode=135, arg=3, argval='c', argrepr='c', offset=0, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_CELL', opcode=135, arg=4, argval='d', argrepr='d', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=4, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=5, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=6, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='c', argrepr='c', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='d', argrepr='d', offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=16, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=20, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=24, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='a', argrepr='a', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=6, argval='b', argrepr='b', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='c', argrepr='c', offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='d', argrepr='d', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=38, starts_line=6, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=40, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=0, starts_line=3, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=5, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=6, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=10, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=12, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=14, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=5, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=6, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=30, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=32, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=34, starts_line=6, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False), ] expected_opinfo_inner = [ Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=0, starts_line=4, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6, argrepr='', offset=14, starts_line=None, is_jump_target=False), diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py index 29d60ffe53f036..4239b26408ecdf 100644 --- a/Lib/test/test_scope.py +++ b/Lib/test/test_scope.py @@ -176,57 +176,6 @@ def bar(): self.assertEqual(foo(a=42), 50) self.assertEqual(foo(), 25) - def testCellIsArgAndEscapes(self): - # We need to be sure that a cell passed in as an arg still - # gets wrapped in a new cell if the arg escapes into an - # inner function (closure). - - def external(): - value = 42 - def inner(): - return value - cell, = inner.__closure__ - return cell - cell_ext = external() - - def spam(arg): - def eggs(): - return arg - return eggs - - eggs = spam(cell_ext) - cell_closure, = eggs.__closure__ - cell_eggs = eggs() - - self.assertIs(cell_eggs, cell_ext) - self.assertIsNot(cell_eggs, cell_closure) - - def testCellIsLocalAndEscapes(self): - # We need to be sure that a cell bound to a local still - # gets wrapped in a new cell if the local escapes into an - # inner function (closure). - - def external(): - value = 42 - def inner(): - return value - cell, = inner.__closure__ - return cell - cell_ext = external() - - def spam(arg): - cell = arg - def eggs(): - return cell - return eggs - - eggs = spam(cell_ext) - cell_closure, = eggs.__closure__ - cell_eggs = eggs() - - self.assertIs(cell_eggs, cell_ext) - self.assertIsNot(cell_eggs, cell_closure) - def testRecursion(self): def f(x): diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst deleted file mode 100644 index c5fb29ba462e7d..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst +++ /dev/null @@ -1,5 +0,0 @@ -A new opcode MAKE_CELL has been added that effectively moves some of -the work done on function entry into the compiler and into the eval -loop. In addition to creating the required cell objects, the new -opcode converts relevant arguments (and other locals) to cell -variables on function entry. diff --git a/Objects/frameobject.c b/Objects/frameobject.c index b29cd53bcccd31..ef5ff4e6983546 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -918,19 +918,6 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, return f; } -int -_PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg) -{ - const _Py_CODEUNIT *code = - (const _Py_CODEUNIT *)PyBytes_AS_STRING(f->f_code->co_code); - for (int i = 0; i < f->f_lasti; i++) { - if (_Py_OPCODE(code[i]) == opcode && _Py_OPARG(code[i]) == oparg) { - return 1; - } - } - return 0; -} - int PyFrame_FastToLocalsWithError(PyFrameObject *f) { @@ -974,52 +961,15 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) former here and will later use the cell for the variable. */ if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { + assert(fast[i] == NULL); continue; } PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); PyObject *value = fast[i]; - if (f->f_state != FRAME_CLEARED) { - int cellargoffset = CO_CELL_NOT_AN_ARG; - if (co->co_cell2arg != NULL) { - cellargoffset = co->co_cell2arg[i - co->co_nlocals]; - } - if (kind & CO_FAST_FREE) { - // The cell was set by _PyEval_MakeFrameVector() from - // the function's closure. - assert(value != NULL && PyCell_Check(value)); - value = PyCell_GET(value); - } - else if (kind & CO_FAST_CELL) { - // Note that no *_DEREF ops can happen before MAKE_CELL - // executes. So there's no need to duplicate the work - // that MAKE_CELL would otherwise do later, if it hasn't - // run yet. - if (value != NULL) { - if (PyCell_Check(value) && - _PyFrame_OpAlreadyRan(f, MAKE_CELL, i)) { - // (likely) MAKE_CELL must have executed already. - value = PyCell_GET(value); - } - // (unlikely) Otherwise it must be an initial value set - // by an earlier call to PyFrame_FastToLocals(). - } - else { - // (unlikely) MAKE_CELL hasn't executed yet. - if (cellargoffset != CO_CELL_NOT_AN_ARG) { - // It is an arg that escapes into an inner - // function so we use the initial value that - // was already set by _PyEval_MakeFrameVector(). - // Normally the arg value would always be set. - // However, it can be NULL if it was deleted via - // PyFrame_LocalsToFast(). - value = fast[cellargoffset]; - } - } - } - } - else { - assert(value == NULL); + if (kind & (CO_FAST_CELL | CO_FAST_FREE) && value != NULL) { + assert(PyCell_Check(value)); + value = PyCell_GET(value); } if (value == NULL) { if (PyObject_DelItem(locals, name) != 0) { @@ -1060,9 +1010,8 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) PyObject **fast; PyObject *error_type, *error_value, *error_traceback; PyCodeObject *co; - if (f == NULL || f->f_state == FRAME_CLEARED) { + if (f == NULL) return; - } locals = _PyFrame_Specials(f)[FRAME_SPECIALS_LOCALS_OFFSET]; if (locals == NULL) return; @@ -1090,67 +1039,16 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) continue; } } - PyObject *oldvalue = fast[i]; - int cellargoffset = CO_CELL_NOT_AN_ARG; - if (co->co_cell2arg != NULL) { - cellargoffset = co->co_cell2arg[i - co->co_nlocals]; - } - PyObject *cell = NULL; - if (kind == CO_FAST_FREE) { - // The cell was cell by _PyEval_MakeFrameVector() from - // the function's closure. - assert(oldvalue != NULL && PyCell_Check(oldvalue)); - cell = oldvalue; - } - else if (kind & CO_FAST_CELL && oldvalue != NULL) { - if (cellargoffset != CO_CELL_NOT_AN_ARG) { - // (likely) MAKE_CELL must have executed already. - // It's the cell for an arg. - assert(PyCell_Check(oldvalue)); - cell = oldvalue; - } - else { - if (PyCell_Check(oldvalue) && - _PyFrame_OpAlreadyRan(f, MAKE_CELL, i)) { - // (likely) MAKE_CELL must have executed already. - cell = oldvalue; - } - // (unlikely) Otherwise, it must have been set to some - // initial value by an earlier call to PyFrame_LocalsToFast(). - } - } - if (cell != NULL) { - oldvalue = PyCell_GET(cell); - if (value != oldvalue) { - Py_XDECREF(oldvalue); - Py_XINCREF(value); - PyCell_SET(cell, value); - } - } - else { - int offset = i; - if (kind & CO_FAST_CELL) { - // (unlikely) MAKE_CELL hasn't executed yet. - // Note that there is no need to create the cell that - // MAKE_CELL would otherwise create later, since no - // *_DEREF ops can happen before MAKE_CELL has run. - if (cellargoffset != CO_CELL_NOT_AN_ARG) { - // It's the cell for an arg. - // Replace the initial value that was set by - // _PyEval_MakeFrameVector(). - // Normally the arg value would always be set. - // However, it can be NULL if it was deleted - // via an earlier PyFrame_LocalsToFast() call. - offset = cellargoffset; - oldvalue = fast[offset]; + if (kind & (CO_FAST_CELL | CO_FAST_FREE)) { + assert(PyCell_Check(fast[i])); + if (PyCell_GET(fast[i]) != value) { + if (PyCell_Set(fast[i], value) < 0) { + PyErr_Clear(); } - // Otherwise set an initial value for MAKE_CELL to use - // when it runs later. - } - if (value != oldvalue) { - Py_XINCREF(value); - Py_XSETREF(fast[offset], value); } + } else if (fast[i] != value) { + Py_XINCREF(value); + Py_XSETREF(fast[i], value); } Py_XDECREF(value); } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 4c7e5d4567f76c..bd2cade3bd68b4 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -11,8 +11,6 @@ #include "pycore_pystate.h" // _PyThreadState_GET() #include "pycore_unionobject.h" // _Py_Union(), _Py_union_type_or #include "frameobject.h" -#include "pycore_frame.h" // _PyFrame_OpAlreadyRan -#include "opcode.h" // MAKE_CELL #include "structmember.h" // PyMemberDef #include @@ -8879,17 +8877,14 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, } PyObject *obj = f->f_localsptr[0]; - int i; + Py_ssize_t i; if (obj == NULL && co->co_cell2arg) { /* The first argument might be a cell. */ for (i = 0; i < co->co_ncellvars; i++) { if (co->co_cell2arg[i] == 0) { - int celloffset = co->co_nlocals + i; - PyObject *cell = f->f_localsptr[celloffset]; - if (PyCell_Check(cell) && - _PyFrame_OpAlreadyRan(f, MAKE_CELL, celloffset)) { - obj = PyCell_GET(cell); - } + PyObject *cell = f->f_localsptr[co->co_nlocals + i]; + assert(PyCell_Check(cell)); + obj = PyCell_GET(cell); break; } } diff --git a/Python/ceval.c b/Python/ceval.c index a8abead23038ce..032bc0cd87129a 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3076,34 +3076,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) goto error; } - case TARGET(MAKE_CELL): { - PyObject *initial = GETLOCAL(oparg); - // Normally initial would be NULL. However, it - // might have been set to an initial value during - // a call to PyFrame_LocalsToFast(). - PyObject *cell = PyCell_New(initial); - if (cell == NULL) { - goto error; - } - /* If it is an arg then copy the arg into the cell. */ - if (initial == NULL && co->co_cell2arg != NULL) { - int argoffset = co->co_cell2arg[oparg - co->co_nlocals]; - if (argoffset != CO_CELL_NOT_AN_ARG) { - PyObject *arg = GETLOCAL(argoffset); - // It will have been set in initialize_locals() but - // may have been deleted PyFrame_LocalsToFast(). - if (arg != NULL) {; - Py_INCREF(arg); - PyCell_SET(cell, arg); - /* Clear the local copy. */ - SETLOCAL(argoffset, NULL); - } - } - } - SETLOCAL(oparg, cell); - DISPATCH(); - } - case TARGET(DELETE_DEREF): { PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); @@ -5095,6 +5067,27 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, } } + + /* Allocate and initialize storage for cell vars, and copy free + vars into frame. */ + for (i = 0; i < co->co_ncellvars; ++i) { + PyObject *c; + Py_ssize_t arg; + /* Possibly account for the cell variable being an argument. */ + if (co->co_cell2arg != NULL && + (arg = co->co_cell2arg[i]) != CO_CELL_NOT_AN_ARG) { + c = PyCell_New(GETLOCAL(arg)); + /* Clear the local copy. */ + SETLOCAL(arg, NULL); + } + else { + c = PyCell_New(NULL); + } + if (c == NULL) + goto fail; + SETLOCAL(co->co_nlocals + i, c); + } + /* Copy closure variables to free variables */ for (i = 0; i < co->co_nfreevars; ++i) { PyObject *o = PyTuple_GET_ITEM(con->fc_closure, i); diff --git a/Python/compile.c b/Python/compile.c index c97938adaafcf4..37d5105a820743 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1185,8 +1185,6 @@ stack_effect(int opcode, int oparg, int jump) return -1; /* Closures */ - case MAKE_CELL: - return 0; case LOAD_CLOSURE: return 1; case LOAD_DEREF: @@ -7376,47 +7374,15 @@ optimize_cfg(struct compiler *c, struct assembler *a, PyObject *consts); static int ensure_exits_have_lineno(struct compiler *c); -static inline int -insert_instruction(basicblock *block, int pos, struct instr *instr) { - if (compiler_next_instr(block) < 0) { - return -1; - } - for (int i = block->b_iused-1; i > pos; i--) { - block->b_instr[i] = block->b_instr[i-1]; - } - block->b_instr[pos] = *instr; - return 0; -} - static int -insert_prefix_instructions(struct compiler *c, basicblock *entryblock) { +insert_generator_prefix(struct compiler *c, basicblock *entryblock) { int flags = compute_code_flags(c); if (flags < 0) { return -1; } - - /* Set up cells for any variable that escapes, to be put in a closure. */ - PyObject *k, *v; - Py_ssize_t pos = 0; - while (PyDict_Next(c->u->u_cellvars, &pos, &k, &v)) { - assert(PyLong_AS_LONG(v) < INT_MAX); - int cellindex = (int)PyLong_AS_LONG(v); - struct instr make_cell = { - .i_opcode = MAKE_CELL, - // This will get fixed in offset_derefs(). - .i_oparg = cellindex, - .i_lineno = -1, - .i_target = NULL, - }; - if (insert_instruction(entryblock, (int)(pos - 1), &make_cell) < 0) { - return -1; - } - } - - /* Add the generator prefix instructions. */ + int kind; if (flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR)) { - int kind; if (flags & CO_COROUTINE) { kind = 1; } @@ -7426,18 +7392,20 @@ insert_prefix_instructions(struct compiler *c, basicblock *entryblock) { else { kind = 0; } - - struct instr gen_start = { - .i_opcode = GEN_START, - .i_oparg = kind, - .i_lineno = -1, - .i_target = NULL, - }; - if (insert_instruction(entryblock, 0, &gen_start) < 0) { - return -1; - } } - + else { + return 0; + } + if (compiler_next_instr(entryblock) < 0) { + return -1; + } + for (int i = entryblock->b_iused-1; i > 0; i--) { + entryblock->b_instr[i] = entryblock->b_instr[i-1]; + } + entryblock->b_instr[0].i_opcode = GEN_START; + entryblock->b_instr[0].i_oparg = kind; + entryblock->b_instr[0].i_lineno = -1; + entryblock->b_instr[0].i_target = NULL; return 0; } @@ -7470,15 +7438,12 @@ guarantee_lineno_for_exits(struct assembler *a, int firstlineno) { } static void -fix_cell_offsets(struct compiler *c, basicblock *entryblock) +offset_derefs(basicblock *entryblock, int nlocals) { - assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); - int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); for (basicblock *b = entryblock; b != NULL; b = b->b_next) { for (int i = 0; i < b->b_iused; i++) { struct instr *inst = &b->b_instr[i]; switch(inst->i_opcode) { - case MAKE_CELL: case LOAD_CLOSURE: case LOAD_DEREF: case STORE_DEREF: @@ -7528,7 +7493,7 @@ assemble(struct compiler *c, int addNone) } assert(entryblock != NULL); - if (insert_prefix_instructions(c, entryblock)) { + if (insert_generator_prefix(c, entryblock)) { goto error; } @@ -7545,7 +7510,8 @@ assemble(struct compiler *c, int addNone) a.a_entry = entryblock; a.a_nblocks = nblocks; - fix_cell_offsets(c, entryblock); + assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); + offset_derefs(entryblock, (int)PyDict_GET_SIZE(c->u->u_varnames)); consts = consts_dict_keys_inorder(c->u->u_consts); if (consts == NULL) { diff --git a/Python/importlib.h b/Python/importlib.h index 16ccf3076f23bb..1c59989743c801 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -430,1480 +430,1480 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,243,28,0,0,0,135,2,136,2,102,1,100, - 1,100,2,132,8,125,1,116,0,124,1,137,2,131,2,1, - 0,124,1,83,0,41,4,122,49,68,101,99,111,114,97,116, - 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, - 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, - 32,98,117,105,108,116,45,105,110,46,99,2,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,19,0,0,0,115, - 38,0,0,0,124,1,116,0,106,1,118,1,114,14,116,2, - 100,1,160,3,124,1,161,1,124,1,100,2,141,2,130,1, - 137,2,124,0,124,1,131,2,83,0,41,3,78,250,29,123, - 33,114,125,32,105,115,32,110,111,116,32,97,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,114,19,0,0, - 0,41,4,114,18,0,0,0,218,20,98,117,105,108,116,105, - 110,95,109,111,100,117,108,101,95,110,97,109,101,115,218,11, - 73,109,112,111,114,116,69,114,114,111,114,114,51,0,0,0, - 169,3,114,34,0,0,0,218,8,102,117,108,108,110,97,109, - 101,218,3,102,120,110,32,32,128,114,5,0,0,0,218,25, - 95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,105, - 110,95,119,114,97,112,112,101,114,254,0,0,0,243,10,0, - 0,0,10,1,10,1,2,1,6,255,10,2,114,17,0,0, - 0,122,52,95,114,101,113,117,105,114,101,115,95,98,117,105, - 108,116,105,110,46,60,108,111,99,97,108,115,62,46,95,114, + 3,0,0,0,243,26,0,0,0,135,2,102,1,100,1,100, + 2,132,8,125,1,116,0,124,1,136,2,131,2,1,0,124, + 1,83,0,41,4,122,49,68,101,99,111,114,97,116,111,114, + 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, + 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, + 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,19,0,0,0,115,38,0, + 0,0,124,1,116,0,106,1,118,1,114,14,116,2,100,1, + 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,2, + 124,0,124,1,131,2,83,0,41,3,78,250,29,123,33,114, + 125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,114,19,0,0,0,41, + 4,114,18,0,0,0,218,20,98,117,105,108,116,105,110,95, + 109,111,100,117,108,101,95,110,97,109,101,115,218,11,73,109, + 112,111,114,116,69,114,114,111,114,114,51,0,0,0,169,3, + 114,34,0,0,0,218,8,102,117,108,108,110,97,109,101,218, + 3,102,120,110,32,32,128,114,5,0,0,0,218,25,95,114, 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,95, - 119,114,97,112,112,101,114,78,169,1,114,16,0,0,0,41, - 3,114,91,0,0,0,114,92,0,0,0,114,91,0,0,0, - 96,32,64,114,5,0,0,0,218,17,95,114,101,113,117,105, - 114,101,115,95,98,117,105,108,116,105,110,252,0,0,0,243, - 8,0,0,0,2,128,12,2,10,5,4,1,114,17,0,0, - 0,114,95,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,114,85,0,0,0, - 41,4,122,47,68,101,99,111,114,97,116,111,114,32,116,111, - 32,118,101,114,105,102,121,32,116,104,101,32,110,97,109,101, - 100,32,109,111,100,117,108,101,32,105,115,32,102,114,111,122, - 101,110,46,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,19,0,0,0,115,38,0,0,0,116,0,160, - 1,124,1,161,1,115,14,116,2,100,1,160,3,124,1,161, - 1,124,1,100,2,141,2,130,1,137,2,124,0,124,1,131, - 2,83,0,169,3,78,122,27,123,33,114,125,32,105,115,32, - 110,111,116,32,97,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,114,19,0,0,0,41,4,114,65,0,0,0,218, - 9,105,115,95,102,114,111,122,101,110,114,88,0,0,0,114, - 51,0,0,0,114,89,0,0,0,32,32,128,114,5,0,0, - 0,218,24,95,114,101,113,117,105,114,101,115,95,102,114,111, - 122,101,110,95,119,114,97,112,112,101,114,9,1,0,0,114, - 93,0,0,0,114,17,0,0,0,122,50,95,114,101,113,117, - 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, - 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, - 114,111,122,101,110,95,119,114,97,112,112,101,114,78,114,94, - 0,0,0,41,3,114,91,0,0,0,114,99,0,0,0,114, - 91,0,0,0,96,32,64,114,5,0,0,0,218,16,95,114, - 101,113,117,105,114,101,115,95,102,114,111,122,101,110,7,1, - 0,0,114,96,0,0,0,114,17,0,0,0,114,100,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,67,0,0,0,115,74,0,0,0,100,1,125,2,116, - 0,160,1,124,2,116,2,161,2,1,0,116,3,124,1,124, - 0,131,2,125,3,124,1,116,4,106,5,118,0,114,33,116, - 4,106,5,124,1,25,0,125,4,116,6,124,3,124,4,131, - 2,1,0,116,4,106,5,124,1,25,0,83,0,116,7,124, - 3,131,1,83,0,41,3,122,130,76,111,97,100,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,117, - 108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,105, - 116,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,46,32,32,85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101, - 32,108,111,97,100,95,109,111,100,117,108,101,40,41,32,109, - 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,101, - 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, - 116,101,97,100,78,41,8,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,16,115,112, - 101,99,95,102,114,111,109,95,108,111,97,100,101,114,114,18, - 0,0,0,218,7,109,111,100,117,108,101,115,218,5,95,101, - 120,101,99,218,5,95,108,111,97,100,41,5,114,34,0,0, - 0,114,90,0,0,0,218,3,109,115,103,218,4,115,112,101, - 99,218,6,109,111,100,117,108,101,32,32,32,32,32,114,5, - 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, - 101,95,115,104,105,109,19,1,0,0,115,16,0,0,0,4, - 6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,114, - 17,0,0,0,114,111,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,194, - 0,0,0,116,0,124,0,100,1,100,2,131,3,125,1,116, - 0,124,0,100,3,100,2,131,3,4,0,125,2,114,18,116, - 1,124,2,131,1,83,0,116,2,124,1,100,4,131,2,114, - 39,9,0,124,1,160,3,124,0,161,1,83,0,35,0,4, - 0,116,4,121,96,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,106,5,125,3,110,12,35,0,4,0,116, - 6,121,95,1,0,1,0,1,0,100,5,125,3,89,0,110, - 1,37,0,9,0,124,0,106,7,125,4,110,27,35,0,4, - 0,116,6,121,94,1,0,1,0,1,0,124,1,100,2,117, - 0,114,79,100,6,160,8,124,3,161,1,6,0,89,0,83, - 0,100,7,160,8,124,3,124,1,161,2,6,0,89,0,83, - 0,37,0,100,8,160,8,124,3,124,4,161,2,83,0,119, - 0,119,0,119,0,41,9,122,44,84,104,101,32,105,109,112, - 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,77, - 111,100,117,108,101,84,121,112,101,46,95,95,114,101,112,114, - 95,95,40,41,46,218,10,95,95,108,111,97,100,101,114,95, - 95,78,218,8,95,95,115,112,101,99,95,95,218,11,109,111, - 100,117,108,101,95,114,101,112,114,250,1,63,250,13,60,109, - 111,100,117,108,101,32,123,33,114,125,62,250,20,60,109,111, - 100,117,108,101,32,123,33,114,125,32,40,123,33,114,125,41, - 62,250,23,60,109,111,100,117,108,101,32,123,33,114,125,32, - 102,114,111,109,32,123,33,114,125,62,41,9,114,12,0,0, - 0,218,22,95,109,111,100,117,108,101,95,114,101,112,114,95, - 102,114,111,109,95,115,112,101,99,114,10,0,0,0,114,114, - 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,8, - 0,0,0,114,2,0,0,0,218,8,95,95,102,105,108,101, - 95,95,114,51,0,0,0,41,5,114,110,0,0,0,218,6, - 108,111,97,100,101,114,114,109,0,0,0,114,20,0,0,0, - 218,8,102,105,108,101,110,97,109,101,32,32,32,32,32,114, - 5,0,0,0,218,12,95,109,111,100,117,108,101,95,114,101, - 112,114,38,1,0,0,115,56,0,0,0,12,2,16,1,8, - 1,10,1,2,1,10,1,2,128,12,1,4,1,2,128,2, - 2,8,1,2,128,12,1,8,1,2,128,2,1,8,1,2, - 128,12,1,8,1,14,1,16,2,2,128,12,2,2,250,2, - 252,2,251,115,47,0,0,0,152,4,29,0,157,7,38,7, - 168,3,44,0,172,9,55,7,185,3,61,0,189,16,65,23, - 7,193,15,6,65,23,7,193,30,1,65,23,7,193,31,1, - 55,7,193,32,1,38,7,114,124,0,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,114,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,100,2,100,2,100,3,156,3,100,4,100,5, - 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, - 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, - 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, - 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, - 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, - 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, - 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, - 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, - 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, - 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, - 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, - 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, - 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, - 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, - 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, - 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, - 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, - 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, - 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, - 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, - 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, - 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, - 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, - 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, - 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, - 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, - 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, - 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, - 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, - 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, - 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, - 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, - 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, - 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, - 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, - 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, - 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, - 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, - 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, - 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, - 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, - 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, - 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, - 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, - 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, - 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, - 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, - 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, - 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, - 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, - 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, - 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, - 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, - 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, - 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, - 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, - 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, - 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, - 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, - 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, - 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, - 32,32,32,32,96,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,96, - 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, - 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, - 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, - 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, - 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, - 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, - 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, - 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, - 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, - 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, - 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, - 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, - 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, - 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, - 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, - 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, - 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, - 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, - 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, - 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, - 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, - 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, - 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, - 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, - 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, - 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, - 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, - 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, - 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, - 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, - 99,3,0,0,0,0,0,0,0,3,0,0,0,2,0,0, - 0,67,0,0,0,115,54,0,0,0,124,1,124,0,95,0, - 124,2,124,0,95,1,124,3,124,0,95,2,124,4,124,0, - 95,3,124,5,114,16,103,0,110,1,100,0,124,0,95,4, - 100,1,124,0,95,5,100,0,124,0,95,6,100,0,83,0, - 41,2,78,70,41,7,114,20,0,0,0,114,122,0,0,0, - 114,126,0,0,0,114,127,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,218,13,95,115,101,116,95,102,105,108, - 101,97,116,116,114,218,7,95,99,97,99,104,101,100,41,6, - 114,34,0,0,0,114,20,0,0,0,114,122,0,0,0,114, - 126,0,0,0,114,127,0,0,0,114,128,0,0,0,32,32, - 32,32,32,32,114,5,0,0,0,114,35,0,0,0,101,1, - 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, - 1,6,3,10,1,114,17,0,0,0,122,19,77,111,100,117, - 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, - 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, - 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, - 1,124,0,106,3,100,0,117,1,114,26,124,1,160,4,100, - 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, - 5,100,0,117,1,114,40,124,1,160,4,100,4,160,0,124, - 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, - 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, - 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, - 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, - 105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2, - 44,32,41,9,114,51,0,0,0,114,20,0,0,0,114,122, - 0,0,0,114,126,0,0,0,218,6,97,112,112,101,110,100, - 114,129,0,0,0,218,9,95,95,99,108,97,115,115,95,95, - 114,8,0,0,0,218,4,106,111,105,110,41,2,114,34,0, - 0,0,114,63,0,0,0,32,32,114,5,0,0,0,114,54, - 0,0,0,113,1,0,0,115,20,0,0,0,10,1,10,1, - 4,255,10,2,18,1,10,1,6,1,8,1,4,255,22,2, - 114,17,0,0,0,122,19,77,111,100,117,108,101,83,112,101, - 99,46,95,95,114,101,112,114,95,95,99,2,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, - 104,0,0,0,124,0,106,0,125,2,9,0,124,0,106,1, - 124,1,106,1,107,2,111,38,124,0,106,2,124,1,106,2, - 107,2,111,38,124,0,106,3,124,1,106,3,107,2,111,38, - 124,2,124,1,106,0,107,2,111,38,124,0,106,4,124,1, - 106,4,107,2,111,38,124,0,106,5,124,1,106,5,107,2, - 83,0,35,0,4,0,116,6,121,51,1,0,1,0,1,0, - 116,7,6,0,89,0,83,0,37,0,119,0,114,0,0,0, - 0,41,8,114,129,0,0,0,114,20,0,0,0,114,122,0, - 0,0,114,126,0,0,0,218,6,99,97,99,104,101,100,218, - 12,104,97,115,95,108,111,99,97,116,105,111,110,114,2,0, - 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,41,3,114,34,0,0,0,90,5,111,116,104,101,114, - 90,4,115,109,115,108,32,32,32,114,5,0,0,0,218,6, - 95,95,101,113,95,95,123,1,0,0,115,36,0,0,0,6, - 1,2,1,12,1,10,1,2,255,10,2,2,254,8,3,2, - 253,10,4,2,252,10,5,2,251,2,128,12,6,8,1,2, - 128,2,255,115,12,0,0,0,132,34,39,0,167,9,50,7, - 179,1,50,7,122,17,77,111,100,117,108,101,83,112,101,99, - 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,67,0,0,0,115,58,0,0, - 0,124,0,106,0,100,0,117,0,114,26,124,0,106,1,100, - 0,117,1,114,26,124,0,106,2,114,26,116,3,100,0,117, - 0,114,19,116,4,130,1,116,3,160,5,124,0,106,1,161, - 1,124,0,95,0,124,0,106,0,83,0,114,0,0,0,0, - 41,6,114,131,0,0,0,114,126,0,0,0,114,130,0,0, - 0,218,19,95,98,111,111,116,115,116,114,97,112,95,101,120, - 116,101,114,110,97,108,218,19,78,111,116,73,109,112,108,101, - 109,101,110,116,101,100,69,114,114,111,114,90,11,95,103,101, - 116,95,99,97,99,104,101,100,114,53,0,0,0,32,114,5, - 0,0,0,114,135,0,0,0,135,1,0,0,115,12,0,0, - 0,10,2,16,1,8,1,4,1,14,1,6,1,114,17,0, - 0,0,122,17,77,111,100,117,108,101,83,112,101,99,46,99, - 97,99,104,101,100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1, - 114,131,0,0,0,41,2,114,34,0,0,0,114,135,0,0, - 0,32,32,114,5,0,0,0,114,135,0,0,0,144,1,0, - 0,115,2,0,0,0,10,2,114,17,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,115,32,0,0,0,124,0,106,0,100,1,117,0,114, - 13,124,0,106,1,160,2,100,2,161,1,100,3,25,0,83, - 0,124,0,106,1,83,0,41,4,122,32,84,104,101,32,110, - 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, - 101,39,115,32,112,97,114,101,110,116,46,78,218,1,46,114, - 26,0,0,0,41,3,114,129,0,0,0,114,20,0,0,0, - 218,10,114,112,97,114,116,105,116,105,111,110,114,53,0,0, - 0,32,114,5,0,0,0,218,6,112,97,114,101,110,116,148, - 1,0,0,115,6,0,0,0,10,3,16,1,6,2,114,17, - 0,0,0,122,17,77,111,100,117,108,101,83,112,101,99,46, - 112,97,114,101,110,116,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,67,0,0,0,115,6,0,0,0, - 124,0,106,0,83,0,114,0,0,0,0,41,1,114,130,0, - 0,0,114,53,0,0,0,32,114,5,0,0,0,114,136,0, - 0,0,156,1,0,0,115,2,0,0,0,6,2,114,17,0, - 0,0,122,23,77,111,100,117,108,101,83,112,101,99,46,104, - 97,115,95,108,111,99,97,116,105,111,110,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,67,0,0,0, - 115,14,0,0,0,116,0,124,1,131,1,124,0,95,1,100, - 0,83,0,114,0,0,0,0,41,2,218,4,98,111,111,108, - 114,130,0,0,0,41,2,114,34,0,0,0,218,5,118,97, - 108,117,101,32,32,114,5,0,0,0,114,136,0,0,0,160, - 1,0,0,115,2,0,0,0,14,2,114,17,0,0,0,41, - 12,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, - 114,9,0,0,0,114,35,0,0,0,114,54,0,0,0,114, - 138,0,0,0,218,8,112,114,111,112,101,114,116,121,114,135, - 0,0,0,218,6,115,101,116,116,101,114,114,143,0,0,0, - 114,136,0,0,0,114,23,0,0,0,114,5,0,0,0,114, - 125,0,0,0,64,1,0,0,115,34,0,0,0,8,0,4, - 1,4,36,2,1,12,255,8,12,8,10,2,12,10,1,4, - 8,10,1,2,3,10,1,2,7,10,1,4,3,14,1,114, - 17,0,0,0,114,125,0,0,0,169,2,114,126,0,0,0, - 114,128,0,0,0,99,2,0,0,0,0,0,0,0,2,0, - 0,0,8,0,0,0,67,0,0,0,115,152,0,0,0,116, - 0,124,1,100,1,131,2,114,37,116,1,100,2,117,0,114, - 11,116,2,130,1,116,1,106,3,125,4,124,3,100,2,117, - 0,114,24,124,4,124,0,124,1,100,3,141,2,83,0,124, - 3,114,28,103,0,110,1,100,2,125,5,124,4,124,0,124, - 1,124,5,100,4,141,3,83,0,124,3,100,2,117,0,114, - 67,116,0,124,1,100,5,131,2,114,65,9,0,124,1,160, - 4,124,0,161,1,125,3,110,14,35,0,4,0,116,5,121, - 75,1,0,1,0,1,0,100,2,125,3,89,0,110,3,37, - 0,100,6,125,3,116,6,124,0,124,1,124,2,124,3,100, - 7,141,4,83,0,119,0,41,8,122,53,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,118,97,114,105,111,117,115, - 32,108,111,97,100,101,114,32,109,101,116,104,111,100,115,46, - 90,12,103,101,116,95,102,105,108,101,110,97,109,101,78,41, - 1,114,122,0,0,0,41,2,114,122,0,0,0,114,129,0, - 0,0,114,128,0,0,0,70,114,148,0,0,0,41,7,114, - 10,0,0,0,114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0, - 0,114,125,0,0,0,41,6,114,20,0,0,0,114,122,0, - 0,0,114,126,0,0,0,114,128,0,0,0,114,149,0,0, - 0,90,6,115,101,97,114,99,104,32,32,32,32,32,32,114, - 5,0,0,0,114,104,0,0,0,165,1,0,0,115,42,0, - 0,0,10,2,8,1,4,1,6,1,8,2,12,1,12,1, - 6,1,2,1,6,255,8,3,10,1,2,1,12,1,2,128, - 12,1,8,1,2,128,4,3,16,2,2,250,115,15,0,0, - 0,175,5,53,0,181,9,65,0,7,193,11,1,65,0,7, - 114,104,0,0,0,99,3,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,50,1,0,0,9, - 0,124,0,106,0,125,3,110,10,35,0,4,0,116,1,121, - 152,1,0,1,0,1,0,89,0,110,7,37,0,124,3,100, - 0,117,1,114,21,124,3,83,0,124,0,106,2,125,4,124, - 1,100,0,117,0,114,43,9,0,124,0,106,3,125,1,110, - 10,35,0,4,0,116,1,121,151,1,0,1,0,1,0,89, - 0,110,1,37,0,9,0,124,0,106,4,125,5,110,12,35, - 0,4,0,116,1,121,150,1,0,1,0,1,0,100,0,125, - 5,89,0,110,1,37,0,124,2,100,0,117,0,114,87,124, - 5,100,0,117,0,114,85,9,0,124,1,106,5,125,2,110, - 14,35,0,4,0,116,1,121,149,1,0,1,0,1,0,100, - 0,125,2,89,0,110,3,37,0,124,5,125,2,9,0,124, - 0,106,6,125,6,110,12,35,0,4,0,116,1,121,148,1, - 0,1,0,1,0,100,0,125,6,89,0,110,1,37,0,9, - 0,116,7,124,0,106,8,131,1,125,7,110,12,35,0,4, - 0,116,1,121,147,1,0,1,0,1,0,100,0,125,7,89, - 0,110,1,37,0,116,9,124,4,124,1,124,2,100,1,141, - 3,125,3,124,5,100,0,117,0,114,136,100,2,110,1,100, - 3,124,3,95,10,124,6,124,3,95,11,124,7,124,3,95, - 12,124,3,83,0,119,0,119,0,119,0,119,0,119,0,119, - 0,41,4,78,169,1,114,126,0,0,0,70,84,41,13,114, - 113,0,0,0,114,2,0,0,0,114,8,0,0,0,114,112, - 0,0,0,114,121,0,0,0,218,7,95,79,82,73,71,73, - 78,218,10,95,95,99,97,99,104,101,100,95,95,218,4,108, - 105,115,116,218,8,95,95,112,97,116,104,95,95,114,125,0, - 0,0,114,130,0,0,0,114,135,0,0,0,114,129,0,0, - 0,41,8,114,110,0,0,0,114,122,0,0,0,114,126,0, - 0,0,114,109,0,0,0,114,20,0,0,0,90,8,108,111, - 99,97,116,105,111,110,114,135,0,0,0,114,129,0,0,0, - 32,32,32,32,32,32,32,32,114,5,0,0,0,218,17,95, - 115,112,101,99,95,102,114,111,109,95,109,111,100,117,108,101, - 191,1,0,0,115,108,0,0,0,2,2,8,1,2,128,12, - 1,4,1,2,128,8,2,4,1,6,2,8,1,2,1,8, - 1,2,128,12,1,4,2,2,128,2,1,8,1,2,128,12, - 1,8,1,2,128,8,1,8,1,2,1,8,1,2,128,12, - 1,8,1,2,128,4,2,2,1,8,1,2,128,12,1,8, - 1,2,128,2,1,12,1,2,128,12,1,8,1,2,128,14, - 2,18,1,6,1,6,1,4,1,2,249,2,252,2,250,2, - 250,2,251,2,246,115,93,0,0,0,129,3,5,0,133,7, - 14,7,157,3,33,0,161,7,42,7,172,3,48,0,176,9, - 59,7,193,5,3,65,9,0,193,9,9,65,20,7,193,24, - 3,65,28,0,193,28,9,65,39,7,193,41,5,65,47,0, - 193,47,9,65,58,7,194,19,1,65,58,7,194,20,1,65, - 39,7,194,21,1,65,20,7,194,22,1,59,7,194,23,1, - 42,7,194,24,1,14,7,114,155,0,0,0,70,169,1,218, - 8,111,118,101,114,114,105,100,101,99,2,0,0,0,0,0, - 0,0,1,0,0,0,8,0,0,0,67,0,0,0,115,204, - 1,0,0,124,2,115,10,116,0,124,1,100,1,100,0,131, - 3,100,0,117,0,114,26,9,0,124,0,106,1,124,1,95, - 2,110,10,35,0,4,0,116,3,121,229,1,0,1,0,1, - 0,89,0,110,1,37,0,124,2,115,36,116,0,124,1,100, - 2,100,0,131,3,100,0,117,0,114,87,124,0,106,4,125, - 3,124,3,100,0,117,0,114,72,124,0,106,5,100,0,117, - 1,114,72,116,6,100,0,117,0,114,54,116,7,130,1,116, - 6,106,8,125,4,124,4,160,9,124,4,161,1,125,3,124, - 0,106,5,124,3,95,10,124,3,124,0,95,4,100,0,124, - 1,95,11,9,0,124,3,124,1,95,12,110,10,35,0,4, - 0,116,3,121,228,1,0,1,0,1,0,89,0,110,1,37, - 0,124,2,115,97,116,0,124,1,100,3,100,0,131,3,100, - 0,117,0,114,113,9,0,124,0,106,13,124,1,95,14,110, - 10,35,0,4,0,116,3,121,227,1,0,1,0,1,0,89, - 0,110,1,37,0,9,0,124,0,124,1,95,15,110,10,35, - 0,4,0,116,3,121,226,1,0,1,0,1,0,89,0,110, - 1,37,0,124,2,115,138,116,0,124,1,100,4,100,0,131, - 3,100,0,117,0,114,159,124,0,106,5,100,0,117,1,114, - 159,9,0,124,0,106,5,124,1,95,16,110,10,35,0,4, - 0,116,3,121,225,1,0,1,0,1,0,89,0,110,1,37, - 0,124,0,106,17,114,221,124,2,115,172,116,0,124,1,100, - 5,100,0,131,3,100,0,117,0,114,188,9,0,124,0,106, - 18,124,1,95,11,110,10,35,0,4,0,116,3,121,224,1, - 0,1,0,1,0,89,0,110,1,37,0,124,2,115,198,116, - 0,124,1,100,6,100,0,131,3,100,0,117,0,114,221,124, - 0,106,19,100,0,117,1,114,221,9,0,124,0,106,19,124, - 1,95,20,124,1,83,0,35,0,4,0,116,3,121,223,1, - 0,1,0,1,0,89,0,124,1,83,0,37,0,124,1,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,41, - 7,78,114,8,0,0,0,114,112,0,0,0,218,11,95,95, - 112,97,99,107,97,103,101,95,95,114,154,0,0,0,114,121, - 0,0,0,114,152,0,0,0,41,21,114,12,0,0,0,114, - 20,0,0,0,114,8,0,0,0,114,2,0,0,0,114,122, - 0,0,0,114,129,0,0,0,114,139,0,0,0,114,140,0, - 0,0,218,16,95,78,97,109,101,115,112,97,99,101,76,111, - 97,100,101,114,218,7,95,95,110,101,119,95,95,90,5,95, - 112,97,116,104,114,121,0,0,0,114,112,0,0,0,114,143, - 0,0,0,114,158,0,0,0,114,113,0,0,0,114,154,0, - 0,0,114,136,0,0,0,114,126,0,0,0,114,135,0,0, - 0,114,152,0,0,0,41,5,114,109,0,0,0,114,110,0, - 0,0,114,157,0,0,0,114,122,0,0,0,114,159,0,0, - 0,32,32,32,32,32,114,5,0,0,0,218,18,95,105,110, - 105,116,95,109,111,100,117,108,101,95,97,116,116,114,115,236, - 1,0,0,115,142,0,0,0,20,4,2,1,10,1,2,128, - 12,1,4,1,2,128,20,2,6,1,8,1,10,2,8,1, - 4,1,6,1,10,2,8,1,6,1,6,11,2,1,8,1, - 2,128,12,1,4,1,2,128,20,2,2,1,10,1,2,128, - 12,1,4,1,2,128,2,2,8,1,2,128,12,1,4,1, - 2,128,20,2,10,1,2,1,10,1,2,128,12,1,4,1, - 2,128,6,2,20,1,2,1,10,1,2,128,12,1,4,1, - 2,128,20,2,10,1,2,1,8,1,4,3,2,128,12,254, - 2,1,4,1,2,128,4,0,2,254,2,249,2,249,2,249, - 2,251,2,250,2,228,115,121,0,0,0,139,4,16,0,144, - 7,25,7,193,9,3,65,13,0,193,13,7,65,22,7,193, - 34,4,65,39,0,193,39,7,65,48,7,193,50,3,65,54, - 0,193,54,7,65,63,7,194,16,4,66,21,0,194,21,7, - 66,30,7,194,45,4,66,50,0,194,50,7,66,59,7,195, - 12,4,67,18,0,195,18,7,67,28,7,195,31,1,67,28, - 7,195,32,1,66,59,7,195,33,1,66,30,7,195,34,1, - 65,63,7,195,35,1,65,48,7,195,36,1,65,22,7,195, - 37,1,25,7,114,161,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,82, - 0,0,0,100,1,125,1,116,0,124,0,106,1,100,2,131, - 2,114,15,124,0,106,1,160,2,124,0,161,1,125,1,110, - 10,116,0,124,0,106,1,100,3,131,2,114,25,116,3,100, - 4,131,1,130,1,124,1,100,1,117,0,114,34,116,4,124, - 0,106,5,131,1,125,1,116,6,124,0,124,1,131,2,1, - 0,124,1,83,0,41,5,122,43,67,114,101,97,116,101,32, - 97,32,109,111,100,117,108,101,32,98,97,115,101,100,32,111, - 110,32,116,104,101,32,112,114,111,118,105,100,101,100,32,115, - 112,101,99,46,78,218,13,99,114,101,97,116,101,95,109,111, - 100,117,108,101,218,11,101,120,101,99,95,109,111,100,117,108, - 101,122,66,108,111,97,100,101,114,115,32,116,104,97,116,32, - 100,101,102,105,110,101,32,101,120,101,99,95,109,111,100,117, - 108,101,40,41,32,109,117,115,116,32,97,108,115,111,32,100, - 101,102,105,110,101,32,99,114,101,97,116,101,95,109,111,100, - 117,108,101,40,41,41,7,114,10,0,0,0,114,122,0,0, - 0,114,162,0,0,0,114,88,0,0,0,114,21,0,0,0, - 114,20,0,0,0,114,161,0,0,0,169,2,114,109,0,0, - 0,114,110,0,0,0,32,32,114,5,0,0,0,218,16,109, - 111,100,117,108,101,95,102,114,111,109,95,115,112,101,99,52, - 2,0,0,115,18,0,0,0,4,3,12,1,14,3,12,1, - 8,1,8,2,10,1,10,1,4,1,114,17,0,0,0,114, - 165,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,100,0,0,0,124,0, - 106,0,100,1,117,0,114,7,100,2,110,2,124,0,106,0, - 125,1,124,0,106,1,100,1,117,0,114,32,124,0,106,2, - 100,1,117,0,114,25,100,3,160,3,124,1,161,1,83,0, - 100,4,160,3,124,1,124,0,106,2,161,2,83,0,124,0, - 106,4,114,42,100,5,160,3,124,1,124,0,106,1,161,2, - 83,0,100,6,160,3,124,0,106,0,124,0,106,1,161,2, - 83,0,41,7,122,38,82,101,116,117,114,110,32,116,104,101, - 32,114,101,112,114,32,116,111,32,117,115,101,32,102,111,114, - 32,116,104,101,32,109,111,100,117,108,101,46,78,114,115,0, - 0,0,114,116,0,0,0,114,117,0,0,0,114,118,0,0, - 0,250,18,60,109,111,100,117,108,101,32,123,33,114,125,32, - 40,123,125,41,62,41,5,114,20,0,0,0,114,126,0,0, - 0,114,122,0,0,0,114,51,0,0,0,114,136,0,0,0, - 41,2,114,109,0,0,0,114,20,0,0,0,32,32,114,5, - 0,0,0,114,119,0,0,0,69,2,0,0,115,16,0,0, - 0,20,3,10,1,10,1,10,1,14,2,6,2,14,1,16, - 2,114,17,0,0,0,114,119,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,10,0,0,0,67,0,0,0, - 115,32,1,0,0,124,0,106,0,125,2,116,1,124,2,131, - 1,53,0,1,0,116,2,106,3,160,4,124,2,161,1,124, - 1,117,1,114,27,100,1,160,5,124,2,161,1,125,3,116, - 6,124,3,124,2,100,2,141,2,130,1,9,0,124,0,106, - 7,100,3,117,0,114,53,124,0,106,8,100,3,117,0,114, - 45,116,6,100,4,124,0,106,0,100,2,141,2,130,1,116, - 9,124,0,124,1,100,5,100,6,141,3,1,0,110,40,116, - 9,124,0,124,1,100,5,100,6,141,3,1,0,116,10,124, - 0,106,7,100,7,131,2,115,87,116,11,124,0,106,7,131, - 1,155,0,100,8,157,2,125,3,116,12,160,13,124,3,116, - 14,161,2,1,0,124,0,106,7,160,15,124,2,161,1,1, - 0,110,6,124,0,106,7,160,16,124,1,161,1,1,0,116, - 2,106,3,160,17,124,0,106,0,161,1,125,1,124,1,116, - 2,106,3,124,0,106,0,60,0,110,16,35,0,116,2,106, - 3,160,17,124,0,106,0,161,1,125,1,124,1,116,2,106, - 3,124,0,106,0,60,0,119,0,37,0,9,0,100,3,4, - 0,4,0,131,3,1,0,124,1,83,0,35,0,49,0,115, - 136,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, - 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, - 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, - 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, - 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, - 30,109,111,100,117,108,101,32,123,33,114,125,32,110,111,116, - 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,114, - 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, - 111,97,100,101,114,84,114,156,0,0,0,114,163,0,0,0, - 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, - 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, - 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, - 114,58,0,0,0,114,18,0,0,0,114,105,0,0,0,114, - 39,0,0,0,114,51,0,0,0,114,88,0,0,0,114,122, - 0,0,0,114,129,0,0,0,114,161,0,0,0,114,10,0, - 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, - 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, - 218,11,108,111,97,100,95,109,111,100,117,108,101,114,163,0, - 0,0,218,3,112,111,112,41,4,114,109,0,0,0,114,110, - 0,0,0,114,20,0,0,0,114,108,0,0,0,32,32,32, - 32,114,5,0,0,0,114,106,0,0,0,86,2,0,0,115, - 50,0,0,0,6,2,10,1,16,1,10,1,12,1,2,1, - 10,1,10,1,14,1,16,2,14,2,12,1,16,1,12,2, - 14,1,12,2,14,4,14,1,2,128,14,255,18,1,10,233, - 4,24,22,128,4,0,115,41,0,0,0,135,20,66,3,3, - 156,65,1,65,43,2,193,29,14,66,3,3,193,43,15,65, - 58,9,193,58,1,66,3,3,194,3,4,66,7,11,194,8, - 3,66,7,11,114,106,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,22, - 1,0,0,9,0,124,0,106,0,160,1,124,0,106,2,161, - 1,1,0,110,25,35,0,1,0,1,0,1,0,124,0,106, - 2,116,3,106,4,118,0,114,32,116,3,106,4,160,5,124, - 0,106,2,161,1,125,1,124,1,116,3,106,4,124,0,106, - 2,60,0,130,0,37,0,116,3,106,4,160,5,124,0,106, - 2,161,1,125,1,124,1,116,3,106,4,124,0,106,2,60, - 0,116,6,124,1,100,1,100,0,131,3,100,0,117,0,114, - 71,9,0,124,0,106,0,124,1,95,7,110,10,35,0,4, - 0,116,8,121,138,1,0,1,0,1,0,89,0,110,1,37, - 0,116,6,124,1,100,2,100,0,131,3,100,0,117,0,114, - 109,9,0,124,1,106,9,124,1,95,10,116,11,124,1,100, - 3,131,2,115,98,124,0,106,2,160,12,100,4,161,1,100, - 5,25,0,124,1,95,10,110,10,35,0,4,0,116,8,121, - 137,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, - 1,100,6,100,0,131,3,100,0,117,0,114,134,9,0,124, - 0,124,1,95,13,124,1,83,0,35,0,4,0,116,8,121, - 136,1,0,1,0,1,0,89,0,124,1,83,0,37,0,124, - 1,83,0,119,0,119,0,119,0,41,7,78,114,112,0,0, - 0,114,158,0,0,0,114,154,0,0,0,114,141,0,0,0, - 114,26,0,0,0,114,113,0,0,0,41,14,114,122,0,0, - 0,114,170,0,0,0,114,20,0,0,0,114,18,0,0,0, - 114,105,0,0,0,114,171,0,0,0,114,12,0,0,0,114, - 112,0,0,0,114,2,0,0,0,114,8,0,0,0,114,158, - 0,0,0,114,10,0,0,0,114,142,0,0,0,114,113,0, - 0,0,114,164,0,0,0,32,32,114,5,0,0,0,218,25, - 95,108,111,97,100,95,98,97,99,107,119,97,114,100,95,99, - 111,109,112,97,116,105,98,108,101,116,2,0,0,115,80,0, - 0,0,2,3,16,1,2,128,6,1,12,1,14,1,12,1, - 2,1,2,128,14,3,12,1,16,1,2,1,10,1,2,128, - 12,1,4,1,2,128,16,1,2,1,8,4,10,1,18,1, - 4,128,12,1,4,1,2,128,16,1,2,1,6,1,4,3, - 2,128,12,254,2,1,4,1,2,128,4,0,2,254,2,251, - 2,246,115,59,0,0,0,129,7,9,0,137,24,33,7,184, - 4,61,0,189,7,65,6,7,193,16,18,65,35,0,193,35, - 7,65,44,7,193,54,3,65,59,0,193,59,7,66,5,7, - 194,8,1,66,5,7,194,9,1,65,44,7,194,10,1,65, - 6,7,114,172,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,11,0,0,0,67,0,0,0,115,248,0,0, - 0,124,0,106,0,100,0,117,1,114,29,116,1,124,0,106, - 0,100,1,131,2,115,29,116,2,124,0,106,0,131,1,155, - 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, - 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, - 1,125,2,100,3,124,0,95,8,9,0,124,2,116,9,106, - 10,124,0,106,11,60,0,9,0,124,0,106,0,100,0,117, - 0,114,62,124,0,106,12,100,0,117,0,114,61,116,13,100, - 4,124,0,106,11,100,5,141,2,130,1,110,6,124,0,106, - 0,160,14,124,2,161,1,1,0,110,22,35,0,1,0,1, - 0,1,0,9,0,116,9,106,10,124,0,106,11,61,0,130, - 0,35,0,4,0,116,15,121,123,1,0,1,0,1,0,89, - 0,130,0,37,0,37,0,116,9,106,10,160,16,124,0,106, - 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, - 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, - 0,100,7,124,0,95,8,124,2,83,0,35,0,100,7,124, - 0,95,8,119,0,37,0,119,0,41,8,78,114,163,0,0, - 0,114,168,0,0,0,84,114,167,0,0,0,114,19,0,0, - 0,122,18,105,109,112,111,114,116,32,123,33,114,125,32,35, - 32,123,33,114,125,70,41,18,114,122,0,0,0,114,10,0, - 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, - 0,114,169,0,0,0,114,172,0,0,0,114,165,0,0,0, - 90,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114, - 18,0,0,0,114,105,0,0,0,114,20,0,0,0,114,129, - 0,0,0,114,88,0,0,0,114,163,0,0,0,114,71,0, - 0,0,114,171,0,0,0,114,84,0,0,0,41,3,114,109, - 0,0,0,114,108,0,0,0,114,110,0,0,0,32,32,32, - 114,5,0,0,0,218,14,95,108,111,97,100,95,117,110,108, - 111,99,107,101,100,152,2,0,0,115,66,0,0,0,10,2, - 12,2,16,1,12,2,8,1,8,2,6,5,2,1,12,1, - 2,1,10,1,10,1,14,1,2,255,12,4,4,128,6,1, - 2,1,10,1,2,3,2,128,12,254,2,1,2,1,4,128, - 14,5,12,1,16,1,6,2,4,2,2,128,10,254,2,245, - 115,64,0,0,0,165,6,65,53,0,172,24,65,5,0,193, - 4,1,65,53,0,193,5,4,65,26,7,193,10,5,65,16, - 6,193,15,1,65,26,7,193,16,7,65,25,13,193,23,3, - 65,26,7,193,26,22,65,53,0,193,53,5,65,58,7,193, - 59,1,65,25,13,114,173,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, - 58,0,0,0,116,0,124,0,106,1,131,1,53,0,1,0, - 116,2,124,0,131,1,2,0,100,1,4,0,4,0,131,3, - 1,0,83,0,35,0,49,0,115,21,119,4,37,0,1,0, - 1,0,1,0,89,0,1,0,1,0,100,1,83,0,41,2, - 122,191,82,101,116,117,114,110,32,97,32,110,101,119,32,109, - 111,100,117,108,101,32,111,98,106,101,99,116,44,32,108,111, - 97,100,101,100,32,98,121,32,116,104,101,32,115,112,101,99, - 39,115,32,108,111,97,100,101,114,46,10,10,32,32,32,32, - 84,104,101,32,109,111,100,117,108,101,32,105,115,32,110,111, - 116,32,97,100,100,101,100,32,116,111,32,105,116,115,32,112, - 97,114,101,110,116,46,10,10,32,32,32,32,73,102,32,97, - 32,109,111,100,117,108,101,32,105,115,32,97,108,114,101,97, - 100,121,32,105,110,32,115,121,115,46,109,111,100,117,108,101, - 115,44,32,116,104,97,116,32,101,120,105,115,116,105,110,103, - 32,109,111,100,117,108,101,32,103,101,116,115,10,32,32,32, - 32,99,108,111,98,98,101,114,101,100,46,10,10,32,32,32, - 32,78,41,3,114,58,0,0,0,114,20,0,0,0,114,173, - 0,0,0,169,1,114,109,0,0,0,32,114,5,0,0,0, - 114,107,0,0,0,197,2,0,0,115,10,0,0,0,12,9, - 6,1,14,255,22,128,4,0,115,12,0,0,0,133,4,16, - 3,144,4,20,11,149,3,20,11,114,107,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, - 0,0,0,115,140,0,0,0,101,0,90,1,100,0,90,2, - 100,1,90,3,100,2,90,4,101,5,100,3,100,4,132,0, - 131,1,90,6,101,7,100,20,100,6,100,7,132,1,131,1, - 90,8,101,7,100,21,100,8,100,9,132,1,131,1,90,9, - 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, - 100,13,132,0,131,1,90,11,101,7,101,12,100,14,100,15, - 132,0,131,1,131,1,90,13,101,7,101,12,100,16,100,17, - 132,0,131,1,131,1,90,14,101,7,101,12,100,18,100,19, - 132,0,131,1,131,1,90,15,101,7,101,16,131,1,90,17, - 100,5,83,0,41,22,218,15,66,117,105,108,116,105,110,73, - 109,112,111,114,116,101,114,122,144,77,101,116,97,32,112,97, - 116,104,32,105,109,112,111,114,116,32,102,111,114,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,115,46,10, - 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115, - 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115, - 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104, - 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101, - 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115, - 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97, - 115,115,46,10,10,32,32,32,32,122,8,98,117,105,108,116, - 45,105,110,99,1,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,67,0,0,0,115,34,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,100,2,124,0,106,3,155, - 2,100,3,116,4,106,5,155,0,100,4,157,5,83,0,41, - 6,250,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,81,66,117,105,108,116,105,110,73, - 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, - 101,112,114,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,122,8,60,109,111,100,117, - 108,101,32,122,2,32,40,122,2,41,62,78,41,6,114,101, - 0,0,0,114,102,0,0,0,114,103,0,0,0,114,8,0, - 0,0,114,175,0,0,0,114,151,0,0,0,169,1,114,110, - 0,0,0,32,114,5,0,0,0,114,114,0,0,0,223,2, - 0,0,115,8,0,0,0,6,7,2,1,4,255,22,2,114, - 17,0,0,0,122,27,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,109,111,100,117,108,101,95,114,101,112, - 114,78,99,4,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,115,42,0,0,0,124,2,100,0, - 117,1,114,6,100,0,83,0,116,0,160,1,124,1,161,1, - 114,19,116,2,124,1,124,0,124,0,106,3,100,1,141,3, - 83,0,100,0,83,0,169,2,78,114,150,0,0,0,41,4, - 114,65,0,0,0,90,10,105,115,95,98,117,105,108,116,105, - 110,114,104,0,0,0,114,151,0,0,0,169,4,218,3,99, - 108,115,114,90,0,0,0,218,4,112,97,116,104,218,6,116, - 97,114,103,101,116,32,32,32,32,114,5,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,234,2,0,0,115,10,0, - 0,0,8,2,4,1,10,1,16,1,4,2,114,17,0,0, - 0,122,25,66,117,105,108,116,105,110,73,109,112,111,114,116, - 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,67,0,0, - 0,115,42,0,0,0,116,0,160,1,100,1,116,2,161,2, - 1,0,124,0,160,3,124,1,124,2,161,2,125,3,124,3, - 100,2,117,1,114,19,124,3,106,4,83,0,100,2,83,0, - 41,3,122,175,70,105,110,100,32,116,104,101,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,32,32,32,32,73,102,32,39,112,97,116,104,39, - 32,105,115,32,101,118,101,114,32,115,112,101,99,105,102,105, - 101,100,32,116,104,101,110,32,116,104,101,32,115,101,97,114, - 99,104,32,105,115,32,99,111,110,115,105,100,101,114,101,100, - 32,97,32,102,97,105,108,117,114,101,46,10,10,32,32,32, - 32,32,32,32,32,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,122,106,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, - 41,5,114,101,0,0,0,114,102,0,0,0,114,103,0,0, - 0,114,183,0,0,0,114,122,0,0,0,41,4,114,180,0, - 0,0,114,90,0,0,0,114,181,0,0,0,114,109,0,0, - 0,32,32,32,32,114,5,0,0,0,218,11,102,105,110,100, - 95,109,111,100,117,108,101,243,2,0,0,115,10,0,0,0, - 6,9,2,2,4,254,12,3,18,1,114,17,0,0,0,122, - 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,46,0,0,0,124,0,106,0,116,1,106,2,118,1, - 114,17,116,3,100,1,160,4,124,0,106,0,161,1,124,0, - 106,0,100,2,141,2,130,1,116,5,116,6,106,7,124,0, - 131,2,83,0,41,4,122,24,67,114,101,97,116,101,32,97, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 114,86,0,0,0,114,19,0,0,0,78,41,8,114,20,0, - 0,0,114,18,0,0,0,114,87,0,0,0,114,88,0,0, - 0,114,51,0,0,0,114,75,0,0,0,114,65,0,0,0, - 90,14,99,114,101,97,116,101,95,98,117,105,108,116,105,110, - 114,174,0,0,0,32,114,5,0,0,0,114,162,0,0,0, - 2,3,0,0,115,10,0,0,0,12,3,12,1,4,1,6, - 255,12,2,114,17,0,0,0,122,29,66,117,105,108,116,105, - 110,73,109,112,111,114,116,101,114,46,99,114,101,97,116,101, - 95,109,111,100,117,108,101,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, - 0,116,0,116,1,106,2,124,0,131,2,1,0,100,1,83, - 0,41,2,122,22,69,120,101,99,32,97,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,78,41,3,114,75, - 0,0,0,114,65,0,0,0,90,12,101,120,101,99,95,98, - 117,105,108,116,105,110,114,177,0,0,0,32,114,5,0,0, - 0,114,163,0,0,0,10,3,0,0,115,2,0,0,0,16, - 3,114,17,0,0,0,122,27,66,117,105,108,116,105,110,73, - 109,112,111,114,116,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, - 1,0,0,0,67,0,0,0,243,4,0,0,0,100,1,83, - 0,41,2,122,57,82,101,116,117,114,110,32,78,111,110,101, - 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,99,111,100,101,32,111,98,106,101,99,116,115,46,78,114, - 23,0,0,0,169,2,114,180,0,0,0,114,90,0,0,0, - 32,32,114,5,0,0,0,218,8,103,101,116,95,99,111,100, - 101,15,3,0,0,243,2,0,0,0,4,4,114,17,0,0, - 0,122,24,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,67,0,0,0, - 114,185,0,0,0,41,2,122,56,82,101,116,117,114,110,32, - 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, - 104,97,118,101,32,115,111,117,114,99,101,32,99,111,100,101, - 46,78,114,23,0,0,0,114,186,0,0,0,32,32,114,5, - 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,21, - 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,67,0,0,0,114,185, - 0,0,0,41,3,122,52,82,101,116,117,114,110,32,70,97, - 108,115,101,32,97,115,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,115,32,97,114,101,32,110,101,118,101, - 114,32,112,97,99,107,97,103,101,115,46,70,78,114,23,0, - 0,0,114,186,0,0,0,32,32,114,5,0,0,0,114,128, - 0,0,0,27,3,0,0,114,188,0,0,0,114,17,0,0, - 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,105,115,95,112,97,99,107,97,103,101,169,2,78, - 78,114,0,0,0,0,41,18,114,8,0,0,0,114,7,0, - 0,0,114,1,0,0,0,114,9,0,0,0,114,151,0,0, - 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, - 114,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, - 100,114,183,0,0,0,114,184,0,0,0,114,162,0,0,0, - 114,163,0,0,0,114,95,0,0,0,114,187,0,0,0,114, - 189,0,0,0,114,128,0,0,0,114,111,0,0,0,114,170, - 0,0,0,114,23,0,0,0,114,5,0,0,0,114,175,0, - 0,0,212,2,0,0,115,46,0,0,0,8,0,4,2,4, - 7,2,2,10,1,2,10,12,1,2,8,12,1,2,14,10, - 1,2,7,10,1,2,4,2,1,12,1,2,4,2,1,12, - 1,2,4,2,1,12,1,12,4,114,17,0,0,0,114,175, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,64,0,0,0,115,144,0,0,0,101,0,90, - 1,100,0,90,2,100,1,90,3,100,2,90,4,101,5,100, - 3,100,4,132,0,131,1,90,6,101,7,100,22,100,6,100, - 7,132,1,131,1,90,8,101,7,100,23,100,8,100,9,132, - 1,131,1,90,9,101,5,100,10,100,11,132,0,131,1,90, - 10,101,5,100,12,100,13,132,0,131,1,90,11,101,7,100, - 14,100,15,132,0,131,1,90,12,101,7,101,13,100,16,100, - 17,132,0,131,1,131,1,90,14,101,7,101,13,100,18,100, - 19,132,0,131,1,131,1,90,15,101,7,101,13,100,20,100, - 21,132,0,131,1,131,1,90,16,100,5,83,0,41,24,218, - 14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,122, - 142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, - 116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,109, - 101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,101, - 114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,105, - 99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,111, - 105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32, - 32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116, - 104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,90, - 6,102,114,111,122,101,110,99,1,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,160, - 3,124,0,106,4,116,5,106,6,161,2,83,0,41,4,114, - 176,0,0,0,122,80,70,114,111,122,101,110,73,109,112,111, - 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,114,166,0,0,0,78,41,7,114,101, - 0,0,0,114,102,0,0,0,114,103,0,0,0,114,51,0, - 0,0,114,8,0,0,0,114,193,0,0,0,114,151,0,0, - 0,41,1,218,1,109,32,114,5,0,0,0,114,114,0,0, - 0,47,3,0,0,115,8,0,0,0,6,7,2,1,4,255, - 16,2,114,17,0,0,0,122,26,70,114,111,122,101,110,73, - 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, - 101,112,114,78,99,4,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,67,0,0,0,115,30,0,0,0,116,0, - 160,1,124,1,161,1,114,13,116,2,124,1,124,0,124,0, - 106,3,100,1,141,3,83,0,100,0,83,0,114,178,0,0, - 0,41,4,114,65,0,0,0,114,98,0,0,0,114,104,0, - 0,0,114,151,0,0,0,114,179,0,0,0,32,32,32,32, - 114,5,0,0,0,114,183,0,0,0,58,3,0,0,115,6, - 0,0,0,10,2,16,1,4,2,114,17,0,0,0,122,24, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,102, + 119,114,97,112,112,101,114,254,0,0,0,243,10,0,0,0, + 10,1,10,1,2,1,6,255,10,2,114,17,0,0,0,122, + 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, + 105,110,46,60,108,111,99,97,108,115,62,46,95,114,101,113, + 117,105,114,101,115,95,98,117,105,108,116,105,110,95,119,114, + 97,112,112,101,114,78,169,1,114,16,0,0,0,41,3,114, + 91,0,0,0,114,92,0,0,0,114,91,0,0,0,96,32, + 64,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, + 115,95,98,117,105,108,116,105,110,252,0,0,0,243,6,0, + 0,0,12,2,10,5,4,1,114,17,0,0,0,114,95,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,114,85,0,0,0,41,4,122,47, + 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, + 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, + 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, + 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, + 2,141,2,130,1,136,2,124,0,124,1,131,2,83,0,169, + 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, + 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, + 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, + 102,114,111,122,101,110,114,88,0,0,0,114,51,0,0,0, + 114,89,0,0,0,32,32,128,114,5,0,0,0,218,24,95, + 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, + 119,114,97,112,112,101,114,9,1,0,0,114,93,0,0,0, + 114,17,0,0,0,122,50,95,114,101,113,117,105,114,101,115, + 95,102,114,111,122,101,110,46,60,108,111,99,97,108,115,62, + 46,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, + 110,95,119,114,97,112,112,101,114,78,114,94,0,0,0,41, + 3,114,91,0,0,0,114,99,0,0,0,114,91,0,0,0, + 96,32,64,114,5,0,0,0,218,16,95,114,101,113,117,105, + 114,101,115,95,102,114,111,122,101,110,7,1,0,0,114,96, + 0,0,0,114,17,0,0,0,114,100,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,115,74,0,0,0,100,1,125,2,116,0,160,1,124, + 2,116,2,161,2,1,0,116,3,124,1,124,0,131,2,125, + 3,124,1,116,4,106,5,118,0,114,33,116,4,106,5,124, + 1,25,0,125,4,116,6,124,3,124,4,131,2,1,0,116, + 4,106,5,124,1,25,0,83,0,116,7,124,3,131,1,83, + 0,41,3,122,130,76,111,97,100,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, + 110,116,111,32,115,121,115,46,109,111,100,117,108,101,115,32, + 97,110,100,32,114,101,116,117,114,110,32,105,116,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,46,32,32, + 85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101,32,108,111,97, + 100,95,109,111,100,117,108,101,40,41,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, + 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, + 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, + 32,51,46,49,50,59,32,117,115,101,32,101,120,101,99,95, + 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, + 78,41,8,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,16,115,112,101,99,95,102, + 114,111,109,95,108,111,97,100,101,114,114,18,0,0,0,218, + 7,109,111,100,117,108,101,115,218,5,95,101,120,101,99,218, + 5,95,108,111,97,100,41,5,114,34,0,0,0,114,90,0, + 0,0,218,3,109,115,103,218,4,115,112,101,99,218,6,109, + 111,100,117,108,101,32,32,32,32,32,114,5,0,0,0,218, + 17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,104, + 105,109,19,1,0,0,115,16,0,0,0,4,6,12,2,10, + 1,10,1,10,1,10,1,10,1,8,2,114,17,0,0,0, + 114,111,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,194,0,0,0,116, + 0,124,0,100,1,100,2,131,3,125,1,116,0,124,0,100, + 3,100,2,131,3,4,0,125,2,114,18,116,1,124,2,131, + 1,83,0,116,2,124,1,100,4,131,2,114,39,9,0,124, + 1,160,3,124,0,161,1,83,0,35,0,4,0,116,4,121, + 96,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, + 0,106,5,125,3,110,12,35,0,4,0,116,6,121,95,1, + 0,1,0,1,0,100,5,125,3,89,0,110,1,37,0,9, + 0,124,0,106,7,125,4,110,27,35,0,4,0,116,6,121, + 94,1,0,1,0,1,0,124,1,100,2,117,0,114,79,100, + 6,160,8,124,3,161,1,6,0,89,0,83,0,100,7,160, + 8,124,3,124,1,161,2,6,0,89,0,83,0,37,0,100, + 8,160,8,124,3,124,4,161,2,83,0,119,0,119,0,119, + 0,41,9,122,44,84,104,101,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,111,102,32,77,111,100,117,108, + 101,84,121,112,101,46,95,95,114,101,112,114,95,95,40,41, + 46,218,10,95,95,108,111,97,100,101,114,95,95,78,218,8, + 95,95,115,112,101,99,95,95,218,11,109,111,100,117,108,101, + 95,114,101,112,114,250,1,63,250,13,60,109,111,100,117,108, + 101,32,123,33,114,125,62,250,20,60,109,111,100,117,108,101, + 32,123,33,114,125,32,40,123,33,114,125,41,62,250,23,60, + 109,111,100,117,108,101,32,123,33,114,125,32,102,114,111,109, + 32,123,33,114,125,62,41,9,114,12,0,0,0,218,22,95, + 109,111,100,117,108,101,95,114,101,112,114,95,102,114,111,109, + 95,115,112,101,99,114,10,0,0,0,114,114,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,114,8,0,0,0,114, + 2,0,0,0,218,8,95,95,102,105,108,101,95,95,114,51, + 0,0,0,41,5,114,110,0,0,0,218,6,108,111,97,100, + 101,114,114,109,0,0,0,114,20,0,0,0,218,8,102,105, + 108,101,110,97,109,101,32,32,32,32,32,114,5,0,0,0, + 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, + 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, + 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, + 128,12,1,8,1,2,128,2,1,8,1,2,128,12,1,8, + 1,14,1,16,2,2,128,12,2,2,250,2,252,2,251,115, + 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, + 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, + 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, + 1,38,7,114,124,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,64,0,0,0,115,114,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 100,2,100,2,100,3,156,3,100,4,100,5,132,2,90,4, + 100,6,100,7,132,0,90,5,100,8,100,9,132,0,90,6, + 101,7,100,10,100,11,132,0,131,1,90,8,101,8,106,9, + 100,12,100,11,132,0,131,1,90,8,101,7,100,13,100,14, + 132,0,131,1,90,10,101,7,100,15,100,16,132,0,131,1, + 90,11,101,11,106,9,100,17,100,16,132,0,131,1,90,11, + 100,2,83,0,41,18,218,10,77,111,100,117,108,101,83,112, + 101,99,97,208,5,0,0,84,104,101,32,115,112,101,99,105, + 102,105,99,97,116,105,111,110,32,102,111,114,32,97,32,109, + 111,100,117,108,101,44,32,117,115,101,100,32,102,111,114,32, + 108,111,97,100,105,110,103,46,10,10,32,32,32,32,65,32, + 109,111,100,117,108,101,39,115,32,115,112,101,99,32,105,115, + 32,116,104,101,32,115,111,117,114,99,101,32,102,111,114,32, + 105,110,102,111,114,109,97,116,105,111,110,32,97,98,111,117, + 116,32,116,104,101,32,109,111,100,117,108,101,46,32,32,70, + 111,114,10,32,32,32,32,100,97,116,97,32,97,115,115,111, + 99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32, + 109,111,100,117,108,101,44,32,105,110,99,108,117,100,105,110, + 103,32,115,111,117,114,99,101,44,32,117,115,101,32,116,104, + 101,32,115,112,101,99,39,115,10,32,32,32,32,108,111,97, + 100,101,114,46,10,10,32,32,32,32,96,110,97,109,101,96, + 32,105,115,32,116,104,101,32,97,98,115,111,108,117,116,101, + 32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,108,111,97,100,101,114,96,32,105, + 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, + 32,116,111,32,117,115,101,32,119,104,101,110,32,108,111,97, + 100,105,110,103,32,116,104,101,32,109,111,100,117,108,101,46, + 32,32,96,112,97,114,101,110,116,96,32,105,115,32,116,104, + 101,32,110,97,109,101,32,111,102,32,116,104,101,10,32,32, + 32,32,112,97,99,107,97,103,101,32,116,104,101,32,109,111, + 100,117,108,101,32,105,115,32,105,110,46,32,32,84,104,101, + 32,112,97,114,101,110,116,32,105,115,32,100,101,114,105,118, + 101,100,32,102,114,111,109,32,116,104,101,32,110,97,109,101, + 46,10,10,32,32,32,32,96,105,115,95,112,97,99,107,97, + 103,101,96,32,100,101,116,101,114,109,105,110,101,115,32,105, + 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, + 99,111,110,115,105,100,101,114,101,100,32,97,32,112,97,99, + 107,97,103,101,32,111,114,10,32,32,32,32,110,111,116,46, + 32,32,79,110,32,109,111,100,117,108,101,115,32,116,104,105, + 115,32,105,115,32,114,101,102,108,101,99,116,101,100,32,98, + 121,32,116,104,101,32,96,95,95,112,97,116,104,95,95,96, + 32,97,116,116,114,105,98,117,116,101,46,10,10,32,32,32, + 32,96,111,114,105,103,105,110,96,32,105,115,32,116,104,101, + 32,115,112,101,99,105,102,105,99,32,108,111,99,97,116,105, + 111,110,32,117,115,101,100,32,98,121,32,116,104,101,32,108, + 111,97,100,101,114,32,102,114,111,109,32,119,104,105,99,104, + 32,116,111,10,32,32,32,32,108,111,97,100,32,116,104,101, + 32,109,111,100,117,108,101,44,32,105,102,32,116,104,97,116, + 32,105,110,102,111,114,109,97,116,105,111,110,32,105,115,32, + 97,118,97,105,108,97,98,108,101,46,32,32,87,104,101,110, + 32,102,105,108,101,110,97,109,101,32,105,115,10,32,32,32, + 32,115,101,116,44,32,111,114,105,103,105,110,32,119,105,108, + 108,32,109,97,116,99,104,46,10,10,32,32,32,32,96,104, + 97,115,95,108,111,99,97,116,105,111,110,96,32,105,110,100, + 105,99,97,116,101,115,32,116,104,97,116,32,97,32,115,112, + 101,99,39,115,32,34,111,114,105,103,105,110,34,32,114,101, + 102,108,101,99,116,115,32,97,32,108,111,99,97,116,105,111, + 110,46,10,32,32,32,32,87,104,101,110,32,116,104,105,115, + 32,105,115,32,84,114,117,101,44,32,96,95,95,102,105,108, + 101,95,95,96,32,97,116,116,114,105,98,117,116,101,32,111, + 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, + 115,101,116,46,10,10,32,32,32,32,96,99,97,99,104,101, + 100,96,32,105,115,32,116,104,101,32,108,111,99,97,116,105, + 111,110,32,111,102,32,116,104,101,32,99,97,99,104,101,100, + 32,98,121,116,101,99,111,100,101,32,102,105,108,101,44,32, + 105,102,32,97,110,121,46,32,32,73,116,10,32,32,32,32, + 99,111,114,114,101,115,112,111,110,100,115,32,116,111,32,116, + 104,101,32,96,95,95,99,97,99,104,101,100,95,95,96,32, + 97,116,116,114,105,98,117,116,101,46,10,10,32,32,32,32, + 96,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,96,32,105,115,32, + 116,104,101,32,115,101,113,117,101,110,99,101,32,111,102,32, + 112,97,116,104,32,101,110,116,114,105,101,115,32,116,111,10, + 32,32,32,32,115,101,97,114,99,104,32,119,104,101,110,32, + 105,109,112,111,114,116,105,110,103,32,115,117,98,109,111,100, + 117,108,101,115,46,32,32,73,102,32,115,101,116,44,32,105, + 115,95,112,97,99,107,97,103,101,32,115,104,111,117,108,100, + 32,98,101,10,32,32,32,32,84,114,117,101,45,45,97,110, + 100,32,70,97,108,115,101,32,111,116,104,101,114,119,105,115, + 101,46,10,10,32,32,32,32,80,97,99,107,97,103,101,115, + 32,97,114,101,32,115,105,109,112,108,121,32,109,111,100,117, + 108,101,115,32,116,104,97,116,32,40,109,97,121,41,32,104, + 97,118,101,32,115,117,98,109,111,100,117,108,101,115,46,32, + 32,73,102,32,97,32,115,112,101,99,10,32,32,32,32,104, + 97,115,32,97,32,110,111,110,45,78,111,110,101,32,118,97, + 108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112,111,114,116,10, + 32,32,32,32,115,121,115,116,101,109,32,119,105,108,108,32, + 99,111,110,115,105,100,101,114,32,109,111,100,117,108,101,115, + 32,108,111,97,100,101,100,32,102,114,111,109,32,116,104,101, + 32,115,112,101,99,32,97,115,32,112,97,99,107,97,103,101, + 115,46,10,10,32,32,32,32,79,110,108,121,32,102,105,110, + 100,101,114,115,32,40,115,101,101,32,105,109,112,111,114,116, + 108,105,98,46,97,98,99,46,77,101,116,97,80,97,116,104, + 70,105,110,100,101,114,32,97,110,100,10,32,32,32,32,105, + 109,112,111,114,116,108,105,98,46,97,98,99,46,80,97,116, + 104,69,110,116,114,121,70,105,110,100,101,114,41,32,115,104, + 111,117,108,100,32,109,111,100,105,102,121,32,77,111,100,117, + 108,101,83,112,101,99,32,105,110,115,116,97,110,99,101,115, + 46,10,10,32,32,32,32,78,41,3,218,6,111,114,105,103, + 105,110,218,12,108,111,97,100,101,114,95,115,116,97,116,101, + 218,10,105,115,95,112,97,99,107,97,103,101,99,3,0,0, + 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, + 0,115,54,0,0,0,124,1,124,0,95,0,124,2,124,0, + 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, + 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, + 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, + 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, + 0,114,127,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, + 114,218,7,95,99,97,99,104,101,100,41,6,114,34,0,0, + 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, + 114,127,0,0,0,114,128,0,0,0,32,32,32,32,32,32, + 114,5,0,0,0,114,35,0,0,0,101,1,0,0,115,14, + 0,0,0,6,2,6,1,6,1,6,1,14,1,6,3,10, + 1,114,17,0,0,0,122,19,77,111,100,117,108,101,83,112, + 101,99,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,6,0,0,0,67,0,0,0, + 115,102,0,0,0,100,1,160,0,124,0,106,1,161,1,100, + 2,160,0,124,0,106,2,161,1,103,2,125,1,124,0,106, + 3,100,0,117,1,114,26,124,1,160,4,100,3,160,0,124, + 0,106,3,161,1,161,1,1,0,124,0,106,5,100,0,117, + 1,114,40,124,1,160,4,100,4,160,0,124,0,106,5,161, + 1,161,1,1,0,100,5,160,0,124,0,106,6,106,7,100, + 6,160,8,124,1,161,1,161,2,83,0,41,7,78,122,9, + 110,97,109,101,61,123,33,114,125,122,11,108,111,97,100,101, + 114,61,123,33,114,125,122,11,111,114,105,103,105,110,61,123, + 33,114,125,122,29,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,61, + 123,125,122,6,123,125,40,123,125,41,122,2,44,32,41,9, + 114,51,0,0,0,114,20,0,0,0,114,122,0,0,0,114, + 126,0,0,0,218,6,97,112,112,101,110,100,114,129,0,0, + 0,218,9,95,95,99,108,97,115,115,95,95,114,8,0,0, + 0,218,4,106,111,105,110,41,2,114,34,0,0,0,114,63, + 0,0,0,32,32,114,5,0,0,0,114,54,0,0,0,113, + 1,0,0,115,20,0,0,0,10,1,10,1,4,255,10,2, + 18,1,10,1,6,1,8,1,4,255,22,2,114,17,0,0, + 0,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, + 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0, + 0,0,0,8,0,0,0,67,0,0,0,115,104,0,0,0, + 124,0,106,0,125,2,9,0,124,0,106,1,124,1,106,1, + 107,2,111,38,124,0,106,2,124,1,106,2,107,2,111,38, + 124,0,106,3,124,1,106,3,107,2,111,38,124,2,124,1, + 106,0,107,2,111,38,124,0,106,4,124,1,106,4,107,2, + 111,38,124,0,106,5,124,1,106,5,107,2,83,0,35,0, + 4,0,116,6,121,51,1,0,1,0,1,0,116,7,6,0, + 89,0,83,0,37,0,119,0,114,0,0,0,0,41,8,114, + 129,0,0,0,114,20,0,0,0,114,122,0,0,0,114,126, + 0,0,0,218,6,99,97,99,104,101,100,218,12,104,97,115, + 95,108,111,99,97,116,105,111,110,114,2,0,0,0,218,14, + 78,111,116,73,109,112,108,101,109,101,110,116,101,100,41,3, + 114,34,0,0,0,90,5,111,116,104,101,114,90,4,115,109, + 115,108,32,32,32,114,5,0,0,0,218,6,95,95,101,113, + 95,95,123,1,0,0,115,36,0,0,0,6,1,2,1,12, + 1,10,1,2,255,10,2,2,254,8,3,2,253,10,4,2, + 252,10,5,2,251,2,128,12,6,8,1,2,128,2,255,115, + 12,0,0,0,132,34,39,0,167,9,50,7,179,1,50,7, + 122,17,77,111,100,117,108,101,83,112,101,99,46,95,95,101, + 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,58,0,0,0,124,0,106, + 0,100,0,117,0,114,26,124,0,106,1,100,0,117,1,114, + 26,124,0,106,2,114,26,116,3,100,0,117,0,114,19,116, + 4,130,1,116,3,160,5,124,0,106,1,161,1,124,0,95, + 0,124,0,106,0,83,0,114,0,0,0,0,41,6,114,131, + 0,0,0,114,126,0,0,0,114,130,0,0,0,218,19,95, + 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, + 97,108,218,19,78,111,116,73,109,112,108,101,109,101,110,116, + 101,100,69,114,114,111,114,90,11,95,103,101,116,95,99,97, + 99,104,101,100,114,53,0,0,0,32,114,5,0,0,0,114, + 135,0,0,0,135,1,0,0,115,12,0,0,0,10,2,16, + 1,8,1,4,1,14,1,6,1,114,17,0,0,0,122,17, + 77,111,100,117,108,101,83,112,101,99,46,99,97,99,104,101, + 100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,131,0,0, + 0,41,2,114,34,0,0,0,114,135,0,0,0,32,32,114, + 5,0,0,0,114,135,0,0,0,144,1,0,0,115,2,0, + 0,0,10,2,114,17,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,32, + 0,0,0,124,0,106,0,100,1,117,0,114,13,124,0,106, + 1,160,2,100,2,161,1,100,3,25,0,83,0,124,0,106, + 1,83,0,41,4,122,32,84,104,101,32,110,97,109,101,32, + 111,102,32,116,104,101,32,109,111,100,117,108,101,39,115,32, + 112,97,114,101,110,116,46,78,218,1,46,114,26,0,0,0, + 41,3,114,129,0,0,0,114,20,0,0,0,218,10,114,112, + 97,114,116,105,116,105,111,110,114,53,0,0,0,32,114,5, + 0,0,0,218,6,112,97,114,101,110,116,148,1,0,0,115, + 6,0,0,0,10,3,16,1,6,2,114,17,0,0,0,122, + 17,77,111,100,117,108,101,83,112,101,99,46,112,97,114,101, + 110,116,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0, + 83,0,114,0,0,0,0,41,1,114,130,0,0,0,114,53, + 0,0,0,32,114,5,0,0,0,114,136,0,0,0,156,1, + 0,0,115,2,0,0,0,6,2,114,17,0,0,0,122,23, + 77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,108, + 111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,67,0,0,0,115,14,0,0, + 0,116,0,124,1,131,1,124,0,95,1,100,0,83,0,114, + 0,0,0,0,41,2,218,4,98,111,111,108,114,130,0,0, + 0,41,2,114,34,0,0,0,218,5,118,97,108,117,101,32, + 32,114,5,0,0,0,114,136,0,0,0,160,1,0,0,115, + 2,0,0,0,14,2,114,17,0,0,0,41,12,114,8,0, + 0,0,114,7,0,0,0,114,1,0,0,0,114,9,0,0, + 0,114,35,0,0,0,114,54,0,0,0,114,138,0,0,0, + 218,8,112,114,111,112,101,114,116,121,114,135,0,0,0,218, + 6,115,101,116,116,101,114,114,143,0,0,0,114,136,0,0, + 0,114,23,0,0,0,114,5,0,0,0,114,125,0,0,0, + 64,1,0,0,115,34,0,0,0,8,0,4,1,4,36,2, + 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, + 3,10,1,2,7,10,1,4,3,14,1,114,17,0,0,0, + 114,125,0,0,0,169,2,114,126,0,0,0,114,128,0,0, + 0,99,2,0,0,0,0,0,0,0,2,0,0,0,8,0, + 0,0,67,0,0,0,115,152,0,0,0,116,0,124,1,100, + 1,131,2,114,37,116,1,100,2,117,0,114,11,116,2,130, + 1,116,1,106,3,125,4,124,3,100,2,117,0,114,24,124, + 4,124,0,124,1,100,3,141,2,83,0,124,3,114,28,103, + 0,110,1,100,2,125,5,124,4,124,0,124,1,124,5,100, + 4,141,3,83,0,124,3,100,2,117,0,114,67,116,0,124, + 1,100,5,131,2,114,65,9,0,124,1,160,4,124,0,161, + 1,125,3,110,14,35,0,4,0,116,5,121,75,1,0,1, + 0,1,0,100,2,125,3,89,0,110,3,37,0,100,6,125, + 3,116,6,124,0,124,1,124,2,124,3,100,7,141,4,83, + 0,119,0,41,8,122,53,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,118,97,114,105,111,117,115,32,108,111,97, + 100,101,114,32,109,101,116,104,111,100,115,46,90,12,103,101, + 116,95,102,105,108,101,110,97,109,101,78,41,1,114,122,0, + 0,0,41,2,114,122,0,0,0,114,129,0,0,0,114,128, + 0,0,0,70,114,148,0,0,0,41,7,114,10,0,0,0, + 114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0,0,114,125,0, + 0,0,41,6,114,20,0,0,0,114,122,0,0,0,114,126, + 0,0,0,114,128,0,0,0,114,149,0,0,0,90,6,115, + 101,97,114,99,104,32,32,32,32,32,32,114,5,0,0,0, + 114,104,0,0,0,165,1,0,0,115,42,0,0,0,10,2, + 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, + 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, + 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, + 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, + 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, + 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, + 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, + 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, + 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, + 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, + 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, + 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, + 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, + 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, + 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, + 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, + 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, + 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, + 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, + 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, + 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, + 169,1,114,126,0,0,0,70,84,41,13,114,113,0,0,0, + 114,2,0,0,0,114,8,0,0,0,114,112,0,0,0,114, + 121,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, + 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, + 8,95,95,112,97,116,104,95,95,114,125,0,0,0,114,130, + 0,0,0,114,135,0,0,0,114,129,0,0,0,41,8,114, + 110,0,0,0,114,122,0,0,0,114,126,0,0,0,114,109, + 0,0,0,114,20,0,0,0,90,8,108,111,99,97,116,105, + 111,110,114,135,0,0,0,114,129,0,0,0,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,17,95,115,112,101,99, + 95,102,114,111,109,95,109,111,100,117,108,101,191,1,0,0, + 115,108,0,0,0,2,2,8,1,2,128,12,1,4,1,2, + 128,8,2,4,1,6,2,8,1,2,1,8,1,2,128,12, + 1,4,2,2,128,2,1,8,1,2,128,12,1,8,1,2, + 128,8,1,8,1,2,1,8,1,2,128,12,1,8,1,2, + 128,4,2,2,1,8,1,2,128,12,1,8,1,2,128,2, + 1,12,1,2,128,12,1,8,1,2,128,14,2,18,1,6, + 1,6,1,4,1,2,249,2,252,2,250,2,250,2,251,2, + 246,115,93,0,0,0,129,3,5,0,133,7,14,7,157,3, + 33,0,161,7,42,7,172,3,48,0,176,9,59,7,193,5, + 3,65,9,0,193,9,9,65,20,7,193,24,3,65,28,0, + 193,28,9,65,39,7,193,41,5,65,47,0,193,47,9,65, + 58,7,194,19,1,65,58,7,194,20,1,65,39,7,194,21, + 1,65,20,7,194,22,1,59,7,194,23,1,42,7,194,24, + 1,14,7,114,155,0,0,0,70,169,1,218,8,111,118,101, + 114,114,105,100,101,99,2,0,0,0,0,0,0,0,1,0, + 0,0,8,0,0,0,67,0,0,0,115,204,1,0,0,124, + 2,115,10,116,0,124,1,100,1,100,0,131,3,100,0,117, + 0,114,26,9,0,124,0,106,1,124,1,95,2,110,10,35, + 0,4,0,116,3,121,229,1,0,1,0,1,0,89,0,110, + 1,37,0,124,2,115,36,116,0,124,1,100,2,100,0,131, + 3,100,0,117,0,114,87,124,0,106,4,125,3,124,3,100, + 0,117,0,114,72,124,0,106,5,100,0,117,1,114,72,116, + 6,100,0,117,0,114,54,116,7,130,1,116,6,106,8,125, + 4,124,4,160,9,124,4,161,1,125,3,124,0,106,5,124, + 3,95,10,124,3,124,0,95,4,100,0,124,1,95,11,9, + 0,124,3,124,1,95,12,110,10,35,0,4,0,116,3,121, + 228,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, + 97,116,0,124,1,100,3,100,0,131,3,100,0,117,0,114, + 113,9,0,124,0,106,13,124,1,95,14,110,10,35,0,4, + 0,116,3,121,227,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,124,1,95,15,110,10,35,0,4,0,116, + 3,121,226,1,0,1,0,1,0,89,0,110,1,37,0,124, + 2,115,138,116,0,124,1,100,4,100,0,131,3,100,0,117, + 0,114,159,124,0,106,5,100,0,117,1,114,159,9,0,124, + 0,106,5,124,1,95,16,110,10,35,0,4,0,116,3,121, + 225,1,0,1,0,1,0,89,0,110,1,37,0,124,0,106, + 17,114,221,124,2,115,172,116,0,124,1,100,5,100,0,131, + 3,100,0,117,0,114,188,9,0,124,0,106,18,124,1,95, + 11,110,10,35,0,4,0,116,3,121,224,1,0,1,0,1, + 0,89,0,110,1,37,0,124,2,115,198,116,0,124,1,100, + 6,100,0,131,3,100,0,117,0,114,221,124,0,106,19,100, + 0,117,1,114,221,9,0,124,0,106,19,124,1,95,20,124, + 1,83,0,35,0,4,0,116,3,121,223,1,0,1,0,1, + 0,89,0,124,1,83,0,37,0,124,1,83,0,119,0,119, + 0,119,0,119,0,119,0,119,0,119,0,41,7,78,114,8, + 0,0,0,114,112,0,0,0,218,11,95,95,112,97,99,107, + 97,103,101,95,95,114,154,0,0,0,114,121,0,0,0,114, + 152,0,0,0,41,21,114,12,0,0,0,114,20,0,0,0, + 114,8,0,0,0,114,2,0,0,0,114,122,0,0,0,114, + 129,0,0,0,114,139,0,0,0,114,140,0,0,0,218,16, + 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, + 218,7,95,95,110,101,119,95,95,90,5,95,112,97,116,104, + 114,121,0,0,0,114,112,0,0,0,114,143,0,0,0,114, + 158,0,0,0,114,113,0,0,0,114,154,0,0,0,114,136, + 0,0,0,114,126,0,0,0,114,135,0,0,0,114,152,0, + 0,0,41,5,114,109,0,0,0,114,110,0,0,0,114,157, + 0,0,0,114,122,0,0,0,114,159,0,0,0,32,32,32, + 32,32,114,5,0,0,0,218,18,95,105,110,105,116,95,109, + 111,100,117,108,101,95,97,116,116,114,115,236,1,0,0,115, + 142,0,0,0,20,4,2,1,10,1,2,128,12,1,4,1, + 2,128,20,2,6,1,8,1,10,2,8,1,4,1,6,1, + 10,2,8,1,6,1,6,11,2,1,8,1,2,128,12,1, + 4,1,2,128,20,2,2,1,10,1,2,128,12,1,4,1, + 2,128,2,2,8,1,2,128,12,1,4,1,2,128,20,2, + 10,1,2,1,10,1,2,128,12,1,4,1,2,128,6,2, + 20,1,2,1,10,1,2,128,12,1,4,1,2,128,20,2, + 10,1,2,1,8,1,4,3,2,128,12,254,2,1,4,1, + 2,128,4,0,2,254,2,249,2,249,2,249,2,251,2,250, + 2,228,115,121,0,0,0,139,4,16,0,144,7,25,7,193, + 9,3,65,13,0,193,13,7,65,22,7,193,34,4,65,39, + 0,193,39,7,65,48,7,193,50,3,65,54,0,193,54,7, + 65,63,7,194,16,4,66,21,0,194,21,7,66,30,7,194, + 45,4,66,50,0,194,50,7,66,59,7,195,12,4,67,18, + 0,195,18,7,67,28,7,195,31,1,67,28,7,195,32,1, + 66,59,7,195,33,1,66,30,7,195,34,1,65,63,7,195, + 35,1,65,48,7,195,36,1,65,22,7,195,37,1,25,7, + 114,161,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,115,82,0,0,0,100, + 1,125,1,116,0,124,0,106,1,100,2,131,2,114,15,124, + 0,106,1,160,2,124,0,161,1,125,1,110,10,116,0,124, + 0,106,1,100,3,131,2,114,25,116,3,100,4,131,1,130, + 1,124,1,100,1,117,0,114,34,116,4,124,0,106,5,131, + 1,125,1,116,6,124,0,124,1,131,2,1,0,124,1,83, + 0,41,5,122,43,67,114,101,97,116,101,32,97,32,109,111, + 100,117,108,101,32,98,97,115,101,100,32,111,110,32,116,104, + 101,32,112,114,111,118,105,100,101,100,32,115,112,101,99,46, + 78,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101, + 218,11,101,120,101,99,95,109,111,100,117,108,101,122,66,108, + 111,97,100,101,114,115,32,116,104,97,116,32,100,101,102,105, + 110,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,109,117,115,116,32,97,108,115,111,32,100,101,102,105,110, + 101,32,99,114,101,97,116,101,95,109,111,100,117,108,101,40, + 41,41,7,114,10,0,0,0,114,122,0,0,0,114,162,0, + 0,0,114,88,0,0,0,114,21,0,0,0,114,20,0,0, + 0,114,161,0,0,0,169,2,114,109,0,0,0,114,110,0, + 0,0,32,32,114,5,0,0,0,218,16,109,111,100,117,108, + 101,95,102,114,111,109,95,115,112,101,99,52,2,0,0,115, + 18,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, + 10,1,10,1,4,1,114,17,0,0,0,114,165,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,100,0,0,0,124,0,106,0,100,1, + 117,0,114,7,100,2,110,2,124,0,106,0,125,1,124,0, + 106,1,100,1,117,0,114,32,124,0,106,2,100,1,117,0, + 114,25,100,3,160,3,124,1,161,1,83,0,100,4,160,3, + 124,1,124,0,106,2,161,2,83,0,124,0,106,4,114,42, + 100,5,160,3,124,1,124,0,106,1,161,2,83,0,100,6, + 160,3,124,0,106,0,124,0,106,1,161,2,83,0,41,7, + 122,38,82,101,116,117,114,110,32,116,104,101,32,114,101,112, + 114,32,116,111,32,117,115,101,32,102,111,114,32,116,104,101, + 32,109,111,100,117,108,101,46,78,114,115,0,0,0,114,116, + 0,0,0,114,117,0,0,0,114,118,0,0,0,250,18,60, + 109,111,100,117,108,101,32,123,33,114,125,32,40,123,125,41, + 62,41,5,114,20,0,0,0,114,126,0,0,0,114,122,0, + 0,0,114,51,0,0,0,114,136,0,0,0,41,2,114,109, + 0,0,0,114,20,0,0,0,32,32,114,5,0,0,0,114, + 119,0,0,0,69,2,0,0,115,16,0,0,0,20,3,10, + 1,10,1,10,1,14,2,6,2,14,1,16,2,114,17,0, + 0,0,114,119,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,10,0,0,0,67,0,0,0,115,32,1,0, + 0,124,0,106,0,125,2,116,1,124,2,131,1,53,0,1, + 0,116,2,106,3,160,4,124,2,161,1,124,1,117,1,114, + 27,100,1,160,5,124,2,161,1,125,3,116,6,124,3,124, + 2,100,2,141,2,130,1,9,0,124,0,106,7,100,3,117, + 0,114,53,124,0,106,8,100,3,117,0,114,45,116,6,100, + 4,124,0,106,0,100,2,141,2,130,1,116,9,124,0,124, + 1,100,5,100,6,141,3,1,0,110,40,116,9,124,0,124, + 1,100,5,100,6,141,3,1,0,116,10,124,0,106,7,100, + 7,131,2,115,87,116,11,124,0,106,7,131,1,155,0,100, + 8,157,2,125,3,116,12,160,13,124,3,116,14,161,2,1, + 0,124,0,106,7,160,15,124,2,161,1,1,0,110,6,124, + 0,106,7,160,16,124,1,161,1,1,0,116,2,106,3,160, + 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, + 0,106,0,60,0,110,16,35,0,116,2,106,3,160,17,124, + 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, + 0,60,0,119,0,37,0,9,0,100,3,4,0,4,0,131, + 3,1,0,124,1,83,0,35,0,49,0,115,136,119,4,37, + 0,1,0,1,0,1,0,89,0,1,0,1,0,124,1,83, + 0,41,9,122,70,69,120,101,99,117,116,101,32,116,104,101, + 32,115,112,101,99,39,115,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,117,108,101,32,105,110,32,97,110,32,101, + 120,105,115,116,105,110,103,32,109,111,100,117,108,101,39,115, + 32,110,97,109,101,115,112,97,99,101,46,122,30,109,111,100, + 117,108,101,32,123,33,114,125,32,110,111,116,32,105,110,32, + 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, + 78,250,14,109,105,115,115,105,110,103,32,108,111,97,100,101, + 114,84,114,156,0,0,0,114,163,0,0,0,250,55,46,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,110,111,116, + 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, + 98,97,99,107,32,116,111,32,108,111,97,100,95,109,111,100, + 117,108,101,40,41,41,18,114,20,0,0,0,114,58,0,0, + 0,114,18,0,0,0,114,105,0,0,0,114,39,0,0,0, + 114,51,0,0,0,114,88,0,0,0,114,122,0,0,0,114, + 129,0,0,0,114,161,0,0,0,114,10,0,0,0,114,6, + 0,0,0,114,101,0,0,0,114,102,0,0,0,218,13,73, + 109,112,111,114,116,87,97,114,110,105,110,103,218,11,108,111, + 97,100,95,109,111,100,117,108,101,114,163,0,0,0,218,3, + 112,111,112,41,4,114,109,0,0,0,114,110,0,0,0,114, + 20,0,0,0,114,108,0,0,0,32,32,32,32,114,5,0, + 0,0,114,106,0,0,0,86,2,0,0,115,50,0,0,0, + 6,2,10,1,16,1,10,1,12,1,2,1,10,1,10,1, + 14,1,16,2,14,2,12,1,16,1,12,2,14,1,12,2, + 14,4,14,1,2,128,14,255,18,1,10,233,4,24,22,128, + 4,0,115,41,0,0,0,135,20,66,3,3,156,65,1,65, + 43,2,193,29,14,66,3,3,193,43,15,65,58,9,193,58, + 1,66,3,3,194,3,4,66,7,11,194,8,3,66,7,11, + 114,106,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,22,1,0,0,9, + 0,124,0,106,0,160,1,124,0,106,2,161,1,1,0,110, + 25,35,0,1,0,1,0,1,0,124,0,106,2,116,3,106, + 4,118,0,114,32,116,3,106,4,160,5,124,0,106,2,161, + 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, + 0,37,0,116,3,106,4,160,5,124,0,106,2,161,1,125, + 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, + 1,100,1,100,0,131,3,100,0,117,0,114,71,9,0,124, + 0,106,0,124,1,95,7,110,10,35,0,4,0,116,8,121, + 138,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, + 1,100,2,100,0,131,3,100,0,117,0,114,109,9,0,124, + 1,106,9,124,1,95,10,116,11,124,1,100,3,131,2,115, + 98,124,0,106,2,160,12,100,4,161,1,100,5,25,0,124, + 1,95,10,110,10,35,0,4,0,116,8,121,137,1,0,1, + 0,1,0,89,0,110,1,37,0,116,6,124,1,100,6,100, + 0,131,3,100,0,117,0,114,134,9,0,124,0,124,1,95, + 13,124,1,83,0,35,0,4,0,116,8,121,136,1,0,1, + 0,1,0,89,0,124,1,83,0,37,0,124,1,83,0,119, + 0,119,0,119,0,41,7,78,114,112,0,0,0,114,158,0, + 0,0,114,154,0,0,0,114,141,0,0,0,114,26,0,0, + 0,114,113,0,0,0,41,14,114,122,0,0,0,114,170,0, + 0,0,114,20,0,0,0,114,18,0,0,0,114,105,0,0, + 0,114,171,0,0,0,114,12,0,0,0,114,112,0,0,0, + 114,2,0,0,0,114,8,0,0,0,114,158,0,0,0,114, + 10,0,0,0,114,142,0,0,0,114,113,0,0,0,114,164, + 0,0,0,32,32,114,5,0,0,0,218,25,95,108,111,97, + 100,95,98,97,99,107,119,97,114,100,95,99,111,109,112,97, + 116,105,98,108,101,116,2,0,0,115,80,0,0,0,2,3, + 16,1,2,128,6,1,12,1,14,1,12,1,2,1,2,128, + 14,3,12,1,16,1,2,1,10,1,2,128,12,1,4,1, + 2,128,16,1,2,1,8,4,10,1,18,1,4,128,12,1, + 4,1,2,128,16,1,2,1,6,1,4,3,2,128,12,254, + 2,1,4,1,2,128,4,0,2,254,2,251,2,246,115,59, + 0,0,0,129,7,9,0,137,24,33,7,184,4,61,0,189, + 7,65,6,7,193,16,18,65,35,0,193,35,7,65,44,7, + 193,54,3,65,59,0,193,59,7,66,5,7,194,8,1,66, + 5,7,194,9,1,65,44,7,194,10,1,65,6,7,114,172, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 11,0,0,0,67,0,0,0,115,248,0,0,0,124,0,106, + 0,100,0,117,1,114,29,116,1,124,0,106,0,100,1,131, + 2,115,29,116,2,124,0,106,0,131,1,155,0,100,2,157, + 2,125,1,116,3,160,4,124,1,116,5,161,2,1,0,116, + 6,124,0,131,1,83,0,116,7,124,0,131,1,125,2,100, + 3,124,0,95,8,9,0,124,2,116,9,106,10,124,0,106, + 11,60,0,9,0,124,0,106,0,100,0,117,0,114,62,124, + 0,106,12,100,0,117,0,114,61,116,13,100,4,124,0,106, + 11,100,5,141,2,130,1,110,6,124,0,106,0,160,14,124, + 2,161,1,1,0,110,22,35,0,1,0,1,0,1,0,9, + 0,116,9,106,10,124,0,106,11,61,0,130,0,35,0,4, + 0,116,15,121,123,1,0,1,0,1,0,89,0,130,0,37, + 0,37,0,116,9,106,10,160,16,124,0,106,11,161,1,125, + 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, + 6,124,0,106,11,124,0,106,0,131,3,1,0,100,7,124, + 0,95,8,124,2,83,0,35,0,100,7,124,0,95,8,119, + 0,37,0,119,0,41,8,78,114,163,0,0,0,114,168,0, + 0,0,84,114,167,0,0,0,114,19,0,0,0,122,18,105, + 109,112,111,114,116,32,123,33,114,125,32,35,32,123,33,114, + 125,70,41,18,114,122,0,0,0,114,10,0,0,0,114,6, + 0,0,0,114,101,0,0,0,114,102,0,0,0,114,169,0, + 0,0,114,172,0,0,0,114,165,0,0,0,90,13,95,105, + 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, + 114,105,0,0,0,114,20,0,0,0,114,129,0,0,0,114, + 88,0,0,0,114,163,0,0,0,114,71,0,0,0,114,171, + 0,0,0,114,84,0,0,0,41,3,114,109,0,0,0,114, + 108,0,0,0,114,110,0,0,0,32,32,32,114,5,0,0, + 0,218,14,95,108,111,97,100,95,117,110,108,111,99,107,101, + 100,152,2,0,0,115,66,0,0,0,10,2,12,2,16,1, + 12,2,8,1,8,2,6,5,2,1,12,1,2,1,10,1, + 10,1,14,1,2,255,12,4,4,128,6,1,2,1,10,1, + 2,3,2,128,12,254,2,1,2,1,4,128,14,5,12,1, + 16,1,6,2,4,2,2,128,10,254,2,245,115,64,0,0, + 0,165,6,65,53,0,172,24,65,5,0,193,4,1,65,53, + 0,193,5,4,65,26,7,193,10,5,65,16,6,193,15,1, + 65,26,7,193,16,7,65,25,13,193,23,3,65,26,7,193, + 26,22,65,53,0,193,53,5,65,58,7,193,59,1,65,25, + 13,114,173,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,67,0,0,0,115,58,0,0,0, + 116,0,124,0,106,1,131,1,53,0,1,0,116,2,124,0, + 131,1,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 35,0,49,0,115,21,119,4,37,0,1,0,1,0,1,0, + 89,0,1,0,1,0,100,1,83,0,41,2,122,191,82,101, + 116,117,114,110,32,97,32,110,101,119,32,109,111,100,117,108, + 101,32,111,98,106,101,99,116,44,32,108,111,97,100,101,100, + 32,98,121,32,116,104,101,32,115,112,101,99,39,115,32,108, + 111,97,100,101,114,46,10,10,32,32,32,32,84,104,101,32, + 109,111,100,117,108,101,32,105,115,32,110,111,116,32,97,100, + 100,101,100,32,116,111,32,105,116,115,32,112,97,114,101,110, + 116,46,10,10,32,32,32,32,73,102,32,97,32,109,111,100, + 117,108,101,32,105,115,32,97,108,114,101,97,100,121,32,105, + 110,32,115,121,115,46,109,111,100,117,108,101,115,44,32,116, + 104,97,116,32,101,120,105,115,116,105,110,103,32,109,111,100, + 117,108,101,32,103,101,116,115,10,32,32,32,32,99,108,111, + 98,98,101,114,101,100,46,10,10,32,32,32,32,78,41,3, + 114,58,0,0,0,114,20,0,0,0,114,173,0,0,0,169, + 1,114,109,0,0,0,32,114,5,0,0,0,114,107,0,0, + 0,197,2,0,0,115,10,0,0,0,12,9,6,1,14,255, + 22,128,4,0,115,12,0,0,0,133,4,16,3,144,4,20, + 11,149,3,20,11,114,107,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, + 140,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, + 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, + 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, + 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, + 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, + 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, + 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, + 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, + 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, + 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,99, + 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 67,0,0,0,115,34,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,100,2,124,0,106,3,155,2,100,3,116, + 4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,40, + 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, + 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, + 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, + 32,51,46,49,50,122,8,60,109,111,100,117,108,101,32,122, + 2,32,40,122,2,41,62,78,41,6,114,101,0,0,0,114, + 102,0,0,0,114,103,0,0,0,114,8,0,0,0,114,175, + 0,0,0,114,151,0,0,0,169,1,114,110,0,0,0,32, + 114,5,0,0,0,114,114,0,0,0,223,2,0,0,115,8, + 0,0,0,6,7,2,1,4,255,22,2,114,17,0,0,0, + 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, + 0,0,0,115,42,0,0,0,124,2,100,0,117,1,114,6, + 100,0,83,0,116,0,160,1,124,1,161,1,114,19,116,2, + 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, + 83,0,169,2,78,114,150,0,0,0,41,4,114,65,0,0, + 0,90,10,105,115,95,98,117,105,108,116,105,110,114,104,0, + 0,0,114,151,0,0,0,169,4,218,3,99,108,115,114,90, + 0,0,0,218,4,112,97,116,104,218,6,116,97,114,103,101, + 116,32,32,32,32,114,5,0,0,0,218,9,102,105,110,100, + 95,115,112,101,99,234,2,0,0,115,10,0,0,0,8,2, + 4,1,10,1,16,1,4,2,114,17,0,0,0,122,25,66, + 117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,116,3, - 160,4,124,1,161,1,114,13,124,0,83,0,100,2,83,0, - 41,3,122,93,70,105,110,100,32,97,32,102,114,111,122,101, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,42,0, + 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, + 160,3,124,1,124,2,161,2,125,3,124,3,100,2,117,1, + 114,19,124,3,106,4,83,0,100,2,83,0,41,3,122,175, + 70,105,110,100,32,116,104,101,32,98,117,105,108,116,45,105, 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,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,122,105,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,40,41,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, - 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, - 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, - 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,78,41,5,114, - 101,0,0,0,114,102,0,0,0,114,103,0,0,0,114,65, - 0,0,0,114,98,0,0,0,41,3,114,180,0,0,0,114, - 90,0,0,0,114,181,0,0,0,32,32,32,114,5,0,0, - 0,114,184,0,0,0,65,3,0,0,115,8,0,0,0,6, - 7,2,2,4,254,18,3,114,17,0,0,0,122,26,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, + 32,32,32,73,102,32,39,112,97,116,104,39,32,105,115,32, + 101,118,101,114,32,115,112,101,99,105,102,105,101,100,32,116, + 104,101,110,32,116,104,101,32,115,101,97,114,99,104,32,105, + 115,32,99,111,110,115,105,100,101,114,101,100,32,97,32,102, + 97,105,108,117,114,101,46,10,10,32,32,32,32,32,32,32, + 32,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,122, + 106,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,183,0, + 0,0,114,122,0,0,0,41,4,114,180,0,0,0,114,90, + 0,0,0,114,181,0,0,0,114,109,0,0,0,32,32,32, + 32,114,5,0,0,0,218,11,102,105,110,100,95,109,111,100, + 117,108,101,243,2,0,0,115,10,0,0,0,6,9,2,2, + 4,254,12,3,18,1,114,17,0,0,0,122,27,66,117,105, + 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,67,0,0,0,114,185,0, - 0,0,41,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,23,0,0,0,114,174,0,0,0,32,114,5,0,0, - 0,114,162,0,0,0,77,3,0,0,115,2,0,0,0,4, - 0,114,17,0,0,0,122,28,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,99,114,101,97,116,101,95,109,111, - 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,64,0,0,0,124,0, - 106,0,106,1,125,1,116,2,160,3,124,1,161,1,115,18, - 116,4,100,1,160,5,124,1,161,1,124,1,100,2,141,2, - 130,1,116,6,116,2,106,7,124,1,131,2,125,2,116,8, - 124,2,124,0,106,9,131,2,1,0,100,0,83,0,114,97, - 0,0,0,41,10,114,113,0,0,0,114,20,0,0,0,114, - 65,0,0,0,114,98,0,0,0,114,88,0,0,0,114,51, - 0,0,0,114,75,0,0,0,218,17,103,101,116,95,102,114, - 111,122,101,110,95,111,98,106,101,99,116,218,4,101,120,101, - 99,114,13,0,0,0,41,3,114,110,0,0,0,114,20,0, - 0,0,218,4,99,111,100,101,32,32,32,114,5,0,0,0, - 114,163,0,0,0,81,3,0,0,115,14,0,0,0,8,2, - 10,1,10,1,2,1,6,255,12,2,16,1,114,17,0,0, - 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0, - 0,0,115,10,0,0,0,116,0,124,0,124,1,131,2,83, - 0,41,2,122,95,76,111,97,100,32,97,32,102,114,111,122, - 101,110,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,78,41,1,114,111,0,0,0,114,186,0,0, - 0,32,32,114,5,0,0,0,114,170,0,0,0,90,3,0, - 0,115,2,0,0,0,10,8,114,17,0,0,0,122,26,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,46,108,111, - 97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,243,10, - 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,122, - 45,82,101,116,117,114,110,32,116,104,101,32,99,111,100,101, - 32,111,98,106,101,99,116,32,102,111,114,32,116,104,101,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,46,78,41, - 2,114,65,0,0,0,114,195,0,0,0,114,186,0,0,0, - 32,32,114,5,0,0,0,114,187,0,0,0,100,3,0,0, - 243,2,0,0,0,10,4,114,17,0,0,0,122,23,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,103,101,116, - 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,46,0, + 0,0,124,0,106,0,116,1,106,2,118,1,114,17,116,3, + 100,1,160,4,124,0,106,0,161,1,124,0,106,0,100,2, + 141,2,130,1,116,5,116,6,106,7,124,0,131,2,83,0, + 41,4,122,24,67,114,101,97,116,101,32,97,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,114,86,0,0, + 0,114,19,0,0,0,78,41,8,114,20,0,0,0,114,18, + 0,0,0,114,87,0,0,0,114,88,0,0,0,114,51,0, + 0,0,114,75,0,0,0,114,65,0,0,0,90,14,99,114, + 101,97,116,101,95,98,117,105,108,116,105,110,114,174,0,0, + 0,32,114,5,0,0,0,114,162,0,0,0,2,3,0,0, + 115,10,0,0,0,12,3,12,1,4,1,6,255,12,2,114, + 17,0,0,0,122,29,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,99,114,101,97,116,101,95,109,111,100, + 117,108,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,116, + 1,106,2,124,0,131,2,1,0,100,1,83,0,41,2,122, + 22,69,120,101,99,32,97,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,78,41,3,114,75,0,0,0,114, + 65,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, + 105,110,114,177,0,0,0,32,114,5,0,0,0,114,163,0, + 0,0,10,3,0,0,115,2,0,0,0,16,3,114,17,0, + 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, + 116,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,1,0,0,0, + 67,0,0,0,243,4,0,0,0,100,1,83,0,41,2,122, + 57,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,100,111,32,110,111,116,32,104,97,118,101,32,99,111,100, + 101,32,111,98,106,101,99,116,115,46,78,114,23,0,0,0, + 169,2,114,180,0,0,0,114,90,0,0,0,32,32,114,5, + 0,0,0,218,8,103,101,116,95,99,111,100,101,15,3,0, + 0,243,2,0,0,0,4,4,114,17,0,0,0,122,24,66, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, + 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,67,0,0,0,114,185,0,0, + 0,41,2,122,56,82,101,116,117,114,110,32,78,111,110,101, + 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, + 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, + 0,0,0,114,186,0,0,0,32,32,114,5,0,0,0,218, + 10,103,101,116,95,115,111,117,114,99,101,21,3,0,0,114, + 188,0,0,0,114,17,0,0,0,122,26,66,117,105,108,116, + 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, + 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, - 2,122,54,82,101,116,117,114,110,32,78,111,110,101,32,97, - 115,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,117, - 114,99,101,32,99,111,100,101,46,78,114,23,0,0,0,114, - 186,0,0,0,32,32,114,5,0,0,0,114,189,0,0,0, - 106,3,0,0,114,188,0,0,0,114,17,0,0,0,122,25, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,114,198, - 0,0,0,41,2,122,46,82,101,116,117,114,110,32,84,114, - 117,101,32,105,102,32,116,104,101,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,32,105,115,32,97,32,112,97,99, - 107,97,103,101,46,78,41,2,114,65,0,0,0,90,17,105, - 115,95,102,114,111,122,101,110,95,112,97,99,107,97,103,101, - 114,186,0,0,0,32,32,114,5,0,0,0,114,128,0,0, - 0,112,3,0,0,114,199,0,0,0,114,17,0,0,0,122, - 25,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46, - 105,115,95,112,97,99,107,97,103,101,114,190,0,0,0,114, - 0,0,0,0,41,17,114,8,0,0,0,114,7,0,0,0, - 114,1,0,0,0,114,9,0,0,0,114,151,0,0,0,114, - 191,0,0,0,114,114,0,0,0,114,192,0,0,0,114,183, - 0,0,0,114,184,0,0,0,114,162,0,0,0,114,163,0, - 0,0,114,170,0,0,0,114,100,0,0,0,114,187,0,0, - 0,114,189,0,0,0,114,128,0,0,0,114,23,0,0,0, - 114,5,0,0,0,114,193,0,0,0,36,3,0,0,115,48, - 0,0,0,8,0,4,2,4,7,2,2,10,1,2,10,12, - 1,2,6,12,1,2,11,10,1,2,3,10,1,2,8,10, - 1,2,9,2,1,12,1,2,4,2,1,12,1,2,4,2, - 1,16,1,114,17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111, - 114,116,76,111,99,107,67,111,110,116,101,120,116,122,36,67, - 111,110,116,101,120,116,32,109,97,110,97,103,101,114,32,102, - 111,114,32,116,104,101,32,105,109,112,111,114,116,32,108,111, - 99,107,46,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,67,0,0,0,243,12,0,0,0,116,0,160, - 1,161,0,1,0,100,1,83,0,41,2,122,24,65,99,113, - 117,105,114,101,32,116,104,101,32,105,109,112,111,114,116,32, - 108,111,99,107,46,78,41,2,114,65,0,0,0,114,66,0, - 0,0,114,53,0,0,0,32,114,5,0,0,0,114,62,0, - 0,0,125,3,0,0,243,2,0,0,0,12,2,114,17,0, - 0,0,122,28,95,73,109,112,111,114,116,76,111,99,107,67, - 111,110,116,101,120,116,46,95,95,101,110,116,101,114,95,95, - 99,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,67,0,0,0,114,201,0,0,0,41,2,122,60,82,101, - 108,101,97,115,101,32,116,104,101,32,105,109,112,111,114,116, - 32,108,111,99,107,32,114,101,103,97,114,100,108,101,115,115, - 32,111,102,32,97,110,121,32,114,97,105,115,101,100,32,101, - 120,99,101,112,116,105,111,110,115,46,78,41,2,114,65,0, - 0,0,114,68,0,0,0,41,4,114,34,0,0,0,218,8, - 101,120,99,95,116,121,112,101,218,9,101,120,99,95,118,97, - 108,117,101,218,13,101,120,99,95,116,114,97,99,101,98,97, - 99,107,32,32,32,32,114,5,0,0,0,114,64,0,0,0, - 129,3,0,0,114,202,0,0,0,114,17,0,0,0,122,27, + 3,122,52,82,101,116,117,114,110,32,70,97,108,115,101,32, + 97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, + 99,107,97,103,101,115,46,70,78,114,23,0,0,0,114,186, + 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,27, + 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, + 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, + 0,0,41,18,114,8,0,0,0,114,7,0,0,0,114,1, + 0,0,0,114,9,0,0,0,114,151,0,0,0,218,12,115, + 116,97,116,105,99,109,101,116,104,111,100,114,114,0,0,0, + 218,11,99,108,97,115,115,109,101,116,104,111,100,114,183,0, + 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, + 0,114,95,0,0,0,114,187,0,0,0,114,189,0,0,0, + 114,128,0,0,0,114,111,0,0,0,114,170,0,0,0,114, + 23,0,0,0,114,5,0,0,0,114,175,0,0,0,212,2, + 0,0,115,46,0,0,0,8,0,4,2,4,7,2,2,10, + 1,2,10,12,1,2,8,12,1,2,14,10,1,2,7,10, + 1,2,4,2,1,12,1,2,4,2,1,12,1,2,4,2, + 1,12,1,12,4,114,17,0,0,0,114,175,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 64,0,0,0,115,144,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,90,4,101,5,100,3,100,4,132, + 0,131,1,90,6,101,7,100,22,100,6,100,7,132,1,131, + 1,90,8,101,7,100,23,100,8,100,9,132,1,131,1,90, + 9,101,5,100,10,100,11,132,0,131,1,90,10,101,5,100, + 12,100,13,132,0,131,1,90,11,101,7,100,14,100,15,132, + 0,131,1,90,12,101,7,101,13,100,16,100,17,132,0,131, + 1,131,1,90,14,101,7,101,13,100,18,100,19,132,0,131, + 1,131,1,90,15,101,7,101,13,100,20,100,21,132,0,131, + 1,131,1,90,16,100,5,83,0,41,24,218,14,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116, + 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, + 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, + 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, + 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, + 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, + 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, + 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, + 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, + 108,97,115,115,46,10,10,32,32,32,32,90,6,102,114,111, + 122,101,110,99,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,28,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, + 4,116,5,106,6,161,2,83,0,41,4,114,176,0,0,0, + 122,80,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 46,109,111,100,117,108,101,95,114,101,112,114,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,114,166,0,0,0,78,41,7,114,101,0,0,0,114, + 102,0,0,0,114,103,0,0,0,114,51,0,0,0,114,8, + 0,0,0,114,193,0,0,0,114,151,0,0,0,41,1,218, + 1,109,32,114,5,0,0,0,114,114,0,0,0,47,3,0, + 0,115,8,0,0,0,6,7,2,1,4,255,16,2,114,17, + 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,78, + 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,67,0,0,0,115,30,0,0,0,116,0,160,1,124,1, + 161,1,114,13,116,2,124,1,124,0,124,0,106,3,100,1, + 141,3,83,0,100,0,83,0,114,178,0,0,0,41,4,114, + 65,0,0,0,114,98,0,0,0,114,104,0,0,0,114,151, + 0,0,0,114,179,0,0,0,32,32,32,32,114,5,0,0, + 0,114,183,0,0,0,58,3,0,0,115,6,0,0,0,10, + 2,16,1,4,2,114,17,0,0,0,122,24,70,114,111,122, + 101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0, + 160,1,100,1,116,2,161,2,1,0,116,3,160,4,124,1, + 161,1,114,13,124,0,83,0,100,2,83,0,41,3,122,93, + 70,105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,41,5,114,101,0,0,0, + 114,102,0,0,0,114,103,0,0,0,114,65,0,0,0,114, + 98,0,0,0,41,3,114,180,0,0,0,114,90,0,0,0, + 114,181,0,0,0,32,32,32,114,5,0,0,0,114,184,0, + 0,0,65,3,0,0,115,8,0,0,0,6,7,2,2,4, + 254,18,3,114,17,0,0,0,122,26,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, + 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,67,0,0,0,114,185,0,0,0,41,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,23,0, + 0,0,114,174,0,0,0,32,114,5,0,0,0,114,162,0, + 0,0,77,3,0,0,115,2,0,0,0,4,0,114,17,0, + 0,0,122,28,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,99,114,101,97,116,101,95,109,111,100,117,108,101, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, + 125,1,116,2,160,3,124,1,161,1,115,18,116,4,100,1, + 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, + 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, + 106,9,131,2,1,0,100,0,83,0,114,97,0,0,0,41, + 10,114,113,0,0,0,114,20,0,0,0,114,65,0,0,0, + 114,98,0,0,0,114,88,0,0,0,114,51,0,0,0,114, + 75,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, + 95,111,98,106,101,99,116,218,4,101,120,101,99,114,13,0, + 0,0,41,3,114,110,0,0,0,114,20,0,0,0,218,4, + 99,111,100,101,32,32,32,114,5,0,0,0,114,163,0,0, + 0,81,3,0,0,115,14,0,0,0,8,2,10,1,10,1, + 2,1,6,255,12,2,16,1,114,17,0,0,0,122,26,70, + 114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10, + 0,0,0,116,0,124,0,124,1,131,2,83,0,41,2,122, + 95,76,111,97,100,32,97,32,102,114,111,122,101,110,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, + 78,41,1,114,111,0,0,0,114,186,0,0,0,32,32,114, + 5,0,0,0,114,170,0,0,0,90,3,0,0,115,2,0, + 0,0,10,8,114,17,0,0,0,122,26,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,108,111,97,100,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,243,10,0,0,0,116, + 0,160,1,124,1,161,1,83,0,41,2,122,45,82,101,116, + 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, + 101,99,116,32,102,111,114,32,116,104,101,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,46,78,41,2,114,65,0, + 0,0,114,195,0,0,0,114,186,0,0,0,32,32,114,5, + 0,0,0,114,187,0,0,0,100,3,0,0,243,2,0,0, + 0,10,4,114,17,0,0,0,122,23,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,67,0,0,0,114,185,0,0,0,41,2,122,54,82, + 101,116,117,114,110,32,78,111,110,101,32,97,115,32,102,114, + 111,122,101,110,32,109,111,100,117,108,101,115,32,100,111,32, + 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, + 99,111,100,101,46,78,114,23,0,0,0,114,186,0,0,0, + 32,32,114,5,0,0,0,114,189,0,0,0,106,3,0,0, + 114,188,0,0,0,114,17,0,0,0,122,25,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, + 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,114,198,0,0,0,41, + 2,122,46,82,101,116,117,114,110,32,84,114,117,101,32,105, + 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, + 46,78,41,2,114,65,0,0,0,90,17,105,115,95,102,114, + 111,122,101,110,95,112,97,99,107,97,103,101,114,186,0,0, + 0,32,32,114,5,0,0,0,114,128,0,0,0,112,3,0, + 0,114,199,0,0,0,114,17,0,0,0,122,25,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,105,115,95,112, + 97,99,107,97,103,101,114,190,0,0,0,114,0,0,0,0, + 41,17,114,8,0,0,0,114,7,0,0,0,114,1,0,0, + 0,114,9,0,0,0,114,151,0,0,0,114,191,0,0,0, + 114,114,0,0,0,114,192,0,0,0,114,183,0,0,0,114, + 184,0,0,0,114,162,0,0,0,114,163,0,0,0,114,170, + 0,0,0,114,100,0,0,0,114,187,0,0,0,114,189,0, + 0,0,114,128,0,0,0,114,23,0,0,0,114,5,0,0, + 0,114,193,0,0,0,36,3,0,0,115,48,0,0,0,8, + 0,4,2,4,7,2,2,10,1,2,10,12,1,2,6,12, + 1,2,11,10,1,2,3,10,1,2,8,10,1,2,9,2, + 1,12,1,2,4,2,1,12,1,2,4,2,1,16,1,114, + 17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111,114,116,76,111, + 99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,101, + 120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,116, + 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, + 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, + 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, + 46,78,41,2,114,65,0,0,0,114,66,0,0,0,114,53, + 0,0,0,32,114,5,0,0,0,114,62,0,0,0,125,3, + 0,0,243,2,0,0,0,12,2,114,17,0,0,0,122,28, 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, - 120,116,46,95,95,101,120,105,116,95,95,78,41,6,114,8, - 0,0,0,114,7,0,0,0,114,1,0,0,0,114,9,0, - 0,0,114,62,0,0,0,114,64,0,0,0,114,23,0,0, - 0,114,5,0,0,0,114,200,0,0,0,121,3,0,0,115, - 8,0,0,0,8,0,4,2,8,2,12,4,114,17,0,0, - 0,114,200,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,67,0,0,0,115,64,0,0,0, - 124,1,160,0,100,1,124,2,100,2,24,0,161,2,125,3, - 116,1,124,3,131,1,124,2,107,0,114,18,116,2,100,3, - 131,1,130,1,124,3,100,4,25,0,125,4,124,0,114,30, - 100,5,160,3,124,4,124,0,161,2,83,0,124,4,83,0, - 41,7,122,50,82,101,115,111,108,118,101,32,97,32,114,101, - 108,97,116,105,118,101,32,109,111,100,117,108,101,32,110,97, - 109,101,32,116,111,32,97,110,32,97,98,115,111,108,117,116, - 101,32,111,110,101,46,114,141,0,0,0,114,43,0,0,0, - 122,50,97,116,116,101,109,112,116,101,100,32,114,101,108,97, - 116,105,118,101,32,105,109,112,111,114,116,32,98,101,121,111, - 110,100,32,116,111,112,45,108,101,118,101,108,32,112,97,99, - 107,97,103,101,114,26,0,0,0,250,5,123,125,46,123,125, - 78,41,4,218,6,114,115,112,108,105,116,218,3,108,101,110, - 114,88,0,0,0,114,51,0,0,0,41,5,114,20,0,0, - 0,218,7,112,97,99,107,97,103,101,218,5,108,101,118,101, - 108,90,4,98,105,116,115,90,4,98,97,115,101,32,32,32, - 32,32,114,5,0,0,0,218,13,95,114,101,115,111,108,118, - 101,95,110,97,109,101,134,3,0,0,115,10,0,0,0,16, - 2,12,1,8,1,8,1,20,1,114,17,0,0,0,114,211, - 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,60,0,0,0,116,0,124, - 0,131,1,155,0,100,1,157,2,125,3,116,1,160,2,124, - 3,116,3,161,2,1,0,124,0,160,4,124,1,124,2,161, - 2,125,4,124,4,100,0,117,0,114,25,100,0,83,0,116, - 5,124,1,124,4,131,2,83,0,41,2,78,122,53,46,102, - 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, - 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, - 101,40,41,41,6,114,6,0,0,0,114,101,0,0,0,114, - 102,0,0,0,114,169,0,0,0,114,184,0,0,0,114,104, - 0,0,0,41,5,218,6,102,105,110,100,101,114,114,20,0, - 0,0,114,181,0,0,0,114,108,0,0,0,114,122,0,0, - 0,32,32,32,32,32,114,5,0,0,0,218,17,95,102,105, - 110,100,95,115,112,101,99,95,108,101,103,97,99,121,143,3, - 0,0,115,12,0,0,0,14,1,12,2,12,1,8,1,4, - 1,10,1,114,17,0,0,0,114,213,0,0,0,99,3,0, - 0,0,0,0,0,0,0,0,0,0,10,0,0,0,67,0, - 0,0,115,30,1,0,0,116,0,106,1,125,3,124,3,100, - 1,117,0,114,11,116,2,100,2,131,1,130,1,124,3,115, - 19,116,3,160,4,100,3,116,5,161,2,1,0,124,0,116, - 0,106,6,118,0,125,4,124,3,68,0,93,112,125,5,116, - 7,131,0,53,0,1,0,9,0,124,5,106,8,125,6,110, - 27,35,0,4,0,116,9,121,142,1,0,1,0,1,0,116, - 10,124,5,124,0,124,1,131,3,125,7,124,7,100,1,117, - 0,114,61,89,0,100,1,4,0,4,0,131,3,1,0,113, - 26,89,0,110,7,37,0,124,6,124,0,124,1,124,2,131, - 3,125,7,100,1,4,0,4,0,131,3,1,0,110,11,35, - 0,49,0,115,81,119,4,37,0,1,0,1,0,1,0,89, - 0,1,0,1,0,124,7,100,1,117,1,114,138,124,4,115, - 134,124,0,116,0,106,6,118,0,114,134,116,0,106,6,124, - 0,25,0,125,8,9,0,124,8,106,11,125,9,110,14,35, - 0,4,0,116,9,121,141,1,0,1,0,1,0,124,7,6, - 0,89,0,2,0,1,0,83,0,37,0,124,9,100,1,117, - 0,114,130,124,7,2,0,1,0,83,0,124,9,2,0,1, - 0,83,0,124,7,2,0,1,0,83,0,113,26,100,1,83, - 0,119,0,119,0,41,4,122,21,70,105,110,100,32,97,32, - 109,111,100,117,108,101,39,115,32,115,112,101,99,46,78,122, - 53,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, - 115,32,78,111,110,101,44,32,80,121,116,104,111,110,32,105, - 115,32,108,105,107,101,108,121,32,115,104,117,116,116,105,110, - 103,32,100,111,119,110,122,22,115,121,115,46,109,101,116,97, - 95,112,97,116,104,32,105,115,32,101,109,112,116,121,41,12, - 114,18,0,0,0,218,9,109,101,116,97,95,112,97,116,104, - 114,88,0,0,0,114,101,0,0,0,114,102,0,0,0,114, - 169,0,0,0,114,105,0,0,0,114,200,0,0,0,114,183, - 0,0,0,114,2,0,0,0,114,213,0,0,0,114,113,0, - 0,0,41,10,114,20,0,0,0,114,181,0,0,0,114,182, - 0,0,0,114,214,0,0,0,90,9,105,115,95,114,101,108, - 111,97,100,114,212,0,0,0,114,183,0,0,0,114,109,0, - 0,0,114,110,0,0,0,114,113,0,0,0,32,32,32,32, - 32,32,32,32,32,32,114,5,0,0,0,218,10,95,102,105, - 110,100,95,115,112,101,99,153,3,0,0,115,76,0,0,0, - 6,2,8,1,8,2,4,3,12,1,10,5,8,1,8,1, - 2,1,8,1,2,128,12,1,12,1,8,1,2,1,12,250, - 4,5,2,128,12,3,12,248,22,128,8,9,14,2,10,1, - 2,1,8,1,2,128,12,1,12,4,2,128,8,2,8,1, - 8,2,8,2,2,239,4,19,2,243,2,244,115,63,0,0, - 0,159,1,65,12,5,161,3,37,4,164,1,65,12,5,165, - 17,63,11,182,1,65,12,5,189,9,65,12,5,193,12,4, - 65,16,13,193,17,3,65,16,13,193,40,3,65,44,2,193, - 44,9,65,57,9,194,13,1,65,57,9,194,14,1,63,11, - 114,215,0,0,0,99,3,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,67,0,0,0,115,110,0,0,0,116, - 0,124,0,116,1,131,2,115,14,116,2,100,1,160,3,116, - 4,124,0,131,1,161,1,131,1,130,1,124,2,100,2,107, - 0,114,22,116,5,100,3,131,1,130,1,124,2,100,2,107, - 4,114,41,116,0,124,1,116,1,131,2,115,35,116,2,100, - 4,131,1,130,1,124,1,115,41,116,6,100,5,131,1,130, - 1,124,0,115,53,124,2,100,2,107,2,114,51,116,5,100, - 6,131,1,130,1,100,7,83,0,100,7,83,0,41,8,122, - 28,86,101,114,105,102,121,32,97,114,103,117,109,101,110,116, - 115,32,97,114,101,32,34,115,97,110,101,34,46,122,31,109, - 111,100,117,108,101,32,110,97,109,101,32,109,117,115,116,32, - 98,101,32,115,116,114,44,32,110,111,116,32,123,125,114,26, - 0,0,0,122,18,108,101,118,101,108,32,109,117,115,116,32, - 98,101,32,62,61,32,48,122,31,95,95,112,97,99,107,97, - 103,101,95,95,32,110,111,116,32,115,101,116,32,116,111,32, - 97,32,115,116,114,105,110,103,122,54,97,116,116,101,109,112, - 116,101,100,32,114,101,108,97,116,105,118,101,32,105,109,112, - 111,114,116,32,119,105,116,104,32,110,111,32,107,110,111,119, - 110,32,112,97,114,101,110,116,32,112,97,99,107,97,103,101, - 122,17,69,109,112,116,121,32,109,111,100,117,108,101,32,110, - 97,109,101,78,41,7,218,10,105,115,105,110,115,116,97,110, - 99,101,218,3,115,116,114,218,9,84,121,112,101,69,114,114, - 111,114,114,51,0,0,0,114,3,0,0,0,218,10,86,97, - 108,117,101,69,114,114,111,114,114,88,0,0,0,169,3,114, - 20,0,0,0,114,209,0,0,0,114,210,0,0,0,32,32, - 32,114,5,0,0,0,218,13,95,115,97,110,105,116,121,95, - 99,104,101,99,107,200,3,0,0,115,24,0,0,0,10,2, - 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, - 12,2,8,1,8,255,114,17,0,0,0,114,221,0,0,0, - 122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101, - 100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0, - 0,0,0,0,0,8,0,0,0,67,0,0,0,115,20,1, - 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, - 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, - 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, - 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, - 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, - 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, - 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, - 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, - 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, - 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, - 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, - 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, - 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, - 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, - 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, - 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, - 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, - 83,0,119,0,119,0,41,8,78,114,141,0,0,0,114,26, - 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, - 111,116,32,97,32,112,97,99,107,97,103,101,114,19,0,0, - 0,233,2,0,0,0,122,27,67,97,110,110,111,116,32,115, - 101,116,32,97,110,32,97,116,116,114,105,98,117,116,101,32, - 111,110,32,122,18,32,102,111,114,32,99,104,105,108,100,32, - 109,111,100,117,108,101,32,41,15,114,142,0,0,0,114,18, - 0,0,0,114,105,0,0,0,114,75,0,0,0,114,154,0, - 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, - 71,114,51,0,0,0,218,19,77,111,100,117,108,101,78,111, - 116,70,111,117,110,100,69,114,114,111,114,114,215,0,0,0, - 114,173,0,0,0,114,11,0,0,0,114,101,0,0,0,114, - 102,0,0,0,114,169,0,0,0,41,9,114,20,0,0,0, - 218,7,105,109,112,111,114,116,95,114,181,0,0,0,114,143, - 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, - 108,101,114,108,0,0,0,114,109,0,0,0,114,110,0,0, - 0,90,5,99,104,105,108,100,32,32,32,32,32,32,32,32, - 32,114,5,0,0,0,218,23,95,102,105,110,100,95,97,110, - 100,95,108,111,97,100,95,117,110,108,111,99,107,101,100,219, - 3,0,0,115,68,0,0,0,4,1,14,1,4,1,10,1, - 10,1,10,2,10,1,10,1,2,1,8,1,2,128,12,1, - 16,1,14,1,2,128,10,1,8,1,18,1,8,2,4,1, - 10,2,14,1,2,1,12,1,4,4,2,128,12,253,16,1, - 14,1,4,1,2,128,4,0,2,253,2,242,115,31,0,0, - 0,165,3,41,0,169,22,63,7,193,37,6,65,45,0,193, - 45,21,66,5,7,194,8,1,66,5,7,194,9,1,63,7, - 114,226,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,9,0,0,0,67,0,0,0,115,132,0,0,0,116, - 0,124,0,131,1,53,0,1,0,116,1,106,2,160,3,124, - 0,116,4,161,2,125,2,124,2,116,4,117,0,114,27,116, - 5,124,0,124,1,131,2,2,0,100,1,4,0,4,0,131, - 3,1,0,83,0,9,0,100,1,4,0,4,0,131,3,1, - 0,110,11,35,0,49,0,115,39,119,4,37,0,1,0,1, - 0,1,0,89,0,1,0,1,0,124,2,100,1,117,0,114, - 60,100,2,160,6,124,0,161,1,125,3,116,7,124,3,124, - 0,100,3,141,2,130,1,116,8,124,0,131,1,1,0,124, - 2,83,0,41,4,122,25,70,105,110,100,32,97,110,100,32, - 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,46, - 78,122,40,105,109,112,111,114,116,32,111,102,32,123,125,32, - 104,97,108,116,101,100,59,32,78,111,110,101,32,105,110,32, - 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, - 41,9,114,58,0,0,0,114,18,0,0,0,114,105,0,0, - 0,114,39,0,0,0,218,14,95,78,69,69,68,83,95,76, - 79,65,68,73,78,71,114,226,0,0,0,114,51,0,0,0, - 114,224,0,0,0,114,73,0,0,0,41,4,114,20,0,0, - 0,114,225,0,0,0,114,110,0,0,0,114,83,0,0,0, - 32,32,32,32,114,5,0,0,0,218,14,95,102,105,110,100, - 95,97,110,100,95,108,111,97,100,254,3,0,0,115,30,0, - 0,0,10,2,14,1,8,1,8,1,14,253,2,2,12,254, - 22,128,8,5,2,1,6,1,2,255,12,2,8,2,4,1, - 115,12,0,0,0,132,16,34,3,162,4,38,11,167,3,38, - 11,114,228,0,0,0,114,26,0,0,0,99,3,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, - 115,42,0,0,0,116,0,124,0,124,1,124,2,131,3,1, - 0,124,2,100,1,107,4,114,16,116,1,124,0,124,1,124, - 2,131,3,125,0,116,2,124,0,116,3,131,2,83,0,41, - 3,97,50,1,0,0,73,109,112,111,114,116,32,97,110,100, - 32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,117, - 108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,32, - 110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,103, - 101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,32, - 32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,111, - 109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,108, - 32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,32, - 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, - 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,103, - 114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,100, - 101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,117, - 110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,32, - 98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,109, - 111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,111, - 114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,117, - 100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,97, - 99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,116, - 104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,111, - 116,46,10,10,32,32,32,32,114,26,0,0,0,78,41,4, - 114,221,0,0,0,114,211,0,0,0,114,228,0,0,0,218, - 11,95,103,99,100,95,105,109,112,111,114,116,114,220,0,0, - 0,32,32,32,114,5,0,0,0,114,229,0,0,0,14,4, - 0,0,115,8,0,0,0,12,9,8,1,12,1,10,1,114, - 17,0,0,0,114,229,0,0,0,169,1,218,9,114,101,99, - 117,114,115,105,118,101,99,3,0,0,0,0,0,0,0,1, - 0,0,0,9,0,0,0,67,0,0,0,115,216,0,0,0, - 124,1,68,0,93,102,125,4,116,0,124,4,116,1,131,2, - 115,32,124,3,114,17,124,0,106,2,100,1,23,0,125,5, - 110,2,100,2,125,5,116,3,100,3,124,5,155,0,100,4, - 116,4,124,4,131,1,106,2,155,0,157,4,131,1,130,1, - 124,4,100,5,107,2,114,53,124,3,115,52,116,5,124,0, - 100,6,131,2,114,52,116,6,124,0,124,0,106,7,124,2, - 100,7,100,8,141,4,1,0,113,2,116,5,124,0,124,4, - 131,2,115,104,100,9,160,8,124,0,106,2,124,4,161,2, - 125,6,9,0,116,9,124,2,124,6,131,2,1,0,113,2, - 35,0,4,0,116,10,121,107,1,0,125,7,1,0,124,7, - 106,11,124,6,107,2,114,98,116,12,106,13,160,14,124,6, - 116,15,161,2,100,10,117,1,114,98,89,0,100,10,125,7, - 126,7,113,2,130,0,100,10,125,7,126,7,119,1,37,0, - 113,2,124,0,83,0,119,0,41,11,122,238,70,105,103,117, - 114,101,32,111,117,116,32,119,104,97,116,32,95,95,105,109, - 112,111,114,116,95,95,32,115,104,111,117,108,100,32,114,101, - 116,117,114,110,46,10,10,32,32,32,32,84,104,101,32,105, - 109,112,111,114,116,95,32,112,97,114,97,109,101,116,101,114, - 32,105,115,32,97,32,99,97,108,108,97,98,108,101,32,119, - 104,105,99,104,32,116,97,107,101,115,32,116,104,101,32,110, - 97,109,101,32,111,102,32,109,111,100,117,108,101,32,116,111, - 10,32,32,32,32,105,109,112,111,114,116,46,32,73,116,32, - 105,115,32,114,101,113,117,105,114,101,100,32,116,111,32,100, - 101,99,111,117,112,108,101,32,116,104,101,32,102,117,110,99, - 116,105,111,110,32,102,114,111,109,32,97,115,115,117,109,105, - 110,103,32,105,109,112,111,114,116,108,105,98,39,115,10,32, - 32,32,32,105,109,112,111,114,116,32,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,32,105,115,32,100,101,115,105, - 114,101,100,46,10,10,32,32,32,32,122,8,46,95,95,97, - 108,108,95,95,122,13,96,96,102,114,111,109,32,108,105,115, - 116,39,39,122,8,73,116,101,109,32,105,110,32,122,18,32, - 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, - 32,250,1,42,218,7,95,95,97,108,108,95,95,84,114,230, - 0,0,0,114,206,0,0,0,78,41,16,114,216,0,0,0, - 114,217,0,0,0,114,8,0,0,0,114,218,0,0,0,114, - 3,0,0,0,114,10,0,0,0,218,16,95,104,97,110,100, - 108,101,95,102,114,111,109,108,105,115,116,114,233,0,0,0, - 114,51,0,0,0,114,75,0,0,0,114,224,0,0,0,114, - 20,0,0,0,114,18,0,0,0,114,105,0,0,0,114,39, - 0,0,0,114,227,0,0,0,41,8,114,110,0,0,0,218, - 8,102,114,111,109,108,105,115,116,114,225,0,0,0,114,231, - 0,0,0,218,1,120,90,5,119,104,101,114,101,90,9,102, - 114,111,109,95,110,97,109,101,90,3,101,120,99,32,32,32, - 32,32,32,32,32,114,5,0,0,0,114,234,0,0,0,29, - 4,0,0,115,58,0,0,0,8,10,10,1,4,1,12,1, - 4,2,10,1,8,1,8,255,8,2,14,1,10,1,2,1, - 6,255,2,128,10,2,14,1,2,1,12,1,2,128,12,1, - 10,4,16,1,2,255,10,2,2,1,10,128,2,245,4,12, - 2,248,115,36,0,0,0,193,2,5,65,8,2,193,8,7, - 65,39,9,193,15,14,65,35,9,193,34,1,65,35,9,193, - 35,4,65,39,9,193,43,1,65,39,9,114,234,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0, - 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, - 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, - 100,3,117,1,114,41,124,2,100,3,117,1,114,39,124,1, - 124,2,106,1,107,3,114,39,116,2,160,3,100,4,124,1, - 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, - 100,7,100,8,166,3,1,0,124,1,83,0,124,2,100,3, - 117,1,114,48,124,2,106,1,83,0,116,2,160,3,100,9, - 116,4,100,7,100,8,166,3,1,0,124,0,100,10,25,0, - 125,1,100,11,124,0,118,1,114,71,124,1,160,5,100,12, - 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, - 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, - 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, - 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, - 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, - 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, - 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, - 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, - 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, - 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, - 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, - 46,10,10,32,32,32,32,114,158,0,0,0,114,113,0,0, - 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, - 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, - 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, - 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, - 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, - 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, - 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, - 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, - 110,100,32,95,95,112,97,116,104,95,95,114,8,0,0,0, - 114,154,0,0,0,114,141,0,0,0,114,26,0,0,0,41, - 6,114,39,0,0,0,114,143,0,0,0,114,101,0,0,0, - 114,102,0,0,0,114,169,0,0,0,114,142,0,0,0,41, - 3,218,7,103,108,111,98,97,108,115,114,209,0,0,0,114, - 109,0,0,0,32,32,32,114,5,0,0,0,218,17,95,99, - 97,108,99,95,95,95,112,97,99,107,97,103,101,95,95,66, - 4,0,0,115,42,0,0,0,10,7,10,1,8,1,18,1, - 6,1,2,1,4,255,4,1,6,255,4,2,6,254,4,3, - 8,1,6,1,6,2,4,2,6,254,8,3,8,1,14,1, - 4,1,114,17,0,0,0,114,240,0,0,0,114,23,0,0, - 0,99,5,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,67,0,0,0,115,174,0,0,0,124,4,100,1,107, - 2,114,9,116,0,124,0,131,1,125,5,110,18,124,1,100, - 2,117,1,114,15,124,1,110,1,105,0,125,6,116,1,124, - 6,131,1,125,7,116,0,124,0,124,7,124,4,131,3,125, - 5,124,3,115,74,124,4,100,1,107,2,114,42,116,0,124, - 0,160,2,100,3,161,1,100,1,25,0,131,1,83,0,124, - 0,115,46,124,5,83,0,116,3,124,0,131,1,116,3,124, - 0,160,2,100,3,161,1,100,1,25,0,131,1,24,0,125, - 8,116,4,106,5,124,5,106,6,100,2,116,3,124,5,106, - 6,131,1,124,8,24,0,133,2,25,0,25,0,83,0,116, - 7,124,5,100,4,131,2,114,85,116,8,124,5,124,3,116, - 0,131,3,83,0,124,5,83,0,41,5,97,215,1,0,0, - 73,109,112,111,114,116,32,97,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,84,104,101,32,39,103,108,111,98,97, - 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 117,115,101,100,32,116,111,32,105,110,102,101,114,32,119,104, - 101,114,101,32,116,104,101,32,105,109,112,111,114,116,32,105, - 115,32,111,99,99,117,114,114,105,110,103,32,102,114,111,109, - 10,32,32,32,32,116,111,32,104,97,110,100,108,101,32,114, - 101,108,97,116,105,118,101,32,105,109,112,111,114,116,115,46, - 32,84,104,101,32,39,108,111,99,97,108,115,39,32,97,114, - 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, - 100,46,32,84,104,101,10,32,32,32,32,39,102,114,111,109, - 108,105,115,116,39,32,97,114,103,117,109,101,110,116,32,115, - 112,101,99,105,102,105,101,115,32,119,104,97,116,32,115,104, - 111,117,108,100,32,101,120,105,115,116,32,97,115,32,97,116, - 116,114,105,98,117,116,101,115,32,111,110,32,116,104,101,32, - 109,111,100,117,108,101,10,32,32,32,32,98,101,105,110,103, - 32,105,109,112,111,114,116,101,100,32,40,101,46,103,46,32, - 96,96,102,114,111,109,32,109,111,100,117,108,101,32,105,109, - 112,111,114,116,32,60,102,114,111,109,108,105,115,116,62,96, - 96,41,46,32,32,84,104,101,32,39,108,101,118,101,108,39, - 10,32,32,32,32,97,114,103,117,109,101,110,116,32,114,101, - 112,114,101,115,101,110,116,115,32,116,104,101,32,112,97,99, - 107,97,103,101,32,108,111,99,97,116,105,111,110,32,116,111, - 32,105,109,112,111,114,116,32,102,114,111,109,32,105,110,32, - 97,32,114,101,108,97,116,105,118,101,10,32,32,32,32,105, - 109,112,111,114,116,32,40,101,46,103,46,32,96,96,102,114, - 111,109,32,46,46,112,107,103,32,105,109,112,111,114,116,32, - 109,111,100,96,96,32,119,111,117,108,100,32,104,97,118,101, - 32,97,32,39,108,101,118,101,108,39,32,111,102,32,50,41, - 46,10,10,32,32,32,32,114,26,0,0,0,78,114,141,0, - 0,0,114,154,0,0,0,41,9,114,229,0,0,0,114,240, - 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,208, - 0,0,0,114,18,0,0,0,114,105,0,0,0,114,8,0, - 0,0,114,10,0,0,0,114,234,0,0,0,41,9,114,20, - 0,0,0,114,239,0,0,0,218,6,108,111,99,97,108,115, - 114,235,0,0,0,114,210,0,0,0,114,110,0,0,0,90, - 8,103,108,111,98,97,108,115,95,114,209,0,0,0,90,7, - 99,117,116,95,111,102,102,32,32,32,32,32,32,32,32,32, - 114,5,0,0,0,218,10,95,95,105,109,112,111,114,116,95, - 95,93,4,0,0,115,30,0,0,0,8,11,10,1,16,2, - 8,1,12,1,4,1,8,3,18,1,4,1,4,1,26,4, - 30,3,10,1,12,1,4,2,114,17,0,0,0,114,243,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,115,38,0,0,0,116,0,160,1, - 124,0,161,1,125,1,124,1,100,0,117,0,114,15,116,2, - 100,1,124,0,23,0,131,1,130,1,116,3,124,1,131,1, - 83,0,41,2,78,122,25,110,111,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,32,110,97,109,101,100,32, - 41,4,114,175,0,0,0,114,183,0,0,0,114,88,0,0, - 0,114,173,0,0,0,41,2,114,20,0,0,0,114,109,0, - 0,0,32,32,114,5,0,0,0,218,18,95,98,117,105,108, - 116,105,110,95,102,114,111,109,95,110,97,109,101,130,4,0, - 0,115,8,0,0,0,10,1,8,1,12,1,8,1,114,17, - 0,0,0,114,244,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,166,0, - 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, - 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, - 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, - 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, - 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, - 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, - 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, - 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, - 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, - 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, - 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, - 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, - 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, - 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, - 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, - 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, - 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, - 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, - 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, - 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, - 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, - 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, - 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, - 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, - 10,10,32,32,32,32,41,3,114,27,0,0,0,114,101,0, - 0,0,114,72,0,0,0,78,41,15,114,65,0,0,0,114, - 18,0,0,0,114,3,0,0,0,114,105,0,0,0,218,5, - 105,116,101,109,115,114,216,0,0,0,114,87,0,0,0,114, - 175,0,0,0,114,98,0,0,0,114,193,0,0,0,114,155, - 0,0,0,114,161,0,0,0,114,8,0,0,0,114,244,0, - 0,0,114,11,0,0,0,41,10,218,10,115,121,115,95,109, - 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, - 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, - 20,0,0,0,114,110,0,0,0,114,122,0,0,0,114,109, - 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, - 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,32,32, - 32,32,32,32,32,32,32,32,114,5,0,0,0,218,6,95, - 115,101,116,117,112,137,4,0,0,115,40,0,0,0,4,9, - 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, - 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, - 10,2,14,1,4,251,114,17,0,0,0,114,248,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,38,0,0,0,116,0,124,0,124,1, - 131,2,1,0,116,1,106,2,160,3,116,4,161,1,1,0, - 116,1,106,2,160,3,116,5,161,1,1,0,100,1,83,0, - 41,2,122,48,73,110,115,116,97,108,108,32,105,109,112,111, - 114,116,101,114,115,32,102,111,114,32,98,117,105,108,116,105, - 110,32,97,110,100,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,78,41,6,114,248,0,0,0,114,18,0,0, - 0,114,214,0,0,0,114,132,0,0,0,114,175,0,0,0, - 114,193,0,0,0,41,2,114,246,0,0,0,114,247,0,0, - 0,32,32,114,5,0,0,0,218,8,95,105,110,115,116,97, - 108,108,172,4,0,0,115,6,0,0,0,10,2,12,2,16, - 1,114,17,0,0,0,114,249,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, - 115,32,0,0,0,100,1,100,2,108,0,125,0,124,0,97, - 1,124,0,160,2,116,3,106,4,116,5,25,0,161,1,1, - 0,100,2,83,0,41,3,122,57,73,110,115,116,97,108,108, - 32,105,109,112,111,114,116,101,114,115,32,116,104,97,116,32, - 114,101,113,117,105,114,101,32,101,120,116,101,114,110,97,108, - 32,102,105,108,101,115,121,115,116,101,109,32,97,99,99,101, - 115,115,114,26,0,0,0,78,41,6,218,26,95,102,114,111, - 122,101,110,95,105,109,112,111,114,116,108,105,98,95,101,120, - 116,101,114,110,97,108,114,139,0,0,0,114,249,0,0,0, - 114,18,0,0,0,114,105,0,0,0,114,8,0,0,0,41, - 1,114,250,0,0,0,32,114,5,0,0,0,218,27,95,105, - 110,115,116,97,108,108,95,101,120,116,101,114,110,97,108,95, - 105,109,112,111,114,116,101,114,115,180,4,0,0,115,6,0, - 0,0,8,3,4,1,20,1,114,17,0,0,0,114,251,0, - 0,0,114,190,0,0,0,114,0,0,0,0,114,25,0,0, - 0,41,4,78,78,114,23,0,0,0,114,26,0,0,0,41, - 54,114,9,0,0,0,114,6,0,0,0,114,27,0,0,0, - 114,101,0,0,0,114,72,0,0,0,114,139,0,0,0,114, - 16,0,0,0,114,21,0,0,0,114,67,0,0,0,114,38, - 0,0,0,114,48,0,0,0,114,22,0,0,0,114,24,0, - 0,0,114,56,0,0,0,114,58,0,0,0,114,61,0,0, - 0,114,73,0,0,0,114,75,0,0,0,114,84,0,0,0, - 114,95,0,0,0,114,100,0,0,0,114,111,0,0,0,114, - 124,0,0,0,114,125,0,0,0,114,104,0,0,0,114,155, - 0,0,0,114,161,0,0,0,114,165,0,0,0,114,119,0, - 0,0,114,106,0,0,0,114,172,0,0,0,114,173,0,0, - 0,114,107,0,0,0,114,175,0,0,0,114,193,0,0,0, - 114,200,0,0,0,114,211,0,0,0,114,213,0,0,0,114, - 215,0,0,0,114,221,0,0,0,90,15,95,69,82,82,95, - 77,83,71,95,80,82,69,70,73,88,114,223,0,0,0,114, - 226,0,0,0,218,6,111,98,106,101,99,116,114,227,0,0, - 0,114,228,0,0,0,114,229,0,0,0,114,234,0,0,0, - 114,240,0,0,0,114,243,0,0,0,114,244,0,0,0,114, - 248,0,0,0,114,249,0,0,0,114,251,0,0,0,114,23, - 0,0,0,114,5,0,0,0,218,8,60,109,111,100,117,108, - 101,62,1,0,0,0,115,104,0,0,0,4,0,8,22,4, - 9,4,1,4,1,4,3,8,3,8,8,4,8,4,2,16, - 3,14,4,14,77,14,21,8,16,8,37,8,17,14,11,8, - 8,8,11,8,12,8,19,14,26,16,101,10,26,14,45,8, - 72,8,17,8,17,8,30,8,36,8,45,14,15,14,80,14, - 85,8,13,8,9,10,10,8,47,4,16,8,1,8,2,6, - 32,8,3,10,16,14,15,8,37,10,27,8,37,8,7,8, - 35,12,8,114,17,0,0,0, + 120,116,46,95,95,101,110,116,101,114,95,95,99,4,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,67,0,0, + 0,114,201,0,0,0,41,2,122,60,82,101,108,101,97,115, + 101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, + 107,32,114,101,103,97,114,100,108,101,115,115,32,111,102,32, + 97,110,121,32,114,97,105,115,101,100,32,101,120,99,101,112, + 116,105,111,110,115,46,78,41,2,114,65,0,0,0,114,68, + 0,0,0,41,4,114,34,0,0,0,218,8,101,120,99,95, + 116,121,112,101,218,9,101,120,99,95,118,97,108,117,101,218, + 13,101,120,99,95,116,114,97,99,101,98,97,99,107,32,32, + 32,32,114,5,0,0,0,114,64,0,0,0,129,3,0,0, + 114,202,0,0,0,114,17,0,0,0,122,27,95,73,109,112, + 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, + 95,101,120,105,116,95,95,78,41,6,114,8,0,0,0,114, + 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,62, + 0,0,0,114,64,0,0,0,114,23,0,0,0,114,5,0, + 0,0,114,200,0,0,0,121,3,0,0,115,8,0,0,0, + 8,0,4,2,8,2,12,4,114,17,0,0,0,114,200,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,67,0,0,0,115,64,0,0,0,124,1,160,0, + 100,1,124,2,100,2,24,0,161,2,125,3,116,1,124,3, + 131,1,124,2,107,0,114,18,116,2,100,3,131,1,130,1, + 124,3,100,4,25,0,125,4,124,0,114,30,100,5,160,3, + 124,4,124,0,161,2,83,0,124,4,83,0,41,7,122,50, + 82,101,115,111,108,118,101,32,97,32,114,101,108,97,116,105, + 118,101,32,109,111,100,117,108,101,32,110,97,109,101,32,116, + 111,32,97,110,32,97,98,115,111,108,117,116,101,32,111,110, + 101,46,114,141,0,0,0,114,43,0,0,0,122,50,97,116, + 116,101,109,112,116,101,100,32,114,101,108,97,116,105,118,101, + 32,105,109,112,111,114,116,32,98,101,121,111,110,100,32,116, + 111,112,45,108,101,118,101,108,32,112,97,99,107,97,103,101, + 114,26,0,0,0,250,5,123,125,46,123,125,78,41,4,218, + 6,114,115,112,108,105,116,218,3,108,101,110,114,88,0,0, + 0,114,51,0,0,0,41,5,114,20,0,0,0,218,7,112, + 97,99,107,97,103,101,218,5,108,101,118,101,108,90,4,98, + 105,116,115,90,4,98,97,115,101,32,32,32,32,32,114,5, + 0,0,0,218,13,95,114,101,115,111,108,118,101,95,110,97, + 109,101,134,3,0,0,115,10,0,0,0,16,2,12,1,8, + 1,8,1,20,1,114,17,0,0,0,114,211,0,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,60,0,0,0,116,0,124,0,131,1,155, + 0,100,1,157,2,125,3,116,1,160,2,124,3,116,3,161, + 2,1,0,124,0,160,4,124,1,124,2,161,2,125,4,124, + 4,100,0,117,0,114,25,100,0,83,0,116,5,124,1,124, + 4,131,2,83,0,41,2,78,122,53,46,102,105,110,100,95, + 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, + 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, + 111,32,102,105,110,100,95,109,111,100,117,108,101,40,41,41, + 6,114,6,0,0,0,114,101,0,0,0,114,102,0,0,0, + 114,169,0,0,0,114,184,0,0,0,114,104,0,0,0,41, + 5,218,6,102,105,110,100,101,114,114,20,0,0,0,114,181, + 0,0,0,114,108,0,0,0,114,122,0,0,0,32,32,32, + 32,32,114,5,0,0,0,218,17,95,102,105,110,100,95,115, + 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, + 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, + 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,10,0,0,0,67,0,0,0,115,30, + 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, + 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, + 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, + 0,125,4,124,3,68,0,93,112,125,5,116,7,131,0,53, + 0,1,0,9,0,124,5,106,8,125,6,110,27,35,0,4, + 0,116,9,121,142,1,0,1,0,1,0,116,10,124,5,124, + 0,124,1,131,3,125,7,124,7,100,1,117,0,114,61,89, + 0,100,1,4,0,4,0,131,3,1,0,113,26,89,0,110, + 7,37,0,124,6,124,0,124,1,124,2,131,3,125,7,100, + 1,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, + 81,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,7,100,1,117,1,114,138,124,4,115,134,124,0,116, + 0,106,6,118,0,114,134,116,0,106,6,124,0,25,0,125, + 8,9,0,124,8,106,11,125,9,110,14,35,0,4,0,116, + 9,121,141,1,0,1,0,1,0,124,7,6,0,89,0,2, + 0,1,0,83,0,37,0,124,9,100,1,117,0,114,130,124, + 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, + 7,2,0,1,0,83,0,113,26,100,1,83,0,119,0,119, + 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, + 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, + 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, + 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, + 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, + 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, + 104,32,105,115,32,101,109,112,116,121,41,12,114,18,0,0, + 0,218,9,109,101,116,97,95,112,97,116,104,114,88,0,0, + 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, + 114,105,0,0,0,114,200,0,0,0,114,183,0,0,0,114, + 2,0,0,0,114,213,0,0,0,114,113,0,0,0,41,10, + 114,20,0,0,0,114,181,0,0,0,114,182,0,0,0,114, + 214,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, + 212,0,0,0,114,183,0,0,0,114,109,0,0,0,114,110, + 0,0,0,114,113,0,0,0,32,32,32,32,32,32,32,32, + 32,32,114,5,0,0,0,218,10,95,102,105,110,100,95,115, + 112,101,99,153,3,0,0,115,76,0,0,0,6,2,8,1, + 8,2,4,3,12,1,10,5,8,1,8,1,2,1,8,1, + 2,128,12,1,12,1,8,1,2,1,12,250,4,5,2,128, + 12,3,12,248,22,128,8,9,14,2,10,1,2,1,8,1, + 2,128,12,1,12,4,2,128,8,2,8,1,8,2,8,2, + 2,239,4,19,2,243,2,244,115,63,0,0,0,159,1,65, + 12,5,161,3,37,4,164,1,65,12,5,165,17,63,11,182, + 1,65,12,5,189,9,65,12,5,193,12,4,65,16,13,193, + 17,3,65,16,13,193,40,3,65,44,2,193,44,9,65,57, + 9,194,13,1,65,57,9,194,14,1,63,11,114,215,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,67,0,0,0,115,110,0,0,0,116,0,124,0,116, + 1,131,2,115,14,116,2,100,1,160,3,116,4,124,0,131, + 1,161,1,131,1,130,1,124,2,100,2,107,0,114,22,116, + 5,100,3,131,1,130,1,124,2,100,2,107,4,114,41,116, + 0,124,1,116,1,131,2,115,35,116,2,100,4,131,1,130, + 1,124,1,115,41,116,6,100,5,131,1,130,1,124,0,115, + 53,124,2,100,2,107,2,114,51,116,5,100,6,131,1,130, + 1,100,7,83,0,100,7,83,0,41,8,122,28,86,101,114, + 105,102,121,32,97,114,103,117,109,101,110,116,115,32,97,114, + 101,32,34,115,97,110,101,34,46,122,31,109,111,100,117,108, + 101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,115, + 116,114,44,32,110,111,116,32,123,125,114,26,0,0,0,122, + 18,108,101,118,101,108,32,109,117,115,116,32,98,101,32,62, + 61,32,48,122,31,95,95,112,97,99,107,97,103,101,95,95, + 32,110,111,116,32,115,101,116,32,116,111,32,97,32,115,116, + 114,105,110,103,122,54,97,116,116,101,109,112,116,101,100,32, + 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,32, + 119,105,116,104,32,110,111,32,107,110,111,119,110,32,112,97, + 114,101,110,116,32,112,97,99,107,97,103,101,122,17,69,109, + 112,116,121,32,109,111,100,117,108,101,32,110,97,109,101,78, + 41,7,218,10,105,115,105,110,115,116,97,110,99,101,218,3, + 115,116,114,218,9,84,121,112,101,69,114,114,111,114,114,51, + 0,0,0,114,3,0,0,0,218,10,86,97,108,117,101,69, + 114,114,111,114,114,88,0,0,0,169,3,114,20,0,0,0, + 114,209,0,0,0,114,210,0,0,0,32,32,32,114,5,0, + 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, + 107,200,3,0,0,115,24,0,0,0,10,2,18,1,8,1, + 8,1,8,1,10,1,8,1,4,1,8,1,12,2,8,1, + 8,255,114,17,0,0,0,114,221,0,0,0,122,16,78,111, + 32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,4, + 123,33,114,125,99,2,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,67,0,0,0,115,20,1,0,0,100,0, + 125,2,124,0,160,0,100,1,161,1,100,2,25,0,125,3, + 124,3,114,64,124,3,116,1,106,2,118,1,114,21,116,3, + 124,1,124,3,131,2,1,0,124,0,116,1,106,2,118,0, + 114,31,116,1,106,2,124,0,25,0,83,0,116,1,106,2, + 124,3,25,0,125,4,9,0,124,4,106,4,125,2,110,23, + 35,0,4,0,116,5,121,137,1,0,1,0,1,0,116,6, + 100,3,23,0,160,7,124,0,124,3,161,2,125,5,116,8, + 124,5,124,0,100,4,141,2,100,0,130,2,37,0,116,9, + 124,0,124,2,131,2,125,6,124,6,100,0,117,0,114,82, + 116,8,116,6,160,7,124,0,161,1,124,0,100,4,141,2, + 130,1,116,10,124,6,131,1,125,7,124,3,114,134,116,1, + 106,2,124,3,25,0,125,4,124,0,160,0,100,1,161,1, + 100,5,25,0,125,8,9,0,116,11,124,4,124,8,124,7, + 131,3,1,0,124,7,83,0,35,0,4,0,116,5,121,136, + 1,0,1,0,1,0,100,6,124,3,155,2,100,7,124,8, + 155,2,157,4,125,5,116,12,160,13,124,5,116,14,161,2, + 1,0,89,0,124,7,83,0,37,0,124,7,83,0,119,0, + 119,0,41,8,78,114,141,0,0,0,114,26,0,0,0,122, + 23,59,32,123,33,114,125,32,105,115,32,110,111,116,32,97, + 32,112,97,99,107,97,103,101,114,19,0,0,0,233,2,0, + 0,0,122,27,67,97,110,110,111,116,32,115,101,116,32,97, + 110,32,97,116,116,114,105,98,117,116,101,32,111,110,32,122, + 18,32,102,111,114,32,99,104,105,108,100,32,109,111,100,117, + 108,101,32,41,15,114,142,0,0,0,114,18,0,0,0,114, + 105,0,0,0,114,75,0,0,0,114,154,0,0,0,114,2, + 0,0,0,218,8,95,69,82,82,95,77,83,71,114,51,0, + 0,0,218,19,77,111,100,117,108,101,78,111,116,70,111,117, + 110,100,69,114,114,111,114,114,215,0,0,0,114,173,0,0, + 0,114,11,0,0,0,114,101,0,0,0,114,102,0,0,0, + 114,169,0,0,0,41,9,114,20,0,0,0,218,7,105,109, + 112,111,114,116,95,114,181,0,0,0,114,143,0,0,0,90, + 13,112,97,114,101,110,116,95,109,111,100,117,108,101,114,108, + 0,0,0,114,109,0,0,0,114,110,0,0,0,90,5,99, + 104,105,108,100,32,32,32,32,32,32,32,32,32,114,5,0, + 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, + 97,100,95,117,110,108,111,99,107,101,100,219,3,0,0,115, + 68,0,0,0,4,1,14,1,4,1,10,1,10,1,10,2, + 10,1,10,1,2,1,8,1,2,128,12,1,16,1,14,1, + 2,128,10,1,8,1,18,1,8,2,4,1,10,2,14,1, + 2,1,12,1,4,4,2,128,12,253,16,1,14,1,4,1, + 2,128,4,0,2,253,2,242,115,31,0,0,0,165,3,41, + 0,169,22,63,7,193,37,6,65,45,0,193,45,21,66,5, + 7,194,8,1,66,5,7,194,9,1,63,7,114,226,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,9,0, + 0,0,67,0,0,0,115,132,0,0,0,116,0,124,0,131, + 1,53,0,1,0,116,1,106,2,160,3,124,0,116,4,161, + 2,125,2,124,2,116,4,117,0,114,27,116,5,124,0,124, + 1,131,2,2,0,100,1,4,0,4,0,131,3,1,0,83, + 0,9,0,100,1,4,0,4,0,131,3,1,0,110,11,35, + 0,49,0,115,39,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,124,2,100,1,117,0,114,60,100,2,160, + 6,124,0,161,1,125,3,116,7,124,3,124,0,100,3,141, + 2,130,1,116,8,124,0,131,1,1,0,124,2,83,0,41, + 4,122,25,70,105,110,100,32,97,110,100,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,46,78,122,40,105, + 109,112,111,114,116,32,111,102,32,123,125,32,104,97,108,116, + 101,100,59,32,78,111,110,101,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,114,19,0,0,0,41,9,114,58, + 0,0,0,114,18,0,0,0,114,105,0,0,0,114,39,0, + 0,0,218,14,95,78,69,69,68,83,95,76,79,65,68,73, + 78,71,114,226,0,0,0,114,51,0,0,0,114,224,0,0, + 0,114,73,0,0,0,41,4,114,20,0,0,0,114,225,0, + 0,0,114,110,0,0,0,114,83,0,0,0,32,32,32,32, + 114,5,0,0,0,218,14,95,102,105,110,100,95,97,110,100, + 95,108,111,97,100,254,3,0,0,115,30,0,0,0,10,2, + 14,1,8,1,8,1,14,253,2,2,12,254,22,128,8,5, + 2,1,6,1,2,255,12,2,8,2,4,1,115,12,0,0, + 0,132,16,34,3,162,4,38,11,167,3,38,11,114,228,0, + 0,0,114,26,0,0,0,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, + 0,116,0,124,0,124,1,124,2,131,3,1,0,124,2,100, + 1,107,4,114,16,116,1,124,0,124,1,124,2,131,3,125, + 0,116,2,124,0,116,3,131,2,83,0,41,3,97,50,1, + 0,0,73,109,112,111,114,116,32,97,110,100,32,114,101,116, + 117,114,110,32,116,104,101,32,109,111,100,117,108,101,32,98, + 97,115,101,100,32,111,110,32,105,116,115,32,110,97,109,101, + 44,32,116,104,101,32,112,97,99,107,97,103,101,32,116,104, + 101,32,99,97,108,108,32,105,115,10,32,32,32,32,98,101, + 105,110,103,32,109,97,100,101,32,102,114,111,109,44,32,97, + 110,100,32,116,104,101,32,108,101,118,101,108,32,97,100,106, + 117,115,116,109,101,110,116,46,10,10,32,32,32,32,84,104, + 105,115,32,102,117,110,99,116,105,111,110,32,114,101,112,114, + 101,115,101,110,116,115,32,116,104,101,32,103,114,101,97,116, + 101,115,116,32,99,111,109,109,111,110,32,100,101,110,111,109, + 105,110,97,116,111,114,32,111,102,32,102,117,110,99,116,105, + 111,110,97,108,105,116,121,10,32,32,32,32,98,101,116,119, + 101,101,110,32,105,109,112,111,114,116,95,109,111,100,117,108, + 101,32,97,110,100,32,95,95,105,109,112,111,114,116,95,95, + 46,32,84,104,105,115,32,105,110,99,108,117,100,101,115,32, + 115,101,116,116,105,110,103,32,95,95,112,97,99,107,97,103, + 101,95,95,32,105,102,10,32,32,32,32,116,104,101,32,108, + 111,97,100,101,114,32,100,105,100,32,110,111,116,46,10,10, + 32,32,32,32,114,26,0,0,0,78,41,4,114,221,0,0, + 0,114,211,0,0,0,114,228,0,0,0,218,11,95,103,99, + 100,95,105,109,112,111,114,116,114,220,0,0,0,32,32,32, + 114,5,0,0,0,114,229,0,0,0,14,4,0,0,115,8, + 0,0,0,12,9,8,1,12,1,10,1,114,17,0,0,0, + 114,229,0,0,0,169,1,218,9,114,101,99,117,114,115,105, + 118,101,99,3,0,0,0,0,0,0,0,1,0,0,0,9, + 0,0,0,67,0,0,0,115,216,0,0,0,124,1,68,0, + 93,102,125,4,116,0,124,4,116,1,131,2,115,32,124,3, + 114,17,124,0,106,2,100,1,23,0,125,5,110,2,100,2, + 125,5,116,3,100,3,124,5,155,0,100,4,116,4,124,4, + 131,1,106,2,155,0,157,4,131,1,130,1,124,4,100,5, + 107,2,114,53,124,3,115,52,116,5,124,0,100,6,131,2, + 114,52,116,6,124,0,124,0,106,7,124,2,100,7,100,8, + 141,4,1,0,113,2,116,5,124,0,124,4,131,2,115,104, + 100,9,160,8,124,0,106,2,124,4,161,2,125,6,9,0, + 116,9,124,2,124,6,131,2,1,0,113,2,35,0,4,0, + 116,10,121,107,1,0,125,7,1,0,124,7,106,11,124,6, + 107,2,114,98,116,12,106,13,160,14,124,6,116,15,161,2, + 100,10,117,1,114,98,89,0,100,10,125,7,126,7,113,2, + 130,0,100,10,125,7,126,7,119,1,37,0,113,2,124,0, + 83,0,119,0,41,11,122,238,70,105,103,117,114,101,32,111, + 117,116,32,119,104,97,116,32,95,95,105,109,112,111,114,116, + 95,95,32,115,104,111,117,108,100,32,114,101,116,117,114,110, + 46,10,10,32,32,32,32,84,104,101,32,105,109,112,111,114, + 116,95,32,112,97,114,97,109,101,116,101,114,32,105,115,32, + 97,32,99,97,108,108,97,98,108,101,32,119,104,105,99,104, + 32,116,97,107,101,115,32,116,104,101,32,110,97,109,101,32, + 111,102,32,109,111,100,117,108,101,32,116,111,10,32,32,32, + 32,105,109,112,111,114,116,46,32,73,116,32,105,115,32,114, + 101,113,117,105,114,101,100,32,116,111,32,100,101,99,111,117, + 112,108,101,32,116,104,101,32,102,117,110,99,116,105,111,110, + 32,102,114,111,109,32,97,115,115,117,109,105,110,103,32,105, + 109,112,111,114,116,108,105,98,39,115,10,32,32,32,32,105, + 109,112,111,114,116,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,105,115,32,100,101,115,105,114,101,100,46, + 10,10,32,32,32,32,122,8,46,95,95,97,108,108,95,95, + 122,13,96,96,102,114,111,109,32,108,105,115,116,39,39,122, + 8,73,116,101,109,32,105,110,32,122,18,32,109,117,115,116, + 32,98,101,32,115,116,114,44,32,110,111,116,32,250,1,42, + 218,7,95,95,97,108,108,95,95,84,114,230,0,0,0,114, + 206,0,0,0,78,41,16,114,216,0,0,0,114,217,0,0, + 0,114,8,0,0,0,114,218,0,0,0,114,3,0,0,0, + 114,10,0,0,0,218,16,95,104,97,110,100,108,101,95,102, + 114,111,109,108,105,115,116,114,233,0,0,0,114,51,0,0, + 0,114,75,0,0,0,114,224,0,0,0,114,20,0,0,0, + 114,18,0,0,0,114,105,0,0,0,114,39,0,0,0,114, + 227,0,0,0,41,8,114,110,0,0,0,218,8,102,114,111, + 109,108,105,115,116,114,225,0,0,0,114,231,0,0,0,218, + 1,120,90,5,119,104,101,114,101,90,9,102,114,111,109,95, + 110,97,109,101,90,3,101,120,99,32,32,32,32,32,32,32, + 32,114,5,0,0,0,114,234,0,0,0,29,4,0,0,115, + 58,0,0,0,8,10,10,1,4,1,12,1,4,2,10,1, + 8,1,8,255,8,2,14,1,10,1,2,1,6,255,2,128, + 10,2,14,1,2,1,12,1,2,128,12,1,10,4,16,1, + 2,255,10,2,2,1,10,128,2,245,4,12,2,248,115,36, + 0,0,0,193,2,5,65,8,2,193,8,7,65,39,9,193, + 15,14,65,35,9,193,34,1,65,35,9,193,35,4,65,39, + 9,193,43,1,65,39,9,114,234,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,7,0,0,0,67,0,0, + 0,115,146,0,0,0,124,0,160,0,100,1,161,1,125,1, + 124,0,160,0,100,2,161,1,125,2,124,1,100,3,117,1, + 114,41,124,2,100,3,117,1,114,39,124,1,124,2,106,1, + 107,3,114,39,116,2,160,3,100,4,124,1,155,2,100,5, + 124,2,106,1,155,2,100,6,157,5,116,4,100,7,100,8, + 166,3,1,0,124,1,83,0,124,2,100,3,117,1,114,48, + 124,2,106,1,83,0,116,2,160,3,100,9,116,4,100,7, + 100,8,166,3,1,0,124,0,100,10,25,0,125,1,100,11, + 124,0,118,1,114,71,124,1,160,5,100,12,161,1,100,13, + 25,0,125,1,124,1,83,0,41,14,122,167,67,97,108,99, + 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, + 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, + 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, + 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, + 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, + 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, + 101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,116, + 111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,116, + 32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,117, + 101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,32, + 32,32,32,114,158,0,0,0,114,113,0,0,0,78,122,32, + 95,95,112,97,99,107,97,103,101,95,95,32,33,61,32,95, + 95,115,112,101,99,95,95,46,112,97,114,101,110,116,32,40, + 122,4,32,33,61,32,250,1,41,233,3,0,0,0,41,1, + 90,10,115,116,97,99,107,108,101,118,101,108,122,89,99,97, + 110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,107, + 97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,95, + 95,32,111,114,32,95,95,112,97,99,107,97,103,101,95,95, + 44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,111, + 110,32,95,95,110,97,109,101,95,95,32,97,110,100,32,95, + 95,112,97,116,104,95,95,114,8,0,0,0,114,154,0,0, + 0,114,141,0,0,0,114,26,0,0,0,41,6,114,39,0, + 0,0,114,143,0,0,0,114,101,0,0,0,114,102,0,0, + 0,114,169,0,0,0,114,142,0,0,0,41,3,218,7,103, + 108,111,98,97,108,115,114,209,0,0,0,114,109,0,0,0, + 32,32,32,114,5,0,0,0,218,17,95,99,97,108,99,95, + 95,95,112,97,99,107,97,103,101,95,95,66,4,0,0,115, + 42,0,0,0,10,7,10,1,8,1,18,1,6,1,2,1, + 4,255,4,1,6,255,4,2,6,254,4,3,8,1,6,1, + 6,2,4,2,6,254,8,3,8,1,14,1,4,1,114,17, + 0,0,0,114,240,0,0,0,114,23,0,0,0,99,5,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, + 0,0,115,174,0,0,0,124,4,100,1,107,2,114,9,116, + 0,124,0,131,1,125,5,110,18,124,1,100,2,117,1,114, + 15,124,1,110,1,105,0,125,6,116,1,124,6,131,1,125, + 7,116,0,124,0,124,7,124,4,131,3,125,5,124,3,115, + 74,124,4,100,1,107,2,114,42,116,0,124,0,160,2,100, + 3,161,1,100,1,25,0,131,1,83,0,124,0,115,46,124, + 5,83,0,116,3,124,0,131,1,116,3,124,0,160,2,100, + 3,161,1,100,1,25,0,131,1,24,0,125,8,116,4,106, + 5,124,5,106,6,100,2,116,3,124,5,106,6,131,1,124, + 8,24,0,133,2,25,0,25,0,83,0,116,7,124,5,100, + 4,131,2,114,85,116,8,124,5,124,3,116,0,131,3,83, + 0,124,5,83,0,41,5,97,215,1,0,0,73,109,112,111, + 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, + 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, + 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, + 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, + 99,117,114,114,105,110,103,32,102,114,111,109,10,32,32,32, + 32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,116, + 105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,101, + 32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,101, + 110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,84, + 104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,116, + 39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,105, + 102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,100, + 32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,98, + 117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,117, + 108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,112, + 111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,114, + 111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,116, + 32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,32, + 32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,32, + 32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,115, + 101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,101, + 32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,112, + 111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,101, + 108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,114, + 116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,46, + 46,112,107,103,32,105,109,112,111,114,116,32,109,111,100,96, + 96,32,119,111,117,108,100,32,104,97,118,101,32,97,32,39, + 108,101,118,101,108,39,32,111,102,32,50,41,46,10,10,32, + 32,32,32,114,26,0,0,0,78,114,141,0,0,0,114,154, + 0,0,0,41,9,114,229,0,0,0,114,240,0,0,0,218, + 9,112,97,114,116,105,116,105,111,110,114,208,0,0,0,114, + 18,0,0,0,114,105,0,0,0,114,8,0,0,0,114,10, + 0,0,0,114,234,0,0,0,41,9,114,20,0,0,0,114, + 239,0,0,0,218,6,108,111,99,97,108,115,114,235,0,0, + 0,114,210,0,0,0,114,110,0,0,0,90,8,103,108,111, + 98,97,108,115,95,114,209,0,0,0,90,7,99,117,116,95, + 111,102,102,32,32,32,32,32,32,32,32,32,114,5,0,0, + 0,218,10,95,95,105,109,112,111,114,116,95,95,93,4,0, + 0,115,30,0,0,0,8,11,10,1,16,2,8,1,12,1, + 4,1,8,3,18,1,4,1,4,1,26,4,30,3,10,1, + 12,1,4,2,114,17,0,0,0,114,243,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, + 0,0,0,115,38,0,0,0,116,0,160,1,124,0,161,1, + 125,1,124,1,100,0,117,0,114,15,116,2,100,1,124,0, + 23,0,131,1,130,1,116,3,124,1,131,1,83,0,41,2, + 78,122,25,110,111,32,98,117,105,108,116,45,105,110,32,109, + 111,100,117,108,101,32,110,97,109,101,100,32,41,4,114,175, + 0,0,0,114,183,0,0,0,114,88,0,0,0,114,173,0, + 0,0,41,2,114,20,0,0,0,114,109,0,0,0,32,32, + 114,5,0,0,0,218,18,95,98,117,105,108,116,105,110,95, + 102,114,111,109,95,110,97,109,101,130,4,0,0,115,8,0, + 0,0,10,1,8,1,12,1,8,1,114,17,0,0,0,114, + 244,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,67,0,0,0,115,166,0,0,0,124,1, + 97,0,124,0,97,1,116,2,116,1,131,1,125,2,116,1, + 106,3,160,4,161,0,68,0,93,36,92,2,125,3,125,4, + 116,5,124,4,124,2,131,2,114,49,124,3,116,1,106,6, + 118,0,114,30,116,7,125,5,110,9,116,0,160,8,124,3, + 161,1,114,38,116,9,125,5,110,1,113,13,116,10,124,4, + 124,5,131,2,125,6,116,11,124,6,124,4,131,2,1,0, + 113,13,116,1,106,3,116,12,25,0,125,7,100,1,68,0, + 93,23,125,8,124,8,116,1,106,3,118,1,114,69,116,13, + 124,8,131,1,125,9,110,5,116,1,106,3,124,8,25,0, + 125,9,116,14,124,7,124,8,124,9,131,3,1,0,113,57, + 100,2,83,0,41,3,122,250,83,101,116,117,112,32,105,109, + 112,111,114,116,108,105,98,32,98,121,32,105,109,112,111,114, + 116,105,110,103,32,110,101,101,100,101,100,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,115,32,97,110,100, + 32,105,110,106,101,99,116,105,110,103,32,116,104,101,109,10, + 32,32,32,32,105,110,116,111,32,116,104,101,32,103,108,111, + 98,97,108,32,110,97,109,101,115,112,97,99,101,46,10,10, + 32,32,32,32,65,115,32,115,121,115,32,105,115,32,110,101, + 101,100,101,100,32,102,111,114,32,115,121,115,46,109,111,100, + 117,108,101,115,32,97,99,99,101,115,115,32,97,110,100,32, + 95,105,109,112,32,105,115,32,110,101,101,100,101,100,32,116, + 111,32,108,111,97,100,32,98,117,105,108,116,45,105,110,10, + 32,32,32,32,109,111,100,117,108,101,115,44,32,116,104,111, + 115,101,32,116,119,111,32,109,111,100,117,108,101,115,32,109, + 117,115,116,32,98,101,32,101,120,112,108,105,99,105,116,108, + 121,32,112,97,115,115,101,100,32,105,110,46,10,10,32,32, + 32,32,41,3,114,27,0,0,0,114,101,0,0,0,114,72, + 0,0,0,78,41,15,114,65,0,0,0,114,18,0,0,0, + 114,3,0,0,0,114,105,0,0,0,218,5,105,116,101,109, + 115,114,216,0,0,0,114,87,0,0,0,114,175,0,0,0, + 114,98,0,0,0,114,193,0,0,0,114,155,0,0,0,114, + 161,0,0,0,114,8,0,0,0,114,244,0,0,0,114,11, + 0,0,0,41,10,218,10,115,121,115,95,109,111,100,117,108, + 101,218,11,95,105,109,112,95,109,111,100,117,108,101,90,11, + 109,111,100,117,108,101,95,116,121,112,101,114,20,0,0,0, + 114,110,0,0,0,114,122,0,0,0,114,109,0,0,0,90, + 11,115,101,108,102,95,109,111,100,117,108,101,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,32,32,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,6,95,115,101,116,117, + 112,137,4,0,0,115,40,0,0,0,4,9,4,1,8,3, + 18,1,10,1,10,1,6,1,10,1,6,1,2,2,10,1, + 10,1,2,128,10,3,8,1,10,1,10,1,10,2,14,1, + 4,251,114,17,0,0,0,114,248,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, + 0,115,38,0,0,0,116,0,124,0,124,1,131,2,1,0, + 116,1,106,2,160,3,116,4,161,1,1,0,116,1,106,2, + 160,3,116,5,161,1,1,0,100,1,83,0,41,2,122,48, + 73,110,115,116,97,108,108,32,105,109,112,111,114,116,101,114, + 115,32,102,111,114,32,98,117,105,108,116,105,110,32,97,110, + 100,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, + 78,41,6,114,248,0,0,0,114,18,0,0,0,114,214,0, + 0,0,114,132,0,0,0,114,175,0,0,0,114,193,0,0, + 0,41,2,114,246,0,0,0,114,247,0,0,0,32,32,114, + 5,0,0,0,218,8,95,105,110,115,116,97,108,108,172,4, + 0,0,115,6,0,0,0,10,2,12,2,16,1,114,17,0, + 0,0,114,249,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,32,0,0, + 0,100,1,100,2,108,0,125,0,124,0,97,1,124,0,160, + 2,116,3,106,4,116,5,25,0,161,1,1,0,100,2,83, + 0,41,3,122,57,73,110,115,116,97,108,108,32,105,109,112, + 111,114,116,101,114,115,32,116,104,97,116,32,114,101,113,117, + 105,114,101,32,101,120,116,101,114,110,97,108,32,102,105,108, + 101,115,121,115,116,101,109,32,97,99,99,101,115,115,114,26, + 0,0,0,78,41,6,218,26,95,102,114,111,122,101,110,95, + 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110, + 97,108,114,139,0,0,0,114,249,0,0,0,114,18,0,0, + 0,114,105,0,0,0,114,8,0,0,0,41,1,114,250,0, + 0,0,32,114,5,0,0,0,218,27,95,105,110,115,116,97, + 108,108,95,101,120,116,101,114,110,97,108,95,105,109,112,111, + 114,116,101,114,115,180,4,0,0,115,6,0,0,0,8,3, + 4,1,20,1,114,17,0,0,0,114,251,0,0,0,114,190, + 0,0,0,114,0,0,0,0,114,25,0,0,0,41,4,78, + 78,114,23,0,0,0,114,26,0,0,0,41,54,114,9,0, + 0,0,114,6,0,0,0,114,27,0,0,0,114,101,0,0, + 0,114,72,0,0,0,114,139,0,0,0,114,16,0,0,0, + 114,21,0,0,0,114,67,0,0,0,114,38,0,0,0,114, + 48,0,0,0,114,22,0,0,0,114,24,0,0,0,114,56, + 0,0,0,114,58,0,0,0,114,61,0,0,0,114,73,0, + 0,0,114,75,0,0,0,114,84,0,0,0,114,95,0,0, + 0,114,100,0,0,0,114,111,0,0,0,114,124,0,0,0, + 114,125,0,0,0,114,104,0,0,0,114,155,0,0,0,114, + 161,0,0,0,114,165,0,0,0,114,119,0,0,0,114,106, + 0,0,0,114,172,0,0,0,114,173,0,0,0,114,107,0, + 0,0,114,175,0,0,0,114,193,0,0,0,114,200,0,0, + 0,114,211,0,0,0,114,213,0,0,0,114,215,0,0,0, + 114,221,0,0,0,90,15,95,69,82,82,95,77,83,71,95, + 80,82,69,70,73,88,114,223,0,0,0,114,226,0,0,0, + 218,6,111,98,106,101,99,116,114,227,0,0,0,114,228,0, + 0,0,114,229,0,0,0,114,234,0,0,0,114,240,0,0, + 0,114,243,0,0,0,114,244,0,0,0,114,248,0,0,0, + 114,249,0,0,0,114,251,0,0,0,114,23,0,0,0,114, + 5,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,104,0,0,0,4,0,8,22,4,9,4,1,4, + 1,4,3,8,3,8,8,4,8,4,2,16,3,14,4,14, + 77,14,21,8,16,8,37,8,17,14,11,8,8,8,11,8, + 12,8,19,14,26,16,101,10,26,14,45,8,72,8,17,8, + 17,8,30,8,36,8,45,14,15,14,80,14,85,8,13,8, + 9,10,10,8,47,4,16,8,1,8,2,6,32,8,3,10, + 16,14,15,8,37,10,27,8,37,8,7,8,35,12,8,114, + 17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index f8642890580d7b..69dc6cad421c1c 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -92,1256 +92,1232 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,3,0,0,0,3,0,0,0, - 115,64,0,0,0,135,1,116,0,106,1,160,2,116,3,161, - 1,114,26,116,0,106,1,160,2,116,4,161,1,114,16,100, - 1,138,1,110,2,100,2,138,1,136,1,102,1,100,3,100, - 4,132,8,125,0,124,0,83,0,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,2,0,0,0,19,0,0,0,115,20,0,0, - 0,116,0,106,1,106,2,12,0,111,9,137,0,116,3,106, - 4,118,0,83,0,41,2,122,94,84,114,117,101,32,105,102, + 115,62,0,0,0,116,0,106,1,160,2,116,3,161,1,114, + 25,116,0,106,1,160,2,116,4,161,1,114,15,100,1,137, + 1,110,2,100,2,137,1,135,1,102,1,100,3,100,4,132, + 8,125,0,124,0,83,0,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,2,0,0,0,19,0,0,0,115,20,0,0,0,116, + 0,106,1,106,2,12,0,111,9,136,0,116,3,106,4,118, + 0,83,0,41,2,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,78,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,169,1,218,3,107,101,121,128,114,7, + 0,0,0,218,11,95,114,101,108,97,120,95,99,97,115,101, + 67,0,0,0,243,2,0,0,0,20,2,114,9,0,0,0, + 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,1,0,0,0,83,0,0,0,243,4,0,0, + 0,100,1,83,0,41,3,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,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,78,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,169,1,218,3,107,101,121,128, - 114,7,0,0,0,218,11,95,114,101,108,97,120,95,99,97, - 115,101,67,0,0,0,243,2,0,0,0,20,2,114,9,0, - 0,0,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,1,0,0,0,83,0,0,0,243,4, - 0,0,0,100,1,83,0,41,3,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,78,114,12,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,22,0,0,0,71,0,0,0,243,2,0,0,0,4, - 2,114,9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0, - 0,32,64,114,7,0,0,0,218,16,95,109,97,107,101,95, - 114,101,108,97,120,95,99,97,115,101,60,0,0,0,115,18, - 0,0,0,2,128,12,1,12,1,6,1,4,2,12,2,4, - 7,8,253,4,3,114,9,0,0,0,114,30,0,0,0,99, - 1,0,0,0,0,0,0,0,0,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,5,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,78,41,2,218,3,105,110,116,218,8,116,111,95, - 98,121,116,101,115,41,1,218,1,120,32,114,7,0,0,0, - 218,12,95,112,97,99,107,95,117,105,110,116,51,50,79,0, - 0,0,114,23,0,0,0,114,9,0,0,0,114,37,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,67,0,0,0,243,28,0,0,0,116,0,124,0,131, - 1,100,1,107,2,115,8,74,0,130,1,116,1,160,2,124, - 0,100,2,161,2,83,0,41,4,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,32,0,0,0,114, - 33,0,0,0,78,169,3,114,4,0,0,0,114,34,0,0, - 0,218,10,102,114,111,109,95,98,121,116,101,115,169,1,218, - 4,100,97,116,97,32,114,7,0,0,0,218,14,95,117,110, - 112,97,99,107,95,117,105,110,116,51,50,84,0,0,0,243, - 4,0,0,0,16,2,12,1,114,9,0,0,0,114,43,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114, - 41,0,0,0,32,114,7,0,0,0,218,14,95,117,110,112, - 97,99,107,95,117,105,110,116,49,54,89,0,0,0,114,44, - 0,0,0,114,9,0,0,0,114,46,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,71,0, - 0,0,115,228,0,0,0,124,0,115,4,100,1,83,0,116, - 0,124,0,131,1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124, - 3,160,4,116,5,161,1,115,38,124,3,160,6,116,5,161, - 1,114,51,124,3,160,7,116,8,161,1,112,44,124,1,125, - 1,116,9,124,4,23,0,103,1,125,2,113,24,124,3,160, - 6,100,4,161,1,114,76,124,1,160,10,161,0,124,3,160, - 10,161,0,107,3,114,70,124,3,125,1,124,4,103,1,125, - 2,113,24,124,2,160,11,124,4,161,1,1,0,113,24,124, - 3,112,79,124,1,125,1,124,2,160,11,124,4,161,1,1, - 0,113,24,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,107,124,2,100, - 3,25,0,115,107,124,1,116,9,23,0,83,0,124,1,116, - 9,160,12,124,2,161,1,23,0,83,0,41,8,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,10, - 0,0,0,114,3,0,0,0,114,0,0,0,0,114,11,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,83,0,0,0,243,26,0,0,0,103,0,124,0, - 93,9,125,1,124,1,114,2,124,1,160,0,116,1,161,1, - 145,2,113,2,83,0,114,12,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,41,2,114,5,0,0,0,218,1,112, - 32,32,114,7,0,0,0,218,10,60,108,105,115,116,99,111, - 109,112,62,119,0,0,0,115,2,0,0,0,26,0,114,9, - 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,78,41,13,114,4,0,0,0,218,3,109,97,112, - 114,19,0,0,0,218,15,95,112,97,116,104,95,115,112,108, - 105,116,114,111,111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32, - 114,7,0,0,0,218,10,95,112,97,116,104,95,106,111,105, - 110,96,0,0,0,115,42,0,0,0,4,2,4,1,12,1, - 8,1,4,1,4,1,20,1,20,1,14,1,12,1,10,1, - 16,1,4,3,8,1,12,2,8,2,12,1,14,1,20,1, - 8,2,14,1,114,9,0,0,0,114,67,0,0,0,99,0, - 0,0,0,0,0,0,0,0,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,4,114,47, + 105,110,115,101,110,115,105,116,105,118,101,108,121,46,70,78, + 114,12,0,0,0,114,12,0,0,0,114,7,0,0,0,114, + 22,0,0,0,71,0,0,0,243,2,0,0,0,4,2,114, + 9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0,0,32, + 64,114,7,0,0,0,218,16,95,109,97,107,101,95,114,101, + 108,97,120,95,99,97,115,101,60,0,0,0,115,16,0,0, + 0,12,1,12,1,6,1,4,2,12,2,4,7,8,253,4, + 3,114,9,0,0,0,114,30,0,0,0,99,1,0,0,0, + 0,0,0,0,0,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,5,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,78, + 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101, + 115,41,1,218,1,120,32,114,7,0,0,0,218,12,95,112, + 97,99,107,95,117,105,110,116,51,50,79,0,0,0,114,23, + 0,0,0,114,9,0,0,0,114,37,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,243,28,0,0,0,116,0,124,0,131,1,100,1,107, + 2,115,8,74,0,130,1,116,1,160,2,124,0,100,2,161, + 2,83,0,41,4,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,32,0,0,0,114,33,0,0,0, + 78,169,3,114,4,0,0,0,114,34,0,0,0,218,10,102, + 114,111,109,95,98,121,116,101,115,169,1,218,4,100,97,116, + 97,32,114,7,0,0,0,218,14,95,117,110,112,97,99,107, + 95,117,105,110,116,51,50,84,0,0,0,243,4,0,0,0, + 16,2,12,1,114,9,0,0,0,114,43,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114,41,0,0,0, + 32,114,7,0,0,0,218,14,95,117,110,112,97,99,107,95, + 117,105,110,116,49,54,89,0,0,0,114,44,0,0,0,114, + 9,0,0,0,114,46,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,71,0,0,0,115,228, + 0,0,0,124,0,115,4,100,1,83,0,116,0,124,0,131, + 1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4,116, + 5,161,1,115,38,124,3,160,6,116,5,161,1,114,51,124, + 3,160,7,116,8,161,1,112,44,124,1,125,1,116,9,124, + 4,23,0,103,1,125,2,113,24,124,3,160,6,100,4,161, + 1,114,76,124,1,160,10,161,0,124,3,160,10,161,0,107, + 3,114,70,124,3,125,1,124,4,103,1,125,2,113,24,124, + 2,160,11,124,4,161,1,1,0,113,24,124,3,112,79,124, + 1,125,1,124,2,160,11,124,4,161,1,1,0,113,24,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,107,124,2,100,3,25,0,115, + 107,124,1,116,9,23,0,83,0,124,1,116,9,160,12,124, + 2,161,1,23,0,83,0,41,8,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,10,0,0,0,114, + 3,0,0,0,114,0,0,0,0,114,11,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,83, + 0,0,0,243,26,0,0,0,103,0,124,0,93,9,125,1, + 124,1,114,2,124,1,160,0,116,1,161,1,145,2,113,2, + 83,0,114,12,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,41,2,114,5,0,0,0,218,1,112,32,32,114,7, + 0,0,0,218,10,60,108,105,115,116,99,111,109,112,62,119, + 0,0,0,115,2,0,0,0,26,0,114,9,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,78, + 41,13,114,4,0,0,0,218,3,109,97,112,114,19,0,0, + 0,218,15,95,112,97,116,104,95,115,112,108,105,116,114,111, + 111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32,114,7,0,0, + 0,218,10,95,112,97,116,104,95,106,111,105,110,96,0,0, + 0,115,42,0,0,0,4,2,4,1,12,1,8,1,4,1, + 4,1,20,1,20,1,14,1,12,1,10,1,16,1,4,3, + 8,1,12,2,8,2,12,1,14,1,20,1,8,2,14,1, + 114,9,0,0,0,114,67,0,0,0,99,0,0,0,0,0, + 0,0,0,0,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,4,114,47,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 83,0,0,0,114,48,0,0,0,114,12,0,0,0,114,49, + 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, + 32,32,114,7,0,0,0,114,53,0,0,0,128,0,0,0, + 115,6,0,0,0,6,0,6,1,14,255,114,9,0,0,0, + 114,54,0,0,0,78,41,2,114,59,0,0,0,114,62,0, + 0,0,41,1,114,63,0,0,0,32,114,7,0,0,0,114, + 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, + 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,66,0, + 0,0,116,0,135,2,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,19, + 100,4,136,2,102,2,83,0,136,2,100,5,124,1,133,2, + 25,0,136,2,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,4,0,0,0,51,0,0,0,115,26,0, + 0,0,129,0,124,0,93,8,125,1,136,2,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,41,3,114,5,0,0,0,114, + 52,0,0,0,114,65,0,0,0,32,32,128,114,7,0,0, + 0,114,8,0,0,0,134,0,0,0,115,4,0,0,0,6, + 128,20,0,114,9,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,10,0, + 0,0,78,114,3,0,0,0,41,2,218,3,109,97,120,114, + 51,0,0,0,41,3,114,65,0,0,0,218,1,105,114,65, + 0,0,0,96,32,64,114,7,0,0,0,218,11,95,112,97, + 116,104,95,115,112,108,105,116,132,0,0,0,115,8,0,0, + 0,22,2,8,1,8,1,28,1,114,9,0,0,0,114,73, 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,83,0,0,0,114,48,0,0,0,114,12,0, - 0,0,114,49,0,0,0,41,2,114,5,0,0,0,218,4, - 112,97,114,116,32,32,114,7,0,0,0,114,53,0,0,0, - 128,0,0,0,115,6,0,0,0,6,0,6,1,14,255,114, - 9,0,0,0,114,54,0,0,0,78,41,2,114,59,0,0, - 0,114,62,0,0,0,41,1,114,63,0,0,0,32,114,7, - 0,0,0,114,67,0,0,0,126,0,0,0,115,6,0,0, - 0,10,2,2,1,8,255,114,9,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, - 0,115,68,0,0,0,135,2,116,0,136,2,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,20,100,4,137,2,102,2,83,0,137,2, - 100,5,124,1,133,2,25,0,137,2,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,4,0,0,0,51, - 0,0,0,115,26,0,0,0,129,0,124,0,93,8,125,1, - 137,2,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,41,3, - 114,5,0,0,0,114,52,0,0,0,114,65,0,0,0,32, - 32,128,114,7,0,0,0,114,8,0,0,0,134,0,0,0, - 115,4,0,0,0,6,128,20,0,114,9,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,10,0,0,0,78,114,3,0,0,0,41,2, - 218,3,109,97,120,114,51,0,0,0,41,3,114,65,0,0, - 0,218,1,105,114,65,0,0,0,96,32,64,114,7,0,0, - 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, - 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, - 1,114,9,0,0,0,114,73,0,0,0,99,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,2,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,78,41,2,114,19,0,0, + 0,90,4,115,116,97,116,169,1,114,65,0,0,0,32,114, + 7,0,0,0,218,10,95,112,97,116,104,95,115,116,97,116, + 140,0,0,0,115,2,0,0,0,10,7,114,9,0,0,0, + 114,75,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,50,0,0,0,9, + 0,116,0,124,0,131,1,125,2,110,11,35,0,4,0,116, + 1,121,24,1,0,1,0,1,0,89,0,100,1,83,0,37, + 0,124,2,106,2,100,2,64,0,124,1,107,2,83,0,119, + 0,41,4,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,78,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,32,32, + 32,114,7,0,0,0,218,18,95,112,97,116,104,95,105,115, + 95,109,111,100,101,95,116,121,112,101,150,0,0,0,115,16, + 0,0,0,2,2,10,1,2,128,12,1,6,1,2,128,14, + 1,2,254,115,12,0,0,0,129,4,6,0,134,7,16,7, + 152,1,16,7,114,79,0,0,0,99,1,0,0,0,0,0, + 0,0,0,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,3,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,78,41,1,114,79,0,0,0,114,74,0, + 0,0,32,114,7,0,0,0,218,12,95,112,97,116,104,95, + 105,115,102,105,108,101,159,0,0,0,243,2,0,0,0,10, + 2,114,9,0,0,0,114,80,0,0,0,99,1,0,0,0, 0,0,0,0,0,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, - 2,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,78,41,2,114,19,0,0,0,90,4,115,116,97,116,169, - 1,114,65,0,0,0,32,114,7,0,0,0,218,10,95,112, - 97,116,104,95,115,116,97,116,140,0,0,0,115,2,0,0, - 0,10,7,114,9,0,0,0,114,75,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,50,0,0,0,9,0,116,0,124,0,131,1,125, - 2,110,11,35,0,4,0,116,1,121,24,1,0,1,0,1, - 0,89,0,100,1,83,0,37,0,124,2,106,2,100,2,64, - 0,124,1,107,2,83,0,119,0,41,4,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,78,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,32,32,32,114,7,0,0,0,218,18, - 95,112,97,116,104,95,105,115,95,109,111,100,101,95,116,121, - 112,101,150,0,0,0,115,16,0,0,0,2,2,10,1,2, - 128,12,1,6,1,2,128,14,1,2,254,115,12,0,0,0, - 129,4,6,0,134,7,16,7,152,1,16,7,114,79,0,0, - 0,99,1,0,0,0,0,0,0,0,0,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,3,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,78,41,1, - 114,79,0,0,0,114,74,0,0,0,32,114,7,0,0,0, - 218,12,95,112,97,116,104,95,105,115,102,105,108,101,159,0, - 0,0,243,2,0,0,0,10,2,114,9,0,0,0,114,80, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,22,0,0,0,124,0,115, - 6,116,0,160,1,161,0,125,0,116,2,124,0,100,1,131, - 2,83,0,41,3,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,78,41,3,114,19,0, - 0,0,218,6,103,101,116,99,119,100,114,79,0,0,0,114, - 74,0,0,0,32,114,7,0,0,0,218,11,95,112,97,116, - 104,95,105,115,100,105,114,164,0,0,0,115,6,0,0,0, - 4,2,8,1,10,1,114,9,0,0,0,114,83,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,62,0,0,0,124,0,115,4,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,30,124,1,160,4,100,6,161,1,112,30,124,1, - 160,5,100,4,161,1,83,0,41,8,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,3,0,0,0,122, - 2,92,92,78,41,6,114,19,0,0,0,114,56,0,0,0, - 218,7,114,101,112,108,97,99,101,114,4,0,0,0,114,27, - 0,0,0,114,58,0,0,0,41,2,114,65,0,0,0,114, - 64,0,0,0,32,32,114,7,0,0,0,218,11,95,112,97, - 116,104,95,105,115,97,98,115,172,0,0,0,115,8,0,0, - 0,4,2,4,1,22,1,32,1,114,9,0,0,0,114,86, - 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,114,84,0,0,0,78,41, - 2,114,27,0,0,0,114,51,0,0,0,114,74,0,0,0, - 32,114,7,0,0,0,114,86,0,0,0,180,0,0,0,114, - 81,0,0,0,114,9,0,0,0,233,182,1,0,0,99,3, - 0,0,0,0,0,0,0,0,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,9,0,116,7,160,8,124,4, - 100,3,161,2,53,0,125,5,124,5,160,9,124,1,161,1, - 1,0,100,4,4,0,4,0,131,3,1,0,110,11,35,0, - 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,116,2,160,10,124,3,124,0,161,2,1,0, - 100,4,83,0,35,0,4,0,116,11,121,88,1,0,1,0, - 1,0,9,0,116,2,160,12,124,3,161,1,1,0,130,0, - 35,0,4,0,116,11,121,87,1,0,1,0,1,0,89,0, - 130,0,37,0,37,0,119,0,119,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,87,0,0,0,90,2,119,98, - 78,41,13,218,6,102,111,114,109,97,116,218,2,105,100,114, - 19,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,85,0,0,0,114,76, - 0,0,0,90,6,117,110,108,105,110,107,41,6,114,65,0, - 0,0,114,42,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, - 32,32,32,32,32,32,114,7,0,0,0,218,13,95,119,114, - 105,116,101,95,97,116,111,109,105,99,185,0,0,0,115,44, - 0,0,0,16,5,6,1,22,1,4,255,2,2,14,3,10, - 1,12,255,22,128,16,2,2,128,12,1,2,1,10,1,2, - 3,2,128,12,254,2,1,2,1,4,128,2,254,2,253,115, - 69,0,0,0,153,6,62,0,159,6,43,3,165,6,62,0, - 171,4,47,11,175,1,62,0,176,3,47,11,179,9,62,0, - 190,7,65,22,7,193,6,5,65,12,6,193,11,1,65,22, - 7,193,12,7,65,21,13,193,19,3,65,22,7,193,23,1, - 65,21,13,193,24,1,65,22,7,114,95,0,0,0,105,127, - 13,0,0,114,45,0,0,0,114,33,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,119,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,5,0,0,0,67,0,0,0,115,80,1, - 0,0,124,1,100,1,117,1,114,26,116,0,160,1,100,2, - 116,2,161,2,1,0,124,2,100,1,117,1,114,20,100,3, - 125,3,116,3,124,3,131,1,130,1,124,1,114,24,100,4, - 110,1,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,57,116,11,100,7, - 131,1,130,1,100,4,160,12,124,6,114,63,124,6,110,1, - 124,8,124,7,124,9,103,3,161,1,125,10,124,2,100,1, - 117,0,114,86,116,8,106,13,106,14,100,8,107,2,114,82, - 100,4,125,2,110,4,116,8,106,13,106,14,125,2,116,15, - 124,2,131,1,125,2,124,2,100,4,107,3,114,112,124,2, - 160,16,161,0,115,105,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,114,162,116,22,124,4,131,1,115,134, - 116,23,116,4,160,24,161,0,124,4,131,2,125,4,124,4, - 100,5,25,0,100,11,107,2,114,152,124,4,100,8,25,0, - 116,25,118,1,114,152,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,10,0,0,0,114,3,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, - 11,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,19,0,0,0, - 218,6,102,115,112,97,116,104,114,73,0,0,0,218,10,114, - 112,97,114,116,105,116,105,111,110,114,16,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,17,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,89,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,86,0,0,0,114, - 67,0,0,0,114,82,0,0,0,114,51,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,96,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,6,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,32,32,32,32,32,32,32,32,32,32,32,32,114,7,0, - 0,0,218,17,99,97,99,104,101,95,102,114,111,109,95,115, - 111,117,114,99,101,130,1,0,0,115,72,0,0,0,8,18, - 6,1,2,1,4,255,8,2,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,1,8,2,8,1,8,1,8,1,14,1,14,1,12,1, - 10,1,8,9,14,1,24,5,12,1,2,4,4,1,8,1, - 2,1,4,253,12,5,114,9,0,0,0,114,121,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,40,1,0,0,116,0,106,1,106,2, - 100,1,117,0,114,10,116,3,100,2,131,1,130,1,116,4, + 115,22,0,0,0,124,0,115,6,116,0,160,1,161,0,125, + 0,116,2,124,0,100,1,131,2,83,0,41,3,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,78,41,3,114,19,0,0,0,218,6,103,101,116,99, + 119,100,114,79,0,0,0,114,74,0,0,0,32,114,7,0, + 0,0,218,11,95,112,97,116,104,95,105,115,100,105,114,164, + 0,0,0,115,6,0,0,0,4,2,8,1,10,1,114,9, + 0,0,0,114,83,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,62,0, + 0,0,124,0,115,4,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,30,124,1,160,4, + 100,6,161,1,112,30,124,1,160,5,100,4,161,1,83,0, + 41,8,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,3,0,0,0,122,2,92,92,78,41,6,114,19, + 0,0,0,114,56,0,0,0,218,7,114,101,112,108,97,99, + 101,114,4,0,0,0,114,27,0,0,0,114,58,0,0,0, + 41,2,114,65,0,0,0,114,64,0,0,0,32,32,114,7, + 0,0,0,218,11,95,112,97,116,104,95,105,115,97,98,115, + 172,0,0,0,115,8,0,0,0,4,2,4,1,22,1,32, + 1,114,9,0,0,0,114,86,0,0,0,99,1,0,0,0, + 0,0,0,0,0,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, + 2,114,84,0,0,0,78,41,2,114,27,0,0,0,114,51, + 0,0,0,114,74,0,0,0,32,114,7,0,0,0,114,86, + 0,0,0,180,0,0,0,114,81,0,0,0,114,9,0,0, + 0,233,182,1,0,0,99,3,0,0,0,0,0,0,0,0, + 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, + 9,0,116,7,160,8,124,4,100,3,161,2,53,0,125,5, + 124,5,160,9,124,1,161,1,1,0,100,4,4,0,4,0, + 131,3,1,0,110,11,35,0,49,0,115,48,119,4,37,0, + 1,0,1,0,1,0,89,0,1,0,1,0,116,2,160,10, + 124,3,124,0,161,2,1,0,100,4,83,0,35,0,4,0, + 116,11,121,88,1,0,1,0,1,0,9,0,116,2,160,12, + 124,3,161,1,1,0,130,0,35,0,4,0,116,11,121,87, + 1,0,1,0,1,0,89,0,130,0,37,0,37,0,119,0, + 119,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, + 87,0,0,0,90,2,119,98,78,41,13,218,6,102,111,114, + 109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0,0,90,6,117,110,108, + 105,110,107,41,6,114,65,0,0,0,114,42,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,32,32,32,32,32,32,114,7, + 0,0,0,218,13,95,119,114,105,116,101,95,97,116,111,109, + 105,99,185,0,0,0,115,44,0,0,0,16,5,6,1,22, + 1,4,255,2,2,14,3,10,1,12,255,22,128,16,2,2, + 128,12,1,2,1,10,1,2,3,2,128,12,254,2,1,2, + 1,4,128,2,254,2,253,115,69,0,0,0,153,6,62,0, + 159,6,43,3,165,6,62,0,171,4,47,11,175,1,62,0, + 176,3,47,11,179,9,62,0,190,7,65,22,7,193,6,5, + 65,12,6,193,11,1,65,22,7,193,12,7,65,21,13,193, + 19,3,65,22,7,193,23,1,65,21,13,193,24,1,65,22, + 7,114,95,0,0,0,105,126,13,0,0,114,45,0,0,0, + 114,33,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,119,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,5,0,0, + 0,67,0,0,0,115,80,1,0,0,124,1,100,1,117,1, + 114,26,116,0,160,1,100,2,116,2,161,2,1,0,124,2, + 100,1,117,1,114,20,100,3,125,3,116,3,124,3,131,1, + 130,1,124,1,114,24,100,4,110,1,100,5,125,2,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,51,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,51,124,1,116,12, - 124,4,131,1,100,1,133,2,25,0,125,1,100,4,125,3, - 124,3,115,72,116,6,124,1,131,1,92,2,125,1,125,5, - 124,5,116,13,107,3,114,72,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,88,116,14,100,8, - 124,2,155,2,157,2,131,1,130,1,124,6,100,9,107,2, - 114,132,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,112,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, - 115,132,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,98,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,97,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,122,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,16,0,0,0,114,105,0,0,0,114,106, - 0,0,0,114,107,0,0,0,114,19,0,0,0,114,103,0, - 0,0,114,73,0,0,0,114,114,0,0,0,114,50,0,0, - 0,114,51,0,0,0,114,27,0,0,0,114,59,0,0,0, - 114,4,0,0,0,114,116,0,0,0,114,111,0,0,0,218, - 5,99,111,117,110,116,218,6,114,115,112,108,105,116,114,112, - 0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32,32,32,32,32,114,7,0,0, - 0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99, - 97,99,104,101,201,1,0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8, - 1,14,1,8,1,16,1,10,1,4,1,2,1,8,255,16, - 2,8,1,16,1,14,2,18,1,114,9,0,0,0,114,128, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,67,0,0,0,115,126,0,0,0,116,0,124, - 0,131,1,100,1,107,2,114,8,100,2,83,0,124,0,160, - 1,100,3,161,1,92,3,125,1,125,2,125,3,124,1,114, - 28,124,3,160,2,161,0,100,4,100,5,133,2,25,0,100, - 6,107,3,114,30,124,0,83,0,9,0,116,3,124,0,131, - 1,125,4,110,18,35,0,4,0,116,4,116,5,102,2,121, - 62,1,0,1,0,1,0,124,0,100,2,100,5,133,2,25, - 0,125,4,89,0,110,1,37,0,116,6,124,4,131,1,114, - 60,124,4,83,0,124,0,83,0,119,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,97,0,0,0,233,253,255,255,255,233,255,255,255,255, - 90,2,112,121,41,7,114,4,0,0,0,114,104,0,0,0, - 218,5,108,111,119,101,114,114,128,0,0,0,114,107,0,0, - 0,114,111,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,119,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,32,32,32,32, - 32,114,7,0,0,0,218,15,95,103,101,116,95,115,111,117, - 114,99,101,102,105,108,101,241,1,0,0,115,26,0,0,0, - 12,7,4,1,16,1,24,1,4,1,2,1,10,1,2,128, - 16,1,16,1,2,128,16,1,2,254,115,12,0,0,0,159, - 4,36,0,164,15,53,7,190,1,53,7,114,135,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,70,0,0,0,124,0,160,0,116,1, - 116,2,131,1,161,1,114,23,9,0,116,3,124,0,131,1, - 83,0,35,0,4,0,116,4,121,34,1,0,1,0,1,0, - 89,0,100,0,83,0,37,0,124,0,160,0,116,1,116,5, - 131,1,161,1,114,32,124,0,83,0,100,0,83,0,119,0, - 114,69,0,0,0,41,6,114,58,0,0,0,218,5,116,117, - 112,108,101,114,127,0,0,0,114,121,0,0,0,114,107,0, - 0,0,114,113,0,0,0,41,1,114,120,0,0,0,32,114, - 7,0,0,0,218,11,95,103,101,116,95,99,97,99,104,101, - 100,4,2,0,0,115,22,0,0,0,14,1,2,1,8,1, - 2,128,12,1,6,1,2,128,14,1,4,1,4,2,2,251, - 115,12,0,0,0,136,3,12,0,140,7,22,7,162,1,22, - 7,114,137,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,8,0,0,0,67,0,0,0,115,52,0,0,0, - 9,0,116,0,124,0,131,1,106,1,125,1,110,12,35,0, - 4,0,116,2,121,25,1,0,1,0,1,0,100,1,125,1, - 89,0,110,1,37,0,124,1,100,2,79,0,125,1,124,1, - 83,0,119,0,41,4,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,87,0,0,0, - 233,128,0,0,0,78,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,32,32,114,7,0,0,0,218,10,95,99,97,108, - 99,95,109,111,100,101,16,2,0,0,115,18,0,0,0,2, - 2,12,1,2,128,12,1,8,1,2,128,8,3,4,1,2, - 251,115,12,0,0,0,129,5,7,0,135,9,18,7,153,1, - 18,7,114,139,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,3,0,0,0,115,54,0,0, - 0,135,3,100,6,136,3,102,1,100,2,100,3,132,9,125, - 1,116,0,100,1,117,1,114,16,116,0,106,1,125,2,110, - 4,100,4,100,5,132,0,125,2,124,2,124,1,137,3,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,5,0,0,0,31,0,0,0,115,76,0, - 0,0,124,1,100,0,117,0,114,8,124,0,106,0,125,1, - 110,18,124,0,106,0,124,1,107,3,114,26,116,1,100,1, - 124,0,106,0,155,1,100,2,124,1,155,1,157,4,124,1, - 100,3,141,2,130,1,137,4,124,0,124,1,103,2,124,2, - 162,1,82,0,105,0,124,3,164,1,142,1,83,0,41,4, - 78,122,11,108,111,97,100,101,114,32,102,111,114,32,122,15, - 32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,169, - 1,218,4,110,97,109,101,41,2,114,141,0,0,0,218,11, - 73,109,112,111,114,116,69,114,114,111,114,41,5,218,4,115, - 101,108,102,114,141,0,0,0,218,4,97,114,103,115,218,6, - 107,119,97,114,103,115,218,6,109,101,116,104,111,100,32,32, - 32,32,128,114,7,0,0,0,218,19,95,99,104,101,99,107, - 95,110,97,109,101,95,119,114,97,112,112,101,114,36,2,0, - 0,115,18,0,0,0,8,1,8,1,10,1,4,1,12,1, - 2,255,2,1,6,255,24,2,114,9,0,0,0,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,7,0,0,0,83,0,0,0,115,56,0,0, - 0,100,1,68,0,93,16,125,2,116,0,124,1,124,2,131, - 2,114,18,116,1,124,0,124,2,116,2,124,1,124,2,131, - 2,131,3,1,0,113,2,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,85,0,0,0,32,32,32,114,7, - 0,0,0,218,5,95,119,114,97,112,49,2,0,0,115,10, - 0,0,0,8,1,10,1,18,1,2,128,18,1,114,9,0, - 0,0,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,114,69, - 0,0,0,41,2,218,10,95,98,111,111,116,115,116,114,97, - 112,114,157,0,0,0,41,4,114,146,0,0,0,114,147,0, - 0,0,114,157,0,0,0,114,146,0,0,0,96,32,32,64, - 114,7,0,0,0,218,11,95,99,104,101,99,107,95,110,97, - 109,101,28,2,0,0,115,14,0,0,0,2,128,14,8,8, - 10,8,1,8,2,10,6,4,1,114,9,0,0,0,114,159, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 6,0,0,0,67,0,0,0,115,72,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,161, - 1,92,2,125,2,125,3,124,2,100,2,117,0,114,34,116, - 4,124,3,131,1,114,34,100,3,125,4,116,0,160,1,124, - 4,160,5,124,3,100,4,25,0,161,1,116,6,161,2,1, - 0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109,111,100,117,108, - 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, - 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, - 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,7,114,99,0,0,0,114,100,0,0,0, - 114,101,0,0,0,218,11,102,105,110,100,95,108,111,97,100, - 101,114,114,4,0,0,0,114,89,0,0,0,218,13,73,109, - 112,111,114,116,87,97,114,110,105,110,103,41,5,114,143,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,32,32,32,32,32,114,7,0,0,0,218,17,95, - 102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,109, - 59,2,0,0,115,16,0,0,0,6,7,2,2,4,254,14, - 6,16,1,4,1,22,1,4,1,114,9,0,0,0,114,166, - 0,0,0,99,3,0,0,0,0,0,0,0,0,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, - 32,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,53,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,81,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, - 32,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,142,0,0,0,114,4,0, - 0,0,218,8,69,79,70,69,114,114,111,114,114,43,0,0, - 0,41,6,114,42,0,0,0,114,141,0,0,0,218,11,101, - 120,99,95,100,101,116,97,105,108,115,90,5,109,97,103,105, - 99,114,117,0,0,0,114,17,0,0,0,32,32,32,32,32, - 32,114,7,0,0,0,218,13,95,99,108,97,115,115,105,102, - 121,95,112,121,99,79,2,0,0,115,28,0,0,0,12,16, - 8,1,16,1,12,1,16,1,12,1,10,1,12,1,8,1, - 16,1,8,2,16,1,16,1,4,1,114,9,0,0,0,114, - 175,0,0,0,99,5,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0, - 131,1,124,2,100,3,64,0,107,3,114,58,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,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,169,0,0,0,233,12,0, - 0,0,114,31,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, - 167,0,0,0,78,114,168,0,0,0,41,4,114,43,0,0, - 0,114,158,0,0,0,114,172,0,0,0,114,142,0,0,0, - 41,6,114,42,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,141,0,0,0,114,174,0,0,0,114,117,0,0, - 0,32,32,32,32,32,32,114,7,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,112,2,0,0,115,18,0,0,0,24,19, - 10,1,12,1,16,1,8,1,22,1,2,255,22,2,8,254, - 114,9,0,0,0,114,179,0,0,0,99,4,0,0,0,0, - 0,0,0,0,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,19,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, + 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,57,116,11,100,7,131,1,130,1,100,4,160,12, + 124,6,114,63,124,6,110,1,124,8,124,7,124,9,103,3, + 161,1,125,10,124,2,100,1,117,0,114,86,116,8,106,13, + 106,14,100,8,107,2,114,82,100,4,125,2,110,4,116,8, + 106,13,106,14,125,2,116,15,124,2,131,1,125,2,124,2, + 100,4,107,3,114,112,124,2,160,16,161,0,115,105,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,114,162, + 116,22,124,4,131,1,115,134,116,23,116,4,160,24,161,0, + 124,4,131,2,125,4,124,4,100,5,25,0,100,11,107,2, + 114,152,124,4,100,8,25,0,116,25,118,1,114,152,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,10,0,0, + 0,114,3,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,11,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,19,0,0,0,218,6,102,115,112,97,116,104, + 114,73,0,0,0,218,10,114,112,97,114,116,105,116,105,111, + 110,114,16,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,17,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,89,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,86,0,0,0,114,67,0,0,0,114,82,0,0, + 0,114,51,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, + 96,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,6, + 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,32,32,32,32,32,32,32, + 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, + 101,95,102,114,111,109,95,115,111,117,114,99,101,129,1,0, + 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, + 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,1,8,2,8,1,8,1, + 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, + 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, + 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,40,1, + 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133,2, + 25,0,125,1,100,4,125,3,124,3,115,72,116,6,124,1, + 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,72, + 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,88,116,14,100,8,124,2,155,2,157,2,131,1, + 130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16,0,0, + 0,114,105,0,0,0,114,106,0,0,0,114,107,0,0,0, + 114,19,0,0,0,114,103,0,0,0,114,73,0,0,0,114, + 114,0,0,0,114,50,0,0,0,114,51,0,0,0,114,27, + 0,0,0,114,59,0,0,0,114,4,0,0,0,114,116,0, + 0,0,114,111,0,0,0,218,5,99,111,117,110,116,218,6, + 114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32, + 32,32,32,32,114,7,0,0,0,218,17,115,111,117,114,99, + 101,95,102,114,111,109,95,99,97,99,104,101,200,1,0,0, + 115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1,10, + 1,4,1,2,1,8,255,16,2,8,1,16,1,14,2,18, + 1,114,9,0,0,0,114,128,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, + 115,126,0,0,0,116,0,124,0,131,1,100,1,107,2,114, + 8,100,2,83,0,124,0,160,1,100,3,161,1,92,3,125, + 1,125,2,125,3,124,1,114,28,124,3,160,2,161,0,100, + 4,100,5,133,2,25,0,100,6,107,3,114,30,124,0,83, + 0,9,0,116,3,124,0,131,1,125,4,110,18,35,0,4, + 0,116,4,116,5,102,2,121,62,1,0,1,0,1,0,124, + 0,100,2,100,5,133,2,25,0,125,4,89,0,110,1,37, + 0,116,6,124,4,131,1,114,60,124,4,83,0,124,0,83, + 0,119,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,97,0,0,0,233,253, + 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,4, + 0,0,0,114,104,0,0,0,218,5,108,111,119,101,114,114, + 128,0,0,0,114,107,0,0,0,114,111,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,119,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,32,32,32,32,32,114,7,0,0,0,218,15, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,240, + 1,0,0,115,26,0,0,0,12,7,4,1,16,1,24,1, + 4,1,2,1,10,1,2,128,16,1,16,1,2,128,16,1, + 2,254,115,12,0,0,0,159,4,36,0,164,15,53,7,190, + 1,53,7,114,135,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,116,1,116,2,131,1,161,1,114,23, + 9,0,116,3,124,0,131,1,83,0,35,0,4,0,116,4, + 121,34,1,0,1,0,1,0,89,0,100,0,83,0,37,0, + 124,0,160,0,116,1,116,5,131,1,161,1,114,32,124,0, + 83,0,100,0,83,0,119,0,114,69,0,0,0,41,6,114, + 58,0,0,0,218,5,116,117,112,108,101,114,127,0,0,0, + 114,121,0,0,0,114,107,0,0,0,114,113,0,0,0,41, + 1,114,120,0,0,0,32,114,7,0,0,0,218,11,95,103, + 101,116,95,99,97,99,104,101,100,3,2,0,0,115,22,0, + 0,0,14,1,2,1,8,1,2,128,12,1,6,1,2,128, + 14,1,4,1,4,2,2,251,115,12,0,0,0,136,3,12, + 0,140,7,22,7,162,1,22,7,114,137,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,52,0,0,0,9,0,116,0,124,0,131,1, + 106,1,125,1,110,12,35,0,4,0,116,2,121,25,1,0, + 1,0,1,0,100,1,125,1,89,0,110,1,37,0,124,1, + 100,2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,32,32,114,7,0, + 0,0,218,10,95,99,97,108,99,95,109,111,100,101,15,2, + 0,0,115,18,0,0,0,2,2,12,1,2,128,12,1,8, + 1,2,128,8,3,4,1,2,251,115,12,0,0,0,129,5, + 7,0,135,9,18,7,153,1,18,7,114,139,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 3,0,0,0,115,52,0,0,0,100,6,135,3,102,1,100, + 2,100,3,132,9,125,1,116,0,100,1,117,1,114,15,116, + 0,106,1,125,2,110,4,100,4,100,5,132,0,125,2,124, + 2,124,1,136,3,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,5,0,0,0,31, + 0,0,0,115,76,0,0,0,124,1,100,0,117,0,114,8, + 124,0,106,0,125,1,110,18,124,0,106,0,124,1,107,3, + 114,26,116,1,100,1,124,0,106,0,155,1,100,2,124,1, + 155,1,157,4,124,1,100,3,141,2,130,1,136,4,124,0, + 124,1,103,2,124,2,162,1,82,0,105,0,124,3,164,1, + 142,1,83,0,41,4,78,122,11,108,111,97,100,101,114,32, + 102,111,114,32,122,15,32,99,97,110,110,111,116,32,104,97, + 110,100,108,101,32,169,1,218,4,110,97,109,101,41,2,114, + 141,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, + 114,41,5,218,4,115,101,108,102,114,141,0,0,0,218,4, + 97,114,103,115,218,6,107,119,97,114,103,115,218,6,109,101, + 116,104,111,100,32,32,32,32,128,114,7,0,0,0,218,19, + 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, + 112,101,114,35,2,0,0,115,18,0,0,0,8,1,8,1, + 10,1,4,1,12,1,2,255,2,1,6,255,24,2,114,9, + 0,0,0,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,7,0,0,0,83,0, + 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, + 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, + 2,124,1,124,2,131,2,131,3,1,0,113,2,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,85,0,0, + 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, + 48,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, + 128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218,10,95,98,111, + 111,116,115,116,114,97,112,114,157,0,0,0,41,4,114,146, + 0,0,0,114,147,0,0,0,114,157,0,0,0,114,146,0, + 0,0,96,32,32,64,114,7,0,0,0,218,11,95,99,104, + 101,99,107,95,110,97,109,101,27,2,0,0,115,12,0,0, + 0,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, + 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, + 3,124,1,161,1,92,2,125,2,125,3,124,2,100,2,117, + 0,114,34,116,4,124,3,131,1,114,34,100,3,125,4,116, + 0,160,1,124,4,160,5,124,3,100,4,25,0,161,1,116, + 6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109, + 111,100,117,108,101,40,41,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, + 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, + 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, + 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, + 116,101,97,100,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,7,114,99,0,0,0,114, + 100,0,0,0,114,101,0,0,0,218,11,102,105,110,100,95, + 108,111,97,100,101,114,114,4,0,0,0,114,89,0,0,0, + 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, + 5,114,143,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,32,32,32,32,32,114,7,0,0, + 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, + 115,104,105,109,58,2,0,0,115,16,0,0,0,6,7,2, + 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, + 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, + 0,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,32,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,53,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,81,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,32,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,142,0,0, + 0,114,4,0,0,0,218,8,69,79,70,69,114,114,111,114, + 114,43,0,0,0,41,6,114,42,0,0,0,114,141,0,0, + 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, + 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, + 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, + 115,115,105,102,121,95,112,121,99,78,2,0,0,115,28,0, + 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, + 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, + 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7, + 133,2,25,0,131,1,124,2,100,3,64,0,107,3,114,58, + 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,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,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,169,0,0,0,114,168,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,142,0,0,0,41,4,114,42,0,0, - 0,218,11,115,111,117,114,99,101,95,104,97,115,104,114,141, - 0,0,0,114,174,0,0,0,32,32,32,32,114,7,0,0, - 0,218,18,95,118,97,108,105,100,97,116,101,95,104,97,115, - 104,95,112,121,99,140,2,0,0,115,14,0,0,0,16,17, - 2,1,8,1,4,255,2,2,6,254,4,255,114,9,0,0, - 0,114,181,0,0,0,99,4,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,67,0,0,0,115,76,0,0,0, - 116,0,160,1,124,0,161,1,125,4,116,2,124,4,116,3, - 131,2,114,28,116,4,160,5,100,1,124,2,161,2,1,0, - 124,3,100,2,117,1,114,26,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,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,141,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, - 172,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,142,0,0, - 0,114,89,0,0,0,41,5,114,42,0,0,0,114,141,0, - 0,0,114,132,0,0,0,114,134,0,0,0,218,4,99,111, - 100,101,32,32,32,32,32,114,7,0,0,0,218,17,95,99, - 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,164, - 2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,1, - 12,1,4,1,10,2,4,1,6,255,114,9,0,0,0,114, - 188,0,0,0,99,3,0,0,0,0,0,0,0,0,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,3,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,78,41,6,218,9,98,121,116, - 101,97,114,114,97,121,114,171,0,0,0,218,6,101,120,116, - 101,110,100,114,37,0,0,0,114,183,0,0,0,218,5,100, - 117,109,112,115,41,4,114,187,0,0,0,218,5,109,116,105, - 109,101,114,178,0,0,0,114,42,0,0,0,32,32,32,32, - 114,7,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,177,2,0, - 0,115,12,0,0,0,8,2,14,1,14,1,14,1,16,1, - 4,1,114,9,0,0,0,114,193,0,0,0,84,99,3,0, - 0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78,41,7,114,189, - 0,0,0,114,171,0,0,0,114,190,0,0,0,114,37,0, - 0,0,114,4,0,0,0,114,183,0,0,0,114,191,0,0, - 0,41,5,114,187,0,0,0,114,180,0,0,0,90,7,99, - 104,101,99,107,101,100,114,42,0,0,0,114,17,0,0,0, - 32,32,32,32,32,114,7,0,0,0,218,17,95,99,111,100, - 101,95,116,111,95,104,97,115,104,95,112,121,99,187,2,0, - 0,115,14,0,0,0,8,2,12,1,14,1,16,1,10,1, - 16,1,4,1,114,9,0,0,0,114,194,0,0,0,99,1, - 0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32,32,32,114,7, - 0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,114, - 99,101,198,2,0,0,115,10,0,0,0,8,5,12,1,10, - 1,12,1,20,1,114,9,0,0,0,114,199,0,0,0,169, - 2,114,163,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,8, - 0,0,0,67,0,0,0,115,60,1,0,0,124,1,100,1, - 117,0,114,29,100,2,125,1,116,0,124,2,100,3,131,2, - 114,28,9,0,124,2,160,1,124,0,161,1,125,1,110,39, - 35,0,4,0,116,2,121,157,1,0,1,0,1,0,89,0, - 110,30,37,0,110,28,116,3,160,4,124,1,161,1,125,1, - 116,5,124,1,131,1,115,57,9,0,116,6,116,3,160,7, - 161,0,124,1,131,2,125,1,110,10,35,0,4,0,116,8, - 121,156,1,0,1,0,1,0,89,0,110,1,37,0,116,9, - 160,10,124,0,124,2,124,1,100,4,166,3,125,4,100,5, - 124,4,95,11,124,2,100,1,117,0,114,99,116,12,131,0, - 68,0,93,21,92,2,125,5,125,6,124,1,160,13,116,14, - 124,6,131,1,161,1,114,96,124,5,124,0,124,1,131,2, - 125,2,124,2,124,4,95,15,1,0,113,99,113,75,100,1, - 83,0,124,3,116,16,117,0,114,131,116,0,124,2,100,6, - 131,2,114,130,9,0,124,2,160,17,124,0,161,1,125,7, - 110,10,35,0,4,0,116,2,121,155,1,0,1,0,1,0, - 89,0,110,10,37,0,124,7,114,130,103,0,124,4,95,18, - 110,3,124,3,124,4,95,18,124,4,106,18,103,0,107,2, - 114,153,124,1,114,153,116,19,124,1,131,1,100,7,25,0, - 125,8,124,4,106,18,160,20,124,8,161,1,1,0,124,4, - 83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0,0,0,114,142, - 0,0,0,114,19,0,0,0,114,103,0,0,0,114,86,0, - 0,0,114,67,0,0,0,114,82,0,0,0,114,76,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,136,0,0,0,114,163,0,0,0,218,9,95, - 80,79,80,85,76,65,84,69,114,205,0,0,0,114,201,0, - 0,0,114,73,0,0,0,114,61,0,0,0,41,9,114,141, - 0,0,0,90,8,108,111,99,97,116,105,111,110,114,163,0, - 0,0,114,201,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,205,0,0,0,90,7,100,105,114,110, - 97,109,101,32,32,32,32,32,32,32,32,32,114,7,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,215,2,0,0,115,96, - 0,0,0,8,12,4,4,10,1,2,2,12,1,2,128,12, - 1,4,1,2,128,2,251,10,7,8,1,2,1,16,1,2, - 128,12,1,4,1,2,128,16,8,6,1,8,3,14,1,14, - 1,10,1,6,1,4,1,2,253,4,5,8,3,10,2,2, - 1,12,1,2,128,12,1,4,1,2,128,4,2,6,1,2, - 128,6,2,10,1,4,1,12,1,12,1,4,2,2,244,2, - 228,2,249,115,44,0,0,0,140,5,18,0,146,7,27,7, - 167,7,47,0,175,7,56,7,193,45,5,65,51,0,193,51, - 7,65,60,7,194,27,1,65,60,7,194,28,1,56,7,194, - 29,1,27,7,114,212,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,88, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, - 2,90,4,100,3,90,5,101,6,111,15,100,4,101,7,118, - 0,90,8,101,9,100,5,100,6,132,0,131,1,90,10,101, - 11,100,7,100,8,132,0,131,1,90,12,101,11,100,14,100, - 10,100,11,132,1,131,1,90,13,101,11,100,15,100,12,100, - 13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100,99,1,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, - 0,115,52,0,0,0,9,0,116,0,160,1,116,0,106,2, - 124,0,161,2,83,0,35,0,4,0,116,3,121,25,1,0, - 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, - 6,0,89,0,83,0,37,0,119,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,114,20, - 0,0,0,32,114,7,0,0,0,218,14,95,111,112,101,110, - 95,114,101,103,105,115,116,114,121,44,3,0,0,115,14,0, - 0,0,2,2,14,1,2,128,12,1,18,1,2,128,2,255, - 115,12,0,0,0,129,6,8,0,136,14,24,7,153,1,24, - 7,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,9,0,0,0,67,0,0,0,115,136,0,0, - 0,124,0,106,0,114,7,124,0,106,1,125,2,110,3,124, - 0,106,2,125,2,124,2,160,3,124,1,100,1,116,4,106, - 5,100,0,100,2,133,2,25,0,22,0,100,3,166,2,125, - 3,9,0,124,0,160,6,124,3,161,1,53,0,125,4,116, - 7,160,8,124,4,100,4,161,2,125,5,100,0,4,0,4, - 0,131,3,1,0,110,11,35,0,49,0,115,48,119,4,37, - 0,1,0,1,0,1,0,89,0,1,0,1,0,124,5,83, - 0,35,0,4,0,116,9,121,67,1,0,1,0,1,0,89, - 0,100,0,83,0,37,0,119,0,41,5,78,122,5,37,100, - 46,37,100,114,45,0,0,0,41,2,114,162,0,0,0,90, - 11,115,121,115,95,118,101,114,115,105,111,110,114,10,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,89,0,0,0,114,16,0,0,0,218,12,118,101, - 114,115,105,111,110,95,105,110,102,111,114,215,0,0,0,114, - 214,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101, - 114,76,0,0,0,41,6,218,3,99,108,115,114,162,0,0, - 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114, - 21,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101, - 112,97,116,104,32,32,32,32,32,32,114,7,0,0,0,218, - 16,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114, - 121,51,3,0,0,115,34,0,0,0,6,2,8,1,6,2, - 6,1,16,1,6,255,2,2,12,1,12,1,12,255,22,128, - 4,4,2,128,12,254,6,1,2,128,2,255,115,39,0,0, - 0,153,5,56,0,158,7,43,3,165,6,56,0,171,4,47, - 11,175,1,56,0,176,3,47,11,179,3,56,0,184,7,65, - 2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124,0,160,0,124, - 1,161,1,125,4,124,4,100,0,117,0,114,11,100,0,83, - 0,9,0,116,1,124,4,131,1,1,0,110,11,35,0,4, - 0,116,2,121,60,1,0,1,0,1,0,89,0,100,0,83, - 0,37,0,116,3,131,0,68,0,93,26,92,2,125,5,125, - 6,124,4,160,4,116,5,124,6,131,1,161,1,114,57,116, - 6,160,7,124,1,124,5,124,1,124,4,131,2,124,4,100, - 1,166,3,125,7,124,7,2,0,1,0,83,0,113,31,100, - 0,83,0,119,0,41,2,78,114,203,0,0,0,41,8,114, - 222,0,0,0,114,75,0,0,0,114,76,0,0,0,114,207, - 0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114,162,0,0,0, - 114,65,0,0,0,218,6,116,97,114,103,101,116,114,221,0, - 0,0,114,163,0,0,0,114,211,0,0,0,114,209,0,0, - 0,32,32,32,32,32,32,32,32,114,7,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,66,3,0,0,115,38,0, - 0,0,10,2,8,1,4,1,2,1,10,1,2,128,12,1, - 6,1,2,128,14,1,14,1,6,1,8,1,2,1,6,254, - 8,3,2,252,4,255,2,254,115,12,0,0,0,140,4,17, - 0,145,7,27,7,188,1,27,7,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,67,0,0,0,115, - 42,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, - 124,0,160,3,124,1,124,2,161,2,125,3,124,3,100,2, - 117,1,114,19,124,3,106,4,83,0,100,2,83,0,41,3, - 122,106,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,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,122,112,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,40, - 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,59,32,117,115,101,32,102,105,110,100,95, - 115,112,101,99,40,41,32,105,110,115,116,101,97,100,78,169, - 5,114,99,0,0,0,114,100,0,0,0,114,101,0,0,0, - 114,225,0,0,0,114,163,0,0,0,169,4,114,220,0,0, - 0,114,162,0,0,0,114,65,0,0,0,114,209,0,0,0, - 32,32,32,32,114,7,0,0,0,218,11,102,105,110,100,95, - 109,111,100,117,108,101,82,3,0,0,115,14,0,0,0,6, - 7,2,2,4,254,12,3,8,1,6,1,4,2,114,9,0, - 0,0,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,169,2,78,78,114,69,0,0,0,41,15, - 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, - 151,0,0,0,114,218,0,0,0,114,217,0,0,0,218,11, - 95,77,83,95,87,73,78,68,79,87,83,218,18,69,88,84, - 69,78,83,73,79,78,95,83,85,70,70,73,88,69,83,114, - 216,0,0,0,218,12,115,116,97,116,105,99,109,101,116,104, - 111,100,114,215,0,0,0,218,11,99,108,97,115,115,109,101, - 116,104,111,100,114,222,0,0,0,114,225,0,0,0,114,228, - 0,0,0,114,12,0,0,0,114,7,0,0,0,114,213,0, - 0,0,32,3,0,0,115,30,0,0,0,8,0,4,2,2, - 3,2,255,2,4,2,255,12,3,2,2,10,1,2,6,10, - 1,2,14,12,1,2,15,16,1,114,9,0,0,0,114,213, - 0,0,0,99,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, - 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,31,124,4,100,5,107,3,83,0,41,7,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,3, - 0,0,0,114,97,0,0,0,114,0,0,0,0,114,45,0, - 0,0,218,8,95,95,105,110,105,116,95,95,78,41,4,114, - 73,0,0,0,114,202,0,0,0,114,125,0,0,0,114,104, - 0,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, - 120,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,32,32, - 32,32,32,114,7,0,0,0,114,205,0,0,0,104,3,0, - 0,115,8,0,0,0,18,3,16,1,14,1,16,1,114,9, - 0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,0,0,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,12,0,0,0,169,2,114,143,0, - 0,0,114,209,0,0,0,32,32,114,7,0,0,0,218,13, - 99,114,101,97,116,101,95,109,111,100,117,108,101,112,3,0, - 0,243,2,0,0,0,4,0,114,9,0,0,0,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, + 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,169,0,0, + 0,233,12,0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4, + 114,43,0,0,0,114,158,0,0,0,114,172,0,0,0,114, + 142,0,0,0,41,6,114,42,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,141,0,0,0,114,174,0,0,0, + 114,117,0,0,0,32,32,32,32,32,32,114,7,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,111,2,0,0,115,18,0, + 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, + 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, + 0,0,0,0,0,0,0,0,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,19,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,169,0,0, + 0,114,168,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,142,0,0,0,41,4, + 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, + 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, + 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, + 95,104,97,115,104,95,112,121,99,139,2,0,0,115,14,0, + 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, + 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, 0,0,0,0,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,18,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,142,0,0,0, - 114,89,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,143,0,0,0,218,6,109,111,100,117,108,101,114, - 187,0,0,0,32,32,32,114,7,0,0,0,218,11,101,120, - 101,99,95,109,111,100,117,108,101,115,3,0,0,115,12,0, - 0,0,12,2,8,1,4,1,8,1,4,255,20,2,114,9, - 0,0,0,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, + 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, + 124,4,116,3,131,2,114,28,116,4,160,5,100,1,124,2, + 161,2,1,0,124,3,100,2,117,1,114,26,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, + 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,141,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,172,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,142,0,0,0,114,89,0,0,0,41,5,114,42,0,0, + 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, + 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, + 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, + 111,100,101,163,2,0,0,115,18,0,0,0,10,2,10,1, + 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, + 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, + 0,0,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,3,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,78,41,6,218, + 9,98,121,116,101,97,114,114,97,121,114,171,0,0,0,218, + 6,101,120,116,101,110,100,114,37,0,0,0,114,183,0,0, + 0,218,5,100,117,109,112,115,41,4,114,187,0,0,0,218, + 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, + 32,32,32,32,114,7,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,176,2,0,0,115,12,0,0,0,8,2,14,1,14,1, + 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, + 84,99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78, + 41,7,114,189,0,0,0,114,171,0,0,0,114,190,0,0, + 0,114,37,0,0,0,114,4,0,0,0,114,183,0,0,0, + 114,191,0,0,0,41,5,114,187,0,0,0,114,180,0,0, + 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, + 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, + 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, + 99,186,2,0,0,115,14,0,0,0,8,2,12,1,14,1, + 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, + 0,0,99,1,0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32, + 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, + 115,111,117,114,99,101,197,2,0,0,115,10,0,0,0,8, + 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, + 0,0,0,169,2,114,163,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,8,0,0,0,67,0,0,0,115,60,1,0,0, + 124,1,100,1,117,0,114,29,100,2,125,1,116,0,124,2, + 100,3,131,2,114,28,9,0,124,2,160,1,124,0,161,1, + 125,1,110,39,35,0,4,0,116,2,121,157,1,0,1,0, + 1,0,89,0,110,30,37,0,110,28,116,3,160,4,124,1, + 161,1,125,1,116,5,124,1,131,1,115,57,9,0,116,6, + 116,3,160,7,161,0,124,1,131,2,125,1,110,10,35,0, + 4,0,116,8,121,156,1,0,1,0,1,0,89,0,110,1, + 37,0,116,9,160,10,124,0,124,2,124,1,100,4,166,3, + 125,4,100,5,124,4,95,11,124,2,100,1,117,0,114,99, + 116,12,131,0,68,0,93,21,92,2,125,5,125,6,124,1, + 160,13,116,14,124,6,131,1,161,1,114,96,124,5,124,0, + 124,1,131,2,125,2,124,2,124,4,95,15,1,0,113,99, + 113,75,100,1,83,0,124,3,116,16,117,0,114,131,116,0, + 124,2,100,6,131,2,114,130,9,0,124,2,160,17,124,0, + 161,1,125,7,110,10,35,0,4,0,116,2,121,155,1,0, + 1,0,1,0,89,0,110,10,37,0,124,7,114,130,103,0, + 124,4,95,18,110,3,124,3,124,4,95,18,124,4,106,18, + 103,0,107,2,114,153,124,1,114,153,116,19,124,1,131,1, + 100,7,25,0,125,8,124,4,106,18,160,20,124,8,161,1, + 1,0,124,4,83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0, + 0,0,114,142,0,0,0,114,19,0,0,0,114,103,0,0, + 0,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, + 114,76,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,136,0,0,0,114,163,0,0, + 0,218,9,95,80,79,80,85,76,65,84,69,114,205,0,0, + 0,114,201,0,0,0,114,73,0,0,0,114,61,0,0,0, + 41,9,114,141,0,0,0,90,8,108,111,99,97,116,105,111, + 110,114,163,0,0,0,114,201,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,205,0,0,0,90,7, + 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, + 114,7,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,214,2, + 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, + 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, + 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, + 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, + 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, + 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, + 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, + 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, + 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, + 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, + 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, + 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, + 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, + 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, + 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,52,0,0,0,9,0,116,0,160,1, + 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, + 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, + 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, + 111,112,101,110,95,114,101,103,105,115,116,114,121,43,3,0, + 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, + 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, + 7,153,1,24,7,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,9,0,0,0,67,0,0,0, + 115,136,0,0,0,124,0,106,0,114,7,124,0,106,1,125, + 2,110,3,124,0,106,2,125,2,124,2,160,3,124,1,100, + 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, + 3,166,2,125,3,9,0,124,0,160,6,124,3,161,1,53, + 0,125,4,116,7,160,8,124,4,100,4,161,2,125,5,100, + 0,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, + 48,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,5,83,0,35,0,4,0,116,9,121,67,1,0,1, + 0,1,0,89,0,100,0,83,0,37,0,119,0,41,5,78, + 122,5,37,100,46,37,100,114,45,0,0,0,41,2,114,162, + 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, + 114,10,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,89,0,0,0,114,16,0,0,0, + 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,215, + 0,0,0,114,214,0,0,0,90,10,81,117,101,114,121,86, + 97,108,117,101,114,76,0,0,0,41,6,218,3,99,108,115, + 114,162,0,0,0,90,12,114,101,103,105,115,116,114,121,95, + 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, + 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, + 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, + 105,115,116,114,121,50,3,0,0,115,34,0,0,0,6,2, + 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, + 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, + 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, + 0,171,4,47,11,175,1,56,0,176,3,47,11,179,3,56, + 0,184,7,65,2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124, + 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, + 11,100,0,83,0,9,0,116,1,124,4,131,1,1,0,110, + 11,35,0,4,0,116,2,121,60,1,0,1,0,1,0,89, + 0,100,0,83,0,37,0,116,3,131,0,68,0,93,26,92, + 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, + 1,114,57,116,6,160,7,124,1,124,5,124,1,124,4,131, + 2,124,4,100,1,166,3,125,7,124,7,2,0,1,0,83, + 0,113,31,100,0,83,0,119,0,41,2,78,114,203,0,0, + 0,41,8,114,222,0,0,0,114,75,0,0,0,114,76,0, + 0,0,114,207,0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114, + 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, + 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, + 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, + 0,0,218,9,102,105,110,100,95,115,112,101,99,65,3,0, + 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, + 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, + 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, + 0,140,4,17,0,145,7,27,7,188,1,27,7,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,67, - 0,0,0,115,12,0,0,0,116,0,160,1,124,0,124,1, - 161,2,83,0,41,2,122,26,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,78,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, - 143,0,0,0,114,162,0,0,0,32,32,114,7,0,0,0, - 218,11,108,111,97,100,95,109,111,100,117,108,101,123,3,0, - 0,115,2,0,0,0,12,3,114,9,0,0,0,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, - 205,0,0,0,114,238,0,0,0,114,244,0,0,0,114,247, - 0,0,0,114,12,0,0,0,114,7,0,0,0,114,234,0, - 0,0,99,3,0,0,115,12,0,0,0,8,0,4,2,8, - 3,8,8,8,3,12,8,114,9,0,0,0,114,234,0,0, - 0,99,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,1,0,0,0,67,0,0,0,115,4,0,0,0,116, - 0,130,1,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,143,0,0,0,114,65,0,0,0, - 32,32,114,7,0,0,0,218,10,112,97,116,104,95,109,116, - 105,109,101,131,3,0,0,115,2,0,0,0,4,6,114,9, - 0,0,0,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,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,3,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,192,0,0,0,78,41, - 1,114,250,0,0,0,114,249,0,0,0,32,32,114,7,0, - 0,0,218,10,112,97,116,104,95,115,116,97,116,115,139,3, - 0,0,115,2,0,0,0,14,12,114,9,0,0,0,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,67,0,0,0,115,12,0,0, - 0,124,0,160,0,124,2,124,3,161,2,83,0,41,2,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,78,41,1,218,8,115,101,116,95,100,97, - 116,97,41,4,114,143,0,0,0,114,134,0,0,0,90,10, - 99,97,99,104,101,95,112,97,116,104,114,42,0,0,0,32, - 32,32,32,114,7,0,0,0,218,15,95,99,97,99,104,101, - 95,98,121,116,101,99,111,100,101,153,3,0,0,115,2,0, - 0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, - 0,41,2,122,150,79,112,116,105,111,110,97,108,32,109,101, + 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, + 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, + 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, + 83,0,41,3,122,106,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,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, + 122,112,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,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, + 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, + 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, + 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, + 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, + 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,81,3,0,0,115,14, + 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, + 2,114,9,0,0,0,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,169,2,78,78,114,69,0, + 0,0,41,15,114,149,0,0,0,114,148,0,0,0,114,150, + 0,0,0,114,151,0,0,0,114,218,0,0,0,114,217,0, + 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218, + 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, + 88,69,83,114,216,0,0,0,218,12,115,116,97,116,105,99, + 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, + 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, + 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,213,0,0,0,31,3,0,0,115,30,0,0,0,8, + 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, + 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, + 0,0,114,213,0,0,0,99,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,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,31,124,4,100,5,107,3,83, + 0,41,7,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,3,0,0,0,114,97,0,0,0,114,0,0,0, + 0,114,45,0,0,0,218,8,95,95,105,110,105,116,95,95, + 78,41,4,114,73,0,0,0,114,202,0,0,0,114,125,0, + 0,0,114,104,0,0,0,41,5,114,143,0,0,0,114,162, + 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, + 0,103,3,0,0,115,8,0,0,0,18,3,16,1,14,1, + 16,1,114,9,0,0,0,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,1,0, + 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,169, + 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, + 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, + 101,111,3,0,0,243,2,0,0,0,4,0,114,9,0,0, + 0,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,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,18,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, + 142,0,0,0,114,89,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,143,0,0,0,218,6,109,111,100, + 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, + 218,11,101,120,101,99,95,109,111,100,117,108,101,114,3,0, + 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, + 20,2,114,9,0,0,0,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,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,2,122,26,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,78,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,143,0,0,0,114,162,0,0,0,32,32,114, + 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, + 101,122,3,0,0,115,2,0,0,0,12,3,114,9,0,0, + 0,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,205,0,0,0,114,238,0,0,0,114,244,0, + 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,234,0,0,0,98,3,0,0,115,12,0,0,0,8, + 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, + 114,234,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4, + 0,0,0,116,0,130,1,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,143,0,0,0,114, + 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, + 104,95,109,116,105,109,101,130,3,0,0,115,2,0,0,0, + 4,6,114,9,0,0,0,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,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,3,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,192,0, + 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, + 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, + 116,115,138,3,0,0,115,2,0,0,0,14,12,114,9,0, + 0,0,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,67,0,0,0, + 115,12,0,0,0,124,0,160,0,124,2,124,3,161,2,83, + 0,41,2,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, @@ -1350,469 +1326,492 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,12,0,0, - 0,41,3,114,143,0,0,0,114,65,0,0,0,114,42,0, - 0,0,32,32,32,114,7,0,0,0,114,252,0,0,0,163, - 3,0,0,114,239,0,0,0,114,9,0,0,0,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,8,0,0,0,67,0,0,0,115,70,0,0,0,124,0, - 160,0,124,1,161,1,125,2,9,0,124,0,160,1,124,2, - 161,1,125,3,116,4,124,3,131,1,83,0,35,0,4,0, - 116,2,121,34,1,0,125,4,1,0,116,3,100,1,124,1, - 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, - 37,0,119,0,41,4,122,52,67,111,110,99,114,101,116,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,78,41,1,218,8,115,101, + 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, + 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, + 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, + 97,99,104,101,95,98,121,116,101,99,111,100,101,152,3,0, + 0,115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0, + 114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, + 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, + 0,0,0,162,3,0,0,114,239,0,0,0,114,9,0,0, + 0,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,8,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,124,1,161,1,125,2,9,0,124,0, + 160,1,124,2,161,1,125,3,116,4,124,3,131,1,83,0, + 35,0,4,0,116,2,121,34,1,0,125,4,1,0,116,3, + 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, + 126,4,119,1,37,0,119,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,140,0,0,0,78,41, + 5,114,202,0,0,0,218,8,103,101,116,95,100,97,116,97, + 114,76,0,0,0,114,142,0,0,0,114,199,0,0,0,41, + 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, + 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, + 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, + 169,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, + 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, + 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, + 150,7,29,7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,67,0,0,0,115,22,0,0, + 0,116,0,160,1,116,2,124,1,124,2,100,1,100,2,124, + 3,100,3,166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0, + 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, + 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, + 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, + 111,117,114,99,101,95,116,111,95,99,111,100,101,179,3,0, + 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, + 0,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,9,0,0,0,67, + 0,0,0,115,28,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,9,0,116,1,124,2,131,1,125,8, + 110,13,35,0,4,0,116,2,144,1,121,13,1,0,1,0, + 1,0,100,1,125,8,89,0,110,147,37,0,9,0,124,0, + 160,3,124,2,161,1,125,9,110,11,35,0,4,0,116,4, + 144,1,121,12,1,0,1,0,1,0,89,0,110,129,37,0, + 116,5,124,9,100,4,25,0,131,1,125,3,9,0,124,0, + 160,6,124,8,161,1,125,10,110,11,35,0,4,0,116,4, + 144,1,121,11,1,0,1,0,1,0,89,0,110,105,37,0, + 124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8, + 107,3,125,7,116,9,106,10,100,10,107,3,114,140,124,7, + 115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0,124,1, + 124,11,131,5,1,0,110,13,35,0,4,0,116,15,116,16, + 102,2,144,1,121,10,1,0,1,0,1,0,89,0,110,16, + 37,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,114,189,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,1, + 115,7,124,8,100,1,117,1,144,1,114,7,124,3,100,1, + 117,1,144,1,114,7,124,6,114,233,124,5,100,1,117,0, + 114,226,116,9,160,11,124,4,161,1,125,5,116,23,124,14, + 124,5,124,7,131,3,125,10,110,8,116,24,124,14,124,3, + 116,25,124,4,131,1,131,3,125,10,9,0,124,0,160,26, + 124,2,124,8,124,10,161,3,1,0,124,14,83,0,35,0, + 4,0,116,2,144,1,121,9,1,0,1,0,1,0,89,0, + 124,14,83,0,37,0,124,14,83,0,119,0,119,0,119,0, + 119,0,119,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,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,140,0,0,0,78,41,5,114,202,0, - 0,0,218,8,103,101,116,95,100,97,116,97,114,76,0,0, - 0,114,142,0,0,0,114,199,0,0,0,41,5,114,143,0, - 0,0,114,162,0,0,0,114,65,0,0,0,114,197,0,0, - 0,218,3,101,120,99,32,32,32,32,32,114,7,0,0,0, - 218,10,103,101,116,95,115,111,117,114,99,101,170,3,0,0, - 115,26,0,0,0,10,2,2,1,10,1,8,4,2,128,12, - 253,4,1,2,1,4,255,2,1,2,255,10,128,2,255,115, - 20,0,0,0,134,5,15,0,143,7,33,7,150,7,29,7, - 157,4,33,7,162,1,33,7,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,130,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, - 9,0,0,0,67,0,0,0,115,22,0,0,0,116,0,160, - 1,116,2,124,1,124,2,100,1,100,2,124,3,100,3,166, - 6,83,0,41,5,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, - 108,0,0,0,78,41,3,114,158,0,0,0,114,241,0,0, - 0,218,7,99,111,109,112,105,108,101,41,4,114,143,0,0, - 0,114,42,0,0,0,114,65,0,0,0,114,1,1,0,0, - 32,32,32,32,114,7,0,0,0,218,14,115,111,117,114,99, - 101,95,116,111,95,99,111,100,101,180,3,0,0,115,6,0, - 0,0,12,5,4,1,6,255,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115, - 28,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,9,0,116,1,124,2,131,1,125,8,110,13,35,0, - 4,0,116,2,144,1,121,13,1,0,1,0,1,0,100,1, - 125,8,89,0,110,147,37,0,9,0,124,0,160,3,124,2, - 161,1,125,9,110,11,35,0,4,0,116,4,144,1,121,12, - 1,0,1,0,1,0,89,0,110,129,37,0,116,5,124,9, - 100,4,25,0,131,1,125,3,9,0,124,0,160,6,124,8, - 161,1,125,10,110,11,35,0,4,0,116,4,144,1,121,11, - 1,0,1,0,1,0,89,0,110,105,37,0,124,1,124,8, - 100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8,107,3,125,7, - 116,9,106,10,100,10,107,3,114,140,124,7,115,122,116,9, - 106,10,100,11,107,2,114,140,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,10,116,14, - 124,10,124,3,124,9,100,12,25,0,124,1,124,11,131,5, - 1,0,110,13,35,0,4,0,116,15,116,16,102,2,144,1, - 121,10,1,0,1,0,1,0,89,0,110,16,37,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,114,189,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,1,115,7,124,8, - 100,1,117,1,144,1,114,7,124,3,100,1,117,1,144,1, - 114,7,124,6,114,233,124,5,100,1,117,0,114,226,116,9, - 160,11,124,4,161,1,125,5,116,23,124,14,124,5,124,7, - 131,3,125,10,110,8,116,24,124,14,124,3,116,25,124,4, - 131,1,131,3,125,10,9,0,124,0,160,26,124,2,124,8, - 124,10,161,3,1,0,124,14,83,0,35,0,4,0,116,2, - 144,1,121,9,1,0,1,0,1,0,89,0,124,14,83,0, - 37,0,124,14,83,0,119,0,119,0,119,0,119,0,119,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,192,0,0,0,114,182,0,0,0,114, - 168,0,0,0,114,3,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,141,0,0,0,114,132, - 0,0,0,114,134,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, - 202,0,0,0,114,121,0,0,0,114,107,0,0,0,114,251, - 0,0,0,114,76,0,0,0,114,34,0,0,0,114,254,0, - 0,0,114,175,0,0,0,218,10,109,101,109,111,114,121,118, - 105,101,119,114,186,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, - 180,0,0,0,218,17,95,82,65,87,95,77,65,71,73,67, - 95,78,85,77,66,69,82,114,181,0,0,0,114,179,0,0, - 0,114,142,0,0,0,114,173,0,0,0,114,158,0,0,0, - 114,172,0,0,0,114,188,0,0,0,114,4,1,0,0,114, - 16,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,194,0,0,0,114,193, - 0,0,0,114,4,0,0,0,114,253,0,0,0,41,15,114, - 143,0,0,0,114,162,0,0,0,114,134,0,0,0,114,177, - 0,0,0,114,197,0,0,0,114,180,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,132,0,0,0,218,2,115,116, - 114,42,0,0,0,114,174,0,0,0,114,17,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,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,114,7,0,0,0,114,240,0,0, - 0,188,3,0,0,115,188,0,0,0,10,7,4,1,4,1, - 4,1,4,1,4,1,2,1,10,1,2,128,14,1,8,1, - 2,128,2,2,12,1,2,128,14,1,4,1,2,128,12,2, - 2,1,12,1,2,128,14,1,4,1,2,128,2,3,2,1, - 6,254,2,4,12,1,16,1,12,1,4,1,12,1,10,1, - 2,1,2,255,8,2,2,254,10,3,4,1,2,1,2,1, - 4,254,8,4,2,1,4,255,2,128,2,3,2,1,2,1, - 6,1,2,1,2,1,4,251,4,128,18,7,4,1,2,128, - 8,2,2,1,4,255,6,2,2,1,2,1,6,254,8,3, - 10,1,12,1,12,1,18,1,6,1,4,255,4,2,8,1, - 10,1,14,1,6,2,6,1,4,255,2,2,14,1,4,3, - 2,128,14,254,2,1,4,1,2,128,4,0,2,254,2,233, - 2,225,2,250,2,251,115,80,0,0,0,144,4,21,0,149, - 10,33,7,163,5,41,0,169,8,51,7,187,5,65,1,0, - 193,1,8,65,11,7,193,18,65,5,66,24,0,194,24,10, - 66,36,7,195,50,7,67,59,0,195,59,8,68,6,7,196, - 9,1,68,6,7,196,10,1,66,36,7,196,11,1,65,11, - 7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0,114,7,0,0, - 0,114,248,0,0,0,129,3,0,0,115,16,0,0,0,8, - 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, - 9,0,0,0,114,248,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,94, - 0,0,0,135,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,136,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,136,0,4,0,90,12,83, - 0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0,114,162, - 0,0,0,114,65,0,0,0,32,32,32,114,7,0,0,0, - 114,235,0,0,0,22,4,0,0,115,4,0,0,0,6,3, - 10,1,114,9,0,0,0,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,67,0,0, - 0,243,24,0,0,0,124,0,106,0,124,1,106,0,107,2, - 111,11,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,143,0,0,0,90,5,111,116, - 104,101,114,32,32,114,7,0,0,0,218,6,95,95,101,113, - 95,95,28,4,0,0,243,6,0,0,0,12,1,10,1,2, - 255,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,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,141,0,0,0,114,65,0,0,0,169,1, - 114,143,0,0,0,32,114,7,0,0,0,218,8,95,95,104, - 97,115,104,95,95,32,4,0,0,243,2,0,0,0,20,1, - 114,9,0,0,0,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,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,2,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,41,3,218, - 5,115,117,112,101,114,114,10,1,0,0,114,247,0,0,0, - 41,3,114,143,0,0,0,114,162,0,0,0,114,13,1,0, - 0,32,32,128,114,7,0,0,0,114,247,0,0,0,35,4, - 0,0,115,2,0,0,0,16,10,114,9,0,0,0,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,1,0,0,0,67,0,0,0,243,6,0,0,0, - 124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0,0,32, - 32,114,7,0,0,0,114,202,0,0,0,47,4,0,0,243, - 2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0,116,0, - 124,0,116,1,116,2,102,2,131,2,114,38,116,3,160,4, - 116,5,124,1,131,1,161,1,53,0,125,2,124,2,160,6, - 161,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 35,0,49,0,115,30,119,4,37,0,1,0,1,0,1,0, - 89,0,1,0,1,0,100,1,83,0,116,3,160,7,124,1, - 100,2,161,2,53,0,125,2,124,2,160,6,161,0,2,0, - 100,1,4,0,4,0,131,3,1,0,83,0,35,0,49,0, - 115,60,119,4,37,0,1,0,1,0,1,0,89,0,1,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,184,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,91,0,0,0,90,9,111,112,101, - 110,95,99,111,100,101,114,109,0,0,0,90,4,114,101,97, - 100,114,92,0,0,0,41,3,114,143,0,0,0,114,65,0, - 0,0,114,94,0,0,0,32,32,32,114,7,0,0,0,114, - 254,0,0,0,52,4,0,0,115,22,0,0,0,14,2,16, - 1,6,1,14,255,22,128,4,0,14,3,6,1,14,255,22, - 128,4,0,115,24,0,0,0,142,4,25,3,153,4,29,11, - 158,3,29,11,172,4,55,3,183,4,59,11,188,3,59,11, - 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,67,0,0,0,115,20,0,0,0,100, - 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,131, - 1,83,0,41,3,78,114,0,0,0,0,41,1,218,10,70, - 105,108,101,82,101,97,100,101,114,41,2,218,17,105,109,112, - 111,114,116,108,105,98,46,114,101,97,100,101,114,115,114,29, - 1,0,0,41,3,114,143,0,0,0,114,243,0,0,0,114, - 29,1,0,0,32,32,32,114,7,0,0,0,218,19,103,101, - 116,95,114,101,115,111,117,114,99,101,95,114,101,97,100,101, - 114,61,4,0,0,115,4,0,0,0,12,2,8,1,114,9, - 0,0,0,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,41,13,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,151,0,0,0,114,235,0,0,0,114,15, - 1,0,0,114,21,1,0,0,114,159,0,0,0,114,247,0, - 0,0,114,202,0,0,0,114,254,0,0,0,114,31,1,0, - 0,90,13,95,95,99,108,97,115,115,99,101,108,108,95,95, - 41,1,114,13,1,0,0,64,114,7,0,0,0,114,10,1, - 0,0,17,4,0,0,115,24,0,0,0,10,128,4,2,8, - 3,8,6,8,4,2,3,14,1,2,11,10,1,8,4,2, - 9,18,1,114,9,0,0,0,114,10,1,0,0,99,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, + 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,192,0,0,0,114,182, + 0,0,0,114,168,0,0,0,114,3,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,141,0, + 0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0, + 0,0,114,251,0,0,0,114,76,0,0,0,114,34,0,0, + 0,114,254,0,0,0,114,175,0,0,0,218,10,109,101,109, + 111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77, + 65,71,73,67,95,78,85,77,66,69,82,114,181,0,0,0, + 114,179,0,0,0,114,142,0,0,0,114,173,0,0,0,114, + 158,0,0,0,114,172,0,0,0,114,188,0,0,0,114,4, + 1,0,0,114,16,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,194,0, + 0,0,114,193,0,0,0,114,4,0,0,0,114,253,0,0, + 0,41,15,114,143,0,0,0,114,162,0,0,0,114,134,0, + 0,0,114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0, + 218,2,115,116,114,42,0,0,0,114,174,0,0,0,114,17, + 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,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, + 114,240,0,0,0,187,3,0,0,115,188,0,0,0,10,7, + 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, + 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, + 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, + 2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1, + 12,1,10,1,2,1,2,255,8,2,2,254,10,3,4,1, + 2,1,2,1,4,254,8,4,2,1,4,255,2,128,2,3, + 2,1,2,1,6,1,2,1,2,1,4,251,4,128,18,7, + 4,1,2,128,8,2,2,1,4,255,6,2,2,1,2,1, + 6,254,8,3,10,1,12,1,12,1,18,1,6,1,4,255, + 4,2,8,1,10,1,14,1,6,2,6,1,4,255,2,2, + 14,1,4,3,2,128,14,254,2,1,4,1,2,128,4,0, + 2,254,2,233,2,225,2,250,2,251,115,80,0,0,0,144, + 4,21,0,149,10,33,7,163,5,41,0,169,8,51,7,187, + 5,65,1,0,193,1,8,65,11,7,193,18,65,5,66,24, + 0,194,24,10,66,36,7,195,50,7,67,59,0,195,59,8, + 68,6,7,196,9,1,68,6,7,196,10,1,66,36,7,196, + 11,1,65,11,7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0, + 114,7,0,0,0,114,248,0,0,0,128,3,0,0,115,16, + 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, + 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65,0,0, - 0,114,9,1,0,0,32,32,32,114,7,0,0,0,114,251, - 0,0,0,71,4,0,0,115,4,0,0,0,8,2,14,1, - 114,9,0,0,0,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,6, - 0,0,0,67,0,0,0,115,24,0,0,0,116,0,124,1, - 131,1,125,4,124,0,160,1,124,2,124,3,124,4,100,1, - 166,3,83,0,41,2,78,169,1,218,5,95,109,111,100,101, - 41,2,114,139,0,0,0,114,252,0,0,0,41,5,114,143, - 0,0,0,114,134,0,0,0,114,132,0,0,0,114,42,0, - 0,0,114,78,0,0,0,32,32,32,32,32,114,7,0,0, - 0,114,253,0,0,0,76,4,0,0,115,4,0,0,0,8, - 2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0,116,0, - 124,1,131,1,92,2,125,4,125,5,103,0,125,6,124,4, - 114,31,116,1,124,4,131,1,115,31,116,0,124,4,131,1, - 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, - 124,4,114,31,116,1,124,4,131,1,114,14,116,3,124,6, - 131,1,68,0,93,47,125,7,116,4,124,4,124,7,131,2, - 125,4,9,0,116,5,160,6,124,4,161,1,1,0,113,35, - 35,0,4,0,116,7,121,58,1,0,1,0,1,0,89,0, - 113,35,4,0,116,8,121,124,1,0,125,8,1,0,116,9, - 160,10,100,1,124,4,124,8,161,3,1,0,89,0,100,2, - 125,8,126,8,1,0,100,2,83,0,100,2,125,8,126,8, - 119,1,37,0,9,0,116,11,124,1,124,2,124,3,131,3, - 1,0,116,9,160,10,100,3,124,1,161,2,1,0,100,2, - 83,0,35,0,4,0,116,8,121,123,1,0,125,8,1,0, - 116,9,160,10,100,1,124,1,124,8,161,3,1,0,89,0, - 100,2,125,8,126,8,100,2,83,0,100,2,125,8,126,8, - 119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0,0,114, - 61,0,0,0,218,8,114,101,118,101,114,115,101,100,114,67, - 0,0,0,114,19,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,172,0,0,0,114, - 95,0,0,0,41,9,114,143,0,0,0,114,65,0,0,0, - 114,42,0,0,0,114,35,1,0,0,218,6,112,97,114,101, - 110,116,114,120,0,0,0,114,63,0,0,0,114,68,0,0, - 0,114,255,0,0,0,32,32,32,32,32,32,32,32,32,114, - 7,0,0,0,114,252,0,0,0,81,4,0,0,115,60,0, - 0,0,12,2,4,1,12,2,12,1,10,1,12,254,12,4, - 10,1,2,1,12,1,2,128,12,1,4,2,12,1,6,3, - 4,1,4,255,14,2,10,128,2,1,12,1,16,1,2,128, - 12,1,8,2,2,1,16,255,10,128,2,254,2,247,115,62, - 0,0,0,171,5,49,2,177,7,65,18,9,186,6,65,18, - 9,193,0,7,65,14,9,193,14,4,65,18,9,193,20,12, - 65,34,0,193,34,7,65,58,7,193,41,7,65,54,7,193, - 54,4,65,58,7,193,59,1,65,58,7,193,60,1,65,18, - 9,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,251,0,0,0,114,253,0,0,0,114,252,0, - 0,0,114,12,0,0,0,114,7,0,0,0,114,32,1,0, - 0,67,4,0,0,115,10,0,0,0,8,0,4,2,8,2, - 8,5,18,5,114,9,0,0,0,114,32,1,0,0,99,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,83,0,41,7,218,20,83,111,117,114, + 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,135,0,4,0,90, + 12,83,0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0, + 114,162,0,0,0,114,65,0,0,0,32,32,32,114,7,0, + 0,0,114,235,0,0,0,21,4,0,0,115,4,0,0,0, + 6,3,10,1,114,9,0,0,0,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,67, + 0,0,0,243,24,0,0,0,124,0,106,0,124,1,106,0, + 107,2,111,11,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,143,0,0,0,90,5, + 111,116,104,101,114,32,32,114,7,0,0,0,218,6,95,95, + 101,113,95,95,27,4,0,0,243,6,0,0,0,12,1,10, + 1,2,255,114,9,0,0,0,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,3,0,0,0,67,0,0,0, + 243,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,141,0,0,0,114,65,0,0,0, + 169,1,114,143,0,0,0,32,114,7,0,0,0,218,8,95, + 95,104,97,115,104,95,95,31,4,0,0,243,2,0,0,0, + 20,1,114,9,0,0,0,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,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,2,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,41, + 3,218,5,115,117,112,101,114,114,10,1,0,0,114,247,0, + 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,13, + 1,0,0,32,32,128,114,7,0,0,0,114,247,0,0,0, + 34,4,0,0,115,2,0,0,0,16,10,114,9,0,0,0, + 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,1,0,0,0,67,0,0,0,243,6,0, + 0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0, + 0,32,32,114,7,0,0,0,114,202,0,0,0,46,4,0, + 0,243,2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0, + 116,0,124,0,116,1,116,2,102,2,131,2,114,38,116,3, + 160,4,116,5,124,1,131,1,161,1,53,0,125,2,124,2, + 160,6,161,0,2,0,100,1,4,0,4,0,131,3,1,0, + 83,0,35,0,49,0,115,30,119,4,37,0,1,0,1,0, + 1,0,89,0,1,0,1,0,100,1,83,0,116,3,160,7, + 124,1,100,2,161,2,53,0,125,2,124,2,160,6,161,0, + 2,0,100,1,4,0,4,0,131,3,1,0,83,0,35,0, + 49,0,115,60,119,4,37,0,1,0,1,0,1,0,89,0, + 1,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,184,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,91,0,0,0,90,9,111, + 112,101,110,95,99,111,100,101,114,109,0,0,0,90,4,114, + 101,97,100,114,92,0,0,0,41,3,114,143,0,0,0,114, + 65,0,0,0,114,94,0,0,0,32,32,32,114,7,0,0, + 0,114,254,0,0,0,51,4,0,0,115,22,0,0,0,14, + 2,16,1,6,1,14,255,22,128,4,0,14,3,6,1,14, + 255,22,128,4,0,115,24,0,0,0,142,4,25,3,153,4, + 29,11,158,3,29,11,172,4,55,3,183,4,59,11,188,3, + 59,11,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,67,0,0,0,115,20,0,0, + 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,124, + 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, + 10,70,105,108,101,82,101,97,100,101,114,41,2,218,17,105, + 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, + 114,29,1,0,0,41,3,114,143,0,0,0,114,243,0,0, + 0,114,29,1,0,0,32,32,32,114,7,0,0,0,218,19, + 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, + 100,101,114,60,4,0,0,115,4,0,0,0,12,2,8,1, + 114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0,0, + 0,114,150,0,0,0,114,151,0,0,0,114,235,0,0,0, + 114,15,1,0,0,114,21,1,0,0,114,159,0,0,0,114, + 247,0,0,0,114,202,0,0,0,114,254,0,0,0,114,31, + 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, + 95,95,41,1,114,13,1,0,0,64,114,7,0,0,0,114, + 10,1,0,0,16,4,0,0,115,24,0,0,0,8,0,4, + 2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,8, + 4,2,9,18,1,114,9,0,0,0,114,10,1,0,0,99, + 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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65, + 0,0,0,114,9,1,0,0,32,32,32,114,7,0,0,0, + 114,251,0,0,0,70,4,0,0,115,4,0,0,0,8,2, + 14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0, + 124,1,131,1,125,4,124,0,160,1,124,2,124,3,124,4, + 100,1,166,3,83,0,41,2,78,169,1,218,5,95,109,111, + 100,101,41,2,114,139,0,0,0,114,252,0,0,0,41,5, + 114,143,0,0,0,114,134,0,0,0,114,132,0,0,0,114, + 42,0,0,0,114,78,0,0,0,32,32,32,32,32,114,7, + 0,0,0,114,253,0,0,0,75,4,0,0,115,4,0,0, + 0,8,2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0, + 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, + 124,4,114,31,116,1,124,4,131,1,115,31,116,0,124,4, + 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, + 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, + 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, + 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, + 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, + 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, + 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, + 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, + 126,8,119,1,37,0,9,0,116,11,124,1,124,2,124,3, + 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, + 100,2,83,0,35,0,4,0,116,8,121,123,1,0,125,8, + 1,0,116,9,160,10,100,1,124,1,124,8,161,3,1,0, + 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, + 126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0, + 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, + 114,67,0,0,0,114,19,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,172,0,0, + 0,114,95,0,0,0,41,9,114,143,0,0,0,114,65,0, + 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, + 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, + 0,0,0,114,255,0,0,0,32,32,32,32,32,32,32,32, + 32,114,7,0,0,0,114,252,0,0,0,80,4,0,0,115, + 60,0,0,0,12,2,4,1,12,2,12,1,10,1,12,254, + 12,4,10,1,2,1,12,1,2,128,12,1,4,2,12,1, + 6,3,4,1,4,255,14,2,10,128,2,1,12,1,16,1, + 2,128,12,1,8,2,2,1,16,255,10,128,2,254,2,247, + 115,62,0,0,0,171,5,49,2,177,7,65,18,9,186,6, + 65,18,9,193,0,7,65,14,9,193,14,4,65,18,9,193, + 20,12,65,34,0,193,34,7,65,58,7,193,41,7,65,54, + 7,193,54,4,65,58,7,193,59,1,65,58,7,193,60,1, + 65,18,9,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,251,0,0,0,114,253,0,0,0,114, + 252,0,0,0,114,12,0,0,0,114,7,0,0,0,114,32, + 1,0,0,66,4,0,0,115,10,0,0,0,8,0,4,2, + 8,2,8,5,18,5,114,9,0,0,0,114,32,1,0,0, + 99,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,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,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,182,0,0,0,114,168,0,0,0,41,2,114,141, + 0,0,0,114,132,0,0,0,41,5,114,202,0,0,0,114, + 254,0,0,0,114,175,0,0,0,114,188,0,0,0,114,6, + 1,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, + 65,0,0,0,114,42,0,0,0,114,174,0,0,0,32,32, + 32,32,32,114,7,0,0,0,114,240,0,0,0,115,4,0, + 0,115,22,0,0,0,10,1,10,1,2,4,2,1,6,254, + 12,4,2,1,14,1,2,1,2,1,6,253,114,9,0,0, + 0,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,1,0,0, + 0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0, + 32,32,114,7,0,0,0,114,0,1,0,0,131,4,0,0, + 114,25,0,0,0,114,9,0,0,0,122,31,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, - 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,182,0,0,0,114,168,0,0,0,41,2,114,141,0,0, - 0,114,132,0,0,0,41,5,114,202,0,0,0,114,254,0, - 0,0,114,175,0,0,0,114,188,0,0,0,114,6,1,0, - 0,41,5,114,143,0,0,0,114,162,0,0,0,114,65,0, - 0,0,114,42,0,0,0,114,174,0,0,0,32,32,32,32, - 32,114,7,0,0,0,114,240,0,0,0,116,4,0,0,115, - 22,0,0,0,10,1,10,1,2,4,2,1,6,254,12,4, - 2,1,14,1,2,1,2,1,6,253,114,9,0,0,0,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,1,0,0,0,67, - 0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32, - 114,7,0,0,0,114,0,1,0,0,132,4,0,0,114,25, - 0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0,0,114, - 7,0,0,0,114,39,1,0,0,112,4,0,0,115,8,0, - 0,0,8,0,4,2,8,2,12,16,114,9,0,0,0,114, - 39,1,0,0,99,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,28,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,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,0,83,0,114,69,0,0,0,114, - 182,0,0,0,41,3,114,143,0,0,0,114,141,0,0,0, - 114,65,0,0,0,32,32,32,114,7,0,0,0,114,235,0, - 0,0,145,4,0,0,115,4,0,0,0,6,1,10,1,114, - 9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69,0,0, - 0,114,12,1,0,0,114,14,1,0,0,32,32,114,7,0, - 0,0,114,15,1,0,0,149,4,0,0,114,16,1,0,0, - 114,9,0,0,0,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,3,0, - 0,0,67,0,0,0,114,17,1,0,0,114,69,0,0,0, - 114,18,1,0,0,114,20,1,0,0,32,114,7,0,0,0, - 114,21,1,0,0,153,4,0,0,114,22,1,0,0,114,9, - 0,0,0,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,5,0, + 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,240,0,0,0,114,0,1,0,0,114,12,0,0, + 0,114,7,0,0,0,114,39,1,0,0,111,4,0,0,115, + 8,0,0,0,8,0,4,2,8,2,12,16,114,9,0,0, + 0,114,39,1,0,0,99,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,28, + 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,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,0,83,0,114,69,0,0, + 0,114,182,0,0,0,41,3,114,143,0,0,0,114,141,0, + 0,0,114,65,0,0,0,32,32,32,114,7,0,0,0,114, + 235,0,0,0,144,4,0,0,115,4,0,0,0,6,1,10, + 1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69, + 0,0,0,114,12,1,0,0,114,14,1,0,0,32,32,114, + 7,0,0,0,114,15,1,0,0,148,4,0,0,114,16,1, + 0,0,114,9,0,0,0,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, + 3,0,0,0,67,0,0,0,114,17,1,0,0,114,69,0, + 0,0,114,18,1,0,0,114,20,1,0,0,32,114,7,0, + 0,0,114,21,1,0,0,152,4,0,0,114,22,1,0,0, + 114,9,0,0,0,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, + 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,3,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,78,41,7,114,158,0,0,0,114,241,0,0,0, + 114,186,0,0,0,90,14,99,114,101,97,116,101,95,100,121, + 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, + 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, + 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, + 0,0,155,4,0,0,115,14,0,0,0,4,2,6,1,4, + 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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,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, - 3,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,78,41,7,114,158,0,0,0,114,241,0,0,0,114,186, - 0,0,0,90,14,99,114,101,97,116,101,95,100,121,110,97, - 109,105,99,114,172,0,0,0,114,141,0,0,0,114,65,0, - 0,0,41,3,114,143,0,0,0,114,209,0,0,0,114,243, - 0,0,0,32,32,32,114,7,0,0,0,114,238,0,0,0, - 156,4,0,0,115,14,0,0,0,4,2,6,1,4,255,6, - 2,8,1,4,255,4,2,114,9,0,0,0,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,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,241,0,0,0,114,186,0,0,0,90,12,101,120,101, - 99,95,100,121,110,97,109,105,99,114,172,0,0,0,114,141, - 0,0,0,114,65,0,0,0,169,2,114,143,0,0,0,114, - 243,0,0,0,32,32,114,7,0,0,0,114,244,0,0,0, - 164,4,0,0,115,8,0,0,0,14,2,6,1,8,1,8, - 255,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,38,0,0, - 0,135,2,116,0,124,0,106,1,131,1,100,1,25,0,138, - 2,116,2,136,2,102,1,100,2,100,3,132,8,116,3,68, + 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,241,0,0,0,114,186,0,0,0,90,12,101, + 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, + 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, + 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, + 0,0,163,4,0,0,115,8,0,0,0,14,2,6,1,8, + 1,8,255,114,9,0,0,0,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,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, + 2,116,2,135,2,102,1,100,2,100,3,132,8,116,3,68, 0,131,1,131,1,83,0,41,5,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,3,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, 0,0,51,0,0,0,115,28,0,0,0,129,0,124,0,93, - 9,125,1,137,2,100,0,124,1,23,0,107,2,86,0,1, + 9,125,1,136,2,100,0,124,1,23,0,107,2,86,0,1, 0,113,2,100,1,83,0,41,2,114,235,0,0,0,78,114, 12,0,0,0,41,3,114,5,0,0,0,218,6,115,117,102, 102,105,120,218,9,102,105,108,101,95,110,97,109,101,32,32, - 128,114,7,0,0,0,114,8,0,0,0,173,4,0,0,115, + 128,114,7,0,0,0,114,8,0,0,0,172,4,0,0,115, 6,0,0,0,6,128,2,1,20,255,114,9,0,0,0,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,46, @@ -1820,950 +1819,950 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,62,78,41,4,114,73,0,0,0,114,65,0,0,0,218, 3,97,110,121,114,231,0,0,0,41,3,114,143,0,0,0, 114,162,0,0,0,114,42,1,0,0,32,32,64,114,7,0, - 0,0,114,205,0,0,0,170,4,0,0,115,10,0,0,0, - 2,128,14,2,12,1,2,1,8,255,114,9,0,0,0,122, - 30,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,1,0,0,0, - 67,0,0,0,114,24,0,0,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,12,0, - 0,0,114,246,0,0,0,32,32,114,7,0,0,0,114,240, - 0,0,0,176,4,0,0,114,25,0,0,0,114,9,0,0, - 0,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,1,0,0,0, - 67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114, - 7,0,0,0,114,0,1,0,0,180,4,0,0,114,25,0, - 0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0, - 0,114,25,1,0,0,114,74,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,202,0,0,0,184,4,0,0, - 114,26,1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1, - 0,0,114,238,0,0,0,114,244,0,0,0,114,205,0,0, - 0,114,240,0,0,0,114,0,1,0,0,114,159,0,0,0, - 114,202,0,0,0,114,12,0,0,0,114,7,0,0,0,114, - 28,1,0,0,137,4,0,0,115,24,0,0,0,8,0,4, - 2,8,6,8,4,8,4,8,3,8,8,8,6,8,6,8, - 4,2,4,14,1,114,9,0,0,0,114,28,1,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100, - 21,132,0,90,13,100,22,100,23,132,0,90,14,100,24,83, - 0,41,25,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,99,4, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, - 0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0, - 0,41,6,218,5,95,110,97,109,101,218,5,95,112,97,116, - 104,114,136,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,12,95,112,97, - 116,104,95,102,105,110,100,101,114,169,4,114,143,0,0,0, - 114,141,0,0,0,114,65,0,0,0,90,11,112,97,116,104, - 95,102,105,110,100,101,114,32,32,32,32,114,7,0,0,0, - 114,235,0,0,0,197,4,0,0,115,8,0,0,0,6,1, - 6,1,14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4, - 102,2,83,0,41,6,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,97,0,0,0,114,10,0,0,0, - 41,2,114,16,0,0,0,114,65,0,0,0,90,8,95,95, - 112,97,116,104,95,95,78,41,2,114,45,1,0,0,114,104, - 0,0,0,41,4,114,143,0,0,0,114,38,1,0,0,218, - 3,100,111,116,90,2,109,101,32,32,32,32,114,7,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,203,4,0,0,115,8, - 0,0,0,18,2,8,1,4,2,8,3,114,9,0,0,0, - 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,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,52,1,0,0,114,154,0,0,0,114, - 16,0,0,0,218,7,109,111,100,117,108,101,115,41,3,114, - 143,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,32,32,32,114,7,0,0,0, - 114,47,1,0,0,213,4,0,0,115,4,0,0,0,12,1, - 16,1,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0, - 0,0,116,0,124,0,160,1,161,0,131,1,125,1,124,1, - 124,0,106,2,107,3,114,37,124,0,160,3,124,0,106,4, - 124,1,161,2,125,2,124,2,100,0,117,1,114,34,124,2, - 106,5,100,0,117,0,114,34,124,2,106,6,114,34,124,2, - 106,6,124,0,95,7,124,1,124,0,95,2,124,0,106,7, - 83,0,114,69,0,0,0,41,8,114,136,0,0,0,114,47, - 1,0,0,114,48,1,0,0,114,49,1,0,0,114,45,1, - 0,0,114,163,0,0,0,114,201,0,0,0,114,46,1,0, - 0,41,3,114,143,0,0,0,90,11,112,97,114,101,110,116, - 95,112,97,116,104,114,209,0,0,0,32,32,32,114,7,0, - 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, - 217,4,0,0,115,16,0,0,0,12,2,10,1,14,1,18, - 3,6,1,8,1,6,1,6,1,114,9,0,0,0,122,27, + 0,0,114,205,0,0,0,169,4,0,0,115,8,0,0,0, + 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0, + 114,246,0,0,0,32,32,114,7,0,0,0,114,240,0,0, + 0,175,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114,7,0, + 0,0,114,0,1,0,0,179,4,0,0,114,25,0,0,0, + 114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0,0,114, + 25,1,0,0,114,74,0,0,0,114,246,0,0,0,32,32, + 114,7,0,0,0,114,202,0,0,0,183,4,0,0,114,26, + 1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1,0,0, + 114,238,0,0,0,114,244,0,0,0,114,205,0,0,0,114, + 240,0,0,0,114,0,1,0,0,114,159,0,0,0,114,202, + 0,0,0,114,12,0,0,0,114,7,0,0,0,114,28,1, + 0,0,136,4,0,0,115,24,0,0,0,8,0,4,2,8, + 6,8,4,8,4,8,3,8,8,8,6,8,6,8,4,2, + 4,14,1,114,9,0,0,0,114,28,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, + 0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100,21,132, + 0,90,13,100,22,100,23,132,0,90,14,100,24,83,0,41, + 25,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,99,4,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, + 0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0,0,41, + 6,218,5,95,110,97,109,101,218,5,95,112,97,116,104,114, + 136,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,12,95,112,97,116,104, + 95,102,105,110,100,101,114,169,4,114,143,0,0,0,114,141, + 0,0,0,114,65,0,0,0,90,11,112,97,116,104,95,102, + 105,110,100,101,114,32,32,32,32,114,7,0,0,0,114,235, + 0,0,0,196,4,0,0,115,8,0,0,0,6,1,6,1, + 14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4,102,2, + 83,0,41,6,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,97,0,0,0,114,10,0,0,0,41,2, + 114,16,0,0,0,114,65,0,0,0,90,8,95,95,112,97, + 116,104,95,95,78,41,2,114,45,1,0,0,114,104,0,0, + 0,41,4,114,143,0,0,0,114,38,1,0,0,218,3,100, + 111,116,90,2,109,101,32,32,32,32,114,7,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,202,4,0,0,115,8,0,0, + 0,18,2,8,1,4,2,8,3,114,9,0,0,0,122,38, 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,3,0,0,0,67,0,0,0, - 243,12,0,0,0,116,0,124,0,160,1,161,0,131,1,83, - 0,114,69,0,0,0,41,2,218,4,105,116,101,114,114,54, + 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,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,52,1,0,0,114,154,0,0,0,114,16,0, + 0,0,218,7,109,111,100,117,108,101,115,41,3,114,143,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,32,32,32,114,7,0,0,0,114,47, + 1,0,0,212,4,0,0,115,4,0,0,0,12,1,16,1, + 114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0,0,0, + 116,0,124,0,160,1,161,0,131,1,125,1,124,1,124,0, + 106,2,107,3,114,37,124,0,160,3,124,0,106,4,124,1, + 161,2,125,2,124,2,100,0,117,1,114,34,124,2,106,5, + 100,0,117,0,114,34,124,2,106,6,114,34,124,2,106,6, + 124,0,95,7,124,1,124,0,95,2,124,0,106,7,83,0, + 114,69,0,0,0,41,8,114,136,0,0,0,114,47,1,0, + 0,114,48,1,0,0,114,49,1,0,0,114,45,1,0,0, + 114,163,0,0,0,114,201,0,0,0,114,46,1,0,0,41, + 3,114,143,0,0,0,90,11,112,97,114,101,110,116,95,112, + 97,116,104,114,209,0,0,0,32,32,32,114,7,0,0,0, + 218,12,95,114,101,99,97,108,99,117,108,97,116,101,216,4, + 0,0,115,16,0,0,0,12,2,10,1,14,1,18,3,6, + 1,8,1,6,1,6,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,12, + 0,0,0,116,0,124,0,160,1,161,0,131,1,83,0,114, + 69,0,0,0,41,2,218,4,105,116,101,114,114,54,1,0, + 0,114,20,1,0,0,32,114,7,0,0,0,218,8,95,95, + 105,116,101,114,95,95,229,4,0,0,243,2,0,0,0,12, + 1,114,9,0,0,0,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, + 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,54,1,0, + 0,41,2,114,143,0,0,0,218,5,105,110,100,101,120,32, + 32,114,7,0,0,0,218,11,95,95,103,101,116,105,116,101, + 109,95,95,232,4,0,0,114,58,1,0,0,114,9,0,0, + 0,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,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,46,1,0, + 0,41,3,114,143,0,0,0,114,60,1,0,0,114,65,0, + 0,0,32,32,32,114,7,0,0,0,218,11,95,95,115,101, + 116,105,116,101,109,95,95,235,4,0,0,115,2,0,0,0, + 14,1,114,9,0,0,0,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, + 3,0,0,0,67,0,0,0,114,55,1,0,0,114,69,0, + 0,0,41,2,114,4,0,0,0,114,54,1,0,0,114,20, + 1,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, + 95,95,238,4,0,0,114,58,1,0,0,114,9,0,0,0, + 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,3,0,0,0,67,0,0,0,243,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,89,0,0,0,114,46, 1,0,0,114,20,1,0,0,32,114,7,0,0,0,218,8, - 95,95,105,116,101,114,95,95,230,4,0,0,243,2,0,0, - 0,12,1,114,9,0,0,0,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,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,54, - 1,0,0,41,2,114,143,0,0,0,218,5,105,110,100,101, - 120,32,32,114,7,0,0,0,218,11,95,95,103,101,116,105, - 116,101,109,95,95,233,4,0,0,114,58,1,0,0,114,9, - 0,0,0,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, - 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,46, - 1,0,0,41,3,114,143,0,0,0,114,60,1,0,0,114, - 65,0,0,0,32,32,32,114,7,0,0,0,218,11,95,95, - 115,101,116,105,116,101,109,95,95,236,4,0,0,115,2,0, - 0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,55,1,0,0,114, - 69,0,0,0,41,2,114,4,0,0,0,114,54,1,0,0, - 114,20,1,0,0,32,114,7,0,0,0,218,7,95,95,108, - 101,110,95,95,239,4,0,0,114,58,1,0,0,114,9,0, - 0,0,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,3,0,0,0,67,0,0,0,243, - 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,89,0,0,0, - 114,46,1,0,0,114,20,1,0,0,32,114,7,0,0,0, - 218,8,95,95,114,101,112,114,95,95,242,4,0,0,114,58, - 1,0,0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32, - 114,7,0,0,0,218,12,95,95,99,111,110,116,97,105,110, - 115,95,95,245,4,0,0,114,58,1,0,0,114,9,0,0, - 0,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,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, - 46,1,0,0,114,61,0,0,0,114,66,1,0,0,32,32, - 114,7,0,0,0,114,61,0,0,0,248,4,0,0,243,2, - 0,0,0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150, - 0,0,0,114,151,0,0,0,114,235,0,0,0,114,52,1, - 0,0,114,47,1,0,0,114,54,1,0,0,114,57,1,0, - 0,114,61,1,0,0,114,62,1,0,0,114,63,1,0,0, - 114,65,1,0,0,114,68,1,0,0,114,61,0,0,0,114, - 12,0,0,0,114,7,0,0,0,114,44,1,0,0,190,4, - 0,0,115,26,0,0,0,8,0,4,1,8,6,8,6,8, - 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, - 3,114,9,0,0,0,114,44,1,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, - 115,88,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,100,18,132,0,90,12,100,19,83,0,41,20,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,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,44,1,0,0,114,46,1,0,0,114,50, - 1,0,0,32,32,32,32,114,7,0,0,0,114,235,0,0, - 0,254,4,0,0,115,2,0,0,0,18,1,114,9,0,0, - 0,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,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,24,0,0,0,116,0,160,1,100,1,116,2,161,2, - 1,0,100,2,160,3,124,0,106,4,161,1,83,0,41,4, - 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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0, - 0,114,101,0,0,0,114,89,0,0,0,114,149,0,0,0, - 41,1,114,243,0,0,0,32,114,7,0,0,0,218,11,109, - 111,100,117,108,101,95,114,101,112,114,1,5,0,0,115,8, - 0,0,0,6,7,2,1,4,255,12,2,114,9,0,0,0, - 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,1,0,0,0,67, - 0,0,0,114,24,0,0,0,41,2,78,84,114,12,0,0, - 0,114,246,0,0,0,32,32,114,7,0,0,0,114,205,0, - 0,0,12,5,0,0,243,2,0,0,0,4,1,114,9,0, - 0,0,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,1,0,0,0, - 67,0,0,0,114,24,0,0,0,41,2,78,114,10,0,0, - 0,114,12,0,0,0,114,246,0,0,0,32,32,114,7,0, - 0,0,114,0,1,0,0,15,5,0,0,114,72,1,0,0, - 114,9,0,0,0,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,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, - 10,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,32,32,114,7,0,0,0,114,240, - 0,0,0,18,5,0,0,114,69,1,0,0,114,9,0,0, - 0,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, + 95,95,114,101,112,114,95,95,241,4,0,0,114,58,1,0, + 0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32,114,7, + 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, + 95,244,4,0,0,114,58,1,0,0,114,9,0,0,0,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,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,46,1, + 0,0,114,61,0,0,0,114,66,1,0,0,32,32,114,7, + 0,0,0,114,61,0,0,0,247,4,0,0,243,2,0,0, + 0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150,0,0, + 0,114,151,0,0,0,114,235,0,0,0,114,52,1,0,0, + 114,47,1,0,0,114,54,1,0,0,114,57,1,0,0,114, + 61,1,0,0,114,62,1,0,0,114,63,1,0,0,114,65, + 1,0,0,114,68,1,0,0,114,61,0,0,0,114,12,0, + 0,0,114,7,0,0,0,114,44,1,0,0,189,4,0,0, + 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, + 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, + 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, + 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,100,18,132,0,90,12,100,19,83,0,41,20,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, + 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,44,1,0,0,114,46,1,0,0,114,50,1,0, + 0,32,32,32,32,114,7,0,0,0,114,235,0,0,0,253, + 4,0,0,115,2,0,0,0,18,1,114,9,0,0,0,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,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 24,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 100,2,160,3,124,0,106,4,161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0,0,114, + 101,0,0,0,114,89,0,0,0,114,149,0,0,0,41,1, + 114,243,0,0,0,32,114,7,0,0,0,218,11,109,111,100, + 117,108,101,95,114,101,112,114,0,5,0,0,115,8,0,0, + 0,6,7,2,1,4,255,12,2,114,9,0,0,0,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,1,0,0,0,67,0,0, - 0,114,24,0,0,0,114,236,0,0,0,114,12,0,0,0, - 114,237,0,0,0,32,32,114,7,0,0,0,114,238,0,0, - 0,21,5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, - 0,0,114,12,0,0,0,114,40,1,0,0,32,32,114,7, - 0,0,0,114,244,0,0,0,24,5,0,0,114,72,1,0, - 0,114,9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172, - 0,0,0,114,46,1,0,0,114,245,0,0,0,114,246,0, - 0,0,32,32,114,7,0,0,0,114,247,0,0,0,27,5, - 0,0,115,8,0,0,0,6,7,4,1,4,255,12,3,114, + 0,114,24,0,0,0,41,2,78,84,114,12,0,0,0,114, + 246,0,0,0,32,32,114,7,0,0,0,114,205,0,0,0, + 11,5,0,0,243,2,0,0,0,4,1,114,9,0,0,0, + 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,1,0,0,0,67,0, + 0,0,114,24,0,0,0,41,2,78,114,10,0,0,0,114, + 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, + 114,0,1,0,0,14,5,0,0,114,72,1,0,0,114,9, + 0,0,0,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,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,10,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,32,32,114,7,0,0,0,114,240,0,0, + 0,17,5,0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, + 24,0,0,0,114,236,0,0,0,114,12,0,0,0,114,237, + 0,0,0,32,32,114,7,0,0,0,114,238,0,0,0,20, + 5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, + 0,0,115,4,0,0,0,100,0,83,0,114,69,0,0,0, + 114,12,0,0,0,114,40,1,0,0,32,32,114,7,0,0, + 0,114,244,0,0,0,23,5,0,0,114,72,1,0,0,114, 9,0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,67,0,0,0,115,22,0,0,0,100,1,100,2, - 108,0,109,1,125,2,1,0,124,2,124,0,106,2,131,1, - 83,0,41,3,78,114,0,0,0,0,41,1,218,15,78,97, - 109,101,115,112,97,99,101,82,101,97,100,101,114,41,3,114, - 30,1,0,0,114,73,1,0,0,114,46,1,0,0,41,3, - 114,143,0,0,0,114,243,0,0,0,114,73,1,0,0,32, - 32,32,114,7,0,0,0,114,31,1,0,0,39,5,0,0, - 115,4,0,0,0,12,1,10,1,114,9,0,0,0,122,36, - 95,78,97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0, - 0,114,150,0,0,0,114,235,0,0,0,114,232,0,0,0, - 114,71,1,0,0,114,205,0,0,0,114,0,1,0,0,114, - 240,0,0,0,114,238,0,0,0,114,244,0,0,0,114,247, - 0,0,0,114,31,1,0,0,114,12,0,0,0,114,7,0, - 0,0,114,70,1,0,0,253,4,0,0,115,22,0,0,0, - 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, - 8,3,8,3,12,12,114,9,0,0,0,114,70,1,0,0, - 99,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,7, - 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, - 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, - 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, - 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, - 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, - 41,21,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,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, - 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, - 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, - 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, - 1,0,113,7,100,1,83,0,41,3,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,41,6,218, - 4,108,105,115,116,114,16,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,75,1,0,0, - 41,2,114,141,0,0,0,218,6,102,105,110,100,101,114,32, - 32,114,7,0,0,0,114,75,1,0,0,50,5,0,0,115, - 14,0,0,0,22,4,8,1,10,1,10,1,8,1,2,128, - 4,252,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0, - 0,0,9,0,0,0,67,0,0,0,115,78,0,0,0,116, - 0,106,1,100,1,117,1,114,14,116,0,106,1,115,14,116, - 2,160,3,100,2,116,4,161,2,1,0,116,0,106,1,68, - 0,93,18,125,1,9,0,124,1,124,0,131,1,2,0,1, - 0,83,0,35,0,4,0,116,5,121,38,1,0,1,0,1, - 0,89,0,113,17,37,0,100,1,83,0,119,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,16,0,0,0, - 218,10,112,97,116,104,95,104,111,111,107,115,114,99,0,0, - 0,114,100,0,0,0,114,161,0,0,0,114,142,0,0,0, - 41,2,114,65,0,0,0,90,4,104,111,111,107,32,32,114, - 7,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, - 115,60,5,0,0,115,22,0,0,0,16,3,12,1,10,1, - 2,1,12,1,2,128,12,1,4,1,2,128,4,2,2,253, - 115,12,0,0,0,148,3,26,2,154,7,35,9,166,1,35, - 9,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,8,0,0,0,67,0,0,0,115,104, - 0,0,0,124,1,100,1,107,2,114,21,9,0,116,0,160, - 1,161,0,125,1,110,11,35,0,4,0,116,2,121,51,1, - 0,1,0,1,0,89,0,100,2,83,0,37,0,9,0,116, - 3,106,4,124,1,25,0,125,2,124,2,83,0,35,0,4, - 0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,10,0,0,0,78,41,7,114,19,0,0,0,114,82, - 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, - 100,69,114,114,111,114,114,16,0,0,0,114,77,1,0,0, - 218,8,75,101,121,69,114,114,111,114,114,81,1,0,0,41, - 3,114,220,0,0,0,114,65,0,0,0,114,79,1,0,0, - 32,32,32,114,7,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,73,5, - 0,0,115,36,0,0,0,8,8,2,1,10,1,2,128,12, - 1,6,3,2,128,2,1,10,1,4,4,2,128,12,253,10, - 1,12,1,4,1,2,128,2,253,2,250,115,24,0,0,0, - 133,4,10,0,138,7,20,7,150,5,29,0,157,17,49,7, - 178,1,49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138, - 0,0,0,116,0,124,2,100,1,131,2,114,27,116,1,160, - 2,124,2,161,1,155,0,100,2,157,2,125,3,116,3,160, - 4,124,3,116,5,161,2,1,0,124,2,160,6,124,1,161, - 1,92,2,125,4,125,5,110,21,116,1,160,2,124,2,161, - 1,155,0,100,3,157,2,125,3,116,3,160,4,124,3,116, - 5,161,2,1,0,124,2,160,7,124,1,161,1,125,4,103, - 0,125,5,124,4,100,0,117,1,114,58,116,1,160,8,124, - 1,124,4,161,2,83,0,116,1,160,9,124,1,100,0,161, - 2,125,6,124,5,124,6,95,10,124,6,83,0,41,4,78, - 114,160,0,0,0,122,53,46,102,105,110,100,95,115,112,101, - 99,40,41,32,110,111,116,32,102,111,117,110,100,59,32,102, - 97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,102, - 105,110,100,95,108,111,97,100,101,114,40,41,122,53,46,102, - 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, - 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, - 101,40,41,41,11,114,152,0,0,0,114,158,0,0,0,90, - 12,95,111,98,106,101,99,116,95,110,97,109,101,114,99,0, - 0,0,114,100,0,0,0,114,161,0,0,0,114,160,0,0, - 0,114,228,0,0,0,114,223,0,0,0,114,206,0,0,0, - 114,201,0,0,0,41,7,114,220,0,0,0,114,162,0,0, - 0,114,79,1,0,0,114,165,0,0,0,114,163,0,0,0, - 114,164,0,0,0,114,209,0,0,0,32,32,32,32,32,32, - 32,114,7,0,0,0,218,16,95,108,101,103,97,99,121,95, - 103,101,116,95,115,112,101,99,95,5,0,0,115,26,0,0, - 0,10,4,16,1,12,2,16,1,16,2,12,2,10,1,4, - 1,8,1,12,1,12,1,6,1,4,1,114,9,0,0,0, - 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,5,0,0,0,67, - 0,0,0,115,166,0,0,0,103,0,125,4,124,2,68,0, - 93,67,125,5,116,0,124,5,116,1,116,2,102,2,131,2, - 115,14,113,4,124,0,160,3,124,5,161,1,125,6,124,6, - 100,1,117,1,114,71,116,4,124,6,100,2,131,2,114,35, - 124,6,160,5,124,1,124,3,161,2,125,7,110,6,124,0, - 160,6,124,1,124,6,161,2,125,7,124,7,100,1,117,0, - 114,46,113,4,124,7,106,7,100,1,117,1,114,55,124,7, - 2,0,1,0,83,0,124,7,106,8,125,8,124,8,100,1, - 117,0,114,66,116,9,100,3,131,1,130,1,124,4,160,10, - 124,8,161,1,1,0,113,4,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,225,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,184, - 0,0,0,114,109,0,0,0,218,5,98,121,116,101,115,114, - 84,1,0,0,114,152,0,0,0,114,225,0,0,0,114,85, - 1,0,0,114,163,0,0,0,114,201,0,0,0,114,142,0, - 0,0,114,190,0,0,0,114,158,0,0,0,114,206,0,0, - 0,41,9,114,220,0,0,0,114,162,0,0,0,114,65,0, - 0,0,114,224,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,79, - 1,0,0,114,209,0,0,0,114,164,0,0,0,32,32,32, - 32,32,32,32,32,32,114,7,0,0,0,218,9,95,103,101, - 116,95,115,112,101,99,116,5,0,0,115,42,0,0,0,4, - 5,8,1,14,1,2,1,10,1,8,1,10,1,14,1,12, - 2,8,1,2,1,10,1,8,1,6,1,8,1,8,1,10, - 5,2,128,12,2,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,94,0,0,0,124,2, - 100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3,100,1,117,0,114,45, - 124,4,106,4,125,5,124,5,114,43,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,124,4,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,16,0,0,0,114,65,0,0,0,114,88,1,0,0,114, - 163,0,0,0,114,201,0,0,0,114,204,0,0,0,114,44, - 1,0,0,41,6,114,220,0,0,0,114,162,0,0,0,114, - 65,0,0,0,114,224,0,0,0,114,209,0,0,0,114,87, - 1,0,0,32,32,32,32,32,32,114,7,0,0,0,114,225, - 0,0,0,148,5,0,0,115,26,0,0,0,8,6,6,1, - 14,1,8,1,4,1,10,1,6,1,4,1,6,3,16,1, - 4,1,4,2,4,2,114,9,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100, - 1,116,2,161,2,1,0,124,0,160,3,124,1,124,2,161, - 2,125,3,124,3,100,2,117,0,114,18,100,2,83,0,124, - 3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46, - 102,105,110,100,95,109,111,100,117,108,101,40,41,32,105,115, - 32,100,101,112,114,101,99,97,116,101,100,32,97,110,100,32, - 115,108,97,116,101,100,32,102,111,114,32,114,101,109,111,118, - 97,108,32,105,110,32,80,121,116,104,111,110,32,51,46,49, - 50,59,32,117,115,101,32,102,105,110,100,95,115,112,101,99, - 40,41,32,105,110,115,116,101,97,100,78,114,226,0,0,0, - 114,227,0,0,0,32,32,32,32,114,7,0,0,0,114,228, - 0,0,0,172,5,0,0,115,14,0,0,0,6,8,2,2, - 4,254,12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0, - 0,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,2,1,0,124,2,106, - 2,124,0,105,0,124,1,164,1,142,1,83,0,41,4,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,78, - 41,3,90,18,105,109,112,111,114,116,108,105,98,46,109,101, - 116,97,100,97,116,97,114,89,1,0,0,218,18,102,105,110, - 100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,41, - 3,114,144,0,0,0,114,145,0,0,0,114,89,1,0,0, - 32,32,32,114,7,0,0,0,114,90,1,0,0,188,5,0, - 0,115,4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69, - 0,0,0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0, - 0,0,114,84,1,0,0,114,85,1,0,0,114,88,1,0, - 0,114,225,0,0,0,114,228,0,0,0,114,90,1,0,0, - 114,12,0,0,0,114,7,0,0,0,114,74,1,0,0,46, - 5,0,0,115,36,0,0,0,8,0,4,2,2,2,10,1, - 2,9,10,1,2,12,10,1,2,21,10,1,2,20,12,1, - 2,31,12,1,2,23,12,1,2,15,14,1,114,9,0,0, - 0,114,74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,114,0,0,0, - 135,5,103,0,125,3,124,2,68,0,93,16,92,2,138,5, - 125,4,124,3,160,0,136,5,102,1,100,1,100,2,132,8, - 124,4,68,0,131,1,161,1,1,0,113,5,124,3,124,0, - 95,1,124,1,112,28,100,3,124,0,95,2,116,3,124,0, - 106,2,131,1,115,44,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,3,0,0, - 0,51,0,0,0,115,24,0,0,0,129,0,124,0,93,7, - 125,1,124,1,137,2,102,2,86,0,1,0,113,2,100,0, - 83,0,114,69,0,0,0,114,12,0,0,0,41,3,114,5, - 0,0,0,114,41,1,0,0,114,163,0,0,0,32,32,128, - 114,7,0,0,0,114,8,0,0,0,217,5,0,0,115,4, - 0,0,0,6,128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41, - 11,114,190,0,0,0,218,8,95,108,111,97,100,101,114,115, - 114,65,0,0,0,114,86,0,0,0,114,67,0,0,0,114, - 19,0,0,0,114,82,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,6,114, - 143,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,211,0,0,0,114,163,0,0,0,32,32,32,32, - 32,64,114,7,0,0,0,114,235,0,0,0,211,5,0,0, - 115,22,0,0,0,2,128,4,4,12,1,26,1,6,1,10, - 2,10,1,18,1,6,1,8,1,12,1,114,9,0,0,0, - 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,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,130,0,0, - 0,78,41,1,114,93,1,0,0,114,20,1,0,0,32,114, - 7,0,0,0,114,75,1,0,0,227,5,0,0,114,81,0, - 0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0,0,0,116, - 0,160,1,100,1,116,2,161,2,1,0,124,0,160,3,124, - 1,161,1,125,2,124,2,100,2,117,0,114,19,100,2,103, - 0,102,2,83,0,124,2,106,4,124,2,106,5,112,25,103, - 0,102,2,83,0,41,3,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,122,101, - 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, - 108,111,97,100,101,114,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, - 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, - 115,116,101,97,100,78,41,6,114,99,0,0,0,114,100,0, - 0,0,114,101,0,0,0,114,225,0,0,0,114,163,0,0, - 0,114,201,0,0,0,41,3,114,143,0,0,0,114,162,0, - 0,0,114,209,0,0,0,32,32,32,114,7,0,0,0,114, - 160,0,0,0,233,5,0,0,115,14,0,0,0,6,7,2, - 2,4,254,10,3,8,1,8,1,16,1,114,9,0,0,0, - 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,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, - 200,0,0,0,41,1,114,212,0,0,0,41,7,114,143,0, - 0,0,114,210,0,0,0,114,162,0,0,0,114,65,0,0, - 0,90,4,115,109,115,108,114,224,0,0,0,114,163,0,0, - 0,32,32,32,32,32,32,32,114,7,0,0,0,114,88,1, - 0,0,248,5,0,0,115,8,0,0,0,10,1,8,1,2, - 1,6,255,114,9,0,0,0,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,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,9,0,116,1,124, - 0,106,2,112,17,116,3,160,4,161,0,131,1,106,5,125, - 5,110,12,35,0,4,0,116,6,121,190,1,0,1,0,1, - 0,100,4,125,5,89,0,110,1,37,0,124,5,124,0,106, - 7,107,3,114,45,124,0,160,8,161,0,1,0,124,5,124, - 0,95,7,116,9,131,0,114,56,124,0,106,10,125,6,124, - 4,160,11,161,0,125,7,110,5,124,0,106,12,125,6,124, - 4,125,7,124,7,124,6,118,0,114,108,116,13,124,0,106, - 2,124,4,131,2,125,8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125, - 3,124,0,106,14,68,0,93,55,92,2,125,9,125,10,9, - 0,116,13,124,0,106,2,124,4,124,9,23,0,131,2,125, - 12,110,12,35,0,4,0,116,18,121,189,1,0,1,0,1, - 0,89,0,1,0,100,6,83,0,37,0,116,19,160,20,100, - 7,124,12,100,3,100,8,166,3,1,0,124,7,124,9,23, - 0,124,6,118,0,114,166,116,15,124,12,131,1,114,166,124, - 0,160,16,124,10,124,1,124,12,100,6,124,2,161,5,2, - 0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,97,0,0,0, - 114,45,0,0,0,114,130,0,0,0,114,235,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,104,0,0,0,114,75,0,0,0,114, - 65,0,0,0,114,19,0,0,0,114,82,0,0,0,114,33, - 1,0,0,114,76,0,0,0,114,93,1,0,0,218,11,95, - 102,105,108,108,95,99,97,99,104,101,114,22,0,0,0,114, - 96,1,0,0,114,131,0,0,0,114,95,1,0,0,114,67, - 0,0,0,114,92,1,0,0,114,80,0,0,0,114,88,1, - 0,0,114,83,0,0,0,114,111,0,0,0,114,158,0,0, - 0,114,172,0,0,0,114,206,0,0,0,114,201,0,0,0, - 41,14,114,143,0,0,0,114,162,0,0,0,114,224,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,192,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,210,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,209,0,0,0,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,114,7,0,0,0,114,225,0, - 0,0,253,5,0,0,115,94,0,0,0,4,5,14,1,2, - 1,22,1,2,128,12,1,8,1,2,128,10,1,8,1,6, - 1,6,2,6,1,10,1,6,2,4,1,8,2,12,1,14, - 1,8,1,10,1,8,1,24,1,2,255,8,5,14,2,2, - 1,18,1,2,128,12,1,8,1,2,128,16,1,12,1,8, - 1,10,1,4,1,8,255,2,128,4,2,12,1,12,1,8, - 1,4,1,4,1,2,244,2,228,115,31,0,0,0,138,10, - 21,0,149,9,32,7,193,52,8,65,61,2,193,61,7,66, - 8,9,194,61,1,66,8,9,194,62,1,32,7,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, - 10,0,0,0,67,0,0,0,115,194,0,0,0,124,0,106, - 0,125,1,9,0,116,1,160,2,124,1,112,11,116,1,160, - 3,161,0,161,1,125,2,110,15,35,0,4,0,116,4,116, - 5,116,6,102,3,121,96,1,0,1,0,1,0,103,0,125, - 2,89,0,110,1,37,0,116,7,106,8,160,9,100,1,161, - 1,115,41,116,10,124,2,131,1,124,0,95,11,110,37,116, - 10,131,0,125,3,124,2,68,0,93,28,125,4,124,4,160, - 12,100,2,161,1,92,3,125,5,125,6,125,7,124,6,114, - 67,100,3,160,13,124,5,124,7,160,14,161,0,161,2,125, - 8,110,2,124,5,125,8,124,3,160,15,124,8,161,1,1, - 0,113,46,124,3,124,0,95,11,116,7,106,8,160,9,116, - 16,161,1,114,94,100,4,100,5,132,0,124,2,68,0,131, - 1,124,0,95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0, - 0,114,88,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,83,0,0,0,115,20,0,0,0, - 104,0,124,0,93,6,125,1,124,1,160,0,161,0,146,2, - 113,2,83,0,114,12,0,0,0,41,1,114,131,0,0,0, - 41,2,114,5,0,0,0,90,2,102,110,32,32,114,7,0, - 0,0,114,14,0,0,0,77,6,0,0,115,2,0,0,0, - 20,0,114,9,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,19,0,0,0,90, - 7,108,105,115,116,100,105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0, - 0,114,27,0,0,0,114,94,1,0,0,114,95,1,0,0, - 114,126,0,0,0,114,89,0,0,0,114,131,0,0,0,218, - 3,97,100,100,114,28,0,0,0,114,96,1,0,0,41,9, - 114,143,0,0,0,114,65,0,0,0,90,8,99,111,110,116, - 101,110,116,115,90,21,108,111,119,101,114,95,115,117,102,102, - 105,120,95,99,111,110,116,101,110,116,115,114,67,1,0,0, - 114,141,0,0,0,114,51,1,0,0,114,41,1,0,0,90, - 8,110,101,119,95,110,97,109,101,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,98,1,0,0,48,6,0,0, - 115,42,0,0,0,6,2,2,1,20,1,2,128,18,1,8, - 3,2,128,12,3,12,1,6,7,8,1,16,1,4,1,18, - 1,4,2,12,1,6,1,12,1,20,1,4,255,2,233,115, - 13,0,0,0,132,9,14,0,142,12,28,7,193,32,1,28, - 7,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,7,0,0,0,115,22, - 0,0,0,135,3,135,4,136,3,136,4,102,2,100,1,100, - 2,132,8,125,2,124,2,83,0,41,4,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, + 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,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,3,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,78,41,4,114,158,0,0,0,114,172,0,0, + 0,114,46,1,0,0,114,245,0,0,0,114,246,0,0,0, + 32,32,114,7,0,0,0,114,247,0,0,0,26,5,0,0, + 115,8,0,0,0,6,7,4,1,4,255,12,3,114,9,0, + 0,0,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, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,67,0,0,0,115,22,0,0,0,100,1,100,2,108,0, + 109,1,125,2,1,0,124,2,124,0,106,2,131,1,83,0, + 41,3,78,114,0,0,0,0,41,1,218,15,78,97,109,101, + 115,112,97,99,101,82,101,97,100,101,114,41,3,114,30,1, + 0,0,114,73,1,0,0,114,46,1,0,0,41,3,114,143, + 0,0,0,114,243,0,0,0,114,73,1,0,0,32,32,32, + 114,7,0,0,0,114,31,1,0,0,38,5,0,0,115,4, + 0,0,0,12,1,10,1,114,9,0,0,0,122,36,95,78, + 97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0,0,114, + 150,0,0,0,114,235,0,0,0,114,232,0,0,0,114,71, + 1,0,0,114,205,0,0,0,114,0,1,0,0,114,240,0, + 0,0,114,238,0,0,0,114,244,0,0,0,114,247,0,0, + 0,114,31,1,0,0,114,12,0,0,0,114,7,0,0,0, + 114,70,1,0,0,252,4,0,0,115,22,0,0,0,8,0, + 8,1,2,3,10,1,8,10,8,3,8,3,8,3,8,3, + 8,3,12,12,114,9,0,0,0,114,70,1,0,0,99,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,7,100,6, + 100,7,132,0,131,1,90,8,101,7,100,8,100,9,132,0, + 131,1,90,9,101,7,100,19,100,11,100,12,132,1,131,1, + 90,10,101,7,100,20,100,13,100,14,132,1,131,1,90,11, + 101,7,100,19,100,15,100,16,132,1,131,1,90,12,101,4, + 100,17,100,18,132,0,131,1,90,13,100,10,83,0,41,21, + 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,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,64,0,0,0,116,0,116,1,106,2,160,3,161,0, + 131,1,68,0,93,22,92,2,125,0,125,1,124,1,100,1, + 117,0,114,20,116,1,106,2,124,0,61,0,113,7,116,4, + 124,1,100,2,131,2,114,29,124,1,160,5,161,0,1,0, + 113,7,100,1,83,0,41,3,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,41,6,218,4,108, + 105,115,116,114,16,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,75,1,0,0,41,2, + 114,141,0,0,0,218,6,102,105,110,100,101,114,32,32,114, + 7,0,0,0,114,75,1,0,0,49,5,0,0,115,14,0, + 0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252, + 114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,67,0,0,0,115,78,0,0,0,116,0,106, + 1,100,1,117,1,114,14,116,0,106,1,115,14,116,2,160, + 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, + 18,125,1,9,0,124,1,124,0,131,1,2,0,1,0,83, + 0,35,0,4,0,116,5,121,38,1,0,1,0,1,0,89, + 0,113,17,37,0,100,1,83,0,119,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,16,0,0,0,218,10, + 112,97,116,104,95,104,111,111,107,115,114,99,0,0,0,114, + 100,0,0,0,114,161,0,0,0,114,142,0,0,0,41,2, + 114,65,0,0,0,90,4,104,111,111,107,32,32,114,7,0, + 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,59, + 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, + 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, + 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,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,8,0,0,0,67,0,0,0,115,104,0,0, + 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, + 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, + 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, + 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, + 5,121,50,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,124, + 2,83,0,37,0,119,0,119,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,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,4,0,0,0,19,0,0,0,115,36,0,0,0,116,0, - 124,0,131,1,115,10,116,1,100,1,124,0,100,2,141,2, - 130,1,137,1,124,0,103,1,137,2,162,1,82,0,142,0, - 83,0,41,4,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,78,41,2,114,83,0,0,0, - 114,142,0,0,0,41,3,114,65,0,0,0,114,220,0,0, - 0,114,97,1,0,0,32,128,128,114,7,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,89,6,0,0,115,6,0,0, - 0,8,2,12,1,16,1,114,9,0,0,0,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,78,114,12,0,0,0,41,5,114,220,0,0, - 0,114,97,1,0,0,114,102,1,0,0,114,220,0,0,0, - 114,97,1,0,0,96,96,32,64,64,114,7,0,0,0,218, - 9,112,97,116,104,95,104,111,111,107,79,6,0,0,115,6, - 0,0,0,4,128,14,10,4,6,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,64,1,0,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,89,0,0,0,114,65,0,0,0,114, - 20,1,0,0,32,114,7,0,0,0,114,65,1,0,0,97, - 6,0,0,114,58,1,0,0,114,9,0,0,0,122,19,70, - 105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114, - 95,95,114,69,0,0,0,41,15,114,149,0,0,0,114,148, - 0,0,0,114,150,0,0,0,114,151,0,0,0,114,235,0, - 0,0,114,75,1,0,0,114,166,0,0,0,114,228,0,0, - 0,114,160,0,0,0,114,88,1,0,0,114,225,0,0,0, - 114,98,1,0,0,114,233,0,0,0,114,103,1,0,0,114, - 65,1,0,0,114,12,0,0,0,114,7,0,0,0,114,91, - 1,0,0,202,5,0,0,115,24,0,0,0,8,0,4,2, - 8,7,8,16,4,4,8,2,8,15,10,5,8,51,2,31, - 10,1,12,17,114,9,0,0,0,114,91,1,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,146,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,33, - 124,5,114,18,124,5,106,1,125,4,110,15,124,2,124,3, - 107,2,114,28,116,2,124,1,124,2,131,2,125,4,110,5, - 116,3,124,1,124,2,131,2,125,4,124,5,115,42,116,4, - 124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100,0, - 83,0,35,0,4,0,116,5,121,72,1,0,1,0,1,0, - 89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0,114,39,1,0, - 0,114,32,1,0,0,114,212,0,0,0,218,9,69,120,99, - 101,112,116,105,111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0, - 32,32,32,32,32,32,114,7,0,0,0,218,14,95,102,105, - 120,95,117,112,95,109,111,100,117,108,101,103,6,0,0,115, - 40,0,0,0,10,2,10,1,4,1,4,1,8,1,8,1, - 12,1,10,2,4,1,14,1,2,1,8,1,8,1,8,1, - 12,1,2,128,12,1,6,2,2,128,2,254,115,15,0,0, - 0,171,16,61,0,189,7,65,7,7,193,8,1,65,7,7, - 114,108,1,0,0,99,0,0,0,0,0,0,0,0,0,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,102, - 2,125,1,116,5,116,6,102,2,125,2,124,0,124,1,124, - 2,103,3,83,0,41,2,122,95,82,101,116,117,114,110,115, - 32,97,32,108,105,115,116,32,111,102,32,102,105,108,101,45, - 98,97,115,101,100,32,109,111,100,117,108,101,32,108,111,97, - 100,101,114,115,46,10,10,32,32,32,32,69,97,99,104,32, - 105,116,101,109,32,105,115,32,97,32,116,117,112,108,101,32, - 40,108,111,97,100,101,114,44,32,115,117,102,102,105,120,101, - 115,41,46,10,32,32,32,32,78,41,7,114,28,1,0,0, - 114,186,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,127, - 0,0,0,114,39,1,0,0,114,113,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,32,32,32, - 114,7,0,0,0,114,207,0,0,0,126,6,0,0,115,8, - 0,0,0,12,5,8,1,8,1,10,1,114,9,0,0,0, - 114,207,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,124, - 0,97,0,100,0,83,0,114,69,0,0,0,41,1,114,158, - 0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,97, - 112,95,109,111,100,117,108,101,32,114,7,0,0,0,218,21, - 95,115,101,116,95,98,111,111,116,115,116,114,97,112,95,109, - 111,100,117,108,101,137,6,0,0,115,2,0,0,0,8,2, - 114,9,0,0,0,114,111,1,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 50,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,111,1,0,0,114,207,0,0,0, - 114,16,0,0,0,114,80,1,0,0,114,190,0,0,0,114, - 91,1,0,0,114,103,1,0,0,218,9,109,101,116,97,95, - 112,97,116,104,114,61,0,0,0,114,74,1,0,0,41,2, - 114,110,1,0,0,90,17,115,117,112,112,111,114,116,101,100, - 95,108,111,97,100,101,114,115,32,32,114,7,0,0,0,218, - 8,95,105,110,115,116,97,108,108,142,6,0,0,115,8,0, - 0,0,8,2,6,1,20,1,16,1,114,9,0,0,0,114, - 113,1,0,0,41,1,114,87,0,0,0,114,69,0,0,0, - 41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0, - 0,41,1,84,41,85,114,151,0,0,0,114,158,0,0,0, - 114,186,0,0,0,114,91,0,0,0,114,16,0,0,0,114, - 99,0,0,0,114,183,0,0,0,114,26,0,0,0,114,230, - 0,0,0,90,2,110,116,114,19,0,0,0,114,214,0,0, - 0,90,5,112,111,115,105,120,114,51,0,0,0,218,3,97, - 108,108,114,59,0,0,0,114,136,0,0,0,114,57,0,0, - 0,114,62,0,0,0,90,20,95,112,97,116,104,115,101,112, - 115,95,119,105,116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0, - 0,0,114,22,0,0,0,114,37,0,0,0,114,43,0,0, - 0,114,46,0,0,0,114,67,0,0,0,114,73,0,0,0, - 114,75,0,0,0,114,79,0,0,0,114,80,0,0,0,114, - 83,0,0,0,114,86,0,0,0,114,95,0,0,0,218,4, - 116,121,112,101,218,8,95,95,99,111,100,101,95,95,114,185, - 0,0,0,114,35,0,0,0,114,171,0,0,0,114,34,0, - 0,0,114,40,0,0,0,114,7,1,0,0,114,116,0,0, - 0,114,112,0,0,0,114,127,0,0,0,114,61,0,0,0, - 114,109,1,0,0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0,114, - 135,0,0,0,114,137,0,0,0,114,139,0,0,0,114,159, - 0,0,0,114,166,0,0,0,114,175,0,0,0,114,179,0, - 0,0,114,181,0,0,0,114,188,0,0,0,114,193,0,0, - 0,114,194,0,0,0,114,199,0,0,0,218,6,111,98,106, - 101,99,116,114,208,0,0,0,114,212,0,0,0,114,213,0, - 0,0,114,234,0,0,0,114,248,0,0,0,114,10,1,0, - 0,114,32,1,0,0,114,39,1,0,0,114,28,1,0,0, - 114,44,1,0,0,114,70,1,0,0,114,74,1,0,0,114, - 91,1,0,0,114,108,1,0,0,114,207,0,0,0,114,111, - 1,0,0,114,113,1,0,0,114,12,0,0,0,114,7,0, - 0,0,218,8,60,109,111,100,117,108,101,62,1,0,0,0, - 115,180,0,0,0,4,0,4,22,8,3,8,1,8,1,8, - 1,8,1,10,3,4,1,8,1,10,1,8,2,4,3,10, - 1,6,2,22,2,8,1,8,1,10,1,14,1,4,4,4, - 1,2,1,2,1,4,255,8,4,6,16,8,3,8,5,8, - 5,4,6,10,1,8,30,8,6,8,8,8,10,8,9,8, - 5,4,7,10,1,8,8,10,5,10,22,0,127,16,36,12, - 1,4,2,4,1,6,2,4,1,10,1,8,2,6,2,8, - 2,16,2,8,71,8,40,8,19,8,12,8,12,8,31,8, - 20,8,33,8,28,10,24,10,13,10,10,8,11,6,14,4, - 3,2,1,12,255,14,73,14,67,16,30,0,127,14,17,18, - 50,18,45,18,25,14,53,14,63,14,49,0,127,14,29,0, - 127,10,30,8,23,8,11,12,5,114,9,0,0,0, + 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, + 10,0,0,0,78,41,7,114,19,0,0,0,114,82,0,0, + 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, + 114,114,111,114,114,16,0,0,0,114,77,1,0,0,218,8, + 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, + 220,0,0,0,114,65,0,0,0,114,79,1,0,0,32,32, + 32,114,7,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,72,5,0,0, + 115,36,0,0,0,8,8,2,1,10,1,2,128,12,1,6, + 3,2,128,2,1,10,1,4,4,2,128,12,253,10,1,12, + 1,4,1,2,128,2,253,2,250,115,24,0,0,0,133,4, + 10,0,138,7,20,7,150,5,29,0,157,17,49,7,178,1, + 49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138,0,0, + 0,116,0,124,2,100,1,131,2,114,27,116,1,160,2,124, + 2,161,1,155,0,100,2,157,2,125,3,116,3,160,4,124, + 3,116,5,161,2,1,0,124,2,160,6,124,1,161,1,92, + 2,125,4,125,5,110,21,116,1,160,2,124,2,161,1,155, + 0,100,3,157,2,125,3,116,3,160,4,124,3,116,5,161, + 2,1,0,124,2,160,7,124,1,161,1,125,4,103,0,125, + 5,124,4,100,0,117,1,114,58,116,1,160,8,124,1,124, + 4,161,2,83,0,116,1,160,9,124,1,100,0,161,2,125, + 6,124,5,124,6,95,10,124,6,83,0,41,4,78,114,160, + 0,0,0,122,53,46,102,105,110,100,95,115,112,101,99,40, + 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, + 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, + 100,95,108,111,97,100,101,114,40,41,122,53,46,102,105,110, + 100,95,115,112,101,99,40,41,32,110,111,116,32,102,111,117, + 110,100,59,32,102,97,108,108,105,110,103,32,98,97,99,107, + 32,116,111,32,102,105,110,100,95,109,111,100,117,108,101,40, + 41,41,11,114,152,0,0,0,114,158,0,0,0,90,12,95, + 111,98,106,101,99,116,95,110,97,109,101,114,99,0,0,0, + 114,100,0,0,0,114,161,0,0,0,114,160,0,0,0,114, + 228,0,0,0,114,223,0,0,0,114,206,0,0,0,114,201, + 0,0,0,41,7,114,220,0,0,0,114,162,0,0,0,114, + 79,1,0,0,114,165,0,0,0,114,163,0,0,0,114,164, + 0,0,0,114,209,0,0,0,32,32,32,32,32,32,32,114, + 7,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, + 116,95,115,112,101,99,94,5,0,0,115,26,0,0,0,10, + 4,16,1,12,2,16,1,16,2,12,2,10,1,4,1,8, + 1,12,1,12,1,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0, + 0,115,166,0,0,0,103,0,125,4,124,2,68,0,93,67, + 125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,14, + 113,4,124,0,160,3,124,5,161,1,125,6,124,6,100,1, + 117,1,114,71,116,4,124,6,100,2,131,2,114,35,124,6, + 160,5,124,1,124,3,161,2,125,7,110,6,124,0,160,6, + 124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,46, + 113,4,124,7,106,7,100,1,117,1,114,55,124,7,2,0, + 1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,0, + 114,66,116,9,100,3,131,1,130,1,124,4,160,10,124,8, + 161,1,1,0,113,4,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,225,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,184,0,0, + 0,114,109,0,0,0,218,5,98,121,116,101,115,114,84,1, + 0,0,114,152,0,0,0,114,225,0,0,0,114,85,1,0, + 0,114,163,0,0,0,114,201,0,0,0,114,142,0,0,0, + 114,190,0,0,0,114,158,0,0,0,114,206,0,0,0,41, + 9,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, + 114,224,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,79,1,0, + 0,114,209,0,0,0,114,164,0,0,0,32,32,32,32,32, + 32,32,32,32,114,7,0,0,0,218,9,95,103,101,116,95, + 115,112,101,99,115,5,0,0,115,42,0,0,0,4,5,8, + 1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,8, + 1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,2, + 128,12,2,6,1,4,1,114,9,0,0,0,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,5, + 0,0,0,67,0,0,0,115,94,0,0,0,124,2,100,1, + 117,0,114,7,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,20, + 100,1,83,0,124,4,106,3,100,1,117,0,114,45,124,4, + 106,4,125,5,124,5,114,43,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,124,4,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,16, + 0,0,0,114,65,0,0,0,114,88,1,0,0,114,163,0, + 0,0,114,201,0,0,0,114,204,0,0,0,114,44,1,0, + 0,41,6,114,220,0,0,0,114,162,0,0,0,114,65,0, + 0,0,114,224,0,0,0,114,209,0,0,0,114,87,1,0, + 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, + 0,147,5,0,0,115,26,0,0,0,8,6,6,1,14,1, + 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, + 4,2,4,2,114,9,0,0,0,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, + 67,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, + 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, + 4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, + 0,0,0,32,32,32,32,114,7,0,0,0,114,228,0,0, + 0,171,5,0,0,115,14,0,0,0,6,8,2,2,4,254, + 12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124, + 0,105,0,124,1,164,1,142,1,83,0,41,4,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,78,41,3, + 90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,97, + 100,97,116,97,114,89,1,0,0,218,18,102,105,110,100,95, + 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, + 144,0,0,0,114,145,0,0,0,114,89,1,0,0,32,32, + 32,114,7,0,0,0,114,90,1,0,0,187,5,0,0,115, + 4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0, + 0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0,0,0, + 114,84,1,0,0,114,85,1,0,0,114,88,1,0,0,114, + 225,0,0,0,114,228,0,0,0,114,90,1,0,0,114,12, + 0,0,0,114,7,0,0,0,114,74,1,0,0,45,5,0, + 0,115,36,0,0,0,8,0,4,2,2,2,10,1,2,9, + 10,1,2,12,10,1,2,21,10,1,2,20,12,1,2,31, + 12,1,2,23,12,1,2,15,14,1,114,9,0,0,0,114, + 74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,112,0,0,0,103,0, + 125,3,124,2,68,0,93,16,92,2,137,5,125,4,124,3, + 160,0,135,5,102,1,100,1,100,2,132,8,124,4,68,0, + 131,1,161,1,1,0,113,4,124,3,124,0,95,1,124,1, + 112,27,100,3,124,0,95,2,116,3,124,0,106,2,131,1, + 115,43,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,3,0,0,0,51,0,0, + 0,115,24,0,0,0,129,0,124,0,93,7,125,1,124,1, + 136,2,102,2,86,0,1,0,113,2,100,0,83,0,114,69, + 0,0,0,114,12,0,0,0,41,3,114,5,0,0,0,114, + 41,1,0,0,114,163,0,0,0,32,32,128,114,7,0,0, + 0,114,8,0,0,0,216,5,0,0,115,4,0,0,0,6, + 128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41,11,114,190,0, + 0,0,218,8,95,108,111,97,100,101,114,115,114,65,0,0, + 0,114,86,0,0,0,114,67,0,0,0,114,19,0,0,0, + 114,82,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,6,114,143,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,211, + 0,0,0,114,163,0,0,0,32,32,32,32,32,64,114,7, + 0,0,0,114,235,0,0,0,210,5,0,0,115,20,0,0, + 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, + 1,8,1,12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93, + 1,0,0,114,20,1,0,0,32,114,7,0,0,0,114,75, + 1,0,0,226,5,0,0,114,81,0,0,0,114,9,0,0, + 0,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,4,0,0,0, + 67,0,0,0,115,54,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,124,0,160,3,124,1,161,1,125,2,124, + 2,100,2,117,0,114,19,100,2,103,0,102,2,83,0,124, + 2,106,4,124,2,106,5,112,25,103,0,102,2,83,0,41, + 3,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,122,101,70,105,108,101,70,105, + 110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,114, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, + 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, + 41,6,114,99,0,0,0,114,100,0,0,0,114,101,0,0, + 0,114,225,0,0,0,114,163,0,0,0,114,201,0,0,0, + 41,3,114,143,0,0,0,114,162,0,0,0,114,209,0,0, + 0,32,32,32,114,7,0,0,0,114,160,0,0,0,232,5, + 0,0,115,14,0,0,0,6,7,2,2,4,254,10,3,8, + 1,8,1,16,1,114,9,0,0,0,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,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,200,0,0,0,41,1, + 114,212,0,0,0,41,7,114,143,0,0,0,114,210,0,0, + 0,114,162,0,0,0,114,65,0,0,0,90,4,115,109,115, + 108,114,224,0,0,0,114,163,0,0,0,32,32,32,32,32, + 32,32,114,7,0,0,0,114,88,1,0,0,247,5,0,0, + 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, + 0,0,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,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,9,0,116,1,124,0,106,2,112,17,116, + 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, + 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, + 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, + 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, + 0,114,56,124,0,106,10,125,6,124,4,160,11,161,0,125, + 7,110,5,124,0,106,12,125,6,124,4,125,7,124,7,124, + 6,118,0,114,108,116,13,124,0,106,2,124,4,131,2,125, + 8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125,3,124,0,106,14,68, + 0,93,55,92,2,125,9,125,10,9,0,116,13,124,0,106, + 2,124,4,124,9,23,0,131,2,125,12,110,12,35,0,4, + 0,116,18,121,189,1,0,1,0,1,0,89,0,1,0,100, + 6,83,0,37,0,116,19,160,20,100,7,124,12,100,3,100, + 8,166,3,1,0,124,7,124,9,23,0,124,6,118,0,114, + 166,116,15,124,12,131,1,114,166,124,0,160,16,124,10,124, + 1,124,12,100,6,124,2,161,5,2,0,1,0,83,0,113, + 111,124,3,114,187,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,119,0,119, + 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,97,0,0,0,114,45,0,0,0,114, + 130,0,0,0,114,235,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, + 104,0,0,0,114,75,0,0,0,114,65,0,0,0,114,19, + 0,0,0,114,82,0,0,0,114,33,1,0,0,114,76,0, + 0,0,114,93,1,0,0,218,11,95,102,105,108,108,95,99, + 97,99,104,101,114,22,0,0,0,114,96,1,0,0,114,131, + 0,0,0,114,95,1,0,0,114,67,0,0,0,114,92,1, + 0,0,114,80,0,0,0,114,88,1,0,0,114,83,0,0, + 0,114,111,0,0,0,114,158,0,0,0,114,172,0,0,0, + 114,206,0,0,0,114,201,0,0,0,41,14,114,143,0,0, + 0,114,162,0,0,0,114,224,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,192,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,210,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, + 209,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,114,7,0,0,0,114,225,0,0,0,252,5,0,0, + 115,94,0,0,0,4,5,14,1,2,1,22,1,2,128,12, + 1,8,1,2,128,10,1,8,1,6,1,6,2,6,1,10, + 1,6,2,4,1,8,2,12,1,14,1,8,1,10,1,8, + 1,24,1,2,255,8,5,14,2,2,1,18,1,2,128,12, + 1,8,1,2,128,16,1,12,1,8,1,10,1,4,1,8, + 255,2,128,4,2,12,1,12,1,8,1,4,1,4,1,2, + 244,2,228,115,31,0,0,0,138,10,21,0,149,9,32,7, + 193,52,8,65,61,2,193,61,7,66,8,9,194,61,1,66, + 8,9,194,62,1,32,7,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,10,0,0,0,67,0, + 0,0,115,194,0,0,0,124,0,106,0,125,1,9,0,116, + 1,160,2,124,1,112,11,116,1,160,3,161,0,161,1,125, + 2,110,15,35,0,4,0,116,4,116,5,116,6,102,3,121, + 96,1,0,1,0,1,0,103,0,125,2,89,0,110,1,37, + 0,116,7,106,8,160,9,100,1,161,1,115,41,116,10,124, + 2,131,1,124,0,95,11,110,37,116,10,131,0,125,3,124, + 2,68,0,93,28,125,4,124,4,160,12,100,2,161,1,92, + 3,125,5,125,6,125,7,124,6,114,67,100,3,160,13,124, + 5,124,7,160,14,161,0,161,2,125,8,110,2,124,5,125, + 8,124,3,160,15,124,8,161,1,1,0,113,46,124,3,124, + 0,95,11,116,7,106,8,160,9,116,16,161,1,114,94,100, + 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100, + 6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0,114,88,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,83,0,0,0,115,20,0,0,0,104,0,124,0,93,6, + 125,1,124,1,160,0,161,0,146,2,113,2,83,0,114,12, + 0,0,0,41,1,114,131,0,0,0,41,2,114,5,0,0, + 0,90,2,102,110,32,32,114,7,0,0,0,114,14,0,0, + 0,76,6,0,0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100, + 105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0,0,114,27,0,0,0, + 114,94,1,0,0,114,95,1,0,0,114,126,0,0,0,114, + 89,0,0,0,114,131,0,0,0,218,3,97,100,100,114,28, + 0,0,0,114,96,1,0,0,41,9,114,143,0,0,0,114, + 65,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, + 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, + 116,101,110,116,115,114,67,1,0,0,114,141,0,0,0,114, + 51,1,0,0,114,41,1,0,0,90,8,110,101,119,95,110, + 97,109,101,32,32,32,32,32,32,32,32,32,114,7,0,0, + 0,114,98,1,0,0,47,6,0,0,115,42,0,0,0,6, + 2,2,1,20,1,2,128,18,1,8,3,2,128,12,3,12, + 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, + 1,12,1,20,1,4,255,2,233,115,13,0,0,0,132,9, + 14,0,142,12,28,7,193,32,1,28,7,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,7,0,0,0,115,18,0,0,0,135,3,135, + 4,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, + 4,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,4,0,0,0,19,0,0,0,115, + 36,0,0,0,116,0,124,0,131,1,115,10,116,1,100,1, + 124,0,100,2,141,2,130,1,136,1,124,0,103,1,136,2, + 162,1,82,0,142,0,83,0,41,4,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,78,41, + 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, + 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, + 7,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,88,6, + 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, + 0,0,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,78,114,12,0,0,0, + 41,5,114,220,0,0,0,114,97,1,0,0,114,102,1,0, + 0,114,220,0,0,0,114,97,1,0,0,96,96,32,64,64, + 114,7,0,0,0,218,9,112,97,116,104,95,104,111,111,107, + 78,6,0,0,115,4,0,0,0,14,10,4,6,114,9,0, + 0,0,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,3,0,0,0,67,0,0,0,114,64,1, + 0,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,89,0,0,0,114,65, + 0,0,0,114,20,1,0,0,32,114,7,0,0,0,114,65, + 1,0,0,96,6,0,0,114,58,1,0,0,114,9,0,0, + 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, + 114,101,112,114,95,95,114,69,0,0,0,41,15,114,149,0, + 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, + 0,114,235,0,0,0,114,75,1,0,0,114,166,0,0,0, + 114,228,0,0,0,114,160,0,0,0,114,88,1,0,0,114, + 225,0,0,0,114,98,1,0,0,114,233,0,0,0,114,103, + 1,0,0,114,65,1,0,0,114,12,0,0,0,114,7,0, + 0,0,114,91,1,0,0,201,5,0,0,115,24,0,0,0, + 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, + 8,51,2,31,10,1,12,17,114,9,0,0,0,114,91,1, + 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15, + 124,2,124,3,107,2,114,28,116,2,124,1,124,2,131,2, + 125,4,110,5,116,3,124,1,124,2,131,2,125,4,124,5, + 115,42,116,4,124,1,124,2,124,4,100,3,141,3,125,5, + 9,0,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,100,0,83,0,35,0,4,0,116,5,121,72,1,0, + 1,0,1,0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0, + 114,39,1,0,0,114,32,1,0,0,114,212,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,41,6,90,2,110,115, + 114,141,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,163,0,0,0,114, + 209,0,0,0,32,32,32,32,32,32,114,7,0,0,0,218, + 14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,102, + 6,0,0,115,40,0,0,0,10,2,10,1,4,1,4,1, + 8,1,8,1,12,1,10,2,4,1,14,1,2,1,8,1, + 8,1,8,1,12,1,2,128,12,1,6,2,2,128,2,254, + 115,15,0,0,0,171,16,61,0,189,7,65,7,7,193,8, + 1,65,7,7,114,108,1,0,0,99,0,0,0,0,0,0, + 0,0,0,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,102,2,125,1,116,5,116,6,102,2,125,2,124, + 0,124,1,124,2,103,3,83,0,41,2,122,95,82,101,116, + 117,114,110,115,32,97,32,108,105,115,116,32,111,102,32,102, + 105,108,101,45,98,97,115,101,100,32,109,111,100,117,108,101, + 32,108,111,97,100,101,114,115,46,10,10,32,32,32,32,69, + 97,99,104,32,105,116,101,109,32,105,115,32,97,32,116,117, + 112,108,101,32,40,108,111,97,100,101,114,44,32,115,117,102, + 102,105,120,101,115,41,46,10,32,32,32,32,78,41,7,114, + 28,1,0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,32,32,32,114,7,0,0,0,114,207,0,0,0,125,6, + 0,0,115,8,0,0,0,12,5,8,1,8,1,10,1,114, + 9,0,0,0,114,207,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,67,0,0,0,115,8, + 0,0,0,124,0,97,0,100,0,83,0,114,69,0,0,0, + 41,1,114,158,0,0,0,41,1,218,17,95,98,111,111,116, + 115,116,114,97,112,95,109,111,100,117,108,101,32,114,7,0, + 0,0,218,21,95,115,101,116,95,98,111,111,116,115,116,114, + 97,112,95,109,111,100,117,108,101,136,6,0,0,115,2,0, + 0,0,8,2,114,9,0,0,0,114,111,1,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,50,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,111,1,0,0,114, + 207,0,0,0,114,16,0,0,0,114,80,1,0,0,114,190, + 0,0,0,114,91,1,0,0,114,103,1,0,0,218,9,109, + 101,116,97,95,112,97,116,104,114,61,0,0,0,114,74,1, + 0,0,41,2,114,110,1,0,0,90,17,115,117,112,112,111, + 114,116,101,100,95,108,111,97,100,101,114,115,32,32,114,7, + 0,0,0,218,8,95,105,110,115,116,97,108,108,141,6,0, + 0,115,8,0,0,0,8,2,6,1,20,1,16,1,114,9, + 0,0,0,114,113,1,0,0,41,1,114,87,0,0,0,114, + 69,0,0,0,41,3,78,78,78,41,2,114,0,0,0,0, + 114,0,0,0,0,41,1,84,41,85,114,151,0,0,0,114, + 158,0,0,0,114,186,0,0,0,114,91,0,0,0,114,16, + 0,0,0,114,99,0,0,0,114,183,0,0,0,114,26,0, + 0,0,114,230,0,0,0,90,2,110,116,114,19,0,0,0, + 114,214,0,0,0,90,5,112,111,115,105,120,114,51,0,0, + 0,218,3,97,108,108,114,59,0,0,0,114,136,0,0,0, + 114,57,0,0,0,114,62,0,0,0,90,20,95,112,97,116, + 104,115,101,112,115,95,119,105,116,104,95,99,111,108,111,110, + 114,29,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,28,0,0, + 0,114,30,0,0,0,114,22,0,0,0,114,37,0,0,0, + 114,43,0,0,0,114,46,0,0,0,114,67,0,0,0,114, + 73,0,0,0,114,75,0,0,0,114,79,0,0,0,114,80, + 0,0,0,114,83,0,0,0,114,86,0,0,0,114,95,0, + 0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,101, + 95,95,114,185,0,0,0,114,35,0,0,0,114,171,0,0, + 0,114,34,0,0,0,114,40,0,0,0,114,7,1,0,0, + 114,116,0,0,0,114,112,0,0,0,114,127,0,0,0,114, + 61,0,0,0,114,109,1,0,0,114,231,0,0,0,114,113, + 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,121,0,0,0,114,128, + 0,0,0,114,135,0,0,0,114,137,0,0,0,114,139,0, + 0,0,114,159,0,0,0,114,166,0,0,0,114,175,0,0, + 0,114,179,0,0,0,114,181,0,0,0,114,188,0,0,0, + 114,193,0,0,0,114,194,0,0,0,114,199,0,0,0,218, + 6,111,98,106,101,99,116,114,208,0,0,0,114,212,0,0, + 0,114,213,0,0,0,114,234,0,0,0,114,248,0,0,0, + 114,10,1,0,0,114,32,1,0,0,114,39,1,0,0,114, + 28,1,0,0,114,44,1,0,0,114,70,1,0,0,114,74, + 1,0,0,114,91,1,0,0,114,108,1,0,0,114,207,0, + 0,0,114,111,1,0,0,114,113,1,0,0,114,12,0,0, + 0,114,7,0,0,0,218,8,60,109,111,100,117,108,101,62, + 1,0,0,0,115,180,0,0,0,4,0,4,22,8,3,8, + 1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8, + 2,4,3,10,1,6,2,22,2,8,1,8,1,10,1,14, + 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, + 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, + 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, + 127,16,35,12,1,4,2,4,1,6,2,4,1,10,1,8, + 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, + 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, + 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, + 127,14,17,18,50,18,45,18,25,14,53,14,63,14,49,0, + 127,14,29,0,127,10,30,8,23,8,11,12,5,114,9,0, + 0,0, }; diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 94b2a7c9b6e930..65c03ef0e949a1 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -134,12 +134,12 @@ static void *opcode_targets[256] = { &&TARGET_MAKE_FUNCTION, &&TARGET_BUILD_SLICE, &&_unknown_opcode, - &&TARGET_MAKE_CELL, &&TARGET_LOAD_CLOSURE, &&TARGET_LOAD_DEREF, &&TARGET_STORE_DEREF, &&TARGET_DELETE_DEREF, &&_unknown_opcode, + &&_unknown_opcode, &&TARGET_CALL_FUNCTION_KW, &&TARGET_CALL_FUNCTION_EX, &&_unknown_opcode, From webhook-mailer at python.org Tue Jun 8 11:01:03 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Jun 2021 15:01:03 -0000 Subject: [Python-checkins] bpo-44329: Refactor sqlite3 statement creation (GH-26566) Message-ID: https://github.com/python/cpython/commit/1c02655fb08043b3027748ca1179c416c21a4277 commit: 1c02655fb08043b3027748ca1179c416c21a4277 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-08T16:00:56+01:00 summary: bpo-44329: Refactor sqlite3 statement creation (GH-26566) Call SQLite API's first, and return early in case of error. At the end, allocate the object and initialise members. We now avoid unneeded alloc/dealloc's in case the statement creation fails. files: M Modules/_sqlite/statement.c diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 5c38b4607b428..eca225820cd75 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -51,15 +51,9 @@ typedef enum { pysqlite_Statement * pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) { - const char* tail; - int rc; - const char* sql_cstr; - Py_ssize_t sql_cstr_len; - const char* p; - assert(PyUnicode_Check(sql)); - - sql_cstr = PyUnicode_AsUTF8AndSize(sql, &sql_cstr_len); + Py_ssize_t size; + const char *sql_cstr = PyUnicode_AsUTF8AndSize(sql, &size); if (sql_cstr == NULL) { PyErr_Format(pysqlite_Warning, "SQL is of wrong type ('%s'). Must be string.", @@ -67,31 +61,40 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) return NULL; } - int max_length = sqlite3_limit(connection->db, SQLITE_LIMIT_LENGTH, -1); - if (sql_cstr_len >= max_length) { + sqlite3 *db = connection->db; + int max_length = sqlite3_limit(db, SQLITE_LIMIT_LENGTH, -1); + if (size >= max_length) { PyErr_SetString(pysqlite_DataError, "query string is too large"); return NULL; } - if (strlen(sql_cstr) != (size_t)sql_cstr_len) { + if (strlen(sql_cstr) != (size_t)size) { PyErr_SetString(PyExc_ValueError, "the query contains a null character"); return NULL; } - pysqlite_Statement *self = PyObject_GC_New(pysqlite_Statement, - pysqlite_StatementType); - if (self == NULL) { + sqlite3_stmt *stmt; + const char *tail; + int rc; + Py_BEGIN_ALLOW_THREADS + rc = sqlite3_prepare_v2(db, sql_cstr, (int)size + 1, &stmt, &tail); + Py_END_ALLOW_THREADS + + if (rc != SQLITE_OK) { + _pysqlite_seterror(db); return NULL; } - self->st = NULL; - self->in_use = 0; - self->is_dml = 0; - self->in_weakreflist = NULL; + if (pysqlite_check_remaining_sql(tail)) { + PyErr_SetString(pysqlite_Warning, + "You can only execute one statement at a time."); + goto error; + } /* Determine if the statement is a DML statement. SELECT is the only exception. See #9924. */ - for (p = sql_cstr; *p != 0; p++) { + int is_dml = 0; + for (const char *p = sql_cstr; *p != 0; p++) { switch (*p) { case ' ': case '\r': @@ -100,40 +103,29 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) continue; } - self->is_dml = (PyOS_strnicmp(p, "insert", 6) == 0) - || (PyOS_strnicmp(p, "update", 6) == 0) - || (PyOS_strnicmp(p, "delete", 6) == 0) - || (PyOS_strnicmp(p, "replace", 7) == 0); + is_dml = (PyOS_strnicmp(p, "insert", 6) == 0) + || (PyOS_strnicmp(p, "update", 6) == 0) + || (PyOS_strnicmp(p, "delete", 6) == 0) + || (PyOS_strnicmp(p, "replace", 7) == 0); break; } - Py_BEGIN_ALLOW_THREADS - rc = sqlite3_prepare_v2(connection->db, - sql_cstr, - (int)sql_cstr_len + 1, - &self->st, - &tail); - Py_END_ALLOW_THREADS - - PyObject_GC_Track(self); - - if (rc != SQLITE_OK) { - _pysqlite_seterror(connection->db); + pysqlite_Statement *self = PyObject_GC_New(pysqlite_Statement, + pysqlite_StatementType); + if (self == NULL) { goto error; } - if (rc == SQLITE_OK && pysqlite_check_remaining_sql(tail)) { - (void)sqlite3_finalize(self->st); - self->st = NULL; - PyErr_SetString(pysqlite_Warning, - "You can only execute one statement at a time."); - goto error; - } + self->st = stmt; + self->in_use = 0; + self->is_dml = is_dml; + self->in_weakreflist = NULL; + PyObject_GC_Track(self); return self; error: - Py_DECREF(self); + (void)sqlite3_finalize(stmt); return NULL; } From webhook-mailer at python.org Tue Jun 8 11:20:15 2021 From: webhook-mailer at python.org (encukou) Date: Tue, 08 Jun 2021 15:20:15 -0000 Subject: [Python-checkins] bpo-43795: Note Stable ABI PEP in What's New (GH-26479) Message-ID: https://github.com/python/cpython/commit/257e400a19b34c7da6e2aa500d80b54e4c4dbf6f commit: 257e400a19b34c7da6e2aa500d80b54e4c4dbf6f branch: main author: Petr Viktorin committer: encukou date: 2021-06-08T17:20:07+02:00 summary: bpo-43795: Note Stable ABI PEP in What's New (GH-26479) Co-authored-by: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index bc0f938870376..74e6b0384adb3 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1791,6 +1791,16 @@ Build Changes C API Changes ============= +PEP 652: Maintaining the Stable ABI +----------------------------------- + +The Stable ABI (Application Binary Interface) for extension modules or +embedding Python is now explicitly defined. +:ref:`stable` describes C API and ABI stability guarantees along with best +practices for using the Stable ABI. + +(Contributed by Petr Viktorin in :pep:`652` and :issue:`43795`.) + New Features ------------ From webhook-mailer at python.org Tue Jun 8 12:00:41 2021 From: webhook-mailer at python.org (encukou) Date: Tue, 08 Jun 2021 16:00:41 -0000 Subject: [Python-checkins] bpo-43795: Note Stable ABI PEP in What's New (GH-26479) (GH-26603) Message-ID: https://github.com/python/cpython/commit/75185561a9a3b6dede3ad87bd83bab66847bd425 commit: 75185561a9a3b6dede3ad87bd83bab66847bd425 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: encukou date: 2021-06-08T18:00:10+02:00 summary: bpo-43795: Note Stable ABI PEP in What's New (GH-26479) (GH-26603) (cherry picked from commit 257e400a19b34c7da6e2aa500d80b54e4c4dbf6f) Co-authored-by: Petr Viktorin Co-authored-by: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index af67582533dd18..9b2847da586017 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1798,6 +1798,16 @@ Build Changes C API Changes ============= +PEP 652: Maintaining the Stable ABI +----------------------------------- + +The Stable ABI (Application Binary Interface) for extension modules or +embedding Python is now explicitly defined. +:ref:`stable` describes C API and ABI stability guarantees along with best +practices for using the Stable ABI. + +(Contributed by Petr Viktorin in :pep:`652` and :issue:`43795`.) + New Features ------------ From webhook-mailer at python.org Tue Jun 8 12:55:18 2021 From: webhook-mailer at python.org (isidentical) Date: Tue, 08 Jun 2021 16:55:18 -0000 Subject: [Python-checkins] bpo-11105: reduce the recursion limit for tests (GH-26550) Message-ID: https://github.com/python/cpython/commit/e58d762c1fb4ad5e021d016c80c2bc4513632d2f commit: e58d762c1fb4ad5e021d016c80c2bc4513632d2f branch: main author: Batuhan Taskaya committer: isidentical date: 2021-06-08T19:55:10+03:00 summary: bpo-11105: reduce the recursion limit for tests (GH-26550) files: M Lib/test/support/__init__.py M Lib/test/test_ast.py diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 34a9459b518fab..d17331e6e89b7d 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -1999,3 +1999,12 @@ def check_disallow_instantiation(testcase, tp, *args, **kwds): qualname = f"{name}" msg = f"cannot create '{re.escape(qualname)}' instances" testcase.assertRaisesRegex(TypeError, msg, tp, *args, **kwds) + + at contextlib.contextmanager +def infinite_recursion(max_depth=75): + original_depth = sys.getrecursionlimit() + try: + sys.setrecursionlimit(max_depth) + yield + finally: + sys.setrecursionlimit(original_depth) diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 6a6f06c835037a..5f1ee75c8bddcb 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -1102,7 +1102,8 @@ def test_recursion_direct(self): e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) e.operand = e with self.assertRaises(RecursionError): - compile(ast.Expression(e), "", "eval") + with support.infinite_recursion(): + compile(ast.Expression(e), "", "eval") def test_recursion_indirect(self): e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) @@ -1110,7 +1111,8 @@ def test_recursion_indirect(self): e.operand = f f.operand = e with self.assertRaises(RecursionError): - compile(ast.Expression(e), "", "eval") + with support.infinite_recursion(): + compile(ast.Expression(e), "", "eval") class ASTValidatorTests(unittest.TestCase): From webhook-mailer at python.org Tue Jun 8 13:39:24 2021 From: webhook-mailer at python.org (isidentical) Date: Tue, 08 Jun 2021 17:39:24 -0000 Subject: [Python-checkins] bpo-11105: document the new test.support.infinite_recursion context manager (GH-26604) Message-ID: https://github.com/python/cpython/commit/8004c4570b1d1277ea8754e22b5eb60e63f5026c commit: 8004c4570b1d1277ea8754e22b5eb60e63f5026c branch: main author: Batuhan Taskaya committer: isidentical date: 2021-06-08T20:39:03+03:00 summary: bpo-11105: document the new test.support.infinite_recursion context manager (GH-26604) files: M Lib/test/support/__init__.py diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index d17331e6e89b7..933c2c99b292e 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -49,7 +49,7 @@ # processes "reap_children", # miscellaneous - "run_with_locale", "swap_item", "findfile", + "run_with_locale", "swap_item", "findfile", "infinite_recursion", "swap_attr", "Matcher", "set_memlimit", "SuppressCrashReport", "sortdict", "run_with_tz", "PGO", "missing_compiler_executable", "ALWAYS_EQ", "NEVER_EQ", "LARGEST", "SMALLEST", @@ -2002,6 +2002,12 @@ def check_disallow_instantiation(testcase, tp, *args, **kwds): @contextlib.contextmanager def infinite_recursion(max_depth=75): + """Set a lower limit for tests that interact with infinite recursions + (e.g test_ast.ASTHelpers_Test.test_recursion_direct) since on some + debug windows builds, due to not enough functions being inlined the + stack size might not handle the default recursion limit (1000). See + bpo-11105 for details.""" + original_depth = sys.getrecursionlimit() try: sys.setrecursionlimit(max_depth) From webhook-mailer at python.org Tue Jun 8 13:39:39 2021 From: webhook-mailer at python.org (isidentical) Date: Tue, 08 Jun 2021 17:39:39 -0000 Subject: [Python-checkins] [3.10] bpo-11105: reduce the recursion limit for tests. (GH-26607) Message-ID: https://github.com/python/cpython/commit/bd6f0d3eadfe5623657db6aeb69b94d21f86f4a0 commit: bd6f0d3eadfe5623657db6aeb69b94d21f86f4a0 branch: 3.10 author: Batuhan Taskaya committer: isidentical date: 2021-06-08T20:39:30+03:00 summary: [3.10] bpo-11105: reduce the recursion limit for tests. (GH-26607) (cherry picked from commit e58d762c1fb4ad5e021d016c80c2bc4513632d2f) Co-authored-by: Batuhan Taskaya files: M Lib/test/support/__init__.py M Lib/test/test_ast.py diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 80f3a04fcc6180..b9040a9ac507a4 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -1982,3 +1982,13 @@ def skip_if_broken_multiprocessing_synchronize(): synchronize.Lock(ctx=None) except OSError as exc: raise unittest.SkipTest(f"broken multiprocessing SemLock: {exc!r}") + + + at contextlib.contextmanager +def infinite_recursion(max_depth=75): + original_depth = sys.getrecursionlimit() + try: + sys.setrecursionlimit(max_depth) + yield + finally: + sys.setrecursionlimit(original_depth) diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index e08a965d96f76e..a44f8f551c5e0a 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -1101,7 +1101,8 @@ def test_recursion_direct(self): e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) e.operand = e with self.assertRaises(RecursionError): - compile(ast.Expression(e), "", "eval") + with support.infinite_recursion(): + compile(ast.Expression(e), "", "eval") def test_recursion_indirect(self): e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) @@ -1109,7 +1110,8 @@ def test_recursion_indirect(self): e.operand = f f.operand = e with self.assertRaises(RecursionError): - compile(ast.Expression(e), "", "eval") + with support.infinite_recursion(): + compile(ast.Expression(e), "", "eval") class ASTValidatorTests(unittest.TestCase): From webhook-mailer at python.org Tue Jun 8 13:39:55 2021 From: webhook-mailer at python.org (isidentical) Date: Tue, 08 Jun 2021 17:39:55 -0000 Subject: [Python-checkins] [3.9] bpo-11105: reduce the recursion limit for tests. (GH-26605) Message-ID: https://github.com/python/cpython/commit/87f502231c6d5b04a4d8aa23fba24fcf5303aebb commit: 87f502231c6d5b04a4d8aa23fba24fcf5303aebb branch: 3.9 author: Batuhan Taskaya committer: isidentical date: 2021-06-08T20:39:47+03:00 summary: [3.9] bpo-11105: reduce the recursion limit for tests. (GH-26605) (cherry picked from commit e58d762c1fb4ad5e021d016c80c2bc4513632d2f) Co-authored-by: Batuhan Taskaya files: M Lib/test/support/__init__.py M Lib/test/test_ast.py diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index aee3737ffc4097..229e1ac0a2a22e 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -3199,3 +3199,13 @@ def skip_if_broken_multiprocessing_synchronize(): synchronize.Lock(ctx=None) except OSError as exc: raise unittest.SkipTest(f"broken multiprocessing SemLock: {exc!r}") + + + at contextlib.contextmanager +def infinite_recursion(max_depth=75): + original_depth = sys.getrecursionlimit() + try: + sys.setrecursionlimit(max_depth) + yield + finally: + sys.setrecursionlimit(original_depth) diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index b229921f5c07c5..c3e3be6335340b 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -1031,7 +1031,8 @@ def test_recursion_direct(self): e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) e.operand = e with self.assertRaises(RecursionError): - compile(ast.Expression(e), "", "eval") + with support.infinite_recursion(): + compile(ast.Expression(e), "", "eval") def test_recursion_indirect(self): e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0) @@ -1039,7 +1040,8 @@ def test_recursion_indirect(self): e.operand = f f.operand = e with self.assertRaises(RecursionError): - compile(ast.Expression(e), "", "eval") + with support.infinite_recursion(): + compile(ast.Expression(e), "", "eval") class ASTValidatorTests(unittest.TestCase): From webhook-mailer at python.org Tue Jun 8 15:02:13 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Jun 2021 19:02:13 -0000 Subject: [Python-checkins] bpo-44335: Ensure the tokenizer doesn't go into Python with the error set (GH-26608) Message-ID: https://github.com/python/cpython/commit/bafe0aade5741ab0d13143ee261711fdd65e8a1f commit: bafe0aade5741ab0d13143ee261711fdd65e8a1f branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-08T20:02:03+01:00 summary: bpo-44335: Ensure the tokenizer doesn't go into Python with the error set (GH-26608) files: M Parser/pegen.c diff --git a/Parser/pegen.c b/Parser/pegen.c index c69a042f8de12..42a992251da97 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -1251,9 +1251,14 @@ _PyPegen_check_tokenizer_errors(Parser *p) { return 0; } + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + Token *current_token = p->known_err_token != NULL ? p->known_err_token : p->tokens[p->fill - 1]; Py_ssize_t current_err_line = current_token->lineno; + int ret = 0; + for (;;) { const char *start; const char *end; @@ -1262,9 +1267,9 @@ _PyPegen_check_tokenizer_errors(Parser *p) { if (p->tok->level != 0) { int error_lineno = p->tok->parenlinenostack[p->tok->level-1]; if (current_err_line > error_lineno) { - PyErr_Clear(); raise_unclosed_parentheses_error(p); - return -1; + ret = -1; + goto exit; } } break; @@ -1276,7 +1281,16 @@ _PyPegen_check_tokenizer_errors(Parser *p) { break; } - return 0; + +exit: + if (PyErr_Occurred()) { + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(traceback); + } else { + PyErr_Restore(type, value, traceback); + } + return ret; } void * From webhook-mailer at python.org Tue Jun 8 15:25:26 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 08 Jun 2021 19:25:26 -0000 Subject: [Python-checkins] bpo-44335: Ensure the tokenizer doesn't go into Python with the error set (GH-26608) Message-ID: https://github.com/python/cpython/commit/2a8d7122e0ceeb56b716cff7f8f31f13c26ad691 commit: 2a8d7122e0ceeb56b716cff7f8f31f13c26ad691 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-08T12:25:17-07:00 summary: bpo-44335: Ensure the tokenizer doesn't go into Python with the error set (GH-26608) (cherry picked from commit bafe0aade5741ab0d13143ee261711fdd65e8a1f) Co-authored-by: Pablo Galindo files: M Parser/pegen.c diff --git a/Parser/pegen.c b/Parser/pegen.c index c69a042f8de12..42a992251da97 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -1251,9 +1251,14 @@ _PyPegen_check_tokenizer_errors(Parser *p) { return 0; } + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + Token *current_token = p->known_err_token != NULL ? p->known_err_token : p->tokens[p->fill - 1]; Py_ssize_t current_err_line = current_token->lineno; + int ret = 0; + for (;;) { const char *start; const char *end; @@ -1262,9 +1267,9 @@ _PyPegen_check_tokenizer_errors(Parser *p) { if (p->tok->level != 0) { int error_lineno = p->tok->parenlinenostack[p->tok->level-1]; if (current_err_line > error_lineno) { - PyErr_Clear(); raise_unclosed_parentheses_error(p); - return -1; + ret = -1; + goto exit; } } break; @@ -1276,7 +1281,16 @@ _PyPegen_check_tokenizer_errors(Parser *p) { break; } - return 0; + +exit: + if (PyErr_Occurred()) { + Py_XDECREF(value); + Py_XDECREF(type); + Py_XDECREF(traceback); + } else { + PyErr_Restore(type, value, traceback); + } + return ret; } void * From webhook-mailer at python.org Tue Jun 8 15:35:18 2021 From: webhook-mailer at python.org (terryjreedy) Date: Tue, 08 Jun 2021 19:35:18 -0000 Subject: [Python-checkins] bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593) Message-ID: https://github.com/python/cpython/commit/ab36b9f83424a020fbd672f218612e6f19257a32 commit: ab36b9f83424a020fbd672f218612e6f19257a32 branch: main author: Terry Jan Reedy committer: terryjreedy date: 2021-06-08T15:35:10-04:00 summary: bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593) These are the settings that extend the help menu. Moving them shortens the dialog and will help with it being too tall for small screens. files: A Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index c52a04b503adb4..6638c062d25493 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -268,8 +268,6 @@ def create_page_extensions(self): set_extension_value: Set in userCfg['extensions']. save_all_changed_extensions: Call extension page Save(). """ - parent = self.parent - frame = Frame(self.note) self.ext_defaultCfg = idleConf.defaultCfg['extensions'] self.ext_userCfg = idleConf.userCfg['extensions'] self.is_int = self.register(is_int) @@ -277,18 +275,21 @@ def create_page_extensions(self): # Create widgets - a listbox shows all available extensions, with the # controls for the extension selected in the listbox to the right. self.extension_names = StringVar(self) - frame.rowconfigure(0, weight=1) - frame.columnconfigure(2, weight=1) - self.extension_list = Listbox(frame, listvariable=self.extension_names, + frame = Frame(self.note) + frame_ext = LabelFrame(frame, borderwidth=2, relief=GROOVE, + text=' Feature Extensions ') + frame_ext.rowconfigure(0, weight=1) + frame_ext.columnconfigure(2, weight=1) + self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, selectmode='browse') self.extension_list.bind('<>', self.extension_selected) - scroll = Scrollbar(frame, command=self.extension_list.yview) + scroll = Scrollbar(frame_ext, command=self.extension_list.yview) self.extension_list.yscrollcommand=scroll.set - self.details_frame = LabelFrame(frame, width=250, height=250) + self.details_frame = LabelFrame(frame_ext, width=250, height=250) self.extension_list.grid(column=0, row=0, sticky='nws') scroll.grid(column=1, row=0, sticky='ns') self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) - frame.configure(padding=10) + frame_ext.configure(padding=10) self.config_frame = {} self.current_extension = None @@ -304,6 +305,13 @@ def create_page_extensions(self): self.extension_list.selection_set(0) self.extension_selected(None) + + self.frame_help = HelpFrame(frame, borderwidth=2, relief=GROOVE, + text=' Help Menu Extensions ') + frame_ext.grid(row=0, column=0, sticky='nsew') + Label(frame).grid(row=1, column=0) + self.frame_help.grid(row=2, column=0, sticky='sew') + return frame def load_extensions(self): @@ -1854,14 +1862,6 @@ def create_page_general(self): frame_auto_squeeze_min_lines: Frame auto_squeeze_min_lines_title: Label (*)auto_squeeze_min_lines_int: Entry - auto_squeeze_min_lines - frame_help: LabelFrame - frame_helplist: Frame - frame_helplist_buttons: Frame - (*)button_helplist_edit - (*)button_helplist_add - (*)button_helplist_remove - (*)helplist: ListBox - scroll_helplist: Scrollbar """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1902,8 +1902,6 @@ def create_page_general(self): text=' Editor Preferences') frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, text=' Shell Preferences') - frame_help = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Additional Help Sources ') # Frame_window. frame_run = Frame(frame_window, borderwidth=0) startup_title = Label(frame_run, text='At Startup') @@ -1999,32 +1997,11 @@ def create_page_general(self): validatecommand=self.digits_only, validate='key', ) - # frame_help. - frame_helplist = Frame(frame_help) - frame_helplist_buttons = Frame(frame_helplist) - self.helplist = Listbox( - frame_helplist, height=5, takefocus=True, - exportselection=FALSE) - scroll_helplist = Scrollbar(frame_helplist) - scroll_helplist['command'] = self.helplist.yview - self.helplist['yscrollcommand'] = scroll_helplist.set - self.helplist.bind('', self.help_source_selected) - self.button_helplist_edit = Button( - frame_helplist_buttons, text='Edit', state='disabled', - width=8, command=self.helplist_item_edit) - self.button_helplist_add = Button( - frame_helplist_buttons, text='Add', - width=8, command=self.helplist_item_add) - self.button_helplist_remove = Button( - frame_helplist_buttons, text='Remove', state='disabled', - width=8, command=self.helplist_item_remove) - # Pack widgets: # Body. frame_window.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) frame_editor.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) frame_shell.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_help.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) # frame_run. frame_run.pack(side=TOP, padx=5, pady=0, fill=X) startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -2077,17 +2054,12 @@ def create_page_general(self): auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) - # frame_help. - frame_helplist_buttons.pack(side=RIGHT, padx=5, pady=5, fill=Y) - frame_helplist.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - scroll_helplist.pack(side=RIGHT, anchor=W, fill=Y) - self.helplist.pack(side=LEFT, anchor=E, expand=TRUE, fill=BOTH) - self.button_helplist_edit.pack(side=TOP, anchor=W, pady=5) - self.button_helplist_add.pack(side=TOP, anchor=W) - self.button_helplist_remove.pack(side=TOP, anchor=W, pady=5) - def load_general_cfg(self): "Load current configuration settings for the general options." + self.load_windows_cfg() + self.load_shelled_cfg() + + def load_windows_cfg(self): # Set variables for all windows. self.startup_edit.set(idleConf.GetOption( 'main', 'General', 'editor-on-startup', type='bool')) @@ -2106,6 +2078,7 @@ def load_general_cfg(self): self.paren_bell.set(idleConf.GetOption( 'extensions', 'ParenMatch', 'bell')) + def load_shelled_cfg(self): # Set variables for editor windows. self.autosave.set(idleConf.GetOption( 'main', 'General', 'autosave', default=0, type='bool')) @@ -2120,12 +2093,63 @@ def load_general_cfg(self): self.auto_squeeze_min_lines.set(idleConf.GetOption( 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) - # Set additional help sources. - self.user_helplist = idleConf.GetAllExtraHelpSourcesList() - self.helplist.delete(0, 'end') - for help_item in self.user_helplist: - self.helplist.insert(END, help_item[0]) - self.set_add_delete_state() + +class HelpFrame(LabelFrame): + + def __init__(self, master, **cfg): + super().__init__(master, **cfg) + self.create_frame_help() + self.load_helplist() + + def create_frame_help(self): + """Create LabelFrame for additional help menu sources. + + load_helplist loads list user_helplist with + name, position pairs and copies names to listbox helplist. + Clicking a name invokes help_source selected. Clicking + button_helplist_name invokes helplist_item_name, which also + changes user_helplist. These functions all call + set_add_delete_state. All but load call update_help_changes to + rewrite changes['main']['HelpFiles']. + + Widgets for HelpFrame(LabelFrame): (*) widgets bound to self + frame_helplist: Frame + (*)helplist: ListBox + scroll_helplist: Scrollbar + frame_buttons: Frame + (*)button_helplist_edit + (*)button_helplist_add + (*)button_helplist_remove + """ + # self = frame_help in dialog (until ExtPage class). + frame_helplist = Frame(self) + self.helplist = Listbox( + frame_helplist, height=5, takefocus=True, + exportselection=FALSE) + scroll_helplist = Scrollbar(frame_helplist) + scroll_helplist['command'] = self.helplist.yview + self.helplist['yscrollcommand'] = scroll_helplist.set + self.helplist.bind('', self.help_source_selected) + + frame_buttons = Frame(self) + self.button_helplist_edit = Button( + frame_buttons, text='Edit', state='disabled', + width=8, command=self.helplist_item_edit) + self.button_helplist_add = Button( + frame_buttons, text='Add', + width=8, command=self.helplist_item_add) + self.button_helplist_remove = Button( + frame_buttons, text='Remove', state='disabled', + width=8, command=self.helplist_item_remove) + + # Pack frame_help. + frame_helplist.pack(side=LEFT, padx=5, pady=5, expand=TRUE, fill=BOTH) + self.helplist.pack(side=LEFT, anchor=E, expand=TRUE, fill=BOTH) + scroll_helplist.pack(side=RIGHT, anchor=W, fill=Y) + frame_buttons.pack(side=RIGHT, padx=5, pady=5, fill=Y) + self.button_helplist_edit.pack(side=TOP, anchor=W, pady=5) + self.button_helplist_add.pack(side=TOP, anchor=W) + self.button_helplist_remove.pack(side=TOP, anchor=W, pady=5) def help_source_selected(self, event): "Handle event for selecting additional help." @@ -2195,6 +2219,14 @@ def update_help_changes(self): 'main', 'HelpFiles', str(num), ';'.join(self.user_helplist[num-1][:2])) + def load_helplist(self): + # Set additional help sources. + self.user_helplist = idleConf.GetAllExtraHelpSourcesList() + self.helplist.delete(0, 'end') + for help_item in self.user_helplist: + self.helplist.insert(END, help_item[0]) + self.set_add_delete_state() + class VarTrace: """Maintain Tk variables trace state.""" diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 98ddc67afdcc08..214d1b379b55d0 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1207,24 +1207,14 @@ class GenPageTest(unittest.TestCase): """Test that general tab widgets enable users to make changes. Test that widget actions set vars, that var changes add - options to changes and that helplist works correctly. + options to changes. """ @classmethod def setUpClass(cls): page = cls.page = dialog.genpage dialog.note.select(page) - page.set = page.set_add_delete_state = Func() - page.upc = page.update_help_changes = Func() page.update() - @classmethod - def tearDownClass(cls): - page = cls.page - del page.set, page.set_add_delete_state - del page.upc, page.update_help_changes - page.helplist.delete(0, 'end') - page.user_helplist.clear() - def setUp(self): changes.clear() @@ -1236,16 +1226,11 @@ def test_load_general_cfg(self): d.autosave.set(1) d.win_width.set(1) d.win_height.set(1) - d.helplist.insert('end', 'bad') - d.user_helplist = ['bad', 'worse'] - idleConf.SetOption('main', 'HelpFiles', '1', 'name;file') d.load_general_cfg() eq(d.startup_edit.get(), 0) eq(d.autosave.get(), 0) eq(d.win_width.get(), '80') eq(d.win_height.get(), '40') - eq(d.helplist.get(0, 'end'), ('name',)) - eq(d.user_helplist, [('name', 'file', '1')]) def test_startup(self): d = self.page @@ -1306,11 +1291,43 @@ def test_context(self): self.page.context_int.insert(0, '1') self.assertEqual(extpage, {'CodeContext': {'maxlines': '1'}}) + +class HelpSourceTest(unittest.TestCase): + """Test that the help source list works correctly.""" + @classmethod + def setUpClass(cls): + dialog.note.select(dialog.extpage) + frame = cls.frame = dialog.frame_help + frame.set = frame.set_add_delete_state = Func() + frame.upc = frame.update_help_changes = Func() + frame.update() + + @classmethod + def tearDownClass(cls): + frame = cls.frame + del frame.set, frame.set_add_delete_state + del frame.upc, frame.update_help_changes + frame.helplist.delete(0, 'end') + frame.user_helplist.clear() + + def setUp(self): + changes.clear() + + def test_load_helplist(self): + eq = self.assertEqual + fr = self.frame + fr.helplist.insert('end', 'bad') + fr.user_helplist = ['bad', 'worse'] + idleConf.SetOption('main', 'HelpFiles', '1', 'name;file') + fr.load_helplist() + eq(fr.helplist.get(0, 'end'), ('name',)) + eq(fr.user_helplist, [('name', 'file', '1')]) + def test_source_selected(self): - d = self.page - d.set = d.set_add_delete_state - d.upc = d.update_help_changes - helplist = d.helplist + fr = self.frame + fr.set = fr.set_add_delete_state + fr.upc = fr.update_help_changes + helplist = fr.helplist dex = 'end' helplist.insert(dex, 'source') helplist.activate(dex) @@ -1321,38 +1338,38 @@ def test_source_selected(self): x, y, dx, dy = helplist.bbox(dex) x += dx // 2 y += dy // 2 - d.set.called = d.upc.called = 0 + fr.set.called = fr.upc.called = 0 helplist.event_generate('', x=0, y=0) helplist.event_generate('', x=x, y=y) helplist.event_generate('', x=x, y=y) helplist.event_generate('', x=x, y=y) self.assertEqual(helplist.get('anchor'), 'source') - self.assertTrue(d.set.called) - self.assertFalse(d.upc.called) + self.assertTrue(fr.set.called) + self.assertFalse(fr.upc.called) def test_set_add_delete_state(self): # Call with 0 items, 1 unselected item, 1 selected item. eq = self.assertEqual - d = self.page - del d.set_add_delete_state # Unmask method. - sad = d.set_add_delete_state - h = d.helplist + fr = self.frame + del fr.set_add_delete_state # Unmask method. + sad = fr.set_add_delete_state + h = fr.helplist h.delete(0, 'end') sad() - eq(d.button_helplist_edit.state(), ('disabled',)) - eq(d.button_helplist_remove.state(), ('disabled',)) + eq(fr.button_helplist_edit.state(), ('disabled',)) + eq(fr.button_helplist_remove.state(), ('disabled',)) h.insert(0, 'source') sad() - eq(d.button_helplist_edit.state(), ('disabled',)) - eq(d.button_helplist_remove.state(), ('disabled',)) + eq(fr.button_helplist_edit.state(), ('disabled',)) + eq(fr.button_helplist_remove.state(), ('disabled',)) h.selection_set(0) sad() - eq(d.button_helplist_edit.state(), ()) - eq(d.button_helplist_remove.state(), ()) - d.set_add_delete_state = Func() # Mask method. + eq(fr.button_helplist_edit.state(), ()) + eq(fr.button_helplist_remove.state(), ()) + fr.set_add_delete_state = Func() # Mask method. def test_helplist_item_add(self): # Call without and twice with HelpSource result. @@ -1360,25 +1377,25 @@ def test_helplist_item_add(self): eq = self.assertEqual orig_helpsource = configdialog.HelpSource hs = configdialog.HelpSource = Func(return_self=True) - d = self.page - d.helplist.delete(0, 'end') - d.user_helplist.clear() - d.set.called = d.upc.called = 0 + fr = self.frame + fr.helplist.delete(0, 'end') + fr.user_helplist.clear() + fr.set.called = fr.upc.called = 0 hs.result = '' - d.helplist_item_add() - self.assertTrue(list(d.helplist.get(0, 'end')) == - d.user_helplist == []) - self.assertFalse(d.upc.called) + fr.helplist_item_add() + self.assertTrue(list(fr.helplist.get(0, 'end')) == + fr.user_helplist == []) + self.assertFalse(fr.upc.called) hs.result = ('name1', 'file1') - d.helplist_item_add() + fr.helplist_item_add() hs.result = ('name2', 'file2') - d.helplist_item_add() - eq(d.helplist.get(0, 'end'), ('name1', 'name2')) - eq(d.user_helplist, [('name1', 'file1'), ('name2', 'file2')]) - eq(d.upc.called, 2) - self.assertFalse(d.set.called) + fr.helplist_item_add() + eq(fr.helplist.get(0, 'end'), ('name1', 'name2')) + eq(fr.user_helplist, [('name1', 'file1'), ('name2', 'file2')]) + eq(fr.upc.called, 2) + self.assertFalse(fr.set.called) configdialog.HelpSource = orig_helpsource @@ -1387,58 +1404,58 @@ def test_helplist_item_edit(self): eq = self.assertEqual orig_helpsource = configdialog.HelpSource hs = configdialog.HelpSource = Func(return_self=True) - d = self.page - d.helplist.delete(0, 'end') - d.helplist.insert(0, 'name1') - d.helplist.selection_set(0) - d.helplist.selection_anchor(0) - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.set.called = d.upc.called = 0 + fr = self.frame + fr.helplist.delete(0, 'end') + fr.helplist.insert(0, 'name1') + fr.helplist.selection_set(0) + fr.helplist.selection_anchor(0) + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.set.called = fr.upc.called = 0 hs.result = '' - d.helplist_item_edit() + fr.helplist_item_edit() hs.result = ('name1', 'file1') - d.helplist_item_edit() - eq(d.helplist.get(0, 'end'), ('name1',)) - eq(d.user_helplist, [('name1', 'file1')]) - self.assertFalse(d.upc.called) + fr.helplist_item_edit() + eq(fr.helplist.get(0, 'end'), ('name1',)) + eq(fr.user_helplist, [('name1', 'file1')]) + self.assertFalse(fr.upc.called) hs.result = ('name2', 'file2') - d.helplist_item_edit() - eq(d.helplist.get(0, 'end'), ('name2',)) - eq(d.user_helplist, [('name2', 'file2')]) - self.assertTrue(d.upc.called == d.set.called == 1) + fr.helplist_item_edit() + eq(fr.helplist.get(0, 'end'), ('name2',)) + eq(fr.user_helplist, [('name2', 'file2')]) + self.assertTrue(fr.upc.called == fr.set.called == 1) configdialog.HelpSource = orig_helpsource def test_helplist_item_remove(self): eq = self.assertEqual - d = self.page - d.helplist.delete(0, 'end') - d.helplist.insert(0, 'name1') - d.helplist.selection_set(0) - d.helplist.selection_anchor(0) - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.set.called = d.upc.called = 0 - - d.helplist_item_remove() - eq(d.helplist.get(0, 'end'), ()) - eq(d.user_helplist, []) - self.assertTrue(d.upc.called == d.set.called == 1) + fr = self.frame + fr.helplist.delete(0, 'end') + fr.helplist.insert(0, 'name1') + fr.helplist.selection_set(0) + fr.helplist.selection_anchor(0) + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.set.called = fr.upc.called = 0 + + fr.helplist_item_remove() + eq(fr.helplist.get(0, 'end'), ()) + eq(fr.user_helplist, []) + self.assertTrue(fr.upc.called == fr.set.called == 1) def test_update_help_changes(self): - d = self.page - del d.update_help_changes - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.user_helplist.append(('name2', 'file2')) + fr = self.frame + del fr.update_help_changes + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.user_helplist.append(('name2', 'file2')) - d.update_help_changes() + fr.update_help_changes() self.assertEqual(mainpage['HelpFiles'], {'1': 'name1;file1', '2': 'name2;file2'}) - d.update_help_changes = Func() + fr.update_help_changes = Func() class VarTraceTest(unittest.TestCase): diff --git a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst new file mode 100644 index 00000000000000..79cb1cca099ad1 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst @@ -0,0 +1,2 @@ +Shorten settings dialog by moving help sources to extensions tab. This will +improve issues with dialog being too tall for some screens. From webhook-mailer at python.org Tue Jun 8 16:01:32 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 08 Jun 2021 20:01:32 -0000 Subject: [Python-checkins] bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593) Message-ID: https://github.com/python/cpython/commit/2cfe0e7061e9a2113e56e44a3e0c3f824cbc65db commit: 2cfe0e7061e9a2113e56e44a3e0c3f824cbc65db branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-08T13:01:23-07:00 summary: bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593) These are the settings that extend the help menu. Moving them shortens the dialog and will help with it being too tall for small screens. (cherry picked from commit ab36b9f83424a020fbd672f218612e6f19257a32) Co-authored-by: Terry Jan Reedy files: A Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index c52a04b503adb4..6638c062d25493 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -268,8 +268,6 @@ def create_page_extensions(self): set_extension_value: Set in userCfg['extensions']. save_all_changed_extensions: Call extension page Save(). """ - parent = self.parent - frame = Frame(self.note) self.ext_defaultCfg = idleConf.defaultCfg['extensions'] self.ext_userCfg = idleConf.userCfg['extensions'] self.is_int = self.register(is_int) @@ -277,18 +275,21 @@ def create_page_extensions(self): # Create widgets - a listbox shows all available extensions, with the # controls for the extension selected in the listbox to the right. self.extension_names = StringVar(self) - frame.rowconfigure(0, weight=1) - frame.columnconfigure(2, weight=1) - self.extension_list = Listbox(frame, listvariable=self.extension_names, + frame = Frame(self.note) + frame_ext = LabelFrame(frame, borderwidth=2, relief=GROOVE, + text=' Feature Extensions ') + frame_ext.rowconfigure(0, weight=1) + frame_ext.columnconfigure(2, weight=1) + self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, selectmode='browse') self.extension_list.bind('<>', self.extension_selected) - scroll = Scrollbar(frame, command=self.extension_list.yview) + scroll = Scrollbar(frame_ext, command=self.extension_list.yview) self.extension_list.yscrollcommand=scroll.set - self.details_frame = LabelFrame(frame, width=250, height=250) + self.details_frame = LabelFrame(frame_ext, width=250, height=250) self.extension_list.grid(column=0, row=0, sticky='nws') scroll.grid(column=1, row=0, sticky='ns') self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) - frame.configure(padding=10) + frame_ext.configure(padding=10) self.config_frame = {} self.current_extension = None @@ -304,6 +305,13 @@ def create_page_extensions(self): self.extension_list.selection_set(0) self.extension_selected(None) + + self.frame_help = HelpFrame(frame, borderwidth=2, relief=GROOVE, + text=' Help Menu Extensions ') + frame_ext.grid(row=0, column=0, sticky='nsew') + Label(frame).grid(row=1, column=0) + self.frame_help.grid(row=2, column=0, sticky='sew') + return frame def load_extensions(self): @@ -1854,14 +1862,6 @@ def create_page_general(self): frame_auto_squeeze_min_lines: Frame auto_squeeze_min_lines_title: Label (*)auto_squeeze_min_lines_int: Entry - auto_squeeze_min_lines - frame_help: LabelFrame - frame_helplist: Frame - frame_helplist_buttons: Frame - (*)button_helplist_edit - (*)button_helplist_add - (*)button_helplist_remove - (*)helplist: ListBox - scroll_helplist: Scrollbar """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1902,8 +1902,6 @@ def create_page_general(self): text=' Editor Preferences') frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, text=' Shell Preferences') - frame_help = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Additional Help Sources ') # Frame_window. frame_run = Frame(frame_window, borderwidth=0) startup_title = Label(frame_run, text='At Startup') @@ -1999,32 +1997,11 @@ def create_page_general(self): validatecommand=self.digits_only, validate='key', ) - # frame_help. - frame_helplist = Frame(frame_help) - frame_helplist_buttons = Frame(frame_helplist) - self.helplist = Listbox( - frame_helplist, height=5, takefocus=True, - exportselection=FALSE) - scroll_helplist = Scrollbar(frame_helplist) - scroll_helplist['command'] = self.helplist.yview - self.helplist['yscrollcommand'] = scroll_helplist.set - self.helplist.bind('', self.help_source_selected) - self.button_helplist_edit = Button( - frame_helplist_buttons, text='Edit', state='disabled', - width=8, command=self.helplist_item_edit) - self.button_helplist_add = Button( - frame_helplist_buttons, text='Add', - width=8, command=self.helplist_item_add) - self.button_helplist_remove = Button( - frame_helplist_buttons, text='Remove', state='disabled', - width=8, command=self.helplist_item_remove) - # Pack widgets: # Body. frame_window.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) frame_editor.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) frame_shell.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_help.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) # frame_run. frame_run.pack(side=TOP, padx=5, pady=0, fill=X) startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -2077,17 +2054,12 @@ def create_page_general(self): auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) - # frame_help. - frame_helplist_buttons.pack(side=RIGHT, padx=5, pady=5, fill=Y) - frame_helplist.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - scroll_helplist.pack(side=RIGHT, anchor=W, fill=Y) - self.helplist.pack(side=LEFT, anchor=E, expand=TRUE, fill=BOTH) - self.button_helplist_edit.pack(side=TOP, anchor=W, pady=5) - self.button_helplist_add.pack(side=TOP, anchor=W) - self.button_helplist_remove.pack(side=TOP, anchor=W, pady=5) - def load_general_cfg(self): "Load current configuration settings for the general options." + self.load_windows_cfg() + self.load_shelled_cfg() + + def load_windows_cfg(self): # Set variables for all windows. self.startup_edit.set(idleConf.GetOption( 'main', 'General', 'editor-on-startup', type='bool')) @@ -2106,6 +2078,7 @@ def load_general_cfg(self): self.paren_bell.set(idleConf.GetOption( 'extensions', 'ParenMatch', 'bell')) + def load_shelled_cfg(self): # Set variables for editor windows. self.autosave.set(idleConf.GetOption( 'main', 'General', 'autosave', default=0, type='bool')) @@ -2120,12 +2093,63 @@ def load_general_cfg(self): self.auto_squeeze_min_lines.set(idleConf.GetOption( 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) - # Set additional help sources. - self.user_helplist = idleConf.GetAllExtraHelpSourcesList() - self.helplist.delete(0, 'end') - for help_item in self.user_helplist: - self.helplist.insert(END, help_item[0]) - self.set_add_delete_state() + +class HelpFrame(LabelFrame): + + def __init__(self, master, **cfg): + super().__init__(master, **cfg) + self.create_frame_help() + self.load_helplist() + + def create_frame_help(self): + """Create LabelFrame for additional help menu sources. + + load_helplist loads list user_helplist with + name, position pairs and copies names to listbox helplist. + Clicking a name invokes help_source selected. Clicking + button_helplist_name invokes helplist_item_name, which also + changes user_helplist. These functions all call + set_add_delete_state. All but load call update_help_changes to + rewrite changes['main']['HelpFiles']. + + Widgets for HelpFrame(LabelFrame): (*) widgets bound to self + frame_helplist: Frame + (*)helplist: ListBox + scroll_helplist: Scrollbar + frame_buttons: Frame + (*)button_helplist_edit + (*)button_helplist_add + (*)button_helplist_remove + """ + # self = frame_help in dialog (until ExtPage class). + frame_helplist = Frame(self) + self.helplist = Listbox( + frame_helplist, height=5, takefocus=True, + exportselection=FALSE) + scroll_helplist = Scrollbar(frame_helplist) + scroll_helplist['command'] = self.helplist.yview + self.helplist['yscrollcommand'] = scroll_helplist.set + self.helplist.bind('', self.help_source_selected) + + frame_buttons = Frame(self) + self.button_helplist_edit = Button( + frame_buttons, text='Edit', state='disabled', + width=8, command=self.helplist_item_edit) + self.button_helplist_add = Button( + frame_buttons, text='Add', + width=8, command=self.helplist_item_add) + self.button_helplist_remove = Button( + frame_buttons, text='Remove', state='disabled', + width=8, command=self.helplist_item_remove) + + # Pack frame_help. + frame_helplist.pack(side=LEFT, padx=5, pady=5, expand=TRUE, fill=BOTH) + self.helplist.pack(side=LEFT, anchor=E, expand=TRUE, fill=BOTH) + scroll_helplist.pack(side=RIGHT, anchor=W, fill=Y) + frame_buttons.pack(side=RIGHT, padx=5, pady=5, fill=Y) + self.button_helplist_edit.pack(side=TOP, anchor=W, pady=5) + self.button_helplist_add.pack(side=TOP, anchor=W) + self.button_helplist_remove.pack(side=TOP, anchor=W, pady=5) def help_source_selected(self, event): "Handle event for selecting additional help." @@ -2195,6 +2219,14 @@ def update_help_changes(self): 'main', 'HelpFiles', str(num), ';'.join(self.user_helplist[num-1][:2])) + def load_helplist(self): + # Set additional help sources. + self.user_helplist = idleConf.GetAllExtraHelpSourcesList() + self.helplist.delete(0, 'end') + for help_item in self.user_helplist: + self.helplist.insert(END, help_item[0]) + self.set_add_delete_state() + class VarTrace: """Maintain Tk variables trace state.""" diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 98ddc67afdcc08..214d1b379b55d0 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1207,24 +1207,14 @@ class GenPageTest(unittest.TestCase): """Test that general tab widgets enable users to make changes. Test that widget actions set vars, that var changes add - options to changes and that helplist works correctly. + options to changes. """ @classmethod def setUpClass(cls): page = cls.page = dialog.genpage dialog.note.select(page) - page.set = page.set_add_delete_state = Func() - page.upc = page.update_help_changes = Func() page.update() - @classmethod - def tearDownClass(cls): - page = cls.page - del page.set, page.set_add_delete_state - del page.upc, page.update_help_changes - page.helplist.delete(0, 'end') - page.user_helplist.clear() - def setUp(self): changes.clear() @@ -1236,16 +1226,11 @@ def test_load_general_cfg(self): d.autosave.set(1) d.win_width.set(1) d.win_height.set(1) - d.helplist.insert('end', 'bad') - d.user_helplist = ['bad', 'worse'] - idleConf.SetOption('main', 'HelpFiles', '1', 'name;file') d.load_general_cfg() eq(d.startup_edit.get(), 0) eq(d.autosave.get(), 0) eq(d.win_width.get(), '80') eq(d.win_height.get(), '40') - eq(d.helplist.get(0, 'end'), ('name',)) - eq(d.user_helplist, [('name', 'file', '1')]) def test_startup(self): d = self.page @@ -1306,11 +1291,43 @@ def test_context(self): self.page.context_int.insert(0, '1') self.assertEqual(extpage, {'CodeContext': {'maxlines': '1'}}) + +class HelpSourceTest(unittest.TestCase): + """Test that the help source list works correctly.""" + @classmethod + def setUpClass(cls): + dialog.note.select(dialog.extpage) + frame = cls.frame = dialog.frame_help + frame.set = frame.set_add_delete_state = Func() + frame.upc = frame.update_help_changes = Func() + frame.update() + + @classmethod + def tearDownClass(cls): + frame = cls.frame + del frame.set, frame.set_add_delete_state + del frame.upc, frame.update_help_changes + frame.helplist.delete(0, 'end') + frame.user_helplist.clear() + + def setUp(self): + changes.clear() + + def test_load_helplist(self): + eq = self.assertEqual + fr = self.frame + fr.helplist.insert('end', 'bad') + fr.user_helplist = ['bad', 'worse'] + idleConf.SetOption('main', 'HelpFiles', '1', 'name;file') + fr.load_helplist() + eq(fr.helplist.get(0, 'end'), ('name',)) + eq(fr.user_helplist, [('name', 'file', '1')]) + def test_source_selected(self): - d = self.page - d.set = d.set_add_delete_state - d.upc = d.update_help_changes - helplist = d.helplist + fr = self.frame + fr.set = fr.set_add_delete_state + fr.upc = fr.update_help_changes + helplist = fr.helplist dex = 'end' helplist.insert(dex, 'source') helplist.activate(dex) @@ -1321,38 +1338,38 @@ def test_source_selected(self): x, y, dx, dy = helplist.bbox(dex) x += dx // 2 y += dy // 2 - d.set.called = d.upc.called = 0 + fr.set.called = fr.upc.called = 0 helplist.event_generate('', x=0, y=0) helplist.event_generate('', x=x, y=y) helplist.event_generate('', x=x, y=y) helplist.event_generate('', x=x, y=y) self.assertEqual(helplist.get('anchor'), 'source') - self.assertTrue(d.set.called) - self.assertFalse(d.upc.called) + self.assertTrue(fr.set.called) + self.assertFalse(fr.upc.called) def test_set_add_delete_state(self): # Call with 0 items, 1 unselected item, 1 selected item. eq = self.assertEqual - d = self.page - del d.set_add_delete_state # Unmask method. - sad = d.set_add_delete_state - h = d.helplist + fr = self.frame + del fr.set_add_delete_state # Unmask method. + sad = fr.set_add_delete_state + h = fr.helplist h.delete(0, 'end') sad() - eq(d.button_helplist_edit.state(), ('disabled',)) - eq(d.button_helplist_remove.state(), ('disabled',)) + eq(fr.button_helplist_edit.state(), ('disabled',)) + eq(fr.button_helplist_remove.state(), ('disabled',)) h.insert(0, 'source') sad() - eq(d.button_helplist_edit.state(), ('disabled',)) - eq(d.button_helplist_remove.state(), ('disabled',)) + eq(fr.button_helplist_edit.state(), ('disabled',)) + eq(fr.button_helplist_remove.state(), ('disabled',)) h.selection_set(0) sad() - eq(d.button_helplist_edit.state(), ()) - eq(d.button_helplist_remove.state(), ()) - d.set_add_delete_state = Func() # Mask method. + eq(fr.button_helplist_edit.state(), ()) + eq(fr.button_helplist_remove.state(), ()) + fr.set_add_delete_state = Func() # Mask method. def test_helplist_item_add(self): # Call without and twice with HelpSource result. @@ -1360,25 +1377,25 @@ def test_helplist_item_add(self): eq = self.assertEqual orig_helpsource = configdialog.HelpSource hs = configdialog.HelpSource = Func(return_self=True) - d = self.page - d.helplist.delete(0, 'end') - d.user_helplist.clear() - d.set.called = d.upc.called = 0 + fr = self.frame + fr.helplist.delete(0, 'end') + fr.user_helplist.clear() + fr.set.called = fr.upc.called = 0 hs.result = '' - d.helplist_item_add() - self.assertTrue(list(d.helplist.get(0, 'end')) == - d.user_helplist == []) - self.assertFalse(d.upc.called) + fr.helplist_item_add() + self.assertTrue(list(fr.helplist.get(0, 'end')) == + fr.user_helplist == []) + self.assertFalse(fr.upc.called) hs.result = ('name1', 'file1') - d.helplist_item_add() + fr.helplist_item_add() hs.result = ('name2', 'file2') - d.helplist_item_add() - eq(d.helplist.get(0, 'end'), ('name1', 'name2')) - eq(d.user_helplist, [('name1', 'file1'), ('name2', 'file2')]) - eq(d.upc.called, 2) - self.assertFalse(d.set.called) + fr.helplist_item_add() + eq(fr.helplist.get(0, 'end'), ('name1', 'name2')) + eq(fr.user_helplist, [('name1', 'file1'), ('name2', 'file2')]) + eq(fr.upc.called, 2) + self.assertFalse(fr.set.called) configdialog.HelpSource = orig_helpsource @@ -1387,58 +1404,58 @@ def test_helplist_item_edit(self): eq = self.assertEqual orig_helpsource = configdialog.HelpSource hs = configdialog.HelpSource = Func(return_self=True) - d = self.page - d.helplist.delete(0, 'end') - d.helplist.insert(0, 'name1') - d.helplist.selection_set(0) - d.helplist.selection_anchor(0) - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.set.called = d.upc.called = 0 + fr = self.frame + fr.helplist.delete(0, 'end') + fr.helplist.insert(0, 'name1') + fr.helplist.selection_set(0) + fr.helplist.selection_anchor(0) + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.set.called = fr.upc.called = 0 hs.result = '' - d.helplist_item_edit() + fr.helplist_item_edit() hs.result = ('name1', 'file1') - d.helplist_item_edit() - eq(d.helplist.get(0, 'end'), ('name1',)) - eq(d.user_helplist, [('name1', 'file1')]) - self.assertFalse(d.upc.called) + fr.helplist_item_edit() + eq(fr.helplist.get(0, 'end'), ('name1',)) + eq(fr.user_helplist, [('name1', 'file1')]) + self.assertFalse(fr.upc.called) hs.result = ('name2', 'file2') - d.helplist_item_edit() - eq(d.helplist.get(0, 'end'), ('name2',)) - eq(d.user_helplist, [('name2', 'file2')]) - self.assertTrue(d.upc.called == d.set.called == 1) + fr.helplist_item_edit() + eq(fr.helplist.get(0, 'end'), ('name2',)) + eq(fr.user_helplist, [('name2', 'file2')]) + self.assertTrue(fr.upc.called == fr.set.called == 1) configdialog.HelpSource = orig_helpsource def test_helplist_item_remove(self): eq = self.assertEqual - d = self.page - d.helplist.delete(0, 'end') - d.helplist.insert(0, 'name1') - d.helplist.selection_set(0) - d.helplist.selection_anchor(0) - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.set.called = d.upc.called = 0 - - d.helplist_item_remove() - eq(d.helplist.get(0, 'end'), ()) - eq(d.user_helplist, []) - self.assertTrue(d.upc.called == d.set.called == 1) + fr = self.frame + fr.helplist.delete(0, 'end') + fr.helplist.insert(0, 'name1') + fr.helplist.selection_set(0) + fr.helplist.selection_anchor(0) + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.set.called = fr.upc.called = 0 + + fr.helplist_item_remove() + eq(fr.helplist.get(0, 'end'), ()) + eq(fr.user_helplist, []) + self.assertTrue(fr.upc.called == fr.set.called == 1) def test_update_help_changes(self): - d = self.page - del d.update_help_changes - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.user_helplist.append(('name2', 'file2')) + fr = self.frame + del fr.update_help_changes + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.user_helplist.append(('name2', 'file2')) - d.update_help_changes() + fr.update_help_changes() self.assertEqual(mainpage['HelpFiles'], {'1': 'name1;file1', '2': 'name2;file2'}) - d.update_help_changes = Func() + fr.update_help_changes = Func() class VarTraceTest(unittest.TestCase): diff --git a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst new file mode 100644 index 00000000000000..79cb1cca099ad1 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst @@ -0,0 +1,2 @@ +Shorten settings dialog by moving help sources to extensions tab. This will +improve issues with dialog being too tall for some screens. From webhook-mailer at python.org Tue Jun 8 17:27:09 2021 From: webhook-mailer at python.org (terryjreedy) Date: Tue, 08 Jun 2021 21:27:09 -0000 Subject: [Python-checkins] bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593) Message-ID: https://github.com/python/cpython/commit/c03f0ab259dc6d1447d47e845c6465b59f9a032c commit: c03f0ab259dc6d1447d47e845c6465b59f9a032c branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2021-06-08T17:26:56-04:00 summary: bpo-40468: Move IDLE helplist settings to extensions page of dialog. (GH-26593) These are the settings that extend the help menu. Moving them shortens the dialog and will help with it being too tall for small screens. (cherry picked from commit ab36b9f83424a020fbd672f218612e6f19257a32) files: A Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index c52a04b503adb4..6638c062d25493 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -268,8 +268,6 @@ def create_page_extensions(self): set_extension_value: Set in userCfg['extensions']. save_all_changed_extensions: Call extension page Save(). """ - parent = self.parent - frame = Frame(self.note) self.ext_defaultCfg = idleConf.defaultCfg['extensions'] self.ext_userCfg = idleConf.userCfg['extensions'] self.is_int = self.register(is_int) @@ -277,18 +275,21 @@ def create_page_extensions(self): # Create widgets - a listbox shows all available extensions, with the # controls for the extension selected in the listbox to the right. self.extension_names = StringVar(self) - frame.rowconfigure(0, weight=1) - frame.columnconfigure(2, weight=1) - self.extension_list = Listbox(frame, listvariable=self.extension_names, + frame = Frame(self.note) + frame_ext = LabelFrame(frame, borderwidth=2, relief=GROOVE, + text=' Feature Extensions ') + frame_ext.rowconfigure(0, weight=1) + frame_ext.columnconfigure(2, weight=1) + self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, selectmode='browse') self.extension_list.bind('<>', self.extension_selected) - scroll = Scrollbar(frame, command=self.extension_list.yview) + scroll = Scrollbar(frame_ext, command=self.extension_list.yview) self.extension_list.yscrollcommand=scroll.set - self.details_frame = LabelFrame(frame, width=250, height=250) + self.details_frame = LabelFrame(frame_ext, width=250, height=250) self.extension_list.grid(column=0, row=0, sticky='nws') scroll.grid(column=1, row=0, sticky='ns') self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) - frame.configure(padding=10) + frame_ext.configure(padding=10) self.config_frame = {} self.current_extension = None @@ -304,6 +305,13 @@ def create_page_extensions(self): self.extension_list.selection_set(0) self.extension_selected(None) + + self.frame_help = HelpFrame(frame, borderwidth=2, relief=GROOVE, + text=' Help Menu Extensions ') + frame_ext.grid(row=0, column=0, sticky='nsew') + Label(frame).grid(row=1, column=0) + self.frame_help.grid(row=2, column=0, sticky='sew') + return frame def load_extensions(self): @@ -1854,14 +1862,6 @@ def create_page_general(self): frame_auto_squeeze_min_lines: Frame auto_squeeze_min_lines_title: Label (*)auto_squeeze_min_lines_int: Entry - auto_squeeze_min_lines - frame_help: LabelFrame - frame_helplist: Frame - frame_helplist_buttons: Frame - (*)button_helplist_edit - (*)button_helplist_add - (*)button_helplist_remove - (*)helplist: ListBox - scroll_helplist: Scrollbar """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1902,8 +1902,6 @@ def create_page_general(self): text=' Editor Preferences') frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, text=' Shell Preferences') - frame_help = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Additional Help Sources ') # Frame_window. frame_run = Frame(frame_window, borderwidth=0) startup_title = Label(frame_run, text='At Startup') @@ -1999,32 +1997,11 @@ def create_page_general(self): validatecommand=self.digits_only, validate='key', ) - # frame_help. - frame_helplist = Frame(frame_help) - frame_helplist_buttons = Frame(frame_helplist) - self.helplist = Listbox( - frame_helplist, height=5, takefocus=True, - exportselection=FALSE) - scroll_helplist = Scrollbar(frame_helplist) - scroll_helplist['command'] = self.helplist.yview - self.helplist['yscrollcommand'] = scroll_helplist.set - self.helplist.bind('', self.help_source_selected) - self.button_helplist_edit = Button( - frame_helplist_buttons, text='Edit', state='disabled', - width=8, command=self.helplist_item_edit) - self.button_helplist_add = Button( - frame_helplist_buttons, text='Add', - width=8, command=self.helplist_item_add) - self.button_helplist_remove = Button( - frame_helplist_buttons, text='Remove', state='disabled', - width=8, command=self.helplist_item_remove) - # Pack widgets: # Body. frame_window.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) frame_editor.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) frame_shell.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_help.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) # frame_run. frame_run.pack(side=TOP, padx=5, pady=0, fill=X) startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -2077,17 +2054,12 @@ def create_page_general(self): auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) - # frame_help. - frame_helplist_buttons.pack(side=RIGHT, padx=5, pady=5, fill=Y) - frame_helplist.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - scroll_helplist.pack(side=RIGHT, anchor=W, fill=Y) - self.helplist.pack(side=LEFT, anchor=E, expand=TRUE, fill=BOTH) - self.button_helplist_edit.pack(side=TOP, anchor=W, pady=5) - self.button_helplist_add.pack(side=TOP, anchor=W) - self.button_helplist_remove.pack(side=TOP, anchor=W, pady=5) - def load_general_cfg(self): "Load current configuration settings for the general options." + self.load_windows_cfg() + self.load_shelled_cfg() + + def load_windows_cfg(self): # Set variables for all windows. self.startup_edit.set(idleConf.GetOption( 'main', 'General', 'editor-on-startup', type='bool')) @@ -2106,6 +2078,7 @@ def load_general_cfg(self): self.paren_bell.set(idleConf.GetOption( 'extensions', 'ParenMatch', 'bell')) + def load_shelled_cfg(self): # Set variables for editor windows. self.autosave.set(idleConf.GetOption( 'main', 'General', 'autosave', default=0, type='bool')) @@ -2120,12 +2093,63 @@ def load_general_cfg(self): self.auto_squeeze_min_lines.set(idleConf.GetOption( 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) - # Set additional help sources. - self.user_helplist = idleConf.GetAllExtraHelpSourcesList() - self.helplist.delete(0, 'end') - for help_item in self.user_helplist: - self.helplist.insert(END, help_item[0]) - self.set_add_delete_state() + +class HelpFrame(LabelFrame): + + def __init__(self, master, **cfg): + super().__init__(master, **cfg) + self.create_frame_help() + self.load_helplist() + + def create_frame_help(self): + """Create LabelFrame for additional help menu sources. + + load_helplist loads list user_helplist with + name, position pairs and copies names to listbox helplist. + Clicking a name invokes help_source selected. Clicking + button_helplist_name invokes helplist_item_name, which also + changes user_helplist. These functions all call + set_add_delete_state. All but load call update_help_changes to + rewrite changes['main']['HelpFiles']. + + Widgets for HelpFrame(LabelFrame): (*) widgets bound to self + frame_helplist: Frame + (*)helplist: ListBox + scroll_helplist: Scrollbar + frame_buttons: Frame + (*)button_helplist_edit + (*)button_helplist_add + (*)button_helplist_remove + """ + # self = frame_help in dialog (until ExtPage class). + frame_helplist = Frame(self) + self.helplist = Listbox( + frame_helplist, height=5, takefocus=True, + exportselection=FALSE) + scroll_helplist = Scrollbar(frame_helplist) + scroll_helplist['command'] = self.helplist.yview + self.helplist['yscrollcommand'] = scroll_helplist.set + self.helplist.bind('', self.help_source_selected) + + frame_buttons = Frame(self) + self.button_helplist_edit = Button( + frame_buttons, text='Edit', state='disabled', + width=8, command=self.helplist_item_edit) + self.button_helplist_add = Button( + frame_buttons, text='Add', + width=8, command=self.helplist_item_add) + self.button_helplist_remove = Button( + frame_buttons, text='Remove', state='disabled', + width=8, command=self.helplist_item_remove) + + # Pack frame_help. + frame_helplist.pack(side=LEFT, padx=5, pady=5, expand=TRUE, fill=BOTH) + self.helplist.pack(side=LEFT, anchor=E, expand=TRUE, fill=BOTH) + scroll_helplist.pack(side=RIGHT, anchor=W, fill=Y) + frame_buttons.pack(side=RIGHT, padx=5, pady=5, fill=Y) + self.button_helplist_edit.pack(side=TOP, anchor=W, pady=5) + self.button_helplist_add.pack(side=TOP, anchor=W) + self.button_helplist_remove.pack(side=TOP, anchor=W, pady=5) def help_source_selected(self, event): "Handle event for selecting additional help." @@ -2195,6 +2219,14 @@ def update_help_changes(self): 'main', 'HelpFiles', str(num), ';'.join(self.user_helplist[num-1][:2])) + def load_helplist(self): + # Set additional help sources. + self.user_helplist = idleConf.GetAllExtraHelpSourcesList() + self.helplist.delete(0, 'end') + for help_item in self.user_helplist: + self.helplist.insert(END, help_item[0]) + self.set_add_delete_state() + class VarTrace: """Maintain Tk variables trace state.""" diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 98ddc67afdcc08..214d1b379b55d0 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1207,24 +1207,14 @@ class GenPageTest(unittest.TestCase): """Test that general tab widgets enable users to make changes. Test that widget actions set vars, that var changes add - options to changes and that helplist works correctly. + options to changes. """ @classmethod def setUpClass(cls): page = cls.page = dialog.genpage dialog.note.select(page) - page.set = page.set_add_delete_state = Func() - page.upc = page.update_help_changes = Func() page.update() - @classmethod - def tearDownClass(cls): - page = cls.page - del page.set, page.set_add_delete_state - del page.upc, page.update_help_changes - page.helplist.delete(0, 'end') - page.user_helplist.clear() - def setUp(self): changes.clear() @@ -1236,16 +1226,11 @@ def test_load_general_cfg(self): d.autosave.set(1) d.win_width.set(1) d.win_height.set(1) - d.helplist.insert('end', 'bad') - d.user_helplist = ['bad', 'worse'] - idleConf.SetOption('main', 'HelpFiles', '1', 'name;file') d.load_general_cfg() eq(d.startup_edit.get(), 0) eq(d.autosave.get(), 0) eq(d.win_width.get(), '80') eq(d.win_height.get(), '40') - eq(d.helplist.get(0, 'end'), ('name',)) - eq(d.user_helplist, [('name', 'file', '1')]) def test_startup(self): d = self.page @@ -1306,11 +1291,43 @@ def test_context(self): self.page.context_int.insert(0, '1') self.assertEqual(extpage, {'CodeContext': {'maxlines': '1'}}) + +class HelpSourceTest(unittest.TestCase): + """Test that the help source list works correctly.""" + @classmethod + def setUpClass(cls): + dialog.note.select(dialog.extpage) + frame = cls.frame = dialog.frame_help + frame.set = frame.set_add_delete_state = Func() + frame.upc = frame.update_help_changes = Func() + frame.update() + + @classmethod + def tearDownClass(cls): + frame = cls.frame + del frame.set, frame.set_add_delete_state + del frame.upc, frame.update_help_changes + frame.helplist.delete(0, 'end') + frame.user_helplist.clear() + + def setUp(self): + changes.clear() + + def test_load_helplist(self): + eq = self.assertEqual + fr = self.frame + fr.helplist.insert('end', 'bad') + fr.user_helplist = ['bad', 'worse'] + idleConf.SetOption('main', 'HelpFiles', '1', 'name;file') + fr.load_helplist() + eq(fr.helplist.get(0, 'end'), ('name',)) + eq(fr.user_helplist, [('name', 'file', '1')]) + def test_source_selected(self): - d = self.page - d.set = d.set_add_delete_state - d.upc = d.update_help_changes - helplist = d.helplist + fr = self.frame + fr.set = fr.set_add_delete_state + fr.upc = fr.update_help_changes + helplist = fr.helplist dex = 'end' helplist.insert(dex, 'source') helplist.activate(dex) @@ -1321,38 +1338,38 @@ def test_source_selected(self): x, y, dx, dy = helplist.bbox(dex) x += dx // 2 y += dy // 2 - d.set.called = d.upc.called = 0 + fr.set.called = fr.upc.called = 0 helplist.event_generate('', x=0, y=0) helplist.event_generate('', x=x, y=y) helplist.event_generate('', x=x, y=y) helplist.event_generate('', x=x, y=y) self.assertEqual(helplist.get('anchor'), 'source') - self.assertTrue(d.set.called) - self.assertFalse(d.upc.called) + self.assertTrue(fr.set.called) + self.assertFalse(fr.upc.called) def test_set_add_delete_state(self): # Call with 0 items, 1 unselected item, 1 selected item. eq = self.assertEqual - d = self.page - del d.set_add_delete_state # Unmask method. - sad = d.set_add_delete_state - h = d.helplist + fr = self.frame + del fr.set_add_delete_state # Unmask method. + sad = fr.set_add_delete_state + h = fr.helplist h.delete(0, 'end') sad() - eq(d.button_helplist_edit.state(), ('disabled',)) - eq(d.button_helplist_remove.state(), ('disabled',)) + eq(fr.button_helplist_edit.state(), ('disabled',)) + eq(fr.button_helplist_remove.state(), ('disabled',)) h.insert(0, 'source') sad() - eq(d.button_helplist_edit.state(), ('disabled',)) - eq(d.button_helplist_remove.state(), ('disabled',)) + eq(fr.button_helplist_edit.state(), ('disabled',)) + eq(fr.button_helplist_remove.state(), ('disabled',)) h.selection_set(0) sad() - eq(d.button_helplist_edit.state(), ()) - eq(d.button_helplist_remove.state(), ()) - d.set_add_delete_state = Func() # Mask method. + eq(fr.button_helplist_edit.state(), ()) + eq(fr.button_helplist_remove.state(), ()) + fr.set_add_delete_state = Func() # Mask method. def test_helplist_item_add(self): # Call without and twice with HelpSource result. @@ -1360,25 +1377,25 @@ def test_helplist_item_add(self): eq = self.assertEqual orig_helpsource = configdialog.HelpSource hs = configdialog.HelpSource = Func(return_self=True) - d = self.page - d.helplist.delete(0, 'end') - d.user_helplist.clear() - d.set.called = d.upc.called = 0 + fr = self.frame + fr.helplist.delete(0, 'end') + fr.user_helplist.clear() + fr.set.called = fr.upc.called = 0 hs.result = '' - d.helplist_item_add() - self.assertTrue(list(d.helplist.get(0, 'end')) == - d.user_helplist == []) - self.assertFalse(d.upc.called) + fr.helplist_item_add() + self.assertTrue(list(fr.helplist.get(0, 'end')) == + fr.user_helplist == []) + self.assertFalse(fr.upc.called) hs.result = ('name1', 'file1') - d.helplist_item_add() + fr.helplist_item_add() hs.result = ('name2', 'file2') - d.helplist_item_add() - eq(d.helplist.get(0, 'end'), ('name1', 'name2')) - eq(d.user_helplist, [('name1', 'file1'), ('name2', 'file2')]) - eq(d.upc.called, 2) - self.assertFalse(d.set.called) + fr.helplist_item_add() + eq(fr.helplist.get(0, 'end'), ('name1', 'name2')) + eq(fr.user_helplist, [('name1', 'file1'), ('name2', 'file2')]) + eq(fr.upc.called, 2) + self.assertFalse(fr.set.called) configdialog.HelpSource = orig_helpsource @@ -1387,58 +1404,58 @@ def test_helplist_item_edit(self): eq = self.assertEqual orig_helpsource = configdialog.HelpSource hs = configdialog.HelpSource = Func(return_self=True) - d = self.page - d.helplist.delete(0, 'end') - d.helplist.insert(0, 'name1') - d.helplist.selection_set(0) - d.helplist.selection_anchor(0) - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.set.called = d.upc.called = 0 + fr = self.frame + fr.helplist.delete(0, 'end') + fr.helplist.insert(0, 'name1') + fr.helplist.selection_set(0) + fr.helplist.selection_anchor(0) + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.set.called = fr.upc.called = 0 hs.result = '' - d.helplist_item_edit() + fr.helplist_item_edit() hs.result = ('name1', 'file1') - d.helplist_item_edit() - eq(d.helplist.get(0, 'end'), ('name1',)) - eq(d.user_helplist, [('name1', 'file1')]) - self.assertFalse(d.upc.called) + fr.helplist_item_edit() + eq(fr.helplist.get(0, 'end'), ('name1',)) + eq(fr.user_helplist, [('name1', 'file1')]) + self.assertFalse(fr.upc.called) hs.result = ('name2', 'file2') - d.helplist_item_edit() - eq(d.helplist.get(0, 'end'), ('name2',)) - eq(d.user_helplist, [('name2', 'file2')]) - self.assertTrue(d.upc.called == d.set.called == 1) + fr.helplist_item_edit() + eq(fr.helplist.get(0, 'end'), ('name2',)) + eq(fr.user_helplist, [('name2', 'file2')]) + self.assertTrue(fr.upc.called == fr.set.called == 1) configdialog.HelpSource = orig_helpsource def test_helplist_item_remove(self): eq = self.assertEqual - d = self.page - d.helplist.delete(0, 'end') - d.helplist.insert(0, 'name1') - d.helplist.selection_set(0) - d.helplist.selection_anchor(0) - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.set.called = d.upc.called = 0 - - d.helplist_item_remove() - eq(d.helplist.get(0, 'end'), ()) - eq(d.user_helplist, []) - self.assertTrue(d.upc.called == d.set.called == 1) + fr = self.frame + fr.helplist.delete(0, 'end') + fr.helplist.insert(0, 'name1') + fr.helplist.selection_set(0) + fr.helplist.selection_anchor(0) + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.set.called = fr.upc.called = 0 + + fr.helplist_item_remove() + eq(fr.helplist.get(0, 'end'), ()) + eq(fr.user_helplist, []) + self.assertTrue(fr.upc.called == fr.set.called == 1) def test_update_help_changes(self): - d = self.page - del d.update_help_changes - d.user_helplist.clear() - d.user_helplist.append(('name1', 'file1')) - d.user_helplist.append(('name2', 'file2')) + fr = self.frame + del fr.update_help_changes + fr.user_helplist.clear() + fr.user_helplist.append(('name1', 'file1')) + fr.user_helplist.append(('name2', 'file2')) - d.update_help_changes() + fr.update_help_changes() self.assertEqual(mainpage['HelpFiles'], {'1': 'name1;file1', '2': 'name2;file2'}) - d.update_help_changes = Func() + fr.update_help_changes = Func() class VarTraceTest(unittest.TestCase): diff --git a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst new file mode 100644 index 00000000000000..79cb1cca099ad1 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst @@ -0,0 +1,2 @@ +Shorten settings dialog by moving help sources to extensions tab. This will +improve issues with dialog being too tall for some screens. From webhook-mailer at python.org Tue Jun 8 18:01:44 2021 From: webhook-mailer at python.org (ericsnowcurrently) Date: Tue, 08 Jun 2021 22:01:44 -0000 Subject: [Python-checkins] bpo-43693: Un-revert commit f3fa63e. (#26609) Message-ID: https://github.com/python/cpython/commit/3e1c7167d86a2a928cdcb659094aa10bb5550c4c commit: 3e1c7167d86a2a928cdcb659094aa10bb5550c4c branch: main author: Eric Snow committer: ericsnowcurrently date: 2021-06-08T16:01:34-06:00 summary: bpo-43693: Un-revert commit f3fa63e. (#26609) This was reverted in GH-26596 (commit 6d518bb) due to some bad memory accesses. * Add the MAKE_CELL opcode. (gh-26396) The memory accesses have been fixed. https://bugs.python.org/issue43693 files: A Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst M Doc/library/dis.rst M Include/cpython/code.h M Include/internal/pycore_frame.h M Include/opcode.h M Lib/importlib/_bootstrap_external.py M Lib/opcode.py M Lib/test/test_dis.py M Lib/test/test_scope.py M Objects/frameobject.c M Objects/typeobject.c M Python/ceval.c M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/opcode_targets.h diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index bc206f7d2e96af..65fbb00bd6597b 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1056,6 +1056,14 @@ All of the following opcodes use their arguments. Deletes local ``co_varnames[var_num]``. +.. opcode:: MAKE_CELL (i) + + Creates a new cell in slot ``i``. If that slot is empty then + that value is stored into the new cell. + + .. versionadded:: 3.11 + + .. opcode:: LOAD_CLOSURE (i) Pushes a reference to the cell contained in slot ``i`` of the "fast locals" diff --git a/Include/cpython/code.h b/Include/cpython/code.h index 773df7cb9a600e..a3db7d9d5eff7a 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -2,9 +2,16 @@ # error "this header file must not be included directly" #endif +/* Each instruction in a code object is a fixed-width value, + * currently 2 bytes: 1-byte opcode + 1-byte oparg. The EXTENDED_ARG + * opcode allows for larger values but the current limit is 3 uses + * of EXTENDED_ARG (see Python/wordcode_helpers.h), for a maximum + * 32-bit value. This aligns with the note in Python/compile.c + * (compiler_addop_i_line) indicating that the max oparg value is + * 2**32 - 1, rather than INT_MAX. + */ + typedef uint16_t _Py_CODEUNIT; -// Each oparg must fit in the second half of _Py_CODEUNIT, hence 8 bits. -#define _Py_MAX_OPARG 255 #ifdef WORDS_BIGENDIAN # define _Py_OPCODE(word) ((word) >> 8) diff --git a/Include/internal/pycore_frame.h b/Include/internal/pycore_frame.h index 44f58fb6948712..11c3a2c01e7e2f 100644 --- a/Include/internal/pycore_frame.h +++ b/Include/internal/pycore_frame.h @@ -32,6 +32,8 @@ _PyFrame_GetBuiltins(PyFrameObject *f) int _PyFrame_TakeLocals(PyFrameObject *f); +PyAPI_FUNC(int) _PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg); + #ifdef __cplusplus } #endif diff --git a/Include/opcode.h b/Include/opcode.h index a3a8b2a15613e6..c65e2f41133fc6 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -113,10 +113,11 @@ extern "C" { #define CALL_FUNCTION 131 #define MAKE_FUNCTION 132 #define BUILD_SLICE 133 -#define LOAD_CLOSURE 135 -#define LOAD_DEREF 136 -#define STORE_DEREF 137 -#define DELETE_DEREF 138 +#define MAKE_CELL 135 +#define LOAD_CLOSURE 136 +#define LOAD_DEREF 137 +#define STORE_DEREF 138 +#define DELETE_DEREF 139 #define CALL_FUNCTION_KW 141 #define CALL_FUNCTION_EX 142 #define EXTENDED_ARG 144 diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 39552186c8735d..009b45f00d8cf6 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -357,6 +357,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3452 (drop nlocals from marshaled code objects) # Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds) # Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693) +# Python 3.11a1 3455 (add MAKE_CELL bpo-43693) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -366,7 +367,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3454).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3455).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/opcode.py b/Lib/opcode.py index da143fe01f512c..4d5343179e5932 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -181,14 +181,16 @@ def jabs_op(name, op): def_op('MAKE_FUNCTION', 132) # Flags def_op('BUILD_SLICE', 133) # Number of items -def_op('LOAD_CLOSURE', 135) +def_op('MAKE_CELL', 135) hasfree.append(135) -def_op('LOAD_DEREF', 136) +def_op('LOAD_CLOSURE', 136) hasfree.append(136) -def_op('STORE_DEREF', 137) +def_op('LOAD_DEREF', 137) hasfree.append(137) -def_op('DELETE_DEREF', 138) +def_op('STORE_DEREF', 138) hasfree.append(138) +def_op('DELETE_DEREF', 139) +hasfree.append(139) def_op('CALL_FUNCTION_KW', 141) # #args + #kwargs def_op('CALL_FUNCTION_EX', 142) # Flags diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index b119d183d66c10..b81fcb551427a2 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -427,15 +427,17 @@ def foo(x): return foo dis_nested_0 = """\ -%3d 0 LOAD_CLOSURE 2 (y) - 2 BUILD_TUPLE 1 - 4 LOAD_CONST 1 () - 6 LOAD_CONST 2 ('_h..foo') - 8 MAKE_FUNCTION 8 (closure) - 10 STORE_FAST 1 (foo) - -%3d 12 LOAD_FAST 1 (foo) - 14 RETURN_VALUE + 0 MAKE_CELL 2 (y) + +%3d 2 LOAD_CLOSURE 2 (y) + 4 BUILD_TUPLE 1 + 6 LOAD_CONST 1 () + 8 LOAD_CONST 2 ('_h..foo') + 10 MAKE_FUNCTION 8 (closure) + 12 STORE_FAST 1 (foo) + +%3d 14 LOAD_FAST 1 (foo) + 16 RETURN_VALUE """ % (_h.__code__.co_firstlineno + 1, __file__, _h.__code__.co_firstlineno + 1, @@ -444,15 +446,17 @@ def foo(x): dis_nested_1 = """%s Disassembly of : -%3d 0 LOAD_CLOSURE 1 (x) - 2 BUILD_TUPLE 1 - 4 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) - 6 LOAD_CONST 2 ('_h..foo..') - 8 MAKE_FUNCTION 8 (closure) - 10 LOAD_DEREF 2 (y) - 12 GET_ITER - 14 CALL_FUNCTION 1 - 16 RETURN_VALUE + 0 MAKE_CELL 1 (x) + +%3d 2 LOAD_CLOSURE 1 (x) + 4 BUILD_TUPLE 1 + 6 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) + 8 LOAD_CONST 2 ('_h..foo..') + 10 MAKE_FUNCTION 8 (closure) + 12 LOAD_DEREF 2 (y) + 14 GET_ITER + 16 CALL_FUNCTION 1 + 18 RETURN_VALUE """ % (dis_nested_0, __file__, _h.__code__.co_firstlineno + 1, @@ -958,59 +962,64 @@ def jumpy(): #print('expected_opinfo_jumpy = [\n ', #',\n '.join(map(str, _instructions)), ',\n]', sep='') +#dis.dis(outer) Instruction = dis.Instruction expected_opinfo_outer = [ - Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=0, starts_line=2, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=16, starts_line=7, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='a', argrepr='a', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='b', argrepr='b', offset=20, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello world!', argrepr="'Hello world!'", offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7, argrepr='', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=36, starts_line=8, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=38, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=3, argval='a', argrepr='a', offset=0, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=4, argval='b', argrepr='b', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=4, starts_line=2, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=10, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=12, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=14, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=7, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=30, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=32, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello world!', argrepr="'Hello world!'", offset=34, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7, argrepr='', offset=36, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=40, starts_line=8, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=42, starts_line=None, is_jump_target=False), ] expected_opinfo_f = [ - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=0, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=5, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=6, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=3, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=135, arg=4, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=6, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='c', argrepr='c', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='d', argrepr='d', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=34, starts_line=6, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=3, argval='c', argrepr='c', offset=0, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=4, argval='d', argrepr='d', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=4, starts_line=3, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=5, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=6, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='c', argrepr='c', offset=10, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='d', argrepr='d', offset=12, starts_line=None, is_jump_target=False), + Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=14, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=16, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=18, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=20, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=24, starts_line=5, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='a', argrepr='a', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=6, argval='b', argrepr='b', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='c', argrepr='c', offset=30, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='d', argrepr='d', offset=32, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=34, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=38, starts_line=6, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=40, starts_line=None, is_jump_target=False), ] expected_opinfo_inner = [ Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=0, starts_line=4, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=136, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6, argrepr='', offset=14, starts_line=None, is_jump_target=False), diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py index 4239b26408ecdf..29d60ffe53f036 100644 --- a/Lib/test/test_scope.py +++ b/Lib/test/test_scope.py @@ -176,6 +176,57 @@ def bar(): self.assertEqual(foo(a=42), 50) self.assertEqual(foo(), 25) + def testCellIsArgAndEscapes(self): + # We need to be sure that a cell passed in as an arg still + # gets wrapped in a new cell if the arg escapes into an + # inner function (closure). + + def external(): + value = 42 + def inner(): + return value + cell, = inner.__closure__ + return cell + cell_ext = external() + + def spam(arg): + def eggs(): + return arg + return eggs + + eggs = spam(cell_ext) + cell_closure, = eggs.__closure__ + cell_eggs = eggs() + + self.assertIs(cell_eggs, cell_ext) + self.assertIsNot(cell_eggs, cell_closure) + + def testCellIsLocalAndEscapes(self): + # We need to be sure that a cell bound to a local still + # gets wrapped in a new cell if the local escapes into an + # inner function (closure). + + def external(): + value = 42 + def inner(): + return value + cell, = inner.__closure__ + return cell + cell_ext = external() + + def spam(arg): + cell = arg + def eggs(): + return cell + return eggs + + eggs = spam(cell_ext) + cell_closure, = eggs.__closure__ + cell_eggs = eggs() + + self.assertIs(cell_eggs, cell_ext) + self.assertIsNot(cell_eggs, cell_closure) + def testRecursion(self): def f(x): diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst new file mode 100644 index 00000000000000..c5fb29ba462e7d --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-05-26-19-10-47.bpo-43693.1KSG9u.rst @@ -0,0 +1,5 @@ +A new opcode MAKE_CELL has been added that effectively moves some of +the work done on function entry into the compiler and into the eval +loop. In addition to creating the required cell objects, the new +opcode converts relevant arguments (and other locals) to cell +variables on function entry. diff --git a/Objects/frameobject.c b/Objects/frameobject.c index ef5ff4e6983546..a41d21780fd6e1 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -918,6 +918,19 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, return f; } +int +_PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg) +{ + const _Py_CODEUNIT *code = + (const _Py_CODEUNIT *)PyBytes_AS_STRING(f->f_code->co_code); + for (int i = 0; i < f->f_lasti; i++) { + if (_Py_OPCODE(code[i]) == opcode && _Py_OPARG(code[i]) == oparg) { + return 1; + } + } + return 0; +} + int PyFrame_FastToLocalsWithError(PyFrameObject *f) { @@ -961,15 +974,52 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) former here and will later use the cell for the variable. */ if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { - assert(fast[i] == NULL); continue; } PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); PyObject *value = fast[i]; - if (kind & (CO_FAST_CELL | CO_FAST_FREE) && value != NULL) { - assert(PyCell_Check(value)); - value = PyCell_GET(value); + if (f->f_state != FRAME_CLEARED) { + int cellargoffset = CO_CELL_NOT_AN_ARG; + if (co->co_cell2arg != NULL) { + cellargoffset = co->co_cell2arg[i - co->co_nlocals]; + } + if (kind & CO_FAST_FREE) { + // The cell was set by _PyEval_MakeFrameVector() from + // the function's closure. + assert(value != NULL && PyCell_Check(value)); + value = PyCell_GET(value); + } + else if (kind & CO_FAST_CELL) { + // Note that no *_DEREF ops can happen before MAKE_CELL + // executes. So there's no need to duplicate the work + // that MAKE_CELL would otherwise do later, if it hasn't + // run yet. + if (value != NULL) { + if (PyCell_Check(value) && + _PyFrame_OpAlreadyRan(f, MAKE_CELL, i)) { + // (likely) MAKE_CELL must have executed already. + value = PyCell_GET(value); + } + // (unlikely) Otherwise it must be an initial value set + // by an earlier call to PyFrame_FastToLocals(). + } + else { + // (unlikely) MAKE_CELL hasn't executed yet. + if (cellargoffset != CO_CELL_NOT_AN_ARG) { + // It is an arg that escapes into an inner + // function so we use the initial value that + // was already set by _PyEval_MakeFrameVector(). + // Normally the arg value would always be set. + // However, it can be NULL if it was deleted via + // PyFrame_LocalsToFast(). + value = fast[cellargoffset]; + } + } + } + } + else { + assert(value == NULL); } if (value == NULL) { if (PyObject_DelItem(locals, name) != 0) { @@ -1010,8 +1060,9 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) PyObject **fast; PyObject *error_type, *error_value, *error_traceback; PyCodeObject *co; - if (f == NULL) + if (f == NULL || f->f_state == FRAME_CLEARED) { return; + } locals = _PyFrame_Specials(f)[FRAME_SPECIALS_LOCALS_OFFSET]; if (locals == NULL) return; @@ -1039,16 +1090,68 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) continue; } } - if (kind & (CO_FAST_CELL | CO_FAST_FREE)) { - assert(PyCell_Check(fast[i])); - if (PyCell_GET(fast[i]) != value) { - if (PyCell_Set(fast[i], value) < 0) { - PyErr_Clear(); + PyObject *oldvalue = fast[i]; + int cellargoffset = CO_CELL_NOT_AN_ARG; + if (kind & CO_FAST_CELL && co->co_cell2arg != NULL) { + assert(i >= co->co_nlocals); + cellargoffset = co->co_cell2arg[i - co->co_nlocals]; + } + PyObject *cell = NULL; + if (kind == CO_FAST_FREE) { + // The cell was set by _PyEval_MakeFrameVector() from + // the function's closure. + assert(oldvalue != NULL && PyCell_Check(oldvalue)); + cell = oldvalue; + } + else if (kind & CO_FAST_CELL && oldvalue != NULL) { + if (cellargoffset != CO_CELL_NOT_AN_ARG) { + // (likely) MAKE_CELL must have executed already. + // It's the cell for an arg. + assert(PyCell_Check(oldvalue)); + cell = oldvalue; + } + else { + if (PyCell_Check(oldvalue) && + _PyFrame_OpAlreadyRan(f, MAKE_CELL, i)) { + // (likely) MAKE_CELL must have executed already. + cell = oldvalue; } + // (unlikely) Otherwise, it must have been set to some + // initial value by an earlier call to PyFrame_LocalsToFast(). + } + } + if (cell != NULL) { + oldvalue = PyCell_GET(cell); + if (value != oldvalue) { + Py_XDECREF(oldvalue); + Py_XINCREF(value); + PyCell_SET(cell, value); + } + } + else { + int offset = i; + if (kind & CO_FAST_CELL) { + // (unlikely) MAKE_CELL hasn't executed yet. + // Note that there is no need to create the cell that + // MAKE_CELL would otherwise create later, since no + // *_DEREF ops can happen before MAKE_CELL has run. + if (cellargoffset != CO_CELL_NOT_AN_ARG) { + // It's the cell for an arg. + // Replace the initial value that was set by + // _PyEval_MakeFrameVector(). + // Normally the arg value would always be set. + // However, it can be NULL if it was deleted + // via an earlier PyFrame_LocalsToFast() call. + offset = cellargoffset; + oldvalue = fast[offset]; + } + // Otherwise set an initial value for MAKE_CELL to use + // when it runs later. + } + if (value != oldvalue) { + Py_XINCREF(value); + Py_XSETREF(fast[offset], value); } - } else if (fast[i] != value) { - Py_XINCREF(value); - Py_XSETREF(fast[i], value); } Py_XDECREF(value); } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index bd2cade3bd68b4..4c7e5d4567f76c 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -11,6 +11,8 @@ #include "pycore_pystate.h" // _PyThreadState_GET() #include "pycore_unionobject.h" // _Py_Union(), _Py_union_type_or #include "frameobject.h" +#include "pycore_frame.h" // _PyFrame_OpAlreadyRan +#include "opcode.h" // MAKE_CELL #include "structmember.h" // PyMemberDef #include @@ -8877,14 +8879,17 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, } PyObject *obj = f->f_localsptr[0]; - Py_ssize_t i; + int i; if (obj == NULL && co->co_cell2arg) { /* The first argument might be a cell. */ for (i = 0; i < co->co_ncellvars; i++) { if (co->co_cell2arg[i] == 0) { - PyObject *cell = f->f_localsptr[co->co_nlocals + i]; - assert(PyCell_Check(cell)); - obj = PyCell_GET(cell); + int celloffset = co->co_nlocals + i; + PyObject *cell = f->f_localsptr[celloffset]; + if (PyCell_Check(cell) && + _PyFrame_OpAlreadyRan(f, MAKE_CELL, celloffset)) { + obj = PyCell_GET(cell); + } break; } } diff --git a/Python/ceval.c b/Python/ceval.c index 032bc0cd87129a..a8abead23038ce 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3076,6 +3076,34 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) goto error; } + case TARGET(MAKE_CELL): { + PyObject *initial = GETLOCAL(oparg); + // Normally initial would be NULL. However, it + // might have been set to an initial value during + // a call to PyFrame_LocalsToFast(). + PyObject *cell = PyCell_New(initial); + if (cell == NULL) { + goto error; + } + /* If it is an arg then copy the arg into the cell. */ + if (initial == NULL && co->co_cell2arg != NULL) { + int argoffset = co->co_cell2arg[oparg - co->co_nlocals]; + if (argoffset != CO_CELL_NOT_AN_ARG) { + PyObject *arg = GETLOCAL(argoffset); + // It will have been set in initialize_locals() but + // may have been deleted PyFrame_LocalsToFast(). + if (arg != NULL) {; + Py_INCREF(arg); + PyCell_SET(cell, arg); + /* Clear the local copy. */ + SETLOCAL(argoffset, NULL); + } + } + } + SETLOCAL(oparg, cell); + DISPATCH(); + } + case TARGET(DELETE_DEREF): { PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); @@ -5067,27 +5095,6 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, } } - - /* Allocate and initialize storage for cell vars, and copy free - vars into frame. */ - for (i = 0; i < co->co_ncellvars; ++i) { - PyObject *c; - Py_ssize_t arg; - /* Possibly account for the cell variable being an argument. */ - if (co->co_cell2arg != NULL && - (arg = co->co_cell2arg[i]) != CO_CELL_NOT_AN_ARG) { - c = PyCell_New(GETLOCAL(arg)); - /* Clear the local copy. */ - SETLOCAL(arg, NULL); - } - else { - c = PyCell_New(NULL); - } - if (c == NULL) - goto fail; - SETLOCAL(co->co_nlocals + i, c); - } - /* Copy closure variables to free variables */ for (i = 0; i < co->co_nfreevars; ++i) { PyObject *o = PyTuple_GET_ITEM(con->fc_closure, i); diff --git a/Python/compile.c b/Python/compile.c index 37d5105a820743..c97938adaafcf4 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1185,6 +1185,8 @@ stack_effect(int opcode, int oparg, int jump) return -1; /* Closures */ + case MAKE_CELL: + return 0; case LOAD_CLOSURE: return 1; case LOAD_DEREF: @@ -7374,15 +7376,47 @@ optimize_cfg(struct compiler *c, struct assembler *a, PyObject *consts); static int ensure_exits_have_lineno(struct compiler *c); +static inline int +insert_instruction(basicblock *block, int pos, struct instr *instr) { + if (compiler_next_instr(block) < 0) { + return -1; + } + for (int i = block->b_iused-1; i > pos; i--) { + block->b_instr[i] = block->b_instr[i-1]; + } + block->b_instr[pos] = *instr; + return 0; +} + static int -insert_generator_prefix(struct compiler *c, basicblock *entryblock) { +insert_prefix_instructions(struct compiler *c, basicblock *entryblock) { int flags = compute_code_flags(c); if (flags < 0) { return -1; } - int kind; + + /* Set up cells for any variable that escapes, to be put in a closure. */ + PyObject *k, *v; + Py_ssize_t pos = 0; + while (PyDict_Next(c->u->u_cellvars, &pos, &k, &v)) { + assert(PyLong_AS_LONG(v) < INT_MAX); + int cellindex = (int)PyLong_AS_LONG(v); + struct instr make_cell = { + .i_opcode = MAKE_CELL, + // This will get fixed in offset_derefs(). + .i_oparg = cellindex, + .i_lineno = -1, + .i_target = NULL, + }; + if (insert_instruction(entryblock, (int)(pos - 1), &make_cell) < 0) { + return -1; + } + } + + /* Add the generator prefix instructions. */ if (flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR)) { + int kind; if (flags & CO_COROUTINE) { kind = 1; } @@ -7392,20 +7426,18 @@ insert_generator_prefix(struct compiler *c, basicblock *entryblock) { else { kind = 0; } + + struct instr gen_start = { + .i_opcode = GEN_START, + .i_oparg = kind, + .i_lineno = -1, + .i_target = NULL, + }; + if (insert_instruction(entryblock, 0, &gen_start) < 0) { + return -1; + } } - else { - return 0; - } - if (compiler_next_instr(entryblock) < 0) { - return -1; - } - for (int i = entryblock->b_iused-1; i > 0; i--) { - entryblock->b_instr[i] = entryblock->b_instr[i-1]; - } - entryblock->b_instr[0].i_opcode = GEN_START; - entryblock->b_instr[0].i_oparg = kind; - entryblock->b_instr[0].i_lineno = -1; - entryblock->b_instr[0].i_target = NULL; + return 0; } @@ -7438,12 +7470,15 @@ guarantee_lineno_for_exits(struct assembler *a, int firstlineno) { } static void -offset_derefs(basicblock *entryblock, int nlocals) +fix_cell_offsets(struct compiler *c, basicblock *entryblock) { + assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); + int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); for (basicblock *b = entryblock; b != NULL; b = b->b_next) { for (int i = 0; i < b->b_iused; i++) { struct instr *inst = &b->b_instr[i]; switch(inst->i_opcode) { + case MAKE_CELL: case LOAD_CLOSURE: case LOAD_DEREF: case STORE_DEREF: @@ -7493,7 +7528,7 @@ assemble(struct compiler *c, int addNone) } assert(entryblock != NULL); - if (insert_generator_prefix(c, entryblock)) { + if (insert_prefix_instructions(c, entryblock)) { goto error; } @@ -7510,8 +7545,7 @@ assemble(struct compiler *c, int addNone) a.a_entry = entryblock; a.a_nblocks = nblocks; - assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); - offset_derefs(entryblock, (int)PyDict_GET_SIZE(c->u->u_varnames)); + fix_cell_offsets(c, entryblock); consts = consts_dict_keys_inorder(c->u->u_consts); if (consts == NULL) { diff --git a/Python/importlib.h b/Python/importlib.h index 1c59989743c801..16ccf3076f23bb 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -430,1480 +430,1480 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,243,26,0,0,0,135,2,102,1,100,1,100, - 2,132,8,125,1,116,0,124,1,136,2,131,2,1,0,124, - 1,83,0,41,4,122,49,68,101,99,111,114,97,116,111,114, - 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, - 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, - 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,19,0,0,0,115,38,0, - 0,0,124,1,116,0,106,1,118,1,114,14,116,2,100,1, - 160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,2, - 124,0,124,1,131,2,83,0,41,3,78,250,29,123,33,114, - 125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,114,19,0,0,0,41, - 4,114,18,0,0,0,218,20,98,117,105,108,116,105,110,95, - 109,111,100,117,108,101,95,110,97,109,101,115,218,11,73,109, - 112,111,114,116,69,114,114,111,114,114,51,0,0,0,169,3, - 114,34,0,0,0,218,8,102,117,108,108,110,97,109,101,218, - 3,102,120,110,32,32,128,114,5,0,0,0,218,25,95,114, + 3,0,0,0,243,28,0,0,0,135,2,136,2,102,1,100, + 1,100,2,132,8,125,1,116,0,124,1,137,2,131,2,1, + 0,124,1,83,0,41,4,122,49,68,101,99,111,114,97,116, + 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, + 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, + 32,98,117,105,108,116,45,105,110,46,99,2,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,19,0,0,0,115, + 38,0,0,0,124,1,116,0,106,1,118,1,114,14,116,2, + 100,1,160,3,124,1,161,1,124,1,100,2,141,2,130,1, + 137,2,124,0,124,1,131,2,83,0,41,3,78,250,29,123, + 33,114,125,32,105,115,32,110,111,116,32,97,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,114,19,0,0, + 0,41,4,114,18,0,0,0,218,20,98,117,105,108,116,105, + 110,95,109,111,100,117,108,101,95,110,97,109,101,115,218,11, + 73,109,112,111,114,116,69,114,114,111,114,114,51,0,0,0, + 169,3,114,34,0,0,0,218,8,102,117,108,108,110,97,109, + 101,218,3,102,120,110,32,32,128,114,5,0,0,0,218,25, + 95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,105, + 110,95,119,114,97,112,112,101,114,254,0,0,0,243,10,0, + 0,0,10,1,10,1,2,1,6,255,10,2,114,17,0,0, + 0,122,52,95,114,101,113,117,105,114,101,115,95,98,117,105, + 108,116,105,110,46,60,108,111,99,97,108,115,62,46,95,114, 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,95, - 119,114,97,112,112,101,114,254,0,0,0,243,10,0,0,0, - 10,1,10,1,2,1,6,255,10,2,114,17,0,0,0,122, - 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, - 105,110,46,60,108,111,99,97,108,115,62,46,95,114,101,113, - 117,105,114,101,115,95,98,117,105,108,116,105,110,95,119,114, - 97,112,112,101,114,78,169,1,114,16,0,0,0,41,3,114, - 91,0,0,0,114,92,0,0,0,114,91,0,0,0,96,32, - 64,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, - 115,95,98,117,105,108,116,105,110,252,0,0,0,243,6,0, - 0,0,12,2,10,5,4,1,114,17,0,0,0,114,95,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,114,85,0,0,0,41,4,122,47, - 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, - 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, - 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, - 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, - 2,141,2,130,1,136,2,124,0,124,1,131,2,83,0,169, - 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, - 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, - 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, - 102,114,111,122,101,110,114,88,0,0,0,114,51,0,0,0, - 114,89,0,0,0,32,32,128,114,5,0,0,0,218,24,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, - 119,114,97,112,112,101,114,9,1,0,0,114,93,0,0,0, - 114,17,0,0,0,122,50,95,114,101,113,117,105,114,101,115, - 95,102,114,111,122,101,110,46,60,108,111,99,97,108,115,62, - 46,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, - 110,95,119,114,97,112,112,101,114,78,114,94,0,0,0,41, - 3,114,91,0,0,0,114,99,0,0,0,114,91,0,0,0, - 96,32,64,114,5,0,0,0,218,16,95,114,101,113,117,105, - 114,101,115,95,102,114,111,122,101,110,7,1,0,0,114,96, - 0,0,0,114,17,0,0,0,114,100,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,115,74,0,0,0,100,1,125,2,116,0,160,1,124, - 2,116,2,161,2,1,0,116,3,124,1,124,0,131,2,125, - 3,124,1,116,4,106,5,118,0,114,33,116,4,106,5,124, - 1,25,0,125,4,116,6,124,3,124,4,131,2,1,0,116, - 4,106,5,124,1,25,0,83,0,116,7,124,3,131,1,83, - 0,41,3,122,130,76,111,97,100,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, - 110,116,111,32,115,121,115,46,109,111,100,117,108,101,115,32, - 97,110,100,32,114,101,116,117,114,110,32,105,116,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,46,32,32, - 85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101,32,108,111,97, - 100,95,109,111,100,117,108,101,40,41,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,59,32,117,115,101,32,101,120,101,99,95, - 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, - 78,41,8,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,16,115,112,101,99,95,102, - 114,111,109,95,108,111,97,100,101,114,114,18,0,0,0,218, - 7,109,111,100,117,108,101,115,218,5,95,101,120,101,99,218, - 5,95,108,111,97,100,41,5,114,34,0,0,0,114,90,0, - 0,0,218,3,109,115,103,218,4,115,112,101,99,218,6,109, - 111,100,117,108,101,32,32,32,32,32,114,5,0,0,0,218, - 17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,104, - 105,109,19,1,0,0,115,16,0,0,0,4,6,12,2,10, - 1,10,1,10,1,10,1,10,1,8,2,114,17,0,0,0, - 114,111,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,194,0,0,0,116, - 0,124,0,100,1,100,2,131,3,125,1,116,0,124,0,100, - 3,100,2,131,3,4,0,125,2,114,18,116,1,124,2,131, - 1,83,0,116,2,124,1,100,4,131,2,114,39,9,0,124, - 1,160,3,124,0,161,1,83,0,35,0,4,0,116,4,121, - 96,1,0,1,0,1,0,89,0,110,1,37,0,9,0,124, - 0,106,5,125,3,110,12,35,0,4,0,116,6,121,95,1, - 0,1,0,1,0,100,5,125,3,89,0,110,1,37,0,9, - 0,124,0,106,7,125,4,110,27,35,0,4,0,116,6,121, - 94,1,0,1,0,1,0,124,1,100,2,117,0,114,79,100, - 6,160,8,124,3,161,1,6,0,89,0,83,0,100,7,160, - 8,124,3,124,1,161,2,6,0,89,0,83,0,37,0,100, - 8,160,8,124,3,124,4,161,2,83,0,119,0,119,0,119, - 0,41,9,122,44,84,104,101,32,105,109,112,108,101,109,101, - 110,116,97,116,105,111,110,32,111,102,32,77,111,100,117,108, - 101,84,121,112,101,46,95,95,114,101,112,114,95,95,40,41, - 46,218,10,95,95,108,111,97,100,101,114,95,95,78,218,8, - 95,95,115,112,101,99,95,95,218,11,109,111,100,117,108,101, - 95,114,101,112,114,250,1,63,250,13,60,109,111,100,117,108, - 101,32,123,33,114,125,62,250,20,60,109,111,100,117,108,101, - 32,123,33,114,125,32,40,123,33,114,125,41,62,250,23,60, - 109,111,100,117,108,101,32,123,33,114,125,32,102,114,111,109, - 32,123,33,114,125,62,41,9,114,12,0,0,0,218,22,95, - 109,111,100,117,108,101,95,114,101,112,114,95,102,114,111,109, - 95,115,112,101,99,114,10,0,0,0,114,114,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,114,8,0,0,0,114, - 2,0,0,0,218,8,95,95,102,105,108,101,95,95,114,51, - 0,0,0,41,5,114,110,0,0,0,218,6,108,111,97,100, - 101,114,114,109,0,0,0,114,20,0,0,0,218,8,102,105, - 108,101,110,97,109,101,32,32,32,32,32,114,5,0,0,0, - 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, - 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, - 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, - 128,12,1,8,1,2,128,2,1,8,1,2,128,12,1,8, - 1,14,1,16,2,2,128,12,2,2,250,2,252,2,251,115, - 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, - 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, - 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, - 1,38,7,114,124,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,64,0,0,0,115,114,0, - 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, - 100,2,100,2,100,3,156,3,100,4,100,5,132,2,90,4, - 100,6,100,7,132,0,90,5,100,8,100,9,132,0,90,6, - 101,7,100,10,100,11,132,0,131,1,90,8,101,8,106,9, - 100,12,100,11,132,0,131,1,90,8,101,7,100,13,100,14, - 132,0,131,1,90,10,101,7,100,15,100,16,132,0,131,1, - 90,11,101,11,106,9,100,17,100,16,132,0,131,1,90,11, - 100,2,83,0,41,18,218,10,77,111,100,117,108,101,83,112, - 101,99,97,208,5,0,0,84,104,101,32,115,112,101,99,105, - 102,105,99,97,116,105,111,110,32,102,111,114,32,97,32,109, - 111,100,117,108,101,44,32,117,115,101,100,32,102,111,114,32, - 108,111,97,100,105,110,103,46,10,10,32,32,32,32,65,32, - 109,111,100,117,108,101,39,115,32,115,112,101,99,32,105,115, - 32,116,104,101,32,115,111,117,114,99,101,32,102,111,114,32, - 105,110,102,111,114,109,97,116,105,111,110,32,97,98,111,117, - 116,32,116,104,101,32,109,111,100,117,108,101,46,32,32,70, - 111,114,10,32,32,32,32,100,97,116,97,32,97,115,115,111, - 99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32, - 109,111,100,117,108,101,44,32,105,110,99,108,117,100,105,110, - 103,32,115,111,117,114,99,101,44,32,117,115,101,32,116,104, - 101,32,115,112,101,99,39,115,10,32,32,32,32,108,111,97, - 100,101,114,46,10,10,32,32,32,32,96,110,97,109,101,96, - 32,105,115,32,116,104,101,32,97,98,115,111,108,117,116,101, - 32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,100, - 117,108,101,46,32,32,96,108,111,97,100,101,114,96,32,105, - 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, - 32,116,111,32,117,115,101,32,119,104,101,110,32,108,111,97, - 100,105,110,103,32,116,104,101,32,109,111,100,117,108,101,46, - 32,32,96,112,97,114,101,110,116,96,32,105,115,32,116,104, - 101,32,110,97,109,101,32,111,102,32,116,104,101,10,32,32, - 32,32,112,97,99,107,97,103,101,32,116,104,101,32,109,111, - 100,117,108,101,32,105,115,32,105,110,46,32,32,84,104,101, - 32,112,97,114,101,110,116,32,105,115,32,100,101,114,105,118, - 101,100,32,102,114,111,109,32,116,104,101,32,110,97,109,101, - 46,10,10,32,32,32,32,96,105,115,95,112,97,99,107,97, - 103,101,96,32,100,101,116,101,114,109,105,110,101,115,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, - 99,111,110,115,105,100,101,114,101,100,32,97,32,112,97,99, - 107,97,103,101,32,111,114,10,32,32,32,32,110,111,116,46, - 32,32,79,110,32,109,111,100,117,108,101,115,32,116,104,105, - 115,32,105,115,32,114,101,102,108,101,99,116,101,100,32,98, - 121,32,116,104,101,32,96,95,95,112,97,116,104,95,95,96, - 32,97,116,116,114,105,98,117,116,101,46,10,10,32,32,32, - 32,96,111,114,105,103,105,110,96,32,105,115,32,116,104,101, - 32,115,112,101,99,105,102,105,99,32,108,111,99,97,116,105, - 111,110,32,117,115,101,100,32,98,121,32,116,104,101,32,108, - 111,97,100,101,114,32,102,114,111,109,32,119,104,105,99,104, - 32,116,111,10,32,32,32,32,108,111,97,100,32,116,104,101, - 32,109,111,100,117,108,101,44,32,105,102,32,116,104,97,116, - 32,105,110,102,111,114,109,97,116,105,111,110,32,105,115,32, - 97,118,97,105,108,97,98,108,101,46,32,32,87,104,101,110, - 32,102,105,108,101,110,97,109,101,32,105,115,10,32,32,32, - 32,115,101,116,44,32,111,114,105,103,105,110,32,119,105,108, - 108,32,109,97,116,99,104,46,10,10,32,32,32,32,96,104, - 97,115,95,108,111,99,97,116,105,111,110,96,32,105,110,100, - 105,99,97,116,101,115,32,116,104,97,116,32,97,32,115,112, - 101,99,39,115,32,34,111,114,105,103,105,110,34,32,114,101, - 102,108,101,99,116,115,32,97,32,108,111,99,97,116,105,111, - 110,46,10,32,32,32,32,87,104,101,110,32,116,104,105,115, - 32,105,115,32,84,114,117,101,44,32,96,95,95,102,105,108, - 101,95,95,96,32,97,116,116,114,105,98,117,116,101,32,111, - 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, - 115,101,116,46,10,10,32,32,32,32,96,99,97,99,104,101, - 100,96,32,105,115,32,116,104,101,32,108,111,99,97,116,105, - 111,110,32,111,102,32,116,104,101,32,99,97,99,104,101,100, - 32,98,121,116,101,99,111,100,101,32,102,105,108,101,44,32, - 105,102,32,97,110,121,46,32,32,73,116,10,32,32,32,32, - 99,111,114,114,101,115,112,111,110,100,115,32,116,111,32,116, - 104,101,32,96,95,95,99,97,99,104,101,100,95,95,96,32, - 97,116,116,114,105,98,117,116,101,46,10,10,32,32,32,32, - 96,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,96,32,105,115,32, - 116,104,101,32,115,101,113,117,101,110,99,101,32,111,102,32, - 112,97,116,104,32,101,110,116,114,105,101,115,32,116,111,10, - 32,32,32,32,115,101,97,114,99,104,32,119,104,101,110,32, - 105,109,112,111,114,116,105,110,103,32,115,117,98,109,111,100, - 117,108,101,115,46,32,32,73,102,32,115,101,116,44,32,105, - 115,95,112,97,99,107,97,103,101,32,115,104,111,117,108,100, - 32,98,101,10,32,32,32,32,84,114,117,101,45,45,97,110, - 100,32,70,97,108,115,101,32,111,116,104,101,114,119,105,115, - 101,46,10,10,32,32,32,32,80,97,99,107,97,103,101,115, - 32,97,114,101,32,115,105,109,112,108,121,32,109,111,100,117, - 108,101,115,32,116,104,97,116,32,40,109,97,121,41,32,104, - 97,118,101,32,115,117,98,109,111,100,117,108,101,115,46,32, - 32,73,102,32,97,32,115,112,101,99,10,32,32,32,32,104, - 97,115,32,97,32,110,111,110,45,78,111,110,101,32,118,97, - 108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112,111,114,116,10, - 32,32,32,32,115,121,115,116,101,109,32,119,105,108,108,32, - 99,111,110,115,105,100,101,114,32,109,111,100,117,108,101,115, - 32,108,111,97,100,101,100,32,102,114,111,109,32,116,104,101, - 32,115,112,101,99,32,97,115,32,112,97,99,107,97,103,101, - 115,46,10,10,32,32,32,32,79,110,108,121,32,102,105,110, - 100,101,114,115,32,40,115,101,101,32,105,109,112,111,114,116, - 108,105,98,46,97,98,99,46,77,101,116,97,80,97,116,104, - 70,105,110,100,101,114,32,97,110,100,10,32,32,32,32,105, - 109,112,111,114,116,108,105,98,46,97,98,99,46,80,97,116, - 104,69,110,116,114,121,70,105,110,100,101,114,41,32,115,104, - 111,117,108,100,32,109,111,100,105,102,121,32,77,111,100,117, - 108,101,83,112,101,99,32,105,110,115,116,97,110,99,101,115, - 46,10,10,32,32,32,32,78,41,3,218,6,111,114,105,103, - 105,110,218,12,108,111,97,100,101,114,95,115,116,97,116,101, - 218,10,105,115,95,112,97,99,107,97,103,101,99,3,0,0, - 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, - 0,115,54,0,0,0,124,1,124,0,95,0,124,2,124,0, - 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, - 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, - 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, - 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, - 0,114,127,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, - 114,218,7,95,99,97,99,104,101,100,41,6,114,34,0,0, - 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, - 114,127,0,0,0,114,128,0,0,0,32,32,32,32,32,32, - 114,5,0,0,0,114,35,0,0,0,101,1,0,0,115,14, - 0,0,0,6,2,6,1,6,1,6,1,14,1,6,3,10, - 1,114,17,0,0,0,122,19,77,111,100,117,108,101,83,112, - 101,99,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,6,0,0,0,67,0,0,0, - 115,102,0,0,0,100,1,160,0,124,0,106,1,161,1,100, - 2,160,0,124,0,106,2,161,1,103,2,125,1,124,0,106, - 3,100,0,117,1,114,26,124,1,160,4,100,3,160,0,124, - 0,106,3,161,1,161,1,1,0,124,0,106,5,100,0,117, - 1,114,40,124,1,160,4,100,4,160,0,124,0,106,5,161, - 1,161,1,1,0,100,5,160,0,124,0,106,6,106,7,100, - 6,160,8,124,1,161,1,161,2,83,0,41,7,78,122,9, - 110,97,109,101,61,123,33,114,125,122,11,108,111,97,100,101, - 114,61,123,33,114,125,122,11,111,114,105,103,105,110,61,123, - 33,114,125,122,29,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,61, - 123,125,122,6,123,125,40,123,125,41,122,2,44,32,41,9, - 114,51,0,0,0,114,20,0,0,0,114,122,0,0,0,114, - 126,0,0,0,218,6,97,112,112,101,110,100,114,129,0,0, - 0,218,9,95,95,99,108,97,115,115,95,95,114,8,0,0, - 0,218,4,106,111,105,110,41,2,114,34,0,0,0,114,63, - 0,0,0,32,32,114,5,0,0,0,114,54,0,0,0,113, - 1,0,0,115,20,0,0,0,10,1,10,1,4,255,10,2, - 18,1,10,1,6,1,8,1,4,255,22,2,114,17,0,0, - 0,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, - 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,0, - 0,0,0,8,0,0,0,67,0,0,0,115,104,0,0,0, - 124,0,106,0,125,2,9,0,124,0,106,1,124,1,106,1, - 107,2,111,38,124,0,106,2,124,1,106,2,107,2,111,38, - 124,0,106,3,124,1,106,3,107,2,111,38,124,2,124,1, - 106,0,107,2,111,38,124,0,106,4,124,1,106,4,107,2, - 111,38,124,0,106,5,124,1,106,5,107,2,83,0,35,0, - 4,0,116,6,121,51,1,0,1,0,1,0,116,7,6,0, - 89,0,83,0,37,0,119,0,114,0,0,0,0,41,8,114, - 129,0,0,0,114,20,0,0,0,114,122,0,0,0,114,126, - 0,0,0,218,6,99,97,99,104,101,100,218,12,104,97,115, - 95,108,111,99,97,116,105,111,110,114,2,0,0,0,218,14, - 78,111,116,73,109,112,108,101,109,101,110,116,101,100,41,3, - 114,34,0,0,0,90,5,111,116,104,101,114,90,4,115,109, - 115,108,32,32,32,114,5,0,0,0,218,6,95,95,101,113, - 95,95,123,1,0,0,115,36,0,0,0,6,1,2,1,12, - 1,10,1,2,255,10,2,2,254,8,3,2,253,10,4,2, - 252,10,5,2,251,2,128,12,6,8,1,2,128,2,255,115, - 12,0,0,0,132,34,39,0,167,9,50,7,179,1,50,7, - 122,17,77,111,100,117,108,101,83,112,101,99,46,95,95,101, - 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,58,0,0,0,124,0,106, - 0,100,0,117,0,114,26,124,0,106,1,100,0,117,1,114, - 26,124,0,106,2,114,26,116,3,100,0,117,0,114,19,116, - 4,130,1,116,3,160,5,124,0,106,1,161,1,124,0,95, - 0,124,0,106,0,83,0,114,0,0,0,0,41,6,114,131, - 0,0,0,114,126,0,0,0,114,130,0,0,0,218,19,95, - 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, - 97,108,218,19,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,69,114,114,111,114,90,11,95,103,101,116,95,99,97, - 99,104,101,100,114,53,0,0,0,32,114,5,0,0,0,114, - 135,0,0,0,135,1,0,0,115,12,0,0,0,10,2,16, - 1,8,1,4,1,14,1,6,1,114,17,0,0,0,122,17, - 77,111,100,117,108,101,83,112,101,99,46,99,97,99,104,101, - 100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,131,0,0, - 0,41,2,114,34,0,0,0,114,135,0,0,0,32,32,114, - 5,0,0,0,114,135,0,0,0,144,1,0,0,115,2,0, - 0,0,10,2,114,17,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,32, - 0,0,0,124,0,106,0,100,1,117,0,114,13,124,0,106, - 1,160,2,100,2,161,1,100,3,25,0,83,0,124,0,106, - 1,83,0,41,4,122,32,84,104,101,32,110,97,109,101,32, - 111,102,32,116,104,101,32,109,111,100,117,108,101,39,115,32, - 112,97,114,101,110,116,46,78,218,1,46,114,26,0,0,0, - 41,3,114,129,0,0,0,114,20,0,0,0,218,10,114,112, - 97,114,116,105,116,105,111,110,114,53,0,0,0,32,114,5, - 0,0,0,218,6,112,97,114,101,110,116,148,1,0,0,115, - 6,0,0,0,10,3,16,1,6,2,114,17,0,0,0,122, - 17,77,111,100,117,108,101,83,112,101,99,46,112,97,114,101, - 110,116,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0, - 83,0,114,0,0,0,0,41,1,114,130,0,0,0,114,53, - 0,0,0,32,114,5,0,0,0,114,136,0,0,0,156,1, - 0,0,115,2,0,0,0,6,2,114,17,0,0,0,122,23, - 77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,108, - 111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,67,0,0,0,115,14,0,0, - 0,116,0,124,1,131,1,124,0,95,1,100,0,83,0,114, - 0,0,0,0,41,2,218,4,98,111,111,108,114,130,0,0, - 0,41,2,114,34,0,0,0,218,5,118,97,108,117,101,32, - 32,114,5,0,0,0,114,136,0,0,0,160,1,0,0,115, - 2,0,0,0,14,2,114,17,0,0,0,41,12,114,8,0, - 0,0,114,7,0,0,0,114,1,0,0,0,114,9,0,0, - 0,114,35,0,0,0,114,54,0,0,0,114,138,0,0,0, - 218,8,112,114,111,112,101,114,116,121,114,135,0,0,0,218, - 6,115,101,116,116,101,114,114,143,0,0,0,114,136,0,0, - 0,114,23,0,0,0,114,5,0,0,0,114,125,0,0,0, - 64,1,0,0,115,34,0,0,0,8,0,4,1,4,36,2, - 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, - 3,10,1,2,7,10,1,4,3,14,1,114,17,0,0,0, - 114,125,0,0,0,169,2,114,126,0,0,0,114,128,0,0, - 0,99,2,0,0,0,0,0,0,0,2,0,0,0,8,0, - 0,0,67,0,0,0,115,152,0,0,0,116,0,124,1,100, - 1,131,2,114,37,116,1,100,2,117,0,114,11,116,2,130, - 1,116,1,106,3,125,4,124,3,100,2,117,0,114,24,124, - 4,124,0,124,1,100,3,141,2,83,0,124,3,114,28,103, - 0,110,1,100,2,125,5,124,4,124,0,124,1,124,5,100, - 4,141,3,83,0,124,3,100,2,117,0,114,67,116,0,124, - 1,100,5,131,2,114,65,9,0,124,1,160,4,124,0,161, - 1,125,3,110,14,35,0,4,0,116,5,121,75,1,0,1, - 0,1,0,100,2,125,3,89,0,110,3,37,0,100,6,125, - 3,116,6,124,0,124,1,124,2,124,3,100,7,141,4,83, - 0,119,0,41,8,122,53,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,118,97,114,105,111,117,115,32,108,111,97, - 100,101,114,32,109,101,116,104,111,100,115,46,90,12,103,101, - 116,95,102,105,108,101,110,97,109,101,78,41,1,114,122,0, - 0,0,41,2,114,122,0,0,0,114,129,0,0,0,114,128, - 0,0,0,70,114,148,0,0,0,41,7,114,10,0,0,0, - 114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0,0,114,125,0, - 0,0,41,6,114,20,0,0,0,114,122,0,0,0,114,126, - 0,0,0,114,128,0,0,0,114,149,0,0,0,90,6,115, - 101,97,114,99,104,32,32,32,32,32,32,114,5,0,0,0, - 114,104,0,0,0,165,1,0,0,115,42,0,0,0,10,2, - 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, - 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, - 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, - 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, - 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, - 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, - 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, - 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, - 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, - 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, - 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, - 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, - 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, - 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, - 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, - 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, - 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, - 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, - 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, - 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, - 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, - 169,1,114,126,0,0,0,70,84,41,13,114,113,0,0,0, - 114,2,0,0,0,114,8,0,0,0,114,112,0,0,0,114, - 121,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, - 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, - 8,95,95,112,97,116,104,95,95,114,125,0,0,0,114,130, - 0,0,0,114,135,0,0,0,114,129,0,0,0,41,8,114, - 110,0,0,0,114,122,0,0,0,114,126,0,0,0,114,109, - 0,0,0,114,20,0,0,0,90,8,108,111,99,97,116,105, - 111,110,114,135,0,0,0,114,129,0,0,0,32,32,32,32, - 32,32,32,32,114,5,0,0,0,218,17,95,115,112,101,99, - 95,102,114,111,109,95,109,111,100,117,108,101,191,1,0,0, - 115,108,0,0,0,2,2,8,1,2,128,12,1,4,1,2, - 128,8,2,4,1,6,2,8,1,2,1,8,1,2,128,12, - 1,4,2,2,128,2,1,8,1,2,128,12,1,8,1,2, - 128,8,1,8,1,2,1,8,1,2,128,12,1,8,1,2, - 128,4,2,2,1,8,1,2,128,12,1,8,1,2,128,2, - 1,12,1,2,128,12,1,8,1,2,128,14,2,18,1,6, - 1,6,1,4,1,2,249,2,252,2,250,2,250,2,251,2, - 246,115,93,0,0,0,129,3,5,0,133,7,14,7,157,3, - 33,0,161,7,42,7,172,3,48,0,176,9,59,7,193,5, - 3,65,9,0,193,9,9,65,20,7,193,24,3,65,28,0, - 193,28,9,65,39,7,193,41,5,65,47,0,193,47,9,65, - 58,7,194,19,1,65,58,7,194,20,1,65,39,7,194,21, - 1,65,20,7,194,22,1,59,7,194,23,1,42,7,194,24, - 1,14,7,114,155,0,0,0,70,169,1,218,8,111,118,101, - 114,114,105,100,101,99,2,0,0,0,0,0,0,0,1,0, - 0,0,8,0,0,0,67,0,0,0,115,204,1,0,0,124, - 2,115,10,116,0,124,1,100,1,100,0,131,3,100,0,117, - 0,114,26,9,0,124,0,106,1,124,1,95,2,110,10,35, - 0,4,0,116,3,121,229,1,0,1,0,1,0,89,0,110, - 1,37,0,124,2,115,36,116,0,124,1,100,2,100,0,131, - 3,100,0,117,0,114,87,124,0,106,4,125,3,124,3,100, - 0,117,0,114,72,124,0,106,5,100,0,117,1,114,72,116, - 6,100,0,117,0,114,54,116,7,130,1,116,6,106,8,125, - 4,124,4,160,9,124,4,161,1,125,3,124,0,106,5,124, - 3,95,10,124,3,124,0,95,4,100,0,124,1,95,11,9, - 0,124,3,124,1,95,12,110,10,35,0,4,0,116,3,121, - 228,1,0,1,0,1,0,89,0,110,1,37,0,124,2,115, - 97,116,0,124,1,100,3,100,0,131,3,100,0,117,0,114, - 113,9,0,124,0,106,13,124,1,95,14,110,10,35,0,4, - 0,116,3,121,227,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,124,1,95,15,110,10,35,0,4,0,116, - 3,121,226,1,0,1,0,1,0,89,0,110,1,37,0,124, - 2,115,138,116,0,124,1,100,4,100,0,131,3,100,0,117, - 0,114,159,124,0,106,5,100,0,117,1,114,159,9,0,124, - 0,106,5,124,1,95,16,110,10,35,0,4,0,116,3,121, - 225,1,0,1,0,1,0,89,0,110,1,37,0,124,0,106, - 17,114,221,124,2,115,172,116,0,124,1,100,5,100,0,131, - 3,100,0,117,0,114,188,9,0,124,0,106,18,124,1,95, - 11,110,10,35,0,4,0,116,3,121,224,1,0,1,0,1, - 0,89,0,110,1,37,0,124,2,115,198,116,0,124,1,100, - 6,100,0,131,3,100,0,117,0,114,221,124,0,106,19,100, - 0,117,1,114,221,9,0,124,0,106,19,124,1,95,20,124, - 1,83,0,35,0,4,0,116,3,121,223,1,0,1,0,1, - 0,89,0,124,1,83,0,37,0,124,1,83,0,119,0,119, - 0,119,0,119,0,119,0,119,0,119,0,41,7,78,114,8, - 0,0,0,114,112,0,0,0,218,11,95,95,112,97,99,107, - 97,103,101,95,95,114,154,0,0,0,114,121,0,0,0,114, - 152,0,0,0,41,21,114,12,0,0,0,114,20,0,0,0, - 114,8,0,0,0,114,2,0,0,0,114,122,0,0,0,114, - 129,0,0,0,114,139,0,0,0,114,140,0,0,0,218,16, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 218,7,95,95,110,101,119,95,95,90,5,95,112,97,116,104, - 114,121,0,0,0,114,112,0,0,0,114,143,0,0,0,114, - 158,0,0,0,114,113,0,0,0,114,154,0,0,0,114,136, - 0,0,0,114,126,0,0,0,114,135,0,0,0,114,152,0, - 0,0,41,5,114,109,0,0,0,114,110,0,0,0,114,157, - 0,0,0,114,122,0,0,0,114,159,0,0,0,32,32,32, - 32,32,114,5,0,0,0,218,18,95,105,110,105,116,95,109, - 111,100,117,108,101,95,97,116,116,114,115,236,1,0,0,115, - 142,0,0,0,20,4,2,1,10,1,2,128,12,1,4,1, - 2,128,20,2,6,1,8,1,10,2,8,1,4,1,6,1, - 10,2,8,1,6,1,6,11,2,1,8,1,2,128,12,1, - 4,1,2,128,20,2,2,1,10,1,2,128,12,1,4,1, - 2,128,2,2,8,1,2,128,12,1,4,1,2,128,20,2, - 10,1,2,1,10,1,2,128,12,1,4,1,2,128,6,2, - 20,1,2,1,10,1,2,128,12,1,4,1,2,128,20,2, - 10,1,2,1,8,1,4,3,2,128,12,254,2,1,4,1, - 2,128,4,0,2,254,2,249,2,249,2,249,2,251,2,250, - 2,228,115,121,0,0,0,139,4,16,0,144,7,25,7,193, - 9,3,65,13,0,193,13,7,65,22,7,193,34,4,65,39, - 0,193,39,7,65,48,7,193,50,3,65,54,0,193,54,7, - 65,63,7,194,16,4,66,21,0,194,21,7,66,30,7,194, - 45,4,66,50,0,194,50,7,66,59,7,195,12,4,67,18, - 0,195,18,7,67,28,7,195,31,1,67,28,7,195,32,1, - 66,59,7,195,33,1,66,30,7,195,34,1,65,63,7,195, - 35,1,65,48,7,195,36,1,65,22,7,195,37,1,25,7, - 114,161,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,115,82,0,0,0,100, - 1,125,1,116,0,124,0,106,1,100,2,131,2,114,15,124, - 0,106,1,160,2,124,0,161,1,125,1,110,10,116,0,124, - 0,106,1,100,3,131,2,114,25,116,3,100,4,131,1,130, - 1,124,1,100,1,117,0,114,34,116,4,124,0,106,5,131, - 1,125,1,116,6,124,0,124,1,131,2,1,0,124,1,83, - 0,41,5,122,43,67,114,101,97,116,101,32,97,32,109,111, - 100,117,108,101,32,98,97,115,101,100,32,111,110,32,116,104, - 101,32,112,114,111,118,105,100,101,100,32,115,112,101,99,46, - 78,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101, - 218,11,101,120,101,99,95,109,111,100,117,108,101,122,66,108, - 111,97,100,101,114,115,32,116,104,97,116,32,100,101,102,105, - 110,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,109,117,115,116,32,97,108,115,111,32,100,101,102,105,110, - 101,32,99,114,101,97,116,101,95,109,111,100,117,108,101,40, - 41,41,7,114,10,0,0,0,114,122,0,0,0,114,162,0, - 0,0,114,88,0,0,0,114,21,0,0,0,114,20,0,0, - 0,114,161,0,0,0,169,2,114,109,0,0,0,114,110,0, - 0,0,32,32,114,5,0,0,0,218,16,109,111,100,117,108, - 101,95,102,114,111,109,95,115,112,101,99,52,2,0,0,115, - 18,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, - 10,1,10,1,4,1,114,17,0,0,0,114,165,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,100,0,0,0,124,0,106,0,100,1, - 117,0,114,7,100,2,110,2,124,0,106,0,125,1,124,0, - 106,1,100,1,117,0,114,32,124,0,106,2,100,1,117,0, - 114,25,100,3,160,3,124,1,161,1,83,0,100,4,160,3, - 124,1,124,0,106,2,161,2,83,0,124,0,106,4,114,42, - 100,5,160,3,124,1,124,0,106,1,161,2,83,0,100,6, - 160,3,124,0,106,0,124,0,106,1,161,2,83,0,41,7, - 122,38,82,101,116,117,114,110,32,116,104,101,32,114,101,112, - 114,32,116,111,32,117,115,101,32,102,111,114,32,116,104,101, - 32,109,111,100,117,108,101,46,78,114,115,0,0,0,114,116, - 0,0,0,114,117,0,0,0,114,118,0,0,0,250,18,60, - 109,111,100,117,108,101,32,123,33,114,125,32,40,123,125,41, - 62,41,5,114,20,0,0,0,114,126,0,0,0,114,122,0, - 0,0,114,51,0,0,0,114,136,0,0,0,41,2,114,109, - 0,0,0,114,20,0,0,0,32,32,114,5,0,0,0,114, - 119,0,0,0,69,2,0,0,115,16,0,0,0,20,3,10, - 1,10,1,10,1,14,2,6,2,14,1,16,2,114,17,0, - 0,0,114,119,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,10,0,0,0,67,0,0,0,115,32,1,0, - 0,124,0,106,0,125,2,116,1,124,2,131,1,53,0,1, - 0,116,2,106,3,160,4,124,2,161,1,124,1,117,1,114, - 27,100,1,160,5,124,2,161,1,125,3,116,6,124,3,124, - 2,100,2,141,2,130,1,9,0,124,0,106,7,100,3,117, - 0,114,53,124,0,106,8,100,3,117,0,114,45,116,6,100, - 4,124,0,106,0,100,2,141,2,130,1,116,9,124,0,124, - 1,100,5,100,6,141,3,1,0,110,40,116,9,124,0,124, - 1,100,5,100,6,141,3,1,0,116,10,124,0,106,7,100, - 7,131,2,115,87,116,11,124,0,106,7,131,1,155,0,100, - 8,157,2,125,3,116,12,160,13,124,3,116,14,161,2,1, - 0,124,0,106,7,160,15,124,2,161,1,1,0,110,6,124, - 0,106,7,160,16,124,1,161,1,1,0,116,2,106,3,160, - 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, - 0,106,0,60,0,110,16,35,0,116,2,106,3,160,17,124, - 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, - 0,60,0,119,0,37,0,9,0,100,3,4,0,4,0,131, - 3,1,0,124,1,83,0,35,0,49,0,115,136,119,4,37, - 0,1,0,1,0,1,0,89,0,1,0,1,0,124,1,83, - 0,41,9,122,70,69,120,101,99,117,116,101,32,116,104,101, - 32,115,112,101,99,39,115,32,115,112,101,99,105,102,105,101, - 100,32,109,111,100,117,108,101,32,105,110,32,97,110,32,101, - 120,105,115,116,105,110,103,32,109,111,100,117,108,101,39,115, - 32,110,97,109,101,115,112,97,99,101,46,122,30,109,111,100, - 117,108,101,32,123,33,114,125,32,110,111,116,32,105,110,32, - 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, - 78,250,14,109,105,115,115,105,110,103,32,108,111,97,100,101, - 114,84,114,156,0,0,0,114,163,0,0,0,250,55,46,101, - 120,101,99,95,109,111,100,117,108,101,40,41,32,110,111,116, - 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, - 98,97,99,107,32,116,111,32,108,111,97,100,95,109,111,100, - 117,108,101,40,41,41,18,114,20,0,0,0,114,58,0,0, - 0,114,18,0,0,0,114,105,0,0,0,114,39,0,0,0, - 114,51,0,0,0,114,88,0,0,0,114,122,0,0,0,114, - 129,0,0,0,114,161,0,0,0,114,10,0,0,0,114,6, - 0,0,0,114,101,0,0,0,114,102,0,0,0,218,13,73, - 109,112,111,114,116,87,97,114,110,105,110,103,218,11,108,111, - 97,100,95,109,111,100,117,108,101,114,163,0,0,0,218,3, - 112,111,112,41,4,114,109,0,0,0,114,110,0,0,0,114, - 20,0,0,0,114,108,0,0,0,32,32,32,32,114,5,0, - 0,0,114,106,0,0,0,86,2,0,0,115,50,0,0,0, - 6,2,10,1,16,1,10,1,12,1,2,1,10,1,10,1, - 14,1,16,2,14,2,12,1,16,1,12,2,14,1,12,2, - 14,4,14,1,2,128,14,255,18,1,10,233,4,24,22,128, - 4,0,115,41,0,0,0,135,20,66,3,3,156,65,1,65, - 43,2,193,29,14,66,3,3,193,43,15,65,58,9,193,58, - 1,66,3,3,194,3,4,66,7,11,194,8,3,66,7,11, - 114,106,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,22,1,0,0,9, - 0,124,0,106,0,160,1,124,0,106,2,161,1,1,0,110, - 25,35,0,1,0,1,0,1,0,124,0,106,2,116,3,106, - 4,118,0,114,32,116,3,106,4,160,5,124,0,106,2,161, - 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, - 0,37,0,116,3,106,4,160,5,124,0,106,2,161,1,125, - 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, - 1,100,1,100,0,131,3,100,0,117,0,114,71,9,0,124, - 0,106,0,124,1,95,7,110,10,35,0,4,0,116,8,121, - 138,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, - 1,100,2,100,0,131,3,100,0,117,0,114,109,9,0,124, - 1,106,9,124,1,95,10,116,11,124,1,100,3,131,2,115, - 98,124,0,106,2,160,12,100,4,161,1,100,5,25,0,124, - 1,95,10,110,10,35,0,4,0,116,8,121,137,1,0,1, - 0,1,0,89,0,110,1,37,0,116,6,124,1,100,6,100, - 0,131,3,100,0,117,0,114,134,9,0,124,0,124,1,95, - 13,124,1,83,0,35,0,4,0,116,8,121,136,1,0,1, - 0,1,0,89,0,124,1,83,0,37,0,124,1,83,0,119, - 0,119,0,119,0,41,7,78,114,112,0,0,0,114,158,0, - 0,0,114,154,0,0,0,114,141,0,0,0,114,26,0,0, - 0,114,113,0,0,0,41,14,114,122,0,0,0,114,170,0, - 0,0,114,20,0,0,0,114,18,0,0,0,114,105,0,0, - 0,114,171,0,0,0,114,12,0,0,0,114,112,0,0,0, - 114,2,0,0,0,114,8,0,0,0,114,158,0,0,0,114, - 10,0,0,0,114,142,0,0,0,114,113,0,0,0,114,164, - 0,0,0,32,32,114,5,0,0,0,218,25,95,108,111,97, - 100,95,98,97,99,107,119,97,114,100,95,99,111,109,112,97, - 116,105,98,108,101,116,2,0,0,115,80,0,0,0,2,3, - 16,1,2,128,6,1,12,1,14,1,12,1,2,1,2,128, - 14,3,12,1,16,1,2,1,10,1,2,128,12,1,4,1, - 2,128,16,1,2,1,8,4,10,1,18,1,4,128,12,1, - 4,1,2,128,16,1,2,1,6,1,4,3,2,128,12,254, - 2,1,4,1,2,128,4,0,2,254,2,251,2,246,115,59, - 0,0,0,129,7,9,0,137,24,33,7,184,4,61,0,189, - 7,65,6,7,193,16,18,65,35,0,193,35,7,65,44,7, - 193,54,3,65,59,0,193,59,7,66,5,7,194,8,1,66, - 5,7,194,9,1,65,44,7,194,10,1,65,6,7,114,172, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 11,0,0,0,67,0,0,0,115,248,0,0,0,124,0,106, - 0,100,0,117,1,114,29,116,1,124,0,106,0,100,1,131, - 2,115,29,116,2,124,0,106,0,131,1,155,0,100,2,157, - 2,125,1,116,3,160,4,124,1,116,5,161,2,1,0,116, - 6,124,0,131,1,83,0,116,7,124,0,131,1,125,2,100, - 3,124,0,95,8,9,0,124,2,116,9,106,10,124,0,106, - 11,60,0,9,0,124,0,106,0,100,0,117,0,114,62,124, - 0,106,12,100,0,117,0,114,61,116,13,100,4,124,0,106, - 11,100,5,141,2,130,1,110,6,124,0,106,0,160,14,124, - 2,161,1,1,0,110,22,35,0,1,0,1,0,1,0,9, - 0,116,9,106,10,124,0,106,11,61,0,130,0,35,0,4, - 0,116,15,121,123,1,0,1,0,1,0,89,0,130,0,37, - 0,37,0,116,9,106,10,160,16,124,0,106,11,161,1,125, - 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, - 6,124,0,106,11,124,0,106,0,131,3,1,0,100,7,124, - 0,95,8,124,2,83,0,35,0,100,7,124,0,95,8,119, - 0,37,0,119,0,41,8,78,114,163,0,0,0,114,168,0, - 0,0,84,114,167,0,0,0,114,19,0,0,0,122,18,105, - 109,112,111,114,116,32,123,33,114,125,32,35,32,123,33,114, - 125,70,41,18,114,122,0,0,0,114,10,0,0,0,114,6, - 0,0,0,114,101,0,0,0,114,102,0,0,0,114,169,0, - 0,0,114,172,0,0,0,114,165,0,0,0,90,13,95,105, - 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, - 114,105,0,0,0,114,20,0,0,0,114,129,0,0,0,114, - 88,0,0,0,114,163,0,0,0,114,71,0,0,0,114,171, - 0,0,0,114,84,0,0,0,41,3,114,109,0,0,0,114, - 108,0,0,0,114,110,0,0,0,32,32,32,114,5,0,0, - 0,218,14,95,108,111,97,100,95,117,110,108,111,99,107,101, - 100,152,2,0,0,115,66,0,0,0,10,2,12,2,16,1, - 12,2,8,1,8,2,6,5,2,1,12,1,2,1,10,1, - 10,1,14,1,2,255,12,4,4,128,6,1,2,1,10,1, - 2,3,2,128,12,254,2,1,2,1,4,128,14,5,12,1, - 16,1,6,2,4,2,2,128,10,254,2,245,115,64,0,0, - 0,165,6,65,53,0,172,24,65,5,0,193,4,1,65,53, - 0,193,5,4,65,26,7,193,10,5,65,16,6,193,15,1, - 65,26,7,193,16,7,65,25,13,193,23,3,65,26,7,193, - 26,22,65,53,0,193,53,5,65,58,7,193,59,1,65,25, - 13,114,173,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,67,0,0,0,115,58,0,0,0, - 116,0,124,0,106,1,131,1,53,0,1,0,116,2,124,0, - 131,1,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 35,0,49,0,115,21,119,4,37,0,1,0,1,0,1,0, - 89,0,1,0,1,0,100,1,83,0,41,2,122,191,82,101, - 116,117,114,110,32,97,32,110,101,119,32,109,111,100,117,108, - 101,32,111,98,106,101,99,116,44,32,108,111,97,100,101,100, - 32,98,121,32,116,104,101,32,115,112,101,99,39,115,32,108, - 111,97,100,101,114,46,10,10,32,32,32,32,84,104,101,32, - 109,111,100,117,108,101,32,105,115,32,110,111,116,32,97,100, - 100,101,100,32,116,111,32,105,116,115,32,112,97,114,101,110, - 116,46,10,10,32,32,32,32,73,102,32,97,32,109,111,100, - 117,108,101,32,105,115,32,97,108,114,101,97,100,121,32,105, - 110,32,115,121,115,46,109,111,100,117,108,101,115,44,32,116, - 104,97,116,32,101,120,105,115,116,105,110,103,32,109,111,100, - 117,108,101,32,103,101,116,115,10,32,32,32,32,99,108,111, - 98,98,101,114,101,100,46,10,10,32,32,32,32,78,41,3, - 114,58,0,0,0,114,20,0,0,0,114,173,0,0,0,169, - 1,114,109,0,0,0,32,114,5,0,0,0,114,107,0,0, - 0,197,2,0,0,115,10,0,0,0,12,9,6,1,14,255, - 22,128,4,0,115,12,0,0,0,133,4,16,3,144,4,20, - 11,149,3,20,11,114,107,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, - 140,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, - 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, - 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, - 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, - 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, - 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, - 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, - 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, - 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, - 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, - 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, - 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, - 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, - 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, - 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, - 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, - 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,99, - 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 67,0,0,0,115,34,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,100,2,124,0,106,3,155,2,100,3,116, - 4,106,5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,40, - 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,122,8,60,109,111,100,117,108,101,32,122, - 2,32,40,122,2,41,62,78,41,6,114,101,0,0,0,114, - 102,0,0,0,114,103,0,0,0,114,8,0,0,0,114,175, - 0,0,0,114,151,0,0,0,169,1,114,110,0,0,0,32, - 114,5,0,0,0,114,114,0,0,0,223,2,0,0,115,8, - 0,0,0,6,7,2,1,4,255,22,2,114,17,0,0,0, - 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, - 0,0,0,115,42,0,0,0,124,2,100,0,117,1,114,6, - 100,0,83,0,116,0,160,1,124,1,161,1,114,19,116,2, - 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, - 83,0,169,2,78,114,150,0,0,0,41,4,114,65,0,0, - 0,90,10,105,115,95,98,117,105,108,116,105,110,114,104,0, - 0,0,114,151,0,0,0,169,4,218,3,99,108,115,114,90, - 0,0,0,218,4,112,97,116,104,218,6,116,97,114,103,101, - 116,32,32,32,32,114,5,0,0,0,218,9,102,105,110,100, - 95,115,112,101,99,234,2,0,0,115,10,0,0,0,8,2, - 4,1,10,1,16,1,4,2,114,17,0,0,0,122,25,66, - 117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115,42,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, - 160,3,124,1,124,2,161,2,125,3,124,3,100,2,117,1, - 114,19,124,3,106,4,83,0,100,2,83,0,41,3,122,175, - 70,105,110,100,32,116,104,101,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,73,102,32,39,112,97,116,104,39,32,105,115,32, - 101,118,101,114,32,115,112,101,99,105,102,105,101,100,32,116, - 104,101,110,32,116,104,101,32,115,101,97,114,99,104,32,105, - 115,32,99,111,110,115,105,100,101,114,101,100,32,97,32,102, - 97,105,108,117,114,101,46,10,10,32,32,32,32,32,32,32, - 32,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,122, - 106,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,78,41,5,114,101, - 0,0,0,114,102,0,0,0,114,103,0,0,0,114,183,0, - 0,0,114,122,0,0,0,41,4,114,180,0,0,0,114,90, - 0,0,0,114,181,0,0,0,114,109,0,0,0,32,32,32, - 32,114,5,0,0,0,218,11,102,105,110,100,95,109,111,100, - 117,108,101,243,2,0,0,115,10,0,0,0,6,9,2,2, - 4,254,12,3,18,1,114,17,0,0,0,122,27,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,46,0, - 0,0,124,0,106,0,116,1,106,2,118,1,114,17,116,3, - 100,1,160,4,124,0,106,0,161,1,124,0,106,0,100,2, - 141,2,130,1,116,5,116,6,106,7,124,0,131,2,83,0, - 41,4,122,24,67,114,101,97,116,101,32,97,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,114,86,0,0, - 0,114,19,0,0,0,78,41,8,114,20,0,0,0,114,18, - 0,0,0,114,87,0,0,0,114,88,0,0,0,114,51,0, - 0,0,114,75,0,0,0,114,65,0,0,0,90,14,99,114, - 101,97,116,101,95,98,117,105,108,116,105,110,114,174,0,0, - 0,32,114,5,0,0,0,114,162,0,0,0,2,3,0,0, - 115,10,0,0,0,12,3,12,1,4,1,6,255,12,2,114, - 17,0,0,0,122,29,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,99,114,101,97,116,101,95,109,111,100, - 117,108,101,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,116, - 1,106,2,124,0,131,2,1,0,100,1,83,0,41,2,122, - 22,69,120,101,99,32,97,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,78,41,3,114,75,0,0,0,114, - 65,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, - 105,110,114,177,0,0,0,32,114,5,0,0,0,114,163,0, - 0,0,10,3,0,0,115,2,0,0,0,16,3,114,17,0, - 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, - 116,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,1,0,0,0, - 67,0,0,0,243,4,0,0,0,100,1,83,0,41,2,122, - 57,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 32,100,111,32,110,111,116,32,104,97,118,101,32,99,111,100, - 101,32,111,98,106,101,99,116,115,46,78,114,23,0,0,0, - 169,2,114,180,0,0,0,114,90,0,0,0,32,32,114,5, - 0,0,0,218,8,103,101,116,95,99,111,100,101,15,3,0, - 0,243,2,0,0,0,4,4,114,17,0,0,0,122,24,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,67,0,0,0,114,185,0,0, - 0,41,2,122,56,82,101,116,117,114,110,32,78,111,110,101, + 119,114,97,112,112,101,114,78,169,1,114,16,0,0,0,41, + 3,114,91,0,0,0,114,92,0,0,0,114,91,0,0,0, + 96,32,64,114,5,0,0,0,218,17,95,114,101,113,117,105, + 114,101,115,95,98,117,105,108,116,105,110,252,0,0,0,243, + 8,0,0,0,2,128,12,2,10,5,4,1,114,17,0,0, + 0,114,95,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,114,85,0,0,0, + 41,4,122,47,68,101,99,111,114,97,116,111,114,32,116,111, + 32,118,101,114,105,102,121,32,116,104,101,32,110,97,109,101, + 100,32,109,111,100,117,108,101,32,105,115,32,102,114,111,122, + 101,110,46,99,2,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,19,0,0,0,115,38,0,0,0,116,0,160, + 1,124,1,161,1,115,14,116,2,100,1,160,3,124,1,161, + 1,124,1,100,2,141,2,130,1,137,2,124,0,124,1,131, + 2,83,0,169,3,78,122,27,123,33,114,125,32,105,115,32, + 110,111,116,32,97,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,114,19,0,0,0,41,4,114,65,0,0,0,218, + 9,105,115,95,102,114,111,122,101,110,114,88,0,0,0,114, + 51,0,0,0,114,89,0,0,0,32,32,128,114,5,0,0, + 0,218,24,95,114,101,113,117,105,114,101,115,95,102,114,111, + 122,101,110,95,119,114,97,112,112,101,114,9,1,0,0,114, + 93,0,0,0,114,17,0,0,0,122,50,95,114,101,113,117, + 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, + 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, + 114,111,122,101,110,95,119,114,97,112,112,101,114,78,114,94, + 0,0,0,41,3,114,91,0,0,0,114,99,0,0,0,114, + 91,0,0,0,96,32,64,114,5,0,0,0,218,16,95,114, + 101,113,117,105,114,101,115,95,102,114,111,122,101,110,7,1, + 0,0,114,96,0,0,0,114,17,0,0,0,114,100,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,67,0,0,0,115,74,0,0,0,100,1,125,2,116, + 0,160,1,124,2,116,2,161,2,1,0,116,3,124,1,124, + 0,131,2,125,3,124,1,116,4,106,5,118,0,114,33,116, + 4,106,5,124,1,25,0,125,4,116,6,124,3,124,4,131, + 2,1,0,116,4,106,5,124,1,25,0,83,0,116,7,124, + 3,131,1,83,0,41,3,122,130,76,111,97,100,32,116,104, + 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, + 108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,117, + 108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,105, + 116,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,46,32,32,85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101, + 32,108,111,97,100,95,109,111,100,117,108,101,40,41,32,109, + 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, + 116,101,97,100,78,41,8,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,16,115,112, + 101,99,95,102,114,111,109,95,108,111,97,100,101,114,114,18, + 0,0,0,218,7,109,111,100,117,108,101,115,218,5,95,101, + 120,101,99,218,5,95,108,111,97,100,41,5,114,34,0,0, + 0,114,90,0,0,0,218,3,109,115,103,218,4,115,112,101, + 99,218,6,109,111,100,117,108,101,32,32,32,32,32,114,5, + 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, + 101,95,115,104,105,109,19,1,0,0,115,16,0,0,0,4, + 6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,114, + 17,0,0,0,114,111,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,194, + 0,0,0,116,0,124,0,100,1,100,2,131,3,125,1,116, + 0,124,0,100,3,100,2,131,3,4,0,125,2,114,18,116, + 1,124,2,131,1,83,0,116,2,124,1,100,4,131,2,114, + 39,9,0,124,1,160,3,124,0,161,1,83,0,35,0,4, + 0,116,4,121,96,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,106,5,125,3,110,12,35,0,4,0,116, + 6,121,95,1,0,1,0,1,0,100,5,125,3,89,0,110, + 1,37,0,9,0,124,0,106,7,125,4,110,27,35,0,4, + 0,116,6,121,94,1,0,1,0,1,0,124,1,100,2,117, + 0,114,79,100,6,160,8,124,3,161,1,6,0,89,0,83, + 0,100,7,160,8,124,3,124,1,161,2,6,0,89,0,83, + 0,37,0,100,8,160,8,124,3,124,4,161,2,83,0,119, + 0,119,0,119,0,41,9,122,44,84,104,101,32,105,109,112, + 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,77, + 111,100,117,108,101,84,121,112,101,46,95,95,114,101,112,114, + 95,95,40,41,46,218,10,95,95,108,111,97,100,101,114,95, + 95,78,218,8,95,95,115,112,101,99,95,95,218,11,109,111, + 100,117,108,101,95,114,101,112,114,250,1,63,250,13,60,109, + 111,100,117,108,101,32,123,33,114,125,62,250,20,60,109,111, + 100,117,108,101,32,123,33,114,125,32,40,123,33,114,125,41, + 62,250,23,60,109,111,100,117,108,101,32,123,33,114,125,32, + 102,114,111,109,32,123,33,114,125,62,41,9,114,12,0,0, + 0,218,22,95,109,111,100,117,108,101,95,114,101,112,114,95, + 102,114,111,109,95,115,112,101,99,114,10,0,0,0,114,114, + 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,8, + 0,0,0,114,2,0,0,0,218,8,95,95,102,105,108,101, + 95,95,114,51,0,0,0,41,5,114,110,0,0,0,218,6, + 108,111,97,100,101,114,114,109,0,0,0,114,20,0,0,0, + 218,8,102,105,108,101,110,97,109,101,32,32,32,32,32,114, + 5,0,0,0,218,12,95,109,111,100,117,108,101,95,114,101, + 112,114,38,1,0,0,115,56,0,0,0,12,2,16,1,8, + 1,10,1,2,1,10,1,2,128,12,1,4,1,2,128,2, + 2,8,1,2,128,12,1,8,1,2,128,2,1,8,1,2, + 128,12,1,8,1,14,1,16,2,2,128,12,2,2,250,2, + 252,2,251,115,47,0,0,0,152,4,29,0,157,7,38,7, + 168,3,44,0,172,9,55,7,185,3,61,0,189,16,65,23, + 7,193,15,6,65,23,7,193,30,1,65,23,7,193,31,1, + 55,7,193,32,1,38,7,114,124,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, + 0,115,114,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,100,2,100,2,100,3,156,3,100,4,100,5, + 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, + 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, + 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, + 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, + 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, + 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, + 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, + 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, + 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, + 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, + 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, + 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, + 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, + 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, + 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, + 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, + 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, + 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, + 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, + 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, + 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, + 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, + 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, + 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, + 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, + 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, + 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, + 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, + 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, + 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, + 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, + 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, + 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, + 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, + 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, + 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, + 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, + 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, + 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, + 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, + 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, + 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, + 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, + 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, + 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, + 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, + 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, + 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, + 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, + 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, + 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, + 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, + 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, + 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, + 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, + 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, + 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, + 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, + 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, + 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, + 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, + 32,32,32,32,96,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,96, + 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, + 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, + 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, + 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, + 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, + 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, + 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, + 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, + 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, + 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, + 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, + 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, + 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, + 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, + 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, + 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, + 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, + 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, + 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, + 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, + 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, + 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, + 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, + 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, + 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, + 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, + 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, + 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, + 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, + 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, + 99,3,0,0,0,0,0,0,0,3,0,0,0,2,0,0, + 0,67,0,0,0,115,54,0,0,0,124,1,124,0,95,0, + 124,2,124,0,95,1,124,3,124,0,95,2,124,4,124,0, + 95,3,124,5,114,16,103,0,110,1,100,0,124,0,95,4, + 100,1,124,0,95,5,100,0,124,0,95,6,100,0,83,0, + 41,2,78,70,41,7,114,20,0,0,0,114,122,0,0,0, + 114,126,0,0,0,114,127,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,218,13,95,115,101,116,95,102,105,108, + 101,97,116,116,114,218,7,95,99,97,99,104,101,100,41,6, + 114,34,0,0,0,114,20,0,0,0,114,122,0,0,0,114, + 126,0,0,0,114,127,0,0,0,114,128,0,0,0,32,32, + 32,32,32,32,114,5,0,0,0,114,35,0,0,0,101,1, + 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, + 1,6,3,10,1,114,17,0,0,0,122,19,77,111,100,117, + 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, + 1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, + 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, + 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, + 1,124,0,106,3,100,0,117,1,114,26,124,1,160,4,100, + 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, + 5,100,0,117,1,114,40,124,1,160,4,100,4,160,0,124, + 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, + 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, + 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, + 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, + 105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2, + 44,32,41,9,114,51,0,0,0,114,20,0,0,0,114,122, + 0,0,0,114,126,0,0,0,218,6,97,112,112,101,110,100, + 114,129,0,0,0,218,9,95,95,99,108,97,115,115,95,95, + 114,8,0,0,0,218,4,106,111,105,110,41,2,114,34,0, + 0,0,114,63,0,0,0,32,32,114,5,0,0,0,114,54, + 0,0,0,113,1,0,0,115,20,0,0,0,10,1,10,1, + 4,255,10,2,18,1,10,1,6,1,8,1,4,255,22,2, + 114,17,0,0,0,122,19,77,111,100,117,108,101,83,112,101, + 99,46,95,95,114,101,112,114,95,95,99,2,0,0,0,0, + 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, + 104,0,0,0,124,0,106,0,125,2,9,0,124,0,106,1, + 124,1,106,1,107,2,111,38,124,0,106,2,124,1,106,2, + 107,2,111,38,124,0,106,3,124,1,106,3,107,2,111,38, + 124,2,124,1,106,0,107,2,111,38,124,0,106,4,124,1, + 106,4,107,2,111,38,124,0,106,5,124,1,106,5,107,2, + 83,0,35,0,4,0,116,6,121,51,1,0,1,0,1,0, + 116,7,6,0,89,0,83,0,37,0,119,0,114,0,0,0, + 0,41,8,114,129,0,0,0,114,20,0,0,0,114,122,0, + 0,0,114,126,0,0,0,218,6,99,97,99,104,101,100,218, + 12,104,97,115,95,108,111,99,97,116,105,111,110,114,2,0, + 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, + 101,100,41,3,114,34,0,0,0,90,5,111,116,104,101,114, + 90,4,115,109,115,108,32,32,32,114,5,0,0,0,218,6, + 95,95,101,113,95,95,123,1,0,0,115,36,0,0,0,6, + 1,2,1,12,1,10,1,2,255,10,2,2,254,8,3,2, + 253,10,4,2,252,10,5,2,251,2,128,12,6,8,1,2, + 128,2,255,115,12,0,0,0,132,34,39,0,167,9,50,7, + 179,1,50,7,122,17,77,111,100,117,108,101,83,112,101,99, + 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,67,0,0,0,115,58,0,0, + 0,124,0,106,0,100,0,117,0,114,26,124,0,106,1,100, + 0,117,1,114,26,124,0,106,2,114,26,116,3,100,0,117, + 0,114,19,116,4,130,1,116,3,160,5,124,0,106,1,161, + 1,124,0,95,0,124,0,106,0,83,0,114,0,0,0,0, + 41,6,114,131,0,0,0,114,126,0,0,0,114,130,0,0, + 0,218,19,95,98,111,111,116,115,116,114,97,112,95,101,120, + 116,101,114,110,97,108,218,19,78,111,116,73,109,112,108,101, + 109,101,110,116,101,100,69,114,114,111,114,90,11,95,103,101, + 116,95,99,97,99,104,101,100,114,53,0,0,0,32,114,5, + 0,0,0,114,135,0,0,0,135,1,0,0,115,12,0,0, + 0,10,2,16,1,8,1,4,1,14,1,6,1,114,17,0, + 0,0,122,17,77,111,100,117,108,101,83,112,101,99,46,99, + 97,99,104,101,100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1, + 114,131,0,0,0,41,2,114,34,0,0,0,114,135,0,0, + 0,32,32,114,5,0,0,0,114,135,0,0,0,144,1,0, + 0,115,2,0,0,0,10,2,114,17,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,115,32,0,0,0,124,0,106,0,100,1,117,0,114, + 13,124,0,106,1,160,2,100,2,161,1,100,3,25,0,83, + 0,124,0,106,1,83,0,41,4,122,32,84,104,101,32,110, + 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, + 101,39,115,32,112,97,114,101,110,116,46,78,218,1,46,114, + 26,0,0,0,41,3,114,129,0,0,0,114,20,0,0,0, + 218,10,114,112,97,114,116,105,116,105,111,110,114,53,0,0, + 0,32,114,5,0,0,0,218,6,112,97,114,101,110,116,148, + 1,0,0,115,6,0,0,0,10,3,16,1,6,2,114,17, + 0,0,0,122,17,77,111,100,117,108,101,83,112,101,99,46, + 112,97,114,101,110,116,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,67,0,0,0,115,6,0,0,0, + 124,0,106,0,83,0,114,0,0,0,0,41,1,114,130,0, + 0,0,114,53,0,0,0,32,114,5,0,0,0,114,136,0, + 0,0,156,1,0,0,115,2,0,0,0,6,2,114,17,0, + 0,0,122,23,77,111,100,117,108,101,83,112,101,99,46,104, + 97,115,95,108,111,99,97,116,105,111,110,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,67,0,0,0, + 115,14,0,0,0,116,0,124,1,131,1,124,0,95,1,100, + 0,83,0,114,0,0,0,0,41,2,218,4,98,111,111,108, + 114,130,0,0,0,41,2,114,34,0,0,0,218,5,118,97, + 108,117,101,32,32,114,5,0,0,0,114,136,0,0,0,160, + 1,0,0,115,2,0,0,0,14,2,114,17,0,0,0,41, + 12,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, + 114,9,0,0,0,114,35,0,0,0,114,54,0,0,0,114, + 138,0,0,0,218,8,112,114,111,112,101,114,116,121,114,135, + 0,0,0,218,6,115,101,116,116,101,114,114,143,0,0,0, + 114,136,0,0,0,114,23,0,0,0,114,5,0,0,0,114, + 125,0,0,0,64,1,0,0,115,34,0,0,0,8,0,4, + 1,4,36,2,1,12,255,8,12,8,10,2,12,10,1,4, + 8,10,1,2,3,10,1,2,7,10,1,4,3,14,1,114, + 17,0,0,0,114,125,0,0,0,169,2,114,126,0,0,0, + 114,128,0,0,0,99,2,0,0,0,0,0,0,0,2,0, + 0,0,8,0,0,0,67,0,0,0,115,152,0,0,0,116, + 0,124,1,100,1,131,2,114,37,116,1,100,2,117,0,114, + 11,116,2,130,1,116,1,106,3,125,4,124,3,100,2,117, + 0,114,24,124,4,124,0,124,1,100,3,141,2,83,0,124, + 3,114,28,103,0,110,1,100,2,125,5,124,4,124,0,124, + 1,124,5,100,4,141,3,83,0,124,3,100,2,117,0,114, + 67,116,0,124,1,100,5,131,2,114,65,9,0,124,1,160, + 4,124,0,161,1,125,3,110,14,35,0,4,0,116,5,121, + 75,1,0,1,0,1,0,100,2,125,3,89,0,110,3,37, + 0,100,6,125,3,116,6,124,0,124,1,124,2,124,3,100, + 7,141,4,83,0,119,0,41,8,122,53,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,118,97,114,105,111,117,115, + 32,108,111,97,100,101,114,32,109,101,116,104,111,100,115,46, + 90,12,103,101,116,95,102,105,108,101,110,97,109,101,78,41, + 1,114,122,0,0,0,41,2,114,122,0,0,0,114,129,0, + 0,0,114,128,0,0,0,70,114,148,0,0,0,41,7,114, + 10,0,0,0,114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0, + 0,114,125,0,0,0,41,6,114,20,0,0,0,114,122,0, + 0,0,114,126,0,0,0,114,128,0,0,0,114,149,0,0, + 0,90,6,115,101,97,114,99,104,32,32,32,32,32,32,114, + 5,0,0,0,114,104,0,0,0,165,1,0,0,115,42,0, + 0,0,10,2,8,1,4,1,6,1,8,2,12,1,12,1, + 6,1,2,1,6,255,8,3,10,1,2,1,12,1,2,128, + 12,1,8,1,2,128,4,3,16,2,2,250,115,15,0,0, + 0,175,5,53,0,181,9,65,0,7,193,11,1,65,0,7, + 114,104,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,50,1,0,0,9, + 0,124,0,106,0,125,3,110,10,35,0,4,0,116,1,121, + 152,1,0,1,0,1,0,89,0,110,7,37,0,124,3,100, + 0,117,1,114,21,124,3,83,0,124,0,106,2,125,4,124, + 1,100,0,117,0,114,43,9,0,124,0,106,3,125,1,110, + 10,35,0,4,0,116,1,121,151,1,0,1,0,1,0,89, + 0,110,1,37,0,9,0,124,0,106,4,125,5,110,12,35, + 0,4,0,116,1,121,150,1,0,1,0,1,0,100,0,125, + 5,89,0,110,1,37,0,124,2,100,0,117,0,114,87,124, + 5,100,0,117,0,114,85,9,0,124,1,106,5,125,2,110, + 14,35,0,4,0,116,1,121,149,1,0,1,0,1,0,100, + 0,125,2,89,0,110,3,37,0,124,5,125,2,9,0,124, + 0,106,6,125,6,110,12,35,0,4,0,116,1,121,148,1, + 0,1,0,1,0,100,0,125,6,89,0,110,1,37,0,9, + 0,116,7,124,0,106,8,131,1,125,7,110,12,35,0,4, + 0,116,1,121,147,1,0,1,0,1,0,100,0,125,7,89, + 0,110,1,37,0,116,9,124,4,124,1,124,2,100,1,141, + 3,125,3,124,5,100,0,117,0,114,136,100,2,110,1,100, + 3,124,3,95,10,124,6,124,3,95,11,124,7,124,3,95, + 12,124,3,83,0,119,0,119,0,119,0,119,0,119,0,119, + 0,41,4,78,169,1,114,126,0,0,0,70,84,41,13,114, + 113,0,0,0,114,2,0,0,0,114,8,0,0,0,114,112, + 0,0,0,114,121,0,0,0,218,7,95,79,82,73,71,73, + 78,218,10,95,95,99,97,99,104,101,100,95,95,218,4,108, + 105,115,116,218,8,95,95,112,97,116,104,95,95,114,125,0, + 0,0,114,130,0,0,0,114,135,0,0,0,114,129,0,0, + 0,41,8,114,110,0,0,0,114,122,0,0,0,114,126,0, + 0,0,114,109,0,0,0,114,20,0,0,0,90,8,108,111, + 99,97,116,105,111,110,114,135,0,0,0,114,129,0,0,0, + 32,32,32,32,32,32,32,32,114,5,0,0,0,218,17,95, + 115,112,101,99,95,102,114,111,109,95,109,111,100,117,108,101, + 191,1,0,0,115,108,0,0,0,2,2,8,1,2,128,12, + 1,4,1,2,128,8,2,4,1,6,2,8,1,2,1,8, + 1,2,128,12,1,4,2,2,128,2,1,8,1,2,128,12, + 1,8,1,2,128,8,1,8,1,2,1,8,1,2,128,12, + 1,8,1,2,128,4,2,2,1,8,1,2,128,12,1,8, + 1,2,128,2,1,12,1,2,128,12,1,8,1,2,128,14, + 2,18,1,6,1,6,1,4,1,2,249,2,252,2,250,2, + 250,2,251,2,246,115,93,0,0,0,129,3,5,0,133,7, + 14,7,157,3,33,0,161,7,42,7,172,3,48,0,176,9, + 59,7,193,5,3,65,9,0,193,9,9,65,20,7,193,24, + 3,65,28,0,193,28,9,65,39,7,193,41,5,65,47,0, + 193,47,9,65,58,7,194,19,1,65,58,7,194,20,1,65, + 39,7,194,21,1,65,20,7,194,22,1,59,7,194,23,1, + 42,7,194,24,1,14,7,114,155,0,0,0,70,169,1,218, + 8,111,118,101,114,114,105,100,101,99,2,0,0,0,0,0, + 0,0,1,0,0,0,8,0,0,0,67,0,0,0,115,204, + 1,0,0,124,2,115,10,116,0,124,1,100,1,100,0,131, + 3,100,0,117,0,114,26,9,0,124,0,106,1,124,1,95, + 2,110,10,35,0,4,0,116,3,121,229,1,0,1,0,1, + 0,89,0,110,1,37,0,124,2,115,36,116,0,124,1,100, + 2,100,0,131,3,100,0,117,0,114,87,124,0,106,4,125, + 3,124,3,100,0,117,0,114,72,124,0,106,5,100,0,117, + 1,114,72,116,6,100,0,117,0,114,54,116,7,130,1,116, + 6,106,8,125,4,124,4,160,9,124,4,161,1,125,3,124, + 0,106,5,124,3,95,10,124,3,124,0,95,4,100,0,124, + 1,95,11,9,0,124,3,124,1,95,12,110,10,35,0,4, + 0,116,3,121,228,1,0,1,0,1,0,89,0,110,1,37, + 0,124,2,115,97,116,0,124,1,100,3,100,0,131,3,100, + 0,117,0,114,113,9,0,124,0,106,13,124,1,95,14,110, + 10,35,0,4,0,116,3,121,227,1,0,1,0,1,0,89, + 0,110,1,37,0,9,0,124,0,124,1,95,15,110,10,35, + 0,4,0,116,3,121,226,1,0,1,0,1,0,89,0,110, + 1,37,0,124,2,115,138,116,0,124,1,100,4,100,0,131, + 3,100,0,117,0,114,159,124,0,106,5,100,0,117,1,114, + 159,9,0,124,0,106,5,124,1,95,16,110,10,35,0,4, + 0,116,3,121,225,1,0,1,0,1,0,89,0,110,1,37, + 0,124,0,106,17,114,221,124,2,115,172,116,0,124,1,100, + 5,100,0,131,3,100,0,117,0,114,188,9,0,124,0,106, + 18,124,1,95,11,110,10,35,0,4,0,116,3,121,224,1, + 0,1,0,1,0,89,0,110,1,37,0,124,2,115,198,116, + 0,124,1,100,6,100,0,131,3,100,0,117,0,114,221,124, + 0,106,19,100,0,117,1,114,221,9,0,124,0,106,19,124, + 1,95,20,124,1,83,0,35,0,4,0,116,3,121,223,1, + 0,1,0,1,0,89,0,124,1,83,0,37,0,124,1,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,41, + 7,78,114,8,0,0,0,114,112,0,0,0,218,11,95,95, + 112,97,99,107,97,103,101,95,95,114,154,0,0,0,114,121, + 0,0,0,114,152,0,0,0,41,21,114,12,0,0,0,114, + 20,0,0,0,114,8,0,0,0,114,2,0,0,0,114,122, + 0,0,0,114,129,0,0,0,114,139,0,0,0,114,140,0, + 0,0,218,16,95,78,97,109,101,115,112,97,99,101,76,111, + 97,100,101,114,218,7,95,95,110,101,119,95,95,90,5,95, + 112,97,116,104,114,121,0,0,0,114,112,0,0,0,114,143, + 0,0,0,114,158,0,0,0,114,113,0,0,0,114,154,0, + 0,0,114,136,0,0,0,114,126,0,0,0,114,135,0,0, + 0,114,152,0,0,0,41,5,114,109,0,0,0,114,110,0, + 0,0,114,157,0,0,0,114,122,0,0,0,114,159,0,0, + 0,32,32,32,32,32,114,5,0,0,0,218,18,95,105,110, + 105,116,95,109,111,100,117,108,101,95,97,116,116,114,115,236, + 1,0,0,115,142,0,0,0,20,4,2,1,10,1,2,128, + 12,1,4,1,2,128,20,2,6,1,8,1,10,2,8,1, + 4,1,6,1,10,2,8,1,6,1,6,11,2,1,8,1, + 2,128,12,1,4,1,2,128,20,2,2,1,10,1,2,128, + 12,1,4,1,2,128,2,2,8,1,2,128,12,1,4,1, + 2,128,20,2,10,1,2,1,10,1,2,128,12,1,4,1, + 2,128,6,2,20,1,2,1,10,1,2,128,12,1,4,1, + 2,128,20,2,10,1,2,1,8,1,4,3,2,128,12,254, + 2,1,4,1,2,128,4,0,2,254,2,249,2,249,2,249, + 2,251,2,250,2,228,115,121,0,0,0,139,4,16,0,144, + 7,25,7,193,9,3,65,13,0,193,13,7,65,22,7,193, + 34,4,65,39,0,193,39,7,65,48,7,193,50,3,65,54, + 0,193,54,7,65,63,7,194,16,4,66,21,0,194,21,7, + 66,30,7,194,45,4,66,50,0,194,50,7,66,59,7,195, + 12,4,67,18,0,195,18,7,67,28,7,195,31,1,67,28, + 7,195,32,1,66,59,7,195,33,1,66,30,7,195,34,1, + 65,63,7,195,35,1,65,48,7,195,36,1,65,22,7,195, + 37,1,25,7,114,161,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,82, + 0,0,0,100,1,125,1,116,0,124,0,106,1,100,2,131, + 2,114,15,124,0,106,1,160,2,124,0,161,1,125,1,110, + 10,116,0,124,0,106,1,100,3,131,2,114,25,116,3,100, + 4,131,1,130,1,124,1,100,1,117,0,114,34,116,4,124, + 0,106,5,131,1,125,1,116,6,124,0,124,1,131,2,1, + 0,124,1,83,0,41,5,122,43,67,114,101,97,116,101,32, + 97,32,109,111,100,117,108,101,32,98,97,115,101,100,32,111, + 110,32,116,104,101,32,112,114,111,118,105,100,101,100,32,115, + 112,101,99,46,78,218,13,99,114,101,97,116,101,95,109,111, + 100,117,108,101,218,11,101,120,101,99,95,109,111,100,117,108, + 101,122,66,108,111,97,100,101,114,115,32,116,104,97,116,32, + 100,101,102,105,110,101,32,101,120,101,99,95,109,111,100,117, + 108,101,40,41,32,109,117,115,116,32,97,108,115,111,32,100, + 101,102,105,110,101,32,99,114,101,97,116,101,95,109,111,100, + 117,108,101,40,41,41,7,114,10,0,0,0,114,122,0,0, + 0,114,162,0,0,0,114,88,0,0,0,114,21,0,0,0, + 114,20,0,0,0,114,161,0,0,0,169,2,114,109,0,0, + 0,114,110,0,0,0,32,32,114,5,0,0,0,218,16,109, + 111,100,117,108,101,95,102,114,111,109,95,115,112,101,99,52, + 2,0,0,115,18,0,0,0,4,3,12,1,14,3,12,1, + 8,1,8,2,10,1,10,1,4,1,114,17,0,0,0,114, + 165,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,100,0,0,0,124,0, + 106,0,100,1,117,0,114,7,100,2,110,2,124,0,106,0, + 125,1,124,0,106,1,100,1,117,0,114,32,124,0,106,2, + 100,1,117,0,114,25,100,3,160,3,124,1,161,1,83,0, + 100,4,160,3,124,1,124,0,106,2,161,2,83,0,124,0, + 106,4,114,42,100,5,160,3,124,1,124,0,106,1,161,2, + 83,0,100,6,160,3,124,0,106,0,124,0,106,1,161,2, + 83,0,41,7,122,38,82,101,116,117,114,110,32,116,104,101, + 32,114,101,112,114,32,116,111,32,117,115,101,32,102,111,114, + 32,116,104,101,32,109,111,100,117,108,101,46,78,114,115,0, + 0,0,114,116,0,0,0,114,117,0,0,0,114,118,0,0, + 0,250,18,60,109,111,100,117,108,101,32,123,33,114,125,32, + 40,123,125,41,62,41,5,114,20,0,0,0,114,126,0,0, + 0,114,122,0,0,0,114,51,0,0,0,114,136,0,0,0, + 41,2,114,109,0,0,0,114,20,0,0,0,32,32,114,5, + 0,0,0,114,119,0,0,0,69,2,0,0,115,16,0,0, + 0,20,3,10,1,10,1,10,1,14,2,6,2,14,1,16, + 2,114,17,0,0,0,114,119,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,10,0,0,0,67,0,0,0, + 115,32,1,0,0,124,0,106,0,125,2,116,1,124,2,131, + 1,53,0,1,0,116,2,106,3,160,4,124,2,161,1,124, + 1,117,1,114,27,100,1,160,5,124,2,161,1,125,3,116, + 6,124,3,124,2,100,2,141,2,130,1,9,0,124,0,106, + 7,100,3,117,0,114,53,124,0,106,8,100,3,117,0,114, + 45,116,6,100,4,124,0,106,0,100,2,141,2,130,1,116, + 9,124,0,124,1,100,5,100,6,141,3,1,0,110,40,116, + 9,124,0,124,1,100,5,100,6,141,3,1,0,116,10,124, + 0,106,7,100,7,131,2,115,87,116,11,124,0,106,7,131, + 1,155,0,100,8,157,2,125,3,116,12,160,13,124,3,116, + 14,161,2,1,0,124,0,106,7,160,15,124,2,161,1,1, + 0,110,6,124,0,106,7,160,16,124,1,161,1,1,0,116, + 2,106,3,160,17,124,0,106,0,161,1,125,1,124,1,116, + 2,106,3,124,0,106,0,60,0,110,16,35,0,116,2,106, + 3,160,17,124,0,106,0,161,1,125,1,124,1,116,2,106, + 3,124,0,106,0,60,0,119,0,37,0,9,0,100,3,4, + 0,4,0,131,3,1,0,124,1,83,0,35,0,49,0,115, + 136,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, + 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, + 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, + 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, + 30,109,111,100,117,108,101,32,123,33,114,125,32,110,111,116, + 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,114, + 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, + 111,97,100,101,114,84,114,156,0,0,0,114,163,0,0,0, + 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, + 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, + 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, + 114,58,0,0,0,114,18,0,0,0,114,105,0,0,0,114, + 39,0,0,0,114,51,0,0,0,114,88,0,0,0,114,122, + 0,0,0,114,129,0,0,0,114,161,0,0,0,114,10,0, + 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, + 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, + 218,11,108,111,97,100,95,109,111,100,117,108,101,114,163,0, + 0,0,218,3,112,111,112,41,4,114,109,0,0,0,114,110, + 0,0,0,114,20,0,0,0,114,108,0,0,0,32,32,32, + 32,114,5,0,0,0,114,106,0,0,0,86,2,0,0,115, + 50,0,0,0,6,2,10,1,16,1,10,1,12,1,2,1, + 10,1,10,1,14,1,16,2,14,2,12,1,16,1,12,2, + 14,1,12,2,14,4,14,1,2,128,14,255,18,1,10,233, + 4,24,22,128,4,0,115,41,0,0,0,135,20,66,3,3, + 156,65,1,65,43,2,193,29,14,66,3,3,193,43,15,65, + 58,9,193,58,1,66,3,3,194,3,4,66,7,11,194,8, + 3,66,7,11,114,106,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,22, + 1,0,0,9,0,124,0,106,0,160,1,124,0,106,2,161, + 1,1,0,110,25,35,0,1,0,1,0,1,0,124,0,106, + 2,116,3,106,4,118,0,114,32,116,3,106,4,160,5,124, + 0,106,2,161,1,125,1,124,1,116,3,106,4,124,0,106, + 2,60,0,130,0,37,0,116,3,106,4,160,5,124,0,106, + 2,161,1,125,1,124,1,116,3,106,4,124,0,106,2,60, + 0,116,6,124,1,100,1,100,0,131,3,100,0,117,0,114, + 71,9,0,124,0,106,0,124,1,95,7,110,10,35,0,4, + 0,116,8,121,138,1,0,1,0,1,0,89,0,110,1,37, + 0,116,6,124,1,100,2,100,0,131,3,100,0,117,0,114, + 109,9,0,124,1,106,9,124,1,95,10,116,11,124,1,100, + 3,131,2,115,98,124,0,106,2,160,12,100,4,161,1,100, + 5,25,0,124,1,95,10,110,10,35,0,4,0,116,8,121, + 137,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, + 1,100,6,100,0,131,3,100,0,117,0,114,134,9,0,124, + 0,124,1,95,13,124,1,83,0,35,0,4,0,116,8,121, + 136,1,0,1,0,1,0,89,0,124,1,83,0,37,0,124, + 1,83,0,119,0,119,0,119,0,41,7,78,114,112,0,0, + 0,114,158,0,0,0,114,154,0,0,0,114,141,0,0,0, + 114,26,0,0,0,114,113,0,0,0,41,14,114,122,0,0, + 0,114,170,0,0,0,114,20,0,0,0,114,18,0,0,0, + 114,105,0,0,0,114,171,0,0,0,114,12,0,0,0,114, + 112,0,0,0,114,2,0,0,0,114,8,0,0,0,114,158, + 0,0,0,114,10,0,0,0,114,142,0,0,0,114,113,0, + 0,0,114,164,0,0,0,32,32,114,5,0,0,0,218,25, + 95,108,111,97,100,95,98,97,99,107,119,97,114,100,95,99, + 111,109,112,97,116,105,98,108,101,116,2,0,0,115,80,0, + 0,0,2,3,16,1,2,128,6,1,12,1,14,1,12,1, + 2,1,2,128,14,3,12,1,16,1,2,1,10,1,2,128, + 12,1,4,1,2,128,16,1,2,1,8,4,10,1,18,1, + 4,128,12,1,4,1,2,128,16,1,2,1,6,1,4,3, + 2,128,12,254,2,1,4,1,2,128,4,0,2,254,2,251, + 2,246,115,59,0,0,0,129,7,9,0,137,24,33,7,184, + 4,61,0,189,7,65,6,7,193,16,18,65,35,0,193,35, + 7,65,44,7,193,54,3,65,59,0,193,59,7,66,5,7, + 194,8,1,66,5,7,194,9,1,65,44,7,194,10,1,65, + 6,7,114,172,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,11,0,0,0,67,0,0,0,115,248,0,0, + 0,124,0,106,0,100,0,117,1,114,29,116,1,124,0,106, + 0,100,1,131,2,115,29,116,2,124,0,106,0,131,1,155, + 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, + 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, + 1,125,2,100,3,124,0,95,8,9,0,124,2,116,9,106, + 10,124,0,106,11,60,0,9,0,124,0,106,0,100,0,117, + 0,114,62,124,0,106,12,100,0,117,0,114,61,116,13,100, + 4,124,0,106,11,100,5,141,2,130,1,110,6,124,0,106, + 0,160,14,124,2,161,1,1,0,110,22,35,0,1,0,1, + 0,1,0,9,0,116,9,106,10,124,0,106,11,61,0,130, + 0,35,0,4,0,116,15,121,123,1,0,1,0,1,0,89, + 0,130,0,37,0,37,0,116,9,106,10,160,16,124,0,106, + 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, + 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, + 0,100,7,124,0,95,8,124,2,83,0,35,0,100,7,124, + 0,95,8,119,0,37,0,119,0,41,8,78,114,163,0,0, + 0,114,168,0,0,0,84,114,167,0,0,0,114,19,0,0, + 0,122,18,105,109,112,111,114,116,32,123,33,114,125,32,35, + 32,123,33,114,125,70,41,18,114,122,0,0,0,114,10,0, + 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, + 0,114,169,0,0,0,114,172,0,0,0,114,165,0,0,0, + 90,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114, + 18,0,0,0,114,105,0,0,0,114,20,0,0,0,114,129, + 0,0,0,114,88,0,0,0,114,163,0,0,0,114,71,0, + 0,0,114,171,0,0,0,114,84,0,0,0,41,3,114,109, + 0,0,0,114,108,0,0,0,114,110,0,0,0,32,32,32, + 114,5,0,0,0,218,14,95,108,111,97,100,95,117,110,108, + 111,99,107,101,100,152,2,0,0,115,66,0,0,0,10,2, + 12,2,16,1,12,2,8,1,8,2,6,5,2,1,12,1, + 2,1,10,1,10,1,14,1,2,255,12,4,4,128,6,1, + 2,1,10,1,2,3,2,128,12,254,2,1,2,1,4,128, + 14,5,12,1,16,1,6,2,4,2,2,128,10,254,2,245, + 115,64,0,0,0,165,6,65,53,0,172,24,65,5,0,193, + 4,1,65,53,0,193,5,4,65,26,7,193,10,5,65,16, + 6,193,15,1,65,26,7,193,16,7,65,25,13,193,23,3, + 65,26,7,193,26,22,65,53,0,193,53,5,65,58,7,193, + 59,1,65,25,13,114,173,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, + 58,0,0,0,116,0,124,0,106,1,131,1,53,0,1,0, + 116,2,124,0,131,1,2,0,100,1,4,0,4,0,131,3, + 1,0,83,0,35,0,49,0,115,21,119,4,37,0,1,0, + 1,0,1,0,89,0,1,0,1,0,100,1,83,0,41,2, + 122,191,82,101,116,117,114,110,32,97,32,110,101,119,32,109, + 111,100,117,108,101,32,111,98,106,101,99,116,44,32,108,111, + 97,100,101,100,32,98,121,32,116,104,101,32,115,112,101,99, + 39,115,32,108,111,97,100,101,114,46,10,10,32,32,32,32, + 84,104,101,32,109,111,100,117,108,101,32,105,115,32,110,111, + 116,32,97,100,100,101,100,32,116,111,32,105,116,115,32,112, + 97,114,101,110,116,46,10,10,32,32,32,32,73,102,32,97, + 32,109,111,100,117,108,101,32,105,115,32,97,108,114,101,97, + 100,121,32,105,110,32,115,121,115,46,109,111,100,117,108,101, + 115,44,32,116,104,97,116,32,101,120,105,115,116,105,110,103, + 32,109,111,100,117,108,101,32,103,101,116,115,10,32,32,32, + 32,99,108,111,98,98,101,114,101,100,46,10,10,32,32,32, + 32,78,41,3,114,58,0,0,0,114,20,0,0,0,114,173, + 0,0,0,169,1,114,109,0,0,0,32,114,5,0,0,0, + 114,107,0,0,0,197,2,0,0,115,10,0,0,0,12,9, + 6,1,14,255,22,128,4,0,115,12,0,0,0,133,4,16, + 3,144,4,20,11,149,3,20,11,114,107,0,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, + 0,0,0,115,140,0,0,0,101,0,90,1,100,0,90,2, + 100,1,90,3,100,2,90,4,101,5,100,3,100,4,132,0, + 131,1,90,6,101,7,100,20,100,6,100,7,132,1,131,1, + 90,8,101,7,100,21,100,8,100,9,132,1,131,1,90,9, + 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, + 100,13,132,0,131,1,90,11,101,7,101,12,100,14,100,15, + 132,0,131,1,131,1,90,13,101,7,101,12,100,16,100,17, + 132,0,131,1,131,1,90,14,101,7,101,12,100,18,100,19, + 132,0,131,1,131,1,90,15,101,7,101,16,131,1,90,17, + 100,5,83,0,41,22,218,15,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,122,144,77,101,116,97,32,112,97, + 116,104,32,105,109,112,111,114,116,32,102,111,114,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,115,46,10, + 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115, + 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115, + 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104, + 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101, + 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115, + 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97, + 115,115,46,10,10,32,32,32,32,122,8,98,117,105,108,116, + 45,105,110,99,1,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,67,0,0,0,115,34,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,100,2,124,0,106,3,155, + 2,100,3,116,4,106,5,155,0,100,4,157,5,83,0,41, + 6,250,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,81,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, + 101,112,114,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,122,8,60,109,111,100,117, + 108,101,32,122,2,32,40,122,2,41,62,78,41,6,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,8,0, + 0,0,114,175,0,0,0,114,151,0,0,0,169,1,114,110, + 0,0,0,32,114,5,0,0,0,114,114,0,0,0,223,2, + 0,0,115,8,0,0,0,6,7,2,1,4,255,22,2,114, + 17,0,0,0,122,27,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,109,111,100,117,108,101,95,114,101,112, + 114,78,99,4,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,67,0,0,0,115,42,0,0,0,124,2,100,0, + 117,1,114,6,100,0,83,0,116,0,160,1,124,1,161,1, + 114,19,116,2,124,1,124,0,124,0,106,3,100,1,141,3, + 83,0,100,0,83,0,169,2,78,114,150,0,0,0,41,4, + 114,65,0,0,0,90,10,105,115,95,98,117,105,108,116,105, + 110,114,104,0,0,0,114,151,0,0,0,169,4,218,3,99, + 108,115,114,90,0,0,0,218,4,112,97,116,104,218,6,116, + 97,114,103,101,116,32,32,32,32,114,5,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,234,2,0,0,115,10,0, + 0,0,8,2,4,1,10,1,16,1,4,2,114,17,0,0, + 0,122,25,66,117,105,108,116,105,110,73,109,112,111,114,116, + 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,67,0,0, + 0,115,42,0,0,0,116,0,160,1,100,1,116,2,161,2, + 1,0,124,0,160,3,124,1,124,2,161,2,125,3,124,3, + 100,2,117,1,114,19,124,3,106,4,83,0,100,2,83,0, + 41,3,122,175,70,105,110,100,32,116,104,101,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,32,32,32,32,73,102,32,39,112,97,116,104,39, + 32,105,115,32,101,118,101,114,32,115,112,101,99,105,102,105, + 101,100,32,116,104,101,110,32,116,104,101,32,115,101,97,114, + 99,104,32,105,115,32,99,111,110,115,105,100,101,114,101,100, + 32,97,32,102,97,105,108,117,114,101,46,10,10,32,32,32, + 32,32,32,32,32,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,122,106,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, + 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, + 41,5,114,101,0,0,0,114,102,0,0,0,114,103,0,0, + 0,114,183,0,0,0,114,122,0,0,0,41,4,114,180,0, + 0,0,114,90,0,0,0,114,181,0,0,0,114,109,0,0, + 0,32,32,32,32,114,5,0,0,0,218,11,102,105,110,100, + 95,109,111,100,117,108,101,243,2,0,0,115,10,0,0,0, + 6,9,2,2,4,254,12,3,18,1,114,17,0,0,0,122, + 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,46,0,0,0,124,0,106,0,116,1,106,2,118,1, + 114,17,116,3,100,1,160,4,124,0,106,0,161,1,124,0, + 106,0,100,2,141,2,130,1,116,5,116,6,106,7,124,0, + 131,2,83,0,41,4,122,24,67,114,101,97,116,101,32,97, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 114,86,0,0,0,114,19,0,0,0,78,41,8,114,20,0, + 0,0,114,18,0,0,0,114,87,0,0,0,114,88,0,0, + 0,114,51,0,0,0,114,75,0,0,0,114,65,0,0,0, + 90,14,99,114,101,97,116,101,95,98,117,105,108,116,105,110, + 114,174,0,0,0,32,114,5,0,0,0,114,162,0,0,0, + 2,3,0,0,115,10,0,0,0,12,3,12,1,4,1,6, + 255,12,2,114,17,0,0,0,122,29,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,46,99,114,101,97,116,101, + 95,109,111,100,117,108,101,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, + 0,116,0,116,1,106,2,124,0,131,2,1,0,100,1,83, + 0,41,2,122,22,69,120,101,99,32,97,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,78,41,3,114,75, + 0,0,0,114,65,0,0,0,90,12,101,120,101,99,95,98, + 117,105,108,116,105,110,114,177,0,0,0,32,114,5,0,0, + 0,114,163,0,0,0,10,3,0,0,115,2,0,0,0,16, + 3,114,17,0,0,0,122,27,66,117,105,108,116,105,110,73, + 109,112,111,114,116,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, + 1,0,0,0,67,0,0,0,243,4,0,0,0,100,1,83, + 0,41,2,122,57,82,101,116,117,114,110,32,78,111,110,101, 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, - 0,0,0,114,186,0,0,0,32,32,114,5,0,0,0,218, - 10,103,101,116,95,115,111,117,114,99,101,21,3,0,0,114, - 188,0,0,0,114,17,0,0,0,122,26,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, - 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, - 3,122,52,82,101,116,117,114,110,32,70,97,108,115,101,32, - 97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, - 99,107,97,103,101,115,46,70,78,114,23,0,0,0,114,186, - 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,27, + 32,99,111,100,101,32,111,98,106,101,99,116,115,46,78,114, + 23,0,0,0,169,2,114,180,0,0,0,114,90,0,0,0, + 32,32,114,5,0,0,0,218,8,103,101,116,95,99,111,100, + 101,15,3,0,0,243,2,0,0,0,4,4,114,17,0,0, + 0,122,24,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,67,0,0,0, + 114,185,0,0,0,41,2,122,56,82,101,116,117,114,110,32, + 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, + 104,97,118,101,32,115,111,117,114,99,101,32,99,111,100,101, + 46,78,114,23,0,0,0,114,186,0,0,0,32,32,114,5, + 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,21, 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, - 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, - 0,0,41,18,114,8,0,0,0,114,7,0,0,0,114,1, - 0,0,0,114,9,0,0,0,114,151,0,0,0,218,12,115, - 116,97,116,105,99,109,101,116,104,111,100,114,114,0,0,0, - 218,11,99,108,97,115,115,109,101,116,104,111,100,114,183,0, - 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, - 0,114,95,0,0,0,114,187,0,0,0,114,189,0,0,0, - 114,128,0,0,0,114,111,0,0,0,114,170,0,0,0,114, - 23,0,0,0,114,5,0,0,0,114,175,0,0,0,212,2, - 0,0,115,46,0,0,0,8,0,4,2,4,7,2,2,10, - 1,2,10,12,1,2,8,12,1,2,14,10,1,2,7,10, - 1,2,4,2,1,12,1,2,4,2,1,12,1,2,4,2, - 1,12,1,12,4,114,17,0,0,0,114,175,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 64,0,0,0,115,144,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,90,4,101,5,100,3,100,4,132, - 0,131,1,90,6,101,7,100,22,100,6,100,7,132,1,131, - 1,90,8,101,7,100,23,100,8,100,9,132,1,131,1,90, - 9,101,5,100,10,100,11,132,0,131,1,90,10,101,5,100, - 12,100,13,132,0,131,1,90,11,101,7,100,14,100,15,132, - 0,131,1,90,12,101,7,101,13,100,16,100,17,132,0,131, - 1,131,1,90,14,101,7,101,13,100,18,100,19,132,0,131, - 1,131,1,90,15,101,7,101,13,100,20,100,21,132,0,131, - 1,131,1,90,16,100,5,83,0,41,24,218,14,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116, - 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, - 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, - 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, - 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, - 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, - 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, - 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, - 108,97,115,115,46,10,10,32,32,32,32,90,6,102,114,111, - 122,101,110,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,28,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, - 4,116,5,106,6,161,2,83,0,41,4,114,176,0,0,0, - 122,80,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,109,111,100,117,108,101,95,114,101,112,114,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,114,166,0,0,0,78,41,7,114,101,0,0,0,114, - 102,0,0,0,114,103,0,0,0,114,51,0,0,0,114,8, - 0,0,0,114,193,0,0,0,114,151,0,0,0,41,1,218, - 1,109,32,114,5,0,0,0,114,114,0,0,0,47,3,0, - 0,115,8,0,0,0,6,7,2,1,4,255,16,2,114,17, - 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,78, - 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,30,0,0,0,116,0,160,1,124,1, - 161,1,114,13,116,2,124,1,124,0,124,0,106,3,100,1, - 141,3,83,0,100,0,83,0,114,178,0,0,0,41,4,114, - 65,0,0,0,114,98,0,0,0,114,104,0,0,0,114,151, - 0,0,0,114,179,0,0,0,32,32,32,32,114,5,0,0, - 0,114,183,0,0,0,58,3,0,0,115,6,0,0,0,10, - 2,16,1,4,2,114,17,0,0,0,122,24,70,114,111,122, - 101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0, - 160,1,100,1,116,2,161,2,1,0,116,3,160,4,124,1, - 161,1,114,13,124,0,83,0,100,2,83,0,41,3,122,93, - 70,105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,41,5,114,101,0,0,0, - 114,102,0,0,0,114,103,0,0,0,114,65,0,0,0,114, - 98,0,0,0,41,3,114,180,0,0,0,114,90,0,0,0, - 114,181,0,0,0,32,32,32,114,5,0,0,0,114,184,0, - 0,0,65,3,0,0,115,8,0,0,0,6,7,2,2,4, - 254,18,3,114,17,0,0,0,122,26,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, + 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,67,0,0,0,114,185, + 0,0,0,41,3,122,52,82,101,116,117,114,110,32,70,97, + 108,115,101,32,97,115,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,115,32,97,114,101,32,110,101,118,101, + 114,32,112,97,99,107,97,103,101,115,46,70,78,114,23,0, + 0,0,114,186,0,0,0,32,32,114,5,0,0,0,114,128, + 0,0,0,27,3,0,0,114,188,0,0,0,114,17,0,0, + 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,105,115,95,112,97,99,107,97,103,101,169,2,78, + 78,114,0,0,0,0,41,18,114,8,0,0,0,114,7,0, + 0,0,114,1,0,0,0,114,9,0,0,0,114,151,0,0, + 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, + 114,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, + 100,114,183,0,0,0,114,184,0,0,0,114,162,0,0,0, + 114,163,0,0,0,114,95,0,0,0,114,187,0,0,0,114, + 189,0,0,0,114,128,0,0,0,114,111,0,0,0,114,170, + 0,0,0,114,23,0,0,0,114,5,0,0,0,114,175,0, + 0,0,212,2,0,0,115,46,0,0,0,8,0,4,2,4, + 7,2,2,10,1,2,10,12,1,2,8,12,1,2,14,10, + 1,2,7,10,1,2,4,2,1,12,1,2,4,2,1,12, + 1,2,4,2,1,12,1,12,4,114,17,0,0,0,114,175, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,64,0,0,0,115,144,0,0,0,101,0,90, + 1,100,0,90,2,100,1,90,3,100,2,90,4,101,5,100, + 3,100,4,132,0,131,1,90,6,101,7,100,22,100,6,100, + 7,132,1,131,1,90,8,101,7,100,23,100,8,100,9,132, + 1,131,1,90,9,101,5,100,10,100,11,132,0,131,1,90, + 10,101,5,100,12,100,13,132,0,131,1,90,11,101,7,100, + 14,100,15,132,0,131,1,90,12,101,7,101,13,100,16,100, + 17,132,0,131,1,131,1,90,14,101,7,101,13,100,18,100, + 19,132,0,131,1,131,1,90,15,101,7,101,13,100,20,100, + 21,132,0,131,1,131,1,90,16,100,5,83,0,41,24,218, + 14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,122, + 142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, + 116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,109, + 101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,101, + 114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,105, + 99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,111, + 105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32, + 32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116, + 104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,90, + 6,102,114,111,122,101,110,99,1,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,160, + 3,124,0,106,4,116,5,106,6,161,2,83,0,41,4,114, + 176,0,0,0,122,80,70,114,111,122,101,110,73,109,112,111, + 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,114,166,0,0,0,78,41,7,114,101, + 0,0,0,114,102,0,0,0,114,103,0,0,0,114,51,0, + 0,0,114,8,0,0,0,114,193,0,0,0,114,151,0,0, + 0,41,1,218,1,109,32,114,5,0,0,0,114,114,0,0, + 0,47,3,0,0,115,8,0,0,0,6,7,2,1,4,255, + 16,2,114,17,0,0,0,122,26,70,114,111,122,101,110,73, + 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, + 101,112,114,78,99,4,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,67,0,0,0,115,30,0,0,0,116,0, + 160,1,124,1,161,1,114,13,116,2,124,1,124,0,124,0, + 106,3,100,1,141,3,83,0,100,0,83,0,114,178,0,0, + 0,41,4,114,65,0,0,0,114,98,0,0,0,114,104,0, + 0,0,114,151,0,0,0,114,179,0,0,0,32,32,32,32, + 114,5,0,0,0,114,183,0,0,0,58,3,0,0,115,6, + 0,0,0,10,2,16,1,4,2,114,17,0,0,0,122,24, + 70,114,111,122,101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0, + 0,0,116,0,160,1,100,1,116,2,161,2,1,0,116,3, + 160,4,124,1,161,1,114,13,124,0,83,0,100,2,83,0, + 41,3,122,93,70,105,110,100,32,97,32,102,114,111,122,101, + 110,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,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,122,105,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,41,5,114, + 101,0,0,0,114,102,0,0,0,114,103,0,0,0,114,65, + 0,0,0,114,98,0,0,0,41,3,114,180,0,0,0,114, + 90,0,0,0,114,181,0,0,0,32,32,32,114,5,0,0, + 0,114,184,0,0,0,65,3,0,0,115,8,0,0,0,6, + 7,2,2,4,254,18,3,114,17,0,0,0,122,26,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,67,0,0,0,114,185,0, + 0,0,41,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,23,0,0,0,114,174,0,0,0,32,114,5,0,0, + 0,114,162,0,0,0,77,3,0,0,115,2,0,0,0,4, + 0,114,17,0,0,0,122,28,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,99,114,101,97,116,101,95,109,111, 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,67,0,0,0,114,185,0,0,0,41,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,23,0, - 0,0,114,174,0,0,0,32,114,5,0,0,0,114,162,0, - 0,0,77,3,0,0,115,2,0,0,0,4,0,114,17,0, - 0,0,122,28,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,99,114,101,97,116,101,95,109,111,100,117,108,101, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, - 125,1,116,2,160,3,124,1,161,1,115,18,116,4,100,1, - 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, - 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, - 106,9,131,2,1,0,100,0,83,0,114,97,0,0,0,41, - 10,114,113,0,0,0,114,20,0,0,0,114,65,0,0,0, - 114,98,0,0,0,114,88,0,0,0,114,51,0,0,0,114, - 75,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, - 95,111,98,106,101,99,116,218,4,101,120,101,99,114,13,0, - 0,0,41,3,114,110,0,0,0,114,20,0,0,0,218,4, - 99,111,100,101,32,32,32,114,5,0,0,0,114,163,0,0, - 0,81,3,0,0,115,14,0,0,0,8,2,10,1,10,1, - 2,1,6,255,12,2,16,1,114,17,0,0,0,122,26,70, - 114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10, - 0,0,0,116,0,124,0,124,1,131,2,83,0,41,2,122, - 95,76,111,97,100,32,97,32,102,114,111,122,101,110,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, - 78,41,1,114,111,0,0,0,114,186,0,0,0,32,32,114, - 5,0,0,0,114,170,0,0,0,90,3,0,0,115,2,0, - 0,0,10,8,114,17,0,0,0,122,26,70,114,111,122,101, - 110,73,109,112,111,114,116,101,114,46,108,111,97,100,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,243,10,0,0,0,116, - 0,160,1,124,1,161,1,83,0,41,2,122,45,82,101,116, - 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, - 101,99,116,32,102,111,114,32,116,104,101,32,102,114,111,122, - 101,110,32,109,111,100,117,108,101,46,78,41,2,114,65,0, - 0,0,114,195,0,0,0,114,186,0,0,0,32,32,114,5, - 0,0,0,114,187,0,0,0,100,3,0,0,243,2,0,0, - 0,10,4,114,17,0,0,0,122,23,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,67,0,0,0,114,185,0,0,0,41,2,122,54,82, - 101,116,117,114,110,32,78,111,110,101,32,97,115,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,115,32,100,111,32, - 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, - 99,111,100,101,46,78,114,23,0,0,0,114,186,0,0,0, - 32,32,114,5,0,0,0,114,189,0,0,0,106,3,0,0, - 114,188,0,0,0,114,17,0,0,0,122,25,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, - 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,114,198,0,0,0,41, - 2,122,46,82,101,116,117,114,110,32,84,114,117,101,32,105, - 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, - 46,78,41,2,114,65,0,0,0,90,17,105,115,95,102,114, - 111,122,101,110,95,112,97,99,107,97,103,101,114,186,0,0, - 0,32,32,114,5,0,0,0,114,128,0,0,0,112,3,0, - 0,114,199,0,0,0,114,17,0,0,0,122,25,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,46,105,115,95,112, - 97,99,107,97,103,101,114,190,0,0,0,114,0,0,0,0, - 41,17,114,8,0,0,0,114,7,0,0,0,114,1,0,0, - 0,114,9,0,0,0,114,151,0,0,0,114,191,0,0,0, - 114,114,0,0,0,114,192,0,0,0,114,183,0,0,0,114, - 184,0,0,0,114,162,0,0,0,114,163,0,0,0,114,170, - 0,0,0,114,100,0,0,0,114,187,0,0,0,114,189,0, - 0,0,114,128,0,0,0,114,23,0,0,0,114,5,0,0, - 0,114,193,0,0,0,36,3,0,0,115,48,0,0,0,8, - 0,4,2,4,7,2,2,10,1,2,10,12,1,2,6,12, - 1,2,11,10,1,2,3,10,1,2,8,10,1,2,9,2, - 1,12,1,2,4,2,1,12,1,2,4,2,1,16,1,114, - 17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111,114,116,76,111, - 99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,101, - 120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,116, - 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, - 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, - 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, - 46,78,41,2,114,65,0,0,0,114,66,0,0,0,114,53, - 0,0,0,32,114,5,0,0,0,114,62,0,0,0,125,3, - 0,0,243,2,0,0,0,12,2,114,17,0,0,0,122,28, + 0,4,0,0,0,67,0,0,0,115,64,0,0,0,124,0, + 106,0,106,1,125,1,116,2,160,3,124,1,161,1,115,18, + 116,4,100,1,160,5,124,1,161,1,124,1,100,2,141,2, + 130,1,116,6,116,2,106,7,124,1,131,2,125,2,116,8, + 124,2,124,0,106,9,131,2,1,0,100,0,83,0,114,97, + 0,0,0,41,10,114,113,0,0,0,114,20,0,0,0,114, + 65,0,0,0,114,98,0,0,0,114,88,0,0,0,114,51, + 0,0,0,114,75,0,0,0,218,17,103,101,116,95,102,114, + 111,122,101,110,95,111,98,106,101,99,116,218,4,101,120,101, + 99,114,13,0,0,0,41,3,114,110,0,0,0,114,20,0, + 0,0,218,4,99,111,100,101,32,32,32,114,5,0,0,0, + 114,163,0,0,0,81,3,0,0,115,14,0,0,0,8,2, + 10,1,10,1,2,1,6,255,12,2,16,1,114,17,0,0, + 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0, + 0,0,115,10,0,0,0,116,0,124,0,124,1,131,2,83, + 0,41,2,122,95,76,111,97,100,32,97,32,102,114,111,122, + 101,110,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,78,41,1,114,111,0,0,0,114,186,0,0, + 0,32,32,114,5,0,0,0,114,170,0,0,0,90,3,0, + 0,115,2,0,0,0,10,8,114,17,0,0,0,122,26,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,108,111, + 97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,243,10, + 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,122, + 45,82,101,116,117,114,110,32,116,104,101,32,99,111,100,101, + 32,111,98,106,101,99,116,32,102,111,114,32,116,104,101,32, + 102,114,111,122,101,110,32,109,111,100,117,108,101,46,78,41, + 2,114,65,0,0,0,114,195,0,0,0,114,186,0,0,0, + 32,32,114,5,0,0,0,114,187,0,0,0,100,3,0,0, + 243,2,0,0,0,10,4,114,17,0,0,0,122,23,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,103,101,116, + 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, + 2,122,54,82,101,116,117,114,110,32,78,111,110,101,32,97, + 115,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, + 32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,117, + 114,99,101,32,99,111,100,101,46,78,114,23,0,0,0,114, + 186,0,0,0,32,32,114,5,0,0,0,114,189,0,0,0, + 106,3,0,0,114,188,0,0,0,114,17,0,0,0,122,25, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,103, + 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,67,0,0,0,114,198, + 0,0,0,41,2,122,46,82,101,116,117,114,110,32,84,114, + 117,101,32,105,102,32,116,104,101,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,32,105,115,32,97,32,112,97,99, + 107,97,103,101,46,78,41,2,114,65,0,0,0,90,17,105, + 115,95,102,114,111,122,101,110,95,112,97,99,107,97,103,101, + 114,186,0,0,0,32,32,114,5,0,0,0,114,128,0,0, + 0,112,3,0,0,114,199,0,0,0,114,17,0,0,0,122, + 25,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46, + 105,115,95,112,97,99,107,97,103,101,114,190,0,0,0,114, + 0,0,0,0,41,17,114,8,0,0,0,114,7,0,0,0, + 114,1,0,0,0,114,9,0,0,0,114,151,0,0,0,114, + 191,0,0,0,114,114,0,0,0,114,192,0,0,0,114,183, + 0,0,0,114,184,0,0,0,114,162,0,0,0,114,163,0, + 0,0,114,170,0,0,0,114,100,0,0,0,114,187,0,0, + 0,114,189,0,0,0,114,128,0,0,0,114,23,0,0,0, + 114,5,0,0,0,114,193,0,0,0,36,3,0,0,115,48, + 0,0,0,8,0,4,2,4,7,2,2,10,1,2,10,12, + 1,2,6,12,1,2,11,10,1,2,3,10,1,2,8,10, + 1,2,9,2,1,12,1,2,4,2,1,12,1,2,4,2, + 1,16,1,114,17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111, + 114,116,76,111,99,107,67,111,110,116,101,120,116,122,36,67, + 111,110,116,101,120,116,32,109,97,110,97,103,101,114,32,102, + 111,114,32,116,104,101,32,105,109,112,111,114,116,32,108,111, + 99,107,46,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,67,0,0,0,243,12,0,0,0,116,0,160, + 1,161,0,1,0,100,1,83,0,41,2,122,24,65,99,113, + 117,105,114,101,32,116,104,101,32,105,109,112,111,114,116,32, + 108,111,99,107,46,78,41,2,114,65,0,0,0,114,66,0, + 0,0,114,53,0,0,0,32,114,5,0,0,0,114,62,0, + 0,0,125,3,0,0,243,2,0,0,0,12,2,114,17,0, + 0,0,122,28,95,73,109,112,111,114,116,76,111,99,107,67, + 111,110,116,101,120,116,46,95,95,101,110,116,101,114,95,95, + 99,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,67,0,0,0,114,201,0,0,0,41,2,122,60,82,101, + 108,101,97,115,101,32,116,104,101,32,105,109,112,111,114,116, + 32,108,111,99,107,32,114,101,103,97,114,100,108,101,115,115, + 32,111,102,32,97,110,121,32,114,97,105,115,101,100,32,101, + 120,99,101,112,116,105,111,110,115,46,78,41,2,114,65,0, + 0,0,114,68,0,0,0,41,4,114,34,0,0,0,218,8, + 101,120,99,95,116,121,112,101,218,9,101,120,99,95,118,97, + 108,117,101,218,13,101,120,99,95,116,114,97,99,101,98,97, + 99,107,32,32,32,32,114,5,0,0,0,114,64,0,0,0, + 129,3,0,0,114,202,0,0,0,114,17,0,0,0,122,27, 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, - 120,116,46,95,95,101,110,116,101,114,95,95,99,4,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,67,0,0, - 0,114,201,0,0,0,41,2,122,60,82,101,108,101,97,115, - 101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, - 107,32,114,101,103,97,114,100,108,101,115,115,32,111,102,32, - 97,110,121,32,114,97,105,115,101,100,32,101,120,99,101,112, - 116,105,111,110,115,46,78,41,2,114,65,0,0,0,114,68, - 0,0,0,41,4,114,34,0,0,0,218,8,101,120,99,95, - 116,121,112,101,218,9,101,120,99,95,118,97,108,117,101,218, - 13,101,120,99,95,116,114,97,99,101,98,97,99,107,32,32, - 32,32,114,5,0,0,0,114,64,0,0,0,129,3,0,0, - 114,202,0,0,0,114,17,0,0,0,122,27,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, - 95,101,120,105,116,95,95,78,41,6,114,8,0,0,0,114, - 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,62, - 0,0,0,114,64,0,0,0,114,23,0,0,0,114,5,0, - 0,0,114,200,0,0,0,121,3,0,0,115,8,0,0,0, - 8,0,4,2,8,2,12,4,114,17,0,0,0,114,200,0, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,115,64,0,0,0,124,1,160,0, - 100,1,124,2,100,2,24,0,161,2,125,3,116,1,124,3, - 131,1,124,2,107,0,114,18,116,2,100,3,131,1,130,1, - 124,3,100,4,25,0,125,4,124,0,114,30,100,5,160,3, - 124,4,124,0,161,2,83,0,124,4,83,0,41,7,122,50, - 82,101,115,111,108,118,101,32,97,32,114,101,108,97,116,105, - 118,101,32,109,111,100,117,108,101,32,110,97,109,101,32,116, - 111,32,97,110,32,97,98,115,111,108,117,116,101,32,111,110, - 101,46,114,141,0,0,0,114,43,0,0,0,122,50,97,116, - 116,101,109,112,116,101,100,32,114,101,108,97,116,105,118,101, - 32,105,109,112,111,114,116,32,98,101,121,111,110,100,32,116, - 111,112,45,108,101,118,101,108,32,112,97,99,107,97,103,101, - 114,26,0,0,0,250,5,123,125,46,123,125,78,41,4,218, - 6,114,115,112,108,105,116,218,3,108,101,110,114,88,0,0, - 0,114,51,0,0,0,41,5,114,20,0,0,0,218,7,112, - 97,99,107,97,103,101,218,5,108,101,118,101,108,90,4,98, - 105,116,115,90,4,98,97,115,101,32,32,32,32,32,114,5, - 0,0,0,218,13,95,114,101,115,111,108,118,101,95,110,97, - 109,101,134,3,0,0,115,10,0,0,0,16,2,12,1,8, - 1,8,1,20,1,114,17,0,0,0,114,211,0,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,60,0,0,0,116,0,124,0,131,1,155, - 0,100,1,157,2,125,3,116,1,160,2,124,3,116,3,161, - 2,1,0,124,0,160,4,124,1,124,2,161,2,125,4,124, - 4,100,0,117,0,114,25,100,0,83,0,116,5,124,1,124, - 4,131,2,83,0,41,2,78,122,53,46,102,105,110,100,95, - 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, - 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, - 111,32,102,105,110,100,95,109,111,100,117,108,101,40,41,41, - 6,114,6,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,169,0,0,0,114,184,0,0,0,114,104,0,0,0,41, - 5,218,6,102,105,110,100,101,114,114,20,0,0,0,114,181, - 0,0,0,114,108,0,0,0,114,122,0,0,0,32,32,32, - 32,32,114,5,0,0,0,218,17,95,102,105,110,100,95,115, - 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, - 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, - 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, - 0,0,0,0,0,0,10,0,0,0,67,0,0,0,115,30, - 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, - 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, - 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, - 0,125,4,124,3,68,0,93,112,125,5,116,7,131,0,53, - 0,1,0,9,0,124,5,106,8,125,6,110,27,35,0,4, - 0,116,9,121,142,1,0,1,0,1,0,116,10,124,5,124, - 0,124,1,131,3,125,7,124,7,100,1,117,0,114,61,89, - 0,100,1,4,0,4,0,131,3,1,0,113,26,89,0,110, - 7,37,0,124,6,124,0,124,1,124,2,131,3,125,7,100, - 1,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, - 81,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,7,100,1,117,1,114,138,124,4,115,134,124,0,116, - 0,106,6,118,0,114,134,116,0,106,6,124,0,25,0,125, - 8,9,0,124,8,106,11,125,9,110,14,35,0,4,0,116, - 9,121,141,1,0,1,0,1,0,124,7,6,0,89,0,2, - 0,1,0,83,0,37,0,124,9,100,1,117,0,114,130,124, - 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, - 7,2,0,1,0,83,0,113,26,100,1,83,0,119,0,119, - 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, - 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, - 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, - 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, - 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, - 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, - 104,32,105,115,32,101,109,112,116,121,41,12,114,18,0,0, - 0,218,9,109,101,116,97,95,112,97,116,104,114,88,0,0, - 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, - 114,105,0,0,0,114,200,0,0,0,114,183,0,0,0,114, - 2,0,0,0,114,213,0,0,0,114,113,0,0,0,41,10, - 114,20,0,0,0,114,181,0,0,0,114,182,0,0,0,114, - 214,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, - 212,0,0,0,114,183,0,0,0,114,109,0,0,0,114,110, - 0,0,0,114,113,0,0,0,32,32,32,32,32,32,32,32, - 32,32,114,5,0,0,0,218,10,95,102,105,110,100,95,115, - 112,101,99,153,3,0,0,115,76,0,0,0,6,2,8,1, - 8,2,4,3,12,1,10,5,8,1,8,1,2,1,8,1, - 2,128,12,1,12,1,8,1,2,1,12,250,4,5,2,128, - 12,3,12,248,22,128,8,9,14,2,10,1,2,1,8,1, - 2,128,12,1,12,4,2,128,8,2,8,1,8,2,8,2, - 2,239,4,19,2,243,2,244,115,63,0,0,0,159,1,65, - 12,5,161,3,37,4,164,1,65,12,5,165,17,63,11,182, - 1,65,12,5,189,9,65,12,5,193,12,4,65,16,13,193, - 17,3,65,16,13,193,40,3,65,44,2,193,44,9,65,57, - 9,194,13,1,65,57,9,194,14,1,63,11,114,215,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,67,0,0,0,115,110,0,0,0,116,0,124,0,116, - 1,131,2,115,14,116,2,100,1,160,3,116,4,124,0,131, - 1,161,1,131,1,130,1,124,2,100,2,107,0,114,22,116, - 5,100,3,131,1,130,1,124,2,100,2,107,4,114,41,116, - 0,124,1,116,1,131,2,115,35,116,2,100,4,131,1,130, - 1,124,1,115,41,116,6,100,5,131,1,130,1,124,0,115, - 53,124,2,100,2,107,2,114,51,116,5,100,6,131,1,130, - 1,100,7,83,0,100,7,83,0,41,8,122,28,86,101,114, - 105,102,121,32,97,114,103,117,109,101,110,116,115,32,97,114, - 101,32,34,115,97,110,101,34,46,122,31,109,111,100,117,108, - 101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,115, - 116,114,44,32,110,111,116,32,123,125,114,26,0,0,0,122, - 18,108,101,118,101,108,32,109,117,115,116,32,98,101,32,62, - 61,32,48,122,31,95,95,112,97,99,107,97,103,101,95,95, - 32,110,111,116,32,115,101,116,32,116,111,32,97,32,115,116, - 114,105,110,103,122,54,97,116,116,101,109,112,116,101,100,32, - 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,32, - 119,105,116,104,32,110,111,32,107,110,111,119,110,32,112,97, - 114,101,110,116,32,112,97,99,107,97,103,101,122,17,69,109, - 112,116,121,32,109,111,100,117,108,101,32,110,97,109,101,78, - 41,7,218,10,105,115,105,110,115,116,97,110,99,101,218,3, - 115,116,114,218,9,84,121,112,101,69,114,114,111,114,114,51, - 0,0,0,114,3,0,0,0,218,10,86,97,108,117,101,69, - 114,114,111,114,114,88,0,0,0,169,3,114,20,0,0,0, - 114,209,0,0,0,114,210,0,0,0,32,32,32,114,5,0, - 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, - 107,200,3,0,0,115,24,0,0,0,10,2,18,1,8,1, - 8,1,8,1,10,1,8,1,4,1,8,1,12,2,8,1, - 8,255,114,17,0,0,0,114,221,0,0,0,122,16,78,111, - 32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,4, - 123,33,114,125,99,2,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,67,0,0,0,115,20,1,0,0,100,0, - 125,2,124,0,160,0,100,1,161,1,100,2,25,0,125,3, - 124,3,114,64,124,3,116,1,106,2,118,1,114,21,116,3, - 124,1,124,3,131,2,1,0,124,0,116,1,106,2,118,0, - 114,31,116,1,106,2,124,0,25,0,83,0,116,1,106,2, - 124,3,25,0,125,4,9,0,124,4,106,4,125,2,110,23, - 35,0,4,0,116,5,121,137,1,0,1,0,1,0,116,6, - 100,3,23,0,160,7,124,0,124,3,161,2,125,5,116,8, - 124,5,124,0,100,4,141,2,100,0,130,2,37,0,116,9, - 124,0,124,2,131,2,125,6,124,6,100,0,117,0,114,82, - 116,8,116,6,160,7,124,0,161,1,124,0,100,4,141,2, - 130,1,116,10,124,6,131,1,125,7,124,3,114,134,116,1, - 106,2,124,3,25,0,125,4,124,0,160,0,100,1,161,1, - 100,5,25,0,125,8,9,0,116,11,124,4,124,8,124,7, - 131,3,1,0,124,7,83,0,35,0,4,0,116,5,121,136, - 1,0,1,0,1,0,100,6,124,3,155,2,100,7,124,8, - 155,2,157,4,125,5,116,12,160,13,124,5,116,14,161,2, - 1,0,89,0,124,7,83,0,37,0,124,7,83,0,119,0, - 119,0,41,8,78,114,141,0,0,0,114,26,0,0,0,122, - 23,59,32,123,33,114,125,32,105,115,32,110,111,116,32,97, - 32,112,97,99,107,97,103,101,114,19,0,0,0,233,2,0, - 0,0,122,27,67,97,110,110,111,116,32,115,101,116,32,97, - 110,32,97,116,116,114,105,98,117,116,101,32,111,110,32,122, - 18,32,102,111,114,32,99,104,105,108,100,32,109,111,100,117, - 108,101,32,41,15,114,142,0,0,0,114,18,0,0,0,114, - 105,0,0,0,114,75,0,0,0,114,154,0,0,0,114,2, - 0,0,0,218,8,95,69,82,82,95,77,83,71,114,51,0, - 0,0,218,19,77,111,100,117,108,101,78,111,116,70,111,117, - 110,100,69,114,114,111,114,114,215,0,0,0,114,173,0,0, - 0,114,11,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,169,0,0,0,41,9,114,20,0,0,0,218,7,105,109, - 112,111,114,116,95,114,181,0,0,0,114,143,0,0,0,90, - 13,112,97,114,101,110,116,95,109,111,100,117,108,101,114,108, - 0,0,0,114,109,0,0,0,114,110,0,0,0,90,5,99, - 104,105,108,100,32,32,32,32,32,32,32,32,32,114,5,0, - 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, - 97,100,95,117,110,108,111,99,107,101,100,219,3,0,0,115, - 68,0,0,0,4,1,14,1,4,1,10,1,10,1,10,2, - 10,1,10,1,2,1,8,1,2,128,12,1,16,1,14,1, - 2,128,10,1,8,1,18,1,8,2,4,1,10,2,14,1, - 2,1,12,1,4,4,2,128,12,253,16,1,14,1,4,1, - 2,128,4,0,2,253,2,242,115,31,0,0,0,165,3,41, - 0,169,22,63,7,193,37,6,65,45,0,193,45,21,66,5, - 7,194,8,1,66,5,7,194,9,1,63,7,114,226,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,9,0, - 0,0,67,0,0,0,115,132,0,0,0,116,0,124,0,131, - 1,53,0,1,0,116,1,106,2,160,3,124,0,116,4,161, - 2,125,2,124,2,116,4,117,0,114,27,116,5,124,0,124, - 1,131,2,2,0,100,1,4,0,4,0,131,3,1,0,83, - 0,9,0,100,1,4,0,4,0,131,3,1,0,110,11,35, - 0,49,0,115,39,119,4,37,0,1,0,1,0,1,0,89, - 0,1,0,1,0,124,2,100,1,117,0,114,60,100,2,160, - 6,124,0,161,1,125,3,116,7,124,3,124,0,100,3,141, - 2,130,1,116,8,124,0,131,1,1,0,124,2,83,0,41, - 4,122,25,70,105,110,100,32,97,110,100,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,46,78,122,40,105, - 109,112,111,114,116,32,111,102,32,123,125,32,104,97,108,116, - 101,100,59,32,78,111,110,101,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,114,19,0,0,0,41,9,114,58, - 0,0,0,114,18,0,0,0,114,105,0,0,0,114,39,0, - 0,0,218,14,95,78,69,69,68,83,95,76,79,65,68,73, - 78,71,114,226,0,0,0,114,51,0,0,0,114,224,0,0, - 0,114,73,0,0,0,41,4,114,20,0,0,0,114,225,0, - 0,0,114,110,0,0,0,114,83,0,0,0,32,32,32,32, - 114,5,0,0,0,218,14,95,102,105,110,100,95,97,110,100, - 95,108,111,97,100,254,3,0,0,115,30,0,0,0,10,2, - 14,1,8,1,8,1,14,253,2,2,12,254,22,128,8,5, - 2,1,6,1,2,255,12,2,8,2,4,1,115,12,0,0, - 0,132,16,34,3,162,4,38,11,167,3,38,11,114,228,0, - 0,0,114,26,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, - 0,116,0,124,0,124,1,124,2,131,3,1,0,124,2,100, - 1,107,4,114,16,116,1,124,0,124,1,124,2,131,3,125, - 0,116,2,124,0,116,3,131,2,83,0,41,3,97,50,1, - 0,0,73,109,112,111,114,116,32,97,110,100,32,114,101,116, - 117,114,110,32,116,104,101,32,109,111,100,117,108,101,32,98, - 97,115,101,100,32,111,110,32,105,116,115,32,110,97,109,101, - 44,32,116,104,101,32,112,97,99,107,97,103,101,32,116,104, - 101,32,99,97,108,108,32,105,115,10,32,32,32,32,98,101, - 105,110,103,32,109,97,100,101,32,102,114,111,109,44,32,97, - 110,100,32,116,104,101,32,108,101,118,101,108,32,97,100,106, - 117,115,116,109,101,110,116,46,10,10,32,32,32,32,84,104, - 105,115,32,102,117,110,99,116,105,111,110,32,114,101,112,114, - 101,115,101,110,116,115,32,116,104,101,32,103,114,101,97,116, - 101,115,116,32,99,111,109,109,111,110,32,100,101,110,111,109, - 105,110,97,116,111,114,32,111,102,32,102,117,110,99,116,105, - 111,110,97,108,105,116,121,10,32,32,32,32,98,101,116,119, - 101,101,110,32,105,109,112,111,114,116,95,109,111,100,117,108, - 101,32,97,110,100,32,95,95,105,109,112,111,114,116,95,95, - 46,32,84,104,105,115,32,105,110,99,108,117,100,101,115,32, - 115,101,116,116,105,110,103,32,95,95,112,97,99,107,97,103, - 101,95,95,32,105,102,10,32,32,32,32,116,104,101,32,108, - 111,97,100,101,114,32,100,105,100,32,110,111,116,46,10,10, - 32,32,32,32,114,26,0,0,0,78,41,4,114,221,0,0, - 0,114,211,0,0,0,114,228,0,0,0,218,11,95,103,99, - 100,95,105,109,112,111,114,116,114,220,0,0,0,32,32,32, - 114,5,0,0,0,114,229,0,0,0,14,4,0,0,115,8, - 0,0,0,12,9,8,1,12,1,10,1,114,17,0,0,0, - 114,229,0,0,0,169,1,218,9,114,101,99,117,114,115,105, - 118,101,99,3,0,0,0,0,0,0,0,1,0,0,0,9, - 0,0,0,67,0,0,0,115,216,0,0,0,124,1,68,0, - 93,102,125,4,116,0,124,4,116,1,131,2,115,32,124,3, - 114,17,124,0,106,2,100,1,23,0,125,5,110,2,100,2, - 125,5,116,3,100,3,124,5,155,0,100,4,116,4,124,4, - 131,1,106,2,155,0,157,4,131,1,130,1,124,4,100,5, - 107,2,114,53,124,3,115,52,116,5,124,0,100,6,131,2, - 114,52,116,6,124,0,124,0,106,7,124,2,100,7,100,8, - 141,4,1,0,113,2,116,5,124,0,124,4,131,2,115,104, - 100,9,160,8,124,0,106,2,124,4,161,2,125,6,9,0, - 116,9,124,2,124,6,131,2,1,0,113,2,35,0,4,0, - 116,10,121,107,1,0,125,7,1,0,124,7,106,11,124,6, - 107,2,114,98,116,12,106,13,160,14,124,6,116,15,161,2, - 100,10,117,1,114,98,89,0,100,10,125,7,126,7,113,2, - 130,0,100,10,125,7,126,7,119,1,37,0,113,2,124,0, - 83,0,119,0,41,11,122,238,70,105,103,117,114,101,32,111, - 117,116,32,119,104,97,116,32,95,95,105,109,112,111,114,116, - 95,95,32,115,104,111,117,108,100,32,114,101,116,117,114,110, - 46,10,10,32,32,32,32,84,104,101,32,105,109,112,111,114, - 116,95,32,112,97,114,97,109,101,116,101,114,32,105,115,32, - 97,32,99,97,108,108,97,98,108,101,32,119,104,105,99,104, - 32,116,97,107,101,115,32,116,104,101,32,110,97,109,101,32, - 111,102,32,109,111,100,117,108,101,32,116,111,10,32,32,32, - 32,105,109,112,111,114,116,46,32,73,116,32,105,115,32,114, - 101,113,117,105,114,101,100,32,116,111,32,100,101,99,111,117, - 112,108,101,32,116,104,101,32,102,117,110,99,116,105,111,110, - 32,102,114,111,109,32,97,115,115,117,109,105,110,103,32,105, - 109,112,111,114,116,108,105,98,39,115,10,32,32,32,32,105, - 109,112,111,114,116,32,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,32,105,115,32,100,101,115,105,114,101,100,46, - 10,10,32,32,32,32,122,8,46,95,95,97,108,108,95,95, - 122,13,96,96,102,114,111,109,32,108,105,115,116,39,39,122, - 8,73,116,101,109,32,105,110,32,122,18,32,109,117,115,116, - 32,98,101,32,115,116,114,44,32,110,111,116,32,250,1,42, - 218,7,95,95,97,108,108,95,95,84,114,230,0,0,0,114, - 206,0,0,0,78,41,16,114,216,0,0,0,114,217,0,0, - 0,114,8,0,0,0,114,218,0,0,0,114,3,0,0,0, - 114,10,0,0,0,218,16,95,104,97,110,100,108,101,95,102, - 114,111,109,108,105,115,116,114,233,0,0,0,114,51,0,0, - 0,114,75,0,0,0,114,224,0,0,0,114,20,0,0,0, - 114,18,0,0,0,114,105,0,0,0,114,39,0,0,0,114, - 227,0,0,0,41,8,114,110,0,0,0,218,8,102,114,111, - 109,108,105,115,116,114,225,0,0,0,114,231,0,0,0,218, - 1,120,90,5,119,104,101,114,101,90,9,102,114,111,109,95, - 110,97,109,101,90,3,101,120,99,32,32,32,32,32,32,32, - 32,114,5,0,0,0,114,234,0,0,0,29,4,0,0,115, - 58,0,0,0,8,10,10,1,4,1,12,1,4,2,10,1, - 8,1,8,255,8,2,14,1,10,1,2,1,6,255,2,128, - 10,2,14,1,2,1,12,1,2,128,12,1,10,4,16,1, - 2,255,10,2,2,1,10,128,2,245,4,12,2,248,115,36, - 0,0,0,193,2,5,65,8,2,193,8,7,65,39,9,193, - 15,14,65,35,9,193,34,1,65,35,9,193,35,4,65,39, - 9,193,43,1,65,39,9,114,234,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,7,0,0,0,67,0,0, - 0,115,146,0,0,0,124,0,160,0,100,1,161,1,125,1, - 124,0,160,0,100,2,161,1,125,2,124,1,100,3,117,1, - 114,41,124,2,100,3,117,1,114,39,124,1,124,2,106,1, - 107,3,114,39,116,2,160,3,100,4,124,1,155,2,100,5, - 124,2,106,1,155,2,100,6,157,5,116,4,100,7,100,8, - 166,3,1,0,124,1,83,0,124,2,100,3,117,1,114,48, - 124,2,106,1,83,0,116,2,160,3,100,9,116,4,100,7, - 100,8,166,3,1,0,124,0,100,10,25,0,125,1,100,11, - 124,0,118,1,114,71,124,1,160,5,100,12,161,1,100,13, - 25,0,125,1,124,1,83,0,41,14,122,167,67,97,108,99, - 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, - 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, - 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, - 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, - 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, - 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, - 101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,116, - 111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,116, - 32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,117, - 101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,32, - 32,32,32,114,158,0,0,0,114,113,0,0,0,78,122,32, - 95,95,112,97,99,107,97,103,101,95,95,32,33,61,32,95, - 95,115,112,101,99,95,95,46,112,97,114,101,110,116,32,40, - 122,4,32,33,61,32,250,1,41,233,3,0,0,0,41,1, - 90,10,115,116,97,99,107,108,101,118,101,108,122,89,99,97, - 110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,107, - 97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,95, - 95,32,111,114,32,95,95,112,97,99,107,97,103,101,95,95, - 44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,111, - 110,32,95,95,110,97,109,101,95,95,32,97,110,100,32,95, - 95,112,97,116,104,95,95,114,8,0,0,0,114,154,0,0, - 0,114,141,0,0,0,114,26,0,0,0,41,6,114,39,0, - 0,0,114,143,0,0,0,114,101,0,0,0,114,102,0,0, - 0,114,169,0,0,0,114,142,0,0,0,41,3,218,7,103, - 108,111,98,97,108,115,114,209,0,0,0,114,109,0,0,0, - 32,32,32,114,5,0,0,0,218,17,95,99,97,108,99,95, - 95,95,112,97,99,107,97,103,101,95,95,66,4,0,0,115, - 42,0,0,0,10,7,10,1,8,1,18,1,6,1,2,1, - 4,255,4,1,6,255,4,2,6,254,4,3,8,1,6,1, - 6,2,4,2,6,254,8,3,8,1,14,1,4,1,114,17, - 0,0,0,114,240,0,0,0,114,23,0,0,0,99,5,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, - 0,0,115,174,0,0,0,124,4,100,1,107,2,114,9,116, - 0,124,0,131,1,125,5,110,18,124,1,100,2,117,1,114, - 15,124,1,110,1,105,0,125,6,116,1,124,6,131,1,125, - 7,116,0,124,0,124,7,124,4,131,3,125,5,124,3,115, - 74,124,4,100,1,107,2,114,42,116,0,124,0,160,2,100, - 3,161,1,100,1,25,0,131,1,83,0,124,0,115,46,124, - 5,83,0,116,3,124,0,131,1,116,3,124,0,160,2,100, - 3,161,1,100,1,25,0,131,1,24,0,125,8,116,4,106, - 5,124,5,106,6,100,2,116,3,124,5,106,6,131,1,124, - 8,24,0,133,2,25,0,25,0,83,0,116,7,124,5,100, - 4,131,2,114,85,116,8,124,5,124,3,116,0,131,3,83, - 0,124,5,83,0,41,5,97,215,1,0,0,73,109,112,111, - 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, - 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, - 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, - 99,117,114,114,105,110,103,32,102,114,111,109,10,32,32,32, - 32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,116, - 105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,101, - 32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,101, - 110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,84, - 104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,116, - 39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,105, - 102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,100, - 32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,98, - 117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,117, - 108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,112, - 111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,114, - 111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,116, - 32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,32, - 32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,32, - 32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,115, - 101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,101, - 32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,112, - 111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,101, - 108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,114, - 116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,46, - 46,112,107,103,32,105,109,112,111,114,116,32,109,111,100,96, - 96,32,119,111,117,108,100,32,104,97,118,101,32,97,32,39, - 108,101,118,101,108,39,32,111,102,32,50,41,46,10,10,32, - 32,32,32,114,26,0,0,0,78,114,141,0,0,0,114,154, - 0,0,0,41,9,114,229,0,0,0,114,240,0,0,0,218, - 9,112,97,114,116,105,116,105,111,110,114,208,0,0,0,114, - 18,0,0,0,114,105,0,0,0,114,8,0,0,0,114,10, - 0,0,0,114,234,0,0,0,41,9,114,20,0,0,0,114, - 239,0,0,0,218,6,108,111,99,97,108,115,114,235,0,0, - 0,114,210,0,0,0,114,110,0,0,0,90,8,103,108,111, - 98,97,108,115,95,114,209,0,0,0,90,7,99,117,116,95, - 111,102,102,32,32,32,32,32,32,32,32,32,114,5,0,0, - 0,218,10,95,95,105,109,112,111,114,116,95,95,93,4,0, - 0,115,30,0,0,0,8,11,10,1,16,2,8,1,12,1, - 4,1,8,3,18,1,4,1,4,1,26,4,30,3,10,1, - 12,1,4,2,114,17,0,0,0,114,243,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, - 0,0,0,115,38,0,0,0,116,0,160,1,124,0,161,1, - 125,1,124,1,100,0,117,0,114,15,116,2,100,1,124,0, - 23,0,131,1,130,1,116,3,124,1,131,1,83,0,41,2, - 78,122,25,110,111,32,98,117,105,108,116,45,105,110,32,109, - 111,100,117,108,101,32,110,97,109,101,100,32,41,4,114,175, - 0,0,0,114,183,0,0,0,114,88,0,0,0,114,173,0, - 0,0,41,2,114,20,0,0,0,114,109,0,0,0,32,32, - 114,5,0,0,0,218,18,95,98,117,105,108,116,105,110,95, - 102,114,111,109,95,110,97,109,101,130,4,0,0,115,8,0, - 0,0,10,1,8,1,12,1,8,1,114,17,0,0,0,114, - 244,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,67,0,0,0,115,166,0,0,0,124,1, - 97,0,124,0,97,1,116,2,116,1,131,1,125,2,116,1, - 106,3,160,4,161,0,68,0,93,36,92,2,125,3,125,4, - 116,5,124,4,124,2,131,2,114,49,124,3,116,1,106,6, - 118,0,114,30,116,7,125,5,110,9,116,0,160,8,124,3, - 161,1,114,38,116,9,125,5,110,1,113,13,116,10,124,4, - 124,5,131,2,125,6,116,11,124,6,124,4,131,2,1,0, - 113,13,116,1,106,3,116,12,25,0,125,7,100,1,68,0, - 93,23,125,8,124,8,116,1,106,3,118,1,114,69,116,13, - 124,8,131,1,125,9,110,5,116,1,106,3,124,8,25,0, - 125,9,116,14,124,7,124,8,124,9,131,3,1,0,113,57, - 100,2,83,0,41,3,122,250,83,101,116,117,112,32,105,109, - 112,111,114,116,108,105,98,32,98,121,32,105,109,112,111,114, - 116,105,110,103,32,110,101,101,100,101,100,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,32,97,110,100, - 32,105,110,106,101,99,116,105,110,103,32,116,104,101,109,10, - 32,32,32,32,105,110,116,111,32,116,104,101,32,103,108,111, - 98,97,108,32,110,97,109,101,115,112,97,99,101,46,10,10, - 32,32,32,32,65,115,32,115,121,115,32,105,115,32,110,101, - 101,100,101,100,32,102,111,114,32,115,121,115,46,109,111,100, - 117,108,101,115,32,97,99,99,101,115,115,32,97,110,100,32, - 95,105,109,112,32,105,115,32,110,101,101,100,101,100,32,116, - 111,32,108,111,97,100,32,98,117,105,108,116,45,105,110,10, - 32,32,32,32,109,111,100,117,108,101,115,44,32,116,104,111, - 115,101,32,116,119,111,32,109,111,100,117,108,101,115,32,109, - 117,115,116,32,98,101,32,101,120,112,108,105,99,105,116,108, - 121,32,112,97,115,115,101,100,32,105,110,46,10,10,32,32, - 32,32,41,3,114,27,0,0,0,114,101,0,0,0,114,72, - 0,0,0,78,41,15,114,65,0,0,0,114,18,0,0,0, - 114,3,0,0,0,114,105,0,0,0,218,5,105,116,101,109, - 115,114,216,0,0,0,114,87,0,0,0,114,175,0,0,0, - 114,98,0,0,0,114,193,0,0,0,114,155,0,0,0,114, - 161,0,0,0,114,8,0,0,0,114,244,0,0,0,114,11, - 0,0,0,41,10,218,10,115,121,115,95,109,111,100,117,108, - 101,218,11,95,105,109,112,95,109,111,100,117,108,101,90,11, - 109,111,100,117,108,101,95,116,121,112,101,114,20,0,0,0, - 114,110,0,0,0,114,122,0,0,0,114,109,0,0,0,90, - 11,115,101,108,102,95,109,111,100,117,108,101,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,32,32,32,32,32,32, - 32,32,32,32,114,5,0,0,0,218,6,95,115,101,116,117, - 112,137,4,0,0,115,40,0,0,0,4,9,4,1,8,3, - 18,1,10,1,10,1,6,1,10,1,6,1,2,2,10,1, - 10,1,2,128,10,3,8,1,10,1,10,1,10,2,14,1, - 4,251,114,17,0,0,0,114,248,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, - 0,115,38,0,0,0,116,0,124,0,124,1,131,2,1,0, - 116,1,106,2,160,3,116,4,161,1,1,0,116,1,106,2, - 160,3,116,5,161,1,1,0,100,1,83,0,41,2,122,48, - 73,110,115,116,97,108,108,32,105,109,112,111,114,116,101,114, - 115,32,102,111,114,32,98,117,105,108,116,105,110,32,97,110, - 100,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 78,41,6,114,248,0,0,0,114,18,0,0,0,114,214,0, - 0,0,114,132,0,0,0,114,175,0,0,0,114,193,0,0, - 0,41,2,114,246,0,0,0,114,247,0,0,0,32,32,114, - 5,0,0,0,218,8,95,105,110,115,116,97,108,108,172,4, - 0,0,115,6,0,0,0,10,2,12,2,16,1,114,17,0, - 0,0,114,249,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,32,0,0, - 0,100,1,100,2,108,0,125,0,124,0,97,1,124,0,160, - 2,116,3,106,4,116,5,25,0,161,1,1,0,100,2,83, - 0,41,3,122,57,73,110,115,116,97,108,108,32,105,109,112, - 111,114,116,101,114,115,32,116,104,97,116,32,114,101,113,117, - 105,114,101,32,101,120,116,101,114,110,97,108,32,102,105,108, - 101,115,121,115,116,101,109,32,97,99,99,101,115,115,114,26, - 0,0,0,78,41,6,218,26,95,102,114,111,122,101,110,95, - 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110, - 97,108,114,139,0,0,0,114,249,0,0,0,114,18,0,0, - 0,114,105,0,0,0,114,8,0,0,0,41,1,114,250,0, - 0,0,32,114,5,0,0,0,218,27,95,105,110,115,116,97, - 108,108,95,101,120,116,101,114,110,97,108,95,105,109,112,111, - 114,116,101,114,115,180,4,0,0,115,6,0,0,0,8,3, - 4,1,20,1,114,17,0,0,0,114,251,0,0,0,114,190, - 0,0,0,114,0,0,0,0,114,25,0,0,0,41,4,78, - 78,114,23,0,0,0,114,26,0,0,0,41,54,114,9,0, - 0,0,114,6,0,0,0,114,27,0,0,0,114,101,0,0, - 0,114,72,0,0,0,114,139,0,0,0,114,16,0,0,0, - 114,21,0,0,0,114,67,0,0,0,114,38,0,0,0,114, - 48,0,0,0,114,22,0,0,0,114,24,0,0,0,114,56, - 0,0,0,114,58,0,0,0,114,61,0,0,0,114,73,0, - 0,0,114,75,0,0,0,114,84,0,0,0,114,95,0,0, - 0,114,100,0,0,0,114,111,0,0,0,114,124,0,0,0, - 114,125,0,0,0,114,104,0,0,0,114,155,0,0,0,114, - 161,0,0,0,114,165,0,0,0,114,119,0,0,0,114,106, - 0,0,0,114,172,0,0,0,114,173,0,0,0,114,107,0, - 0,0,114,175,0,0,0,114,193,0,0,0,114,200,0,0, - 0,114,211,0,0,0,114,213,0,0,0,114,215,0,0,0, - 114,221,0,0,0,90,15,95,69,82,82,95,77,83,71,95, - 80,82,69,70,73,88,114,223,0,0,0,114,226,0,0,0, - 218,6,111,98,106,101,99,116,114,227,0,0,0,114,228,0, - 0,0,114,229,0,0,0,114,234,0,0,0,114,240,0,0, - 0,114,243,0,0,0,114,244,0,0,0,114,248,0,0,0, - 114,249,0,0,0,114,251,0,0,0,114,23,0,0,0,114, - 5,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,104,0,0,0,4,0,8,22,4,9,4,1,4, - 1,4,3,8,3,8,8,4,8,4,2,16,3,14,4,14, - 77,14,21,8,16,8,37,8,17,14,11,8,8,8,11,8, - 12,8,19,14,26,16,101,10,26,14,45,8,72,8,17,8, - 17,8,30,8,36,8,45,14,15,14,80,14,85,8,13,8, - 9,10,10,8,47,4,16,8,1,8,2,6,32,8,3,10, - 16,14,15,8,37,10,27,8,37,8,7,8,35,12,8,114, - 17,0,0,0, + 120,116,46,95,95,101,120,105,116,95,95,78,41,6,114,8, + 0,0,0,114,7,0,0,0,114,1,0,0,0,114,9,0, + 0,0,114,62,0,0,0,114,64,0,0,0,114,23,0,0, + 0,114,5,0,0,0,114,200,0,0,0,121,3,0,0,115, + 8,0,0,0,8,0,4,2,8,2,12,4,114,17,0,0, + 0,114,200,0,0,0,99,3,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,67,0,0,0,115,64,0,0,0, + 124,1,160,0,100,1,124,2,100,2,24,0,161,2,125,3, + 116,1,124,3,131,1,124,2,107,0,114,18,116,2,100,3, + 131,1,130,1,124,3,100,4,25,0,125,4,124,0,114,30, + 100,5,160,3,124,4,124,0,161,2,83,0,124,4,83,0, + 41,7,122,50,82,101,115,111,108,118,101,32,97,32,114,101, + 108,97,116,105,118,101,32,109,111,100,117,108,101,32,110,97, + 109,101,32,116,111,32,97,110,32,97,98,115,111,108,117,116, + 101,32,111,110,101,46,114,141,0,0,0,114,43,0,0,0, + 122,50,97,116,116,101,109,112,116,101,100,32,114,101,108,97, + 116,105,118,101,32,105,109,112,111,114,116,32,98,101,121,111, + 110,100,32,116,111,112,45,108,101,118,101,108,32,112,97,99, + 107,97,103,101,114,26,0,0,0,250,5,123,125,46,123,125, + 78,41,4,218,6,114,115,112,108,105,116,218,3,108,101,110, + 114,88,0,0,0,114,51,0,0,0,41,5,114,20,0,0, + 0,218,7,112,97,99,107,97,103,101,218,5,108,101,118,101, + 108,90,4,98,105,116,115,90,4,98,97,115,101,32,32,32, + 32,32,114,5,0,0,0,218,13,95,114,101,115,111,108,118, + 101,95,110,97,109,101,134,3,0,0,115,10,0,0,0,16, + 2,12,1,8,1,8,1,20,1,114,17,0,0,0,114,211, + 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,60,0,0,0,116,0,124, + 0,131,1,155,0,100,1,157,2,125,3,116,1,160,2,124, + 3,116,3,161,2,1,0,124,0,160,4,124,1,124,2,161, + 2,125,4,124,4,100,0,117,0,114,25,100,0,83,0,116, + 5,124,1,124,4,131,2,83,0,41,2,78,122,53,46,102, + 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, + 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, + 101,40,41,41,6,114,6,0,0,0,114,101,0,0,0,114, + 102,0,0,0,114,169,0,0,0,114,184,0,0,0,114,104, + 0,0,0,41,5,218,6,102,105,110,100,101,114,114,20,0, + 0,0,114,181,0,0,0,114,108,0,0,0,114,122,0,0, + 0,32,32,32,32,32,114,5,0,0,0,218,17,95,102,105, + 110,100,95,115,112,101,99,95,108,101,103,97,99,121,143,3, + 0,0,115,12,0,0,0,14,1,12,2,12,1,8,1,4, + 1,10,1,114,17,0,0,0,114,213,0,0,0,99,3,0, + 0,0,0,0,0,0,0,0,0,0,10,0,0,0,67,0, + 0,0,115,30,1,0,0,116,0,106,1,125,3,124,3,100, + 1,117,0,114,11,116,2,100,2,131,1,130,1,124,3,115, + 19,116,3,160,4,100,3,116,5,161,2,1,0,124,0,116, + 0,106,6,118,0,125,4,124,3,68,0,93,112,125,5,116, + 7,131,0,53,0,1,0,9,0,124,5,106,8,125,6,110, + 27,35,0,4,0,116,9,121,142,1,0,1,0,1,0,116, + 10,124,5,124,0,124,1,131,3,125,7,124,7,100,1,117, + 0,114,61,89,0,100,1,4,0,4,0,131,3,1,0,113, + 26,89,0,110,7,37,0,124,6,124,0,124,1,124,2,131, + 3,125,7,100,1,4,0,4,0,131,3,1,0,110,11,35, + 0,49,0,115,81,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,124,7,100,1,117,1,114,138,124,4,115, + 134,124,0,116,0,106,6,118,0,114,134,116,0,106,6,124, + 0,25,0,125,8,9,0,124,8,106,11,125,9,110,14,35, + 0,4,0,116,9,121,141,1,0,1,0,1,0,124,7,6, + 0,89,0,2,0,1,0,83,0,37,0,124,9,100,1,117, + 0,114,130,124,7,2,0,1,0,83,0,124,9,2,0,1, + 0,83,0,124,7,2,0,1,0,83,0,113,26,100,1,83, + 0,119,0,119,0,41,4,122,21,70,105,110,100,32,97,32, + 109,111,100,117,108,101,39,115,32,115,112,101,99,46,78,122, + 53,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, + 115,32,78,111,110,101,44,32,80,121,116,104,111,110,32,105, + 115,32,108,105,107,101,108,121,32,115,104,117,116,116,105,110, + 103,32,100,111,119,110,122,22,115,121,115,46,109,101,116,97, + 95,112,97,116,104,32,105,115,32,101,109,112,116,121,41,12, + 114,18,0,0,0,218,9,109,101,116,97,95,112,97,116,104, + 114,88,0,0,0,114,101,0,0,0,114,102,0,0,0,114, + 169,0,0,0,114,105,0,0,0,114,200,0,0,0,114,183, + 0,0,0,114,2,0,0,0,114,213,0,0,0,114,113,0, + 0,0,41,10,114,20,0,0,0,114,181,0,0,0,114,182, + 0,0,0,114,214,0,0,0,90,9,105,115,95,114,101,108, + 111,97,100,114,212,0,0,0,114,183,0,0,0,114,109,0, + 0,0,114,110,0,0,0,114,113,0,0,0,32,32,32,32, + 32,32,32,32,32,32,114,5,0,0,0,218,10,95,102,105, + 110,100,95,115,112,101,99,153,3,0,0,115,76,0,0,0, + 6,2,8,1,8,2,4,3,12,1,10,5,8,1,8,1, + 2,1,8,1,2,128,12,1,12,1,8,1,2,1,12,250, + 4,5,2,128,12,3,12,248,22,128,8,9,14,2,10,1, + 2,1,8,1,2,128,12,1,12,4,2,128,8,2,8,1, + 8,2,8,2,2,239,4,19,2,243,2,244,115,63,0,0, + 0,159,1,65,12,5,161,3,37,4,164,1,65,12,5,165, + 17,63,11,182,1,65,12,5,189,9,65,12,5,193,12,4, + 65,16,13,193,17,3,65,16,13,193,40,3,65,44,2,193, + 44,9,65,57,9,194,13,1,65,57,9,194,14,1,63,11, + 114,215,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,67,0,0,0,115,110,0,0,0,116, + 0,124,0,116,1,131,2,115,14,116,2,100,1,160,3,116, + 4,124,0,131,1,161,1,131,1,130,1,124,2,100,2,107, + 0,114,22,116,5,100,3,131,1,130,1,124,2,100,2,107, + 4,114,41,116,0,124,1,116,1,131,2,115,35,116,2,100, + 4,131,1,130,1,124,1,115,41,116,6,100,5,131,1,130, + 1,124,0,115,53,124,2,100,2,107,2,114,51,116,5,100, + 6,131,1,130,1,100,7,83,0,100,7,83,0,41,8,122, + 28,86,101,114,105,102,121,32,97,114,103,117,109,101,110,116, + 115,32,97,114,101,32,34,115,97,110,101,34,46,122,31,109, + 111,100,117,108,101,32,110,97,109,101,32,109,117,115,116,32, + 98,101,32,115,116,114,44,32,110,111,116,32,123,125,114,26, + 0,0,0,122,18,108,101,118,101,108,32,109,117,115,116,32, + 98,101,32,62,61,32,48,122,31,95,95,112,97,99,107,97, + 103,101,95,95,32,110,111,116,32,115,101,116,32,116,111,32, + 97,32,115,116,114,105,110,103,122,54,97,116,116,101,109,112, + 116,101,100,32,114,101,108,97,116,105,118,101,32,105,109,112, + 111,114,116,32,119,105,116,104,32,110,111,32,107,110,111,119, + 110,32,112,97,114,101,110,116,32,112,97,99,107,97,103,101, + 122,17,69,109,112,116,121,32,109,111,100,117,108,101,32,110, + 97,109,101,78,41,7,218,10,105,115,105,110,115,116,97,110, + 99,101,218,3,115,116,114,218,9,84,121,112,101,69,114,114, + 111,114,114,51,0,0,0,114,3,0,0,0,218,10,86,97, + 108,117,101,69,114,114,111,114,114,88,0,0,0,169,3,114, + 20,0,0,0,114,209,0,0,0,114,210,0,0,0,32,32, + 32,114,5,0,0,0,218,13,95,115,97,110,105,116,121,95, + 99,104,101,99,107,200,3,0,0,115,24,0,0,0,10,2, + 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, + 12,2,8,1,8,255,114,17,0,0,0,114,221,0,0,0, + 122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101, + 100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,67,0,0,0,115,20,1, + 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, + 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, + 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, + 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, + 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, + 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, + 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, + 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, + 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, + 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, + 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, + 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, + 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, + 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, + 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, + 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, + 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, + 83,0,119,0,119,0,41,8,78,114,141,0,0,0,114,26, + 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,112,97,99,107,97,103,101,114,19,0,0, + 0,233,2,0,0,0,122,27,67,97,110,110,111,116,32,115, + 101,116,32,97,110,32,97,116,116,114,105,98,117,116,101,32, + 111,110,32,122,18,32,102,111,114,32,99,104,105,108,100,32, + 109,111,100,117,108,101,32,41,15,114,142,0,0,0,114,18, + 0,0,0,114,105,0,0,0,114,75,0,0,0,114,154,0, + 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, + 71,114,51,0,0,0,218,19,77,111,100,117,108,101,78,111, + 116,70,111,117,110,100,69,114,114,111,114,114,215,0,0,0, + 114,173,0,0,0,114,11,0,0,0,114,101,0,0,0,114, + 102,0,0,0,114,169,0,0,0,41,9,114,20,0,0,0, + 218,7,105,109,112,111,114,116,95,114,181,0,0,0,114,143, + 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, + 108,101,114,108,0,0,0,114,109,0,0,0,114,110,0,0, + 0,90,5,99,104,105,108,100,32,32,32,32,32,32,32,32, + 32,114,5,0,0,0,218,23,95,102,105,110,100,95,97,110, + 100,95,108,111,97,100,95,117,110,108,111,99,107,101,100,219, + 3,0,0,115,68,0,0,0,4,1,14,1,4,1,10,1, + 10,1,10,2,10,1,10,1,2,1,8,1,2,128,12,1, + 16,1,14,1,2,128,10,1,8,1,18,1,8,2,4,1, + 10,2,14,1,2,1,12,1,4,4,2,128,12,253,16,1, + 14,1,4,1,2,128,4,0,2,253,2,242,115,31,0,0, + 0,165,3,41,0,169,22,63,7,193,37,6,65,45,0,193, + 45,21,66,5,7,194,8,1,66,5,7,194,9,1,63,7, + 114,226,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,67,0,0,0,115,132,0,0,0,116, + 0,124,0,131,1,53,0,1,0,116,1,106,2,160,3,124, + 0,116,4,161,2,125,2,124,2,116,4,117,0,114,27,116, + 5,124,0,124,1,131,2,2,0,100,1,4,0,4,0,131, + 3,1,0,83,0,9,0,100,1,4,0,4,0,131,3,1, + 0,110,11,35,0,49,0,115,39,119,4,37,0,1,0,1, + 0,1,0,89,0,1,0,1,0,124,2,100,1,117,0,114, + 60,100,2,160,6,124,0,161,1,125,3,116,7,124,3,124, + 0,100,3,141,2,130,1,116,8,124,0,131,1,1,0,124, + 2,83,0,41,4,122,25,70,105,110,100,32,97,110,100,32, + 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,46, + 78,122,40,105,109,112,111,114,116,32,111,102,32,123,125,32, + 104,97,108,116,101,100,59,32,78,111,110,101,32,105,110,32, + 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, + 41,9,114,58,0,0,0,114,18,0,0,0,114,105,0,0, + 0,114,39,0,0,0,218,14,95,78,69,69,68,83,95,76, + 79,65,68,73,78,71,114,226,0,0,0,114,51,0,0,0, + 114,224,0,0,0,114,73,0,0,0,41,4,114,20,0,0, + 0,114,225,0,0,0,114,110,0,0,0,114,83,0,0,0, + 32,32,32,32,114,5,0,0,0,218,14,95,102,105,110,100, + 95,97,110,100,95,108,111,97,100,254,3,0,0,115,30,0, + 0,0,10,2,14,1,8,1,8,1,14,253,2,2,12,254, + 22,128,8,5,2,1,6,1,2,255,12,2,8,2,4,1, + 115,12,0,0,0,132,16,34,3,162,4,38,11,167,3,38, + 11,114,228,0,0,0,114,26,0,0,0,99,3,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,42,0,0,0,116,0,124,0,124,1,124,2,131,3,1, + 0,124,2,100,1,107,4,114,16,116,1,124,0,124,1,124, + 2,131,3,125,0,116,2,124,0,116,3,131,2,83,0,41, + 3,97,50,1,0,0,73,109,112,111,114,116,32,97,110,100, + 32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,117, + 108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,32, + 110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,103, + 101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,32, + 32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,111, + 109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,108, + 32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,32, + 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, + 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,103, + 114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,100, + 101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,117, + 110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,32, + 98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,109, + 111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,111, + 114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,117, + 100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,97, + 99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,116, + 104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,111, + 116,46,10,10,32,32,32,32,114,26,0,0,0,78,41,4, + 114,221,0,0,0,114,211,0,0,0,114,228,0,0,0,218, + 11,95,103,99,100,95,105,109,112,111,114,116,114,220,0,0, + 0,32,32,32,114,5,0,0,0,114,229,0,0,0,14,4, + 0,0,115,8,0,0,0,12,9,8,1,12,1,10,1,114, + 17,0,0,0,114,229,0,0,0,169,1,218,9,114,101,99, + 117,114,115,105,118,101,99,3,0,0,0,0,0,0,0,1, + 0,0,0,9,0,0,0,67,0,0,0,115,216,0,0,0, + 124,1,68,0,93,102,125,4,116,0,124,4,116,1,131,2, + 115,32,124,3,114,17,124,0,106,2,100,1,23,0,125,5, + 110,2,100,2,125,5,116,3,100,3,124,5,155,0,100,4, + 116,4,124,4,131,1,106,2,155,0,157,4,131,1,130,1, + 124,4,100,5,107,2,114,53,124,3,115,52,116,5,124,0, + 100,6,131,2,114,52,116,6,124,0,124,0,106,7,124,2, + 100,7,100,8,141,4,1,0,113,2,116,5,124,0,124,4, + 131,2,115,104,100,9,160,8,124,0,106,2,124,4,161,2, + 125,6,9,0,116,9,124,2,124,6,131,2,1,0,113,2, + 35,0,4,0,116,10,121,107,1,0,125,7,1,0,124,7, + 106,11,124,6,107,2,114,98,116,12,106,13,160,14,124,6, + 116,15,161,2,100,10,117,1,114,98,89,0,100,10,125,7, + 126,7,113,2,130,0,100,10,125,7,126,7,119,1,37,0, + 113,2,124,0,83,0,119,0,41,11,122,238,70,105,103,117, + 114,101,32,111,117,116,32,119,104,97,116,32,95,95,105,109, + 112,111,114,116,95,95,32,115,104,111,117,108,100,32,114,101, + 116,117,114,110,46,10,10,32,32,32,32,84,104,101,32,105, + 109,112,111,114,116,95,32,112,97,114,97,109,101,116,101,114, + 32,105,115,32,97,32,99,97,108,108,97,98,108,101,32,119, + 104,105,99,104,32,116,97,107,101,115,32,116,104,101,32,110, + 97,109,101,32,111,102,32,109,111,100,117,108,101,32,116,111, + 10,32,32,32,32,105,109,112,111,114,116,46,32,73,116,32, + 105,115,32,114,101,113,117,105,114,101,100,32,116,111,32,100, + 101,99,111,117,112,108,101,32,116,104,101,32,102,117,110,99, + 116,105,111,110,32,102,114,111,109,32,97,115,115,117,109,105, + 110,103,32,105,109,112,111,114,116,108,105,98,39,115,10,32, + 32,32,32,105,109,112,111,114,116,32,105,109,112,108,101,109, + 101,110,116,97,116,105,111,110,32,105,115,32,100,101,115,105, + 114,101,100,46,10,10,32,32,32,32,122,8,46,95,95,97, + 108,108,95,95,122,13,96,96,102,114,111,109,32,108,105,115, + 116,39,39,122,8,73,116,101,109,32,105,110,32,122,18,32, + 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, + 32,250,1,42,218,7,95,95,97,108,108,95,95,84,114,230, + 0,0,0,114,206,0,0,0,78,41,16,114,216,0,0,0, + 114,217,0,0,0,114,8,0,0,0,114,218,0,0,0,114, + 3,0,0,0,114,10,0,0,0,218,16,95,104,97,110,100, + 108,101,95,102,114,111,109,108,105,115,116,114,233,0,0,0, + 114,51,0,0,0,114,75,0,0,0,114,224,0,0,0,114, + 20,0,0,0,114,18,0,0,0,114,105,0,0,0,114,39, + 0,0,0,114,227,0,0,0,41,8,114,110,0,0,0,218, + 8,102,114,111,109,108,105,115,116,114,225,0,0,0,114,231, + 0,0,0,218,1,120,90,5,119,104,101,114,101,90,9,102, + 114,111,109,95,110,97,109,101,90,3,101,120,99,32,32,32, + 32,32,32,32,32,114,5,0,0,0,114,234,0,0,0,29, + 4,0,0,115,58,0,0,0,8,10,10,1,4,1,12,1, + 4,2,10,1,8,1,8,255,8,2,14,1,10,1,2,1, + 6,255,2,128,10,2,14,1,2,1,12,1,2,128,12,1, + 10,4,16,1,2,255,10,2,2,1,10,128,2,245,4,12, + 2,248,115,36,0,0,0,193,2,5,65,8,2,193,8,7, + 65,39,9,193,15,14,65,35,9,193,34,1,65,35,9,193, + 35,4,65,39,9,193,43,1,65,39,9,114,234,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0, + 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, + 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, + 100,3,117,1,114,41,124,2,100,3,117,1,114,39,124,1, + 124,2,106,1,107,3,114,39,116,2,160,3,100,4,124,1, + 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, + 100,7,100,8,166,3,1,0,124,1,83,0,124,2,100,3, + 117,1,114,48,124,2,106,1,83,0,116,2,160,3,100,9, + 116,4,100,7,100,8,166,3,1,0,124,0,100,10,25,0, + 125,1,100,11,124,0,118,1,114,71,124,1,160,5,100,12, + 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, + 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, + 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, + 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, + 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, + 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, + 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, + 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, + 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, + 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, + 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, + 46,10,10,32,32,32,32,114,158,0,0,0,114,113,0,0, + 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, + 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, + 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, + 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, + 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, + 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, + 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, + 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, + 110,100,32,95,95,112,97,116,104,95,95,114,8,0,0,0, + 114,154,0,0,0,114,141,0,0,0,114,26,0,0,0,41, + 6,114,39,0,0,0,114,143,0,0,0,114,101,0,0,0, + 114,102,0,0,0,114,169,0,0,0,114,142,0,0,0,41, + 3,218,7,103,108,111,98,97,108,115,114,209,0,0,0,114, + 109,0,0,0,32,32,32,114,5,0,0,0,218,17,95,99, + 97,108,99,95,95,95,112,97,99,107,97,103,101,95,95,66, + 4,0,0,115,42,0,0,0,10,7,10,1,8,1,18,1, + 6,1,2,1,4,255,4,1,6,255,4,2,6,254,4,3, + 8,1,6,1,6,2,4,2,6,254,8,3,8,1,14,1, + 4,1,114,17,0,0,0,114,240,0,0,0,114,23,0,0, + 0,99,5,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,67,0,0,0,115,174,0,0,0,124,4,100,1,107, + 2,114,9,116,0,124,0,131,1,125,5,110,18,124,1,100, + 2,117,1,114,15,124,1,110,1,105,0,125,6,116,1,124, + 6,131,1,125,7,116,0,124,0,124,7,124,4,131,3,125, + 5,124,3,115,74,124,4,100,1,107,2,114,42,116,0,124, + 0,160,2,100,3,161,1,100,1,25,0,131,1,83,0,124, + 0,115,46,124,5,83,0,116,3,124,0,131,1,116,3,124, + 0,160,2,100,3,161,1,100,1,25,0,131,1,24,0,125, + 8,116,4,106,5,124,5,106,6,100,2,116,3,124,5,106, + 6,131,1,124,8,24,0,133,2,25,0,25,0,83,0,116, + 7,124,5,100,4,131,2,114,85,116,8,124,5,124,3,116, + 0,131,3,83,0,124,5,83,0,41,5,97,215,1,0,0, + 73,109,112,111,114,116,32,97,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,84,104,101,32,39,103,108,111,98,97, + 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, + 117,115,101,100,32,116,111,32,105,110,102,101,114,32,119,104, + 101,114,101,32,116,104,101,32,105,109,112,111,114,116,32,105, + 115,32,111,99,99,117,114,114,105,110,103,32,102,114,111,109, + 10,32,32,32,32,116,111,32,104,97,110,100,108,101,32,114, + 101,108,97,116,105,118,101,32,105,109,112,111,114,116,115,46, + 32,84,104,101,32,39,108,111,99,97,108,115,39,32,97,114, + 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, + 100,46,32,84,104,101,10,32,32,32,32,39,102,114,111,109, + 108,105,115,116,39,32,97,114,103,117,109,101,110,116,32,115, + 112,101,99,105,102,105,101,115,32,119,104,97,116,32,115,104, + 111,117,108,100,32,101,120,105,115,116,32,97,115,32,97,116, + 116,114,105,98,117,116,101,115,32,111,110,32,116,104,101,32, + 109,111,100,117,108,101,10,32,32,32,32,98,101,105,110,103, + 32,105,109,112,111,114,116,101,100,32,40,101,46,103,46,32, + 96,96,102,114,111,109,32,109,111,100,117,108,101,32,105,109, + 112,111,114,116,32,60,102,114,111,109,108,105,115,116,62,96, + 96,41,46,32,32,84,104,101,32,39,108,101,118,101,108,39, + 10,32,32,32,32,97,114,103,117,109,101,110,116,32,114,101, + 112,114,101,115,101,110,116,115,32,116,104,101,32,112,97,99, + 107,97,103,101,32,108,111,99,97,116,105,111,110,32,116,111, + 32,105,109,112,111,114,116,32,102,114,111,109,32,105,110,32, + 97,32,114,101,108,97,116,105,118,101,10,32,32,32,32,105, + 109,112,111,114,116,32,40,101,46,103,46,32,96,96,102,114, + 111,109,32,46,46,112,107,103,32,105,109,112,111,114,116,32, + 109,111,100,96,96,32,119,111,117,108,100,32,104,97,118,101, + 32,97,32,39,108,101,118,101,108,39,32,111,102,32,50,41, + 46,10,10,32,32,32,32,114,26,0,0,0,78,114,141,0, + 0,0,114,154,0,0,0,41,9,114,229,0,0,0,114,240, + 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,208, + 0,0,0,114,18,0,0,0,114,105,0,0,0,114,8,0, + 0,0,114,10,0,0,0,114,234,0,0,0,41,9,114,20, + 0,0,0,114,239,0,0,0,218,6,108,111,99,97,108,115, + 114,235,0,0,0,114,210,0,0,0,114,110,0,0,0,90, + 8,103,108,111,98,97,108,115,95,114,209,0,0,0,90,7, + 99,117,116,95,111,102,102,32,32,32,32,32,32,32,32,32, + 114,5,0,0,0,218,10,95,95,105,109,112,111,114,116,95, + 95,93,4,0,0,115,30,0,0,0,8,11,10,1,16,2, + 8,1,12,1,4,1,8,3,18,1,4,1,4,1,26,4, + 30,3,10,1,12,1,4,2,114,17,0,0,0,114,243,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,115,38,0,0,0,116,0,160,1, + 124,0,161,1,125,1,124,1,100,0,117,0,114,15,116,2, + 100,1,124,0,23,0,131,1,130,1,116,3,124,1,131,1, + 83,0,41,2,78,122,25,110,111,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,32,110,97,109,101,100,32, + 41,4,114,175,0,0,0,114,183,0,0,0,114,88,0,0, + 0,114,173,0,0,0,41,2,114,20,0,0,0,114,109,0, + 0,0,32,32,114,5,0,0,0,218,18,95,98,117,105,108, + 116,105,110,95,102,114,111,109,95,110,97,109,101,130,4,0, + 0,115,8,0,0,0,10,1,8,1,12,1,8,1,114,17, + 0,0,0,114,244,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,166,0, + 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, + 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, + 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, + 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, + 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, + 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, + 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, + 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, + 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, + 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, + 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, + 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, + 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, + 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, + 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, + 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, + 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, + 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, + 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, + 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, + 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, + 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, + 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, + 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, + 10,10,32,32,32,32,41,3,114,27,0,0,0,114,101,0, + 0,0,114,72,0,0,0,78,41,15,114,65,0,0,0,114, + 18,0,0,0,114,3,0,0,0,114,105,0,0,0,218,5, + 105,116,101,109,115,114,216,0,0,0,114,87,0,0,0,114, + 175,0,0,0,114,98,0,0,0,114,193,0,0,0,114,155, + 0,0,0,114,161,0,0,0,114,8,0,0,0,114,244,0, + 0,0,114,11,0,0,0,41,10,218,10,115,121,115,95,109, + 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, + 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, + 20,0,0,0,114,110,0,0,0,114,122,0,0,0,114,109, + 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, + 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,32,32, + 32,32,32,32,32,32,32,32,114,5,0,0,0,218,6,95, + 115,101,116,117,112,137,4,0,0,115,40,0,0,0,4,9, + 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, + 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, + 10,2,14,1,4,251,114,17,0,0,0,114,248,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,38,0,0,0,116,0,124,0,124,1, + 131,2,1,0,116,1,106,2,160,3,116,4,161,1,1,0, + 116,1,106,2,160,3,116,5,161,1,1,0,100,1,83,0, + 41,2,122,48,73,110,115,116,97,108,108,32,105,109,112,111, + 114,116,101,114,115,32,102,111,114,32,98,117,105,108,116,105, + 110,32,97,110,100,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,78,41,6,114,248,0,0,0,114,18,0,0, + 0,114,214,0,0,0,114,132,0,0,0,114,175,0,0,0, + 114,193,0,0,0,41,2,114,246,0,0,0,114,247,0,0, + 0,32,32,114,5,0,0,0,218,8,95,105,110,115,116,97, + 108,108,172,4,0,0,115,6,0,0,0,10,2,12,2,16, + 1,114,17,0,0,0,114,249,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,32,0,0,0,100,1,100,2,108,0,125,0,124,0,97, + 1,124,0,160,2,116,3,106,4,116,5,25,0,161,1,1, + 0,100,2,83,0,41,3,122,57,73,110,115,116,97,108,108, + 32,105,109,112,111,114,116,101,114,115,32,116,104,97,116,32, + 114,101,113,117,105,114,101,32,101,120,116,101,114,110,97,108, + 32,102,105,108,101,115,121,115,116,101,109,32,97,99,99,101, + 115,115,114,26,0,0,0,78,41,6,218,26,95,102,114,111, + 122,101,110,95,105,109,112,111,114,116,108,105,98,95,101,120, + 116,101,114,110,97,108,114,139,0,0,0,114,249,0,0,0, + 114,18,0,0,0,114,105,0,0,0,114,8,0,0,0,41, + 1,114,250,0,0,0,32,114,5,0,0,0,218,27,95,105, + 110,115,116,97,108,108,95,101,120,116,101,114,110,97,108,95, + 105,109,112,111,114,116,101,114,115,180,4,0,0,115,6,0, + 0,0,8,3,4,1,20,1,114,17,0,0,0,114,251,0, + 0,0,114,190,0,0,0,114,0,0,0,0,114,25,0,0, + 0,41,4,78,78,114,23,0,0,0,114,26,0,0,0,41, + 54,114,9,0,0,0,114,6,0,0,0,114,27,0,0,0, + 114,101,0,0,0,114,72,0,0,0,114,139,0,0,0,114, + 16,0,0,0,114,21,0,0,0,114,67,0,0,0,114,38, + 0,0,0,114,48,0,0,0,114,22,0,0,0,114,24,0, + 0,0,114,56,0,0,0,114,58,0,0,0,114,61,0,0, + 0,114,73,0,0,0,114,75,0,0,0,114,84,0,0,0, + 114,95,0,0,0,114,100,0,0,0,114,111,0,0,0,114, + 124,0,0,0,114,125,0,0,0,114,104,0,0,0,114,155, + 0,0,0,114,161,0,0,0,114,165,0,0,0,114,119,0, + 0,0,114,106,0,0,0,114,172,0,0,0,114,173,0,0, + 0,114,107,0,0,0,114,175,0,0,0,114,193,0,0,0, + 114,200,0,0,0,114,211,0,0,0,114,213,0,0,0,114, + 215,0,0,0,114,221,0,0,0,90,15,95,69,82,82,95, + 77,83,71,95,80,82,69,70,73,88,114,223,0,0,0,114, + 226,0,0,0,218,6,111,98,106,101,99,116,114,227,0,0, + 0,114,228,0,0,0,114,229,0,0,0,114,234,0,0,0, + 114,240,0,0,0,114,243,0,0,0,114,244,0,0,0,114, + 248,0,0,0,114,249,0,0,0,114,251,0,0,0,114,23, + 0,0,0,114,5,0,0,0,218,8,60,109,111,100,117,108, + 101,62,1,0,0,0,115,104,0,0,0,4,0,8,22,4, + 9,4,1,4,1,4,3,8,3,8,8,4,8,4,2,16, + 3,14,4,14,77,14,21,8,16,8,37,8,17,14,11,8, + 8,8,11,8,12,8,19,14,26,16,101,10,26,14,45,8, + 72,8,17,8,17,8,30,8,36,8,45,14,15,14,80,14, + 85,8,13,8,9,10,10,8,47,4,16,8,1,8,2,6, + 32,8,3,10,16,14,15,8,37,10,27,8,37,8,7,8, + 35,12,8,114,17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 69dc6cad421c1c..f8642890580d7b 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -92,1232 +92,1256 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,3,0,0,0,3,0,0,0, - 115,62,0,0,0,116,0,106,1,160,2,116,3,161,1,114, - 25,116,0,106,1,160,2,116,4,161,1,114,15,100,1,137, - 1,110,2,100,2,137,1,135,1,102,1,100,3,100,4,132, - 8,125,0,124,0,83,0,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,2,0,0,0,19,0,0,0,115,20,0,0,0,116, - 0,106,1,106,2,12,0,111,9,136,0,116,3,106,4,118, - 0,83,0,41,2,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,78,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,169,1,218,3,107,101,121,128,114,7, - 0,0,0,218,11,95,114,101,108,97,120,95,99,97,115,101, - 67,0,0,0,243,2,0,0,0,20,2,114,9,0,0,0, - 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,1,0,0,0,83,0,0,0,243,4,0,0, - 0,100,1,83,0,41,3,122,53,84,114,117,101,32,105,102, + 115,64,0,0,0,135,1,116,0,106,1,160,2,116,3,161, + 1,114,26,116,0,106,1,160,2,116,4,161,1,114,16,100, + 1,138,1,110,2,100,2,138,1,136,1,102,1,100,3,100, + 4,132,8,125,0,124,0,83,0,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,2,0,0,0,19,0,0,0,115,20,0,0, + 0,116,0,106,1,106,2,12,0,111,9,137,0,116,3,106, + 4,118,0,83,0,41,2,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,46,70,78, - 114,12,0,0,0,114,12,0,0,0,114,7,0,0,0,114, - 22,0,0,0,71,0,0,0,243,2,0,0,0,4,2,114, - 9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0,0,32, - 64,114,7,0,0,0,218,16,95,109,97,107,101,95,114,101, - 108,97,120,95,99,97,115,101,60,0,0,0,115,16,0,0, - 0,12,1,12,1,6,1,4,2,12,2,4,7,8,253,4, - 3,114,9,0,0,0,114,30,0,0,0,99,1,0,0,0, - 0,0,0,0,0,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,5,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,78, - 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101, - 115,41,1,218,1,120,32,114,7,0,0,0,218,12,95,112, - 97,99,107,95,117,105,110,116,51,50,79,0,0,0,114,23, - 0,0,0,114,9,0,0,0,114,37,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, - 0,0,243,28,0,0,0,116,0,124,0,131,1,100,1,107, - 2,115,8,74,0,130,1,116,1,160,2,124,0,100,2,161, - 2,83,0,41,4,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,32,0,0,0,114,33,0,0,0, - 78,169,3,114,4,0,0,0,114,34,0,0,0,218,10,102, - 114,111,109,95,98,121,116,101,115,169,1,218,4,100,97,116, - 97,32,114,7,0,0,0,218,14,95,117,110,112,97,99,107, - 95,117,105,110,116,51,50,84,0,0,0,243,4,0,0,0, - 16,2,12,1,114,9,0,0,0,114,43,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114,41,0,0,0, - 32,114,7,0,0,0,218,14,95,117,110,112,97,99,107,95, - 117,105,110,116,49,54,89,0,0,0,114,44,0,0,0,114, - 9,0,0,0,114,46,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,71,0,0,0,115,228, - 0,0,0,124,0,115,4,100,1,83,0,116,0,124,0,131, - 1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124,3,160,4,116, - 5,161,1,115,38,124,3,160,6,116,5,161,1,114,51,124, - 3,160,7,116,8,161,1,112,44,124,1,125,1,116,9,124, - 4,23,0,103,1,125,2,113,24,124,3,160,6,100,4,161, - 1,114,76,124,1,160,10,161,0,124,3,160,10,161,0,107, - 3,114,70,124,3,125,1,124,4,103,1,125,2,113,24,124, - 2,160,11,124,4,161,1,1,0,113,24,124,3,112,79,124, - 1,125,1,124,2,160,11,124,4,161,1,1,0,113,24,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,107,124,2,100,3,25,0,115, - 107,124,1,116,9,23,0,83,0,124,1,116,9,160,12,124, - 2,161,1,23,0,83,0,41,8,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,10,0,0,0,114, - 3,0,0,0,114,0,0,0,0,114,11,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,83, - 0,0,0,243,26,0,0,0,103,0,124,0,93,9,125,1, - 124,1,114,2,124,1,160,0,116,1,161,1,145,2,113,2, - 83,0,114,12,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,41,2,114,5,0,0,0,218,1,112,32,32,114,7, - 0,0,0,218,10,60,108,105,115,116,99,111,109,112,62,119, - 0,0,0,115,2,0,0,0,26,0,114,9,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,78, - 41,13,114,4,0,0,0,218,3,109,97,112,114,19,0,0, - 0,218,15,95,112,97,116,104,95,115,112,108,105,116,114,111, - 111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32,114,7,0,0, - 0,218,10,95,112,97,116,104,95,106,111,105,110,96,0,0, - 0,115,42,0,0,0,4,2,4,1,12,1,8,1,4,1, - 4,1,20,1,20,1,14,1,12,1,10,1,16,1,4,3, - 8,1,12,2,8,2,12,1,14,1,20,1,8,2,14,1, - 114,9,0,0,0,114,67,0,0,0,99,0,0,0,0,0, - 0,0,0,0,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,4,114,47,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 83,0,0,0,114,48,0,0,0,114,12,0,0,0,114,49, - 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, - 32,32,114,7,0,0,0,114,53,0,0,0,128,0,0,0, - 115,6,0,0,0,6,0,6,1,14,255,114,9,0,0,0, - 114,54,0,0,0,78,41,2,114,59,0,0,0,114,62,0, - 0,0,41,1,114,63,0,0,0,32,114,7,0,0,0,114, - 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, - 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,3,0,0,0,115,66,0, - 0,0,116,0,135,2,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,19, - 100,4,136,2,102,2,83,0,136,2,100,5,124,1,133,2, - 25,0,136,2,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,4,0,0,0,51,0,0,0,115,26,0, - 0,0,129,0,124,0,93,8,125,1,136,2,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,41,3,114,5,0,0,0,114, - 52,0,0,0,114,65,0,0,0,32,32,128,114,7,0,0, - 0,114,8,0,0,0,134,0,0,0,115,4,0,0,0,6, - 128,20,0,114,9,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,10,0, - 0,0,78,114,3,0,0,0,41,2,218,3,109,97,120,114, - 51,0,0,0,41,3,114,65,0,0,0,218,1,105,114,65, - 0,0,0,96,32,64,114,7,0,0,0,218,11,95,112,97, - 116,104,95,115,112,108,105,116,132,0,0,0,115,8,0,0, - 0,22,2,8,1,8,1,28,1,114,9,0,0,0,114,73, - 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19,0,0, - 0,90,4,115,116,97,116,169,1,114,65,0,0,0,32,114, - 7,0,0,0,218,10,95,112,97,116,104,95,115,116,97,116, - 140,0,0,0,115,2,0,0,0,10,7,114,9,0,0,0, - 114,75,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,50,0,0,0,9, - 0,116,0,124,0,131,1,125,2,110,11,35,0,4,0,116, - 1,121,24,1,0,1,0,1,0,89,0,100,1,83,0,37, - 0,124,2,106,2,100,2,64,0,124,1,107,2,83,0,119, - 0,41,4,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,78,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,32,32, - 32,114,7,0,0,0,218,18,95,112,97,116,104,95,105,115, - 95,109,111,100,101,95,116,121,112,101,150,0,0,0,115,16, - 0,0,0,2,2,10,1,2,128,12,1,6,1,2,128,14, - 1,2,254,115,12,0,0,0,129,4,6,0,134,7,16,7, - 152,1,16,7,114,79,0,0,0,99,1,0,0,0,0,0, - 0,0,0,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,3,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,78,41,1,114,79,0,0,0,114,74,0, - 0,0,32,114,7,0,0,0,218,12,95,112,97,116,104,95, - 105,115,102,105,108,101,159,0,0,0,243,2,0,0,0,10, - 2,114,9,0,0,0,114,80,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, - 115,22,0,0,0,124,0,115,6,116,0,160,1,161,0,125, - 0,116,2,124,0,100,1,131,2,83,0,41,3,122,30,82, + 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,78,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,169,1,218,3,107,101,121,128, + 114,7,0,0,0,218,11,95,114,101,108,97,120,95,99,97, + 115,101,67,0,0,0,243,2,0,0,0,20,2,114,9,0, + 0,0,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,1,0,0,0,83,0,0,0,243,4, + 0,0,0,100,1,83,0,41,3,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,78,114,12,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,22,0,0,0,71,0,0,0,243,2,0,0,0,4, + 2,114,9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0, + 0,32,64,114,7,0,0,0,218,16,95,109,97,107,101,95, + 114,101,108,97,120,95,99,97,115,101,60,0,0,0,115,18, + 0,0,0,2,128,12,1,12,1,6,1,4,2,12,2,4, + 7,8,253,4,3,114,9,0,0,0,114,30,0,0,0,99, + 1,0,0,0,0,0,0,0,0,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,5,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,78,41,2,218,3,105,110,116,218,8,116,111,95, + 98,121,116,101,115,41,1,218,1,120,32,114,7,0,0,0, + 218,12,95,112,97,99,107,95,117,105,110,116,51,50,79,0, + 0,0,114,23,0,0,0,114,9,0,0,0,114,37,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,67,0,0,0,243,28,0,0,0,116,0,124,0,131, + 1,100,1,107,2,115,8,74,0,130,1,116,1,160,2,124, + 0,100,2,161,2,83,0,41,4,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,32,0,0,0,114, + 33,0,0,0,78,169,3,114,4,0,0,0,114,34,0,0, + 0,218,10,102,114,111,109,95,98,121,116,101,115,169,1,218, + 4,100,97,116,97,32,114,7,0,0,0,218,14,95,117,110, + 112,97,99,107,95,117,105,110,116,51,50,84,0,0,0,243, + 4,0,0,0,16,2,12,1,114,9,0,0,0,114,43,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114, + 41,0,0,0,32,114,7,0,0,0,218,14,95,117,110,112, + 97,99,107,95,117,105,110,116,49,54,89,0,0,0,114,44, + 0,0,0,114,9,0,0,0,114,46,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,71,0, + 0,0,115,228,0,0,0,124,0,115,4,100,1,83,0,116, + 0,124,0,131,1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124, + 3,160,4,116,5,161,1,115,38,124,3,160,6,116,5,161, + 1,114,51,124,3,160,7,116,8,161,1,112,44,124,1,125, + 1,116,9,124,4,23,0,103,1,125,2,113,24,124,3,160, + 6,100,4,161,1,114,76,124,1,160,10,161,0,124,3,160, + 10,161,0,107,3,114,70,124,3,125,1,124,4,103,1,125, + 2,113,24,124,2,160,11,124,4,161,1,1,0,113,24,124, + 3,112,79,124,1,125,1,124,2,160,11,124,4,161,1,1, + 0,113,24,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,107,124,2,100, + 3,25,0,115,107,124,1,116,9,23,0,83,0,124,1,116, + 9,160,12,124,2,161,1,23,0,83,0,41,8,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,105,115,100,105,114,46,105,0,64, - 0,0,78,41,3,114,19,0,0,0,218,6,103,101,116,99, - 119,100,114,79,0,0,0,114,74,0,0,0,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,105,115,100,105,114,164, - 0,0,0,115,6,0,0,0,4,2,8,1,10,1,114,9, - 0,0,0,114,83,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,62,0, - 0,0,124,0,115,4,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,30,124,1,160,4, - 100,6,161,1,112,30,124,1,160,5,100,4,161,1,83,0, - 41,8,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,3,0,0,0,122,2,92,92,78,41,6,114,19, - 0,0,0,114,56,0,0,0,218,7,114,101,112,108,97,99, - 101,114,4,0,0,0,114,27,0,0,0,114,58,0,0,0, - 41,2,114,65,0,0,0,114,64,0,0,0,32,32,114,7, - 0,0,0,218,11,95,112,97,116,104,95,105,115,97,98,115, - 172,0,0,0,115,8,0,0,0,4,2,4,1,22,1,32, - 1,114,9,0,0,0,114,86,0,0,0,99,1,0,0,0, + 115,46,112,97,116,104,46,106,111,105,110,40,41,46,114,10, + 0,0,0,114,3,0,0,0,114,0,0,0,0,114,11,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,83,0,0,0,243,26,0,0,0,103,0,124,0, + 93,9,125,1,124,1,114,2,124,1,160,0,116,1,161,1, + 145,2,113,2,83,0,114,12,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,41,2,114,5,0,0,0,218,1,112, + 32,32,114,7,0,0,0,218,10,60,108,105,115,116,99,111, + 109,112,62,119,0,0,0,115,2,0,0,0,26,0,114,9, + 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,78,41,13,114,4,0,0,0,218,3,109,97,112, + 114,19,0,0,0,218,15,95,112,97,116,104,95,115,112,108, + 105,116,114,111,111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32, + 114,7,0,0,0,218,10,95,112,97,116,104,95,106,111,105, + 110,96,0,0,0,115,42,0,0,0,4,2,4,1,12,1, + 8,1,4,1,4,1,20,1,20,1,14,1,12,1,10,1, + 16,1,4,3,8,1,12,2,8,2,12,1,14,1,20,1, + 8,2,14,1,114,9,0,0,0,114,67,0,0,0,99,0, + 0,0,0,0,0,0,0,0,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,4,114,47, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,83,0,0,0,114,48,0,0,0,114,12,0, + 0,0,114,49,0,0,0,41,2,114,5,0,0,0,218,4, + 112,97,114,116,32,32,114,7,0,0,0,114,53,0,0,0, + 128,0,0,0,115,6,0,0,0,6,0,6,1,14,255,114, + 9,0,0,0,114,54,0,0,0,78,41,2,114,59,0,0, + 0,114,62,0,0,0,41,1,114,63,0,0,0,32,114,7, + 0,0,0,114,67,0,0,0,126,0,0,0,115,6,0,0, + 0,10,2,2,1,8,255,114,9,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, + 0,115,68,0,0,0,135,2,116,0,136,2,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,20,100,4,137,2,102,2,83,0,137,2, + 100,5,124,1,133,2,25,0,137,2,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,4,0,0,0,51, + 0,0,0,115,26,0,0,0,129,0,124,0,93,8,125,1, + 137,2,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,41,3, + 114,5,0,0,0,114,52,0,0,0,114,65,0,0,0,32, + 32,128,114,7,0,0,0,114,8,0,0,0,134,0,0,0, + 115,4,0,0,0,6,128,20,0,114,9,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,10,0,0,0,78,114,3,0,0,0,41,2, + 218,3,109,97,120,114,51,0,0,0,41,3,114,65,0,0, + 0,218,1,105,114,65,0,0,0,96,32,64,114,7,0,0, + 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, + 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, + 1,114,9,0,0,0,114,73,0,0,0,99,1,0,0,0, 0,0,0,0,0,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, - 2,114,84,0,0,0,78,41,2,114,27,0,0,0,114,51, - 0,0,0,114,74,0,0,0,32,114,7,0,0,0,114,86, - 0,0,0,180,0,0,0,114,81,0,0,0,114,9,0,0, - 0,233,182,1,0,0,99,3,0,0,0,0,0,0,0,0, - 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, - 9,0,116,7,160,8,124,4,100,3,161,2,53,0,125,5, - 124,5,160,9,124,1,161,1,1,0,100,4,4,0,4,0, - 131,3,1,0,110,11,35,0,49,0,115,48,119,4,37,0, - 1,0,1,0,1,0,89,0,1,0,1,0,116,2,160,10, - 124,3,124,0,161,2,1,0,100,4,83,0,35,0,4,0, - 116,11,121,88,1,0,1,0,1,0,9,0,116,2,160,12, - 124,3,161,1,1,0,130,0,35,0,4,0,116,11,121,87, - 1,0,1,0,1,0,89,0,130,0,37,0,37,0,119,0, - 119,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, - 87,0,0,0,90,2,119,98,78,41,13,218,6,102,111,114, - 109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0,0,90,6,117,110,108, - 105,110,107,41,6,114,65,0,0,0,114,42,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,32,32,32,32,32,32,114,7, - 0,0,0,218,13,95,119,114,105,116,101,95,97,116,111,109, - 105,99,185,0,0,0,115,44,0,0,0,16,5,6,1,22, - 1,4,255,2,2,14,3,10,1,12,255,22,128,16,2,2, - 128,12,1,2,1,10,1,2,3,2,128,12,254,2,1,2, - 1,4,128,2,254,2,253,115,69,0,0,0,153,6,62,0, - 159,6,43,3,165,6,62,0,171,4,47,11,175,1,62,0, - 176,3,47,11,179,9,62,0,190,7,65,22,7,193,6,5, - 65,12,6,193,11,1,65,22,7,193,12,7,65,21,13,193, - 19,3,65,22,7,193,23,1,65,21,13,193,24,1,65,22, - 7,114,95,0,0,0,105,126,13,0,0,114,45,0,0,0, - 114,33,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,119,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,5,0,0, - 0,67,0,0,0,115,80,1,0,0,124,1,100,1,117,1, - 114,26,116,0,160,1,100,2,116,2,161,2,1,0,124,2, - 100,1,117,1,114,20,100,3,125,3,116,3,124,3,131,1, - 130,1,124,1,114,24,100,4,110,1,100,5,125,2,116,4, + 115,10,0,0,0,116,0,160,1,124,0,161,1,83,0,41, + 2,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,78,41,2,114,19,0,0,0,90,4,115,116,97,116,169, + 1,114,65,0,0,0,32,114,7,0,0,0,218,10,95,112, + 97,116,104,95,115,116,97,116,140,0,0,0,115,2,0,0, + 0,10,7,114,9,0,0,0,114,75,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,50,0,0,0,9,0,116,0,124,0,131,1,125, + 2,110,11,35,0,4,0,116,1,121,24,1,0,1,0,1, + 0,89,0,100,1,83,0,37,0,124,2,106,2,100,2,64, + 0,124,1,107,2,83,0,119,0,41,4,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,78,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,32,32,32,114,7,0,0,0,218,18, + 95,112,97,116,104,95,105,115,95,109,111,100,101,95,116,121, + 112,101,150,0,0,0,115,16,0,0,0,2,2,10,1,2, + 128,12,1,6,1,2,128,14,1,2,254,115,12,0,0,0, + 129,4,6,0,134,7,16,7,152,1,16,7,114,79,0,0, + 0,99,1,0,0,0,0,0,0,0,0,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,3,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,78,41,1, + 114,79,0,0,0,114,74,0,0,0,32,114,7,0,0,0, + 218,12,95,112,97,116,104,95,105,115,102,105,108,101,159,0, + 0,0,243,2,0,0,0,10,2,114,9,0,0,0,114,80, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,67,0,0,0,115,22,0,0,0,124,0,115, + 6,116,0,160,1,161,0,125,0,116,2,124,0,100,1,131, + 2,83,0,41,3,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,78,41,3,114,19,0, + 0,0,218,6,103,101,116,99,119,100,114,79,0,0,0,114, + 74,0,0,0,32,114,7,0,0,0,218,11,95,112,97,116, + 104,95,105,115,100,105,114,164,0,0,0,115,6,0,0,0, + 4,2,8,1,10,1,114,9,0,0,0,114,83,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,62,0,0,0,124,0,115,4,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,30,124,1,160,4,100,6,161,1,112,30,124,1, + 160,5,100,4,161,1,83,0,41,8,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,3,0,0,0,122, + 2,92,92,78,41,6,114,19,0,0,0,114,56,0,0,0, + 218,7,114,101,112,108,97,99,101,114,4,0,0,0,114,27, + 0,0,0,114,58,0,0,0,41,2,114,65,0,0,0,114, + 64,0,0,0,32,32,114,7,0,0,0,218,11,95,112,97, + 116,104,95,105,115,97,98,115,172,0,0,0,115,8,0,0, + 0,4,2,4,1,22,1,32,1,114,9,0,0,0,114,86, + 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,114,84,0,0,0,78,41, + 2,114,27,0,0,0,114,51,0,0,0,114,74,0,0,0, + 32,114,7,0,0,0,114,86,0,0,0,180,0,0,0,114, + 81,0,0,0,114,9,0,0,0,233,182,1,0,0,99,3, + 0,0,0,0,0,0,0,0,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,9,0,116,7,160,8,124,4, + 100,3,161,2,53,0,125,5,124,5,160,9,124,1,161,1, + 1,0,100,4,4,0,4,0,131,3,1,0,110,11,35,0, + 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, + 1,0,1,0,116,2,160,10,124,3,124,0,161,2,1,0, + 100,4,83,0,35,0,4,0,116,11,121,88,1,0,1,0, + 1,0,9,0,116,2,160,12,124,3,161,1,1,0,130,0, + 35,0,4,0,116,11,121,87,1,0,1,0,1,0,89,0, + 130,0,37,0,37,0,119,0,119,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,87,0,0,0,90,2,119,98, + 78,41,13,218,6,102,111,114,109,97,116,218,2,105,100,114, + 19,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,85,0,0,0,114,76, + 0,0,0,90,6,117,110,108,105,110,107,41,6,114,65,0, + 0,0,114,42,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, + 32,32,32,32,32,32,114,7,0,0,0,218,13,95,119,114, + 105,116,101,95,97,116,111,109,105,99,185,0,0,0,115,44, + 0,0,0,16,5,6,1,22,1,4,255,2,2,14,3,10, + 1,12,255,22,128,16,2,2,128,12,1,2,1,10,1,2, + 3,2,128,12,254,2,1,2,1,4,128,2,254,2,253,115, + 69,0,0,0,153,6,62,0,159,6,43,3,165,6,62,0, + 171,4,47,11,175,1,62,0,176,3,47,11,179,9,62,0, + 190,7,65,22,7,193,6,5,65,12,6,193,11,1,65,22, + 7,193,12,7,65,21,13,193,19,3,65,22,7,193,23,1, + 65,21,13,193,24,1,65,22,7,114,95,0,0,0,105,127, + 13,0,0,114,45,0,0,0,114,33,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,119,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,5,0,0,0,67,0,0,0,115,80,1, + 0,0,124,1,100,1,117,1,114,26,116,0,160,1,100,2, + 116,2,161,2,1,0,124,2,100,1,117,1,114,20,100,3, + 125,3,116,3,124,3,131,1,130,1,124,1,114,24,100,4, + 110,1,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,57,116,11,100,7, + 131,1,130,1,100,4,160,12,124,6,114,63,124,6,110,1, + 124,8,124,7,124,9,103,3,161,1,125,10,124,2,100,1, + 117,0,114,86,116,8,106,13,106,14,100,8,107,2,114,82, + 100,4,125,2,110,4,116,8,106,13,106,14,125,2,116,15, + 124,2,131,1,125,2,124,2,100,4,107,3,114,112,124,2, + 160,16,161,0,115,105,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,114,162,116,22,124,4,131,1,115,134, + 116,23,116,4,160,24,161,0,124,4,131,2,125,4,124,4, + 100,5,25,0,100,11,107,2,114,152,124,4,100,8,25,0, + 116,25,118,1,114,152,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,10,0,0,0,114,3,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, + 11,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,19,0,0,0, + 218,6,102,115,112,97,116,104,114,73,0,0,0,218,10,114, + 112,97,114,116,105,116,105,111,110,114,16,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,17,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,89,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,86,0,0,0,114, + 67,0,0,0,114,82,0,0,0,114,51,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,96,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,6,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,32,32,32,32,32,32,32,32,32,32,32,32,114,7,0, + 0,0,218,17,99,97,99,104,101,95,102,114,111,109,95,115, + 111,117,114,99,101,130,1,0,0,115,72,0,0,0,8,18, + 6,1,2,1,4,255,8,2,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,1,8,2,8,1,8,1,8,1,14,1,14,1,12,1, + 10,1,8,9,14,1,24,5,12,1,2,4,4,1,8,1, + 2,1,4,253,12,5,114,9,0,0,0,114,121,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,67,0,0,0,115,40,1,0,0,116,0,106,1,106,2, + 100,1,117,0,114,10,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,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,57,116,11,100,7,131,1,130,1,100,4,160,12, - 124,6,114,63,124,6,110,1,124,8,124,7,124,9,103,3, - 161,1,125,10,124,2,100,1,117,0,114,86,116,8,106,13, - 106,14,100,8,107,2,114,82,100,4,125,2,110,4,116,8, - 106,13,106,14,125,2,116,15,124,2,131,1,125,2,124,2, - 100,4,107,3,114,112,124,2,160,16,161,0,115,105,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,114,162, - 116,22,124,4,131,1,115,134,116,23,116,4,160,24,161,0, - 124,4,131,2,125,4,124,4,100,5,25,0,100,11,107,2, - 114,152,124,4,100,8,25,0,116,25,118,1,114,152,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,10,0,0, - 0,114,3,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,11,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,19,0,0,0,218,6,102,115,112,97,116,104, - 114,73,0,0,0,218,10,114,112,97,114,116,105,116,105,111, - 110,114,16,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,17,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,89,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,86,0,0,0,114,67,0,0,0,114,82,0,0, - 0,114,51,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, - 96,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,6, - 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,32,32,32,32,32,32,32, - 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, - 101,95,102,114,111,109,95,115,111,117,114,99,101,129,1,0, - 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, - 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,1,8,2,8,1,8,1, - 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, - 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, - 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,40,1, - 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133,2, - 25,0,125,1,100,4,125,3,124,3,115,72,116,6,124,1, - 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,72, - 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,88,116,14,100,8,124,2,155,2,157,2,131,1, - 130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16,0,0, - 0,114,105,0,0,0,114,106,0,0,0,114,107,0,0,0, - 114,19,0,0,0,114,103,0,0,0,114,73,0,0,0,114, - 114,0,0,0,114,50,0,0,0,114,51,0,0,0,114,27, - 0,0,0,114,59,0,0,0,114,4,0,0,0,114,116,0, - 0,0,114,111,0,0,0,218,5,99,111,117,110,116,218,6, - 114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32, - 32,32,32,32,114,7,0,0,0,218,17,115,111,117,114,99, - 101,95,102,114,111,109,95,99,97,99,104,101,200,1,0,0, - 115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16,1,10, - 1,4,1,2,1,8,255,16,2,8,1,16,1,14,2,18, - 1,114,9,0,0,0,114,128,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, - 115,126,0,0,0,116,0,124,0,131,1,100,1,107,2,114, - 8,100,2,83,0,124,0,160,1,100,3,161,1,92,3,125, - 1,125,2,125,3,124,1,114,28,124,3,160,2,161,0,100, - 4,100,5,133,2,25,0,100,6,107,3,114,30,124,0,83, - 0,9,0,116,3,124,0,131,1,125,4,110,18,35,0,4, - 0,116,4,116,5,102,2,121,62,1,0,1,0,1,0,124, - 0,100,2,100,5,133,2,25,0,125,4,89,0,110,1,37, - 0,116,6,124,4,131,1,114,60,124,4,83,0,124,0,83, - 0,119,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,97,0,0,0,233,253, - 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,4, - 0,0,0,114,104,0,0,0,218,5,108,111,119,101,114,114, - 128,0,0,0,114,107,0,0,0,114,111,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,119,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,32,32,32,32,32,114,7,0,0,0,218,15, - 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,240, - 1,0,0,115,26,0,0,0,12,7,4,1,16,1,24,1, - 4,1,2,1,10,1,2,128,16,1,16,1,2,128,16,1, - 2,254,115,12,0,0,0,159,4,36,0,164,15,53,7,190, - 1,53,7,114,135,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,8,0,0,0,67,0,0,0,115,70,0, - 0,0,124,0,160,0,116,1,116,2,131,1,161,1,114,23, - 9,0,116,3,124,0,131,1,83,0,35,0,4,0,116,4, - 121,34,1,0,1,0,1,0,89,0,100,0,83,0,37,0, - 124,0,160,0,116,1,116,5,131,1,161,1,114,32,124,0, - 83,0,100,0,83,0,119,0,114,69,0,0,0,41,6,114, - 58,0,0,0,218,5,116,117,112,108,101,114,127,0,0,0, - 114,121,0,0,0,114,107,0,0,0,114,113,0,0,0,41, - 1,114,120,0,0,0,32,114,7,0,0,0,218,11,95,103, - 101,116,95,99,97,99,104,101,100,3,2,0,0,115,22,0, - 0,0,14,1,2,1,8,1,2,128,12,1,6,1,2,128, - 14,1,4,1,4,2,2,251,115,12,0,0,0,136,3,12, - 0,140,7,22,7,162,1,22,7,114,137,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,52,0,0,0,9,0,116,0,124,0,131,1, - 106,1,125,1,110,12,35,0,4,0,116,2,121,25,1,0, - 1,0,1,0,100,1,125,1,89,0,110,1,37,0,124,1, - 100,2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,32,32,114,7,0, - 0,0,218,10,95,99,97,108,99,95,109,111,100,101,15,2, - 0,0,115,18,0,0,0,2,2,12,1,2,128,12,1,8, - 1,2,128,8,3,4,1,2,251,115,12,0,0,0,129,5, - 7,0,135,9,18,7,153,1,18,7,114,139,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,52,0,0,0,100,6,135,3,102,1,100, - 2,100,3,132,9,125,1,116,0,100,1,117,1,114,15,116, - 0,106,1,125,2,110,4,100,4,100,5,132,0,125,2,124, - 2,124,1,136,3,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,5,0,0,0,31, - 0,0,0,115,76,0,0,0,124,1,100,0,117,0,114,8, - 124,0,106,0,125,1,110,18,124,0,106,0,124,1,107,3, - 114,26,116,1,100,1,124,0,106,0,155,1,100,2,124,1, - 155,1,157,4,124,1,100,3,141,2,130,1,136,4,124,0, - 124,1,103,2,124,2,162,1,82,0,105,0,124,3,164,1, - 142,1,83,0,41,4,78,122,11,108,111,97,100,101,114,32, - 102,111,114,32,122,15,32,99,97,110,110,111,116,32,104,97, - 110,100,108,101,32,169,1,218,4,110,97,109,101,41,2,114, - 141,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, - 114,41,5,218,4,115,101,108,102,114,141,0,0,0,218,4, - 97,114,103,115,218,6,107,119,97,114,103,115,218,6,109,101, - 116,104,111,100,32,32,32,32,128,114,7,0,0,0,218,19, - 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, - 112,101,114,35,2,0,0,115,18,0,0,0,8,1,8,1, - 10,1,4,1,12,1,2,255,2,1,6,255,24,2,114,9, - 0,0,0,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,7,0,0,0,83,0, - 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, - 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, - 2,124,1,124,2,131,2,131,3,1,0,113,2,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,85,0,0, - 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, - 48,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, - 128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218,10,95,98,111, - 111,116,115,116,114,97,112,114,157,0,0,0,41,4,114,146, - 0,0,0,114,147,0,0,0,114,157,0,0,0,114,146,0, - 0,0,96,32,32,64,114,7,0,0,0,218,11,95,99,104, - 101,99,107,95,110,97,109,101,27,2,0,0,115,12,0,0, - 0,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, - 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, - 3,124,1,161,1,92,2,125,2,125,3,124,2,100,2,117, - 0,114,34,116,4,124,3,131,1,114,34,100,3,125,4,116, - 0,160,1,124,4,160,5,124,3,100,4,25,0,161,1,116, - 6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109, - 111,100,117,108,101,40,41,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, - 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, - 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, - 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, - 116,101,97,100,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,7,114,99,0,0,0,114, - 100,0,0,0,114,101,0,0,0,218,11,102,105,110,100,95, - 108,111,97,100,101,114,114,4,0,0,0,114,89,0,0,0, - 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, - 5,114,143,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,32,32,32,32,32,114,7,0,0, - 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, - 115,104,105,109,58,2,0,0,115,16,0,0,0,6,7,2, - 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, - 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, - 0,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,32,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,53,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,81,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,32,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,142,0,0, - 0,114,4,0,0,0,218,8,69,79,70,69,114,114,111,114, - 114,43,0,0,0,41,6,114,42,0,0,0,114,141,0,0, - 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, - 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, - 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, - 115,115,105,102,121,95,112,121,99,78,2,0,0,115,28,0, - 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, - 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, - 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7, - 133,2,25,0,131,1,124,2,100,3,64,0,107,3,114,58, - 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,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,169,0,0, - 0,233,12,0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4, - 114,43,0,0,0,114,158,0,0,0,114,172,0,0,0,114, - 142,0,0,0,41,6,114,42,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,141,0,0,0,114,174,0,0,0, - 114,117,0,0,0,32,32,32,32,32,32,114,7,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,111,2,0,0,115,18,0, - 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, - 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, - 0,0,0,0,0,0,0,0,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,19,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,169,0,0, - 0,114,168,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,142,0,0,0,41,4, - 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, - 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, - 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, - 95,104,97,115,104,95,112,121,99,139,2,0,0,115,14,0, - 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, - 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, - 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, - 124,4,116,3,131,2,114,28,116,4,160,5,100,1,124,2, - 161,2,1,0,124,3,100,2,117,1,114,26,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, - 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,141,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,172,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,142,0,0,0,114,89,0,0,0,41,5,114,42,0,0, - 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, - 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, - 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, - 111,100,101,163,2,0,0,115,18,0,0,0,10,2,10,1, - 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, - 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, - 0,0,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,3,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,78,41,6,218, - 9,98,121,116,101,97,114,114,97,121,114,171,0,0,0,218, - 6,101,120,116,101,110,100,114,37,0,0,0,114,183,0,0, - 0,218,5,100,117,109,112,115,41,4,114,187,0,0,0,218, - 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, - 32,32,32,32,114,7,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,176,2,0,0,115,12,0,0,0,8,2,14,1,14,1, - 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, - 84,99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78, - 41,7,114,189,0,0,0,114,171,0,0,0,114,190,0,0, - 0,114,37,0,0,0,114,4,0,0,0,114,183,0,0,0, - 114,191,0,0,0,41,5,114,187,0,0,0,114,180,0,0, - 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, - 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, - 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, - 99,186,2,0,0,115,14,0,0,0,8,2,12,1,14,1, - 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, - 0,0,99,1,0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32, - 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, - 115,111,117,114,99,101,197,2,0,0,115,10,0,0,0,8, - 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, - 0,0,0,169,2,114,163,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,8,0,0,0,67,0,0,0,115,60,1,0,0, - 124,1,100,1,117,0,114,29,100,2,125,1,116,0,124,2, - 100,3,131,2,114,28,9,0,124,2,160,1,124,0,161,1, - 125,1,110,39,35,0,4,0,116,2,121,157,1,0,1,0, - 1,0,89,0,110,30,37,0,110,28,116,3,160,4,124,1, - 161,1,125,1,116,5,124,1,131,1,115,57,9,0,116,6, - 116,3,160,7,161,0,124,1,131,2,125,1,110,10,35,0, - 4,0,116,8,121,156,1,0,1,0,1,0,89,0,110,1, - 37,0,116,9,160,10,124,0,124,2,124,1,100,4,166,3, - 125,4,100,5,124,4,95,11,124,2,100,1,117,0,114,99, - 116,12,131,0,68,0,93,21,92,2,125,5,125,6,124,1, - 160,13,116,14,124,6,131,1,161,1,114,96,124,5,124,0, - 124,1,131,2,125,2,124,2,124,4,95,15,1,0,113,99, - 113,75,100,1,83,0,124,3,116,16,117,0,114,131,116,0, - 124,2,100,6,131,2,114,130,9,0,124,2,160,17,124,0, - 161,1,125,7,110,10,35,0,4,0,116,2,121,155,1,0, - 1,0,1,0,89,0,110,10,37,0,124,7,114,130,103,0, - 124,4,95,18,110,3,124,3,124,4,95,18,124,4,106,18, - 103,0,107,2,114,153,124,1,114,153,116,19,124,1,131,1, - 100,7,25,0,125,8,124,4,106,18,160,20,124,8,161,1, - 1,0,124,4,83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0, - 0,0,114,142,0,0,0,114,19,0,0,0,114,103,0,0, - 0,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, - 114,76,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,136,0,0,0,114,163,0,0, - 0,218,9,95,80,79,80,85,76,65,84,69,114,205,0,0, - 0,114,201,0,0,0,114,73,0,0,0,114,61,0,0,0, - 41,9,114,141,0,0,0,90,8,108,111,99,97,116,105,111, - 110,114,163,0,0,0,114,201,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,205,0,0,0,90,7, - 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, - 114,7,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,214,2, - 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, - 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, - 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, - 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, - 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, - 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, - 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, - 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, - 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, - 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, - 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, - 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, - 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, - 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, - 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, - 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, + 125,1,125,2,100,3,125,3,116,0,106,7,100,1,117,1, + 114,51,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,51,124,1,116,12, + 124,4,131,1,100,1,133,2,25,0,125,1,100,4,125,3, + 124,3,115,72,116,6,124,1,131,1,92,2,125,1,125,5, + 124,5,116,13,107,3,114,72,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,88,116,14,100,8, + 124,2,155,2,157,2,131,1,130,1,124,6,100,9,107,2, + 114,132,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,112,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, + 115,132,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,98,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,97,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,122,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,16,0,0,0,114,105,0,0,0,114,106, + 0,0,0,114,107,0,0,0,114,19,0,0,0,114,103,0, + 0,0,114,73,0,0,0,114,114,0,0,0,114,50,0,0, + 0,114,51,0,0,0,114,27,0,0,0,114,59,0,0,0, + 114,4,0,0,0,114,116,0,0,0,114,111,0,0,0,218, + 5,99,111,117,110,116,218,6,114,115,112,108,105,116,114,112, + 0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32,32,32,32,32,114,7,0,0, + 0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99, + 97,99,104,101,201,1,0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8, + 1,14,1,8,1,16,1,10,1,4,1,2,1,8,255,16, + 2,8,1,16,1,14,2,18,1,114,9,0,0,0,114,128, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,67,0,0,0,115,126,0,0,0,116,0,124, + 0,131,1,100,1,107,2,114,8,100,2,83,0,124,0,160, + 1,100,3,161,1,92,3,125,1,125,2,125,3,124,1,114, + 28,124,3,160,2,161,0,100,4,100,5,133,2,25,0,100, + 6,107,3,114,30,124,0,83,0,9,0,116,3,124,0,131, + 1,125,4,110,18,35,0,4,0,116,4,116,5,102,2,121, + 62,1,0,1,0,1,0,124,0,100,2,100,5,133,2,25, + 0,125,4,89,0,110,1,37,0,116,6,124,4,131,1,114, + 60,124,4,83,0,124,0,83,0,119,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,97,0,0,0,233,253,255,255,255,233,255,255,255,255, + 90,2,112,121,41,7,114,4,0,0,0,114,104,0,0,0, + 218,5,108,111,119,101,114,114,128,0,0,0,114,107,0,0, + 0,114,111,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,119,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,32,32,32,32, + 32,114,7,0,0,0,218,15,95,103,101,116,95,115,111,117, + 114,99,101,102,105,108,101,241,1,0,0,115,26,0,0,0, + 12,7,4,1,16,1,24,1,4,1,2,1,10,1,2,128, + 16,1,16,1,2,128,16,1,2,254,115,12,0,0,0,159, + 4,36,0,164,15,53,7,190,1,53,7,114,135,0,0,0, 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,52,0,0,0,9,0,116,0,160,1, - 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, - 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, - 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, - 111,112,101,110,95,114,101,103,105,115,116,114,121,43,3,0, - 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, - 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, - 7,153,1,24,7,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,9,0,0,0,67,0,0,0, - 115,136,0,0,0,124,0,106,0,114,7,124,0,106,1,125, - 2,110,3,124,0,106,2,125,2,124,2,160,3,124,1,100, - 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, - 3,166,2,125,3,9,0,124,0,160,6,124,3,161,1,53, - 0,125,4,116,7,160,8,124,4,100,4,161,2,125,5,100, - 0,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, - 48,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,5,83,0,35,0,4,0,116,9,121,67,1,0,1, - 0,1,0,89,0,100,0,83,0,37,0,119,0,41,5,78, - 122,5,37,100,46,37,100,114,45,0,0,0,41,2,114,162, - 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, - 114,10,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,89,0,0,0,114,16,0,0,0, - 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,215, - 0,0,0,114,214,0,0,0,90,10,81,117,101,114,121,86, - 97,108,117,101,114,76,0,0,0,41,6,218,3,99,108,115, - 114,162,0,0,0,90,12,114,101,103,105,115,116,114,121,95, - 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, - 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, - 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, - 105,115,116,114,121,50,3,0,0,115,34,0,0,0,6,2, - 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, - 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, - 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, - 0,171,4,47,11,175,1,56,0,176,3,47,11,179,3,56, - 0,184,7,65,2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124, - 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, - 11,100,0,83,0,9,0,116,1,124,4,131,1,1,0,110, - 11,35,0,4,0,116,2,121,60,1,0,1,0,1,0,89, - 0,100,0,83,0,37,0,116,3,131,0,68,0,93,26,92, - 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, - 1,114,57,116,6,160,7,124,1,124,5,124,1,124,4,131, - 2,124,4,100,1,166,3,125,7,124,7,2,0,1,0,83, - 0,113,31,100,0,83,0,119,0,41,2,78,114,203,0,0, - 0,41,8,114,222,0,0,0,114,75,0,0,0,114,76,0, - 0,0,114,207,0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114, - 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, - 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, - 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,65,3,0, - 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, - 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, - 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, - 0,140,4,17,0,145,7,27,7,188,1,27,7,122,31,87, + 0,67,0,0,0,115,70,0,0,0,124,0,160,0,116,1, + 116,2,131,1,161,1,114,23,9,0,116,3,124,0,131,1, + 83,0,35,0,4,0,116,4,121,34,1,0,1,0,1,0, + 89,0,100,0,83,0,37,0,124,0,160,0,116,1,116,5, + 131,1,161,1,114,32,124,0,83,0,100,0,83,0,119,0, + 114,69,0,0,0,41,6,114,58,0,0,0,218,5,116,117, + 112,108,101,114,127,0,0,0,114,121,0,0,0,114,107,0, + 0,0,114,113,0,0,0,41,1,114,120,0,0,0,32,114, + 7,0,0,0,218,11,95,103,101,116,95,99,97,99,104,101, + 100,4,2,0,0,115,22,0,0,0,14,1,2,1,8,1, + 2,128,12,1,6,1,2,128,14,1,4,1,4,2,2,251, + 115,12,0,0,0,136,3,12,0,140,7,22,7,162,1,22, + 7,114,137,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,8,0,0,0,67,0,0,0,115,52,0,0,0, + 9,0,116,0,124,0,131,1,106,1,125,1,110,12,35,0, + 4,0,116,2,121,25,1,0,1,0,1,0,100,1,125,1, + 89,0,110,1,37,0,124,1,100,2,79,0,125,1,124,1, + 83,0,119,0,41,4,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,87,0,0,0, + 233,128,0,0,0,78,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,32,32,114,7,0,0,0,218,10,95,99,97,108, + 99,95,109,111,100,101,16,2,0,0,115,18,0,0,0,2, + 2,12,1,2,128,12,1,8,1,2,128,8,3,4,1,2, + 251,115,12,0,0,0,129,5,7,0,135,9,18,7,153,1, + 18,7,114,139,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,3,0,0,0,115,54,0,0, + 0,135,3,100,6,136,3,102,1,100,2,100,3,132,9,125, + 1,116,0,100,1,117,1,114,16,116,0,106,1,125,2,110, + 4,100,4,100,5,132,0,125,2,124,2,124,1,137,3,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,5,0,0,0,31,0,0,0,115,76,0, + 0,0,124,1,100,0,117,0,114,8,124,0,106,0,125,1, + 110,18,124,0,106,0,124,1,107,3,114,26,116,1,100,1, + 124,0,106,0,155,1,100,2,124,1,155,1,157,4,124,1, + 100,3,141,2,130,1,137,4,124,0,124,1,103,2,124,2, + 162,1,82,0,105,0,124,3,164,1,142,1,83,0,41,4, + 78,122,11,108,111,97,100,101,114,32,102,111,114,32,122,15, + 32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,169, + 1,218,4,110,97,109,101,41,2,114,141,0,0,0,218,11, + 73,109,112,111,114,116,69,114,114,111,114,41,5,218,4,115, + 101,108,102,114,141,0,0,0,218,4,97,114,103,115,218,6, + 107,119,97,114,103,115,218,6,109,101,116,104,111,100,32,32, + 32,32,128,114,7,0,0,0,218,19,95,99,104,101,99,107, + 95,110,97,109,101,95,119,114,97,112,112,101,114,36,2,0, + 0,115,18,0,0,0,8,1,8,1,10,1,4,1,12,1, + 2,255,2,1,6,255,24,2,114,9,0,0,0,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,7,0,0,0,83,0,0,0,115,56,0,0, + 0,100,1,68,0,93,16,125,2,116,0,124,1,124,2,131, + 2,114,18,116,1,124,0,124,2,116,2,124,1,124,2,131, + 2,131,3,1,0,113,2,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,85,0,0,0,32,32,32,114,7, + 0,0,0,218,5,95,119,114,97,112,49,2,0,0,115,10, + 0,0,0,8,1,10,1,18,1,2,128,18,1,114,9,0, + 0,0,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,114,69, + 0,0,0,41,2,218,10,95,98,111,111,116,115,116,114,97, + 112,114,157,0,0,0,41,4,114,146,0,0,0,114,147,0, + 0,0,114,157,0,0,0,114,146,0,0,0,96,32,32,64, + 114,7,0,0,0,218,11,95,99,104,101,99,107,95,110,97, + 109,101,28,2,0,0,115,14,0,0,0,2,128,14,8,8, + 10,8,1,8,2,10,6,4,1,114,9,0,0,0,114,159, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 6,0,0,0,67,0,0,0,115,72,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,161, + 1,92,2,125,2,125,3,124,2,100,2,117,0,114,34,116, + 4,124,3,131,1,114,34,100,3,125,4,116,0,160,1,124, + 4,160,5,124,3,100,4,25,0,161,1,116,6,161,2,1, + 0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109,111,100,117,108, + 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 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,7,114,99,0,0,0,114,100,0,0,0, + 114,101,0,0,0,218,11,102,105,110,100,95,108,111,97,100, + 101,114,114,4,0,0,0,114,89,0,0,0,218,13,73,109, + 112,111,114,116,87,97,114,110,105,110,103,41,5,114,143,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,32,32,32,32,32,114,7,0,0,0,218,17,95, + 102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,109, + 59,2,0,0,115,16,0,0,0,6,7,2,2,4,254,14, + 6,16,1,4,1,22,1,4,1,114,9,0,0,0,114,166, + 0,0,0,99,3,0,0,0,0,0,0,0,0,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, + 32,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,53,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,81,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, + 32,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,142,0,0,0,114,4,0, + 0,0,218,8,69,79,70,69,114,114,111,114,114,43,0,0, + 0,41,6,114,42,0,0,0,114,141,0,0,0,218,11,101, + 120,99,95,100,101,116,97,105,108,115,90,5,109,97,103,105, + 99,114,117,0,0,0,114,17,0,0,0,32,32,32,32,32, + 32,114,7,0,0,0,218,13,95,99,108,97,115,115,105,102, + 121,95,112,121,99,79,2,0,0,115,28,0,0,0,12,16, + 8,1,16,1,12,1,16,1,12,1,10,1,12,1,8,1, + 16,1,8,2,16,1,16,1,4,1,114,9,0,0,0,114, + 175,0,0,0,99,5,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0, + 131,1,124,2,100,3,64,0,107,3,114,58,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,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,169,0,0,0,233,12,0, + 0,0,114,31,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, + 167,0,0,0,78,114,168,0,0,0,41,4,114,43,0,0, + 0,114,158,0,0,0,114,172,0,0,0,114,142,0,0,0, + 41,6,114,42,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,141,0,0,0,114,174,0,0,0,114,117,0,0, + 0,32,32,32,32,32,32,114,7,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,112,2,0,0,115,18,0,0,0,24,19, + 10,1,12,1,16,1,8,1,22,1,2,255,22,2,8,254, + 114,9,0,0,0,114,179,0,0,0,99,4,0,0,0,0, + 0,0,0,0,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,19,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,169,0,0,0,114,168,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,142,0,0,0,41,4,114,42,0,0, + 0,218,11,115,111,117,114,99,101,95,104,97,115,104,114,141, + 0,0,0,114,174,0,0,0,32,32,32,32,114,7,0,0, + 0,218,18,95,118,97,108,105,100,97,116,101,95,104,97,115, + 104,95,112,121,99,140,2,0,0,115,14,0,0,0,16,17, + 2,1,8,1,4,255,2,2,6,254,4,255,114,9,0,0, + 0,114,181,0,0,0,99,4,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,67,0,0,0,115,76,0,0,0, + 116,0,160,1,124,0,161,1,125,4,116,2,124,4,116,3, + 131,2,114,28,116,4,160,5,100,1,124,2,161,2,1,0, + 124,3,100,2,117,1,114,26,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,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,141,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, + 172,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,142,0,0, + 0,114,89,0,0,0,41,5,114,42,0,0,0,114,141,0, + 0,0,114,132,0,0,0,114,134,0,0,0,218,4,99,111, + 100,101,32,32,32,32,32,114,7,0,0,0,218,17,95,99, + 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,164, + 2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,1, + 12,1,4,1,10,2,4,1,6,255,114,9,0,0,0,114, + 188,0,0,0,99,3,0,0,0,0,0,0,0,0,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,3,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,78,41,6,218,9,98,121,116, + 101,97,114,114,97,121,114,171,0,0,0,218,6,101,120,116, + 101,110,100,114,37,0,0,0,114,183,0,0,0,218,5,100, + 117,109,112,115,41,4,114,187,0,0,0,218,5,109,116,105, + 109,101,114,178,0,0,0,114,42,0,0,0,32,32,32,32, + 114,7,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,177,2,0, + 0,115,12,0,0,0,8,2,14,1,14,1,14,1,16,1, + 4,1,114,9,0,0,0,114,193,0,0,0,84,99,3,0, + 0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78,41,7,114,189, + 0,0,0,114,171,0,0,0,114,190,0,0,0,114,37,0, + 0,0,114,4,0,0,0,114,183,0,0,0,114,191,0,0, + 0,41,5,114,187,0,0,0,114,180,0,0,0,90,7,99, + 104,101,99,107,101,100,114,42,0,0,0,114,17,0,0,0, + 32,32,32,32,32,114,7,0,0,0,218,17,95,99,111,100, + 101,95,116,111,95,104,97,115,104,95,112,121,99,187,2,0, + 0,115,14,0,0,0,8,2,12,1,14,1,16,1,10,1, + 16,1,4,1,114,9,0,0,0,114,194,0,0,0,99,1, + 0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32,32,32,114,7, + 0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,114, + 99,101,198,2,0,0,115,10,0,0,0,8,5,12,1,10, + 1,12,1,20,1,114,9,0,0,0,114,199,0,0,0,169, + 2,114,163,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,8, + 0,0,0,67,0,0,0,115,60,1,0,0,124,1,100,1, + 117,0,114,29,100,2,125,1,116,0,124,2,100,3,131,2, + 114,28,9,0,124,2,160,1,124,0,161,1,125,1,110,39, + 35,0,4,0,116,2,121,157,1,0,1,0,1,0,89,0, + 110,30,37,0,110,28,116,3,160,4,124,1,161,1,125,1, + 116,5,124,1,131,1,115,57,9,0,116,6,116,3,160,7, + 161,0,124,1,131,2,125,1,110,10,35,0,4,0,116,8, + 121,156,1,0,1,0,1,0,89,0,110,1,37,0,116,9, + 160,10,124,0,124,2,124,1,100,4,166,3,125,4,100,5, + 124,4,95,11,124,2,100,1,117,0,114,99,116,12,131,0, + 68,0,93,21,92,2,125,5,125,6,124,1,160,13,116,14, + 124,6,131,1,161,1,114,96,124,5,124,0,124,1,131,2, + 125,2,124,2,124,4,95,15,1,0,113,99,113,75,100,1, + 83,0,124,3,116,16,117,0,114,131,116,0,124,2,100,6, + 131,2,114,130,9,0,124,2,160,17,124,0,161,1,125,7, + 110,10,35,0,4,0,116,2,121,155,1,0,1,0,1,0, + 89,0,110,10,37,0,124,7,114,130,103,0,124,4,95,18, + 110,3,124,3,124,4,95,18,124,4,106,18,103,0,107,2, + 114,153,124,1,114,153,116,19,124,1,131,1,100,7,25,0, + 125,8,124,4,106,18,160,20,124,8,161,1,1,0,124,4, + 83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0,0,0,114,142, + 0,0,0,114,19,0,0,0,114,103,0,0,0,114,86,0, + 0,0,114,67,0,0,0,114,82,0,0,0,114,76,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,136,0,0,0,114,163,0,0,0,218,9,95, + 80,79,80,85,76,65,84,69,114,205,0,0,0,114,201,0, + 0,0,114,73,0,0,0,114,61,0,0,0,41,9,114,141, + 0,0,0,90,8,108,111,99,97,116,105,111,110,114,163,0, + 0,0,114,201,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,205,0,0,0,90,7,100,105,114,110, + 97,109,101,32,32,32,32,32,32,32,32,32,114,7,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,215,2,0,0,115,96, + 0,0,0,8,12,4,4,10,1,2,2,12,1,2,128,12, + 1,4,1,2,128,2,251,10,7,8,1,2,1,16,1,2, + 128,12,1,4,1,2,128,16,8,6,1,8,3,14,1,14, + 1,10,1,6,1,4,1,2,253,4,5,8,3,10,2,2, + 1,12,1,2,128,12,1,4,1,2,128,4,2,6,1,2, + 128,6,2,10,1,4,1,12,1,12,1,4,2,2,244,2, + 228,2,249,115,44,0,0,0,140,5,18,0,146,7,27,7, + 167,7,47,0,175,7,56,7,193,45,5,65,51,0,193,51, + 7,65,60,7,194,27,1,65,60,7,194,28,1,56,7,194, + 29,1,27,7,114,212,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,88, + 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, + 2,90,4,100,3,90,5,101,6,111,15,100,4,101,7,118, + 0,90,8,101,9,100,5,100,6,132,0,131,1,90,10,101, + 11,100,7,100,8,132,0,131,1,90,12,101,11,100,14,100, + 10,100,11,132,1,131,1,90,13,101,11,100,15,100,12,100, + 13,132,1,131,1,90,14,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,46,102,105,110,100,95,115,112,101,99,99,3, + 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,122,6,95,100,46,112,121,100,99,1,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, + 0,115,52,0,0,0,9,0,116,0,160,1,116,0,106,2, + 124,0,161,2,83,0,35,0,4,0,116,3,121,25,1,0, + 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, + 6,0,89,0,83,0,37,0,119,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,114,20, + 0,0,0,32,114,7,0,0,0,218,14,95,111,112,101,110, + 95,114,101,103,105,115,116,114,121,44,3,0,0,115,14,0, + 0,0,2,2,14,1,2,128,12,1,18,1,2,128,2,255, + 115,12,0,0,0,129,6,8,0,136,14,24,7,153,1,24, + 7,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,9,0,0,0,67,0,0,0,115,136,0,0, + 0,124,0,106,0,114,7,124,0,106,1,125,2,110,3,124, + 0,106,2,125,2,124,2,160,3,124,1,100,1,116,4,106, + 5,100,0,100,2,133,2,25,0,22,0,100,3,166,2,125, + 3,9,0,124,0,160,6,124,3,161,1,53,0,125,4,116, + 7,160,8,124,4,100,4,161,2,125,5,100,0,4,0,4, + 0,131,3,1,0,110,11,35,0,49,0,115,48,119,4,37, + 0,1,0,1,0,1,0,89,0,1,0,1,0,124,5,83, + 0,35,0,4,0,116,9,121,67,1,0,1,0,1,0,89, + 0,100,0,83,0,37,0,119,0,41,5,78,122,5,37,100, + 46,37,100,114,45,0,0,0,41,2,114,162,0,0,0,90, + 11,115,121,115,95,118,101,114,115,105,111,110,114,10,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,89,0,0,0,114,16,0,0,0,218,12,118,101, + 114,115,105,111,110,95,105,110,102,111,114,215,0,0,0,114, + 214,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101, + 114,76,0,0,0,41,6,218,3,99,108,115,114,162,0,0, + 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114, + 21,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101, + 112,97,116,104,32,32,32,32,32,32,114,7,0,0,0,218, + 16,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114, + 121,51,3,0,0,115,34,0,0,0,6,2,8,1,6,2, + 6,1,16,1,6,255,2,2,12,1,12,1,12,255,22,128, + 4,4,2,128,12,254,6,1,2,128,2,255,115,39,0,0, + 0,153,5,56,0,158,7,43,3,165,6,56,0,171,4,47, + 11,175,1,56,0,176,3,47,11,179,3,56,0,184,7,65, + 2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124,0,160,0,124, + 1,161,1,125,4,124,4,100,0,117,0,114,11,100,0,83, + 0,9,0,116,1,124,4,131,1,1,0,110,11,35,0,4, + 0,116,2,121,60,1,0,1,0,1,0,89,0,100,0,83, + 0,37,0,116,3,131,0,68,0,93,26,92,2,125,5,125, + 6,124,4,160,4,116,5,124,6,131,1,161,1,114,57,116, + 6,160,7,124,1,124,5,124,1,124,4,131,2,124,4,100, + 1,166,3,125,7,124,7,2,0,1,0,83,0,113,31,100, + 0,83,0,119,0,41,2,78,114,203,0,0,0,41,8,114, + 222,0,0,0,114,75,0,0,0,114,76,0,0,0,114,207, + 0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114,162,0,0,0, + 114,65,0,0,0,218,6,116,97,114,103,101,116,114,221,0, + 0,0,114,163,0,0,0,114,211,0,0,0,114,209,0,0, + 0,32,32,32,32,32,32,32,32,114,7,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,66,3,0,0,115,38,0, + 0,0,10,2,8,1,4,1,2,1,10,1,2,128,12,1, + 6,1,2,128,14,1,14,1,6,1,8,1,2,1,6,254, + 8,3,2,252,4,255,2,254,115,12,0,0,0,140,4,17, + 0,145,7,27,7,188,1,27,7,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,67,0,0,0,115, + 42,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 124,0,160,3,124,1,124,2,161,2,125,3,124,3,100,2, + 117,1,114,19,124,3,106,4,83,0,100,2,83,0,41,3, + 122,106,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,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,122,112,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,40, + 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, + 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, + 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, + 32,51,46,49,50,59,32,117,115,101,32,102,105,110,100,95, + 115,112,101,99,40,41,32,105,110,115,116,101,97,100,78,169, + 5,114,99,0,0,0,114,100,0,0,0,114,101,0,0,0, + 114,225,0,0,0,114,163,0,0,0,169,4,114,220,0,0, + 0,114,162,0,0,0,114,65,0,0,0,114,209,0,0,0, + 32,32,32,32,114,7,0,0,0,218,11,102,105,110,100,95, + 109,111,100,117,108,101,82,3,0,0,115,14,0,0,0,6, + 7,2,2,4,254,12,3,8,1,6,1,4,2,114,9,0, + 0,0,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,169,2,78,78,114,69,0,0,0,41,15, + 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, + 151,0,0,0,114,218,0,0,0,114,217,0,0,0,218,11, + 95,77,83,95,87,73,78,68,79,87,83,218,18,69,88,84, + 69,78,83,73,79,78,95,83,85,70,70,73,88,69,83,114, + 216,0,0,0,218,12,115,116,97,116,105,99,109,101,116,104, + 111,100,114,215,0,0,0,218,11,99,108,97,115,115,109,101, + 116,104,111,100,114,222,0,0,0,114,225,0,0,0,114,228, + 0,0,0,114,12,0,0,0,114,7,0,0,0,114,213,0, + 0,0,32,3,0,0,115,30,0,0,0,8,0,4,2,2, + 3,2,255,2,4,2,255,12,3,2,2,10,1,2,6,10, + 1,2,14,12,1,2,15,16,1,114,9,0,0,0,114,213, + 0,0,0,99,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, + 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,31,124,4,100,5,107,3,83,0,41,7,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,3, + 0,0,0,114,97,0,0,0,114,0,0,0,0,114,45,0, + 0,0,218,8,95,95,105,110,105,116,95,95,78,41,4,114, + 73,0,0,0,114,202,0,0,0,114,125,0,0,0,114,104, + 0,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, + 120,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,32,32, + 32,32,32,114,7,0,0,0,114,205,0,0,0,104,3,0, + 0,115,8,0,0,0,18,3,16,1,14,1,16,1,114,9, + 0,0,0,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0,169,2,114,143,0, + 0,0,114,209,0,0,0,32,32,114,7,0,0,0,218,13, + 99,114,101,97,116,101,95,109,111,100,117,108,101,112,3,0, + 0,243,2,0,0,0,4,0,114,9,0,0,0,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,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,18,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,142,0,0,0, + 114,89,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,143,0,0,0,218,6,109,111,100,117,108,101,114, + 187,0,0,0,32,32,32,114,7,0,0,0,218,11,101,120, + 101,99,95,109,111,100,117,108,101,115,3,0,0,115,12,0, + 0,0,12,2,8,1,4,1,8,1,4,255,20,2,114,9, + 0,0,0,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,4,0,0,0,67, - 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, - 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, - 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, - 83,0,41,3,122,106,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,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, - 122,112,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,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, - 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, - 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, - 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, - 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, - 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, - 105,110,100,95,109,111,100,117,108,101,81,3,0,0,115,14, - 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, - 2,114,9,0,0,0,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,169,2,78,78,114,69,0, - 0,0,41,15,114,149,0,0,0,114,148,0,0,0,114,150, - 0,0,0,114,151,0,0,0,114,218,0,0,0,114,217,0, - 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218, - 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, - 88,69,83,114,216,0,0,0,218,12,115,116,97,116,105,99, - 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, - 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, - 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,213,0,0,0,31,3,0,0,115,30,0,0,0,8, - 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, - 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, - 0,0,114,213,0,0,0,99,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,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,31,124,4,100,5,107,3,83, - 0,41,7,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,3,0,0,0,114,97,0,0,0,114,0,0,0, - 0,114,45,0,0,0,218,8,95,95,105,110,105,116,95,95, - 78,41,4,114,73,0,0,0,114,202,0,0,0,114,125,0, - 0,0,114,104,0,0,0,41,5,114,143,0,0,0,114,162, - 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, - 0,103,3,0,0,115,8,0,0,0,18,3,16,1,14,1, - 16,1,114,9,0,0,0,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,1,0, - 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,169, - 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, - 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, - 101,111,3,0,0,243,2,0,0,0,4,0,114,9,0,0, - 0,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,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,18,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, - 142,0,0,0,114,89,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,143,0,0,0,218,6,109,111,100, - 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, - 218,11,101,120,101,99,95,109,111,100,117,108,101,114,3,0, - 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, - 20,2,114,9,0,0,0,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,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,2,122,26,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,78,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,143,0,0,0,114,162,0,0,0,32,32,114, - 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, - 101,122,3,0,0,115,2,0,0,0,12,3,114,9,0,0, - 0,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,205,0,0,0,114,238,0,0,0,114,244,0, - 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,234,0,0,0,98,3,0,0,115,12,0,0,0,8, - 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, - 114,234,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4, - 0,0,0,116,0,130,1,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,143,0,0,0,114, - 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, - 104,95,109,116,105,109,101,130,3,0,0,115,2,0,0,0, - 4,6,114,9,0,0,0,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,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,3,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,192,0, - 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, - 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, - 116,115,138,3,0,0,115,2,0,0,0,14,12,114,9,0, - 0,0,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,67,0,0,0, - 115,12,0,0,0,124,0,160,0,124,2,124,3,161,2,83, - 0,41,2,122,228,79,112,116,105,111,110,97,108,32,109,101, + 0,0,0,115,12,0,0,0,116,0,160,1,124,0,124,1, + 161,2,83,0,41,2,122,26,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,78,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, + 143,0,0,0,114,162,0,0,0,32,32,114,7,0,0,0, + 218,11,108,111,97,100,95,109,111,100,117,108,101,123,3,0, + 0,115,2,0,0,0,12,3,114,9,0,0,0,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, + 205,0,0,0,114,238,0,0,0,114,244,0,0,0,114,247, + 0,0,0,114,12,0,0,0,114,7,0,0,0,114,234,0, + 0,0,99,3,0,0,115,12,0,0,0,8,0,4,2,8, + 3,8,8,8,3,12,8,114,9,0,0,0,114,234,0,0, + 0,99,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,1,0,0,0,67,0,0,0,115,4,0,0,0,116, + 0,130,1,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,143,0,0,0,114,65,0,0,0, + 32,32,114,7,0,0,0,218,10,112,97,116,104,95,109,116, + 105,109,101,131,3,0,0,115,2,0,0,0,4,6,114,9, + 0,0,0,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,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,3,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,192,0,0,0,78,41, + 1,114,250,0,0,0,114,249,0,0,0,32,32,114,7,0, + 0,0,218,10,112,97,116,104,95,115,116,97,116,115,139,3, + 0,0,115,2,0,0,0,14,12,114,9,0,0,0,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,67,0,0,0,115,12,0,0, + 0,124,0,160,0,124,2,124,3,161,2,83,0,41,2,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,78,41,1,218,8,115,101,116,95,100,97, + 116,97,41,4,114,143,0,0,0,114,134,0,0,0,90,10, + 99,97,99,104,101,95,112,97,116,104,114,42,0,0,0,32, + 32,32,32,114,7,0,0,0,218,15,95,99,97,99,104,101, + 95,98,121,116,101,99,111,100,101,153,3,0,0,115,2,0, + 0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, + 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, @@ -1326,492 +1350,469 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,78,41,1,218,8,115,101, - 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, - 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, - 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, - 97,99,104,101,95,98,121,116,101,99,111,100,101,152,3,0, - 0,115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0, - 114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, - 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, - 0,0,0,162,3,0,0,114,239,0,0,0,114,9,0,0, - 0,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,8,0,0,0,67,0,0,0,115,70,0, - 0,0,124,0,160,0,124,1,161,1,125,2,9,0,124,0, - 160,1,124,2,161,1,125,3,116,4,124,3,131,1,83,0, - 35,0,4,0,116,2,121,34,1,0,125,4,1,0,116,3, - 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, - 126,4,119,1,37,0,119,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,140,0,0,0,78,41, - 5,114,202,0,0,0,218,8,103,101,116,95,100,97,116,97, - 114,76,0,0,0,114,142,0,0,0,114,199,0,0,0,41, - 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, - 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, - 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, - 169,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, - 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, - 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, - 150,7,29,7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,67,0,0,0,115,22,0,0, - 0,116,0,160,1,116,2,124,1,124,2,100,1,100,2,124, - 3,100,3,166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0, - 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, - 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, - 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, - 111,117,114,99,101,95,116,111,95,99,111,100,101,179,3,0, - 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, - 0,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,9,0,0,0,67, - 0,0,0,115,28,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,9,0,116,1,124,2,131,1,125,8, - 110,13,35,0,4,0,116,2,144,1,121,13,1,0,1,0, - 1,0,100,1,125,8,89,0,110,147,37,0,9,0,124,0, - 160,3,124,2,161,1,125,9,110,11,35,0,4,0,116,4, - 144,1,121,12,1,0,1,0,1,0,89,0,110,129,37,0, - 116,5,124,9,100,4,25,0,131,1,125,3,9,0,124,0, - 160,6,124,8,161,1,125,10,110,11,35,0,4,0,116,4, - 144,1,121,11,1,0,1,0,1,0,89,0,110,105,37,0, - 124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8, - 107,3,125,7,116,9,106,10,100,10,107,3,114,140,124,7, - 115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0,124,1, - 124,11,131,5,1,0,110,13,35,0,4,0,116,15,116,16, - 102,2,144,1,121,10,1,0,1,0,1,0,89,0,110,16, - 37,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,114,189,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,1, - 115,7,124,8,100,1,117,1,144,1,114,7,124,3,100,1, - 117,1,144,1,114,7,124,6,114,233,124,5,100,1,117,0, - 114,226,116,9,160,11,124,4,161,1,125,5,116,23,124,14, - 124,5,124,7,131,3,125,10,110,8,116,24,124,14,124,3, - 116,25,124,4,131,1,131,3,125,10,9,0,124,0,160,26, - 124,2,124,8,124,10,161,3,1,0,124,14,83,0,35,0, - 4,0,116,2,144,1,121,9,1,0,1,0,1,0,89,0, - 124,14,83,0,37,0,124,14,83,0,119,0,119,0,119,0, - 119,0,119,0,41,16,122,190,67,111,110,99,114,101,116,101, + 115,46,10,32,32,32,32,32,32,32,32,78,114,12,0,0, + 0,41,3,114,143,0,0,0,114,65,0,0,0,114,42,0, + 0,0,32,32,32,114,7,0,0,0,114,252,0,0,0,163, + 3,0,0,114,239,0,0,0,114,9,0,0,0,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,8,0,0,0,67,0,0,0,115,70,0,0,0,124,0, + 160,0,124,1,161,1,125,2,9,0,124,0,160,1,124,2, + 161,1,125,3,116,4,124,3,131,1,83,0,35,0,4,0, + 116,2,121,34,1,0,125,4,1,0,116,3,100,1,124,1, + 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, + 37,0,119,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,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,192,0,0,0,114,182, - 0,0,0,114,168,0,0,0,114,3,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,141,0, - 0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0, - 0,0,114,251,0,0,0,114,76,0,0,0,114,34,0,0, - 0,114,254,0,0,0,114,175,0,0,0,218,10,109,101,109, - 111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77, - 65,71,73,67,95,78,85,77,66,69,82,114,181,0,0,0, - 114,179,0,0,0,114,142,0,0,0,114,173,0,0,0,114, - 158,0,0,0,114,172,0,0,0,114,188,0,0,0,114,4, - 1,0,0,114,16,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,194,0, - 0,0,114,193,0,0,0,114,4,0,0,0,114,253,0,0, - 0,41,15,114,143,0,0,0,114,162,0,0,0,114,134,0, - 0,0,114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0, - 218,2,115,116,114,42,0,0,0,114,174,0,0,0,114,17, - 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,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, - 114,240,0,0,0,187,3,0,0,115,188,0,0,0,10,7, - 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, - 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, - 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, - 2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1, - 12,1,10,1,2,1,2,255,8,2,2,254,10,3,4,1, - 2,1,2,1,4,254,8,4,2,1,4,255,2,128,2,3, - 2,1,2,1,6,1,2,1,2,1,4,251,4,128,18,7, - 4,1,2,128,8,2,2,1,4,255,6,2,2,1,2,1, - 6,254,8,3,10,1,12,1,12,1,18,1,6,1,4,255, - 4,2,8,1,10,1,14,1,6,2,6,1,4,255,2,2, - 14,1,4,3,2,128,14,254,2,1,4,1,2,128,4,0, - 2,254,2,233,2,225,2,250,2,251,115,80,0,0,0,144, - 4,21,0,149,10,33,7,163,5,41,0,169,8,51,7,187, - 5,65,1,0,193,1,8,65,11,7,193,18,65,5,66,24, - 0,194,24,10,66,36,7,195,50,7,67,59,0,195,59,8, - 68,6,7,196,9,1,68,6,7,196,10,1,66,36,7,196, - 11,1,65,11,7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0, - 114,7,0,0,0,114,248,0,0,0,128,3,0,0,115,16, - 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, - 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,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,135,0,4,0,90, - 12,83,0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0, - 114,162,0,0,0,114,65,0,0,0,32,32,32,114,7,0, - 0,0,114,235,0,0,0,21,4,0,0,115,4,0,0,0, - 6,3,10,1,114,9,0,0,0,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,67, - 0,0,0,243,24,0,0,0,124,0,106,0,124,1,106,0, - 107,2,111,11,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,143,0,0,0,90,5, - 111,116,104,101,114,32,32,114,7,0,0,0,218,6,95,95, - 101,113,95,95,27,4,0,0,243,6,0,0,0,12,1,10, - 1,2,255,114,9,0,0,0,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,3,0,0,0,67,0,0,0, - 243,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,141,0,0,0,114,65,0,0,0, - 169,1,114,143,0,0,0,32,114,7,0,0,0,218,8,95, - 95,104,97,115,104,95,95,31,4,0,0,243,2,0,0,0, - 20,1,114,9,0,0,0,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,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,2,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,41, - 3,218,5,115,117,112,101,114,114,10,1,0,0,114,247,0, - 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,13, - 1,0,0,32,32,128,114,7,0,0,0,114,247,0,0,0, - 34,4,0,0,115,2,0,0,0,16,10,114,9,0,0,0, - 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,1,0,0,0,67,0,0,0,243,6,0, - 0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0, - 0,32,32,114,7,0,0,0,114,202,0,0,0,46,4,0, - 0,243,2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0, - 116,0,124,0,116,1,116,2,102,2,131,2,114,38,116,3, - 160,4,116,5,124,1,131,1,161,1,53,0,125,2,124,2, - 160,6,161,0,2,0,100,1,4,0,4,0,131,3,1,0, - 83,0,35,0,49,0,115,30,119,4,37,0,1,0,1,0, - 1,0,89,0,1,0,1,0,100,1,83,0,116,3,160,7, - 124,1,100,2,161,2,53,0,125,2,124,2,160,6,161,0, - 2,0,100,1,4,0,4,0,131,3,1,0,83,0,35,0, - 49,0,115,60,119,4,37,0,1,0,1,0,1,0,89,0, - 1,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,184,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,91,0,0,0,90,9,111, - 112,101,110,95,99,111,100,101,114,109,0,0,0,90,4,114, - 101,97,100,114,92,0,0,0,41,3,114,143,0,0,0,114, - 65,0,0,0,114,94,0,0,0,32,32,32,114,7,0,0, - 0,114,254,0,0,0,51,4,0,0,115,22,0,0,0,14, - 2,16,1,6,1,14,255,22,128,4,0,14,3,6,1,14, - 255,22,128,4,0,115,24,0,0,0,142,4,25,3,153,4, - 29,11,158,3,29,11,172,4,55,3,183,4,59,11,188,3, - 59,11,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,67,0,0,0,115,20,0,0, - 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,124, - 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, - 10,70,105,108,101,82,101,97,100,101,114,41,2,218,17,105, - 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, - 114,29,1,0,0,41,3,114,143,0,0,0,114,243,0,0, - 0,114,29,1,0,0,32,32,32,114,7,0,0,0,218,19, + 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,140,0,0,0,78,41,5,114,202,0, + 0,0,218,8,103,101,116,95,100,97,116,97,114,76,0,0, + 0,114,142,0,0,0,114,199,0,0,0,41,5,114,143,0, + 0,0,114,162,0,0,0,114,65,0,0,0,114,197,0,0, + 0,218,3,101,120,99,32,32,32,32,32,114,7,0,0,0, + 218,10,103,101,116,95,115,111,117,114,99,101,170,3,0,0, + 115,26,0,0,0,10,2,2,1,10,1,8,4,2,128,12, + 253,4,1,2,1,4,255,2,1,2,255,10,128,2,255,115, + 20,0,0,0,134,5,15,0,143,7,33,7,150,7,29,7, + 157,4,33,7,162,1,33,7,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,130,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, + 9,0,0,0,67,0,0,0,115,22,0,0,0,116,0,160, + 1,116,2,124,1,124,2,100,1,100,2,124,3,100,3,166, + 6,83,0,41,5,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, + 108,0,0,0,78,41,3,114,158,0,0,0,114,241,0,0, + 0,218,7,99,111,109,112,105,108,101,41,4,114,143,0,0, + 0,114,42,0,0,0,114,65,0,0,0,114,1,1,0,0, + 32,32,32,32,114,7,0,0,0,218,14,115,111,117,114,99, + 101,95,116,111,95,99,111,100,101,180,3,0,0,115,6,0, + 0,0,12,5,4,1,6,255,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115, + 28,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,9,0,116,1,124,2,131,1,125,8,110,13,35,0, + 4,0,116,2,144,1,121,13,1,0,1,0,1,0,100,1, + 125,8,89,0,110,147,37,0,9,0,124,0,160,3,124,2, + 161,1,125,9,110,11,35,0,4,0,116,4,144,1,121,12, + 1,0,1,0,1,0,89,0,110,129,37,0,116,5,124,9, + 100,4,25,0,131,1,125,3,9,0,124,0,160,6,124,8, + 161,1,125,10,110,11,35,0,4,0,116,4,144,1,121,11, + 1,0,1,0,1,0,89,0,110,105,37,0,124,1,124,8, + 100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8,107,3,125,7, + 116,9,106,10,100,10,107,3,114,140,124,7,115,122,116,9, + 106,10,100,11,107,2,114,140,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,10,116,14, + 124,10,124,3,124,9,100,12,25,0,124,1,124,11,131,5, + 1,0,110,13,35,0,4,0,116,15,116,16,102,2,144,1, + 121,10,1,0,1,0,1,0,89,0,110,16,37,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,114,189,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,1,115,7,124,8, + 100,1,117,1,144,1,114,7,124,3,100,1,117,1,144,1, + 114,7,124,6,114,233,124,5,100,1,117,0,114,226,116,9, + 160,11,124,4,161,1,125,5,116,23,124,14,124,5,124,7, + 131,3,125,10,110,8,116,24,124,14,124,3,116,25,124,4, + 131,1,131,3,125,10,9,0,124,0,160,26,124,2,124,8, + 124,10,161,3,1,0,124,14,83,0,35,0,4,0,116,2, + 144,1,121,9,1,0,1,0,1,0,89,0,124,14,83,0, + 37,0,124,14,83,0,119,0,119,0,119,0,119,0,119,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,192,0,0,0,114,182,0,0,0,114, + 168,0,0,0,114,3,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,141,0,0,0,114,132, + 0,0,0,114,134,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, + 202,0,0,0,114,121,0,0,0,114,107,0,0,0,114,251, + 0,0,0,114,76,0,0,0,114,34,0,0,0,114,254,0, + 0,0,114,175,0,0,0,218,10,109,101,109,111,114,121,118, + 105,101,119,114,186,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, + 180,0,0,0,218,17,95,82,65,87,95,77,65,71,73,67, + 95,78,85,77,66,69,82,114,181,0,0,0,114,179,0,0, + 0,114,142,0,0,0,114,173,0,0,0,114,158,0,0,0, + 114,172,0,0,0,114,188,0,0,0,114,4,1,0,0,114, + 16,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,194,0,0,0,114,193, + 0,0,0,114,4,0,0,0,114,253,0,0,0,41,15,114, + 143,0,0,0,114,162,0,0,0,114,134,0,0,0,114,177, + 0,0,0,114,197,0,0,0,114,180,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,132,0,0,0,218,2,115,116, + 114,42,0,0,0,114,174,0,0,0,114,17,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,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,114,7,0,0,0,114,240,0,0, + 0,188,3,0,0,115,188,0,0,0,10,7,4,1,4,1, + 4,1,4,1,4,1,2,1,10,1,2,128,14,1,8,1, + 2,128,2,2,12,1,2,128,14,1,4,1,2,128,12,2, + 2,1,12,1,2,128,14,1,4,1,2,128,2,3,2,1, + 6,254,2,4,12,1,16,1,12,1,4,1,12,1,10,1, + 2,1,2,255,8,2,2,254,10,3,4,1,2,1,2,1, + 4,254,8,4,2,1,4,255,2,128,2,3,2,1,2,1, + 6,1,2,1,2,1,4,251,4,128,18,7,4,1,2,128, + 8,2,2,1,4,255,6,2,2,1,2,1,6,254,8,3, + 10,1,12,1,12,1,18,1,6,1,4,255,4,2,8,1, + 10,1,14,1,6,2,6,1,4,255,2,2,14,1,4,3, + 2,128,14,254,2,1,4,1,2,128,4,0,2,254,2,233, + 2,225,2,250,2,251,115,80,0,0,0,144,4,21,0,149, + 10,33,7,163,5,41,0,169,8,51,7,187,5,65,1,0, + 193,1,8,65,11,7,193,18,65,5,66,24,0,194,24,10, + 66,36,7,195,50,7,67,59,0,195,59,8,68,6,7,196, + 9,1,68,6,7,196,10,1,66,36,7,196,11,1,65,11, + 7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0,114,7,0,0, + 0,114,248,0,0,0,129,3,0,0,115,16,0,0,0,8, + 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, + 9,0,0,0,114,248,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,94, + 0,0,0,135,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,136,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,136,0,4,0,90,12,83, + 0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0,114,162, + 0,0,0,114,65,0,0,0,32,32,32,114,7,0,0,0, + 114,235,0,0,0,22,4,0,0,115,4,0,0,0,6,3, + 10,1,114,9,0,0,0,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,67,0,0, + 0,243,24,0,0,0,124,0,106,0,124,1,106,0,107,2, + 111,11,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,143,0,0,0,90,5,111,116, + 104,101,114,32,32,114,7,0,0,0,218,6,95,95,101,113, + 95,95,28,4,0,0,243,6,0,0,0,12,1,10,1,2, + 255,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,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,141,0,0,0,114,65,0,0,0,169,1, + 114,143,0,0,0,32,114,7,0,0,0,218,8,95,95,104, + 97,115,104,95,95,32,4,0,0,243,2,0,0,0,20,1, + 114,9,0,0,0,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,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,2,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,41,3,218, + 5,115,117,112,101,114,114,10,1,0,0,114,247,0,0,0, + 41,3,114,143,0,0,0,114,162,0,0,0,114,13,1,0, + 0,32,32,128,114,7,0,0,0,114,247,0,0,0,35,4, + 0,0,115,2,0,0,0,16,10,114,9,0,0,0,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,1,0,0,0,67,0,0,0,243,6,0,0,0, + 124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0,0,32, + 32,114,7,0,0,0,114,202,0,0,0,47,4,0,0,243, + 2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0,116,0, + 124,0,116,1,116,2,102,2,131,2,114,38,116,3,160,4, + 116,5,124,1,131,1,161,1,53,0,125,2,124,2,160,6, + 161,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 35,0,49,0,115,30,119,4,37,0,1,0,1,0,1,0, + 89,0,1,0,1,0,100,1,83,0,116,3,160,7,124,1, + 100,2,161,2,53,0,125,2,124,2,160,6,161,0,2,0, + 100,1,4,0,4,0,131,3,1,0,83,0,35,0,49,0, + 115,60,119,4,37,0,1,0,1,0,1,0,89,0,1,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,184,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,91,0,0,0,90,9,111,112,101, + 110,95,99,111,100,101,114,109,0,0,0,90,4,114,101,97, + 100,114,92,0,0,0,41,3,114,143,0,0,0,114,65,0, + 0,0,114,94,0,0,0,32,32,32,114,7,0,0,0,114, + 254,0,0,0,52,4,0,0,115,22,0,0,0,14,2,16, + 1,6,1,14,255,22,128,4,0,14,3,6,1,14,255,22, + 128,4,0,115,24,0,0,0,142,4,25,3,153,4,29,11, + 158,3,29,11,172,4,55,3,183,4,59,11,188,3,59,11, + 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,67,0,0,0,115,20,0,0,0,100, + 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,131, + 1,83,0,41,3,78,114,0,0,0,0,41,1,218,10,70, + 105,108,101,82,101,97,100,101,114,41,2,218,17,105,109,112, + 111,114,116,108,105,98,46,114,101,97,100,101,114,115,114,29, + 1,0,0,41,3,114,143,0,0,0,114,243,0,0,0,114, + 29,1,0,0,32,32,32,114,7,0,0,0,218,19,103,101, + 116,95,114,101,115,111,117,114,99,101,95,114,101,97,100,101, + 114,61,4,0,0,115,4,0,0,0,12,2,8,1,114,9, + 0,0,0,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,60,4,0,0,115,4,0,0,0,12,2,8,1, - 114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0,0, - 0,114,150,0,0,0,114,151,0,0,0,114,235,0,0,0, - 114,15,1,0,0,114,21,1,0,0,114,159,0,0,0,114, - 247,0,0,0,114,202,0,0,0,114,254,0,0,0,114,31, - 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, - 95,95,41,1,114,13,1,0,0,64,114,7,0,0,0,114, - 10,1,0,0,16,4,0,0,115,24,0,0,0,8,0,4, - 2,8,3,8,6,8,4,2,3,14,1,2,11,10,1,8, - 4,2,9,18,1,114,9,0,0,0,114,10,1,0,0,99, - 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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65, - 0,0,0,114,9,1,0,0,32,32,32,114,7,0,0,0, - 114,251,0,0,0,70,4,0,0,115,4,0,0,0,8,2, - 14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0, - 124,1,131,1,125,4,124,0,160,1,124,2,124,3,124,4, - 100,1,166,3,83,0,41,2,78,169,1,218,5,95,109,111, - 100,101,41,2,114,139,0,0,0,114,252,0,0,0,41,5, - 114,143,0,0,0,114,134,0,0,0,114,132,0,0,0,114, - 42,0,0,0,114,78,0,0,0,32,32,32,32,32,114,7, - 0,0,0,114,253,0,0,0,75,4,0,0,115,4,0,0, - 0,8,2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0, - 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, - 124,4,114,31,116,1,124,4,131,1,115,31,116,0,124,4, - 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, - 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, - 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, - 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, - 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, - 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, - 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, - 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, - 126,8,119,1,37,0,9,0,116,11,124,1,124,2,124,3, - 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, - 100,2,83,0,35,0,4,0,116,8,121,123,1,0,125,8, - 1,0,116,9,160,10,100,1,124,1,124,8,161,3,1,0, - 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, - 126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0, - 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, - 114,67,0,0,0,114,19,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,172,0,0, - 0,114,95,0,0,0,41,9,114,143,0,0,0,114,65,0, - 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, - 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, - 0,0,0,114,255,0,0,0,32,32,32,32,32,32,32,32, - 32,114,7,0,0,0,114,252,0,0,0,80,4,0,0,115, - 60,0,0,0,12,2,4,1,12,2,12,1,10,1,12,254, - 12,4,10,1,2,1,12,1,2,128,12,1,4,2,12,1, - 6,3,4,1,4,255,14,2,10,128,2,1,12,1,16,1, - 2,128,12,1,8,2,2,1,16,255,10,128,2,254,2,247, - 115,62,0,0,0,171,5,49,2,177,7,65,18,9,186,6, - 65,18,9,193,0,7,65,14,9,193,14,4,65,18,9,193, - 20,12,65,34,0,193,34,7,65,58,7,193,41,7,65,54, - 7,193,54,4,65,58,7,193,59,1,65,58,7,193,60,1, - 65,18,9,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,251,0,0,0,114,253,0,0,0,114, - 252,0,0,0,114,12,0,0,0,114,7,0,0,0,114,32, - 1,0,0,66,4,0,0,115,10,0,0,0,8,0,4,2, - 8,2,8,5,18,5,114,9,0,0,0,114,32,1,0,0, - 99,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,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,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,182,0,0,0,114,168,0,0,0,41,2,114,141, - 0,0,0,114,132,0,0,0,41,5,114,202,0,0,0,114, - 254,0,0,0,114,175,0,0,0,114,188,0,0,0,114,6, - 1,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, - 65,0,0,0,114,42,0,0,0,114,174,0,0,0,32,32, - 32,32,32,114,7,0,0,0,114,240,0,0,0,115,4,0, - 0,115,22,0,0,0,10,1,10,1,2,4,2,1,6,254, - 12,4,2,1,14,1,2,1,2,1,6,253,114,9,0,0, - 0,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,1,0,0, - 0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,0,1,0,0,131,4,0,0, - 114,25,0,0,0,114,9,0,0,0,122,31,83,111,117,114, + 100,101,114,41,13,114,149,0,0,0,114,148,0,0,0,114, + 150,0,0,0,114,151,0,0,0,114,235,0,0,0,114,15, + 1,0,0,114,21,1,0,0,114,159,0,0,0,114,247,0, + 0,0,114,202,0,0,0,114,254,0,0,0,114,31,1,0, + 0,90,13,95,95,99,108,97,115,115,99,101,108,108,95,95, + 41,1,114,13,1,0,0,64,114,7,0,0,0,114,10,1, + 0,0,17,4,0,0,115,24,0,0,0,10,128,4,2,8, + 3,8,6,8,4,2,3,14,1,2,11,10,1,8,4,2, + 9,18,1,114,9,0,0,0,114,10,1,0,0,99,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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65,0,0, + 0,114,9,1,0,0,32,32,32,114,7,0,0,0,114,251, + 0,0,0,71,4,0,0,115,4,0,0,0,8,2,14,1, + 114,9,0,0,0,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,6, + 0,0,0,67,0,0,0,115,24,0,0,0,116,0,124,1, + 131,1,125,4,124,0,160,1,124,2,124,3,124,4,100,1, + 166,3,83,0,41,2,78,169,1,218,5,95,109,111,100,101, + 41,2,114,139,0,0,0,114,252,0,0,0,41,5,114,143, + 0,0,0,114,134,0,0,0,114,132,0,0,0,114,42,0, + 0,0,114,78,0,0,0,32,32,32,32,32,114,7,0,0, + 0,114,253,0,0,0,76,4,0,0,115,4,0,0,0,8, + 2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0,116,0, + 124,1,131,1,92,2,125,4,125,5,103,0,125,6,124,4, + 114,31,116,1,124,4,131,1,115,31,116,0,124,4,131,1, + 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, + 124,4,114,31,116,1,124,4,131,1,114,14,116,3,124,6, + 131,1,68,0,93,47,125,7,116,4,124,4,124,7,131,2, + 125,4,9,0,116,5,160,6,124,4,161,1,1,0,113,35, + 35,0,4,0,116,7,121,58,1,0,1,0,1,0,89,0, + 113,35,4,0,116,8,121,124,1,0,125,8,1,0,116,9, + 160,10,100,1,124,4,124,8,161,3,1,0,89,0,100,2, + 125,8,126,8,1,0,100,2,83,0,100,2,125,8,126,8, + 119,1,37,0,9,0,116,11,124,1,124,2,124,3,131,3, + 1,0,116,9,160,10,100,3,124,1,161,2,1,0,100,2, + 83,0,35,0,4,0,116,8,121,123,1,0,125,8,1,0, + 116,9,160,10,100,1,124,1,124,8,161,3,1,0,89,0, + 100,2,125,8,126,8,100,2,83,0,100,2,125,8,126,8, + 119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0,0,114, + 61,0,0,0,218,8,114,101,118,101,114,115,101,100,114,67, + 0,0,0,114,19,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,172,0,0,0,114, + 95,0,0,0,41,9,114,143,0,0,0,114,65,0,0,0, + 114,42,0,0,0,114,35,1,0,0,218,6,112,97,114,101, + 110,116,114,120,0,0,0,114,63,0,0,0,114,68,0,0, + 0,114,255,0,0,0,32,32,32,32,32,32,32,32,32,114, + 7,0,0,0,114,252,0,0,0,81,4,0,0,115,60,0, + 0,0,12,2,4,1,12,2,12,1,10,1,12,254,12,4, + 10,1,2,1,12,1,2,128,12,1,4,2,12,1,6,3, + 4,1,4,255,14,2,10,128,2,1,12,1,16,1,2,128, + 12,1,8,2,2,1,16,255,10,128,2,254,2,247,115,62, + 0,0,0,171,5,49,2,177,7,65,18,9,186,6,65,18, + 9,193,0,7,65,14,9,193,14,4,65,18,9,193,20,12, + 65,34,0,193,34,7,65,58,7,193,41,7,65,54,7,193, + 54,4,65,58,7,193,59,1,65,58,7,193,60,1,65,18, + 9,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,251,0,0,0,114,253,0,0,0,114,252,0, + 0,0,114,12,0,0,0,114,7,0,0,0,114,32,1,0, + 0,67,4,0,0,115,10,0,0,0,8,0,4,2,8,2, + 8,5,18,5,114,9,0,0,0,114,32,1,0,0,99,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,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, - 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,240,0,0,0,114,0,1,0,0,114,12,0,0, - 0,114,7,0,0,0,114,39,1,0,0,111,4,0,0,115, - 8,0,0,0,8,0,4,2,8,2,12,16,114,9,0,0, - 0,114,39,1,0,0,99,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,28, - 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,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,0,83,0,114,69,0,0, - 0,114,182,0,0,0,41,3,114,143,0,0,0,114,141,0, - 0,0,114,65,0,0,0,32,32,32,114,7,0,0,0,114, - 235,0,0,0,144,4,0,0,115,4,0,0,0,6,1,10, - 1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69, - 0,0,0,114,12,1,0,0,114,14,1,0,0,32,32,114, - 7,0,0,0,114,15,1,0,0,148,4,0,0,114,16,1, - 0,0,114,9,0,0,0,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, - 3,0,0,0,67,0,0,0,114,17,1,0,0,114,69,0, - 0,0,114,18,1,0,0,114,20,1,0,0,32,114,7,0, - 0,0,114,21,1,0,0,152,4,0,0,114,22,1,0,0, - 114,9,0,0,0,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, - 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,3,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,78,41,7,114,158,0,0,0,114,241,0,0,0, - 114,186,0,0,0,90,14,99,114,101,97,116,101,95,100,121, - 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, - 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, - 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, - 0,0,155,4,0,0,115,14,0,0,0,4,2,6,1,4, - 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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,5,0, + 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, + 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,182,0,0,0,114,168,0,0,0,41,2,114,141,0,0, + 0,114,132,0,0,0,41,5,114,202,0,0,0,114,254,0, + 0,0,114,175,0,0,0,114,188,0,0,0,114,6,1,0, + 0,41,5,114,143,0,0,0,114,162,0,0,0,114,65,0, + 0,0,114,42,0,0,0,114,174,0,0,0,32,32,32,32, + 32,114,7,0,0,0,114,240,0,0,0,116,4,0,0,115, + 22,0,0,0,10,1,10,1,2,4,2,1,6,254,12,4, + 2,1,14,1,2,1,2,1,6,253,114,9,0,0,0,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,1,0,0,0,67, + 0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32, + 114,7,0,0,0,114,0,1,0,0,132,4,0,0,114,25, + 0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0,0,114, + 7,0,0,0,114,39,1,0,0,112,4,0,0,115,8,0, + 0,0,8,0,4,2,8,2,12,16,114,9,0,0,0,114, + 39,1,0,0,99,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,28,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,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,0,83,0,114,69,0,0,0,114, + 182,0,0,0,41,3,114,143,0,0,0,114,141,0,0,0, + 114,65,0,0,0,32,32,32,114,7,0,0,0,114,235,0, + 0,0,145,4,0,0,115,4,0,0,0,6,1,10,1,114, + 9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69,0,0, + 0,114,12,1,0,0,114,14,1,0,0,32,32,114,7,0, + 0,0,114,15,1,0,0,149,4,0,0,114,16,1,0,0, + 114,9,0,0,0,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,3,0, + 0,0,67,0,0,0,114,17,1,0,0,114,69,0,0,0, + 114,18,1,0,0,114,20,1,0,0,32,114,7,0,0,0, + 114,21,1,0,0,153,4,0,0,114,22,1,0,0,114,9, + 0,0,0,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,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,241,0,0,0,114,186,0,0,0,90,12,101, - 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, - 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, - 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, - 0,0,163,4,0,0,115,8,0,0,0,14,2,6,1,8, - 1,8,255,114,9,0,0,0,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,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, - 2,116,2,135,2,102,1,100,2,100,3,132,8,116,3,68, + 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, + 3,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,78,41,7,114,158,0,0,0,114,241,0,0,0,114,186, + 0,0,0,90,14,99,114,101,97,116,101,95,100,121,110,97, + 109,105,99,114,172,0,0,0,114,141,0,0,0,114,65,0, + 0,0,41,3,114,143,0,0,0,114,209,0,0,0,114,243, + 0,0,0,32,32,32,114,7,0,0,0,114,238,0,0,0, + 156,4,0,0,115,14,0,0,0,4,2,6,1,4,255,6, + 2,8,1,4,255,4,2,114,9,0,0,0,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,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,241,0,0,0,114,186,0,0,0,90,12,101,120,101, + 99,95,100,121,110,97,109,105,99,114,172,0,0,0,114,141, + 0,0,0,114,65,0,0,0,169,2,114,143,0,0,0,114, + 243,0,0,0,32,32,114,7,0,0,0,114,244,0,0,0, + 164,4,0,0,115,8,0,0,0,14,2,6,1,8,1,8, + 255,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,38,0,0, + 0,135,2,116,0,124,0,106,1,131,1,100,1,25,0,138, + 2,116,2,136,2,102,1,100,2,100,3,132,8,116,3,68, 0,131,1,131,1,83,0,41,5,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,3,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, 0,0,51,0,0,0,115,28,0,0,0,129,0,124,0,93, - 9,125,1,136,2,100,0,124,1,23,0,107,2,86,0,1, + 9,125,1,137,2,100,0,124,1,23,0,107,2,86,0,1, 0,113,2,100,1,83,0,41,2,114,235,0,0,0,78,114, 12,0,0,0,41,3,114,5,0,0,0,218,6,115,117,102, 102,105,120,218,9,102,105,108,101,95,110,97,109,101,32,32, - 128,114,7,0,0,0,114,8,0,0,0,172,4,0,0,115, + 128,114,7,0,0,0,114,8,0,0,0,173,4,0,0,115, 6,0,0,0,6,128,2,1,20,255,114,9,0,0,0,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,46, @@ -1819,950 +1820,950 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,62,78,41,4,114,73,0,0,0,114,65,0,0,0,218, 3,97,110,121,114,231,0,0,0,41,3,114,143,0,0,0, 114,162,0,0,0,114,42,1,0,0,32,32,64,114,7,0, - 0,0,114,205,0,0,0,169,4,0,0,115,8,0,0,0, - 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0, - 0,0,114,24,0,0,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,12,0,0,0, - 114,246,0,0,0,32,32,114,7,0,0,0,114,240,0,0, - 0,175,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114,7,0, - 0,0,114,0,1,0,0,179,4,0,0,114,25,0,0,0, - 114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0,0,114, - 25,1,0,0,114,74,0,0,0,114,246,0,0,0,32,32, - 114,7,0,0,0,114,202,0,0,0,183,4,0,0,114,26, - 1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1,0,0, - 114,238,0,0,0,114,244,0,0,0,114,205,0,0,0,114, - 240,0,0,0,114,0,1,0,0,114,159,0,0,0,114,202, - 0,0,0,114,12,0,0,0,114,7,0,0,0,114,28,1, - 0,0,136,4,0,0,115,24,0,0,0,8,0,4,2,8, - 6,8,4,8,4,8,3,8,8,8,6,8,6,8,4,2, - 4,14,1,114,9,0,0,0,114,28,1,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, - 0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100,21,132, - 0,90,13,100,22,100,23,132,0,90,14,100,24,83,0,41, - 25,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,99,4,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, - 0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0,0,41, - 6,218,5,95,110,97,109,101,218,5,95,112,97,116,104,114, - 136,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,12,95,112,97,116,104, - 95,102,105,110,100,101,114,169,4,114,143,0,0,0,114,141, - 0,0,0,114,65,0,0,0,90,11,112,97,116,104,95,102, - 105,110,100,101,114,32,32,32,32,114,7,0,0,0,114,235, - 0,0,0,196,4,0,0,115,8,0,0,0,6,1,6,1, - 14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4,102,2, - 83,0,41,6,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,97,0,0,0,114,10,0,0,0,41,2, - 114,16,0,0,0,114,65,0,0,0,90,8,95,95,112,97, - 116,104,95,95,78,41,2,114,45,1,0,0,114,104,0,0, - 0,41,4,114,143,0,0,0,114,38,1,0,0,218,3,100, - 111,116,90,2,109,101,32,32,32,32,114,7,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,202,4,0,0,115,8,0,0, - 0,18,2,8,1,4,2,8,3,114,9,0,0,0,122,38, + 0,0,114,205,0,0,0,170,4,0,0,115,10,0,0,0, + 2,128,14,2,12,1,2,1,8,255,114,9,0,0,0,122, + 30,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,1,0,0,0, + 67,0,0,0,114,24,0,0,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,12,0, + 0,0,114,246,0,0,0,32,32,114,7,0,0,0,114,240, + 0,0,0,176,4,0,0,114,25,0,0,0,114,9,0,0, + 0,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,1,0,0,0, + 67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114, + 7,0,0,0,114,0,1,0,0,180,4,0,0,114,25,0, + 0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0, + 0,114,25,1,0,0,114,74,0,0,0,114,246,0,0,0, + 32,32,114,7,0,0,0,114,202,0,0,0,184,4,0,0, + 114,26,1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1, + 0,0,114,238,0,0,0,114,244,0,0,0,114,205,0,0, + 0,114,240,0,0,0,114,0,1,0,0,114,159,0,0,0, + 114,202,0,0,0,114,12,0,0,0,114,7,0,0,0,114, + 28,1,0,0,137,4,0,0,115,24,0,0,0,8,0,4, + 2,8,6,8,4,8,4,8,3,8,8,8,6,8,6,8, + 4,2,4,14,1,114,9,0,0,0,114,28,1,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100, + 21,132,0,90,13,100,22,100,23,132,0,90,14,100,24,83, + 0,41,25,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,99,4, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, + 0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0, + 0,41,6,218,5,95,110,97,109,101,218,5,95,112,97,116, + 104,114,136,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,12,95,112,97, + 116,104,95,102,105,110,100,101,114,169,4,114,143,0,0,0, + 114,141,0,0,0,114,65,0,0,0,90,11,112,97,116,104, + 95,102,105,110,100,101,114,32,32,32,32,114,7,0,0,0, + 114,235,0,0,0,197,4,0,0,115,8,0,0,0,6,1, + 6,1,14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4, + 102,2,83,0,41,6,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,97,0,0,0,114,10,0,0,0, + 41,2,114,16,0,0,0,114,65,0,0,0,90,8,95,95, + 112,97,116,104,95,95,78,41,2,114,45,1,0,0,114,104, + 0,0,0,41,4,114,143,0,0,0,114,38,1,0,0,218, + 3,100,111,116,90,2,109,101,32,32,32,32,114,7,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,203,4,0,0,115,8, + 0,0,0,18,2,8,1,4,2,8,3,114,9,0,0,0, + 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,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,52,1,0,0,114,154,0,0,0,114, + 16,0,0,0,218,7,109,111,100,117,108,101,115,41,3,114, + 143,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,32,32,32,114,7,0,0,0, + 114,47,1,0,0,213,4,0,0,115,4,0,0,0,12,1, + 16,1,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0, + 0,0,116,0,124,0,160,1,161,0,131,1,125,1,124,1, + 124,0,106,2,107,3,114,37,124,0,160,3,124,0,106,4, + 124,1,161,2,125,2,124,2,100,0,117,1,114,34,124,2, + 106,5,100,0,117,0,114,34,124,2,106,6,114,34,124,2, + 106,6,124,0,95,7,124,1,124,0,95,2,124,0,106,7, + 83,0,114,69,0,0,0,41,8,114,136,0,0,0,114,47, + 1,0,0,114,48,1,0,0,114,49,1,0,0,114,45,1, + 0,0,114,163,0,0,0,114,201,0,0,0,114,46,1,0, + 0,41,3,114,143,0,0,0,90,11,112,97,114,101,110,116, + 95,112,97,116,104,114,209,0,0,0,32,32,32,114,7,0, + 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, + 217,4,0,0,115,16,0,0,0,12,2,10,1,14,1,18, + 3,6,1,8,1,6,1,6,1,114,9,0,0,0,122,27, 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,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,52,1,0,0,114,154,0,0,0,114,16,0, - 0,0,218,7,109,111,100,117,108,101,115,41,3,114,143,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,32,32,32,114,7,0,0,0,114,47, - 1,0,0,212,4,0,0,115,4,0,0,0,12,1,16,1, - 114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0,0,0, - 116,0,124,0,160,1,161,0,131,1,125,1,124,1,124,0, - 106,2,107,3,114,37,124,0,160,3,124,0,106,4,124,1, - 161,2,125,2,124,2,100,0,117,1,114,34,124,2,106,5, - 100,0,117,0,114,34,124,2,106,6,114,34,124,2,106,6, - 124,0,95,7,124,1,124,0,95,2,124,0,106,7,83,0, - 114,69,0,0,0,41,8,114,136,0,0,0,114,47,1,0, - 0,114,48,1,0,0,114,49,1,0,0,114,45,1,0,0, - 114,163,0,0,0,114,201,0,0,0,114,46,1,0,0,41, - 3,114,143,0,0,0,90,11,112,97,114,101,110,116,95,112, - 97,116,104,114,209,0,0,0,32,32,32,114,7,0,0,0, - 218,12,95,114,101,99,97,108,99,117,108,97,116,101,216,4, - 0,0,115,16,0,0,0,12,2,10,1,14,1,18,3,6, - 1,8,1,6,1,6,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,12, - 0,0,0,116,0,124,0,160,1,161,0,131,1,83,0,114, - 69,0,0,0,41,2,218,4,105,116,101,114,114,54,1,0, - 0,114,20,1,0,0,32,114,7,0,0,0,218,8,95,95, - 105,116,101,114,95,95,229,4,0,0,243,2,0,0,0,12, - 1,114,9,0,0,0,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, - 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,54,1,0, - 0,41,2,114,143,0,0,0,218,5,105,110,100,101,120,32, - 32,114,7,0,0,0,218,11,95,95,103,101,116,105,116,101, - 109,95,95,232,4,0,0,114,58,1,0,0,114,9,0,0, - 0,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,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,46,1,0, - 0,41,3,114,143,0,0,0,114,60,1,0,0,114,65,0, - 0,0,32,32,32,114,7,0,0,0,218,11,95,95,115,101, - 116,105,116,101,109,95,95,235,4,0,0,115,2,0,0,0, - 14,1,114,9,0,0,0,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, - 3,0,0,0,67,0,0,0,114,55,1,0,0,114,69,0, - 0,0,41,2,114,4,0,0,0,114,54,1,0,0,114,20, - 1,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, - 95,95,238,4,0,0,114,58,1,0,0,114,9,0,0,0, - 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,3,0,0,0,67,0,0,0,243,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,89,0,0,0,114,46, + 114,101,99,97,108,99,117,108,97,116,101,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 243,12,0,0,0,116,0,124,0,160,1,161,0,131,1,83, + 0,114,69,0,0,0,41,2,218,4,105,116,101,114,114,54, 1,0,0,114,20,1,0,0,32,114,7,0,0,0,218,8, - 95,95,114,101,112,114,95,95,241,4,0,0,114,58,1,0, - 0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32,114,7, - 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,244,4,0,0,114,58,1,0,0,114,9,0,0,0,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,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,46,1, - 0,0,114,61,0,0,0,114,66,1,0,0,32,32,114,7, - 0,0,0,114,61,0,0,0,247,4,0,0,243,2,0,0, - 0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150,0,0, - 0,114,151,0,0,0,114,235,0,0,0,114,52,1,0,0, - 114,47,1,0,0,114,54,1,0,0,114,57,1,0,0,114, - 61,1,0,0,114,62,1,0,0,114,63,1,0,0,114,65, - 1,0,0,114,68,1,0,0,114,61,0,0,0,114,12,0, - 0,0,114,7,0,0,0,114,44,1,0,0,189,4,0,0, - 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, - 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, - 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, - 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,100,18,132,0,90,12,100,19,83,0,41,20,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, - 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,44,1,0,0,114,46,1,0,0,114,50,1,0, - 0,32,32,32,32,114,7,0,0,0,114,235,0,0,0,253, - 4,0,0,115,2,0,0,0,18,1,114,9,0,0,0,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,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 24,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, - 100,2,160,3,124,0,106,4,161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0,0,114, - 101,0,0,0,114,89,0,0,0,114,149,0,0,0,41,1, - 114,243,0,0,0,32,114,7,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,0,5,0,0,115,8,0,0, - 0,6,7,2,1,4,255,12,2,114,9,0,0,0,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, + 95,95,105,116,101,114,95,95,230,4,0,0,243,2,0,0, + 0,12,1,114,9,0,0,0,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,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,54, + 1,0,0,41,2,114,143,0,0,0,218,5,105,110,100,101, + 120,32,32,114,7,0,0,0,218,11,95,95,103,101,116,105, + 116,101,109,95,95,233,4,0,0,114,58,1,0,0,114,9, + 0,0,0,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, + 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,46, + 1,0,0,41,3,114,143,0,0,0,114,60,1,0,0,114, + 65,0,0,0,32,32,32,114,7,0,0,0,218,11,95,95, + 115,101,116,105,116,101,109,95,95,236,4,0,0,115,2,0, + 0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,55,1,0,0,114, + 69,0,0,0,41,2,114,4,0,0,0,114,54,1,0,0, + 114,20,1,0,0,32,114,7,0,0,0,218,7,95,95,108, + 101,110,95,95,239,4,0,0,114,58,1,0,0,114,9,0, + 0,0,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,3,0,0,0,67,0,0,0,243, + 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,89,0,0,0, + 114,46,1,0,0,114,20,1,0,0,32,114,7,0,0,0, + 218,8,95,95,114,101,112,114,95,95,242,4,0,0,114,58, + 1,0,0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32, + 114,7,0,0,0,218,12,95,95,99,111,110,116,97,105,110, + 115,95,95,245,4,0,0,114,58,1,0,0,114,9,0,0, + 0,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,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, + 46,1,0,0,114,61,0,0,0,114,66,1,0,0,32,32, + 114,7,0,0,0,114,61,0,0,0,248,4,0,0,243,2, + 0,0,0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150, + 0,0,0,114,151,0,0,0,114,235,0,0,0,114,52,1, + 0,0,114,47,1,0,0,114,54,1,0,0,114,57,1,0, + 0,114,61,1,0,0,114,62,1,0,0,114,63,1,0,0, + 114,65,1,0,0,114,68,1,0,0,114,61,0,0,0,114, + 12,0,0,0,114,7,0,0,0,114,44,1,0,0,190,4, + 0,0,115,26,0,0,0,8,0,4,1,8,6,8,6,8, + 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, + 3,114,9,0,0,0,114,44,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, + 115,88,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,100,18,132,0,90,12,100,19,83,0,41,20,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,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,44,1,0,0,114,46,1,0,0,114,50, + 1,0,0,32,32,32,32,114,7,0,0,0,114,235,0,0, + 0,254,4,0,0,115,2,0,0,0,18,1,114,9,0,0, + 0,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,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,24,0,0,0,116,0,160,1,100,1,116,2,161,2, + 1,0,100,2,160,3,124,0,106,4,161,1,83,0,41,4, + 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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0, + 0,114,101,0,0,0,114,89,0,0,0,114,149,0,0,0, + 41,1,114,243,0,0,0,32,114,7,0,0,0,218,11,109, + 111,100,117,108,101,95,114,101,112,114,1,5,0,0,115,8, + 0,0,0,6,7,2,1,4,255,12,2,114,9,0,0,0, + 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,1,0,0,0,67, + 0,0,0,114,24,0,0,0,41,2,78,84,114,12,0,0, + 0,114,246,0,0,0,32,32,114,7,0,0,0,114,205,0, + 0,0,12,5,0,0,243,2,0,0,0,4,1,114,9,0, + 0,0,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,1,0,0,0, + 67,0,0,0,114,24,0,0,0,41,2,78,114,10,0,0, + 0,114,12,0,0,0,114,246,0,0,0,32,32,114,7,0, + 0,0,114,0,1,0,0,15,5,0,0,114,72,1,0,0, + 114,9,0,0,0,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,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, + 10,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,32,32,114,7,0,0,0,114,240, + 0,0,0,18,5,0,0,114,69,1,0,0,114,9,0,0, + 0,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,1,0,0,0,67,0,0, - 0,114,24,0,0,0,41,2,78,84,114,12,0,0,0,114, - 246,0,0,0,32,32,114,7,0,0,0,114,205,0,0,0, - 11,5,0,0,243,2,0,0,0,4,1,114,9,0,0,0, - 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,1,0,0,0,67,0, - 0,0,114,24,0,0,0,41,2,78,114,10,0,0,0,114, - 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, - 114,0,1,0,0,14,5,0,0,114,72,1,0,0,114,9, - 0,0,0,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,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,10,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,32,32,114,7,0,0,0,114,240,0,0, - 0,17,5,0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, - 24,0,0,0,114,236,0,0,0,114,12,0,0,0,114,237, - 0,0,0,32,32,114,7,0,0,0,114,238,0,0,0,20, - 5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, - 0,0,115,4,0,0,0,100,0,83,0,114,69,0,0,0, - 114,12,0,0,0,114,40,1,0,0,32,32,114,7,0,0, - 0,114,244,0,0,0,23,5,0,0,114,72,1,0,0,114, + 0,114,24,0,0,0,114,236,0,0,0,114,12,0,0,0, + 114,237,0,0,0,32,32,114,7,0,0,0,114,238,0,0, + 0,21,5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, + 0,0,114,12,0,0,0,114,40,1,0,0,32,32,114,7, + 0,0,0,114,244,0,0,0,24,5,0,0,114,72,1,0, + 0,114,9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172, + 0,0,0,114,46,1,0,0,114,245,0,0,0,114,246,0, + 0,0,32,32,114,7,0,0,0,114,247,0,0,0,27,5, + 0,0,115,8,0,0,0,6,7,4,1,4,255,12,3,114, 9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172,0,0, - 0,114,46,1,0,0,114,245,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,247,0,0,0,26,5,0,0, - 115,8,0,0,0,6,7,4,1,4,255,12,3,114,9,0, - 0,0,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, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,67,0,0,0,115,22,0,0,0,100,1,100,2,108,0, - 109,1,125,2,1,0,124,2,124,0,106,2,131,1,83,0, - 41,3,78,114,0,0,0,0,41,1,218,15,78,97,109,101, - 115,112,97,99,101,82,101,97,100,101,114,41,3,114,30,1, - 0,0,114,73,1,0,0,114,46,1,0,0,41,3,114,143, - 0,0,0,114,243,0,0,0,114,73,1,0,0,32,32,32, - 114,7,0,0,0,114,31,1,0,0,38,5,0,0,115,4, - 0,0,0,12,1,10,1,114,9,0,0,0,122,36,95,78, - 97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,235,0,0,0,114,232,0,0,0,114,71, - 1,0,0,114,205,0,0,0,114,0,1,0,0,114,240,0, - 0,0,114,238,0,0,0,114,244,0,0,0,114,247,0,0, - 0,114,31,1,0,0,114,12,0,0,0,114,7,0,0,0, - 114,70,1,0,0,252,4,0,0,115,22,0,0,0,8,0, - 8,1,2,3,10,1,8,10,8,3,8,3,8,3,8,3, - 8,3,12,12,114,9,0,0,0,114,70,1,0,0,99,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,7,100,6, - 100,7,132,0,131,1,90,8,101,7,100,8,100,9,132,0, - 131,1,90,9,101,7,100,19,100,11,100,12,132,1,131,1, - 90,10,101,7,100,20,100,13,100,14,132,1,131,1,90,11, - 101,7,100,19,100,15,100,16,132,1,131,1,90,12,101,4, - 100,17,100,18,132,0,131,1,90,13,100,10,83,0,41,21, - 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,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,64,0,0,0,116,0,116,1,106,2,160,3,161,0, - 131,1,68,0,93,22,92,2,125,0,125,1,124,1,100,1, - 117,0,114,20,116,1,106,2,124,0,61,0,113,7,116,4, - 124,1,100,2,131,2,114,29,124,1,160,5,161,0,1,0, - 113,7,100,1,83,0,41,3,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,41,6,218,4,108, - 105,115,116,114,16,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,75,1,0,0,41,2, - 114,141,0,0,0,218,6,102,105,110,100,101,114,32,32,114, - 7,0,0,0,114,75,1,0,0,49,5,0,0,115,14,0, - 0,0,22,4,8,1,10,1,10,1,8,1,2,128,4,252, - 114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,67,0,0,0,115,78,0,0,0,116,0,106, - 1,100,1,117,1,114,14,116,0,106,1,115,14,116,2,160, - 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, - 18,125,1,9,0,124,1,124,0,131,1,2,0,1,0,83, - 0,35,0,4,0,116,5,121,38,1,0,1,0,1,0,89, - 0,113,17,37,0,100,1,83,0,119,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,16,0,0,0,218,10, - 112,97,116,104,95,104,111,111,107,115,114,99,0,0,0,114, - 100,0,0,0,114,161,0,0,0,114,142,0,0,0,41,2, - 114,65,0,0,0,90,4,104,111,111,107,32,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,59, - 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, - 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, - 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,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,8,0,0,0,67,0,0,0,115,104,0,0, - 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, - 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, - 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, - 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, - 5,121,50,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,124, - 2,83,0,37,0,119,0,119,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, - 10,0,0,0,78,41,7,114,19,0,0,0,114,82,0,0, - 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, - 114,114,111,114,114,16,0,0,0,114,77,1,0,0,218,8, - 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, - 220,0,0,0,114,65,0,0,0,114,79,1,0,0,32,32, - 32,114,7,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,72,5,0,0, - 115,36,0,0,0,8,8,2,1,10,1,2,128,12,1,6, - 3,2,128,2,1,10,1,4,4,2,128,12,253,10,1,12, - 1,4,1,2,128,2,253,2,250,115,24,0,0,0,133,4, - 10,0,138,7,20,7,150,5,29,0,157,17,49,7,178,1, - 49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138,0,0, - 0,116,0,124,2,100,1,131,2,114,27,116,1,160,2,124, - 2,161,1,155,0,100,2,157,2,125,3,116,3,160,4,124, - 3,116,5,161,2,1,0,124,2,160,6,124,1,161,1,92, - 2,125,4,125,5,110,21,116,1,160,2,124,2,161,1,155, - 0,100,3,157,2,125,3,116,3,160,4,124,3,116,5,161, - 2,1,0,124,2,160,7,124,1,161,1,125,4,103,0,125, - 5,124,4,100,0,117,1,114,58,116,1,160,8,124,1,124, - 4,161,2,83,0,116,1,160,9,124,1,100,0,161,2,125, - 6,124,5,124,6,95,10,124,6,83,0,41,4,78,114,160, - 0,0,0,122,53,46,102,105,110,100,95,115,112,101,99,40, - 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, - 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, - 100,95,108,111,97,100,101,114,40,41,122,53,46,102,105,110, - 100,95,115,112,101,99,40,41,32,110,111,116,32,102,111,117, - 110,100,59,32,102,97,108,108,105,110,103,32,98,97,99,107, - 32,116,111,32,102,105,110,100,95,109,111,100,117,108,101,40, - 41,41,11,114,152,0,0,0,114,158,0,0,0,90,12,95, - 111,98,106,101,99,116,95,110,97,109,101,114,99,0,0,0, - 114,100,0,0,0,114,161,0,0,0,114,160,0,0,0,114, - 228,0,0,0,114,223,0,0,0,114,206,0,0,0,114,201, - 0,0,0,41,7,114,220,0,0,0,114,162,0,0,0,114, - 79,1,0,0,114,165,0,0,0,114,163,0,0,0,114,164, - 0,0,0,114,209,0,0,0,32,32,32,32,32,32,32,114, - 7,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, - 116,95,115,112,101,99,94,5,0,0,115,26,0,0,0,10, - 4,16,1,12,2,16,1,16,2,12,2,10,1,4,1,8, - 1,12,1,12,1,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0, - 0,115,166,0,0,0,103,0,125,4,124,2,68,0,93,67, - 125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,14, - 113,4,124,0,160,3,124,5,161,1,125,6,124,6,100,1, - 117,1,114,71,116,4,124,6,100,2,131,2,114,35,124,6, - 160,5,124,1,124,3,161,2,125,7,110,6,124,0,160,6, - 124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,46, - 113,4,124,7,106,7,100,1,117,1,114,55,124,7,2,0, - 1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,0, - 114,66,116,9,100,3,131,1,130,1,124,4,160,10,124,8, - 161,1,1,0,113,4,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,225,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,184,0,0, - 0,114,109,0,0,0,218,5,98,121,116,101,115,114,84,1, - 0,0,114,152,0,0,0,114,225,0,0,0,114,85,1,0, - 0,114,163,0,0,0,114,201,0,0,0,114,142,0,0,0, - 114,190,0,0,0,114,158,0,0,0,114,206,0,0,0,41, - 9,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, - 114,224,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,79,1,0, - 0,114,209,0,0,0,114,164,0,0,0,32,32,32,32,32, - 32,32,32,32,114,7,0,0,0,218,9,95,103,101,116,95, - 115,112,101,99,115,5,0,0,115,42,0,0,0,4,5,8, - 1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,8, - 1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,2, - 128,12,2,6,1,4,1,114,9,0,0,0,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,5, - 0,0,0,67,0,0,0,115,94,0,0,0,124,2,100,1, - 117,0,114,7,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,20, - 100,1,83,0,124,4,106,3,100,1,117,0,114,45,124,4, - 106,4,125,5,124,5,114,43,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,124,4,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,16, - 0,0,0,114,65,0,0,0,114,88,1,0,0,114,163,0, - 0,0,114,201,0,0,0,114,204,0,0,0,114,44,1,0, - 0,41,6,114,220,0,0,0,114,162,0,0,0,114,65,0, - 0,0,114,224,0,0,0,114,209,0,0,0,114,87,1,0, - 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, - 0,147,5,0,0,115,26,0,0,0,8,6,6,1,14,1, - 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, - 4,2,4,2,114,9,0,0,0,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, - 67,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, - 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, - 4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, - 0,0,0,32,32,32,32,114,7,0,0,0,114,228,0,0, - 0,171,5,0,0,115,14,0,0,0,6,8,2,2,4,254, - 12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124, - 0,105,0,124,1,164,1,142,1,83,0,41,4,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,78,41,3, - 90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,97, - 100,97,116,97,114,89,1,0,0,218,18,102,105,110,100,95, - 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, - 144,0,0,0,114,145,0,0,0,114,89,1,0,0,32,32, - 32,114,7,0,0,0,114,90,1,0,0,187,5,0,0,115, - 4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0, - 0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0,0,0, - 114,84,1,0,0,114,85,1,0,0,114,88,1,0,0,114, - 225,0,0,0,114,228,0,0,0,114,90,1,0,0,114,12, - 0,0,0,114,7,0,0,0,114,74,1,0,0,45,5,0, - 0,115,36,0,0,0,8,0,4,2,2,2,10,1,2,9, - 10,1,2,12,10,1,2,21,10,1,2,20,12,1,2,31, - 12,1,2,23,12,1,2,15,14,1,114,9,0,0,0,114, - 74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,112,0,0,0,103,0, - 125,3,124,2,68,0,93,16,92,2,137,5,125,4,124,3, - 160,0,135,5,102,1,100,1,100,2,132,8,124,4,68,0, - 131,1,161,1,1,0,113,4,124,3,124,0,95,1,124,1, - 112,27,100,3,124,0,95,2,116,3,124,0,106,2,131,1, - 115,43,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,3,0,0,0,51,0,0, - 0,115,24,0,0,0,129,0,124,0,93,7,125,1,124,1, - 136,2,102,2,86,0,1,0,113,2,100,0,83,0,114,69, - 0,0,0,114,12,0,0,0,41,3,114,5,0,0,0,114, - 41,1,0,0,114,163,0,0,0,32,32,128,114,7,0,0, - 0,114,8,0,0,0,216,5,0,0,115,4,0,0,0,6, - 128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41,11,114,190,0, - 0,0,218,8,95,108,111,97,100,101,114,115,114,65,0,0, - 0,114,86,0,0,0,114,67,0,0,0,114,19,0,0,0, - 114,82,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,6,114,143,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,211, - 0,0,0,114,163,0,0,0,32,32,32,32,32,64,114,7, - 0,0,0,114,235,0,0,0,210,5,0,0,115,20,0,0, - 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, - 1,8,1,12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93, - 1,0,0,114,20,1,0,0,32,114,7,0,0,0,114,75, - 1,0,0,226,5,0,0,114,81,0,0,0,114,9,0,0, - 0,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,4,0,0,0, - 67,0,0,0,115,54,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,161,1,125,2,124, - 2,100,2,117,0,114,19,100,2,103,0,102,2,83,0,124, - 2,106,4,124,2,106,5,112,25,103,0,102,2,83,0,41, - 3,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,122,101,70,105,108,101,70,105, - 110,100,101,114,46,102,105,110,100,95,108,111,97,100,101,114, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, - 41,6,114,99,0,0,0,114,100,0,0,0,114,101,0,0, - 0,114,225,0,0,0,114,163,0,0,0,114,201,0,0,0, - 41,3,114,143,0,0,0,114,162,0,0,0,114,209,0,0, - 0,32,32,32,114,7,0,0,0,114,160,0,0,0,232,5, - 0,0,115,14,0,0,0,6,7,2,2,4,254,10,3,8, - 1,8,1,16,1,114,9,0,0,0,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,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,200,0,0,0,41,1, - 114,212,0,0,0,41,7,114,143,0,0,0,114,210,0,0, - 0,114,162,0,0,0,114,65,0,0,0,90,4,115,109,115, - 108,114,224,0,0,0,114,163,0,0,0,32,32,32,32,32, - 32,32,114,7,0,0,0,114,88,1,0,0,247,5,0,0, - 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, - 0,0,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,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,9,0,116,1,124,0,106,2,112,17,116, - 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, - 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, - 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, - 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, - 0,114,56,124,0,106,10,125,6,124,4,160,11,161,0,125, - 7,110,5,124,0,106,12,125,6,124,4,125,7,124,7,124, - 6,118,0,114,108,116,13,124,0,106,2,124,4,131,2,125, - 8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125,3,124,0,106,14,68, - 0,93,55,92,2,125,9,125,10,9,0,116,13,124,0,106, - 2,124,4,124,9,23,0,131,2,125,12,110,12,35,0,4, - 0,116,18,121,189,1,0,1,0,1,0,89,0,1,0,100, - 6,83,0,37,0,116,19,160,20,100,7,124,12,100,3,100, - 8,166,3,1,0,124,7,124,9,23,0,124,6,118,0,114, - 166,116,15,124,12,131,1,114,166,124,0,160,16,124,10,124, - 1,124,12,100,6,124,2,161,5,2,0,1,0,83,0,113, - 111,124,3,114,187,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,119,0,119, - 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,97,0,0,0,114,45,0,0,0,114, - 130,0,0,0,114,235,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, - 104,0,0,0,114,75,0,0,0,114,65,0,0,0,114,19, - 0,0,0,114,82,0,0,0,114,33,1,0,0,114,76,0, - 0,0,114,93,1,0,0,218,11,95,102,105,108,108,95,99, - 97,99,104,101,114,22,0,0,0,114,96,1,0,0,114,131, - 0,0,0,114,95,1,0,0,114,67,0,0,0,114,92,1, - 0,0,114,80,0,0,0,114,88,1,0,0,114,83,0,0, - 0,114,111,0,0,0,114,158,0,0,0,114,172,0,0,0, - 114,206,0,0,0,114,201,0,0,0,41,14,114,143,0,0, - 0,114,162,0,0,0,114,224,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,192,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,210,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, - 209,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,225,0,0,0,252,5,0,0, - 115,94,0,0,0,4,5,14,1,2,1,22,1,2,128,12, - 1,8,1,2,128,10,1,8,1,6,1,6,2,6,1,10, - 1,6,2,4,1,8,2,12,1,14,1,8,1,10,1,8, - 1,24,1,2,255,8,5,14,2,2,1,18,1,2,128,12, - 1,8,1,2,128,16,1,12,1,8,1,10,1,4,1,8, - 255,2,128,4,2,12,1,12,1,8,1,4,1,4,1,2, - 244,2,228,115,31,0,0,0,138,10,21,0,149,9,32,7, - 193,52,8,65,61,2,193,61,7,66,8,9,194,61,1,66, - 8,9,194,62,1,32,7,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,10,0,0,0,67,0, - 0,0,115,194,0,0,0,124,0,106,0,125,1,9,0,116, - 1,160,2,124,1,112,11,116,1,160,3,161,0,161,1,125, - 2,110,15,35,0,4,0,116,4,116,5,116,6,102,3,121, - 96,1,0,1,0,1,0,103,0,125,2,89,0,110,1,37, - 0,116,7,106,8,160,9,100,1,161,1,115,41,116,10,124, - 2,131,1,124,0,95,11,110,37,116,10,131,0,125,3,124, - 2,68,0,93,28,125,4,124,4,160,12,100,2,161,1,92, - 3,125,5,125,6,125,7,124,6,114,67,100,3,160,13,124, - 5,124,7,160,14,161,0,161,2,125,8,110,2,124,5,125, - 8,124,3,160,15,124,8,161,1,1,0,113,46,124,3,124, - 0,95,11,116,7,106,8,160,9,116,16,161,1,114,94,100, - 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100, - 6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0,114,88,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,83,0,0,0,115,20,0,0,0,104,0,124,0,93,6, - 125,1,124,1,160,0,161,0,146,2,113,2,83,0,114,12, - 0,0,0,41,1,114,131,0,0,0,41,2,114,5,0,0, - 0,90,2,102,110,32,32,114,7,0,0,0,114,14,0,0, - 0,76,6,0,0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100, - 105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0,0,114,27,0,0,0, - 114,94,1,0,0,114,95,1,0,0,114,126,0,0,0,114, - 89,0,0,0,114,131,0,0,0,218,3,97,100,100,114,28, - 0,0,0,114,96,1,0,0,41,9,114,143,0,0,0,114, - 65,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, - 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, - 116,101,110,116,115,114,67,1,0,0,114,141,0,0,0,114, - 51,1,0,0,114,41,1,0,0,90,8,110,101,119,95,110, - 97,109,101,32,32,32,32,32,32,32,32,32,114,7,0,0, - 0,114,98,1,0,0,47,6,0,0,115,42,0,0,0,6, - 2,2,1,20,1,2,128,18,1,8,3,2,128,12,3,12, - 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, - 1,12,1,20,1,4,255,2,233,115,13,0,0,0,132,9, - 14,0,142,12,28,7,193,32,1,28,7,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,7,0,0,0,115,18,0,0,0,135,3,135, - 4,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, - 4,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,4,0,0,0,19,0,0,0,115, - 36,0,0,0,116,0,124,0,131,1,115,10,116,1,100,1, - 124,0,100,2,141,2,130,1,136,1,124,0,103,1,136,2, - 162,1,82,0,142,0,83,0,41,4,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,78,41, - 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, - 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, - 7,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,88,6, - 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, - 0,0,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,78,114,12,0,0,0, - 41,5,114,220,0,0,0,114,97,1,0,0,114,102,1,0, - 0,114,220,0,0,0,114,97,1,0,0,96,96,32,64,64, - 114,7,0,0,0,218,9,112,97,116,104,95,104,111,111,107, - 78,6,0,0,115,4,0,0,0,14,10,4,6,114,9,0, - 0,0,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,3,0,0,0,67,0,0,0,114,64,1, - 0,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,89,0,0,0,114,65, - 0,0,0,114,20,1,0,0,32,114,7,0,0,0,114,65, - 1,0,0,96,6,0,0,114,58,1,0,0,114,9,0,0, - 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, - 114,101,112,114,95,95,114,69,0,0,0,41,15,114,149,0, - 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, - 0,114,235,0,0,0,114,75,1,0,0,114,166,0,0,0, - 114,228,0,0,0,114,160,0,0,0,114,88,1,0,0,114, - 225,0,0,0,114,98,1,0,0,114,233,0,0,0,114,103, - 1,0,0,114,65,1,0,0,114,12,0,0,0,114,7,0, - 0,0,114,91,1,0,0,201,5,0,0,115,24,0,0,0, - 8,0,4,2,8,7,8,16,4,4,8,2,8,15,10,5, - 8,51,2,31,10,1,12,17,114,9,0,0,0,114,91,1, - 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15, - 124,2,124,3,107,2,114,28,116,2,124,1,124,2,131,2, - 125,4,110,5,116,3,124,1,124,2,131,2,125,4,124,5, - 115,42,116,4,124,1,124,2,124,4,100,3,141,3,125,5, - 9,0,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,100,0,83,0,35,0,4,0,116,5,121,72,1,0, - 1,0,1,0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0, - 114,39,1,0,0,114,32,1,0,0,114,212,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,41,6,90,2,110,115, - 114,141,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,163,0,0,0,114, - 209,0,0,0,32,32,32,32,32,32,114,7,0,0,0,218, - 14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,102, - 6,0,0,115,40,0,0,0,10,2,10,1,4,1,4,1, - 8,1,8,1,12,1,10,2,4,1,14,1,2,1,8,1, - 8,1,8,1,12,1,2,128,12,1,6,2,2,128,2,254, - 115,15,0,0,0,171,16,61,0,189,7,65,7,7,193,8, - 1,65,7,7,114,108,1,0,0,99,0,0,0,0,0,0, - 0,0,0,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,102,2,125,1,116,5,116,6,102,2,125,2,124, - 0,124,1,124,2,103,3,83,0,41,2,122,95,82,101,116, - 117,114,110,115,32,97,32,108,105,115,116,32,111,102,32,102, - 105,108,101,45,98,97,115,101,100,32,109,111,100,117,108,101, - 32,108,111,97,100,101,114,115,46,10,10,32,32,32,32,69, - 97,99,104,32,105,116,101,109,32,105,115,32,97,32,116,117, - 112,108,101,32,40,108,111,97,100,101,114,44,32,115,117,102, - 102,105,120,101,115,41,46,10,32,32,32,32,78,41,7,114, - 28,1,0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,32,32,32,114,7,0,0,0,114,207,0,0,0,125,6, - 0,0,115,8,0,0,0,12,5,8,1,8,1,10,1,114, - 9,0,0,0,114,207,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,67,0,0,0,115,8, - 0,0,0,124,0,97,0,100,0,83,0,114,69,0,0,0, - 41,1,114,158,0,0,0,41,1,218,17,95,98,111,111,116, - 115,116,114,97,112,95,109,111,100,117,108,101,32,114,7,0, - 0,0,218,21,95,115,101,116,95,98,111,111,116,115,116,114, - 97,112,95,109,111,100,117,108,101,136,6,0,0,115,2,0, - 0,0,8,2,114,9,0,0,0,114,111,1,0,0,99,1, + 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,67,0,0,0,115,22,0,0,0,100,1,100,2, + 108,0,109,1,125,2,1,0,124,2,124,0,106,2,131,1, + 83,0,41,3,78,114,0,0,0,0,41,1,218,15,78,97, + 109,101,115,112,97,99,101,82,101,97,100,101,114,41,3,114, + 30,1,0,0,114,73,1,0,0,114,46,1,0,0,41,3, + 114,143,0,0,0,114,243,0,0,0,114,73,1,0,0,32, + 32,32,114,7,0,0,0,114,31,1,0,0,39,5,0,0, + 115,4,0,0,0,12,1,10,1,114,9,0,0,0,122,36, + 95,78,97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0, + 0,114,150,0,0,0,114,235,0,0,0,114,232,0,0,0, + 114,71,1,0,0,114,205,0,0,0,114,0,1,0,0,114, + 240,0,0,0,114,238,0,0,0,114,244,0,0,0,114,247, + 0,0,0,114,31,1,0,0,114,12,0,0,0,114,7,0, + 0,0,114,70,1,0,0,253,4,0,0,115,22,0,0,0, + 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, + 8,3,8,3,12,12,114,9,0,0,0,114,70,1,0,0, + 99,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,7, + 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, + 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, + 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, + 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, + 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, + 41,21,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,0, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,50,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,111,1,0,0,114, - 207,0,0,0,114,16,0,0,0,114,80,1,0,0,114,190, - 0,0,0,114,91,1,0,0,114,103,1,0,0,218,9,109, - 101,116,97,95,112,97,116,104,114,61,0,0,0,114,74,1, - 0,0,41,2,114,110,1,0,0,90,17,115,117,112,112,111, - 114,116,101,100,95,108,111,97,100,101,114,115,32,32,114,7, - 0,0,0,218,8,95,105,110,115,116,97,108,108,141,6,0, - 0,115,8,0,0,0,8,2,6,1,20,1,16,1,114,9, - 0,0,0,114,113,1,0,0,41,1,114,87,0,0,0,114, - 69,0,0,0,41,3,78,78,78,41,2,114,0,0,0,0, - 114,0,0,0,0,41,1,84,41,85,114,151,0,0,0,114, - 158,0,0,0,114,186,0,0,0,114,91,0,0,0,114,16, - 0,0,0,114,99,0,0,0,114,183,0,0,0,114,26,0, - 0,0,114,230,0,0,0,90,2,110,116,114,19,0,0,0, - 114,214,0,0,0,90,5,112,111,115,105,120,114,51,0,0, - 0,218,3,97,108,108,114,59,0,0,0,114,136,0,0,0, - 114,57,0,0,0,114,62,0,0,0,90,20,95,112,97,116, - 104,115,101,112,115,95,119,105,116,104,95,99,111,108,111,110, - 114,29,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,28,0,0, - 0,114,30,0,0,0,114,22,0,0,0,114,37,0,0,0, - 114,43,0,0,0,114,46,0,0,0,114,67,0,0,0,114, - 73,0,0,0,114,75,0,0,0,114,79,0,0,0,114,80, - 0,0,0,114,83,0,0,0,114,86,0,0,0,114,95,0, - 0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,101, - 95,95,114,185,0,0,0,114,35,0,0,0,114,171,0,0, - 0,114,34,0,0,0,114,40,0,0,0,114,7,1,0,0, - 114,116,0,0,0,114,112,0,0,0,114,127,0,0,0,114, - 61,0,0,0,114,109,1,0,0,114,231,0,0,0,114,113, - 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,121,0,0,0,114,128, - 0,0,0,114,135,0,0,0,114,137,0,0,0,114,139,0, - 0,0,114,159,0,0,0,114,166,0,0,0,114,175,0,0, - 0,114,179,0,0,0,114,181,0,0,0,114,188,0,0,0, - 114,193,0,0,0,114,194,0,0,0,114,199,0,0,0,218, - 6,111,98,106,101,99,116,114,208,0,0,0,114,212,0,0, - 0,114,213,0,0,0,114,234,0,0,0,114,248,0,0,0, - 114,10,1,0,0,114,32,1,0,0,114,39,1,0,0,114, - 28,1,0,0,114,44,1,0,0,114,70,1,0,0,114,74, - 1,0,0,114,91,1,0,0,114,108,1,0,0,114,207,0, - 0,0,114,111,1,0,0,114,113,1,0,0,114,12,0,0, - 0,114,7,0,0,0,218,8,60,109,111,100,117,108,101,62, - 1,0,0,0,115,180,0,0,0,4,0,4,22,8,3,8, - 1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8, - 2,4,3,10,1,6,2,22,2,8,1,8,1,10,1,14, - 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, - 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, - 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, - 127,16,35,12,1,4,2,4,1,6,2,4,1,10,1,8, - 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, - 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, - 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, - 127,14,17,18,50,18,45,18,25,14,53,14,63,14,49,0, - 127,14,29,0,127,10,30,8,23,8,11,12,5,114,9,0, - 0,0, + 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, + 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, + 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, + 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, + 1,0,113,7,100,1,83,0,41,3,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,41,6,218, + 4,108,105,115,116,114,16,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,75,1,0,0, + 41,2,114,141,0,0,0,218,6,102,105,110,100,101,114,32, + 32,114,7,0,0,0,114,75,1,0,0,50,5,0,0,115, + 14,0,0,0,22,4,8,1,10,1,10,1,8,1,2,128, + 4,252,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,67,0,0,0,115,78,0,0,0,116, + 0,106,1,100,1,117,1,114,14,116,0,106,1,115,14,116, + 2,160,3,100,2,116,4,161,2,1,0,116,0,106,1,68, + 0,93,18,125,1,9,0,124,1,124,0,131,1,2,0,1, + 0,83,0,35,0,4,0,116,5,121,38,1,0,1,0,1, + 0,89,0,113,17,37,0,100,1,83,0,119,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,16,0,0,0, + 218,10,112,97,116,104,95,104,111,111,107,115,114,99,0,0, + 0,114,100,0,0,0,114,161,0,0,0,114,142,0,0,0, + 41,2,114,65,0,0,0,90,4,104,111,111,107,32,32,114, + 7,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, + 115,60,5,0,0,115,22,0,0,0,16,3,12,1,10,1, + 2,1,12,1,2,128,12,1,4,1,2,128,4,2,2,253, + 115,12,0,0,0,148,3,26,2,154,7,35,9,166,1,35, + 9,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,8,0,0,0,67,0,0,0,115,104, + 0,0,0,124,1,100,1,107,2,114,21,9,0,116,0,160, + 1,161,0,125,1,110,11,35,0,4,0,116,2,121,51,1, + 0,1,0,1,0,89,0,100,2,83,0,37,0,9,0,116, + 3,106,4,124,1,25,0,125,2,124,2,83,0,35,0,4, + 0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,10,0,0,0,78,41,7,114,19,0,0,0,114,82, + 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, + 100,69,114,114,111,114,114,16,0,0,0,114,77,1,0,0, + 218,8,75,101,121,69,114,114,111,114,114,81,1,0,0,41, + 3,114,220,0,0,0,114,65,0,0,0,114,79,1,0,0, + 32,32,32,114,7,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,73,5, + 0,0,115,36,0,0,0,8,8,2,1,10,1,2,128,12, + 1,6,3,2,128,2,1,10,1,4,4,2,128,12,253,10, + 1,12,1,4,1,2,128,2,253,2,250,115,24,0,0,0, + 133,4,10,0,138,7,20,7,150,5,29,0,157,17,49,7, + 178,1,49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138, + 0,0,0,116,0,124,2,100,1,131,2,114,27,116,1,160, + 2,124,2,161,1,155,0,100,2,157,2,125,3,116,3,160, + 4,124,3,116,5,161,2,1,0,124,2,160,6,124,1,161, + 1,92,2,125,4,125,5,110,21,116,1,160,2,124,2,161, + 1,155,0,100,3,157,2,125,3,116,3,160,4,124,3,116, + 5,161,2,1,0,124,2,160,7,124,1,161,1,125,4,103, + 0,125,5,124,4,100,0,117,1,114,58,116,1,160,8,124, + 1,124,4,161,2,83,0,116,1,160,9,124,1,100,0,161, + 2,125,6,124,5,124,6,95,10,124,6,83,0,41,4,78, + 114,160,0,0,0,122,53,46,102,105,110,100,95,115,112,101, + 99,40,41,32,110,111,116,32,102,111,117,110,100,59,32,102, + 97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,102, + 105,110,100,95,108,111,97,100,101,114,40,41,122,53,46,102, + 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, + 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, + 101,40,41,41,11,114,152,0,0,0,114,158,0,0,0,90, + 12,95,111,98,106,101,99,116,95,110,97,109,101,114,99,0, + 0,0,114,100,0,0,0,114,161,0,0,0,114,160,0,0, + 0,114,228,0,0,0,114,223,0,0,0,114,206,0,0,0, + 114,201,0,0,0,41,7,114,220,0,0,0,114,162,0,0, + 0,114,79,1,0,0,114,165,0,0,0,114,163,0,0,0, + 114,164,0,0,0,114,209,0,0,0,32,32,32,32,32,32, + 32,114,7,0,0,0,218,16,95,108,101,103,97,99,121,95, + 103,101,116,95,115,112,101,99,95,5,0,0,115,26,0,0, + 0,10,4,16,1,12,2,16,1,16,2,12,2,10,1,4, + 1,8,1,12,1,12,1,6,1,4,1,114,9,0,0,0, + 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,5,0,0,0,67, + 0,0,0,115,166,0,0,0,103,0,125,4,124,2,68,0, + 93,67,125,5,116,0,124,5,116,1,116,2,102,2,131,2, + 115,14,113,4,124,0,160,3,124,5,161,1,125,6,124,6, + 100,1,117,1,114,71,116,4,124,6,100,2,131,2,114,35, + 124,6,160,5,124,1,124,3,161,2,125,7,110,6,124,0, + 160,6,124,1,124,6,161,2,125,7,124,7,100,1,117,0, + 114,46,113,4,124,7,106,7,100,1,117,1,114,55,124,7, + 2,0,1,0,83,0,124,7,106,8,125,8,124,8,100,1, + 117,0,114,66,116,9,100,3,131,1,130,1,124,4,160,10, + 124,8,161,1,1,0,113,4,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,225,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,184, + 0,0,0,114,109,0,0,0,218,5,98,121,116,101,115,114, + 84,1,0,0,114,152,0,0,0,114,225,0,0,0,114,85, + 1,0,0,114,163,0,0,0,114,201,0,0,0,114,142,0, + 0,0,114,190,0,0,0,114,158,0,0,0,114,206,0,0, + 0,41,9,114,220,0,0,0,114,162,0,0,0,114,65,0, + 0,0,114,224,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,79, + 1,0,0,114,209,0,0,0,114,164,0,0,0,32,32,32, + 32,32,32,32,32,32,114,7,0,0,0,218,9,95,103,101, + 116,95,115,112,101,99,116,5,0,0,115,42,0,0,0,4, + 5,8,1,14,1,2,1,10,1,8,1,10,1,14,1,12, + 2,8,1,2,1,10,1,8,1,6,1,8,1,8,1,10, + 5,2,128,12,2,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,94,0,0,0,124,2, + 100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3,100,1,117,0,114,45, + 124,4,106,4,125,5,124,5,114,43,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,124,4,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,16,0,0,0,114,65,0,0,0,114,88,1,0,0,114, + 163,0,0,0,114,201,0,0,0,114,204,0,0,0,114,44, + 1,0,0,41,6,114,220,0,0,0,114,162,0,0,0,114, + 65,0,0,0,114,224,0,0,0,114,209,0,0,0,114,87, + 1,0,0,32,32,32,32,32,32,114,7,0,0,0,114,225, + 0,0,0,148,5,0,0,115,26,0,0,0,8,6,6,1, + 14,1,8,1,4,1,10,1,6,1,4,1,6,3,16,1, + 4,1,4,2,4,2,114,9,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100, + 1,116,2,161,2,1,0,124,0,160,3,124,1,124,2,161, + 2,125,3,124,3,100,2,117,0,114,18,100,2,83,0,124, + 3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46, + 102,105,110,100,95,109,111,100,117,108,101,40,41,32,105,115, + 32,100,101,112,114,101,99,97,116,101,100,32,97,110,100,32, + 115,108,97,116,101,100,32,102,111,114,32,114,101,109,111,118, + 97,108,32,105,110,32,80,121,116,104,111,110,32,51,46,49, + 50,59,32,117,115,101,32,102,105,110,100,95,115,112,101,99, + 40,41,32,105,110,115,116,101,97,100,78,114,226,0,0,0, + 114,227,0,0,0,32,32,32,32,114,7,0,0,0,114,228, + 0,0,0,172,5,0,0,115,14,0,0,0,6,8,2,2, + 4,254,12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0, + 0,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,2,1,0,124,2,106, + 2,124,0,105,0,124,1,164,1,142,1,83,0,41,4,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,78, + 41,3,90,18,105,109,112,111,114,116,108,105,98,46,109,101, + 116,97,100,97,116,97,114,89,1,0,0,218,18,102,105,110, + 100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,41, + 3,114,144,0,0,0,114,145,0,0,0,114,89,1,0,0, + 32,32,32,114,7,0,0,0,114,90,1,0,0,188,5,0, + 0,115,4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69, + 0,0,0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0, + 0,0,114,84,1,0,0,114,85,1,0,0,114,88,1,0, + 0,114,225,0,0,0,114,228,0,0,0,114,90,1,0,0, + 114,12,0,0,0,114,7,0,0,0,114,74,1,0,0,46, + 5,0,0,115,36,0,0,0,8,0,4,2,2,2,10,1, + 2,9,10,1,2,12,10,1,2,21,10,1,2,20,12,1, + 2,31,12,1,2,23,12,1,2,15,14,1,114,9,0,0, + 0,114,74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,114,0,0,0, + 135,5,103,0,125,3,124,2,68,0,93,16,92,2,138,5, + 125,4,124,3,160,0,136,5,102,1,100,1,100,2,132,8, + 124,4,68,0,131,1,161,1,1,0,113,5,124,3,124,0, + 95,1,124,1,112,28,100,3,124,0,95,2,116,3,124,0, + 106,2,131,1,115,44,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,3,0,0, + 0,51,0,0,0,115,24,0,0,0,129,0,124,0,93,7, + 125,1,124,1,137,2,102,2,86,0,1,0,113,2,100,0, + 83,0,114,69,0,0,0,114,12,0,0,0,41,3,114,5, + 0,0,0,114,41,1,0,0,114,163,0,0,0,32,32,128, + 114,7,0,0,0,114,8,0,0,0,217,5,0,0,115,4, + 0,0,0,6,128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41, + 11,114,190,0,0,0,218,8,95,108,111,97,100,101,114,115, + 114,65,0,0,0,114,86,0,0,0,114,67,0,0,0,114, + 19,0,0,0,114,82,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,6,114, + 143,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,211,0,0,0,114,163,0,0,0,32,32,32,32, + 32,64,114,7,0,0,0,114,235,0,0,0,211,5,0,0, + 115,22,0,0,0,2,128,4,4,12,1,26,1,6,1,10, + 2,10,1,18,1,6,1,8,1,12,1,114,9,0,0,0, + 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,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,130,0,0, + 0,78,41,1,114,93,1,0,0,114,20,1,0,0,32,114, + 7,0,0,0,114,75,1,0,0,227,5,0,0,114,81,0, + 0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0,0,0,116, + 0,160,1,100,1,116,2,161,2,1,0,124,0,160,3,124, + 1,161,1,125,2,124,2,100,2,117,0,114,19,100,2,103, + 0,102,2,83,0,124,2,106,4,124,2,106,5,112,25,103, + 0,102,2,83,0,41,3,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,122,101, + 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, + 108,111,97,100,101,114,40,41,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, + 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, + 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, + 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, + 115,116,101,97,100,78,41,6,114,99,0,0,0,114,100,0, + 0,0,114,101,0,0,0,114,225,0,0,0,114,163,0,0, + 0,114,201,0,0,0,41,3,114,143,0,0,0,114,162,0, + 0,0,114,209,0,0,0,32,32,32,114,7,0,0,0,114, + 160,0,0,0,233,5,0,0,115,14,0,0,0,6,7,2, + 2,4,254,10,3,8,1,8,1,16,1,114,9,0,0,0, + 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,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, + 200,0,0,0,41,1,114,212,0,0,0,41,7,114,143,0, + 0,0,114,210,0,0,0,114,162,0,0,0,114,65,0,0, + 0,90,4,115,109,115,108,114,224,0,0,0,114,163,0,0, + 0,32,32,32,32,32,32,32,114,7,0,0,0,114,88,1, + 0,0,248,5,0,0,115,8,0,0,0,10,1,8,1,2, + 1,6,255,114,9,0,0,0,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,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,9,0,116,1,124, + 0,106,2,112,17,116,3,160,4,161,0,131,1,106,5,125, + 5,110,12,35,0,4,0,116,6,121,190,1,0,1,0,1, + 0,100,4,125,5,89,0,110,1,37,0,124,5,124,0,106, + 7,107,3,114,45,124,0,160,8,161,0,1,0,124,5,124, + 0,95,7,116,9,131,0,114,56,124,0,106,10,125,6,124, + 4,160,11,161,0,125,7,110,5,124,0,106,12,125,6,124, + 4,125,7,124,7,124,6,118,0,114,108,116,13,124,0,106, + 2,124,4,131,2,125,8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125, + 3,124,0,106,14,68,0,93,55,92,2,125,9,125,10,9, + 0,116,13,124,0,106,2,124,4,124,9,23,0,131,2,125, + 12,110,12,35,0,4,0,116,18,121,189,1,0,1,0,1, + 0,89,0,1,0,100,6,83,0,37,0,116,19,160,20,100, + 7,124,12,100,3,100,8,166,3,1,0,124,7,124,9,23, + 0,124,6,118,0,114,166,116,15,124,12,131,1,114,166,124, + 0,160,16,124,10,124,1,124,12,100,6,124,2,161,5,2, + 0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,97,0,0,0, + 114,45,0,0,0,114,130,0,0,0,114,235,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,104,0,0,0,114,75,0,0,0,114, + 65,0,0,0,114,19,0,0,0,114,82,0,0,0,114,33, + 1,0,0,114,76,0,0,0,114,93,1,0,0,218,11,95, + 102,105,108,108,95,99,97,99,104,101,114,22,0,0,0,114, + 96,1,0,0,114,131,0,0,0,114,95,1,0,0,114,67, + 0,0,0,114,92,1,0,0,114,80,0,0,0,114,88,1, + 0,0,114,83,0,0,0,114,111,0,0,0,114,158,0,0, + 0,114,172,0,0,0,114,206,0,0,0,114,201,0,0,0, + 41,14,114,143,0,0,0,114,162,0,0,0,114,224,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,192,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,210,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,209,0,0,0,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,114,7,0,0,0,114,225,0, + 0,0,253,5,0,0,115,94,0,0,0,4,5,14,1,2, + 1,22,1,2,128,12,1,8,1,2,128,10,1,8,1,6, + 1,6,2,6,1,10,1,6,2,4,1,8,2,12,1,14, + 1,8,1,10,1,8,1,24,1,2,255,8,5,14,2,2, + 1,18,1,2,128,12,1,8,1,2,128,16,1,12,1,8, + 1,10,1,4,1,8,255,2,128,4,2,12,1,12,1,8, + 1,4,1,4,1,2,244,2,228,115,31,0,0,0,138,10, + 21,0,149,9,32,7,193,52,8,65,61,2,193,61,7,66, + 8,9,194,61,1,66,8,9,194,62,1,32,7,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, + 10,0,0,0,67,0,0,0,115,194,0,0,0,124,0,106, + 0,125,1,9,0,116,1,160,2,124,1,112,11,116,1,160, + 3,161,0,161,1,125,2,110,15,35,0,4,0,116,4,116, + 5,116,6,102,3,121,96,1,0,1,0,1,0,103,0,125, + 2,89,0,110,1,37,0,116,7,106,8,160,9,100,1,161, + 1,115,41,116,10,124,2,131,1,124,0,95,11,110,37,116, + 10,131,0,125,3,124,2,68,0,93,28,125,4,124,4,160, + 12,100,2,161,1,92,3,125,5,125,6,125,7,124,6,114, + 67,100,3,160,13,124,5,124,7,160,14,161,0,161,2,125, + 8,110,2,124,5,125,8,124,3,160,15,124,8,161,1,1, + 0,113,46,124,3,124,0,95,11,116,7,106,8,160,9,116, + 16,161,1,114,94,100,4,100,5,132,0,124,2,68,0,131, + 1,124,0,95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0, + 0,114,88,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,83,0,0,0,115,20,0,0,0, + 104,0,124,0,93,6,125,1,124,1,160,0,161,0,146,2, + 113,2,83,0,114,12,0,0,0,41,1,114,131,0,0,0, + 41,2,114,5,0,0,0,90,2,102,110,32,32,114,7,0, + 0,0,114,14,0,0,0,77,6,0,0,115,2,0,0,0, + 20,0,114,9,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,19,0,0,0,90, + 7,108,105,115,116,100,105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0, + 0,114,27,0,0,0,114,94,1,0,0,114,95,1,0,0, + 114,126,0,0,0,114,89,0,0,0,114,131,0,0,0,218, + 3,97,100,100,114,28,0,0,0,114,96,1,0,0,41,9, + 114,143,0,0,0,114,65,0,0,0,90,8,99,111,110,116, + 101,110,116,115,90,21,108,111,119,101,114,95,115,117,102,102, + 105,120,95,99,111,110,116,101,110,116,115,114,67,1,0,0, + 114,141,0,0,0,114,51,1,0,0,114,41,1,0,0,90, + 8,110,101,119,95,110,97,109,101,32,32,32,32,32,32,32, + 32,32,114,7,0,0,0,114,98,1,0,0,48,6,0,0, + 115,42,0,0,0,6,2,2,1,20,1,2,128,18,1,8, + 3,2,128,12,3,12,1,6,7,8,1,16,1,4,1,18, + 1,4,2,12,1,6,1,12,1,20,1,4,255,2,233,115, + 13,0,0,0,132,9,14,0,142,12,28,7,193,32,1,28, + 7,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,7,0,0,0,115,22, + 0,0,0,135,3,135,4,136,3,136,4,102,2,100,1,100, + 2,132,8,125,2,124,2,83,0,41,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0,116,0, + 124,0,131,1,115,10,116,1,100,1,124,0,100,2,141,2, + 130,1,137,1,124,0,103,1,137,2,162,1,82,0,142,0, + 83,0,41,4,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,78,41,2,114,83,0,0,0, + 114,142,0,0,0,41,3,114,65,0,0,0,114,220,0,0, + 0,114,97,1,0,0,32,128,128,114,7,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,89,6,0,0,115,6,0,0, + 0,8,2,12,1,16,1,114,9,0,0,0,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,78,114,12,0,0,0,41,5,114,220,0,0, + 0,114,97,1,0,0,114,102,1,0,0,114,220,0,0,0, + 114,97,1,0,0,96,96,32,64,64,114,7,0,0,0,218, + 9,112,97,116,104,95,104,111,111,107,79,6,0,0,115,6, + 0,0,0,4,128,14,10,4,6,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,64,1,0,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,89,0,0,0,114,65,0,0,0,114, + 20,1,0,0,32,114,7,0,0,0,114,65,1,0,0,97, + 6,0,0,114,58,1,0,0,114,9,0,0,0,122,19,70, + 105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114, + 95,95,114,69,0,0,0,41,15,114,149,0,0,0,114,148, + 0,0,0,114,150,0,0,0,114,151,0,0,0,114,235,0, + 0,0,114,75,1,0,0,114,166,0,0,0,114,228,0,0, + 0,114,160,0,0,0,114,88,1,0,0,114,225,0,0,0, + 114,98,1,0,0,114,233,0,0,0,114,103,1,0,0,114, + 65,1,0,0,114,12,0,0,0,114,7,0,0,0,114,91, + 1,0,0,202,5,0,0,115,24,0,0,0,8,0,4,2, + 8,7,8,16,4,4,8,2,8,15,10,5,8,51,2,31, + 10,1,12,17,114,9,0,0,0,114,91,1,0,0,99,4, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,146,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,33, + 124,5,114,18,124,5,106,1,125,4,110,15,124,2,124,3, + 107,2,114,28,116,2,124,1,124,2,131,2,125,4,110,5, + 116,3,124,1,124,2,131,2,125,4,124,5,115,42,116,4, + 124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100,0, + 83,0,35,0,4,0,116,5,121,72,1,0,1,0,1,0, + 89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0,114,39,1,0, + 0,114,32,1,0,0,114,212,0,0,0,218,9,69,120,99, + 101,112,116,105,111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0, + 32,32,32,32,32,32,114,7,0,0,0,218,14,95,102,105, + 120,95,117,112,95,109,111,100,117,108,101,103,6,0,0,115, + 40,0,0,0,10,2,10,1,4,1,4,1,8,1,8,1, + 12,1,10,2,4,1,14,1,2,1,8,1,8,1,8,1, + 12,1,2,128,12,1,6,2,2,128,2,254,115,15,0,0, + 0,171,16,61,0,189,7,65,7,7,193,8,1,65,7,7, + 114,108,1,0,0,99,0,0,0,0,0,0,0,0,0,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,102, + 2,125,1,116,5,116,6,102,2,125,2,124,0,124,1,124, + 2,103,3,83,0,41,2,122,95,82,101,116,117,114,110,115, + 32,97,32,108,105,115,116,32,111,102,32,102,105,108,101,45, + 98,97,115,101,100,32,109,111,100,117,108,101,32,108,111,97, + 100,101,114,115,46,10,10,32,32,32,32,69,97,99,104,32, + 105,116,101,109,32,105,115,32,97,32,116,117,112,108,101,32, + 40,108,111,97,100,101,114,44,32,115,117,102,102,105,120,101, + 115,41,46,10,32,32,32,32,78,41,7,114,28,1,0,0, + 114,186,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,127, + 0,0,0,114,39,1,0,0,114,113,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,32,32,32, + 114,7,0,0,0,114,207,0,0,0,126,6,0,0,115,8, + 0,0,0,12,5,8,1,8,1,10,1,114,9,0,0,0, + 114,207,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,124, + 0,97,0,100,0,83,0,114,69,0,0,0,41,1,114,158, + 0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,97, + 112,95,109,111,100,117,108,101,32,114,7,0,0,0,218,21, + 95,115,101,116,95,98,111,111,116,115,116,114,97,112,95,109, + 111,100,117,108,101,137,6,0,0,115,2,0,0,0,8,2, + 114,9,0,0,0,114,111,1,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 50,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,111,1,0,0,114,207,0,0,0, + 114,16,0,0,0,114,80,1,0,0,114,190,0,0,0,114, + 91,1,0,0,114,103,1,0,0,218,9,109,101,116,97,95, + 112,97,116,104,114,61,0,0,0,114,74,1,0,0,41,2, + 114,110,1,0,0,90,17,115,117,112,112,111,114,116,101,100, + 95,108,111,97,100,101,114,115,32,32,114,7,0,0,0,218, + 8,95,105,110,115,116,97,108,108,142,6,0,0,115,8,0, + 0,0,8,2,6,1,20,1,16,1,114,9,0,0,0,114, + 113,1,0,0,41,1,114,87,0,0,0,114,69,0,0,0, + 41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0, + 0,41,1,84,41,85,114,151,0,0,0,114,158,0,0,0, + 114,186,0,0,0,114,91,0,0,0,114,16,0,0,0,114, + 99,0,0,0,114,183,0,0,0,114,26,0,0,0,114,230, + 0,0,0,90,2,110,116,114,19,0,0,0,114,214,0,0, + 0,90,5,112,111,115,105,120,114,51,0,0,0,218,3,97, + 108,108,114,59,0,0,0,114,136,0,0,0,114,57,0,0, + 0,114,62,0,0,0,90,20,95,112,97,116,104,115,101,112, + 115,95,119,105,116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0, + 0,0,114,22,0,0,0,114,37,0,0,0,114,43,0,0, + 0,114,46,0,0,0,114,67,0,0,0,114,73,0,0,0, + 114,75,0,0,0,114,79,0,0,0,114,80,0,0,0,114, + 83,0,0,0,114,86,0,0,0,114,95,0,0,0,218,4, + 116,121,112,101,218,8,95,95,99,111,100,101,95,95,114,185, + 0,0,0,114,35,0,0,0,114,171,0,0,0,114,34,0, + 0,0,114,40,0,0,0,114,7,1,0,0,114,116,0,0, + 0,114,112,0,0,0,114,127,0,0,0,114,61,0,0,0, + 114,109,1,0,0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0,114, + 135,0,0,0,114,137,0,0,0,114,139,0,0,0,114,159, + 0,0,0,114,166,0,0,0,114,175,0,0,0,114,179,0, + 0,0,114,181,0,0,0,114,188,0,0,0,114,193,0,0, + 0,114,194,0,0,0,114,199,0,0,0,218,6,111,98,106, + 101,99,116,114,208,0,0,0,114,212,0,0,0,114,213,0, + 0,0,114,234,0,0,0,114,248,0,0,0,114,10,1,0, + 0,114,32,1,0,0,114,39,1,0,0,114,28,1,0,0, + 114,44,1,0,0,114,70,1,0,0,114,74,1,0,0,114, + 91,1,0,0,114,108,1,0,0,114,207,0,0,0,114,111, + 1,0,0,114,113,1,0,0,114,12,0,0,0,114,7,0, + 0,0,218,8,60,109,111,100,117,108,101,62,1,0,0,0, + 115,180,0,0,0,4,0,4,22,8,3,8,1,8,1,8, + 1,8,1,10,3,4,1,8,1,10,1,8,2,4,3,10, + 1,6,2,22,2,8,1,8,1,10,1,14,1,4,4,4, + 1,2,1,2,1,4,255,8,4,6,16,8,3,8,5,8, + 5,4,6,10,1,8,30,8,6,8,8,8,10,8,9,8, + 5,4,7,10,1,8,8,10,5,10,22,0,127,16,36,12, + 1,4,2,4,1,6,2,4,1,10,1,8,2,6,2,8, + 2,16,2,8,71,8,40,8,19,8,12,8,12,8,31,8, + 20,8,33,8,28,10,24,10,13,10,10,8,11,6,14,4, + 3,2,1,12,255,14,73,14,67,16,30,0,127,14,17,18, + 50,18,45,18,25,14,53,14,63,14,49,0,127,14,29,0, + 127,10,30,8,23,8,11,12,5,114,9,0,0,0, }; diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 65c03ef0e949a1..94b2a7c9b6e930 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -134,12 +134,12 @@ static void *opcode_targets[256] = { &&TARGET_MAKE_FUNCTION, &&TARGET_BUILD_SLICE, &&_unknown_opcode, + &&TARGET_MAKE_CELL, &&TARGET_LOAD_CLOSURE, &&TARGET_LOAD_DEREF, &&TARGET_STORE_DEREF, &&TARGET_DELETE_DEREF, &&_unknown_opcode, - &&_unknown_opcode, &&TARGET_CALL_FUNCTION_KW, &&TARGET_CALL_FUNCTION_EX, &&_unknown_opcode, From webhook-mailer at python.org Tue Jun 8 19:31:19 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 08 Jun 2021 23:31:19 -0000 Subject: [Python-checkins] bpo-43833: Emit warnings for numeric literals followed by keyword (GH-25466) Message-ID: https://github.com/python/cpython/commit/2ea6d890281c415e0a2f00e63526e592da8ce3d9 commit: 2ea6d890281c415e0a2f00e63526e592da8ce3d9 branch: main author: Serhiy Storchaka committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-08T16:31:10-07:00 summary: bpo-43833: Emit warnings for numeric literals followed by keyword (GH-25466) Emit a deprecation warning if the numeric literal is immediately followed by one of keywords: and, else, for, if, in, is, or. Raise a syntax error with more informative message if it is immediately followed by other keyword or identifier. Automerge-Triggered-By: GH:pablogsal files: A Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst M Doc/whatsnew/3.10.rst M Lib/test/test_compile.py M Lib/test/test_grammar.py M Parser/tokenizer.c diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 74e6b0384adb3..df9806a211833 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1444,6 +1444,17 @@ Optimizations Deprecated ========== +* Currently Python accepts numeric literals immediately followed by keywords, + for example ``0in x``, ``1or x``, ``0if 1else 2``. It allows confusing + and ambigious expressions like ``[0x1for x in y]`` (which can be + interpreted as ``[0x1 for x in y]`` or ``[0x1f or x in y]``). Starting in + this release, a deprecation warning is raised if the numeric literal is + immediately followed by one of keywords :keyword:`and`, :keyword:`else`, + :keyword:`for`, :keyword:`if`, :keyword:`in`, :keyword:`is` and :keyword:`or`. + If future releases it will be changed to syntax warning, and finally to + syntax error. + (Contributed by Serhiy Storchaka in :issue:`43833`). + * Starting in this release, there will be a concerted effort to begin cleaning up old import semantics that were kept for Python 2.7 compatibility. Specifically, @@ -1670,6 +1681,18 @@ This section lists previously described changes and other bugfixes that may require changes to your code. +Changes in the Python syntax +---------------------------- + +* Deprecation warning is now emitted when compiling previously valid syntax + if the numeric literal is immediately followed by a keyword (like in ``0in x``). + If future releases it will be changed to syntax warning, and finally to a + syntax error. To get rid of the warning and make the code compatible with + future releases just add a space between the numeric literal and the + following keyword. + (Contributed by Serhiy Storchaka in :issue:`43833`). + + Changes in the Python API ------------------------- diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index d40347c3c6bb3..ea8ae22fce40f 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -162,7 +162,7 @@ def test_literals_with_leading_zeroes(self): for arg in ["077787", "0xj", "0x.", "0e", "090000000000000", "080000000000000", "000000000000009", "000000000000008", "0b42", "0BADCAFE", "0o123456789", "0b1.1", "0o4.2", - "0b101j2", "0o153j2", "0b100e1", "0o777e1", "0777", + "0b101j", "0o153j", "0b100e1", "0o777e1", "0777", "000777", "000000000000007"]: self.assertRaises(SyntaxError, eval, arg) diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py index ebc9dde97e730..c0820fd63683f 100644 --- a/Lib/test/test_grammar.py +++ b/Lib/test/test_grammar.py @@ -177,8 +177,10 @@ def test_floats(self): def test_float_exponent_tokenization(self): # See issue 21642. - self.assertEqual(1 if 1else 0, 1) - self.assertEqual(1 if 0else 0, 0) + with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + self.assertEqual(eval("1 if 1else 0"), 1) + self.assertEqual(eval("1 if 0else 0"), 0) self.assertRaises(SyntaxError, eval, "0 if 1Else 0") def test_underscore_literals(self): @@ -211,6 +213,92 @@ def test_bad_numerical_literals(self): check("1e2_", "invalid decimal literal") check("1e+", "invalid decimal literal") + def test_end_of_numerical_literals(self): + def check(test): + with self.assertWarns(DeprecationWarning): + compile(test, "", "eval") + + def check_error(test): + with warnings.catch_warnings(record=True) as w: + with self.assertRaises(SyntaxError): + compile(test, "", "eval") + self.assertEqual(w, []) + + check_error("0xfand x") + check("0o7and x") + check("0b1and x") + check("9and x") + check("0and x") + check("1.and x") + check("1e3and x") + check("1jand x") + + check("0xfor x") + check("0o7or x") + check("0b1or x") + check("9or x") + check_error("0or x") + check("1.or x") + check("1e3or x") + check("1jor x") + + check("0xfin x") + check("0o7in x") + check("0b1in x") + check("9in x") + check("0in x") + check("1.in x") + check("1e3in x") + check("1jin x") + + with warnings.catch_warnings(): + warnings.simplefilter('ignore', SyntaxWarning) + check("0xfis x") + check("0o7is x") + check("0b1is x") + check("9is x") + check("0is x") + check("1.is x") + check("1e3is x") + check("1jis x") + + check("0xfif x else y") + check("0o7if x else y") + check("0b1if x else y") + check("9if x else y") + check("0if x else y") + check("1.if x else y") + check("1e3if x else y") + check("1jif x else y") + + check_error("x if 0xfelse y") + check("x if 0o7else y") + check("x if 0b1else y") + check("x if 9else y") + check("x if 0else y") + check("x if 1.else y") + check("x if 1e3else y") + check("x if 1jelse y") + + check("[0x1ffor x in ()]") + check("[0x1for x in ()]") + check("[0xfor x in ()]") + check("[0o7for x in ()]") + check("[0b1for x in ()]") + check("[9for x in ()]") + check("[1.for x in ()]") + check("[1e3for x in ()]") + check("[1jfor x in ()]") + + check_error("0xfspam") + check_error("0o7spam") + check_error("0b1spam") + check_error("9spam") + check_error("0spam") + check_error("1.spam") + check_error("1e3spam") + check_error("1jspam") + def test_string_literals(self): x = ''; y = ""; self.assertTrue(len(x) == 0 and x == y) x = '\''; y = "'"; self.assertTrue(len(x) == 1 and x == y and ord(x) == 39) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst new file mode 100644 index 0000000000000..2adbdba651b83 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst @@ -0,0 +1,4 @@ +Emit a deprecation warning if the numeric literal is immediately followed by +one of keywords: and, else, for, if, in, is, or. Raise a syntax error with +more informative message if it is immediately followed by other keyword or +identifier. diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index a86af9bc0620c..6002f3e05a890 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -1121,6 +1121,113 @@ indenterror(struct tok_state *tok) return ERRORTOKEN; } +static int +parser_warn(struct tok_state *tok, const char *format, ...) +{ + PyObject *errmsg; + va_list vargs; +#ifdef HAVE_STDARG_PROTOTYPES + va_start(vargs, format); +#else + va_start(vargs); +#endif + errmsg = PyUnicode_FromFormatV(format, vargs); + va_end(vargs); + if (!errmsg) { + goto error; + } + + if (PyErr_WarnExplicitObject(PyExc_DeprecationWarning, errmsg, tok->filename, + tok->lineno, NULL, NULL) < 0) { + if (PyErr_ExceptionMatches(PyExc_DeprecationWarning)) { + /* Replace the DeprecationWarning exception with a SyntaxError + to get a more accurate error report */ + PyErr_Clear(); + syntaxerror(tok, "%U", errmsg); + } + goto error; + } + Py_DECREF(errmsg); + return 0; + +error: + Py_XDECREF(errmsg); + tok->done = E_ERROR; + return -1; +} + +static int +lookahead(struct tok_state *tok, const char *test) +{ + const char *s = test; + int res = 0; + while (1) { + int c = tok_nextc(tok); + if (*s == 0) { + res = !is_potential_identifier_char(c); + } + else if (c == *s) { + s++; + continue; + } + + tok_backup(tok, c); + while (s != test) { + tok_backup(tok, *--s); + } + return res; + } +} + +static int +verify_end_of_number(struct tok_state *tok, int c, const char *kind) +{ + /* Emit a deprecation warning only if the numeric literal is immediately + * followed by one of keywords which can occurr after a numeric literal + * in valid code: "and", "else", "for", "if", "in", "is" and "or". + * It allows to gradually deprecate existing valid code without adding + * warning before error in most cases of invalid numeric literal (which + * would be confusiong and break existing tests). + * Raise a syntax error with slighly better message than plain + * "invalid syntax" if the numeric literal is immediately followed by + * other keyword or identifier. + */ + int r = 0; + if (c == 'a') { + r = lookahead(tok, "nd"); + } + else if (c == 'e') { + r = lookahead(tok, "lse"); + } + else if (c == 'f') { + r = lookahead(tok, "or"); + } + else if (c == 'i') { + int c2 = tok_nextc(tok); + if (c2 == 'f' || c2 == 'n' || c2 == 's') { + r = 1; + } + tok_backup(tok, c2); + } + else if (c == 'o') { + r = lookahead(tok, "r"); + } + if (r) { + tok_backup(tok, c); + if (parser_warn(tok, "invalid %s literal", kind)) { + return 0; + } + tok_nextc(tok); + } + else /* In future releases, only error will remain. */ + if (is_potential_identifier_char(c)) { + tok_backup(tok, c); + syntaxerror(tok, "invalid %s literal", kind); + return 0; + } + return 1; +} + /* Verify that the identifier follows PEP 3131. All identifier strings are guaranteed to be "ready" unicode objects. */ @@ -1569,6 +1676,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) c = tok_nextc(tok); } while (isxdigit(c)); } while (c == '_'); + if (!verify_end_of_number(tok, c, "hexadecimal")) { + return ERRORTOKEN; + } } else if (c == 'o' || c == 'O') { /* Octal */ @@ -1595,6 +1705,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) return syntaxerror(tok, "invalid digit '%c' in octal literal", c); } + if (!verify_end_of_number(tok, c, "octal")) { + return ERRORTOKEN; + } } else if (c == 'b' || c == 'B') { /* Binary */ @@ -1621,6 +1734,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) return syntaxerror(tok, "invalid digit '%c' in binary literal", c); } + if (!verify_end_of_number(tok, c, "binary")) { + return ERRORTOKEN; + } } else { int nonzero = 0; @@ -1664,6 +1780,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) "literals are not permitted; " "use an 0o prefix for octal integers"); } + if (!verify_end_of_number(tok, c, "decimal")) { + return ERRORTOKEN; + } } } else { @@ -1699,6 +1818,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) } } else if (!isdigit(c)) { tok_backup(tok, c); + if (!verify_end_of_number(tok, e, "decimal")) { + return ERRORTOKEN; + } tok_backup(tok, e); *p_start = tok->start; *p_end = tok->cur; @@ -1713,6 +1835,12 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) /* Imaginary part */ imaginary: c = tok_nextc(tok); + if (!verify_end_of_number(tok, c, "imaginary")) { + return ERRORTOKEN; + } + } + else if (!verify_end_of_number(tok, c, "decimal")) { + return ERRORTOKEN; } } } From webhook-mailer at python.org Tue Jun 8 19:52:32 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 08 Jun 2021 23:52:32 -0000 Subject: [Python-checkins] bpo-43833: Emit warnings for numeric literals followed by keyword (GH-25466) Message-ID: https://github.com/python/cpython/commit/eeefa7f6c0cc64bc74c3b96a0ebbff1a2b9d3199 commit: eeefa7f6c0cc64bc74c3b96a0ebbff1a2b9d3199 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-08T16:52:23-07:00 summary: bpo-43833: Emit warnings for numeric literals followed by keyword (GH-25466) Emit a deprecation warning if the numeric literal is immediately followed by one of keywords: and, else, for, if, in, is, or. Raise a syntax error with more informative message if it is immediately followed by other keyword or identifier. Automerge-Triggered-By: GH:pablogsal (cherry picked from commit 2ea6d890281c415e0a2f00e63526e592da8ce3d9) Co-authored-by: Serhiy Storchaka files: A Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst M Doc/whatsnew/3.10.rst M Lib/test/test_compile.py M Lib/test/test_grammar.py M Parser/tokenizer.c diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 9b2847da58601..5e29f932ba1ff 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1451,6 +1451,17 @@ Optimizations Deprecated ========== +* Currently Python accepts numeric literals immediately followed by keywords, + for example ``0in x``, ``1or x``, ``0if 1else 2``. It allows confusing + and ambigious expressions like ``[0x1for x in y]`` (which can be + interpreted as ``[0x1 for x in y]`` or ``[0x1f or x in y]``). Starting in + this release, a deprecation warning is raised if the numeric literal is + immediately followed by one of keywords :keyword:`and`, :keyword:`else`, + :keyword:`for`, :keyword:`if`, :keyword:`in`, :keyword:`is` and :keyword:`or`. + If future releases it will be changed to syntax warning, and finally to + syntax error. + (Contributed by Serhiy Storchaka in :issue:`43833`). + * Starting in this release, there will be a concerted effort to begin cleaning up old import semantics that were kept for Python 2.7 compatibility. Specifically, @@ -1677,6 +1688,18 @@ This section lists previously described changes and other bugfixes that may require changes to your code. +Changes in the Python syntax +---------------------------- + +* Deprecation warning is now emitted when compiling previously valid syntax + if the numeric literal is immediately followed by a keyword (like in ``0in x``). + If future releases it will be changed to syntax warning, and finally to a + syntax error. To get rid of the warning and make the code compatible with + future releases just add a space between the numeric literal and the + following keyword. + (Contributed by Serhiy Storchaka in :issue:`43833`). + + Changes in the Python API ------------------------- diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index d40347c3c6bb3..ea8ae22fce40f 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -162,7 +162,7 @@ def test_literals_with_leading_zeroes(self): for arg in ["077787", "0xj", "0x.", "0e", "090000000000000", "080000000000000", "000000000000009", "000000000000008", "0b42", "0BADCAFE", "0o123456789", "0b1.1", "0o4.2", - "0b101j2", "0o153j2", "0b100e1", "0o777e1", "0777", + "0b101j", "0o153j", "0b100e1", "0o777e1", "0777", "000777", "000000000000007"]: self.assertRaises(SyntaxError, eval, arg) diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py index ebc9dde97e730..c0820fd63683f 100644 --- a/Lib/test/test_grammar.py +++ b/Lib/test/test_grammar.py @@ -177,8 +177,10 @@ def test_floats(self): def test_float_exponent_tokenization(self): # See issue 21642. - self.assertEqual(1 if 1else 0, 1) - self.assertEqual(1 if 0else 0, 0) + with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + self.assertEqual(eval("1 if 1else 0"), 1) + self.assertEqual(eval("1 if 0else 0"), 0) self.assertRaises(SyntaxError, eval, "0 if 1Else 0") def test_underscore_literals(self): @@ -211,6 +213,92 @@ def test_bad_numerical_literals(self): check("1e2_", "invalid decimal literal") check("1e+", "invalid decimal literal") + def test_end_of_numerical_literals(self): + def check(test): + with self.assertWarns(DeprecationWarning): + compile(test, "", "eval") + + def check_error(test): + with warnings.catch_warnings(record=True) as w: + with self.assertRaises(SyntaxError): + compile(test, "", "eval") + self.assertEqual(w, []) + + check_error("0xfand x") + check("0o7and x") + check("0b1and x") + check("9and x") + check("0and x") + check("1.and x") + check("1e3and x") + check("1jand x") + + check("0xfor x") + check("0o7or x") + check("0b1or x") + check("9or x") + check_error("0or x") + check("1.or x") + check("1e3or x") + check("1jor x") + + check("0xfin x") + check("0o7in x") + check("0b1in x") + check("9in x") + check("0in x") + check("1.in x") + check("1e3in x") + check("1jin x") + + with warnings.catch_warnings(): + warnings.simplefilter('ignore', SyntaxWarning) + check("0xfis x") + check("0o7is x") + check("0b1is x") + check("9is x") + check("0is x") + check("1.is x") + check("1e3is x") + check("1jis x") + + check("0xfif x else y") + check("0o7if x else y") + check("0b1if x else y") + check("9if x else y") + check("0if x else y") + check("1.if x else y") + check("1e3if x else y") + check("1jif x else y") + + check_error("x if 0xfelse y") + check("x if 0o7else y") + check("x if 0b1else y") + check("x if 9else y") + check("x if 0else y") + check("x if 1.else y") + check("x if 1e3else y") + check("x if 1jelse y") + + check("[0x1ffor x in ()]") + check("[0x1for x in ()]") + check("[0xfor x in ()]") + check("[0o7for x in ()]") + check("[0b1for x in ()]") + check("[9for x in ()]") + check("[1.for x in ()]") + check("[1e3for x in ()]") + check("[1jfor x in ()]") + + check_error("0xfspam") + check_error("0o7spam") + check_error("0b1spam") + check_error("9spam") + check_error("0spam") + check_error("1.spam") + check_error("1e3spam") + check_error("1jspam") + def test_string_literals(self): x = ''; y = ""; self.assertTrue(len(x) == 0 and x == y) x = '\''; y = "'"; self.assertTrue(len(x) == 1 and x == y and ord(x) == 39) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst new file mode 100644 index 0000000000000..2adbdba651b83 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst @@ -0,0 +1,4 @@ +Emit a deprecation warning if the numeric literal is immediately followed by +one of keywords: and, else, for, if, in, is, or. Raise a syntax error with +more informative message if it is immediately followed by other keyword or +identifier. diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index a86af9bc0620c..6002f3e05a890 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -1121,6 +1121,113 @@ indenterror(struct tok_state *tok) return ERRORTOKEN; } +static int +parser_warn(struct tok_state *tok, const char *format, ...) +{ + PyObject *errmsg; + va_list vargs; +#ifdef HAVE_STDARG_PROTOTYPES + va_start(vargs, format); +#else + va_start(vargs); +#endif + errmsg = PyUnicode_FromFormatV(format, vargs); + va_end(vargs); + if (!errmsg) { + goto error; + } + + if (PyErr_WarnExplicitObject(PyExc_DeprecationWarning, errmsg, tok->filename, + tok->lineno, NULL, NULL) < 0) { + if (PyErr_ExceptionMatches(PyExc_DeprecationWarning)) { + /* Replace the DeprecationWarning exception with a SyntaxError + to get a more accurate error report */ + PyErr_Clear(); + syntaxerror(tok, "%U", errmsg); + } + goto error; + } + Py_DECREF(errmsg); + return 0; + +error: + Py_XDECREF(errmsg); + tok->done = E_ERROR; + return -1; +} + +static int +lookahead(struct tok_state *tok, const char *test) +{ + const char *s = test; + int res = 0; + while (1) { + int c = tok_nextc(tok); + if (*s == 0) { + res = !is_potential_identifier_char(c); + } + else if (c == *s) { + s++; + continue; + } + + tok_backup(tok, c); + while (s != test) { + tok_backup(tok, *--s); + } + return res; + } +} + +static int +verify_end_of_number(struct tok_state *tok, int c, const char *kind) +{ + /* Emit a deprecation warning only if the numeric literal is immediately + * followed by one of keywords which can occurr after a numeric literal + * in valid code: "and", "else", "for", "if", "in", "is" and "or". + * It allows to gradually deprecate existing valid code without adding + * warning before error in most cases of invalid numeric literal (which + * would be confusiong and break existing tests). + * Raise a syntax error with slighly better message than plain + * "invalid syntax" if the numeric literal is immediately followed by + * other keyword or identifier. + */ + int r = 0; + if (c == 'a') { + r = lookahead(tok, "nd"); + } + else if (c == 'e') { + r = lookahead(tok, "lse"); + } + else if (c == 'f') { + r = lookahead(tok, "or"); + } + else if (c == 'i') { + int c2 = tok_nextc(tok); + if (c2 == 'f' || c2 == 'n' || c2 == 's') { + r = 1; + } + tok_backup(tok, c2); + } + else if (c == 'o') { + r = lookahead(tok, "r"); + } + if (r) { + tok_backup(tok, c); + if (parser_warn(tok, "invalid %s literal", kind)) { + return 0; + } + tok_nextc(tok); + } + else /* In future releases, only error will remain. */ + if (is_potential_identifier_char(c)) { + tok_backup(tok, c); + syntaxerror(tok, "invalid %s literal", kind); + return 0; + } + return 1; +} + /* Verify that the identifier follows PEP 3131. All identifier strings are guaranteed to be "ready" unicode objects. */ @@ -1569,6 +1676,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) c = tok_nextc(tok); } while (isxdigit(c)); } while (c == '_'); + if (!verify_end_of_number(tok, c, "hexadecimal")) { + return ERRORTOKEN; + } } else if (c == 'o' || c == 'O') { /* Octal */ @@ -1595,6 +1705,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) return syntaxerror(tok, "invalid digit '%c' in octal literal", c); } + if (!verify_end_of_number(tok, c, "octal")) { + return ERRORTOKEN; + } } else if (c == 'b' || c == 'B') { /* Binary */ @@ -1621,6 +1734,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) return syntaxerror(tok, "invalid digit '%c' in binary literal", c); } + if (!verify_end_of_number(tok, c, "binary")) { + return ERRORTOKEN; + } } else { int nonzero = 0; @@ -1664,6 +1780,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) "literals are not permitted; " "use an 0o prefix for octal integers"); } + if (!verify_end_of_number(tok, c, "decimal")) { + return ERRORTOKEN; + } } } else { @@ -1699,6 +1818,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) } } else if (!isdigit(c)) { tok_backup(tok, c); + if (!verify_end_of_number(tok, e, "decimal")) { + return ERRORTOKEN; + } tok_backup(tok, e); *p_start = tok->start; *p_end = tok->cur; @@ -1713,6 +1835,12 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) /* Imaginary part */ imaginary: c = tok_nextc(tok); + if (!verify_end_of_number(tok, c, "imaginary")) { + return ERRORTOKEN; + } + } + else if (!verify_end_of_number(tok, c, "decimal")) { + return ERRORTOKEN; } } } From webhook-mailer at python.org Tue Jun 8 19:54:37 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Jun 2021 23:54:37 -0000 Subject: [Python-checkins] bpo-44349: Fix edge case when displaying text from files with encoding in syntax errors (GH-26611) Message-ID: https://github.com/python/cpython/commit/9fd21f649d66dcb10108ee395fd68ed32c8239cd commit: 9fd21f649d66dcb10108ee395fd68ed32c8239cd branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-09T00:54:29+01:00 summary: bpo-44349: Fix edge case when displaying text from files with encoding in syntax errors (GH-26611) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst M Lib/test/test_exceptions.py M Parser/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index df5778d7e5f6a..b242c082f8568 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -2105,6 +2105,22 @@ def test_range_of_offsets(self): sys.__excepthook__(*sys.exc_info()) the_exception = exc + def test_encodings(self): + source = ( + '# -*- coding: cp437 -*-\n' + '"????????????" + f(4, x for x in range(1))\n' + ) + try: + with open(TESTFN, 'w', encoding='cp437') as testfile: + testfile.write(source) + rc, out, err = script_helper.assert_python_failure('-Wd', '-X', 'utf8', TESTFN) + err = err.decode('utf-8').splitlines() + + self.assertEqual(err[-3], ' "????????????" + f(4, x for x in range(1))') + self.assertEqual(err[-2], ' ^^^^^^^^^^^^^^^^^^^') + finally: + unlink(TESTFN) + def test_attributes_new_constructor(self): args = ("bad.py", 1, 2, "abcdefg", 1, 100) the_exception = SyntaxError("bad bad", args) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst new file mode 100644 index 0000000000000..b386a8ed2c846 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst @@ -0,0 +1 @@ +Fix an edge case when displaying text from files with encoding in syntax errors. Patch by Pablo Galindo. \ No newline at end of file diff --git a/Parser/pegen.c b/Parser/pegen.c index 42a992251da97..e6518198eca07 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -456,10 +456,13 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, goto error; } + // PyErr_ProgramTextObject assumes that the text is utf-8 so we cannot call it with a file + // with an arbitrary encoding or otherwise we could get some badly decoded text. + int uses_utf8_codec = (!p->tok->encoding || strcmp(p->tok->encoding, "utf-8") == 0); if (p->tok->fp_interactive) { error_line = get_error_line(p, lineno); } - else if (p->start_rule == Py_file_input) { + else if (uses_utf8_codec && p->start_rule == Py_file_input) { error_line = PyErr_ProgramTextObject(p->tok->filename, (int) lineno); } @@ -471,7 +474,7 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, we're actually parsing from a file, which has an E_EOF SyntaxError and in that case `PyErr_ProgramTextObject` fails because lineno points to last_file_line + 1, which does not physically exist */ - assert(p->tok->fp == NULL || p->tok->fp == stdin || p->tok->done == E_EOF); + assert(p->tok->fp == NULL || p->tok->fp == stdin || p->tok->done == E_EOF || !uses_utf8_codec); if (p->tok->lineno <= lineno) { Py_ssize_t size = p->tok->inp - p->tok->buf; From webhook-mailer at python.org Tue Jun 8 20:29:33 2021 From: webhook-mailer at python.org (pablogsal) Date: Wed, 09 Jun 2021 00:29:33 -0000 Subject: [Python-checkins] bpo-44349: Fix edge case when displaying text from files with encoding in syntax errors (GH-26611) (GH-26616) Message-ID: https://github.com/python/cpython/commit/c0496093e54edb78d2bd09b083b73e1e5b9e7242 commit: c0496093e54edb78d2bd09b083b73e1e5b9e7242 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-09T01:29:21+01:00 summary: bpo-44349: Fix edge case when displaying text from files with encoding in syntax errors (GH-26611) (GH-26616) (cherry picked from commit 9fd21f649d66dcb10108ee395fd68ed32c8239cd) Co-authored-by: Pablo Galindo Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst M Lib/test/test_exceptions.py M Parser/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index df5778d7e5f6a..b242c082f8568 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -2105,6 +2105,22 @@ def test_range_of_offsets(self): sys.__excepthook__(*sys.exc_info()) the_exception = exc + def test_encodings(self): + source = ( + '# -*- coding: cp437 -*-\n' + '"????????????" + f(4, x for x in range(1))\n' + ) + try: + with open(TESTFN, 'w', encoding='cp437') as testfile: + testfile.write(source) + rc, out, err = script_helper.assert_python_failure('-Wd', '-X', 'utf8', TESTFN) + err = err.decode('utf-8').splitlines() + + self.assertEqual(err[-3], ' "????????????" + f(4, x for x in range(1))') + self.assertEqual(err[-2], ' ^^^^^^^^^^^^^^^^^^^') + finally: + unlink(TESTFN) + def test_attributes_new_constructor(self): args = ("bad.py", 1, 2, "abcdefg", 1, 100) the_exception = SyntaxError("bad bad", args) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst new file mode 100644 index 0000000000000..b386a8ed2c846 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst @@ -0,0 +1 @@ +Fix an edge case when displaying text from files with encoding in syntax errors. Patch by Pablo Galindo. \ No newline at end of file diff --git a/Parser/pegen.c b/Parser/pegen.c index 42a992251da97..e6518198eca07 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -456,10 +456,13 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, goto error; } + // PyErr_ProgramTextObject assumes that the text is utf-8 so we cannot call it with a file + // with an arbitrary encoding or otherwise we could get some badly decoded text. + int uses_utf8_codec = (!p->tok->encoding || strcmp(p->tok->encoding, "utf-8") == 0); if (p->tok->fp_interactive) { error_line = get_error_line(p, lineno); } - else if (p->start_rule == Py_file_input) { + else if (uses_utf8_codec && p->start_rule == Py_file_input) { error_line = PyErr_ProgramTextObject(p->tok->filename, (int) lineno); } @@ -471,7 +474,7 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, we're actually parsing from a file, which has an E_EOF SyntaxError and in that case `PyErr_ProgramTextObject` fails because lineno points to last_file_line + 1, which does not physically exist */ - assert(p->tok->fp == NULL || p->tok->fp == stdin || p->tok->done == E_EOF); + assert(p->tok->fp == NULL || p->tok->fp == stdin || p->tok->done == E_EOF || !uses_utf8_codec); if (p->tok->lineno <= lineno) { Py_ssize_t size = p->tok->inp - p->tok->buf; From webhook-mailer at python.org Tue Jun 8 21:43:58 2021 From: webhook-mailer at python.org (terryjreedy) Date: Wed, 09 Jun 2021 01:43:58 -0000 Subject: [Python-checkins] bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618) Message-ID: https://github.com/python/cpython/commit/5571cabf1b3385087aba2c7c10289bba77494e08 commit: 5571cabf1b3385087aba2c7c10289bba77494e08 branch: main author: Terry Jan Reedy committer: terryjreedy date: 2021-06-08T21:43:49-04:00 summary: bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618) files: M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 6638c062d2549..9c0153b1a7361 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -112,11 +112,11 @@ def create_widgets(self): self.frame = frame = Frame(self, padding="5px") self.frame.grid(sticky="nwes") self.note = note = Notebook(frame) - self.highpage = HighPage(note) + self.extpage = ExtPage(note) + self.highpage = HighPage(note, self.extpage) self.fontpage = FontPage(note, self.highpage) - self.keyspage = KeysPage(note) + self.keyspage = KeysPage(note, self.extpage) self.genpage = GenPage(note) - self.extpage = self.create_page_extensions() note.add(self.fontpage, text='Fonts/Tabs') note.add(self.highpage, text='Highlights') note.add(self.keyspage, text=' Keys ') @@ -244,198 +244,6 @@ def activate_config_changes(self): for klass in reloadables: klass.reload() - def create_page_extensions(self): - """Part of the config dialog used for configuring IDLE extensions. - - This code is generic - it works for any and all IDLE extensions. - - IDLE extensions save their configuration options using idleConf. - This code reads the current configuration using idleConf, supplies a - GUI interface to change the configuration values, and saves the - changes using idleConf. - - Not all changes take effect immediately - some may require restarting IDLE. - This depends on each extension's implementation. - - All values are treated as text, and it is up to the user to supply - reasonable values. The only exception to this are the 'enable*' options, - which are boolean, and can be toggled with a True/False button. - - Methods: - load_extensions: - extension_selected: Handle selection from list. - create_extension_frame: Hold widgets for one extension. - set_extension_value: Set in userCfg['extensions']. - save_all_changed_extensions: Call extension page Save(). - """ - self.ext_defaultCfg = idleConf.defaultCfg['extensions'] - self.ext_userCfg = idleConf.userCfg['extensions'] - self.is_int = self.register(is_int) - self.load_extensions() - # Create widgets - a listbox shows all available extensions, with the - # controls for the extension selected in the listbox to the right. - self.extension_names = StringVar(self) - frame = Frame(self.note) - frame_ext = LabelFrame(frame, borderwidth=2, relief=GROOVE, - text=' Feature Extensions ') - frame_ext.rowconfigure(0, weight=1) - frame_ext.columnconfigure(2, weight=1) - self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, - selectmode='browse') - self.extension_list.bind('<>', self.extension_selected) - scroll = Scrollbar(frame_ext, command=self.extension_list.yview) - self.extension_list.yscrollcommand=scroll.set - self.details_frame = LabelFrame(frame_ext, width=250, height=250) - self.extension_list.grid(column=0, row=0, sticky='nws') - scroll.grid(column=1, row=0, sticky='ns') - self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) - frame_ext.configure(padding=10) - self.config_frame = {} - self.current_extension = None - - self.outerframe = self # TEMPORARY - self.tabbed_page_set = self.extension_list # TEMPORARY - - # Create the frame holding controls for each extension. - ext_names = '' - for ext_name in sorted(self.extensions): - self.create_extension_frame(ext_name) - ext_names = ext_names + '{' + ext_name + '} ' - self.extension_names.set(ext_names) - self.extension_list.selection_set(0) - self.extension_selected(None) - - - self.frame_help = HelpFrame(frame, borderwidth=2, relief=GROOVE, - text=' Help Menu Extensions ') - frame_ext.grid(row=0, column=0, sticky='nsew') - Label(frame).grid(row=1, column=0) - self.frame_help.grid(row=2, column=0, sticky='sew') - - return frame - - def load_extensions(self): - "Fill self.extensions with data from the default and user configs." - self.extensions = {} - for ext_name in idleConf.GetExtensions(active_only=False): - # Former built-in extensions are already filtered out. - self.extensions[ext_name] = [] - - for ext_name in self.extensions: - opt_list = sorted(self.ext_defaultCfg.GetOptionList(ext_name)) - - # Bring 'enable' options to the beginning of the list. - enables = [opt_name for opt_name in opt_list - if opt_name.startswith('enable')] - for opt_name in enables: - opt_list.remove(opt_name) - opt_list = enables + opt_list - - for opt_name in opt_list: - def_str = self.ext_defaultCfg.Get( - ext_name, opt_name, raw=True) - try: - def_obj = {'True':True, 'False':False}[def_str] - opt_type = 'bool' - except KeyError: - try: - def_obj = int(def_str) - opt_type = 'int' - except ValueError: - def_obj = def_str - opt_type = None - try: - value = self.ext_userCfg.Get( - ext_name, opt_name, type=opt_type, raw=True, - default=def_obj) - except ValueError: # Need this until .Get fixed. - value = def_obj # Bad values overwritten by entry. - var = StringVar(self) - var.set(str(value)) - - self.extensions[ext_name].append({'name': opt_name, - 'type': opt_type, - 'default': def_str, - 'value': value, - 'var': var, - }) - - def extension_selected(self, event): - "Handle selection of an extension from the list." - newsel = self.extension_list.curselection() - if newsel: - newsel = self.extension_list.get(newsel) - if newsel is None or newsel != self.current_extension: - if self.current_extension: - self.details_frame.config(text='') - self.config_frame[self.current_extension].grid_forget() - self.current_extension = None - if newsel: - self.details_frame.config(text=newsel) - self.config_frame[newsel].grid(column=0, row=0, sticky='nsew') - self.current_extension = newsel - - def create_extension_frame(self, ext_name): - """Create a frame holding the widgets to configure one extension""" - f = VerticalScrolledFrame(self.details_frame, height=250, width=250) - self.config_frame[ext_name] = f - entry_area = f.interior - # Create an entry for each configuration option. - for row, opt in enumerate(self.extensions[ext_name]): - # Create a row with a label and entry/checkbutton. - label = Label(entry_area, text=opt['name']) - label.grid(row=row, column=0, sticky=NW) - var = opt['var'] - if opt['type'] == 'bool': - Checkbutton(entry_area, variable=var, - onvalue='True', offvalue='False', width=8 - ).grid(row=row, column=1, sticky=W, padx=7) - elif opt['type'] == 'int': - Entry(entry_area, textvariable=var, validate='key', - validatecommand=(self.is_int, '%P'), width=10 - ).grid(row=row, column=1, sticky=NSEW, padx=7) - - else: # type == 'str' - # Limit size to fit non-expanding space with larger font. - Entry(entry_area, textvariable=var, width=15 - ).grid(row=row, column=1, sticky=NSEW, padx=7) - return - - def set_extension_value(self, section, opt): - """Return True if the configuration was added or changed. - - If the value is the same as the default, then remove it - from user config file. - """ - name = opt['name'] - default = opt['default'] - value = opt['var'].get().strip() or default - opt['var'].set(value) - # if self.defaultCfg.has_section(section): - # Currently, always true; if not, indent to return. - if (value == default): - return self.ext_userCfg.RemoveOption(section, name) - # Set the option. - return self.ext_userCfg.SetOption(section, name, value) - - def save_all_changed_extensions(self): - """Save configuration changes to the user config file. - - Attributes accessed: - extensions - - Methods: - set_extension_value - """ - has_changes = False - for ext_name in self.extensions: - options = self.extensions[ext_name] - for opt in options: - if self.set_extension_value(ext_name, opt): - has_changes = True - if has_changes: - self.ext_userCfg.Save() - # class TabPage(Frame): # A template for Page classes. # def __init__(self, master): @@ -695,8 +503,9 @@ def var_changed_space_num(self, *params): class HighPage(Frame): - def __init__(self, master): + def __init__(self, master, extpage): super().__init__(master) + self.extpage = extpage self.cd = master.winfo_toplevel() self.style = Style(master) self.create_page_highlight() @@ -1347,15 +1156,16 @@ def delete_custom(self): self.builtin_name.set(idleConf.defaultCfg['main'].Get('Theme', 'name')) # User can't back out of these changes, they must be applied now. changes.save_all() - self.cd.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.cd.activate_config_changes() self.set_theme_type() class KeysPage(Frame): - def __init__(self, master): + def __init__(self, master, extpage): super().__init__(master) + self.extpage = extpage self.cd = master.winfo_toplevel() self.create_page_keys() self.load_key_cfg() @@ -1779,7 +1589,7 @@ def delete_custom_keys(self): or idleConf.default_keys()) # User can't back out of these changes, they must be applied now. changes.save_all() - self.cd.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.cd.activate_config_changes() self.set_keys_type() @@ -2094,6 +1904,201 @@ def load_shelled_cfg(self): 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) +class ExtPage(Frame): + def __init__(self, master): + super().__init__(master) + self.ext_defaultCfg = idleConf.defaultCfg['extensions'] + self.ext_userCfg = idleConf.userCfg['extensions'] + self.is_int = self.register(is_int) + self.load_extensions() + self.create_page_extensions() # Requires extension names. + + def create_page_extensions(self): + """Configure IDLE feature extensions and help menu extensions. + + List the feature extensions and a configuration box for the + selected extension. Help menu extensions are in a HelpFrame. + + This code reads the current configuration using idleConf, + supplies a GUI interface to change the configuration values, + and saves the changes using idleConf. + + Some changes may require restarting IDLE. This depends on each + extension's implementation. + + All values are treated as text, and it is up to the user to + supply reasonable values. The only exception to this are the + 'enable*' options, which are boolean, and can be toggled with a + True/False button. + + Methods: + extension_selected: Handle selection from list. + create_extension_frame: Hold widgets for one extension. + set_extension_value: Set in userCfg['extensions']. + save_all_changed_extensions: Call extension page Save(). + """ + self.extension_names = StringVar(self) + + frame_ext = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Feature Extensions ') + self.frame_help = HelpFrame(self, borderwidth=2, relief=GROOVE, + text=' Help Menu Extensions ') + + frame_ext.rowconfigure(0, weight=1) + frame_ext.columnconfigure(2, weight=1) + self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, + selectmode='browse') + self.extension_list.bind('<>', self.extension_selected) + scroll = Scrollbar(frame_ext, command=self.extension_list.yview) + self.extension_list.yscrollcommand=scroll.set + self.details_frame = LabelFrame(frame_ext, width=250, height=250) + self.extension_list.grid(column=0, row=0, sticky='nws') + scroll.grid(column=1, row=0, sticky='ns') + self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) + frame_ext.configure(padding=10) + self.config_frame = {} + self.current_extension = None + + self.outerframe = self # TEMPORARY + self.tabbed_page_set = self.extension_list # TEMPORARY + + # Create the frame holding controls for each extension. + ext_names = '' + for ext_name in sorted(self.extensions): + self.create_extension_frame(ext_name) + ext_names = ext_names + '{' + ext_name + '} ' + self.extension_names.set(ext_names) + self.extension_list.selection_set(0) + self.extension_selected(None) + + + frame_ext.grid(row=0, column=0, sticky='nsew') + Label(self).grid(row=1, column=0) # Spacer. Replace with config? + self.frame_help.grid(row=2, column=0, sticky='sew') + + def load_extensions(self): + "Fill self.extensions with data from the default and user configs." + self.extensions = {} + for ext_name in idleConf.GetExtensions(active_only=False): + # Former built-in extensions are already filtered out. + self.extensions[ext_name] = [] + + for ext_name in self.extensions: + opt_list = sorted(self.ext_defaultCfg.GetOptionList(ext_name)) + + # Bring 'enable' options to the beginning of the list. + enables = [opt_name for opt_name in opt_list + if opt_name.startswith('enable')] + for opt_name in enables: + opt_list.remove(opt_name) + opt_list = enables + opt_list + + for opt_name in opt_list: + def_str = self.ext_defaultCfg.Get( + ext_name, opt_name, raw=True) + try: + def_obj = {'True':True, 'False':False}[def_str] + opt_type = 'bool' + except KeyError: + try: + def_obj = int(def_str) + opt_type = 'int' + except ValueError: + def_obj = def_str + opt_type = None + try: + value = self.ext_userCfg.Get( + ext_name, opt_name, type=opt_type, raw=True, + default=def_obj) + except ValueError: # Need this until .Get fixed. + value = def_obj # Bad values overwritten by entry. + var = StringVar(self) + var.set(str(value)) + + self.extensions[ext_name].append({'name': opt_name, + 'type': opt_type, + 'default': def_str, + 'value': value, + 'var': var, + }) + + def extension_selected(self, event): + "Handle selection of an extension from the list." + newsel = self.extension_list.curselection() + if newsel: + newsel = self.extension_list.get(newsel) + if newsel is None or newsel != self.current_extension: + if self.current_extension: + self.details_frame.config(text='') + self.config_frame[self.current_extension].grid_forget() + self.current_extension = None + if newsel: + self.details_frame.config(text=newsel) + self.config_frame[newsel].grid(column=0, row=0, sticky='nsew') + self.current_extension = newsel + + def create_extension_frame(self, ext_name): + """Create a frame holding the widgets to configure one extension""" + f = VerticalScrolledFrame(self.details_frame, height=250, width=250) + self.config_frame[ext_name] = f + entry_area = f.interior + # Create an entry for each configuration option. + for row, opt in enumerate(self.extensions[ext_name]): + # Create a row with a label and entry/checkbutton. + label = Label(entry_area, text=opt['name']) + label.grid(row=row, column=0, sticky=NW) + var = opt['var'] + if opt['type'] == 'bool': + Checkbutton(entry_area, variable=var, + onvalue='True', offvalue='False', width=8 + ).grid(row=row, column=1, sticky=W, padx=7) + elif opt['type'] == 'int': + Entry(entry_area, textvariable=var, validate='key', + validatecommand=(self.is_int, '%P'), width=10 + ).grid(row=row, column=1, sticky=NSEW, padx=7) + + else: # type == 'str' + # Limit size to fit non-expanding space with larger font. + Entry(entry_area, textvariable=var, width=15 + ).grid(row=row, column=1, sticky=NSEW, padx=7) + return + + def set_extension_value(self, section, opt): + """Return True if the configuration was added or changed. + + If the value is the same as the default, then remove it + from user config file. + """ + name = opt['name'] + default = opt['default'] + value = opt['var'].get().strip() or default + opt['var'].set(value) + # if self.defaultCfg.has_section(section): + # Currently, always true; if not, indent to return. + if (value == default): + return self.ext_userCfg.RemoveOption(section, name) + # Set the option. + return self.ext_userCfg.SetOption(section, name, value) + + def save_all_changed_extensions(self): + """Save configuration changes to the user config file. + + Attributes accessed: + extensions + + Methods: + set_extension_value + """ + has_changes = False + for ext_name in self.extensions: + options = self.extensions[ext_name] + for opt in options: + if self.set_extension_value(ext_name, opt): + has_changes = True + if has_changes: + self.ext_userCfg.Save() + + class HelpFrame(LabelFrame): def __init__(self, master, **cfg): diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 214d1b379b55d..e01aa634473dc 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1292,12 +1292,22 @@ def test_context(self): self.assertEqual(extpage, {'CodeContext': {'maxlines': '1'}}) +#unittest.skip("Nothing here yet TODO") +class ExtPageTest(unittest.TestCase): + """Test that the help source list works correctly.""" + @classmethod + def setUpClass(cls): + page = dialog.extpage + dialog.note.select(page) + + class HelpSourceTest(unittest.TestCase): """Test that the help source list works correctly.""" @classmethod def setUpClass(cls): - dialog.note.select(dialog.extpage) - frame = cls.frame = dialog.frame_help + page = dialog.extpage + dialog.note.select(page) + frame = cls.frame = page.frame_help frame.set = frame.set_add_delete_state = Func() frame.upc = frame.update_help_changes = Func() frame.update() From webhook-mailer at python.org Tue Jun 8 22:05:36 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 09 Jun 2021 02:05:36 -0000 Subject: [Python-checkins] bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618) Message-ID: https://github.com/python/cpython/commit/c8353239eda0d05f7facd1a19acc2b836a057807 commit: c8353239eda0d05f7facd1a19acc2b836a057807 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-08T19:05:28-07:00 summary: bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618) (cherry picked from commit 5571cabf1b3385087aba2c7c10289bba77494e08) Co-authored-by: Terry Jan Reedy files: M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 6638c062d2549..9c0153b1a7361 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -112,11 +112,11 @@ def create_widgets(self): self.frame = frame = Frame(self, padding="5px") self.frame.grid(sticky="nwes") self.note = note = Notebook(frame) - self.highpage = HighPage(note) + self.extpage = ExtPage(note) + self.highpage = HighPage(note, self.extpage) self.fontpage = FontPage(note, self.highpage) - self.keyspage = KeysPage(note) + self.keyspage = KeysPage(note, self.extpage) self.genpage = GenPage(note) - self.extpage = self.create_page_extensions() note.add(self.fontpage, text='Fonts/Tabs') note.add(self.highpage, text='Highlights') note.add(self.keyspage, text=' Keys ') @@ -244,198 +244,6 @@ def activate_config_changes(self): for klass in reloadables: klass.reload() - def create_page_extensions(self): - """Part of the config dialog used for configuring IDLE extensions. - - This code is generic - it works for any and all IDLE extensions. - - IDLE extensions save their configuration options using idleConf. - This code reads the current configuration using idleConf, supplies a - GUI interface to change the configuration values, and saves the - changes using idleConf. - - Not all changes take effect immediately - some may require restarting IDLE. - This depends on each extension's implementation. - - All values are treated as text, and it is up to the user to supply - reasonable values. The only exception to this are the 'enable*' options, - which are boolean, and can be toggled with a True/False button. - - Methods: - load_extensions: - extension_selected: Handle selection from list. - create_extension_frame: Hold widgets for one extension. - set_extension_value: Set in userCfg['extensions']. - save_all_changed_extensions: Call extension page Save(). - """ - self.ext_defaultCfg = idleConf.defaultCfg['extensions'] - self.ext_userCfg = idleConf.userCfg['extensions'] - self.is_int = self.register(is_int) - self.load_extensions() - # Create widgets - a listbox shows all available extensions, with the - # controls for the extension selected in the listbox to the right. - self.extension_names = StringVar(self) - frame = Frame(self.note) - frame_ext = LabelFrame(frame, borderwidth=2, relief=GROOVE, - text=' Feature Extensions ') - frame_ext.rowconfigure(0, weight=1) - frame_ext.columnconfigure(2, weight=1) - self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, - selectmode='browse') - self.extension_list.bind('<>', self.extension_selected) - scroll = Scrollbar(frame_ext, command=self.extension_list.yview) - self.extension_list.yscrollcommand=scroll.set - self.details_frame = LabelFrame(frame_ext, width=250, height=250) - self.extension_list.grid(column=0, row=0, sticky='nws') - scroll.grid(column=1, row=0, sticky='ns') - self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) - frame_ext.configure(padding=10) - self.config_frame = {} - self.current_extension = None - - self.outerframe = self # TEMPORARY - self.tabbed_page_set = self.extension_list # TEMPORARY - - # Create the frame holding controls for each extension. - ext_names = '' - for ext_name in sorted(self.extensions): - self.create_extension_frame(ext_name) - ext_names = ext_names + '{' + ext_name + '} ' - self.extension_names.set(ext_names) - self.extension_list.selection_set(0) - self.extension_selected(None) - - - self.frame_help = HelpFrame(frame, borderwidth=2, relief=GROOVE, - text=' Help Menu Extensions ') - frame_ext.grid(row=0, column=0, sticky='nsew') - Label(frame).grid(row=1, column=0) - self.frame_help.grid(row=2, column=0, sticky='sew') - - return frame - - def load_extensions(self): - "Fill self.extensions with data from the default and user configs." - self.extensions = {} - for ext_name in idleConf.GetExtensions(active_only=False): - # Former built-in extensions are already filtered out. - self.extensions[ext_name] = [] - - for ext_name in self.extensions: - opt_list = sorted(self.ext_defaultCfg.GetOptionList(ext_name)) - - # Bring 'enable' options to the beginning of the list. - enables = [opt_name for opt_name in opt_list - if opt_name.startswith('enable')] - for opt_name in enables: - opt_list.remove(opt_name) - opt_list = enables + opt_list - - for opt_name in opt_list: - def_str = self.ext_defaultCfg.Get( - ext_name, opt_name, raw=True) - try: - def_obj = {'True':True, 'False':False}[def_str] - opt_type = 'bool' - except KeyError: - try: - def_obj = int(def_str) - opt_type = 'int' - except ValueError: - def_obj = def_str - opt_type = None - try: - value = self.ext_userCfg.Get( - ext_name, opt_name, type=opt_type, raw=True, - default=def_obj) - except ValueError: # Need this until .Get fixed. - value = def_obj # Bad values overwritten by entry. - var = StringVar(self) - var.set(str(value)) - - self.extensions[ext_name].append({'name': opt_name, - 'type': opt_type, - 'default': def_str, - 'value': value, - 'var': var, - }) - - def extension_selected(self, event): - "Handle selection of an extension from the list." - newsel = self.extension_list.curselection() - if newsel: - newsel = self.extension_list.get(newsel) - if newsel is None or newsel != self.current_extension: - if self.current_extension: - self.details_frame.config(text='') - self.config_frame[self.current_extension].grid_forget() - self.current_extension = None - if newsel: - self.details_frame.config(text=newsel) - self.config_frame[newsel].grid(column=0, row=0, sticky='nsew') - self.current_extension = newsel - - def create_extension_frame(self, ext_name): - """Create a frame holding the widgets to configure one extension""" - f = VerticalScrolledFrame(self.details_frame, height=250, width=250) - self.config_frame[ext_name] = f - entry_area = f.interior - # Create an entry for each configuration option. - for row, opt in enumerate(self.extensions[ext_name]): - # Create a row with a label and entry/checkbutton. - label = Label(entry_area, text=opt['name']) - label.grid(row=row, column=0, sticky=NW) - var = opt['var'] - if opt['type'] == 'bool': - Checkbutton(entry_area, variable=var, - onvalue='True', offvalue='False', width=8 - ).grid(row=row, column=1, sticky=W, padx=7) - elif opt['type'] == 'int': - Entry(entry_area, textvariable=var, validate='key', - validatecommand=(self.is_int, '%P'), width=10 - ).grid(row=row, column=1, sticky=NSEW, padx=7) - - else: # type == 'str' - # Limit size to fit non-expanding space with larger font. - Entry(entry_area, textvariable=var, width=15 - ).grid(row=row, column=1, sticky=NSEW, padx=7) - return - - def set_extension_value(self, section, opt): - """Return True if the configuration was added or changed. - - If the value is the same as the default, then remove it - from user config file. - """ - name = opt['name'] - default = opt['default'] - value = opt['var'].get().strip() or default - opt['var'].set(value) - # if self.defaultCfg.has_section(section): - # Currently, always true; if not, indent to return. - if (value == default): - return self.ext_userCfg.RemoveOption(section, name) - # Set the option. - return self.ext_userCfg.SetOption(section, name, value) - - def save_all_changed_extensions(self): - """Save configuration changes to the user config file. - - Attributes accessed: - extensions - - Methods: - set_extension_value - """ - has_changes = False - for ext_name in self.extensions: - options = self.extensions[ext_name] - for opt in options: - if self.set_extension_value(ext_name, opt): - has_changes = True - if has_changes: - self.ext_userCfg.Save() - # class TabPage(Frame): # A template for Page classes. # def __init__(self, master): @@ -695,8 +503,9 @@ def var_changed_space_num(self, *params): class HighPage(Frame): - def __init__(self, master): + def __init__(self, master, extpage): super().__init__(master) + self.extpage = extpage self.cd = master.winfo_toplevel() self.style = Style(master) self.create_page_highlight() @@ -1347,15 +1156,16 @@ def delete_custom(self): self.builtin_name.set(idleConf.defaultCfg['main'].Get('Theme', 'name')) # User can't back out of these changes, they must be applied now. changes.save_all() - self.cd.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.cd.activate_config_changes() self.set_theme_type() class KeysPage(Frame): - def __init__(self, master): + def __init__(self, master, extpage): super().__init__(master) + self.extpage = extpage self.cd = master.winfo_toplevel() self.create_page_keys() self.load_key_cfg() @@ -1779,7 +1589,7 @@ def delete_custom_keys(self): or idleConf.default_keys()) # User can't back out of these changes, they must be applied now. changes.save_all() - self.cd.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.cd.activate_config_changes() self.set_keys_type() @@ -2094,6 +1904,201 @@ def load_shelled_cfg(self): 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) +class ExtPage(Frame): + def __init__(self, master): + super().__init__(master) + self.ext_defaultCfg = idleConf.defaultCfg['extensions'] + self.ext_userCfg = idleConf.userCfg['extensions'] + self.is_int = self.register(is_int) + self.load_extensions() + self.create_page_extensions() # Requires extension names. + + def create_page_extensions(self): + """Configure IDLE feature extensions and help menu extensions. + + List the feature extensions and a configuration box for the + selected extension. Help menu extensions are in a HelpFrame. + + This code reads the current configuration using idleConf, + supplies a GUI interface to change the configuration values, + and saves the changes using idleConf. + + Some changes may require restarting IDLE. This depends on each + extension's implementation. + + All values are treated as text, and it is up to the user to + supply reasonable values. The only exception to this are the + 'enable*' options, which are boolean, and can be toggled with a + True/False button. + + Methods: + extension_selected: Handle selection from list. + create_extension_frame: Hold widgets for one extension. + set_extension_value: Set in userCfg['extensions']. + save_all_changed_extensions: Call extension page Save(). + """ + self.extension_names = StringVar(self) + + frame_ext = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Feature Extensions ') + self.frame_help = HelpFrame(self, borderwidth=2, relief=GROOVE, + text=' Help Menu Extensions ') + + frame_ext.rowconfigure(0, weight=1) + frame_ext.columnconfigure(2, weight=1) + self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, + selectmode='browse') + self.extension_list.bind('<>', self.extension_selected) + scroll = Scrollbar(frame_ext, command=self.extension_list.yview) + self.extension_list.yscrollcommand=scroll.set + self.details_frame = LabelFrame(frame_ext, width=250, height=250) + self.extension_list.grid(column=0, row=0, sticky='nws') + scroll.grid(column=1, row=0, sticky='ns') + self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) + frame_ext.configure(padding=10) + self.config_frame = {} + self.current_extension = None + + self.outerframe = self # TEMPORARY + self.tabbed_page_set = self.extension_list # TEMPORARY + + # Create the frame holding controls for each extension. + ext_names = '' + for ext_name in sorted(self.extensions): + self.create_extension_frame(ext_name) + ext_names = ext_names + '{' + ext_name + '} ' + self.extension_names.set(ext_names) + self.extension_list.selection_set(0) + self.extension_selected(None) + + + frame_ext.grid(row=0, column=0, sticky='nsew') + Label(self).grid(row=1, column=0) # Spacer. Replace with config? + self.frame_help.grid(row=2, column=0, sticky='sew') + + def load_extensions(self): + "Fill self.extensions with data from the default and user configs." + self.extensions = {} + for ext_name in idleConf.GetExtensions(active_only=False): + # Former built-in extensions are already filtered out. + self.extensions[ext_name] = [] + + for ext_name in self.extensions: + opt_list = sorted(self.ext_defaultCfg.GetOptionList(ext_name)) + + # Bring 'enable' options to the beginning of the list. + enables = [opt_name for opt_name in opt_list + if opt_name.startswith('enable')] + for opt_name in enables: + opt_list.remove(opt_name) + opt_list = enables + opt_list + + for opt_name in opt_list: + def_str = self.ext_defaultCfg.Get( + ext_name, opt_name, raw=True) + try: + def_obj = {'True':True, 'False':False}[def_str] + opt_type = 'bool' + except KeyError: + try: + def_obj = int(def_str) + opt_type = 'int' + except ValueError: + def_obj = def_str + opt_type = None + try: + value = self.ext_userCfg.Get( + ext_name, opt_name, type=opt_type, raw=True, + default=def_obj) + except ValueError: # Need this until .Get fixed. + value = def_obj # Bad values overwritten by entry. + var = StringVar(self) + var.set(str(value)) + + self.extensions[ext_name].append({'name': opt_name, + 'type': opt_type, + 'default': def_str, + 'value': value, + 'var': var, + }) + + def extension_selected(self, event): + "Handle selection of an extension from the list." + newsel = self.extension_list.curselection() + if newsel: + newsel = self.extension_list.get(newsel) + if newsel is None or newsel != self.current_extension: + if self.current_extension: + self.details_frame.config(text='') + self.config_frame[self.current_extension].grid_forget() + self.current_extension = None + if newsel: + self.details_frame.config(text=newsel) + self.config_frame[newsel].grid(column=0, row=0, sticky='nsew') + self.current_extension = newsel + + def create_extension_frame(self, ext_name): + """Create a frame holding the widgets to configure one extension""" + f = VerticalScrolledFrame(self.details_frame, height=250, width=250) + self.config_frame[ext_name] = f + entry_area = f.interior + # Create an entry for each configuration option. + for row, opt in enumerate(self.extensions[ext_name]): + # Create a row with a label and entry/checkbutton. + label = Label(entry_area, text=opt['name']) + label.grid(row=row, column=0, sticky=NW) + var = opt['var'] + if opt['type'] == 'bool': + Checkbutton(entry_area, variable=var, + onvalue='True', offvalue='False', width=8 + ).grid(row=row, column=1, sticky=W, padx=7) + elif opt['type'] == 'int': + Entry(entry_area, textvariable=var, validate='key', + validatecommand=(self.is_int, '%P'), width=10 + ).grid(row=row, column=1, sticky=NSEW, padx=7) + + else: # type == 'str' + # Limit size to fit non-expanding space with larger font. + Entry(entry_area, textvariable=var, width=15 + ).grid(row=row, column=1, sticky=NSEW, padx=7) + return + + def set_extension_value(self, section, opt): + """Return True if the configuration was added or changed. + + If the value is the same as the default, then remove it + from user config file. + """ + name = opt['name'] + default = opt['default'] + value = opt['var'].get().strip() or default + opt['var'].set(value) + # if self.defaultCfg.has_section(section): + # Currently, always true; if not, indent to return. + if (value == default): + return self.ext_userCfg.RemoveOption(section, name) + # Set the option. + return self.ext_userCfg.SetOption(section, name, value) + + def save_all_changed_extensions(self): + """Save configuration changes to the user config file. + + Attributes accessed: + extensions + + Methods: + set_extension_value + """ + has_changes = False + for ext_name in self.extensions: + options = self.extensions[ext_name] + for opt in options: + if self.set_extension_value(ext_name, opt): + has_changes = True + if has_changes: + self.ext_userCfg.Save() + + class HelpFrame(LabelFrame): def __init__(self, master, **cfg): diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 214d1b379b55d..e01aa634473dc 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1292,12 +1292,22 @@ def test_context(self): self.assertEqual(extpage, {'CodeContext': {'maxlines': '1'}}) +#unittest.skip("Nothing here yet TODO") +class ExtPageTest(unittest.TestCase): + """Test that the help source list works correctly.""" + @classmethod + def setUpClass(cls): + page = dialog.extpage + dialog.note.select(page) + + class HelpSourceTest(unittest.TestCase): """Test that the help source list works correctly.""" @classmethod def setUpClass(cls): - dialog.note.select(dialog.extpage) - frame = cls.frame = dialog.frame_help + page = dialog.extpage + dialog.note.select(page) + frame = cls.frame = page.frame_help frame.set = frame.set_add_delete_state = Func() frame.upc = frame.update_help_changes = Func() frame.update() From webhook-mailer at python.org Tue Jun 8 22:11:34 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 09 Jun 2021 02:11:34 -0000 Subject: [Python-checkins] bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618) Message-ID: https://github.com/python/cpython/commit/33a7a24288988134e89200a33802af56a2dee31e commit: 33a7a24288988134e89200a33802af56a2dee31e branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-08T19:11:26-07:00 summary: bpo-40468: Factor out class ExtPage in idlelib.configdialog (GH-26618) (cherry picked from commit 5571cabf1b3385087aba2c7c10289bba77494e08) Co-authored-by: Terry Jan Reedy files: M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 6638c062d2549..9c0153b1a7361 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -112,11 +112,11 @@ def create_widgets(self): self.frame = frame = Frame(self, padding="5px") self.frame.grid(sticky="nwes") self.note = note = Notebook(frame) - self.highpage = HighPage(note) + self.extpage = ExtPage(note) + self.highpage = HighPage(note, self.extpage) self.fontpage = FontPage(note, self.highpage) - self.keyspage = KeysPage(note) + self.keyspage = KeysPage(note, self.extpage) self.genpage = GenPage(note) - self.extpage = self.create_page_extensions() note.add(self.fontpage, text='Fonts/Tabs') note.add(self.highpage, text='Highlights') note.add(self.keyspage, text=' Keys ') @@ -244,198 +244,6 @@ def activate_config_changes(self): for klass in reloadables: klass.reload() - def create_page_extensions(self): - """Part of the config dialog used for configuring IDLE extensions. - - This code is generic - it works for any and all IDLE extensions. - - IDLE extensions save their configuration options using idleConf. - This code reads the current configuration using idleConf, supplies a - GUI interface to change the configuration values, and saves the - changes using idleConf. - - Not all changes take effect immediately - some may require restarting IDLE. - This depends on each extension's implementation. - - All values are treated as text, and it is up to the user to supply - reasonable values. The only exception to this are the 'enable*' options, - which are boolean, and can be toggled with a True/False button. - - Methods: - load_extensions: - extension_selected: Handle selection from list. - create_extension_frame: Hold widgets for one extension. - set_extension_value: Set in userCfg['extensions']. - save_all_changed_extensions: Call extension page Save(). - """ - self.ext_defaultCfg = idleConf.defaultCfg['extensions'] - self.ext_userCfg = idleConf.userCfg['extensions'] - self.is_int = self.register(is_int) - self.load_extensions() - # Create widgets - a listbox shows all available extensions, with the - # controls for the extension selected in the listbox to the right. - self.extension_names = StringVar(self) - frame = Frame(self.note) - frame_ext = LabelFrame(frame, borderwidth=2, relief=GROOVE, - text=' Feature Extensions ') - frame_ext.rowconfigure(0, weight=1) - frame_ext.columnconfigure(2, weight=1) - self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, - selectmode='browse') - self.extension_list.bind('<>', self.extension_selected) - scroll = Scrollbar(frame_ext, command=self.extension_list.yview) - self.extension_list.yscrollcommand=scroll.set - self.details_frame = LabelFrame(frame_ext, width=250, height=250) - self.extension_list.grid(column=0, row=0, sticky='nws') - scroll.grid(column=1, row=0, sticky='ns') - self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) - frame_ext.configure(padding=10) - self.config_frame = {} - self.current_extension = None - - self.outerframe = self # TEMPORARY - self.tabbed_page_set = self.extension_list # TEMPORARY - - # Create the frame holding controls for each extension. - ext_names = '' - for ext_name in sorted(self.extensions): - self.create_extension_frame(ext_name) - ext_names = ext_names + '{' + ext_name + '} ' - self.extension_names.set(ext_names) - self.extension_list.selection_set(0) - self.extension_selected(None) - - - self.frame_help = HelpFrame(frame, borderwidth=2, relief=GROOVE, - text=' Help Menu Extensions ') - frame_ext.grid(row=0, column=0, sticky='nsew') - Label(frame).grid(row=1, column=0) - self.frame_help.grid(row=2, column=0, sticky='sew') - - return frame - - def load_extensions(self): - "Fill self.extensions with data from the default and user configs." - self.extensions = {} - for ext_name in idleConf.GetExtensions(active_only=False): - # Former built-in extensions are already filtered out. - self.extensions[ext_name] = [] - - for ext_name in self.extensions: - opt_list = sorted(self.ext_defaultCfg.GetOptionList(ext_name)) - - # Bring 'enable' options to the beginning of the list. - enables = [opt_name for opt_name in opt_list - if opt_name.startswith('enable')] - for opt_name in enables: - opt_list.remove(opt_name) - opt_list = enables + opt_list - - for opt_name in opt_list: - def_str = self.ext_defaultCfg.Get( - ext_name, opt_name, raw=True) - try: - def_obj = {'True':True, 'False':False}[def_str] - opt_type = 'bool' - except KeyError: - try: - def_obj = int(def_str) - opt_type = 'int' - except ValueError: - def_obj = def_str - opt_type = None - try: - value = self.ext_userCfg.Get( - ext_name, opt_name, type=opt_type, raw=True, - default=def_obj) - except ValueError: # Need this until .Get fixed. - value = def_obj # Bad values overwritten by entry. - var = StringVar(self) - var.set(str(value)) - - self.extensions[ext_name].append({'name': opt_name, - 'type': opt_type, - 'default': def_str, - 'value': value, - 'var': var, - }) - - def extension_selected(self, event): - "Handle selection of an extension from the list." - newsel = self.extension_list.curselection() - if newsel: - newsel = self.extension_list.get(newsel) - if newsel is None or newsel != self.current_extension: - if self.current_extension: - self.details_frame.config(text='') - self.config_frame[self.current_extension].grid_forget() - self.current_extension = None - if newsel: - self.details_frame.config(text=newsel) - self.config_frame[newsel].grid(column=0, row=0, sticky='nsew') - self.current_extension = newsel - - def create_extension_frame(self, ext_name): - """Create a frame holding the widgets to configure one extension""" - f = VerticalScrolledFrame(self.details_frame, height=250, width=250) - self.config_frame[ext_name] = f - entry_area = f.interior - # Create an entry for each configuration option. - for row, opt in enumerate(self.extensions[ext_name]): - # Create a row with a label and entry/checkbutton. - label = Label(entry_area, text=opt['name']) - label.grid(row=row, column=0, sticky=NW) - var = opt['var'] - if opt['type'] == 'bool': - Checkbutton(entry_area, variable=var, - onvalue='True', offvalue='False', width=8 - ).grid(row=row, column=1, sticky=W, padx=7) - elif opt['type'] == 'int': - Entry(entry_area, textvariable=var, validate='key', - validatecommand=(self.is_int, '%P'), width=10 - ).grid(row=row, column=1, sticky=NSEW, padx=7) - - else: # type == 'str' - # Limit size to fit non-expanding space with larger font. - Entry(entry_area, textvariable=var, width=15 - ).grid(row=row, column=1, sticky=NSEW, padx=7) - return - - def set_extension_value(self, section, opt): - """Return True if the configuration was added or changed. - - If the value is the same as the default, then remove it - from user config file. - """ - name = opt['name'] - default = opt['default'] - value = opt['var'].get().strip() or default - opt['var'].set(value) - # if self.defaultCfg.has_section(section): - # Currently, always true; if not, indent to return. - if (value == default): - return self.ext_userCfg.RemoveOption(section, name) - # Set the option. - return self.ext_userCfg.SetOption(section, name, value) - - def save_all_changed_extensions(self): - """Save configuration changes to the user config file. - - Attributes accessed: - extensions - - Methods: - set_extension_value - """ - has_changes = False - for ext_name in self.extensions: - options = self.extensions[ext_name] - for opt in options: - if self.set_extension_value(ext_name, opt): - has_changes = True - if has_changes: - self.ext_userCfg.Save() - # class TabPage(Frame): # A template for Page classes. # def __init__(self, master): @@ -695,8 +503,9 @@ def var_changed_space_num(self, *params): class HighPage(Frame): - def __init__(self, master): + def __init__(self, master, extpage): super().__init__(master) + self.extpage = extpage self.cd = master.winfo_toplevel() self.style = Style(master) self.create_page_highlight() @@ -1347,15 +1156,16 @@ def delete_custom(self): self.builtin_name.set(idleConf.defaultCfg['main'].Get('Theme', 'name')) # User can't back out of these changes, they must be applied now. changes.save_all() - self.cd.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.cd.activate_config_changes() self.set_theme_type() class KeysPage(Frame): - def __init__(self, master): + def __init__(self, master, extpage): super().__init__(master) + self.extpage = extpage self.cd = master.winfo_toplevel() self.create_page_keys() self.load_key_cfg() @@ -1779,7 +1589,7 @@ def delete_custom_keys(self): or idleConf.default_keys()) # User can't back out of these changes, they must be applied now. changes.save_all() - self.cd.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.cd.activate_config_changes() self.set_keys_type() @@ -2094,6 +1904,201 @@ def load_shelled_cfg(self): 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) +class ExtPage(Frame): + def __init__(self, master): + super().__init__(master) + self.ext_defaultCfg = idleConf.defaultCfg['extensions'] + self.ext_userCfg = idleConf.userCfg['extensions'] + self.is_int = self.register(is_int) + self.load_extensions() + self.create_page_extensions() # Requires extension names. + + def create_page_extensions(self): + """Configure IDLE feature extensions and help menu extensions. + + List the feature extensions and a configuration box for the + selected extension. Help menu extensions are in a HelpFrame. + + This code reads the current configuration using idleConf, + supplies a GUI interface to change the configuration values, + and saves the changes using idleConf. + + Some changes may require restarting IDLE. This depends on each + extension's implementation. + + All values are treated as text, and it is up to the user to + supply reasonable values. The only exception to this are the + 'enable*' options, which are boolean, and can be toggled with a + True/False button. + + Methods: + extension_selected: Handle selection from list. + create_extension_frame: Hold widgets for one extension. + set_extension_value: Set in userCfg['extensions']. + save_all_changed_extensions: Call extension page Save(). + """ + self.extension_names = StringVar(self) + + frame_ext = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Feature Extensions ') + self.frame_help = HelpFrame(self, borderwidth=2, relief=GROOVE, + text=' Help Menu Extensions ') + + frame_ext.rowconfigure(0, weight=1) + frame_ext.columnconfigure(2, weight=1) + self.extension_list = Listbox(frame_ext, listvariable=self.extension_names, + selectmode='browse') + self.extension_list.bind('<>', self.extension_selected) + scroll = Scrollbar(frame_ext, command=self.extension_list.yview) + self.extension_list.yscrollcommand=scroll.set + self.details_frame = LabelFrame(frame_ext, width=250, height=250) + self.extension_list.grid(column=0, row=0, sticky='nws') + scroll.grid(column=1, row=0, sticky='ns') + self.details_frame.grid(column=2, row=0, sticky='nsew', padx=[10, 0]) + frame_ext.configure(padding=10) + self.config_frame = {} + self.current_extension = None + + self.outerframe = self # TEMPORARY + self.tabbed_page_set = self.extension_list # TEMPORARY + + # Create the frame holding controls for each extension. + ext_names = '' + for ext_name in sorted(self.extensions): + self.create_extension_frame(ext_name) + ext_names = ext_names + '{' + ext_name + '} ' + self.extension_names.set(ext_names) + self.extension_list.selection_set(0) + self.extension_selected(None) + + + frame_ext.grid(row=0, column=0, sticky='nsew') + Label(self).grid(row=1, column=0) # Spacer. Replace with config? + self.frame_help.grid(row=2, column=0, sticky='sew') + + def load_extensions(self): + "Fill self.extensions with data from the default and user configs." + self.extensions = {} + for ext_name in idleConf.GetExtensions(active_only=False): + # Former built-in extensions are already filtered out. + self.extensions[ext_name] = [] + + for ext_name in self.extensions: + opt_list = sorted(self.ext_defaultCfg.GetOptionList(ext_name)) + + # Bring 'enable' options to the beginning of the list. + enables = [opt_name for opt_name in opt_list + if opt_name.startswith('enable')] + for opt_name in enables: + opt_list.remove(opt_name) + opt_list = enables + opt_list + + for opt_name in opt_list: + def_str = self.ext_defaultCfg.Get( + ext_name, opt_name, raw=True) + try: + def_obj = {'True':True, 'False':False}[def_str] + opt_type = 'bool' + except KeyError: + try: + def_obj = int(def_str) + opt_type = 'int' + except ValueError: + def_obj = def_str + opt_type = None + try: + value = self.ext_userCfg.Get( + ext_name, opt_name, type=opt_type, raw=True, + default=def_obj) + except ValueError: # Need this until .Get fixed. + value = def_obj # Bad values overwritten by entry. + var = StringVar(self) + var.set(str(value)) + + self.extensions[ext_name].append({'name': opt_name, + 'type': opt_type, + 'default': def_str, + 'value': value, + 'var': var, + }) + + def extension_selected(self, event): + "Handle selection of an extension from the list." + newsel = self.extension_list.curselection() + if newsel: + newsel = self.extension_list.get(newsel) + if newsel is None or newsel != self.current_extension: + if self.current_extension: + self.details_frame.config(text='') + self.config_frame[self.current_extension].grid_forget() + self.current_extension = None + if newsel: + self.details_frame.config(text=newsel) + self.config_frame[newsel].grid(column=0, row=0, sticky='nsew') + self.current_extension = newsel + + def create_extension_frame(self, ext_name): + """Create a frame holding the widgets to configure one extension""" + f = VerticalScrolledFrame(self.details_frame, height=250, width=250) + self.config_frame[ext_name] = f + entry_area = f.interior + # Create an entry for each configuration option. + for row, opt in enumerate(self.extensions[ext_name]): + # Create a row with a label and entry/checkbutton. + label = Label(entry_area, text=opt['name']) + label.grid(row=row, column=0, sticky=NW) + var = opt['var'] + if opt['type'] == 'bool': + Checkbutton(entry_area, variable=var, + onvalue='True', offvalue='False', width=8 + ).grid(row=row, column=1, sticky=W, padx=7) + elif opt['type'] == 'int': + Entry(entry_area, textvariable=var, validate='key', + validatecommand=(self.is_int, '%P'), width=10 + ).grid(row=row, column=1, sticky=NSEW, padx=7) + + else: # type == 'str' + # Limit size to fit non-expanding space with larger font. + Entry(entry_area, textvariable=var, width=15 + ).grid(row=row, column=1, sticky=NSEW, padx=7) + return + + def set_extension_value(self, section, opt): + """Return True if the configuration was added or changed. + + If the value is the same as the default, then remove it + from user config file. + """ + name = opt['name'] + default = opt['default'] + value = opt['var'].get().strip() or default + opt['var'].set(value) + # if self.defaultCfg.has_section(section): + # Currently, always true; if not, indent to return. + if (value == default): + return self.ext_userCfg.RemoveOption(section, name) + # Set the option. + return self.ext_userCfg.SetOption(section, name, value) + + def save_all_changed_extensions(self): + """Save configuration changes to the user config file. + + Attributes accessed: + extensions + + Methods: + set_extension_value + """ + has_changes = False + for ext_name in self.extensions: + options = self.extensions[ext_name] + for opt in options: + if self.set_extension_value(ext_name, opt): + has_changes = True + if has_changes: + self.ext_userCfg.Save() + + class HelpFrame(LabelFrame): def __init__(self, master, **cfg): diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 214d1b379b55d..e01aa634473dc 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1292,12 +1292,22 @@ def test_context(self): self.assertEqual(extpage, {'CodeContext': {'maxlines': '1'}}) +#unittest.skip("Nothing here yet TODO") +class ExtPageTest(unittest.TestCase): + """Test that the help source list works correctly.""" + @classmethod + def setUpClass(cls): + page = dialog.extpage + dialog.note.select(page) + + class HelpSourceTest(unittest.TestCase): """Test that the help source list works correctly.""" @classmethod def setUpClass(cls): - dialog.note.select(dialog.extpage) - frame = cls.frame = dialog.frame_help + page = dialog.extpage + dialog.note.select(page) + frame = cls.frame = page.frame_help frame.set = frame.set_add_delete_state = Func() frame.upc = frame.update_help_changes = Func() frame.update() From webhook-mailer at python.org Wed Jun 9 10:39:02 2021 From: webhook-mailer at python.org (lysnikolaou) Date: Wed, 09 Jun 2021 14:39:02 -0000 Subject: [Python-checkins] bpo-44345: Fix 'generated by' comment in parser.c (GH-26615) Message-ID: https://github.com/python/cpython/commit/aef1b58dc8889e1bebaddf1e30f67b63a1b20f90 commit: aef1b58dc8889e1bebaddf1e30f67b63a1b20f90 branch: main author: Akira Nonaka committer: lysnikolaou date: 2021-06-09T16:38:53+02:00 summary: bpo-44345: Fix 'generated by' comment in parser.c (GH-26615) files: M Parser/parser.c M Tools/peg_generator/pegen/c_generator.py diff --git a/Parser/parser.c b/Parser/parser.c index 81218842cbafe7..d49bba1549c5fe 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -1,4 +1,4 @@ -// @generated by pegen.py from ./Grammar/python.gram +// @generated by pegen from ./Grammar/python.gram #include "pegen.h" #if defined(Py_DEBUG) && defined(Py_BUILD_CORE) diff --git a/Tools/peg_generator/pegen/c_generator.py b/Tools/peg_generator/pegen/c_generator.py index c1ab5e0ded1780..7a2edbb0fe55ff 100644 --- a/Tools/peg_generator/pegen/c_generator.py +++ b/Tools/peg_generator/pegen/c_generator.py @@ -405,7 +405,7 @@ def out_of_memory_goto(self, expr: str, goto_target: str) -> None: def generate(self, filename: str) -> None: self.collect_todo() - self.print(f"// @generated by pegen.py from {filename}") + self.print(f"// @generated by pegen from {filename}") header = self.grammar.metas.get("header", EXTENSION_PREFIX) if header: self.print(header.rstrip("\n")) From webhook-mailer at python.org Wed Jun 9 10:55:43 2021 From: webhook-mailer at python.org (markshannon) Date: Wed, 09 Jun 2021 14:55:43 -0000 Subject: [Python-checkins] Delete line that was accidentally copied. (GH-26624) Message-ID: https://github.com/python/cpython/commit/6f84656dc188191225c8d5cdfd2a00de663988d0 commit: 6f84656dc188191225c8d5cdfd2a00de663988d0 branch: main author: Mark Shannon committer: markshannon date: 2021-06-09T15:55:35+01:00 summary: Delete line that was accidentally copied. (GH-26624) files: M Lib/test/libregrtest/refleak.py diff --git a/Lib/test/libregrtest/refleak.py b/Lib/test/libregrtest/refleak.py index 65b660bbc5b79..b94826a5daf92 100644 --- a/Lib/test/libregrtest/refleak.py +++ b/Lib/test/libregrtest/refleak.py @@ -73,7 +73,6 @@ def get_pooled_int(value): alloc_deltas = [0] * repcount fd_deltas = [0] * repcount getallocatedblocks = sys.getallocatedblocks - getallocatedblocks = sys.getallocatedblocks gettotalrefcount = sys.gettotalrefcount _getquickenedcount = sys._getquickenedcount fd_count = os_helper.fd_count From webhook-mailer at python.org Wed Jun 9 12:04:04 2021 From: webhook-mailer at python.org (ethanfurman) Date: Wed, 09 Jun 2021 16:04:04 -0000 Subject: [Python-checkins] bpo-44242: [Enum] remove missing bits test from Flag creation (GH-26586) Message-ID: https://github.com/python/cpython/commit/eea8148b7dff5ffc7b84433859ac819b1d92a74d commit: eea8148b7dff5ffc7b84433859ac819b1d92a74d branch: main author: Ethan Furman committer: ethanfurman date: 2021-06-09T09:03:55-07:00 summary: bpo-44242: [Enum] remove missing bits test from Flag creation (GH-26586) Move the check for missing named flags in flag aliases from Flag creation to a new *verify* decorator. files: A Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst M Doc/library/enum.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index d9b06fb9efda2..e1263f1a0372d 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -28,8 +28,8 @@ An enumeration: * is a set of symbolic names (members) bound to unique values * can be iterated over to return its members in definition order -* uses :meth:`call` syntax to return members by value -* uses :meth:`index` syntax to return members by name +* uses *call* syntax to return members by value +* uses *index* syntax to return members by name Enumerations are created either by using the :keyword:`class` syntax, or by using function-call syntax:: @@ -91,6 +91,12 @@ Module Contents the bitwise operators without losing their :class:`IntFlag` membership. :class:`IntFlag` members are also subclasses of :class:`int`. + :class:`EnumCheck` + + An enumeration with the values ``CONTINUOUS``, ``NAMED_FLAGS``, and + ``UNIQUE``, for use with :func:`verify` to ensure various constraints + are met by a given enumeration. + :class:`FlagBoundary` An enumeration with the values ``STRICT``, ``CONFORM``, ``EJECT``, and @@ -117,9 +123,14 @@ Module Contents Enum class decorator that ensures only one name is bound to any one value. + :func:`verify` + + Enum class decorator that checks user-selectable constraints on an + enumeration. + .. versionadded:: 3.6 ``Flag``, ``IntFlag``, ``auto`` -.. versionadded:: 3.10 ``StrEnum`` +.. versionadded:: 3.10 ``StrEnum``, ``EnumCheck``, ``FlagBoundary`` Data Types @@ -514,6 +525,65 @@ Data Types Using :class:`auto` with :class:`IntFlag` results in integers that are powers of two, starting with ``1``. +.. class:: EnumCheck + + *EnumCheck* contains the options used by the :func:`verify` decorator to ensure + various constraints; failed constraints result in a :exc:`TypeError`. + + .. attribute:: UNIQUE + + Ensure that each value has only one name:: + + >>> from enum import Enum, verify, UNIQUE + >>> @verify(UNIQUE) + ... class Color(Enum): + ... RED = 1 + ... GREEN = 2 + ... BLUE = 3 + ... CRIMSON = 1 + Traceback (most recent call last): + ... + ValueError: aliases found in : CRIMSON -> RED + + + .. attribute:: CONTINUOUS + + Ensure that there are no missing values between the lowest-valued member + and the highest-valued member:: + + >>> from enum import Enum, verify, CONTINUOUS + >>> @verify(CONTINUOUS) + ... class Color(Enum): + ... RED = 1 + ... GREEN = 2 + ... BLUE = 5 + Traceback (most recent call last): + ... + ValueError: invalid enum 'Color': missing values 3, 4 + + .. attribute:: NAMED_FLAGS + + Ensure that any flag groups/masks contain only named flags -- useful when + values are specified instead of being generated by :func:`auto` + + >>> from enum import Flag, verify, NAMED_FLAGS + >>> @verify(NAMED_FLAGS) + ... class Color(Flag): + ... RED = 1 + ... GREEN = 2 + ... BLUE = 4 + ... WHITE = 15 + ... NEON = 31 + Traceback (most recent call last): + ... + ValueError: invalid Flag 'Color': 'WHITE' is missing a named flag for value 8; 'NEON' is missing named flags for values 8, 16 + +.. note:: + + CONTINUOUS and NAMED_FLAGS are designed to work with integer-valued members. + +.. versionadded:: 3.10 + .. class:: FlagBoundary *FlagBoundary* controls how out-of-range values are handled in *Flag* and its @@ -575,7 +645,7 @@ Data Types >>> KeepFlag(2**2 + 2**4) KeepFlag.BLUE|0x10 -.. versionadded:: 3.10 ``FlagBoundary`` +.. versionadded:: 3.10 Utilites and Decorators @@ -632,3 +702,11 @@ Utilites and Decorators Traceback (most recent call last): ... ValueError: duplicate values found in : FOUR -> THREE + +.. decorator:: verify + + A :keyword:`class` decorator specifically for enumerations. Members from + :class:`EnumCheck` are used to specify which constraints should be checked + on the decorated enumeration. + +.. versionadded:: 3.10 diff --git a/Lib/enum.py b/Lib/enum.py index 01f431001a9bf..f74cc8c31c84f 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -6,10 +6,10 @@ __all__ = [ 'EnumType', 'EnumMeta', 'Enum', 'IntEnum', 'StrEnum', 'Flag', 'IntFlag', - 'auto', 'unique', - 'property', + 'auto', 'unique', 'property', 'verify', 'FlagBoundary', 'STRICT', 'CONFORM', 'EJECT', 'KEEP', 'global_flag_repr', 'global_enum_repr', 'global_enum', + 'EnumCheck', 'CONTINUOUS', 'NAMED_FLAGS', 'UNIQUE', ] @@ -89,6 +89,9 @@ def _break_on_call_reduce(self, proto): setattr(obj, '__module__', '') def _iter_bits_lsb(num): + # num must be an integer + if isinstance(num, Enum): + num = num.value while num: b = num & (~num + 1) yield b @@ -538,13 +541,6 @@ def __new__(metacls, cls, bases, classdict, *, boundary=None, _simple=False, **k else: # multi-bit flags are considered aliases multi_bit_total |= flag_value - if enum_class._boundary_ is not KEEP: - missed = list(_iter_bits_lsb(multi_bit_total & ~single_bit_total)) - if missed: - raise TypeError( - 'invalid Flag %r -- missing values: %s' - % (cls, ', '.join((str(i) for i in missed))) - ) enum_class._flag_mask_ = single_bit_total # # set correct __iter__ @@ -688,7 +684,10 @@ def __members__(cls): return MappingProxyType(cls._member_map_) def __repr__(cls): - return "" % cls.__name__ + if Flag is not None and issubclass(cls, Flag): + return "" % cls.__name__ + else: + return "" % cls.__name__ def __reversed__(cls): """ @@ -1303,7 +1302,8 @@ def __invert__(self): else: # calculate flags not in this member self._inverted_ = self.__class__(self._flag_mask_ ^ self._value_) - self._inverted_._inverted_ = self + if isinstance(self._inverted_, self.__class__): + self._inverted_._inverted_ = self return self._inverted_ @@ -1561,6 +1561,91 @@ def convert_class(cls): return enum_class return convert_class + at _simple_enum(StrEnum) +class EnumCheck: + """ + various conditions to check an enumeration for + """ + CONTINUOUS = "no skipped integer values" + NAMED_FLAGS = "multi-flag aliases may not contain unnamed flags" + UNIQUE = "one name per value" +CONTINUOUS, NAMED_FLAGS, UNIQUE = EnumCheck + + +class verify: + """ + Check an enumeration for various constraints. (see EnumCheck) + """ + def __init__(self, *checks): + self.checks = checks + def __call__(self, enumeration): + checks = self.checks + cls_name = enumeration.__name__ + if Flag is not None and issubclass(enumeration, Flag): + enum_type = 'flag' + elif issubclass(enumeration, Enum): + enum_type = 'enum' + else: + raise TypeError("the 'verify' decorator only works with Enum and Flag") + for check in checks: + if check is UNIQUE: + # check for duplicate names + duplicates = [] + for name, member in enumeration.__members__.items(): + if name != member.name: + duplicates.append((name, member.name)) + if duplicates: + alias_details = ', '.join( + ["%s -> %s" % (alias, name) for (alias, name) in duplicates]) + raise ValueError('aliases found in %r: %s' % + (enumeration, alias_details)) + elif check is CONTINUOUS: + values = set(e.value for e in enumeration) + if len(values) < 2: + continue + low, high = min(values), max(values) + missing = [] + if enum_type == 'flag': + # check for powers of two + for i in range(_high_bit(low)+1, _high_bit(high)): + if 2**i not in values: + missing.append(2**i) + elif enum_type == 'enum': + # check for powers of one + for i in range(low+1, high): + if i not in values: + missing.append(i) + else: + raise Exception('verify: unknown type %r' % enum_type) + if missing: + raise ValueError('invalid %s %r: missing values %s' % ( + enum_type, cls_name, ', '.join((str(m) for m in missing))) + ) + elif check is NAMED_FLAGS: + # examine each alias and check for unnamed flags + member_names = enumeration._member_names_ + member_values = [m.value for m in enumeration] + missing = [] + for name, alias in enumeration._member_map_.items(): + if name in member_names: + # not an alias + continue + values = list(_iter_bits_lsb(alias.value)) + missed = [v for v in values if v not in member_values] + if missed: + plural = ('', 's')[len(missed) > 1] + a = ('a ', '')[len(missed) > 1] + missing.append('%r is missing %snamed flag%s for value%s %s' % ( + name, a, plural, plural, + ', '.join(str(v) for v in missed) + )) + if missing: + raise ValueError( + 'invalid Flag %r: %s' + % (cls_name, '; '.join(missing)) + ) + return enumeration + def _test_simple_enum(checked_enum, simple_enum): """ A function that can be used to test an enum created with :func:`_simple_enum` diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index e918b03cc6c52..34b190b0d289f 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -9,6 +9,7 @@ from collections import OrderedDict from enum import Enum, IntEnum, StrEnum, EnumType, Flag, IntFlag, unique, auto from enum import STRICT, CONFORM, EJECT, KEEP, _simple_enum, _test_simple_enum +from enum import verify, UNIQUE, CONTINUOUS, NAMED_FLAGS from io import StringIO from pickle import dumps, loads, PicklingError, HIGHEST_PROTOCOL from test import support @@ -2774,13 +2775,6 @@ class Dupes(Enum): third = auto() self.assertEqual([Dupes.first, Dupes.second, Dupes.third], list(Dupes)) - def test_bizarre(self): - with self.assertRaisesRegex(TypeError, "invalid Flag 'Bizarre' -- missing values: 1, 2"): - class Bizarre(Flag): - b = 3 - c = 4 - d = 6 - def test_multiple_mixin(self): class AllMixin: @classproperty @@ -3345,12 +3339,6 @@ def test_bool(self): for f in Open: self.assertEqual(bool(f.value), bool(f)) - def test_bizarre(self): - with self.assertRaisesRegex(TypeError, "invalid Flag 'Bizarre' -- missing values: 1, 2"): - class Bizarre(IntFlag): - b = 3 - c = 4 - d = 6 def test_multiple_mixin(self): class AllMixin: @@ -3459,6 +3447,7 @@ class Clean(Enum): one = 1 two = 'dos' tres = 4.0 + # @unique class Cleaner(IntEnum): single = 1 @@ -3484,12 +3473,137 @@ class Dirtier(IntEnum): turkey = 3 def test_unique_with_name(self): - @unique + @verify(UNIQUE) class Silly(Enum): one = 1 two = 'dos' name = 3 - @unique + # + @verify(UNIQUE) + class Sillier(IntEnum): + single = 1 + name = 2 + triple = 3 + value = 4 + +class TestVerify(unittest.TestCase): + + def test_continuous(self): + @verify(CONTINUOUS) + class Auto(Enum): + FIRST = auto() + SECOND = auto() + THIRD = auto() + FORTH = auto() + # + @verify(CONTINUOUS) + class Manual(Enum): + FIRST = 3 + SECOND = 4 + THIRD = 5 + FORTH = 6 + # + with self.assertRaisesRegex(ValueError, 'invalid enum .Missing.: missing values 5, 6, 7, 8, 9, 10, 12'): + @verify(CONTINUOUS) + class Missing(Enum): + FIRST = 3 + SECOND = 4 + THIRD = 11 + FORTH = 13 + # + with self.assertRaisesRegex(ValueError, 'invalid flag .Incomplete.: missing values 32'): + @verify(CONTINUOUS) + class Incomplete(Flag): + FIRST = 4 + SECOND = 8 + THIRD = 16 + FORTH = 64 + # + with self.assertRaisesRegex(ValueError, 'invalid flag .StillIncomplete.: missing values 16'): + @verify(CONTINUOUS) + class StillIncomplete(Flag): + FIRST = 4 + SECOND = 8 + THIRD = 11 + FORTH = 32 + + + def test_composite(self): + class Bizarre(Flag): + b = 3 + c = 4 + d = 6 + self.assertEqual(list(Bizarre), [Bizarre.c]) + self.assertEqual(Bizarre.b.value, 3) + self.assertEqual(Bizarre.c.value, 4) + self.assertEqual(Bizarre.d.value, 6) + with self.assertRaisesRegex( + ValueError, + "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2", + ): + @verify(NAMED_FLAGS) + class Bizarre(Flag): + b = 3 + c = 4 + d = 6 + # + class Bizarre(IntFlag): + b = 3 + c = 4 + d = 6 + self.assertEqual(list(Bizarre), [Bizarre.c]) + self.assertEqual(Bizarre.b.value, 3) + self.assertEqual(Bizarre.c.value, 4) + self.assertEqual(Bizarre.d.value, 6) + with self.assertRaisesRegex( + ValueError, + "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2", + ): + @verify(NAMED_FLAGS) + class Bizarre(IntFlag): + b = 3 + c = 4 + d = 6 + + def test_unique_clean(self): + @verify(UNIQUE) + class Clean(Enum): + one = 1 + two = 'dos' + tres = 4.0 + # + @verify(UNIQUE) + class Cleaner(IntEnum): + single = 1 + double = 2 + triple = 3 + + def test_unique_dirty(self): + with self.assertRaisesRegex(ValueError, 'tres.*one'): + @verify(UNIQUE) + class Dirty(Enum): + one = 1 + two = 'dos' + tres = 1 + with self.assertRaisesRegex( + ValueError, + 'double.*single.*turkey.*triple', + ): + @verify(UNIQUE) + class Dirtier(IntEnum): + single = 1 + double = 1 + triple = 3 + turkey = 3 + + def test_unique_with_name(self): + @verify(UNIQUE) + class Silly(Enum): + one = 1 + two = 'dos' + name = 3 + # + @verify(UNIQUE) class Sillier(IntEnum): single = 1 name = 2 diff --git a/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst b/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst new file mode 100644 index 0000000000000..39740b6736591 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst @@ -0,0 +1,2 @@ +Remove missing flag check from Enum creation and move into a ``verify`` +decorator. From webhook-mailer at python.org Wed Jun 9 13:41:04 2021 From: webhook-mailer at python.org (ericsnowcurrently) Date: Wed, 09 Jun 2021 17:41:04 -0000 Subject: [Python-checkins] bpo-43693: Do not check co_cell2arg if a non-cell offset. (gh-26626) Message-ID: https://github.com/python/cpython/commit/e6e34e45222b9c7a63ba92386612acf768082ba0 commit: e6e34e45222b9c7a63ba92386612acf768082ba0 branch: main author: Eric Snow committer: ericsnowcurrently date: 2021-06-09T11:40:49-06:00 summary: bpo-43693: Do not check co_cell2arg if a non-cell offset. (gh-26626) This is the same fix as for PyFrame_LocalsToFast() in gh-26609, but applied to PyFrame_FastToLocalsWithError(). (It should have been in that PR.) https://bugs.python.org/issue43693 files: M Objects/frameobject.c diff --git a/Objects/frameobject.c b/Objects/frameobject.c index a41d21780fd6e..da56b551b8570 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -981,7 +981,9 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) PyObject *value = fast[i]; if (f->f_state != FRAME_CLEARED) { int cellargoffset = CO_CELL_NOT_AN_ARG; - if (co->co_cell2arg != NULL) { + if (kind & CO_FAST_CELL && co->co_cell2arg != NULL) { + assert(i - co->co_nlocals >= 0); + assert(i - co->co_nlocals < co->co_ncellvars); cellargoffset = co->co_cell2arg[i - co->co_nlocals]; } if (kind & CO_FAST_FREE) { @@ -1093,7 +1095,8 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) PyObject *oldvalue = fast[i]; int cellargoffset = CO_CELL_NOT_AN_ARG; if (kind & CO_FAST_CELL && co->co_cell2arg != NULL) { - assert(i >= co->co_nlocals); + assert(i - co->co_nlocals >= 0); + assert(i - co->co_nlocals < co->co_ncellvars); cellargoffset = co->co_cell2arg[i - co->co_nlocals]; } PyObject *cell = NULL; From webhook-mailer at python.org Wed Jun 9 16:18:21 2021 From: webhook-mailer at python.org (terryjreedy) Date: Wed, 09 Jun 2021 20:18:21 -0000 Subject: [Python-checkins] bpo-40468: Split IDLE settings General tab (GH-26621) Message-ID: https://github.com/python/cpython/commit/275d5f7957dbb56a6d5e1248addff210ee2e7270 commit: 275d5f7957dbb56a6d5e1248addff210ee2e7270 branch: main author: Terry Jan Reedy committer: terryjreedy date: 2021-06-09T16:17:58-04:00 summary: bpo-40468: Split IDLE settings General tab (GH-26621) Replace it with Windows tab for Shell and Editor options and Shell/Ed for options exclusive to one of them. Create room for more options and make dialog shorter, to better fit small windows. files: M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py M Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 9c0153b1a7361..e3fa34f2090e4 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -116,11 +116,14 @@ def create_widgets(self): self.highpage = HighPage(note, self.extpage) self.fontpage = FontPage(note, self.highpage) self.keyspage = KeysPage(note, self.extpage) - self.genpage = GenPage(note) + self.winpage = WinPage(note) + self.shedpage = ShedPage(note) + note.add(self.fontpage, text='Fonts/Tabs') note.add(self.highpage, text='Highlights') note.add(self.keyspage, text=' Keys ') - note.add(self.genpage, text=' General ') + note.add(self.winpage, text=' Windows ') + note.add(self.shedpage, text=' Shell/Ed ') note.add(self.extpage, text='Extensions') note.enable_traversal() note.pack(side=TOP, expand=TRUE, fill=BOTH) @@ -1594,14 +1597,14 @@ def delete_custom_keys(self): self.set_keys_type() -class GenPage(Frame): +class WinPage(Frame): def __init__(self, master): super().__init__(master) self.init_validators() - self.create_page_general() - self.load_general_cfg() + self.create_page_windows() + self.load_windows_cfg() def init_validators(self): digits_or_empty_re = re.compile(r'[0-9]*') @@ -1610,26 +1613,17 @@ def is_digits_or_empty(s): return digits_or_empty_re.fullmatch(s) is not None self.digits_only = (self.register(is_digits_or_empty), '%P',) - def create_page_general(self): - """Return frame of widgets for General tab. - - Enable users to provisionally change general options. Function - load_general_cfg initializes tk variables and helplist using - idleConf. Radiobuttons startup_shell_on and startup_editor_on - set var startup_edit. Radiobuttons save_ask_on and save_auto_on - set var autosave. Entry boxes win_width_int and win_height_int - set var win_width and win_height. Setting var_name invokes the - default callback that adds option to changes. + def create_page_windows(self): + """Return frame of widgets for Windows tab. - Helplist: load_general_cfg loads list user_helplist with - name, position pairs and copies names to listbox helplist. - Clicking a name invokes help_source selected. Clicking - button_helplist_name invokes helplist_item_name, which also - changes user_helplist. These functions all call - set_add_delete_state. All but load call update_help_changes to - rewrite changes['main']['HelpFiles']. + Enable users to provisionally change general window options. + Function load_windows_cfg initializes tk variables idleConf. + Radiobuttons startup_shell_on and startup_editor_on set var + startup_edit. Entry boxes win_width_int and win_height_int set var + win_width and win_height. Setting var_name invokes the default + callback that adds option to changes. - Widgets for GenPage(Frame): (*) widgets bound to self + Widgets for WinPage(Frame): (*) widgets bound to self frame_window: LabelFrame frame_run: Frame startup_title: Label @@ -1654,24 +1648,9 @@ def create_page_general(self): paren_time_title: Label (*)paren_flash_time: Entry - flash_delay (*)bell_on: Checkbutton - paren_bell - frame_editor: LabelFrame - frame_save: Frame - run_save_title: Label - (*)save_ask_on: Radiobutton - autosave - (*)save_auto_on: Radiobutton - autosave frame_format: Frame format_width_title: Label (*)format_width_int: Entry - format_width - frame_line_numbers_default: Frame - line_numbers_default_title: Label - (*)line_numbers_default_bool: Checkbutton - line_numbers_default - frame_context: Frame - context_title: Label - (*)context_int: Entry - context_lines - frame_shell: LabelFrame - frame_auto_squeeze_min_lines: Frame - auto_squeeze_min_lines_title: Label - (*)auto_squeeze_min_lines_int: Entry - auto_squeeze_min_lines """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1690,29 +1669,13 @@ def create_page_general(self): StringVar(self), ('extensions', 'ParenMatch', 'flash-delay')) self.paren_bell = tracers.add( BooleanVar(self), ('extensions', 'ParenMatch', 'bell')) - - self.auto_squeeze_min_lines = tracers.add( - StringVar(self), ('main', 'PyShell', 'auto-squeeze-min-lines')) - - self.autosave = tracers.add( - IntVar(self), ('main', 'General', 'autosave')) self.format_width = tracers.add( StringVar(self), ('extensions', 'FormatParagraph', 'max-width')) - self.line_numbers_default = tracers.add( - BooleanVar(self), - ('main', 'EditorWindow', 'line-numbers-default')) - self.context_lines = tracers.add( - StringVar(self), ('extensions', 'CodeContext', 'maxlines')) # Create widgets: - # Section frames. frame_window = LabelFrame(self, borderwidth=2, relief=GROOVE, text=' Window Preferences') - frame_editor = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Editor Preferences') - frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Shell Preferences') - # Frame_window. + frame_run = Frame(frame_window, borderwidth=0) startup_title = Label(frame_run, text='At Startup') self.startup_editor_on = Radiobutton( @@ -1747,8 +1710,7 @@ def create_page_general(self): self.auto_wait_int = Entry(frame_autocomplete, width=6, textvariable=self.autocomplete_wait, validatecommand=self.digits_only, - validate='key', - ) + validate='key') frame_paren1 = Frame(frame_window, borderwidth=0) paren_style_title = Label(frame_paren1, text='Paren Match Style') @@ -1763,55 +1725,16 @@ def create_page_general(self): frame_paren2, textvariable=self.flash_delay, width=6) self.bell_on = Checkbutton( frame_paren2, text="Bell on Mismatch", variable=self.paren_bell) - - # Frame_editor. - frame_save = Frame(frame_editor, borderwidth=0) - run_save_title = Label(frame_save, text='At Start of Run (F5) ') - self.save_ask_on = Radiobutton( - frame_save, variable=self.autosave, value=0, - text="Prompt to Save") - self.save_auto_on = Radiobutton( - frame_save, variable=self.autosave, value=1, - text='No Prompt') - - frame_format = Frame(frame_editor, borderwidth=0) + frame_format = Frame(frame_window, borderwidth=0) format_width_title = Label(frame_format, text='Format Paragraph Max Width') self.format_width_int = Entry( frame_format, textvariable=self.format_width, width=4, validatecommand=self.digits_only, validate='key', - ) - - frame_line_numbers_default = Frame(frame_editor, borderwidth=0) - line_numbers_default_title = Label( - frame_line_numbers_default, text='Show line numbers in new windows') - self.line_numbers_default_bool = Checkbutton( - frame_line_numbers_default, - variable=self.line_numbers_default, - width=1) - - frame_context = Frame(frame_editor, borderwidth=0) - context_title = Label(frame_context, text='Max Context Lines :') - self.context_int = Entry( - frame_context, textvariable=self.context_lines, width=3, - validatecommand=self.digits_only, validate='key', - ) - - # Frame_shell. - frame_auto_squeeze_min_lines = Frame(frame_shell, borderwidth=0) - auto_squeeze_min_lines_title = Label(frame_auto_squeeze_min_lines, - text='Auto-Squeeze Min. Lines:') - self.auto_squeeze_min_lines_int = Entry( - frame_auto_squeeze_min_lines, width=4, - textvariable=self.auto_squeeze_min_lines, - validatecommand=self.digits_only, validate='key', - ) + ) # Pack widgets: - # Body. frame_window.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_editor.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_shell.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) # frame_run. frame_run.pack(side=TOP, padx=5, pady=0, fill=X) startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -1840,34 +1763,10 @@ def create_page_general(self): paren_time_title.pack(side=LEFT, anchor=W, padx=5) self.bell_on.pack(side=RIGHT, anchor=E, padx=15, pady=5) self.paren_flash_time.pack(side=TOP, anchor=W, padx=15, pady=5) - - # frame_save. - frame_save.pack(side=TOP, padx=5, pady=0, fill=X) - run_save_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.save_auto_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) - self.save_ask_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) # frame_format. frame_format.pack(side=TOP, padx=5, pady=0, fill=X) format_width_title.pack(side=LEFT, anchor=W, padx=5, pady=5) self.format_width_int.pack(side=TOP, padx=10, pady=5) - # frame_line_numbers_default. - frame_line_numbers_default.pack(side=TOP, padx=5, pady=0, fill=X) - line_numbers_default_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.line_numbers_default_bool.pack(side=LEFT, padx=5, pady=5) - # frame_context. - frame_context.pack(side=TOP, padx=5, pady=0, fill=X) - context_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.context_int.pack(side=TOP, padx=5, pady=5) - - # frame_auto_squeeze_min_lines - frame_auto_squeeze_min_lines.pack(side=TOP, padx=5, pady=0, fill=X) - auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) - - def load_general_cfg(self): - "Load current configuration settings for the general options." - self.load_windows_cfg() - self.load_shelled_cfg() def load_windows_cfg(self): # Set variables for all windows. @@ -1887,22 +1786,142 @@ def load_windows_cfg(self): 'extensions', 'ParenMatch', 'flash-delay', type='int')) self.paren_bell.set(idleConf.GetOption( 'extensions', 'ParenMatch', 'bell')) + self.format_width.set(idleConf.GetOption( + 'extensions', 'FormatParagraph', 'max-width', type='int')) + + +class ShedPage(Frame): + + def __init__(self, master): + super().__init__(master) + + self.init_validators() + self.create_page_shed() + self.load_shelled_cfg() + + def init_validators(self): + digits_or_empty_re = re.compile(r'[0-9]*') + def is_digits_or_empty(s): + "Return 's is blank or contains only digits'" + return digits_or_empty_re.fullmatch(s) is not None + self.digits_only = (self.register(is_digits_or_empty), '%P',) + + def create_page_shed(self): + """Return frame of widgets for Shell/Ed tab. + + Enable users to provisionally change shell and editor options. + Function load_shed_cfg initializes tk variables using idleConf. + Entry box auto_squeeze_min_lines_int sets + auto_squeeze_min_lines_int. Setting var_name invokes the + default callback that adds option to changes. + + Widgets for ShedPage(Frame): (*) widgets bound to self + frame_shell: LabelFrame + frame_auto_squeeze_min_lines: Frame + auto_squeeze_min_lines_title: Label + (*)auto_squeeze_min_lines_int: Entry - + auto_squeeze_min_lines + frame_editor: LabelFrame + frame_save: Frame + run_save_title: Label + (*)save_ask_on: Radiobutton - autosave + (*)save_auto_on: Radiobutton - autosave + frame_format: Frame + format_width_title: Label + (*)format_width_int: Entry - format_width + frame_line_numbers_default: Frame + line_numbers_default_title: Label + (*)line_numbers_default_bool: Checkbutton - line_numbers_default + frame_context: Frame + context_title: Label + (*)context_int: Entry - context_lines + """ + # Integer values need StringVar because int('') raises. + self.auto_squeeze_min_lines = tracers.add( + StringVar(self), ('main', 'PyShell', 'auto-squeeze-min-lines')) + + self.autosave = tracers.add( + IntVar(self), ('main', 'General', 'autosave')) + self.line_numbers_default = tracers.add( + BooleanVar(self), + ('main', 'EditorWindow', 'line-numbers-default')) + self.context_lines = tracers.add( + StringVar(self), ('extensions', 'CodeContext', 'maxlines')) + + # Create widgets: + frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Shell Preferences') + frame_editor = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Editor Preferences') + # Frame_shell. + frame_auto_squeeze_min_lines = Frame(frame_shell, borderwidth=0) + auto_squeeze_min_lines_title = Label(frame_auto_squeeze_min_lines, + text='Auto-Squeeze Min. Lines:') + self.auto_squeeze_min_lines_int = Entry( + frame_auto_squeeze_min_lines, width=4, + textvariable=self.auto_squeeze_min_lines, + validatecommand=self.digits_only, validate='key', + ) + # Frame_editor. + frame_save = Frame(frame_editor, borderwidth=0) + run_save_title = Label(frame_save, text='At Start of Run (F5) ') + + self.save_ask_on = Radiobutton( + frame_save, variable=self.autosave, value=0, + text="Prompt to Save") + self.save_auto_on = Radiobutton( + frame_save, variable=self.autosave, value=1, + text='No Prompt') + + frame_line_numbers_default = Frame(frame_editor, borderwidth=0) + line_numbers_default_title = Label( + frame_line_numbers_default, text='Show line numbers in new windows') + self.line_numbers_default_bool = Checkbutton( + frame_line_numbers_default, + variable=self.line_numbers_default, + width=1) + + frame_context = Frame(frame_editor, borderwidth=0) + context_title = Label(frame_context, text='Max Context Lines :') + self.context_int = Entry( + frame_context, textvariable=self.context_lines, width=3, + validatecommand=self.digits_only, validate='key', + ) + + # Pack widgets: + frame_shell.pack(side=TOP, padx=5, pady=5, fill=BOTH) + Label(self).pack() # Spacer -- better solution? + frame_editor.pack(side=TOP, padx=5, pady=5, fill=BOTH) + # frame_auto_squeeze_min_lines + frame_auto_squeeze_min_lines.pack(side=TOP, padx=5, pady=0, fill=X) + auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) + # frame_save. + frame_save.pack(side=TOP, padx=5, pady=0, fill=X) + run_save_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.save_auto_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) + self.save_ask_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) + # frame_line_numbers_default. + frame_line_numbers_default.pack(side=TOP, padx=5, pady=0, fill=X) + line_numbers_default_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.line_numbers_default_bool.pack(side=LEFT, padx=5, pady=5) + # frame_context. + frame_context.pack(side=TOP, padx=5, pady=0, fill=X) + context_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.context_int.pack(side=TOP, padx=5, pady=5) def load_shelled_cfg(self): + # Set variables for shell windows. + self.auto_squeeze_min_lines.set(idleConf.GetOption( + 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) # Set variables for editor windows. self.autosave.set(idleConf.GetOption( 'main', 'General', 'autosave', default=0, type='bool')) - self.format_width.set(idleConf.GetOption( - 'extensions', 'FormatParagraph', 'max-width', type='int')) self.line_numbers_default.set(idleConf.GetOption( 'main', 'EditorWindow', 'line-numbers-default', type='bool')) self.context_lines.set(idleConf.GetOption( 'extensions', 'CodeContext', 'maxlines', type='int')) - # Set variables for shell windows. - self.auto_squeeze_min_lines.set(idleConf.GetOption( - 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) - class ExtPage(Frame): def __init__(self, master): diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index e01aa634473dc..f71d1b1bc09a0 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1203,7 +1203,7 @@ def test_delete_custom_keys(self): del d.askyesno -class GenPageTest(unittest.TestCase): +class WinPageTest(unittest.TestCase): """Test that general tab widgets enable users to make changes. Test that widget actions set vars, that var changes add @@ -1211,24 +1211,22 @@ class GenPageTest(unittest.TestCase): """ @classmethod def setUpClass(cls): - page = cls.page = dialog.genpage + page = cls.page = dialog.winpage dialog.note.select(page) page.update() def setUp(self): changes.clear() - def test_load_general_cfg(self): + def test_load_windows_cfg(self): # Set to wrong values, load, check right values. eq = self.assertEqual d = self.page d.startup_edit.set(1) - d.autosave.set(1) d.win_width.set(1) d.win_height.set(1) - d.load_general_cfg() + d.load_windows_cfg() eq(d.startup_edit.get(), 0) - eq(d.autosave.get(), 0) eq(d.win_width.get(), '80') eq(d.win_height.get(), '40') @@ -1274,6 +1272,35 @@ def test_parenmatch(self): d.bell_on.invoke() eq(extpage, {'ParenMatch': {'bell': 'False'}}) + def test_paragraph(self): + self.page.format_width_int.delete(0, 'end') + self.page.format_width_int.insert(0, '11') + self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) + + +class GenPageTest(unittest.TestCase): + """Test that shed tab widgets enable users to make changes. + + Test that widget actions set vars, that var changes add + options to changes. + """ + @classmethod + def setUpClass(cls): + page = cls.page = dialog.shedpage + dialog.note.select(page) + page.update() + + def setUp(self): + changes.clear() + + def test_load_shelled_cfg(self): + # Set to wrong values, load, check right values. + eq = self.assertEqual + d = self.page + d.autosave.set(1) + d.load_shelled_cfg() + eq(d.autosave.get(), 0) + def test_autosave(self): d = self.page d.save_auto_on.invoke() @@ -1281,11 +1308,6 @@ def test_autosave(self): d.save_ask_on.invoke() self.assertEqual(mainpage, {'General': {'autosave': '0'}}) - def test_paragraph(self): - self.page.format_width_int.delete(0, 'end') - self.page.format_width_int.insert(0, '11') - self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) - def test_context(self): self.page.context_int.delete(0, 'end') self.page.context_int.insert(0, '1') diff --git a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst index 79cb1cca099ad..526036ccf841e 100644 --- a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst +++ b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst @@ -1,2 +1,4 @@ -Shorten settings dialog by moving help sources to extensions tab. This will -improve issues with dialog being too tall for some screens. +Split the settings dialog General tab into Windows and Shell/ED tabs. +Move help sources, which extend the Help menu, to the Extensions tab. +Make space for new options and shorten the dialog. +The latter makes the dialog better fit small screens. From webhook-mailer at python.org Wed Jun 9 16:38:05 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 09 Jun 2021 20:38:05 -0000 Subject: [Python-checkins] bpo-40468: Split IDLE settings General tab (GH-26621) Message-ID: https://github.com/python/cpython/commit/664ae29e6f61988e74cb8753dd4ee71e9ea57227 commit: 664ae29e6f61988e74cb8753dd4ee71e9ea57227 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-09T13:37:56-07:00 summary: bpo-40468: Split IDLE settings General tab (GH-26621) Replace it with Windows tab for Shell and Editor options and Shell/Ed for options exclusive to one of them. Create room for more options and make dialog shorter, to better fit small windows. (cherry picked from commit 275d5f7957dbb56a6d5e1248addff210ee2e7270) Co-authored-by: Terry Jan Reedy files: M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py M Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 9c0153b1a7361..e3fa34f2090e4 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -116,11 +116,14 @@ def create_widgets(self): self.highpage = HighPage(note, self.extpage) self.fontpage = FontPage(note, self.highpage) self.keyspage = KeysPage(note, self.extpage) - self.genpage = GenPage(note) + self.winpage = WinPage(note) + self.shedpage = ShedPage(note) + note.add(self.fontpage, text='Fonts/Tabs') note.add(self.highpage, text='Highlights') note.add(self.keyspage, text=' Keys ') - note.add(self.genpage, text=' General ') + note.add(self.winpage, text=' Windows ') + note.add(self.shedpage, text=' Shell/Ed ') note.add(self.extpage, text='Extensions') note.enable_traversal() note.pack(side=TOP, expand=TRUE, fill=BOTH) @@ -1594,14 +1597,14 @@ def delete_custom_keys(self): self.set_keys_type() -class GenPage(Frame): +class WinPage(Frame): def __init__(self, master): super().__init__(master) self.init_validators() - self.create_page_general() - self.load_general_cfg() + self.create_page_windows() + self.load_windows_cfg() def init_validators(self): digits_or_empty_re = re.compile(r'[0-9]*') @@ -1610,26 +1613,17 @@ def is_digits_or_empty(s): return digits_or_empty_re.fullmatch(s) is not None self.digits_only = (self.register(is_digits_or_empty), '%P',) - def create_page_general(self): - """Return frame of widgets for General tab. - - Enable users to provisionally change general options. Function - load_general_cfg initializes tk variables and helplist using - idleConf. Radiobuttons startup_shell_on and startup_editor_on - set var startup_edit. Radiobuttons save_ask_on and save_auto_on - set var autosave. Entry boxes win_width_int and win_height_int - set var win_width and win_height. Setting var_name invokes the - default callback that adds option to changes. + def create_page_windows(self): + """Return frame of widgets for Windows tab. - Helplist: load_general_cfg loads list user_helplist with - name, position pairs and copies names to listbox helplist. - Clicking a name invokes help_source selected. Clicking - button_helplist_name invokes helplist_item_name, which also - changes user_helplist. These functions all call - set_add_delete_state. All but load call update_help_changes to - rewrite changes['main']['HelpFiles']. + Enable users to provisionally change general window options. + Function load_windows_cfg initializes tk variables idleConf. + Radiobuttons startup_shell_on and startup_editor_on set var + startup_edit. Entry boxes win_width_int and win_height_int set var + win_width and win_height. Setting var_name invokes the default + callback that adds option to changes. - Widgets for GenPage(Frame): (*) widgets bound to self + Widgets for WinPage(Frame): (*) widgets bound to self frame_window: LabelFrame frame_run: Frame startup_title: Label @@ -1654,24 +1648,9 @@ def create_page_general(self): paren_time_title: Label (*)paren_flash_time: Entry - flash_delay (*)bell_on: Checkbutton - paren_bell - frame_editor: LabelFrame - frame_save: Frame - run_save_title: Label - (*)save_ask_on: Radiobutton - autosave - (*)save_auto_on: Radiobutton - autosave frame_format: Frame format_width_title: Label (*)format_width_int: Entry - format_width - frame_line_numbers_default: Frame - line_numbers_default_title: Label - (*)line_numbers_default_bool: Checkbutton - line_numbers_default - frame_context: Frame - context_title: Label - (*)context_int: Entry - context_lines - frame_shell: LabelFrame - frame_auto_squeeze_min_lines: Frame - auto_squeeze_min_lines_title: Label - (*)auto_squeeze_min_lines_int: Entry - auto_squeeze_min_lines """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1690,29 +1669,13 @@ def create_page_general(self): StringVar(self), ('extensions', 'ParenMatch', 'flash-delay')) self.paren_bell = tracers.add( BooleanVar(self), ('extensions', 'ParenMatch', 'bell')) - - self.auto_squeeze_min_lines = tracers.add( - StringVar(self), ('main', 'PyShell', 'auto-squeeze-min-lines')) - - self.autosave = tracers.add( - IntVar(self), ('main', 'General', 'autosave')) self.format_width = tracers.add( StringVar(self), ('extensions', 'FormatParagraph', 'max-width')) - self.line_numbers_default = tracers.add( - BooleanVar(self), - ('main', 'EditorWindow', 'line-numbers-default')) - self.context_lines = tracers.add( - StringVar(self), ('extensions', 'CodeContext', 'maxlines')) # Create widgets: - # Section frames. frame_window = LabelFrame(self, borderwidth=2, relief=GROOVE, text=' Window Preferences') - frame_editor = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Editor Preferences') - frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Shell Preferences') - # Frame_window. + frame_run = Frame(frame_window, borderwidth=0) startup_title = Label(frame_run, text='At Startup') self.startup_editor_on = Radiobutton( @@ -1747,8 +1710,7 @@ def create_page_general(self): self.auto_wait_int = Entry(frame_autocomplete, width=6, textvariable=self.autocomplete_wait, validatecommand=self.digits_only, - validate='key', - ) + validate='key') frame_paren1 = Frame(frame_window, borderwidth=0) paren_style_title = Label(frame_paren1, text='Paren Match Style') @@ -1763,55 +1725,16 @@ def create_page_general(self): frame_paren2, textvariable=self.flash_delay, width=6) self.bell_on = Checkbutton( frame_paren2, text="Bell on Mismatch", variable=self.paren_bell) - - # Frame_editor. - frame_save = Frame(frame_editor, borderwidth=0) - run_save_title = Label(frame_save, text='At Start of Run (F5) ') - self.save_ask_on = Radiobutton( - frame_save, variable=self.autosave, value=0, - text="Prompt to Save") - self.save_auto_on = Radiobutton( - frame_save, variable=self.autosave, value=1, - text='No Prompt') - - frame_format = Frame(frame_editor, borderwidth=0) + frame_format = Frame(frame_window, borderwidth=0) format_width_title = Label(frame_format, text='Format Paragraph Max Width') self.format_width_int = Entry( frame_format, textvariable=self.format_width, width=4, validatecommand=self.digits_only, validate='key', - ) - - frame_line_numbers_default = Frame(frame_editor, borderwidth=0) - line_numbers_default_title = Label( - frame_line_numbers_default, text='Show line numbers in new windows') - self.line_numbers_default_bool = Checkbutton( - frame_line_numbers_default, - variable=self.line_numbers_default, - width=1) - - frame_context = Frame(frame_editor, borderwidth=0) - context_title = Label(frame_context, text='Max Context Lines :') - self.context_int = Entry( - frame_context, textvariable=self.context_lines, width=3, - validatecommand=self.digits_only, validate='key', - ) - - # Frame_shell. - frame_auto_squeeze_min_lines = Frame(frame_shell, borderwidth=0) - auto_squeeze_min_lines_title = Label(frame_auto_squeeze_min_lines, - text='Auto-Squeeze Min. Lines:') - self.auto_squeeze_min_lines_int = Entry( - frame_auto_squeeze_min_lines, width=4, - textvariable=self.auto_squeeze_min_lines, - validatecommand=self.digits_only, validate='key', - ) + ) # Pack widgets: - # Body. frame_window.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_editor.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_shell.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) # frame_run. frame_run.pack(side=TOP, padx=5, pady=0, fill=X) startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -1840,34 +1763,10 @@ def create_page_general(self): paren_time_title.pack(side=LEFT, anchor=W, padx=5) self.bell_on.pack(side=RIGHT, anchor=E, padx=15, pady=5) self.paren_flash_time.pack(side=TOP, anchor=W, padx=15, pady=5) - - # frame_save. - frame_save.pack(side=TOP, padx=5, pady=0, fill=X) - run_save_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.save_auto_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) - self.save_ask_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) # frame_format. frame_format.pack(side=TOP, padx=5, pady=0, fill=X) format_width_title.pack(side=LEFT, anchor=W, padx=5, pady=5) self.format_width_int.pack(side=TOP, padx=10, pady=5) - # frame_line_numbers_default. - frame_line_numbers_default.pack(side=TOP, padx=5, pady=0, fill=X) - line_numbers_default_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.line_numbers_default_bool.pack(side=LEFT, padx=5, pady=5) - # frame_context. - frame_context.pack(side=TOP, padx=5, pady=0, fill=X) - context_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.context_int.pack(side=TOP, padx=5, pady=5) - - # frame_auto_squeeze_min_lines - frame_auto_squeeze_min_lines.pack(side=TOP, padx=5, pady=0, fill=X) - auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) - - def load_general_cfg(self): - "Load current configuration settings for the general options." - self.load_windows_cfg() - self.load_shelled_cfg() def load_windows_cfg(self): # Set variables for all windows. @@ -1887,22 +1786,142 @@ def load_windows_cfg(self): 'extensions', 'ParenMatch', 'flash-delay', type='int')) self.paren_bell.set(idleConf.GetOption( 'extensions', 'ParenMatch', 'bell')) + self.format_width.set(idleConf.GetOption( + 'extensions', 'FormatParagraph', 'max-width', type='int')) + + +class ShedPage(Frame): + + def __init__(self, master): + super().__init__(master) + + self.init_validators() + self.create_page_shed() + self.load_shelled_cfg() + + def init_validators(self): + digits_or_empty_re = re.compile(r'[0-9]*') + def is_digits_or_empty(s): + "Return 's is blank or contains only digits'" + return digits_or_empty_re.fullmatch(s) is not None + self.digits_only = (self.register(is_digits_or_empty), '%P',) + + def create_page_shed(self): + """Return frame of widgets for Shell/Ed tab. + + Enable users to provisionally change shell and editor options. + Function load_shed_cfg initializes tk variables using idleConf. + Entry box auto_squeeze_min_lines_int sets + auto_squeeze_min_lines_int. Setting var_name invokes the + default callback that adds option to changes. + + Widgets for ShedPage(Frame): (*) widgets bound to self + frame_shell: LabelFrame + frame_auto_squeeze_min_lines: Frame + auto_squeeze_min_lines_title: Label + (*)auto_squeeze_min_lines_int: Entry - + auto_squeeze_min_lines + frame_editor: LabelFrame + frame_save: Frame + run_save_title: Label + (*)save_ask_on: Radiobutton - autosave + (*)save_auto_on: Radiobutton - autosave + frame_format: Frame + format_width_title: Label + (*)format_width_int: Entry - format_width + frame_line_numbers_default: Frame + line_numbers_default_title: Label + (*)line_numbers_default_bool: Checkbutton - line_numbers_default + frame_context: Frame + context_title: Label + (*)context_int: Entry - context_lines + """ + # Integer values need StringVar because int('') raises. + self.auto_squeeze_min_lines = tracers.add( + StringVar(self), ('main', 'PyShell', 'auto-squeeze-min-lines')) + + self.autosave = tracers.add( + IntVar(self), ('main', 'General', 'autosave')) + self.line_numbers_default = tracers.add( + BooleanVar(self), + ('main', 'EditorWindow', 'line-numbers-default')) + self.context_lines = tracers.add( + StringVar(self), ('extensions', 'CodeContext', 'maxlines')) + + # Create widgets: + frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Shell Preferences') + frame_editor = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Editor Preferences') + # Frame_shell. + frame_auto_squeeze_min_lines = Frame(frame_shell, borderwidth=0) + auto_squeeze_min_lines_title = Label(frame_auto_squeeze_min_lines, + text='Auto-Squeeze Min. Lines:') + self.auto_squeeze_min_lines_int = Entry( + frame_auto_squeeze_min_lines, width=4, + textvariable=self.auto_squeeze_min_lines, + validatecommand=self.digits_only, validate='key', + ) + # Frame_editor. + frame_save = Frame(frame_editor, borderwidth=0) + run_save_title = Label(frame_save, text='At Start of Run (F5) ') + + self.save_ask_on = Radiobutton( + frame_save, variable=self.autosave, value=0, + text="Prompt to Save") + self.save_auto_on = Radiobutton( + frame_save, variable=self.autosave, value=1, + text='No Prompt') + + frame_line_numbers_default = Frame(frame_editor, borderwidth=0) + line_numbers_default_title = Label( + frame_line_numbers_default, text='Show line numbers in new windows') + self.line_numbers_default_bool = Checkbutton( + frame_line_numbers_default, + variable=self.line_numbers_default, + width=1) + + frame_context = Frame(frame_editor, borderwidth=0) + context_title = Label(frame_context, text='Max Context Lines :') + self.context_int = Entry( + frame_context, textvariable=self.context_lines, width=3, + validatecommand=self.digits_only, validate='key', + ) + + # Pack widgets: + frame_shell.pack(side=TOP, padx=5, pady=5, fill=BOTH) + Label(self).pack() # Spacer -- better solution? + frame_editor.pack(side=TOP, padx=5, pady=5, fill=BOTH) + # frame_auto_squeeze_min_lines + frame_auto_squeeze_min_lines.pack(side=TOP, padx=5, pady=0, fill=X) + auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) + # frame_save. + frame_save.pack(side=TOP, padx=5, pady=0, fill=X) + run_save_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.save_auto_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) + self.save_ask_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) + # frame_line_numbers_default. + frame_line_numbers_default.pack(side=TOP, padx=5, pady=0, fill=X) + line_numbers_default_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.line_numbers_default_bool.pack(side=LEFT, padx=5, pady=5) + # frame_context. + frame_context.pack(side=TOP, padx=5, pady=0, fill=X) + context_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.context_int.pack(side=TOP, padx=5, pady=5) def load_shelled_cfg(self): + # Set variables for shell windows. + self.auto_squeeze_min_lines.set(idleConf.GetOption( + 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) # Set variables for editor windows. self.autosave.set(idleConf.GetOption( 'main', 'General', 'autosave', default=0, type='bool')) - self.format_width.set(idleConf.GetOption( - 'extensions', 'FormatParagraph', 'max-width', type='int')) self.line_numbers_default.set(idleConf.GetOption( 'main', 'EditorWindow', 'line-numbers-default', type='bool')) self.context_lines.set(idleConf.GetOption( 'extensions', 'CodeContext', 'maxlines', type='int')) - # Set variables for shell windows. - self.auto_squeeze_min_lines.set(idleConf.GetOption( - 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) - class ExtPage(Frame): def __init__(self, master): diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index e01aa634473dc..f71d1b1bc09a0 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1203,7 +1203,7 @@ def test_delete_custom_keys(self): del d.askyesno -class GenPageTest(unittest.TestCase): +class WinPageTest(unittest.TestCase): """Test that general tab widgets enable users to make changes. Test that widget actions set vars, that var changes add @@ -1211,24 +1211,22 @@ class GenPageTest(unittest.TestCase): """ @classmethod def setUpClass(cls): - page = cls.page = dialog.genpage + page = cls.page = dialog.winpage dialog.note.select(page) page.update() def setUp(self): changes.clear() - def test_load_general_cfg(self): + def test_load_windows_cfg(self): # Set to wrong values, load, check right values. eq = self.assertEqual d = self.page d.startup_edit.set(1) - d.autosave.set(1) d.win_width.set(1) d.win_height.set(1) - d.load_general_cfg() + d.load_windows_cfg() eq(d.startup_edit.get(), 0) - eq(d.autosave.get(), 0) eq(d.win_width.get(), '80') eq(d.win_height.get(), '40') @@ -1274,6 +1272,35 @@ def test_parenmatch(self): d.bell_on.invoke() eq(extpage, {'ParenMatch': {'bell': 'False'}}) + def test_paragraph(self): + self.page.format_width_int.delete(0, 'end') + self.page.format_width_int.insert(0, '11') + self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) + + +class GenPageTest(unittest.TestCase): + """Test that shed tab widgets enable users to make changes. + + Test that widget actions set vars, that var changes add + options to changes. + """ + @classmethod + def setUpClass(cls): + page = cls.page = dialog.shedpage + dialog.note.select(page) + page.update() + + def setUp(self): + changes.clear() + + def test_load_shelled_cfg(self): + # Set to wrong values, load, check right values. + eq = self.assertEqual + d = self.page + d.autosave.set(1) + d.load_shelled_cfg() + eq(d.autosave.get(), 0) + def test_autosave(self): d = self.page d.save_auto_on.invoke() @@ -1281,11 +1308,6 @@ def test_autosave(self): d.save_ask_on.invoke() self.assertEqual(mainpage, {'General': {'autosave': '0'}}) - def test_paragraph(self): - self.page.format_width_int.delete(0, 'end') - self.page.format_width_int.insert(0, '11') - self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) - def test_context(self): self.page.context_int.delete(0, 'end') self.page.context_int.insert(0, '1') diff --git a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst index 79cb1cca099ad..526036ccf841e 100644 --- a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst +++ b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst @@ -1,2 +1,4 @@ -Shorten settings dialog by moving help sources to extensions tab. This will -improve issues with dialog being too tall for some screens. +Split the settings dialog General tab into Windows and Shell/ED tabs. +Move help sources, which extend the Help menu, to the Extensions tab. +Make space for new options and shorten the dialog. +The latter makes the dialog better fit small screens. From webhook-mailer at python.org Wed Jun 9 16:41:35 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 09 Jun 2021 20:41:35 -0000 Subject: [Python-checkins] bpo-40468: Split IDLE settings General tab (GH-26621) Message-ID: https://github.com/python/cpython/commit/d9f38d77c870cdb04273914c92fa4fe92b830d88 commit: d9f38d77c870cdb04273914c92fa4fe92b830d88 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-09T13:41:24-07:00 summary: bpo-40468: Split IDLE settings General tab (GH-26621) Replace it with Windows tab for Shell and Editor options and Shell/Ed for options exclusive to one of them. Create room for more options and make dialog shorter, to better fit small windows. (cherry picked from commit 275d5f7957dbb56a6d5e1248addff210ee2e7270) Co-authored-by: Terry Jan Reedy files: M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py M Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 9c0153b1a7361..e3fa34f2090e4 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -116,11 +116,14 @@ def create_widgets(self): self.highpage = HighPage(note, self.extpage) self.fontpage = FontPage(note, self.highpage) self.keyspage = KeysPage(note, self.extpage) - self.genpage = GenPage(note) + self.winpage = WinPage(note) + self.shedpage = ShedPage(note) + note.add(self.fontpage, text='Fonts/Tabs') note.add(self.highpage, text='Highlights') note.add(self.keyspage, text=' Keys ') - note.add(self.genpage, text=' General ') + note.add(self.winpage, text=' Windows ') + note.add(self.shedpage, text=' Shell/Ed ') note.add(self.extpage, text='Extensions') note.enable_traversal() note.pack(side=TOP, expand=TRUE, fill=BOTH) @@ -1594,14 +1597,14 @@ def delete_custom_keys(self): self.set_keys_type() -class GenPage(Frame): +class WinPage(Frame): def __init__(self, master): super().__init__(master) self.init_validators() - self.create_page_general() - self.load_general_cfg() + self.create_page_windows() + self.load_windows_cfg() def init_validators(self): digits_or_empty_re = re.compile(r'[0-9]*') @@ -1610,26 +1613,17 @@ def is_digits_or_empty(s): return digits_or_empty_re.fullmatch(s) is not None self.digits_only = (self.register(is_digits_or_empty), '%P',) - def create_page_general(self): - """Return frame of widgets for General tab. - - Enable users to provisionally change general options. Function - load_general_cfg initializes tk variables and helplist using - idleConf. Radiobuttons startup_shell_on and startup_editor_on - set var startup_edit. Radiobuttons save_ask_on and save_auto_on - set var autosave. Entry boxes win_width_int and win_height_int - set var win_width and win_height. Setting var_name invokes the - default callback that adds option to changes. + def create_page_windows(self): + """Return frame of widgets for Windows tab. - Helplist: load_general_cfg loads list user_helplist with - name, position pairs and copies names to listbox helplist. - Clicking a name invokes help_source selected. Clicking - button_helplist_name invokes helplist_item_name, which also - changes user_helplist. These functions all call - set_add_delete_state. All but load call update_help_changes to - rewrite changes['main']['HelpFiles']. + Enable users to provisionally change general window options. + Function load_windows_cfg initializes tk variables idleConf. + Radiobuttons startup_shell_on and startup_editor_on set var + startup_edit. Entry boxes win_width_int and win_height_int set var + win_width and win_height. Setting var_name invokes the default + callback that adds option to changes. - Widgets for GenPage(Frame): (*) widgets bound to self + Widgets for WinPage(Frame): (*) widgets bound to self frame_window: LabelFrame frame_run: Frame startup_title: Label @@ -1654,24 +1648,9 @@ def create_page_general(self): paren_time_title: Label (*)paren_flash_time: Entry - flash_delay (*)bell_on: Checkbutton - paren_bell - frame_editor: LabelFrame - frame_save: Frame - run_save_title: Label - (*)save_ask_on: Radiobutton - autosave - (*)save_auto_on: Radiobutton - autosave frame_format: Frame format_width_title: Label (*)format_width_int: Entry - format_width - frame_line_numbers_default: Frame - line_numbers_default_title: Label - (*)line_numbers_default_bool: Checkbutton - line_numbers_default - frame_context: Frame - context_title: Label - (*)context_int: Entry - context_lines - frame_shell: LabelFrame - frame_auto_squeeze_min_lines: Frame - auto_squeeze_min_lines_title: Label - (*)auto_squeeze_min_lines_int: Entry - auto_squeeze_min_lines """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1690,29 +1669,13 @@ def create_page_general(self): StringVar(self), ('extensions', 'ParenMatch', 'flash-delay')) self.paren_bell = tracers.add( BooleanVar(self), ('extensions', 'ParenMatch', 'bell')) - - self.auto_squeeze_min_lines = tracers.add( - StringVar(self), ('main', 'PyShell', 'auto-squeeze-min-lines')) - - self.autosave = tracers.add( - IntVar(self), ('main', 'General', 'autosave')) self.format_width = tracers.add( StringVar(self), ('extensions', 'FormatParagraph', 'max-width')) - self.line_numbers_default = tracers.add( - BooleanVar(self), - ('main', 'EditorWindow', 'line-numbers-default')) - self.context_lines = tracers.add( - StringVar(self), ('extensions', 'CodeContext', 'maxlines')) # Create widgets: - # Section frames. frame_window = LabelFrame(self, borderwidth=2, relief=GROOVE, text=' Window Preferences') - frame_editor = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Editor Preferences') - frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, - text=' Shell Preferences') - # Frame_window. + frame_run = Frame(frame_window, borderwidth=0) startup_title = Label(frame_run, text='At Startup') self.startup_editor_on = Radiobutton( @@ -1747,8 +1710,7 @@ def create_page_general(self): self.auto_wait_int = Entry(frame_autocomplete, width=6, textvariable=self.autocomplete_wait, validatecommand=self.digits_only, - validate='key', - ) + validate='key') frame_paren1 = Frame(frame_window, borderwidth=0) paren_style_title = Label(frame_paren1, text='Paren Match Style') @@ -1763,55 +1725,16 @@ def create_page_general(self): frame_paren2, textvariable=self.flash_delay, width=6) self.bell_on = Checkbutton( frame_paren2, text="Bell on Mismatch", variable=self.paren_bell) - - # Frame_editor. - frame_save = Frame(frame_editor, borderwidth=0) - run_save_title = Label(frame_save, text='At Start of Run (F5) ') - self.save_ask_on = Radiobutton( - frame_save, variable=self.autosave, value=0, - text="Prompt to Save") - self.save_auto_on = Radiobutton( - frame_save, variable=self.autosave, value=1, - text='No Prompt') - - frame_format = Frame(frame_editor, borderwidth=0) + frame_format = Frame(frame_window, borderwidth=0) format_width_title = Label(frame_format, text='Format Paragraph Max Width') self.format_width_int = Entry( frame_format, textvariable=self.format_width, width=4, validatecommand=self.digits_only, validate='key', - ) - - frame_line_numbers_default = Frame(frame_editor, borderwidth=0) - line_numbers_default_title = Label( - frame_line_numbers_default, text='Show line numbers in new windows') - self.line_numbers_default_bool = Checkbutton( - frame_line_numbers_default, - variable=self.line_numbers_default, - width=1) - - frame_context = Frame(frame_editor, borderwidth=0) - context_title = Label(frame_context, text='Max Context Lines :') - self.context_int = Entry( - frame_context, textvariable=self.context_lines, width=3, - validatecommand=self.digits_only, validate='key', - ) - - # Frame_shell. - frame_auto_squeeze_min_lines = Frame(frame_shell, borderwidth=0) - auto_squeeze_min_lines_title = Label(frame_auto_squeeze_min_lines, - text='Auto-Squeeze Min. Lines:') - self.auto_squeeze_min_lines_int = Entry( - frame_auto_squeeze_min_lines, width=4, - textvariable=self.auto_squeeze_min_lines, - validatecommand=self.digits_only, validate='key', - ) + ) # Pack widgets: - # Body. frame_window.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_editor.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) - frame_shell.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) # frame_run. frame_run.pack(side=TOP, padx=5, pady=0, fill=X) startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -1840,34 +1763,10 @@ def create_page_general(self): paren_time_title.pack(side=LEFT, anchor=W, padx=5) self.bell_on.pack(side=RIGHT, anchor=E, padx=15, pady=5) self.paren_flash_time.pack(side=TOP, anchor=W, padx=15, pady=5) - - # frame_save. - frame_save.pack(side=TOP, padx=5, pady=0, fill=X) - run_save_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.save_auto_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) - self.save_ask_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) # frame_format. frame_format.pack(side=TOP, padx=5, pady=0, fill=X) format_width_title.pack(side=LEFT, anchor=W, padx=5, pady=5) self.format_width_int.pack(side=TOP, padx=10, pady=5) - # frame_line_numbers_default. - frame_line_numbers_default.pack(side=TOP, padx=5, pady=0, fill=X) - line_numbers_default_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.line_numbers_default_bool.pack(side=LEFT, padx=5, pady=5) - # frame_context. - frame_context.pack(side=TOP, padx=5, pady=0, fill=X) - context_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.context_int.pack(side=TOP, padx=5, pady=5) - - # frame_auto_squeeze_min_lines - frame_auto_squeeze_min_lines.pack(side=TOP, padx=5, pady=0, fill=X) - auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) - - def load_general_cfg(self): - "Load current configuration settings for the general options." - self.load_windows_cfg() - self.load_shelled_cfg() def load_windows_cfg(self): # Set variables for all windows. @@ -1887,22 +1786,142 @@ def load_windows_cfg(self): 'extensions', 'ParenMatch', 'flash-delay', type='int')) self.paren_bell.set(idleConf.GetOption( 'extensions', 'ParenMatch', 'bell')) + self.format_width.set(idleConf.GetOption( + 'extensions', 'FormatParagraph', 'max-width', type='int')) + + +class ShedPage(Frame): + + def __init__(self, master): + super().__init__(master) + + self.init_validators() + self.create_page_shed() + self.load_shelled_cfg() + + def init_validators(self): + digits_or_empty_re = re.compile(r'[0-9]*') + def is_digits_or_empty(s): + "Return 's is blank or contains only digits'" + return digits_or_empty_re.fullmatch(s) is not None + self.digits_only = (self.register(is_digits_or_empty), '%P',) + + def create_page_shed(self): + """Return frame of widgets for Shell/Ed tab. + + Enable users to provisionally change shell and editor options. + Function load_shed_cfg initializes tk variables using idleConf. + Entry box auto_squeeze_min_lines_int sets + auto_squeeze_min_lines_int. Setting var_name invokes the + default callback that adds option to changes. + + Widgets for ShedPage(Frame): (*) widgets bound to self + frame_shell: LabelFrame + frame_auto_squeeze_min_lines: Frame + auto_squeeze_min_lines_title: Label + (*)auto_squeeze_min_lines_int: Entry - + auto_squeeze_min_lines + frame_editor: LabelFrame + frame_save: Frame + run_save_title: Label + (*)save_ask_on: Radiobutton - autosave + (*)save_auto_on: Radiobutton - autosave + frame_format: Frame + format_width_title: Label + (*)format_width_int: Entry - format_width + frame_line_numbers_default: Frame + line_numbers_default_title: Label + (*)line_numbers_default_bool: Checkbutton - line_numbers_default + frame_context: Frame + context_title: Label + (*)context_int: Entry - context_lines + """ + # Integer values need StringVar because int('') raises. + self.auto_squeeze_min_lines = tracers.add( + StringVar(self), ('main', 'PyShell', 'auto-squeeze-min-lines')) + + self.autosave = tracers.add( + IntVar(self), ('main', 'General', 'autosave')) + self.line_numbers_default = tracers.add( + BooleanVar(self), + ('main', 'EditorWindow', 'line-numbers-default')) + self.context_lines = tracers.add( + StringVar(self), ('extensions', 'CodeContext', 'maxlines')) + + # Create widgets: + frame_shell = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Shell Preferences') + frame_editor = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Editor Preferences') + # Frame_shell. + frame_auto_squeeze_min_lines = Frame(frame_shell, borderwidth=0) + auto_squeeze_min_lines_title = Label(frame_auto_squeeze_min_lines, + text='Auto-Squeeze Min. Lines:') + self.auto_squeeze_min_lines_int = Entry( + frame_auto_squeeze_min_lines, width=4, + textvariable=self.auto_squeeze_min_lines, + validatecommand=self.digits_only, validate='key', + ) + # Frame_editor. + frame_save = Frame(frame_editor, borderwidth=0) + run_save_title = Label(frame_save, text='At Start of Run (F5) ') + + self.save_ask_on = Radiobutton( + frame_save, variable=self.autosave, value=0, + text="Prompt to Save") + self.save_auto_on = Radiobutton( + frame_save, variable=self.autosave, value=1, + text='No Prompt') + + frame_line_numbers_default = Frame(frame_editor, borderwidth=0) + line_numbers_default_title = Label( + frame_line_numbers_default, text='Show line numbers in new windows') + self.line_numbers_default_bool = Checkbutton( + frame_line_numbers_default, + variable=self.line_numbers_default, + width=1) + + frame_context = Frame(frame_editor, borderwidth=0) + context_title = Label(frame_context, text='Max Context Lines :') + self.context_int = Entry( + frame_context, textvariable=self.context_lines, width=3, + validatecommand=self.digits_only, validate='key', + ) + + # Pack widgets: + frame_shell.pack(side=TOP, padx=5, pady=5, fill=BOTH) + Label(self).pack() # Spacer -- better solution? + frame_editor.pack(side=TOP, padx=5, pady=5, fill=BOTH) + # frame_auto_squeeze_min_lines + frame_auto_squeeze_min_lines.pack(side=TOP, padx=5, pady=0, fill=X) + auto_squeeze_min_lines_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.auto_squeeze_min_lines_int.pack(side=TOP, padx=5, pady=5) + # frame_save. + frame_save.pack(side=TOP, padx=5, pady=0, fill=X) + run_save_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.save_auto_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) + self.save_ask_on.pack(side=RIGHT, anchor=W, padx=5, pady=5) + # frame_line_numbers_default. + frame_line_numbers_default.pack(side=TOP, padx=5, pady=0, fill=X) + line_numbers_default_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.line_numbers_default_bool.pack(side=LEFT, padx=5, pady=5) + # frame_context. + frame_context.pack(side=TOP, padx=5, pady=0, fill=X) + context_title.pack(side=LEFT, anchor=W, padx=5, pady=5) + self.context_int.pack(side=TOP, padx=5, pady=5) def load_shelled_cfg(self): + # Set variables for shell windows. + self.auto_squeeze_min_lines.set(idleConf.GetOption( + 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) # Set variables for editor windows. self.autosave.set(idleConf.GetOption( 'main', 'General', 'autosave', default=0, type='bool')) - self.format_width.set(idleConf.GetOption( - 'extensions', 'FormatParagraph', 'max-width', type='int')) self.line_numbers_default.set(idleConf.GetOption( 'main', 'EditorWindow', 'line-numbers-default', type='bool')) self.context_lines.set(idleConf.GetOption( 'extensions', 'CodeContext', 'maxlines', type='int')) - # Set variables for shell windows. - self.auto_squeeze_min_lines.set(idleConf.GetOption( - 'main', 'PyShell', 'auto-squeeze-min-lines', type='int')) - class ExtPage(Frame): def __init__(self, master): diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index e01aa634473dc..f71d1b1bc09a0 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -1203,7 +1203,7 @@ def test_delete_custom_keys(self): del d.askyesno -class GenPageTest(unittest.TestCase): +class WinPageTest(unittest.TestCase): """Test that general tab widgets enable users to make changes. Test that widget actions set vars, that var changes add @@ -1211,24 +1211,22 @@ class GenPageTest(unittest.TestCase): """ @classmethod def setUpClass(cls): - page = cls.page = dialog.genpage + page = cls.page = dialog.winpage dialog.note.select(page) page.update() def setUp(self): changes.clear() - def test_load_general_cfg(self): + def test_load_windows_cfg(self): # Set to wrong values, load, check right values. eq = self.assertEqual d = self.page d.startup_edit.set(1) - d.autosave.set(1) d.win_width.set(1) d.win_height.set(1) - d.load_general_cfg() + d.load_windows_cfg() eq(d.startup_edit.get(), 0) - eq(d.autosave.get(), 0) eq(d.win_width.get(), '80') eq(d.win_height.get(), '40') @@ -1274,6 +1272,35 @@ def test_parenmatch(self): d.bell_on.invoke() eq(extpage, {'ParenMatch': {'bell': 'False'}}) + def test_paragraph(self): + self.page.format_width_int.delete(0, 'end') + self.page.format_width_int.insert(0, '11') + self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) + + +class GenPageTest(unittest.TestCase): + """Test that shed tab widgets enable users to make changes. + + Test that widget actions set vars, that var changes add + options to changes. + """ + @classmethod + def setUpClass(cls): + page = cls.page = dialog.shedpage + dialog.note.select(page) + page.update() + + def setUp(self): + changes.clear() + + def test_load_shelled_cfg(self): + # Set to wrong values, load, check right values. + eq = self.assertEqual + d = self.page + d.autosave.set(1) + d.load_shelled_cfg() + eq(d.autosave.get(), 0) + def test_autosave(self): d = self.page d.save_auto_on.invoke() @@ -1281,11 +1308,6 @@ def test_autosave(self): d.save_ask_on.invoke() self.assertEqual(mainpage, {'General': {'autosave': '0'}}) - def test_paragraph(self): - self.page.format_width_int.delete(0, 'end') - self.page.format_width_int.insert(0, '11') - self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) - def test_context(self): self.page.context_int.delete(0, 'end') self.page.context_int.insert(0, '1') diff --git a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst index 79cb1cca099ad..526036ccf841e 100644 --- a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst +++ b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst @@ -1,2 +1,4 @@ -Shorten settings dialog by moving help sources to extensions tab. This will -improve issues with dialog being too tall for some screens. +Split the settings dialog General tab into Windows and Shell/ED tabs. +Move help sources, which extend the Help menu, to the Extensions tab. +Make space for new options and shorten the dialog. +The latter makes the dialog better fit small screens. From webhook-mailer at python.org Wed Jun 9 17:10:37 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 09 Jun 2021 21:10:37 -0000 Subject: [Python-checkins] bpo-21760: fix __file__ description (GH-19097) Message-ID: https://github.com/python/cpython/commit/878d7e4ee464913438fd59582bbb795e7e0fa387 commit: 878d7e4ee464913438fd59582bbb795e7e0fa387 branch: main author: Furkan Onder committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-09T14:10:20-07:00 summary: bpo-21760: fix __file__ description (GH-19097) files: A Misc/NEWS.d/next/Documentation/2020-03-21-01-19-28.bpo-21760.CqofIc.rst M Doc/reference/import.rst diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst index 2ef5b901b930bf..81a124f745ab6a 100644 --- a/Doc/reference/import.rst +++ b/Doc/reference/import.rst @@ -603,9 +603,14 @@ the module. .. attribute:: __file__ .. attribute:: __cached__ - ``__file__`` is optional. If set, this attribute's value must be a - string. The import system may opt to leave ``__file__`` unset if it - has no semantic meaning (e.g. a module loaded from a database). + ``__file__`` is optional (if set, value must be a string). It indicates + the pathname of the file from which the module was loaded (if + loaded from a file), or the pathname of the shared libray file + for extension modules loaded dynamically from a shared library. + It might be missing for certain types of modules, such as C + modules that are statically linked into the interpreter, and the + import system may opt to leave it unset if it has no semantic + meaning (e.g. a module loaded from a database). If ``__file__`` is set, it may also be appropriate to set the ``__cached__`` attribute which is the path to any compiled version of diff --git a/Misc/NEWS.d/next/Documentation/2020-03-21-01-19-28.bpo-21760.CqofIc.rst b/Misc/NEWS.d/next/Documentation/2020-03-21-01-19-28.bpo-21760.CqofIc.rst new file mode 100644 index 00000000000000..119ef3d4c4378e --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2020-03-21-01-19-28.bpo-21760.CqofIc.rst @@ -0,0 +1,2 @@ +The description for __file__ fixed. +Patch by Furkan Onder \ No newline at end of file From webhook-mailer at python.org Wed Jun 9 17:20:11 2021 From: webhook-mailer at python.org (pablogsal) Date: Wed, 09 Jun 2021 21:20:11 -0000 Subject: [Python-checkins] bpo-44368: Ensure we don't raise incorrect custom syntax errors with soft keywords (GH-26630) Message-ID: https://github.com/python/cpython/commit/457ce60fc70f1c9290023f46fb82b6a490dff32e commit: 457ce60fc70f1c9290023f46fb82b6a490dff32e branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-09T22:20:01+01:00 summary: bpo-44368: Ensure we don't raise incorrect custom syntax errors with soft keywords (GH-26630) files: M Lib/test/test_exceptions.py M Lib/test/test_syntax.py M Parser/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index b242c082f8568..9cb5466a674d1 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -215,6 +215,7 @@ def testSyntaxErrorOffset(self): check('[\nfile\nfor str(file)\nin\n[]\n]', 3, 5) check('[file for\n str(file) in []]', 2, 2) check("ages = {'Alice'=22, 'Bob'=23}", 1, 16) + check('match ...:\n case {**rest, "key": value}:\n ...', 2, 19) # Errors thrown by compile.c check('class foo:return 1', 1, 11) diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 5d3ce4cd9f7ad..72e4ab15c8724 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -267,7 +267,7 @@ SyntaxError: invalid syntax. Perhaps you forgot a comma? # Make sure soft keywords constructs don't raise specialized -# errors regarding missing commas +# errors regarding missing commas or other spezialiced errors >>> match x: ... y = 3 @@ -280,6 +280,24 @@ Traceback (most recent call last): SyntaxError: invalid syntax +>>> match x: +... case $: +... ... +Traceback (most recent call last): +SyntaxError: invalid syntax + +>>> match ...: +... case {**rest, "key": value}: +... ... +Traceback (most recent call last): +SyntaxError: invalid syntax + +>>> match ...: +... case {**_}: +... ... +Traceback (most recent call last): +SyntaxError: invalid syntax + From compiler_complex_args(): >>> def f(None=1): diff --git a/Parser/pegen.c b/Parser/pegen.c index e6518198eca07..82f840c605073 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -936,10 +936,9 @@ _PyPegen_get_last_nonnwhitespace_token(Parser *p) return token; } -expr_ty -_PyPegen_name_token(Parser *p) +static expr_ty +_PyPegen_name_from_token(Parser *p, Token* t) { - Token *t = _PyPegen_expect_token(p, NAME); if (t == NULL) { return NULL; } @@ -957,6 +956,14 @@ _PyPegen_name_token(Parser *p) t->end_col_offset, p->arena); } + +expr_ty +_PyPegen_name_token(Parser *p) +{ + Token *t = _PyPegen_expect_token(p, NAME); + return _PyPegen_name_from_token(p, t); +} + void * _PyPegen_string_token(Parser *p) { @@ -974,7 +981,7 @@ expr_ty _PyPegen_soft_keyword_token(Parser *p) { PyBytes_AsStringAndSize(t->bytes, &the_token, &size); for (char **keyword = p->soft_keywords; *keyword != NULL; keyword++) { if (strncmp(*keyword, the_token, size) == 0) { - return _PyPegen_name_token(p); + return _PyPegen_name_from_token(p, t); } } return NULL; From webhook-mailer at python.org Wed Jun 9 17:45:57 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 09 Jun 2021 21:45:57 -0000 Subject: [Python-checkins] bpo-44368: Ensure we don't raise incorrect custom syntax errors with soft keywords (GH-26630) Message-ID: https://github.com/python/cpython/commit/f807a4fad4da8f629ea7fe1f00719e817c77b63c commit: f807a4fad4da8f629ea7fe1f00719e817c77b63c branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-09T14:45:43-07:00 summary: bpo-44368: Ensure we don't raise incorrect custom syntax errors with soft keywords (GH-26630) (cherry picked from commit 457ce60fc70f1c9290023f46fb82b6a490dff32e) Co-authored-by: Pablo Galindo files: M Lib/test/test_exceptions.py M Lib/test/test_syntax.py M Parser/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index b242c082f8568..9cb5466a674d1 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -215,6 +215,7 @@ def testSyntaxErrorOffset(self): check('[\nfile\nfor str(file)\nin\n[]\n]', 3, 5) check('[file for\n str(file) in []]', 2, 2) check("ages = {'Alice'=22, 'Bob'=23}", 1, 16) + check('match ...:\n case {**rest, "key": value}:\n ...', 2, 19) # Errors thrown by compile.c check('class foo:return 1', 1, 11) diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 5d3ce4cd9f7ad..72e4ab15c8724 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -267,7 +267,7 @@ SyntaxError: invalid syntax. Perhaps you forgot a comma? # Make sure soft keywords constructs don't raise specialized -# errors regarding missing commas +# errors regarding missing commas or other spezialiced errors >>> match x: ... y = 3 @@ -280,6 +280,24 @@ Traceback (most recent call last): SyntaxError: invalid syntax +>>> match x: +... case $: +... ... +Traceback (most recent call last): +SyntaxError: invalid syntax + +>>> match ...: +... case {**rest, "key": value}: +... ... +Traceback (most recent call last): +SyntaxError: invalid syntax + +>>> match ...: +... case {**_}: +... ... +Traceback (most recent call last): +SyntaxError: invalid syntax + From compiler_complex_args(): >>> def f(None=1): diff --git a/Parser/pegen.c b/Parser/pegen.c index e6518198eca07..82f840c605073 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -936,10 +936,9 @@ _PyPegen_get_last_nonnwhitespace_token(Parser *p) return token; } -expr_ty -_PyPegen_name_token(Parser *p) +static expr_ty +_PyPegen_name_from_token(Parser *p, Token* t) { - Token *t = _PyPegen_expect_token(p, NAME); if (t == NULL) { return NULL; } @@ -957,6 +956,14 @@ _PyPegen_name_token(Parser *p) t->end_col_offset, p->arena); } + +expr_ty +_PyPegen_name_token(Parser *p) +{ + Token *t = _PyPegen_expect_token(p, NAME); + return _PyPegen_name_from_token(p, t); +} + void * _PyPegen_string_token(Parser *p) { @@ -974,7 +981,7 @@ expr_ty _PyPegen_soft_keyword_token(Parser *p) { PyBytes_AsStringAndSize(t->bytes, &the_token, &size); for (char **keyword = p->soft_keywords; *keyword != NULL; keyword++) { if (strncmp(*keyword, the_token, size) == 0) { - return _PyPegen_name_token(p); + return _PyPegen_name_from_token(p, t); } } return NULL; From webhook-mailer at python.org Wed Jun 9 19:12:51 2021 From: webhook-mailer at python.org (corona10) Date: Wed, 09 Jun 2021 23:12:51 -0000 Subject: [Python-checkins] bpo-35800: Remove smtpd.MailmanProxy since 3.11 (GH-26617) Message-ID: https://github.com/python/cpython/commit/309ab616020f8504ced8ca64f7d7abc2df25a37f commit: 309ab616020f8504ced8ca64f7d7abc2df25a37f branch: main author: Dong-hee Na committer: corona10 date: 2021-06-10T08:12:41+09:00 summary: bpo-35800: Remove smtpd.MailmanProxy since 3.11 (GH-26617) files: A Misc/NEWS.d/next/Library/2021-06-09-10-08-32.bpo-35800.3hmkWw.rst M Doc/library/smtpd.rst M Doc/whatsnew/3.11.rst M Lib/smtpd.py diff --git a/Doc/library/smtpd.rst b/Doc/library/smtpd.rst index d84e74a8ceaaf..ae66e7e4596c6 100644 --- a/Doc/library/smtpd.rst +++ b/Doc/library/smtpd.rst @@ -142,24 +142,6 @@ PureProxy Objects chance to make you into an open relay, so please be careful. -MailmanProxy Objects --------------------- - - -.. class:: MailmanProxy(localaddr, remoteaddr) - - .. deprecated-removed:: 3.9 3.11 - - :class:`MailmanProxy` is deprecated, it depends on a ``Mailman`` - module which no longer exists and therefore is already broken. - - - Create a new pure proxy server. Arguments are as per :class:`SMTPServer`. - Everything will be relayed to *remoteaddr*, unless local mailman configurations - knows about an address, in which case it will be handled via mailman. Note that - running this has a good chance to make you into an open relay, so please be - careful. - SMTPChannel Objects ------------------- diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 00011278a51c4..dcab3679b200c 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -92,6 +92,13 @@ fractions Support :PEP:`515`-style initialization of :class:`~fractions.Fraction` from string. (Contributed by Sergey B Kirpichev in :issue:`44258`.) + +Removed +======= +* :class:`smtpd.MailmanProxy` is now removed as it is unusable without + an external module, ``mailman``. (Contributed by Dong-hee Na in :issue:`35800`.) + + Optimizations ============= diff --git a/Lib/smtpd.py b/Lib/smtpd.py index 1e2adc87a2bf2..d0536023e8401 100755 --- a/Lib/smtpd.py +++ b/Lib/smtpd.py @@ -60,13 +60,6 @@ # SMTP errors from the backend server at all. This should be fixed # (contributions are welcome!). # -# MailmanProxy - An experimental hack to work with GNU Mailman -# . Using this server as your real incoming smtpd, your -# mailhost will automatically recognize and accept mail destined to Mailman -# lists when those lists are created. Every message not destined for a list -# gets forwarded to a real backend smtpd, as with PureProxy. Again, errors -# are not handled correctly yet. -# # # Author: Barry Warsaw # @@ -91,7 +84,6 @@ __all__ = [ "SMTPChannel", "SMTPServer", "DebuggingServer", "PureProxy", - "MailmanProxy", ] program = sys.argv[0] @@ -777,91 +769,6 @@ def _deliver(self, mailfrom, rcpttos, data): return refused -class MailmanProxy(PureProxy): - def __init__(self, *args, **kwargs): - warn('MailmanProxy is deprecated and will be removed ' - 'in future', DeprecationWarning, 2) - if 'enable_SMTPUTF8' in kwargs and kwargs['enable_SMTPUTF8']: - raise ValueError("MailmanProxy does not support SMTPUTF8.") - super(PureProxy, self).__init__(*args, **kwargs) - - def process_message(self, peer, mailfrom, rcpttos, data): - from io import StringIO - from Mailman import Utils - from Mailman import Message - from Mailman import MailList - # If the message is to a Mailman mailing list, then we'll invoke the - # Mailman script directly, without going through the real smtpd. - # Otherwise we'll forward it to the local proxy for disposition. - listnames = [] - for rcpt in rcpttos: - local = rcpt.lower().split('@')[0] - # We allow the following variations on the theme - # listname - # listname-admin - # listname-owner - # listname-request - # listname-join - # listname-leave - parts = local.split('-') - if len(parts) > 2: - continue - listname = parts[0] - if len(parts) == 2: - command = parts[1] - else: - command = '' - if not Utils.list_exists(listname) or command not in ( - '', 'admin', 'owner', 'request', 'join', 'leave'): - continue - listnames.append((rcpt, listname, command)) - # Remove all list recipients from rcpttos and forward what we're not - # going to take care of ourselves. Linear removal should be fine - # since we don't expect a large number of recipients. - for rcpt, listname, command in listnames: - rcpttos.remove(rcpt) - # If there's any non-list destined recipients left, - print('forwarding recips:', ' '.join(rcpttos), file=DEBUGSTREAM) - if rcpttos: - refused = self._deliver(mailfrom, rcpttos, data) - # TBD: what to do with refused addresses? - print('we got refusals:', refused, file=DEBUGSTREAM) - # Now deliver directly to the list commands - mlists = {} - s = StringIO(data) - msg = Message.Message(s) - # These headers are required for the proper execution of Mailman. All - # MTAs in existence seem to add these if the original message doesn't - # have them. - if not msg.get('from'): - msg['From'] = mailfrom - if not msg.get('date'): - msg['Date'] = time.ctime(time.time()) - for rcpt, listname, command in listnames: - print('sending message to', rcpt, file=DEBUGSTREAM) - mlist = mlists.get(listname) - if not mlist: - mlist = MailList.MailList(listname, lock=0) - mlists[listname] = mlist - # dispatch on the type of command - if command == '': - # post - msg.Enqueue(mlist, tolist=1) - elif command == 'admin': - msg.Enqueue(mlist, toadmin=1) - elif command == 'owner': - msg.Enqueue(mlist, toowner=1) - elif command == 'request': - msg.Enqueue(mlist, torequest=1) - elif command in ('join', 'leave'): - # TBD: this is a hack! - if command == 'join': - msg['Subject'] = 'subscribe' - else: - msg['Subject'] = 'unsubscribe' - msg.Enqueue(mlist, torequest=1) - - class Options: setuid = True classname = 'PureProxy' diff --git a/Misc/NEWS.d/next/Library/2021-06-09-10-08-32.bpo-35800.3hmkWw.rst b/Misc/NEWS.d/next/Library/2021-06-09-10-08-32.bpo-35800.3hmkWw.rst new file mode 100644 index 0000000000000..d3bf596b75028 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-09-10-08-32.bpo-35800.3hmkWw.rst @@ -0,0 +1,2 @@ +:class:`smtpd.MailmanProxy` is now removed as it is unusable without an +external module, ``mailman``. Patch by Dong-hee Na. From webhook-mailer at python.org Thu Jun 10 03:46:16 2021 From: webhook-mailer at python.org (markshannon) Date: Thu, 10 Jun 2021 07:46:16 -0000 Subject: [Python-checkins] bpo-44337: Port LOAD_ATTR to PEP 659 adaptive interpreter (GH-26595) Message-ID: https://github.com/python/cpython/commit/e117c0283705943189e6b1aef668a1f68f3f00a4 commit: e117c0283705943189e6b1aef668a1f68f3f00a4 branch: main author: Mark Shannon committer: markshannon date: 2021-06-10T08:46:01+01:00 summary: bpo-44337: Port LOAD_ATTR to PEP 659 adaptive interpreter (GH-26595) * Specialize LOAD_ATTR with LOAD_ATTR_SLOT and LOAD_ATTR_SPLIT_KEYS * Move dict-common.h to internal/pycore_dict.h * Add LOAD_ATTR_WITH_HINT specialized opcode. * Quicken in function if loopy * Specialize LOAD_ATTR for module attributes. * Add specialization stats files: A Include/internal/pycore_dict.h A Misc/NEWS.d/next/Core and Builtins/2021-06-08-10-22-46.bpo-44337.RTjmIt.rst D Objects/dict-common.h M Include/internal/pycore_code.h M Include/opcode.h M Lib/opcode.py M Lib/test/test_capi.py M Makefile.pre.in M Objects/dictobject.c M Objects/odictobject.c M Python/ceval.c M Python/makeopcodetargets.py M Python/opcode_targets.h M Python/specialize.c M Tools/scripts/generate_opcode_h.py diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 2709e082b05b17..05ba522969a3d0 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -42,6 +42,12 @@ typedef struct { uint16_t index; } _PyAdaptiveEntry; + +typedef struct { + uint32_t tp_version; + uint32_t dk_version_or_hint; +} _PyLoadAttrCache; + /* Add specialized versions of entries to this union. * * Do not break the invariant: sizeof(SpecializedCacheEntry) == 8 @@ -55,6 +61,7 @@ typedef struct { typedef union { _PyEntryZero zero; _PyAdaptiveEntry adaptive; + _PyLoadAttrCache load_attr; } SpecializedCacheEntry; #define INSTRUCTIONS_PER_ENTRY (sizeof(SpecializedCacheEntry)/sizeof(_Py_CODEUNIT)) @@ -255,6 +262,83 @@ PyAPI_FUNC(PyObject *) _PyCode_GetCellvars(PyCodeObject *); PyAPI_FUNC(PyObject *) _PyCode_GetFreevars(PyCodeObject *); +/* Cache hits and misses */ + +static inline uint8_t +saturating_increment(uint8_t c) +{ + return c<<1; +} + +static inline uint8_t +saturating_decrement(uint8_t c) +{ + return (c>>1) + 128; +} + +static inline uint8_t +saturating_zero(void) +{ + return 255; +} + +/* Starting value for saturating counter. + * Technically this should be 1, but that is likely to + * cause a bit of thrashing when we optimize then get an immediate miss. + * We want to give the counter a change to stabilize, so we start at 3. + */ +static inline uint8_t +saturating_start(void) +{ + return saturating_zero()<<3; +} + +static inline void +record_cache_hit(_PyAdaptiveEntry *entry) { + entry->counter = saturating_increment(entry->counter); +} + +static inline void +record_cache_miss(_PyAdaptiveEntry *entry) { + entry->counter = saturating_decrement(entry->counter); +} + +static inline int +too_many_cache_misses(_PyAdaptiveEntry *entry) { + return entry->counter == saturating_zero(); +} + +#define BACKOFF 64 + +static inline void +cache_backoff(_PyAdaptiveEntry *entry) { + entry->counter = BACKOFF; +} + +/* Specialization functions */ + +int _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache); + +#define SPECIALIZATION_STATS 0 +#if SPECIALIZATION_STATS + +typedef struct _specialization_stats { + uint64_t specialization_success; + uint64_t specialization_failure; + uint64_t loadattr_hit; + uint64_t loadattr_deferred; + uint64_t loadattr_miss; + uint64_t loadattr_deopt; +} SpecializationStats; + +extern SpecializationStats _specialization_stats; +#define STAT_INC(name) _specialization_stats.name++ +void _Py_PrintSpecializationStats(void); +#else +#define STAT_INC(name) ((void)0) +#endif + + #ifdef __cplusplus } #endif diff --git a/Objects/dict-common.h b/Include/internal/pycore_dict.h similarity index 66% rename from Objects/dict-common.h rename to Include/internal/pycore_dict.h index a6f518f301885a..b2c64b2168cdcf 100644 --- a/Objects/dict-common.h +++ b/Include/internal/pycore_dict.h @@ -1,5 +1,14 @@ -#ifndef Py_DICT_COMMON_H -#define Py_DICT_COMMON_H + +#ifndef Py_INTERNAL_DICT_H +#define Py_INTERNAL_DICT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + typedef struct { /* Cached hash code of me_key. */ @@ -62,4 +71,26 @@ struct _dictkeysobject { see the DK_ENTRIES() macro */ }; +#define DK_LOG_SIZE(dk) ((dk)->dk_log2_size) +#if SIZEOF_VOID_P > 4 +#define DK_SIZE(dk) (((int64_t)1)<dk_indices))[DK_SIZE(dk) * DK_IXSIZE(dk)])) + + +#ifdef __cplusplus +} #endif +#endif /* !Py_INTERNAL_DICT_H */ diff --git a/Include/opcode.h b/Include/opcode.h index c65e2f41133fc6..8f5be99cae0c1b 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -136,6 +136,12 @@ extern "C" { #define DICT_MERGE 164 #define DICT_UPDATE 165 #define CALL_METHOD_KW 166 +#define JUMP_ABSOLUTE_QUICK 7 +#define LOAD_ATTR_ADAPTIVE 8 +#define LOAD_ATTR_SPLIT_KEYS 13 +#define LOAD_ATTR_WITH_HINT 14 +#define LOAD_ATTR_SLOT 18 +#define LOAD_ATTR_MODULE 21 #ifdef NEED_OPCODE_JUMP_TABLES static uint32_t _PyOpcode_RelativeJump[8] = { 0U, diff --git a/Lib/opcode.py b/Lib/opcode.py index 4d5343179e5932..265759e60071ce 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -218,3 +218,12 @@ def jabs_op(name, op): def_op('CALL_METHOD_KW', 166) del def_op, name_op, jrel_op, jabs_op + +_specialized_instructions = [ + "JUMP_ABSOLUTE_QUICK", + "LOAD_ATTR_ADAPTIVE", + "LOAD_ATTR_SPLIT_KEYS", + "LOAD_ATTR_WITH_HINT", + "LOAD_ATTR_SLOT", + "LOAD_ATTR_MODULE", +] diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 1b18bfad553007..f4b7b8c13b7d38 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -323,7 +323,7 @@ class C(): pass break """ rc, out, err = assert_python_ok('-c', code) - self.assertIn(b'MemoryError 1 10', out) + self.assertIn(b'MemoryError 1', out) self.assertIn(b'MemoryError 2 20', out) self.assertIn(b'MemoryError 3 30', out) diff --git a/Makefile.pre.in b/Makefile.pre.in index 859b53947cab1a..97f21d454464bd 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -979,8 +979,7 @@ Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS) Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS) -Objects/odictobject.o: $(srcdir)/Objects/dict-common.h -Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h $(srcdir)/Objects/dict-common.h +Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h .PHONY: regen-opcode-targets @@ -1156,6 +1155,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/internal/pycore_compile.h \ $(srcdir)/Include/internal/pycore_condvar.h \ $(srcdir)/Include/internal/pycore_context.h \ + $(srcdir)/Include/internal/pycore_dict.h \ $(srcdir)/Include/internal/pycore_dtoa.h \ $(srcdir)/Include/internal/pycore_fileutils.h \ $(srcdir)/Include/internal/pycore_format.h \ diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-10-22-46.bpo-44337.RTjmIt.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-10-22-46.bpo-44337.RTjmIt.rst new file mode 100644 index 00000000000000..2df082a078e309 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-10-22-46.bpo-44337.RTjmIt.rst @@ -0,0 +1,11 @@ +Initial implementation of adaptive specialization of LOAD_ATTR + +Four specialized forms of LOAD_ATTR are added: + +* LOAD_ATTR_SLOT + +* LOAD_ATTR_SPLIT_KEYS + +* LOAD_ATTR_WITH_HINT + +* LOAD_ATTR_MODULE diff --git a/Objects/dictobject.c b/Objects/dictobject.c index d97f9e2120d3fa..3a1dbc994b44b0 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -117,7 +117,7 @@ converting the dict to the combined table. #include "pycore_object.h" // _PyObject_GC_TRACK() #include "pycore_pyerrors.h" // _PyErr_Fetch() #include "pycore_pystate.h" // _PyThreadState_GET() -#include "dict-common.h" +#include "pycore_dict.h" #include "stringlib/eq.h" // unicode_eq() /*[clinic input] @@ -285,24 +285,6 @@ _PyDict_DebugMallocStats(FILE *out) state->numfree, sizeof(PyDictObject)); } -#define DK_LOG_SIZE(dk) ((dk)->dk_log2_size) -#if SIZEOF_VOID_P > 4 -#define DK_SIZE(dk) (((int64_t)1)<dk_indices))[DK_SIZE(dk) * DK_IXSIZE(dk)])) - #define DK_MASK(dk) (DK_SIZE(dk)-1) #define IS_POWER_OF_2(x) (((x) & (x-1)) == 0) @@ -1544,10 +1526,10 @@ delitem_common(PyDictObject *mp, Py_hash_t hash, Py_ssize_t ix, assert(hashpos >= 0); mp->ma_used--; + mp->ma_keys->dk_version = 0; mp->ma_version_tag = DICT_NEXT_VERSION(); ep = &DK_ENTRIES(mp->ma_keys)[ix]; dictkeys_set_index(mp->ma_keys, hashpos, DKIX_DUMMY); - mp->ma_keys->dk_version = 0; old_key = ep->me_key; ep->me_key = NULL; ep->me_value = NULL; diff --git a/Objects/odictobject.c b/Objects/odictobject.c index 6a33910d9a89de..fb1ac0ce48dcfc 100644 --- a/Objects/odictobject.c +++ b/Objects/odictobject.c @@ -467,7 +467,7 @@ Potential Optimizations #include "Python.h" #include "pycore_object.h" #include // offsetof() -#include "dict-common.h" +#include "pycore_dict.h" #include #include "clinic/odictobject.c.h" diff --git a/Python/ceval.c b/Python/ceval.c index a8abead23038ce..46133c9fe28dca 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -16,6 +16,7 @@ #include "pycore_code.h" // _PyCode_InitOpcache() #include "pycore_initconfig.h" // _PyStatus_OK() #include "pycore_object.h" // _PyObject_GC_TRACK() +#include "pycore_moduleobject.h" #include "pycore_pyerrors.h" // _PyErr_Fetch() #include "pycore_pylifecycle.h" // _PyErr_Print() #include "pycore_pymem.h" // _PyMem_IsPtrFreed() @@ -24,6 +25,7 @@ #include "pycore_tuple.h" // _PyTuple_ITEMS() #include "code.h" +#include "pycore_dict.h" #include "dictobject.h" #include "frameobject.h" #include "pycore_frame.h" @@ -1554,8 +1556,15 @@ eval_frame_handle_pending(PyThreadState *tstate) #define OPCACHE_STAT_ATTR_DEOPT() #define OPCACHE_STAT_ATTR_TOTAL() +#define JUMP_TO_INSTRUCTION(op) goto PREDICT_ID(op) + +#define GET_CACHE() \ + _GetSpecializedCacheEntryForInstruction(first_instr, INSTR_OFFSET(), oparg) + #endif +#define DEOPT_IF(cond, instname) if (cond) { goto instname ## _miss; } + #define GLOBALS() specials[FRAME_SPECIALS_GLOBALS_OFFSET] #define BUILTINS() specials[FRAME_SPECIALS_BUILTINS_OFFSET] #define LOCALS() specials[FRAME_SPECIALS_LOCALS_OFFSET] @@ -1574,7 +1583,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) int lastopcode = 0; #endif PyObject **stack_pointer; /* Next free slot in value stack */ - const _Py_CODEUNIT *next_instr; + _Py_CODEUNIT *next_instr; int opcode; /* Current opcode */ int oparg; /* Current opcode argument, if any */ PyObject **localsplus, **specials; @@ -1582,7 +1591,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) _Py_atomic_int * const eval_breaker = &tstate->interp->ceval.eval_breaker; PyCodeObject *co; - const _Py_CODEUNIT *first_instr; + _Py_CODEUNIT *first_instr; PyObject *names; PyObject *consts; _PyOpcache *co_opcache; @@ -3443,196 +3452,129 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } case TARGET(LOAD_ATTR): { + PREDICTED(LOAD_ATTR); PyObject *name = GETITEM(names, oparg); PyObject *owner = TOP(); + PyObject *res = PyObject_GetAttr(owner, name); + if (res == NULL) { + goto error; + } + Py_DECREF(owner); + SET_TOP(res); + DISPATCH(); + } - PyTypeObject *type = Py_TYPE(owner); - PyObject *res; - PyObject **dictptr; - PyObject *dict; - _PyOpCodeOpt_LoadAttr *la; - - OPCACHE_STAT_ATTR_TOTAL(); - - OPCACHE_CHECK(); - if (co_opcache != NULL && PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG)) - { - if (co_opcache->optimized > 0) { - // Fast path -- cache hit makes LOAD_ATTR ~30% faster. - la = &co_opcache->u.la; - if (la->type == type && la->tp_version_tag == type->tp_version_tag) - { - // Hint >= 0 is a dict index; hint == -1 is a dict miss. - // Hint < -1 is an inverted slot offset: offset is strictly > 0, - // so ~offset is strictly < -1 (assuming 2's complement). - if (la->hint < -1) { - // Even faster path -- slot hint. - Py_ssize_t offset = ~la->hint; - // fprintf(stderr, "Using hint for offset %zd\n", offset); - char *addr = (char *)owner + offset; - res = *(PyObject **)addr; - if (res != NULL) { - Py_INCREF(res); - SET_TOP(res); - Py_DECREF(owner); - DISPATCH(); - } - // Else slot is NULL. Fall through to slow path to raise AttributeError(name). - // Don't DEOPT, since the slot is still there. - } else { - // Fast path for dict. - assert(type->tp_dict != NULL); - assert(type->tp_dictoffset > 0); - - dictptr = (PyObject **) ((char *)owner + type->tp_dictoffset); - dict = *dictptr; - if (dict != NULL && PyDict_CheckExact(dict)) { - Py_ssize_t hint = la->hint; - Py_INCREF(dict); - res = NULL; - assert(!_PyErr_Occurred(tstate)); - la->hint = _PyDict_GetItemHint((PyDictObject*)dict, name, hint, &res); - if (res != NULL) { - assert(la->hint >= 0); - if (la->hint == hint && hint >= 0) { - // Our hint has helped -- cache hit. - OPCACHE_STAT_ATTR_HIT(); - } else { - // The hint we provided didn't work. - // Maybe next time? - OPCACHE_MAYBE_DEOPT_LOAD_ATTR(); - } - - Py_INCREF(res); - SET_TOP(res); - Py_DECREF(owner); - Py_DECREF(dict); - DISPATCH(); - } - else { - _PyErr_Clear(tstate); - // This attribute can be missing sometimes; - // we don't want to optimize this lookup. - OPCACHE_DEOPT_LOAD_ATTR(); - Py_DECREF(dict); - } - } - else { - // There is no dict, or __dict__ doesn't satisfy PyDict_CheckExact. - OPCACHE_DEOPT_LOAD_ATTR(); - } - } - } - else { - // The type of the object has either been updated, - // or is different. Maybe it will stabilize? - OPCACHE_MAYBE_DEOPT_LOAD_ATTR(); - } - OPCACHE_STAT_ATTR_MISS(); - } - - if (co_opcache != NULL && // co_opcache can be NULL after a DEOPT() call. - type->tp_getattro == PyObject_GenericGetAttr) - { - if (type->tp_dict == NULL) { - if (PyType_Ready(type) < 0) { - Py_DECREF(owner); - SET_TOP(NULL); - goto error; - } - } - PyObject *descr = _PyType_Lookup(type, name); - if (descr != NULL) { - // We found an attribute with a data-like descriptor. - PyTypeObject *dtype = Py_TYPE(descr); - if (dtype == &PyMemberDescr_Type) { // It's a slot - PyMemberDescrObject *member = (PyMemberDescrObject *)descr; - struct PyMemberDef *dmem = member->d_member; - if (dmem->type == T_OBJECT_EX) { - Py_ssize_t offset = dmem->offset; - assert(offset > 0); // 0 would be confused with dict hint == -1 (miss). - - if (co_opcache->optimized == 0) { - // First time we optimize this opcode. - OPCACHE_STAT_ATTR_OPT(); - co_opcache->optimized = OPCODE_CACHE_MAX_TRIES; - // fprintf(stderr, "Setting hint for %s, offset %zd\n", dmem->name, offset); - } - - la = &co_opcache->u.la; - la->type = type; - la->tp_version_tag = type->tp_version_tag; - la->hint = ~offset; - - char *addr = (char *)owner + offset; - res = *(PyObject **)addr; - if (res != NULL) { - Py_INCREF(res); - Py_DECREF(owner); - SET_TOP(res); - - DISPATCH(); - } - // Else slot is NULL. Fall through to slow path to raise AttributeError(name). - } - // Else it's a slot of a different type. We don't handle those. - } - // Else it's some other kind of descriptor that we don't handle. - OPCACHE_DEOPT_LOAD_ATTR(); - } - else if (type->tp_dictoffset > 0) { - // We found an instance with a __dict__. - dictptr = (PyObject **) ((char *)owner + type->tp_dictoffset); - dict = *dictptr; - - if (dict != NULL && PyDict_CheckExact(dict)) { - Py_INCREF(dict); - res = NULL; - assert(!_PyErr_Occurred(tstate)); - Py_ssize_t hint = _PyDict_GetItemHint((PyDictObject*)dict, name, -1, &res); - if (res != NULL) { - Py_INCREF(res); - Py_DECREF(dict); - Py_DECREF(owner); - SET_TOP(res); - - if (co_opcache->optimized == 0) { - // First time we optimize this opcode. - OPCACHE_STAT_ATTR_OPT(); - co_opcache->optimized = OPCODE_CACHE_MAX_TRIES; - } - - la = &co_opcache->u.la; - la->type = type; - la->tp_version_tag = type->tp_version_tag; - assert(hint >= 0); - la->hint = hint; - - DISPATCH(); - } - else { - _PyErr_Clear(tstate); - } - Py_DECREF(dict); - } else { - // There is no dict, or __dict__ doesn't satisfy PyDict_CheckExact. - OPCACHE_DEOPT_LOAD_ATTR(); - } - } else { - // The object's class does not have a tp_dictoffset we can use. - OPCACHE_DEOPT_LOAD_ATTR(); - } - } else if (type->tp_getattro != PyObject_GenericGetAttr) { - OPCACHE_DEOPT_LOAD_ATTR(); + case TARGET(LOAD_ATTR_ADAPTIVE): { + SpecializedCacheEntry *cache = GET_CACHE(); + if (cache->adaptive.counter == 0) { + PyObject *owner = TOP(); + PyObject *name = GETITEM(names, cache->adaptive.original_oparg); + next_instr--; + if (_Py_Specialize_LoadAttr(owner, next_instr, name, cache) < 0) { + goto error; } + DISPATCH(); } + else { + STAT_INC(loadattr_deferred); + cache->adaptive.counter--; + oparg = cache->adaptive.original_oparg; + JUMP_TO_INSTRUCTION(LOAD_ATTR); + } + } + + case TARGET(LOAD_ATTR_SPLIT_KEYS): { + PyObject *owner = TOP(); + PyObject *res; + PyTypeObject *tp = Py_TYPE(owner); + SpecializedCacheEntry *caches = GET_CACHE(); + _PyAdaptiveEntry *cache0 = &caches[0].adaptive; + _PyLoadAttrCache *cache1 = &caches[-1].load_attr; + assert(cache1->tp_version != 0); + DEOPT_IF(tp->tp_version_tag != cache1->tp_version, LOAD_ATTR); + assert(tp->tp_dictoffset > 0); + PyDictObject *dict = *(PyDictObject **)(((char *)owner) + tp->tp_dictoffset); + DEOPT_IF(dict == NULL, LOAD_ATTR); + assert(PyDict_CheckExact((PyObject *)dict)); + DEOPT_IF(dict->ma_keys->dk_version != cache1->dk_version_or_hint, LOAD_ATTR); + res = dict->ma_values[cache0->index]; + DEOPT_IF(res == NULL, LOAD_ATTR); + STAT_INC(loadattr_hit); + record_cache_hit(cache0); + STAT_INC(loadattr_hit); + Py_INCREF(res); + SET_TOP(res); + Py_DECREF(owner); + DISPATCH(); + } - // Slow path. - res = PyObject_GetAttr(owner, name); + case TARGET(LOAD_ATTR_MODULE): { + PyObject *owner = TOP(); + PyObject *res; + SpecializedCacheEntry *caches = GET_CACHE(); + _PyAdaptiveEntry *cache0 = &caches[0].adaptive; + _PyLoadAttrCache *cache1 = &caches[-1].load_attr; + DEOPT_IF(!PyModule_CheckExact(owner), LOAD_ATTR); + PyDictObject *dict = (PyDictObject *)((PyModuleObject *)owner)->md_dict; + DEOPT_IF(dict->ma_keys->dk_version != cache1->dk_version_or_hint, LOAD_ATTR); + assert(dict->ma_keys->dk_kind == DICT_KEYS_UNICODE); + assert(cache0->index < dict->ma_keys->dk_nentries); + PyDictKeyEntry *ep = DK_ENTRIES(dict->ma_keys) + cache0->index; + res = ep->me_value; + DEOPT_IF(res == NULL, LOAD_ATTR); + STAT_INC(loadattr_hit); + record_cache_hit(cache0); + Py_INCREF(res); + SET_TOP(res); Py_DECREF(owner); + DISPATCH(); + } + + case TARGET(LOAD_ATTR_WITH_HINT): { + PyObject *owner = TOP(); + PyObject *res; + PyTypeObject *tp = Py_TYPE(owner); + SpecializedCacheEntry *caches = GET_CACHE(); + _PyAdaptiveEntry *cache0 = &caches[0].adaptive; + _PyLoadAttrCache *cache1 = &caches[-1].load_attr; + assert(cache1->tp_version != 0); + DEOPT_IF(tp->tp_version_tag != cache1->tp_version, LOAD_ATTR); + assert(tp->tp_dictoffset > 0); + PyDictObject *dict = *(PyDictObject **)(((char *)owner) + tp->tp_dictoffset); + DEOPT_IF(dict == NULL, LOAD_ATTR); + assert(PyDict_CheckExact((PyObject *)dict)); + PyObject *name = GETITEM(names, cache0->original_oparg); + uint32_t hint = cache1->dk_version_or_hint; + DEOPT_IF(hint >= dict->ma_keys->dk_nentries, LOAD_ATTR); + PyDictKeyEntry *ep = DK_ENTRIES(dict->ma_keys) + hint; + DEOPT_IF(ep->me_key != name, LOAD_ATTR); + res = ep->me_value; + DEOPT_IF(res == NULL, LOAD_ATTR); + STAT_INC(loadattr_hit); + record_cache_hit(cache0); + Py_INCREF(res); SET_TOP(res); - if (res == NULL) - goto error; + Py_DECREF(owner); + DISPATCH(); + } + + case TARGET(LOAD_ATTR_SLOT): { + PyObject *owner = TOP(); + PyObject *res; + PyTypeObject *tp = Py_TYPE(owner); + SpecializedCacheEntry *caches = GET_CACHE(); + _PyAdaptiveEntry *cache0 = &caches[0].adaptive; + _PyLoadAttrCache *cache1 = &caches[-1].load_attr; + assert(cache1->tp_version != 0); + DEOPT_IF(tp->tp_version_tag != cache1->tp_version, LOAD_ATTR); + char *addr = (char *)owner + cache0->index; + res = *(PyObject **)addr; + DEOPT_IF(res == NULL, LOAD_ATTR); + STAT_INC(loadattr_hit); + record_cache_hit(cache0); + Py_INCREF(res); + SET_TOP(res); + Py_DECREF(owner); DISPATCH(); } @@ -3879,6 +3821,27 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) case TARGET(JUMP_ABSOLUTE): { PREDICTED(JUMP_ABSOLUTE); + if (oparg < INSTR_OFFSET()) { + /* Increment the warmup counter and quicken if warm enough + * _Py_Quicken is idempotent so we don't worry about overflow */ + if (!PyCodeObject_IsWarmedUp(co)) { + PyCodeObject_IncrementWarmup(co); + if (PyCodeObject_IsWarmedUp(co)) { + if (_Py_Quicken(co)) { + goto error; + } + int nexti = INSTR_OFFSET(); + first_instr = co->co_firstinstr; + next_instr = first_instr + nexti; + } + } + } + JUMPTO(oparg); + CHECK_EVAL_BREAKER(); + DISPATCH(); + } + + case TARGET(JUMP_ABSOLUTE_QUICK): { JUMPTO(oparg); CHECK_EVAL_BREAKER(); DISPATCH(); @@ -4494,6 +4457,22 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) or goto error. */ Py_UNREACHABLE(); +/* Cache misses */ + +LOAD_ATTR_miss: + { + STAT_INC(loadattr_miss); + _PyAdaptiveEntry *cache = &GET_CACHE()->adaptive; + record_cache_miss(cache); + if (too_many_cache_misses(cache)) { + next_instr[-1] = _Py_MAKECODEUNIT(LOAD_ATTR_ADAPTIVE, _Py_OPARG(next_instr[-1])); + STAT_INC(loadattr_deopt); + cache_backoff(cache); + } + oparg = cache->original_oparg; + JUMP_TO_INSTRUCTION(LOAD_ATTR); + } + error: /* Double-check exception status. */ #ifdef NDEBUG @@ -4515,6 +4494,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, tstate, f, &trace_info); } + exception_unwind: f->f_state = FRAME_UNWINDING; /* We can't use f->f_lasti here, as RERAISE may have set it */ diff --git a/Python/makeopcodetargets.py b/Python/makeopcodetargets.py index 023c9e6c9f1adc..189d72a8c84af3 100755 --- a/Python/makeopcodetargets.py +++ b/Python/makeopcodetargets.py @@ -34,6 +34,11 @@ def write_contents(f): targets = ['_unknown_opcode'] * 256 for opname, op in opcode.opmap.items(): targets[op] = "TARGET_%s" % opname + next_op = 1 + for opname in opcode._specialized_instructions: + while targets[next_op] != '_unknown_opcode': + next_op += 1 + targets[next_op] = "TARGET_%s" % opname f.write("static void *opcode_targets[256] = {\n") f.write(",\n".join([" &&%s" % s for s in targets])) f.write("\n};\n") diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 94b2a7c9b6e930..47beee7d59dbcc 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -6,21 +6,21 @@ static void *opcode_targets[256] = { &&TARGET_DUP_TOP, &&TARGET_DUP_TOP_TWO, &&TARGET_ROT_FOUR, - &&_unknown_opcode, - &&_unknown_opcode, + &&TARGET_JUMP_ABSOLUTE_QUICK, + &&TARGET_LOAD_ATTR_ADAPTIVE, &&TARGET_NOP, &&TARGET_UNARY_POSITIVE, &&TARGET_UNARY_NEGATIVE, &&TARGET_UNARY_NOT, - &&_unknown_opcode, - &&_unknown_opcode, + &&TARGET_LOAD_ATTR_SPLIT_KEYS, + &&TARGET_LOAD_ATTR_WITH_HINT, &&TARGET_UNARY_INVERT, &&TARGET_BINARY_MATRIX_MULTIPLY, &&TARGET_INPLACE_MATRIX_MULTIPLY, - &&_unknown_opcode, + &&TARGET_LOAD_ATTR_SLOT, &&TARGET_BINARY_POWER, &&TARGET_BINARY_MULTIPLY, - &&_unknown_opcode, + &&TARGET_LOAD_ATTR_MODULE, &&TARGET_BINARY_MODULO, &&TARGET_BINARY_ADD, &&TARGET_BINARY_SUBTRACT, diff --git a/Python/specialize.c b/Python/specialize.c index 07152d80538307..1801e6620f1e3c 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -1,7 +1,10 @@ #include "Python.h" #include "pycore_code.h" +#include "pycore_dict.h" +#include "pycore_moduleobject.h" #include "opcode.h" +#include "structmember.h" // struct PyMemberDef, T_OFFSET_EX /* We layout the quickened data as a bi-directional array: @@ -29,6 +32,22 @@ */ Py_ssize_t _Py_QuickenedCount = 0; +#if SPECIALIZATION_STATS +SpecializationStats _specialization_stats = { 0 }; + +#define PRINT_STAT(name) fprintf(stderr, #name " : %" PRIu64" \n", _specialization_stats.name); +void +_Py_PrintSpecializationStats(void) +{ + PRINT_STAT(specialization_success); + PRINT_STAT(specialization_failure); + PRINT_STAT(loadattr_hit); + PRINT_STAT(loadattr_deferred); + PRINT_STAT(loadattr_miss); + PRINT_STAT(loadattr_deopt); +} + +#endif static SpecializedCacheOrInstruction * allocate(int cache_count, int instruction_count) @@ -56,10 +75,14 @@ get_cache_count(SpecializedCacheOrInstruction *quickened) { /* Map from opcode to adaptive opcode. Values of zero are ignored. */ -static uint8_t adaptive_opcodes[256] = { 0 }; +static uint8_t adaptive_opcodes[256] = { + [LOAD_ATTR] = LOAD_ATTR_ADAPTIVE, +}; /* The number of cache entries required for a "family" of instructions. */ -static uint8_t cache_requirements[256] = { 0 }; +static uint8_t cache_requirements[256] = { + [LOAD_ATTR] = 2, +}; /* Return the oparg for the cache_offset and instruction index. * @@ -158,6 +181,9 @@ optimize(SpecializedCacheOrInstruction *quickened, int len) /* Super instructions don't use the cache, * so no need to update the offset. */ switch (opcode) { + case JUMP_ABSOLUTE: + instructions[i] = _Py_MAKECODEUNIT(JUMP_ABSOLUTE_QUICK, oparg); + break; /* Insert superinstructions here E.g. case LOAD_FAST: @@ -195,3 +221,150 @@ _Py_Quicken(PyCodeObject *code) { return 0; } +static int +specialize_module_load_attr( + PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, + _PyAdaptiveEntry *cache0, _PyLoadAttrCache *cache1) +{ + PyModuleObject *m = (PyModuleObject *)owner; + PyObject *value = NULL; + PyObject *getattr; + _Py_IDENTIFIER(__getattr__); + PyDictObject *dict = (PyDictObject *)m->md_dict; + if (dict == NULL) { + return -1; + } + if (dict->ma_keys->dk_kind != DICT_KEYS_UNICODE) { + return -1; + } + getattr = _PyUnicode_FromId(&PyId___getattr__); /* borrowed */ + if (getattr == NULL) { + PyErr_Clear(); + return -1; + } + Py_ssize_t index = _PyDict_GetItemHint(dict, getattr, -1, &value); + assert(index != DKIX_ERROR); + if (index != DKIX_EMPTY) { + return -1; + } + index = _PyDict_GetItemHint(dict, name, -1, &value); + assert (index != DKIX_ERROR); + if (index != (uint16_t)index) { + return -1; + } + uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(dict); + if (keys_version == 0) { + return -1; + } + cache1->dk_version_or_hint = keys_version; + cache0->index = (uint16_t)index; + *instr = _Py_MAKECODEUNIT(LOAD_ATTR_MODULE, _Py_OPARG(*instr)); + return 0; +} + +int +_Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache) +{ + _PyAdaptiveEntry *cache0 = &cache->adaptive; + _PyLoadAttrCache *cache1 = &cache[-1].load_attr; + if (PyModule_CheckExact(owner)) { + int err = specialize_module_load_attr(owner, instr, name, cache0, cache1); + if (err) { + goto fail; + } + goto success; + } + PyTypeObject *type = Py_TYPE(owner); + if (type->tp_getattro != PyObject_GenericGetAttr) { + goto fail; + } + if (type->tp_dict == NULL) { + if (PyType_Ready(type) < 0) { + return -1; + } + } + PyObject *descr = _PyType_Lookup(type, name); + if (descr != NULL) { + // We found an attribute with a data-like descriptor. + PyTypeObject *dtype = Py_TYPE(descr); + if (dtype != &PyMemberDescr_Type) { + goto fail; + } + // It's a slot + PyMemberDescrObject *member = (PyMemberDescrObject *)descr; + struct PyMemberDef *dmem = member->d_member; + if (dmem->type != T_OBJECT_EX) { + // It's a slot of a different type. We don't handle those. + goto fail; + } + Py_ssize_t offset = dmem->offset; + if (offset != (uint16_t)offset) { + goto fail; + } + assert(offset > 0); + cache0->index = (uint16_t)offset; + cache1->tp_version = type->tp_version_tag; + *instr = _Py_MAKECODEUNIT(LOAD_ATTR_SLOT, _Py_OPARG(*instr)); + goto success; + } + // No desciptor + if (type->tp_dictoffset <= 0) { + // No dictionary, or computed offset dictionary + goto fail; + } + PyObject **dictptr = (PyObject **) ((char *)owner + type->tp_dictoffset); + if (*dictptr == NULL || !PyDict_CheckExact(*dictptr)) { + goto fail; + } + // We found an instance with a __dict__. + PyDictObject *dict = (PyDictObject *)*dictptr; + if ((type->tp_flags & Py_TPFLAGS_HEAPTYPE) + && dict->ma_keys == ((PyHeapTypeObject*)type)->ht_cached_keys + ) { + // Keys are shared + assert(PyUnicode_CheckExact(name)); + Py_hash_t hash = PyObject_Hash(name); + if (hash == -1) { + return -1; + } + PyObject *value; + Py_ssize_t index = _Py_dict_lookup(dict, name, hash, &value); + assert (index != DKIX_ERROR); + if (index != (uint16_t)index) { + goto fail; + } + uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(dict); + if (keys_version == 0) { + goto fail; + } + cache1->dk_version_or_hint = keys_version; + cache1->tp_version = type->tp_version_tag; + cache0->index = (uint16_t)index; + *instr = _Py_MAKECODEUNIT(LOAD_ATTR_SPLIT_KEYS, _Py_OPARG(*instr)); + goto success; + } + else { + PyObject *value = NULL; + Py_ssize_t hint = + _PyDict_GetItemHint(dict, name, -1, &value); + if (hint != (uint32_t)hint) { + goto fail; + } + cache1->dk_version_or_hint = (uint32_t)hint; + cache1->tp_version = type->tp_version_tag; + *instr = _Py_MAKECODEUNIT(LOAD_ATTR_WITH_HINT, _Py_OPARG(*instr)); + goto success; + } + +fail: + STAT_INC(specialization_failure); + assert(!PyErr_Occurred()); + cache_backoff(cache0); + return 0; +success: + STAT_INC(specialization_success); + assert(!PyErr_Occurred()); + cache0->counter = saturating_start(); + return 0; +} + diff --git a/Tools/scripts/generate_opcode_h.py b/Tools/scripts/generate_opcode_h.py index 290f6251af1745..41ae3fe6e53686 100644 --- a/Tools/scripts/generate_opcode_h.py +++ b/Tools/scripts/generate_opcode_h.py @@ -53,6 +53,10 @@ def main(opcode_py, outfile='Include/opcode.h'): opmap = opcode['opmap'] hasjrel = opcode['hasjrel'] hasjabs = opcode['hasjabs'] + used = [ False ] * 256 + next_op = 1 + for name, op in opmap.items(): + used[op] = True with open(outfile, 'w') as fobj: fobj.write(header) for name in opcode['opname']: @@ -61,6 +65,11 @@ def main(opcode_py, outfile='Include/opcode.h'): if name == 'POP_EXCEPT': # Special entry for HAVE_ARGUMENT fobj.write("#define %-23s %3d\n" % ('HAVE_ARGUMENT', opcode['HAVE_ARGUMENT'])) + for name in opcode['_specialized_instructions']: + while used[next_op]: + next_op += 1 + fobj.write("#define %-23s %3s\n" % (name, next_op)) + used[next_op] = True fobj.write("#ifdef NEED_OPCODE_JUMP_TABLES\n") write_int_array_from_ops("_PyOpcode_RelativeJump", opcode['hasjrel'], fobj) write_int_array_from_ops("_PyOpcode_Jump", opcode['hasjrel'] + opcode['hasjabs'], fobj) From webhook-mailer at python.org Thu Jun 10 03:47:09 2021 From: webhook-mailer at python.org (markshannon) Date: Thu, 10 Jun 2021 07:47:09 -0000 Subject: [Python-checkins] bpo-44348: Move trace-info to thread-state (GH-26623) Message-ID: https://github.com/python/cpython/commit/54cb63863f19a7c64d9a3a5fd97bdfc0dd7ab374 commit: 54cb63863f19a7c64d9a3a5fd97bdfc0dd7ab374 branch: main author: Mark Shannon committer: markshannon date: 2021-06-10T08:46:59+01:00 summary: bpo-44348: Move trace-info to thread-state (GH-26623) * Move trace-info to thread state. * Correct output for pdb when turning on tracing in middle of line files: M Include/cpython/pystate.h M Lib/test/test_pdb.py M Python/ceval.c M Python/pystate.c diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h index 1049eda3e5160..56ea8d03453c1 100644 --- a/Include/cpython/pystate.h +++ b/Include/cpython/pystate.h @@ -29,6 +29,11 @@ typedef int (*Py_tracefunc)(PyObject *, PyFrameObject *, int, PyObject *); #define PyTrace_OPCODE 7 +typedef struct { + PyCodeObject *code; // The code object for the bounds. May be NULL. + PyCodeAddressRange bounds; // Only valid if code != NULL. +} PyTraceInfo; + typedef struct _cframe { /* This struct will be threaded through the C stack * allowing fast access to per-thread state that needs @@ -160,6 +165,7 @@ struct _ts { uint64_t id; CFrame root_cframe; + PyTraceInfo trace_info; _PyStackChunk *datastack_chunk; PyObject **datastack_top; diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index cd096e7dd56e8..08c0ffac591e8 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1288,8 +1288,8 @@ def test_pdb_issue_20766(): -> print('pdb %d: %s' % (i, sess._previous_sigint_handler)) (Pdb) continue pdb 1: - > (5)test_function() - -> sess.set_trace(sys._getframe()) + > (6)test_function() + -> print('pdb %d: %s' % (i, sess._previous_sigint_handler)) (Pdb) continue pdb 2: """ diff --git a/Python/ceval.c b/Python/ceval.c index 46133c9fe28dc..c42404c692bb9 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -36,14 +36,6 @@ #include -typedef struct { - PyCodeObject *code; // The code object for the bounds. May be NULL. - int instr_prev; // Only valid if code != NULL. - PyCodeAddressRange bounds; // Only valid if code != NULL. - CFrame cframe; -} PyTraceInfo; - - #ifdef Py_DEBUG /* For debugging the interpreter: */ #define LLTRACE 1 /* Low-level trace feature */ @@ -58,11 +50,11 @@ _Py_IDENTIFIER(__name__); /* Forward declarations */ Py_LOCAL_INLINE(PyObject *) call_function( - PyThreadState *tstate, PyTraceInfo *, PyObject ***pp_stack, - Py_ssize_t oparg, PyObject *kwnames); + PyThreadState *tstate, PyObject ***pp_stack, + Py_ssize_t oparg, PyObject *kwnames, int use_tracing); static PyObject * do_call_core( - PyThreadState *tstate, PyTraceInfo *, PyObject *func, - PyObject *callargs, PyObject *kwdict); + PyThreadState *tstate, PyObject *func, + PyObject *callargs, PyObject *kwdict, int use_tracing); #ifdef LLTRACE static int lltrace; @@ -70,19 +62,15 @@ static int prtrace(PyThreadState *, PyObject *, const char *); #endif static int call_trace(Py_tracefunc, PyObject *, PyThreadState *, PyFrameObject *, - PyTraceInfo *, int, PyObject *); static int call_trace_protected(Py_tracefunc, PyObject *, PyThreadState *, PyFrameObject *, - PyTraceInfo *, int, PyObject *); static void call_exc_trace(Py_tracefunc, PyObject *, - PyThreadState *, PyFrameObject *, - PyTraceInfo *trace_info); + PyThreadState *, PyFrameObject *); static int maybe_call_line_trace(Py_tracefunc, PyObject *, - PyThreadState *, PyFrameObject *, - PyTraceInfo *); -static void maybe_dtrace_line(PyFrameObject *, PyTraceInfo *); + PyThreadState *, PyFrameObject *, int); +static void maybe_dtrace_line(PyFrameObject *, PyTraceInfo *, int); static void dtrace_function_entry(PyFrameObject *); static void dtrace_function_return(PyFrameObject *); @@ -1310,7 +1298,7 @@ eval_frame_handle_pending(PyThreadState *tstate) #define DISPATCH() \ { \ - if (trace_info.cframe.use_tracing OR_DTRACE_LINE OR_LLTRACE) { \ + if (cframe.use_tracing OR_DTRACE_LINE OR_LLTRACE) { \ goto tracing_dispatch; \ } \ f->f_lasti = INSTR_OFFSET(); \ @@ -1604,25 +1592,23 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) return NULL; } - PyTraceInfo trace_info; - /* Mark trace_info as uninitialized */ - trace_info.code = NULL; + CFrame cframe; /* WARNING: Because the CFrame lives on the C stack, * but can be accessed from a heap allocated object (tstate) * strict stack discipline must be maintained. */ CFrame *prev_cframe = tstate->cframe; - trace_info.cframe.use_tracing = prev_cframe->use_tracing; - trace_info.cframe.previous = prev_cframe; - tstate->cframe = &trace_info.cframe; + cframe.use_tracing = prev_cframe->use_tracing; + cframe.previous = prev_cframe; + tstate->cframe = &cframe; /* push frame */ tstate->frame = f; specials = f->f_valuestack - FRAME_SPECIALS_SIZE; co = f->f_code; - if (trace_info.cframe.use_tracing) { + if (cframe.use_tracing) { if (tstate->c_tracefunc != NULL) { /* tstate->c_tracefunc, if defined, is a function that will be called on *every* entry @@ -1639,7 +1625,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) whenever an exception is detected. */ if (call_trace_protected(tstate->c_tracefunc, tstate->c_traceobj, - tstate, f, &trace_info, + tstate, f, PyTrace_CALL, Py_None)) { /* Trace function raised an error */ goto exit_eval_frame; @@ -1650,7 +1636,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) return itself and isn't called for "line" events */ if (call_trace_protected(tstate->c_profilefunc, tstate->c_profileobj, - tstate, f, &trace_info, + tstate, f, PyTrace_CALL, Py_None)) { /* Profile function raised an error */ goto exit_eval_frame; @@ -1780,15 +1766,17 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } tracing_dispatch: + { + int instr_prev = f->f_lasti; f->f_lasti = INSTR_OFFSET(); TRACING_NEXTOPARG(); if (PyDTrace_LINE_ENABLED()) - maybe_dtrace_line(f, &trace_info); + maybe_dtrace_line(f, &tstate->trace_info, instr_prev); /* line-by-line tracing support */ - if (trace_info.cframe.use_tracing && + if (cframe.use_tracing && tstate->c_tracefunc != NULL && !tstate->tracing) { int err; /* see maybe_call_line_trace() @@ -1797,8 +1785,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) err = maybe_call_line_trace(tstate->c_tracefunc, tstate->c_traceobj, - tstate, f, - &trace_info); + tstate, f, instr_prev); if (err) { /* trace function raised an exception */ goto error; @@ -1809,6 +1796,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) f->f_stackdepth = -1; NEXTOPARG(); } + } #ifdef LLTRACE /* Instruction tracing */ @@ -2586,7 +2574,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) if (retval == NULL) { if (tstate->c_tracefunc != NULL && _PyErr_ExceptionMatches(tstate, PyExc_StopIteration)) - call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, tstate, f, &trace_info); + call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, tstate, f); if (_PyGen_FetchStopIterationValue(&retval) == 0) { gen_status = PYGEN_RETURN; } @@ -4007,7 +3995,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) goto error; } else if (tstate->c_tracefunc != NULL) { - call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, tstate, f, &trace_info); + call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, tstate, f); } _PyErr_Clear(tstate); } @@ -4198,7 +4186,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) make it accept the `self` as a first argument. */ meth_found = (PEEK(oparg + 2) != NULL); - res = call_function(tstate, &trace_info, &sp, oparg + meth_found, NULL); + res = call_function(tstate, &sp, oparg + meth_found, NULL, cframe.use_tracing); stack_pointer = sp; STACK_SHRINK(1 - meth_found); @@ -4220,7 +4208,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) sp = stack_pointer; meth_found = (PEEK(oparg + 2) != NULL); - res = call_function(tstate, &trace_info, &sp, oparg + meth_found, names); + res = call_function(tstate, &sp, oparg + meth_found, names, cframe.use_tracing); stack_pointer = sp; STACK_SHRINK(1 - meth_found); @@ -4236,7 +4224,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) PREDICTED(CALL_FUNCTION); PyObject **sp, *res; sp = stack_pointer; - res = call_function(tstate, &trace_info, &sp, oparg, NULL); + res = call_function(tstate, &sp, oparg, NULL, cframe.use_tracing); stack_pointer = sp; PUSH(res); if (res == NULL) { @@ -4254,7 +4242,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) assert(PyTuple_GET_SIZE(names) <= oparg); /* We assume without checking that names contains only strings */ sp = stack_pointer; - res = call_function(tstate, &trace_info, &sp, oparg, names); + res = call_function(tstate, &sp, oparg, names, cframe.use_tracing); stack_pointer = sp; PUSH(res); Py_DECREF(names); @@ -4300,7 +4288,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } assert(PyTuple_CheckExact(callargs)); - result = do_call_core(tstate, &trace_info, func, callargs, kwargs); + result = do_call_core(tstate, func, callargs, kwargs, cframe.use_tracing); Py_DECREF(func); Py_DECREF(callargs); Py_XDECREF(kwargs); @@ -4492,7 +4480,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) assert(f->f_state == FRAME_EXECUTING); f->f_state = FRAME_UNWINDING; call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, - tstate, f, &trace_info); + tstate, f); } exception_unwind: @@ -4536,9 +4524,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) PUSH(val); PUSH(exc); JUMPTO(handler); - if (trace_info.cframe.use_tracing) { - trace_info.instr_prev = INT_MAX; - } /* Resume normal execution */ f->f_state = FRAME_EXECUTING; f->f_lasti = handler; @@ -4557,16 +4542,16 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) f->f_stackdepth = 0; f->f_state = FRAME_RAISED; exiting: - if (trace_info.cframe.use_tracing) { + if (cframe.use_tracing) { if (tstate->c_tracefunc) { if (call_trace_protected(tstate->c_tracefunc, tstate->c_traceobj, - tstate, f, &trace_info, PyTrace_RETURN, retval)) { + tstate, f, PyTrace_RETURN, retval)) { Py_CLEAR(retval); } } if (tstate->c_profilefunc) { if (call_trace_protected(tstate->c_profilefunc, tstate->c_profileobj, - tstate, f, &trace_info, PyTrace_RETURN, retval)) { + tstate, f, PyTrace_RETURN, retval)) { Py_CLEAR(retval); } } @@ -4575,8 +4560,8 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) /* pop frame */ exit_eval_frame: /* Restore previous cframe */ - tstate->cframe = trace_info.cframe.previous; - tstate->cframe->use_tracing = trace_info.cframe.use_tracing; + tstate->cframe = cframe.previous; + tstate->cframe->use_tracing = cframe.use_tracing; if (PyDTrace_FUNCTION_RETURN_ENABLED()) dtrace_function_return(f); @@ -5515,8 +5500,7 @@ prtrace(PyThreadState *tstate, PyObject *v, const char *str) static void call_exc_trace(Py_tracefunc func, PyObject *self, PyThreadState *tstate, - PyFrameObject *f, - PyTraceInfo *trace_info) + PyFrameObject *f) { PyObject *type, *value, *traceback, *orig_traceback, *arg; int err; @@ -5532,7 +5516,7 @@ call_exc_trace(Py_tracefunc func, PyObject *self, _PyErr_Restore(tstate, type, value, orig_traceback); return; } - err = call_trace(func, self, tstate, f, trace_info, PyTrace_EXCEPTION, arg); + err = call_trace(func, self, tstate, f, PyTrace_EXCEPTION, arg); Py_DECREF(arg); if (err == 0) { _PyErr_Restore(tstate, type, value, orig_traceback); @@ -5547,13 +5531,12 @@ call_exc_trace(Py_tracefunc func, PyObject *self, static int call_trace_protected(Py_tracefunc func, PyObject *obj, PyThreadState *tstate, PyFrameObject *frame, - PyTraceInfo *trace_info, int what, PyObject *arg) { PyObject *type, *value, *traceback; int err; _PyErr_Fetch(tstate, &type, &value, &traceback); - err = call_trace(func, obj, tstate, frame, trace_info, what, arg); + err = call_trace(func, obj, tstate, frame, what, arg); if (err == 0) { _PyErr_Restore(tstate, type, value, traceback); @@ -5572,7 +5555,6 @@ initialize_trace_info(PyTraceInfo *trace_info, PyFrameObject *frame) { if (trace_info->code != frame->f_code) { trace_info->code = frame->f_code; - trace_info->instr_prev = -1; _PyCode_InitAddressRange(frame->f_code, &trace_info->bounds); } } @@ -5580,7 +5562,6 @@ initialize_trace_info(PyTraceInfo *trace_info, PyFrameObject *frame) static int call_trace(Py_tracefunc func, PyObject *obj, PyThreadState *tstate, PyFrameObject *frame, - PyTraceInfo *trace_info, int what, PyObject *arg) { int result; @@ -5592,8 +5573,8 @@ call_trace(Py_tracefunc func, PyObject *obj, frame->f_lineno = frame->f_code->co_firstlineno; } else { - initialize_trace_info(trace_info, frame); - frame->f_lineno = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds); + initialize_trace_info(&tstate->trace_info, frame); + frame->f_lineno = _PyCode_CheckLineNumber(frame->f_lasti*2, &tstate->trace_info.bounds); } result = func(obj, frame, what, arg); frame->f_lineno = 0; @@ -5623,8 +5604,7 @@ _PyEval_CallTracing(PyObject *func, PyObject *args) /* See Objects/lnotab_notes.txt for a description of how tracing works. */ static int maybe_call_line_trace(Py_tracefunc func, PyObject *obj, - PyThreadState *tstate, PyFrameObject *frame, - PyTraceInfo *trace_info) + PyThreadState *tstate, PyFrameObject *frame, int instr_prev) { int result = 0; @@ -5632,22 +5612,21 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj, represents a jump backwards, update the frame's line number and then call the trace function if we're tracing source lines. */ - initialize_trace_info(trace_info, frame); - int lastline = trace_info->bounds.ar_line; - int line = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds); + initialize_trace_info(&tstate->trace_info, frame); + int lastline = _PyCode_CheckLineNumber(instr_prev*2, &tstate->trace_info.bounds); + int line = _PyCode_CheckLineNumber(frame->f_lasti*2, &tstate->trace_info.bounds); if (line != -1 && frame->f_trace_lines) { /* Trace backward edges or first instruction of a new line */ - if (frame->f_lasti < trace_info->instr_prev || - (line != lastline && frame->f_lasti*2 == trace_info->bounds.ar_start)) + if (frame->f_lasti < instr_prev || + (line != lastline && frame->f_lasti*2 == tstate->trace_info.bounds.ar_start)) { - result = call_trace(func, obj, tstate, frame, trace_info, PyTrace_LINE, Py_None); + result = call_trace(func, obj, tstate, frame, PyTrace_LINE, Py_None); } } /* Always emit an opcode event if we're tracing all opcodes. */ if (frame->f_trace_opcodes) { - result = call_trace(func, obj, tstate, frame, trace_info, PyTrace_OPCODE, Py_None); + result = call_trace(func, obj, tstate, frame, PyTrace_OPCODE, Py_None); } - trace_info->instr_prev = frame->f_lasti; return result; } @@ -5914,9 +5893,9 @@ PyEval_GetFuncDesc(PyObject *func) } #define C_TRACE(x, call) \ -if (trace_info->cframe.use_tracing && tstate->c_profilefunc) { \ +if (use_tracing && tstate->c_profilefunc) { \ if (call_trace(tstate->c_profilefunc, tstate->c_profileobj, \ - tstate, tstate->frame, trace_info, \ + tstate, tstate->frame, \ PyTrace_C_CALL, func)) { \ x = NULL; \ } \ @@ -5926,13 +5905,13 @@ if (trace_info->cframe.use_tracing && tstate->c_profilefunc) { \ if (x == NULL) { \ call_trace_protected(tstate->c_profilefunc, \ tstate->c_profileobj, \ - tstate, tstate->frame, trace_info, \ + tstate, tstate->frame, \ PyTrace_C_EXCEPTION, func); \ /* XXX should pass (type, value, tb) */ \ } else { \ if (call_trace(tstate->c_profilefunc, \ tstate->c_profileobj, \ - tstate, tstate->frame, trace_info, \ + tstate, tstate->frame, \ PyTrace_C_RETURN, func)) { \ Py_DECREF(x); \ x = NULL; \ @@ -5947,11 +5926,11 @@ if (trace_info->cframe.use_tracing && tstate->c_profilefunc) { \ static PyObject * trace_call_function(PyThreadState *tstate, - PyTraceInfo *trace_info, PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) { + int use_tracing = 1; PyObject *x; if (PyCFunction_CheckExact(func) || PyCMethod_CheckExact(func)) { C_TRACE(x, PyObject_Vectorcall(func, args, nargs, kwnames)); @@ -5983,10 +5962,10 @@ trace_call_function(PyThreadState *tstate, to reduce the stack consumption. */ Py_LOCAL_INLINE(PyObject *) _Py_HOT_FUNCTION call_function(PyThreadState *tstate, - PyTraceInfo *trace_info, PyObject ***pp_stack, Py_ssize_t oparg, - PyObject *kwnames) + PyObject *kwnames, + int use_tracing) { PyObject **pfunc = (*pp_stack) - oparg - 1; PyObject *func = *pfunc; @@ -5995,8 +5974,8 @@ call_function(PyThreadState *tstate, Py_ssize_t nargs = oparg - nkwargs; PyObject **stack = (*pp_stack) - nargs - nkwargs; - if (trace_info->cframe.use_tracing) { - x = trace_call_function(tstate, trace_info, func, stack, nargs, kwnames); + if (use_tracing) { + x = trace_call_function(tstate, func, stack, nargs, kwnames); } else { x = PyObject_Vectorcall(func, stack, nargs | PY_VECTORCALL_ARGUMENTS_OFFSET, kwnames); @@ -6015,10 +5994,11 @@ call_function(PyThreadState *tstate, static PyObject * do_call_core(PyThreadState *tstate, - PyTraceInfo *trace_info, PyObject *func, PyObject *callargs, - PyObject *kwdict) + PyObject *kwdict, + int use_tracing + ) { PyObject *result; @@ -6028,7 +6008,7 @@ do_call_core(PyThreadState *tstate, } else if (Py_IS_TYPE(func, &PyMethodDescr_Type)) { Py_ssize_t nargs = PyTuple_GET_SIZE(callargs); - if (nargs > 0 && trace_info->cframe.use_tracing) { + if (nargs > 0 && use_tracing) { /* We need to create a temporary bound method as argument for profiling. @@ -6587,7 +6567,8 @@ dtrace_function_return(PyFrameObject *f) /* DTrace equivalent of maybe_call_line_trace. */ static void maybe_dtrace_line(PyFrameObject *frame, - PyTraceInfo *trace_info) + PyTraceInfo *trace_info, + int instr_prev) { const char *co_filename, *co_name; @@ -6599,7 +6580,7 @@ maybe_dtrace_line(PyFrameObject *frame, /* If the last instruction falls at the start of a line or if it represents a jump backwards, update the frame's line number and call the trace function. */ - if (line != frame->f_lineno || frame->f_lasti < trace_info->instr_prev) { + if (line != frame->f_lineno || frame->f_lasti < instr_prev) { if (line != -1) { frame->f_lineno = line; co_filename = PyUnicode_AsUTF8(frame->f_code->co_filename); @@ -6611,7 +6592,6 @@ maybe_dtrace_line(PyFrameObject *frame, PyDTrace_LINE(co_filename, co_name, line); } } - trace_info->instr_prev = frame->f_lasti; } diff --git a/Python/pystate.c b/Python/pystate.c index 4a3cb24a199f1..a94a615f39569 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -688,6 +688,8 @@ new_threadstate(PyInterpreterState *interp, int init) /* If top points to entry 0, then _PyThreadState_PopLocals will try to pop this chunk */ tstate->datastack_top = &tstate->datastack_chunk->data[1]; tstate->datastack_limit = (PyObject **)(((char *)tstate->datastack_chunk) + DATA_STACK_CHUNK_SIZE); + /* Mark trace_info as uninitialized */ + tstate->trace_info.code = NULL; if (init) { _PyThreadState_Init(tstate); From webhook-mailer at python.org Thu Jun 10 07:37:26 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 10 Jun 2021 11:37:26 -0000 Subject: [Python-checkins] bpo-44363: Get test_capi passing with address sanitizer (GH-26639) Message-ID: https://github.com/python/cpython/commit/31aa0dbff4c1d39c9d77c6c8f4a61d0e46c1268b commit: 31aa0dbff4c1d39c9d77c6c8f4a61d0e46c1268b branch: main author: Mark Shannon committer: pablogsal date: 2021-06-10T12:37:22+01:00 summary: bpo-44363: Get test_capi passing with address sanitizer (GH-26639) files: A Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst M Include/Python.h M Modules/_testcapimodule.c diff --git a/Include/Python.h b/Include/Python.h index 4d0335d3c52c36..04858f281cab8d 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -63,13 +63,22 @@ #include "pyport.h" #include "pymacro.h" -/* A convenient way for code to know if clang's memory sanitizer is enabled. */ +/* A convenient way for code to know if sanitizers are enabled. */ #if defined(__has_feature) # if __has_feature(memory_sanitizer) # if !defined(_Py_MEMORY_SANITIZER) # define _Py_MEMORY_SANITIZER # endif # endif +# if __has_feature(address_sanitizer) +# if !defined(_Py_ADDRESS_SANITIZER) +# define _Py_ADDRESS_SANITIZER +# endif +# endif +#elif defined(__GNUC__) +# if defined(__SANITIZE_ADDRESS__) +# define _Py_ADDRESS_SANITIZER +# endif #endif #include "pymath.h" diff --git a/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst b/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst new file mode 100644 index 00000000000000..28468cbd2b682b --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst @@ -0,0 +1,2 @@ +Account for address sanitizer in test_capi. test_capi now passes when run +GCC address sanitizer. diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index ab47949d89e635..b983deeac6aafb 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -4784,6 +4784,10 @@ check_pyobject_forbidden_bytes_is_freed(PyObject *self, PyObject *Py_UNUSED(args static PyObject* check_pyobject_freed_is_freed(PyObject *self, PyObject *Py_UNUSED(args)) { + /* This test would fail if run with the address sanitizer */ +#ifdef _Py_ADDRESS_SANITIZER + Py_RETURN_NONE; +#else PyObject *op = _PyObject_CallNoArg((PyObject *)&PyBaseObject_Type); if (op == NULL) { return NULL; @@ -4793,6 +4797,7 @@ check_pyobject_freed_is_freed(PyObject *self, PyObject *Py_UNUSED(args)) Py_SET_REFCNT(op, 1); /* object memory is freed! */ return test_pyobject_is_freed("check_pyobject_freed_is_freed", op); +#endif } From webhook-mailer at python.org Thu Jun 10 08:01:30 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 10 Jun 2021 12:01:30 -0000 Subject: [Python-checkins] bpo-44363: Get test_capi passing with address sanitizer (GH-26639) Message-ID: https://github.com/python/cpython/commit/865269458fde83f58f056d02a777e4328c763880 commit: 865269458fde83f58f056d02a777e4328c763880 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-10T05:01:22-07:00 summary: bpo-44363: Get test_capi passing with address sanitizer (GH-26639) (cherry picked from commit 31aa0dbff4c1d39c9d77c6c8f4a61d0e46c1268b) Co-authored-by: Mark Shannon files: A Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst M Include/Python.h M Modules/_testcapimodule.c diff --git a/Include/Python.h b/Include/Python.h index dcd0a57ac1f03f..acee38c41539d6 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -63,13 +63,22 @@ #include "pyport.h" #include "pymacro.h" -/* A convenient way for code to know if clang's memory sanitizer is enabled. */ +/* A convenient way for code to know if sanitizers are enabled. */ #if defined(__has_feature) # if __has_feature(memory_sanitizer) # if !defined(_Py_MEMORY_SANITIZER) # define _Py_MEMORY_SANITIZER # endif # endif +# if __has_feature(address_sanitizer) +# if !defined(_Py_ADDRESS_SANITIZER) +# define _Py_ADDRESS_SANITIZER +# endif +# endif +#elif defined(__GNUC__) +# if defined(__SANITIZE_ADDRESS__) +# define _Py_ADDRESS_SANITIZER +# endif #endif /* Debug-mode build with pymalloc implies PYMALLOC_DEBUG. diff --git a/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst b/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst new file mode 100644 index 00000000000000..28468cbd2b682b --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst @@ -0,0 +1,2 @@ +Account for address sanitizer in test_capi. test_capi now passes when run +GCC address sanitizer. diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 4f6f193202b9b4..53a6752d5fb2b1 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -4688,6 +4688,10 @@ check_pyobject_forbidden_bytes_is_freed(PyObject *self, PyObject *Py_UNUSED(args static PyObject* check_pyobject_freed_is_freed(PyObject *self, PyObject *Py_UNUSED(args)) { + /* This test would fail if run with the address sanitizer */ +#ifdef _Py_ADDRESS_SANITIZER + Py_RETURN_NONE; +#else PyObject *op = _PyObject_CallNoArg((PyObject *)&PyBaseObject_Type); if (op == NULL) { return NULL; @@ -4697,6 +4701,7 @@ check_pyobject_freed_is_freed(PyObject *self, PyObject *Py_UNUSED(args)) Py_SET_REFCNT(op, 1); /* object memory is freed! */ return test_pyobject_is_freed("check_pyobject_freed_is_freed", op); +#endif } From webhook-mailer at python.org Thu Jun 10 08:02:26 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 10 Jun 2021 12:02:26 -0000 Subject: [Python-checkins] bpo-44363: Get test_capi passing with address sanitizer (GH-26639) Message-ID: https://github.com/python/cpython/commit/0895e62c9b4f03b83120d44cb32587804084e0e2 commit: 0895e62c9b4f03b83120d44cb32587804084e0e2 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-10T05:02:22-07:00 summary: bpo-44363: Get test_capi passing with address sanitizer (GH-26639) (cherry picked from commit 31aa0dbff4c1d39c9d77c6c8f4a61d0e46c1268b) Co-authored-by: Mark Shannon files: A Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst M Include/Python.h M Modules/_testcapimodule.c diff --git a/Include/Python.h b/Include/Python.h index 4d0335d3c52c36..04858f281cab8d 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -63,13 +63,22 @@ #include "pyport.h" #include "pymacro.h" -/* A convenient way for code to know if clang's memory sanitizer is enabled. */ +/* A convenient way for code to know if sanitizers are enabled. */ #if defined(__has_feature) # if __has_feature(memory_sanitizer) # if !defined(_Py_MEMORY_SANITIZER) # define _Py_MEMORY_SANITIZER # endif # endif +# if __has_feature(address_sanitizer) +# if !defined(_Py_ADDRESS_SANITIZER) +# define _Py_ADDRESS_SANITIZER +# endif +# endif +#elif defined(__GNUC__) +# if defined(__SANITIZE_ADDRESS__) +# define _Py_ADDRESS_SANITIZER +# endif #endif #include "pymath.h" diff --git a/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst b/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst new file mode 100644 index 00000000000000..28468cbd2b682b --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst @@ -0,0 +1,2 @@ +Account for address sanitizer in test_capi. test_capi now passes when run +GCC address sanitizer. diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index c759dcc0f152bf..ef1fb71cc90487 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -4829,6 +4829,10 @@ check_pyobject_forbidden_bytes_is_freed(PyObject *self, PyObject *Py_UNUSED(args static PyObject* check_pyobject_freed_is_freed(PyObject *self, PyObject *Py_UNUSED(args)) { + /* This test would fail if run with the address sanitizer */ +#ifdef _Py_ADDRESS_SANITIZER + Py_RETURN_NONE; +#else PyObject *op = _PyObject_CallNoArg((PyObject *)&PyBaseObject_Type); if (op == NULL) { return NULL; @@ -4838,6 +4842,7 @@ check_pyobject_freed_is_freed(PyObject *self, PyObject *Py_UNUSED(args)) Py_SET_REFCNT(op, 1); /* object memory is freed! */ return test_pyobject_is_freed("check_pyobject_freed_is_freed", op); +#endif } From webhook-mailer at python.org Thu Jun 10 10:24:26 2021 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Jun 2021 14:24:26 -0000 Subject: [Python-checkins] [3.10] bpo-44242: [Enum] remove missing bits test from Flag creation (GH-26586) (GH-26635) Message-ID: https://github.com/python/cpython/commit/749648609de89f14581190ea34b9c0968787a701 commit: 749648609de89f14581190ea34b9c0968787a701 branch: 3.10 author: Ethan Furman committer: ethanfurman date: 2021-06-10T07:24:20-07:00 summary: [3.10] bpo-44242: [Enum] remove missing bits test from Flag creation (GH-26586) (GH-26635) Move the check for missing named flags in flag aliases from Flag creation to a new *verify* decorator.. (cherry picked from commit eea8148b7dff5ffc7b84433859ac819b1d92a74d) Co-authored-by: Ethan Furman files: A Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst M Doc/library/enum.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 137fe500c9569..2d19ef6f25657 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -28,8 +28,8 @@ An enumeration: * is a set of symbolic names (members) bound to unique values * can be iterated over to return its members in definition order -* uses :meth:`call` syntax to return members by value -* uses :meth:`index` syntax to return members by name +* uses *call* syntax to return members by value +* uses *index* syntax to return members by name Enumerations are created either by using the :keyword:`class` syntax, or by using function-call syntax:: @@ -91,6 +91,12 @@ Module Contents the bitwise operators without losing their :class:`IntFlag` membership. :class:`IntFlag` members are also subclasses of :class:`int`. + :class:`EnumCheck` + + An enumeration with the values ``CONTINUOUS``, ``NAMED_FLAGS``, and + ``UNIQUE``, for use with :func:`verify` to ensure various constraints + are met by a given enumeration. + :class:`FlagBoundary` An enumeration with the values ``STRICT``, ``CONFORM``, ``EJECT``, and @@ -117,9 +123,14 @@ Module Contents Enum class decorator that ensures only one name is bound to any one value. + :func:`verify` + + Enum class decorator that checks user-selectable constraints on an + enumeration. + .. versionadded:: 3.6 ``Flag``, ``IntFlag``, ``auto`` -.. versionadded:: 3.10 ``StrEnum`` +.. versionadded:: 3.10 ``StrEnum``, ``EnumCheck``, ``FlagBoundary`` Data Types @@ -514,6 +525,65 @@ Data Types Using :class:`auto` with :class:`IntFlag` results in integers that are powers of two, starting with ``1``. +.. class:: EnumCheck + + *EnumCheck* contains the options used by the :func:`verify` decorator to ensure + various constraints; failed constraints result in a :exc:`TypeError`. + + .. attribute:: UNIQUE + + Ensure that each value has only one name:: + + >>> from enum import Enum, verify, UNIQUE + >>> @verify(UNIQUE) + ... class Color(Enum): + ... RED = 1 + ... GREEN = 2 + ... BLUE = 3 + ... CRIMSON = 1 + Traceback (most recent call last): + ... + ValueError: aliases found in : CRIMSON -> RED + + + .. attribute:: CONTINUOUS + + Ensure that there are no missing values between the lowest-valued member + and the highest-valued member:: + + >>> from enum import Enum, verify, CONTINUOUS + >>> @verify(CONTINUOUS) + ... class Color(Enum): + ... RED = 1 + ... GREEN = 2 + ... BLUE = 5 + Traceback (most recent call last): + ... + ValueError: invalid enum 'Color': missing values 3, 4 + + .. attribute:: NAMED_FLAGS + + Ensure that any flag groups/masks contain only named flags -- useful when + values are specified instead of being generated by :func:`auto` + + >>> from enum import Flag, verify, NAMED_FLAGS + >>> @verify(NAMED_FLAGS) + ... class Color(Flag): + ... RED = 1 + ... GREEN = 2 + ... BLUE = 4 + ... WHITE = 15 + ... NEON = 31 + Traceback (most recent call last): + ... + ValueError: invalid Flag 'Color': 'WHITE' is missing a named flag for value 8; 'NEON' is missing named flags for values 8, 16 + +.. note:: + + CONTINUOUS and NAMED_FLAGS are designed to work with integer-valued members. + +.. versionadded:: 3.10 + .. class:: FlagBoundary *FlagBoundary* controls how out-of-range values are handled in *Flag* and its @@ -575,6 +645,7 @@ Data Types >>> KeepFlag(2**2 + 2**4) KeepFlag.BLUE|0x10 +.. versionadded:: 3.10 Utilites and Decorators ----------------------- @@ -627,3 +698,11 @@ Utilites and Decorators Traceback (most recent call last): ... ValueError: duplicate values found in : FOUR -> THREE + +.. decorator:: verify + + A :keyword:`class` decorator specifically for enumerations. Members from + :class:`EnumCheck` are used to specify which constraints should be checked + on the decorated enumeration. + +.. versionadded:: 3.10 diff --git a/Lib/enum.py b/Lib/enum.py index 01f431001a9bf..f74cc8c31c84f 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -6,10 +6,10 @@ __all__ = [ 'EnumType', 'EnumMeta', 'Enum', 'IntEnum', 'StrEnum', 'Flag', 'IntFlag', - 'auto', 'unique', - 'property', + 'auto', 'unique', 'property', 'verify', 'FlagBoundary', 'STRICT', 'CONFORM', 'EJECT', 'KEEP', 'global_flag_repr', 'global_enum_repr', 'global_enum', + 'EnumCheck', 'CONTINUOUS', 'NAMED_FLAGS', 'UNIQUE', ] @@ -89,6 +89,9 @@ def _break_on_call_reduce(self, proto): setattr(obj, '__module__', '') def _iter_bits_lsb(num): + # num must be an integer + if isinstance(num, Enum): + num = num.value while num: b = num & (~num + 1) yield b @@ -538,13 +541,6 @@ def __new__(metacls, cls, bases, classdict, *, boundary=None, _simple=False, **k else: # multi-bit flags are considered aliases multi_bit_total |= flag_value - if enum_class._boundary_ is not KEEP: - missed = list(_iter_bits_lsb(multi_bit_total & ~single_bit_total)) - if missed: - raise TypeError( - 'invalid Flag %r -- missing values: %s' - % (cls, ', '.join((str(i) for i in missed))) - ) enum_class._flag_mask_ = single_bit_total # # set correct __iter__ @@ -688,7 +684,10 @@ def __members__(cls): return MappingProxyType(cls._member_map_) def __repr__(cls): - return "" % cls.__name__ + if Flag is not None and issubclass(cls, Flag): + return "" % cls.__name__ + else: + return "" % cls.__name__ def __reversed__(cls): """ @@ -1303,7 +1302,8 @@ def __invert__(self): else: # calculate flags not in this member self._inverted_ = self.__class__(self._flag_mask_ ^ self._value_) - self._inverted_._inverted_ = self + if isinstance(self._inverted_, self.__class__): + self._inverted_._inverted_ = self return self._inverted_ @@ -1561,6 +1561,91 @@ def convert_class(cls): return enum_class return convert_class + at _simple_enum(StrEnum) +class EnumCheck: + """ + various conditions to check an enumeration for + """ + CONTINUOUS = "no skipped integer values" + NAMED_FLAGS = "multi-flag aliases may not contain unnamed flags" + UNIQUE = "one name per value" +CONTINUOUS, NAMED_FLAGS, UNIQUE = EnumCheck + + +class verify: + """ + Check an enumeration for various constraints. (see EnumCheck) + """ + def __init__(self, *checks): + self.checks = checks + def __call__(self, enumeration): + checks = self.checks + cls_name = enumeration.__name__ + if Flag is not None and issubclass(enumeration, Flag): + enum_type = 'flag' + elif issubclass(enumeration, Enum): + enum_type = 'enum' + else: + raise TypeError("the 'verify' decorator only works with Enum and Flag") + for check in checks: + if check is UNIQUE: + # check for duplicate names + duplicates = [] + for name, member in enumeration.__members__.items(): + if name != member.name: + duplicates.append((name, member.name)) + if duplicates: + alias_details = ', '.join( + ["%s -> %s" % (alias, name) for (alias, name) in duplicates]) + raise ValueError('aliases found in %r: %s' % + (enumeration, alias_details)) + elif check is CONTINUOUS: + values = set(e.value for e in enumeration) + if len(values) < 2: + continue + low, high = min(values), max(values) + missing = [] + if enum_type == 'flag': + # check for powers of two + for i in range(_high_bit(low)+1, _high_bit(high)): + if 2**i not in values: + missing.append(2**i) + elif enum_type == 'enum': + # check for powers of one + for i in range(low+1, high): + if i not in values: + missing.append(i) + else: + raise Exception('verify: unknown type %r' % enum_type) + if missing: + raise ValueError('invalid %s %r: missing values %s' % ( + enum_type, cls_name, ', '.join((str(m) for m in missing))) + ) + elif check is NAMED_FLAGS: + # examine each alias and check for unnamed flags + member_names = enumeration._member_names_ + member_values = [m.value for m in enumeration] + missing = [] + for name, alias in enumeration._member_map_.items(): + if name in member_names: + # not an alias + continue + values = list(_iter_bits_lsb(alias.value)) + missed = [v for v in values if v not in member_values] + if missed: + plural = ('', 's')[len(missed) > 1] + a = ('a ', '')[len(missed) > 1] + missing.append('%r is missing %snamed flag%s for value%s %s' % ( + name, a, plural, plural, + ', '.join(str(v) for v in missed) + )) + if missing: + raise ValueError( + 'invalid Flag %r: %s' + % (cls_name, '; '.join(missing)) + ) + return enumeration + def _test_simple_enum(checked_enum, simple_enum): """ A function that can be used to test an enum created with :func:`_simple_enum` diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index e918b03cc6c52..34b190b0d289f 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -9,6 +9,7 @@ from collections import OrderedDict from enum import Enum, IntEnum, StrEnum, EnumType, Flag, IntFlag, unique, auto from enum import STRICT, CONFORM, EJECT, KEEP, _simple_enum, _test_simple_enum +from enum import verify, UNIQUE, CONTINUOUS, NAMED_FLAGS from io import StringIO from pickle import dumps, loads, PicklingError, HIGHEST_PROTOCOL from test import support @@ -2774,13 +2775,6 @@ class Dupes(Enum): third = auto() self.assertEqual([Dupes.first, Dupes.second, Dupes.third], list(Dupes)) - def test_bizarre(self): - with self.assertRaisesRegex(TypeError, "invalid Flag 'Bizarre' -- missing values: 1, 2"): - class Bizarre(Flag): - b = 3 - c = 4 - d = 6 - def test_multiple_mixin(self): class AllMixin: @classproperty @@ -3345,12 +3339,6 @@ def test_bool(self): for f in Open: self.assertEqual(bool(f.value), bool(f)) - def test_bizarre(self): - with self.assertRaisesRegex(TypeError, "invalid Flag 'Bizarre' -- missing values: 1, 2"): - class Bizarre(IntFlag): - b = 3 - c = 4 - d = 6 def test_multiple_mixin(self): class AllMixin: @@ -3459,6 +3447,7 @@ class Clean(Enum): one = 1 two = 'dos' tres = 4.0 + # @unique class Cleaner(IntEnum): single = 1 @@ -3484,12 +3473,137 @@ class Dirtier(IntEnum): turkey = 3 def test_unique_with_name(self): - @unique + @verify(UNIQUE) class Silly(Enum): one = 1 two = 'dos' name = 3 - @unique + # + @verify(UNIQUE) + class Sillier(IntEnum): + single = 1 + name = 2 + triple = 3 + value = 4 + +class TestVerify(unittest.TestCase): + + def test_continuous(self): + @verify(CONTINUOUS) + class Auto(Enum): + FIRST = auto() + SECOND = auto() + THIRD = auto() + FORTH = auto() + # + @verify(CONTINUOUS) + class Manual(Enum): + FIRST = 3 + SECOND = 4 + THIRD = 5 + FORTH = 6 + # + with self.assertRaisesRegex(ValueError, 'invalid enum .Missing.: missing values 5, 6, 7, 8, 9, 10, 12'): + @verify(CONTINUOUS) + class Missing(Enum): + FIRST = 3 + SECOND = 4 + THIRD = 11 + FORTH = 13 + # + with self.assertRaisesRegex(ValueError, 'invalid flag .Incomplete.: missing values 32'): + @verify(CONTINUOUS) + class Incomplete(Flag): + FIRST = 4 + SECOND = 8 + THIRD = 16 + FORTH = 64 + # + with self.assertRaisesRegex(ValueError, 'invalid flag .StillIncomplete.: missing values 16'): + @verify(CONTINUOUS) + class StillIncomplete(Flag): + FIRST = 4 + SECOND = 8 + THIRD = 11 + FORTH = 32 + + + def test_composite(self): + class Bizarre(Flag): + b = 3 + c = 4 + d = 6 + self.assertEqual(list(Bizarre), [Bizarre.c]) + self.assertEqual(Bizarre.b.value, 3) + self.assertEqual(Bizarre.c.value, 4) + self.assertEqual(Bizarre.d.value, 6) + with self.assertRaisesRegex( + ValueError, + "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2", + ): + @verify(NAMED_FLAGS) + class Bizarre(Flag): + b = 3 + c = 4 + d = 6 + # + class Bizarre(IntFlag): + b = 3 + c = 4 + d = 6 + self.assertEqual(list(Bizarre), [Bizarre.c]) + self.assertEqual(Bizarre.b.value, 3) + self.assertEqual(Bizarre.c.value, 4) + self.assertEqual(Bizarre.d.value, 6) + with self.assertRaisesRegex( + ValueError, + "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2", + ): + @verify(NAMED_FLAGS) + class Bizarre(IntFlag): + b = 3 + c = 4 + d = 6 + + def test_unique_clean(self): + @verify(UNIQUE) + class Clean(Enum): + one = 1 + two = 'dos' + tres = 4.0 + # + @verify(UNIQUE) + class Cleaner(IntEnum): + single = 1 + double = 2 + triple = 3 + + def test_unique_dirty(self): + with self.assertRaisesRegex(ValueError, 'tres.*one'): + @verify(UNIQUE) + class Dirty(Enum): + one = 1 + two = 'dos' + tres = 1 + with self.assertRaisesRegex( + ValueError, + 'double.*single.*turkey.*triple', + ): + @verify(UNIQUE) + class Dirtier(IntEnum): + single = 1 + double = 1 + triple = 3 + turkey = 3 + + def test_unique_with_name(self): + @verify(UNIQUE) + class Silly(Enum): + one = 1 + two = 'dos' + name = 3 + # + @verify(UNIQUE) class Sillier(IntEnum): single = 1 name = 2 diff --git a/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst b/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst new file mode 100644 index 0000000000000..39740b6736591 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst @@ -0,0 +1,2 @@ +Remove missing flag check from Enum creation and move into a ``verify`` +decorator. From webhook-mailer at python.org Thu Jun 10 12:27:34 2021 From: webhook-mailer at python.org (mdickinson) Date: Thu, 10 Jun 2021 16:27:34 -0000 Subject: [Python-checkins] bpo-44364:Add non integral tests for `sqrt()` (#26625) Message-ID: https://github.com/python/cpython/commit/90cd4330329a99e52f7141db5e0a469d30088e66 commit: 90cd4330329a99e52f7141db5e0a469d30088e66 branch: main author: Ajith Ramachandran committer: mdickinson date: 2021-06-10T17:27:26+01:00 summary: bpo-44364:Add non integral tests for `sqrt()` (#26625) * Add non integral tests for `sqrt()` Co-authored-by: Mark Dickinson files: A Misc/NEWS.d/next/Tests/2021-06-09-15-32-05.bpo-44364.zu9Zee.rst M Lib/test/test_math.py diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index 3d128749bec40..9eb455a5cb197 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -1499,6 +1499,10 @@ def testSinh(self): def testSqrt(self): self.assertRaises(TypeError, math.sqrt) self.ftest('sqrt(0)', math.sqrt(0), 0) + self.ftest('sqrt(0)', math.sqrt(0.0), 0.0) + self.ftest('sqrt(2.5)', math.sqrt(2.5), 1.5811388300841898) + self.ftest('sqrt(0.25)', math.sqrt(0.25), 0.5) + self.ftest('sqrt(25.25)', math.sqrt(25.25), 5.024937810560445) self.ftest('sqrt(1)', math.sqrt(1), 1) self.ftest('sqrt(4)', math.sqrt(4), 2) self.assertEqual(math.sqrt(INF), INF) diff --git a/Misc/NEWS.d/next/Tests/2021-06-09-15-32-05.bpo-44364.zu9Zee.rst b/Misc/NEWS.d/next/Tests/2021-06-09-15-32-05.bpo-44364.zu9Zee.rst new file mode 100644 index 0000000000000..12b80e8e6533b --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-09-15-32-05.bpo-44364.zu9Zee.rst @@ -0,0 +1 @@ +Add non integral tests for :func:`math.sqrt` function. From webhook-mailer at python.org Thu Jun 10 12:42:18 2021 From: webhook-mailer at python.org (mdickinson) Date: Thu, 10 Jun 2021 16:42:18 -0000 Subject: [Python-checkins] bpo-44357:Add `math.cbrt()` function: Cube Root (GH-26622) Message-ID: https://github.com/python/cpython/commit/ac867f10b49322e25f34d2d8abd8e63c86834750 commit: ac867f10b49322e25f34d2d8abd8e63c86834750 branch: main author: Ajith Ramachandran committer: mdickinson date: 2021-06-10T17:42:09+01:00 summary: bpo-44357:Add `math.cbrt()` function: Cube Root (GH-26622) * Add math.cbrt() function: Cube Root Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> Co-authored-by: Mark Dickinson files: A Misc/NEWS.d/next/Library/2021-06-09-08-32-39.bpo-44357.70Futb.rst M Doc/library/math.rst M Doc/whatsnew/3.11.rst M Lib/test/test_math.py M Misc/ACKS M Modules/mathmodule.c diff --git a/Doc/library/math.rst b/Doc/library/math.rst index 145bac4966e18..7aa543ae5d47e 100644 --- a/Doc/library/math.rst +++ b/Doc/library/math.rst @@ -342,6 +342,13 @@ necessarily has no fractional bits. Power and logarithmic functions ------------------------------- +.. function:: cbrt(x) + + Return the cube root of *x*. + + .. versionadded:: 3.11 + + .. function:: exp(x) Return *e* raised to the power *x*, where *e* = 2.718281... is the base diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index dcab3679b200c..ba7c456aa2156 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -93,6 +93,13 @@ Support :PEP:`515`-style initialization of :class:`~fractions.Fraction` from string. (Contributed by Sergey B Kirpichev in :issue:`44258`.) +math +---- + +Add :func:`math.cbrt()`: return the cube root of x. +(Contributed by Ajith Ramachandran in :issue:`44357`.) + + Removed ======= * :class:`smtpd.MailmanProxy` is now removed as it is unusable without diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index 9eb455a5cb197..da162844e202a 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -377,6 +377,22 @@ def testAtan2(self): self.assertTrue(math.isnan(math.atan2(NAN, INF))) self.assertTrue(math.isnan(math.atan2(NAN, NAN))) + def testCbrt(self): + self.assertRaises(TypeError, math.cbrt) + self.ftest('cbrt(0)', math.cbrt(0), 0) + self.ftest('cbrt(1)', math.cbrt(1), 1) + self.ftest('cbrt(8)', math.cbrt(8), 2) + self.ftest('cbrt(0.0)', math.cbrt(0.0), 0.0) + self.ftest('cbrt(-0.0)', math.cbrt(-0.0), -0.0) + self.ftest('cbrt(1.2)', math.cbrt(1.2), 1.062658569182611) + self.ftest('cbrt(-2.6)', math.cbrt(-2.6), -1.375068867074141) + self.ftest('cbrt(27)', math.cbrt(27), 3) + self.ftest('cbrt(-1)', math.cbrt(-1), -1) + self.ftest('cbrt(-27)', math.cbrt(-27), -3) + self.assertEqual(math.cbrt(INF), INF) + self.assertEqual(math.cbrt(NINF), NINF) + self.assertTrue(math.isnan(math.cbrt(NAN))) + def testCeil(self): self.assertRaises(TypeError, math.ceil) self.assertEqual(int, type(math.ceil(0.5))) diff --git a/Misc/ACKS b/Misc/ACKS index 0cb738b3a12ee..e8c99257ec611 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1415,6 +1415,7 @@ J?r?me Radix Burton Radons Abhilash Raj Shorya Raj +Ajith Ramachandran Dhushyanth Ramasamy Ashwin Ramaswami Jeff Ramnani diff --git a/Misc/NEWS.d/next/Library/2021-06-09-08-32-39.bpo-44357.70Futb.rst b/Misc/NEWS.d/next/Library/2021-06-09-08-32-39.bpo-44357.70Futb.rst new file mode 100644 index 0000000000000..f169a464f9fe7 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-09-08-32-39.bpo-44357.70Futb.rst @@ -0,0 +1 @@ +Added a function that returns cube root of the given number :func:`math.cbrt` \ No newline at end of file diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index a2a2db29be343..b3429c5653c95 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -1182,6 +1182,9 @@ FUNC2(atan2, m_atan2, FUNC1(atanh, m_atanh, 0, "atanh($module, x, /)\n--\n\n" "Return the inverse hyperbolic tangent of x.") +FUNC1(cbrt, cbrt, 0, + "cbrt($module, x, /)\n--\n\n" + "Return the cube root of x.") /*[clinic input] math.ceil @@ -3550,6 +3553,7 @@ static PyMethodDef math_methods[] = { {"atan", math_atan, METH_O, math_atan_doc}, {"atan2", (PyCFunction)(void(*)(void))math_atan2, METH_FASTCALL, math_atan2_doc}, {"atanh", math_atanh, METH_O, math_atanh_doc}, + {"cbrt", math_cbrt, METH_O, math_cbrt_doc}, MATH_CEIL_METHODDEF {"copysign", (PyCFunction)(void(*)(void))math_copysign, METH_FASTCALL, math_copysign_doc}, {"cos", math_cos, METH_O, math_cos_doc}, From webhook-mailer at python.org Thu Jun 10 13:48:01 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 10 Jun 2021 17:48:01 -0000 Subject: [Python-checkins] Run address sanitiser in the GitHub CI (GH-26640) Message-ID: https://github.com/python/cpython/commit/f82262b186c4aa944d2ab0a5468724dfca2ecc3d commit: f82262b186c4aa944d2ab0a5468724dfca2ecc3d branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-10T18:47:53+01:00 summary: Run address sanitiser in the GitHub CI (GH-26640) files: M .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aaa95dbec86c8..00506bdf1af39 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -218,3 +218,46 @@ jobs: run: make pythoninfo - name: SSL tests run: ./python Lib/test/ssltests.py + + + build_asan: + name: 'Address sanitizer' + runs-on: ubuntu-20.04 + needs: check_source + if: needs.check_source.outputs.run_tests == 'true' + env: + OPENSSL_VER: 1.1.1k + ASAN_OPTIONS: detect_leaks=0:allocator_may_return_null=1:handle_segv=0 + steps: + - uses: actions/checkout at v2 + - name: Register gcc problem matcher + run: echo "::add-matcher::.github/problem-matchers/gcc.json" + - name: Install Dependencies + run: sudo ./.github/workflows/posix-deps-apt.sh + - name: Configure OpenSSL env vars + run: | + echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV + echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV + echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV + - name: 'Restore OpenSSL build' + id: cache-openssl + uses: actions/cache at v2.1.6 + with: + path: ./multissl/openssl/${{ env.OPENSSL_VER }} + key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} + - name: Install OpenSSL + if: steps.cache-openssl.outputs.cache-hit != 'true' + run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux + - name: Add ccache to PATH + run: | + echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV + - name: Configure ccache action + uses: hendrikmuhs/ccache-action at v1 + - name: Configure CPython + run: ./configure --with-address-sanitizer --without-pymalloc + - name: Build CPython + run: make -j4 + - name: Display build info + run: make pythoninfo + - name: Tests + run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu -x test_ctypes test_crypt test_decimal test_faulthandler test_interpreters test___all__ test_idle test_tix test_tk test_ttk_guionly test_ttk_textonly" From webhook-mailer at python.org Thu Jun 10 15:14:19 2021 From: webhook-mailer at python.org (terryjreedy) Date: Thu, 10 Jun 2021 19:14:19 -0000 Subject: [Python-checkins] bpo-33962: Use ttk spinbox for IDLE indent space config (GH-22954) Message-ID: https://github.com/python/cpython/commit/42d5a4fc3b35e45cdd237d56a04e98894d0a31f5 commit: 42d5a4fc3b35e45cdd237d56a04e98894d0a31f5 branch: main author: Mark Roseman committer: terryjreedy date: 2021-06-10T15:13:55-04:00 summary: bpo-33962: Use ttk spinbox for IDLE indent space config (GH-22954) If ttk.Spinbox is not available (Tk < 8.5.9) use readonly ttk.Combobox. Co-authored-by: Terry Jan Reedy files: A Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index e3fa34f2090e4..6d0893680274b 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -15,9 +15,10 @@ StringVar, BooleanVar, IntVar, TRUE, FALSE, TOP, BOTTOM, RIGHT, LEFT, SOLID, GROOVE, NONE, BOTH, X, Y, W, E, EW, NS, NSEW, NW, - HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END) + HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END, TclError) from tkinter.ttk import (Frame, LabelFrame, Button, Checkbutton, Entry, Label, - OptionMenu, Notebook, Radiobutton, Scrollbar, Style) + OptionMenu, Notebook, Radiobutton, Scrollbar, Style, + Spinbox, Combobox) from tkinter import colorchooser import tkinter.font as tkfont from tkinter import messagebox @@ -101,8 +102,9 @@ def create_widgets(self): highpage: HighPage fontpage: FontPage keyspage: KeysPage - genpage: GenPage - extpage: self.create_page_extensions + winpage: WinPage + shedpage: ShedPage + extpage: ExtPage Methods: create_action_buttons @@ -170,26 +172,15 @@ def create_action_buttons(self): return outer def ok(self): - """Apply config changes, then dismiss dialog. - - Methods: - apply - destroy: inherited - """ + """Apply config changes, then dismiss dialog.""" self.apply() self.destroy() def apply(self): - """Apply config changes and leave dialog open. - - Methods: - deactivate_current_config - save_all_changed_extensions - activate_config_changes - """ + """Apply config changes and leave dialog open.""" self.deactivate_current_config() changes.save_all() - self.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.activate_config_changes() def cancel(self): @@ -299,12 +290,11 @@ class FontPage(Frame): def __init__(self, master, highpage): super().__init__(master) self.highlight_sample = highpage.highlight_sample - self.create_page_font_tab() + self.create_page_font() self.load_font_cfg() - self.load_tab_cfg() - def create_page_font_tab(self): - """Return frame of widgets for Font/Tabs tab. + def create_page_font(self): + """Return frame of widgets for Font tab. Fonts: Enable users to provisionally change font face, size, or boldness and to see the consequence of proposed choices. Each @@ -328,11 +318,6 @@ def create_page_font_tab(self): Set_samples applies a new font constructed from the font vars to font_sample and to highlight_sample on the highlight page. - Tabs: Enable users to change spaces entered for indent tabs. - Changing indent_scale value with the mouse sets Var space_num, - which invokes the default callback to add an entry to - changes. Load_tab_cfg initializes space_num to default. - Widgets for FontPage(Frame): (*) widgets bound to self frame_font: LabelFrame frame_font_name: Frame @@ -345,23 +330,16 @@ def create_page_font_tab(self): (*)bold_toggle: Checkbutton - font_bold frame_sample: LabelFrame (*)font_sample: Label - frame_indent: LabelFrame - indent_title: Label - (*)indent_scale: Scale - space_num """ self.font_name = tracers.add(StringVar(self), self.var_changed_font) self.font_size = tracers.add(StringVar(self), self.var_changed_font) self.font_bold = tracers.add(BooleanVar(self), self.var_changed_font) - self.space_num = tracers.add(IntVar(self), ('main', 'Indent', 'num-spaces')) # Define frames and widgets. - frame_font = LabelFrame( - self, borderwidth=2, relief=GROOVE, text=' Shell/Editor Font ') - frame_sample = LabelFrame( - self, borderwidth=2, relief=GROOVE, - text=' Font Sample (Editable) ') - frame_indent = LabelFrame( - self, borderwidth=2, relief=GROOVE, text=' Indentation Width ') + frame_font = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Shell/Editor Font ') + frame_sample = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Font Sample (Editable) ') # frame_font. frame_font_name = Frame(frame_font) frame_font_param = Frame(frame_font) @@ -385,13 +363,6 @@ def create_page_font_tab(self): self.font_sample = font_sample_frame.text self.font_sample.config(wrap=NONE, width=1, height=1) self.font_sample.insert(END, font_sample_text) - # frame_indent. - indent_title = Label( - frame_indent, justify=LEFT, - text='Python Standard: 4 Spaces!') - self.indent_scale = Scale( - frame_indent, variable=self.space_num, - orient='horizontal', tickinterval=2, from_=2, to=16) # Grid and pack widgets: self.columnconfigure(1, weight=1) @@ -399,7 +370,6 @@ def create_page_font_tab(self): frame_font.grid(row=0, column=0, padx=5, pady=5) frame_sample.grid(row=0, column=1, rowspan=3, padx=5, pady=5, sticky='nsew') - frame_indent.grid(row=1, column=0, padx=5, pady=5, sticky='ew') # frame_font. frame_font_name.pack(side=TOP, padx=5, pady=5, fill=X) frame_font_param.pack(side=TOP, padx=5, pady=5, fill=X) @@ -411,9 +381,6 @@ def create_page_font_tab(self): self.bold_toggle.pack(side=LEFT, anchor=W, padx=20) # frame_sample. font_sample_frame.pack(expand=TRUE, fill=BOTH) - # frame_indent. - indent_title.pack(side=TOP, anchor=W, padx=5) - self.indent_scale.pack(side=TOP, padx=5, fill=X) def load_font_cfg(self): """Load current configuration settings for the font options. @@ -487,22 +454,6 @@ def set_samples(self, event=None): self.font_sample['font'] = new_font self.highlight_sample['font'] = new_font - def load_tab_cfg(self): - """Load current configuration settings for the tab options. - - Attributes updated: - space_num: Set to value from idleConf. - """ - # Set indent sizes. - space_num = idleConf.GetOption( - 'main', 'Indent', 'num-spaces', default=4, type='int') - self.space_num.set(space_num) - - def var_changed_space_num(self, *params): - "Store change to indentation size." - value = self.space_num.get() - changes.add_option('main', 'Indent', 'num-spaces', value) - class HighPage(Frame): @@ -515,7 +466,7 @@ def __init__(self, master, extpage): self.load_theme_cfg() def create_page_highlight(self): - """Return frame of widgets for Highlighting tab. + """Return frame of widgets for Highlights tab. Enable users to provisionally change foreground and background colors applied to textual tags. Color mappings are stored in @@ -1617,40 +1568,41 @@ def create_page_windows(self): """Return frame of widgets for Windows tab. Enable users to provisionally change general window options. - Function load_windows_cfg initializes tk variables idleConf. + Function load_windows_cfg initializes tk variable idleConf. Radiobuttons startup_shell_on and startup_editor_on set var startup_edit. Entry boxes win_width_int and win_height_int set var win_width and win_height. Setting var_name invokes the default callback that adds option to changes. - Widgets for WinPage(Frame): (*) widgets bound to self + Widgets for WinPage(Frame): > vars, bound to self frame_window: LabelFrame frame_run: Frame startup_title: Label - (*)startup_editor_on: Radiobutton - startup_edit - (*)startup_shell_on: Radiobutton - startup_edit + startup_editor_on: Radiobutton > startup_edit + startup_shell_on: Radiobutton > startup_edit frame_win_size: Frame win_size_title: Label win_width_title: Label - (*)win_width_int: Entry - win_width + win_width_int: Entry > win_width win_height_title: Label - (*)win_height_int: Entry - win_height - frame_cursor_blink: Frame - cursor_blink_title: Label - (*)cursor_blink_bool: Checkbutton - cursor_blink + win_height_int: Entry > win_height + frame_cursor: Frame + indent_title: Label + indent_chooser: Spinbox (Combobox < 8.5.9) > indent_spaces + blink_on: Checkbutton > cursor_blink frame_autocomplete: Frame auto_wait_title: Label - (*)auto_wait_int: Entry - autocomplete_wait + auto_wait_int: Entry > autocomplete_wait frame_paren1: Frame paren_style_title: Label - (*)paren_style_type: OptionMenu - paren_style + paren_style_type: OptionMenu > paren_style frame_paren2: Frame paren_time_title: Label - (*)paren_flash_time: Entry - flash_delay - (*)bell_on: Checkbutton - paren_bell + paren_flash_time: Entry > flash_delay + bell_on: Checkbutton > paren_bell frame_format: Frame format_width_title: Label - (*)format_width_int: Entry - format_width + format_width_int: Entry > format_width """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1659,6 +1611,8 @@ def create_page_windows(self): StringVar(self), ('main', 'EditorWindow', 'width')) self.win_height = tracers.add( StringVar(self), ('main', 'EditorWindow', 'height')) + self.indent_spaces = tracers.add( + StringVar(self), ('main', 'Indent', 'num-spaces')) self.cursor_blink = tracers.add( BooleanVar(self), ('main', 'EditorWindow', 'cursor-blink')) self.autocomplete_wait = tracers.add( @@ -1699,18 +1653,28 @@ def create_page_windows(self): validatecommand=self.digits_only, validate='key', ) - frame_cursor_blink = Frame(frame_window, borderwidth=0) - cursor_blink_title = Label(frame_cursor_blink, text='Cursor Blink') - self.cursor_blink_bool = Checkbutton(frame_cursor_blink, - variable=self.cursor_blink, width=1) + frame_cursor = Frame(frame_window, borderwidth=0) + indent_title = Label(frame_cursor, + text='Indent spaces (4 is standard)') + try: + self.indent_chooser = Spinbox( + frame_cursor, textvariable=self.indent_spaces, + from_=1, to=10, width=2, + validatecommand=self.digits_only, validate='key') + except TclError: + self.indent_chooser = Combobox( + frame_cursor, textvariable=self.indent_spaces, + state="readonly", values=list(range(1,11)), width=3) + cursor_blink_title = Label(frame_cursor, text='Cursor Blink') + self.cursor_blink_bool = Checkbutton(frame_cursor, text="Cursor blink", + variable=self.cursor_blink) frame_autocomplete = Frame(frame_window, borderwidth=0,) auto_wait_title = Label(frame_autocomplete, - text='Completions Popup Wait (milliseconds)') - self.auto_wait_int = Entry(frame_autocomplete, width=6, - textvariable=self.autocomplete_wait, - validatecommand=self.digits_only, - validate='key') + text='Completions Popup Wait (milliseconds)') + self.auto_wait_int = Entry( + frame_autocomplete, textvariable=self.autocomplete_wait, + width=6, validatecommand=self.digits_only, validate='key') frame_paren1 = Frame(frame_window, borderwidth=0) paren_style_title = Label(frame_paren1, text='Paren Match Style') @@ -1722,7 +1686,8 @@ def create_page_windows(self): frame_paren2, text='Time Match Displayed (milliseconds)\n' '(0 is until next input)') self.paren_flash_time = Entry( - frame_paren2, textvariable=self.flash_delay, width=6) + frame_paren2, textvariable=self.flash_delay, width=6, + validatecommand=self.digits_only, validate='key') self.bell_on = Checkbutton( frame_paren2, text="Bell on Mismatch", variable=self.paren_bell) frame_format = Frame(frame_window, borderwidth=0) @@ -1747,10 +1712,11 @@ def create_page_windows(self): win_height_title.pack(side=RIGHT, anchor=E, pady=5) self.win_width_int.pack(side=RIGHT, anchor=E, padx=10, pady=5) win_width_title.pack(side=RIGHT, anchor=E, pady=5) - # frame_cursor_blink. - frame_cursor_blink.pack(side=TOP, padx=5, pady=0, fill=X) - cursor_blink_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.cursor_blink_bool.pack(side=LEFT, padx=5, pady=5) + # frame_cursor. + frame_cursor.pack(side=TOP, padx=5, pady=0, fill=X) + indent_title.pack(side=LEFT, anchor=W, padx=5) + self.indent_chooser.pack(side=LEFT, anchor=W, padx=10) + self.cursor_blink_bool.pack(side=RIGHT, anchor=E, padx=15, pady=5) # frame_autocomplete. frame_autocomplete.pack(side=TOP, padx=5, pady=0, fill=X) auto_wait_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -1776,6 +1742,8 @@ def load_windows_cfg(self): 'main', 'EditorWindow', 'width', type='int')) self.win_height.set(idleConf.GetOption( 'main', 'EditorWindow', 'height', type='int')) + self.indent_spaces.set(idleConf.GetOption( + 'main', 'Indent', 'num-spaces', type='int')) self.cursor_blink.set(idleConf.GetOption( 'main', 'EditorWindow', 'cursor-blink', type='bool')) self.autocomplete_wait.set(idleConf.GetOption( diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index f71d1b1bc09a0..3005ce08c9bf4 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -73,13 +73,13 @@ def test_click_ok(self): def test_click_apply(self): d = dialog deactivate = d.deactivate_current_config = mock.Mock() - save_ext = d.save_all_changed_extensions = mock.Mock() + save_ext = d.extpage.save_all_changed_extensions = mock.Mock() activate = d.activate_config_changes = mock.Mock() d.buttons['Apply'].invoke() deactivate.assert_called_once() save_ext.assert_called_once() activate.assert_called_once() - del d.save_all_changed_extensions + del d.extpage.save_all_changed_extensions del d.activate_config_changes, d.deactivate_current_config def test_click_cancel(self): @@ -260,27 +260,6 @@ def test_set_samples(self): d.set_samples = Func() # Re-mask for other tests. -class IndentTest(unittest.TestCase): - - @classmethod - def setUpClass(cls): - cls.page = dialog.fontpage - cls.page.update() - - def test_load_tab_cfg(self): - d = self.page - d.space_num.set(16) - d.load_tab_cfg() - self.assertEqual(d.space_num.get(), 4) - - def test_indent_scale(self): - d = self.page - changes.clear() - d.indent_scale.set(20) - self.assertEqual(d.space_num.get(), 16) - self.assertEqual(mainpage, {'Indent': {'num-spaces': '16'}}) - - class HighPageTest(unittest.TestCase): """Test that highlight tab widgets enable users to make changes. @@ -1250,6 +1229,12 @@ def test_editor_size(self): d.win_width_int.insert(0, '11') self.assertEqual(mainpage, {'EditorWindow': {'width': '11'}}) + def test_indent_spaces(self): + d = self.page + d.indent_chooser.set(6) + self.assertEqual(d.indent_spaces.get(), '6') + self.assertEqual(mainpage, {'Indent': {'num-spaces': '6'}}) + def test_cursor_blink(self): self.page.cursor_blink_bool.invoke() self.assertEqual(mainpage, {'EditorWindow': {'cursor-blink': 'False'}}) @@ -1278,7 +1263,7 @@ def test_paragraph(self): self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) -class GenPageTest(unittest.TestCase): +class ShedPageTest(unittest.TestCase): """Test that shed tab widgets enable users to make changes. Test that widget actions set vars, that var changes add diff --git a/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst b/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst new file mode 100644 index 0000000000000..b15fa8f184792 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst @@ -0,0 +1,2 @@ +Move the indent space setting from the Font tab to the new Windows tab. +Patch by Mark Roseman and Terry Jan Reedy. From webhook-mailer at python.org Thu Jun 10 15:40:56 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 10 Jun 2021 19:40:56 -0000 Subject: [Python-checkins] bpo-33962: Use ttk spinbox for IDLE indent space config (GH-22954) Message-ID: https://github.com/python/cpython/commit/9b889433c7bb3ed7e2b4655f024b49d97fe412fb commit: 9b889433c7bb3ed7e2b4655f024b49d97fe412fb branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-10T12:40:39-07:00 summary: bpo-33962: Use ttk spinbox for IDLE indent space config (GH-22954) If ttk.Spinbox is not available (Tk < 8.5.9) use readonly ttk.Combobox. Co-authored-by: Terry Jan Reedy (cherry picked from commit 42d5a4fc3b35e45cdd237d56a04e98894d0a31f5) Co-authored-by: Mark Roseman files: A Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index e3fa34f2090e4..6d0893680274b 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -15,9 +15,10 @@ StringVar, BooleanVar, IntVar, TRUE, FALSE, TOP, BOTTOM, RIGHT, LEFT, SOLID, GROOVE, NONE, BOTH, X, Y, W, E, EW, NS, NSEW, NW, - HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END) + HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END, TclError) from tkinter.ttk import (Frame, LabelFrame, Button, Checkbutton, Entry, Label, - OptionMenu, Notebook, Radiobutton, Scrollbar, Style) + OptionMenu, Notebook, Radiobutton, Scrollbar, Style, + Spinbox, Combobox) from tkinter import colorchooser import tkinter.font as tkfont from tkinter import messagebox @@ -101,8 +102,9 @@ def create_widgets(self): highpage: HighPage fontpage: FontPage keyspage: KeysPage - genpage: GenPage - extpage: self.create_page_extensions + winpage: WinPage + shedpage: ShedPage + extpage: ExtPage Methods: create_action_buttons @@ -170,26 +172,15 @@ def create_action_buttons(self): return outer def ok(self): - """Apply config changes, then dismiss dialog. - - Methods: - apply - destroy: inherited - """ + """Apply config changes, then dismiss dialog.""" self.apply() self.destroy() def apply(self): - """Apply config changes and leave dialog open. - - Methods: - deactivate_current_config - save_all_changed_extensions - activate_config_changes - """ + """Apply config changes and leave dialog open.""" self.deactivate_current_config() changes.save_all() - self.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.activate_config_changes() def cancel(self): @@ -299,12 +290,11 @@ class FontPage(Frame): def __init__(self, master, highpage): super().__init__(master) self.highlight_sample = highpage.highlight_sample - self.create_page_font_tab() + self.create_page_font() self.load_font_cfg() - self.load_tab_cfg() - def create_page_font_tab(self): - """Return frame of widgets for Font/Tabs tab. + def create_page_font(self): + """Return frame of widgets for Font tab. Fonts: Enable users to provisionally change font face, size, or boldness and to see the consequence of proposed choices. Each @@ -328,11 +318,6 @@ def create_page_font_tab(self): Set_samples applies a new font constructed from the font vars to font_sample and to highlight_sample on the highlight page. - Tabs: Enable users to change spaces entered for indent tabs. - Changing indent_scale value with the mouse sets Var space_num, - which invokes the default callback to add an entry to - changes. Load_tab_cfg initializes space_num to default. - Widgets for FontPage(Frame): (*) widgets bound to self frame_font: LabelFrame frame_font_name: Frame @@ -345,23 +330,16 @@ def create_page_font_tab(self): (*)bold_toggle: Checkbutton - font_bold frame_sample: LabelFrame (*)font_sample: Label - frame_indent: LabelFrame - indent_title: Label - (*)indent_scale: Scale - space_num """ self.font_name = tracers.add(StringVar(self), self.var_changed_font) self.font_size = tracers.add(StringVar(self), self.var_changed_font) self.font_bold = tracers.add(BooleanVar(self), self.var_changed_font) - self.space_num = tracers.add(IntVar(self), ('main', 'Indent', 'num-spaces')) # Define frames and widgets. - frame_font = LabelFrame( - self, borderwidth=2, relief=GROOVE, text=' Shell/Editor Font ') - frame_sample = LabelFrame( - self, borderwidth=2, relief=GROOVE, - text=' Font Sample (Editable) ') - frame_indent = LabelFrame( - self, borderwidth=2, relief=GROOVE, text=' Indentation Width ') + frame_font = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Shell/Editor Font ') + frame_sample = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Font Sample (Editable) ') # frame_font. frame_font_name = Frame(frame_font) frame_font_param = Frame(frame_font) @@ -385,13 +363,6 @@ def create_page_font_tab(self): self.font_sample = font_sample_frame.text self.font_sample.config(wrap=NONE, width=1, height=1) self.font_sample.insert(END, font_sample_text) - # frame_indent. - indent_title = Label( - frame_indent, justify=LEFT, - text='Python Standard: 4 Spaces!') - self.indent_scale = Scale( - frame_indent, variable=self.space_num, - orient='horizontal', tickinterval=2, from_=2, to=16) # Grid and pack widgets: self.columnconfigure(1, weight=1) @@ -399,7 +370,6 @@ def create_page_font_tab(self): frame_font.grid(row=0, column=0, padx=5, pady=5) frame_sample.grid(row=0, column=1, rowspan=3, padx=5, pady=5, sticky='nsew') - frame_indent.grid(row=1, column=0, padx=5, pady=5, sticky='ew') # frame_font. frame_font_name.pack(side=TOP, padx=5, pady=5, fill=X) frame_font_param.pack(side=TOP, padx=5, pady=5, fill=X) @@ -411,9 +381,6 @@ def create_page_font_tab(self): self.bold_toggle.pack(side=LEFT, anchor=W, padx=20) # frame_sample. font_sample_frame.pack(expand=TRUE, fill=BOTH) - # frame_indent. - indent_title.pack(side=TOP, anchor=W, padx=5) - self.indent_scale.pack(side=TOP, padx=5, fill=X) def load_font_cfg(self): """Load current configuration settings for the font options. @@ -487,22 +454,6 @@ def set_samples(self, event=None): self.font_sample['font'] = new_font self.highlight_sample['font'] = new_font - def load_tab_cfg(self): - """Load current configuration settings for the tab options. - - Attributes updated: - space_num: Set to value from idleConf. - """ - # Set indent sizes. - space_num = idleConf.GetOption( - 'main', 'Indent', 'num-spaces', default=4, type='int') - self.space_num.set(space_num) - - def var_changed_space_num(self, *params): - "Store change to indentation size." - value = self.space_num.get() - changes.add_option('main', 'Indent', 'num-spaces', value) - class HighPage(Frame): @@ -515,7 +466,7 @@ def __init__(self, master, extpage): self.load_theme_cfg() def create_page_highlight(self): - """Return frame of widgets for Highlighting tab. + """Return frame of widgets for Highlights tab. Enable users to provisionally change foreground and background colors applied to textual tags. Color mappings are stored in @@ -1617,40 +1568,41 @@ def create_page_windows(self): """Return frame of widgets for Windows tab. Enable users to provisionally change general window options. - Function load_windows_cfg initializes tk variables idleConf. + Function load_windows_cfg initializes tk variable idleConf. Radiobuttons startup_shell_on and startup_editor_on set var startup_edit. Entry boxes win_width_int and win_height_int set var win_width and win_height. Setting var_name invokes the default callback that adds option to changes. - Widgets for WinPage(Frame): (*) widgets bound to self + Widgets for WinPage(Frame): > vars, bound to self frame_window: LabelFrame frame_run: Frame startup_title: Label - (*)startup_editor_on: Radiobutton - startup_edit - (*)startup_shell_on: Radiobutton - startup_edit + startup_editor_on: Radiobutton > startup_edit + startup_shell_on: Radiobutton > startup_edit frame_win_size: Frame win_size_title: Label win_width_title: Label - (*)win_width_int: Entry - win_width + win_width_int: Entry > win_width win_height_title: Label - (*)win_height_int: Entry - win_height - frame_cursor_blink: Frame - cursor_blink_title: Label - (*)cursor_blink_bool: Checkbutton - cursor_blink + win_height_int: Entry > win_height + frame_cursor: Frame + indent_title: Label + indent_chooser: Spinbox (Combobox < 8.5.9) > indent_spaces + blink_on: Checkbutton > cursor_blink frame_autocomplete: Frame auto_wait_title: Label - (*)auto_wait_int: Entry - autocomplete_wait + auto_wait_int: Entry > autocomplete_wait frame_paren1: Frame paren_style_title: Label - (*)paren_style_type: OptionMenu - paren_style + paren_style_type: OptionMenu > paren_style frame_paren2: Frame paren_time_title: Label - (*)paren_flash_time: Entry - flash_delay - (*)bell_on: Checkbutton - paren_bell + paren_flash_time: Entry > flash_delay + bell_on: Checkbutton > paren_bell frame_format: Frame format_width_title: Label - (*)format_width_int: Entry - format_width + format_width_int: Entry > format_width """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1659,6 +1611,8 @@ def create_page_windows(self): StringVar(self), ('main', 'EditorWindow', 'width')) self.win_height = tracers.add( StringVar(self), ('main', 'EditorWindow', 'height')) + self.indent_spaces = tracers.add( + StringVar(self), ('main', 'Indent', 'num-spaces')) self.cursor_blink = tracers.add( BooleanVar(self), ('main', 'EditorWindow', 'cursor-blink')) self.autocomplete_wait = tracers.add( @@ -1699,18 +1653,28 @@ def create_page_windows(self): validatecommand=self.digits_only, validate='key', ) - frame_cursor_blink = Frame(frame_window, borderwidth=0) - cursor_blink_title = Label(frame_cursor_blink, text='Cursor Blink') - self.cursor_blink_bool = Checkbutton(frame_cursor_blink, - variable=self.cursor_blink, width=1) + frame_cursor = Frame(frame_window, borderwidth=0) + indent_title = Label(frame_cursor, + text='Indent spaces (4 is standard)') + try: + self.indent_chooser = Spinbox( + frame_cursor, textvariable=self.indent_spaces, + from_=1, to=10, width=2, + validatecommand=self.digits_only, validate='key') + except TclError: + self.indent_chooser = Combobox( + frame_cursor, textvariable=self.indent_spaces, + state="readonly", values=list(range(1,11)), width=3) + cursor_blink_title = Label(frame_cursor, text='Cursor Blink') + self.cursor_blink_bool = Checkbutton(frame_cursor, text="Cursor blink", + variable=self.cursor_blink) frame_autocomplete = Frame(frame_window, borderwidth=0,) auto_wait_title = Label(frame_autocomplete, - text='Completions Popup Wait (milliseconds)') - self.auto_wait_int = Entry(frame_autocomplete, width=6, - textvariable=self.autocomplete_wait, - validatecommand=self.digits_only, - validate='key') + text='Completions Popup Wait (milliseconds)') + self.auto_wait_int = Entry( + frame_autocomplete, textvariable=self.autocomplete_wait, + width=6, validatecommand=self.digits_only, validate='key') frame_paren1 = Frame(frame_window, borderwidth=0) paren_style_title = Label(frame_paren1, text='Paren Match Style') @@ -1722,7 +1686,8 @@ def create_page_windows(self): frame_paren2, text='Time Match Displayed (milliseconds)\n' '(0 is until next input)') self.paren_flash_time = Entry( - frame_paren2, textvariable=self.flash_delay, width=6) + frame_paren2, textvariable=self.flash_delay, width=6, + validatecommand=self.digits_only, validate='key') self.bell_on = Checkbutton( frame_paren2, text="Bell on Mismatch", variable=self.paren_bell) frame_format = Frame(frame_window, borderwidth=0) @@ -1747,10 +1712,11 @@ def create_page_windows(self): win_height_title.pack(side=RIGHT, anchor=E, pady=5) self.win_width_int.pack(side=RIGHT, anchor=E, padx=10, pady=5) win_width_title.pack(side=RIGHT, anchor=E, pady=5) - # frame_cursor_blink. - frame_cursor_blink.pack(side=TOP, padx=5, pady=0, fill=X) - cursor_blink_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.cursor_blink_bool.pack(side=LEFT, padx=5, pady=5) + # frame_cursor. + frame_cursor.pack(side=TOP, padx=5, pady=0, fill=X) + indent_title.pack(side=LEFT, anchor=W, padx=5) + self.indent_chooser.pack(side=LEFT, anchor=W, padx=10) + self.cursor_blink_bool.pack(side=RIGHT, anchor=E, padx=15, pady=5) # frame_autocomplete. frame_autocomplete.pack(side=TOP, padx=5, pady=0, fill=X) auto_wait_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -1776,6 +1742,8 @@ def load_windows_cfg(self): 'main', 'EditorWindow', 'width', type='int')) self.win_height.set(idleConf.GetOption( 'main', 'EditorWindow', 'height', type='int')) + self.indent_spaces.set(idleConf.GetOption( + 'main', 'Indent', 'num-spaces', type='int')) self.cursor_blink.set(idleConf.GetOption( 'main', 'EditorWindow', 'cursor-blink', type='bool')) self.autocomplete_wait.set(idleConf.GetOption( diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index f71d1b1bc09a0..3005ce08c9bf4 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -73,13 +73,13 @@ def test_click_ok(self): def test_click_apply(self): d = dialog deactivate = d.deactivate_current_config = mock.Mock() - save_ext = d.save_all_changed_extensions = mock.Mock() + save_ext = d.extpage.save_all_changed_extensions = mock.Mock() activate = d.activate_config_changes = mock.Mock() d.buttons['Apply'].invoke() deactivate.assert_called_once() save_ext.assert_called_once() activate.assert_called_once() - del d.save_all_changed_extensions + del d.extpage.save_all_changed_extensions del d.activate_config_changes, d.deactivate_current_config def test_click_cancel(self): @@ -260,27 +260,6 @@ def test_set_samples(self): d.set_samples = Func() # Re-mask for other tests. -class IndentTest(unittest.TestCase): - - @classmethod - def setUpClass(cls): - cls.page = dialog.fontpage - cls.page.update() - - def test_load_tab_cfg(self): - d = self.page - d.space_num.set(16) - d.load_tab_cfg() - self.assertEqual(d.space_num.get(), 4) - - def test_indent_scale(self): - d = self.page - changes.clear() - d.indent_scale.set(20) - self.assertEqual(d.space_num.get(), 16) - self.assertEqual(mainpage, {'Indent': {'num-spaces': '16'}}) - - class HighPageTest(unittest.TestCase): """Test that highlight tab widgets enable users to make changes. @@ -1250,6 +1229,12 @@ def test_editor_size(self): d.win_width_int.insert(0, '11') self.assertEqual(mainpage, {'EditorWindow': {'width': '11'}}) + def test_indent_spaces(self): + d = self.page + d.indent_chooser.set(6) + self.assertEqual(d.indent_spaces.get(), '6') + self.assertEqual(mainpage, {'Indent': {'num-spaces': '6'}}) + def test_cursor_blink(self): self.page.cursor_blink_bool.invoke() self.assertEqual(mainpage, {'EditorWindow': {'cursor-blink': 'False'}}) @@ -1278,7 +1263,7 @@ def test_paragraph(self): self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) -class GenPageTest(unittest.TestCase): +class ShedPageTest(unittest.TestCase): """Test that shed tab widgets enable users to make changes. Test that widget actions set vars, that var changes add diff --git a/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst b/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst new file mode 100644 index 0000000000000..b15fa8f184792 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst @@ -0,0 +1,2 @@ +Move the indent space setting from the Font tab to the new Windows tab. +Patch by Mark Roseman and Terry Jan Reedy. From webhook-mailer at python.org Thu Jun 10 16:16:47 2021 From: webhook-mailer at python.org (terryjreedy) Date: Thu, 10 Jun 2021 20:16:47 -0000 Subject: [Python-checkins] bpo-33962: Use ttk spinbox for IDLE indent space config (GH-22954) Message-ID: https://github.com/python/cpython/commit/540ebc4a8874f94152980be7778f3f793b65f111 commit: 540ebc4a8874f94152980be7778f3f793b65f111 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2021-06-10T16:16:38-04:00 summary: bpo-33962: Use ttk spinbox for IDLE indent space config (GH-22954) If ttk.Spinbox is not available (Tk < 8.5.9) use readonly ttk.Combobox. Co-authored-by: Terry Jan Reedy (cherry picked from commit 42d5a4fc3b35e45cdd237d56a04e98894d0a31f5) Co-authored-by: Mark Roseman files: A Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst M Lib/idlelib/configdialog.py M Lib/idlelib/idle_test/test_configdialog.py diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index e3fa34f2090e4..6d0893680274b 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -15,9 +15,10 @@ StringVar, BooleanVar, IntVar, TRUE, FALSE, TOP, BOTTOM, RIGHT, LEFT, SOLID, GROOVE, NONE, BOTH, X, Y, W, E, EW, NS, NSEW, NW, - HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END) + HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END, TclError) from tkinter.ttk import (Frame, LabelFrame, Button, Checkbutton, Entry, Label, - OptionMenu, Notebook, Radiobutton, Scrollbar, Style) + OptionMenu, Notebook, Radiobutton, Scrollbar, Style, + Spinbox, Combobox) from tkinter import colorchooser import tkinter.font as tkfont from tkinter import messagebox @@ -101,8 +102,9 @@ def create_widgets(self): highpage: HighPage fontpage: FontPage keyspage: KeysPage - genpage: GenPage - extpage: self.create_page_extensions + winpage: WinPage + shedpage: ShedPage + extpage: ExtPage Methods: create_action_buttons @@ -170,26 +172,15 @@ def create_action_buttons(self): return outer def ok(self): - """Apply config changes, then dismiss dialog. - - Methods: - apply - destroy: inherited - """ + """Apply config changes, then dismiss dialog.""" self.apply() self.destroy() def apply(self): - """Apply config changes and leave dialog open. - - Methods: - deactivate_current_config - save_all_changed_extensions - activate_config_changes - """ + """Apply config changes and leave dialog open.""" self.deactivate_current_config() changes.save_all() - self.save_all_changed_extensions() + self.extpage.save_all_changed_extensions() self.activate_config_changes() def cancel(self): @@ -299,12 +290,11 @@ class FontPage(Frame): def __init__(self, master, highpage): super().__init__(master) self.highlight_sample = highpage.highlight_sample - self.create_page_font_tab() + self.create_page_font() self.load_font_cfg() - self.load_tab_cfg() - def create_page_font_tab(self): - """Return frame of widgets for Font/Tabs tab. + def create_page_font(self): + """Return frame of widgets for Font tab. Fonts: Enable users to provisionally change font face, size, or boldness and to see the consequence of proposed choices. Each @@ -328,11 +318,6 @@ def create_page_font_tab(self): Set_samples applies a new font constructed from the font vars to font_sample and to highlight_sample on the highlight page. - Tabs: Enable users to change spaces entered for indent tabs. - Changing indent_scale value with the mouse sets Var space_num, - which invokes the default callback to add an entry to - changes. Load_tab_cfg initializes space_num to default. - Widgets for FontPage(Frame): (*) widgets bound to self frame_font: LabelFrame frame_font_name: Frame @@ -345,23 +330,16 @@ def create_page_font_tab(self): (*)bold_toggle: Checkbutton - font_bold frame_sample: LabelFrame (*)font_sample: Label - frame_indent: LabelFrame - indent_title: Label - (*)indent_scale: Scale - space_num """ self.font_name = tracers.add(StringVar(self), self.var_changed_font) self.font_size = tracers.add(StringVar(self), self.var_changed_font) self.font_bold = tracers.add(BooleanVar(self), self.var_changed_font) - self.space_num = tracers.add(IntVar(self), ('main', 'Indent', 'num-spaces')) # Define frames and widgets. - frame_font = LabelFrame( - self, borderwidth=2, relief=GROOVE, text=' Shell/Editor Font ') - frame_sample = LabelFrame( - self, borderwidth=2, relief=GROOVE, - text=' Font Sample (Editable) ') - frame_indent = LabelFrame( - self, borderwidth=2, relief=GROOVE, text=' Indentation Width ') + frame_font = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Shell/Editor Font ') + frame_sample = LabelFrame(self, borderwidth=2, relief=GROOVE, + text=' Font Sample (Editable) ') # frame_font. frame_font_name = Frame(frame_font) frame_font_param = Frame(frame_font) @@ -385,13 +363,6 @@ def create_page_font_tab(self): self.font_sample = font_sample_frame.text self.font_sample.config(wrap=NONE, width=1, height=1) self.font_sample.insert(END, font_sample_text) - # frame_indent. - indent_title = Label( - frame_indent, justify=LEFT, - text='Python Standard: 4 Spaces!') - self.indent_scale = Scale( - frame_indent, variable=self.space_num, - orient='horizontal', tickinterval=2, from_=2, to=16) # Grid and pack widgets: self.columnconfigure(1, weight=1) @@ -399,7 +370,6 @@ def create_page_font_tab(self): frame_font.grid(row=0, column=0, padx=5, pady=5) frame_sample.grid(row=0, column=1, rowspan=3, padx=5, pady=5, sticky='nsew') - frame_indent.grid(row=1, column=0, padx=5, pady=5, sticky='ew') # frame_font. frame_font_name.pack(side=TOP, padx=5, pady=5, fill=X) frame_font_param.pack(side=TOP, padx=5, pady=5, fill=X) @@ -411,9 +381,6 @@ def create_page_font_tab(self): self.bold_toggle.pack(side=LEFT, anchor=W, padx=20) # frame_sample. font_sample_frame.pack(expand=TRUE, fill=BOTH) - # frame_indent. - indent_title.pack(side=TOP, anchor=W, padx=5) - self.indent_scale.pack(side=TOP, padx=5, fill=X) def load_font_cfg(self): """Load current configuration settings for the font options. @@ -487,22 +454,6 @@ def set_samples(self, event=None): self.font_sample['font'] = new_font self.highlight_sample['font'] = new_font - def load_tab_cfg(self): - """Load current configuration settings for the tab options. - - Attributes updated: - space_num: Set to value from idleConf. - """ - # Set indent sizes. - space_num = idleConf.GetOption( - 'main', 'Indent', 'num-spaces', default=4, type='int') - self.space_num.set(space_num) - - def var_changed_space_num(self, *params): - "Store change to indentation size." - value = self.space_num.get() - changes.add_option('main', 'Indent', 'num-spaces', value) - class HighPage(Frame): @@ -515,7 +466,7 @@ def __init__(self, master, extpage): self.load_theme_cfg() def create_page_highlight(self): - """Return frame of widgets for Highlighting tab. + """Return frame of widgets for Highlights tab. Enable users to provisionally change foreground and background colors applied to textual tags. Color mappings are stored in @@ -1617,40 +1568,41 @@ def create_page_windows(self): """Return frame of widgets for Windows tab. Enable users to provisionally change general window options. - Function load_windows_cfg initializes tk variables idleConf. + Function load_windows_cfg initializes tk variable idleConf. Radiobuttons startup_shell_on and startup_editor_on set var startup_edit. Entry boxes win_width_int and win_height_int set var win_width and win_height. Setting var_name invokes the default callback that adds option to changes. - Widgets for WinPage(Frame): (*) widgets bound to self + Widgets for WinPage(Frame): > vars, bound to self frame_window: LabelFrame frame_run: Frame startup_title: Label - (*)startup_editor_on: Radiobutton - startup_edit - (*)startup_shell_on: Radiobutton - startup_edit + startup_editor_on: Radiobutton > startup_edit + startup_shell_on: Radiobutton > startup_edit frame_win_size: Frame win_size_title: Label win_width_title: Label - (*)win_width_int: Entry - win_width + win_width_int: Entry > win_width win_height_title: Label - (*)win_height_int: Entry - win_height - frame_cursor_blink: Frame - cursor_blink_title: Label - (*)cursor_blink_bool: Checkbutton - cursor_blink + win_height_int: Entry > win_height + frame_cursor: Frame + indent_title: Label + indent_chooser: Spinbox (Combobox < 8.5.9) > indent_spaces + blink_on: Checkbutton > cursor_blink frame_autocomplete: Frame auto_wait_title: Label - (*)auto_wait_int: Entry - autocomplete_wait + auto_wait_int: Entry > autocomplete_wait frame_paren1: Frame paren_style_title: Label - (*)paren_style_type: OptionMenu - paren_style + paren_style_type: OptionMenu > paren_style frame_paren2: Frame paren_time_title: Label - (*)paren_flash_time: Entry - flash_delay - (*)bell_on: Checkbutton - paren_bell + paren_flash_time: Entry > flash_delay + bell_on: Checkbutton > paren_bell frame_format: Frame format_width_title: Label - (*)format_width_int: Entry - format_width + format_width_int: Entry > format_width """ # Integer values need StringVar because int('') raises. self.startup_edit = tracers.add( @@ -1659,6 +1611,8 @@ def create_page_windows(self): StringVar(self), ('main', 'EditorWindow', 'width')) self.win_height = tracers.add( StringVar(self), ('main', 'EditorWindow', 'height')) + self.indent_spaces = tracers.add( + StringVar(self), ('main', 'Indent', 'num-spaces')) self.cursor_blink = tracers.add( BooleanVar(self), ('main', 'EditorWindow', 'cursor-blink')) self.autocomplete_wait = tracers.add( @@ -1699,18 +1653,28 @@ def create_page_windows(self): validatecommand=self.digits_only, validate='key', ) - frame_cursor_blink = Frame(frame_window, borderwidth=0) - cursor_blink_title = Label(frame_cursor_blink, text='Cursor Blink') - self.cursor_blink_bool = Checkbutton(frame_cursor_blink, - variable=self.cursor_blink, width=1) + frame_cursor = Frame(frame_window, borderwidth=0) + indent_title = Label(frame_cursor, + text='Indent spaces (4 is standard)') + try: + self.indent_chooser = Spinbox( + frame_cursor, textvariable=self.indent_spaces, + from_=1, to=10, width=2, + validatecommand=self.digits_only, validate='key') + except TclError: + self.indent_chooser = Combobox( + frame_cursor, textvariable=self.indent_spaces, + state="readonly", values=list(range(1,11)), width=3) + cursor_blink_title = Label(frame_cursor, text='Cursor Blink') + self.cursor_blink_bool = Checkbutton(frame_cursor, text="Cursor blink", + variable=self.cursor_blink) frame_autocomplete = Frame(frame_window, borderwidth=0,) auto_wait_title = Label(frame_autocomplete, - text='Completions Popup Wait (milliseconds)') - self.auto_wait_int = Entry(frame_autocomplete, width=6, - textvariable=self.autocomplete_wait, - validatecommand=self.digits_only, - validate='key') + text='Completions Popup Wait (milliseconds)') + self.auto_wait_int = Entry( + frame_autocomplete, textvariable=self.autocomplete_wait, + width=6, validatecommand=self.digits_only, validate='key') frame_paren1 = Frame(frame_window, borderwidth=0) paren_style_title = Label(frame_paren1, text='Paren Match Style') @@ -1722,7 +1686,8 @@ def create_page_windows(self): frame_paren2, text='Time Match Displayed (milliseconds)\n' '(0 is until next input)') self.paren_flash_time = Entry( - frame_paren2, textvariable=self.flash_delay, width=6) + frame_paren2, textvariable=self.flash_delay, width=6, + validatecommand=self.digits_only, validate='key') self.bell_on = Checkbutton( frame_paren2, text="Bell on Mismatch", variable=self.paren_bell) frame_format = Frame(frame_window, borderwidth=0) @@ -1747,10 +1712,11 @@ def create_page_windows(self): win_height_title.pack(side=RIGHT, anchor=E, pady=5) self.win_width_int.pack(side=RIGHT, anchor=E, padx=10, pady=5) win_width_title.pack(side=RIGHT, anchor=E, pady=5) - # frame_cursor_blink. - frame_cursor_blink.pack(side=TOP, padx=5, pady=0, fill=X) - cursor_blink_title.pack(side=LEFT, anchor=W, padx=5, pady=5) - self.cursor_blink_bool.pack(side=LEFT, padx=5, pady=5) + # frame_cursor. + frame_cursor.pack(side=TOP, padx=5, pady=0, fill=X) + indent_title.pack(side=LEFT, anchor=W, padx=5) + self.indent_chooser.pack(side=LEFT, anchor=W, padx=10) + self.cursor_blink_bool.pack(side=RIGHT, anchor=E, padx=15, pady=5) # frame_autocomplete. frame_autocomplete.pack(side=TOP, padx=5, pady=0, fill=X) auto_wait_title.pack(side=LEFT, anchor=W, padx=5, pady=5) @@ -1776,6 +1742,8 @@ def load_windows_cfg(self): 'main', 'EditorWindow', 'width', type='int')) self.win_height.set(idleConf.GetOption( 'main', 'EditorWindow', 'height', type='int')) + self.indent_spaces.set(idleConf.GetOption( + 'main', 'Indent', 'num-spaces', type='int')) self.cursor_blink.set(idleConf.GetOption( 'main', 'EditorWindow', 'cursor-blink', type='bool')) self.autocomplete_wait.set(idleConf.GetOption( diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index f71d1b1bc09a0..3005ce08c9bf4 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -73,13 +73,13 @@ def test_click_ok(self): def test_click_apply(self): d = dialog deactivate = d.deactivate_current_config = mock.Mock() - save_ext = d.save_all_changed_extensions = mock.Mock() + save_ext = d.extpage.save_all_changed_extensions = mock.Mock() activate = d.activate_config_changes = mock.Mock() d.buttons['Apply'].invoke() deactivate.assert_called_once() save_ext.assert_called_once() activate.assert_called_once() - del d.save_all_changed_extensions + del d.extpage.save_all_changed_extensions del d.activate_config_changes, d.deactivate_current_config def test_click_cancel(self): @@ -260,27 +260,6 @@ def test_set_samples(self): d.set_samples = Func() # Re-mask for other tests. -class IndentTest(unittest.TestCase): - - @classmethod - def setUpClass(cls): - cls.page = dialog.fontpage - cls.page.update() - - def test_load_tab_cfg(self): - d = self.page - d.space_num.set(16) - d.load_tab_cfg() - self.assertEqual(d.space_num.get(), 4) - - def test_indent_scale(self): - d = self.page - changes.clear() - d.indent_scale.set(20) - self.assertEqual(d.space_num.get(), 16) - self.assertEqual(mainpage, {'Indent': {'num-spaces': '16'}}) - - class HighPageTest(unittest.TestCase): """Test that highlight tab widgets enable users to make changes. @@ -1250,6 +1229,12 @@ def test_editor_size(self): d.win_width_int.insert(0, '11') self.assertEqual(mainpage, {'EditorWindow': {'width': '11'}}) + def test_indent_spaces(self): + d = self.page + d.indent_chooser.set(6) + self.assertEqual(d.indent_spaces.get(), '6') + self.assertEqual(mainpage, {'Indent': {'num-spaces': '6'}}) + def test_cursor_blink(self): self.page.cursor_blink_bool.invoke() self.assertEqual(mainpage, {'EditorWindow': {'cursor-blink': 'False'}}) @@ -1278,7 +1263,7 @@ def test_paragraph(self): self.assertEqual(extpage, {'FormatParagraph': {'max-width': '11'}}) -class GenPageTest(unittest.TestCase): +class ShedPageTest(unittest.TestCase): """Test that shed tab widgets enable users to make changes. Test that widget actions set vars, that var changes add diff --git a/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst b/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst new file mode 100644 index 0000000000000..b15fa8f184792 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst @@ -0,0 +1,2 @@ +Move the indent space setting from the Font tab to the new Windows tab. +Patch by Mark Roseman and Terry Jan Reedy. From webhook-mailer at python.org Thu Jun 10 16:30:56 2021 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Jun 2021 20:30:56 -0000 Subject: [Python-checkins] bpo-44356: [Enum] allow multiple data-type mixins if they are all the same (GH-26649) Message-ID: https://github.com/python/cpython/commit/8a4f0850d75747af8c96ca0e7eef1f5c1abfba25 commit: 8a4f0850d75747af8c96ca0e7eef1f5c1abfba25 branch: main author: Ethan Furman committer: ethanfurman date: 2021-06-10T13:30:41-07:00 summary: bpo-44356: [Enum] allow multiple data-type mixins if they are all the same (GH-26649) This enables, for example, two base Enums to both inherit from `str`, and then both be mixed into the same final Enum: class Str1Enum(str, Enum): # some behavior here class Str2Enum(str, Enum): # some more behavior here class FinalStrEnum(Str1Enum, Str2Enum): # this now works files: A Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index f74cc8c31c84f..54633d8a7fbb0 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -819,7 +819,7 @@ def _get_mixins_(class_name, bases): return object, Enum def _find_data_type(bases): - data_types = [] + data_types = set() for chain in bases: candidate = None for base in chain.__mro__: @@ -827,19 +827,19 @@ def _find_data_type(bases): continue elif issubclass(base, Enum): if base._member_type_ is not object: - data_types.append(base._member_type_) + data_types.add(base._member_type_) break elif '__new__' in base.__dict__: if issubclass(base, Enum): continue - data_types.append(candidate or base) + data_types.add(candidate or base) break else: candidate = base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) elif data_types: - return data_types[0] + return data_types.pop() else: return None diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 34b190b0d289f..40794e3c1eb63 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2144,6 +2144,53 @@ def __new__(cls, value): return member self.assertEqual(Fee.TEST, 2) + def test_miltuple_mixin_with_common_data_type(self): + class CaseInsensitiveStrEnum(str, Enum): + @classmethod + def _missing_(cls, value): + for member in cls._member_map_.values(): + if member._value_.lower() == value.lower(): + return member + return super()._missing_(value) + # + class LenientStrEnum(str, Enum): + def __init__(self, *args): + self._valid = True + @classmethod + def _missing_(cls, value): + # encountered an unknown value! + # Luckily I'm a LenientStrEnum, so I won't crash just yet. + # You might want to add a new case though. + unknown = cls._member_type_.__new__(cls, value) + unknown._valid = False + unknown._name_ = value.upper() + unknown._value_ = value + cls._member_map_[value] = unknown + return unknown + @property + def valid(self): + return self._valid + # + class JobStatus(CaseInsensitiveStrEnum, LenientStrEnum): + ACTIVE = "active" + PENDING = "pending" + TERMINATED = "terminated" + # + JS = JobStatus + self.assertEqual(list(JobStatus), [JS.ACTIVE, JS.PENDING, JS.TERMINATED]) + self.assertEqual(JS.ACTIVE, 'active') + self.assertEqual(JS.ACTIVE.value, 'active') + self.assertIs(JS('Active'), JS.ACTIVE) + self.assertTrue(JS.ACTIVE.valid) + missing = JS('missing') + self.assertEqual(list(JobStatus), [JS.ACTIVE, JS.PENDING, JS.TERMINATED]) + self.assertEqual(JS.ACTIVE, 'active') + self.assertEqual(JS.ACTIVE.value, 'active') + self.assertIs(JS('Active'), JS.ACTIVE) + self.assertTrue(JS.ACTIVE.valid) + self.assertTrue(isinstance(missing, JS)) + self.assertFalse(missing.valid) + def test_empty_globals(self): # bpo-35717: sys._getframe(2).f_globals['__name__'] fails with KeyError # when using compile and exec because f_globals is empty diff --git a/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst b/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst new file mode 100644 index 0000000000000..954a803fe25c1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst @@ -0,0 +1 @@ +[Enum] Allow multiple data-type mixins if they are all the same. From webhook-mailer at python.org Thu Jun 10 16:32:13 2021 From: webhook-mailer at python.org (iritkatriel) Date: Thu, 10 Jun 2021 20:32:13 -0000 Subject: [Python-checkins] bpo-37022: Fix bug where pdb's do_p/do_pp commands swallow exceptions from repr (GH-18180) Message-ID: https://github.com/python/cpython/commit/6544b2532df82d137b71323445a07a6e29bcdec0 commit: 6544b2532df82d137b71323445a07a6e29bcdec0 branch: main author: Daniel Hahler committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-10T21:32:04+01:00 summary: bpo-37022: Fix bug where pdb's do_p/do_pp commands swallow exceptions from repr (GH-18180) files: A Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index a888a0a287f9c..081a8449d4109 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -384,8 +384,7 @@ def default(self, line): sys.stdin = save_stdin sys.displayhook = save_displayhook except: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() def precmd(self, line): """Handle alias expansion and ';;' separator.""" @@ -1104,8 +1103,7 @@ def do_debug(self, arg): try: sys.call_tracing(p.run, (arg, globals, locals)) except Exception: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() self.message("LEAVING RECURSIVE DEBUGGER") sys.settrace(self.trace_dispatch) self.lastcmd = p.lastcmd @@ -1163,8 +1161,7 @@ def _getval(self, arg): try: return eval(arg, self.curframe.f_globals, self.curframe_locals) except: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() raise def _getval_except(self, arg, frame=None): @@ -1178,23 +1175,31 @@ def _getval_except(self, arg, frame=None): err = traceback.format_exception_only(*exc_info)[-1].strip() return _rstr('** raised %s **' % err) + def _error_exc(self): + exc_info = sys.exc_info()[:2] + self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + + def _msg_val_func(self, arg, func): + try: + val = self._getval(arg) + except: + return # _getval() has displayed the error + try: + self.message(func(val)) + except: + self._error_exc() + def do_p(self, arg): """p expression Print the value of the expression. """ - try: - self.message(repr(self._getval(arg))) - except: - pass + self._msg_val_func(arg, repr) def do_pp(self, arg): """pp expression Pretty-print the value of the expression. """ - try: - self.message(pprint.pformat(self._getval(arg))) - except: - pass + self._msg_val_func(arg, pprint.pformat) complete_print = _complete_expression complete_p = _complete_expression diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 08c0ffac591e8..aa3035b6ac379 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -391,6 +391,34 @@ def test_pdb_breakpoints_preserved_across_interactive_sessions(): (Pdb) continue """ +def test_pdb_pp_repr_exc(): + """Test that do_p/do_pp do not swallow exceptions. + + >>> class BadRepr: + ... def __repr__(self): + ... raise Exception('repr_exc') + >>> obj = BadRepr() + + >>> def test_function(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + + >>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE + ... 'p obj', + ... 'pp obj', + ... 'continue', + ... ]): + ... test_function() + --Return-- + > (2)test_function()->None + -> import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + (Pdb) p obj + *** Exception: repr_exc + (Pdb) pp obj + *** Exception: repr_exc + (Pdb) continue + """ + + def do_nothing(): pass diff --git a/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst b/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst new file mode 100644 index 0000000000000..7b923b3aa6e44 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst @@ -0,0 +1 @@ +:mod:`pdb` now displays exceptions from ``repr()`` with its ``p`` and ``pp`` commands. \ No newline at end of file From webhook-mailer at python.org Thu Jun 10 16:57:01 2021 From: webhook-mailer at python.org (iritkatriel) Date: Thu, 10 Jun 2021 20:57:01 -0000 Subject: [Python-checkins] bpo-37022: Fix bug where pdb's do_p/do_pp commands swallow exceptions from repr (GH-18180) (GH-26650) Message-ID: https://github.com/python/cpython/commit/e3bc32fc1ad5537b476b34062b07a040533c913a commit: e3bc32fc1ad5537b476b34062b07a040533c913a branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-10T21:56:57+01:00 summary: bpo-37022: Fix bug where pdb's do_p/do_pp commands swallow exceptions from repr (GH-18180) (GH-26650) (cherry picked from commit 6544b2532df82d137b71323445a07a6e29bcdec0) Co-authored-by: Daniel Hahler files: A Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index a888a0a287f9c..081a8449d4109 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -384,8 +384,7 @@ def default(self, line): sys.stdin = save_stdin sys.displayhook = save_displayhook except: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() def precmd(self, line): """Handle alias expansion and ';;' separator.""" @@ -1104,8 +1103,7 @@ def do_debug(self, arg): try: sys.call_tracing(p.run, (arg, globals, locals)) except Exception: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() self.message("LEAVING RECURSIVE DEBUGGER") sys.settrace(self.trace_dispatch) self.lastcmd = p.lastcmd @@ -1163,8 +1161,7 @@ def _getval(self, arg): try: return eval(arg, self.curframe.f_globals, self.curframe_locals) except: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() raise def _getval_except(self, arg, frame=None): @@ -1178,23 +1175,31 @@ def _getval_except(self, arg, frame=None): err = traceback.format_exception_only(*exc_info)[-1].strip() return _rstr('** raised %s **' % err) + def _error_exc(self): + exc_info = sys.exc_info()[:2] + self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + + def _msg_val_func(self, arg, func): + try: + val = self._getval(arg) + except: + return # _getval() has displayed the error + try: + self.message(func(val)) + except: + self._error_exc() + def do_p(self, arg): """p expression Print the value of the expression. """ - try: - self.message(repr(self._getval(arg))) - except: - pass + self._msg_val_func(arg, repr) def do_pp(self, arg): """pp expression Pretty-print the value of the expression. """ - try: - self.message(pprint.pformat(self._getval(arg))) - except: - pass + self._msg_val_func(arg, pprint.pformat) complete_print = _complete_expression complete_p = _complete_expression diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index cd096e7dd56e8..f944acd692043 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -391,6 +391,34 @@ def test_pdb_breakpoints_preserved_across_interactive_sessions(): (Pdb) continue """ +def test_pdb_pp_repr_exc(): + """Test that do_p/do_pp do not swallow exceptions. + + >>> class BadRepr: + ... def __repr__(self): + ... raise Exception('repr_exc') + >>> obj = BadRepr() + + >>> def test_function(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + + >>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE + ... 'p obj', + ... 'pp obj', + ... 'continue', + ... ]): + ... test_function() + --Return-- + > (2)test_function()->None + -> import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + (Pdb) p obj + *** Exception: repr_exc + (Pdb) pp obj + *** Exception: repr_exc + (Pdb) continue + """ + + def do_nothing(): pass diff --git a/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst b/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst new file mode 100644 index 0000000000000..7b923b3aa6e44 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst @@ -0,0 +1 @@ +:mod:`pdb` now displays exceptions from ``repr()`` with its ``p`` and ``pp`` commands. \ No newline at end of file From webhook-mailer at python.org Thu Jun 10 17:24:17 2021 From: webhook-mailer at python.org (iritkatriel) Date: Thu, 10 Jun 2021 21:24:17 -0000 Subject: [Python-checkins] bpo-37022: Fix bug where pdb's do_p/do_pp commands swallow exceptions from repr (GH-18180) (GH-26651) Message-ID: https://github.com/python/cpython/commit/175ebc60d52f2e88cf5cba5224c15074d2623c10 commit: 175ebc60d52f2e88cf5cba5224c15074d2623c10 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-10T22:24:03+01:00 summary: bpo-37022: Fix bug where pdb's do_p/do_pp commands swallow exceptions from repr (GH-18180) (GH-26651) (cherry picked from commit 6544b2532df82d137b71323445a07a6e29bcdec0) Co-authored-by: Daniel Hahler files: A Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index a888a0a287f9c2..081a8449d41096 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -384,8 +384,7 @@ def default(self, line): sys.stdin = save_stdin sys.displayhook = save_displayhook except: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() def precmd(self, line): """Handle alias expansion and ';;' separator.""" @@ -1104,8 +1103,7 @@ def do_debug(self, arg): try: sys.call_tracing(p.run, (arg, globals, locals)) except Exception: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() self.message("LEAVING RECURSIVE DEBUGGER") sys.settrace(self.trace_dispatch) self.lastcmd = p.lastcmd @@ -1163,8 +1161,7 @@ def _getval(self, arg): try: return eval(arg, self.curframe.f_globals, self.curframe_locals) except: - exc_info = sys.exc_info()[:2] - self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + self._error_exc() raise def _getval_except(self, arg, frame=None): @@ -1178,23 +1175,31 @@ def _getval_except(self, arg, frame=None): err = traceback.format_exception_only(*exc_info)[-1].strip() return _rstr('** raised %s **' % err) + def _error_exc(self): + exc_info = sys.exc_info()[:2] + self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + + def _msg_val_func(self, arg, func): + try: + val = self._getval(arg) + except: + return # _getval() has displayed the error + try: + self.message(func(val)) + except: + self._error_exc() + def do_p(self, arg): """p expression Print the value of the expression. """ - try: - self.message(repr(self._getval(arg))) - except: - pass + self._msg_val_func(arg, repr) def do_pp(self, arg): """pp expression Pretty-print the value of the expression. """ - try: - self.message(pprint.pformat(self._getval(arg))) - except: - pass + self._msg_val_func(arg, pprint.pformat) complete_print = _complete_expression complete_p = _complete_expression diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index b1cad22c830ffe..2339bff1a253bf 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -329,6 +329,34 @@ def test_pdb_breakpoint_commands(): """ +def test_pdb_pp_repr_exc(): + """Test that do_p/do_pp do not swallow exceptions. + + >>> class BadRepr: + ... def __repr__(self): + ... raise Exception('repr_exc') + >>> obj = BadRepr() + + >>> def test_function(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + + >>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE + ... 'p obj', + ... 'pp obj', + ... 'continue', + ... ]): + ... test_function() + --Return-- + > (2)test_function()->None + -> import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + (Pdb) p obj + *** Exception: repr_exc + (Pdb) pp obj + *** Exception: repr_exc + (Pdb) continue + """ + + def do_nothing(): pass diff --git a/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst b/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst new file mode 100644 index 00000000000000..7b923b3aa6e444 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst @@ -0,0 +1 @@ +:mod:`pdb` now displays exceptions from ``repr()`` with its ``p`` and ``pp`` commands. \ No newline at end of file From webhook-mailer at python.org Thu Jun 10 18:01:13 2021 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Jun 2021 22:01:13 -0000 Subject: [Python-checkins] bpo-44356: [Enum] allow multiple data-type mixins if they are all the same (GH-26649) (GH-26653) Message-ID: https://github.com/python/cpython/commit/01286017c3345e2b8a0af2bd48f6eb2087693a82 commit: 01286017c3345e2b8a0af2bd48f6eb2087693a82 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2021-06-10T15:01:03-07:00 summary: bpo-44356: [Enum] allow multiple data-type mixins if they are all the same (GH-26649) (GH-26653) This enables, for example, two base Enums to both inherit from `str`, and then both be mixed into the same final Enum: class Str1Enum(str, Enum): GH- some behavior here class Str2Enum(str, Enum): GH- some more behavior here class FinalStrEnum(Str1Enum, Str2Enum): GH- this now works (cherry picked from commit 8a4f0850d75747af8c96ca0e7eef1f5c1abfba25) Co-authored-by: Ethan Furman Co-authored-by: Ethan Furman files: A Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index f74cc8c31c84f..54633d8a7fbb0 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -819,7 +819,7 @@ def _get_mixins_(class_name, bases): return object, Enum def _find_data_type(bases): - data_types = [] + data_types = set() for chain in bases: candidate = None for base in chain.__mro__: @@ -827,19 +827,19 @@ def _find_data_type(bases): continue elif issubclass(base, Enum): if base._member_type_ is not object: - data_types.append(base._member_type_) + data_types.add(base._member_type_) break elif '__new__' in base.__dict__: if issubclass(base, Enum): continue - data_types.append(candidate or base) + data_types.add(candidate or base) break else: candidate = base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) elif data_types: - return data_types[0] + return data_types.pop() else: return None diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 34b190b0d289f..40794e3c1eb63 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2144,6 +2144,53 @@ def __new__(cls, value): return member self.assertEqual(Fee.TEST, 2) + def test_miltuple_mixin_with_common_data_type(self): + class CaseInsensitiveStrEnum(str, Enum): + @classmethod + def _missing_(cls, value): + for member in cls._member_map_.values(): + if member._value_.lower() == value.lower(): + return member + return super()._missing_(value) + # + class LenientStrEnum(str, Enum): + def __init__(self, *args): + self._valid = True + @classmethod + def _missing_(cls, value): + # encountered an unknown value! + # Luckily I'm a LenientStrEnum, so I won't crash just yet. + # You might want to add a new case though. + unknown = cls._member_type_.__new__(cls, value) + unknown._valid = False + unknown._name_ = value.upper() + unknown._value_ = value + cls._member_map_[value] = unknown + return unknown + @property + def valid(self): + return self._valid + # + class JobStatus(CaseInsensitiveStrEnum, LenientStrEnum): + ACTIVE = "active" + PENDING = "pending" + TERMINATED = "terminated" + # + JS = JobStatus + self.assertEqual(list(JobStatus), [JS.ACTIVE, JS.PENDING, JS.TERMINATED]) + self.assertEqual(JS.ACTIVE, 'active') + self.assertEqual(JS.ACTIVE.value, 'active') + self.assertIs(JS('Active'), JS.ACTIVE) + self.assertTrue(JS.ACTIVE.valid) + missing = JS('missing') + self.assertEqual(list(JobStatus), [JS.ACTIVE, JS.PENDING, JS.TERMINATED]) + self.assertEqual(JS.ACTIVE, 'active') + self.assertEqual(JS.ACTIVE.value, 'active') + self.assertIs(JS('Active'), JS.ACTIVE) + self.assertTrue(JS.ACTIVE.valid) + self.assertTrue(isinstance(missing, JS)) + self.assertFalse(missing.valid) + def test_empty_globals(self): # bpo-35717: sys._getframe(2).f_globals['__name__'] fails with KeyError # when using compile and exec because f_globals is empty diff --git a/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst b/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst new file mode 100644 index 0000000000000..954a803fe25c1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst @@ -0,0 +1 @@ +[Enum] Allow multiple data-type mixins if they are all the same. From webhook-mailer at python.org Thu Jun 10 18:03:37 2021 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Jun 2021 22:03:37 -0000 Subject: [Python-checkins] bpo-44356: [Enum] allow multiple data-type mixins if they are all the same (GH-26649) (GH-26652) Message-ID: https://github.com/python/cpython/commit/304ec53b53021ceddf62a38e66a06aed37e2ac41 commit: 304ec53b53021ceddf62a38e66a06aed37e2ac41 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2021-06-10T15:03:29-07:00 summary: bpo-44356: [Enum] allow multiple data-type mixins if they are all the same (GH-26649) (GH-26652) This enables, for example, two base Enums to both inherit from `str`, and then both be mixed into the same final Enum: class Str1Enum(str, Enum): GH- some behavior here class Str2Enum(str, Enum): GH- some more behavior here class FinalStrEnum(Str1Enum, Str2Enum): GH- this now works (cherry picked from commit 8a4f0850d75747af8c96ca0e7eef1f5c1abfba25) Co-authored-by: Ethan Furman Co-authored-by: Ethan Furman files: A Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index be74796a8a0ce..f09cb8473dfed 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -556,7 +556,7 @@ def _get_mixins_(class_name, bases): return object, Enum def _find_data_type(bases): - data_types = [] + data_types = set() for chain in bases: candidate = None for base in chain.__mro__: @@ -564,19 +564,19 @@ def _find_data_type(bases): continue elif issubclass(base, Enum): if base._member_type_ is not object: - data_types.append(base._member_type_) + data_types.add(base._member_type_) break elif '__new__' in base.__dict__: if issubclass(base, Enum): continue - data_types.append(candidate or base) + data_types.add(candidate or base) break else: candidate = base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) elif data_types: - return data_types[0] + return data_types.pop() else: return None diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index fc2d61d59cd4b..e8715ba34552b 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2072,6 +2072,53 @@ def __new__(cls, value): return member self.assertEqual(Fee.TEST, 2) + def test_miltuple_mixin_with_common_data_type(self): + class CaseInsensitiveStrEnum(str, Enum): + @classmethod + def _missing_(cls, value): + for member in cls._member_map_.values(): + if member._value_.lower() == value.lower(): + return member + return super()._missing_(value) + # + class LenientStrEnum(str, Enum): + def __init__(self, *args): + self._valid = True + @classmethod + def _missing_(cls, value): + # encountered an unknown value! + # Luckily I'm a LenientStrEnum, so I won't crash just yet. + # You might want to add a new case though. + unknown = cls._member_type_.__new__(cls, value) + unknown._valid = False + unknown._name_ = value.upper() + unknown._value_ = value + cls._member_map_[value] = unknown + return unknown + @property + def valid(self): + return self._valid + # + class JobStatus(CaseInsensitiveStrEnum, LenientStrEnum): + ACTIVE = "active" + PENDING = "pending" + TERMINATED = "terminated" + # + JS = JobStatus + self.assertEqual(list(JobStatus), [JS.ACTIVE, JS.PENDING, JS.TERMINATED]) + self.assertEqual(JS.ACTIVE, 'active') + self.assertEqual(JS.ACTIVE.value, 'active') + self.assertIs(JS('Active'), JS.ACTIVE) + self.assertTrue(JS.ACTIVE.valid) + missing = JS('missing') + self.assertEqual(list(JobStatus), [JS.ACTIVE, JS.PENDING, JS.TERMINATED]) + self.assertEqual(JS.ACTIVE, 'active') + self.assertEqual(JS.ACTIVE.value, 'active') + self.assertIs(JS('Active'), JS.ACTIVE) + self.assertTrue(JS.ACTIVE.valid) + self.assertTrue(isinstance(missing, JS)) + self.assertFalse(missing.valid) + def test_empty_globals(self): # bpo-35717: sys._getframe(2).f_globals['__name__'] fails with KeyError # when using compile and exec because f_globals is empty diff --git a/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst b/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst new file mode 100644 index 0000000000000..954a803fe25c1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst @@ -0,0 +1 @@ +[Enum] Allow multiple data-type mixins if they are all the same. From webhook-mailer at python.org Thu Jun 10 18:05:14 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 10 Jun 2021 22:05:14 -0000 Subject: [Python-checkins] bpo-44385: Remove unused grammar rules (GH-26655) Message-ID: https://github.com/python/cpython/commit/e7b4644607789848f9752a3bd20ff216e25b4156 commit: e7b4644607789848f9752a3bd20ff216e25b4156 branch: main author: Lysandros Nikolaou committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-10T15:05:06-07:00 summary: bpo-44385: Remove unused grammar rules (GH-26655) Automerge-Triggered-By: GH:lysnikolaou files: M Grammar/python.gram M Parser/parser.c diff --git a/Grammar/python.gram b/Grammar/python.gram index d0f9bb0bc4f277..0ccdc3e5b96957 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -811,11 +811,6 @@ del_t_atom[expr_ty]: | '(' a=[del_targets] ')' { _PyAST_Tuple(a, Del, EXTRA) } | '[' a=[del_targets] ']' { _PyAST_List(a, Del, EXTRA) } -targets[asdl_expr_seq*]: a[asdl_expr_seq*]=','.target+ [','] { a } -target[expr_ty] (memo): - | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name.id, Store, EXTRA) } - | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, Store, EXTRA) } - | t_atom t_primary[expr_ty]: | a=t_primary '.' b=NAME &t_lookahead { _PyAST_Attribute(a, b->v.Name.id, Load, EXTRA) } | a=t_primary '[' b=slices ']' &t_lookahead { _PyAST_Subscript(a, b, Load, EXTRA) } @@ -828,12 +823,6 @@ t_primary[expr_ty]: EXTRA) } | a=atom &t_lookahead { a } t_lookahead: '(' | '[' | '.' -t_atom[expr_ty]: - | a=NAME { _PyPegen_set_expr_context(p, a, Store) } - | '(' a=target ')' { _PyPegen_set_expr_context(p, a, Store) } - | '(' b=[targets] ')' { _PyAST_Tuple(b, Store, EXTRA) } - | '[' b=[targets] ']' { _PyAST_List(b, Store, EXTRA) } - # From here on, there are rules for invalid syntax with specialised error messages invalid_arguments: diff --git a/Parser/parser.c b/Parser/parser.c index d49bba1549c5fe..403a7fa94133f6 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -247,256 +247,251 @@ static char *soft_keywords[] = { #define del_targets_type 1173 #define del_target_type 1174 #define del_t_atom_type 1175 -#define targets_type 1176 -#define target_type 1177 -#define t_primary_type 1178 // Left-recursive -#define t_lookahead_type 1179 -#define t_atom_type 1180 -#define invalid_arguments_type 1181 -#define invalid_kwarg_type 1182 -#define expression_without_invalid_type 1183 -#define invalid_expression_type 1184 -#define invalid_named_expression_type 1185 -#define invalid_assignment_type 1186 -#define invalid_ann_assign_target_type 1187 -#define invalid_del_stmt_type 1188 -#define invalid_block_type 1189 -#define invalid_primary_type 1190 // Left-recursive -#define invalid_comprehension_type 1191 -#define invalid_dict_comprehension_type 1192 -#define invalid_parameters_type 1193 -#define invalid_parameters_helper_type 1194 -#define invalid_lambda_parameters_type 1195 -#define invalid_lambda_parameters_helper_type 1196 -#define invalid_star_etc_type 1197 -#define invalid_lambda_star_etc_type 1198 -#define invalid_double_type_comments_type 1199 -#define invalid_with_item_type 1200 -#define invalid_for_target_type 1201 -#define invalid_group_type 1202 -#define invalid_import_from_targets_type 1203 -#define invalid_with_stmt_type 1204 -#define invalid_with_stmt_indent_type 1205 -#define invalid_try_stmt_type 1206 -#define invalid_except_stmt_type 1207 -#define invalid_finally_stmt_type 1208 -#define invalid_except_stmt_indent_type 1209 -#define invalid_match_stmt_type 1210 -#define invalid_case_block_type 1211 -#define invalid_if_stmt_type 1212 -#define invalid_elif_stmt_type 1213 -#define invalid_else_stmt_type 1214 -#define invalid_while_stmt_type 1215 -#define invalid_for_stmt_type 1216 -#define invalid_def_raw_type 1217 -#define invalid_class_def_raw_type 1218 -#define invalid_double_starred_kvpairs_type 1219 -#define invalid_kvpair_type 1220 -#define _loop0_1_type 1221 -#define _loop0_2_type 1222 -#define _loop0_4_type 1223 -#define _gather_3_type 1224 -#define _loop0_6_type 1225 -#define _gather_5_type 1226 -#define _loop0_8_type 1227 -#define _gather_7_type 1228 -#define _loop0_10_type 1229 -#define _gather_9_type 1230 -#define _loop1_11_type 1231 -#define _loop0_13_type 1232 -#define _gather_12_type 1233 -#define _tmp_14_type 1234 -#define _tmp_15_type 1235 -#define _tmp_16_type 1236 -#define _tmp_17_type 1237 -#define _tmp_18_type 1238 -#define _tmp_19_type 1239 -#define _tmp_20_type 1240 -#define _tmp_21_type 1241 -#define _loop1_22_type 1242 -#define _tmp_23_type 1243 -#define _tmp_24_type 1244 -#define _loop0_26_type 1245 -#define _gather_25_type 1246 -#define _loop0_28_type 1247 -#define _gather_27_type 1248 -#define _tmp_29_type 1249 -#define _tmp_30_type 1250 -#define _loop0_31_type 1251 -#define _loop1_32_type 1252 -#define _loop0_34_type 1253 -#define _gather_33_type 1254 -#define _tmp_35_type 1255 -#define _loop0_37_type 1256 -#define _gather_36_type 1257 -#define _tmp_38_type 1258 -#define _loop0_40_type 1259 -#define _gather_39_type 1260 -#define _loop0_42_type 1261 -#define _gather_41_type 1262 -#define _loop0_44_type 1263 -#define _gather_43_type 1264 -#define _loop0_46_type 1265 -#define _gather_45_type 1266 -#define _tmp_47_type 1267 -#define _loop1_48_type 1268 -#define _tmp_49_type 1269 -#define _loop1_50_type 1270 -#define _loop0_52_type 1271 -#define _gather_51_type 1272 -#define _tmp_53_type 1273 -#define _tmp_54_type 1274 -#define _tmp_55_type 1275 -#define _tmp_56_type 1276 -#define _loop0_58_type 1277 -#define _gather_57_type 1278 -#define _loop0_60_type 1279 -#define _gather_59_type 1280 -#define _tmp_61_type 1281 -#define _loop0_63_type 1282 -#define _gather_62_type 1283 -#define _loop0_65_type 1284 -#define _gather_64_type 1285 -#define _tmp_66_type 1286 -#define _tmp_67_type 1287 -#define _tmp_68_type 1288 -#define _tmp_69_type 1289 -#define _loop0_70_type 1290 -#define _loop0_71_type 1291 -#define _loop0_72_type 1292 -#define _loop1_73_type 1293 -#define _loop0_74_type 1294 -#define _loop1_75_type 1295 -#define _loop1_76_type 1296 -#define _loop1_77_type 1297 -#define _loop0_78_type 1298 -#define _loop1_79_type 1299 -#define _loop0_80_type 1300 -#define _loop1_81_type 1301 -#define _loop0_82_type 1302 -#define _loop1_83_type 1303 -#define _loop1_84_type 1304 -#define _tmp_85_type 1305 -#define _loop1_86_type 1306 -#define _loop0_88_type 1307 -#define _gather_87_type 1308 -#define _loop1_89_type 1309 -#define _loop0_90_type 1310 -#define _loop0_91_type 1311 -#define _loop0_92_type 1312 -#define _loop1_93_type 1313 -#define _loop0_94_type 1314 -#define _loop1_95_type 1315 -#define _loop1_96_type 1316 -#define _loop1_97_type 1317 -#define _loop0_98_type 1318 -#define _loop1_99_type 1319 -#define _loop0_100_type 1320 -#define _loop1_101_type 1321 -#define _loop0_102_type 1322 -#define _loop1_103_type 1323 -#define _loop1_104_type 1324 -#define _loop1_105_type 1325 -#define _loop1_106_type 1326 -#define _tmp_107_type 1327 -#define _loop0_109_type 1328 -#define _gather_108_type 1329 -#define _tmp_110_type 1330 -#define _tmp_111_type 1331 -#define _tmp_112_type 1332 -#define _tmp_113_type 1333 -#define _loop1_114_type 1334 -#define _tmp_115_type 1335 -#define _tmp_116_type 1336 -#define _tmp_117_type 1337 -#define _loop0_119_type 1338 -#define _gather_118_type 1339 -#define _loop1_120_type 1340 -#define _loop0_121_type 1341 -#define _loop0_122_type 1342 -#define _loop0_124_type 1343 -#define _gather_123_type 1344 -#define _tmp_125_type 1345 -#define _loop0_127_type 1346 -#define _gather_126_type 1347 -#define _loop0_129_type 1348 -#define _gather_128_type 1349 -#define _loop0_131_type 1350 -#define _gather_130_type 1351 -#define _loop0_133_type 1352 -#define _gather_132_type 1353 -#define _loop0_134_type 1354 -#define _loop0_136_type 1355 -#define _gather_135_type 1356 -#define _loop1_137_type 1357 -#define _tmp_138_type 1358 -#define _loop0_140_type 1359 -#define _gather_139_type 1360 -#define _loop0_142_type 1361 -#define _gather_141_type 1362 -#define _tmp_143_type 1363 -#define _tmp_144_type 1364 -#define _tmp_145_type 1365 -#define _tmp_146_type 1366 -#define _tmp_147_type 1367 -#define _tmp_148_type 1368 -#define _loop0_149_type 1369 -#define _loop0_150_type 1370 -#define _loop0_151_type 1371 -#define _tmp_152_type 1372 -#define _tmp_153_type 1373 -#define _tmp_154_type 1374 -#define _tmp_155_type 1375 -#define _loop0_156_type 1376 -#define _loop1_157_type 1377 -#define _loop0_158_type 1378 -#define _loop1_159_type 1379 -#define _tmp_160_type 1380 -#define _tmp_161_type 1381 -#define _tmp_162_type 1382 -#define _loop0_164_type 1383 -#define _gather_163_type 1384 -#define _loop0_166_type 1385 -#define _gather_165_type 1386 -#define _loop0_168_type 1387 -#define _gather_167_type 1388 -#define _loop0_170_type 1389 -#define _gather_169_type 1390 -#define _tmp_171_type 1391 -#define _tmp_172_type 1392 -#define _tmp_173_type 1393 -#define _tmp_174_type 1394 -#define _tmp_175_type 1395 -#define _tmp_176_type 1396 -#define _loop0_178_type 1397 -#define _gather_177_type 1398 -#define _tmp_179_type 1399 -#define _tmp_180_type 1400 -#define _tmp_181_type 1401 -#define _tmp_182_type 1402 -#define _tmp_183_type 1403 -#define _tmp_184_type 1404 -#define _tmp_185_type 1405 -#define _tmp_186_type 1406 -#define _tmp_187_type 1407 -#define _tmp_188_type 1408 -#define _tmp_189_type 1409 -#define _tmp_190_type 1410 -#define _tmp_191_type 1411 -#define _tmp_192_type 1412 -#define _tmp_193_type 1413 -#define _tmp_194_type 1414 -#define _tmp_195_type 1415 -#define _tmp_196_type 1416 -#define _tmp_197_type 1417 -#define _tmp_198_type 1418 -#define _tmp_199_type 1419 -#define _tmp_200_type 1420 -#define _tmp_201_type 1421 -#define _tmp_202_type 1422 -#define _tmp_203_type 1423 -#define _tmp_204_type 1424 -#define _tmp_205_type 1425 +#define t_primary_type 1176 // Left-recursive +#define t_lookahead_type 1177 +#define invalid_arguments_type 1178 +#define invalid_kwarg_type 1179 +#define expression_without_invalid_type 1180 +#define invalid_expression_type 1181 +#define invalid_named_expression_type 1182 +#define invalid_assignment_type 1183 +#define invalid_ann_assign_target_type 1184 +#define invalid_del_stmt_type 1185 +#define invalid_block_type 1186 +#define invalid_primary_type 1187 // Left-recursive +#define invalid_comprehension_type 1188 +#define invalid_dict_comprehension_type 1189 +#define invalid_parameters_type 1190 +#define invalid_parameters_helper_type 1191 +#define invalid_lambda_parameters_type 1192 +#define invalid_lambda_parameters_helper_type 1193 +#define invalid_star_etc_type 1194 +#define invalid_lambda_star_etc_type 1195 +#define invalid_double_type_comments_type 1196 +#define invalid_with_item_type 1197 +#define invalid_for_target_type 1198 +#define invalid_group_type 1199 +#define invalid_import_from_targets_type 1200 +#define invalid_with_stmt_type 1201 +#define invalid_with_stmt_indent_type 1202 +#define invalid_try_stmt_type 1203 +#define invalid_except_stmt_type 1204 +#define invalid_finally_stmt_type 1205 +#define invalid_except_stmt_indent_type 1206 +#define invalid_match_stmt_type 1207 +#define invalid_case_block_type 1208 +#define invalid_if_stmt_type 1209 +#define invalid_elif_stmt_type 1210 +#define invalid_else_stmt_type 1211 +#define invalid_while_stmt_type 1212 +#define invalid_for_stmt_type 1213 +#define invalid_def_raw_type 1214 +#define invalid_class_def_raw_type 1215 +#define invalid_double_starred_kvpairs_type 1216 +#define invalid_kvpair_type 1217 +#define _loop0_1_type 1218 +#define _loop0_2_type 1219 +#define _loop0_4_type 1220 +#define _gather_3_type 1221 +#define _loop0_6_type 1222 +#define _gather_5_type 1223 +#define _loop0_8_type 1224 +#define _gather_7_type 1225 +#define _loop0_10_type 1226 +#define _gather_9_type 1227 +#define _loop1_11_type 1228 +#define _loop0_13_type 1229 +#define _gather_12_type 1230 +#define _tmp_14_type 1231 +#define _tmp_15_type 1232 +#define _tmp_16_type 1233 +#define _tmp_17_type 1234 +#define _tmp_18_type 1235 +#define _tmp_19_type 1236 +#define _tmp_20_type 1237 +#define _tmp_21_type 1238 +#define _loop1_22_type 1239 +#define _tmp_23_type 1240 +#define _tmp_24_type 1241 +#define _loop0_26_type 1242 +#define _gather_25_type 1243 +#define _loop0_28_type 1244 +#define _gather_27_type 1245 +#define _tmp_29_type 1246 +#define _tmp_30_type 1247 +#define _loop0_31_type 1248 +#define _loop1_32_type 1249 +#define _loop0_34_type 1250 +#define _gather_33_type 1251 +#define _tmp_35_type 1252 +#define _loop0_37_type 1253 +#define _gather_36_type 1254 +#define _tmp_38_type 1255 +#define _loop0_40_type 1256 +#define _gather_39_type 1257 +#define _loop0_42_type 1258 +#define _gather_41_type 1259 +#define _loop0_44_type 1260 +#define _gather_43_type 1261 +#define _loop0_46_type 1262 +#define _gather_45_type 1263 +#define _tmp_47_type 1264 +#define _loop1_48_type 1265 +#define _tmp_49_type 1266 +#define _loop1_50_type 1267 +#define _loop0_52_type 1268 +#define _gather_51_type 1269 +#define _tmp_53_type 1270 +#define _tmp_54_type 1271 +#define _tmp_55_type 1272 +#define _tmp_56_type 1273 +#define _loop0_58_type 1274 +#define _gather_57_type 1275 +#define _loop0_60_type 1276 +#define _gather_59_type 1277 +#define _tmp_61_type 1278 +#define _loop0_63_type 1279 +#define _gather_62_type 1280 +#define _loop0_65_type 1281 +#define _gather_64_type 1282 +#define _tmp_66_type 1283 +#define _tmp_67_type 1284 +#define _tmp_68_type 1285 +#define _tmp_69_type 1286 +#define _loop0_70_type 1287 +#define _loop0_71_type 1288 +#define _loop0_72_type 1289 +#define _loop1_73_type 1290 +#define _loop0_74_type 1291 +#define _loop1_75_type 1292 +#define _loop1_76_type 1293 +#define _loop1_77_type 1294 +#define _loop0_78_type 1295 +#define _loop1_79_type 1296 +#define _loop0_80_type 1297 +#define _loop1_81_type 1298 +#define _loop0_82_type 1299 +#define _loop1_83_type 1300 +#define _loop1_84_type 1301 +#define _tmp_85_type 1302 +#define _loop1_86_type 1303 +#define _loop0_88_type 1304 +#define _gather_87_type 1305 +#define _loop1_89_type 1306 +#define _loop0_90_type 1307 +#define _loop0_91_type 1308 +#define _loop0_92_type 1309 +#define _loop1_93_type 1310 +#define _loop0_94_type 1311 +#define _loop1_95_type 1312 +#define _loop1_96_type 1313 +#define _loop1_97_type 1314 +#define _loop0_98_type 1315 +#define _loop1_99_type 1316 +#define _loop0_100_type 1317 +#define _loop1_101_type 1318 +#define _loop0_102_type 1319 +#define _loop1_103_type 1320 +#define _loop1_104_type 1321 +#define _loop1_105_type 1322 +#define _loop1_106_type 1323 +#define _tmp_107_type 1324 +#define _loop0_109_type 1325 +#define _gather_108_type 1326 +#define _tmp_110_type 1327 +#define _tmp_111_type 1328 +#define _tmp_112_type 1329 +#define _tmp_113_type 1330 +#define _loop1_114_type 1331 +#define _tmp_115_type 1332 +#define _tmp_116_type 1333 +#define _tmp_117_type 1334 +#define _loop0_119_type 1335 +#define _gather_118_type 1336 +#define _loop1_120_type 1337 +#define _loop0_121_type 1338 +#define _loop0_122_type 1339 +#define _loop0_124_type 1340 +#define _gather_123_type 1341 +#define _tmp_125_type 1342 +#define _loop0_127_type 1343 +#define _gather_126_type 1344 +#define _loop0_129_type 1345 +#define _gather_128_type 1346 +#define _loop0_131_type 1347 +#define _gather_130_type 1348 +#define _loop0_133_type 1349 +#define _gather_132_type 1350 +#define _loop0_134_type 1351 +#define _loop0_136_type 1352 +#define _gather_135_type 1353 +#define _loop1_137_type 1354 +#define _tmp_138_type 1355 +#define _loop0_140_type 1356 +#define _gather_139_type 1357 +#define _tmp_141_type 1358 +#define _tmp_142_type 1359 +#define _tmp_143_type 1360 +#define _tmp_144_type 1361 +#define _tmp_145_type 1362 +#define _tmp_146_type 1363 +#define _loop0_147_type 1364 +#define _loop0_148_type 1365 +#define _loop0_149_type 1366 +#define _tmp_150_type 1367 +#define _tmp_151_type 1368 +#define _tmp_152_type 1369 +#define _tmp_153_type 1370 +#define _loop0_154_type 1371 +#define _loop1_155_type 1372 +#define _loop0_156_type 1373 +#define _loop1_157_type 1374 +#define _tmp_158_type 1375 +#define _tmp_159_type 1376 +#define _tmp_160_type 1377 +#define _loop0_162_type 1378 +#define _gather_161_type 1379 +#define _loop0_164_type 1380 +#define _gather_163_type 1381 +#define _loop0_166_type 1382 +#define _gather_165_type 1383 +#define _loop0_168_type 1384 +#define _gather_167_type 1385 +#define _tmp_169_type 1386 +#define _tmp_170_type 1387 +#define _tmp_171_type 1388 +#define _tmp_172_type 1389 +#define _tmp_173_type 1390 +#define _tmp_174_type 1391 +#define _loop0_176_type 1392 +#define _gather_175_type 1393 +#define _tmp_177_type 1394 +#define _tmp_178_type 1395 +#define _tmp_179_type 1396 +#define _tmp_180_type 1397 +#define _tmp_181_type 1398 +#define _tmp_182_type 1399 +#define _tmp_183_type 1400 +#define _tmp_184_type 1401 +#define _tmp_185_type 1402 +#define _tmp_186_type 1403 +#define _tmp_187_type 1404 +#define _tmp_188_type 1405 +#define _tmp_189_type 1406 +#define _tmp_190_type 1407 +#define _tmp_191_type 1408 +#define _tmp_192_type 1409 +#define _tmp_193_type 1410 +#define _tmp_194_type 1411 +#define _tmp_195_type 1412 +#define _tmp_196_type 1413 +#define _tmp_197_type 1414 +#define _tmp_198_type 1415 +#define _tmp_199_type 1416 +#define _tmp_200_type 1417 +#define _tmp_201_type 1418 +#define _tmp_202_type 1419 +#define _tmp_203_type 1420 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -674,11 +669,8 @@ static expr_ty single_subscript_attribute_target_rule(Parser *p); static asdl_expr_seq* del_targets_rule(Parser *p); static expr_ty del_target_rule(Parser *p); static expr_ty del_t_atom_rule(Parser *p); -static asdl_expr_seq* targets_rule(Parser *p); -static expr_ty target_rule(Parser *p); static expr_ty t_primary_rule(Parser *p); static void *t_lookahead_rule(Parser *p); -static expr_ty t_atom_rule(Parser *p); static void *invalid_arguments_rule(Parser *p); static void *invalid_kwarg_rule(Parser *p); static expr_ty expression_without_invalid_rule(Parser *p); @@ -859,44 +851,44 @@ static asdl_seq *_loop1_137_rule(Parser *p); static void *_tmp_138_rule(Parser *p); static asdl_seq *_loop0_140_rule(Parser *p); static asdl_seq *_gather_139_rule(Parser *p); -static asdl_seq *_loop0_142_rule(Parser *p); -static asdl_seq *_gather_141_rule(Parser *p); +static void *_tmp_141_rule(Parser *p); +static void *_tmp_142_rule(Parser *p); static void *_tmp_143_rule(Parser *p); static void *_tmp_144_rule(Parser *p); static void *_tmp_145_rule(Parser *p); static void *_tmp_146_rule(Parser *p); -static void *_tmp_147_rule(Parser *p); -static void *_tmp_148_rule(Parser *p); +static asdl_seq *_loop0_147_rule(Parser *p); +static asdl_seq *_loop0_148_rule(Parser *p); static asdl_seq *_loop0_149_rule(Parser *p); -static asdl_seq *_loop0_150_rule(Parser *p); -static asdl_seq *_loop0_151_rule(Parser *p); +static void *_tmp_150_rule(Parser *p); +static void *_tmp_151_rule(Parser *p); static void *_tmp_152_rule(Parser *p); static void *_tmp_153_rule(Parser *p); -static void *_tmp_154_rule(Parser *p); -static void *_tmp_155_rule(Parser *p); +static asdl_seq *_loop0_154_rule(Parser *p); +static asdl_seq *_loop1_155_rule(Parser *p); static asdl_seq *_loop0_156_rule(Parser *p); static asdl_seq *_loop1_157_rule(Parser *p); -static asdl_seq *_loop0_158_rule(Parser *p); -static asdl_seq *_loop1_159_rule(Parser *p); +static void *_tmp_158_rule(Parser *p); +static void *_tmp_159_rule(Parser *p); static void *_tmp_160_rule(Parser *p); -static void *_tmp_161_rule(Parser *p); -static void *_tmp_162_rule(Parser *p); +static asdl_seq *_loop0_162_rule(Parser *p); +static asdl_seq *_gather_161_rule(Parser *p); static asdl_seq *_loop0_164_rule(Parser *p); static asdl_seq *_gather_163_rule(Parser *p); static asdl_seq *_loop0_166_rule(Parser *p); static asdl_seq *_gather_165_rule(Parser *p); static asdl_seq *_loop0_168_rule(Parser *p); static asdl_seq *_gather_167_rule(Parser *p); -static asdl_seq *_loop0_170_rule(Parser *p); -static asdl_seq *_gather_169_rule(Parser *p); +static void *_tmp_169_rule(Parser *p); +static void *_tmp_170_rule(Parser *p); static void *_tmp_171_rule(Parser *p); static void *_tmp_172_rule(Parser *p); static void *_tmp_173_rule(Parser *p); static void *_tmp_174_rule(Parser *p); -static void *_tmp_175_rule(Parser *p); -static void *_tmp_176_rule(Parser *p); -static asdl_seq *_loop0_178_rule(Parser *p); -static asdl_seq *_gather_177_rule(Parser *p); +static asdl_seq *_loop0_176_rule(Parser *p); +static asdl_seq *_gather_175_rule(Parser *p); +static void *_tmp_177_rule(Parser *p); +static void *_tmp_178_rule(Parser *p); static void *_tmp_179_rule(Parser *p); static void *_tmp_180_rule(Parser *p); static void *_tmp_181_rule(Parser *p); @@ -922,8 +914,6 @@ static void *_tmp_200_rule(Parser *p); static void *_tmp_201_rule(Parser *p); static void *_tmp_202_rule(Parser *p); static void *_tmp_203_rule(Parser *p); -static void *_tmp_204_rule(Parser *p); -static void *_tmp_205_rule(Parser *p); // file: statements? $ @@ -17408,189 +17398,6 @@ del_t_atom_rule(Parser *p) return _res; } -// targets: ','.target+ ','? -static asdl_expr_seq* -targets_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - asdl_expr_seq* _res = NULL; - int _mark = p->mark; - { // ','.target+ ','? - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.target+ ','?")); - void *_opt_var; - UNUSED(_opt_var); // Silence compiler warnings - asdl_expr_seq* a; - if ( - (a = (asdl_expr_seq*)_gather_141_rule(p)) // ','.target+ - && - (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? - ) - { - D(fprintf(stderr, "%*c+ targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.target+ ','?")); - _res = a; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s targets[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.target+ ','?")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - -// target: -// | t_primary '.' NAME !t_lookahead -// | t_primary '[' slices ']' !t_lookahead -// | t_atom -static expr_ty -target_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - expr_ty _res = NULL; - if (_PyPegen_is_memoized(p, target_type, &_res)) { - D(p->level--); - return _res; - } - int _mark = p->mark; - if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - int _start_lineno = p->tokens[_mark]->lineno; - UNUSED(_start_lineno); // Only used by EXTRA macro - int _start_col_offset = p->tokens[_mark]->col_offset; - UNUSED(_start_col_offset); // Only used by EXTRA macro - { // t_primary '.' NAME !t_lookahead - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - Token * _literal; - expr_ty a; - expr_ty b; - if ( - (a = t_primary_rule(p)) // t_primary - && - (_literal = _PyPegen_expect_token(p, 23)) // token='.' - && - (b = _PyPegen_name_token(p)) // NAME - && - _PyPegen_lookahead(0, t_lookahead_rule, p) - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - } - { // t_primary '[' slices ']' !t_lookahead - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - Token * _literal; - Token * _literal_1; - expr_ty a; - expr_ty b; - if ( - (a = t_primary_rule(p)) // t_primary - && - (_literal = _PyPegen_expect_token(p, 9)) // token='[' - && - (b = slices_rule(p)) // slices - && - (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' - && - _PyPegen_lookahead(0, t_lookahead_rule, p) - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_Subscript ( a , b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - } - { // t_atom - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_atom")); - expr_ty t_atom_var; - if ( - (t_atom_var = t_atom_rule(p)) // t_atom - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_atom")); - _res = t_atom_var; - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_atom")); - } - _res = NULL; - done: - _PyPegen_insert_memo(p, _mark, target_type, _res); - D(p->level--); - return _res; -} - // Left-recursive // t_primary: // | t_primary '.' NAME &t_lookahead @@ -17923,164 +17730,6 @@ t_lookahead_rule(Parser *p) return _res; } -// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']' -static expr_ty -t_atom_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - expr_ty _res = NULL; - int _mark = p->mark; - if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - int _start_lineno = p->tokens[_mark]->lineno; - UNUSED(_start_lineno); // Only used by EXTRA macro - int _start_col_offset = p->tokens[_mark]->col_offset; - UNUSED(_start_col_offset); // Only used by EXTRA macro - { // NAME - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME")); - expr_ty a; - if ( - (a = _PyPegen_name_token(p)) // NAME - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME")); - _res = _PyPegen_set_expr_context ( p , a , Store ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME")); - } - { // '(' target ')' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target ')'")); - Token * _literal; - Token * _literal_1; - expr_ty a; - if ( - (_literal = _PyPegen_expect_token(p, 7)) // token='(' - && - (a = target_rule(p)) // target - && - (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target ')'")); - _res = _PyPegen_set_expr_context ( p , a , Store ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target ')'")); - } - { // '(' targets? ')' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'")); - Token * _literal; - Token * _literal_1; - void *b; - if ( - (_literal = _PyPegen_expect_token(p, 7)) // token='(' - && - (b = targets_rule(p), 1) // targets? - && - (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_Tuple ( b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' targets? ')'")); - } - { // '[' targets? ']' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'")); - Token * _literal; - Token * _literal_1; - void *b; - if ( - (_literal = _PyPegen_expect_token(p, 9)) // token='[' - && - (b = targets_rule(p), 1) // targets? - && - (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_List ( b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' targets? ']'")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - // invalid_arguments: // | args ',' '*' // | expression for_if_clauses ',' [args | expression for_if_clauses] @@ -18146,7 +17795,7 @@ invalid_arguments_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_opt_var = _tmp_143_rule(p), 1) // [args | expression for_if_clauses] + (_opt_var = _tmp_141_rule(p), 1) // [args | expression for_if_clauses] ) { D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); @@ -18344,7 +17993,7 @@ invalid_kwarg_rule(Parser *p) expr_ty a; Token * b; if ( - _PyPegen_lookahead(0, _tmp_144_rule, p) + _PyPegen_lookahead(0, _tmp_142_rule, p) && (a = expression_rule(p)) // expression && @@ -18503,7 +18152,7 @@ invalid_expression_rule(Parser *p) expr_ty a; expr_ty b; if ( - _PyPegen_lookahead(0, _tmp_145_rule, p) + _PyPegen_lookahead(0, _tmp_143_rule, p) && (a = disjunction_rule(p)) // disjunction && @@ -18589,7 +18238,7 @@ invalid_named_expression_rule(Parser *p) && (b = bitwise_or_rule(p)) // bitwise_or && - _PyPegen_lookahead(0, _tmp_146_rule, p) + _PyPegen_lookahead(0, _tmp_144_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')")); @@ -18615,7 +18264,7 @@ invalid_named_expression_rule(Parser *p) Token * b; expr_ty bitwise_or_var; if ( - _PyPegen_lookahead(0, _tmp_147_rule, p) + _PyPegen_lookahead(0, _tmp_145_rule, p) && (a = bitwise_or_rule(p)) // bitwise_or && @@ -18623,7 +18272,7 @@ invalid_named_expression_rule(Parser *p) && (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or && - _PyPegen_lookahead(0, _tmp_148_rule, p) + _PyPegen_lookahead(0, _tmp_146_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')")); @@ -18700,7 +18349,7 @@ invalid_assignment_rule(Parser *p) D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression")); Token * _literal; Token * _literal_1; - asdl_seq * _loop0_149_var; + asdl_seq * _loop0_147_var; expr_ty a; expr_ty expression_var; if ( @@ -18708,7 +18357,7 @@ invalid_assignment_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_loop0_149_var = _loop0_149_rule(p)) // star_named_expressions* + (_loop0_147_var = _loop0_147_rule(p)) // star_named_expressions* && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -18765,10 +18414,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='")); Token * _literal; - asdl_seq * _loop0_150_var; + asdl_seq * _loop0_148_var; expr_ty a; if ( - (_loop0_150_var = _loop0_150_rule(p)) // ((star_targets '='))* + (_loop0_148_var = _loop0_148_rule(p)) // ((star_targets '='))* && (a = star_expressions_rule(p)) // star_expressions && @@ -18795,10 +18444,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='")); Token * _literal; - asdl_seq * _loop0_151_var; + asdl_seq * _loop0_149_var; expr_ty a; if ( - (_loop0_151_var = _loop0_151_rule(p)) // ((star_targets '='))* + (_loop0_149_var = _loop0_149_rule(p)) // ((star_targets '='))* && (a = yield_expr_rule(p)) // yield_expr && @@ -18824,7 +18473,7 @@ invalid_assignment_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); - void *_tmp_152_var; + void *_tmp_150_var; expr_ty a; AugOperator* augassign_var; if ( @@ -18832,7 +18481,7 @@ invalid_assignment_rule(Parser *p) && (augassign_var = augassign_rule(p)) // augassign && - (_tmp_152_var = _tmp_152_rule(p)) // yield_expr | star_expressions + (_tmp_150_var = _tmp_150_rule(p)) // yield_expr | star_expressions ) { D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); @@ -19091,11 +18740,11 @@ invalid_comprehension_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses")); - void *_tmp_153_var; + void *_tmp_151_var; expr_ty a; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_153_var = _tmp_153_rule(p)) // '[' | '(' | '{' + (_tmp_151_var = _tmp_151_rule(p)) // '[' | '(' | '{' && (a = starred_expression_rule(p)) // starred_expression && @@ -19122,12 +18771,12 @@ invalid_comprehension_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses")); Token * _literal; - void *_tmp_154_var; + void *_tmp_152_var; expr_ty a; asdl_expr_seq* b; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_154_var = _tmp_154_rule(p)) // '[' | '{' + (_tmp_152_var = _tmp_152_rule(p)) // '[' | '{' && (a = star_named_expression_rule(p)) // star_named_expression && @@ -19157,12 +18806,12 @@ invalid_comprehension_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses")); - void *_tmp_155_var; + void *_tmp_153_var; expr_ty a; Token * b; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_155_var = _tmp_155_rule(p)) // '[' | '{' + (_tmp_153_var = _tmp_153_rule(p)) // '[' | '{' && (a = star_named_expression_rule(p)) // star_named_expression && @@ -19260,11 +18909,11 @@ invalid_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default")); - asdl_seq * _loop0_156_var; + asdl_seq * _loop0_154_var; arg_ty a; void *invalid_parameters_helper_var; if ( - (_loop0_156_var = _loop0_156_rule(p)) // param_no_default* + (_loop0_154_var = _loop0_154_rule(p)) // param_no_default* && (invalid_parameters_helper_var = invalid_parameters_helper_rule(p)) // invalid_parameters_helper && @@ -19331,13 +18980,13 @@ invalid_parameters_helper_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - asdl_seq * _loop1_157_var; + asdl_seq * _loop1_155_var; if ( - (_loop1_157_var = _loop1_157_rule(p)) // param_with_default+ + (_loop1_155_var = _loop1_155_rule(p)) // param_with_default+ ) { D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - _res = _loop1_157_var; + _res = _loop1_155_var; goto done; } p->mark = _mark; @@ -19368,11 +19017,11 @@ invalid_lambda_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default")); - asdl_seq * _loop0_158_var; + asdl_seq * _loop0_156_var; arg_ty a; void *invalid_lambda_parameters_helper_var; if ( - (_loop0_158_var = _loop0_158_rule(p)) // lambda_param_no_default* + (_loop0_156_var = _loop0_156_rule(p)) // lambda_param_no_default* && (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p)) // invalid_lambda_parameters_helper && @@ -19441,13 +19090,13 @@ invalid_lambda_parameters_helper_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - asdl_seq * _loop1_159_var; + asdl_seq * _loop1_157_var; if ( - (_loop1_159_var = _loop1_159_rule(p)) // lambda_param_with_default+ + (_loop1_157_var = _loop1_157_rule(p)) // lambda_param_with_default+ ) { D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - _res = _loop1_159_var; + _res = _loop1_157_var; goto done; } p->mark = _mark; @@ -19477,12 +19126,12 @@ invalid_star_etc_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); - void *_tmp_160_var; + void *_tmp_158_var; Token * a; if ( (a = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_160_var = _tmp_160_rule(p)) // ')' | ',' (')' | '**') + (_tmp_158_var = _tmp_158_rule(p)) // ')' | ',' (')' | '**') ) { D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); @@ -19552,11 +19201,11 @@ invalid_lambda_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); Token * _literal; - void *_tmp_161_var; + void *_tmp_159_var; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_161_var = _tmp_161_rule(p)) // ':' | ',' (':' | '**') + (_tmp_159_var = _tmp_159_rule(p)) // ':' | ',' (':' | '**') ) { D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); @@ -19658,7 +19307,7 @@ invalid_with_item_rule(Parser *p) && (a = expression_rule(p)) // expression && - _PyPegen_lookahead(1, _tmp_162_rule, p) + _PyPegen_lookahead(1, _tmp_160_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')")); @@ -19871,7 +19520,7 @@ invalid_with_stmt_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'")); - asdl_seq * _gather_163_var; + asdl_seq * _gather_161_var; Token * _keyword; Token * _literal; void *_opt_var; @@ -19881,13 +19530,13 @@ invalid_with_stmt_rule(Parser *p) && (_keyword = _PyPegen_expect_token(p, 519)) // token='with' && - (_gather_163_var = _gather_163_rule(p)) // ','.(expression ['as' star_target])+ + (_gather_161_var = _gather_161_rule(p)) // ','.(expression ['as' star_target])+ && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' ) { D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'")); - _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _gather_163_var, _literal); + _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _gather_161_var, _literal); goto done; } p->mark = _mark; @@ -19900,7 +19549,7 @@ invalid_with_stmt_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'")); - asdl_seq * _gather_165_var; + asdl_seq * _gather_163_var; Token * _keyword; Token * _literal; Token * _literal_1; @@ -19916,7 +19565,7 @@ invalid_with_stmt_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (_gather_165_var = _gather_165_rule(p)) // ','.(expressions ['as' star_target])+ + (_gather_163_var = _gather_163_rule(p)) // ','.(expressions ['as' star_target])+ && (_opt_var_1 = _PyPegen_expect_token(p, 12), 1) // ','? && @@ -19926,7 +19575,7 @@ invalid_with_stmt_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'")); - _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _literal, _gather_165_var, _opt_var_1, _literal_1, _literal_2); + _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _literal, _gather_163_var, _opt_var_1, _literal_1, _literal_2); goto done; } p->mark = _mark; @@ -19958,7 +19607,7 @@ invalid_with_stmt_indent_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT")); - asdl_seq * _gather_167_var; + asdl_seq * _gather_165_var; Token * _literal; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings @@ -19969,7 +19618,7 @@ invalid_with_stmt_indent_rule(Parser *p) && (a = _PyPegen_expect_token(p, 519)) // token='with' && - (_gather_167_var = _gather_167_rule(p)) // ','.(expression ['as' star_target])+ + (_gather_165_var = _gather_165_rule(p)) // ','.(expression ['as' star_target])+ && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -19997,7 +19646,7 @@ invalid_with_stmt_indent_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT")); - asdl_seq * _gather_169_var; + asdl_seq * _gather_167_var; Token * _literal; Token * _literal_1; Token * _literal_2; @@ -20014,7 +19663,7 @@ invalid_with_stmt_indent_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (_gather_169_var = _gather_169_rule(p)) // ','.(expressions ['as' star_target])+ + (_gather_167_var = _gather_167_rule(p)) // ','.(expressions ['as' star_target])+ && (_opt_var_1 = _PyPegen_expect_token(p, 12), 1) // ','? && @@ -20105,7 +19754,7 @@ invalid_try_stmt_rule(Parser *p) && (block_var = block_rule(p)) // block && - _PyPegen_lookahead(0, _tmp_171_rule, p) + _PyPegen_lookahead(0, _tmp_169_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')")); @@ -20163,7 +19812,7 @@ invalid_except_stmt_rule(Parser *p) && (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_170_rule(p), 1) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' ) @@ -20197,7 +19846,7 @@ invalid_except_stmt_rule(Parser *p) && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_173_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_171_rule(p), 1) // ['as' NAME] && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -20327,7 +19976,7 @@ invalid_except_stmt_indent_rule(Parser *p) && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_174_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20967,7 +20616,7 @@ invalid_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (_opt_var_2 = _tmp_175_rule(p), 1) // ['->' expression] + (_opt_var_2 = _tmp_173_rule(p), 1) // ['->' expression] && (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -21023,7 +20672,7 @@ invalid_class_def_raw_rule(Parser *p) && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_176_rule(p), 1) // ['(' arguments? ')'] + (_opt_var = _tmp_174_rule(p), 1) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -21071,11 +20720,11 @@ invalid_double_starred_kvpairs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - asdl_seq * _gather_177_var; + asdl_seq * _gather_175_var; Token * _literal; void *invalid_kvpair_var; if ( - (_gather_177_var = _gather_177_rule(p)) // ','.double_starred_kvpair+ + (_gather_175_var = _gather_175_rule(p)) // ','.double_starred_kvpair+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -21083,7 +20732,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - _res = _PyPegen_dummy_name(p, _gather_177_var, _literal, invalid_kvpair_var); + _res = _PyPegen_dummy_name(p, _gather_175_var, _literal, invalid_kvpair_var); goto done; } p->mark = _mark; @@ -21136,7 +20785,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_179_rule, p) + _PyPegen_lookahead(1, _tmp_177_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -22509,12 +22158,12 @@ _loop1_22_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_180_var; + void *_tmp_178_var; while ( - (_tmp_180_var = _tmp_180_rule(p)) // star_targets '=' + (_tmp_178_var = _tmp_178_rule(p)) // star_targets '=' ) { - _res = _tmp_180_var; + _res = _tmp_178_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23017,12 +22666,12 @@ _loop0_31_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_181_var; + void *_tmp_179_var; while ( - (_tmp_181_var = _tmp_181_rule(p)) // '.' | '...' + (_tmp_179_var = _tmp_179_rule(p)) // '.' | '...' ) { - _res = _tmp_181_var; + _res = _tmp_179_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23083,12 +22732,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_182_var; + void *_tmp_180_var; while ( - (_tmp_182_var = _tmp_182_rule(p)) // '.' | '...' + (_tmp_180_var = _tmp_180_rule(p)) // '.' | '...' ) { - _res = _tmp_182_var; + _res = _tmp_180_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26199,12 +25848,12 @@ _loop1_84_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_183_var; + void *_tmp_181_var; while ( - (_tmp_183_var = _tmp_183_rule(p)) // '@' named_expression NEWLINE + (_tmp_181_var = _tmp_181_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_183_var; + _res = _tmp_181_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26317,12 +25966,12 @@ _loop1_86_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_184_var; + void *_tmp_182_var; while ( - (_tmp_184_var = _tmp_184_rule(p)) // ',' star_expression + (_tmp_182_var = _tmp_182_rule(p)) // ',' star_expression ) { - _res = _tmp_184_var; + _res = _tmp_182_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26502,12 +26151,12 @@ _loop1_89_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_185_var; + void *_tmp_183_var; while ( - (_tmp_185_var = _tmp_185_rule(p)) // ',' expression + (_tmp_183_var = _tmp_183_rule(p)) // ',' expression ) { - _res = _tmp_185_var; + _res = _tmp_183_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27532,12 +27181,12 @@ _loop1_104_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_186_var; + void *_tmp_184_var; while ( - (_tmp_186_var = _tmp_186_rule(p)) // 'or' conjunction + (_tmp_184_var = _tmp_184_rule(p)) // 'or' conjunction ) { - _res = _tmp_186_var; + _res = _tmp_184_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27603,12 +27252,12 @@ _loop1_105_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_187_var; + void *_tmp_185_var; while ( - (_tmp_187_var = _tmp_187_rule(p)) // 'and' inversion + (_tmp_185_var = _tmp_185_rule(p)) // 'and' inversion ) { - _res = _tmp_187_var; + _res = _tmp_185_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28581,12 +28230,12 @@ _loop0_121_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_188_var; + void *_tmp_186_var; while ( - (_tmp_188_var = _tmp_188_rule(p)) // 'if' disjunction + (_tmp_186_var = _tmp_186_rule(p)) // 'if' disjunction ) { - _res = _tmp_188_var; + _res = _tmp_186_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28647,12 +28296,12 @@ _loop0_122_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_189_var; + void *_tmp_187_var; while ( - (_tmp_189_var = _tmp_189_rule(p)) // 'if' disjunction + (_tmp_187_var = _tmp_187_rule(p)) // 'if' disjunction ) { - _res = _tmp_189_var; + _res = _tmp_187_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28718,7 +28367,7 @@ _loop0_124_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_190_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_188_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' ) { _res = elem; @@ -28782,7 +28431,7 @@ _gather_123_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_190_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_188_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' && (seq = _loop0_124_rule(p)) // _loop0_124 ) @@ -29328,12 +28977,12 @@ _loop0_134_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_191_var; + void *_tmp_189_var; while ( - (_tmp_191_var = _tmp_191_rule(p)) // ',' star_target + (_tmp_189_var = _tmp_189_rule(p)) // ',' star_target ) { - _res = _tmp_191_var; + _res = _tmp_189_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29508,12 +29157,12 @@ _loop1_137_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_192_var; + void *_tmp_190_var; while ( - (_tmp_192_var = _tmp_192_rule(p)) // ',' star_target + (_tmp_190_var = _tmp_190_rule(p)) // ',' star_target ) { - _res = _tmp_192_var; + _res = _tmp_190_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29704,123 +29353,9 @@ _gather_139_rule(Parser *p) return _res; } -// _loop0_142: ',' target -static asdl_seq * -_loop0_142_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - void *_res = NULL; - int _mark = p->mark; - int _start_mark = p->mark; - void **_children = PyMem_Malloc(sizeof(void *)); - if (!_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - Py_ssize_t _children_capacity = 1; - Py_ssize_t _n = 0; - { // ',' target - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> _loop0_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' target")); - Token * _literal; - expr_ty elem; - while ( - (_literal = _PyPegen_expect_token(p, 12)) // token=',' - && - (elem = target_rule(p)) // target - ) - { - _res = elem; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - PyMem_Free(_children); - D(p->level--); - return NULL; - } - if (_n == _children_capacity) { - _children_capacity *= 2; - void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); - if (!_new_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - _children = _new_children; - } - _children[_n++] = _res; - _mark = p->mark; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_142[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' target")); - } - asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); - if (!_seq) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); - PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_142_type, _seq); - D(p->level--); - return _seq; -} - -// _gather_141: target _loop0_142 -static asdl_seq * -_gather_141_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - asdl_seq * _res = NULL; - int _mark = p->mark; - { // target _loop0_142 - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> _gather_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target _loop0_142")); - expr_ty elem; - asdl_seq * seq; - if ( - (elem = target_rule(p)) // target - && - (seq = _loop0_142_rule(p)) // _loop0_142 - ) - { - D(fprintf(stderr, "%*c+ _gather_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target _loop0_142")); - _res = _PyPegen_seq_insert_in_front(p, elem, seq); - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_141[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target _loop0_142")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - -// _tmp_143: args | expression for_if_clauses +// _tmp_141: args | expression for_if_clauses static void * -_tmp_143_rule(Parser *p) +_tmp_141_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -29834,18 +29369,18 @@ _tmp_143_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); expr_ty args_var; if ( (args_var = args_rule(p)) // args ) { - D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); _res = args_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args")); } { // expression for_if_clauses @@ -29853,7 +29388,7 @@ _tmp_143_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); expr_ty expression_var; asdl_comprehension_seq* for_if_clauses_var; if ( @@ -29862,12 +29397,12 @@ _tmp_143_rule(Parser *p) (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses ) { - D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses")); } _res = NULL; @@ -29876,9 +29411,9 @@ _tmp_143_rule(Parser *p) return _res; } -// _tmp_144: NAME '=' +// _tmp_142: NAME '=' static void * -_tmp_144_rule(Parser *p) +_tmp_142_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -29892,7 +29427,7 @@ _tmp_144_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='")); + D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='")); Token * _literal; expr_ty name_var; if ( @@ -29901,12 +29436,12 @@ _tmp_144_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='")); + D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='")); _res = _PyPegen_dummy_name(p, name_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='")); } _res = NULL; @@ -29915,9 +29450,9 @@ _tmp_144_rule(Parser *p) return _res; } -// _tmp_145: NAME STRING | SOFT_KEYWORD +// _tmp_143: NAME STRING | SOFT_KEYWORD static void * -_tmp_145_rule(Parser *p) +_tmp_143_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -29931,7 +29466,7 @@ _tmp_145_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING")); + D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING")); expr_ty name_var; expr_ty string_var; if ( @@ -29940,12 +29475,12 @@ _tmp_145_rule(Parser *p) (string_var = _PyPegen_string_token(p)) // STRING ) { - D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING")); + D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING")); _res = _PyPegen_dummy_name(p, name_var, string_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING")); } { // SOFT_KEYWORD @@ -29953,18 +29488,18 @@ _tmp_145_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); + D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); expr_ty soft_keyword_var; if ( (soft_keyword_var = _PyPegen_soft_keyword_token(p)) // SOFT_KEYWORD ) { - D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); + D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); _res = soft_keyword_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD")); } _res = NULL; @@ -29973,9 +29508,9 @@ _tmp_145_rule(Parser *p) return _res; } -// _tmp_146: '=' | ':=' +// _tmp_144: '=' | ':=' static void * -_tmp_146_rule(Parser *p) +_tmp_144_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -29989,18 +29524,18 @@ _tmp_146_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); } { // ':=' @@ -30008,18 +29543,18 @@ _tmp_146_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 53)) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='")); } _res = NULL; @@ -30028,9 +29563,9 @@ _tmp_146_rule(Parser *p) return _res; } -// _tmp_147: list | tuple | genexp | 'True' | 'None' | 'False' +// _tmp_145: list | tuple | genexp | 'True' | 'None' | 'False' static void * -_tmp_147_rule(Parser *p) +_tmp_145_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30044,18 +29579,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); expr_ty list_var; if ( (list_var = list_rule(p)) // list ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); _res = list_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list")); } { // tuple @@ -30063,18 +29598,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); expr_ty tuple_var; if ( (tuple_var = tuple_rule(p)) // tuple ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); _res = tuple_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple")); } { // genexp @@ -30082,18 +29617,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); expr_ty genexp_var; if ( (genexp_var = genexp_rule(p)) // genexp ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); _res = genexp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp")); } { // 'True' @@ -30101,18 +29636,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 524)) // token='True' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'")); } { // 'None' @@ -30120,18 +29655,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 523)) // token='None' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'")); } { // 'False' @@ -30139,18 +29674,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 525)) // token='False' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'")); } _res = NULL; @@ -30159,9 +29694,9 @@ _tmp_147_rule(Parser *p) return _res; } -// _tmp_148: '=' | ':=' +// _tmp_146: '=' | ':=' static void * -_tmp_148_rule(Parser *p) +_tmp_146_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30175,18 +29710,18 @@ _tmp_148_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); } { // ':=' @@ -30194,18 +29729,18 @@ _tmp_148_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 53)) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='")); } _res = NULL; @@ -30214,9 +29749,9 @@ _tmp_148_rule(Parser *p) return _res; } -// _loop0_149: star_named_expressions +// _loop0_147: star_named_expressions static asdl_seq * -_loop0_149_rule(Parser *p) +_loop0_147_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30240,7 +29775,7 @@ _loop0_149_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); + D(fprintf(stderr, "%*c> _loop0_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); asdl_expr_seq* star_named_expressions_var; while ( (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions @@ -30262,7 +29797,7 @@ _loop0_149_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_149[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_147[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30275,14 +29810,14 @@ _loop0_149_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_149_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_147_type, _seq); D(p->level--); return _seq; } -// _loop0_150: (star_targets '=') +// _loop0_148: (star_targets '=') static asdl_seq * -_loop0_150_rule(Parser *p) +_loop0_148_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30306,13 +29841,13 @@ _loop0_150_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_193_var; + D(fprintf(stderr, "%*c> _loop0_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_191_var; while ( - (_tmp_193_var = _tmp_193_rule(p)) // star_targets '=' + (_tmp_191_var = _tmp_191_rule(p)) // star_targets '=' ) { - _res = _tmp_193_var; + _res = _tmp_191_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30328,7 +29863,7 @@ _loop0_150_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_150[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_148[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30341,14 +29876,14 @@ _loop0_150_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_150_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_148_type, _seq); D(p->level--); return _seq; } -// _loop0_151: (star_targets '=') +// _loop0_149: (star_targets '=') static asdl_seq * -_loop0_151_rule(Parser *p) +_loop0_149_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30372,13 +29907,13 @@ _loop0_151_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_194_var; + D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_192_var; while ( - (_tmp_194_var = _tmp_194_rule(p)) // star_targets '=' + (_tmp_192_var = _tmp_192_rule(p)) // star_targets '=' ) { - _res = _tmp_194_var; + _res = _tmp_192_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30394,7 +29929,7 @@ _loop0_151_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_151[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_149[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30407,14 +29942,14 @@ _loop0_151_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_151_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_149_type, _seq); D(p->level--); return _seq; } -// _tmp_152: yield_expr | star_expressions +// _tmp_150: yield_expr | star_expressions static void * -_tmp_152_rule(Parser *p) +_tmp_150_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30428,18 +29963,18 @@ _tmp_152_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // star_expressions @@ -30447,18 +29982,18 @@ _tmp_152_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); expr_ty star_expressions_var; if ( (star_expressions_var = star_expressions_rule(p)) // star_expressions ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); _res = star_expressions_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); } _res = NULL; @@ -30467,9 +30002,9 @@ _tmp_152_rule(Parser *p) return _res; } -// _tmp_153: '[' | '(' | '{' +// _tmp_151: '[' | '(' | '{' static void * -_tmp_153_rule(Parser *p) +_tmp_151_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30483,18 +30018,18 @@ _tmp_153_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '(' @@ -30502,18 +30037,18 @@ _tmp_153_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('")); } { // '{' @@ -30521,18 +30056,18 @@ _tmp_153_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -30541,9 +30076,9 @@ _tmp_153_rule(Parser *p) return _res; } -// _tmp_154: '[' | '{' +// _tmp_152: '[' | '{' static void * -_tmp_154_rule(Parser *p) +_tmp_152_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30557,18 +30092,18 @@ _tmp_154_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '{' @@ -30576,18 +30111,18 @@ _tmp_154_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -30596,9 +30131,9 @@ _tmp_154_rule(Parser *p) return _res; } -// _tmp_155: '[' | '{' +// _tmp_153: '[' | '{' static void * -_tmp_155_rule(Parser *p) +_tmp_153_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30612,18 +30147,18 @@ _tmp_155_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '{' @@ -30631,18 +30166,18 @@ _tmp_155_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -30651,9 +30186,9 @@ _tmp_155_rule(Parser *p) return _res; } -// _loop0_156: param_no_default +// _loop0_154: param_no_default static asdl_seq * -_loop0_156_rule(Parser *p) +_loop0_154_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30677,7 +30212,7 @@ _loop0_156_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -30699,7 +30234,7 @@ _loop0_156_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_156[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_154[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30712,14 +30247,14 @@ _loop0_156_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_156_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_154_type, _seq); D(p->level--); return _seq; } -// _loop1_157: param_with_default +// _loop1_155: param_with_default static asdl_seq * -_loop1_157_rule(Parser *p) +_loop1_155_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30743,7 +30278,7 @@ _loop1_157_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop1_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -30765,7 +30300,7 @@ _loop1_157_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_157[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_155[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -30783,14 +30318,14 @@ _loop1_157_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_157_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_155_type, _seq); D(p->level--); return _seq; } -// _loop0_158: lambda_param_no_default +// _loop0_156: lambda_param_no_default static asdl_seq * -_loop0_158_rule(Parser *p) +_loop0_156_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30814,7 +30349,7 @@ _loop0_158_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -30836,7 +30371,7 @@ _loop0_158_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_158[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_156[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30849,14 +30384,14 @@ _loop0_158_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_158_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_156_type, _seq); D(p->level--); return _seq; } -// _loop1_159: lambda_param_with_default +// _loop1_157: lambda_param_with_default static asdl_seq * -_loop1_159_rule(Parser *p) +_loop1_157_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30880,7 +30415,7 @@ _loop1_159_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop1_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -30902,7 +30437,7 @@ _loop1_159_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_159[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_157[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -30920,14 +30455,14 @@ _loop1_159_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_159_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_157_type, _seq); D(p->level--); return _seq; } -// _tmp_160: ')' | ',' (')' | '**') +// _tmp_158: ')' | ',' (')' | '**') static void * -_tmp_160_rule(Parser *p) +_tmp_158_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30941,18 +30476,18 @@ _tmp_160_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ',' (')' | '**') @@ -30960,21 +30495,21 @@ _tmp_160_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_195_var; + void *_tmp_193_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_195_var = _tmp_195_rule(p)) // ')' | '**' + (_tmp_193_var = _tmp_193_rule(p)) // ')' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_195_var); + D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_193_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')")); } _res = NULL; @@ -30983,9 +30518,9 @@ _tmp_160_rule(Parser *p) return _res; } -// _tmp_161: ':' | ',' (':' | '**') +// _tmp_159: ':' | ',' (':' | '**') static void * -_tmp_161_rule(Parser *p) +_tmp_159_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30999,18 +30534,18 @@ _tmp_161_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // ',' (':' | '**') @@ -31018,21 +30553,21 @@ _tmp_161_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_196_var; + void *_tmp_194_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_196_var = _tmp_196_rule(p)) // ':' | '**' + (_tmp_194_var = _tmp_194_rule(p)) // ':' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_196_var); + D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_194_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')")); } _res = NULL; @@ -31041,9 +30576,9 @@ _tmp_161_rule(Parser *p) return _res; } -// _tmp_162: ',' | ')' | ':' +// _tmp_160: ',' | ')' | ':' static void * -_tmp_162_rule(Parser *p) +_tmp_160_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31057,18 +30592,18 @@ _tmp_162_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } { // ')' @@ -31076,18 +30611,18 @@ _tmp_162_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ':' @@ -31095,18 +30630,18 @@ _tmp_162_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } _res = NULL; @@ -31115,9 +30650,9 @@ _tmp_162_rule(Parser *p) return _res; } -// _loop0_164: ',' (expression ['as' star_target]) +// _loop0_162: ',' (expression ['as' star_target]) static asdl_seq * -_loop0_164_rule(Parser *p) +_loop0_162_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31141,13 +30676,13 @@ _loop0_164_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_197_rule(p)) // expression ['as' star_target] + (elem = _tmp_195_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31172,7 +30707,7 @@ _loop0_164_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_164[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_162[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31185,14 +30720,14 @@ _loop0_164_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_164_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_162_type, _seq); D(p->level--); return _seq; } -// _gather_163: (expression ['as' star_target]) _loop0_164 +// _gather_161: (expression ['as' star_target]) _loop0_162 static asdl_seq * -_gather_163_rule(Parser *p) +_gather_161_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31201,27 +30736,27 @@ _gather_163_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expression ['as' star_target]) _loop0_164 + { // (expression ['as' star_target]) _loop0_162 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_164")); + D(fprintf(stderr, "%*c> _gather_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_162")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_197_rule(p)) // expression ['as' star_target] + (elem = _tmp_195_rule(p)) // expression ['as' star_target] && - (seq = _loop0_164_rule(p)) // _loop0_164 + (seq = _loop0_162_rule(p)) // _loop0_162 ) { - D(fprintf(stderr, "%*c+ _gather_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_164")); + D(fprintf(stderr, "%*c+ _gather_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_162")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_163[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_164")); + D(fprintf(stderr, "%*c%s _gather_161[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_162")); } _res = NULL; done: @@ -31229,9 +30764,9 @@ _gather_163_rule(Parser *p) return _res; } -// _loop0_166: ',' (expressions ['as' star_target]) +// _loop0_164: ',' (expressions ['as' star_target]) static asdl_seq * -_loop0_166_rule(Parser *p) +_loop0_164_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31255,13 +30790,13 @@ _loop0_166_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_198_rule(p)) // expressions ['as' star_target] + (elem = _tmp_196_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31286,7 +30821,7 @@ _loop0_166_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_166[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_164[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31299,14 +30834,14 @@ _loop0_166_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_166_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_164_type, _seq); D(p->level--); return _seq; } -// _gather_165: (expressions ['as' star_target]) _loop0_166 +// _gather_163: (expressions ['as' star_target]) _loop0_164 static asdl_seq * -_gather_165_rule(Parser *p) +_gather_163_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31315,27 +30850,27 @@ _gather_165_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expressions ['as' star_target]) _loop0_166 + { // (expressions ['as' star_target]) _loop0_164 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_166")); + D(fprintf(stderr, "%*c> _gather_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_164")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_198_rule(p)) // expressions ['as' star_target] + (elem = _tmp_196_rule(p)) // expressions ['as' star_target] && - (seq = _loop0_166_rule(p)) // _loop0_166 + (seq = _loop0_164_rule(p)) // _loop0_164 ) { - D(fprintf(stderr, "%*c+ _gather_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_166")); + D(fprintf(stderr, "%*c+ _gather_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_164")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_165[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_166")); + D(fprintf(stderr, "%*c%s _gather_163[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_164")); } _res = NULL; done: @@ -31343,9 +30878,9 @@ _gather_165_rule(Parser *p) return _res; } -// _loop0_168: ',' (expression ['as' star_target]) +// _loop0_166: ',' (expression ['as' star_target]) static asdl_seq * -_loop0_168_rule(Parser *p) +_loop0_166_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31369,13 +30904,13 @@ _loop0_168_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_199_rule(p)) // expression ['as' star_target] + (elem = _tmp_197_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31400,7 +30935,7 @@ _loop0_168_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_168[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_166[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31413,14 +30948,14 @@ _loop0_168_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_168_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_166_type, _seq); D(p->level--); return _seq; } -// _gather_167: (expression ['as' star_target]) _loop0_168 +// _gather_165: (expression ['as' star_target]) _loop0_166 static asdl_seq * -_gather_167_rule(Parser *p) +_gather_165_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31429,27 +30964,27 @@ _gather_167_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expression ['as' star_target]) _loop0_168 + { // (expression ['as' star_target]) _loop0_166 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_168")); + D(fprintf(stderr, "%*c> _gather_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_166")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_199_rule(p)) // expression ['as' star_target] + (elem = _tmp_197_rule(p)) // expression ['as' star_target] && - (seq = _loop0_168_rule(p)) // _loop0_168 + (seq = _loop0_166_rule(p)) // _loop0_166 ) { - D(fprintf(stderr, "%*c+ _gather_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_168")); + D(fprintf(stderr, "%*c+ _gather_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_166")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_167[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_168")); + D(fprintf(stderr, "%*c%s _gather_165[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_166")); } _res = NULL; done: @@ -31457,9 +30992,9 @@ _gather_167_rule(Parser *p) return _res; } -// _loop0_170: ',' (expressions ['as' star_target]) +// _loop0_168: ',' (expressions ['as' star_target]) static asdl_seq * -_loop0_170_rule(Parser *p) +_loop0_168_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31483,13 +31018,13 @@ _loop0_170_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_200_rule(p)) // expressions ['as' star_target] + (elem = _tmp_198_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31514,7 +31049,7 @@ _loop0_170_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_170[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_168[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31527,14 +31062,14 @@ _loop0_170_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_170_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_168_type, _seq); D(p->level--); return _seq; } -// _gather_169: (expressions ['as' star_target]) _loop0_170 +// _gather_167: (expressions ['as' star_target]) _loop0_168 static asdl_seq * -_gather_169_rule(Parser *p) +_gather_167_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31543,27 +31078,27 @@ _gather_169_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expressions ['as' star_target]) _loop0_170 + { // (expressions ['as' star_target]) _loop0_168 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_170")); + D(fprintf(stderr, "%*c> _gather_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_168")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_200_rule(p)) // expressions ['as' star_target] + (elem = _tmp_198_rule(p)) // expressions ['as' star_target] && - (seq = _loop0_170_rule(p)) // _loop0_170 + (seq = _loop0_168_rule(p)) // _loop0_168 ) { - D(fprintf(stderr, "%*c+ _gather_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_170")); + D(fprintf(stderr, "%*c+ _gather_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_168")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_169[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_170")); + D(fprintf(stderr, "%*c%s _gather_167[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_168")); } _res = NULL; done: @@ -31571,9 +31106,9 @@ _gather_169_rule(Parser *p) return _res; } -// _tmp_171: 'except' | 'finally' +// _tmp_169: 'except' | 'finally' static void * -_tmp_171_rule(Parser *p) +_tmp_169_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31587,18 +31122,18 @@ _tmp_171_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); + D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 521)) // token='except' ) { - D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); + D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'")); } { // 'finally' @@ -31606,18 +31141,18 @@ _tmp_171_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); + D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 522)) // token='finally' ) { - D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); + D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'")); } _res = NULL; @@ -31626,9 +31161,9 @@ _tmp_171_rule(Parser *p) return _res; } -// _tmp_172: 'as' NAME +// _tmp_170: 'as' NAME static void * -_tmp_172_rule(Parser *p) +_tmp_170_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31642,7 +31177,7 @@ _tmp_172_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( @@ -31651,12 +31186,12 @@ _tmp_172_rule(Parser *p) (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_170[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31665,9 +31200,9 @@ _tmp_172_rule(Parser *p) return _res; } -// _tmp_173: 'as' NAME +// _tmp_171: 'as' NAME static void * -_tmp_173_rule(Parser *p) +_tmp_171_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31681,7 +31216,7 @@ _tmp_173_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( @@ -31690,12 +31225,12 @@ _tmp_173_rule(Parser *p) (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31704,9 +31239,9 @@ _tmp_173_rule(Parser *p) return _res; } -// _tmp_174: 'as' NAME +// _tmp_172: 'as' NAME static void * -_tmp_174_rule(Parser *p) +_tmp_172_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31720,7 +31255,7 @@ _tmp_174_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( @@ -31729,12 +31264,12 @@ _tmp_174_rule(Parser *p) (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31743,9 +31278,9 @@ _tmp_174_rule(Parser *p) return _res; } -// _tmp_175: '->' expression +// _tmp_173: '->' expression static void * -_tmp_175_rule(Parser *p) +_tmp_173_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31759,7 +31294,7 @@ _tmp_175_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty expression_var; if ( @@ -31768,12 +31303,12 @@ _tmp_175_rule(Parser *p) (expression_var = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = _PyPegen_dummy_name(p, _literal, expression_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -31782,9 +31317,9 @@ _tmp_175_rule(Parser *p) return _res; } -// _tmp_176: '(' arguments? ')' +// _tmp_174: '(' arguments? ')' static void * -_tmp_176_rule(Parser *p) +_tmp_174_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31798,7 +31333,7 @@ _tmp_176_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -31811,12 +31346,12 @@ _tmp_176_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -31825,9 +31360,9 @@ _tmp_176_rule(Parser *p) return _res; } -// _loop0_178: ',' double_starred_kvpair +// _loop0_176: ',' double_starred_kvpair static asdl_seq * -_loop0_178_rule(Parser *p) +_loop0_176_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31851,7 +31386,7 @@ _loop0_178_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -31882,7 +31417,7 @@ _loop0_178_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_176[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31895,14 +31430,14 @@ _loop0_178_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_178_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_176_type, _seq); D(p->level--); return _seq; } -// _gather_177: double_starred_kvpair _loop0_178 +// _gather_175: double_starred_kvpair _loop0_176 static asdl_seq * -_gather_177_rule(Parser *p) +_gather_175_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31911,27 +31446,27 @@ _gather_177_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_178 + { // double_starred_kvpair _loop0_176 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_178")); + D(fprintf(stderr, "%*c> _gather_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_176")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_178_rule(p)) // _loop0_178 + (seq = _loop0_176_rule(p)) // _loop0_176 ) { - D(fprintf(stderr, "%*c+ _gather_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_178")); + D(fprintf(stderr, "%*c+ _gather_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_176")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_177[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_178")); + D(fprintf(stderr, "%*c%s _gather_175[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_176")); } _res = NULL; done: @@ -31939,9 +31474,9 @@ _gather_177_rule(Parser *p) return _res; } -// _tmp_179: '}' | ',' +// _tmp_177: '}' | ',' static void * -_tmp_179_rule(Parser *p) +_tmp_177_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31955,18 +31490,18 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -31974,18 +31509,18 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -31994,9 +31529,9 @@ _tmp_179_rule(Parser *p) return _res; } -// _tmp_180: star_targets '=' +// _tmp_178: star_targets '=' static void * -_tmp_180_rule(Parser *p) +_tmp_178_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32010,7 +31545,7 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -32019,7 +31554,7 @@ _tmp_180_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32029,7 +31564,7 @@ _tmp_180_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32038,9 +31573,9 @@ _tmp_180_rule(Parser *p) return _res; } -// _tmp_181: '.' | '...' +// _tmp_179: '.' | '...' static void * -_tmp_181_rule(Parser *p) +_tmp_179_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32054,18 +31589,18 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -32073,18 +31608,18 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32093,9 +31628,9 @@ _tmp_181_rule(Parser *p) return _res; } -// _tmp_182: '.' | '...' +// _tmp_180: '.' | '...' static void * -_tmp_182_rule(Parser *p) +_tmp_180_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32109,18 +31644,18 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -32128,18 +31663,18 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32148,9 +31683,9 @@ _tmp_182_rule(Parser *p) return _res; } -// _tmp_183: '@' named_expression NEWLINE +// _tmp_181: '@' named_expression NEWLINE static void * -_tmp_183_rule(Parser *p) +_tmp_181_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32164,7 +31699,7 @@ _tmp_183_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -32176,7 +31711,7 @@ _tmp_183_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32186,7 +31721,7 @@ _tmp_183_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -32195,9 +31730,9 @@ _tmp_183_rule(Parser *p) return _res; } -// _tmp_184: ',' star_expression +// _tmp_182: ',' star_expression static void * -_tmp_184_rule(Parser *p) +_tmp_182_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32211,7 +31746,7 @@ _tmp_184_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -32220,7 +31755,7 @@ _tmp_184_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32230,7 +31765,7 @@ _tmp_184_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -32239,9 +31774,9 @@ _tmp_184_rule(Parser *p) return _res; } -// _tmp_185: ',' expression +// _tmp_183: ',' expression static void * -_tmp_185_rule(Parser *p) +_tmp_183_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32255,7 +31790,7 @@ _tmp_185_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -32264,7 +31799,7 @@ _tmp_185_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32274,7 +31809,7 @@ _tmp_185_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -32283,9 +31818,9 @@ _tmp_185_rule(Parser *p) return _res; } -// _tmp_186: 'or' conjunction +// _tmp_184: 'or' conjunction static void * -_tmp_186_rule(Parser *p) +_tmp_184_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32299,7 +31834,7 @@ _tmp_186_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -32308,7 +31843,7 @@ _tmp_186_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32318,7 +31853,7 @@ _tmp_186_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -32327,9 +31862,9 @@ _tmp_186_rule(Parser *p) return _res; } -// _tmp_187: 'and' inversion +// _tmp_185: 'and' inversion static void * -_tmp_187_rule(Parser *p) +_tmp_185_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32343,7 +31878,7 @@ _tmp_187_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -32352,7 +31887,7 @@ _tmp_187_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32362,7 +31897,7 @@ _tmp_187_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -32371,9 +31906,9 @@ _tmp_187_rule(Parser *p) return _res; } -// _tmp_188: 'if' disjunction +// _tmp_186: 'if' disjunction static void * -_tmp_188_rule(Parser *p) +_tmp_186_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32387,7 +31922,7 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32396,7 +31931,7 @@ _tmp_188_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32406,7 +31941,7 @@ _tmp_188_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32415,9 +31950,9 @@ _tmp_188_rule(Parser *p) return _res; } -// _tmp_189: 'if' disjunction +// _tmp_187: 'if' disjunction static void * -_tmp_189_rule(Parser *p) +_tmp_187_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32431,7 +31966,7 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32440,7 +31975,7 @@ _tmp_189_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32450,7 +31985,7 @@ _tmp_189_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32459,9 +31994,9 @@ _tmp_189_rule(Parser *p) return _res; } -// _tmp_190: starred_expression | (assigment_expression | expression !':=') !'=' +// _tmp_188: starred_expression | (assigment_expression | expression !':=') !'=' static void * -_tmp_190_rule(Parser *p) +_tmp_188_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32475,18 +32010,18 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // (assigment_expression | expression !':=') !'=' @@ -32494,20 +32029,20 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - void *_tmp_201_var; + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + void *_tmp_199_var; if ( - (_tmp_201_var = _tmp_201_rule(p)) // assigment_expression | expression !':=' + (_tmp_199_var = _tmp_199_rule(p)) // assigment_expression | expression !':=' && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - _res = _tmp_201_var; + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + _res = _tmp_199_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assigment_expression | expression !':=') !'='")); } _res = NULL; @@ -32516,9 +32051,9 @@ _tmp_190_rule(Parser *p) return _res; } -// _tmp_191: ',' star_target +// _tmp_189: ',' star_target static void * -_tmp_191_rule(Parser *p) +_tmp_189_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32532,7 +32067,7 @@ _tmp_191_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32541,7 +32076,7 @@ _tmp_191_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32551,7 +32086,7 @@ _tmp_191_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32560,9 +32095,9 @@ _tmp_191_rule(Parser *p) return _res; } -// _tmp_192: ',' star_target +// _tmp_190: ',' star_target static void * -_tmp_192_rule(Parser *p) +_tmp_190_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32576,7 +32111,7 @@ _tmp_192_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32585,7 +32120,7 @@ _tmp_192_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32595,7 +32130,7 @@ _tmp_192_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32604,9 +32139,9 @@ _tmp_192_rule(Parser *p) return _res; } -// _tmp_193: star_targets '=' +// _tmp_191: star_targets '=' static void * -_tmp_193_rule(Parser *p) +_tmp_191_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32620,7 +32155,7 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32629,12 +32164,12 @@ _tmp_193_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32643,9 +32178,9 @@ _tmp_193_rule(Parser *p) return _res; } -// _tmp_194: star_targets '=' +// _tmp_192: star_targets '=' static void * -_tmp_194_rule(Parser *p) +_tmp_192_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32659,7 +32194,7 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32668,12 +32203,12 @@ _tmp_194_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32682,9 +32217,9 @@ _tmp_194_rule(Parser *p) return _res; } -// _tmp_195: ')' | '**' +// _tmp_193: ')' | '**' static void * -_tmp_195_rule(Parser *p) +_tmp_193_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32698,18 +32233,18 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -32717,18 +32252,18 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32737,9 +32272,9 @@ _tmp_195_rule(Parser *p) return _res; } -// _tmp_196: ':' | '**' +// _tmp_194: ':' | '**' static void * -_tmp_196_rule(Parser *p) +_tmp_194_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32753,18 +32288,18 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -32772,18 +32307,18 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32792,9 +32327,9 @@ _tmp_196_rule(Parser *p) return _res; } -// _tmp_197: expression ['as' star_target] +// _tmp_195: expression ['as' star_target] static void * -_tmp_197_rule(Parser *p) +_tmp_195_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32808,22 +32343,22 @@ _tmp_197_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_200_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32832,9 +32367,9 @@ _tmp_197_rule(Parser *p) return _res; } -// _tmp_198: expressions ['as' star_target] +// _tmp_196: expressions ['as' star_target] static void * -_tmp_198_rule(Parser *p) +_tmp_196_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32848,22 +32383,22 @@ _tmp_198_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_201_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32872,9 +32407,9 @@ _tmp_198_rule(Parser *p) return _res; } -// _tmp_199: expression ['as' star_target] +// _tmp_197: expression ['as' star_target] static void * -_tmp_199_rule(Parser *p) +_tmp_197_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32888,22 +32423,22 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32912,9 +32447,9 @@ _tmp_199_rule(Parser *p) return _res; } -// _tmp_200: expressions ['as' star_target] +// _tmp_198: expressions ['as' star_target] static void * -_tmp_200_rule(Parser *p) +_tmp_198_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32928,22 +32463,22 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_205_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32952,9 +32487,9 @@ _tmp_200_rule(Parser *p) return _res; } -// _tmp_201: assigment_expression | expression !':=' +// _tmp_199: assigment_expression | expression !':=' static void * -_tmp_201_rule(Parser *p) +_tmp_199_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32968,18 +32503,18 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); expr_ty assigment_expression_var; if ( (assigment_expression_var = assigment_expression_rule(p)) // assigment_expression ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); _res = assigment_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assigment_expression")); } { // expression !':=' @@ -32987,7 +32522,7 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression @@ -32995,12 +32530,12 @@ _tmp_201_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; @@ -33009,9 +32544,9 @@ _tmp_201_rule(Parser *p) return _res; } -// _tmp_202: 'as' star_target +// _tmp_200: 'as' star_target static void * -_tmp_202_rule(Parser *p) +_tmp_200_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33025,7 +32560,7 @@ _tmp_202_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33034,12 +32569,12 @@ _tmp_202_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33048,9 +32583,9 @@ _tmp_202_rule(Parser *p) return _res; } -// _tmp_203: 'as' star_target +// _tmp_201: 'as' star_target static void * -_tmp_203_rule(Parser *p) +_tmp_201_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33064,7 +32599,7 @@ _tmp_203_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33073,12 +32608,12 @@ _tmp_203_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33087,9 +32622,9 @@ _tmp_203_rule(Parser *p) return _res; } -// _tmp_204: 'as' star_target +// _tmp_202: 'as' star_target static void * -_tmp_204_rule(Parser *p) +_tmp_202_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33103,7 +32638,7 @@ _tmp_204_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33112,12 +32647,12 @@ _tmp_204_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33126,9 +32661,9 @@ _tmp_204_rule(Parser *p) return _res; } -// _tmp_205: 'as' star_target +// _tmp_203: 'as' star_target static void * -_tmp_205_rule(Parser *p) +_tmp_203_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33142,7 +32677,7 @@ _tmp_205_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33151,12 +32686,12 @@ _tmp_205_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; From webhook-mailer at python.org Thu Jun 10 18:31:19 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 10 Jun 2021 22:31:19 -0000 Subject: [Python-checkins] bpo-44385: Remove unused grammar rules (GH-26655) Message-ID: https://github.com/python/cpython/commit/3e137426de3e6a37622b2ca61207b1323fdea11f commit: 3e137426de3e6a37622b2ca61207b1323fdea11f branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-10T15:31:09-07:00 summary: bpo-44385: Remove unused grammar rules (GH-26655) Automerge-Triggered-By: GH:lysnikolaou (cherry picked from commit e7b4644607789848f9752a3bd20ff216e25b4156) Co-authored-by: Lysandros Nikolaou files: M Grammar/python.gram M Parser/parser.c diff --git a/Grammar/python.gram b/Grammar/python.gram index d0f9bb0bc4f277..0ccdc3e5b96957 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -811,11 +811,6 @@ del_t_atom[expr_ty]: | '(' a=[del_targets] ')' { _PyAST_Tuple(a, Del, EXTRA) } | '[' a=[del_targets] ']' { _PyAST_List(a, Del, EXTRA) } -targets[asdl_expr_seq*]: a[asdl_expr_seq*]=','.target+ [','] { a } -target[expr_ty] (memo): - | a=t_primary '.' b=NAME !t_lookahead { _PyAST_Attribute(a, b->v.Name.id, Store, EXTRA) } - | a=t_primary '[' b=slices ']' !t_lookahead { _PyAST_Subscript(a, b, Store, EXTRA) } - | t_atom t_primary[expr_ty]: | a=t_primary '.' b=NAME &t_lookahead { _PyAST_Attribute(a, b->v.Name.id, Load, EXTRA) } | a=t_primary '[' b=slices ']' &t_lookahead { _PyAST_Subscript(a, b, Load, EXTRA) } @@ -828,12 +823,6 @@ t_primary[expr_ty]: EXTRA) } | a=atom &t_lookahead { a } t_lookahead: '(' | '[' | '.' -t_atom[expr_ty]: - | a=NAME { _PyPegen_set_expr_context(p, a, Store) } - | '(' a=target ')' { _PyPegen_set_expr_context(p, a, Store) } - | '(' b=[targets] ')' { _PyAST_Tuple(b, Store, EXTRA) } - | '[' b=[targets] ']' { _PyAST_List(b, Store, EXTRA) } - # From here on, there are rules for invalid syntax with specialised error messages invalid_arguments: diff --git a/Parser/parser.c b/Parser/parser.c index 81218842cbafe7..238ce36b4fb142 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -247,256 +247,251 @@ static char *soft_keywords[] = { #define del_targets_type 1173 #define del_target_type 1174 #define del_t_atom_type 1175 -#define targets_type 1176 -#define target_type 1177 -#define t_primary_type 1178 // Left-recursive -#define t_lookahead_type 1179 -#define t_atom_type 1180 -#define invalid_arguments_type 1181 -#define invalid_kwarg_type 1182 -#define expression_without_invalid_type 1183 -#define invalid_expression_type 1184 -#define invalid_named_expression_type 1185 -#define invalid_assignment_type 1186 -#define invalid_ann_assign_target_type 1187 -#define invalid_del_stmt_type 1188 -#define invalid_block_type 1189 -#define invalid_primary_type 1190 // Left-recursive -#define invalid_comprehension_type 1191 -#define invalid_dict_comprehension_type 1192 -#define invalid_parameters_type 1193 -#define invalid_parameters_helper_type 1194 -#define invalid_lambda_parameters_type 1195 -#define invalid_lambda_parameters_helper_type 1196 -#define invalid_star_etc_type 1197 -#define invalid_lambda_star_etc_type 1198 -#define invalid_double_type_comments_type 1199 -#define invalid_with_item_type 1200 -#define invalid_for_target_type 1201 -#define invalid_group_type 1202 -#define invalid_import_from_targets_type 1203 -#define invalid_with_stmt_type 1204 -#define invalid_with_stmt_indent_type 1205 -#define invalid_try_stmt_type 1206 -#define invalid_except_stmt_type 1207 -#define invalid_finally_stmt_type 1208 -#define invalid_except_stmt_indent_type 1209 -#define invalid_match_stmt_type 1210 -#define invalid_case_block_type 1211 -#define invalid_if_stmt_type 1212 -#define invalid_elif_stmt_type 1213 -#define invalid_else_stmt_type 1214 -#define invalid_while_stmt_type 1215 -#define invalid_for_stmt_type 1216 -#define invalid_def_raw_type 1217 -#define invalid_class_def_raw_type 1218 -#define invalid_double_starred_kvpairs_type 1219 -#define invalid_kvpair_type 1220 -#define _loop0_1_type 1221 -#define _loop0_2_type 1222 -#define _loop0_4_type 1223 -#define _gather_3_type 1224 -#define _loop0_6_type 1225 -#define _gather_5_type 1226 -#define _loop0_8_type 1227 -#define _gather_7_type 1228 -#define _loop0_10_type 1229 -#define _gather_9_type 1230 -#define _loop1_11_type 1231 -#define _loop0_13_type 1232 -#define _gather_12_type 1233 -#define _tmp_14_type 1234 -#define _tmp_15_type 1235 -#define _tmp_16_type 1236 -#define _tmp_17_type 1237 -#define _tmp_18_type 1238 -#define _tmp_19_type 1239 -#define _tmp_20_type 1240 -#define _tmp_21_type 1241 -#define _loop1_22_type 1242 -#define _tmp_23_type 1243 -#define _tmp_24_type 1244 -#define _loop0_26_type 1245 -#define _gather_25_type 1246 -#define _loop0_28_type 1247 -#define _gather_27_type 1248 -#define _tmp_29_type 1249 -#define _tmp_30_type 1250 -#define _loop0_31_type 1251 -#define _loop1_32_type 1252 -#define _loop0_34_type 1253 -#define _gather_33_type 1254 -#define _tmp_35_type 1255 -#define _loop0_37_type 1256 -#define _gather_36_type 1257 -#define _tmp_38_type 1258 -#define _loop0_40_type 1259 -#define _gather_39_type 1260 -#define _loop0_42_type 1261 -#define _gather_41_type 1262 -#define _loop0_44_type 1263 -#define _gather_43_type 1264 -#define _loop0_46_type 1265 -#define _gather_45_type 1266 -#define _tmp_47_type 1267 -#define _loop1_48_type 1268 -#define _tmp_49_type 1269 -#define _loop1_50_type 1270 -#define _loop0_52_type 1271 -#define _gather_51_type 1272 -#define _tmp_53_type 1273 -#define _tmp_54_type 1274 -#define _tmp_55_type 1275 -#define _tmp_56_type 1276 -#define _loop0_58_type 1277 -#define _gather_57_type 1278 -#define _loop0_60_type 1279 -#define _gather_59_type 1280 -#define _tmp_61_type 1281 -#define _loop0_63_type 1282 -#define _gather_62_type 1283 -#define _loop0_65_type 1284 -#define _gather_64_type 1285 -#define _tmp_66_type 1286 -#define _tmp_67_type 1287 -#define _tmp_68_type 1288 -#define _tmp_69_type 1289 -#define _loop0_70_type 1290 -#define _loop0_71_type 1291 -#define _loop0_72_type 1292 -#define _loop1_73_type 1293 -#define _loop0_74_type 1294 -#define _loop1_75_type 1295 -#define _loop1_76_type 1296 -#define _loop1_77_type 1297 -#define _loop0_78_type 1298 -#define _loop1_79_type 1299 -#define _loop0_80_type 1300 -#define _loop1_81_type 1301 -#define _loop0_82_type 1302 -#define _loop1_83_type 1303 -#define _loop1_84_type 1304 -#define _tmp_85_type 1305 -#define _loop1_86_type 1306 -#define _loop0_88_type 1307 -#define _gather_87_type 1308 -#define _loop1_89_type 1309 -#define _loop0_90_type 1310 -#define _loop0_91_type 1311 -#define _loop0_92_type 1312 -#define _loop1_93_type 1313 -#define _loop0_94_type 1314 -#define _loop1_95_type 1315 -#define _loop1_96_type 1316 -#define _loop1_97_type 1317 -#define _loop0_98_type 1318 -#define _loop1_99_type 1319 -#define _loop0_100_type 1320 -#define _loop1_101_type 1321 -#define _loop0_102_type 1322 -#define _loop1_103_type 1323 -#define _loop1_104_type 1324 -#define _loop1_105_type 1325 -#define _loop1_106_type 1326 -#define _tmp_107_type 1327 -#define _loop0_109_type 1328 -#define _gather_108_type 1329 -#define _tmp_110_type 1330 -#define _tmp_111_type 1331 -#define _tmp_112_type 1332 -#define _tmp_113_type 1333 -#define _loop1_114_type 1334 -#define _tmp_115_type 1335 -#define _tmp_116_type 1336 -#define _tmp_117_type 1337 -#define _loop0_119_type 1338 -#define _gather_118_type 1339 -#define _loop1_120_type 1340 -#define _loop0_121_type 1341 -#define _loop0_122_type 1342 -#define _loop0_124_type 1343 -#define _gather_123_type 1344 -#define _tmp_125_type 1345 -#define _loop0_127_type 1346 -#define _gather_126_type 1347 -#define _loop0_129_type 1348 -#define _gather_128_type 1349 -#define _loop0_131_type 1350 -#define _gather_130_type 1351 -#define _loop0_133_type 1352 -#define _gather_132_type 1353 -#define _loop0_134_type 1354 -#define _loop0_136_type 1355 -#define _gather_135_type 1356 -#define _loop1_137_type 1357 -#define _tmp_138_type 1358 -#define _loop0_140_type 1359 -#define _gather_139_type 1360 -#define _loop0_142_type 1361 -#define _gather_141_type 1362 -#define _tmp_143_type 1363 -#define _tmp_144_type 1364 -#define _tmp_145_type 1365 -#define _tmp_146_type 1366 -#define _tmp_147_type 1367 -#define _tmp_148_type 1368 -#define _loop0_149_type 1369 -#define _loop0_150_type 1370 -#define _loop0_151_type 1371 -#define _tmp_152_type 1372 -#define _tmp_153_type 1373 -#define _tmp_154_type 1374 -#define _tmp_155_type 1375 -#define _loop0_156_type 1376 -#define _loop1_157_type 1377 -#define _loop0_158_type 1378 -#define _loop1_159_type 1379 -#define _tmp_160_type 1380 -#define _tmp_161_type 1381 -#define _tmp_162_type 1382 -#define _loop0_164_type 1383 -#define _gather_163_type 1384 -#define _loop0_166_type 1385 -#define _gather_165_type 1386 -#define _loop0_168_type 1387 -#define _gather_167_type 1388 -#define _loop0_170_type 1389 -#define _gather_169_type 1390 -#define _tmp_171_type 1391 -#define _tmp_172_type 1392 -#define _tmp_173_type 1393 -#define _tmp_174_type 1394 -#define _tmp_175_type 1395 -#define _tmp_176_type 1396 -#define _loop0_178_type 1397 -#define _gather_177_type 1398 -#define _tmp_179_type 1399 -#define _tmp_180_type 1400 -#define _tmp_181_type 1401 -#define _tmp_182_type 1402 -#define _tmp_183_type 1403 -#define _tmp_184_type 1404 -#define _tmp_185_type 1405 -#define _tmp_186_type 1406 -#define _tmp_187_type 1407 -#define _tmp_188_type 1408 -#define _tmp_189_type 1409 -#define _tmp_190_type 1410 -#define _tmp_191_type 1411 -#define _tmp_192_type 1412 -#define _tmp_193_type 1413 -#define _tmp_194_type 1414 -#define _tmp_195_type 1415 -#define _tmp_196_type 1416 -#define _tmp_197_type 1417 -#define _tmp_198_type 1418 -#define _tmp_199_type 1419 -#define _tmp_200_type 1420 -#define _tmp_201_type 1421 -#define _tmp_202_type 1422 -#define _tmp_203_type 1423 -#define _tmp_204_type 1424 -#define _tmp_205_type 1425 +#define t_primary_type 1176 // Left-recursive +#define t_lookahead_type 1177 +#define invalid_arguments_type 1178 +#define invalid_kwarg_type 1179 +#define expression_without_invalid_type 1180 +#define invalid_expression_type 1181 +#define invalid_named_expression_type 1182 +#define invalid_assignment_type 1183 +#define invalid_ann_assign_target_type 1184 +#define invalid_del_stmt_type 1185 +#define invalid_block_type 1186 +#define invalid_primary_type 1187 // Left-recursive +#define invalid_comprehension_type 1188 +#define invalid_dict_comprehension_type 1189 +#define invalid_parameters_type 1190 +#define invalid_parameters_helper_type 1191 +#define invalid_lambda_parameters_type 1192 +#define invalid_lambda_parameters_helper_type 1193 +#define invalid_star_etc_type 1194 +#define invalid_lambda_star_etc_type 1195 +#define invalid_double_type_comments_type 1196 +#define invalid_with_item_type 1197 +#define invalid_for_target_type 1198 +#define invalid_group_type 1199 +#define invalid_import_from_targets_type 1200 +#define invalid_with_stmt_type 1201 +#define invalid_with_stmt_indent_type 1202 +#define invalid_try_stmt_type 1203 +#define invalid_except_stmt_type 1204 +#define invalid_finally_stmt_type 1205 +#define invalid_except_stmt_indent_type 1206 +#define invalid_match_stmt_type 1207 +#define invalid_case_block_type 1208 +#define invalid_if_stmt_type 1209 +#define invalid_elif_stmt_type 1210 +#define invalid_else_stmt_type 1211 +#define invalid_while_stmt_type 1212 +#define invalid_for_stmt_type 1213 +#define invalid_def_raw_type 1214 +#define invalid_class_def_raw_type 1215 +#define invalid_double_starred_kvpairs_type 1216 +#define invalid_kvpair_type 1217 +#define _loop0_1_type 1218 +#define _loop0_2_type 1219 +#define _loop0_4_type 1220 +#define _gather_3_type 1221 +#define _loop0_6_type 1222 +#define _gather_5_type 1223 +#define _loop0_8_type 1224 +#define _gather_7_type 1225 +#define _loop0_10_type 1226 +#define _gather_9_type 1227 +#define _loop1_11_type 1228 +#define _loop0_13_type 1229 +#define _gather_12_type 1230 +#define _tmp_14_type 1231 +#define _tmp_15_type 1232 +#define _tmp_16_type 1233 +#define _tmp_17_type 1234 +#define _tmp_18_type 1235 +#define _tmp_19_type 1236 +#define _tmp_20_type 1237 +#define _tmp_21_type 1238 +#define _loop1_22_type 1239 +#define _tmp_23_type 1240 +#define _tmp_24_type 1241 +#define _loop0_26_type 1242 +#define _gather_25_type 1243 +#define _loop0_28_type 1244 +#define _gather_27_type 1245 +#define _tmp_29_type 1246 +#define _tmp_30_type 1247 +#define _loop0_31_type 1248 +#define _loop1_32_type 1249 +#define _loop0_34_type 1250 +#define _gather_33_type 1251 +#define _tmp_35_type 1252 +#define _loop0_37_type 1253 +#define _gather_36_type 1254 +#define _tmp_38_type 1255 +#define _loop0_40_type 1256 +#define _gather_39_type 1257 +#define _loop0_42_type 1258 +#define _gather_41_type 1259 +#define _loop0_44_type 1260 +#define _gather_43_type 1261 +#define _loop0_46_type 1262 +#define _gather_45_type 1263 +#define _tmp_47_type 1264 +#define _loop1_48_type 1265 +#define _tmp_49_type 1266 +#define _loop1_50_type 1267 +#define _loop0_52_type 1268 +#define _gather_51_type 1269 +#define _tmp_53_type 1270 +#define _tmp_54_type 1271 +#define _tmp_55_type 1272 +#define _tmp_56_type 1273 +#define _loop0_58_type 1274 +#define _gather_57_type 1275 +#define _loop0_60_type 1276 +#define _gather_59_type 1277 +#define _tmp_61_type 1278 +#define _loop0_63_type 1279 +#define _gather_62_type 1280 +#define _loop0_65_type 1281 +#define _gather_64_type 1282 +#define _tmp_66_type 1283 +#define _tmp_67_type 1284 +#define _tmp_68_type 1285 +#define _tmp_69_type 1286 +#define _loop0_70_type 1287 +#define _loop0_71_type 1288 +#define _loop0_72_type 1289 +#define _loop1_73_type 1290 +#define _loop0_74_type 1291 +#define _loop1_75_type 1292 +#define _loop1_76_type 1293 +#define _loop1_77_type 1294 +#define _loop0_78_type 1295 +#define _loop1_79_type 1296 +#define _loop0_80_type 1297 +#define _loop1_81_type 1298 +#define _loop0_82_type 1299 +#define _loop1_83_type 1300 +#define _loop1_84_type 1301 +#define _tmp_85_type 1302 +#define _loop1_86_type 1303 +#define _loop0_88_type 1304 +#define _gather_87_type 1305 +#define _loop1_89_type 1306 +#define _loop0_90_type 1307 +#define _loop0_91_type 1308 +#define _loop0_92_type 1309 +#define _loop1_93_type 1310 +#define _loop0_94_type 1311 +#define _loop1_95_type 1312 +#define _loop1_96_type 1313 +#define _loop1_97_type 1314 +#define _loop0_98_type 1315 +#define _loop1_99_type 1316 +#define _loop0_100_type 1317 +#define _loop1_101_type 1318 +#define _loop0_102_type 1319 +#define _loop1_103_type 1320 +#define _loop1_104_type 1321 +#define _loop1_105_type 1322 +#define _loop1_106_type 1323 +#define _tmp_107_type 1324 +#define _loop0_109_type 1325 +#define _gather_108_type 1326 +#define _tmp_110_type 1327 +#define _tmp_111_type 1328 +#define _tmp_112_type 1329 +#define _tmp_113_type 1330 +#define _loop1_114_type 1331 +#define _tmp_115_type 1332 +#define _tmp_116_type 1333 +#define _tmp_117_type 1334 +#define _loop0_119_type 1335 +#define _gather_118_type 1336 +#define _loop1_120_type 1337 +#define _loop0_121_type 1338 +#define _loop0_122_type 1339 +#define _loop0_124_type 1340 +#define _gather_123_type 1341 +#define _tmp_125_type 1342 +#define _loop0_127_type 1343 +#define _gather_126_type 1344 +#define _loop0_129_type 1345 +#define _gather_128_type 1346 +#define _loop0_131_type 1347 +#define _gather_130_type 1348 +#define _loop0_133_type 1349 +#define _gather_132_type 1350 +#define _loop0_134_type 1351 +#define _loop0_136_type 1352 +#define _gather_135_type 1353 +#define _loop1_137_type 1354 +#define _tmp_138_type 1355 +#define _loop0_140_type 1356 +#define _gather_139_type 1357 +#define _tmp_141_type 1358 +#define _tmp_142_type 1359 +#define _tmp_143_type 1360 +#define _tmp_144_type 1361 +#define _tmp_145_type 1362 +#define _tmp_146_type 1363 +#define _loop0_147_type 1364 +#define _loop0_148_type 1365 +#define _loop0_149_type 1366 +#define _tmp_150_type 1367 +#define _tmp_151_type 1368 +#define _tmp_152_type 1369 +#define _tmp_153_type 1370 +#define _loop0_154_type 1371 +#define _loop1_155_type 1372 +#define _loop0_156_type 1373 +#define _loop1_157_type 1374 +#define _tmp_158_type 1375 +#define _tmp_159_type 1376 +#define _tmp_160_type 1377 +#define _loop0_162_type 1378 +#define _gather_161_type 1379 +#define _loop0_164_type 1380 +#define _gather_163_type 1381 +#define _loop0_166_type 1382 +#define _gather_165_type 1383 +#define _loop0_168_type 1384 +#define _gather_167_type 1385 +#define _tmp_169_type 1386 +#define _tmp_170_type 1387 +#define _tmp_171_type 1388 +#define _tmp_172_type 1389 +#define _tmp_173_type 1390 +#define _tmp_174_type 1391 +#define _loop0_176_type 1392 +#define _gather_175_type 1393 +#define _tmp_177_type 1394 +#define _tmp_178_type 1395 +#define _tmp_179_type 1396 +#define _tmp_180_type 1397 +#define _tmp_181_type 1398 +#define _tmp_182_type 1399 +#define _tmp_183_type 1400 +#define _tmp_184_type 1401 +#define _tmp_185_type 1402 +#define _tmp_186_type 1403 +#define _tmp_187_type 1404 +#define _tmp_188_type 1405 +#define _tmp_189_type 1406 +#define _tmp_190_type 1407 +#define _tmp_191_type 1408 +#define _tmp_192_type 1409 +#define _tmp_193_type 1410 +#define _tmp_194_type 1411 +#define _tmp_195_type 1412 +#define _tmp_196_type 1413 +#define _tmp_197_type 1414 +#define _tmp_198_type 1415 +#define _tmp_199_type 1416 +#define _tmp_200_type 1417 +#define _tmp_201_type 1418 +#define _tmp_202_type 1419 +#define _tmp_203_type 1420 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -674,11 +669,8 @@ static expr_ty single_subscript_attribute_target_rule(Parser *p); static asdl_expr_seq* del_targets_rule(Parser *p); static expr_ty del_target_rule(Parser *p); static expr_ty del_t_atom_rule(Parser *p); -static asdl_expr_seq* targets_rule(Parser *p); -static expr_ty target_rule(Parser *p); static expr_ty t_primary_rule(Parser *p); static void *t_lookahead_rule(Parser *p); -static expr_ty t_atom_rule(Parser *p); static void *invalid_arguments_rule(Parser *p); static void *invalid_kwarg_rule(Parser *p); static expr_ty expression_without_invalid_rule(Parser *p); @@ -859,44 +851,44 @@ static asdl_seq *_loop1_137_rule(Parser *p); static void *_tmp_138_rule(Parser *p); static asdl_seq *_loop0_140_rule(Parser *p); static asdl_seq *_gather_139_rule(Parser *p); -static asdl_seq *_loop0_142_rule(Parser *p); -static asdl_seq *_gather_141_rule(Parser *p); +static void *_tmp_141_rule(Parser *p); +static void *_tmp_142_rule(Parser *p); static void *_tmp_143_rule(Parser *p); static void *_tmp_144_rule(Parser *p); static void *_tmp_145_rule(Parser *p); static void *_tmp_146_rule(Parser *p); -static void *_tmp_147_rule(Parser *p); -static void *_tmp_148_rule(Parser *p); +static asdl_seq *_loop0_147_rule(Parser *p); +static asdl_seq *_loop0_148_rule(Parser *p); static asdl_seq *_loop0_149_rule(Parser *p); -static asdl_seq *_loop0_150_rule(Parser *p); -static asdl_seq *_loop0_151_rule(Parser *p); +static void *_tmp_150_rule(Parser *p); +static void *_tmp_151_rule(Parser *p); static void *_tmp_152_rule(Parser *p); static void *_tmp_153_rule(Parser *p); -static void *_tmp_154_rule(Parser *p); -static void *_tmp_155_rule(Parser *p); +static asdl_seq *_loop0_154_rule(Parser *p); +static asdl_seq *_loop1_155_rule(Parser *p); static asdl_seq *_loop0_156_rule(Parser *p); static asdl_seq *_loop1_157_rule(Parser *p); -static asdl_seq *_loop0_158_rule(Parser *p); -static asdl_seq *_loop1_159_rule(Parser *p); +static void *_tmp_158_rule(Parser *p); +static void *_tmp_159_rule(Parser *p); static void *_tmp_160_rule(Parser *p); -static void *_tmp_161_rule(Parser *p); -static void *_tmp_162_rule(Parser *p); +static asdl_seq *_loop0_162_rule(Parser *p); +static asdl_seq *_gather_161_rule(Parser *p); static asdl_seq *_loop0_164_rule(Parser *p); static asdl_seq *_gather_163_rule(Parser *p); static asdl_seq *_loop0_166_rule(Parser *p); static asdl_seq *_gather_165_rule(Parser *p); static asdl_seq *_loop0_168_rule(Parser *p); static asdl_seq *_gather_167_rule(Parser *p); -static asdl_seq *_loop0_170_rule(Parser *p); -static asdl_seq *_gather_169_rule(Parser *p); +static void *_tmp_169_rule(Parser *p); +static void *_tmp_170_rule(Parser *p); static void *_tmp_171_rule(Parser *p); static void *_tmp_172_rule(Parser *p); static void *_tmp_173_rule(Parser *p); static void *_tmp_174_rule(Parser *p); -static void *_tmp_175_rule(Parser *p); -static void *_tmp_176_rule(Parser *p); -static asdl_seq *_loop0_178_rule(Parser *p); -static asdl_seq *_gather_177_rule(Parser *p); +static asdl_seq *_loop0_176_rule(Parser *p); +static asdl_seq *_gather_175_rule(Parser *p); +static void *_tmp_177_rule(Parser *p); +static void *_tmp_178_rule(Parser *p); static void *_tmp_179_rule(Parser *p); static void *_tmp_180_rule(Parser *p); static void *_tmp_181_rule(Parser *p); @@ -922,8 +914,6 @@ static void *_tmp_200_rule(Parser *p); static void *_tmp_201_rule(Parser *p); static void *_tmp_202_rule(Parser *p); static void *_tmp_203_rule(Parser *p); -static void *_tmp_204_rule(Parser *p); -static void *_tmp_205_rule(Parser *p); // file: statements? $ @@ -17408,189 +17398,6 @@ del_t_atom_rule(Parser *p) return _res; } -// targets: ','.target+ ','? -static asdl_expr_seq* -targets_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - asdl_expr_seq* _res = NULL; - int _mark = p->mark; - { // ','.target+ ','? - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.target+ ','?")); - void *_opt_var; - UNUSED(_opt_var); // Silence compiler warnings - asdl_expr_seq* a; - if ( - (a = (asdl_expr_seq*)_gather_141_rule(p)) // ','.target+ - && - (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? - ) - { - D(fprintf(stderr, "%*c+ targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.target+ ','?")); - _res = a; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s targets[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.target+ ','?")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - -// target: -// | t_primary '.' NAME !t_lookahead -// | t_primary '[' slices ']' !t_lookahead -// | t_atom -static expr_ty -target_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - expr_ty _res = NULL; - if (_PyPegen_is_memoized(p, target_type, &_res)) { - D(p->level--); - return _res; - } - int _mark = p->mark; - if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - int _start_lineno = p->tokens[_mark]->lineno; - UNUSED(_start_lineno); // Only used by EXTRA macro - int _start_col_offset = p->tokens[_mark]->col_offset; - UNUSED(_start_col_offset); // Only used by EXTRA macro - { // t_primary '.' NAME !t_lookahead - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - Token * _literal; - expr_ty a; - expr_ty b; - if ( - (a = t_primary_rule(p)) // t_primary - && - (_literal = _PyPegen_expect_token(p, 23)) // token='.' - && - (b = _PyPegen_name_token(p)) // NAME - && - _PyPegen_lookahead(0, t_lookahead_rule, p) - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - } - { // t_primary '[' slices ']' !t_lookahead - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - Token * _literal; - Token * _literal_1; - expr_ty a; - expr_ty b; - if ( - (a = t_primary_rule(p)) // t_primary - && - (_literal = _PyPegen_expect_token(p, 9)) // token='[' - && - (b = slices_rule(p)) // slices - && - (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' - && - _PyPegen_lookahead(0, t_lookahead_rule, p) - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_Subscript ( a , b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - } - { // t_atom - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_atom")); - expr_ty t_atom_var; - if ( - (t_atom_var = t_atom_rule(p)) // t_atom - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_atom")); - _res = t_atom_var; - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_atom")); - } - _res = NULL; - done: - _PyPegen_insert_memo(p, _mark, target_type, _res); - D(p->level--); - return _res; -} - // Left-recursive // t_primary: // | t_primary '.' NAME &t_lookahead @@ -17923,164 +17730,6 @@ t_lookahead_rule(Parser *p) return _res; } -// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']' -static expr_ty -t_atom_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - expr_ty _res = NULL; - int _mark = p->mark; - if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - int _start_lineno = p->tokens[_mark]->lineno; - UNUSED(_start_lineno); // Only used by EXTRA macro - int _start_col_offset = p->tokens[_mark]->col_offset; - UNUSED(_start_col_offset); // Only used by EXTRA macro - { // NAME - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME")); - expr_ty a; - if ( - (a = _PyPegen_name_token(p)) // NAME - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME")); - _res = _PyPegen_set_expr_context ( p , a , Store ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME")); - } - { // '(' target ')' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target ')'")); - Token * _literal; - Token * _literal_1; - expr_ty a; - if ( - (_literal = _PyPegen_expect_token(p, 7)) // token='(' - && - (a = target_rule(p)) // target - && - (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target ')'")); - _res = _PyPegen_set_expr_context ( p , a , Store ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target ')'")); - } - { // '(' targets? ')' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'")); - Token * _literal; - Token * _literal_1; - void *b; - if ( - (_literal = _PyPegen_expect_token(p, 7)) // token='(' - && - (b = targets_rule(p), 1) // targets? - && - (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_Tuple ( b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' targets? ')'")); - } - { // '[' targets? ']' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'")); - Token * _literal; - Token * _literal_1; - void *b; - if ( - (_literal = _PyPegen_expect_token(p, 9)) // token='[' - && - (b = targets_rule(p), 1) // targets? - && - (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_List ( b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' targets? ']'")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - // invalid_arguments: // | args ',' '*' // | expression for_if_clauses ',' [args | expression for_if_clauses] @@ -18146,7 +17795,7 @@ invalid_arguments_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_opt_var = _tmp_143_rule(p), 1) // [args | expression for_if_clauses] + (_opt_var = _tmp_141_rule(p), 1) // [args | expression for_if_clauses] ) { D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); @@ -18344,7 +17993,7 @@ invalid_kwarg_rule(Parser *p) expr_ty a; Token * b; if ( - _PyPegen_lookahead(0, _tmp_144_rule, p) + _PyPegen_lookahead(0, _tmp_142_rule, p) && (a = expression_rule(p)) // expression && @@ -18503,7 +18152,7 @@ invalid_expression_rule(Parser *p) expr_ty a; expr_ty b; if ( - _PyPegen_lookahead(0, _tmp_145_rule, p) + _PyPegen_lookahead(0, _tmp_143_rule, p) && (a = disjunction_rule(p)) // disjunction && @@ -18589,7 +18238,7 @@ invalid_named_expression_rule(Parser *p) && (b = bitwise_or_rule(p)) // bitwise_or && - _PyPegen_lookahead(0, _tmp_146_rule, p) + _PyPegen_lookahead(0, _tmp_144_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')")); @@ -18615,7 +18264,7 @@ invalid_named_expression_rule(Parser *p) Token * b; expr_ty bitwise_or_var; if ( - _PyPegen_lookahead(0, _tmp_147_rule, p) + _PyPegen_lookahead(0, _tmp_145_rule, p) && (a = bitwise_or_rule(p)) // bitwise_or && @@ -18623,7 +18272,7 @@ invalid_named_expression_rule(Parser *p) && (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or && - _PyPegen_lookahead(0, _tmp_148_rule, p) + _PyPegen_lookahead(0, _tmp_146_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')")); @@ -18700,7 +18349,7 @@ invalid_assignment_rule(Parser *p) D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression")); Token * _literal; Token * _literal_1; - asdl_seq * _loop0_149_var; + asdl_seq * _loop0_147_var; expr_ty a; expr_ty expression_var; if ( @@ -18708,7 +18357,7 @@ invalid_assignment_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_loop0_149_var = _loop0_149_rule(p)) // star_named_expressions* + (_loop0_147_var = _loop0_147_rule(p)) // star_named_expressions* && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -18765,10 +18414,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='")); Token * _literal; - asdl_seq * _loop0_150_var; + asdl_seq * _loop0_148_var; expr_ty a; if ( - (_loop0_150_var = _loop0_150_rule(p)) // ((star_targets '='))* + (_loop0_148_var = _loop0_148_rule(p)) // ((star_targets '='))* && (a = star_expressions_rule(p)) // star_expressions && @@ -18795,10 +18444,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='")); Token * _literal; - asdl_seq * _loop0_151_var; + asdl_seq * _loop0_149_var; expr_ty a; if ( - (_loop0_151_var = _loop0_151_rule(p)) // ((star_targets '='))* + (_loop0_149_var = _loop0_149_rule(p)) // ((star_targets '='))* && (a = yield_expr_rule(p)) // yield_expr && @@ -18824,7 +18473,7 @@ invalid_assignment_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); - void *_tmp_152_var; + void *_tmp_150_var; expr_ty a; AugOperator* augassign_var; if ( @@ -18832,7 +18481,7 @@ invalid_assignment_rule(Parser *p) && (augassign_var = augassign_rule(p)) // augassign && - (_tmp_152_var = _tmp_152_rule(p)) // yield_expr | star_expressions + (_tmp_150_var = _tmp_150_rule(p)) // yield_expr | star_expressions ) { D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); @@ -19091,11 +18740,11 @@ invalid_comprehension_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses")); - void *_tmp_153_var; + void *_tmp_151_var; expr_ty a; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_153_var = _tmp_153_rule(p)) // '[' | '(' | '{' + (_tmp_151_var = _tmp_151_rule(p)) // '[' | '(' | '{' && (a = starred_expression_rule(p)) // starred_expression && @@ -19122,12 +18771,12 @@ invalid_comprehension_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses")); Token * _literal; - void *_tmp_154_var; + void *_tmp_152_var; expr_ty a; asdl_expr_seq* b; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_154_var = _tmp_154_rule(p)) // '[' | '{' + (_tmp_152_var = _tmp_152_rule(p)) // '[' | '{' && (a = star_named_expression_rule(p)) // star_named_expression && @@ -19157,12 +18806,12 @@ invalid_comprehension_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses")); - void *_tmp_155_var; + void *_tmp_153_var; expr_ty a; Token * b; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_155_var = _tmp_155_rule(p)) // '[' | '{' + (_tmp_153_var = _tmp_153_rule(p)) // '[' | '{' && (a = star_named_expression_rule(p)) // star_named_expression && @@ -19260,11 +18909,11 @@ invalid_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default")); - asdl_seq * _loop0_156_var; + asdl_seq * _loop0_154_var; arg_ty a; void *invalid_parameters_helper_var; if ( - (_loop0_156_var = _loop0_156_rule(p)) // param_no_default* + (_loop0_154_var = _loop0_154_rule(p)) // param_no_default* && (invalid_parameters_helper_var = invalid_parameters_helper_rule(p)) // invalid_parameters_helper && @@ -19331,13 +18980,13 @@ invalid_parameters_helper_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - asdl_seq * _loop1_157_var; + asdl_seq * _loop1_155_var; if ( - (_loop1_157_var = _loop1_157_rule(p)) // param_with_default+ + (_loop1_155_var = _loop1_155_rule(p)) // param_with_default+ ) { D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - _res = _loop1_157_var; + _res = _loop1_155_var; goto done; } p->mark = _mark; @@ -19368,11 +19017,11 @@ invalid_lambda_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default")); - asdl_seq * _loop0_158_var; + asdl_seq * _loop0_156_var; arg_ty a; void *invalid_lambda_parameters_helper_var; if ( - (_loop0_158_var = _loop0_158_rule(p)) // lambda_param_no_default* + (_loop0_156_var = _loop0_156_rule(p)) // lambda_param_no_default* && (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p)) // invalid_lambda_parameters_helper && @@ -19441,13 +19090,13 @@ invalid_lambda_parameters_helper_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - asdl_seq * _loop1_159_var; + asdl_seq * _loop1_157_var; if ( - (_loop1_159_var = _loop1_159_rule(p)) // lambda_param_with_default+ + (_loop1_157_var = _loop1_157_rule(p)) // lambda_param_with_default+ ) { D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - _res = _loop1_159_var; + _res = _loop1_157_var; goto done; } p->mark = _mark; @@ -19477,12 +19126,12 @@ invalid_star_etc_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); - void *_tmp_160_var; + void *_tmp_158_var; Token * a; if ( (a = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_160_var = _tmp_160_rule(p)) // ')' | ',' (')' | '**') + (_tmp_158_var = _tmp_158_rule(p)) // ')' | ',' (')' | '**') ) { D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); @@ -19552,11 +19201,11 @@ invalid_lambda_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); Token * _literal; - void *_tmp_161_var; + void *_tmp_159_var; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_161_var = _tmp_161_rule(p)) // ':' | ',' (':' | '**') + (_tmp_159_var = _tmp_159_rule(p)) // ':' | ',' (':' | '**') ) { D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); @@ -19658,7 +19307,7 @@ invalid_with_item_rule(Parser *p) && (a = expression_rule(p)) // expression && - _PyPegen_lookahead(1, _tmp_162_rule, p) + _PyPegen_lookahead(1, _tmp_160_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')")); @@ -19871,7 +19520,7 @@ invalid_with_stmt_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'")); - asdl_seq * _gather_163_var; + asdl_seq * _gather_161_var; Token * _keyword; Token * _literal; void *_opt_var; @@ -19881,13 +19530,13 @@ invalid_with_stmt_rule(Parser *p) && (_keyword = _PyPegen_expect_token(p, 519)) // token='with' && - (_gather_163_var = _gather_163_rule(p)) // ','.(expression ['as' star_target])+ + (_gather_161_var = _gather_161_rule(p)) // ','.(expression ['as' star_target])+ && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' ) { D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'")); - _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _gather_163_var, _literal); + _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _gather_161_var, _literal); goto done; } p->mark = _mark; @@ -19900,7 +19549,7 @@ invalid_with_stmt_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'")); - asdl_seq * _gather_165_var; + asdl_seq * _gather_163_var; Token * _keyword; Token * _literal; Token * _literal_1; @@ -19916,7 +19565,7 @@ invalid_with_stmt_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (_gather_165_var = _gather_165_rule(p)) // ','.(expressions ['as' star_target])+ + (_gather_163_var = _gather_163_rule(p)) // ','.(expressions ['as' star_target])+ && (_opt_var_1 = _PyPegen_expect_token(p, 12), 1) // ','? && @@ -19926,7 +19575,7 @@ invalid_with_stmt_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'")); - _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _literal, _gather_165_var, _opt_var_1, _literal_1, _literal_2); + _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _literal, _gather_163_var, _opt_var_1, _literal_1, _literal_2); goto done; } p->mark = _mark; @@ -19958,7 +19607,7 @@ invalid_with_stmt_indent_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT")); - asdl_seq * _gather_167_var; + asdl_seq * _gather_165_var; Token * _literal; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings @@ -19969,7 +19618,7 @@ invalid_with_stmt_indent_rule(Parser *p) && (a = _PyPegen_expect_token(p, 519)) // token='with' && - (_gather_167_var = _gather_167_rule(p)) // ','.(expression ['as' star_target])+ + (_gather_165_var = _gather_165_rule(p)) // ','.(expression ['as' star_target])+ && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -19997,7 +19646,7 @@ invalid_with_stmt_indent_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT")); - asdl_seq * _gather_169_var; + asdl_seq * _gather_167_var; Token * _literal; Token * _literal_1; Token * _literal_2; @@ -20014,7 +19663,7 @@ invalid_with_stmt_indent_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (_gather_169_var = _gather_169_rule(p)) // ','.(expressions ['as' star_target])+ + (_gather_167_var = _gather_167_rule(p)) // ','.(expressions ['as' star_target])+ && (_opt_var_1 = _PyPegen_expect_token(p, 12), 1) // ','? && @@ -20105,7 +19754,7 @@ invalid_try_stmt_rule(Parser *p) && (block_var = block_rule(p)) // block && - _PyPegen_lookahead(0, _tmp_171_rule, p) + _PyPegen_lookahead(0, _tmp_169_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')")); @@ -20163,7 +19812,7 @@ invalid_except_stmt_rule(Parser *p) && (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_170_rule(p), 1) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' ) @@ -20197,7 +19846,7 @@ invalid_except_stmt_rule(Parser *p) && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_173_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_171_rule(p), 1) // ['as' NAME] && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -20327,7 +19976,7 @@ invalid_except_stmt_indent_rule(Parser *p) && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_174_rule(p), 1) // ['as' NAME] + (_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20967,7 +20616,7 @@ invalid_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (_opt_var_2 = _tmp_175_rule(p), 1) // ['->' expression] + (_opt_var_2 = _tmp_173_rule(p), 1) // ['->' expression] && (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -21023,7 +20672,7 @@ invalid_class_def_raw_rule(Parser *p) && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_176_rule(p), 1) // ['(' arguments? ')'] + (_opt_var = _tmp_174_rule(p), 1) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -21071,11 +20720,11 @@ invalid_double_starred_kvpairs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - asdl_seq * _gather_177_var; + asdl_seq * _gather_175_var; Token * _literal; void *invalid_kvpair_var; if ( - (_gather_177_var = _gather_177_rule(p)) // ','.double_starred_kvpair+ + (_gather_175_var = _gather_175_rule(p)) // ','.double_starred_kvpair+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -21083,7 +20732,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - _res = _PyPegen_dummy_name(p, _gather_177_var, _literal, invalid_kvpair_var); + _res = _PyPegen_dummy_name(p, _gather_175_var, _literal, invalid_kvpair_var); goto done; } p->mark = _mark; @@ -21136,7 +20785,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_179_rule, p) + _PyPegen_lookahead(1, _tmp_177_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -22509,12 +22158,12 @@ _loop1_22_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_180_var; + void *_tmp_178_var; while ( - (_tmp_180_var = _tmp_180_rule(p)) // star_targets '=' + (_tmp_178_var = _tmp_178_rule(p)) // star_targets '=' ) { - _res = _tmp_180_var; + _res = _tmp_178_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23017,12 +22666,12 @@ _loop0_31_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_181_var; + void *_tmp_179_var; while ( - (_tmp_181_var = _tmp_181_rule(p)) // '.' | '...' + (_tmp_179_var = _tmp_179_rule(p)) // '.' | '...' ) { - _res = _tmp_181_var; + _res = _tmp_179_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23083,12 +22732,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_182_var; + void *_tmp_180_var; while ( - (_tmp_182_var = _tmp_182_rule(p)) // '.' | '...' + (_tmp_180_var = _tmp_180_rule(p)) // '.' | '...' ) { - _res = _tmp_182_var; + _res = _tmp_180_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26199,12 +25848,12 @@ _loop1_84_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_183_var; + void *_tmp_181_var; while ( - (_tmp_183_var = _tmp_183_rule(p)) // '@' named_expression NEWLINE + (_tmp_181_var = _tmp_181_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_183_var; + _res = _tmp_181_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26317,12 +25966,12 @@ _loop1_86_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_184_var; + void *_tmp_182_var; while ( - (_tmp_184_var = _tmp_184_rule(p)) // ',' star_expression + (_tmp_182_var = _tmp_182_rule(p)) // ',' star_expression ) { - _res = _tmp_184_var; + _res = _tmp_182_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26502,12 +26151,12 @@ _loop1_89_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_185_var; + void *_tmp_183_var; while ( - (_tmp_185_var = _tmp_185_rule(p)) // ',' expression + (_tmp_183_var = _tmp_183_rule(p)) // ',' expression ) { - _res = _tmp_185_var; + _res = _tmp_183_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27532,12 +27181,12 @@ _loop1_104_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_186_var; + void *_tmp_184_var; while ( - (_tmp_186_var = _tmp_186_rule(p)) // 'or' conjunction + (_tmp_184_var = _tmp_184_rule(p)) // 'or' conjunction ) { - _res = _tmp_186_var; + _res = _tmp_184_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27603,12 +27252,12 @@ _loop1_105_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_187_var; + void *_tmp_185_var; while ( - (_tmp_187_var = _tmp_187_rule(p)) // 'and' inversion + (_tmp_185_var = _tmp_185_rule(p)) // 'and' inversion ) { - _res = _tmp_187_var; + _res = _tmp_185_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28581,12 +28230,12 @@ _loop0_121_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_188_var; + void *_tmp_186_var; while ( - (_tmp_188_var = _tmp_188_rule(p)) // 'if' disjunction + (_tmp_186_var = _tmp_186_rule(p)) // 'if' disjunction ) { - _res = _tmp_188_var; + _res = _tmp_186_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28647,12 +28296,12 @@ _loop0_122_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_189_var; + void *_tmp_187_var; while ( - (_tmp_189_var = _tmp_189_rule(p)) // 'if' disjunction + (_tmp_187_var = _tmp_187_rule(p)) // 'if' disjunction ) { - _res = _tmp_189_var; + _res = _tmp_187_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28718,7 +28367,7 @@ _loop0_124_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_190_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_188_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' ) { _res = elem; @@ -28782,7 +28431,7 @@ _gather_123_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_190_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_188_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' && (seq = _loop0_124_rule(p)) // _loop0_124 ) @@ -29328,12 +28977,12 @@ _loop0_134_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_191_var; + void *_tmp_189_var; while ( - (_tmp_191_var = _tmp_191_rule(p)) // ',' star_target + (_tmp_189_var = _tmp_189_rule(p)) // ',' star_target ) { - _res = _tmp_191_var; + _res = _tmp_189_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29508,12 +29157,12 @@ _loop1_137_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_192_var; + void *_tmp_190_var; while ( - (_tmp_192_var = _tmp_192_rule(p)) // ',' star_target + (_tmp_190_var = _tmp_190_rule(p)) // ',' star_target ) { - _res = _tmp_192_var; + _res = _tmp_190_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29704,123 +29353,9 @@ _gather_139_rule(Parser *p) return _res; } -// _loop0_142: ',' target -static asdl_seq * -_loop0_142_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - void *_res = NULL; - int _mark = p->mark; - int _start_mark = p->mark; - void **_children = PyMem_Malloc(sizeof(void *)); - if (!_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - Py_ssize_t _children_capacity = 1; - Py_ssize_t _n = 0; - { // ',' target - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> _loop0_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' target")); - Token * _literal; - expr_ty elem; - while ( - (_literal = _PyPegen_expect_token(p, 12)) // token=',' - && - (elem = target_rule(p)) // target - ) - { - _res = elem; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - PyMem_Free(_children); - D(p->level--); - return NULL; - } - if (_n == _children_capacity) { - _children_capacity *= 2; - void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); - if (!_new_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - _children = _new_children; - } - _children[_n++] = _res; - _mark = p->mark; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_142[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' target")); - } - asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); - if (!_seq) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); - PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_142_type, _seq); - D(p->level--); - return _seq; -} - -// _gather_141: target _loop0_142 -static asdl_seq * -_gather_141_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - asdl_seq * _res = NULL; - int _mark = p->mark; - { // target _loop0_142 - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> _gather_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target _loop0_142")); - expr_ty elem; - asdl_seq * seq; - if ( - (elem = target_rule(p)) // target - && - (seq = _loop0_142_rule(p)) // _loop0_142 - ) - { - D(fprintf(stderr, "%*c+ _gather_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target _loop0_142")); - _res = _PyPegen_seq_insert_in_front(p, elem, seq); - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_141[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target _loop0_142")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - -// _tmp_143: args | expression for_if_clauses +// _tmp_141: args | expression for_if_clauses static void * -_tmp_143_rule(Parser *p) +_tmp_141_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -29834,18 +29369,18 @@ _tmp_143_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); expr_ty args_var; if ( (args_var = args_rule(p)) // args ) { - D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); _res = args_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args")); } { // expression for_if_clauses @@ -29853,7 +29388,7 @@ _tmp_143_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); expr_ty expression_var; asdl_comprehension_seq* for_if_clauses_var; if ( @@ -29862,12 +29397,12 @@ _tmp_143_rule(Parser *p) (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses ) { - D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses")); } _res = NULL; @@ -29876,9 +29411,9 @@ _tmp_143_rule(Parser *p) return _res; } -// _tmp_144: NAME '=' +// _tmp_142: NAME '=' static void * -_tmp_144_rule(Parser *p) +_tmp_142_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -29892,7 +29427,7 @@ _tmp_144_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='")); + D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='")); Token * _literal; expr_ty name_var; if ( @@ -29901,12 +29436,12 @@ _tmp_144_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='")); + D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='")); _res = _PyPegen_dummy_name(p, name_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='")); } _res = NULL; @@ -29915,9 +29450,9 @@ _tmp_144_rule(Parser *p) return _res; } -// _tmp_145: NAME STRING | SOFT_KEYWORD +// _tmp_143: NAME STRING | SOFT_KEYWORD static void * -_tmp_145_rule(Parser *p) +_tmp_143_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -29931,7 +29466,7 @@ _tmp_145_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING")); + D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING")); expr_ty name_var; expr_ty string_var; if ( @@ -29940,12 +29475,12 @@ _tmp_145_rule(Parser *p) (string_var = _PyPegen_string_token(p)) // STRING ) { - D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING")); + D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING")); _res = _PyPegen_dummy_name(p, name_var, string_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING")); } { // SOFT_KEYWORD @@ -29953,18 +29488,18 @@ _tmp_145_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); + D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); expr_ty soft_keyword_var; if ( (soft_keyword_var = _PyPegen_soft_keyword_token(p)) // SOFT_KEYWORD ) { - D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); + D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); _res = soft_keyword_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD")); } _res = NULL; @@ -29973,9 +29508,9 @@ _tmp_145_rule(Parser *p) return _res; } -// _tmp_146: '=' | ':=' +// _tmp_144: '=' | ':=' static void * -_tmp_146_rule(Parser *p) +_tmp_144_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -29989,18 +29524,18 @@ _tmp_146_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); } { // ':=' @@ -30008,18 +29543,18 @@ _tmp_146_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 53)) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='")); } _res = NULL; @@ -30028,9 +29563,9 @@ _tmp_146_rule(Parser *p) return _res; } -// _tmp_147: list | tuple | genexp | 'True' | 'None' | 'False' +// _tmp_145: list | tuple | genexp | 'True' | 'None' | 'False' static void * -_tmp_147_rule(Parser *p) +_tmp_145_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30044,18 +29579,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); expr_ty list_var; if ( (list_var = list_rule(p)) // list ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); _res = list_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list")); } { // tuple @@ -30063,18 +29598,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); expr_ty tuple_var; if ( (tuple_var = tuple_rule(p)) // tuple ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); _res = tuple_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple")); } { // genexp @@ -30082,18 +29617,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); expr_ty genexp_var; if ( (genexp_var = genexp_rule(p)) // genexp ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); _res = genexp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp")); } { // 'True' @@ -30101,18 +29636,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 524)) // token='True' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'")); } { // 'None' @@ -30120,18 +29655,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 523)) // token='None' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'")); } { // 'False' @@ -30139,18 +29674,18 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 525)) // token='False' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'")); } _res = NULL; @@ -30159,9 +29694,9 @@ _tmp_147_rule(Parser *p) return _res; } -// _tmp_148: '=' | ':=' +// _tmp_146: '=' | ':=' static void * -_tmp_148_rule(Parser *p) +_tmp_146_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30175,18 +29710,18 @@ _tmp_148_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); } { // ':=' @@ -30194,18 +29729,18 @@ _tmp_148_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 53)) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='")); } _res = NULL; @@ -30214,9 +29749,9 @@ _tmp_148_rule(Parser *p) return _res; } -// _loop0_149: star_named_expressions +// _loop0_147: star_named_expressions static asdl_seq * -_loop0_149_rule(Parser *p) +_loop0_147_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30240,7 +29775,7 @@ _loop0_149_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); + D(fprintf(stderr, "%*c> _loop0_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); asdl_expr_seq* star_named_expressions_var; while ( (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions @@ -30262,7 +29797,7 @@ _loop0_149_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_149[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_147[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30275,14 +29810,14 @@ _loop0_149_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_149_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_147_type, _seq); D(p->level--); return _seq; } -// _loop0_150: (star_targets '=') +// _loop0_148: (star_targets '=') static asdl_seq * -_loop0_150_rule(Parser *p) +_loop0_148_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30306,13 +29841,13 @@ _loop0_150_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_193_var; + D(fprintf(stderr, "%*c> _loop0_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_191_var; while ( - (_tmp_193_var = _tmp_193_rule(p)) // star_targets '=' + (_tmp_191_var = _tmp_191_rule(p)) // star_targets '=' ) { - _res = _tmp_193_var; + _res = _tmp_191_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30328,7 +29863,7 @@ _loop0_150_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_150[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_148[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30341,14 +29876,14 @@ _loop0_150_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_150_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_148_type, _seq); D(p->level--); return _seq; } -// _loop0_151: (star_targets '=') +// _loop0_149: (star_targets '=') static asdl_seq * -_loop0_151_rule(Parser *p) +_loop0_149_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30372,13 +29907,13 @@ _loop0_151_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_194_var; + D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_192_var; while ( - (_tmp_194_var = _tmp_194_rule(p)) // star_targets '=' + (_tmp_192_var = _tmp_192_rule(p)) // star_targets '=' ) { - _res = _tmp_194_var; + _res = _tmp_192_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30394,7 +29929,7 @@ _loop0_151_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_151[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_149[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30407,14 +29942,14 @@ _loop0_151_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_151_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_149_type, _seq); D(p->level--); return _seq; } -// _tmp_152: yield_expr | star_expressions +// _tmp_150: yield_expr | star_expressions static void * -_tmp_152_rule(Parser *p) +_tmp_150_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30428,18 +29963,18 @@ _tmp_152_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // star_expressions @@ -30447,18 +29982,18 @@ _tmp_152_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); expr_ty star_expressions_var; if ( (star_expressions_var = star_expressions_rule(p)) // star_expressions ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); _res = star_expressions_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); } _res = NULL; @@ -30467,9 +30002,9 @@ _tmp_152_rule(Parser *p) return _res; } -// _tmp_153: '[' | '(' | '{' +// _tmp_151: '[' | '(' | '{' static void * -_tmp_153_rule(Parser *p) +_tmp_151_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30483,18 +30018,18 @@ _tmp_153_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '(' @@ -30502,18 +30037,18 @@ _tmp_153_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('")); } { // '{' @@ -30521,18 +30056,18 @@ _tmp_153_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -30541,9 +30076,9 @@ _tmp_153_rule(Parser *p) return _res; } -// _tmp_154: '[' | '{' +// _tmp_152: '[' | '{' static void * -_tmp_154_rule(Parser *p) +_tmp_152_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30557,18 +30092,18 @@ _tmp_154_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '{' @@ -30576,18 +30111,18 @@ _tmp_154_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -30596,9 +30131,9 @@ _tmp_154_rule(Parser *p) return _res; } -// _tmp_155: '[' | '{' +// _tmp_153: '[' | '{' static void * -_tmp_155_rule(Parser *p) +_tmp_153_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30612,18 +30147,18 @@ _tmp_155_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '{' @@ -30631,18 +30166,18 @@ _tmp_155_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -30651,9 +30186,9 @@ _tmp_155_rule(Parser *p) return _res; } -// _loop0_156: param_no_default +// _loop0_154: param_no_default static asdl_seq * -_loop0_156_rule(Parser *p) +_loop0_154_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30677,7 +30212,7 @@ _loop0_156_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -30699,7 +30234,7 @@ _loop0_156_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_156[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_154[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30712,14 +30247,14 @@ _loop0_156_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_156_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_154_type, _seq); D(p->level--); return _seq; } -// _loop1_157: param_with_default +// _loop1_155: param_with_default static asdl_seq * -_loop1_157_rule(Parser *p) +_loop1_155_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30743,7 +30278,7 @@ _loop1_157_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop1_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -30765,7 +30300,7 @@ _loop1_157_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_157[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_155[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -30783,14 +30318,14 @@ _loop1_157_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_157_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_155_type, _seq); D(p->level--); return _seq; } -// _loop0_158: lambda_param_no_default +// _loop0_156: lambda_param_no_default static asdl_seq * -_loop0_158_rule(Parser *p) +_loop0_156_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30814,7 +30349,7 @@ _loop0_158_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -30836,7 +30371,7 @@ _loop0_158_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_158[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_156[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -30849,14 +30384,14 @@ _loop0_158_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_158_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_156_type, _seq); D(p->level--); return _seq; } -// _loop1_159: lambda_param_with_default +// _loop1_157: lambda_param_with_default static asdl_seq * -_loop1_159_rule(Parser *p) +_loop1_157_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30880,7 +30415,7 @@ _loop1_159_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop1_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -30902,7 +30437,7 @@ _loop1_159_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_159[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_157[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -30920,14 +30455,14 @@ _loop1_159_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_159_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_157_type, _seq); D(p->level--); return _seq; } -// _tmp_160: ')' | ',' (')' | '**') +// _tmp_158: ')' | ',' (')' | '**') static void * -_tmp_160_rule(Parser *p) +_tmp_158_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30941,18 +30476,18 @@ _tmp_160_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ',' (')' | '**') @@ -30960,21 +30495,21 @@ _tmp_160_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_195_var; + void *_tmp_193_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_195_var = _tmp_195_rule(p)) // ')' | '**' + (_tmp_193_var = _tmp_193_rule(p)) // ')' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_195_var); + D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_193_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')")); } _res = NULL; @@ -30983,9 +30518,9 @@ _tmp_160_rule(Parser *p) return _res; } -// _tmp_161: ':' | ',' (':' | '**') +// _tmp_159: ':' | ',' (':' | '**') static void * -_tmp_161_rule(Parser *p) +_tmp_159_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -30999,18 +30534,18 @@ _tmp_161_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // ',' (':' | '**') @@ -31018,21 +30553,21 @@ _tmp_161_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_196_var; + void *_tmp_194_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_196_var = _tmp_196_rule(p)) // ':' | '**' + (_tmp_194_var = _tmp_194_rule(p)) // ':' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_196_var); + D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_194_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')")); } _res = NULL; @@ -31041,9 +30576,9 @@ _tmp_161_rule(Parser *p) return _res; } -// _tmp_162: ',' | ')' | ':' +// _tmp_160: ',' | ')' | ':' static void * -_tmp_162_rule(Parser *p) +_tmp_160_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31057,18 +30592,18 @@ _tmp_162_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } { // ')' @@ -31076,18 +30611,18 @@ _tmp_162_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ':' @@ -31095,18 +30630,18 @@ _tmp_162_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } _res = NULL; @@ -31115,9 +30650,9 @@ _tmp_162_rule(Parser *p) return _res; } -// _loop0_164: ',' (expression ['as' star_target]) +// _loop0_162: ',' (expression ['as' star_target]) static asdl_seq * -_loop0_164_rule(Parser *p) +_loop0_162_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31141,13 +30676,13 @@ _loop0_164_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_197_rule(p)) // expression ['as' star_target] + (elem = _tmp_195_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31172,7 +30707,7 @@ _loop0_164_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_164[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_162[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31185,14 +30720,14 @@ _loop0_164_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_164_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_162_type, _seq); D(p->level--); return _seq; } -// _gather_163: (expression ['as' star_target]) _loop0_164 +// _gather_161: (expression ['as' star_target]) _loop0_162 static asdl_seq * -_gather_163_rule(Parser *p) +_gather_161_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31201,27 +30736,27 @@ _gather_163_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expression ['as' star_target]) _loop0_164 + { // (expression ['as' star_target]) _loop0_162 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_164")); + D(fprintf(stderr, "%*c> _gather_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_162")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_197_rule(p)) // expression ['as' star_target] + (elem = _tmp_195_rule(p)) // expression ['as' star_target] && - (seq = _loop0_164_rule(p)) // _loop0_164 + (seq = _loop0_162_rule(p)) // _loop0_162 ) { - D(fprintf(stderr, "%*c+ _gather_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_164")); + D(fprintf(stderr, "%*c+ _gather_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_162")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_163[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_164")); + D(fprintf(stderr, "%*c%s _gather_161[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_162")); } _res = NULL; done: @@ -31229,9 +30764,9 @@ _gather_163_rule(Parser *p) return _res; } -// _loop0_166: ',' (expressions ['as' star_target]) +// _loop0_164: ',' (expressions ['as' star_target]) static asdl_seq * -_loop0_166_rule(Parser *p) +_loop0_164_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31255,13 +30790,13 @@ _loop0_166_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_198_rule(p)) // expressions ['as' star_target] + (elem = _tmp_196_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31286,7 +30821,7 @@ _loop0_166_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_166[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_164[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31299,14 +30834,14 @@ _loop0_166_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_166_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_164_type, _seq); D(p->level--); return _seq; } -// _gather_165: (expressions ['as' star_target]) _loop0_166 +// _gather_163: (expressions ['as' star_target]) _loop0_164 static asdl_seq * -_gather_165_rule(Parser *p) +_gather_163_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31315,27 +30850,27 @@ _gather_165_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expressions ['as' star_target]) _loop0_166 + { // (expressions ['as' star_target]) _loop0_164 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_166")); + D(fprintf(stderr, "%*c> _gather_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_164")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_198_rule(p)) // expressions ['as' star_target] + (elem = _tmp_196_rule(p)) // expressions ['as' star_target] && - (seq = _loop0_166_rule(p)) // _loop0_166 + (seq = _loop0_164_rule(p)) // _loop0_164 ) { - D(fprintf(stderr, "%*c+ _gather_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_166")); + D(fprintf(stderr, "%*c+ _gather_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_164")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_165[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_166")); + D(fprintf(stderr, "%*c%s _gather_163[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_164")); } _res = NULL; done: @@ -31343,9 +30878,9 @@ _gather_165_rule(Parser *p) return _res; } -// _loop0_168: ',' (expression ['as' star_target]) +// _loop0_166: ',' (expression ['as' star_target]) static asdl_seq * -_loop0_168_rule(Parser *p) +_loop0_166_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31369,13 +30904,13 @@ _loop0_168_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_199_rule(p)) // expression ['as' star_target] + (elem = _tmp_197_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31400,7 +30935,7 @@ _loop0_168_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_168[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_166[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31413,14 +30948,14 @@ _loop0_168_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_168_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_166_type, _seq); D(p->level--); return _seq; } -// _gather_167: (expression ['as' star_target]) _loop0_168 +// _gather_165: (expression ['as' star_target]) _loop0_166 static asdl_seq * -_gather_167_rule(Parser *p) +_gather_165_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31429,27 +30964,27 @@ _gather_167_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expression ['as' star_target]) _loop0_168 + { // (expression ['as' star_target]) _loop0_166 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_168")); + D(fprintf(stderr, "%*c> _gather_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_166")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_199_rule(p)) // expression ['as' star_target] + (elem = _tmp_197_rule(p)) // expression ['as' star_target] && - (seq = _loop0_168_rule(p)) // _loop0_168 + (seq = _loop0_166_rule(p)) // _loop0_166 ) { - D(fprintf(stderr, "%*c+ _gather_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_168")); + D(fprintf(stderr, "%*c+ _gather_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_166")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_167[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_168")); + D(fprintf(stderr, "%*c%s _gather_165[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_166")); } _res = NULL; done: @@ -31457,9 +30992,9 @@ _gather_167_rule(Parser *p) return _res; } -// _loop0_170: ',' (expressions ['as' star_target]) +// _loop0_168: ',' (expressions ['as' star_target]) static asdl_seq * -_loop0_170_rule(Parser *p) +_loop0_168_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31483,13 +31018,13 @@ _loop0_170_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_200_rule(p)) // expressions ['as' star_target] + (elem = _tmp_198_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31514,7 +31049,7 @@ _loop0_170_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_170[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_168[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31527,14 +31062,14 @@ _loop0_170_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_170_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_168_type, _seq); D(p->level--); return _seq; } -// _gather_169: (expressions ['as' star_target]) _loop0_170 +// _gather_167: (expressions ['as' star_target]) _loop0_168 static asdl_seq * -_gather_169_rule(Parser *p) +_gather_167_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31543,27 +31078,27 @@ _gather_169_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expressions ['as' star_target]) _loop0_170 + { // (expressions ['as' star_target]) _loop0_168 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_170")); + D(fprintf(stderr, "%*c> _gather_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_168")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_200_rule(p)) // expressions ['as' star_target] + (elem = _tmp_198_rule(p)) // expressions ['as' star_target] && - (seq = _loop0_170_rule(p)) // _loop0_170 + (seq = _loop0_168_rule(p)) // _loop0_168 ) { - D(fprintf(stderr, "%*c+ _gather_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_170")); + D(fprintf(stderr, "%*c+ _gather_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_168")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_169[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_170")); + D(fprintf(stderr, "%*c%s _gather_167[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_168")); } _res = NULL; done: @@ -31571,9 +31106,9 @@ _gather_169_rule(Parser *p) return _res; } -// _tmp_171: 'except' | 'finally' +// _tmp_169: 'except' | 'finally' static void * -_tmp_171_rule(Parser *p) +_tmp_169_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31587,18 +31122,18 @@ _tmp_171_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); + D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 521)) // token='except' ) { - D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); + D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'")); } { // 'finally' @@ -31606,18 +31141,18 @@ _tmp_171_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); + D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); Token * _keyword; if ( (_keyword = _PyPegen_expect_token(p, 522)) // token='finally' ) { - D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); + D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'")); } _res = NULL; @@ -31626,9 +31161,9 @@ _tmp_171_rule(Parser *p) return _res; } -// _tmp_172: 'as' NAME +// _tmp_170: 'as' NAME static void * -_tmp_172_rule(Parser *p) +_tmp_170_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31642,7 +31177,7 @@ _tmp_172_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( @@ -31651,12 +31186,12 @@ _tmp_172_rule(Parser *p) (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_170[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31665,9 +31200,9 @@ _tmp_172_rule(Parser *p) return _res; } -// _tmp_173: 'as' NAME +// _tmp_171: 'as' NAME static void * -_tmp_173_rule(Parser *p) +_tmp_171_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31681,7 +31216,7 @@ _tmp_173_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( @@ -31690,12 +31225,12 @@ _tmp_173_rule(Parser *p) (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31704,9 +31239,9 @@ _tmp_173_rule(Parser *p) return _res; } -// _tmp_174: 'as' NAME +// _tmp_172: 'as' NAME static void * -_tmp_174_rule(Parser *p) +_tmp_172_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31720,7 +31255,7 @@ _tmp_174_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( @@ -31729,12 +31264,12 @@ _tmp_174_rule(Parser *p) (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31743,9 +31278,9 @@ _tmp_174_rule(Parser *p) return _res; } -// _tmp_175: '->' expression +// _tmp_173: '->' expression static void * -_tmp_175_rule(Parser *p) +_tmp_173_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31759,7 +31294,7 @@ _tmp_175_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty expression_var; if ( @@ -31768,12 +31303,12 @@ _tmp_175_rule(Parser *p) (expression_var = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = _PyPegen_dummy_name(p, _literal, expression_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -31782,9 +31317,9 @@ _tmp_175_rule(Parser *p) return _res; } -// _tmp_176: '(' arguments? ')' +// _tmp_174: '(' arguments? ')' static void * -_tmp_176_rule(Parser *p) +_tmp_174_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31798,7 +31333,7 @@ _tmp_176_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -31811,12 +31346,12 @@ _tmp_176_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -31825,9 +31360,9 @@ _tmp_176_rule(Parser *p) return _res; } -// _loop0_178: ',' double_starred_kvpair +// _loop0_176: ',' double_starred_kvpair static asdl_seq * -_loop0_178_rule(Parser *p) +_loop0_176_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31851,7 +31386,7 @@ _loop0_178_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -31882,7 +31417,7 @@ _loop0_178_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_176[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31895,14 +31430,14 @@ _loop0_178_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_178_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_176_type, _seq); D(p->level--); return _seq; } -// _gather_177: double_starred_kvpair _loop0_178 +// _gather_175: double_starred_kvpair _loop0_176 static asdl_seq * -_gather_177_rule(Parser *p) +_gather_175_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31911,27 +31446,27 @@ _gather_177_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_178 + { // double_starred_kvpair _loop0_176 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_178")); + D(fprintf(stderr, "%*c> _gather_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_176")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_178_rule(p)) // _loop0_178 + (seq = _loop0_176_rule(p)) // _loop0_176 ) { - D(fprintf(stderr, "%*c+ _gather_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_178")); + D(fprintf(stderr, "%*c+ _gather_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_176")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_177[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_178")); + D(fprintf(stderr, "%*c%s _gather_175[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_176")); } _res = NULL; done: @@ -31939,9 +31474,9 @@ _gather_177_rule(Parser *p) return _res; } -// _tmp_179: '}' | ',' +// _tmp_177: '}' | ',' static void * -_tmp_179_rule(Parser *p) +_tmp_177_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31955,18 +31490,18 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -31974,18 +31509,18 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -31994,9 +31529,9 @@ _tmp_179_rule(Parser *p) return _res; } -// _tmp_180: star_targets '=' +// _tmp_178: star_targets '=' static void * -_tmp_180_rule(Parser *p) +_tmp_178_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32010,7 +31545,7 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -32019,7 +31554,7 @@ _tmp_180_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32029,7 +31564,7 @@ _tmp_180_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32038,9 +31573,9 @@ _tmp_180_rule(Parser *p) return _res; } -// _tmp_181: '.' | '...' +// _tmp_179: '.' | '...' static void * -_tmp_181_rule(Parser *p) +_tmp_179_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32054,18 +31589,18 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -32073,18 +31608,18 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32093,9 +31628,9 @@ _tmp_181_rule(Parser *p) return _res; } -// _tmp_182: '.' | '...' +// _tmp_180: '.' | '...' static void * -_tmp_182_rule(Parser *p) +_tmp_180_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32109,18 +31644,18 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -32128,18 +31663,18 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32148,9 +31683,9 @@ _tmp_182_rule(Parser *p) return _res; } -// _tmp_183: '@' named_expression NEWLINE +// _tmp_181: '@' named_expression NEWLINE static void * -_tmp_183_rule(Parser *p) +_tmp_181_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32164,7 +31699,7 @@ _tmp_183_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -32176,7 +31711,7 @@ _tmp_183_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32186,7 +31721,7 @@ _tmp_183_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -32195,9 +31730,9 @@ _tmp_183_rule(Parser *p) return _res; } -// _tmp_184: ',' star_expression +// _tmp_182: ',' star_expression static void * -_tmp_184_rule(Parser *p) +_tmp_182_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32211,7 +31746,7 @@ _tmp_184_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -32220,7 +31755,7 @@ _tmp_184_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32230,7 +31765,7 @@ _tmp_184_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -32239,9 +31774,9 @@ _tmp_184_rule(Parser *p) return _res; } -// _tmp_185: ',' expression +// _tmp_183: ',' expression static void * -_tmp_185_rule(Parser *p) +_tmp_183_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32255,7 +31790,7 @@ _tmp_185_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -32264,7 +31799,7 @@ _tmp_185_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32274,7 +31809,7 @@ _tmp_185_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -32283,9 +31818,9 @@ _tmp_185_rule(Parser *p) return _res; } -// _tmp_186: 'or' conjunction +// _tmp_184: 'or' conjunction static void * -_tmp_186_rule(Parser *p) +_tmp_184_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32299,7 +31834,7 @@ _tmp_186_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -32308,7 +31843,7 @@ _tmp_186_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32318,7 +31853,7 @@ _tmp_186_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -32327,9 +31862,9 @@ _tmp_186_rule(Parser *p) return _res; } -// _tmp_187: 'and' inversion +// _tmp_185: 'and' inversion static void * -_tmp_187_rule(Parser *p) +_tmp_185_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32343,7 +31878,7 @@ _tmp_187_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -32352,7 +31887,7 @@ _tmp_187_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32362,7 +31897,7 @@ _tmp_187_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -32371,9 +31906,9 @@ _tmp_187_rule(Parser *p) return _res; } -// _tmp_188: 'if' disjunction +// _tmp_186: 'if' disjunction static void * -_tmp_188_rule(Parser *p) +_tmp_186_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32387,7 +31922,7 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32396,7 +31931,7 @@ _tmp_188_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32406,7 +31941,7 @@ _tmp_188_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32415,9 +31950,9 @@ _tmp_188_rule(Parser *p) return _res; } -// _tmp_189: 'if' disjunction +// _tmp_187: 'if' disjunction static void * -_tmp_189_rule(Parser *p) +_tmp_187_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32431,7 +31966,7 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32440,7 +31975,7 @@ _tmp_189_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32450,7 +31985,7 @@ _tmp_189_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32459,9 +31994,9 @@ _tmp_189_rule(Parser *p) return _res; } -// _tmp_190: starred_expression | (assigment_expression | expression !':=') !'=' +// _tmp_188: starred_expression | (assigment_expression | expression !':=') !'=' static void * -_tmp_190_rule(Parser *p) +_tmp_188_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32475,18 +32010,18 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // (assigment_expression | expression !':=') !'=' @@ -32494,20 +32029,20 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - void *_tmp_201_var; + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + void *_tmp_199_var; if ( - (_tmp_201_var = _tmp_201_rule(p)) // assigment_expression | expression !':=' + (_tmp_199_var = _tmp_199_rule(p)) // assigment_expression | expression !':=' && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - _res = _tmp_201_var; + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + _res = _tmp_199_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assigment_expression | expression !':=') !'='")); } _res = NULL; @@ -32516,9 +32051,9 @@ _tmp_190_rule(Parser *p) return _res; } -// _tmp_191: ',' star_target +// _tmp_189: ',' star_target static void * -_tmp_191_rule(Parser *p) +_tmp_189_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32532,7 +32067,7 @@ _tmp_191_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32541,7 +32076,7 @@ _tmp_191_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32551,7 +32086,7 @@ _tmp_191_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32560,9 +32095,9 @@ _tmp_191_rule(Parser *p) return _res; } -// _tmp_192: ',' star_target +// _tmp_190: ',' star_target static void * -_tmp_192_rule(Parser *p) +_tmp_190_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32576,7 +32111,7 @@ _tmp_192_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32585,7 +32120,7 @@ _tmp_192_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32595,7 +32130,7 @@ _tmp_192_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32604,9 +32139,9 @@ _tmp_192_rule(Parser *p) return _res; } -// _tmp_193: star_targets '=' +// _tmp_191: star_targets '=' static void * -_tmp_193_rule(Parser *p) +_tmp_191_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32620,7 +32155,7 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32629,12 +32164,12 @@ _tmp_193_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32643,9 +32178,9 @@ _tmp_193_rule(Parser *p) return _res; } -// _tmp_194: star_targets '=' +// _tmp_192: star_targets '=' static void * -_tmp_194_rule(Parser *p) +_tmp_192_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32659,7 +32194,7 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32668,12 +32203,12 @@ _tmp_194_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32682,9 +32217,9 @@ _tmp_194_rule(Parser *p) return _res; } -// _tmp_195: ')' | '**' +// _tmp_193: ')' | '**' static void * -_tmp_195_rule(Parser *p) +_tmp_193_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32698,18 +32233,18 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -32717,18 +32252,18 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32737,9 +32272,9 @@ _tmp_195_rule(Parser *p) return _res; } -// _tmp_196: ':' | '**' +// _tmp_194: ':' | '**' static void * -_tmp_196_rule(Parser *p) +_tmp_194_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32753,18 +32288,18 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -32772,18 +32307,18 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32792,9 +32327,9 @@ _tmp_196_rule(Parser *p) return _res; } -// _tmp_197: expression ['as' star_target] +// _tmp_195: expression ['as' star_target] static void * -_tmp_197_rule(Parser *p) +_tmp_195_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32808,22 +32343,22 @@ _tmp_197_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_200_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32832,9 +32367,9 @@ _tmp_197_rule(Parser *p) return _res; } -// _tmp_198: expressions ['as' star_target] +// _tmp_196: expressions ['as' star_target] static void * -_tmp_198_rule(Parser *p) +_tmp_196_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32848,22 +32383,22 @@ _tmp_198_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_201_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32872,9 +32407,9 @@ _tmp_198_rule(Parser *p) return _res; } -// _tmp_199: expression ['as' star_target] +// _tmp_197: expression ['as' star_target] static void * -_tmp_199_rule(Parser *p) +_tmp_197_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32888,22 +32423,22 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32912,9 +32447,9 @@ _tmp_199_rule(Parser *p) return _res; } -// _tmp_200: expressions ['as' star_target] +// _tmp_198: expressions ['as' star_target] static void * -_tmp_200_rule(Parser *p) +_tmp_198_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32928,22 +32463,22 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_205_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32952,9 +32487,9 @@ _tmp_200_rule(Parser *p) return _res; } -// _tmp_201: assigment_expression | expression !':=' +// _tmp_199: assigment_expression | expression !':=' static void * -_tmp_201_rule(Parser *p) +_tmp_199_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32968,18 +32503,18 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); expr_ty assigment_expression_var; if ( (assigment_expression_var = assigment_expression_rule(p)) // assigment_expression ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); _res = assigment_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assigment_expression")); } { // expression !':=' @@ -32987,7 +32522,7 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression @@ -32995,12 +32530,12 @@ _tmp_201_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; @@ -33009,9 +32544,9 @@ _tmp_201_rule(Parser *p) return _res; } -// _tmp_202: 'as' star_target +// _tmp_200: 'as' star_target static void * -_tmp_202_rule(Parser *p) +_tmp_200_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33025,7 +32560,7 @@ _tmp_202_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33034,12 +32569,12 @@ _tmp_202_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33048,9 +32583,9 @@ _tmp_202_rule(Parser *p) return _res; } -// _tmp_203: 'as' star_target +// _tmp_201: 'as' star_target static void * -_tmp_203_rule(Parser *p) +_tmp_201_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33064,7 +32599,7 @@ _tmp_203_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33073,12 +32608,12 @@ _tmp_203_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33087,9 +32622,9 @@ _tmp_203_rule(Parser *p) return _res; } -// _tmp_204: 'as' star_target +// _tmp_202: 'as' star_target static void * -_tmp_204_rule(Parser *p) +_tmp_202_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33103,7 +32638,7 @@ _tmp_204_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33112,12 +32647,12 @@ _tmp_204_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33126,9 +32661,9 @@ _tmp_204_rule(Parser *p) return _res; } -// _tmp_205: 'as' star_target +// _tmp_203: 'as' star_target static void * -_tmp_205_rule(Parser *p) +_tmp_203_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33142,7 +32677,7 @@ _tmp_205_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -33151,12 +32686,12 @@ _tmp_205_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; From webhook-mailer at python.org Thu Jun 10 18:50:40 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 10 Jun 2021 22:50:40 -0000 Subject: [Python-checkins] bpo-44368: Improve syntax errors with invalid as pattern targets (GH-26632) Message-ID: https://github.com/python/cpython/commit/05073036dcecefc00b0c3e7397601809da41e2f1 commit: 05073036dcecefc00b0c3e7397601809da41e2f1 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-10T23:50:32+01:00 summary: bpo-44368: Improve syntax errors with invalid as pattern targets (GH-26632) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-09-22-56-59.bpo-44368.vgT0Cx.rst M Grammar/python.gram M Lib/test/test_syntax.py M Parser/parser.c diff --git a/Grammar/python.gram b/Grammar/python.gram index 0ccdc3e5b9695..56daca054c8b5 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -244,6 +244,7 @@ pattern[pattern_ty]: as_pattern[pattern_ty]: | pattern=or_pattern 'as' target=pattern_capture_target { _PyAST_MatchAs(pattern, target->v.Name.id, EXTRA) } + | invalid_as_pattern or_pattern[pattern_ty]: | patterns[asdl_pattern_seq*]='|'.closed_pattern+ { asdl_seq_LEN(patterns) == 1 ? asdl_seq_GET(patterns, 0) : _PyAST_MatchOr(patterns, EXTRA) } @@ -974,6 +975,9 @@ invalid_case_block: | "case" patterns guard? !':' { RAISE_SYNTAX_ERROR("expected ':'") } | a="case" patterns guard? ':' NEWLINE !INDENT { RAISE_INDENTATION_ERROR("expected an indented block after 'case' statement on line %d", a->lineno) } +invalid_as_pattern: + | or_pattern 'as' a="_" { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot use '_' as a target") } + | or_pattern 'as' !NAME a=expression { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "invalid pattern target") } invalid_if_stmt: | 'if' named_expression NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") } | a='if' a=named_expression ':' NEWLINE !INDENT { diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 72e4ab15c8724..e0d0445a83d9d 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -1226,6 +1226,20 @@ >>> import ? ? Traceback (most recent call last): SyntaxError: invalid character '?' (U+00A3) + + Invalid pattern matching constructs: + + >>> match ...: + ... case 42 as _: + ... ... + Traceback (most recent call last): + SyntaxError: cannot use '_' as a target + + >>> match ...: + ... case 42 as 1+2+4: + ... ... + Traceback (most recent call last): + SyntaxError: invalid pattern target """ import re diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-09-22-56-59.bpo-44368.vgT0Cx.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-09-22-56-59.bpo-44368.vgT0Cx.rst new file mode 100644 index 0000000000000..e0d19134510ee --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-09-22-56-59.bpo-44368.vgT0Cx.rst @@ -0,0 +1 @@ +Improve syntax errors for invalid "as" targets. Patch by Pablo Galindo diff --git a/Parser/parser.c b/Parser/parser.c index 403a7fa94133f..e73a2a1937b4c 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -280,218 +280,219 @@ static char *soft_keywords[] = { #define invalid_except_stmt_indent_type 1206 #define invalid_match_stmt_type 1207 #define invalid_case_block_type 1208 -#define invalid_if_stmt_type 1209 -#define invalid_elif_stmt_type 1210 -#define invalid_else_stmt_type 1211 -#define invalid_while_stmt_type 1212 -#define invalid_for_stmt_type 1213 -#define invalid_def_raw_type 1214 -#define invalid_class_def_raw_type 1215 -#define invalid_double_starred_kvpairs_type 1216 -#define invalid_kvpair_type 1217 -#define _loop0_1_type 1218 -#define _loop0_2_type 1219 -#define _loop0_4_type 1220 -#define _gather_3_type 1221 -#define _loop0_6_type 1222 -#define _gather_5_type 1223 -#define _loop0_8_type 1224 -#define _gather_7_type 1225 -#define _loop0_10_type 1226 -#define _gather_9_type 1227 -#define _loop1_11_type 1228 -#define _loop0_13_type 1229 -#define _gather_12_type 1230 -#define _tmp_14_type 1231 -#define _tmp_15_type 1232 -#define _tmp_16_type 1233 -#define _tmp_17_type 1234 -#define _tmp_18_type 1235 -#define _tmp_19_type 1236 -#define _tmp_20_type 1237 -#define _tmp_21_type 1238 -#define _loop1_22_type 1239 -#define _tmp_23_type 1240 -#define _tmp_24_type 1241 -#define _loop0_26_type 1242 -#define _gather_25_type 1243 -#define _loop0_28_type 1244 -#define _gather_27_type 1245 -#define _tmp_29_type 1246 -#define _tmp_30_type 1247 -#define _loop0_31_type 1248 -#define _loop1_32_type 1249 -#define _loop0_34_type 1250 -#define _gather_33_type 1251 -#define _tmp_35_type 1252 -#define _loop0_37_type 1253 -#define _gather_36_type 1254 -#define _tmp_38_type 1255 -#define _loop0_40_type 1256 -#define _gather_39_type 1257 -#define _loop0_42_type 1258 -#define _gather_41_type 1259 -#define _loop0_44_type 1260 -#define _gather_43_type 1261 -#define _loop0_46_type 1262 -#define _gather_45_type 1263 -#define _tmp_47_type 1264 -#define _loop1_48_type 1265 -#define _tmp_49_type 1266 -#define _loop1_50_type 1267 -#define _loop0_52_type 1268 -#define _gather_51_type 1269 -#define _tmp_53_type 1270 -#define _tmp_54_type 1271 -#define _tmp_55_type 1272 -#define _tmp_56_type 1273 -#define _loop0_58_type 1274 -#define _gather_57_type 1275 -#define _loop0_60_type 1276 -#define _gather_59_type 1277 -#define _tmp_61_type 1278 -#define _loop0_63_type 1279 -#define _gather_62_type 1280 -#define _loop0_65_type 1281 -#define _gather_64_type 1282 -#define _tmp_66_type 1283 -#define _tmp_67_type 1284 -#define _tmp_68_type 1285 -#define _tmp_69_type 1286 -#define _loop0_70_type 1287 -#define _loop0_71_type 1288 -#define _loop0_72_type 1289 -#define _loop1_73_type 1290 -#define _loop0_74_type 1291 -#define _loop1_75_type 1292 -#define _loop1_76_type 1293 -#define _loop1_77_type 1294 -#define _loop0_78_type 1295 -#define _loop1_79_type 1296 -#define _loop0_80_type 1297 -#define _loop1_81_type 1298 -#define _loop0_82_type 1299 -#define _loop1_83_type 1300 -#define _loop1_84_type 1301 -#define _tmp_85_type 1302 -#define _loop1_86_type 1303 -#define _loop0_88_type 1304 -#define _gather_87_type 1305 -#define _loop1_89_type 1306 -#define _loop0_90_type 1307 -#define _loop0_91_type 1308 -#define _loop0_92_type 1309 -#define _loop1_93_type 1310 -#define _loop0_94_type 1311 -#define _loop1_95_type 1312 -#define _loop1_96_type 1313 -#define _loop1_97_type 1314 -#define _loop0_98_type 1315 -#define _loop1_99_type 1316 -#define _loop0_100_type 1317 -#define _loop1_101_type 1318 -#define _loop0_102_type 1319 -#define _loop1_103_type 1320 -#define _loop1_104_type 1321 -#define _loop1_105_type 1322 -#define _loop1_106_type 1323 -#define _tmp_107_type 1324 -#define _loop0_109_type 1325 -#define _gather_108_type 1326 -#define _tmp_110_type 1327 -#define _tmp_111_type 1328 -#define _tmp_112_type 1329 -#define _tmp_113_type 1330 -#define _loop1_114_type 1331 -#define _tmp_115_type 1332 -#define _tmp_116_type 1333 -#define _tmp_117_type 1334 -#define _loop0_119_type 1335 -#define _gather_118_type 1336 -#define _loop1_120_type 1337 -#define _loop0_121_type 1338 -#define _loop0_122_type 1339 -#define _loop0_124_type 1340 -#define _gather_123_type 1341 -#define _tmp_125_type 1342 -#define _loop0_127_type 1343 -#define _gather_126_type 1344 -#define _loop0_129_type 1345 -#define _gather_128_type 1346 -#define _loop0_131_type 1347 -#define _gather_130_type 1348 -#define _loop0_133_type 1349 -#define _gather_132_type 1350 -#define _loop0_134_type 1351 -#define _loop0_136_type 1352 -#define _gather_135_type 1353 -#define _loop1_137_type 1354 -#define _tmp_138_type 1355 -#define _loop0_140_type 1356 -#define _gather_139_type 1357 -#define _tmp_141_type 1358 -#define _tmp_142_type 1359 -#define _tmp_143_type 1360 -#define _tmp_144_type 1361 -#define _tmp_145_type 1362 -#define _tmp_146_type 1363 -#define _loop0_147_type 1364 -#define _loop0_148_type 1365 -#define _loop0_149_type 1366 -#define _tmp_150_type 1367 -#define _tmp_151_type 1368 -#define _tmp_152_type 1369 -#define _tmp_153_type 1370 -#define _loop0_154_type 1371 -#define _loop1_155_type 1372 -#define _loop0_156_type 1373 -#define _loop1_157_type 1374 -#define _tmp_158_type 1375 -#define _tmp_159_type 1376 -#define _tmp_160_type 1377 -#define _loop0_162_type 1378 -#define _gather_161_type 1379 -#define _loop0_164_type 1380 -#define _gather_163_type 1381 -#define _loop0_166_type 1382 -#define _gather_165_type 1383 -#define _loop0_168_type 1384 -#define _gather_167_type 1385 -#define _tmp_169_type 1386 -#define _tmp_170_type 1387 -#define _tmp_171_type 1388 -#define _tmp_172_type 1389 -#define _tmp_173_type 1390 -#define _tmp_174_type 1391 -#define _loop0_176_type 1392 -#define _gather_175_type 1393 -#define _tmp_177_type 1394 -#define _tmp_178_type 1395 -#define _tmp_179_type 1396 -#define _tmp_180_type 1397 -#define _tmp_181_type 1398 -#define _tmp_182_type 1399 -#define _tmp_183_type 1400 -#define _tmp_184_type 1401 -#define _tmp_185_type 1402 -#define _tmp_186_type 1403 -#define _tmp_187_type 1404 -#define _tmp_188_type 1405 -#define _tmp_189_type 1406 -#define _tmp_190_type 1407 -#define _tmp_191_type 1408 -#define _tmp_192_type 1409 -#define _tmp_193_type 1410 -#define _tmp_194_type 1411 -#define _tmp_195_type 1412 -#define _tmp_196_type 1413 -#define _tmp_197_type 1414 -#define _tmp_198_type 1415 -#define _tmp_199_type 1416 -#define _tmp_200_type 1417 -#define _tmp_201_type 1418 -#define _tmp_202_type 1419 -#define _tmp_203_type 1420 +#define invalid_as_pattern_type 1209 +#define invalid_if_stmt_type 1210 +#define invalid_elif_stmt_type 1211 +#define invalid_else_stmt_type 1212 +#define invalid_while_stmt_type 1213 +#define invalid_for_stmt_type 1214 +#define invalid_def_raw_type 1215 +#define invalid_class_def_raw_type 1216 +#define invalid_double_starred_kvpairs_type 1217 +#define invalid_kvpair_type 1218 +#define _loop0_1_type 1219 +#define _loop0_2_type 1220 +#define _loop0_4_type 1221 +#define _gather_3_type 1222 +#define _loop0_6_type 1223 +#define _gather_5_type 1224 +#define _loop0_8_type 1225 +#define _gather_7_type 1226 +#define _loop0_10_type 1227 +#define _gather_9_type 1228 +#define _loop1_11_type 1229 +#define _loop0_13_type 1230 +#define _gather_12_type 1231 +#define _tmp_14_type 1232 +#define _tmp_15_type 1233 +#define _tmp_16_type 1234 +#define _tmp_17_type 1235 +#define _tmp_18_type 1236 +#define _tmp_19_type 1237 +#define _tmp_20_type 1238 +#define _tmp_21_type 1239 +#define _loop1_22_type 1240 +#define _tmp_23_type 1241 +#define _tmp_24_type 1242 +#define _loop0_26_type 1243 +#define _gather_25_type 1244 +#define _loop0_28_type 1245 +#define _gather_27_type 1246 +#define _tmp_29_type 1247 +#define _tmp_30_type 1248 +#define _loop0_31_type 1249 +#define _loop1_32_type 1250 +#define _loop0_34_type 1251 +#define _gather_33_type 1252 +#define _tmp_35_type 1253 +#define _loop0_37_type 1254 +#define _gather_36_type 1255 +#define _tmp_38_type 1256 +#define _loop0_40_type 1257 +#define _gather_39_type 1258 +#define _loop0_42_type 1259 +#define _gather_41_type 1260 +#define _loop0_44_type 1261 +#define _gather_43_type 1262 +#define _loop0_46_type 1263 +#define _gather_45_type 1264 +#define _tmp_47_type 1265 +#define _loop1_48_type 1266 +#define _tmp_49_type 1267 +#define _loop1_50_type 1268 +#define _loop0_52_type 1269 +#define _gather_51_type 1270 +#define _tmp_53_type 1271 +#define _tmp_54_type 1272 +#define _tmp_55_type 1273 +#define _tmp_56_type 1274 +#define _loop0_58_type 1275 +#define _gather_57_type 1276 +#define _loop0_60_type 1277 +#define _gather_59_type 1278 +#define _tmp_61_type 1279 +#define _loop0_63_type 1280 +#define _gather_62_type 1281 +#define _loop0_65_type 1282 +#define _gather_64_type 1283 +#define _tmp_66_type 1284 +#define _tmp_67_type 1285 +#define _tmp_68_type 1286 +#define _tmp_69_type 1287 +#define _loop0_70_type 1288 +#define _loop0_71_type 1289 +#define _loop0_72_type 1290 +#define _loop1_73_type 1291 +#define _loop0_74_type 1292 +#define _loop1_75_type 1293 +#define _loop1_76_type 1294 +#define _loop1_77_type 1295 +#define _loop0_78_type 1296 +#define _loop1_79_type 1297 +#define _loop0_80_type 1298 +#define _loop1_81_type 1299 +#define _loop0_82_type 1300 +#define _loop1_83_type 1301 +#define _loop1_84_type 1302 +#define _tmp_85_type 1303 +#define _loop1_86_type 1304 +#define _loop0_88_type 1305 +#define _gather_87_type 1306 +#define _loop1_89_type 1307 +#define _loop0_90_type 1308 +#define _loop0_91_type 1309 +#define _loop0_92_type 1310 +#define _loop1_93_type 1311 +#define _loop0_94_type 1312 +#define _loop1_95_type 1313 +#define _loop1_96_type 1314 +#define _loop1_97_type 1315 +#define _loop0_98_type 1316 +#define _loop1_99_type 1317 +#define _loop0_100_type 1318 +#define _loop1_101_type 1319 +#define _loop0_102_type 1320 +#define _loop1_103_type 1321 +#define _loop1_104_type 1322 +#define _loop1_105_type 1323 +#define _loop1_106_type 1324 +#define _tmp_107_type 1325 +#define _loop0_109_type 1326 +#define _gather_108_type 1327 +#define _tmp_110_type 1328 +#define _tmp_111_type 1329 +#define _tmp_112_type 1330 +#define _tmp_113_type 1331 +#define _loop1_114_type 1332 +#define _tmp_115_type 1333 +#define _tmp_116_type 1334 +#define _tmp_117_type 1335 +#define _loop0_119_type 1336 +#define _gather_118_type 1337 +#define _loop1_120_type 1338 +#define _loop0_121_type 1339 +#define _loop0_122_type 1340 +#define _loop0_124_type 1341 +#define _gather_123_type 1342 +#define _tmp_125_type 1343 +#define _loop0_127_type 1344 +#define _gather_126_type 1345 +#define _loop0_129_type 1346 +#define _gather_128_type 1347 +#define _loop0_131_type 1348 +#define _gather_130_type 1349 +#define _loop0_133_type 1350 +#define _gather_132_type 1351 +#define _loop0_134_type 1352 +#define _loop0_136_type 1353 +#define _gather_135_type 1354 +#define _loop1_137_type 1355 +#define _tmp_138_type 1356 +#define _loop0_140_type 1357 +#define _gather_139_type 1358 +#define _tmp_141_type 1359 +#define _tmp_142_type 1360 +#define _tmp_143_type 1361 +#define _tmp_144_type 1362 +#define _tmp_145_type 1363 +#define _tmp_146_type 1364 +#define _loop0_147_type 1365 +#define _loop0_148_type 1366 +#define _loop0_149_type 1367 +#define _tmp_150_type 1368 +#define _tmp_151_type 1369 +#define _tmp_152_type 1370 +#define _tmp_153_type 1371 +#define _loop0_154_type 1372 +#define _loop1_155_type 1373 +#define _loop0_156_type 1374 +#define _loop1_157_type 1375 +#define _tmp_158_type 1376 +#define _tmp_159_type 1377 +#define _tmp_160_type 1378 +#define _loop0_162_type 1379 +#define _gather_161_type 1380 +#define _loop0_164_type 1381 +#define _gather_163_type 1382 +#define _loop0_166_type 1383 +#define _gather_165_type 1384 +#define _loop0_168_type 1385 +#define _gather_167_type 1386 +#define _tmp_169_type 1387 +#define _tmp_170_type 1388 +#define _tmp_171_type 1389 +#define _tmp_172_type 1390 +#define _tmp_173_type 1391 +#define _tmp_174_type 1392 +#define _loop0_176_type 1393 +#define _gather_175_type 1394 +#define _tmp_177_type 1395 +#define _tmp_178_type 1396 +#define _tmp_179_type 1397 +#define _tmp_180_type 1398 +#define _tmp_181_type 1399 +#define _tmp_182_type 1400 +#define _tmp_183_type 1401 +#define _tmp_184_type 1402 +#define _tmp_185_type 1403 +#define _tmp_186_type 1404 +#define _tmp_187_type 1405 +#define _tmp_188_type 1406 +#define _tmp_189_type 1407 +#define _tmp_190_type 1408 +#define _tmp_191_type 1409 +#define _tmp_192_type 1410 +#define _tmp_193_type 1411 +#define _tmp_194_type 1412 +#define _tmp_195_type 1413 +#define _tmp_196_type 1414 +#define _tmp_197_type 1415 +#define _tmp_198_type 1416 +#define _tmp_199_type 1417 +#define _tmp_200_type 1418 +#define _tmp_201_type 1419 +#define _tmp_202_type 1420 +#define _tmp_203_type 1421 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -702,6 +703,7 @@ static void *invalid_finally_stmt_rule(Parser *p); static void *invalid_except_stmt_indent_rule(Parser *p); static void *invalid_match_stmt_rule(Parser *p); static void *invalid_case_block_rule(Parser *p); +static void *invalid_as_pattern_rule(Parser *p); static void *invalid_if_stmt_rule(Parser *p); static void *invalid_elif_stmt_rule(Parser *p); static void *invalid_else_stmt_rule(Parser *p); @@ -5601,7 +5603,7 @@ pattern_rule(Parser *p) return _res; } -// as_pattern: or_pattern 'as' pattern_capture_target +// as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern static pattern_ty as_pattern_rule(Parser *p) { @@ -5660,6 +5662,25 @@ as_pattern_rule(Parser *p) D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target")); } + if (p->call_invalid_rules) { // invalid_as_pattern + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern")); + void *invalid_as_pattern_var; + if ( + (invalid_as_pattern_var = invalid_as_pattern_rule(p)) // invalid_as_pattern + ) + { + D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern")); + _res = invalid_as_pattern_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern")); + } _res = NULL; done: D(p->level--); @@ -20210,6 +20231,85 @@ invalid_case_block_rule(Parser *p) return _res; } +// invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' !NAME expression +static void * +invalid_as_pattern_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // or_pattern 'as' "_" + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\"")); + Token * _keyword; + expr_ty a; + pattern_ty or_pattern_var; + if ( + (or_pattern_var = or_pattern_rule(p)) // or_pattern + && + (_keyword = _PyPegen_expect_token(p, 520)) // token='as' + && + (a = _PyPegen_expect_soft_keyword(p, "_")) // soft_keyword='"_"' + ) + { + D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\"")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\"")); + } + { // or_pattern 'as' !NAME expression + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression")); + Token * _keyword; + expr_ty a; + pattern_ty or_pattern_var; + if ( + (or_pattern_var = or_pattern_rule(p)) // or_pattern + && + (_keyword = _PyPegen_expect_token(p, 520)) // token='as' + && + _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p) + && + (a = expression_rule(p)) // expression + ) + { + D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "invalid pattern target" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' !NAME expression")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + // invalid_if_stmt: // | 'if' named_expression NEWLINE // | 'if' named_expression ':' NEWLINE !INDENT From webhook-mailer at python.org Thu Jun 10 18:52:18 2021 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Jun 2021 22:52:18 -0000 Subject: [Python-checkins] bpo-44342: [Enum] changed pickling from by-value to by-name (GH-26658) Message-ID: https://github.com/python/cpython/commit/62f1d2b3d7dda99598d053e10b785c463fdcf591 commit: 62f1d2b3d7dda99598d053e10b785c463fdcf591 branch: main author: Ethan Furman committer: ethanfurman date: 2021-06-10T15:52:09-07:00 summary: bpo-44342: [Enum] changed pickling from by-value to by-name (GH-26658) by-value lookups could fail on complex enums, necessitating a check for __reduce__ and possibly sabotaging the final enum; by-name lookups should never fail, and sabotaging is no longer necessary for class-based enum creation. files: A Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 54633d8a7fbb0..5263e510d5936 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -456,23 +456,6 @@ def __new__(metacls, cls, bases, classdict, *, boundary=None, _simple=False, **k classdict['_all_bits_'] = 2 ** ((flag_mask).bit_length()) - 1 classdict['_inverted_'] = None # - # If a custom type is mixed into the Enum, and it does not know how - # to pickle itself, pickle.dumps will succeed but pickle.loads will - # fail. Rather than have the error show up later and possibly far - # from the source, sabotage the pickle protocol for this class so - # that pickle.dumps also fails. - # - # However, if the new class implements its own __reduce_ex__, do not - # sabotage -- it's on them to make sure it works correctly. We use - # __reduce_ex__ instead of any of the others as it is preferred by - # pickle over __reduce__, and it handles all pickle protocols. - if '__reduce_ex__' not in classdict: - if member_type is not object: - methods = ('__getnewargs_ex__', '__getnewargs__', - '__reduce_ex__', '__reduce__') - if not any(m in member_type.__dict__ for m in methods): - _make_class_unpicklable(classdict) - # # create a default docstring if one has not been provided if '__doc__' not in classdict: classdict['__doc__'] = 'An enumeration.' @@ -792,7 +775,7 @@ def _convert_(cls, name, module, filter, source=None, *, boundary=None): body['__module__'] = module tmp_cls = type(name, (object, ), body) cls = _simple_enum(etype=cls, boundary=boundary or KEEP)(tmp_cls) - cls.__reduce_ex__ = _reduce_ex_by_name + cls.__reduce_ex__ = _reduce_ex_by_global_name global_enum(cls) module_globals[name] = cls return cls @@ -1030,7 +1013,7 @@ def __hash__(self): return hash(self._name_) def __reduce_ex__(self, proto): - return self.__class__, (self._value_, ) + return getattr, (self.__class__, self._name_) # enum.property is used to provide access to the `name` and # `value` attributes of enum members while keeping some measure of @@ -1091,7 +1074,7 @@ def _generate_next_value_(name, start, count, last_values): return name.lower() -def _reduce_ex_by_name(self, proto): +def _reduce_ex_by_global_name(self, proto): return self.name class FlagBoundary(StrEnum): @@ -1795,6 +1778,6 @@ def _old_convert_(etype, name, module, filter, source=None, *, boundary=None): # unless some values aren't comparable, in which case sort by name members.sort(key=lambda t: t[0]) cls = etype(name, members, module=module, boundary=boundary or KEEP) - cls.__reduce_ex__ = _reduce_ex_by_name + cls.__reduce_ex__ = _reduce_ex_by_global_name cls.__repr__ = global_enum_repr return cls diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 40794e3c1eb63..9a7882b8a9c6f 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -830,7 +830,7 @@ def test_pickle_by_name(self): class ReplaceGlobalInt(IntEnum): ONE = 1 TWO = 2 - ReplaceGlobalInt.__reduce_ex__ = enum._reduce_ex_by_name + ReplaceGlobalInt.__reduce_ex__ = enum._reduce_ex_by_global_name for proto in range(HIGHEST_PROTOCOL): self.assertEqual(ReplaceGlobalInt.TWO.__reduce_ex__(proto), 'TWO') @@ -1527,10 +1527,10 @@ class NEI(NamedInt, Enum): NI5 = NamedInt('test', 5) self.assertEqual(NI5, 5) self.assertEqual(NEI.y.value, 2) - test_pickle_exception(self.assertRaises, TypeError, NEI.x) - test_pickle_exception(self.assertRaises, PicklingError, NEI) + test_pickle_dump_load(self.assertIs, NEI.y) + test_pickle_dump_load(self.assertIs, NEI) - def test_subclasses_without_direct_pickle_support_using_name(self): + def test_subclasses_with_direct_pickle_support(self): class NamedInt(int): __qualname__ = 'NamedInt' def __new__(cls, *args): diff --git a/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst b/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst new file mode 100644 index 0000000000000..6db75e3e9bcf1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst @@ -0,0 +1 @@ +[Enum] Change pickling from by-value to by-name. From webhook-mailer at python.org Thu Jun 10 18:52:57 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 10 Jun 2021 22:52:57 -0000 Subject: [Python-checkins] [3.9] bpo-44385: Remove unused grammar rules (GH-26655) (GH-26659) Message-ID: https://github.com/python/cpython/commit/3ce35bfbbe29664942f9a8c50c177a4575a31934 commit: 3ce35bfbbe29664942f9a8c50c177a4575a31934 branch: 3.9 author: Lysandros Nikolaou committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-10T15:52:49-07:00 summary: [3.9] bpo-44385: Remove unused grammar rules (GH-26655) (GH-26659) (cherry picked from commit e7b4644607789848f9752a3bd20ff216e25b4156) files: M Grammar/python.gram M Parser/pegen/parse.c diff --git a/Grammar/python.gram b/Grammar/python.gram index 0e12b5cb9681a2..544b4f794e08f6 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -600,11 +600,6 @@ del_t_atom[expr_ty]: | '(' a=[del_targets] ')' { _Py_Tuple(a, Del, EXTRA) } | '[' a=[del_targets] ']' { _Py_List(a, Del, EXTRA) } -targets[asdl_seq*]: a=','.target+ [','] { a } -target[expr_ty] (memo): - | a=t_primary '.' b=NAME !t_lookahead { _Py_Attribute(a, b->v.Name.id, Store, EXTRA) } - | a=t_primary '[' b=slices ']' !t_lookahead { _Py_Subscript(a, b, Store, EXTRA) } - | t_atom t_primary[expr_ty]: | a=t_primary '.' b=NAME &t_lookahead { _Py_Attribute(a, b->v.Name.id, Load, EXTRA) } | a=t_primary '[' b=slices ']' &t_lookahead { _Py_Subscript(a, b, Load, EXTRA) } @@ -616,12 +611,6 @@ t_primary[expr_ty]: EXTRA) } | a=atom &t_lookahead { a } t_lookahead: '(' | '[' | '.' -t_atom[expr_ty]: - | a=NAME { _PyPegen_set_expr_context(p, a, Store) } - | '(' a=target ')' { _PyPegen_set_expr_context(p, a, Store) } - | '(' b=[targets] ')' { _Py_Tuple(b, Store, EXTRA) } - | '[' b=[targets] ']' { _Py_List(b, Store, EXTRA) } - # From here on, there are rules for invalid syntax with specialised error messages invalid_arguments: diff --git a/Parser/pegen/parse.c b/Parser/pegen/parse.c index d244eaa767b69f..78e68d1618734f 100644 --- a/Parser/pegen/parse.c +++ b/Parser/pegen/parse.c @@ -214,187 +214,182 @@ static KeywordToken *reserved_keywords[] = { #define del_targets_type 1136 #define del_target_type 1137 #define del_t_atom_type 1138 -#define targets_type 1139 -#define target_type 1140 -#define t_primary_type 1141 // Left-recursive -#define t_lookahead_type 1142 -#define t_atom_type 1143 -#define invalid_arguments_type 1144 -#define invalid_kwarg_type 1145 -#define invalid_named_expression_type 1146 -#define invalid_assignment_type 1147 -#define invalid_ann_assign_target_type 1148 -#define invalid_del_stmt_type 1149 -#define invalid_block_type 1150 -#define invalid_primary_type 1151 // Left-recursive -#define invalid_comprehension_type 1152 -#define invalid_dict_comprehension_type 1153 -#define invalid_parameters_type 1154 -#define invalid_lambda_parameters_type 1155 -#define invalid_star_etc_type 1156 -#define invalid_lambda_star_etc_type 1157 -#define invalid_double_type_comments_type 1158 -#define invalid_with_item_type 1159 -#define invalid_for_target_type 1160 -#define invalid_group_type 1161 -#define invalid_import_from_targets_type 1162 -#define _loop0_1_type 1163 -#define _loop0_2_type 1164 -#define _loop0_4_type 1165 -#define _gather_3_type 1166 -#define _loop0_6_type 1167 -#define _gather_5_type 1168 -#define _loop0_8_type 1169 -#define _gather_7_type 1170 -#define _loop0_10_type 1171 -#define _gather_9_type 1172 -#define _loop1_11_type 1173 -#define _loop0_13_type 1174 -#define _gather_12_type 1175 -#define _tmp_14_type 1176 -#define _tmp_15_type 1177 -#define _tmp_16_type 1178 -#define _tmp_17_type 1179 -#define _tmp_18_type 1180 -#define _tmp_19_type 1181 -#define _tmp_20_type 1182 -#define _tmp_21_type 1183 -#define _loop1_22_type 1184 -#define _tmp_23_type 1185 -#define _tmp_24_type 1186 -#define _loop0_26_type 1187 -#define _gather_25_type 1188 -#define _loop0_28_type 1189 -#define _gather_27_type 1190 -#define _tmp_29_type 1191 -#define _tmp_30_type 1192 -#define _loop0_31_type 1193 -#define _loop1_32_type 1194 -#define _loop0_34_type 1195 -#define _gather_33_type 1196 -#define _tmp_35_type 1197 -#define _loop0_37_type 1198 -#define _gather_36_type 1199 -#define _tmp_38_type 1200 -#define _loop0_40_type 1201 -#define _gather_39_type 1202 -#define _loop0_42_type 1203 -#define _gather_41_type 1204 -#define _loop0_44_type 1205 -#define _gather_43_type 1206 -#define _loop0_46_type 1207 -#define _gather_45_type 1208 -#define _tmp_47_type 1209 -#define _loop1_48_type 1210 -#define _tmp_49_type 1211 -#define _tmp_50_type 1212 -#define _tmp_51_type 1213 -#define _tmp_52_type 1214 -#define _tmp_53_type 1215 -#define _loop0_54_type 1216 -#define _loop0_55_type 1217 -#define _loop0_56_type 1218 -#define _loop1_57_type 1219 -#define _loop0_58_type 1220 -#define _loop1_59_type 1221 -#define _loop1_60_type 1222 -#define _loop1_61_type 1223 -#define _loop0_62_type 1224 -#define _loop1_63_type 1225 -#define _loop0_64_type 1226 -#define _loop1_65_type 1227 -#define _loop0_66_type 1228 -#define _loop1_67_type 1229 -#define _loop1_68_type 1230 -#define _tmp_69_type 1231 -#define _loop1_70_type 1232 -#define _loop0_72_type 1233 -#define _gather_71_type 1234 -#define _loop1_73_type 1235 -#define _loop0_74_type 1236 -#define _loop0_75_type 1237 -#define _loop0_76_type 1238 -#define _loop1_77_type 1239 -#define _loop0_78_type 1240 -#define _loop1_79_type 1241 -#define _loop1_80_type 1242 -#define _loop1_81_type 1243 -#define _loop0_82_type 1244 -#define _loop1_83_type 1245 -#define _loop0_84_type 1246 -#define _loop1_85_type 1247 -#define _loop0_86_type 1248 -#define _loop1_87_type 1249 -#define _loop1_88_type 1250 -#define _loop1_89_type 1251 -#define _loop1_90_type 1252 -#define _tmp_91_type 1253 -#define _loop0_93_type 1254 -#define _gather_92_type 1255 -#define _tmp_94_type 1256 -#define _tmp_95_type 1257 -#define _tmp_96_type 1258 -#define _tmp_97_type 1259 -#define _loop1_98_type 1260 -#define _tmp_99_type 1261 -#define _tmp_100_type 1262 -#define _loop0_102_type 1263 -#define _gather_101_type 1264 -#define _loop1_103_type 1265 -#define _loop0_104_type 1266 -#define _loop0_105_type 1267 -#define _loop0_107_type 1268 -#define _gather_106_type 1269 -#define _tmp_108_type 1270 -#define _loop0_110_type 1271 -#define _gather_109_type 1272 -#define _loop0_112_type 1273 -#define _gather_111_type 1274 -#define _loop0_114_type 1275 -#define _gather_113_type 1276 -#define _loop0_116_type 1277 -#define _gather_115_type 1278 -#define _loop0_117_type 1279 -#define _loop0_119_type 1280 -#define _gather_118_type 1281 -#define _loop1_120_type 1282 -#define _tmp_121_type 1283 -#define _loop0_123_type 1284 -#define _gather_122_type 1285 -#define _loop0_125_type 1286 -#define _gather_124_type 1287 -#define _tmp_126_type 1288 -#define _tmp_127_type 1289 -#define _loop0_128_type 1290 -#define _loop0_129_type 1291 -#define _loop0_130_type 1292 -#define _tmp_131_type 1293 -#define _tmp_132_type 1294 -#define _loop0_133_type 1295 -#define _tmp_134_type 1296 -#define _loop0_135_type 1297 -#define _tmp_136_type 1298 -#define _tmp_137_type 1299 -#define _tmp_138_type 1300 -#define _tmp_139_type 1301 -#define _tmp_140_type 1302 -#define _tmp_141_type 1303 -#define _tmp_142_type 1304 -#define _tmp_143_type 1305 -#define _tmp_144_type 1306 -#define _tmp_145_type 1307 -#define _tmp_146_type 1308 -#define _tmp_147_type 1309 -#define _tmp_148_type 1310 -#define _tmp_149_type 1311 -#define _tmp_150_type 1312 -#define _tmp_151_type 1313 -#define _tmp_152_type 1314 -#define _tmp_153_type 1315 -#define _loop1_154_type 1316 -#define _loop1_155_type 1317 -#define _tmp_156_type 1318 -#define _tmp_157_type 1319 +#define t_primary_type 1139 // Left-recursive +#define t_lookahead_type 1140 +#define invalid_arguments_type 1141 +#define invalid_kwarg_type 1142 +#define invalid_named_expression_type 1143 +#define invalid_assignment_type 1144 +#define invalid_ann_assign_target_type 1145 +#define invalid_del_stmt_type 1146 +#define invalid_block_type 1147 +#define invalid_primary_type 1148 // Left-recursive +#define invalid_comprehension_type 1149 +#define invalid_dict_comprehension_type 1150 +#define invalid_parameters_type 1151 +#define invalid_lambda_parameters_type 1152 +#define invalid_star_etc_type 1153 +#define invalid_lambda_star_etc_type 1154 +#define invalid_double_type_comments_type 1155 +#define invalid_with_item_type 1156 +#define invalid_for_target_type 1157 +#define invalid_group_type 1158 +#define invalid_import_from_targets_type 1159 +#define _loop0_1_type 1160 +#define _loop0_2_type 1161 +#define _loop0_4_type 1162 +#define _gather_3_type 1163 +#define _loop0_6_type 1164 +#define _gather_5_type 1165 +#define _loop0_8_type 1166 +#define _gather_7_type 1167 +#define _loop0_10_type 1168 +#define _gather_9_type 1169 +#define _loop1_11_type 1170 +#define _loop0_13_type 1171 +#define _gather_12_type 1172 +#define _tmp_14_type 1173 +#define _tmp_15_type 1174 +#define _tmp_16_type 1175 +#define _tmp_17_type 1176 +#define _tmp_18_type 1177 +#define _tmp_19_type 1178 +#define _tmp_20_type 1179 +#define _tmp_21_type 1180 +#define _loop1_22_type 1181 +#define _tmp_23_type 1182 +#define _tmp_24_type 1183 +#define _loop0_26_type 1184 +#define _gather_25_type 1185 +#define _loop0_28_type 1186 +#define _gather_27_type 1187 +#define _tmp_29_type 1188 +#define _tmp_30_type 1189 +#define _loop0_31_type 1190 +#define _loop1_32_type 1191 +#define _loop0_34_type 1192 +#define _gather_33_type 1193 +#define _tmp_35_type 1194 +#define _loop0_37_type 1195 +#define _gather_36_type 1196 +#define _tmp_38_type 1197 +#define _loop0_40_type 1198 +#define _gather_39_type 1199 +#define _loop0_42_type 1200 +#define _gather_41_type 1201 +#define _loop0_44_type 1202 +#define _gather_43_type 1203 +#define _loop0_46_type 1204 +#define _gather_45_type 1205 +#define _tmp_47_type 1206 +#define _loop1_48_type 1207 +#define _tmp_49_type 1208 +#define _tmp_50_type 1209 +#define _tmp_51_type 1210 +#define _tmp_52_type 1211 +#define _tmp_53_type 1212 +#define _loop0_54_type 1213 +#define _loop0_55_type 1214 +#define _loop0_56_type 1215 +#define _loop1_57_type 1216 +#define _loop0_58_type 1217 +#define _loop1_59_type 1218 +#define _loop1_60_type 1219 +#define _loop1_61_type 1220 +#define _loop0_62_type 1221 +#define _loop1_63_type 1222 +#define _loop0_64_type 1223 +#define _loop1_65_type 1224 +#define _loop0_66_type 1225 +#define _loop1_67_type 1226 +#define _loop1_68_type 1227 +#define _tmp_69_type 1228 +#define _loop1_70_type 1229 +#define _loop0_72_type 1230 +#define _gather_71_type 1231 +#define _loop1_73_type 1232 +#define _loop0_74_type 1233 +#define _loop0_75_type 1234 +#define _loop0_76_type 1235 +#define _loop1_77_type 1236 +#define _loop0_78_type 1237 +#define _loop1_79_type 1238 +#define _loop1_80_type 1239 +#define _loop1_81_type 1240 +#define _loop0_82_type 1241 +#define _loop1_83_type 1242 +#define _loop0_84_type 1243 +#define _loop1_85_type 1244 +#define _loop0_86_type 1245 +#define _loop1_87_type 1246 +#define _loop1_88_type 1247 +#define _loop1_89_type 1248 +#define _loop1_90_type 1249 +#define _tmp_91_type 1250 +#define _loop0_93_type 1251 +#define _gather_92_type 1252 +#define _tmp_94_type 1253 +#define _tmp_95_type 1254 +#define _tmp_96_type 1255 +#define _tmp_97_type 1256 +#define _loop1_98_type 1257 +#define _tmp_99_type 1258 +#define _tmp_100_type 1259 +#define _loop0_102_type 1260 +#define _gather_101_type 1261 +#define _loop1_103_type 1262 +#define _loop0_104_type 1263 +#define _loop0_105_type 1264 +#define _loop0_107_type 1265 +#define _gather_106_type 1266 +#define _tmp_108_type 1267 +#define _loop0_110_type 1268 +#define _gather_109_type 1269 +#define _loop0_112_type 1270 +#define _gather_111_type 1271 +#define _loop0_114_type 1272 +#define _gather_113_type 1273 +#define _loop0_116_type 1274 +#define _gather_115_type 1275 +#define _loop0_117_type 1276 +#define _loop0_119_type 1277 +#define _gather_118_type 1278 +#define _loop1_120_type 1279 +#define _tmp_121_type 1280 +#define _loop0_123_type 1281 +#define _gather_122_type 1282 +#define _tmp_124_type 1283 +#define _tmp_125_type 1284 +#define _loop0_126_type 1285 +#define _loop0_127_type 1286 +#define _loop0_128_type 1287 +#define _tmp_129_type 1288 +#define _tmp_130_type 1289 +#define _loop0_131_type 1290 +#define _tmp_132_type 1291 +#define _loop0_133_type 1292 +#define _tmp_134_type 1293 +#define _tmp_135_type 1294 +#define _tmp_136_type 1295 +#define _tmp_137_type 1296 +#define _tmp_138_type 1297 +#define _tmp_139_type 1298 +#define _tmp_140_type 1299 +#define _tmp_141_type 1300 +#define _tmp_142_type 1301 +#define _tmp_143_type 1302 +#define _tmp_144_type 1303 +#define _tmp_145_type 1304 +#define _tmp_146_type 1305 +#define _tmp_147_type 1306 +#define _tmp_148_type 1307 +#define _tmp_149_type 1308 +#define _tmp_150_type 1309 +#define _tmp_151_type 1310 +#define _loop1_152_type 1311 +#define _loop1_153_type 1312 +#define _tmp_154_type 1313 +#define _tmp_155_type 1314 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -535,11 +530,8 @@ static expr_ty single_subscript_attribute_target_rule(Parser *p); static asdl_seq* del_targets_rule(Parser *p); static expr_ty del_target_rule(Parser *p); static expr_ty del_t_atom_rule(Parser *p); -static asdl_seq* targets_rule(Parser *p); -static expr_ty target_rule(Parser *p); static expr_ty t_primary_rule(Parser *p); static void *t_lookahead_rule(Parser *p); -static expr_ty t_atom_rule(Parser *p); static void *invalid_arguments_rule(Parser *p); static void *invalid_kwarg_rule(Parser *p); static void *invalid_named_expression_rule(Parser *p); @@ -682,18 +674,18 @@ static asdl_seq *_loop1_120_rule(Parser *p); static void *_tmp_121_rule(Parser *p); static asdl_seq *_loop0_123_rule(Parser *p); static asdl_seq *_gather_122_rule(Parser *p); -static asdl_seq *_loop0_125_rule(Parser *p); -static asdl_seq *_gather_124_rule(Parser *p); -static void *_tmp_126_rule(Parser *p); -static void *_tmp_127_rule(Parser *p); +static void *_tmp_124_rule(Parser *p); +static void *_tmp_125_rule(Parser *p); +static asdl_seq *_loop0_126_rule(Parser *p); +static asdl_seq *_loop0_127_rule(Parser *p); static asdl_seq *_loop0_128_rule(Parser *p); -static asdl_seq *_loop0_129_rule(Parser *p); -static asdl_seq *_loop0_130_rule(Parser *p); -static void *_tmp_131_rule(Parser *p); +static void *_tmp_129_rule(Parser *p); +static void *_tmp_130_rule(Parser *p); +static asdl_seq *_loop0_131_rule(Parser *p); static void *_tmp_132_rule(Parser *p); static asdl_seq *_loop0_133_rule(Parser *p); static void *_tmp_134_rule(Parser *p); -static asdl_seq *_loop0_135_rule(Parser *p); +static void *_tmp_135_rule(Parser *p); static void *_tmp_136_rule(Parser *p); static void *_tmp_137_rule(Parser *p); static void *_tmp_138_rule(Parser *p); @@ -710,12 +702,10 @@ static void *_tmp_148_rule(Parser *p); static void *_tmp_149_rule(Parser *p); static void *_tmp_150_rule(Parser *p); static void *_tmp_151_rule(Parser *p); -static void *_tmp_152_rule(Parser *p); -static void *_tmp_153_rule(Parser *p); -static asdl_seq *_loop1_154_rule(Parser *p); -static asdl_seq *_loop1_155_rule(Parser *p); -static void *_tmp_156_rule(Parser *p); -static void *_tmp_157_rule(Parser *p); +static asdl_seq *_loop1_152_rule(Parser *p); +static asdl_seq *_loop1_153_rule(Parser *p); +static void *_tmp_154_rule(Parser *p); +static void *_tmp_155_rule(Parser *p); // file: statements? $ @@ -13851,189 +13841,6 @@ del_t_atom_rule(Parser *p) return _res; } -// targets: ','.target+ ','? -static asdl_seq* -targets_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - asdl_seq* _res = NULL; - int _mark = p->mark; - { // ','.target+ ','? - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.target+ ','?")); - void *_opt_var; - UNUSED(_opt_var); // Silence compiler warnings - asdl_seq * a; - if ( - (a = _gather_124_rule(p)) // ','.target+ - && - (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? - ) - { - D(fprintf(stderr, "%*c+ targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.target+ ','?")); - _res = a; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s targets[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.target+ ','?")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - -// target: -// | t_primary '.' NAME !t_lookahead -// | t_primary '[' slices ']' !t_lookahead -// | t_atom -static expr_ty -target_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - expr_ty _res = NULL; - if (_PyPegen_is_memoized(p, target_type, &_res)) { - D(p->level--); - return _res; - } - int _mark = p->mark; - if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - int _start_lineno = p->tokens[_mark]->lineno; - UNUSED(_start_lineno); // Only used by EXTRA macro - int _start_col_offset = p->tokens[_mark]->col_offset; - UNUSED(_start_col_offset); // Only used by EXTRA macro - { // t_primary '.' NAME !t_lookahead - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - Token * _literal; - expr_ty a; - expr_ty b; - if ( - (a = t_primary_rule(p)) // t_primary - && - (_literal = _PyPegen_expect_token(p, 23)) // token='.' - && - (b = _PyPegen_name_token(p)) // NAME - && - _PyPegen_lookahead(0, t_lookahead_rule, p) - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead")); - } - { // t_primary '[' slices ']' !t_lookahead - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - Token * _literal; - Token * _literal_1; - expr_ty a; - expr_ty b; - if ( - (a = t_primary_rule(p)) // t_primary - && - (_literal = _PyPegen_expect_token(p, 9)) // token='[' - && - (b = slices_rule(p)) // slices - && - (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' - && - _PyPegen_lookahead(0, t_lookahead_rule, p) - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _Py_Subscript ( a , b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead")); - } - { // t_atom - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_atom")); - expr_ty t_atom_var; - if ( - (t_atom_var = t_atom_rule(p)) // t_atom - ) - { - D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_atom")); - _res = t_atom_var; - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_atom")); - } - _res = NULL; - done: - _PyPegen_insert_memo(p, _mark, target_type, _res); - D(p->level--); - return _res; -} - // Left-recursive // t_primary: // | t_primary '.' NAME &t_lookahead @@ -14355,166 +14162,8 @@ t_lookahead_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - -// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']' -static expr_ty -t_atom_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - expr_ty _res = NULL; - int _mark = p->mark; - if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - int _start_lineno = p->tokens[_mark]->lineno; - UNUSED(_start_lineno); // Only used by EXTRA macro - int _start_col_offset = p->tokens[_mark]->col_offset; - UNUSED(_start_col_offset); // Only used by EXTRA macro - { // NAME - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME")); - expr_ty a; - if ( - (a = _PyPegen_name_token(p)) // NAME - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME")); - _res = _PyPegen_set_expr_context ( p , a , Store ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME")); - } - { // '(' target ')' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target ')'")); - Token * _literal; - Token * _literal_1; - expr_ty a; - if ( - (_literal = _PyPegen_expect_token(p, 7)) // token='(' - && - (a = target_rule(p)) // target - && - (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target ')'")); - _res = _PyPegen_set_expr_context ( p , a , Store ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target ')'")); - } - { // '(' targets? ')' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'")); - Token * _literal; - Token * _literal_1; - void *b; - if ( - (_literal = _PyPegen_expect_token(p, 7)) // token='(' - && - (b = targets_rule(p), 1) // targets? - && - (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _Py_Tuple ( b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' targets? ')'")); - } - { // '[' targets? ']' - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'")); - Token * _literal; - Token * _literal_1; - void *b; - if ( - (_literal = _PyPegen_expect_token(p, 9)) // token='[' - && - (b = targets_rule(p), 1) // targets? - && - (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' - ) - { - D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'")); - Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); - if (_token == NULL) { - D(p->level--); - return NULL; - } - int _end_lineno = _token->end_lineno; - UNUSED(_end_lineno); // Only used by EXTRA macro - int _end_col_offset = _token->end_col_offset; - UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _Py_List ( b , Store , EXTRA ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - D(p->level--); - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' targets? ']'")); + D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } _res = NULL; done: @@ -14586,7 +14235,7 @@ invalid_arguments_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_opt_var = _tmp_126_rule(p), 1) // [args | expression for_if_clauses] + (_opt_var = _tmp_124_rule(p), 1) // [args | expression for_if_clauses] ) { D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); @@ -14718,7 +14367,7 @@ invalid_kwarg_rule(Parser *p) expr_ty a; Token * b; if ( - _PyPegen_lookahead(0, _tmp_127_rule, p) + _PyPegen_lookahead(0, _tmp_125_rule, p) && (a = expression_rule(p)) // expression && @@ -14846,7 +14495,7 @@ invalid_assignment_rule(Parser *p) D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression")); Token * _literal; Token * _literal_1; - asdl_seq * _loop0_128_var; + asdl_seq * _loop0_126_var; expr_ty a; expr_ty expression_var; if ( @@ -14854,7 +14503,7 @@ invalid_assignment_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_loop0_128_var = _loop0_128_rule(p)) // star_named_expressions* + (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions* && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -14911,10 +14560,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='")); Token * _literal; - asdl_seq * _loop0_129_var; + asdl_seq * _loop0_127_var; expr_ty a; if ( - (_loop0_129_var = _loop0_129_rule(p)) // ((star_targets '='))* + (_loop0_127_var = _loop0_127_rule(p)) // ((star_targets '='))* && (a = star_expressions_rule(p)) // star_expressions && @@ -14941,10 +14590,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='")); Token * _literal; - asdl_seq * _loop0_130_var; + asdl_seq * _loop0_128_var; expr_ty a; if ( - (_loop0_130_var = _loop0_130_rule(p)) // ((star_targets '='))* + (_loop0_128_var = _loop0_128_rule(p)) // ((star_targets '='))* && (a = yield_expr_rule(p)) // yield_expr && @@ -14970,7 +14619,7 @@ invalid_assignment_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); - void *_tmp_131_var; + void *_tmp_129_var; expr_ty a; AugOperator* augassign_var; if ( @@ -14978,7 +14627,7 @@ invalid_assignment_rule(Parser *p) && (augassign_var = augassign_rule(p)) // augassign && - (_tmp_131_var = _tmp_131_rule(p)) // yield_expr | star_expressions + (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions ) { D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); @@ -15234,11 +14883,11 @@ invalid_comprehension_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses")); - void *_tmp_132_var; + void *_tmp_130_var; expr_ty a; asdl_seq* for_if_clauses_var; if ( - (_tmp_132_var = _tmp_132_rule(p)) // '[' | '(' | '{' + (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{' && (a = starred_expression_rule(p)) // starred_expression && @@ -15335,13 +14984,13 @@ invalid_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* (slash_with_default | param_with_default+) param_no_default")); - asdl_seq * _loop0_133_var; - void *_tmp_134_var; + asdl_seq * _loop0_131_var; + void *_tmp_132_var; arg_ty param_no_default_var; if ( - (_loop0_133_var = _loop0_133_rule(p)) // param_no_default* + (_loop0_131_var = _loop0_131_rule(p)) // param_no_default* && - (_tmp_134_var = _tmp_134_rule(p)) // slash_with_default | param_with_default+ + (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+ && (param_no_default_var = param_no_default_rule(p)) // param_no_default ) @@ -15383,13 +15032,13 @@ invalid_lambda_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default")); - asdl_seq * _loop0_135_var; - void *_tmp_136_var; + asdl_seq * _loop0_133_var; + void *_tmp_134_var; arg_ty lambda_param_no_default_var; if ( - (_loop0_135_var = _loop0_135_rule(p)) // lambda_param_no_default* + (_loop0_133_var = _loop0_133_rule(p)) // lambda_param_no_default* && - (_tmp_136_var = _tmp_136_rule(p)) // lambda_slash_with_default | lambda_param_with_default+ + (_tmp_134_var = _tmp_134_rule(p)) // lambda_slash_with_default | lambda_param_with_default+ && (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) @@ -15431,11 +15080,11 @@ invalid_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); Token * _literal; - void *_tmp_137_var; + void *_tmp_135_var; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_137_var = _tmp_137_rule(p)) // ')' | ',' (')' | '**') + (_tmp_135_var = _tmp_135_rule(p)) // ')' | ',' (')' | '**') ) { D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); @@ -15505,11 +15154,11 @@ invalid_lambda_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); Token * _literal; - void *_tmp_138_var; + void *_tmp_136_var; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_138_var = _tmp_138_rule(p)) // ':' | ',' (':' | '**') + (_tmp_136_var = _tmp_136_rule(p)) // ':' | ',' (':' | '**') ) { D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); @@ -17018,12 +16667,12 @@ _loop1_22_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_139_var; + void *_tmp_137_var; while ( - (_tmp_139_var = _tmp_139_rule(p)) // star_targets '=' + (_tmp_137_var = _tmp_137_rule(p)) // star_targets '=' ) { - _res = _tmp_139_var; + _res = _tmp_137_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -17526,12 +17175,12 @@ _loop0_31_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_140_var; + void *_tmp_138_var; while ( - (_tmp_140_var = _tmp_140_rule(p)) // '.' | '...' + (_tmp_138_var = _tmp_138_rule(p)) // '.' | '...' ) { - _res = _tmp_140_var; + _res = _tmp_138_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -17592,12 +17241,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_141_var; + void *_tmp_139_var; while ( - (_tmp_141_var = _tmp_141_rule(p)) // '.' | '...' + (_tmp_139_var = _tmp_139_rule(p)) // '.' | '...' ) { - _res = _tmp_141_var; + _res = _tmp_139_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -19754,12 +19403,12 @@ _loop1_68_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_142_var; + void *_tmp_140_var; while ( - (_tmp_142_var = _tmp_142_rule(p)) // '@' named_expression NEWLINE + (_tmp_140_var = _tmp_140_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_142_var; + _res = _tmp_140_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -19872,12 +19521,12 @@ _loop1_70_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_143_var; + void *_tmp_141_var; while ( - (_tmp_143_var = _tmp_143_rule(p)) // ',' star_expression + (_tmp_141_var = _tmp_141_rule(p)) // ',' star_expression ) { - _res = _tmp_143_var; + _res = _tmp_141_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -20057,12 +19706,12 @@ _loop1_73_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_144_var; + void *_tmp_142_var; while ( - (_tmp_144_var = _tmp_144_rule(p)) // ',' expression + (_tmp_142_var = _tmp_142_rule(p)) // ',' expression ) { - _res = _tmp_144_var; + _res = _tmp_142_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -21087,12 +20736,12 @@ _loop1_88_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_145_var; + void *_tmp_143_var; while ( - (_tmp_145_var = _tmp_145_rule(p)) // 'or' conjunction + (_tmp_143_var = _tmp_143_rule(p)) // 'or' conjunction ) { - _res = _tmp_145_var; + _res = _tmp_143_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -21158,12 +20807,12 @@ _loop1_89_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_146_var; + void *_tmp_144_var; while ( - (_tmp_146_var = _tmp_146_rule(p)) // 'and' inversion + (_tmp_144_var = _tmp_144_rule(p)) // 'and' inversion ) { - _res = _tmp_146_var; + _res = _tmp_144_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22079,12 +21728,12 @@ _loop0_104_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_147_var; + void *_tmp_145_var; while ( - (_tmp_147_var = _tmp_147_rule(p)) // 'if' disjunction + (_tmp_145_var = _tmp_145_rule(p)) // 'if' disjunction ) { - _res = _tmp_147_var; + _res = _tmp_145_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22145,12 +21794,12 @@ _loop0_105_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_148_var; + void *_tmp_146_var; while ( - (_tmp_148_var = _tmp_148_rule(p)) // 'if' disjunction + (_tmp_146_var = _tmp_146_rule(p)) // 'if' disjunction ) { - _res = _tmp_148_var; + _res = _tmp_146_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22216,7 +21865,7 @@ _loop0_107_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_149_rule(p)) // starred_expression | named_expression !'=' + (elem = _tmp_147_rule(p)) // starred_expression | named_expression !'=' ) { _res = elem; @@ -22279,7 +21928,7 @@ _gather_106_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_149_rule(p)) // starred_expression | named_expression !'=' + (elem = _tmp_147_rule(p)) // starred_expression | named_expression !'=' && (seq = _loop0_107_rule(p)) // _loop0_107 ) @@ -22825,12 +22474,12 @@ _loop0_117_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_150_var; + void *_tmp_148_var; while ( - (_tmp_150_var = _tmp_150_rule(p)) // ',' star_target + (_tmp_148_var = _tmp_148_rule(p)) // ',' star_target ) { - _res = _tmp_150_var; + _res = _tmp_148_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23005,12 +22654,12 @@ _loop1_120_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_151_var; + void *_tmp_149_var; while ( - (_tmp_151_var = _tmp_151_rule(p)) // ',' star_target + (_tmp_149_var = _tmp_149_rule(p)) // ',' star_target ) { - _res = _tmp_151_var; + _res = _tmp_149_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23201,123 +22850,9 @@ _gather_122_rule(Parser *p) return _res; } -// _loop0_125: ',' target -static asdl_seq * -_loop0_125_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - void *_res = NULL; - int _mark = p->mark; - int _start_mark = p->mark; - void **_children = PyMem_Malloc(sizeof(void *)); - if (!_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - ssize_t _children_capacity = 1; - ssize_t _n = 0; - { // ',' target - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> _loop0_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' target")); - Token * _literal; - expr_ty elem; - while ( - (_literal = _PyPegen_expect_token(p, 12)) // token=',' - && - (elem = target_rule(p)) // target - ) - { - _res = elem; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - PyMem_Free(_children); - D(p->level--); - return NULL; - } - if (_n == _children_capacity) { - _children_capacity *= 2; - void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); - if (!_new_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - _children = _new_children; - } - _children[_n++] = _res; - _mark = p->mark; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_125[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' target")); - } - asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); - if (!_seq) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - D(p->level--); - return NULL; - } - for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); - PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_125_type, _seq); - D(p->level--); - return _seq; -} - -// _gather_124: target _loop0_125 -static asdl_seq * -_gather_124_rule(Parser *p) -{ - D(p->level++); - if (p->error_indicator) { - D(p->level--); - return NULL; - } - asdl_seq * _res = NULL; - int _mark = p->mark; - { // target _loop0_125 - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> _gather_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target _loop0_125")); - expr_ty elem; - asdl_seq * seq; - if ( - (elem = target_rule(p)) // target - && - (seq = _loop0_125_rule(p)) // _loop0_125 - ) - { - D(fprintf(stderr, "%*c+ _gather_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target _loop0_125")); - _res = _PyPegen_seq_insert_in_front(p, elem, seq); - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_124[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target _loop0_125")); - } - _res = NULL; - done: - D(p->level--); - return _res; -} - -// _tmp_126: args | expression for_if_clauses +// _tmp_124: args | expression for_if_clauses static void * -_tmp_126_rule(Parser *p) +_tmp_124_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23331,18 +22866,18 @@ _tmp_126_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); expr_ty args_var; if ( (args_var = args_rule(p)) // args ) { - D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); _res = args_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args")); } { // expression for_if_clauses @@ -23350,7 +22885,7 @@ _tmp_126_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); expr_ty expression_var; asdl_seq* for_if_clauses_var; if ( @@ -23359,12 +22894,12 @@ _tmp_126_rule(Parser *p) (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses ) { - D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses")); } _res = NULL; @@ -23373,9 +22908,9 @@ _tmp_126_rule(Parser *p) return _res; } -// _tmp_127: NAME '=' +// _tmp_125: NAME '=' static void * -_tmp_127_rule(Parser *p) +_tmp_125_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23389,7 +22924,7 @@ _tmp_127_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='")); + D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='")); Token * _literal; expr_ty name_var; if ( @@ -23398,12 +22933,12 @@ _tmp_127_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='")); + D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='")); _res = _PyPegen_dummy_name(p, name_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='")); } _res = NULL; @@ -23412,9 +22947,9 @@ _tmp_127_rule(Parser *p) return _res; } -// _loop0_128: star_named_expressions +// _loop0_126: star_named_expressions static asdl_seq * -_loop0_128_rule(Parser *p) +_loop0_126_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23438,7 +22973,7 @@ _loop0_128_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); + D(fprintf(stderr, "%*c> _loop0_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); asdl_seq* star_named_expressions_var; while ( (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions @@ -23460,7 +22995,7 @@ _loop0_128_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_128[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_126[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23473,14 +23008,14 @@ _loop0_128_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_128_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq); D(p->level--); return _seq; } -// _loop0_129: (star_targets '=') +// _loop0_127: (star_targets '=') static asdl_seq * -_loop0_129_rule(Parser *p) +_loop0_127_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23504,13 +23039,13 @@ _loop0_129_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_152_var; + D(fprintf(stderr, "%*c> _loop0_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_150_var; while ( - (_tmp_152_var = _tmp_152_rule(p)) // star_targets '=' + (_tmp_150_var = _tmp_150_rule(p)) // star_targets '=' ) { - _res = _tmp_152_var; + _res = _tmp_150_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23526,7 +23061,7 @@ _loop0_129_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_127[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23539,14 +23074,14 @@ _loop0_129_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_129_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_127_type, _seq); D(p->level--); return _seq; } -// _loop0_130: (star_targets '=') +// _loop0_128: (star_targets '=') static asdl_seq * -_loop0_130_rule(Parser *p) +_loop0_128_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23570,13 +23105,13 @@ _loop0_130_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_153_var; + D(fprintf(stderr, "%*c> _loop0_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_151_var; while ( - (_tmp_153_var = _tmp_153_rule(p)) // star_targets '=' + (_tmp_151_var = _tmp_151_rule(p)) // star_targets '=' ) { - _res = _tmp_153_var; + _res = _tmp_151_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -23592,7 +23127,7 @@ _loop0_130_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_130[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_128[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23605,14 +23140,14 @@ _loop0_130_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_130_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_128_type, _seq); D(p->level--); return _seq; } -// _tmp_131: yield_expr | star_expressions +// _tmp_129: yield_expr | star_expressions static void * -_tmp_131_rule(Parser *p) +_tmp_129_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23626,18 +23161,18 @@ _tmp_131_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // star_expressions @@ -23645,18 +23180,18 @@ _tmp_131_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); expr_ty star_expressions_var; if ( (star_expressions_var = star_expressions_rule(p)) // star_expressions ) { - D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); _res = star_expressions_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); } _res = NULL; @@ -23665,9 +23200,9 @@ _tmp_131_rule(Parser *p) return _res; } -// _tmp_132: '[' | '(' | '{' +// _tmp_130: '[' | '(' | '{' static void * -_tmp_132_rule(Parser *p) +_tmp_130_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23681,18 +23216,18 @@ _tmp_132_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '(' @@ -23700,18 +23235,18 @@ _tmp_132_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' ) { - D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('")); } { // '{' @@ -23719,18 +23254,18 @@ _tmp_132_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -23739,9 +23274,9 @@ _tmp_132_rule(Parser *p) return _res; } -// _loop0_133: param_no_default +// _loop0_131: param_no_default static asdl_seq * -_loop0_133_rule(Parser *p) +_loop0_131_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23765,7 +23300,7 @@ _loop0_133_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -23787,7 +23322,7 @@ _loop0_133_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_133[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_131[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23800,14 +23335,14 @@ _loop0_133_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_133_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq); D(p->level--); return _seq; } -// _tmp_134: slash_with_default | param_with_default+ +// _tmp_132: slash_with_default | param_with_default+ static void * -_tmp_134_rule(Parser *p) +_tmp_132_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23821,18 +23356,18 @@ _tmp_134_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default")); + D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default")); SlashWithDefault* slash_with_default_var; if ( (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default ) { - D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default")); + D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default")); _res = slash_with_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default")); } { // param_with_default+ @@ -23840,18 +23375,18 @@ _tmp_134_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - asdl_seq * _loop1_154_var; + D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+")); + asdl_seq * _loop1_152_var; if ( - (_loop1_154_var = _loop1_154_rule(p)) // param_with_default+ + (_loop1_152_var = _loop1_152_rule(p)) // param_with_default+ ) { - D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - _res = _loop1_154_var; + D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+")); + _res = _loop1_152_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+")); } _res = NULL; @@ -23860,9 +23395,9 @@ _tmp_134_rule(Parser *p) return _res; } -// _loop0_135: lambda_param_no_default +// _loop0_133: lambda_param_no_default static asdl_seq * -_loop0_135_rule(Parser *p) +_loop0_133_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23886,7 +23421,7 @@ _loop0_135_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -23908,7 +23443,7 @@ _loop0_135_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_135[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_133[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena); @@ -23921,14 +23456,14 @@ _loop0_135_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_135_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_133_type, _seq); D(p->level--); return _seq; } -// _tmp_136: lambda_slash_with_default | lambda_param_with_default+ +// _tmp_134: lambda_slash_with_default | lambda_param_with_default+ static void * -_tmp_136_rule(Parser *p) +_tmp_134_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23942,18 +23477,18 @@ _tmp_136_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); + D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); SlashWithDefault* lambda_slash_with_default_var; if ( (lambda_slash_with_default_var = lambda_slash_with_default_rule(p)) // lambda_slash_with_default ) { - D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); + D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); _res = lambda_slash_with_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default")); } { // lambda_param_with_default+ @@ -23961,18 +23496,18 @@ _tmp_136_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - asdl_seq * _loop1_155_var; + D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); + asdl_seq * _loop1_153_var; if ( - (_loop1_155_var = _loop1_155_rule(p)) // lambda_param_with_default+ + (_loop1_153_var = _loop1_153_rule(p)) // lambda_param_with_default+ ) { - D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - _res = _loop1_155_var; + D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); + _res = _loop1_153_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+")); } _res = NULL; @@ -23981,9 +23516,9 @@ _tmp_136_rule(Parser *p) return _res; } -// _tmp_137: ')' | ',' (')' | '**') +// _tmp_135: ')' | ',' (')' | '**') static void * -_tmp_137_rule(Parser *p) +_tmp_135_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -23997,18 +23532,18 @@ _tmp_137_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ',' (')' | '**') @@ -24016,21 +23551,21 @@ _tmp_137_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_156_var; + void *_tmp_154_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_156_var = _tmp_156_rule(p)) // ')' | '**' + (_tmp_154_var = _tmp_154_rule(p)) // ')' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_156_var); + D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_154_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')")); } _res = NULL; @@ -24039,9 +23574,9 @@ _tmp_137_rule(Parser *p) return _res; } -// _tmp_138: ':' | ',' (':' | '**') +// _tmp_136: ':' | ',' (':' | '**') static void * -_tmp_138_rule(Parser *p) +_tmp_136_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24055,18 +23590,18 @@ _tmp_138_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // ',' (':' | '**') @@ -24074,21 +23609,21 @@ _tmp_138_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_157_var; + void *_tmp_155_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_157_var = _tmp_157_rule(p)) // ':' | '**' + (_tmp_155_var = _tmp_155_rule(p)) // ':' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_157_var); + D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_155_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')")); } _res = NULL; @@ -24097,9 +23632,9 @@ _tmp_138_rule(Parser *p) return _res; } -// _tmp_139: star_targets '=' +// _tmp_137: star_targets '=' static void * -_tmp_139_rule(Parser *p) +_tmp_137_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24113,7 +23648,7 @@ _tmp_139_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -24122,7 +23657,7 @@ _tmp_139_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24132,7 +23667,7 @@ _tmp_139_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -24141,9 +23676,9 @@ _tmp_139_rule(Parser *p) return _res; } -// _tmp_140: '.' | '...' +// _tmp_138: '.' | '...' static void * -_tmp_140_rule(Parser *p) +_tmp_138_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24157,18 +23692,18 @@ _tmp_140_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -24176,18 +23711,18 @@ _tmp_140_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -24196,9 +23731,9 @@ _tmp_140_rule(Parser *p) return _res; } -// _tmp_141: '.' | '...' +// _tmp_139: '.' | '...' static void * -_tmp_141_rule(Parser *p) +_tmp_139_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24212,18 +23747,18 @@ _tmp_141_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -24231,18 +23766,18 @@ _tmp_141_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -24251,9 +23786,9 @@ _tmp_141_rule(Parser *p) return _res; } -// _tmp_142: '@' named_expression NEWLINE +// _tmp_140: '@' named_expression NEWLINE static void * -_tmp_142_rule(Parser *p) +_tmp_140_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24267,7 +23802,7 @@ _tmp_142_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -24279,7 +23814,7 @@ _tmp_142_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24289,7 +23824,7 @@ _tmp_142_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -24298,9 +23833,9 @@ _tmp_142_rule(Parser *p) return _res; } -// _tmp_143: ',' star_expression +// _tmp_141: ',' star_expression static void * -_tmp_143_rule(Parser *p) +_tmp_141_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24314,7 +23849,7 @@ _tmp_143_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -24323,7 +23858,7 @@ _tmp_143_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24333,7 +23868,7 @@ _tmp_143_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -24342,9 +23877,9 @@ _tmp_143_rule(Parser *p) return _res; } -// _tmp_144: ',' expression +// _tmp_142: ',' expression static void * -_tmp_144_rule(Parser *p) +_tmp_142_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24358,7 +23893,7 @@ _tmp_144_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -24367,7 +23902,7 @@ _tmp_144_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24377,7 +23912,7 @@ _tmp_144_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -24386,9 +23921,9 @@ _tmp_144_rule(Parser *p) return _res; } -// _tmp_145: 'or' conjunction +// _tmp_143: 'or' conjunction static void * -_tmp_145_rule(Parser *p) +_tmp_143_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24402,7 +23937,7 @@ _tmp_145_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -24411,7 +23946,7 @@ _tmp_145_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24421,7 +23956,7 @@ _tmp_145_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -24430,9 +23965,9 @@ _tmp_145_rule(Parser *p) return _res; } -// _tmp_146: 'and' inversion +// _tmp_144: 'and' inversion static void * -_tmp_146_rule(Parser *p) +_tmp_144_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24446,7 +23981,7 @@ _tmp_146_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -24455,7 +23990,7 @@ _tmp_146_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24465,7 +24000,7 @@ _tmp_146_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -24474,9 +24009,9 @@ _tmp_146_rule(Parser *p) return _res; } -// _tmp_147: 'if' disjunction +// _tmp_145: 'if' disjunction static void * -_tmp_147_rule(Parser *p) +_tmp_145_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24490,7 +24025,7 @@ _tmp_147_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -24499,7 +24034,7 @@ _tmp_147_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24509,7 +24044,7 @@ _tmp_147_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -24518,9 +24053,9 @@ _tmp_147_rule(Parser *p) return _res; } -// _tmp_148: 'if' disjunction +// _tmp_146: 'if' disjunction static void * -_tmp_148_rule(Parser *p) +_tmp_146_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24534,7 +24069,7 @@ _tmp_148_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -24543,7 +24078,7 @@ _tmp_148_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24553,7 +24088,7 @@ _tmp_148_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -24562,9 +24097,9 @@ _tmp_148_rule(Parser *p) return _res; } -// _tmp_149: starred_expression | named_expression !'=' +// _tmp_147: starred_expression | named_expression !'=' static void * -_tmp_149_rule(Parser *p) +_tmp_147_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24578,18 +24113,18 @@ _tmp_149_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // named_expression !'=' @@ -24597,7 +24132,7 @@ _tmp_149_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression !'='")); + D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression !'='")); expr_ty named_expression_var; if ( (named_expression_var = named_expression_rule(p)) // named_expression @@ -24605,12 +24140,12 @@ _tmp_149_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression !'='")); + D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression !'='")); _res = named_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression !'='")); } _res = NULL; @@ -24619,9 +24154,9 @@ _tmp_149_rule(Parser *p) return _res; } -// _tmp_150: ',' star_target +// _tmp_148: ',' star_target static void * -_tmp_150_rule(Parser *p) +_tmp_148_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24635,7 +24170,7 @@ _tmp_150_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -24644,7 +24179,7 @@ _tmp_150_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24654,7 +24189,7 @@ _tmp_150_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -24663,9 +24198,9 @@ _tmp_150_rule(Parser *p) return _res; } -// _tmp_151: ',' star_target +// _tmp_149: ',' star_target static void * -_tmp_151_rule(Parser *p) +_tmp_149_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24679,7 +24214,7 @@ _tmp_151_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -24688,7 +24223,7 @@ _tmp_151_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24698,7 +24233,7 @@ _tmp_151_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -24707,9 +24242,9 @@ _tmp_151_rule(Parser *p) return _res; } -// _tmp_152: star_targets '=' +// _tmp_150: star_targets '=' static void * -_tmp_152_rule(Parser *p) +_tmp_150_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24723,7 +24258,7 @@ _tmp_152_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -24732,12 +24267,12 @@ _tmp_152_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -24746,9 +24281,9 @@ _tmp_152_rule(Parser *p) return _res; } -// _tmp_153: star_targets '=' +// _tmp_151: star_targets '=' static void * -_tmp_153_rule(Parser *p) +_tmp_151_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24762,7 +24297,7 @@ _tmp_153_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -24771,12 +24306,12 @@ _tmp_153_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -24785,9 +24320,9 @@ _tmp_153_rule(Parser *p) return _res; } -// _loop1_154: param_with_default +// _loop1_152: param_with_default static asdl_seq * -_loop1_154_rule(Parser *p) +_loop1_152_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24811,7 +24346,7 @@ _loop1_154_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop1_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -24833,7 +24368,7 @@ _loop1_154_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_154[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_152[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -24851,14 +24386,14 @@ _loop1_154_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_154_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_152_type, _seq); D(p->level--); return _seq; } -// _loop1_155: lambda_param_with_default +// _loop1_153: lambda_param_with_default static asdl_seq * -_loop1_155_rule(Parser *p) +_loop1_153_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24882,7 +24417,7 @@ _loop1_155_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop1_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop1_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -24904,7 +24439,7 @@ _loop1_155_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_155[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -24922,14 +24457,14 @@ _loop1_155_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop1_155_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop1_153_type, _seq); D(p->level--); return _seq; } -// _tmp_156: ')' | '**' +// _tmp_154: ')' | '**' static void * -_tmp_156_rule(Parser *p) +_tmp_154_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24943,18 +24478,18 @@ _tmp_156_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -24962,18 +24497,18 @@ _tmp_156_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -24982,9 +24517,9 @@ _tmp_156_rule(Parser *p) return _res; } -// _tmp_157: ':' | '**' +// _tmp_155: ':' | '**' static void * -_tmp_157_rule(Parser *p) +_tmp_155_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -24998,18 +24533,18 @@ _tmp_157_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -25017,18 +24552,18 @@ _tmp_157_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; From webhook-mailer at python.org Thu Jun 10 19:37:38 2021 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Jun 2021 23:37:38 -0000 Subject: [Python-checkins] bpo-44342: [Enum] changed pickling from by-value to by-name (GH-26658) (GH-26660) Message-ID: https://github.com/python/cpython/commit/b613132861839b6d05b67138842b579e1af29f9c commit: b613132861839b6d05b67138842b579e1af29f9c branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2021-06-10T16:37:27-07:00 summary: bpo-44342: [Enum] changed pickling from by-value to by-name (GH-26658) (GH-26660) by-value lookups could fail on complex enums, necessitating a check for __reduce__ and possibly sabotaging the final enum; by-name lookups should never fail, and sabotaging is no longer necessary for class-based enum creation. (cherry picked from commit 62f1d2b3d7dda99598d053e10b785c463fdcf591) Co-authored-by: Ethan Furman Co-authored-by: Ethan Furman files: A Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 54633d8a7fbb0..5263e510d5936 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -456,23 +456,6 @@ def __new__(metacls, cls, bases, classdict, *, boundary=None, _simple=False, **k classdict['_all_bits_'] = 2 ** ((flag_mask).bit_length()) - 1 classdict['_inverted_'] = None # - # If a custom type is mixed into the Enum, and it does not know how - # to pickle itself, pickle.dumps will succeed but pickle.loads will - # fail. Rather than have the error show up later and possibly far - # from the source, sabotage the pickle protocol for this class so - # that pickle.dumps also fails. - # - # However, if the new class implements its own __reduce_ex__, do not - # sabotage -- it's on them to make sure it works correctly. We use - # __reduce_ex__ instead of any of the others as it is preferred by - # pickle over __reduce__, and it handles all pickle protocols. - if '__reduce_ex__' not in classdict: - if member_type is not object: - methods = ('__getnewargs_ex__', '__getnewargs__', - '__reduce_ex__', '__reduce__') - if not any(m in member_type.__dict__ for m in methods): - _make_class_unpicklable(classdict) - # # create a default docstring if one has not been provided if '__doc__' not in classdict: classdict['__doc__'] = 'An enumeration.' @@ -792,7 +775,7 @@ def _convert_(cls, name, module, filter, source=None, *, boundary=None): body['__module__'] = module tmp_cls = type(name, (object, ), body) cls = _simple_enum(etype=cls, boundary=boundary or KEEP)(tmp_cls) - cls.__reduce_ex__ = _reduce_ex_by_name + cls.__reduce_ex__ = _reduce_ex_by_global_name global_enum(cls) module_globals[name] = cls return cls @@ -1030,7 +1013,7 @@ def __hash__(self): return hash(self._name_) def __reduce_ex__(self, proto): - return self.__class__, (self._value_, ) + return getattr, (self.__class__, self._name_) # enum.property is used to provide access to the `name` and # `value` attributes of enum members while keeping some measure of @@ -1091,7 +1074,7 @@ def _generate_next_value_(name, start, count, last_values): return name.lower() -def _reduce_ex_by_name(self, proto): +def _reduce_ex_by_global_name(self, proto): return self.name class FlagBoundary(StrEnum): @@ -1795,6 +1778,6 @@ def _old_convert_(etype, name, module, filter, source=None, *, boundary=None): # unless some values aren't comparable, in which case sort by name members.sort(key=lambda t: t[0]) cls = etype(name, members, module=module, boundary=boundary or KEEP) - cls.__reduce_ex__ = _reduce_ex_by_name + cls.__reduce_ex__ = _reduce_ex_by_global_name cls.__repr__ = global_enum_repr return cls diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 40794e3c1eb63..9a7882b8a9c6f 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -830,7 +830,7 @@ def test_pickle_by_name(self): class ReplaceGlobalInt(IntEnum): ONE = 1 TWO = 2 - ReplaceGlobalInt.__reduce_ex__ = enum._reduce_ex_by_name + ReplaceGlobalInt.__reduce_ex__ = enum._reduce_ex_by_global_name for proto in range(HIGHEST_PROTOCOL): self.assertEqual(ReplaceGlobalInt.TWO.__reduce_ex__(proto), 'TWO') @@ -1527,10 +1527,10 @@ class NEI(NamedInt, Enum): NI5 = NamedInt('test', 5) self.assertEqual(NI5, 5) self.assertEqual(NEI.y.value, 2) - test_pickle_exception(self.assertRaises, TypeError, NEI.x) - test_pickle_exception(self.assertRaises, PicklingError, NEI) + test_pickle_dump_load(self.assertIs, NEI.y) + test_pickle_dump_load(self.assertIs, NEI) - def test_subclasses_without_direct_pickle_support_using_name(self): + def test_subclasses_with_direct_pickle_support(self): class NamedInt(int): __qualname__ = 'NamedInt' def __new__(cls, *args): diff --git a/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst b/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst new file mode 100644 index 0000000000000..6db75e3e9bcf1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst @@ -0,0 +1 @@ +[Enum] Change pickling from by-value to by-name. From webhook-mailer at python.org Fri Jun 11 02:54:04 2021 From: webhook-mailer at python.org (JulienPalard) Date: Fri, 11 Jun 2021 06:54:04 -0000 Subject: [Python-checkins] Doc: Prettier exception hierarchy. (GH-26533) Message-ID: https://github.com/python/cpython/commit/c4955e2c4f9abafd33bbe4904a82f7962333a7d6 commit: c4955e2c4f9abafd33bbe4904a82f7962333a7d6 branch: main author: Julien Palard committer: JulienPalard date: 2021-06-11T08:53:52+02:00 summary: Doc: Prettier exception hierarchy. (GH-26533) files: M Doc/library/exceptions.rst M Lib/test/exception_hierarchy.txt M Lib/test/test_baseexception.py diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index d5d81dfd9e638..0a5037a4b2106 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -821,3 +821,4 @@ Exception hierarchy The class hierarchy for built-in exceptions is: .. literalinclude:: ../../Lib/test/exception_hierarchy.txt + :language: text diff --git a/Lib/test/exception_hierarchy.txt b/Lib/test/exception_hierarchy.txt index 6c5e82139105b..cf54454e71afa 100644 --- a/Lib/test/exception_hierarchy.txt +++ b/Lib/test/exception_hierarchy.txt @@ -1,65 +1,65 @@ BaseException - +-- SystemExit - +-- KeyboardInterrupt - +-- GeneratorExit - +-- Exception - +-- StopIteration - +-- StopAsyncIteration - +-- ArithmeticError - | +-- FloatingPointError - | +-- OverflowError - | +-- ZeroDivisionError - +-- AssertionError - +-- AttributeError - +-- BufferError - +-- EOFError - +-- ImportError - | +-- ModuleNotFoundError - +-- LookupError - | +-- IndexError - | +-- KeyError - +-- MemoryError - +-- NameError - | +-- UnboundLocalError - +-- OSError - | +-- BlockingIOError - | +-- ChildProcessError - | +-- ConnectionError - | | +-- BrokenPipeError - | | +-- ConnectionAbortedError - | | +-- ConnectionRefusedError - | | +-- ConnectionResetError - | +-- FileExistsError - | +-- FileNotFoundError - | +-- InterruptedError - | +-- IsADirectoryError - | +-- NotADirectoryError - | +-- PermissionError - | +-- ProcessLookupError - | +-- TimeoutError - +-- ReferenceError - +-- RuntimeError - | +-- NotImplementedError - | +-- RecursionError - +-- SyntaxError - | +-- IndentationError - | +-- TabError - +-- SystemError - +-- TypeError - +-- ValueError - | +-- UnicodeError - | +-- UnicodeDecodeError - | +-- UnicodeEncodeError - | +-- UnicodeTranslateError - +-- Warning - +-- DeprecationWarning - +-- PendingDeprecationWarning - +-- RuntimeWarning - +-- SyntaxWarning - +-- UserWarning - +-- FutureWarning - +-- ImportWarning - +-- UnicodeWarning - +-- BytesWarning - +-- EncodingWarning - +-- ResourceWarning + ??? SystemExit + ??? KeyboardInterrupt + ??? GeneratorExit + ??? Exception + ??? StopIteration + ??? StopAsyncIteration + ??? ArithmeticError + ? ??? FloatingPointError + ? ??? OverflowError + ? ??? ZeroDivisionError + ??? AssertionError + ??? AttributeError + ??? BufferError + ??? EOFError + ??? ImportError + ? ??? ModuleNotFoundError + ??? LookupError + ? ??? IndexError + ? ??? KeyError + ??? MemoryError + ??? NameError + ? ??? UnboundLocalError + ??? OSError + ? ??? BlockingIOError + ? ??? ChildProcessError + ? ??? ConnectionError + ? ? ??? BrokenPipeError + ? ? ??? ConnectionAbortedError + ? ? ??? ConnectionRefusedError + ? ? ??? ConnectionResetError + ? ??? FileExistsError + ? ??? FileNotFoundError + ? ??? InterruptedError + ? ??? IsADirectoryError + ? ??? NotADirectoryError + ? ??? PermissionError + ? ??? ProcessLookupError + ? ??? TimeoutError + ??? ReferenceError + ??? RuntimeError + ? ??? NotImplementedError + ? ??? RecursionError + ??? SyntaxError + ? ??? IndentationError + ? ??? TabError + ??? SystemError + ??? TypeError + ??? ValueError + ? ??? UnicodeError + ? ??? UnicodeDecodeError + ? ??? UnicodeEncodeError + ? ??? UnicodeTranslateError + ??? Warning + ??? DeprecationWarning + ??? PendingDeprecationWarning + ??? RuntimeWarning + ??? SyntaxWarning + ??? UserWarning + ??? FutureWarning + ??? ImportWarning + ??? UnicodeWarning + ??? BytesWarning + ??? EncodingWarning + ??? ResourceWarning diff --git a/Lib/test/test_baseexception.py b/Lib/test/test_baseexception.py index 8db497a172850..0061b3fa8e655 100644 --- a/Lib/test/test_baseexception.py +++ b/Lib/test/test_baseexception.py @@ -44,7 +44,7 @@ def test_inheritance(self): last_depth = 0 for exc_line in inheritance_tree: exc_line = exc_line.rstrip() - depth = exc_line.rindex('-') + depth = exc_line.rindex('?') exc_name = exc_line[depth+2:] # Slice past space if '(' in exc_name: paren_index = exc_name.index('(') From webhook-mailer at python.org Fri Jun 11 03:15:58 2021 From: webhook-mailer at python.org (tiran) Date: Fri, 11 Jun 2021 07:15:58 -0000 Subject: [Python-checkins] bpo-44362: ssl: improve deprecation warnings and docs (GH-26646) Message-ID: https://github.com/python/cpython/commit/e26014f1c47d26d6097ff7a0f25384bfbde714a9 commit: e26014f1c47d26d6097ff7a0f25384bfbde714a9 branch: main author: Christian Heimes committer: tiran date: 2021-06-11T09:15:48+02:00 summary: bpo-44362: ssl: improve deprecation warnings and docs (GH-26646) Signed-off-by: Christian Heimes files: A Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst M Doc/library/ssl.rst M Doc/whatsnew/3.10.rst M Lib/ssl.py M Lib/test/test_ssl.py M Modules/_ssl.c diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst index afa3d87f5767a..4902d34888ebc 100644 --- a/Doc/library/ssl.rst +++ b/Doc/library/ssl.rst @@ -681,19 +681,23 @@ Constants .. deprecated:: 3.10 + TLS clients and servers require different default settings for secure + communication. The generic TLS protocol constant is deprecated in + favor of :data:`PROTOCOL_TLS_CLIENT` and :data:`PROTOCOL_TLS_SERVER`. + .. data:: PROTOCOL_TLS_CLIENT - Auto-negotiate the highest protocol version like :data:`PROTOCOL_TLS`, - but only support client-side :class:`SSLSocket` connections. The protocol - enables :data:`CERT_REQUIRED` and :attr:`~SSLContext.check_hostname` by - default. + Auto-negotiate the highest protocol version that both the client and + server support, and configure the context client-side connections. The + protocol enables :data:`CERT_REQUIRED` and + :attr:`~SSLContext.check_hostname` by default. .. versionadded:: 3.6 .. data:: PROTOCOL_TLS_SERVER - Auto-negotiate the highest protocol version like :data:`PROTOCOL_TLS`, - but only support server-side :class:`SSLSocket` connections. + Auto-negotiate the highest protocol version that both the client and + server support, and configure the context server-side connections. .. versionadded:: 3.6 diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index df9806a211833..249eb733a88bf 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1214,18 +1214,11 @@ The ssl module has preliminary support for OpenSSL 3.0.0 and new option :issue:`43789`, and :issue:`43811`.) Deprecated function and use of deprecated constants now result in -a :exc:`DeprecationWarning`. The following features have been deprecated -since Python 3.6, Python 3.7, or OpenSSL 1.1.0: -:data:`~ssl.OP_NO_SSLv2`, :data:`~ssl.OP_NO_SSLv3`, :data:`~ssl.OP_NO_TLSv1`, -:data:`~ssl.OP_NO_TLSv1_1`, :data:`~ssl.OP_NO_TLSv1_2`, -:data:`~ssl.OP_NO_TLSv1_3`, :data:`~ssl.PROTOCOL_SSLv2`, -:data:`~ssl.PROTOCOL_SSLv3`, :data:`~ssl.PROTOCOL_SSLv23`, -:data:`~ssl.PROTOCOL_TLSv1`, :data:`~ssl.PROTOCOL_TLSv1_1`, -:data:`~ssl.PROTOCOL_TLSv1_2`, :data:`~ssl.PROTOCOL_TLS`, -:func:`~ssl.wrap_socket`, :func:`~ssl.match_hostname`, -:func:`~ssl.RAND_pseudo_bytes`, :func:`~ssl.RAND_egd`, -:meth:`ssl.SSLSocket.selected_npn_protocol`, -:meth:`ssl.SSLContext.set_npn_protocols`. +a :exc:`DeprecationWarning`. :attr:`ssl.SSLContext.options` has +:data:`~ssl.OP_NO_SSLv2` and :data:`~ssl.OP_NO_SSLv3` set by default and +therefore cannot warn about setting the flag again. The +:ref:`deprecation section ` has a list of deprecated +features. (Contributed by Christian Heimes in :issue:`43880`.) The ssl module now has more secure default settings. Ciphers without forward @@ -1441,6 +1434,8 @@ Optimizations readers or writers, just like its equivalent classes in :mod:`gzip` and :mod:`lzma` have always been. (Contributed by Inada Naoki in :issue:`43785`). +.. _whatsnew310-deprecated: + Deprecated ========== @@ -1609,6 +1604,30 @@ Deprecated * ``cgi.log()`` is deprecated and slated for removal in Python 3.12. (Contributed by Inada Naoki in :issue:`41139`.) +* The following :mod:`ssl` features have been deprecated since Python 3.6, + Python 3.7, or OpenSSL 1.1.0 and will be removed in 3.11: + + * :data:`~ssl.OP_NO_SSLv2`, :data:`~ssl.OP_NO_SSLv3`, :data:`~ssl.OP_NO_TLSv1`, + :data:`~ssl.OP_NO_TLSv1_1`, :data:`~ssl.OP_NO_TLSv1_2`, and + :data:`~ssl.OP_NO_TLSv1_3` are replaced by + :attr:`sslSSLContext.minimum_version` and + :attr:`sslSSLContext.maximum_version`. + + * :data:`~ssl.PROTOCOL_SSLv2`, :data:`~ssl.PROTOCOL_SSLv3`, + :data:`~ssl.PROTOCOL_SSLv23`, :data:`~ssl.PROTOCOL_TLSv1`, + :data:`~ssl.PROTOCOL_TLSv1_1`, :data:`~ssl.PROTOCOL_TLSv1_2`, and + :data:`~ssl.PROTOCOL_TLS` are deprecated in favor of + :data:`~ssl.PROTOCOL_TLS_CLIENT` and :data:`~ssl.PROTOCOL_TLS_SERVER` + + * :func:`~ssl.wrap_socket` is replaced by :meth:`ssl.SSLContext.wrap_socket` + + * :func:`~ssl.match_hostname` + + * :func:`~ssl.RAND_pseudo_bytes`, :func:`~ssl.RAND_egd` + + * NPN features like :meth:`ssl.SSLSocket.selected_npn_protocol` and + :meth:`ssl.SSLContext.set_npn_protocols` are replaced by ALPN. + .. _whatsnew310-removed: Removed diff --git a/Lib/ssl.py b/Lib/ssl.py index aeb2958da24be..e667e9658d511 100644 --- a/Lib/ssl.py +++ b/Lib/ssl.py @@ -94,7 +94,7 @@ import os from collections import namedtuple from enum import Enum as _Enum, IntEnum as _IntEnum, IntFlag as _IntFlag -from enum import _simple_enum, _test_simple_enum +from enum import _simple_enum import _ssl # if we can't import it, let the error propagate @@ -387,7 +387,7 @@ def match_hostname(cert, hostname): returns nothing. """ warnings.warn( - "ssl module: match_hostname() is deprecated", + "ssl.match_hostname() is deprecated", category=DeprecationWarning, stacklevel=2 ) @@ -492,8 +492,7 @@ class SSLContext(_SSLContext): def __new__(cls, protocol=None, *args, **kwargs): if protocol is None: warnings.warn( - "ssl module: " - "SSLContext() without protocol argument is deprecated.", + "ssl.SSLContext() without protocol argument is deprecated.", category=DeprecationWarning, stacklevel=2 ) @@ -536,7 +535,11 @@ def wrap_bio(self, incoming, outgoing, server_side=False, ) def set_npn_protocols(self, npn_protocols): - warnings.warn("NPN is deprecated, use ALPN instead", stacklevel=2) + warnings.warn( + "ssl NPN is deprecated, use ALPN instead", + DeprecationWarning, + stacklevel=2 + ) protos = bytearray() for protocol in npn_protocols: b = bytes(protocol, 'ascii') @@ -940,7 +943,9 @@ def selected_npn_protocol(self): if a next protocol was not negotiated or if NPN is not supported by one of the peers.""" warnings.warn( - "ssl module: NPN is deprecated, use ALPN instead", stacklevel=2 + "ssl NPN is deprecated, use ALPN instead", + DeprecationWarning, + stacklevel=2 ) def selected_alpn_protocol(self): @@ -1157,7 +1162,9 @@ def getpeercert(self, binary_form=False): def selected_npn_protocol(self): self._checkClosed() warnings.warn( - "ssl module: NPN is deprecated, use ALPN instead", stacklevel=2 + "ssl NPN is deprecated, use ALPN instead", + DeprecationWarning, + stacklevel=2 ) return None @@ -1419,7 +1426,7 @@ def wrap_socket(sock, keyfile=None, certfile=None, suppress_ragged_eofs=True, ciphers=None): warnings.warn( - "ssl module: wrap_socket is deprecated, use SSLContext.wrap_socket()", + "ssl.wrap_socket() is deprecated, use SSLContext.wrap_socket()", category=DeprecationWarning, stacklevel=2 ) diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index fdf5f19d8d4c5..31bc199e930a6 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -1750,7 +1750,7 @@ class MySSLObject(ssl.SSLObject): with ctx.wrap_socket(socket.socket(), server_side=True) as sock: self.assertIsInstance(sock, MySSLSocket) - obj = ctx.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO()) + obj = ctx.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO(), server_side=True) self.assertIsInstance(obj, MySSLObject) def test_num_tickest(self): @@ -2884,24 +2884,29 @@ def test_echo(self): server_context=client_context, chatty=True, connectionchatty=True, sni_name=hostname) - self.assertIn('called a function you should not call', - str(e.exception)) + self.assertIn( + 'Cannot create a client socket with a PROTOCOL_TLS_SERVER context', + str(e.exception) + ) with self.subTest(client=ssl.PROTOCOL_TLS_SERVER, server=ssl.PROTOCOL_TLS_SERVER): with self.assertRaises(ssl.SSLError) as e: server_params_test(client_context=server_context, server_context=server_context, chatty=True, connectionchatty=True) - self.assertIn('called a function you should not call', - str(e.exception)) + self.assertIn( + 'Cannot create a client socket with a PROTOCOL_TLS_SERVER context', + str(e.exception) + ) with self.subTest(client=ssl.PROTOCOL_TLS_CLIENT, server=ssl.PROTOCOL_TLS_CLIENT): with self.assertRaises(ssl.SSLError) as e: server_params_test(client_context=server_context, server_context=client_context, chatty=True, connectionchatty=True) - self.assertIn('called a function you should not call', - str(e.exception)) + self.assertIn( + 'Cannot create a client socket with a PROTOCOL_TLS_SERVER context', + str(e.exception)) def test_getpeercert(self): if support.verbose: diff --git a/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst b/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst new file mode 100644 index 0000000000000..0e6aef3c90e6f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst @@ -0,0 +1,2 @@ +Improve :mod:`ssl` module's deprecation messages, error reporting, and +documentation for deprecations. diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 73544bb12d1d8..8daf04dd08bbb 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -697,10 +697,9 @@ _setSSLError (_sslmodulestate *state, const char *errstr, int errcode, const cha } static int -_ssl_deprecated(const char* name, int stacklevel) { - return PyErr_WarnFormat( - PyExc_DeprecationWarning, stacklevel, - "ssl module: %s is deprecated", name +_ssl_deprecated(const char* msg, int stacklevel) { + return PyErr_WarnEx( + PyExc_DeprecationWarning, msg, stacklevel ); } @@ -788,6 +787,21 @@ newPySSLSocket(PySSLContext *sslctx, PySocketSockObject *sock, SSL_CTX *ctx = sslctx->ctx; _PySSLError err = { 0 }; + if ((socket_type == PY_SSL_SERVER) && + (sslctx->protocol == PY_SSL_VERSION_TLS_CLIENT)) { + _setSSLError(get_state_ctx(sslctx), + "Cannot create a server socket with a " + "PROTOCOL_TLS_CLIENT context", 0, __FILE__, __LINE__); + return NULL; + } + if ((socket_type == PY_SSL_CLIENT) && + (sslctx->protocol == PY_SSL_VERSION_TLS_SERVER)) { + _setSSLError(get_state_ctx(sslctx), + "Cannot create a client socket with a " + "PROTOCOL_TLS_SERVER context", 0, __FILE__, __LINE__); + return NULL; + } + self = PyObject_GC_New(PySSLSocket, get_state_ctx(sslctx)->PySSLSocket_Type); if (self == NULL) @@ -2980,7 +2994,7 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version) switch(proto_version) { #if defined(SSL3_VERSION) && !defined(OPENSSL_NO_SSL3) case PY_SSL_VERSION_SSL3: - PY_SSL_DEPRECATED("PROTOCOL_SSLv3", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_SSLv3 is deprecated", 2, NULL); method = SSLv3_method(); break; #endif @@ -2988,7 +3002,7 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version) !defined(OPENSSL_NO_TLS1) && \ !defined(OPENSSL_NO_TLS1_METHOD)) case PY_SSL_VERSION_TLS1: - PY_SSL_DEPRECATED("PROTOCOL_TLSv1", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_TLSv1 is deprecated", 2, NULL); method = TLSv1_method(); break; #endif @@ -2996,7 +3010,7 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version) !defined(OPENSSL_NO_TLS1_1) && \ !defined(OPENSSL_NO_TLS1_1_METHOD)) case PY_SSL_VERSION_TLS1_1: - PY_SSL_DEPRECATED("PROTOCOL_TLSv1_1", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_TLSv1_1 is deprecated", 2, NULL); method = TLSv1_1_method(); break; #endif @@ -3004,12 +3018,12 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version) !defined(OPENSSL_NO_TLS1_2) && \ !defined(OPENSSL_NO_TLS1_2_METHOD)) case PY_SSL_VERSION_TLS1_2: - PY_SSL_DEPRECATED("PROTOCOL_TLSv1_2", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_TLSv1_2 is deprecated", 2, NULL); method = TLSv1_2_method(); break; #endif case PY_SSL_VERSION_TLS: - PY_SSL_DEPRECATED("PROTOCOL_TLS", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_TLS is deprecated", 2, NULL); method = TLS_method(); break; case PY_SSL_VERSION_TLS_CLIENT: @@ -3433,13 +3447,13 @@ set_min_max_proto_version(PySSLContext *self, PyObject *arg, int what) /* check for deprecations and supported values */ switch(v) { case PY_PROTO_SSLv3: - PY_SSL_DEPRECATED("TLSVersion.SSLv3", 2, -1); + PY_SSL_DEPRECATED("ssl.TLSVersion.SSLv3 is deprecated", 2, -1); break; case PY_PROTO_TLSv1: - PY_SSL_DEPRECATED("TLSVersion.TLSv1", 2, -1); + PY_SSL_DEPRECATED("ssl.TLSVersion.TLSv1 is deprecated", 2, -1); break; case PY_PROTO_TLSv1_1: - PY_SSL_DEPRECATED("TLSVersion.TLSv1_1", 2, -1); + PY_SSL_DEPRECATED("ssl.TLSVersion.TLSv1_1 is deprecated", 2, -1); break; case PY_PROTO_MINIMUM_SUPPORTED: case PY_PROTO_MAXIMUM_SUPPORTED: @@ -3583,7 +3597,7 @@ set_options(PySSLContext *self, PyObject *arg, void *c) set = ~opts & new_opts; if ((set & opt_no) != 0) { - if (_ssl_deprecated("Setting OP_NO_SSL* or SSL_NO_TLS* options is " + if (_ssl_deprecated("ssl.OP_NO_SSL*/ssl.SSL_NO_TLS* options are " "deprecated", 2) < 0) { return -1; } @@ -5146,7 +5160,7 @@ static PyObject * _ssl_RAND_pseudo_bytes_impl(PyObject *module, int n) /*[clinic end generated code: output=b1509e937000e52d input=58312bd53f9bbdd0]*/ { - PY_SSL_DEPRECATED("RAND_pseudo_bytes", 1, NULL); + PY_SSL_DEPRECATED("ssl.RAND_pseudo_bytes() is deprecated", 1, NULL); return PySSL_RAND(module, n, 1); } From webhook-mailer at python.org Fri Jun 11 03:36:27 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 11 Jun 2021 07:36:27 -0000 Subject: [Python-checkins] bpo-44362: ssl: improve deprecation warnings and docs (GH-26646) Message-ID: https://github.com/python/cpython/commit/d7930fb720b5e9db2076b116dffcd52b6ca71438 commit: d7930fb720b5e9db2076b116dffcd52b6ca71438 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-11T00:36:17-07:00 summary: bpo-44362: ssl: improve deprecation warnings and docs (GH-26646) Signed-off-by: Christian Heimes (cherry picked from commit e26014f1c47d26d6097ff7a0f25384bfbde714a9) Co-authored-by: Christian Heimes files: A Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst M Doc/library/ssl.rst M Doc/whatsnew/3.10.rst M Lib/ssl.py M Lib/test/test_ssl.py M Modules/_ssl.c diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst index afa3d87f5767a..4902d34888ebc 100644 --- a/Doc/library/ssl.rst +++ b/Doc/library/ssl.rst @@ -681,19 +681,23 @@ Constants .. deprecated:: 3.10 + TLS clients and servers require different default settings for secure + communication. The generic TLS protocol constant is deprecated in + favor of :data:`PROTOCOL_TLS_CLIENT` and :data:`PROTOCOL_TLS_SERVER`. + .. data:: PROTOCOL_TLS_CLIENT - Auto-negotiate the highest protocol version like :data:`PROTOCOL_TLS`, - but only support client-side :class:`SSLSocket` connections. The protocol - enables :data:`CERT_REQUIRED` and :attr:`~SSLContext.check_hostname` by - default. + Auto-negotiate the highest protocol version that both the client and + server support, and configure the context client-side connections. The + protocol enables :data:`CERT_REQUIRED` and + :attr:`~SSLContext.check_hostname` by default. .. versionadded:: 3.6 .. data:: PROTOCOL_TLS_SERVER - Auto-negotiate the highest protocol version like :data:`PROTOCOL_TLS`, - but only support server-side :class:`SSLSocket` connections. + Auto-negotiate the highest protocol version that both the client and + server support, and configure the context server-side connections. .. versionadded:: 3.6 diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 5e29f932ba1ff..530ffce59b15b 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1214,18 +1214,11 @@ The ssl module has preliminary support for OpenSSL 3.0.0 and new option :issue:`43789`, and :issue:`43811`.) Deprecated function and use of deprecated constants now result in -a :exc:`DeprecationWarning`. The following features have been deprecated -since Python 3.6, Python 3.7, or OpenSSL 1.1.0: -:data:`~ssl.OP_NO_SSLv2`, :data:`~ssl.OP_NO_SSLv3`, :data:`~ssl.OP_NO_TLSv1`, -:data:`~ssl.OP_NO_TLSv1_1`, :data:`~ssl.OP_NO_TLSv1_2`, -:data:`~ssl.OP_NO_TLSv1_3`, :data:`~ssl.PROTOCOL_SSLv2`, -:data:`~ssl.PROTOCOL_SSLv3`, :data:`~ssl.PROTOCOL_SSLv23`, -:data:`~ssl.PROTOCOL_TLSv1`, :data:`~ssl.PROTOCOL_TLSv1_1`, -:data:`~ssl.PROTOCOL_TLSv1_2`, :data:`~ssl.PROTOCOL_TLS`, -:func:`~ssl.wrap_socket`, :func:`~ssl.match_hostname`, -:func:`~ssl.RAND_pseudo_bytes`, :func:`~ssl.RAND_egd`, -:meth:`ssl.SSLSocket.selected_npn_protocol`, -:meth:`ssl.SSLContext.set_npn_protocols`. +a :exc:`DeprecationWarning`. :attr:`ssl.SSLContext.options` has +:data:`~ssl.OP_NO_SSLv2` and :data:`~ssl.OP_NO_SSLv3` set by default and +therefore cannot warn about setting the flag again. The +:ref:`deprecation section ` has a list of deprecated +features. (Contributed by Christian Heimes in :issue:`43880`.) The ssl module now has more secure default settings. Ciphers without forward @@ -1448,6 +1441,8 @@ Optimizations readers or writers, just like its equivalent classes in :mod:`gzip` and :mod:`lzma` have always been. (Contributed by Inada Naoki in :issue:`43785`). +.. _whatsnew310-deprecated: + Deprecated ========== @@ -1616,6 +1611,30 @@ Deprecated * ``cgi.log()`` is deprecated and slated for removal in Python 3.12. (Contributed by Inada Naoki in :issue:`41139`.) +* The following :mod:`ssl` features have been deprecated since Python 3.6, + Python 3.7, or OpenSSL 1.1.0 and will be removed in 3.11: + + * :data:`~ssl.OP_NO_SSLv2`, :data:`~ssl.OP_NO_SSLv3`, :data:`~ssl.OP_NO_TLSv1`, + :data:`~ssl.OP_NO_TLSv1_1`, :data:`~ssl.OP_NO_TLSv1_2`, and + :data:`~ssl.OP_NO_TLSv1_3` are replaced by + :attr:`sslSSLContext.minimum_version` and + :attr:`sslSSLContext.maximum_version`. + + * :data:`~ssl.PROTOCOL_SSLv2`, :data:`~ssl.PROTOCOL_SSLv3`, + :data:`~ssl.PROTOCOL_SSLv23`, :data:`~ssl.PROTOCOL_TLSv1`, + :data:`~ssl.PROTOCOL_TLSv1_1`, :data:`~ssl.PROTOCOL_TLSv1_2`, and + :data:`~ssl.PROTOCOL_TLS` are deprecated in favor of + :data:`~ssl.PROTOCOL_TLS_CLIENT` and :data:`~ssl.PROTOCOL_TLS_SERVER` + + * :func:`~ssl.wrap_socket` is replaced by :meth:`ssl.SSLContext.wrap_socket` + + * :func:`~ssl.match_hostname` + + * :func:`~ssl.RAND_pseudo_bytes`, :func:`~ssl.RAND_egd` + + * NPN features like :meth:`ssl.SSLSocket.selected_npn_protocol` and + :meth:`ssl.SSLContext.set_npn_protocols` are replaced by ALPN. + .. _whatsnew310-removed: Removed diff --git a/Lib/ssl.py b/Lib/ssl.py index 2b131de04306a..a16ebd74a1b16 100644 --- a/Lib/ssl.py +++ b/Lib/ssl.py @@ -94,7 +94,7 @@ import os from collections import namedtuple from enum import Enum as _Enum, IntEnum as _IntEnum, IntFlag as _IntFlag -from enum import _simple_enum, _test_simple_enum +from enum import _simple_enum import _ssl # if we can't import it, let the error propagate @@ -387,7 +387,7 @@ def match_hostname(cert, hostname): returns nothing. """ warnings.warn( - "ssl module: match_hostname() is deprecated", + "ssl.match_hostname() is deprecated", category=DeprecationWarning, stacklevel=2 ) @@ -492,8 +492,7 @@ class SSLContext(_SSLContext): def __new__(cls, protocol=None, *args, **kwargs): if protocol is None: warnings.warn( - "ssl module: " - "SSLContext() without protocol argument is deprecated.", + "ssl.SSLContext() without protocol argument is deprecated.", category=DeprecationWarning, stacklevel=2 ) @@ -536,7 +535,11 @@ def wrap_bio(self, incoming, outgoing, server_side=False, ) def set_npn_protocols(self, npn_protocols): - warnings.warn("NPN is deprecated, use ALPN instead", stacklevel=2) + warnings.warn( + "ssl NPN is deprecated, use ALPN instead", + DeprecationWarning, + stacklevel=2 + ) protos = bytearray() for protocol in npn_protocols: b = bytes(protocol, 'ascii') @@ -940,7 +943,9 @@ def selected_npn_protocol(self): if a next protocol was not negotiated or if NPN is not supported by one of the peers.""" warnings.warn( - "ssl module: NPN is deprecated, use ALPN instead", stacklevel=2 + "ssl NPN is deprecated, use ALPN instead", + DeprecationWarning, + stacklevel=2 ) def selected_alpn_protocol(self): @@ -1157,7 +1162,9 @@ def getpeercert(self, binary_form=False): def selected_npn_protocol(self): self._checkClosed() warnings.warn( - "ssl module: NPN is deprecated, use ALPN instead", stacklevel=2 + "ssl NPN is deprecated, use ALPN instead", + DeprecationWarning, + stacklevel=2 ) return None @@ -1419,7 +1426,7 @@ def wrap_socket(sock, keyfile=None, certfile=None, suppress_ragged_eofs=True, ciphers=None): warnings.warn( - "ssl module: wrap_socket is deprecated, use SSLContext.wrap_socket()", + "ssl.wrap_socket() is deprecated, use SSLContext.wrap_socket()", category=DeprecationWarning, stacklevel=2 ) diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 9bd8e2264c152..5dc27df04dc1d 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -1754,7 +1754,7 @@ class MySSLObject(ssl.SSLObject): with ctx.wrap_socket(socket.socket(), server_side=True) as sock: self.assertIsInstance(sock, MySSLSocket) - obj = ctx.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO()) + obj = ctx.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO(), server_side=True) self.assertIsInstance(obj, MySSLObject) def test_num_tickest(self): @@ -2888,24 +2888,29 @@ def test_echo(self): server_context=client_context, chatty=True, connectionchatty=True, sni_name=hostname) - self.assertIn('called a function you should not call', - str(e.exception)) + self.assertIn( + 'Cannot create a client socket with a PROTOCOL_TLS_SERVER context', + str(e.exception) + ) with self.subTest(client=ssl.PROTOCOL_TLS_SERVER, server=ssl.PROTOCOL_TLS_SERVER): with self.assertRaises(ssl.SSLError) as e: server_params_test(client_context=server_context, server_context=server_context, chatty=True, connectionchatty=True) - self.assertIn('called a function you should not call', - str(e.exception)) + self.assertIn( + 'Cannot create a client socket with a PROTOCOL_TLS_SERVER context', + str(e.exception) + ) with self.subTest(client=ssl.PROTOCOL_TLS_CLIENT, server=ssl.PROTOCOL_TLS_CLIENT): with self.assertRaises(ssl.SSLError) as e: server_params_test(client_context=server_context, server_context=client_context, chatty=True, connectionchatty=True) - self.assertIn('called a function you should not call', - str(e.exception)) + self.assertIn( + 'Cannot create a client socket with a PROTOCOL_TLS_SERVER context', + str(e.exception)) def test_getpeercert(self): if support.verbose: diff --git a/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst b/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst new file mode 100644 index 0000000000000..0e6aef3c90e6f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst @@ -0,0 +1,2 @@ +Improve :mod:`ssl` module's deprecation messages, error reporting, and +documentation for deprecations. diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 73544bb12d1d8..8daf04dd08bbb 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -697,10 +697,9 @@ _setSSLError (_sslmodulestate *state, const char *errstr, int errcode, const cha } static int -_ssl_deprecated(const char* name, int stacklevel) { - return PyErr_WarnFormat( - PyExc_DeprecationWarning, stacklevel, - "ssl module: %s is deprecated", name +_ssl_deprecated(const char* msg, int stacklevel) { + return PyErr_WarnEx( + PyExc_DeprecationWarning, msg, stacklevel ); } @@ -788,6 +787,21 @@ newPySSLSocket(PySSLContext *sslctx, PySocketSockObject *sock, SSL_CTX *ctx = sslctx->ctx; _PySSLError err = { 0 }; + if ((socket_type == PY_SSL_SERVER) && + (sslctx->protocol == PY_SSL_VERSION_TLS_CLIENT)) { + _setSSLError(get_state_ctx(sslctx), + "Cannot create a server socket with a " + "PROTOCOL_TLS_CLIENT context", 0, __FILE__, __LINE__); + return NULL; + } + if ((socket_type == PY_SSL_CLIENT) && + (sslctx->protocol == PY_SSL_VERSION_TLS_SERVER)) { + _setSSLError(get_state_ctx(sslctx), + "Cannot create a client socket with a " + "PROTOCOL_TLS_SERVER context", 0, __FILE__, __LINE__); + return NULL; + } + self = PyObject_GC_New(PySSLSocket, get_state_ctx(sslctx)->PySSLSocket_Type); if (self == NULL) @@ -2980,7 +2994,7 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version) switch(proto_version) { #if defined(SSL3_VERSION) && !defined(OPENSSL_NO_SSL3) case PY_SSL_VERSION_SSL3: - PY_SSL_DEPRECATED("PROTOCOL_SSLv3", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_SSLv3 is deprecated", 2, NULL); method = SSLv3_method(); break; #endif @@ -2988,7 +3002,7 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version) !defined(OPENSSL_NO_TLS1) && \ !defined(OPENSSL_NO_TLS1_METHOD)) case PY_SSL_VERSION_TLS1: - PY_SSL_DEPRECATED("PROTOCOL_TLSv1", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_TLSv1 is deprecated", 2, NULL); method = TLSv1_method(); break; #endif @@ -2996,7 +3010,7 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version) !defined(OPENSSL_NO_TLS1_1) && \ !defined(OPENSSL_NO_TLS1_1_METHOD)) case PY_SSL_VERSION_TLS1_1: - PY_SSL_DEPRECATED("PROTOCOL_TLSv1_1", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_TLSv1_1 is deprecated", 2, NULL); method = TLSv1_1_method(); break; #endif @@ -3004,12 +3018,12 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version) !defined(OPENSSL_NO_TLS1_2) && \ !defined(OPENSSL_NO_TLS1_2_METHOD)) case PY_SSL_VERSION_TLS1_2: - PY_SSL_DEPRECATED("PROTOCOL_TLSv1_2", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_TLSv1_2 is deprecated", 2, NULL); method = TLSv1_2_method(); break; #endif case PY_SSL_VERSION_TLS: - PY_SSL_DEPRECATED("PROTOCOL_TLS", 2, NULL); + PY_SSL_DEPRECATED("ssl.PROTOCOL_TLS is deprecated", 2, NULL); method = TLS_method(); break; case PY_SSL_VERSION_TLS_CLIENT: @@ -3433,13 +3447,13 @@ set_min_max_proto_version(PySSLContext *self, PyObject *arg, int what) /* check for deprecations and supported values */ switch(v) { case PY_PROTO_SSLv3: - PY_SSL_DEPRECATED("TLSVersion.SSLv3", 2, -1); + PY_SSL_DEPRECATED("ssl.TLSVersion.SSLv3 is deprecated", 2, -1); break; case PY_PROTO_TLSv1: - PY_SSL_DEPRECATED("TLSVersion.TLSv1", 2, -1); + PY_SSL_DEPRECATED("ssl.TLSVersion.TLSv1 is deprecated", 2, -1); break; case PY_PROTO_TLSv1_1: - PY_SSL_DEPRECATED("TLSVersion.TLSv1_1", 2, -1); + PY_SSL_DEPRECATED("ssl.TLSVersion.TLSv1_1 is deprecated", 2, -1); break; case PY_PROTO_MINIMUM_SUPPORTED: case PY_PROTO_MAXIMUM_SUPPORTED: @@ -3583,7 +3597,7 @@ set_options(PySSLContext *self, PyObject *arg, void *c) set = ~opts & new_opts; if ((set & opt_no) != 0) { - if (_ssl_deprecated("Setting OP_NO_SSL* or SSL_NO_TLS* options is " + if (_ssl_deprecated("ssl.OP_NO_SSL*/ssl.SSL_NO_TLS* options are " "deprecated", 2) < 0) { return -1; } @@ -5146,7 +5160,7 @@ static PyObject * _ssl_RAND_pseudo_bytes_impl(PyObject *module, int n) /*[clinic end generated code: output=b1509e937000e52d input=58312bd53f9bbdd0]*/ { - PY_SSL_DEPRECATED("RAND_pseudo_bytes", 1, NULL); + PY_SSL_DEPRECATED("ssl.RAND_pseudo_bytes() is deprecated", 1, NULL); return PySSL_RAND(module, n, 1); } From webhook-mailer at python.org Fri Jun 11 04:25:30 2021 From: webhook-mailer at python.org (ethanfurman) Date: Fri, 11 Jun 2021 08:25:30 -0000 Subject: [Python-checkins] bpo-44342: [Enum] fix data type search (GH-26667) Message-ID: https://github.com/python/cpython/commit/3a7cccfd6cd3693e1a2ab65ee05d7f45f8501dfa commit: 3a7cccfd6cd3693e1a2ab65ee05d7f45f8501dfa branch: main author: Ethan Furman committer: ethanfurman date: 2021-06-11T01:25:14-07:00 summary: bpo-44342: [Enum] fix data type search (GH-26667) In an inheritance chain of int -> my_int -> final_int the data type is now final_int (not my_int) files: M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 5263e510d5936..5548130be34d4 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -818,7 +818,7 @@ def _find_data_type(bases): data_types.add(candidate or base) break else: - candidate = base + candidate = candidate or base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) elif data_types: diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 9a7882b8a9c6f..22a829d102041 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -658,6 +658,14 @@ class MyEnum(HexInt, enum.Enum): def __repr__(self): return '<%s.%s: %r>' % (self.__class__.__name__, self._name_, self._value_) self.assertEqual(repr(MyEnum.A), '') + # + class SillyInt(HexInt): + pass + class MyOtherEnum(SillyInt, enum.Enum): + D = 4 + E = 5 + F = 6 + self.assertIs(MyOtherEnum._member_type_, SillyInt) def test_too_many_data_types(self): with self.assertRaisesRegex(TypeError, 'too many data types'): From webhook-mailer at python.org Fri Jun 11 04:26:39 2021 From: webhook-mailer at python.org (ethanfurman) Date: Fri, 11 Jun 2021 08:26:39 -0000 Subject: [Python-checkins] [Enum] improve pickle support (#26666) Message-ID: https://github.com/python/cpython/commit/e9726314df44a6e63ed653b95514646c6ff607b6 commit: e9726314df44a6e63ed653b95514646c6ff607b6 branch: 3.9 author: Ethan Furman committer: ethanfurman date: 2021-06-11T01:26:32-07:00 summary: [Enum] improve pickle support (#26666) search all bases for a __reduce__ style method; if a __new__ method is found first the enum will be made unpicklable files: A Misc/NEWS.d/next/Library/2021-06-10-21-04-14.bpo-44342.nNH5jA.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index f09cb8473dfed..ee4c4c04f98bd 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -242,8 +242,32 @@ def __new__(metacls, cls, bases, classdict, **kwds): methods = ('__getnewargs_ex__', '__getnewargs__', '__reduce_ex__', '__reduce__') if not any(m in member_type.__dict__ for m in methods): - _make_class_unpicklable(enum_class) - + if '__new__' in classdict: + # too late, sabotage + _make_class_unpicklable(enum_class) + else: + # final attempt to verify that pickling would work: + # travel mro until __new__ is found, checking for + # __reduce__ and friends along the way -- if any of them + # are found before/when __new__ is found, pickling should + # work + sabotage = None + for chain in bases: + for base in chain.__mro__: + if base is object: + continue + elif any(m in base.__dict__ for m in methods): + # found one, we're good + sabotage = False + break + elif '__new__' in base.__dict__: + # not good + sabotage = True + break + if sabotage is not None: + break + if sabotage: + _make_class_unpicklable(enum_class) # instantiate them, checking for duplicates as we go # we instantiate first instead of checking for duplicates first in case # a custom __new__ is doing something funky with the values -- such as @@ -572,7 +596,7 @@ def _find_data_type(bases): data_types.add(candidate or base) break else: - candidate = base + candidate = candidate or base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) elif data_types: diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index e8715ba34552b..5e73044a3910f 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -594,13 +594,49 @@ class Test2Enum(MyStrEnum, MyMethodEnum): def test_inherited_data_type(self): class HexInt(int): + __qualname__ = 'HexInt' def __repr__(self): return hex(self) class MyEnum(HexInt, enum.Enum): + __qualname__ = 'MyEnum' A = 1 B = 2 C = 3 self.assertEqual(repr(MyEnum.A), '') + globals()['HexInt'] = HexInt + globals()['MyEnum'] = MyEnum + test_pickle_dump_load(self.assertIs, MyEnum.A) + test_pickle_dump_load(self.assertIs, MyEnum) + # + class SillyInt(HexInt): + __qualname__ = 'SillyInt' + pass + class MyOtherEnum(SillyInt, enum.Enum): + __qualname__ = 'MyOtherEnum' + D = 4 + E = 5 + F = 6 + self.assertIs(MyOtherEnum._member_type_, SillyInt) + globals()['SillyInt'] = SillyInt + globals()['MyOtherEnum'] = MyOtherEnum + test_pickle_dump_load(self.assertIs, MyOtherEnum.E) + test_pickle_dump_load(self.assertIs, MyOtherEnum) + # + class BrokenInt(int): + __qualname__ = 'BrokenInt' + def __new__(cls, value): + return int.__new__(cls, value) + class MyBrokenEnum(BrokenInt, Enum): + __qualname__ = 'MyBrokenEnum' + G = 7 + H = 8 + I = 9 + self.assertIs(MyBrokenEnum._member_type_, BrokenInt) + self.assertIs(MyBrokenEnum(7), MyBrokenEnum.G) + globals()['BrokenInt'] = BrokenInt + globals()['MyBrokenEnum'] = MyBrokenEnum + test_pickle_exception(self.assertRaises, TypeError, MyBrokenEnum.G) + test_pickle_exception(self.assertRaises, PicklingError, MyBrokenEnum) def test_too_many_data_types(self): with self.assertRaisesRegex(TypeError, 'too many data types'): diff --git a/Misc/NEWS.d/next/Library/2021-06-10-21-04-14.bpo-44342.nNH5jA.rst b/Misc/NEWS.d/next/Library/2021-06-10-21-04-14.bpo-44342.nNH5jA.rst new file mode 100644 index 0000000000000..9cd4685a13e6b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-21-04-14.bpo-44342.nNH5jA.rst @@ -0,0 +1,2 @@ +[Enum] Be more robust in searching for pickle support before making an enum +class unpicklable. From webhook-mailer at python.org Fri Jun 11 04:35:45 2021 From: webhook-mailer at python.org (vstinner) Date: Fri, 11 Jun 2021 08:35:45 -0000 Subject: [Python-checkins] bpo-44378: Fix a compiler warning in Py_IS_TYPE() (GH-26644) Message-ID: https://github.com/python/cpython/commit/304dfec8d3c0763734ea8b5fa2af1d9e1ce69ffa commit: 304dfec8d3c0763734ea8b5fa2af1d9e1ce69ffa branch: main author: Victor Stinner committer: vstinner date: 2021-06-11T10:35:36+02:00 summary: bpo-44378: Fix a compiler warning in Py_IS_TYPE() (GH-26644) Py_IS_TYPE() no longer uses Py_TYPE() to avoid a compiler warning: no longer cast "const PyObject*" to "PyObject*". files: A Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst M Include/object.h diff --git a/Include/object.h b/Include/object.h index 4c069998574b4..109f535249cda 100644 --- a/Include/object.h +++ b/Include/object.h @@ -141,7 +141,9 @@ static inline Py_ssize_t _Py_REFCNT(const PyObject *ob) { static inline int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { - return Py_TYPE(ob) == type; + // bpo-44378: Don't use Py_TYPE() since Py_TYPE() requires a non-const + // object. + return ob->ob_type == type; } #define Py_IS_TYPE(ob, type) _Py_IS_TYPE(_PyObject_CAST_CONST(ob), type) diff --git a/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst b/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst new file mode 100644 index 0000000000000..b620b499f2351 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst @@ -0,0 +1,3 @@ +:c:func:`Py_IS_TYPE` no longer uses :c:func:`Py_TYPE` to avoid a compiler +warning: no longer cast ``const PyObject*`` to ``PyObject*``. +Patch by Victor Stinner. From webhook-mailer at python.org Fri Jun 11 04:57:38 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 11 Jun 2021 08:57:38 -0000 Subject: [Python-checkins] bpo-44378: Fix a compiler warning in Py_IS_TYPE() (GH-26644) Message-ID: https://github.com/python/cpython/commit/e6d28a1a6ad22125fc3a6df2d611d79aa8d6f67e commit: e6d28a1a6ad22125fc3a6df2d611d79aa8d6f67e branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-11T01:57:16-07:00 summary: bpo-44378: Fix a compiler warning in Py_IS_TYPE() (GH-26644) Py_IS_TYPE() no longer uses Py_TYPE() to avoid a compiler warning: no longer cast "const PyObject*" to "PyObject*". (cherry picked from commit 304dfec8d3c0763734ea8b5fa2af1d9e1ce69ffa) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst M Include/object.h diff --git a/Include/object.h b/Include/object.h index 4c069998574b4..109f535249cda 100644 --- a/Include/object.h +++ b/Include/object.h @@ -141,7 +141,9 @@ static inline Py_ssize_t _Py_REFCNT(const PyObject *ob) { static inline int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { - return Py_TYPE(ob) == type; + // bpo-44378: Don't use Py_TYPE() since Py_TYPE() requires a non-const + // object. + return ob->ob_type == type; } #define Py_IS_TYPE(ob, type) _Py_IS_TYPE(_PyObject_CAST_CONST(ob), type) diff --git a/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst b/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst new file mode 100644 index 0000000000000..b620b499f2351 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst @@ -0,0 +1,3 @@ +:c:func:`Py_IS_TYPE` no longer uses :c:func:`Py_TYPE` to avoid a compiler +warning: no longer cast ``const PyObject*`` to ``PyObject*``. +Patch by Victor Stinner. From webhook-mailer at python.org Fri Jun 11 05:44:53 2021 From: webhook-mailer at python.org (ethanfurman) Date: Fri, 11 Jun 2021 09:44:53 -0000 Subject: [Python-checkins] bpo-44242: [Enum] improve error messages (GH-26669) Message-ID: https://github.com/python/cpython/commit/c956734d7af83ad31f847d31d0d26df087add9a4 commit: c956734d7af83ad31f847d31d0d26df087add9a4 branch: main author: Ethan Furman committer: ethanfurman date: 2021-06-11T02:44:43-07:00 summary: bpo-44242: [Enum] improve error messages (GH-26669) files: M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 5548130be34d4..0c6d8c1eb0e54 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -1,5 +1,7 @@ import sys from types import MappingProxyType, DynamicClassAttribute +from operator import or_ as _or_ +from functools import reduce from builtins import property as _bltin_property, bin as _bltin_bin @@ -97,6 +99,9 @@ def _iter_bits_lsb(num): yield b num ^= b +def show_flag_values(value): + return list(_iter_bits_lsb(value)) + def bin(num, max_bits=None): """ Like built-in bin(), except negative values are represented in @@ -1601,14 +1606,16 @@ def __call__(self, enumeration): else: raise Exception('verify: unknown type %r' % enum_type) if missing: - raise ValueError('invalid %s %r: missing values %s' % ( + raise ValueError(('invalid %s %r: missing values %s' % ( enum_type, cls_name, ', '.join((str(m) for m in missing))) - ) + )[:256]) + # limit max length to protect against DOS attacks elif check is NAMED_FLAGS: # examine each alias and check for unnamed flags member_names = enumeration._member_names_ member_values = [m.value for m in enumeration] - missing = [] + missing_names = [] + missing_value = 0 for name, alias in enumeration._member_map_.items(): if name in member_names: # not an alias @@ -1616,16 +1623,22 @@ def __call__(self, enumeration): values = list(_iter_bits_lsb(alias.value)) missed = [v for v in values if v not in member_values] if missed: - plural = ('', 's')[len(missed) > 1] - a = ('a ', '')[len(missed) > 1] - missing.append('%r is missing %snamed flag%s for value%s %s' % ( - name, a, plural, plural, - ', '.join(str(v) for v in missed) - )) - if missing: + missing_names.append(name) + missing_value |= reduce(_or_, missed) + if missing_names: + if len(missing_names) == 1: + alias = 'alias %s is missing' % missing_names[0] + else: + alias = 'aliases %s and %s are missing' % ( + ', '.join(missing_names[:-1]), missing_names[-1] + ) + if _is_single_bit(missing_value): + value = 'value 0x%x' % missing_value + else: + value = 'combined values of 0x%x' % missing_value raise ValueError( - 'invalid Flag %r: %s' - % (cls_name, '; '.join(missing)) + 'invalid Flag %r: %s %s [use `enum.show_flag_values(value)` for details]' + % (cls_name, alias, value) ) return enumeration diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 22a829d102041..956b8347b1e1c 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2166,9 +2166,6 @@ def __init__(self, *args): self._valid = True @classmethod def _missing_(cls, value): - # encountered an unknown value! - # Luckily I'm a LenientStrEnum, so I won't crash just yet. - # You might want to add a new case though. unknown = cls._member_type_.__new__(cls, value) unknown._valid = False unknown._name_ = value.upper() @@ -3594,7 +3591,7 @@ class Bizarre(Flag): self.assertEqual(Bizarre.d.value, 6) with self.assertRaisesRegex( ValueError, - "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2", + "invalid Flag 'Bizarre': aliases b and d are missing combined values of 0x3 .use `enum.show_flag_values.value.` for details.", ): @verify(NAMED_FLAGS) class Bizarre(Flag): @@ -3602,6 +3599,7 @@ class Bizarre(Flag): c = 4 d = 6 # + self.assertEqual(enum.show_flag_values(3), [1, 2]) class Bizarre(IntFlag): b = 3 c = 4 @@ -3612,13 +3610,13 @@ class Bizarre(IntFlag): self.assertEqual(Bizarre.d.value, 6) with self.assertRaisesRegex( ValueError, - "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2", + "invalid Flag 'Bizarre': alias d is missing value 0x2 .use `enum.show_flag_values.value.` for details.", ): @verify(NAMED_FLAGS) class Bizarre(IntFlag): - b = 3 c = 4 d = 6 + self.assertEqual(enum.show_flag_values(2), [2]) def test_unique_clean(self): @verify(UNIQUE) @@ -3885,7 +3883,7 @@ class Missing: class MiscTestCase(unittest.TestCase): def test__all__(self): - support.check__all__(self, enum, not_exported={'bin'}) + support.check__all__(self, enum, not_exported={'bin', 'show_flag_values'}) # These are unordered here on purpose to ensure that declaration order From webhook-mailer at python.org Fri Jun 11 05:59:08 2021 From: webhook-mailer at python.org (ethanfurman) Date: Fri, 11 Jun 2021 09:59:08 -0000 Subject: [Python-checkins] bpo-44242: [Enum] improve error messages (GH-26669) Message-ID: https://github.com/python/cpython/commit/0a186b1ec1fd094d825f08a4eb39fa83ef57067a commit: 0a186b1ec1fd094d825f08a4eb39fa83ef57067a branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2021-06-11T02:58:57-07:00 summary: bpo-44242: [Enum] improve error messages (GH-26669) (cherry picked from commit c956734d7af83ad31f847d31d0d26df087add9a4) Co-authored-by: Ethan Furman Co-authored-by: Ethan Furman files: M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 5263e510d5936..bf3460ca0fd43 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -1,5 +1,7 @@ import sys from types import MappingProxyType, DynamicClassAttribute +from operator import or_ as _or_ +from functools import reduce from builtins import property as _bltin_property, bin as _bltin_bin @@ -97,6 +99,9 @@ def _iter_bits_lsb(num): yield b num ^= b +def show_flag_values(value): + return list(_iter_bits_lsb(value)) + def bin(num, max_bits=None): """ Like built-in bin(), except negative values are represented in @@ -1601,14 +1606,16 @@ def __call__(self, enumeration): else: raise Exception('verify: unknown type %r' % enum_type) if missing: - raise ValueError('invalid %s %r: missing values %s' % ( + raise ValueError(('invalid %s %r: missing values %s' % ( enum_type, cls_name, ', '.join((str(m) for m in missing))) - ) + )[:256]) + # limit max length to protect against DOS attacks elif check is NAMED_FLAGS: # examine each alias and check for unnamed flags member_names = enumeration._member_names_ member_values = [m.value for m in enumeration] - missing = [] + missing_names = [] + missing_value = 0 for name, alias in enumeration._member_map_.items(): if name in member_names: # not an alias @@ -1616,16 +1623,22 @@ def __call__(self, enumeration): values = list(_iter_bits_lsb(alias.value)) missed = [v for v in values if v not in member_values] if missed: - plural = ('', 's')[len(missed) > 1] - a = ('a ', '')[len(missed) > 1] - missing.append('%r is missing %snamed flag%s for value%s %s' % ( - name, a, plural, plural, - ', '.join(str(v) for v in missed) - )) - if missing: + missing_names.append(name) + missing_value |= reduce(_or_, missed) + if missing_names: + if len(missing_names) == 1: + alias = 'alias %s is missing' % missing_names[0] + else: + alias = 'aliases %s and %s are missing' % ( + ', '.join(missing_names[:-1]), missing_names[-1] + ) + if _is_single_bit(missing_value): + value = 'value 0x%x' % missing_value + else: + value = 'combined values of 0x%x' % missing_value raise ValueError( - 'invalid Flag %r: %s' - % (cls_name, '; '.join(missing)) + 'invalid Flag %r: %s %s [use `enum.show_flag_values(value)` for details]' + % (cls_name, alias, value) ) return enumeration diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 9a7882b8a9c6f..ceb0da8c77ba3 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2158,9 +2158,6 @@ def __init__(self, *args): self._valid = True @classmethod def _missing_(cls, value): - # encountered an unknown value! - # Luckily I'm a LenientStrEnum, so I won't crash just yet. - # You might want to add a new case though. unknown = cls._member_type_.__new__(cls, value) unknown._valid = False unknown._name_ = value.upper() @@ -3586,7 +3583,7 @@ class Bizarre(Flag): self.assertEqual(Bizarre.d.value, 6) with self.assertRaisesRegex( ValueError, - "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2", + "invalid Flag 'Bizarre': aliases b and d are missing combined values of 0x3 .use `enum.show_flag_values.value.` for details.", ): @verify(NAMED_FLAGS) class Bizarre(Flag): @@ -3594,6 +3591,7 @@ class Bizarre(Flag): c = 4 d = 6 # + self.assertEqual(enum.show_flag_values(3), [1, 2]) class Bizarre(IntFlag): b = 3 c = 4 @@ -3604,13 +3602,13 @@ class Bizarre(IntFlag): self.assertEqual(Bizarre.d.value, 6) with self.assertRaisesRegex( ValueError, - "invalid Flag 'Bizarre': 'b' is missing named flags for values 1, 2; 'd' is missing a named flag for value 2", + "invalid Flag 'Bizarre': alias d is missing value 0x2 .use `enum.show_flag_values.value.` for details.", ): @verify(NAMED_FLAGS) class Bizarre(IntFlag): - b = 3 c = 4 d = 6 + self.assertEqual(enum.show_flag_values(2), [2]) def test_unique_clean(self): @verify(UNIQUE) @@ -3877,7 +3875,7 @@ class Missing: class MiscTestCase(unittest.TestCase): def test__all__(self): - support.check__all__(self, enum, not_exported={'bin'}) + support.check__all__(self, enum, not_exported={'bin', 'show_flag_values'}) # These are unordered here on purpose to ensure that declaration order From webhook-mailer at python.org Fri Jun 11 11:08:20 2021 From: webhook-mailer at python.org (encukou) Date: Fri, 11 Jun 2021 15:08:20 -0000 Subject: [Python-checkins] bpo-44351: Restore back parse_makefile in distutils.sysconfig (GH-26637) Message-ID: https://github.com/python/cpython/commit/fc98266ff627ba0f56f8ae241245b66bc983baa3 commit: fc98266ff627ba0f56f8ae241245b66bc983baa3 branch: main author: Lum?r 'Frenzy' Balhar committer: encukou date: 2021-06-11T17:08:00+02:00 summary: bpo-44351: Restore back parse_makefile in distutils.sysconfig (GH-26637) The function uses distutils.text_file.TextFile and therefore behaves differently than _parse_makefile in sysconfig. files: A Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst M Lib/distutils/sysconfig.py diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index aa63093a3f0e6..3414a761e76b9 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -28,7 +28,6 @@ _PYTHON_BUILD as python_build, _init_posix as sysconfig_init_posix, parse_config_h as sysconfig_parse_config_h, - _parse_makefile as sysconfig_parse_makefile, _init_non_posix, _is_python_source_dir, @@ -68,14 +67,118 @@ def parse_config_h(fp, g=None): return sysconfig_parse_config_h(fp, vars=g) -def parse_makefile(fn, g=None): - return sysconfig_parse_makefile(fn, vars=g, keep_unresolved=False) - _python_build = partial(is_python_build, check_home=True) _init_posix = partial(sysconfig_init_posix, _config_vars) _init_nt = partial(_init_non_posix, _config_vars) +# Similar function is also implemented in sysconfig as _parse_makefile +# but without the parsing capabilities of distutils.text_file.TextFile. +def parse_makefile(fn, g=None): + """Parse a Makefile-style file. + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + from distutils.text_file import TextFile + fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1, errors="surrogateescape") + + if g is None: + g = {} + done = {} + notdone = {} + + while True: + line = fp.readline() + if line is None: # eof + break + m = re.match(_variable_rx, line) + if m: + n, v = m.group(1, 2) + v = v.strip() + # `$$' is a literal `$' in make + tmpv = v.replace('$$', '') + + if "$" in tmpv: + notdone[n] = v + else: + try: + v = int(v) + except ValueError: + # insert literal `$' + done[n] = v.replace('$$', '$') + else: + done[n] = v + + # Variables with a 'PY_' prefix in the makefile. These need to + # be made available without that prefix through sysconfig. + # Special care is needed to ensure that variable expansion works, even + # if the expansion uses the name without a prefix. + renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') + + # do variable interpolation here + while notdone: + for name in list(notdone): + value = notdone[name] + m = re.search(_findvar1_rx, value) or re.search(_findvar2_rx, value) + if m: + n = m.group(1) + found = True + if n in done: + item = str(done[n]) + elif n in notdone: + # get it on a subsequent round + found = False + elif n in os.environ: + # do it like make: fall back to environment + item = os.environ[n] + + elif n in renamed_variables: + if name.startswith('PY_') and name[3:] in renamed_variables: + item = "" + + elif 'PY_' + n in notdone: + found = False + + else: + item = str(done['PY_' + n]) + else: + done[n] = item = "" + if found: + after = value[m.end():] + value = value[:m.start()] + item + after + if "$" in after: + notdone[name] = value + else: + try: value = int(value) + except ValueError: + done[name] = value.strip() + else: + done[name] = value + del notdone[name] + + if name.startswith('PY_') \ + and name[3:] in renamed_variables: + + name = name[3:] + if name not in done: + done[name] = value + else: + # bogus variable reference; just drop it since we can't deal + del notdone[name] + + fp.close() + + # strip spurious spaces + for k, v in done.items(): + if isinstance(v, str): + done[k] = v.strip() + + # save the results in the global dictionary + g.update(done) + return g + + # Following functions are deprecated together with this module and they # have no direct replacement diff --git a/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst b/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst new file mode 100644 index 0000000000000..d731a549632b5 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst @@ -0,0 +1,2 @@ +Restore back :func:`parse_makefile` in :mod:`distutils.sysconfig` because it +behaves differently than the similar implementation in :mod:`sysconfig`. From webhook-mailer at python.org Fri Jun 11 11:18:05 2021 From: webhook-mailer at python.org (iritkatriel) Date: Fri, 11 Jun 2021 15:18:05 -0000 Subject: [Python-checkins] bpo-43318: Fix a bug where pdb does not always echo cleared breakpoints (GH-24646) Message-ID: https://github.com/python/cpython/commit/4cb6ba14325cff98589c2660d1d2c65f4aacfee4 commit: 4cb6ba14325cff98589c2660d1d2c65f4aacfee4 branch: main author: huzhaojie committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-11T16:17:56+01:00 summary: bpo-43318: Fix a bug where pdb does not always echo cleared breakpoints (GH-24646) files: A Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index 081a8449d4109..ff40f7b2476a3 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -893,7 +893,7 @@ def do_clear(self, arg): except ValueError: err = "Invalid line number (%s)" % arg else: - bplist = self.get_breaks(filename, lineno) + bplist = self.get_breaks(filename, lineno)[:] err = self.clear_break(filename, lineno) if err: self.error(err) diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index aa3035b6ac379..0724b666a3bf8 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1322,6 +1322,35 @@ def test_pdb_issue_20766(): pdb 2: """ +def test_pdb_issue_43318(): + """echo breakpoints cleared with filename:lineno + + >>> def test_function(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... print(1) + ... print(2) + ... print(3) + ... print(4) + >>> reset_Breakpoint() + >>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE + ... 'break 3', + ... 'clear :3', + ... 'continue' + ... ]): + ... test_function() + > (3)test_function() + -> print(1) + (Pdb) break 3 + Breakpoint 1 at :3 + (Pdb) clear :3 + Deleted breakpoint 1 at :3 + (Pdb) continue + 1 + 2 + 3 + 4 + """ + class PdbTestCase(unittest.TestCase): def tearDown(self): diff --git a/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst b/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst new file mode 100644 index 0000000000000..c2c9c8776fd86 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst @@ -0,0 +1 @@ +Fix a bug where :mod:`pdb` does not always echo cleared breakpoints. From webhook-mailer at python.org Fri Jun 11 12:18:28 2021 From: webhook-mailer at python.org (iritkatriel) Date: Fri, 11 Jun 2021 16:18:28 -0000 Subject: [Python-checkins] bpo-43318: Fix a bug where pdb does not always echo cleared breakpoints (GH-24646) (GH-26674) Message-ID: https://github.com/python/cpython/commit/9c0180ae7761b352116a2528aae61eea10e31045 commit: 9c0180ae7761b352116a2528aae61eea10e31045 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-11T17:18:19+01:00 summary: bpo-43318: Fix a bug where pdb does not always echo cleared breakpoints (GH-24646) (GH-26674) (cherry picked from commit 4cb6ba14325cff98589c2660d1d2c65f4aacfee4) Co-authored-by: huzhaojie files: A Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index 081a8449d4109..ff40f7b2476a3 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -893,7 +893,7 @@ def do_clear(self, arg): except ValueError: err = "Invalid line number (%s)" % arg else: - bplist = self.get_breaks(filename, lineno) + bplist = self.get_breaks(filename, lineno)[:] err = self.clear_break(filename, lineno) if err: self.error(err) diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index f944acd692043..3bece762558e4 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1322,6 +1322,35 @@ def test_pdb_issue_20766(): pdb 2: """ +def test_pdb_issue_43318(): + """echo breakpoints cleared with filename:lineno + + >>> def test_function(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... print(1) + ... print(2) + ... print(3) + ... print(4) + >>> reset_Breakpoint() + >>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE + ... 'break 3', + ... 'clear :3', + ... 'continue' + ... ]): + ... test_function() + > (3)test_function() + -> print(1) + (Pdb) break 3 + Breakpoint 1 at :3 + (Pdb) clear :3 + Deleted breakpoint 1 at :3 + (Pdb) continue + 1 + 2 + 3 + 4 + """ + class PdbTestCase(unittest.TestCase): def tearDown(self): diff --git a/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst b/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst new file mode 100644 index 0000000000000..c2c9c8776fd86 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst @@ -0,0 +1 @@ +Fix a bug where :mod:`pdb` does not always echo cleared breakpoints. From webhook-mailer at python.org Fri Jun 11 12:18:53 2021 From: webhook-mailer at python.org (iritkatriel) Date: Fri, 11 Jun 2021 16:18:53 -0000 Subject: [Python-checkins] bpo-43318: Fix a bug where pdb does not always echo cleared breakpoints (GH-24646) (GH-26675) Message-ID: https://github.com/python/cpython/commit/6df926f1c46eb6db7b5dcd0227c6b532c78525c9 commit: 6df926f1c46eb6db7b5dcd0227c6b532c78525c9 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-11T17:18:49+01:00 summary: bpo-43318: Fix a bug where pdb does not always echo cleared breakpoints (GH-24646) (GH-26675) (cherry picked from commit 4cb6ba14325cff98589c2660d1d2c65f4aacfee4) Co-authored-by: huzhaojie files: A Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index 081a8449d4109..ff40f7b2476a3 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -893,7 +893,7 @@ def do_clear(self, arg): except ValueError: err = "Invalid line number (%s)" % arg else: - bplist = self.get_breaks(filename, lineno) + bplist = self.get_breaks(filename, lineno)[:] err = self.clear_break(filename, lineno) if err: self.error(err) diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 2339bff1a253b..1c007a2b6fc8d 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1259,6 +1259,35 @@ def test_pdb_issue_20766(): pdb 2: """ +def test_pdb_issue_43318(): + """echo breakpoints cleared with filename:lineno + + >>> def test_function(): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... print(1) + ... print(2) + ... print(3) + ... print(4) + >>> reset_Breakpoint() + >>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE + ... 'break 3', + ... 'clear :3', + ... 'continue' + ... ]): + ... test_function() + > (3)test_function() + -> print(1) + (Pdb) break 3 + Breakpoint 1 at :3 + (Pdb) clear :3 + Deleted breakpoint 1 at :3 + (Pdb) continue + 1 + 2 + 3 + 4 + """ + class PdbTestCase(unittest.TestCase): def tearDown(self): diff --git a/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst b/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst new file mode 100644 index 0000000000000..c2c9c8776fd86 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst @@ -0,0 +1 @@ +Fix a bug where :mod:`pdb` does not always echo cleared breakpoints. From webhook-mailer at python.org Fri Jun 11 16:35:48 2021 From: webhook-mailer at python.org (zooba) Date: Fri, 11 Jun 2021 20:35:48 -0000 Subject: [Python-checkins] bpo-44381: Windows build now allows enabling control flow guard (GH-26645) Message-ID: https://github.com/python/cpython/commit/5af56c6f2a0d11df37fed7ecaaf321cf6926ba13 commit: 5af56c6f2a0d11df37fed7ecaaf321cf6926ba13 branch: main author: Steve Dower committer: zooba date: 2021-06-11T21:35:40+01:00 summary: bpo-44381: Windows build now allows enabling control flow guard (GH-26645) files: A Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst M PCbuild/pyproject.props diff --git a/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst b/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst new file mode 100644 index 0000000000000..002112c4b5567 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst @@ -0,0 +1,2 @@ +The Windows build now accepts :envvar:`EnableControlFlowGuard` set to +``guard`` to enable CFG. diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props index 834b27c86d42c..d492b71dfbaa3 100644 --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -44,11 +44,11 @@ Default true true - OnlyExplicitInline - OnlyExplicitInline + $(EnableControlFlowGuard) /utf-8 %(AdditionalOptions) + OnlyExplicitInline Disabled false MultiThreadedDebugDLL From webhook-mailer at python.org Fri Jun 11 17:17:15 2021 From: webhook-mailer at python.org (zooba) Date: Fri, 11 Jun 2021 21:17:15 -0000 Subject: [Python-checkins] bpo-44381: Windows build now allows enabling control flow guard (GH-26645) Message-ID: https://github.com/python/cpython/commit/9580d3894ad158ae909e7573a02dcd087de0b673 commit: 9580d3894ad158ae909e7573a02dcd087de0b673 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: zooba date: 2021-06-11T22:16:50+01:00 summary: bpo-44381: Windows build now allows enabling control flow guard (GH-26645) (cherry picked from commit 5af56c6f2a0d11df37fed7ecaaf321cf6926ba13) files: A Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst M PCbuild/pyproject.props diff --git a/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst b/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst new file mode 100644 index 0000000000000..002112c4b5567 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst @@ -0,0 +1,2 @@ +The Windows build now accepts :envvar:`EnableControlFlowGuard` set to +``guard`` to enable CFG. diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props index 98e5ab030321d..2b4be392da47a 100644 --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -44,11 +44,11 @@ Default true true - OnlyExplicitInline - OnlyExplicitInline + $(EnableControlFlowGuard) /utf-8 %(AdditionalOptions) + OnlyExplicitInline Disabled false MultiThreadedDebugDLL From webhook-mailer at python.org Fri Jun 11 17:21:19 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 11 Jun 2021 21:21:19 -0000 Subject: [Python-checkins] bpo-44381: Windows build now allows enabling control flow guard (GH-26645) Message-ID: https://github.com/python/cpython/commit/42612db10792dd069149063f67a3b1db700bc7ee commit: 42612db10792dd069149063f67a3b1db700bc7ee branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-11T14:21:12-07:00 summary: bpo-44381: Windows build now allows enabling control flow guard (GH-26645) (cherry picked from commit 5af56c6f2a0d11df37fed7ecaaf321cf6926ba13) Co-authored-by: Steve Dower files: A Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst M PCbuild/pyproject.props diff --git a/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst b/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst new file mode 100644 index 0000000000000..002112c4b5567 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst @@ -0,0 +1,2 @@ +The Windows build now accepts :envvar:`EnableControlFlowGuard` set to +``guard`` to enable CFG. diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props index 834b27c86d42c..d492b71dfbaa3 100644 --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -44,11 +44,11 @@ Default true true - OnlyExplicitInline - OnlyExplicitInline + $(EnableControlFlowGuard) /utf-8 %(AdditionalOptions) + OnlyExplicitInline Disabled false MultiThreadedDebugDLL From webhook-mailer at python.org Fri Jun 11 18:03:21 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 11 Jun 2021 22:03:21 -0000 Subject: [Python-checkins] bpo-41299: Reduce lag in Windows threading timeouts by using a higher precision time source (GH-26568) Message-ID: https://github.com/python/cpython/commit/57b3ca7f0aef4d180038d475398f809d3fcdd8be commit: 57b3ca7f0aef4d180038d475398f809d3fcdd8be branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-11T15:03:10-07:00 summary: bpo-41299: Reduce lag in Windows threading timeouts by using a higher precision time source (GH-26568) (cherry picked from commit 449e6f0ef395231e3abe467f910b02d7f075c27f) Co-authored-by: Ryan Hileman files: A Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst M Python/thread_nt.h diff --git a/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst b/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst new file mode 100644 index 0000000000000..71f700ffa1553 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst @@ -0,0 +1 @@ +Fix 16ms jitter when using timeouts in :mod:`threading`, such as with :meth:`threading.Lock.acquire` or :meth:`threading.Condition.wait`. diff --git a/Python/thread_nt.h b/Python/thread_nt.h index 05b982d32dc52..0ce5e94f89bf7 100644 --- a/Python/thread_nt.h +++ b/Python/thread_nt.h @@ -76,16 +76,22 @@ EnterNonRecursiveMutex(PNRMUTEX mutex, DWORD milliseconds) } } else if (milliseconds != 0) { /* wait at least until the target */ - ULONGLONG now, target = GetTickCount64() + milliseconds; + _PyTime_t now = _PyTime_GetPerfCounter(); + if (now <= 0) { + Py_FatalError("_PyTime_GetPerfCounter() == 0"); + } + _PyTime_t nanoseconds = _PyTime_FromNanoseconds((_PyTime_t)milliseconds * 1000000); + _PyTime_t target = now + nanoseconds; while (mutex->locked) { - if (PyCOND_TIMEDWAIT(&mutex->cv, &mutex->cs, (long long)milliseconds*1000) < 0) { + _PyTime_t microseconds = _PyTime_AsMicroseconds(nanoseconds, _PyTime_ROUND_TIMEOUT); + if (PyCOND_TIMEDWAIT(&mutex->cv, &mutex->cs, microseconds) < 0) { result = WAIT_FAILED; break; } - now = GetTickCount64(); + now = _PyTime_GetPerfCounter(); if (target <= now) break; - milliseconds = (DWORD)(target-now); + nanoseconds = target - now; } } if (!mutex->locked) { From webhook-mailer at python.org Fri Jun 11 18:55:40 2021 From: webhook-mailer at python.org (terryjreedy) Date: Fri, 11 Jun 2021 22:55:40 -0000 Subject: [Python-checkins] bpo-40128: Fix IDLE autocomplete on macOS (GH-26672) Message-ID: https://github.com/python/cpython/commit/3ec3ee7d2e9b45b586e486e429b412d6d0ca530f commit: 3ec3ee7d2e9b45b586e486e429b412d6d0ca530f branch: main author: Kaustubh J committer: terryjreedy date: 2021-06-11T18:55:32-04:00 summary: bpo-40128: Fix IDLE autocomplete on macOS (GH-26672) In particular, when running with tk8.6.8, as in PSF 3.9. Co-authored-by: Terry Jan Reedy files: A Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst M Lib/idlelib/autocomplete_w.py diff --git a/Lib/idlelib/autocomplete_w.py b/Lib/idlelib/autocomplete_w.py index 2e3f9c14a1981..13ff60ae4493e 100644 --- a/Lib/idlelib/autocomplete_w.py +++ b/Lib/idlelib/autocomplete_w.py @@ -206,6 +206,7 @@ def show_window(self, comp_lists, index, complete, mode, userWantsWin): scrollbar.config(command=listbox.yview) scrollbar.pack(side=RIGHT, fill=Y) listbox.pack(side=LEFT, fill=BOTH, expand=True) + acw.update_idletasks() # Need for tk8.6.8 on macOS: #40128. acw.lift() # work around bug in Tk 8.5.18+ (issue #24570) # Initialize the listbox selection diff --git a/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst b/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst new file mode 100644 index 0000000000000..dafbe2cd5c3a8 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst @@ -0,0 +1,3 @@ +Mostly fix completions on macOS when not using tcl/tk 8.6.11 (as with 3.9). +The added update_idletask call should be harmless and possibly helpful +otherwise. From webhook-mailer at python.org Fri Jun 11 19:24:24 2021 From: webhook-mailer at python.org (terryjreedy) Date: Fri, 11 Jun 2021 23:24:24 -0000 Subject: [Python-checkins] bpo-40128: Fix IDLE autocomplete on macOS (GH-26672) Message-ID: https://github.com/python/cpython/commit/b441e99d89a3f05210cc36ade57699384986ca00 commit: b441e99d89a3f05210cc36ade57699384986ca00 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2021-06-11T19:24:16-04:00 summary: bpo-40128: Fix IDLE autocomplete on macOS (GH-26672) In particular, when running with tk8.6.8, as in PSF 3.9. Co-authored-by: Terry Jan Reedy (cherry picked from commit 3ec3ee7d2e9b45b586e486e429b412d6d0ca530f) Co-authored-by: Kaustubh J files: A Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst M Lib/idlelib/autocomplete_w.py diff --git a/Lib/idlelib/autocomplete_w.py b/Lib/idlelib/autocomplete_w.py index 2e3f9c14a1981..13ff60ae4493e 100644 --- a/Lib/idlelib/autocomplete_w.py +++ b/Lib/idlelib/autocomplete_w.py @@ -206,6 +206,7 @@ def show_window(self, comp_lists, index, complete, mode, userWantsWin): scrollbar.config(command=listbox.yview) scrollbar.pack(side=RIGHT, fill=Y) listbox.pack(side=LEFT, fill=BOTH, expand=True) + acw.update_idletasks() # Need for tk8.6.8 on macOS: #40128. acw.lift() # work around bug in Tk 8.5.18+ (issue #24570) # Initialize the listbox selection diff --git a/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst b/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst new file mode 100644 index 0000000000000..dafbe2cd5c3a8 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst @@ -0,0 +1,3 @@ +Mostly fix completions on macOS when not using tcl/tk 8.6.11 (as with 3.9). +The added update_idletask call should be harmless and possibly helpful +otherwise. From webhook-mailer at python.org Fri Jun 11 19:24:44 2021 From: webhook-mailer at python.org (terryjreedy) Date: Fri, 11 Jun 2021 23:24:44 -0000 Subject: [Python-checkins] bpo-40128: Fix IDLE autocomplete on macOS (GH-26672) Message-ID: https://github.com/python/cpython/commit/a9e20cf7bbf3ba39260fca112938f95e4f317efc commit: a9e20cf7bbf3ba39260fca112938f95e4f317efc branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2021-06-11T19:24:40-04:00 summary: bpo-40128: Fix IDLE autocomplete on macOS (GH-26672) In particular, when running with tk8.6.8, as in PSF 3.9. Co-authored-by: Terry Jan Reedy (cherry picked from commit 3ec3ee7d2e9b45b586e486e429b412d6d0ca530f) Co-authored-by: Kaustubh J files: A Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst M Lib/idlelib/autocomplete_w.py diff --git a/Lib/idlelib/autocomplete_w.py b/Lib/idlelib/autocomplete_w.py index dd20d9f8ec791..21b8a2472dd3f 100644 --- a/Lib/idlelib/autocomplete_w.py +++ b/Lib/idlelib/autocomplete_w.py @@ -203,6 +203,7 @@ def show_window(self, comp_lists, index, complete, mode, userWantsWin): scrollbar.config(command=listbox.yview) scrollbar.pack(side=RIGHT, fill=Y) listbox.pack(side=LEFT, fill=BOTH, expand=True) + acw.update_idletasks() # Need for tk8.6.8 on macOS: #40128. acw.lift() # work around bug in Tk 8.5.18+ (issue #24570) # Initialize the listbox selection diff --git a/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst b/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst new file mode 100644 index 0000000000000..dafbe2cd5c3a8 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst @@ -0,0 +1,3 @@ +Mostly fix completions on macOS when not using tcl/tk 8.6.11 (as with 3.9). +The added update_idletask call should be harmless and possibly helpful +otherwise. From webhook-mailer at python.org Sat Jun 12 05:23:09 2021 From: webhook-mailer at python.org (mdickinson) Date: Sat, 12 Jun 2021 09:23:09 -0000 Subject: [Python-checkins] bpo-44339: Fix math.pow corner case to comply with IEEE 754 (GH-26606) Message-ID: https://github.com/python/cpython/commit/4a42cebf6dd769e2fa4e234a9e91093b3ad1cb63 commit: 4a42cebf6dd769e2fa4e234a9e91093b3ad1cb63 branch: main author: Mark Dickinson committer: mdickinson date: 2021-06-12T10:23:02+01:00 summary: bpo-44339: Fix math.pow corner case to comply with IEEE 754 (GH-26606) Change the behaviour of `math.pow(0.0, -math.inf)` and `math.pow(-0.0, -math.inf)` to return positive infinity instead of raising `ValueError`. This makes `math.pow` consistent with the built-in `pow` (and the `**` operator) for this particular special case, and brings the `math.pow` special-case handling into compliance with IEEE 754. files: A Misc/NEWS.d/next/Library/2021-06-08-17-47-38.bpo-44339.9JwMSc.rst M Doc/library/math.rst M Doc/whatsnew/3.11.rst M Lib/test/ieee754.txt M Lib/test/test_math.py M Modules/mathmodule.c diff --git a/Doc/library/math.rst b/Doc/library/math.rst index 7aa543ae5d47e..71186788a652a 100644 --- a/Doc/library/math.rst +++ b/Doc/library/math.rst @@ -409,7 +409,7 @@ Power and logarithmic functions .. function:: pow(x, y) Return ``x`` raised to the power ``y``. Exceptional cases follow - Annex 'F' of the C99 standard as far as possible. In particular, + the IEEE 754 standard as far as possible. In particular, ``pow(1.0, x)`` and ``pow(x, 0.0)`` always return ``1.0``, even when ``x`` is a zero or a NaN. If both ``x`` and ``y`` are finite, ``x`` is negative, and ``y`` is not an integer then ``pow(x, y)`` @@ -419,6 +419,11 @@ Power and logarithmic functions its arguments to type :class:`float`. Use ``**`` or the built-in :func:`pow` function for computing exact integer powers. + .. versionchanged:: 3.11 + The special cases ``pow(0.0, -inf)`` and ``pow(-0.0, -inf)`` were + changed to return ``inf`` instead of raising :exc:`ValueError`, + for consistency with IEEE 754. + .. function:: sqrt(x) diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index ba7c456aa2156..50d91a0adc141 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -96,8 +96,14 @@ string. (Contributed by Sergey B Kirpichev in :issue:`44258`.) math ---- -Add :func:`math.cbrt()`: return the cube root of x. -(Contributed by Ajith Ramachandran in :issue:`44357`.) +* Add :func:`math.cbrt`: return the cube root of x. + (Contributed by Ajith Ramachandran in :issue:`44357`.) + +* The behaviour of two :func:`math.pow` corner cases was changed, for + consistency with the IEEE 754 specification. The operations + ``math.pow(0.0, -math.inf)`` and ``math.pow(-0.0, -math.inf)`` now return + ``inf``. Previously they raised :exc:`ValueError`. (Contributed by Mark + Dickinson in :issue:`44339`.) Removed diff --git a/Lib/test/ieee754.txt b/Lib/test/ieee754.txt index 89bb0c50a3d24..a8b8a0a2148f0 100644 --- a/Lib/test/ieee754.txt +++ b/Lib/test/ieee754.txt @@ -104,7 +104,7 @@ infinity and NaN. 1.0 The power of 0 raised to x is defined as 0, if x is positive. Negative -values are a domain error or zero division error and NaN result in a +finite values are a domain error or zero division error and NaN result in a silent NaN. >>> pow(0, 0) @@ -112,9 +112,7 @@ silent NaN. >>> pow(0, INF) 0.0 >>> pow(0, -INF) -Traceback (most recent call last): -... -ValueError: math domain error +inf >>> 0 ** -1 Traceback (most recent call last): ... diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index da162844e202a..42b61c317c4e3 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -1230,7 +1230,7 @@ def testPow(self): self.assertRaises(ValueError, math.pow, 0., -2.) self.assertRaises(ValueError, math.pow, 0., -2.3) self.assertRaises(ValueError, math.pow, 0., -3.) - self.assertRaises(ValueError, math.pow, 0., NINF) + self.assertEqual(math.pow(0., NINF), INF) self.assertTrue(math.isnan(math.pow(0., NAN))) # pow(INF, x) @@ -1256,7 +1256,7 @@ def testPow(self): self.assertRaises(ValueError, math.pow, -0., -2.) self.assertRaises(ValueError, math.pow, -0., -2.3) self.assertRaises(ValueError, math.pow, -0., -3.) - self.assertRaises(ValueError, math.pow, -0., NINF) + self.assertEqual(math.pow(-0., NINF), INF) self.assertTrue(math.isnan(math.pow(-0., NAN))) # pow(NINF, x) diff --git a/Misc/NEWS.d/next/Library/2021-06-08-17-47-38.bpo-44339.9JwMSc.rst b/Misc/NEWS.d/next/Library/2021-06-08-17-47-38.bpo-44339.9JwMSc.rst new file mode 100644 index 0000000000000..10499eb02bb3c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-08-17-47-38.bpo-44339.9JwMSc.rst @@ -0,0 +1,3 @@ +Change ``math.pow(?0.0, -math.inf)`` to return ``inf`` instead of raising +``ValueError``. This brings the special-case handling of ``math.pow`` into +compliance with the IEEE 754 standard. diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index b3429c5653c95..bd97b03205b7c 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -2810,8 +2810,6 @@ math_pow_impl(PyObject *module, double x, double y) r = y; else if (y < 0. && fabs(x) < 1.0) { r = -y; /* result is +inf */ - if (x == 0.) /* 0**-inf: divide-by-zero */ - errno = EDOM; } else r = 0.; From webhook-mailer at python.org Sat Jun 12 08:15:28 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sat, 12 Jun 2021 12:15:28 -0000 Subject: [Python-checkins] bpo-43475: Fix the Python implementation of hash of Decimal NaN (GH-26679) Message-ID: https://github.com/python/cpython/commit/9f1c5f6e8af6ba3f659b2aea1e221ac9695828ba commit: 9f1c5f6e8af6ba3f659b2aea1e221ac9695828ba branch: main author: Serhiy Storchaka committer: serhiy-storchaka date: 2021-06-12T15:15:17+03:00 summary: bpo-43475: Fix the Python implementation of hash of Decimal NaN (GH-26679) files: M Doc/library/stdtypes.rst M Lib/_pydecimal.py M Lib/test/test_decimal.py M Lib/test/test_float.py diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index e34a888639c18..3b2ff8090ced3 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -739,7 +739,7 @@ number, :class:`float`, or :class:`complex`:: """Compute the hash of a float x.""" if math.isnan(x): - return super().__hash__() + return object.__hash__(x) elif math.isinf(x): return sys.hash_info.inf if x > 0 else -sys.hash_info.inf else: diff --git a/Lib/_pydecimal.py b/Lib/_pydecimal.py index ff23322ed5603..3d6cece9676c9 100644 --- a/Lib/_pydecimal.py +++ b/Lib/_pydecimal.py @@ -951,7 +951,7 @@ def __hash__(self): if self.is_snan(): raise TypeError('Cannot hash a signaling NaN value.') elif self.is_nan(): - return super().__hash__() + return object.__hash__(self) else: if self._sign: return -_PyHASH_INF diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 179a9ea7042fb..058829b03a3de 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -1814,13 +1814,7 @@ def hashit(d): # check that hash(d) == hash(int(d)) for integral values for value in test_values: - self.assertEqual(hashit(value), hashit(int(value))) - - #the same hash that to an int - self.assertEqual(hashit(Decimal(23)), hashit(23)) - self.assertRaises(TypeError, hash, Decimal('sNaN')) - self.assertTrue(hashit(Decimal('Inf'))) - self.assertTrue(hashit(Decimal('-Inf'))) + self.assertEqual(hashit(value), hash(int(value))) # check that the hashes of a Decimal float match when they # represent exactly the same values @@ -1829,7 +1823,7 @@ def hashit(d): for s in test_strings: f = float(s) d = Decimal(s) - self.assertEqual(hashit(f), hashit(d)) + self.assertEqual(hashit(d), hash(f)) with localcontext() as c: # check that the value of the hash doesn't depend on the @@ -1850,6 +1844,19 @@ def hashit(d): x = 1100 ** 1248 self.assertEqual(hashit(Decimal(x)), hashit(x)) + def test_hash_method_nan(self): + Decimal = self.decimal.Decimal + self.assertRaises(TypeError, hash, Decimal('sNaN')) + value = Decimal('NaN') + self.assertEqual(hash(value), object.__hash__(value)) + class H: + def __hash__(self): + return 42 + class D(Decimal, H): + pass + value = D('NaN') + self.assertEqual(hash(value), object.__hash__(value)) + def test_min_and_max_methods(self): Decimal = self.decimal.Decimal diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py index ff4f3876be5cd..f0ed40f7c94a7 100644 --- a/Lib/test/test_float.py +++ b/Lib/test/test_float.py @@ -564,6 +564,25 @@ def test_float_pow(self): #self.assertTrue(0.0 < pow_op(2.0, -1047) < 1e-315) #self.assertTrue(0.0 > pow_op(-2.0, -1047) > -1e-315) + def test_hash(self): + for x in range(-30, 30): + self.assertEqual(hash(float(x)), hash(x)) + self.assertEqual(hash(float(sys.float_info.max)), + hash(int(sys.float_info.max))) + self.assertEqual(hash(float('inf')), sys.hash_info.inf) + self.assertEqual(hash(float('-inf')), -sys.hash_info.inf) + + def test_hash_nan(self): + value = float('nan') + self.assertEqual(hash(value), object.__hash__(value)) + class H: + def __hash__(self): + return 42 + class F(float, H): + pass + value = F('nan') + self.assertEqual(hash(value), object.__hash__(value)) + @requires_setformat class FormatFunctionsTestCase(unittest.TestCase): From webhook-mailer at python.org Sat Jun 12 09:12:07 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sat, 12 Jun 2021 13:12:07 -0000 Subject: [Python-checkins] Add more const modifiers. (GH-26691) Message-ID: https://github.com/python/cpython/commit/be8b631b7a587aa781245e14c8cca32970e1be5b commit: be8b631b7a587aa781245e14c8cca32970e1be5b branch: main author: Serhiy Storchaka committer: serhiy-storchaka date: 2021-06-12T16:11:59+03:00 summary: Add more const modifiers. (GH-26691) files: M Include/cpython/code.h M Include/internal/pycore_code.h M Modules/_zoneinfo.c M Objects/codeobject.c M Objects/unicodeobject.c M Parser/pegen.c M Parser/pegen.h M Parser/string_parser.c M Python/specialize.c diff --git a/Include/cpython/code.h b/Include/cpython/code.h index a3db7d9d5eff7a..f6e789dd4d8cfe 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -196,8 +196,8 @@ PyAPI_FUNC(int) PyCode_Addr2Line(PyCodeObject *, int); /* for internal use only */ struct _opaque { int computed_line; - char *lo_next; - char *limit; + const char *lo_next; + const char *limit; }; typedef struct _line_offsets { @@ -234,7 +234,7 @@ PyAPI_FUNC(int) _PyCode_SetExtra(PyObject *code, Py_ssize_t index, int _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds); /** Out of process API for initializing the line number table. */ -void PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range); +void PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range); /** API for traversing the line number table. */ int PyLineTable_NextAddressRange(PyCodeAddressRange *range); diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 05ba522969a3d0..bfc2deb1b60424 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -79,7 +79,7 @@ typedef union _cache_or_instruction { * The zeroth entry immediately precedes the instructions. */ static inline SpecializedCacheEntry * -_GetSpecializedCacheEntry(_Py_CODEUNIT *first_instr, Py_ssize_t n) +_GetSpecializedCacheEntry(const _Py_CODEUNIT *first_instr, Py_ssize_t n) { SpecializedCacheOrInstruction *last_cache_plus_one = (SpecializedCacheOrInstruction *)first_instr; assert(&last_cache_plus_one->code[0] == first_instr); @@ -126,7 +126,7 @@ offset_from_oparg_and_nexti(int oparg, int nexti) * nexti is used as it corresponds to the instruction pointer in the interpreter. * This doesn't check that an entry has been allocated for that instruction. */ static inline SpecializedCacheEntry * -_GetSpecializedCacheEntryForInstruction(_Py_CODEUNIT *first_instr, int nexti, int oparg) +_GetSpecializedCacheEntryForInstruction(const _Py_CODEUNIT *first_instr, int nexti, int oparg) { return _GetSpecializedCacheEntry( first_instr, diff --git a/Modules/_zoneinfo.c b/Modules/_zoneinfo.c index 755442f857652b..c722330ee491a9 100644 --- a/Modules/_zoneinfo.c +++ b/Modules/_zoneinfo.c @@ -1468,11 +1468,11 @@ parse_tz_str(PyObject *tz_str_obj, _tzrule *out) long std_offset = 1 << 20; long dst_offset = 1 << 20; - char *tz_str = PyBytes_AsString(tz_str_obj); + const char *tz_str = PyBytes_AsString(tz_str_obj); if (tz_str == NULL) { return -1; } - char *p = tz_str; + const char *p = tz_str; // Read the `std` abbreviation, which must be at least 3 characters long. Py_ssize_t num_chars = parse_abbr(p, &std_abbr); diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 1a99ec361e6b5b..701a37d7392fbe 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -627,7 +627,7 @@ PyCode_Addr2Line(PyCodeObject *co, int addrq) } void -PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range) +PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range) { range->opaque.lo_next = linetable; range->opaque.limit = range->opaque.lo_next + length; @@ -640,7 +640,7 @@ PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno int _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds) { - char *linetable = PyBytes_AS_STRING(co->co_linetable); + const char *linetable = PyBytes_AS_STRING(co->co_linetable); Py_ssize_t length = PyBytes_GET_SIZE(co->co_linetable); PyLineTable_InitAddressRange(linetable, length, co->co_firstlineno, bounds); return bounds->ar_line; @@ -926,7 +926,7 @@ _PyCode_InitOpcache(PyCodeObject *co) return -1; } - _Py_CODEUNIT *opcodes = (_Py_CODEUNIT*)PyBytes_AS_STRING(co->co_code); + const _Py_CODEUNIT *opcodes = (const _Py_CODEUNIT*)PyBytes_AS_STRING(co->co_code); Py_ssize_t opts = 0; for (Py_ssize_t i = 0; i < co_size;) { diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 82f0b1afed444c..c316cafdc7ffc5 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -658,7 +658,7 @@ unicode_result_ready(PyObject *unicode) if (length == 1) { int kind = PyUnicode_KIND(unicode); if (kind == PyUnicode_1BYTE_KIND) { - Py_UCS1 *data = PyUnicode_1BYTE_DATA(unicode); + const Py_UCS1 *data = PyUnicode_1BYTE_DATA(unicode); Py_UCS1 ch = data[0]; struct _Py_unicode_state *state = get_unicode_state(); PyObject *latin1_char = state->latin1[ch]; diff --git a/Parser/pegen.c b/Parser/pegen.c index 82f840c605073b..19412446b118ab 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -7,7 +7,7 @@ #include "string_parser.h" PyObject * -_PyPegen_new_type_comment(Parser *p, char *s) +_PyPegen_new_type_comment(Parser *p, const char *s) { PyObject *res = PyUnicode_DecodeUTF8(s, strlen(s), NULL); if (res == NULL) { @@ -26,7 +26,7 @@ _PyPegen_add_type_comment_to_arg(Parser *p, arg_ty a, Token *tc) if (tc == NULL) { return a; } - char *bytes = PyBytes_AsString(tc->bytes); + const char *bytes = PyBytes_AsString(tc->bytes); if (bytes == NULL) { return NULL; } @@ -66,7 +66,7 @@ _PyPegen_check_barry_as_flufl(Parser *p, Token* t) { assert(t->bytes != NULL); assert(t->type == NOTEQUAL); - char* tok_str = PyBytes_AS_STRING(t->bytes); + const char* tok_str = PyBytes_AS_STRING(t->bytes); if (p->flags & PyPARSE_BARRY_AS_BDFL && strcmp(tok_str, "<>") != 0) { RAISE_SYNTAX_ERROR("with Barry as BDFL, use '<>' instead of '!='"); return -1; @@ -78,7 +78,7 @@ _PyPegen_check_barry_as_flufl(Parser *p, Token* t) { } PyObject * -_PyPegen_new_identifier(Parser *p, char *n) +_PyPegen_new_identifier(Parser *p, const char *n) { PyObject *id = PyUnicode_DecodeUTF8(n, strlen(n), NULL); if (!id) { @@ -911,7 +911,7 @@ _PyPegen_expect_soft_keyword(Parser *p, const char *keyword) if (t->type != NAME) { return NULL; } - char *s = PyBytes_AsString(t->bytes); + const char *s = PyBytes_AsString(t->bytes); if (!s) { p->error_indicator = 1; return NULL; @@ -942,7 +942,7 @@ _PyPegen_name_from_token(Parser *p, Token* t) if (t == NULL) { return NULL; } - char* s = PyBytes_AsString(t->bytes); + const char *s = PyBytes_AsString(t->bytes); if (!s) { p->error_indicator = 1; return NULL; @@ -1068,7 +1068,7 @@ _PyPegen_number_token(Parser *p) return NULL; } - char *num_raw = PyBytes_AsString(t->bytes); + const char *num_raw = PyBytes_AsString(t->bytes); if (num_raw == NULL) { p->error_indicator = 1; return NULL; diff --git a/Parser/pegen.h b/Parser/pegen.h index 1540da030e9efc..161a49816d6c03 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -202,7 +202,7 @@ CHECK_CALL_NULL_ALLOWED(Parser *p, void *result) #define CHECK(type, result) ((type) CHECK_CALL(p, result)) #define CHECK_NULL_ALLOWED(type, result) ((type) CHECK_CALL_NULL_ALLOWED(p, result)) -PyObject *_PyPegen_new_type_comment(Parser *, char *); +PyObject *_PyPegen_new_type_comment(Parser *, const char *); Py_LOCAL_INLINE(PyObject *) NEW_TYPE_COMMENT(Parser *p, Token *tc) @@ -210,7 +210,7 @@ NEW_TYPE_COMMENT(Parser *p, Token *tc) if (tc == NULL) { return NULL; } - char *bytes = PyBytes_AsString(tc->bytes); + const char *bytes = PyBytes_AsString(tc->bytes); if (bytes == NULL) { goto error; } @@ -242,7 +242,7 @@ INVALID_VERSION_CHECK(Parser *p, int version, char *msg, void *node) #define CHECK_VERSION(type, version, msg, node) ((type) INVALID_VERSION_CHECK(p, version, msg, node)) arg_ty _PyPegen_add_type_comment_to_arg(Parser *, arg_ty, Token *); -PyObject *_PyPegen_new_identifier(Parser *, char *); +PyObject *_PyPegen_new_identifier(Parser *, const char *); Parser *_PyPegen_Parser_New(struct tok_state *, int, int, int, int *, PyArena *); void _PyPegen_Parser_Free(Parser *); mod_ty _PyPegen_run_parser_from_file_pointer(FILE *, int, PyObject *, const char *, diff --git a/Parser/string_parser.c b/Parser/string_parser.c index fa41a360c3fb5b..66405b26f37e4c 100644 --- a/Parser/string_parser.c +++ b/Parser/string_parser.c @@ -87,7 +87,7 @@ decode_unicode_with_escapes(Parser *parser, const char *s, size_t len, Token *t) if (*s & 0x80) { PyObject *w; int kind; - void *data; + const void *data; Py_ssize_t w_len; Py_ssize_t i; w = decode_utf8(&s, end); @@ -288,17 +288,17 @@ fstring_find_expr_location(Token *parent, char *expr_str, int *p_lines, int *p_c *p_lines = 0; *p_cols = 0; if (parent && parent->bytes) { - char *parent_str = PyBytes_AsString(parent->bytes); + const char *parent_str = PyBytes_AsString(parent->bytes); if (!parent_str) { return false; } - char *substr = strstr(parent_str, expr_str); + const char *substr = strstr(parent_str, expr_str); if (substr) { // The following is needed, in order to correctly shift the column // offset, in the case that (disregarding any whitespace) a newline // immediately follows the opening curly brace of the fstring expression. bool newline_after_brace = 1; - char *start = substr + 1; + const char *start = substr + 1; while (start && *start != '}' && *start != '\n') { if (*start != ' ' && *start != '\t' && *start != '\f') { newline_after_brace = 0; @@ -318,7 +318,7 @@ fstring_find_expr_location(Token *parent, char *expr_str, int *p_lines, int *p_c } /* adjust the start based on the number of newlines encountered before the f-string expression */ - for (char* p = parent_str; p < substr; p++) { + for (const char *p = parent_str; p < substr; p++) { if (*p == '\n') { (*p_lines)++; } diff --git a/Python/specialize.c b/Python/specialize.c index 1801e6620f1e3c..d82122dfad6201 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -120,7 +120,7 @@ oparg_from_instruction_and_update_offset(int index, int opcode, int original_opa } static int -entries_needed(_Py_CODEUNIT *code, int len) +entries_needed(const _Py_CODEUNIT *code, int len) { int cache_offset = 0; int previous_opcode = -1; From webhook-mailer at python.org Sat Jun 12 12:30:04 2021 From: webhook-mailer at python.org (tim-one) Date: Sat, 12 Jun 2021 16:30:04 -0000 Subject: [Python-checkins] bpo-44376 - reduce pow() overhead for small exponents (GH-26662) Message-ID: https://github.com/python/cpython/commit/9d8dd8f08aae4ad6e73a9322a4e9dee965afebbc commit: 9d8dd8f08aae4ad6e73a9322a4e9dee965afebbc branch: main author: Tim Peters committer: tim-one date: 2021-06-12T11:29:56-05:00 summary: bpo-44376 - reduce pow() overhead for small exponents (GH-26662) Greatly reduce pow() overhead for small exponents. files: A Misc/NEWS.d/next/Core and Builtins/2021-06-11-17-37-15.bpo-44376.zhM1UW.rst M Objects/longobject.c diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-11-17-37-15.bpo-44376.zhM1UW.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-11-17-37-15.bpo-44376.zhM1UW.rst new file mode 100644 index 00000000000000..f854d56b3c8419 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-11-17-37-15.bpo-44376.zhM1UW.rst @@ -0,0 +1 @@ +Exact integer exponentiation (like ``i**2`` or ``pow(i, 2)``) with a small exponent is much faster, due to reducing overhead in such cases. \ No newline at end of file diff --git a/Objects/longobject.c b/Objects/longobject.c index e1c1191e648dae..5e29e9a7257093 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -4239,17 +4239,57 @@ long_pow(PyObject *v, PyObject *w, PyObject *x) REDUCE(result); \ } while(0) - if (Py_SIZE(b) <= FIVEARY_CUTOFF) { + i = Py_SIZE(b); + digit bi = i ? b->ob_digit[i-1] : 0; + digit bit; + if (i <= 1 && bi <= 3) { + /* aim for minimal overhead */ + if (bi >= 2) { + MULT(a, a, z); + if (bi == 3) { + MULT(z, a, z); + } + } + else if (bi == 1) { + /* Multiplying by 1 serves two purposes: if `a` is of an int + * subclass, makes the result an int (e.g., pow(False, 1) returns + * 0 instead of False), and potentially reduces `a` by the modulus. + */ + MULT(a, z, z); + } + /* else bi is 0, and z==1 is correct */ + } + else if (i <= FIVEARY_CUTOFF) { /* Left-to-right binary exponentiation (HAC Algorithm 14.79) */ /* http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf */ - for (i = Py_SIZE(b) - 1; i >= 0; --i) { - digit bi = b->ob_digit[i]; - for (j = (digit)1 << (PyLong_SHIFT-1); j != 0; j >>= 1) { + /* Find the first significant exponent bit. Search right to left + * because we're primarily trying to cut overhead for small powers. + */ + assert(bi); /* else there is no significant bit */ + Py_INCREF(a); + Py_DECREF(z); + z = a; + for (bit = 2; ; bit <<= 1) { + if (bit > bi) { /* found the first bit */ + assert((bi & bit) == 0); + bit >>= 1; + assert(bi & bit); + break; + } + } + for (--i, bit >>= 1;;) { + for (; bit != 0; bit >>= 1) { MULT(z, z, z); - if (bi & j) + if (bi & bit) { MULT(z, a, z); + } + } + if (--i < 0) { + break; } + bi = b->ob_digit[i]; + bit = (digit)1 << (PyLong_SHIFT-1); } } else { From webhook-mailer at python.org Sat Jun 12 13:44:36 2021 From: webhook-mailer at python.org (pablogsal) Date: Sat, 12 Jun 2021 17:44:36 -0000 Subject: [Python-checkins] [3.10] Add more const modifiers. (GH-26691). (GH-26692) Message-ID: https://github.com/python/cpython/commit/c43317d41e7248405f40864bcc62f675805f4fd0 commit: c43317d41e7248405f40864bcc62f675805f4fd0 branch: 3.10 author: Serhiy Storchaka committer: pablogsal date: 2021-06-12T18:44:32+01:00 summary: [3.10] Add more const modifiers. (GH-26691). (GH-26692) (cherry picked from commit be8b631b7a587aa781245e14c8cca32970e1be5b) Co-authored-by: Serhiy Storchaka files: M Include/cpython/code.h M Modules/_zoneinfo.c M Objects/codeobject.c M Objects/unicodeobject.c M Parser/pegen.c M Parser/pegen.h M Parser/string_parser.c diff --git a/Include/cpython/code.h b/Include/cpython/code.h index e810eb4f816f3a..fa6408521cfee2 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -137,8 +137,8 @@ PyAPI_FUNC(int) PyCode_Addr2Line(PyCodeObject *, int); /* for internal use only */ struct _opaque { int computed_line; - char *lo_next; - char *limit; + const char *lo_next; + const char *limit; }; typedef struct _line_offsets { @@ -175,7 +175,7 @@ PyAPI_FUNC(int) _PyCode_SetExtra(PyObject *code, Py_ssize_t index, int _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds); /** Out of process API for initializing the line number table. */ -void PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range); +void PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range); /** API for traversing the line number table. */ int PyLineTable_NextAddressRange(PyCodeAddressRange *range); diff --git a/Modules/_zoneinfo.c b/Modules/_zoneinfo.c index 755442f857652b..c722330ee491a9 100644 --- a/Modules/_zoneinfo.c +++ b/Modules/_zoneinfo.c @@ -1468,11 +1468,11 @@ parse_tz_str(PyObject *tz_str_obj, _tzrule *out) long std_offset = 1 << 20; long dst_offset = 1 << 20; - char *tz_str = PyBytes_AsString(tz_str_obj); + const char *tz_str = PyBytes_AsString(tz_str_obj); if (tz_str == NULL) { return -1; } - char *p = tz_str; + const char *p = tz_str; // Read the `std` abbreviation, which must be at least 3 characters long. Py_ssize_t num_chars = parse_abbr(p, &std_abbr); diff --git a/Objects/codeobject.c b/Objects/codeobject.c index c76ac900b3a5e8..976cec584e9f39 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -294,7 +294,7 @@ _PyCode_InitOpcache(PyCodeObject *co) return -1; } - _Py_CODEUNIT *opcodes = (_Py_CODEUNIT*)PyBytes_AS_STRING(co->co_code); + const _Py_CODEUNIT *opcodes = (_Py_CODEUNIT*)PyBytes_AS_STRING(co->co_code); Py_ssize_t opts = 0; for (Py_ssize_t i = 0; i < co_size;) { @@ -1255,7 +1255,7 @@ PyCode_Addr2Line(PyCodeObject *co, int addrq) } void -PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range) +PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range) { range->opaque.lo_next = linetable; range->opaque.limit = range->opaque.lo_next + length; @@ -1268,7 +1268,7 @@ PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno int _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds) { - char *linetable = PyBytes_AS_STRING(co->co_linetable); + const char *linetable = PyBytes_AS_STRING(co->co_linetable); Py_ssize_t length = PyBytes_GET_SIZE(co->co_linetable); PyLineTable_InitAddressRange(linetable, length, co->co_firstlineno, bounds); return bounds->ar_line; diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index bfd5c881215dee..342e7eec061643 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -658,7 +658,7 @@ unicode_result_ready(PyObject *unicode) if (length == 1) { int kind = PyUnicode_KIND(unicode); if (kind == PyUnicode_1BYTE_KIND) { - Py_UCS1 *data = PyUnicode_1BYTE_DATA(unicode); + const Py_UCS1 *data = PyUnicode_1BYTE_DATA(unicode); Py_UCS1 ch = data[0]; struct _Py_unicode_state *state = get_unicode_state(); PyObject *latin1_char = state->latin1[ch]; diff --git a/Parser/pegen.c b/Parser/pegen.c index 82f840c605073b..19412446b118ab 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -7,7 +7,7 @@ #include "string_parser.h" PyObject * -_PyPegen_new_type_comment(Parser *p, char *s) +_PyPegen_new_type_comment(Parser *p, const char *s) { PyObject *res = PyUnicode_DecodeUTF8(s, strlen(s), NULL); if (res == NULL) { @@ -26,7 +26,7 @@ _PyPegen_add_type_comment_to_arg(Parser *p, arg_ty a, Token *tc) if (tc == NULL) { return a; } - char *bytes = PyBytes_AsString(tc->bytes); + const char *bytes = PyBytes_AsString(tc->bytes); if (bytes == NULL) { return NULL; } @@ -66,7 +66,7 @@ _PyPegen_check_barry_as_flufl(Parser *p, Token* t) { assert(t->bytes != NULL); assert(t->type == NOTEQUAL); - char* tok_str = PyBytes_AS_STRING(t->bytes); + const char* tok_str = PyBytes_AS_STRING(t->bytes); if (p->flags & PyPARSE_BARRY_AS_BDFL && strcmp(tok_str, "<>") != 0) { RAISE_SYNTAX_ERROR("with Barry as BDFL, use '<>' instead of '!='"); return -1; @@ -78,7 +78,7 @@ _PyPegen_check_barry_as_flufl(Parser *p, Token* t) { } PyObject * -_PyPegen_new_identifier(Parser *p, char *n) +_PyPegen_new_identifier(Parser *p, const char *n) { PyObject *id = PyUnicode_DecodeUTF8(n, strlen(n), NULL); if (!id) { @@ -911,7 +911,7 @@ _PyPegen_expect_soft_keyword(Parser *p, const char *keyword) if (t->type != NAME) { return NULL; } - char *s = PyBytes_AsString(t->bytes); + const char *s = PyBytes_AsString(t->bytes); if (!s) { p->error_indicator = 1; return NULL; @@ -942,7 +942,7 @@ _PyPegen_name_from_token(Parser *p, Token* t) if (t == NULL) { return NULL; } - char* s = PyBytes_AsString(t->bytes); + const char *s = PyBytes_AsString(t->bytes); if (!s) { p->error_indicator = 1; return NULL; @@ -1068,7 +1068,7 @@ _PyPegen_number_token(Parser *p) return NULL; } - char *num_raw = PyBytes_AsString(t->bytes); + const char *num_raw = PyBytes_AsString(t->bytes); if (num_raw == NULL) { p->error_indicator = 1; return NULL; diff --git a/Parser/pegen.h b/Parser/pegen.h index 1540da030e9efc..161a49816d6c03 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -202,7 +202,7 @@ CHECK_CALL_NULL_ALLOWED(Parser *p, void *result) #define CHECK(type, result) ((type) CHECK_CALL(p, result)) #define CHECK_NULL_ALLOWED(type, result) ((type) CHECK_CALL_NULL_ALLOWED(p, result)) -PyObject *_PyPegen_new_type_comment(Parser *, char *); +PyObject *_PyPegen_new_type_comment(Parser *, const char *); Py_LOCAL_INLINE(PyObject *) NEW_TYPE_COMMENT(Parser *p, Token *tc) @@ -210,7 +210,7 @@ NEW_TYPE_COMMENT(Parser *p, Token *tc) if (tc == NULL) { return NULL; } - char *bytes = PyBytes_AsString(tc->bytes); + const char *bytes = PyBytes_AsString(tc->bytes); if (bytes == NULL) { goto error; } @@ -242,7 +242,7 @@ INVALID_VERSION_CHECK(Parser *p, int version, char *msg, void *node) #define CHECK_VERSION(type, version, msg, node) ((type) INVALID_VERSION_CHECK(p, version, msg, node)) arg_ty _PyPegen_add_type_comment_to_arg(Parser *, arg_ty, Token *); -PyObject *_PyPegen_new_identifier(Parser *, char *); +PyObject *_PyPegen_new_identifier(Parser *, const char *); Parser *_PyPegen_Parser_New(struct tok_state *, int, int, int, int *, PyArena *); void _PyPegen_Parser_Free(Parser *); mod_ty _PyPegen_run_parser_from_file_pointer(FILE *, int, PyObject *, const char *, diff --git a/Parser/string_parser.c b/Parser/string_parser.c index fa41a360c3fb5b..66405b26f37e4c 100644 --- a/Parser/string_parser.c +++ b/Parser/string_parser.c @@ -87,7 +87,7 @@ decode_unicode_with_escapes(Parser *parser, const char *s, size_t len, Token *t) if (*s & 0x80) { PyObject *w; int kind; - void *data; + const void *data; Py_ssize_t w_len; Py_ssize_t i; w = decode_utf8(&s, end); @@ -288,17 +288,17 @@ fstring_find_expr_location(Token *parent, char *expr_str, int *p_lines, int *p_c *p_lines = 0; *p_cols = 0; if (parent && parent->bytes) { - char *parent_str = PyBytes_AsString(parent->bytes); + const char *parent_str = PyBytes_AsString(parent->bytes); if (!parent_str) { return false; } - char *substr = strstr(parent_str, expr_str); + const char *substr = strstr(parent_str, expr_str); if (substr) { // The following is needed, in order to correctly shift the column // offset, in the case that (disregarding any whitespace) a newline // immediately follows the opening curly brace of the fstring expression. bool newline_after_brace = 1; - char *start = substr + 1; + const char *start = substr + 1; while (start && *start != '}' && *start != '\n') { if (*start != ' ' && *start != '\t' && *start != '\f') { newline_after_brace = 0; @@ -318,7 +318,7 @@ fstring_find_expr_location(Token *parent, char *expr_str, int *p_lines, int *p_c } /* adjust the start based on the number of newlines encountered before the f-string expression */ - for (char* p = parent_str; p < substr; p++) { + for (const char *p = parent_str; p < substr; p++) { if (*p == '\n') { (*p_lines)++; } From webhook-mailer at python.org Sat Jun 12 13:45:19 2021 From: webhook-mailer at python.org (pablogsal) Date: Sat, 12 Jun 2021 17:45:19 -0000 Subject: [Python-checkins] bpo-38323: Skip SubprocessMultiLoopWatcherTest as they can hang the test suite (GH-26542) (GH-26670) Message-ID: https://github.com/python/cpython/commit/af5fb6706219d7949c1db5c9f2b7da53198123f3 commit: af5fb6706219d7949c1db5c9f2b7da53198123f3 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-12T18:45:10+01:00 summary: bpo-38323: Skip SubprocessMultiLoopWatcherTest as they can hang the test suite (GH-26542) (GH-26670) (cherry picked from commit f171877ebe276749f31386baed5841ce37cbee2e) Co-authored-by: Pablo Galindo files: M Lib/test/test_asyncio/test_subprocess.py diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index fe8cfa61b1b2d5..40f17b8f1a0079 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -676,6 +676,8 @@ class SubprocessThreadedWatcherTests(SubprocessWatcherMixin, Watcher = unix_events.ThreadedChildWatcher + @unittest.skip("bpo-38323: MultiLoopChildWatcher has a race condition \ + and these tests can hang the test suite") class SubprocessMultiLoopWatcherTests(SubprocessWatcherMixin, test_utils.TestCase): From webhook-mailer at python.org Sat Jun 12 13:53:58 2021 From: webhook-mailer at python.org (miss-islington) Date: Sat, 12 Jun 2021 17:53:58 -0000 Subject: [Python-checkins] bpo-44396: Update multi-line-start location when reallocating tokenizer buffers (GH-26676) Message-ID: https://github.com/python/cpython/commit/a342cc5891dbd8a08d40e9444f2e2c9e93258721 commit: a342cc5891dbd8a08d40e9444f2e2c9e93258721 branch: main author: Pablo Galindo committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-12T10:53:49-07:00 summary: bpo-44396: Update multi-line-start location when reallocating tokenizer buffers (GH-26676) Automerge-Triggered-By: GH:pablogsal files: A Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst M Lib/test/test_eof.py M Parser/tokenizer.c diff --git a/Lib/test/test_eof.py b/Lib/test/test_eof.py index 2d3b4ae4e591e..abcbf046e2cc2 100644 --- a/Lib/test/test_eof.py +++ b/Lib/test/test_eof.py @@ -29,6 +29,13 @@ def test_EOFS(self): else: raise support.TestFailed + def test_EOFS_with_file(self): + expect = ("(, line 1)") + with os_helper.temp_dir() as temp_dir: + file_name = script_helper.make_script(temp_dir, 'foo', """'''this is \na \ntest""") + rc, out, err = script_helper.assert_python_failure(file_name) + self.assertIn(b'unterminated triple-quoted string literal (detected at line 3)', err) + def test_eof_with_line_continuation(self): expect = "unexpected EOF while parsing (, line 1)" try: diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst new file mode 100644 index 0000000000000..be72a7111dc8a --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst @@ -0,0 +1,2 @@ +Fix a possible crash in the tokenizer when raising syntax errors for +unclosed strings. Patch by Pablo Galindo. diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 6002f3e05a890..be9b13ebabb8e 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -372,6 +372,8 @@ tok_reserve_buf(struct tok_state *tok, Py_ssize_t size) if (newsize > tok->end - tok->buf) { char *newbuf = tok->buf; Py_ssize_t start = tok->start == NULL ? -1 : tok->start - tok->buf; + Py_ssize_t line_start = tok->start == NULL ? -1 : tok->line_start - tok->buf; + Py_ssize_t multi_line_start = tok->multi_line_start - tok->buf; newbuf = (char *)PyMem_Realloc(newbuf, newsize); if (newbuf == NULL) { tok->done = E_NOMEM; @@ -382,6 +384,8 @@ tok_reserve_buf(struct tok_state *tok, Py_ssize_t size) tok->inp = tok->buf + oldsize; tok->end = tok->buf + newsize; tok->start = start < 0 ? NULL : tok->buf + start; + tok->line_start = line_start < 0 ? NULL : tok->buf + line_start; + tok->multi_line_start = multi_line_start < 0 ? NULL : tok->buf + multi_line_start; } return 1; } @@ -1883,6 +1887,7 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) while (end_quote_size != quote_size) { c = tok_nextc(tok); if (c == EOF || (quote_size == 1 && c == '\n')) { + assert(tok->multi_line_start != NULL); // shift the tok_state's location into // the start of string, and report the error // from the initial quote character From webhook-mailer at python.org Sat Jun 12 16:18:02 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Sat, 12 Jun 2021 20:18:02 -0000 Subject: [Python-checkins] bpo-44389: Remove duplicate SSL_OP_NO_TLSv1_2 flag (GH-26680) Message-ID: https://github.com/python/cpython/commit/cb7230c7a7d6d497e54c25e9ba640eec79de10f2 commit: cb7230c7a7d6d497e54c25e9ba640eec79de10f2 branch: main author: Erlend Egeberg Aasland committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-12T17:17:58-03:00 summary: bpo-44389: Remove duplicate SSL_OP_NO_TLSv1_2 flag (GH-26680) files: M Modules/_ssl.c diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 8daf04dd08bbb..1080fa6cffbd9 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -3587,7 +3587,7 @@ set_options(PySSLContext *self, PyObject *arg, void *c) long new_opts, opts, set, clear; long opt_no = ( SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | - SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_2 + SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 ); if (!PyArg_Parse(arg, "l", &new_opts)) From webhook-mailer at python.org Sat Jun 12 16:27:11 2021 From: webhook-mailer at python.org (pablogsal) Date: Sat, 12 Jun 2021 20:27:11 -0000 Subject: [Python-checkins] bpo-44396: Update multi-line-start location when reallocating tokenizer buffers (GH-26676) (GH-26695) Message-ID: https://github.com/python/cpython/commit/d03f342a8389f1ea9100efb0d1a205601e607254 commit: d03f342a8389f1ea9100efb0d1a205601e607254 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-12T21:27:02+01:00 summary: bpo-44396: Update multi-line-start location when reallocating tokenizer buffers (GH-26676) (GH-26695) Automerge-Triggered-By: GH:pablogsal (cherry picked from commit a342cc5891dbd8a08d40e9444f2e2c9e93258721) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst M Lib/test/test_eof.py M Parser/tokenizer.c diff --git a/Lib/test/test_eof.py b/Lib/test/test_eof.py index 2d3b4ae4e591ef..abcbf046e2cc22 100644 --- a/Lib/test/test_eof.py +++ b/Lib/test/test_eof.py @@ -29,6 +29,13 @@ def test_EOFS(self): else: raise support.TestFailed + def test_EOFS_with_file(self): + expect = ("(, line 1)") + with os_helper.temp_dir() as temp_dir: + file_name = script_helper.make_script(temp_dir, 'foo', """'''this is \na \ntest""") + rc, out, err = script_helper.assert_python_failure(file_name) + self.assertIn(b'unterminated triple-quoted string literal (detected at line 3)', err) + def test_eof_with_line_continuation(self): expect = "unexpected EOF while parsing (, line 1)" try: diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst new file mode 100644 index 00000000000000..be72a7111dc8ae --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst @@ -0,0 +1,2 @@ +Fix a possible crash in the tokenizer when raising syntax errors for +unclosed strings. Patch by Pablo Galindo. diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 6002f3e05a890c..be9b13ebabb8e3 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -372,6 +372,8 @@ tok_reserve_buf(struct tok_state *tok, Py_ssize_t size) if (newsize > tok->end - tok->buf) { char *newbuf = tok->buf; Py_ssize_t start = tok->start == NULL ? -1 : tok->start - tok->buf; + Py_ssize_t line_start = tok->start == NULL ? -1 : tok->line_start - tok->buf; + Py_ssize_t multi_line_start = tok->multi_line_start - tok->buf; newbuf = (char *)PyMem_Realloc(newbuf, newsize); if (newbuf == NULL) { tok->done = E_NOMEM; @@ -382,6 +384,8 @@ tok_reserve_buf(struct tok_state *tok, Py_ssize_t size) tok->inp = tok->buf + oldsize; tok->end = tok->buf + newsize; tok->start = start < 0 ? NULL : tok->buf + start; + tok->line_start = line_start < 0 ? NULL : tok->buf + line_start; + tok->multi_line_start = multi_line_start < 0 ? NULL : tok->buf + multi_line_start; } return 1; } @@ -1883,6 +1887,7 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) while (end_quote_size != quote_size) { c = tok_nextc(tok); if (c == EOF || (quote_size == 1 && c == '\n')) { + assert(tok->multi_line_start != NULL); // shift the tok_state's location into // the start of string, and report the error // from the initial quote character From webhook-mailer at python.org Sat Jun 12 18:07:28 2021 From: webhook-mailer at python.org (corona10) Date: Sat, 12 Jun 2021 22:07:28 -0000 Subject: [Python-checkins] bpo-43425: Update test_c_parser not to use TempdirManager (GH-26693) Message-ID: https://github.com/python/cpython/commit/736ed6f7a9f465ba728198e8bca81e5fbe71bc37 commit: 736ed6f7a9f465ba728198e8bca81e5fbe71bc37 branch: main author: Dong-hee Na committer: corona10 date: 2021-06-13T07:07:24+09:00 summary: bpo-43425: Update test_c_parser not to use TempdirManager (GH-26693) files: M Lib/test/test_peg_generator/test_c_parser.py diff --git a/Lib/test/test_peg_generator/test_c_parser.py b/Lib/test/test_peg_generator/test_c_parser.py index 3852cfbc477b6b..013b3afd594392 100644 --- a/Lib/test/test_peg_generator/test_c_parser.py +++ b/Lib/test/test_peg_generator/test_c_parser.py @@ -1,7 +1,9 @@ import sysconfig import textwrap import unittest -from distutils.tests.support import TempdirManager +import os +import shutil +import tempfile from pathlib import Path from test import test_tools @@ -68,20 +70,21 @@ def test_parse(self): """ -class TestCParser(TempdirManager, unittest.TestCase): +class TestCParser(unittest.TestCase): def setUp(self): self._backup_config_vars = dict(sysconfig._CONFIG_VARS) cmd = support.missing_compiler_executable() if cmd is not None: self.skipTest("The %r command is not found" % cmd) - super(TestCParser, self).setUp() - self.tmp_path = self.mkdtemp() + self.old_cwd = os.getcwd() + self.tmp_path = tempfile.mkdtemp() change_cwd = os_helper.change_cwd(self.tmp_path) change_cwd.__enter__() self.addCleanup(change_cwd.__exit__, None, None, None) def tearDown(self): - super(TestCParser, self).tearDown() + os.chdir(self.old_cwd) + shutil.rmtree(self.tmp_path) sysconfig._CONFIG_VARS.clear() sysconfig._CONFIG_VARS.update(self._backup_config_vars) From webhook-mailer at python.org Sat Jun 12 22:47:52 2021 From: webhook-mailer at python.org (terryjreedy) Date: Sun, 13 Jun 2021 02:47:52 -0000 Subject: [Python-checkins] Fix typos in multiple files (GH-26689) Message-ID: https://github.com/python/cpython/commit/17b16e13bb444001534ed6fccb459084596c8bcf commit: 17b16e13bb444001534ed6fccb459084596c8bcf branch: main author: Binbin committer: terryjreedy date: 2021-06-12T22:47:44-04:00 summary: Fix typos in multiple files (GH-26689) Co-authored-by: Terry Jan Reedy files: M Lib/_aix_support.py M Lib/ast.py M Lib/asyncio/proactor_events.py M Lib/contextlib.py M Lib/dataclasses.py M Lib/http/server.py M Lib/idlelib/config.py M Lib/idlelib/history.py M Lib/importlib/_bootstrap_external.py M Lib/multiprocessing/connection.py M Lib/platform.py M Lib/plistlib.py M Lib/pstats.py M Lib/socket.py M Lib/ssl.py M Lib/subprocess.py M Lib/symtable.py M Lib/test/test_descr.py M Lib/turtle.py M Lib/types.py M Lib/unittest/mock.py M Parser/tokenizer.c M Python/importlib_external.h M configure.ac diff --git a/Lib/_aix_support.py b/Lib/_aix_support.py index d27a1e8735de30..1d8482ff382507 100644 --- a/Lib/_aix_support.py +++ b/Lib/_aix_support.py @@ -47,7 +47,7 @@ def aix_platform(): # type: () -> str """ AIX filesets are identified by four decimal values: V.R.M.F. - V (version) and R (release) can be retreived using ``uname`` + V (version) and R (release) can be retrieved using ``uname`` Since 2007, starting with AIX 5.3 TL7, the M value has been included with the fileset bos.rte and represents the Technology Level (TL) of AIX. The F (Fix) value also increases, but is not diff --git a/Lib/ast.py b/Lib/ast.py index 64487d2f0a60e5..400d7c45146da8 100644 --- a/Lib/ast.py +++ b/Lib/ast.py @@ -1334,7 +1334,7 @@ def visit_UnaryOp(self, node): operator_precedence = self.unop_precedence[operator] with self.require_parens(operator_precedence, node): self.write(operator) - # factor prefixes (+, -, ~) shouldn't be seperated + # factor prefixes (+, -, ~) shouldn't be separated # from the value they belong, (e.g: +1 instead of + 1) if operator_precedence is not _Precedence.FACTOR: self.write(" ") diff --git a/Lib/asyncio/proactor_events.py b/Lib/asyncio/proactor_events.py index 45c11ee4b487ec..1d9e2fe2ca728e 100644 --- a/Lib/asyncio/proactor_events.py +++ b/Lib/asyncio/proactor_events.py @@ -221,7 +221,7 @@ def resume_reading(self): length = self._pending_data_length self._pending_data_length = -1 if length > -1: - # Call the protocol methode after calling _loop_reading(), + # Call the protocol method after calling _loop_reading(), # since the protocol can decide to pause reading again. self._loop.call_soon(self._data_received, self._data[:length], length) diff --git a/Lib/contextlib.py b/Lib/contextlib.py index eb5946145b47ee..1a8ef6122c8d47 100644 --- a/Lib/contextlib.py +++ b/Lib/contextlib.py @@ -224,7 +224,7 @@ async def __aexit__(self, typ, value, traceback): # was passed to throw() and later wrapped into a RuntimeError # (see PEP 479 for sync generators; async generators also # have this behavior). But do this only if the exception wrapped - # by the RuntimeError is actully Stop(Async)Iteration (see + # by the RuntimeError is actually Stop(Async)Iteration (see # issue29692). if isinstance(value, (StopIteration, StopAsyncIteration)): if exc.__cause__ is value: diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py index 79739976d3d29b..95ff39287bed61 100644 --- a/Lib/dataclasses.py +++ b/Lib/dataclasses.py @@ -1100,7 +1100,7 @@ def _process_class(cls, init, repr, eq, order, unsafe_hash, frozen, # _dataclass_getstate and _dataclass_setstate are needed for pickling frozen -# classes with slots. These could be slighly more performant if we generated +# classes with slots. These could be slightly more performant if we generated # the code instead of iterating over fields. But that can be a project for # another day, if performance becomes an issue. def _dataclass_getstate(self): diff --git a/Lib/http/server.py b/Lib/http/server.py index e985dfd5640086..4f9b8a16d45fe7 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -704,7 +704,7 @@ def send_head(self): # The test for this was added in test_httpserver.py # However, some OS platforms accept a trailingSlash as a filename # See discussion on python-dev and Issue34711 regarding - # parseing and rejection of filenames with a trailing slash + # parsing and rejection of filenames with a trailing slash if path.endswith("/"): self.send_error(HTTPStatus.NOT_FOUND, "File not found") return None diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py index 04444a3bf20b30..5ce5f4a4f7bd0d 100644 --- a/Lib/idlelib/config.py +++ b/Lib/idlelib/config.py @@ -16,7 +16,7 @@ default values. For 'highlight' and 'keys', user sections augment the default sections (and must, therefore, have distinct names). -Throughout this module there is an emphasis on returning useable defaults +Throughout this module there is an emphasis on returning usable defaults when a problem occurs in returning a requested configuration value back to idle. This is to allow IDLE to continue to function in spite of errors in the retrieval of config information. When a default is returned instead of diff --git a/Lib/idlelib/history.py b/Lib/idlelib/history.py index 7ce09253eff5c9..100f505256a940 100644 --- a/Lib/idlelib/history.py +++ b/Lib/idlelib/history.py @@ -29,7 +29,7 @@ def __init__(self, text): text.bind("<>", self.history_next) def history_next(self, event): - "Fetch later statement; start with ealiest if cyclic." + "Fetch later statement; start with earliest if cyclic." self.fetch(reverse=False) return "break" diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 009b45f00d8cf6..3cbbb80219cfcd 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -1178,7 +1178,7 @@ def __hash__(self): return hash(self.name) ^ hash(self.path) def create_module(self, spec): - """Create an unitialized extension module""" + """Create an uninitialized extension module""" module = _bootstrap._call_with_frames_removed( _imp.create_dynamic, spec) _bootstrap._verbose_message('extension module {!r} loaded from {!r}', diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py index 510e4b5aba44a6..1cca66d5661e34 100644 --- a/Lib/multiprocessing/connection.py +++ b/Lib/multiprocessing/connection.py @@ -943,7 +943,7 @@ def wait(object_list, timeout=None): return ready # -# Make connection and socket objects sharable if possible +# Make connection and socket objects shareable if possible # if sys.platform == 'win32': diff --git a/Lib/platform.py b/Lib/platform.py index d298a42edc8483..02152f6fc9bf86 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -5,7 +5,7 @@ If called from the command line, it prints the platform information concatenated as single string to stdout. The output - format is useable as part of a filename. + format is usable as part of a filename. """ # This module is maintained by Marc-Andre Lemburg . @@ -169,7 +169,7 @@ def libc_ver(executable=None, lib='', version='', chunksize=16384): Note that the function has intimate knowledge of how different libc versions add symbols to the executable and thus is probably - only useable for executables compiled using gcc. + only usable for executables compiled using gcc. The file is read and scanned in chunks of chunksize bytes. diff --git a/Lib/plistlib.py b/Lib/plistlib.py index 5772efdfe6710a..3ab71edc320af2 100644 --- a/Lib/plistlib.py +++ b/Lib/plistlib.py @@ -177,8 +177,8 @@ def parse(self, fileobj): return self.root def handle_entity_decl(self, entity_name, is_parameter_entity, value, base, system_id, public_id, notation_name): - # Reject plist files with entity declarations to avoid XML vulnerabilies in expat. - # Regular plist files don't contain those declerations, and Apple's plutil tool does not + # Reject plist files with entity declarations to avoid XML vulnerabilities in expat. + # Regular plist files don't contain those declarations, and Apple's plutil tool does not # accept them either. raise InvalidFileException("XML entity declarations are not supported in plist files") diff --git a/Lib/pstats.py b/Lib/pstats.py index e77459d38b33ec..8e0743f2e5f29d 100644 --- a/Lib/pstats.py +++ b/Lib/pstats.py @@ -522,7 +522,7 @@ def print_line(self, func): # hack: should print percentages class TupleComp: """This class provides a generic function for comparing any two tuples. Each instance records a list of tuple-indices (from most significant - to least significant), and sort direction (ascending or decending) for + to least significant), and sort direction (ascending or descending) for each tuple-index. The compare functions can then be used as the function argument to the system sort() function when a list of tuples need to be sorted in the instances order.""" diff --git a/Lib/socket.py b/Lib/socket.py index fc11eb783c3dd1..a64ae400ce9883 100755 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -13,7 +13,7 @@ socketpair() -- create a pair of new socket objects [*] fromfd() -- create a socket object from an open file descriptor [*] send_fds() -- Send file descriptor to the socket. -recv_fds() -- Recieve file descriptors from the socket. +recv_fds() -- Receive file descriptors from the socket. fromshare() -- create a socket object from data received from socket.share() [*] gethostname() -- return the current hostname gethostbyname() -- map a hostname to its IP number diff --git a/Lib/ssl.py b/Lib/ssl.py index e667e9658d5110..207925166efa35 100644 --- a/Lib/ssl.py +++ b/Lib/ssl.py @@ -368,7 +368,7 @@ def _ipaddress_match(cert_ipaddress, host_ip): (section 1.7.2 - "Out of Scope"). """ # OpenSSL may add a trailing newline to a subjectAltName's IP address, - # commonly woth IPv6 addresses. Strip off trailing \n. + # commonly with IPv6 addresses. Strip off trailing \n. ip = _inet_paton(cert_ipaddress.rstrip()) return ip == host_ip diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 8203aded7d5529..7a9ab5a4ed0ece 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -2086,7 +2086,7 @@ def send_signal(self, sig): try: os.kill(self.pid, sig) except ProcessLookupError: - # Supress the race condition error; bpo-40550. + # Suppress the race condition error; bpo-40550. pass def terminate(self): diff --git a/Lib/symtable.py b/Lib/symtable.py index 98db1e2557d37f..922854bf669b3c 100644 --- a/Lib/symtable.py +++ b/Lib/symtable.py @@ -62,7 +62,7 @@ def __repr__(self): def get_type(self): """Return the type of the symbol table. - The values retuned are 'class', 'module' and + The values returned are 'class', 'module' and 'function'. """ if self._table.type == _symtable.TYPE_MODULE: @@ -245,7 +245,7 @@ def is_parameter(self): return bool(self.__flags & DEF_PARAM) def is_global(self): - """Return *True* if the sysmbol is global. + """Return *True* if the symbol is global. """ return bool(self.__scope in (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT) or (self.__module_scope and self.__flags & DEF_BOUND)) diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 3cb923ed0520a3..0ff4d022586e18 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -5696,7 +5696,7 @@ class C(A): def test_incomplete_extend(self): """ - Extending an unitialized type with type->tp_mro == NULL must + Extending an uninitialized type with type->tp_mro == NULL must throw a reasonable TypeError exception, instead of failing with PyErr_BadInternalCall. """ diff --git a/Lib/turtle.py b/Lib/turtle.py index 7d94720f8131d6..95d55e9e1c8042 100644 --- a/Lib/turtle.py +++ b/Lib/turtle.py @@ -3826,7 +3826,7 @@ def write_docstringdict(filename="turtle_docstringdict"): default value is turtle_docstringdict Has to be called explicitly, (not used by the turtle-graphics classes) - The docstring dictionary will be written to the Python script .py + The docstring dictionary will be written to the Python script .py It is intended to serve as a template for translation of the docstrings into different languages. """ diff --git a/Lib/types.py b/Lib/types.py index c509b242d5d8f3..c665e6f8615ff8 100644 --- a/Lib/types.py +++ b/Lib/types.py @@ -158,7 +158,7 @@ class DynamicClassAttribute: attributes on the class with the same name. (Enum used this between Python versions 3.4 - 3.9 .) - Subclass from this to use a different method of accessing virtual atributes + Subclass from this to use a different method of accessing virtual attributes and still be treated properly by the inspect module. (Enum uses this since Python 3.10 .) diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index c6067151de14fe..a4e571a80508eb 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -2205,7 +2205,7 @@ async def _execute_mock_call(self, /, *args, **kwargs): try: result = next(effect) except StopIteration: - # It is impossible to propogate a StopIteration + # It is impossible to propagate a StopIteration # through coroutines because of PEP 479 raise StopAsyncIteration if _is_exception(result): diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index be9b13ebabb8e3..ba9366402babd3 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -1187,12 +1187,12 @@ static int verify_end_of_number(struct tok_state *tok, int c, const char *kind) { /* Emit a deprecation warning only if the numeric literal is immediately - * followed by one of keywords which can occurr after a numeric literal + * followed by one of keywords which can occur after a numeric literal * in valid code: "and", "else", "for", "if", "in", "is" and "or". * It allows to gradually deprecate existing valid code without adding * warning before error in most cases of invalid numeric literal (which - * would be confusiong and break existing tests). - * Raise a syntax error with slighly better message than plain + * would be confusing and break existing tests). + * Raise a syntax error with slightly better message than plain * "invalid syntax" if the numeric literal is immediately followed by * other keyword or identifier. */ diff --git a/Python/importlib_external.h b/Python/importlib_external.h index f8642890580d7b..778cca1718bf84 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1768,1002 +1768,1002 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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, - 3,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,78,41,7,114,158,0,0,0,114,241,0,0,0,114,186, - 0,0,0,90,14,99,114,101,97,116,101,95,100,121,110,97, - 109,105,99,114,172,0,0,0,114,141,0,0,0,114,65,0, - 0,0,41,3,114,143,0,0,0,114,209,0,0,0,114,243, - 0,0,0,32,32,32,114,7,0,0,0,114,238,0,0,0, - 156,4,0,0,115,14,0,0,0,4,2,6,1,4,255,6, - 2,8,1,4,255,4,2,114,9,0,0,0,122,33,69,120, + 3,122,40,67,114,101,97,116,101,32,97,110,32,117,110,105, + 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,78,41,7,114,158,0,0,0,114,241,0,0,0, + 114,186,0,0,0,90,14,99,114,101,97,116,101,95,100,121, + 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, + 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, + 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, + 0,0,156,4,0,0,115,14,0,0,0,4,2,6,1,4, + 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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,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,241,0,0,0,114,186,0,0,0,90,12,101, + 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, + 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, + 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, + 0,0,164,4,0,0,115,8,0,0,0,14,2,6,1,8, + 1,8,255,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,38, + 0,0,0,135,2,116,0,124,0,106,1,131,1,100,1,25, + 0,138,2,116,2,136,2,102,1,100,2,100,3,132,8,116, + 3,68,0,131,1,131,1,83,0,41,5,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,3, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,51,0,0,0,115,28,0,0,0,129,0,124, + 0,93,9,125,1,137,2,100,0,124,1,23,0,107,2,86, + 0,1,0,113,2,100,1,83,0,41,2,114,235,0,0,0, + 78,114,12,0,0,0,41,3,114,5,0,0,0,218,6,115, + 117,102,102,105,120,218,9,102,105,108,101,95,110,97,109,101, + 32,32,128,114,7,0,0,0,114,8,0,0,0,173,4,0, + 0,115,6,0,0,0,6,128,2,1,20,255,114,9,0,0, + 0,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,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101, + 120,112,114,62,78,41,4,114,73,0,0,0,114,65,0,0, + 0,218,3,97,110,121,114,231,0,0,0,41,3,114,143,0, + 0,0,114,162,0,0,0,114,42,1,0,0,32,32,64,114, + 7,0,0,0,114,205,0,0,0,170,4,0,0,115,10,0, + 0,0,2,128,14,2,12,1,2,1,8,255,114,9,0,0, + 0,122,30,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,1,0, + 0,0,67,0,0,0,114,24,0,0,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, + 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, + 114,240,0,0,0,176,4,0,0,114,25,0,0,0,114,9, + 0,0,0,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,1,0, + 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32, + 32,114,7,0,0,0,114,0,1,0,0,180,4,0,0,114, + 25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24, + 1,0,0,114,25,1,0,0,114,74,0,0,0,114,246,0, + 0,0,32,32,114,7,0,0,0,114,202,0,0,0,184,4, + 0,0,114,26,1,0,0,114,9,0,0,0,122,32,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,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,241,0,0,0,114,186,0,0,0,90,12,101,120,101, - 99,95,100,121,110,97,109,105,99,114,172,0,0,0,114,141, - 0,0,0,114,65,0,0,0,169,2,114,143,0,0,0,114, - 243,0,0,0,32,32,114,7,0,0,0,114,244,0,0,0, - 164,4,0,0,115,8,0,0,0,14,2,6,1,8,1,8, - 255,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,38,0,0, - 0,135,2,116,0,124,0,106,1,131,1,100,1,25,0,138, - 2,116,2,136,2,102,1,100,2,100,3,132,8,116,3,68, - 0,131,1,131,1,83,0,41,5,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,3,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,51,0,0,0,115,28,0,0,0,129,0,124,0,93, - 9,125,1,137,2,100,0,124,1,23,0,107,2,86,0,1, - 0,113,2,100,1,83,0,41,2,114,235,0,0,0,78,114, - 12,0,0,0,41,3,114,5,0,0,0,218,6,115,117,102, - 102,105,120,218,9,102,105,108,101,95,110,97,109,101,32,32, - 128,114,7,0,0,0,114,8,0,0,0,173,4,0,0,115, - 6,0,0,0,6,128,2,1,20,255,114,9,0,0,0,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,46, - 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, - 114,62,78,41,4,114,73,0,0,0,114,65,0,0,0,218, - 3,97,110,121,114,231,0,0,0,41,3,114,143,0,0,0, - 114,162,0,0,0,114,42,1,0,0,32,32,64,114,7,0, - 0,0,114,205,0,0,0,170,4,0,0,115,10,0,0,0, - 2,128,14,2,12,1,2,1,8,255,114,9,0,0,0,122, - 30,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,1,0,0,0, - 67,0,0,0,114,24,0,0,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,12,0, - 0,0,114,246,0,0,0,32,32,114,7,0,0,0,114,240, - 0,0,0,176,4,0,0,114,25,0,0,0,114,9,0,0, - 0,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,1,0,0,0, - 67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114, - 7,0,0,0,114,0,1,0,0,180,4,0,0,114,25,0, - 0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,1,0, - 0,114,25,1,0,0,114,74,0,0,0,114,246,0,0,0, - 32,32,114,7,0,0,0,114,202,0,0,0,184,4,0,0, - 114,26,1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1, - 0,0,114,238,0,0,0,114,244,0,0,0,114,205,0,0, - 0,114,240,0,0,0,114,0,1,0,0,114,159,0,0,0, - 114,202,0,0,0,114,12,0,0,0,114,7,0,0,0,114, - 28,1,0,0,137,4,0,0,115,24,0,0,0,8,0,4, - 2,8,6,8,4,8,4,8,3,8,8,8,6,8,6,8, - 4,2,4,14,1,114,9,0,0,0,114,28,1,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100,20,100, - 21,132,0,90,13,100,22,100,23,132,0,90,14,100,24,83, - 0,41,25,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,99,4, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, - 0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69,0,0, - 0,41,6,218,5,95,110,97,109,101,218,5,95,112,97,116, - 104,114,136,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,12,95,112,97, - 116,104,95,102,105,110,100,101,114,169,4,114,143,0,0,0, - 114,141,0,0,0,114,65,0,0,0,90,11,112,97,116,104, - 95,102,105,110,100,101,114,32,32,32,32,114,7,0,0,0, - 114,235,0,0,0,197,4,0,0,115,8,0,0,0,6,1, - 6,1,14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1,100,4, - 102,2,83,0,41,6,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,97,0,0,0,114,10,0,0,0, - 41,2,114,16,0,0,0,114,65,0,0,0,90,8,95,95, - 112,97,116,104,95,95,78,41,2,114,45,1,0,0,114,104, - 0,0,0,41,4,114,143,0,0,0,114,38,1,0,0,218, - 3,100,111,116,90,2,109,101,32,32,32,32,114,7,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,203,4,0,0,115,8, - 0,0,0,18,2,8,1,4,2,8,3,114,9,0,0,0, - 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,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,52,1,0,0,114,154,0,0,0,114, - 16,0,0,0,218,7,109,111,100,117,108,101,115,41,3,114, - 143,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,32,32,32,114,7,0,0,0, - 114,47,1,0,0,213,4,0,0,115,4,0,0,0,12,1, - 16,1,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80,0, - 0,0,116,0,124,0,160,1,161,0,131,1,125,1,124,1, - 124,0,106,2,107,3,114,37,124,0,160,3,124,0,106,4, - 124,1,161,2,125,2,124,2,100,0,117,1,114,34,124,2, - 106,5,100,0,117,0,114,34,124,2,106,6,114,34,124,2, - 106,6,124,0,95,7,124,1,124,0,95,2,124,0,106,7, - 83,0,114,69,0,0,0,41,8,114,136,0,0,0,114,47, - 1,0,0,114,48,1,0,0,114,49,1,0,0,114,45,1, - 0,0,114,163,0,0,0,114,201,0,0,0,114,46,1,0, - 0,41,3,114,143,0,0,0,90,11,112,97,114,101,110,116, - 95,112,97,116,104,114,209,0,0,0,32,32,32,114,7,0, - 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, - 217,4,0,0,115,16,0,0,0,12,2,10,1,14,1,18, - 3,6,1,8,1,6,1,6,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0, - 243,12,0,0,0,116,0,124,0,160,1,161,0,131,1,83, - 0,114,69,0,0,0,41,2,218,4,105,116,101,114,114,54, - 1,0,0,114,20,1,0,0,32,114,7,0,0,0,218,8, - 95,95,105,116,101,114,95,95,230,4,0,0,243,2,0,0, - 0,12,1,114,9,0,0,0,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,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,54, - 1,0,0,41,2,114,143,0,0,0,218,5,105,110,100,101, - 120,32,32,114,7,0,0,0,218,11,95,95,103,101,116,105, - 116,101,109,95,95,233,4,0,0,114,58,1,0,0,114,9, - 0,0,0,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, - 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,46, - 1,0,0,41,3,114,143,0,0,0,114,60,1,0,0,114, - 65,0,0,0,32,32,32,114,7,0,0,0,218,11,95,95, - 115,101,116,105,116,101,109,95,95,236,4,0,0,115,2,0, - 0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,55,1,0,0,114, - 69,0,0,0,41,2,114,4,0,0,0,114,54,1,0,0, - 114,20,1,0,0,32,114,7,0,0,0,218,7,95,95,108, - 101,110,95,95,239,4,0,0,114,58,1,0,0,114,9,0, - 0,0,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,3,0,0,0,67,0,0,0,243, - 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,89,0,0,0, - 114,46,1,0,0,114,20,1,0,0,32,114,7,0,0,0, - 218,8,95,95,114,101,112,114,95,95,242,4,0,0,114,58, - 1,0,0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,32,32, - 114,7,0,0,0,218,12,95,95,99,111,110,116,97,105,110, - 115,95,95,245,4,0,0,114,58,1,0,0,114,9,0,0, - 0,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,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, - 46,1,0,0,114,61,0,0,0,114,66,1,0,0,32,32, - 114,7,0,0,0,114,61,0,0,0,248,4,0,0,243,2, - 0,0,0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0,114,150, - 0,0,0,114,151,0,0,0,114,235,0,0,0,114,52,1, - 0,0,114,47,1,0,0,114,54,1,0,0,114,57,1,0, - 0,114,61,1,0,0,114,62,1,0,0,114,63,1,0,0, - 114,65,1,0,0,114,68,1,0,0,114,61,0,0,0,114, - 12,0,0,0,114,7,0,0,0,114,44,1,0,0,190,4, - 0,0,115,26,0,0,0,8,0,4,1,8,6,8,6,8, - 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, - 3,114,9,0,0,0,114,44,1,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, - 115,88,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,100,18,132,0,90,12,100,19,83,0,41,20,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,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,44,1,0,0,114,46,1,0,0,114,50, - 1,0,0,32,32,32,32,114,7,0,0,0,114,235,0,0, - 0,254,4,0,0,115,2,0,0,0,18,1,114,9,0,0, - 0,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,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,24,0,0,0,116,0,160,1,100,1,116,2,161,2, - 1,0,100,2,160,3,124,0,106,4,161,1,83,0,41,4, - 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,82,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,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0, - 0,114,101,0,0,0,114,89,0,0,0,114,149,0,0,0, - 41,1,114,243,0,0,0,32,114,7,0,0,0,218,11,109, - 111,100,117,108,101,95,114,101,112,114,1,5,0,0,115,8, - 0,0,0,6,7,2,1,4,255,12,2,114,9,0,0,0, - 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,1,0,0,0,67, - 0,0,0,114,24,0,0,0,41,2,78,84,114,12,0,0, - 0,114,246,0,0,0,32,32,114,7,0,0,0,114,205,0, - 0,0,12,5,0,0,243,2,0,0,0,4,1,114,9,0, - 0,0,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,1,0,0,0, - 67,0,0,0,114,24,0,0,0,41,2,78,114,10,0,0, - 0,114,12,0,0,0,114,246,0,0,0,32,32,114,7,0, - 0,0,114,0,1,0,0,15,5,0,0,114,72,1,0,0, - 114,9,0,0,0,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,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, - 10,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,32,32,114,7,0,0,0,114,240, - 0,0,0,18,5,0,0,114,69,1,0,0,114,9,0,0, - 0,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,1,0,0,0,67,0,0, - 0,114,24,0,0,0,114,236,0,0,0,114,12,0,0,0, - 114,237,0,0,0,32,32,114,7,0,0,0,114,238,0,0, - 0,21,5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, - 0,0,114,12,0,0,0,114,40,1,0,0,32,32,114,7, - 0,0,0,114,244,0,0,0,24,5,0,0,114,72,1,0, - 0,114,9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114,172, - 0,0,0,114,46,1,0,0,114,245,0,0,0,114,246,0, - 0,0,32,32,114,7,0,0,0,114,247,0,0,0,27,5, - 0,0,115,8,0,0,0,6,7,4,1,4,255,12,3,114, - 9,0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,67,0,0,0,115,22,0,0,0,100,1,100,2, - 108,0,109,1,125,2,1,0,124,2,124,0,106,2,131,1, - 83,0,41,3,78,114,0,0,0,0,41,1,218,15,78,97, - 109,101,115,112,97,99,101,82,101,97,100,101,114,41,3,114, - 30,1,0,0,114,73,1,0,0,114,46,1,0,0,41,3, - 114,143,0,0,0,114,243,0,0,0,114,73,1,0,0,32, - 32,32,114,7,0,0,0,114,31,1,0,0,39,5,0,0, - 115,4,0,0,0,12,1,10,1,114,9,0,0,0,122,36, - 95,78,97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0, - 0,114,150,0,0,0,114,235,0,0,0,114,232,0,0,0, - 114,71,1,0,0,114,205,0,0,0,114,0,1,0,0,114, - 240,0,0,0,114,238,0,0,0,114,244,0,0,0,114,247, - 0,0,0,114,31,1,0,0,114,12,0,0,0,114,7,0, - 0,0,114,70,1,0,0,253,4,0,0,115,22,0,0,0, - 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, - 8,3,8,3,12,12,114,9,0,0,0,114,70,1,0,0, - 99,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,7, - 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, - 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, - 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, - 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, - 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, - 41,21,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,0, + 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,235,0,0,0,114,15,1,0,0,114, + 21,1,0,0,114,238,0,0,0,114,244,0,0,0,114,205, + 0,0,0,114,240,0,0,0,114,0,1,0,0,114,159,0, + 0,0,114,202,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,28,1,0,0,137,4,0,0,115,24,0,0,0,8, + 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, + 6,8,4,2,4,14,1,114,9,0,0,0,114,28,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100, + 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, + 24,83,0,41,25,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, + 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69, + 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, + 97,116,104,114,136,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,12,95, + 112,97,116,104,95,102,105,110,100,101,114,169,4,114,143,0, + 0,0,114,141,0,0,0,114,65,0,0,0,90,11,112,97, + 116,104,95,102,105,110,100,101,114,32,32,32,32,114,7,0, + 0,0,114,235,0,0,0,197,4,0,0,115,8,0,0,0, + 6,1,6,1,14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1, + 100,4,102,2,83,0,41,6,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,97,0,0,0,114,10,0, + 0,0,41,2,114,16,0,0,0,114,65,0,0,0,90,8, + 95,95,112,97,116,104,95,95,78,41,2,114,45,1,0,0, + 114,104,0,0,0,41,4,114,143,0,0,0,114,38,1,0, + 0,218,3,100,111,116,90,2,109,101,32,32,32,32,114,7, + 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,203,4,0,0, + 115,8,0,0,0,18,2,8,1,4,2,8,3,114,9,0, + 0,0,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,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,52,1,0,0,114,154,0,0, + 0,114,16,0,0,0,218,7,109,111,100,117,108,101,115,41, + 3,114,143,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,32,32,32,114,7,0, + 0,0,114,47,1,0,0,213,4,0,0,115,4,0,0,0, + 12,1,16,1,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115, + 80,0,0,0,116,0,124,0,160,1,161,0,131,1,125,1, + 124,1,124,0,106,2,107,3,114,37,124,0,160,3,124,0, + 106,4,124,1,161,2,125,2,124,2,100,0,117,1,114,34, + 124,2,106,5,100,0,117,0,114,34,124,2,106,6,114,34, + 124,2,106,6,124,0,95,7,124,1,124,0,95,2,124,0, + 106,7,83,0,114,69,0,0,0,41,8,114,136,0,0,0, + 114,47,1,0,0,114,48,1,0,0,114,49,1,0,0,114, + 45,1,0,0,114,163,0,0,0,114,201,0,0,0,114,46, + 1,0,0,41,3,114,143,0,0,0,90,11,112,97,114,101, + 110,116,95,112,97,116,104,114,209,0,0,0,32,32,32,114, + 7,0,0,0,218,12,95,114,101,99,97,108,99,117,108,97, + 116,101,217,4,0,0,115,16,0,0,0,12,2,10,1,14, + 1,18,3,6,1,8,1,6,1,6,1,114,9,0,0,0, + 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,3,0,0,0,67,0, + 0,0,243,12,0,0,0,116,0,124,0,160,1,161,0,131, + 1,83,0,114,69,0,0,0,41,2,218,4,105,116,101,114, + 114,54,1,0,0,114,20,1,0,0,32,114,7,0,0,0, + 218,8,95,95,105,116,101,114,95,95,230,4,0,0,243,2, + 0,0,0,12,1,114,9,0,0,0,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,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,54,1,0,0,41,2,114,143,0,0,0,218,5,105,110, + 100,101,120,32,32,114,7,0,0,0,218,11,95,95,103,101, + 116,105,116,101,109,95,95,233,4,0,0,114,58,1,0,0, + 114,9,0,0,0,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,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,46,1,0,0,41,3,114,143,0,0,0,114,60,1,0, + 0,114,65,0,0,0,32,32,32,114,7,0,0,0,218,11, + 95,95,115,101,116,105,116,101,109,95,95,236,4,0,0,115, + 2,0,0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,55,1,0, + 0,114,69,0,0,0,41,2,114,4,0,0,0,114,54,1, + 0,0,114,20,1,0,0,32,114,7,0,0,0,218,7,95, + 95,108,101,110,95,95,239,4,0,0,114,58,1,0,0,114, + 9,0,0,0,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,3,0,0,0,67,0,0, + 0,243,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,89,0, + 0,0,114,46,1,0,0,114,20,1,0,0,32,114,7,0, + 0,0,218,8,95,95,114,101,112,114,95,95,242,4,0,0, + 114,58,1,0,0,114,9,0,0,0,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, + 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,143,0,0,0,218,4,105,116,101,109, + 32,32,114,7,0,0,0,218,12,95,95,99,111,110,116,97, + 105,110,115,95,95,245,4,0,0,114,58,1,0,0,114,9, + 0,0,0,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,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,46,1,0,0,114,61,0,0,0,114,66,1,0,0, + 32,32,114,7,0,0,0,114,61,0,0,0,248,4,0,0, + 243,2,0,0,0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0, + 114,150,0,0,0,114,151,0,0,0,114,235,0,0,0,114, + 52,1,0,0,114,47,1,0,0,114,54,1,0,0,114,57, + 1,0,0,114,61,1,0,0,114,62,1,0,0,114,63,1, + 0,0,114,65,1,0,0,114,68,1,0,0,114,61,0,0, + 0,114,12,0,0,0,114,7,0,0,0,114,44,1,0,0, + 190,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, + 6,8,10,8,4,8,13,8,3,8,3,8,3,8,3,8, + 3,12,3,114,9,0,0,0,114,44,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0, + 0,0,115,88,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,100,18,132,0,90,12,100,19,83,0,41, + 20,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,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,44,1,0,0,114,46,1,0,0, + 114,50,1,0,0,32,32,32,32,114,7,0,0,0,114,235, + 0,0,0,254,4,0,0,115,2,0,0,0,18,1,114,9, + 0,0,0,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,1, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, - 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, - 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, - 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, - 1,0,113,7,100,1,83,0,41,3,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,41,6,218, - 4,108,105,115,116,114,16,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,75,1,0,0, - 41,2,114,141,0,0,0,218,6,102,105,110,100,101,114,32, - 32,114,7,0,0,0,114,75,1,0,0,50,5,0,0,115, - 14,0,0,0,22,4,8,1,10,1,10,1,8,1,2,128, - 4,252,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0, - 0,0,9,0,0,0,67,0,0,0,115,78,0,0,0,116, - 0,106,1,100,1,117,1,114,14,116,0,106,1,115,14,116, - 2,160,3,100,2,116,4,161,2,1,0,116,0,106,1,68, - 0,93,18,125,1,9,0,124,1,124,0,131,1,2,0,1, - 0,83,0,35,0,4,0,116,5,121,38,1,0,1,0,1, - 0,89,0,113,17,37,0,100,1,83,0,119,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,16,0,0,0, - 218,10,112,97,116,104,95,104,111,111,107,115,114,99,0,0, - 0,114,100,0,0,0,114,161,0,0,0,114,142,0,0,0, - 41,2,114,65,0,0,0,90,4,104,111,111,107,32,32,114, - 7,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, - 115,60,5,0,0,115,22,0,0,0,16,3,12,1,10,1, - 2,1,12,1,2,128,12,1,4,1,2,128,4,2,2,253, - 115,12,0,0,0,148,3,26,2,154,7,35,9,166,1,35, - 9,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,8,0,0,0,67,0,0,0,115,104, - 0,0,0,124,1,100,1,107,2,114,21,9,0,116,0,160, - 1,161,0,125,1,110,11,35,0,4,0,116,2,121,51,1, - 0,1,0,1,0,89,0,100,2,83,0,37,0,9,0,116, - 3,106,4,124,1,25,0,125,2,124,2,83,0,35,0,4, - 0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,10,0,0,0,78,41,7,114,19,0,0,0,114,82, - 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, - 100,69,114,114,111,114,114,16,0,0,0,114,77,1,0,0, - 218,8,75,101,121,69,114,114,111,114,114,81,1,0,0,41, - 3,114,220,0,0,0,114,65,0,0,0,114,79,1,0,0, - 32,32,32,114,7,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,73,5, - 0,0,115,36,0,0,0,8,8,2,1,10,1,2,128,12, - 1,6,3,2,128,2,1,10,1,4,4,2,128,12,253,10, - 1,12,1,4,1,2,128,2,253,2,250,115,24,0,0,0, - 133,4,10,0,138,7,20,7,150,5,29,0,157,17,49,7, - 178,1,49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138, - 0,0,0,116,0,124,2,100,1,131,2,114,27,116,1,160, - 2,124,2,161,1,155,0,100,2,157,2,125,3,116,3,160, - 4,124,3,116,5,161,2,1,0,124,2,160,6,124,1,161, - 1,92,2,125,4,125,5,110,21,116,1,160,2,124,2,161, - 1,155,0,100,3,157,2,125,3,116,3,160,4,124,3,116, - 5,161,2,1,0,124,2,160,7,124,1,161,1,125,4,103, - 0,125,5,124,4,100,0,117,1,114,58,116,1,160,8,124, - 1,124,4,161,2,83,0,116,1,160,9,124,1,100,0,161, - 2,125,6,124,5,124,6,95,10,124,6,83,0,41,4,78, - 114,160,0,0,0,122,53,46,102,105,110,100,95,115,112,101, - 99,40,41,32,110,111,116,32,102,111,117,110,100,59,32,102, - 97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,102, - 105,110,100,95,108,111,97,100,101,114,40,41,122,53,46,102, - 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, - 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, - 101,40,41,41,11,114,152,0,0,0,114,158,0,0,0,90, - 12,95,111,98,106,101,99,116,95,110,97,109,101,114,99,0, - 0,0,114,100,0,0,0,114,161,0,0,0,114,160,0,0, - 0,114,228,0,0,0,114,223,0,0,0,114,206,0,0,0, - 114,201,0,0,0,41,7,114,220,0,0,0,114,162,0,0, - 0,114,79,1,0,0,114,165,0,0,0,114,163,0,0,0, - 114,164,0,0,0,114,209,0,0,0,32,32,32,32,32,32, - 32,114,7,0,0,0,218,16,95,108,101,103,97,99,121,95, - 103,101,116,95,115,112,101,99,95,5,0,0,115,26,0,0, - 0,10,4,16,1,12,2,16,1,16,2,12,2,10,1,4, - 1,8,1,12,1,12,1,6,1,4,1,114,9,0,0,0, - 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,5,0,0,0,67, - 0,0,0,115,166,0,0,0,103,0,125,4,124,2,68,0, - 93,67,125,5,116,0,124,5,116,1,116,2,102,2,131,2, - 115,14,113,4,124,0,160,3,124,5,161,1,125,6,124,6, - 100,1,117,1,114,71,116,4,124,6,100,2,131,2,114,35, - 124,6,160,5,124,1,124,3,161,2,125,7,110,6,124,0, - 160,6,124,1,124,6,161,2,125,7,124,7,100,1,117,0, - 114,46,113,4,124,7,106,7,100,1,117,1,114,55,124,7, - 2,0,1,0,83,0,124,7,106,8,125,8,124,8,100,1, - 117,0,114,66,116,9,100,3,131,1,130,1,124,4,160,10, - 124,8,161,1,1,0,113,4,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,225,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,184, - 0,0,0,114,109,0,0,0,218,5,98,121,116,101,115,114, - 84,1,0,0,114,152,0,0,0,114,225,0,0,0,114,85, - 1,0,0,114,163,0,0,0,114,201,0,0,0,114,142,0, - 0,0,114,190,0,0,0,114,158,0,0,0,114,206,0,0, - 0,41,9,114,220,0,0,0,114,162,0,0,0,114,65,0, - 0,0,114,224,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,79, - 1,0,0,114,209,0,0,0,114,164,0,0,0,32,32,32, - 32,32,32,32,32,32,114,7,0,0,0,218,9,95,103,101, - 116,95,115,112,101,99,116,5,0,0,115,42,0,0,0,4, - 5,8,1,14,1,2,1,10,1,8,1,10,1,14,1,12, - 2,8,1,2,1,10,1,8,1,6,1,8,1,8,1,10, - 5,2,128,12,2,6,1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,94,0,0,0,124,2, - 100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3,100,1,117,0,114,45, - 124,4,106,4,125,5,124,5,114,43,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,124,4,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,16,0,0,0,114,65,0,0,0,114,88,1,0,0,114, - 163,0,0,0,114,201,0,0,0,114,204,0,0,0,114,44, - 1,0,0,41,6,114,220,0,0,0,114,162,0,0,0,114, - 65,0,0,0,114,224,0,0,0,114,209,0,0,0,114,87, - 1,0,0,32,32,32,32,32,32,114,7,0,0,0,114,225, - 0,0,0,148,5,0,0,115,26,0,0,0,8,6,6,1, - 14,1,8,1,4,1,10,1,6,1,4,1,6,3,16,1, - 4,1,4,2,4,2,114,9,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100, - 1,116,2,161,2,1,0,124,0,160,3,124,1,124,2,161, - 2,125,3,124,3,100,2,117,0,114,18,100,2,83,0,124, - 3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46, - 102,105,110,100,95,109,111,100,117,108,101,40,41,32,105,115, - 32,100,101,112,114,101,99,97,116,101,100,32,97,110,100,32, - 115,108,97,116,101,100,32,102,111,114,32,114,101,109,111,118, - 97,108,32,105,110,32,80,121,116,104,111,110,32,51,46,49, - 50,59,32,117,115,101,32,102,105,110,100,95,115,112,101,99, - 40,41,32,105,110,115,116,101,97,100,78,114,226,0,0,0, - 114,227,0,0,0,32,32,32,32,114,7,0,0,0,114,228, - 0,0,0,172,5,0,0,115,14,0,0,0,6,8,2,2, - 4,254,12,3,8,1,4,1,6,1,114,9,0,0,0,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,0,0,0,0,0,0,0,0, - 0,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,2,1,0,124,2,106, - 2,124,0,105,0,124,1,164,1,142,1,83,0,41,4,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,78, - 41,3,90,18,105,109,112,111,114,116,108,105,98,46,109,101, - 116,97,100,97,116,97,114,89,1,0,0,218,18,102,105,110, - 100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,41, - 3,114,144,0,0,0,114,145,0,0,0,114,89,1,0,0, - 32,32,32,114,7,0,0,0,114,90,1,0,0,188,5,0, - 0,115,4,0,0,0,12,10,16,1,114,9,0,0,0,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,114,69, - 0,0,0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114,233,0, - 0,0,114,84,1,0,0,114,85,1,0,0,114,88,1,0, - 0,114,225,0,0,0,114,228,0,0,0,114,90,1,0,0, - 114,12,0,0,0,114,7,0,0,0,114,74,1,0,0,46, - 5,0,0,115,36,0,0,0,8,0,4,2,2,2,10,1, - 2,9,10,1,2,12,10,1,2,21,10,1,2,20,12,1, - 2,31,12,1,2,23,12,1,2,15,14,1,114,9,0,0, - 0,114,74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,114,0,0,0, - 135,5,103,0,125,3,124,2,68,0,93,16,92,2,138,5, - 125,4,124,3,160,0,136,5,102,1,100,1,100,2,132,8, - 124,4,68,0,131,1,161,1,1,0,113,5,124,3,124,0, - 95,1,124,1,112,28,100,3,124,0,95,2,116,3,124,0, - 106,2,131,1,115,44,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,3,0,0, - 0,51,0,0,0,115,24,0,0,0,129,0,124,0,93,7, - 125,1,124,1,137,2,102,2,86,0,1,0,113,2,100,0, - 83,0,114,69,0,0,0,114,12,0,0,0,41,3,114,5, - 0,0,0,114,41,1,0,0,114,163,0,0,0,32,32,128, - 114,7,0,0,0,114,8,0,0,0,217,5,0,0,115,4, - 0,0,0,6,128,18,0,114,9,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,97,0,0,0,114,130,0,0,0,78,41, - 11,114,190,0,0,0,218,8,95,108,111,97,100,101,114,115, - 114,65,0,0,0,114,86,0,0,0,114,67,0,0,0,114, - 19,0,0,0,114,82,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,6,114, - 143,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,211,0,0,0,114,163,0,0,0,32,32,32,32, - 32,64,114,7,0,0,0,114,235,0,0,0,211,5,0,0, - 115,22,0,0,0,2,128,4,4,12,1,26,1,6,1,10, - 2,10,1,18,1,6,1,8,1,12,1,114,9,0,0,0, - 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,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,130,0,0, - 0,78,41,1,114,93,1,0,0,114,20,1,0,0,32,114, - 7,0,0,0,114,75,1,0,0,227,5,0,0,114,81,0, - 0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0,0,0,116, - 0,160,1,100,1,116,2,161,2,1,0,124,0,160,3,124, - 1,161,1,125,2,124,2,100,2,117,0,114,19,100,2,103, - 0,102,2,83,0,124,2,106,4,124,2,106,5,112,25,103, - 0,102,2,83,0,41,3,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, + 0,0,0,115,24,0,0,0,116,0,160,1,100,1,116,2, + 161,2,1,0,100,2,160,3,124,0,106,4,161,1,83,0, + 41,4,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,82,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,40,41,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, + 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, + 80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100, + 0,0,0,114,101,0,0,0,114,89,0,0,0,114,149,0, + 0,0,41,1,114,243,0,0,0,32,114,7,0,0,0,218, + 11,109,111,100,117,108,101,95,114,101,112,114,1,5,0,0, + 115,8,0,0,0,6,7,2,1,4,255,12,2,114,9,0, + 0,0,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,1,0,0, + 0,67,0,0,0,114,24,0,0,0,41,2,78,84,114,12, + 0,0,0,114,246,0,0,0,32,32,114,7,0,0,0,114, + 205,0,0,0,12,5,0,0,243,2,0,0,0,4,1,114, + 9,0,0,0,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,1,0, + 0,0,67,0,0,0,114,24,0,0,0,41,2,78,114,10, + 0,0,0,114,12,0,0,0,114,246,0,0,0,32,32,114, + 7,0,0,0,114,0,1,0,0,15,5,0,0,114,72,1, + 0,0,114,9,0,0,0,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,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,10,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,32,32,114,7,0,0,0, + 114,240,0,0,0,18,5,0,0,114,69,1,0,0,114,9, + 0,0,0,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,1,0,0,0,67, + 0,0,0,114,24,0,0,0,114,236,0,0,0,114,12,0, + 0,0,114,237,0,0,0,32,32,114,7,0,0,0,114,238, + 0,0,0,21,5,0,0,114,239,0,0,0,114,9,0,0, + 0,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,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,0,83,0,114, + 69,0,0,0,114,12,0,0,0,114,40,1,0,0,32,32, + 114,7,0,0,0,114,244,0,0,0,24,5,0,0,114,72, + 1,0,0,114,9,0,0,0,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,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,3,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, - 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,122,101, - 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, - 108,111,97,100,101,114,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, + 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,78,41,4,114,158,0,0,0, + 114,172,0,0,0,114,46,1,0,0,114,245,0,0,0,114, + 246,0,0,0,32,32,114,7,0,0,0,114,247,0,0,0, + 27,5,0,0,115,8,0,0,0,6,7,4,1,4,255,12, + 3,114,9,0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,67,0,0,0,115,22,0,0,0,100,1, + 100,2,108,0,109,1,125,2,1,0,124,2,124,0,106,2, + 131,1,83,0,41,3,78,114,0,0,0,0,41,1,218,15, + 78,97,109,101,115,112,97,99,101,82,101,97,100,101,114,41, + 3,114,30,1,0,0,114,73,1,0,0,114,46,1,0,0, + 41,3,114,143,0,0,0,114,243,0,0,0,114,73,1,0, + 0,32,32,32,114,7,0,0,0,114,31,1,0,0,39,5, + 0,0,115,4,0,0,0,12,1,10,1,114,9,0,0,0, + 122,36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148, + 0,0,0,114,150,0,0,0,114,235,0,0,0,114,232,0, + 0,0,114,71,1,0,0,114,205,0,0,0,114,0,1,0, + 0,114,240,0,0,0,114,238,0,0,0,114,244,0,0,0, + 114,247,0,0,0,114,31,1,0,0,114,12,0,0,0,114, + 7,0,0,0,114,70,1,0,0,253,4,0,0,115,22,0, + 0,0,8,0,8,1,2,3,10,1,8,10,8,3,8,3, + 8,3,8,3,8,3,12,12,114,9,0,0,0,114,70,1, + 0,0,99,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,7,100,6,100,7,132,0,131,1,90,8,101,7,100,8, + 100,9,132,0,131,1,90,9,101,7,100,19,100,11,100,12, + 132,1,131,1,90,10,101,7,100,20,100,13,100,14,132,1, + 131,1,90,11,101,7,100,19,100,15,100,16,132,1,131,1, + 90,12,101,4,100,17,100,18,132,0,131,1,90,13,100,10, + 83,0,41,21,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,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,64,0,0,0,116,0,116,1,106,2, + 160,3,161,0,131,1,68,0,93,22,92,2,125,0,125,1, + 124,1,100,1,117,0,114,20,116,1,106,2,124,0,61,0, + 113,7,116,4,124,1,100,2,131,2,114,29,124,1,160,5, + 161,0,1,0,113,7,100,1,83,0,41,3,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,41, + 6,218,4,108,105,115,116,114,16,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,75,1, + 0,0,41,2,114,141,0,0,0,218,6,102,105,110,100,101, + 114,32,32,114,7,0,0,0,114,75,1,0,0,50,5,0, + 0,115,14,0,0,0,22,4,8,1,10,1,10,1,8,1, + 2,128,4,252,114,9,0,0,0,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,1,0,0,0,0,0,0,0, + 0,0,0,0,9,0,0,0,67,0,0,0,115,78,0,0, + 0,116,0,106,1,100,1,117,1,114,14,116,0,106,1,115, + 14,116,2,160,3,100,2,116,4,161,2,1,0,116,0,106, + 1,68,0,93,18,125,1,9,0,124,1,124,0,131,1,2, + 0,1,0,83,0,35,0,4,0,116,5,121,38,1,0,1, + 0,1,0,89,0,113,17,37,0,100,1,83,0,119,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,16,0, + 0,0,218,10,112,97,116,104,95,104,111,111,107,115,114,99, + 0,0,0,114,100,0,0,0,114,161,0,0,0,114,142,0, + 0,0,41,2,114,65,0,0,0,90,4,104,111,111,107,32, + 32,114,7,0,0,0,218,11,95,112,97,116,104,95,104,111, + 111,107,115,60,5,0,0,115,22,0,0,0,16,3,12,1, + 10,1,2,1,12,1,2,128,12,1,4,1,2,128,4,2, + 2,253,115,12,0,0,0,148,3,26,2,154,7,35,9,166, + 1,35,9,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,8,0,0,0,67,0,0,0, + 115,104,0,0,0,124,1,100,1,107,2,114,21,9,0,116, + 0,160,1,161,0,125,1,110,11,35,0,4,0,116,2,121, + 51,1,0,1,0,1,0,89,0,100,2,83,0,37,0,9, + 0,116,3,106,4,124,1,25,0,125,2,124,2,83,0,35, + 0,4,0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,10,0,0,0,78,41,7,114,19,0,0,0, + 114,82,0,0,0,218,17,70,105,108,101,78,111,116,70,111, + 117,110,100,69,114,114,111,114,114,16,0,0,0,114,77,1, + 0,0,218,8,75,101,121,69,114,114,111,114,114,81,1,0, + 0,41,3,114,220,0,0,0,114,65,0,0,0,114,79,1, + 0,0,32,32,32,114,7,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, + 73,5,0,0,115,36,0,0,0,8,8,2,1,10,1,2, + 128,12,1,6,3,2,128,2,1,10,1,4,4,2,128,12, + 253,10,1,12,1,4,1,2,128,2,253,2,250,115,24,0, + 0,0,133,4,10,0,138,7,20,7,150,5,29,0,157,17, + 49,7,178,1,49,7,179,1,20,7,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,4,0,0,0,67,0,0,0, + 115,138,0,0,0,116,0,124,2,100,1,131,2,114,27,116, + 1,160,2,124,2,161,1,155,0,100,2,157,2,125,3,116, + 3,160,4,124,3,116,5,161,2,1,0,124,2,160,6,124, + 1,161,1,92,2,125,4,125,5,110,21,116,1,160,2,124, + 2,161,1,155,0,100,3,157,2,125,3,116,3,160,4,124, + 3,116,5,161,2,1,0,124,2,160,7,124,1,161,1,125, + 4,103,0,125,5,124,4,100,0,117,1,114,58,116,1,160, + 8,124,1,124,4,161,2,83,0,116,1,160,9,124,1,100, + 0,161,2,125,6,124,5,124,6,95,10,124,6,83,0,41, + 4,78,114,160,0,0,0,122,53,46,102,105,110,100,95,115, + 112,101,99,40,41,32,110,111,116,32,102,111,117,110,100,59, + 32,102,97,108,108,105,110,103,32,98,97,99,107,32,116,111, + 32,102,105,110,100,95,108,111,97,100,101,114,40,41,122,53, + 46,102,105,110,100,95,115,112,101,99,40,41,32,110,111,116, + 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, + 98,97,99,107,32,116,111,32,102,105,110,100,95,109,111,100, + 117,108,101,40,41,41,11,114,152,0,0,0,114,158,0,0, + 0,90,12,95,111,98,106,101,99,116,95,110,97,109,101,114, + 99,0,0,0,114,100,0,0,0,114,161,0,0,0,114,160, + 0,0,0,114,228,0,0,0,114,223,0,0,0,114,206,0, + 0,0,114,201,0,0,0,41,7,114,220,0,0,0,114,162, + 0,0,0,114,79,1,0,0,114,165,0,0,0,114,163,0, + 0,0,114,164,0,0,0,114,209,0,0,0,32,32,32,32, + 32,32,32,114,7,0,0,0,218,16,95,108,101,103,97,99, + 121,95,103,101,116,95,115,112,101,99,95,5,0,0,115,26, + 0,0,0,10,4,16,1,12,2,16,1,16,2,12,2,10, + 1,4,1,8,1,12,1,12,1,6,1,4,1,114,9,0, + 0,0,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,5,0,0, + 0,67,0,0,0,115,166,0,0,0,103,0,125,4,124,2, + 68,0,93,67,125,5,116,0,124,5,116,1,116,2,102,2, + 131,2,115,14,113,4,124,0,160,3,124,5,161,1,125,6, + 124,6,100,1,117,1,114,71,116,4,124,6,100,2,131,2, + 114,35,124,6,160,5,124,1,124,3,161,2,125,7,110,6, + 124,0,160,6,124,1,124,6,161,2,125,7,124,7,100,1, + 117,0,114,46,113,4,124,7,106,7,100,1,117,1,114,55, + 124,7,2,0,1,0,83,0,124,7,106,8,125,8,124,8, + 100,1,117,0,114,66,116,9,100,3,131,1,130,1,124,4, + 160,10,124,8,161,1,1,0,113,4,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,225,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,184,0,0,0,114,109,0,0,0,218,5,98,121,116,101, + 115,114,84,1,0,0,114,152,0,0,0,114,225,0,0,0, + 114,85,1,0,0,114,163,0,0,0,114,201,0,0,0,114, + 142,0,0,0,114,190,0,0,0,114,158,0,0,0,114,206, + 0,0,0,41,9,114,220,0,0,0,114,162,0,0,0,114, + 65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0,114,164,0,0,0,32, + 32,32,32,32,32,32,32,32,114,7,0,0,0,218,9,95, + 103,101,116,95,115,112,101,99,116,5,0,0,115,42,0,0, + 0,4,5,8,1,14,1,2,1,10,1,8,1,10,1,14, + 1,12,2,8,1,2,1,10,1,8,1,6,1,8,1,8, + 1,10,5,2,128,12,2,6,1,4,1,114,9,0,0,0, + 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,5,0,0,0,67,0,0,0,115,94,0,0,0, + 124,2,100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3,100,1,117,0, + 114,45,124,4,106,4,125,5,124,5,114,43,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,124,4,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,16,0,0,0,114,65,0,0,0,114,88,1,0, + 0,114,163,0,0,0,114,201,0,0,0,114,204,0,0,0, + 114,44,1,0,0,41,6,114,220,0,0,0,114,162,0,0, + 0,114,65,0,0,0,114,224,0,0,0,114,209,0,0,0, + 114,87,1,0,0,32,32,32,32,32,32,114,7,0,0,0, + 114,225,0,0,0,148,5,0,0,115,26,0,0,0,8,6, + 6,1,14,1,8,1,4,1,10,1,6,1,4,1,6,3, + 16,1,4,1,4,2,4,2,114,9,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,124, + 2,161,2,125,3,124,3,100,2,117,0,114,18,100,2,83, + 0,124,3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,114,226,0, + 0,0,114,227,0,0,0,32,32,32,32,114,7,0,0,0, + 114,228,0,0,0,172,5,0,0,115,14,0,0,0,6,8, + 2,2,4,254,12,3,8,1,4,1,6,1,114,9,0,0, + 0,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,0,0,0,0,0,0, + 0,0,0,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,2,1,0,124, + 2,106,2,124,0,105,0,124,1,164,1,142,1,83,0,41, + 4,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,78,41,3,90,18,105,109,112,111,114,116,108,105,98,46, + 109,101,116,97,100,97,116,97,114,89,1,0,0,218,18,102, + 105,110,100,95,100,105,115,116,114,105,98,117,116,105,111,110, + 115,41,3,114,144,0,0,0,114,145,0,0,0,114,89,1, + 0,0,32,32,32,114,7,0,0,0,114,90,1,0,0,188, + 5,0,0,115,4,0,0,0,12,10,16,1,114,9,0,0, + 0,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, + 114,69,0,0,0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114, + 233,0,0,0,114,84,1,0,0,114,85,1,0,0,114,88, + 1,0,0,114,225,0,0,0,114,228,0,0,0,114,90,1, + 0,0,114,12,0,0,0,114,7,0,0,0,114,74,1,0, + 0,46,5,0,0,115,36,0,0,0,8,0,4,2,2,2, + 10,1,2,9,10,1,2,12,10,1,2,21,10,1,2,20, + 12,1,2,31,12,1,2,23,12,1,2,15,14,1,114,9, + 0,0,0,114,74,1,0,0,99,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,6,0,0,0,7,0,0,0,115,114,0, + 0,0,135,5,103,0,125,3,124,2,68,0,93,16,92,2, + 138,5,125,4,124,3,160,0,136,5,102,1,100,1,100,2, + 132,8,124,4,68,0,131,1,161,1,1,0,113,5,124,3, + 124,0,95,1,124,1,112,28,100,3,124,0,95,2,116,3, + 124,0,106,2,131,1,115,44,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,3, + 0,0,0,51,0,0,0,115,24,0,0,0,129,0,124,0, + 93,7,125,1,124,1,137,2,102,2,86,0,1,0,113,2, + 100,0,83,0,114,69,0,0,0,114,12,0,0,0,41,3, + 114,5,0,0,0,114,41,1,0,0,114,163,0,0,0,32, + 32,128,114,7,0,0,0,114,8,0,0,0,217,5,0,0, + 115,4,0,0,0,6,128,18,0,114,9,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,97,0,0,0,114,130,0,0,0, + 78,41,11,114,190,0,0,0,218,8,95,108,111,97,100,101, + 114,115,114,65,0,0,0,114,86,0,0,0,114,67,0,0, + 0,114,19,0,0,0,114,82,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, + 6,114,143,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,211,0,0,0,114,163,0,0,0,32,32, + 32,32,32,64,114,7,0,0,0,114,235,0,0,0,211,5, + 0,0,115,22,0,0,0,2,128,4,4,12,1,26,1,6, + 1,10,2,10,1,18,1,6,1,8,1,12,1,114,9,0, + 0,0,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,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,130, + 0,0,0,78,41,1,114,93,1,0,0,114,20,1,0,0, + 32,114,7,0,0,0,114,75,1,0,0,227,5,0,0,114, + 81,0,0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, + 3,124,1,161,1,125,2,124,2,100,2,117,0,114,19,100, + 2,103,0,102,2,83,0,124,2,106,4,124,2,106,5,112, + 25,103,0,102,2,83,0,41,3,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,78,41,6,114,99,0,0,0,114,100,0, - 0,0,114,101,0,0,0,114,225,0,0,0,114,163,0,0, - 0,114,201,0,0,0,41,3,114,143,0,0,0,114,162,0, - 0,0,114,209,0,0,0,32,32,32,114,7,0,0,0,114, - 160,0,0,0,233,5,0,0,115,14,0,0,0,6,7,2, - 2,4,254,10,3,8,1,8,1,16,1,114,9,0,0,0, - 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,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, - 200,0,0,0,41,1,114,212,0,0,0,41,7,114,143,0, - 0,0,114,210,0,0,0,114,162,0,0,0,114,65,0,0, - 0,90,4,115,109,115,108,114,224,0,0,0,114,163,0,0, - 0,32,32,32,32,32,32,32,114,7,0,0,0,114,88,1, - 0,0,248,5,0,0,115,8,0,0,0,10,1,8,1,2, - 1,6,255,114,9,0,0,0,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,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,9,0,116,1,124, - 0,106,2,112,17,116,3,160,4,161,0,131,1,106,5,125, - 5,110,12,35,0,4,0,116,6,121,190,1,0,1,0,1, - 0,100,4,125,5,89,0,110,1,37,0,124,5,124,0,106, - 7,107,3,114,45,124,0,160,8,161,0,1,0,124,5,124, - 0,95,7,116,9,131,0,114,56,124,0,106,10,125,6,124, - 4,160,11,161,0,125,7,110,5,124,0,106,12,125,6,124, - 4,125,7,124,7,124,6,118,0,114,108,116,13,124,0,106, - 2,124,4,131,2,125,8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125, - 3,124,0,106,14,68,0,93,55,92,2,125,9,125,10,9, - 0,116,13,124,0,106,2,124,4,124,9,23,0,131,2,125, - 12,110,12,35,0,4,0,116,18,121,189,1,0,1,0,1, - 0,89,0,1,0,100,6,83,0,37,0,116,19,160,20,100, - 7,124,12,100,3,100,8,166,3,1,0,124,7,124,9,23, - 0,124,6,118,0,114,166,116,15,124,12,131,1,114,166,124, - 0,160,16,124,10,124,1,124,12,100,6,124,2,161,5,2, - 0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,97,0,0,0, - 114,45,0,0,0,114,130,0,0,0,114,235,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,104,0,0,0,114,75,0,0,0,114, - 65,0,0,0,114,19,0,0,0,114,82,0,0,0,114,33, - 1,0,0,114,76,0,0,0,114,93,1,0,0,218,11,95, - 102,105,108,108,95,99,97,99,104,101,114,22,0,0,0,114, - 96,1,0,0,114,131,0,0,0,114,95,1,0,0,114,67, - 0,0,0,114,92,1,0,0,114,80,0,0,0,114,88,1, - 0,0,114,83,0,0,0,114,111,0,0,0,114,158,0,0, - 0,114,172,0,0,0,114,206,0,0,0,114,201,0,0,0, - 41,14,114,143,0,0,0,114,162,0,0,0,114,224,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,192,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,210,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,209,0,0,0,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,114,7,0,0,0,114,225,0, - 0,0,253,5,0,0,115,94,0,0,0,4,5,14,1,2, - 1,22,1,2,128,12,1,8,1,2,128,10,1,8,1,6, - 1,6,2,6,1,10,1,6,2,4,1,8,2,12,1,14, - 1,8,1,10,1,8,1,24,1,2,255,8,5,14,2,2, - 1,18,1,2,128,12,1,8,1,2,128,16,1,12,1,8, - 1,10,1,4,1,8,255,2,128,4,2,12,1,12,1,8, - 1,4,1,4,1,2,244,2,228,115,31,0,0,0,138,10, - 21,0,149,9,32,7,193,52,8,65,61,2,193,61,7,66, - 8,9,194,61,1,66,8,9,194,62,1,32,7,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, - 10,0,0,0,67,0,0,0,115,194,0,0,0,124,0,106, - 0,125,1,9,0,116,1,160,2,124,1,112,11,116,1,160, - 3,161,0,161,1,125,2,110,15,35,0,4,0,116,4,116, - 5,116,6,102,3,121,96,1,0,1,0,1,0,103,0,125, - 2,89,0,110,1,37,0,116,7,106,8,160,9,100,1,161, - 1,115,41,116,10,124,2,131,1,124,0,95,11,110,37,116, - 10,131,0,125,3,124,2,68,0,93,28,125,4,124,4,160, - 12,100,2,161,1,92,3,125,5,125,6,125,7,124,6,114, - 67,100,3,160,13,124,5,124,7,160,14,161,0,161,2,125, - 8,110,2,124,5,125,8,124,3,160,15,124,8,161,1,1, - 0,113,46,124,3,124,0,95,11,116,7,106,8,160,9,116, - 16,161,1,114,94,100,4,100,5,132,0,124,2,68,0,131, - 1,124,0,95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0, - 0,114,88,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,83,0,0,0,115,20,0,0,0, - 104,0,124,0,93,6,125,1,124,1,160,0,161,0,146,2, - 113,2,83,0,114,12,0,0,0,41,1,114,131,0,0,0, - 41,2,114,5,0,0,0,90,2,102,110,32,32,114,7,0, - 0,0,114,14,0,0,0,77,6,0,0,115,2,0,0,0, - 20,0,114,9,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,19,0,0,0,90, - 7,108,105,115,116,100,105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0, - 0,114,27,0,0,0,114,94,1,0,0,114,95,1,0,0, - 114,126,0,0,0,114,89,0,0,0,114,131,0,0,0,218, - 3,97,100,100,114,28,0,0,0,114,96,1,0,0,41,9, - 114,143,0,0,0,114,65,0,0,0,90,8,99,111,110,116, - 101,110,116,115,90,21,108,111,119,101,114,95,115,117,102,102, - 105,120,95,99,111,110,116,101,110,116,115,114,67,1,0,0, - 114,141,0,0,0,114,51,1,0,0,114,41,1,0,0,90, - 8,110,101,119,95,110,97,109,101,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,98,1,0,0,48,6,0,0, - 115,42,0,0,0,6,2,2,1,20,1,2,128,18,1,8, - 3,2,128,12,3,12,1,6,7,8,1,16,1,4,1,18, - 1,4,2,12,1,6,1,12,1,20,1,4,255,2,233,115, - 13,0,0,0,132,9,14,0,142,12,28,7,193,32,1,28, - 7,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,7,0,0,0,115,22, - 0,0,0,135,3,135,4,136,3,136,4,102,2,100,1,100, - 2,132,8,125,2,124,2,83,0,41,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0,116,0, - 124,0,131,1,115,10,116,1,100,1,124,0,100,2,141,2, - 130,1,137,1,124,0,103,1,137,2,162,1,82,0,142,0, - 83,0,41,4,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,78,41,2,114,83,0,0,0, - 114,142,0,0,0,41,3,114,65,0,0,0,114,220,0,0, - 0,114,97,1,0,0,32,128,128,114,7,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,89,6,0,0,115,6,0,0, - 0,8,2,12,1,16,1,114,9,0,0,0,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,78,114,12,0,0,0,41,5,114,220,0,0, - 0,114,97,1,0,0,114,102,1,0,0,114,220,0,0,0, - 114,97,1,0,0,96,96,32,64,64,114,7,0,0,0,218, - 9,112,97,116,104,95,104,111,111,107,79,6,0,0,115,6, - 0,0,0,4,128,14,10,4,6,114,9,0,0,0,122,20, + 115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32, + 122,101,70,105,108,101,70,105,110,100,101,114,46,102,105,110, + 100,95,108,111,97,100,101,114,40,41,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,32,97,110,100,32,115,108,97, + 116,101,100,32,102,111,114,32,114,101,109,111,118,97,108,32, + 105,110,32,80,121,116,104,111,110,32,51,46,49,50,59,32, + 117,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, + 105,110,115,116,101,97,100,78,41,6,114,99,0,0,0,114, + 100,0,0,0,114,101,0,0,0,114,225,0,0,0,114,163, + 0,0,0,114,201,0,0,0,41,3,114,143,0,0,0,114, + 162,0,0,0,114,209,0,0,0,32,32,32,114,7,0,0, + 0,114,160,0,0,0,233,5,0,0,115,14,0,0,0,6, + 7,2,2,4,254,10,3,8,1,8,1,16,1,114,9,0, + 0,0,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,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,200,0,0,0,41,1,114,212,0,0,0,41,7,114, + 143,0,0,0,114,210,0,0,0,114,162,0,0,0,114,65, + 0,0,0,90,4,115,109,115,108,114,224,0,0,0,114,163, + 0,0,0,32,32,32,32,32,32,32,114,7,0,0,0,114, + 88,1,0,0,248,5,0,0,115,8,0,0,0,10,1,8, + 1,2,1,6,255,114,9,0,0,0,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,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,9,0,116, + 1,124,0,106,2,112,17,116,3,160,4,161,0,131,1,106, + 5,125,5,110,12,35,0,4,0,116,6,121,190,1,0,1, + 0,1,0,100,4,125,5,89,0,110,1,37,0,124,5,124, + 0,106,7,107,3,114,45,124,0,160,8,161,0,1,0,124, + 5,124,0,95,7,116,9,131,0,114,56,124,0,106,10,125, + 6,124,4,160,11,161,0,125,7,110,5,124,0,106,12,125, + 6,124,4,125,7,124,7,124,6,118,0,114,108,116,13,124, + 0,106,2,124,4,131,2,125,8,124,0,106,14,68,0,93, + 29,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, + 103,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,74,116,17,124,8,131, + 1,125,3,124,0,106,14,68,0,93,55,92,2,125,9,125, + 10,9,0,116,13,124,0,106,2,124,4,124,9,23,0,131, + 2,125,12,110,12,35,0,4,0,116,18,121,189,1,0,1, + 0,1,0,89,0,1,0,100,6,83,0,37,0,116,19,160, + 20,100,7,124,12,100,3,100,8,166,3,1,0,124,7,124, + 9,23,0,124,6,118,0,114,166,116,15,124,12,131,1,114, + 166,124,0,160,16,124,10,124,1,124,12,100,6,124,2,161, + 5,2,0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,97,0, + 0,0,114,45,0,0,0,114,130,0,0,0,114,235,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,104,0,0,0,114,75,0,0, + 0,114,65,0,0,0,114,19,0,0,0,114,82,0,0,0, + 114,33,1,0,0,114,76,0,0,0,114,93,1,0,0,218, + 11,95,102,105,108,108,95,99,97,99,104,101,114,22,0,0, + 0,114,96,1,0,0,114,131,0,0,0,114,95,1,0,0, + 114,67,0,0,0,114,92,1,0,0,114,80,0,0,0,114, + 88,1,0,0,114,83,0,0,0,114,111,0,0,0,114,158, + 0,0,0,114,172,0,0,0,114,206,0,0,0,114,201,0, + 0,0,41,14,114,143,0,0,0,114,162,0,0,0,114,224, + 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,192, + 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,210,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,209,0,0,0,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,114,7,0,0,0,114, + 225,0,0,0,253,5,0,0,115,94,0,0,0,4,5,14, + 1,2,1,22,1,2,128,12,1,8,1,2,128,10,1,8, + 1,6,1,6,2,6,1,10,1,6,2,4,1,8,2,12, + 1,14,1,8,1,10,1,8,1,24,1,2,255,8,5,14, + 2,2,1,18,1,2,128,12,1,8,1,2,128,16,1,12, + 1,8,1,10,1,4,1,8,255,2,128,4,2,12,1,12, + 1,8,1,4,1,4,1,2,244,2,228,115,31,0,0,0, + 138,10,21,0,149,9,32,7,193,52,8,65,61,2,193,61, + 7,66,8,9,194,61,1,66,8,9,194,62,1,32,7,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,10,0,0,0,67,0,0,0,115,194,0,0,0,124, + 0,106,0,125,1,9,0,116,1,160,2,124,1,112,11,116, + 1,160,3,161,0,161,1,125,2,110,15,35,0,4,0,116, + 4,116,5,116,6,102,3,121,96,1,0,1,0,1,0,103, + 0,125,2,89,0,110,1,37,0,116,7,106,8,160,9,100, + 1,161,1,115,41,116,10,124,2,131,1,124,0,95,11,110, + 37,116,10,131,0,125,3,124,2,68,0,93,28,125,4,124, + 4,160,12,100,2,161,1,92,3,125,5,125,6,125,7,124, + 6,114,67,100,3,160,13,124,5,124,7,160,14,161,0,161, + 2,125,8,110,2,124,5,125,8,124,3,160,15,124,8,161, + 1,1,0,113,46,124,3,124,0,95,11,116,7,106,8,160, + 9,116,16,161,1,114,94,100,4,100,5,132,0,124,2,68, + 0,131,1,124,0,95,17,100,6,83,0,100,6,83,0,119, + 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,15,0,0,0,114,97, + 0,0,0,114,88,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,83,0,0,0,115,20,0, + 0,0,104,0,124,0,93,6,125,1,124,1,160,0,161,0, + 146,2,113,2,83,0,114,12,0,0,0,41,1,114,131,0, + 0,0,41,2,114,5,0,0,0,90,2,102,110,32,32,114, + 7,0,0,0,114,14,0,0,0,77,6,0,0,115,2,0, + 0,0,20,0,114,9,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,19,0,0, + 0,90,7,108,105,115,116,100,105,114,114,82,0,0,0,114, + 82,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,16,0,0,0,114,26, + 0,0,0,114,27,0,0,0,114,94,1,0,0,114,95,1, + 0,0,114,126,0,0,0,114,89,0,0,0,114,131,0,0, + 0,218,3,97,100,100,114,28,0,0,0,114,96,1,0,0, + 41,9,114,143,0,0,0,114,65,0,0,0,90,8,99,111, + 110,116,101,110,116,115,90,21,108,111,119,101,114,95,115,117, + 102,102,105,120,95,99,111,110,116,101,110,116,115,114,67,1, + 0,0,114,141,0,0,0,114,51,1,0,0,114,41,1,0, + 0,90,8,110,101,119,95,110,97,109,101,32,32,32,32,32, + 32,32,32,32,114,7,0,0,0,114,98,1,0,0,48,6, + 0,0,115,42,0,0,0,6,2,2,1,20,1,2,128,18, + 1,8,3,2,128,12,3,12,1,6,7,8,1,16,1,4, + 1,18,1,4,2,12,1,6,1,12,1,20,1,4,255,2, + 233,115,13,0,0,0,132,9,14,0,142,12,28,7,193,32, + 1,28,7,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,7,0,0,0, + 115,22,0,0,0,135,3,135,4,136,3,136,4,102,2,100, + 1,100,2,132,8,125,2,124,2,83,0,41,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0, + 116,0,124,0,131,1,115,10,116,1,100,1,124,0,100,2, + 141,2,130,1,137,1,124,0,103,1,137,2,162,1,82,0, + 142,0,83,0,41,4,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,78,41,2,114,83,0, + 0,0,114,142,0,0,0,41,3,114,65,0,0,0,114,220, + 0,0,0,114,97,1,0,0,32,128,128,114,7,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,89,6,0,0,115,6, + 0,0,0,8,2,12,1,16,1,114,9,0,0,0,122,54, 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,3,0,0,0,67,0,0,0,114,64,1,0,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,89,0,0,0,114,65,0,0,0,114, - 20,1,0,0,32,114,7,0,0,0,114,65,1,0,0,97, - 6,0,0,114,58,1,0,0,114,9,0,0,0,122,19,70, - 105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114, - 95,95,114,69,0,0,0,41,15,114,149,0,0,0,114,148, - 0,0,0,114,150,0,0,0,114,151,0,0,0,114,235,0, - 0,0,114,75,1,0,0,114,166,0,0,0,114,228,0,0, - 0,114,160,0,0,0,114,88,1,0,0,114,225,0,0,0, - 114,98,1,0,0,114,233,0,0,0,114,103,1,0,0,114, - 65,1,0,0,114,12,0,0,0,114,7,0,0,0,114,91, - 1,0,0,202,5,0,0,115,24,0,0,0,8,0,4,2, - 8,7,8,16,4,4,8,2,8,15,10,5,8,51,2,31, - 10,1,12,17,114,9,0,0,0,114,91,1,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, - 0,0,0,115,146,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,33, - 124,5,114,18,124,5,106,1,125,4,110,15,124,2,124,3, - 107,2,114,28,116,2,124,1,124,2,131,2,125,4,110,5, - 116,3,124,1,124,2,131,2,125,4,124,5,115,42,116,4, - 124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100,0, - 83,0,35,0,4,0,116,5,121,72,1,0,1,0,1,0, - 89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0,114,39,1,0, - 0,114,32,1,0,0,114,212,0,0,0,218,9,69,120,99, - 101,112,116,105,111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0, - 32,32,32,32,32,32,114,7,0,0,0,218,14,95,102,105, - 120,95,117,112,95,109,111,100,117,108,101,103,6,0,0,115, - 40,0,0,0,10,2,10,1,4,1,4,1,8,1,8,1, - 12,1,10,2,4,1,14,1,2,1,8,1,8,1,8,1, - 12,1,2,128,12,1,6,2,2,128,2,254,115,15,0,0, - 0,171,16,61,0,189,7,65,7,7,193,8,1,65,7,7, - 114,108,1,0,0,99,0,0,0,0,0,0,0,0,0,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,102, - 2,125,1,116,5,116,6,102,2,125,2,124,0,124,1,124, - 2,103,3,83,0,41,2,122,95,82,101,116,117,114,110,115, - 32,97,32,108,105,115,116,32,111,102,32,102,105,108,101,45, - 98,97,115,101,100,32,109,111,100,117,108,101,32,108,111,97, - 100,101,114,115,46,10,10,32,32,32,32,69,97,99,104,32, - 105,116,101,109,32,105,115,32,97,32,116,117,112,108,101,32, - 40,108,111,97,100,101,114,44,32,115,117,102,102,105,120,101, - 115,41,46,10,32,32,32,32,78,41,7,114,28,1,0,0, - 114,186,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,127, - 0,0,0,114,39,1,0,0,114,113,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,32,32,32, - 114,7,0,0,0,114,207,0,0,0,126,6,0,0,115,8, - 0,0,0,12,5,8,1,8,1,10,1,114,9,0,0,0, - 114,207,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,124, - 0,97,0,100,0,83,0,114,69,0,0,0,41,1,114,158, - 0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,97, - 112,95,109,111,100,117,108,101,32,114,7,0,0,0,218,21, - 95,115,101,116,95,98,111,111,116,115,116,114,97,112,95,109, - 111,100,117,108,101,137,6,0,0,115,2,0,0,0,8,2, - 114,9,0,0,0,114,111,1,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 50,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,111,1,0,0,114,207,0,0,0, - 114,16,0,0,0,114,80,1,0,0,114,190,0,0,0,114, - 91,1,0,0,114,103,1,0,0,218,9,109,101,116,97,95, - 112,97,116,104,114,61,0,0,0,114,74,1,0,0,41,2, - 114,110,1,0,0,90,17,115,117,112,112,111,114,116,101,100, - 95,108,111,97,100,101,114,115,32,32,114,7,0,0,0,218, - 8,95,105,110,115,116,97,108,108,142,6,0,0,115,8,0, - 0,0,8,2,6,1,20,1,16,1,114,9,0,0,0,114, - 113,1,0,0,41,1,114,87,0,0,0,114,69,0,0,0, - 41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0, - 0,41,1,84,41,85,114,151,0,0,0,114,158,0,0,0, - 114,186,0,0,0,114,91,0,0,0,114,16,0,0,0,114, - 99,0,0,0,114,183,0,0,0,114,26,0,0,0,114,230, - 0,0,0,90,2,110,116,114,19,0,0,0,114,214,0,0, - 0,90,5,112,111,115,105,120,114,51,0,0,0,218,3,97, - 108,108,114,59,0,0,0,114,136,0,0,0,114,57,0,0, - 0,114,62,0,0,0,90,20,95,112,97,116,104,115,101,112, - 115,95,119,105,116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0, - 0,0,114,22,0,0,0,114,37,0,0,0,114,43,0,0, - 0,114,46,0,0,0,114,67,0,0,0,114,73,0,0,0, - 114,75,0,0,0,114,79,0,0,0,114,80,0,0,0,114, - 83,0,0,0,114,86,0,0,0,114,95,0,0,0,218,4, - 116,121,112,101,218,8,95,95,99,111,100,101,95,95,114,185, - 0,0,0,114,35,0,0,0,114,171,0,0,0,114,34,0, - 0,0,114,40,0,0,0,114,7,1,0,0,114,116,0,0, - 0,114,112,0,0,0,114,127,0,0,0,114,61,0,0,0, - 114,109,1,0,0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0,114, - 135,0,0,0,114,137,0,0,0,114,139,0,0,0,114,159, - 0,0,0,114,166,0,0,0,114,175,0,0,0,114,179,0, - 0,0,114,181,0,0,0,114,188,0,0,0,114,193,0,0, - 0,114,194,0,0,0,114,199,0,0,0,218,6,111,98,106, - 101,99,116,114,208,0,0,0,114,212,0,0,0,114,213,0, - 0,0,114,234,0,0,0,114,248,0,0,0,114,10,1,0, - 0,114,32,1,0,0,114,39,1,0,0,114,28,1,0,0, - 114,44,1,0,0,114,70,1,0,0,114,74,1,0,0,114, - 91,1,0,0,114,108,1,0,0,114,207,0,0,0,114,111, - 1,0,0,114,113,1,0,0,114,12,0,0,0,114,7,0, - 0,0,218,8,60,109,111,100,117,108,101,62,1,0,0,0, - 115,180,0,0,0,4,0,4,22,8,3,8,1,8,1,8, - 1,8,1,10,3,4,1,8,1,10,1,8,2,4,3,10, - 1,6,2,22,2,8,1,8,1,10,1,14,1,4,4,4, - 1,2,1,2,1,4,255,8,4,6,16,8,3,8,5,8, - 5,4,6,10,1,8,30,8,6,8,8,8,10,8,9,8, - 5,4,7,10,1,8,8,10,5,10,22,0,127,16,36,12, - 1,4,2,4,1,6,2,4,1,10,1,8,2,6,2,8, - 2,16,2,8,71,8,40,8,19,8,12,8,12,8,31,8, - 20,8,33,8,28,10,24,10,13,10,10,8,11,6,14,4, - 3,2,1,12,255,14,73,14,67,16,30,0,127,14,17,18, - 50,18,45,18,25,14,53,14,63,14,49,0,127,14,29,0, - 127,10,30,8,23,8,11,12,5,114,9,0,0,0, + 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,78,114,12,0,0,0,41,5,114,220, + 0,0,0,114,97,1,0,0,114,102,1,0,0,114,220,0, + 0,0,114,97,1,0,0,96,96,32,64,64,114,7,0,0, + 0,218,9,112,97,116,104,95,104,111,111,107,79,6,0,0, + 115,6,0,0,0,4,128,14,10,4,6,114,9,0,0,0, + 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,3,0,0,0,67,0,0,0,114,64,1,0,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,89,0,0,0,114,65,0,0, + 0,114,20,1,0,0,32,114,7,0,0,0,114,65,1,0, + 0,97,6,0,0,114,58,1,0,0,114,9,0,0,0,122, + 19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,101, + 112,114,95,95,114,69,0,0,0,41,15,114,149,0,0,0, + 114,148,0,0,0,114,150,0,0,0,114,151,0,0,0,114, + 235,0,0,0,114,75,1,0,0,114,166,0,0,0,114,228, + 0,0,0,114,160,0,0,0,114,88,1,0,0,114,225,0, + 0,0,114,98,1,0,0,114,233,0,0,0,114,103,1,0, + 0,114,65,1,0,0,114,12,0,0,0,114,7,0,0,0, + 114,91,1,0,0,202,5,0,0,115,24,0,0,0,8,0, + 4,2,8,7,8,16,4,4,8,2,8,15,10,5,8,51, + 2,31,10,1,12,17,114,9,0,0,0,114,91,1,0,0, + 99,4,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15,124,2, + 124,3,107,2,114,28,116,2,124,1,124,2,131,2,125,4, + 110,5,116,3,124,1,124,2,131,2,125,4,124,5,115,42, + 116,4,124,1,124,2,124,4,100,3,141,3,125,5,9,0, + 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, + 100,0,83,0,35,0,4,0,116,5,121,72,1,0,1,0, + 1,0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0,114,39, + 1,0,0,114,32,1,0,0,114,212,0,0,0,218,9,69, + 120,99,101,112,116,105,111,110,41,6,90,2,110,115,114,141, + 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,163,0,0,0,114,209,0, + 0,0,32,32,32,32,32,32,114,7,0,0,0,218,14,95, + 102,105,120,95,117,112,95,109,111,100,117,108,101,103,6,0, + 0,115,40,0,0,0,10,2,10,1,4,1,4,1,8,1, + 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, + 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, + 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, + 7,7,114,108,1,0,0,99,0,0,0,0,0,0,0,0, + 0,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,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, + 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, + 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, + 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, + 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, + 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, + 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, + 120,101,115,41,46,10,32,32,32,32,78,41,7,114,28,1, + 0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,32, + 32,32,114,7,0,0,0,114,207,0,0,0,126,6,0,0, + 115,8,0,0,0,12,5,8,1,8,1,10,1,114,9,0, + 0,0,114,207,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,67,0,0,0,115,8,0,0, + 0,124,0,97,0,100,0,83,0,114,69,0,0,0,41,1, + 114,158,0,0,0,41,1,218,17,95,98,111,111,116,115,116, + 114,97,112,95,109,111,100,117,108,101,32,114,7,0,0,0, + 218,21,95,115,101,116,95,98,111,111,116,115,116,114,97,112, + 95,109,111,100,117,108,101,137,6,0,0,115,2,0,0,0, + 8,2,114,9,0,0,0,114,111,1,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, + 0,115,50,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,111,1,0,0,114,207,0, + 0,0,114,16,0,0,0,114,80,1,0,0,114,190,0,0, + 0,114,91,1,0,0,114,103,1,0,0,218,9,109,101,116, + 97,95,112,97,116,104,114,61,0,0,0,114,74,1,0,0, + 41,2,114,110,1,0,0,90,17,115,117,112,112,111,114,116, + 101,100,95,108,111,97,100,101,114,115,32,32,114,7,0,0, + 0,218,8,95,105,110,115,116,97,108,108,142,6,0,0,115, + 8,0,0,0,8,2,6,1,20,1,16,1,114,9,0,0, + 0,114,113,1,0,0,41,1,114,87,0,0,0,114,69,0, + 0,0,41,3,78,78,78,41,2,114,0,0,0,0,114,0, + 0,0,0,41,1,84,41,85,114,151,0,0,0,114,158,0, + 0,0,114,186,0,0,0,114,91,0,0,0,114,16,0,0, + 0,114,99,0,0,0,114,183,0,0,0,114,26,0,0,0, + 114,230,0,0,0,90,2,110,116,114,19,0,0,0,114,214, + 0,0,0,90,5,112,111,115,105,120,114,51,0,0,0,218, + 3,97,108,108,114,59,0,0,0,114,136,0,0,0,114,57, + 0,0,0,114,62,0,0,0,90,20,95,112,97,116,104,115, + 101,112,115,95,119,105,116,104,95,99,111,108,111,110,114,29, + 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,28,0,0,0,114, + 30,0,0,0,114,22,0,0,0,114,37,0,0,0,114,43, + 0,0,0,114,46,0,0,0,114,67,0,0,0,114,73,0, + 0,0,114,75,0,0,0,114,79,0,0,0,114,80,0,0, + 0,114,83,0,0,0,114,86,0,0,0,114,95,0,0,0, + 218,4,116,121,112,101,218,8,95,95,99,111,100,101,95,95, + 114,185,0,0,0,114,35,0,0,0,114,171,0,0,0,114, + 34,0,0,0,114,40,0,0,0,114,7,1,0,0,114,116, + 0,0,0,114,112,0,0,0,114,127,0,0,0,114,61,0, + 0,0,114,109,1,0,0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0, + 0,114,135,0,0,0,114,137,0,0,0,114,139,0,0,0, + 114,159,0,0,0,114,166,0,0,0,114,175,0,0,0,114, + 179,0,0,0,114,181,0,0,0,114,188,0,0,0,114,193, + 0,0,0,114,194,0,0,0,114,199,0,0,0,218,6,111, + 98,106,101,99,116,114,208,0,0,0,114,212,0,0,0,114, + 213,0,0,0,114,234,0,0,0,114,248,0,0,0,114,10, + 1,0,0,114,32,1,0,0,114,39,1,0,0,114,28,1, + 0,0,114,44,1,0,0,114,70,1,0,0,114,74,1,0, + 0,114,91,1,0,0,114,108,1,0,0,114,207,0,0,0, + 114,111,1,0,0,114,113,1,0,0,114,12,0,0,0,114, + 7,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,180,0,0,0,4,0,4,22,8,3,8,1,8, + 1,8,1,8,1,10,3,4,1,8,1,10,1,8,2,4, + 3,10,1,6,2,22,2,8,1,8,1,10,1,14,1,4, + 4,4,1,2,1,2,1,4,255,8,4,6,16,8,3,8, + 5,8,5,4,6,10,1,8,30,8,6,8,8,8,10,8, + 9,8,5,4,7,10,1,8,8,10,5,10,22,0,127,16, + 36,12,1,4,2,4,1,6,2,4,1,10,1,8,2,6, + 2,8,2,16,2,8,71,8,40,8,19,8,12,8,12,8, + 31,8,20,8,33,8,28,10,24,10,13,10,10,8,11,6, + 14,4,3,2,1,12,255,14,73,14,67,16,30,0,127,14, + 17,18,50,18,45,18,25,14,53,14,63,14,49,0,127,14, + 29,0,127,10,30,8,23,8,11,12,5,114,9,0,0,0, }; diff --git a/configure.ac b/configure.ac index 2f792aa60ee40f..11dd84f12c6692 100644 --- a/configure.ac +++ b/configure.ac @@ -128,21 +128,21 @@ VERSION=PYTHON_VERSION AC_SUBST(SOVERSION) SOVERSION=1.0 -# The later defininition of _XOPEN_SOURCE disables certain features +# The later definition of _XOPEN_SOURCE disables certain features # on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone). AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features]) -# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables +# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables # certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable # them. AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features]) -# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables +# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables # certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable # them. AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features]) -# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables +# The later definition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables # certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable # them. AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features]) From webhook-mailer at python.org Sun Jun 13 03:19:43 2021 From: webhook-mailer at python.org (mdickinson) Date: Sun, 13 Jun 2021 07:19:43 -0000 Subject: [Python-checkins] Fix a potential reference-counting bug in long_pow (GH-26690) Message-ID: https://github.com/python/cpython/commit/59242431991794064824cf2ab70886367613f29e commit: 59242431991794064824cf2ab70886367613f29e branch: main author: Mark Dickinson committer: mdickinson date: 2021-06-13T08:19:29+01:00 summary: Fix a potential reference-counting bug in long_pow (GH-26690) files: M Objects/longobject.c diff --git a/Objects/longobject.c b/Objects/longobject.c index 5e29e9a725709..d9127b31fd486 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -4185,6 +4185,7 @@ long_pow(PyObject *v, PyObject *w, PyObject *x) goto Error; Py_DECREF(a); a = temp; + temp = NULL; } /* Reduce base by modulus in some cases: From webhook-mailer at python.org Sun Jun 13 03:42:51 2021 From: webhook-mailer at python.org (mdickinson) Date: Sun, 13 Jun 2021 07:42:51 -0000 Subject: [Python-checkins] Fix a potential reference-counting bug in long_pow (GH-26690) (#26702) Message-ID: https://github.com/python/cpython/commit/9ee8752162d54c595b1ce4b1bebc4dff94b9c659 commit: 9ee8752162d54c595b1ce4b1bebc4dff94b9c659 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: mdickinson date: 2021-06-13T08:42:43+01:00 summary: Fix a potential reference-counting bug in long_pow (GH-26690) (#26702) (cherry picked from commit 59242431991794064824cf2ab70886367613f29e) Co-authored-by: Mark Dickinson Co-authored-by: Mark Dickinson files: M Objects/longobject.c diff --git a/Objects/longobject.c b/Objects/longobject.c index 0ff0e80cd42696..cf13b2c4301778 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -4312,6 +4312,7 @@ long_pow(PyObject *v, PyObject *w, PyObject *x) goto Error; Py_DECREF(a); a = temp; + temp = NULL; } /* Reduce base by modulus in some cases: From webhook-mailer at python.org Sun Jun 13 03:58:40 2021 From: webhook-mailer at python.org (mdickinson) Date: Sun, 13 Jun 2021 07:58:40 -0000 Subject: [Python-checkins] [3.10] Fix a potential reference-counting bug in long_pow (GH-26690) (GH-26703) Message-ID: https://github.com/python/cpython/commit/929dd817b3c6ebd8f2ab5d3b58af51acf292c590 commit: 929dd817b3c6ebd8f2ab5d3b58af51acf292c590 branch: 3.10 author: Mark Dickinson committer: mdickinson date: 2021-06-13T08:58:32+01:00 summary: [3.10] Fix a potential reference-counting bug in long_pow (GH-26690) (GH-26703) (cherry picked from commit 59242431991794064824cf2ab70886367613f29e) Co-authored-by: Mark Dickinson files: M Objects/longobject.c diff --git a/Objects/longobject.c b/Objects/longobject.c index e1c1191e648da..685bd56096f48 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -4185,6 +4185,7 @@ long_pow(PyObject *v, PyObject *w, PyObject *x) goto Error; Py_DECREF(a); a = temp; + temp = NULL; } /* Reduce base by modulus in some cases: From webhook-mailer at python.org Sun Jun 13 06:29:46 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 13 Jun 2021 10:29:46 -0000 Subject: [Python-checkins] bpo-44389: Remove duplicate SSL_OP_NO_TLSv1_2 flag (GH-26680) Message-ID: https://github.com/python/cpython/commit/f30f484e9660c6ad5d5a554869593d14d709a7f4 commit: f30f484e9660c6ad5d5a554869593d14d709a7f4 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-13T03:29:33-07:00 summary: bpo-44389: Remove duplicate SSL_OP_NO_TLSv1_2 flag (GH-26680) (cherry picked from commit cb7230c7a7d6d497e54c25e9ba640eec79de10f2) Co-authored-by: Erlend Egeberg Aasland files: M Modules/_ssl.c diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 8daf04dd08bbb..1080fa6cffbd9 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -3587,7 +3587,7 @@ set_options(PySSLContext *self, PyObject *arg, void *c) long new_opts, opts, set, clear; long opt_no = ( SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | - SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_2 + SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 ); if (!PyArg_Parse(arg, "l", &new_opts)) From webhook-mailer at python.org Sun Jun 13 07:46:35 2021 From: webhook-mailer at python.org (tiran) Date: Sun, 13 Jun 2021 11:46:35 -0000 Subject: [Python-checkins] bpo-44389: Fix deprecation of OP_NO_TLSv1_3 (GH-26700) Message-ID: https://github.com/python/cpython/commit/bf527277d4e4907e32d76ca7ba667ab3149fe258 commit: bf527277d4e4907e32d76ca7ba667ab3149fe258 branch: main author: Christian Heimes committer: tiran date: 2021-06-13T13:46:07+02:00 summary: bpo-44389: Fix deprecation of OP_NO_TLSv1_3 (GH-26700) Signed-off-by: Christian Heimes files: A Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst M Lib/test/test_ssl.py M Modules/_ssl.c diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 31bc199e930a6..6cea0ee9f1da5 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -580,6 +580,54 @@ def test_timeout(self): with test_wrap_socket(s) as ss: self.assertEqual(timeout, ss.gettimeout()) + def test_openssl111_deprecations(self): + options = [ + ssl.OP_NO_TLSv1, + ssl.OP_NO_TLSv1_1, + ssl.OP_NO_TLSv1_2, + ssl.OP_NO_TLSv1_3 + ] + protocols = [ + ssl.PROTOCOL_TLSv1, + ssl.PROTOCOL_TLSv1_1, + ssl.PROTOCOL_TLSv1_2, + ssl.PROTOCOL_TLS + ] + versions = [ + ssl.TLSVersion.SSLv3, + ssl.TLSVersion.TLSv1, + ssl.TLSVersion.TLSv1_1, + ] + + for option in options: + with self.subTest(option=option): + ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + with self.assertWarns(DeprecationWarning) as cm: + ctx.options |= option + self.assertEqual( + 'ssl.OP_NO_SSL*/ssl.SSL_NO_TLS* options are deprecated', + str(cm.warning) + ) + + for protocol in protocols: + with self.subTest(protocol=protocol): + with self.assertWarns(DeprecationWarning) as cm: + ssl.SSLContext(protocol) + self.assertEqual( + f'{protocol!r} is deprecated', + str(cm.warning) + ) + + for version in versions: + with self.subTest(version=version): + ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + with self.assertWarns(DeprecationWarning) as cm: + ctx.minimum_version = version + self.assertEqual( + f'ssl.{version!r} is deprecated', + str(cm.warning) + ) + @ignore_deprecation def test_errors_sslwrap(self): sock = socket.socket() @@ -3067,7 +3115,7 @@ def test_dual_rsa_ecc(self): client_context.load_verify_locations(SIGNING_CA) # TODO: fix TLSv1.3 once SSLContext can restrict signature # algorithms. - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 # only ECDSA certs client_context.set_ciphers('ECDHE:ECDSA:!NULL:!aRSA') hostname = SIGNED_CERTFILE_ECC_HOSTNAME @@ -3806,7 +3854,7 @@ def test_do_handshake_enotconn(self): def test_no_shared_ciphers(self): client_context, server_context, hostname = testing_context() # OpenSSL enables all TLS 1.3 ciphers, enforce TLS 1.2 for test - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 # Force different suites on client and server client_context.set_ciphers("AES128") server_context.set_ciphers("AES256") @@ -4021,10 +4069,10 @@ def test_dh_params(self): # Check we can get a connection with ephemeral Diffie-Hellman client_context, server_context, hostname = testing_context() # test scenario needs TLS <= 1.2 - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 server_context.load_dh_params(DHFILE) server_context.set_ciphers("kEDH") - server_context.options |= ssl.OP_NO_TLSv1_3 + server_context.maximum_version = ssl.TLSVersion.TLSv1_2 stats = server_params_test(client_context, server_context, chatty=True, connectionchatty=True, sni_name=hostname) @@ -4270,7 +4318,7 @@ def test_sendfile(self): def test_session(self): client_context, server_context, hostname = testing_context() # TODO: sessions aren't compatible with TLSv1.3 yet - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 # first connection without session stats = server_params_test(client_context, server_context, @@ -4329,8 +4377,8 @@ def test_session_handling(self): client_context2, _, _ = testing_context() # TODO: session reuse does not work with TLSv1.3 - client_context.options |= ssl.OP_NO_TLSv1_3 - client_context2.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 + client_context2.maximum_version = ssl.TLSVersion.TLSv1_2 server = ThreadedEchoServer(context=server_context, chatty=False) with server: @@ -4754,7 +4802,7 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): def test_msg_callback_tls12(self): client_context, server_context, hostname = testing_context() - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 msg = [] diff --git a/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst b/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst new file mode 100644 index 0000000000000..e7e3b87489900 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst @@ -0,0 +1 @@ +Fix deprecation of :data:`ssl.OP_NO_TLSv1_3` diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 1080fa6cffbd9..26f31f8f4c534 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -3587,7 +3587,7 @@ set_options(PySSLContext *self, PyObject *arg, void *c) long new_opts, opts, set, clear; long opt_no = ( SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | - SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 + SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3 ); if (!PyArg_Parse(arg, "l", &new_opts)) From webhook-mailer at python.org Sun Jun 13 08:07:08 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 13 Jun 2021 12:07:08 -0000 Subject: [Python-checkins] [3.10] bpo-44389: Fix deprecation of OP_NO_TLSv1_3 (GH-26700) (GH-26705) Message-ID: https://github.com/python/cpython/commit/4becc569a606102bce624a4e28f4068317d09f42 commit: 4becc569a606102bce624a4e28f4068317d09f42 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-13T05:07:00-07:00 summary: [3.10] bpo-44389: Fix deprecation of OP_NO_TLSv1_3 (GH-26700) (GH-26705) Signed-off-by: Christian Heimes (cherry picked from commit bf527277d4e4907e32d76ca7ba667ab3149fe258) Co-authored-by: Christian Heimes Automerge-Triggered-By: GH:tiran files: A Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst M Lib/test/test_ssl.py M Modules/_ssl.c diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 5dc27df04dc1d..eddb85144cc58 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -584,6 +584,54 @@ def test_timeout(self): with test_wrap_socket(s) as ss: self.assertEqual(timeout, ss.gettimeout()) + def test_openssl111_deprecations(self): + options = [ + ssl.OP_NO_TLSv1, + ssl.OP_NO_TLSv1_1, + ssl.OP_NO_TLSv1_2, + ssl.OP_NO_TLSv1_3 + ] + protocols = [ + ssl.PROTOCOL_TLSv1, + ssl.PROTOCOL_TLSv1_1, + ssl.PROTOCOL_TLSv1_2, + ssl.PROTOCOL_TLS + ] + versions = [ + ssl.TLSVersion.SSLv3, + ssl.TLSVersion.TLSv1, + ssl.TLSVersion.TLSv1_1, + ] + + for option in options: + with self.subTest(option=option): + ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + with self.assertWarns(DeprecationWarning) as cm: + ctx.options |= option + self.assertEqual( + 'ssl.OP_NO_SSL*/ssl.SSL_NO_TLS* options are deprecated', + str(cm.warning) + ) + + for protocol in protocols: + with self.subTest(protocol=protocol): + with self.assertWarns(DeprecationWarning) as cm: + ssl.SSLContext(protocol) + self.assertEqual( + f'{protocol!r} is deprecated', + str(cm.warning) + ) + + for version in versions: + with self.subTest(version=version): + ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + with self.assertWarns(DeprecationWarning) as cm: + ctx.minimum_version = version + self.assertEqual( + f'ssl.{version!r} is deprecated', + str(cm.warning) + ) + @ignore_deprecation def test_errors_sslwrap(self): sock = socket.socket() @@ -3071,7 +3119,7 @@ def test_dual_rsa_ecc(self): client_context.load_verify_locations(SIGNING_CA) # TODO: fix TLSv1.3 once SSLContext can restrict signature # algorithms. - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 # only ECDSA certs client_context.set_ciphers('ECDHE:ECDSA:!NULL:!aRSA') hostname = SIGNED_CERTFILE_ECC_HOSTNAME @@ -3817,7 +3865,7 @@ def test_do_handshake_enotconn(self): def test_no_shared_ciphers(self): client_context, server_context, hostname = testing_context() # OpenSSL enables all TLS 1.3 ciphers, enforce TLS 1.2 for test - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 # Force different suites on client and server client_context.set_ciphers("AES128") server_context.set_ciphers("AES256") @@ -4032,10 +4080,10 @@ def test_dh_params(self): # Check we can get a connection with ephemeral Diffie-Hellman client_context, server_context, hostname = testing_context() # test scenario needs TLS <= 1.2 - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 server_context.load_dh_params(DHFILE) server_context.set_ciphers("kEDH") - server_context.options |= ssl.OP_NO_TLSv1_3 + server_context.maximum_version = ssl.TLSVersion.TLSv1_2 stats = server_params_test(client_context, server_context, chatty=True, connectionchatty=True, sni_name=hostname) @@ -4281,7 +4329,7 @@ def test_sendfile(self): def test_session(self): client_context, server_context, hostname = testing_context() # TODO: sessions aren't compatible with TLSv1.3 yet - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 # first connection without session stats = server_params_test(client_context, server_context, @@ -4340,8 +4388,8 @@ def test_session_handling(self): client_context2, _, _ = testing_context() # TODO: session reuse does not work with TLSv1.3 - client_context.options |= ssl.OP_NO_TLSv1_3 - client_context2.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 + client_context2.maximum_version = ssl.TLSVersion.TLSv1_2 server = ThreadedEchoServer(context=server_context, chatty=False) with server: @@ -4765,7 +4813,7 @@ def msg_cb(conn, direction, version, content_type, msg_type, data): def test_msg_callback_tls12(self): client_context, server_context, hostname = testing_context() - client_context.options |= ssl.OP_NO_TLSv1_3 + client_context.maximum_version = ssl.TLSVersion.TLSv1_2 msg = [] diff --git a/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst b/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst new file mode 100644 index 0000000000000..e7e3b87489900 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst @@ -0,0 +1 @@ +Fix deprecation of :data:`ssl.OP_NO_TLSv1_3` diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 1080fa6cffbd9..26f31f8f4c534 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -3587,7 +3587,7 @@ set_options(PySSLContext *self, PyObject *arg, void *c) long new_opts, opts, set, clear; long opt_no = ( SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | - SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 + SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3 ); if (!PyArg_Parse(arg, "l", &new_opts)) From webhook-mailer at python.org Sun Jun 13 10:05:43 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 13 Jun 2021 14:05:43 -0000 Subject: [Python-checkins] bpo-43475: Fix the Python implementation of hash of Decimal NaN (GH-26679) Message-ID: https://github.com/python/cpython/commit/128899d8b8d65d86bd9bbea6801e9f36e6f409f2 commit: 128899d8b8d65d86bd9bbea6801e9f36e6f409f2 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-13T07:05:28-07:00 summary: bpo-43475: Fix the Python implementation of hash of Decimal NaN (GH-26679) (cherry picked from commit 9f1c5f6e8af6ba3f659b2aea1e221ac9695828ba) Co-authored-by: Serhiy Storchaka files: M Doc/library/stdtypes.rst M Lib/_pydecimal.py M Lib/test/test_decimal.py M Lib/test/test_float.py diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index e34a888639c18..3b2ff8090ced3 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -739,7 +739,7 @@ number, :class:`float`, or :class:`complex`:: """Compute the hash of a float x.""" if math.isnan(x): - return super().__hash__() + return object.__hash__(x) elif math.isinf(x): return sys.hash_info.inf if x > 0 else -sys.hash_info.inf else: diff --git a/Lib/_pydecimal.py b/Lib/_pydecimal.py index ff23322ed5603..3d6cece9676c9 100644 --- a/Lib/_pydecimal.py +++ b/Lib/_pydecimal.py @@ -951,7 +951,7 @@ def __hash__(self): if self.is_snan(): raise TypeError('Cannot hash a signaling NaN value.') elif self.is_nan(): - return super().__hash__() + return object.__hash__(self) else: if self._sign: return -_PyHASH_INF diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 179a9ea7042fb..058829b03a3de 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -1814,13 +1814,7 @@ def hashit(d): # check that hash(d) == hash(int(d)) for integral values for value in test_values: - self.assertEqual(hashit(value), hashit(int(value))) - - #the same hash that to an int - self.assertEqual(hashit(Decimal(23)), hashit(23)) - self.assertRaises(TypeError, hash, Decimal('sNaN')) - self.assertTrue(hashit(Decimal('Inf'))) - self.assertTrue(hashit(Decimal('-Inf'))) + self.assertEqual(hashit(value), hash(int(value))) # check that the hashes of a Decimal float match when they # represent exactly the same values @@ -1829,7 +1823,7 @@ def hashit(d): for s in test_strings: f = float(s) d = Decimal(s) - self.assertEqual(hashit(f), hashit(d)) + self.assertEqual(hashit(d), hash(f)) with localcontext() as c: # check that the value of the hash doesn't depend on the @@ -1850,6 +1844,19 @@ def hashit(d): x = 1100 ** 1248 self.assertEqual(hashit(Decimal(x)), hashit(x)) + def test_hash_method_nan(self): + Decimal = self.decimal.Decimal + self.assertRaises(TypeError, hash, Decimal('sNaN')) + value = Decimal('NaN') + self.assertEqual(hash(value), object.__hash__(value)) + class H: + def __hash__(self): + return 42 + class D(Decimal, H): + pass + value = D('NaN') + self.assertEqual(hash(value), object.__hash__(value)) + def test_min_and_max_methods(self): Decimal = self.decimal.Decimal diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py index ff4f3876be5cd..f0ed40f7c94a7 100644 --- a/Lib/test/test_float.py +++ b/Lib/test/test_float.py @@ -564,6 +564,25 @@ def test_float_pow(self): #self.assertTrue(0.0 < pow_op(2.0, -1047) < 1e-315) #self.assertTrue(0.0 > pow_op(-2.0, -1047) > -1e-315) + def test_hash(self): + for x in range(-30, 30): + self.assertEqual(hash(float(x)), hash(x)) + self.assertEqual(hash(float(sys.float_info.max)), + hash(int(sys.float_info.max))) + self.assertEqual(hash(float('inf')), sys.hash_info.inf) + self.assertEqual(hash(float('-inf')), -sys.hash_info.inf) + + def test_hash_nan(self): + value = float('nan') + self.assertEqual(hash(value), object.__hash__(value)) + class H: + def __hash__(self): + return 42 + class F(float, H): + pass + value = F('nan') + self.assertEqual(hash(value), object.__hash__(value)) + @requires_setformat class FormatFunctionsTestCase(unittest.TestCase): From webhook-mailer at python.org Sun Jun 13 20:24:24 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 14 Jun 2021 00:24:24 -0000 Subject: [Python-checkins] bpo-43425: Update test_c_parser not to use TempdirManager (GH-26693) Message-ID: https://github.com/python/cpython/commit/2b57ad3f5382edb6fe2dfe3c721573fbf25a826f commit: 2b57ad3f5382edb6fe2dfe3c721573fbf25a826f branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-13T17:24:11-07:00 summary: bpo-43425: Update test_c_parser not to use TempdirManager (GH-26693) (cherry picked from commit 736ed6f7a9f465ba728198e8bca81e5fbe71bc37) Co-authored-by: Dong-hee Na files: M Lib/test/test_peg_generator/test_c_parser.py diff --git a/Lib/test/test_peg_generator/test_c_parser.py b/Lib/test/test_peg_generator/test_c_parser.py index 3852cfbc477b6b..013b3afd594392 100644 --- a/Lib/test/test_peg_generator/test_c_parser.py +++ b/Lib/test/test_peg_generator/test_c_parser.py @@ -1,7 +1,9 @@ import sysconfig import textwrap import unittest -from distutils.tests.support import TempdirManager +import os +import shutil +import tempfile from pathlib import Path from test import test_tools @@ -68,20 +70,21 @@ def test_parse(self): """ -class TestCParser(TempdirManager, unittest.TestCase): +class TestCParser(unittest.TestCase): def setUp(self): self._backup_config_vars = dict(sysconfig._CONFIG_VARS) cmd = support.missing_compiler_executable() if cmd is not None: self.skipTest("The %r command is not found" % cmd) - super(TestCParser, self).setUp() - self.tmp_path = self.mkdtemp() + self.old_cwd = os.getcwd() + self.tmp_path = tempfile.mkdtemp() change_cwd = os_helper.change_cwd(self.tmp_path) change_cwd.__enter__() self.addCleanup(change_cwd.__exit__, None, None, None) def tearDown(self): - super(TestCParser, self).tearDown() + os.chdir(self.old_cwd) + shutil.rmtree(self.tmp_path) sysconfig._CONFIG_VARS.clear() sysconfig._CONFIG_VARS.update(self._backup_config_vars) From webhook-mailer at python.org Mon Jun 14 01:47:36 2021 From: webhook-mailer at python.org (rhettinger) Date: Mon, 14 Jun 2021 05:47:36 -0000 Subject: [Python-checkins] bpo-44310: Note that lru_cache keep references to both arguments and results (GH-26715) Message-ID: https://github.com/python/cpython/commit/fafcfff9262ae9dee03a00006638dfcbcfc23a7b commit: fafcfff9262ae9dee03a00006638dfcbcfc23a7b branch: main author: Raymond Hettinger committer: rhettinger date: 2021-06-14T00:47:26-05:00 summary: bpo-44310: Note that lru_cache keep references to both arguments and results (GH-26715) * Simplify the count_vowels example * Hits and misses are fetched while a lock is held * Add note that references are kept for arguments and return values * Clarify behavior when *typed* is false. files: M Doc/library/functools.rst diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst index e981bcdf6f257..871c94afaf99e 100644 --- a/Doc/library/functools.rst +++ b/Doc/library/functools.rst @@ -154,15 +154,16 @@ The :mod:`functools` module defines the following functions: @lru_cache def count_vowels(sentence): - sentence = sentence.casefold() - return sum(sentence.count(vowel) for vowel in 'aeiou') + return sum(sentence.count(vowel) for vowel in 'AEIOUaeiou') If *maxsize* is set to ``None``, the LRU feature is disabled and the cache can grow without bound. If *typed* is set to true, function arguments of different types will be - cached separately. For example, ``f(3)`` and ``f(3.0)`` will be treated - as distinct calls with distinct results. + cached separately. For example, ``f(3)`` and ``f(3.0)`` will always be + treated as distinct calls with distinct results. If *typed* is false, + the implementation will usually but not always regard them as equivalent + calls and only cache a single result. The wrapped function is instrumented with a :func:`cache_parameters` function that returns a new :class:`dict` showing the values for *maxsize* @@ -172,8 +173,7 @@ The :mod:`functools` module defines the following functions: To help measure the effectiveness of the cache and tune the *maxsize* parameter, the wrapped function is instrumented with a :func:`cache_info` function that returns a :term:`named tuple` showing *hits*, *misses*, - *maxsize* and *currsize*. In a multi-threaded environment, the hits - and misses are approximate. + *maxsize* and *currsize*. The decorator also provides a :func:`cache_clear` function for clearing or invalidating the cache. @@ -182,6 +182,9 @@ The :mod:`functools` module defines the following functions: :attr:`__wrapped__` attribute. This is useful for introspection, for bypassing the cache, or for rewrapping the function with a different cache. + The cache keeps references to the arguments and return values until they age + out of the cache or until the cache is cleared. + An `LRU (least recently used) cache `_ works best when the most recent calls are the best predictors of upcoming From webhook-mailer at python.org Mon Jun 14 06:04:32 2021 From: webhook-mailer at python.org (markshannon) Date: Mon, 14 Jun 2021 10:04:32 -0000 Subject: [Python-checkins] bpo-44338: Port LOAD_GLOBAL to PEP 659 adaptive interpreter (GH-26638) Message-ID: https://github.com/python/cpython/commit/eecbc7c3900a7f40d8498b151db543a202c72f74 commit: eecbc7c3900a7f40d8498b151db543a202c72f74 branch: main author: Mark Shannon committer: markshannon date: 2021-06-14T11:04:09+01:00 summary: bpo-44338: Port LOAD_GLOBAL to PEP 659 adaptive interpreter (GH-26638) * Add specializations of LOAD_GLOBAL. * Add more stats. * Remove old opcache; it is no longer used. * Add NEWS files: A Misc/NEWS.d/next/Core and Builtins/2021-06-10-10-06-18.bpo-44338.c4Myr4.rst M Include/cpython/code.h M Include/internal/pycore_code.h M Include/opcode.h M Lib/opcode.py M Objects/codeobject.c M Python/ceval.c M Python/opcode_targets.h M Python/specialize.c diff --git a/Include/cpython/code.h b/Include/cpython/code.h index f6e789dd4d8cf..df79ddbc1b19a 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -106,20 +106,6 @@ struct PyCodeObject { interpreter. */ union _cache_or_instruction *co_quickened; - /* Per opcodes just-in-time cache - * - * To reduce cache size, we use indirect mapping from opcode index to - * cache object: - * cache = co_opcache[co_opcache_map[next_instr - first_instr] - 1] - */ - - // co_opcache_map is indexed by (next_instr - first_instr). - // * 0 means there is no cache for this opcode. - // * n > 0 means there is cache in co_opcache[n-1]. - unsigned char *co_opcache_map; - _PyOpcache *co_opcache; - int co_opcache_flag; // used to determine when create a cache. - unsigned char co_opcache_size; // length of co_opcache. }; /* Masks for co_flags above */ diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index bfc2deb1b6042..098fbe47755c5 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -48,6 +48,11 @@ typedef struct { uint32_t dk_version_or_hint; } _PyLoadAttrCache; +typedef struct { + uint32_t module_keys_version; + uint32_t builtin_keys_version; +} _PyLoadGlobalCache; + /* Add specialized versions of entries to this union. * * Do not break the invariant: sizeof(SpecializedCacheEntry) == 8 @@ -62,6 +67,7 @@ typedef union { _PyEntryZero zero; _PyAdaptiveEntry adaptive; _PyLoadAttrCache load_attr; + _PyLoadGlobalCache load_global; } SpecializedCacheEntry; #define INSTRUCTIONS_PER_ENTRY (sizeof(SpecializedCacheEntry)/sizeof(_Py_CODEUNIT)) @@ -254,8 +260,6 @@ PyAPI_FUNC(PyCodeObject *) _PyCode_New(struct _PyCodeConstructor *); /* Private API */ -int _PyCode_InitOpcache(PyCodeObject *co); - /* Getters for internal PyCodeObject data. */ PyAPI_FUNC(PyObject *) _PyCode_GetVarnames(PyCodeObject *); PyAPI_FUNC(PyObject *) _PyCode_GetCellvars(PyCodeObject *); @@ -318,24 +322,25 @@ cache_backoff(_PyAdaptiveEntry *entry) { /* Specialization functions */ int _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache); +int _Py_Specialize_LoadGlobal(PyObject *globals, PyObject *builtins, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache); #define SPECIALIZATION_STATS 0 #if SPECIALIZATION_STATS -typedef struct _specialization_stats { +typedef struct _stats { uint64_t specialization_success; uint64_t specialization_failure; - uint64_t loadattr_hit; - uint64_t loadattr_deferred; - uint64_t loadattr_miss; - uint64_t loadattr_deopt; + uint64_t hit; + uint64_t deferred; + uint64_t miss; + uint64_t deopt; } SpecializationStats; -extern SpecializationStats _specialization_stats; -#define STAT_INC(name) _specialization_stats.name++ +extern SpecializationStats _specialization_stats[256]; +#define STAT_INC(opname, name) _specialization_stats[opname].name++ void _Py_PrintSpecializationStats(void); #else -#define STAT_INC(name) ((void)0) +#define STAT_INC(opname, name) ((void)0) #endif diff --git a/Include/opcode.h b/Include/opcode.h index 8f5be99cae0c1..7f8376ff15ba9 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -142,6 +142,9 @@ extern "C" { #define LOAD_ATTR_WITH_HINT 14 #define LOAD_ATTR_SLOT 18 #define LOAD_ATTR_MODULE 21 +#define LOAD_GLOBAL_ADAPTIVE 36 +#define LOAD_GLOBAL_MODULE 38 +#define LOAD_GLOBAL_BUILTIN 39 #ifdef NEED_OPCODE_JUMP_TABLES static uint32_t _PyOpcode_RelativeJump[8] = { 0U, diff --git a/Lib/opcode.py b/Lib/opcode.py index 265759e60071c..7e5916a424525 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -226,4 +226,7 @@ def jabs_op(name, op): "LOAD_ATTR_WITH_HINT", "LOAD_ATTR_SLOT", "LOAD_ATTR_MODULE", + "LOAD_GLOBAL_ADAPTIVE", + "LOAD_GLOBAL_MODULE", + "LOAD_GLOBAL_BUILTIN", ] diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-10-10-06-18.bpo-44338.c4Myr4.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-10-10-06-18.bpo-44338.c4Myr4.rst new file mode 100644 index 0000000000000..beaa3e56334ba --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-10-10-06-18.bpo-44338.c4Myr4.rst @@ -0,0 +1,7 @@ +Implement adaptive specialization for LOAD_GLOBAL + +Two specialized forms of LOAD_GLOBAL are added: + +* LOAD_GLOBAL_MODULE + +* LOAD_GLOBAL_BUILTIN diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 701a37d7392fb..e054c43a1cf93 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -350,10 +350,7 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) /* not set */ co->co_weakreflist = NULL; co->co_extra = NULL; - co->co_opcache_map = NULL; - co->co_opcache = NULL; - co->co_opcache_flag = 0; - co->co_opcache_size = 0; + co->co_warmup = QUICKENING_INITIAL_WARMUP_VALUE; co->co_quickened = NULL; } @@ -912,55 +909,6 @@ new_linesiterator(PyCodeObject *code) return li; } - -/****************** - * the opcache - ******************/ - -int -_PyCode_InitOpcache(PyCodeObject *co) -{ - Py_ssize_t co_size = PyBytes_Size(co->co_code) / sizeof(_Py_CODEUNIT); - co->co_opcache_map = (unsigned char *)PyMem_Calloc(co_size, 1); - if (co->co_opcache_map == NULL) { - return -1; - } - - const _Py_CODEUNIT *opcodes = (const _Py_CODEUNIT*)PyBytes_AS_STRING(co->co_code); - Py_ssize_t opts = 0; - - for (Py_ssize_t i = 0; i < co_size;) { - unsigned char opcode = _Py_OPCODE(opcodes[i]); - i++; // 'i' is now aligned to (next_instr - first_instr) - - // TODO: LOAD_METHOD - if (opcode == LOAD_GLOBAL || opcode == LOAD_ATTR) { - opts++; - co->co_opcache_map[i] = (unsigned char)opts; - if (opts > 254) { - break; - } - } - } - - if (opts) { - co->co_opcache = (_PyOpcache *)PyMem_Calloc(opts, sizeof(_PyOpcache)); - if (co->co_opcache == NULL) { - PyMem_Free(co->co_opcache_map); - return -1; - } - } - else { - PyMem_Free(co->co_opcache_map); - co->co_opcache_map = NULL; - co->co_opcache = NULL; - } - - co->co_opcache_size = (unsigned char)opts; - return 0; -} - - /****************** * "extra" frame eval info (see PEP 523) ******************/ @@ -1207,15 +1155,6 @@ code_new_impl(PyTypeObject *type, int argcount, int posonlyargcount, static void code_dealloc(PyCodeObject *co) { - if (co->co_opcache != NULL) { - PyMem_Free(co->co_opcache); - } - if (co->co_opcache_map != NULL) { - PyMem_Free(co->co_opcache_map); - } - co->co_opcache_flag = 0; - co->co_opcache_size = 0; - if (co->co_extra != NULL) { PyInterpreterState *interp = _PyInterpreterState_GET(); _PyCodeObjectExtra *co_extra = co->co_extra; @@ -1442,12 +1381,11 @@ code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args)) res += co->co_ncellvars * sizeof(Py_ssize_t); } - if (co->co_opcache != NULL) { - assert(co->co_opcache_map != NULL); - // co_opcache_map - res += PyBytes_GET_SIZE(co->co_code) / sizeof(_Py_CODEUNIT); - // co_opcache - res += co->co_opcache_size * sizeof(_PyOpcache); + if (co->co_quickened != NULL) { + Py_ssize_t count = co->co_quickened[0].entry.zero.cache_count; + count += (PyBytes_GET_SIZE(co->co_code)+sizeof(SpecializedCacheEntry)-1)/ + sizeof(SpecializedCacheEntry); + res += count * sizeof(SpecializedCacheEntry); } return PyLong_FromSsize_t(res); diff --git a/Python/ceval.c b/Python/ceval.c index c42404c692bb9..25d077cb26a23 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -13,7 +13,7 @@ #include "pycore_abstract.h" // _PyIndex_Check() #include "pycore_call.h" // _PyObject_FastCallDictTstate() #include "pycore_ceval.h" // _PyEval_SignalAsyncExc() -#include "pycore_code.h" // _PyCode_InitOpcache() +#include "pycore_code.h" #include "pycore_initconfig.h" // _PyStatus_OK() #include "pycore_object.h" // _PyObject_GC_TRACK() #include "pycore_moduleobject.h" @@ -109,7 +109,6 @@ static long dxp[256]; /* per opcode cache */ static int opcache_min_runs = 1024; /* create opcache when code executed this many times */ #define OPCODE_CACHE_MAX_TRIES 20 -#define OPCACHE_STATS 0 /* Enable stats */ // This function allows to deactivate the opcode cache. As different cache mechanisms may hold // references, this can mess with the reference leak detector functionality so the cache needs @@ -120,22 +119,6 @@ _PyEval_DeactivateOpCache(void) opcache_min_runs = 0; } -#if OPCACHE_STATS -static size_t opcache_code_objects = 0; -static size_t opcache_code_objects_extra_mem = 0; - -static size_t opcache_global_opts = 0; -static size_t opcache_global_hits = 0; -static size_t opcache_global_misses = 0; - -static size_t opcache_attr_opts = 0; -static size_t opcache_attr_hits = 0; -static size_t opcache_attr_misses = 0; -static size_t opcache_attr_deopts = 0; -static size_t opcache_attr_total = 0; -#endif - - #ifndef NDEBUG /* Ensure that tstate is valid: sanity check for PyEval_AcquireThread() and PyEval_RestoreThread(). Detect if tstate memory was freed. It can happen @@ -360,48 +343,8 @@ PyEval_InitThreads(void) void _PyEval_Fini(void) { -#if OPCACHE_STATS - fprintf(stderr, "-- Opcode cache number of objects = %zd\n", - opcache_code_objects); - - fprintf(stderr, "-- Opcode cache total extra mem = %zd\n", - opcache_code_objects_extra_mem); - - fprintf(stderr, "\n"); - - fprintf(stderr, "-- Opcode cache LOAD_GLOBAL hits = %zd (%d%%)\n", - opcache_global_hits, - (int) (100.0 * opcache_global_hits / - (opcache_global_hits + opcache_global_misses))); - - fprintf(stderr, "-- Opcode cache LOAD_GLOBAL misses = %zd (%d%%)\n", - opcache_global_misses, - (int) (100.0 * opcache_global_misses / - (opcache_global_hits + opcache_global_misses))); - - fprintf(stderr, "-- Opcode cache LOAD_GLOBAL opts = %zd\n", - opcache_global_opts); - - fprintf(stderr, "\n"); - - fprintf(stderr, "-- Opcode cache LOAD_ATTR hits = %zd (%d%%)\n", - opcache_attr_hits, - (int) (100.0 * opcache_attr_hits / - opcache_attr_total)); - - fprintf(stderr, "-- Opcode cache LOAD_ATTR misses = %zd (%d%%)\n", - opcache_attr_misses, - (int) (100.0 * opcache_attr_misses / - opcache_attr_total)); - - fprintf(stderr, "-- Opcode cache LOAD_ATTR opts = %zd\n", - opcache_attr_opts); - - fprintf(stderr, "-- Opcode cache LOAD_ATTR deopts = %zd\n", - opcache_attr_deopts); - - fprintf(stderr, "-- Opcode cache LOAD_ATTR total = %zd\n", - opcache_attr_total); +#if SPECIALIZATION_STATS + _Py_PrintSpecializationStats(); #endif } @@ -1448,108 +1391,11 @@ eval_frame_handle_pending(PyThreadState *tstate) GETLOCAL(i) = value; \ Py_XDECREF(tmp); } while (0) - /* macros for opcode cache */ -#define OPCACHE_CHECK() \ - do { \ - co_opcache = NULL; \ - if (co->co_opcache != NULL) { \ - unsigned char co_opcache_offset = \ - co->co_opcache_map[next_instr - first_instr]; \ - if (co_opcache_offset > 0) { \ - assert(co_opcache_offset <= co->co_opcache_size); \ - co_opcache = &co->co_opcache[co_opcache_offset - 1]; \ - assert(co_opcache != NULL); \ - } \ - } \ - } while (0) - -#define OPCACHE_DEOPT() \ - do { \ - if (co_opcache != NULL) { \ - co_opcache->optimized = -1; \ - unsigned char co_opcache_offset = \ - co->co_opcache_map[next_instr - first_instr]; \ - assert(co_opcache_offset <= co->co_opcache_size); \ - co->co_opcache_map[co_opcache_offset] = 0; \ - co_opcache = NULL; \ - } \ - } while (0) - -#define OPCACHE_DEOPT_LOAD_ATTR() \ - do { \ - if (co_opcache != NULL) { \ - OPCACHE_STAT_ATTR_DEOPT(); \ - OPCACHE_DEOPT(); \ - } \ - } while (0) - -#define OPCACHE_MAYBE_DEOPT_LOAD_ATTR() \ - do { \ - if (co_opcache != NULL && --co_opcache->optimized <= 0) { \ - OPCACHE_DEOPT_LOAD_ATTR(); \ - } \ - } while (0) - -#if OPCACHE_STATS - -#define OPCACHE_STAT_GLOBAL_HIT() \ - do { \ - if (co->co_opcache != NULL) opcache_global_hits++; \ - } while (0) - -#define OPCACHE_STAT_GLOBAL_MISS() \ - do { \ - if (co->co_opcache != NULL) opcache_global_misses++; \ - } while (0) - -#define OPCACHE_STAT_GLOBAL_OPT() \ - do { \ - if (co->co_opcache != NULL) opcache_global_opts++; \ - } while (0) - -#define OPCACHE_STAT_ATTR_HIT() \ - do { \ - if (co->co_opcache != NULL) opcache_attr_hits++; \ - } while (0) - -#define OPCACHE_STAT_ATTR_MISS() \ - do { \ - if (co->co_opcache != NULL) opcache_attr_misses++; \ - } while (0) - -#define OPCACHE_STAT_ATTR_OPT() \ - do { \ - if (co->co_opcache!= NULL) opcache_attr_opts++; \ - } while (0) - -#define OPCACHE_STAT_ATTR_DEOPT() \ - do { \ - if (co->co_opcache != NULL) opcache_attr_deopts++; \ - } while (0) - -#define OPCACHE_STAT_ATTR_TOTAL() \ - do { \ - if (co->co_opcache != NULL) opcache_attr_total++; \ - } while (0) - -#else /* OPCACHE_STATS */ - -#define OPCACHE_STAT_GLOBAL_HIT() -#define OPCACHE_STAT_GLOBAL_MISS() -#define OPCACHE_STAT_GLOBAL_OPT() - -#define OPCACHE_STAT_ATTR_HIT() -#define OPCACHE_STAT_ATTR_MISS() -#define OPCACHE_STAT_ATTR_OPT() -#define OPCACHE_STAT_ATTR_DEOPT() -#define OPCACHE_STAT_ATTR_TOTAL() - #define JUMP_TO_INSTRUCTION(op) goto PREDICT_ID(op) #define GET_CACHE() \ _GetSpecializedCacheEntryForInstruction(first_instr, INSTR_OFFSET(), oparg) -#endif #define DEOPT_IF(cond, instname) if (cond) { goto instname ## _miss; } @@ -1582,7 +1428,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) _Py_CODEUNIT *first_instr; PyObject *names; PyObject *consts; - _PyOpcache *co_opcache; #ifdef LLTRACE _Py_IDENTIFIER(__ltrace__); @@ -1690,21 +1535,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) f->f_stackdepth = -1; f->f_state = FRAME_EXECUTING; - if (co->co_opcache_flag < opcache_min_runs) { - co->co_opcache_flag++; - if (co->co_opcache_flag == opcache_min_runs) { - if (_PyCode_InitOpcache(co) < 0) { - goto exit_eval_frame; - } -#if OPCACHE_STATS - opcache_code_objects_extra_mem += - PyBytes_Size(co->co_code) / sizeof(_Py_CODEUNIT) + - sizeof(_PyOpcache) * co->co_opcache_size; - opcache_code_objects++; -#endif - } - } - #ifdef LLTRACE { int r = _PyDict_ContainsId(GLOBALS(), &PyId___ltrace__); @@ -2974,30 +2804,12 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } case TARGET(LOAD_GLOBAL): { - PyObject *name; + PREDICTED(LOAD_GLOBAL); + PyObject *name = GETITEM(names, oparg); PyObject *v; if (PyDict_CheckExact(GLOBALS()) && PyDict_CheckExact(BUILTINS())) { - OPCACHE_CHECK(); - if (co_opcache != NULL && co_opcache->optimized > 0) { - _PyOpcache_LoadGlobal *lg = &co_opcache->u.lg; - - if (lg->globals_ver == - ((PyDictObject *)GLOBALS())->ma_version_tag - && lg->builtins_ver == - ((PyDictObject *)BUILTINS())->ma_version_tag) - { - PyObject *ptr = lg->ptr; - OPCACHE_STAT_GLOBAL_HIT(); - assert(ptr != NULL); - Py_INCREF(ptr); - PUSH(ptr); - DISPATCH(); - } - } - - name = GETITEM(names, oparg); v = _PyDict_LoadGlobal((PyDictObject *)GLOBALS(), (PyDictObject *)BUILTINS(), name); @@ -3010,25 +2822,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } goto error; } - - if (co_opcache != NULL) { - _PyOpcache_LoadGlobal *lg = &co_opcache->u.lg; - - if (co_opcache->optimized == 0) { - /* Wasn't optimized before. */ - OPCACHE_STAT_GLOBAL_OPT(); - } else { - OPCACHE_STAT_GLOBAL_MISS(); - } - - co_opcache->optimized = 1; - lg->globals_ver = - ((PyDictObject *)GLOBALS())->ma_version_tag; - lg->builtins_ver = - ((PyDictObject *)BUILTINS())->ma_version_tag; - lg->ptr = v; /* borrowed */ - } - Py_INCREF(v); } else { @@ -3059,6 +2852,61 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) DISPATCH(); } + case TARGET(LOAD_GLOBAL_ADAPTIVE): { + SpecializedCacheEntry *cache = GET_CACHE(); + if (cache->adaptive.counter == 0) { + PyObject *name = GETITEM(names, cache->adaptive.original_oparg); + next_instr--; + if (_Py_Specialize_LoadGlobal(GLOBALS(), BUILTINS(), next_instr, name, cache) < 0) { + goto error; + } + DISPATCH(); + } + else { + STAT_INC(LOAD_GLOBAL, deferred); + cache->adaptive.counter--; + oparg = cache->adaptive.original_oparg; + JUMP_TO_INSTRUCTION(LOAD_GLOBAL); + } + } + + case TARGET(LOAD_GLOBAL_MODULE): { + DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL); + PyDictObject *dict = (PyDictObject *)GLOBALS(); + SpecializedCacheEntry *caches = GET_CACHE(); + _PyAdaptiveEntry *cache0 = &caches[0].adaptive; + _PyLoadGlobalCache *cache1 = &caches[-1].load_global; + DEOPT_IF(dict->ma_keys->dk_version != cache1->module_keys_version, LOAD_GLOBAL); + PyDictKeyEntry *ep = DK_ENTRIES(dict->ma_keys) + cache0->index; + PyObject *res = ep->me_value; + DEOPT_IF(res == NULL, LOAD_GLOBAL); + record_cache_hit(cache0); + STAT_INC(LOAD_GLOBAL, hit); + Py_INCREF(res); + PUSH(res); + DISPATCH(); + } + + case TARGET(LOAD_GLOBAL_BUILTIN): { + DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL); + DEOPT_IF(!PyDict_CheckExact(BUILTINS()), LOAD_GLOBAL); + PyDictObject *mdict = (PyDictObject *)GLOBALS(); + PyDictObject *bdict = (PyDictObject *)BUILTINS(); + SpecializedCacheEntry *caches = GET_CACHE(); + _PyAdaptiveEntry *cache0 = &caches[0].adaptive; + _PyLoadGlobalCache *cache1 = &caches[-1].load_global; + DEOPT_IF(mdict->ma_keys->dk_version != cache1->module_keys_version, LOAD_GLOBAL); + DEOPT_IF(bdict->ma_keys->dk_version != cache1->builtin_keys_version, LOAD_GLOBAL); + PyDictKeyEntry *ep = DK_ENTRIES(bdict->ma_keys) + cache0->index; + PyObject *res = ep->me_value; + DEOPT_IF(res == NULL, LOAD_GLOBAL); + record_cache_hit(cache0); + STAT_INC(LOAD_GLOBAL, hit); + Py_INCREF(res); + PUSH(res); + DISPATCH(); + } + case TARGET(DELETE_FAST): { PyObject *v = GETLOCAL(oparg); if (v != NULL) { @@ -3464,7 +3312,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) DISPATCH(); } else { - STAT_INC(loadattr_deferred); + STAT_INC(LOAD_ATTR, deferred); cache->adaptive.counter--; oparg = cache->adaptive.original_oparg; JUMP_TO_INSTRUCTION(LOAD_ATTR); @@ -3487,9 +3335,9 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) DEOPT_IF(dict->ma_keys->dk_version != cache1->dk_version_or_hint, LOAD_ATTR); res = dict->ma_values[cache0->index]; DEOPT_IF(res == NULL, LOAD_ATTR); - STAT_INC(loadattr_hit); + STAT_INC(LOAD_ATTR, hit); record_cache_hit(cache0); - STAT_INC(loadattr_hit); + STAT_INC(LOAD_ATTR, hit); Py_INCREF(res); SET_TOP(res); Py_DECREF(owner); @@ -3510,7 +3358,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) PyDictKeyEntry *ep = DK_ENTRIES(dict->ma_keys) + cache0->index; res = ep->me_value; DEOPT_IF(res == NULL, LOAD_ATTR); - STAT_INC(loadattr_hit); + STAT_INC(LOAD_ATTR, hit); record_cache_hit(cache0); Py_INCREF(res); SET_TOP(res); @@ -3538,7 +3386,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) DEOPT_IF(ep->me_key != name, LOAD_ATTR); res = ep->me_value; DEOPT_IF(res == NULL, LOAD_ATTR); - STAT_INC(loadattr_hit); + STAT_INC(LOAD_ATTR, hit); record_cache_hit(cache0); Py_INCREF(res); SET_TOP(res); @@ -3558,7 +3406,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) char *addr = (char *)owner + cache0->index; res = *(PyObject **)addr; DEOPT_IF(res == NULL, LOAD_ATTR); - STAT_INC(loadattr_hit); + STAT_INC(LOAD_ATTR, hit); record_cache_hit(cache0); Py_INCREF(res); SET_TOP(res); @@ -4445,22 +4293,26 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) or goto error. */ Py_UNREACHABLE(); -/* Cache misses */ +/* Specialization misses */ -LOAD_ATTR_miss: - { - STAT_INC(loadattr_miss); - _PyAdaptiveEntry *cache = &GET_CACHE()->adaptive; - record_cache_miss(cache); - if (too_many_cache_misses(cache)) { - next_instr[-1] = _Py_MAKECODEUNIT(LOAD_ATTR_ADAPTIVE, _Py_OPARG(next_instr[-1])); - STAT_INC(loadattr_deopt); - cache_backoff(cache); - } - oparg = cache->original_oparg; - JUMP_TO_INSTRUCTION(LOAD_ATTR); +#define MISS_WITH_CACHE(opname) \ +opname ## _miss: \ + { \ + STAT_INC(opname, miss); \ + _PyAdaptiveEntry *cache = &GET_CACHE()->adaptive; \ + record_cache_miss(cache); \ + if (too_many_cache_misses(cache)) { \ + next_instr[-1] = _Py_MAKECODEUNIT(opname ## _ADAPTIVE, _Py_OPARG(next_instr[-1])); \ + STAT_INC(opname, deopt); \ + cache_backoff(cache); \ + } \ + oparg = cache->original_oparg; \ + JUMP_TO_INSTRUCTION(opname); \ } +MISS_WITH_CACHE(LOAD_ATTR) +MISS_WITH_CACHE(LOAD_GLOBAL) + error: /* Double-check exception status. */ #ifdef NDEBUG diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 47beee7d59dbc..ecc95dabf4693 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -35,10 +35,10 @@ static void *opcode_targets[256] = { &&TARGET_MATCH_KEYS, &&TARGET_COPY_DICT_WITHOUT_KEYS, &&TARGET_PUSH_EXC_INFO, - &&_unknown_opcode, + &&TARGET_LOAD_GLOBAL_ADAPTIVE, &&TARGET_POP_EXCEPT_AND_RERAISE, - &&_unknown_opcode, - &&_unknown_opcode, + &&TARGET_LOAD_GLOBAL_MODULE, + &&TARGET_LOAD_GLOBAL_BUILTIN, &&_unknown_opcode, &&_unknown_opcode, &&_unknown_opcode, diff --git a/Python/specialize.c b/Python/specialize.c index d82122dfad620..d98433bb23124 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -33,18 +33,27 @@ Py_ssize_t _Py_QuickenedCount = 0; #if SPECIALIZATION_STATS -SpecializationStats _specialization_stats = { 0 }; +SpecializationStats _specialization_stats[256] = { 0 }; + +#define PRINT_STAT(name, field) fprintf(stderr, " %s." #field " : %" PRIu64 "\n", name, stats->field); + +static void +print_stats(SpecializationStats *stats, const char *name) +{ + PRINT_STAT(name, specialization_success); + PRINT_STAT(name, specialization_failure); + PRINT_STAT(name, hit); + PRINT_STAT(name, deferred); + PRINT_STAT(name, miss); + PRINT_STAT(name, deopt); +} -#define PRINT_STAT(name) fprintf(stderr, #name " : %" PRIu64" \n", _specialization_stats.name); void _Py_PrintSpecializationStats(void) { - PRINT_STAT(specialization_success); - PRINT_STAT(specialization_failure); - PRINT_STAT(loadattr_hit); - PRINT_STAT(loadattr_deferred); - PRINT_STAT(loadattr_miss); - PRINT_STAT(loadattr_deopt); + printf("Specialization stats:\n"); + print_stats(&_specialization_stats[LOAD_ATTR], "load_attr"); + print_stats(&_specialization_stats[LOAD_GLOBAL], "load_global"); } #endif @@ -77,11 +86,13 @@ get_cache_count(SpecializedCacheOrInstruction *quickened) { Values of zero are ignored. */ static uint8_t adaptive_opcodes[256] = { [LOAD_ATTR] = LOAD_ATTR_ADAPTIVE, + [LOAD_GLOBAL] = LOAD_GLOBAL_ADAPTIVE, }; /* The number of cache entries required for a "family" of instructions. */ static uint8_t cache_requirements[256] = { - [LOAD_ATTR] = 2, + [LOAD_ATTR] = 2, /* _PyAdaptiveEntry and _PyLoadAttrCache */ + [LOAD_GLOBAL] = 2, /* _PyAdaptiveEntry and _PyLoadGlobalCache */ }; /* Return the oparg for the cache_offset and instruction index. @@ -357,14 +368,81 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, Sp } fail: - STAT_INC(specialization_failure); + STAT_INC(LOAD_ATTR, specialization_failure); assert(!PyErr_Occurred()); cache_backoff(cache0); return 0; success: - STAT_INC(specialization_success); + STAT_INC(LOAD_ATTR, specialization_success); assert(!PyErr_Occurred()); cache0->counter = saturating_start(); return 0; } + +int +_Py_Specialize_LoadGlobal( + PyObject *globals, PyObject *builtins, + _Py_CODEUNIT *instr, PyObject *name, + SpecializedCacheEntry *cache) +{ + _PyAdaptiveEntry *cache0 = &cache->adaptive; + _PyLoadGlobalCache *cache1 = &cache[-1].load_global; + assert(PyUnicode_CheckExact(name)); + if (!PyDict_CheckExact(globals)) { + goto fail; + } + if (((PyDictObject *)globals)->ma_keys->dk_kind != DICT_KEYS_UNICODE) { + goto fail; + } + PyObject *value = NULL; + Py_ssize_t index = _PyDict_GetItemHint((PyDictObject *)globals, name, -1, &value); + assert (index != DKIX_ERROR); + if (index != DKIX_EMPTY) { + if (index != (uint16_t)index) { + goto fail; + } + uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState((PyDictObject *)globals); + if (keys_version == 0) { + goto fail; + } + cache1->module_keys_version = keys_version; + cache0->index = (uint16_t)index; + *instr = _Py_MAKECODEUNIT(LOAD_GLOBAL_MODULE, _Py_OPARG(*instr)); + goto success; + } + if (!PyDict_CheckExact(builtins)) { + goto fail; + } + if (((PyDictObject *)builtins)->ma_keys->dk_kind != DICT_KEYS_UNICODE) { + goto fail; + } + index = _PyDict_GetItemHint((PyDictObject *)builtins, name, -1, &value); + assert (index != DKIX_ERROR); + if (index != (uint16_t)index) { + goto fail; + } + uint32_t globals_version = _PyDictKeys_GetVersionForCurrentState((PyDictObject *)globals); + if (globals_version == 0) { + goto fail; + } + uint32_t builtins_version = _PyDictKeys_GetVersionForCurrentState((PyDictObject *)builtins); + if (builtins_version == 0) { + goto fail; + } + cache1->module_keys_version = globals_version; + cache1->builtin_keys_version = builtins_version; + cache0->index = (uint16_t)index; + *instr = _Py_MAKECODEUNIT(LOAD_GLOBAL_BUILTIN, _Py_OPARG(*instr)); + goto success; +fail: + STAT_INC(LOAD_GLOBAL, specialization_failure); + assert(!PyErr_Occurred()); + cache_backoff(cache0); + return 0; +success: + STAT_INC(LOAD_GLOBAL, specialization_success); + assert(!PyErr_Occurred()); + cache0->counter = saturating_start(); + return 0; +} From webhook-mailer at python.org Mon Jun 14 08:38:26 2021 From: webhook-mailer at python.org (markshannon) Date: Mon, 14 Jun 2021 12:38:26 -0000 Subject: [Python-checkins] Remove accidentally duplicated STAT_INC (GH-26718) Message-ID: https://github.com/python/cpython/commit/358aa6197c2198607b868e6de8aa777323a2d8f9 commit: 358aa6197c2198607b868e6de8aa777323a2d8f9 branch: main author: Mark Shannon committer: markshannon date: 2021-06-14T13:38:16+01:00 summary: Remove accidentally duplicated STAT_INC (GH-26718) files: M Python/ceval.c diff --git a/Python/ceval.c b/Python/ceval.c index 25d077cb26a23..79ec143f5ea32 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3337,7 +3337,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) DEOPT_IF(res == NULL, LOAD_ATTR); STAT_INC(LOAD_ATTR, hit); record_cache_hit(cache0); - STAT_INC(LOAD_ATTR, hit); Py_INCREF(res); SET_TOP(res); Py_DECREF(owner); From webhook-mailer at python.org Mon Jun 14 09:43:57 2021 From: webhook-mailer at python.org (rhettinger) Date: Mon, 14 Jun 2021 13:43:57 -0000 Subject: [Python-checkins] bpo-44310: Note that lru_cache keep references to both arguments and results (GH-26715) (GH-26716) Message-ID: https://github.com/python/cpython/commit/809c3faa032d32bc45a0fa54d0400fcbc42a618f commit: 809c3faa032d32bc45a0fa54d0400fcbc42a618f branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-06-14T08:43:48-05:00 summary: bpo-44310: Note that lru_cache keep references to both arguments and results (GH-26715) (GH-26716) files: M Doc/library/functools.rst diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst index e981bcdf6f257..871c94afaf99e 100644 --- a/Doc/library/functools.rst +++ b/Doc/library/functools.rst @@ -154,15 +154,16 @@ The :mod:`functools` module defines the following functions: @lru_cache def count_vowels(sentence): - sentence = sentence.casefold() - return sum(sentence.count(vowel) for vowel in 'aeiou') + return sum(sentence.count(vowel) for vowel in 'AEIOUaeiou') If *maxsize* is set to ``None``, the LRU feature is disabled and the cache can grow without bound. If *typed* is set to true, function arguments of different types will be - cached separately. For example, ``f(3)`` and ``f(3.0)`` will be treated - as distinct calls with distinct results. + cached separately. For example, ``f(3)`` and ``f(3.0)`` will always be + treated as distinct calls with distinct results. If *typed* is false, + the implementation will usually but not always regard them as equivalent + calls and only cache a single result. The wrapped function is instrumented with a :func:`cache_parameters` function that returns a new :class:`dict` showing the values for *maxsize* @@ -172,8 +173,7 @@ The :mod:`functools` module defines the following functions: To help measure the effectiveness of the cache and tune the *maxsize* parameter, the wrapped function is instrumented with a :func:`cache_info` function that returns a :term:`named tuple` showing *hits*, *misses*, - *maxsize* and *currsize*. In a multi-threaded environment, the hits - and misses are approximate. + *maxsize* and *currsize*. The decorator also provides a :func:`cache_clear` function for clearing or invalidating the cache. @@ -182,6 +182,9 @@ The :mod:`functools` module defines the following functions: :attr:`__wrapped__` attribute. This is useful for introspection, for bypassing the cache, or for rewrapping the function with a different cache. + The cache keeps references to the arguments and return values until they age + out of the cache or until the cache is cleared. + An `LRU (least recently used) cache `_ works best when the most recent calls are the best predictors of upcoming From webhook-mailer at python.org Mon Jun 14 10:45:28 2021 From: webhook-mailer at python.org (gvanrossum) Date: Mon, 14 Jun 2021 14:45:28 -0000 Subject: [Python-checkins] bpo-38291: Remove mention of typing.io and typing.re again (GH-26113) Message-ID: https://github.com/python/cpython/commit/8a76683cfb842e12b57f6d276839f6c68fd94e1a commit: 8a76683cfb842e12b57f6d276839f6c68fd94e1a branch: main author: Sebastian Rittau committer: gvanrossum date: 2021-06-14T07:45:19-07:00 summary: bpo-38291: Remove mention of typing.io and typing.re again (GH-26113) They were originally removed in GH-10173 per bpo-35089, but then readded in GH-21574. Cf. bpo-38291 for decision to remove. files: A Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst M Doc/library/typing.rst diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index ba79bb7ed75ff7..e9980a7745d694 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -1488,7 +1488,11 @@ Other concrete types Generic type ``IO[AnyStr]`` and its subclasses ``TextIO(IO[str])`` and ``BinaryIO(IO[bytes])`` represent the types of I/O streams such as returned by - :func:`open`. These types are also in the ``typing.io`` namespace. + :func:`open`. + + .. deprecated-removed:: 3.8 3.12 + These types are also in the ``typing.io`` namespace, which was + never supported by type checkers and will be removed. .. class:: Pattern Match @@ -1498,7 +1502,11 @@ Other concrete types :func:`re.match`. These types (and the corresponding functions) are generic in ``AnyStr`` and can be made specific by writing ``Pattern[str]``, ``Pattern[bytes]``, ``Match[str]``, or - ``Match[bytes]``. These types are also in the ``typing.re`` namespace. + ``Match[bytes]``. + + .. deprecated-removed:: 3.8 3.12 + These types are also in the ``typing.re`` namespace, which was + never supported by type checkers and will be removed. .. deprecated:: 3.9 Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst b/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst new file mode 100644 index 00000000000000..23ce35eb176d9d --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst @@ -0,0 +1,2 @@ +Mark ``typing.io`` and ``typing.re`` as deprecated since Python 3.8 in the +documentation. They were never properly supported by type checkers. From webhook-mailer at python.org Mon Jun 14 10:49:10 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Mon, 14 Jun 2021 14:49:10 -0000 Subject: [Python-checkins] Fix typo in lnotab_notes.txt (GH-26711) Message-ID: https://github.com/python/cpython/commit/cc8ecf6864375994899fd79d601ab05d0df9edbf commit: cc8ecf6864375994899fd79d601ab05d0df9edbf branch: main author: Gabriele N. Tornetta committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-14T11:49:05-03:00 summary: Fix typo in lnotab_notes.txt (GH-26711) Thanks for your contribution @P403n1x87 files: M Objects/lnotab_notes.txt diff --git a/Objects/lnotab_notes.txt b/Objects/lnotab_notes.txt index f482310a34dd3..e52e437c65025 100644 --- a/Objects/lnotab_notes.txt +++ b/Objects/lnotab_notes.txt @@ -67,7 +67,7 @@ def co_lines(code): table_iter = iter(code.internal_line_table): for sdelta, ldelta in table_iter: if ldelta == 0: # No change to line number, just accumulate changes to end - end += odelta + end += sdelta continue start = end end = start + sdelta From webhook-mailer at python.org Mon Jun 14 11:06:37 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 14 Jun 2021 15:06:37 -0000 Subject: [Python-checkins] bpo-38291: Remove mention of typing.io and typing.re again (GH-26113) Message-ID: https://github.com/python/cpython/commit/fc310cb862ce0411bb5daed37f7f31b75647495b commit: fc310cb862ce0411bb5daed37f7f31b75647495b branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-14T08:06:33-07:00 summary: bpo-38291: Remove mention of typing.io and typing.re again (GH-26113) They were originally removed in GH-10173 per bpo-35089, but then readded in GH-21574. Cf. bpo-38291 for decision to remove. (cherry picked from commit 8a76683cfb842e12b57f6d276839f6c68fd94e1a) Co-authored-by: Sebastian Rittau files: A Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst M Doc/library/typing.rst diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index ba79bb7ed75ff7..e9980a7745d694 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -1488,7 +1488,11 @@ Other concrete types Generic type ``IO[AnyStr]`` and its subclasses ``TextIO(IO[str])`` and ``BinaryIO(IO[bytes])`` represent the types of I/O streams such as returned by - :func:`open`. These types are also in the ``typing.io`` namespace. + :func:`open`. + + .. deprecated-removed:: 3.8 3.12 + These types are also in the ``typing.io`` namespace, which was + never supported by type checkers and will be removed. .. class:: Pattern Match @@ -1498,7 +1502,11 @@ Other concrete types :func:`re.match`. These types (and the corresponding functions) are generic in ``AnyStr`` and can be made specific by writing ``Pattern[str]``, ``Pattern[bytes]``, ``Match[str]``, or - ``Match[bytes]``. These types are also in the ``typing.re`` namespace. + ``Match[bytes]``. + + .. deprecated-removed:: 3.8 3.12 + These types are also in the ``typing.re`` namespace, which was + never supported by type checkers and will be removed. .. deprecated:: 3.9 Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst b/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst new file mode 100644 index 00000000000000..23ce35eb176d9d --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst @@ -0,0 +1,2 @@ +Mark ``typing.io`` and ``typing.re`` as deprecated since Python 3.8 in the +documentation. They were never properly supported by type checkers. From webhook-mailer at python.org Mon Jun 14 11:07:09 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 14 Jun 2021 15:07:09 -0000 Subject: [Python-checkins] bpo-38291: Remove mention of typing.io and typing.re again (GH-26113) Message-ID: https://github.com/python/cpython/commit/7f021952b2debb51306f70ec96a94ecc7fbffc19 commit: 7f021952b2debb51306f70ec96a94ecc7fbffc19 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-14T08:07:05-07:00 summary: bpo-38291: Remove mention of typing.io and typing.re again (GH-26113) They were originally removed in GH-10173 per bpo-35089, but then readded in GH-21574. Cf. bpo-38291 for decision to remove. (cherry picked from commit 8a76683cfb842e12b57f6d276839f6c68fd94e1a) Co-authored-by: Sebastian Rittau files: A Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst M Doc/library/typing.rst diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 06a8b813c2b44b..78ab760d86a547 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -1179,7 +1179,11 @@ Other concrete types Generic type ``IO[AnyStr]`` and its subclasses ``TextIO(IO[str])`` and ``BinaryIO(IO[bytes])`` represent the types of I/O streams such as returned by - :func:`open`. These types are also in the ``typing.io`` namespace. + :func:`open`. + + .. deprecated-removed:: 3.8 3.12 + These types are also in the ``typing.io`` namespace, which was + never supported by type checkers and will be removed. .. class:: Pattern Match @@ -1189,7 +1193,11 @@ Other concrete types :func:`re.match`. These types (and the corresponding functions) are generic in ``AnyStr`` and can be made specific by writing ``Pattern[str]``, ``Pattern[bytes]``, ``Match[str]``, or - ``Match[bytes]``. These types are also in the ``typing.re`` namespace. + ``Match[bytes]``. + + .. deprecated-removed:: 3.8 3.12 + These types are also in the ``typing.re`` namespace, which was + never supported by type checkers and will be removed. .. deprecated:: 3.9 Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst b/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst new file mode 100644 index 00000000000000..23ce35eb176d9d --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst @@ -0,0 +1,2 @@ +Mark ``typing.io`` and ``typing.re`` as deprecated since Python 3.8 in the +documentation. They were never properly supported by type checkers. From webhook-mailer at python.org Mon Jun 14 12:46:33 2021 From: webhook-mailer at python.org (pablogsal) Date: Mon, 14 Jun 2021 16:46:33 -0000 Subject: [Python-checkins] bpo-44409: Fix error location in tokenizer errors that happen during initialization (GH-26712) Message-ID: https://github.com/python/cpython/commit/507ed6fa1d6661e0f8e6d3282764aa9625a99594 commit: 507ed6fa1d6661e0f8e6d3282764aa9625a99594 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-14T17:46:11+01:00 summary: bpo-44409: Fix error location in tokenizer errors that happen during initialization (GH-26712) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst M Lib/test/test_exceptions.py M Parser/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 9cb5466a674d1..d444a122af9be 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -246,6 +246,7 @@ def baz(): check("pass\npass\npass\n(1+)\npass\npass\npass", 4, 4) check("(1+)", 1, 4) check("[interesting\nfoo()\n", 1, 1) + check(b"\xef\xbb\xbf#coding: utf8\nprint('\xe6\x88\x91')\n", 0, -1) # Errors thrown by symtable.c check('x = [(yield i) for i in range(3)]', 1, 5) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst new file mode 100644 index 0000000000000..0f204ed812b27 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst @@ -0,0 +1,2 @@ +Fix error location information for tokenizer errors raised on initialization +of the tokenizer. Patch by Pablo Galindo. diff --git a/Parser/pegen.c b/Parser/pegen.c index 19412446b118a..615047c1b6a00 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -283,6 +283,7 @@ static void raise_tokenizer_init_error(PyObject *filename) { if (!(PyErr_ExceptionMatches(PyExc_LookupError) + || PyErr_ExceptionMatches(PyExc_SyntaxError) || PyErr_ExceptionMatches(PyExc_ValueError) || PyErr_ExceptionMatches(PyExc_UnicodeDecodeError))) { return; From webhook-mailer at python.org Mon Jun 14 13:08:00 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 14 Jun 2021 17:08:00 -0000 Subject: [Python-checkins] bpo-44409: Fix error location in tokenizer errors that happen during initialization (GH-26712) Message-ID: https://github.com/python/cpython/commit/133cddf76e8265536c584872351c191e3afd66a2 commit: 133cddf76e8265536c584872351c191e3afd66a2 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-14T10:07:52-07:00 summary: bpo-44409: Fix error location in tokenizer errors that happen during initialization (GH-26712) (cherry picked from commit 507ed6fa1d6661e0f8e6d3282764aa9625a99594) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst M Lib/test/test_exceptions.py M Parser/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 9cb5466a674d1..d444a122af9be 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -246,6 +246,7 @@ def baz(): check("pass\npass\npass\n(1+)\npass\npass\npass", 4, 4) check("(1+)", 1, 4) check("[interesting\nfoo()\n", 1, 1) + check(b"\xef\xbb\xbf#coding: utf8\nprint('\xe6\x88\x91')\n", 0, -1) # Errors thrown by symtable.c check('x = [(yield i) for i in range(3)]', 1, 5) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst new file mode 100644 index 0000000000000..0f204ed812b27 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst @@ -0,0 +1,2 @@ +Fix error location information for tokenizer errors raised on initialization +of the tokenizer. Patch by Pablo Galindo. diff --git a/Parser/pegen.c b/Parser/pegen.c index 19412446b118a..615047c1b6a00 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -283,6 +283,7 @@ static void raise_tokenizer_init_error(PyObject *filename) { if (!(PyErr_ExceptionMatches(PyExc_LookupError) + || PyErr_ExceptionMatches(PyExc_SyntaxError) || PyErr_ExceptionMatches(PyExc_ValueError) || PyErr_ExceptionMatches(PyExc_UnicodeDecodeError))) { return; From webhook-mailer at python.org Mon Jun 14 13:08:00 2021 From: webhook-mailer at python.org (pablogsal) Date: Mon, 14 Jun 2021 17:08:00 -0000 Subject: [Python-checkins] [3.9] bpo-44409: Fix error location in tokenizer errors that happen during initialization (GH-26712). (GH-26723) Message-ID: https://github.com/python/cpython/commit/0d0a9eaa822658679cc2b65f125ab74bfd4aedfe commit: 0d0a9eaa822658679cc2b65f125ab74bfd4aedfe branch: 3.9 author: Pablo Galindo committer: pablogsal date: 2021-06-14T18:07:51+01:00 summary: [3.9] bpo-44409: Fix error location in tokenizer errors that happen during initialization (GH-26712). (GH-26723) (cherry picked from commit 507ed6fa1d6661e0f8e6d3282764aa9625a99594) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst M Lib/test/test_exceptions.py M Parser/pegen/pegen.c diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 8d125b57ad6d5a..0f7b7f84809d96 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -235,6 +235,7 @@ def baz(): """, 9, 20) check("pass\npass\npass\n(1+)\npass\npass\npass", 4, 4) check("(1+)", 1, 4) + check(b"\xef\xbb\xbf#coding: utf8\nprint('\xe6\x88\x91')\n", 0, -1) # Errors thrown by symtable.c check('x = [(yield i) for i in range(3)]', 1, 5) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst new file mode 100644 index 00000000000000..0f204ed812b27a --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst @@ -0,0 +1,2 @@ +Fix error location information for tokenizer errors raised on initialization +of the tokenizer. Patch by Pablo Galindo. diff --git a/Parser/pegen/pegen.c b/Parser/pegen/pegen.c index 111009af63e22a..bf53214b4d0637 100644 --- a/Parser/pegen/pegen.c +++ b/Parser/pegen/pegen.c @@ -269,6 +269,7 @@ static void raise_tokenizer_init_error(PyObject *filename) { if (!(PyErr_ExceptionMatches(PyExc_LookupError) + || PyErr_ExceptionMatches(PyExc_SyntaxError) || PyErr_ExceptionMatches(PyExc_ValueError) || PyErr_ExceptionMatches(PyExc_UnicodeDecodeError))) { return; From webhook-mailer at python.org Mon Jun 14 22:43:18 2021 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 15 Jun 2021 02:43:18 -0000 Subject: [Python-checkins] Fix a typo in _make_class_unpicklable() docstring (GH-26729) Message-ID: https://github.com/python/cpython/commit/689a84475e7b1da79d5ae82df67ab8897316f98c commit: 689a84475e7b1da79d5ae82df67ab8897316f98c branch: main author: andrei kulakov committer: ethanfurman date: 2021-06-14T19:42:46-07:00 summary: Fix a typo in _make_class_unpicklable() docstring (GH-26729) files: M Lib/enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 0c6d8c1eb0e54..49c46ea86dbac 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -79,7 +79,7 @@ def _make_class_unpicklable(obj): """ Make the given obj un-picklable. - obj should be either a dictionary, on an Enum + obj should be either a dictionary, or an Enum """ def _break_on_call_reduce(self, proto): raise TypeError('%r cannot be pickled' % self) From webhook-mailer at python.org Tue Jun 15 08:01:51 2021 From: webhook-mailer at python.org (markshannon) Date: Tue, 15 Jun 2021 12:01:51 -0000 Subject: [Python-checkins] Add extra stats for attribute misses (GH-26732) Message-ID: https://github.com/python/cpython/commit/8ebd9447e9618240ee3b955888d114376f64117b commit: 8ebd9447e9618240ee3b955888d114376f64117b branch: main author: Mark Shannon committer: markshannon date: 2021-06-15T13:01:42+01:00 summary: Add extra stats for attribute misses (GH-26732) files: M Include/internal/pycore_code.h M Python/specialize.c diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 098fbe47755c5..a471c20265cbf 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -325,6 +325,8 @@ int _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name int _Py_Specialize_LoadGlobal(PyObject *globals, PyObject *builtins, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache); #define SPECIALIZATION_STATS 0 +#define SPECIALIZATION_STATS_DETAILED 0 + #if SPECIALIZATION_STATS typedef struct _stats { @@ -334,6 +336,9 @@ typedef struct _stats { uint64_t deferred; uint64_t miss; uint64_t deopt; +#if SPECIALIZATION_STATS_DETAILED + PyObject *miss_types; +#endif } SpecializationStats; extern SpecializationStats _specialization_stats[256]; diff --git a/Python/specialize.c b/Python/specialize.c index d98433bb23124..ca3dcdac4d039 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -2,6 +2,7 @@ #include "Python.h" #include "pycore_code.h" #include "pycore_dict.h" +#include "pycore_long.h" #include "pycore_moduleobject.h" #include "opcode.h" #include "structmember.h" // struct PyMemberDef, T_OFFSET_EX @@ -46,6 +47,24 @@ print_stats(SpecializationStats *stats, const char *name) PRINT_STAT(name, deferred); PRINT_STAT(name, miss); PRINT_STAT(name, deopt); +#if SPECIALIZATION_STATS_DETAILED + if (stats->miss_types == NULL) { + return; + } + fprintf(stderr, " %s.fails:\n", name); + PyObject *key, *count; + Py_ssize_t pos = 0; + while (PyDict_Next(stats->miss_types, &pos, &key, &count)) { + PyObject *type = PyTuple_GetItem(key, 0); + PyObject *name = PyTuple_GetItem(key, 1); + PyObject *kind = PyTuple_GetItem(key, 2); + fprintf(stderr, " %s.", ((PyTypeObject *)type)->tp_name); + PyObject_Print(name, stderr, Py_PRINT_RAW); + fprintf(stderr, " ("); + PyObject_Print(kind, stderr, Py_PRINT_RAW); + fprintf(stderr, "): %ld\n", PyLong_AsLong(count)); + } +#endif } void @@ -56,6 +75,57 @@ _Py_PrintSpecializationStats(void) print_stats(&_specialization_stats[LOAD_GLOBAL], "load_global"); } +#if SPECIALIZATION_STATS_DETAILED +void +_Py_IncrementTypeCounter(int opcode, PyObject *type, PyObject *name, const char *kind) +{ + PyObject *counter = _specialization_stats[opcode].miss_types; + if (counter == NULL) { + _specialization_stats[opcode].miss_types = PyDict_New(); + counter = _specialization_stats[opcode].miss_types; + if (counter == NULL) { + return; + } + } + PyObject *key = NULL; + PyObject *kind_object = _PyUnicode_FromASCII(kind, strlen(kind)); + if (kind_object == NULL) { + PyErr_Clear(); + goto done; + } + key = PyTuple_Pack(3, type, name, kind_object); + if (key == NULL) { + PyErr_Clear(); + goto done; + } + PyObject *count = PyDict_GetItem(counter, key); + if (count == NULL) { + count = _PyLong_GetZero(); + if (PyDict_SetItem(counter, key, count) < 0) { + PyErr_Clear(); + goto done; + } + } + count = PyNumber_Add(count, _PyLong_GetOne()); + if (count == NULL) { + PyErr_Clear(); + goto done; + } + if (PyDict_SetItem(counter, key, count)) { + PyErr_Clear(); + } +done: + Py_XDECREF(kind_object); + Py_XDECREF(key); +} + +#define SPECIALIZATION_FAIL(opcode, type, attribute, kind) _Py_IncrementTypeCounter(opcode, (PyObject *)(type), attribute, kind) + +#endif +#endif + +#ifndef SPECIALIZATION_FAIL +#define SPECIALIZATION_FAIL(opcode, type, attribute, kind) ((void)0) #endif static SpecializedCacheOrInstruction * @@ -243,28 +313,34 @@ specialize_module_load_attr( _Py_IDENTIFIER(__getattr__); PyDictObject *dict = (PyDictObject *)m->md_dict; if (dict == NULL) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "no __dict__"); return -1; } if (dict->ma_keys->dk_kind != DICT_KEYS_UNICODE) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "non-string keys (or split)"); return -1; } getattr = _PyUnicode_FromId(&PyId___getattr__); /* borrowed */ if (getattr == NULL) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "module.__getattr__ overridden"); PyErr_Clear(); return -1; } Py_ssize_t index = _PyDict_GetItemHint(dict, getattr, -1, &value); assert(index != DKIX_ERROR); if (index != DKIX_EMPTY) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "module attribute not found"); return -1; } index = _PyDict_GetItemHint(dict, name, -1, &value); assert (index != DKIX_ERROR); if (index != (uint16_t)index) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "index out of range"); return -1; } uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(dict); if (keys_version == 0) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "no more key versions"); return -1; } cache1->dk_version_or_hint = keys_version; @@ -287,6 +363,7 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, Sp } PyTypeObject *type = Py_TYPE(owner); if (type->tp_getattro != PyObject_GenericGetAttr) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "__getattribute__ overridden"); goto fail; } if (type->tp_dict == NULL) { @@ -299,17 +376,19 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, Sp // We found an attribute with a data-like descriptor. PyTypeObject *dtype = Py_TYPE(descr); if (dtype != &PyMemberDescr_Type) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "not a member descriptor"); goto fail; } // It's a slot PyMemberDescrObject *member = (PyMemberDescrObject *)descr; struct PyMemberDef *dmem = member->d_member; if (dmem->type != T_OBJECT_EX) { - // It's a slot of a different type. We don't handle those. + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "non-object slot"); goto fail; } Py_ssize_t offset = dmem->offset; if (offset != (uint16_t)offset) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "offset out of range"); goto fail; } assert(offset > 0); @@ -320,11 +399,12 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, Sp } // No desciptor if (type->tp_dictoffset <= 0) { - // No dictionary, or computed offset dictionary + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "no dict or negative offset"); goto fail; } PyObject **dictptr = (PyObject **) ((char *)owner + type->tp_dictoffset); if (*dictptr == NULL || !PyDict_CheckExact(*dictptr)) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "no dict or not a dict"); goto fail; } // We found an instance with a __dict__. @@ -342,10 +422,12 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, Sp Py_ssize_t index = _Py_dict_lookup(dict, name, hash, &value); assert (index != DKIX_ERROR); if (index != (uint16_t)index) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "index out of range"); goto fail; } uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(dict); if (keys_version == 0) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "no more key versions"); goto fail; } cache1->dk_version_or_hint = keys_version; @@ -359,6 +441,7 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, Sp Py_ssize_t hint = _PyDict_GetItemHint(dict, name, -1, &value); if (hint != (uint32_t)hint) { + SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "hint out of range"); goto fail; } cache1->dk_version_or_hint = (uint32_t)hint; From webhook-mailer at python.org Tue Jun 15 08:37:05 2021 From: webhook-mailer at python.org (encukou) Date: Tue, 15 Jun 2021 12:37:05 -0000 Subject: [Python-checkins] bpo-44351: Restore back parse_makefile in distutils.sysconfig (GH-26637) (GH-26673) Message-ID: https://github.com/python/cpython/commit/2f2ea96c4429b81f491aa1cdc4219ef2fd6d37fb commit: 2f2ea96c4429b81f491aa1cdc4219ef2fd6d37fb branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: encukou date: 2021-06-15T14:36:45+02:00 summary: bpo-44351: Restore back parse_makefile in distutils.sysconfig (GH-26637) (GH-26673) The function uses distutils.text_file.TextFile and therefore behaves differently than _parse_makefile in sysconfig. (cherry picked from commit fc98266ff627ba0f56f8ae241245b66bc983baa3) Co-authored-by: Lum?r 'Frenzy' Balhar files: A Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst M Lib/distutils/sysconfig.py diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index aa63093a3f0e6e..3414a761e76b99 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -28,7 +28,6 @@ _PYTHON_BUILD as python_build, _init_posix as sysconfig_init_posix, parse_config_h as sysconfig_parse_config_h, - _parse_makefile as sysconfig_parse_makefile, _init_non_posix, _is_python_source_dir, @@ -68,14 +67,118 @@ def parse_config_h(fp, g=None): return sysconfig_parse_config_h(fp, vars=g) -def parse_makefile(fn, g=None): - return sysconfig_parse_makefile(fn, vars=g, keep_unresolved=False) - _python_build = partial(is_python_build, check_home=True) _init_posix = partial(sysconfig_init_posix, _config_vars) _init_nt = partial(_init_non_posix, _config_vars) +# Similar function is also implemented in sysconfig as _parse_makefile +# but without the parsing capabilities of distutils.text_file.TextFile. +def parse_makefile(fn, g=None): + """Parse a Makefile-style file. + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + from distutils.text_file import TextFile + fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1, errors="surrogateescape") + + if g is None: + g = {} + done = {} + notdone = {} + + while True: + line = fp.readline() + if line is None: # eof + break + m = re.match(_variable_rx, line) + if m: + n, v = m.group(1, 2) + v = v.strip() + # `$$' is a literal `$' in make + tmpv = v.replace('$$', '') + + if "$" in tmpv: + notdone[n] = v + else: + try: + v = int(v) + except ValueError: + # insert literal `$' + done[n] = v.replace('$$', '$') + else: + done[n] = v + + # Variables with a 'PY_' prefix in the makefile. These need to + # be made available without that prefix through sysconfig. + # Special care is needed to ensure that variable expansion works, even + # if the expansion uses the name without a prefix. + renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') + + # do variable interpolation here + while notdone: + for name in list(notdone): + value = notdone[name] + m = re.search(_findvar1_rx, value) or re.search(_findvar2_rx, value) + if m: + n = m.group(1) + found = True + if n in done: + item = str(done[n]) + elif n in notdone: + # get it on a subsequent round + found = False + elif n in os.environ: + # do it like make: fall back to environment + item = os.environ[n] + + elif n in renamed_variables: + if name.startswith('PY_') and name[3:] in renamed_variables: + item = "" + + elif 'PY_' + n in notdone: + found = False + + else: + item = str(done['PY_' + n]) + else: + done[n] = item = "" + if found: + after = value[m.end():] + value = value[:m.start()] + item + after + if "$" in after: + notdone[name] = value + else: + try: value = int(value) + except ValueError: + done[name] = value.strip() + else: + done[name] = value + del notdone[name] + + if name.startswith('PY_') \ + and name[3:] in renamed_variables: + + name = name[3:] + if name not in done: + done[name] = value + else: + # bogus variable reference; just drop it since we can't deal + del notdone[name] + + fp.close() + + # strip spurious spaces + for k, v in done.items(): + if isinstance(v, str): + done[k] = v.strip() + + # save the results in the global dictionary + g.update(done) + return g + + # Following functions are deprecated together with this module and they # have no direct replacement diff --git a/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst b/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst new file mode 100644 index 00000000000000..d731a549632b5f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst @@ -0,0 +1,2 @@ +Restore back :func:`parse_makefile` in :mod:`distutils.sysconfig` because it +behaves differently than the similar implementation in :mod:`sysconfig`. From webhook-mailer at python.org Tue Jun 15 08:47:42 2021 From: webhook-mailer at python.org (encukou) Date: Tue, 15 Jun 2021 12:47:42 -0000 Subject: [Python-checkins] bpo-42064: Move sqlite3 types to global state (GH-26537) Message-ID: https://github.com/python/cpython/commit/10a5c806d4dec6c342dcc9888fbe4fa1fa9b7a1f commit: 10a5c806d4dec6c342dcc9888fbe4fa1fa9b7a1f branch: main author: Erlend Egeberg Aasland committer: encukou date: 2021-06-15T14:47:34+02:00 summary: bpo-42064: Move sqlite3 types to global state (GH-26537) * Move connection type to global state * Move cursor type to global state * Move prepare protocol type to global state * Move row type to global state * Move statement type to global state * ADD_TYPE takes a pointer * pysqlite_get_state is now static inline files: M Modules/_sqlite/clinic/connection.c.h M Modules/_sqlite/clinic/cursor.c.h M Modules/_sqlite/clinic/module.c.h M Modules/_sqlite/clinic/row.c.h M Modules/_sqlite/connection.c M Modules/_sqlite/cursor.c M Modules/_sqlite/microprotocols.c M Modules/_sqlite/module.c M Modules/_sqlite/module.h M Modules/_sqlite/prepare_protocol.c M Modules/_sqlite/row.c M Modules/_sqlite/statement.c diff --git a/Modules/_sqlite/clinic/connection.c.h b/Modules/_sqlite/clinic/connection.c.h index f231ecc2ae78be..41104e23dfdee2 100644 --- a/Modules/_sqlite/clinic/connection.c.h +++ b/Modules/_sqlite/clinic/connection.c.h @@ -552,8 +552,8 @@ pysqlite_connection_backup(pysqlite_Connection *self, PyObject *const *args, Py_ if (!args) { goto exit; } - if (!PyObject_TypeCheck(args[0], pysqlite_ConnectionType)) { - _PyArg_BadArgument("backup", "argument 'target'", (pysqlite_ConnectionType)->tp_name, args[0]); + if (!PyObject_TypeCheck(args[0], clinic_state()->ConnectionType)) { + _PyArg_BadArgument("backup", "argument 'target'", (clinic_state()->ConnectionType)->tp_name, args[0]); goto exit; } target = (pysqlite_Connection *)args[0]; @@ -710,4 +710,4 @@ pysqlite_connection_exit(pysqlite_Connection *self, PyObject *const *args, Py_ss #ifndef PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF #define PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF #endif /* !defined(PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF) */ -/*[clinic end generated code: output=c1bf09db3bcd0105 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=1ee2f6173f4acec3 input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/clinic/cursor.c.h b/Modules/_sqlite/clinic/cursor.c.h index 7a79d74818a2e2..b519094bf353fe 100644 --- a/Modules/_sqlite/clinic/cursor.c.h +++ b/Modules/_sqlite/clinic/cursor.c.h @@ -12,15 +12,15 @@ pysqlite_cursor_init(PyObject *self, PyObject *args, PyObject *kwargs) int return_value = -1; pysqlite_Connection *connection; - if (Py_IS_TYPE(self, pysqlite_CursorType) && + if (Py_IS_TYPE(self, clinic_state()->CursorType) && !_PyArg_NoKeywords("Cursor", kwargs)) { goto exit; } if (!_PyArg_CheckPositional("Cursor", PyTuple_GET_SIZE(args), 1, 1)) { goto exit; } - if (!PyObject_TypeCheck(PyTuple_GET_ITEM(args, 0), pysqlite_ConnectionType)) { - _PyArg_BadArgument("Cursor", "argument 1", (pysqlite_ConnectionType)->tp_name, PyTuple_GET_ITEM(args, 0)); + if (!PyObject_TypeCheck(PyTuple_GET_ITEM(args, 0), clinic_state()->ConnectionType)) { + _PyArg_BadArgument("Cursor", "argument 1", (clinic_state()->ConnectionType)->tp_name, PyTuple_GET_ITEM(args, 0)); goto exit; } connection = (pysqlite_Connection *)PyTuple_GET_ITEM(args, 0); @@ -259,4 +259,4 @@ pysqlite_cursor_close(pysqlite_Cursor *self, PyObject *Py_UNUSED(ignored)) { return pysqlite_cursor_close_impl(self); } -/*[clinic end generated code: output=6a2d4d49784aa686 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=e3a502bb26aaefa5 input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/clinic/module.c.h b/Modules/_sqlite/clinic/module.c.h index fb1e1187b209f8..18557355061fa8 100644 --- a/Modules/_sqlite/clinic/module.c.h +++ b/Modules/_sqlite/clinic/module.c.h @@ -198,7 +198,7 @@ pysqlite_adapt(PyObject *module, PyObject *const *args, Py_ssize_t nargs) { PyObject *return_value = NULL; PyObject *obj; - PyObject *proto = (PyObject*)pysqlite_PrepareProtocolType; + PyObject *proto = (PyObject *)clinic_state()->PrepareProtocolType; PyObject *alt = NULL; if (!_PyArg_CheckPositional("adapt", nargs, 1, 3)) { @@ -219,4 +219,4 @@ pysqlite_adapt(PyObject *module, PyObject *const *args, Py_ssize_t nargs) exit: return return_value; } -/*[clinic end generated code: output=d87990f941c209fa input=a9049054013a1b77]*/ +/*[clinic end generated code: output=e9c2442673289cab input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/clinic/row.c.h b/Modules/_sqlite/clinic/row.c.h index 7ff110940d0b61..310d62b8a7f49a 100644 --- a/Modules/_sqlite/clinic/row.c.h +++ b/Modules/_sqlite/clinic/row.c.h @@ -13,15 +13,15 @@ pysqlite_row_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) pysqlite_Cursor *cursor; PyObject *data; - if ((type == pysqlite_RowType) && + if ((type == clinic_state()->RowType) && !_PyArg_NoKeywords("Row", kwargs)) { goto exit; } if (!_PyArg_CheckPositional("Row", PyTuple_GET_SIZE(args), 2, 2)) { goto exit; } - if (!PyObject_TypeCheck(PyTuple_GET_ITEM(args, 0), pysqlite_CursorType)) { - _PyArg_BadArgument("Row", "argument 1", (pysqlite_CursorType)->tp_name, PyTuple_GET_ITEM(args, 0)); + if (!PyObject_TypeCheck(PyTuple_GET_ITEM(args, 0), clinic_state()->CursorType)) { + _PyArg_BadArgument("Row", "argument 1", (clinic_state()->CursorType)->tp_name, PyTuple_GET_ITEM(args, 0)); goto exit; } cursor = (pysqlite_Cursor *)PyTuple_GET_ITEM(args, 0); @@ -53,4 +53,4 @@ pysqlite_row_keys(pysqlite_Row *self, PyObject *Py_UNUSED(ignored)) { return pysqlite_row_keys_impl(self); } -/*[clinic end generated code: output=8d29220b9cde035d input=a9049054013a1b77]*/ +/*[clinic end generated code: output=0382771b4fc85f36 input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 9199c347caab0d..915515c0a195a1 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -36,12 +36,15 @@ #define HAVE_TRACE_V2 #endif +#define clinic_state() (pysqlite_get_state(NULL)) #include "clinic/connection.c.h" +#undef clinic_state + /*[clinic input] module _sqlite3 -class _sqlite3.Connection "pysqlite_Connection *" "pysqlite_ConnectionType" +class _sqlite3.Connection "pysqlite_Connection *" "clinic_state()->ConnectionType" [clinic start generated code]*/ -/*[clinic end generated code: output=da39a3ee5e6b4b0d input=aa796073bd8f69db]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=67369db2faf80891]*/ _Py_IDENTIFIER(cursor); @@ -339,14 +342,15 @@ pysqlite_connection_cursor_impl(pysqlite_Connection *self, PyObject *factory) return NULL; } + pysqlite_state *state = pysqlite_get_state(NULL); if (factory == NULL) { - factory = (PyObject*)pysqlite_CursorType; + factory = (PyObject *)state->CursorType; } cursor = PyObject_CallOneArg(factory, (PyObject *)self); if (cursor == NULL) return NULL; - if (!PyObject_TypeCheck(cursor, pysqlite_CursorType)) { + if (!PyObject_TypeCheck(cursor, state->CursorType)) { PyErr_Format(PyExc_TypeError, "factory must return a cursor, not %.100s", Py_TYPE(cursor)->tp_name); @@ -1592,7 +1596,7 @@ pysqlite_connection_iterdump_impl(pysqlite_Connection *self) /*[clinic input] _sqlite3.Connection.backup as pysqlite_connection_backup - target: object(type='pysqlite_Connection *', subclass_of='pysqlite_ConnectionType') + target: object(type='pysqlite_Connection *', subclass_of='clinic_state()->ConnectionType') * pages: int = -1 progress: object = None @@ -1607,7 +1611,7 @@ pysqlite_connection_backup_impl(pysqlite_Connection *self, pysqlite_Connection *target, int pages, PyObject *progress, const char *name, double sleep) -/*[clinic end generated code: output=306a3e6a38c36334 input=30ae45fc420bfd3b]*/ +/*[clinic end generated code: output=306a3e6a38c36334 input=c759627ab1ad46ff]*/ { int rc; int sleep_ms = (int)(sleep * 1000.0); @@ -1914,14 +1918,14 @@ static PyType_Spec connection_spec = { .slots = connection_slots, }; -PyTypeObject *pysqlite_ConnectionType = NULL; - int pysqlite_connection_setup_types(PyObject *module) { - pysqlite_ConnectionType = (PyTypeObject *)PyType_FromModuleAndSpec(module, &connection_spec, NULL); - if (pysqlite_ConnectionType == NULL) { + PyObject *type = PyType_FromModuleAndSpec(module, &connection_spec, NULL); + if (type == NULL) { return -1; } + pysqlite_state *state = pysqlite_get_state(module); + state->ConnectionType = (PyTypeObject *)type; return 0; } diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index c2e8de5b6c0f00..8c8a347f46e57a 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -24,20 +24,23 @@ #include "cursor.h" #include "module.h" #include "util.h" + +#define clinic_state() (pysqlite_get_state(NULL)) #include "clinic/cursor.c.h" +#undef clinic_state /*[clinic input] module _sqlite3 -class _sqlite3.Cursor "pysqlite_Cursor *" "pysqlite_CursorType" +class _sqlite3.Cursor "pysqlite_Cursor *" "clinic_state()->CursorType" [clinic start generated code]*/ -/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b2072d8db95411d5]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=3c5b8115c5cf30f1]*/ static const char errmsg_fetch_across_rollback[] = "Cursor needed to be reset because of commit/rollback and can no longer be fetched from."; /*[clinic input] _sqlite3.Cursor.__init__ as pysqlite_cursor_init - connection: object(type='pysqlite_Connection *', subclass_of='pysqlite_ConnectionType') + connection: object(type='pysqlite_Connection *', subclass_of='clinic_state()->ConnectionType') / [clinic start generated code]*/ @@ -45,7 +48,7 @@ _sqlite3.Cursor.__init__ as pysqlite_cursor_init static int pysqlite_cursor_init_impl(pysqlite_Cursor *self, pysqlite_Connection *connection) -/*[clinic end generated code: output=ac59dce49a809ca8 input=a8a4f75ac90999b2]*/ +/*[clinic end generated code: output=ac59dce49a809ca8 input=23d4265b534989fb]*/ { Py_INCREF(connection); Py_XSETREF(self->connection, connection); @@ -1079,14 +1082,14 @@ static PyType_Spec cursor_spec = { .slots = cursor_slots, }; -PyTypeObject *pysqlite_CursorType = NULL; - int pysqlite_cursor_setup_types(PyObject *module) { - pysqlite_CursorType = (PyTypeObject *)PyType_FromModuleAndSpec(module, &cursor_spec, NULL); - if (pysqlite_CursorType == NULL) { + PyObject *type = PyType_FromModuleAndSpec(module, &cursor_spec, NULL); + if (type == NULL) { return -1; } + pysqlite_state *state = pysqlite_get_state(module); + state->CursorType = (PyTypeObject *)type; return 0; } diff --git a/Modules/_sqlite/microprotocols.c b/Modules/_sqlite/microprotocols.c index e219a7239f8a7d..b2d6e7c427031f 100644 --- a/Modules/_sqlite/microprotocols.c +++ b/Modules/_sqlite/microprotocols.c @@ -58,8 +58,8 @@ pysqlite_microprotocols_add(PyTypeObject *type, PyObject *proto, PyObject *cast) PyObject* key; int rc; - if (proto == NULL) proto = (PyObject*)pysqlite_PrepareProtocolType; - + assert(type != NULL); + assert(proto != NULL); key = Py_BuildValue("(OO)", (PyObject*)type, proto); if (!key) { return -1; @@ -81,7 +81,7 @@ pysqlite_microprotocols_adapt(PyObject *obj, PyObject *proto, PyObject *alt) PyObject *adapter, *key, *adapted; /* we don't check for exact type conformance as specified in PEP 246 - because the pysqlite_PrepareProtocolType type is abstract and there is no + because the PrepareProtocolType type is abstract and there is no way to get a quotable object to be its instance */ /* look for an adapter in the registry */ diff --git a/Modules/_sqlite/module.c b/Modules/_sqlite/module.c index c60007e2059536..9587cbd4b9971c 100644 --- a/Modules/_sqlite/module.c +++ b/Modules/_sqlite/module.c @@ -32,7 +32,10 @@ #error "SQLite 3.7.15 or higher required" #endif +#define clinic_state() (pysqlite_get_state(NULL)) #include "clinic/module.c.h" +#undef clinic_state + /*[clinic input] module _sqlite3 [clinic start generated code]*/ @@ -57,12 +60,6 @@ int pysqlite_BaseTypeAdapted = 0; pysqlite_state pysqlite_global_state; -pysqlite_state * -pysqlite_get_state(PyObject *Py_UNUSED(module)) -{ - return &pysqlite_global_state; -} - static PyObject* module_connect(PyObject* self, PyObject* args, PyObject* kwargs) { @@ -93,7 +90,8 @@ static PyObject* module_connect(PyObject* self, PyObject* args, PyObject* } if (factory == NULL) { - factory = (PyObject*)pysqlite_ConnectionType; + pysqlite_state *state = pysqlite_get_state(self); + factory = (PyObject *)state->ConnectionType; } return PyObject_Call(factory, args, kwargs); @@ -176,9 +174,12 @@ pysqlite_register_adapter_impl(PyObject *module, PyTypeObject *type, pysqlite_BaseTypeAdapted = 1; } - rc = pysqlite_microprotocols_add(type, (PyObject*)pysqlite_PrepareProtocolType, caster); - if (rc == -1) + pysqlite_state *state = pysqlite_get_state(NULL); + PyObject *protocol = (PyObject *)state->PrepareProtocolType; + rc = pysqlite_microprotocols_add(type, protocol, caster); + if (rc == -1) { return NULL; + } Py_RETURN_NONE; } @@ -240,7 +241,7 @@ pysqlite_enable_callback_trace_impl(PyObject *module, int enable) _sqlite3.adapt as pysqlite_adapt obj: object - proto: object(c_default='(PyObject*)pysqlite_PrepareProtocolType') = PrepareProtocolType + proto: object(c_default='(PyObject *)clinic_state()->PrepareProtocolType') = PrepareProtocolType alt: object = NULL / @@ -250,7 +251,7 @@ Adapt given object to given protocol. Non-standard. static PyObject * pysqlite_adapt_impl(PyObject *module, PyObject *obj, PyObject *proto, PyObject *alt) -/*[clinic end generated code: output=0c3927c5fcd23dd9 input=a58ab77fb5ae22dd]*/ +/*[clinic end generated code: output=0c3927c5fcd23dd9 input=c8995aeb25d0e542]*/ { return pysqlite_microprotocols_adapt(obj, proto, alt); } @@ -358,7 +359,7 @@ static struct PyModuleDef _sqlite3module = { #define ADD_TYPE(module, type) \ do { \ - if (PyModule_AddType(module, &type) < 0) { \ + if (PyModule_AddType(module, type) < 0) { \ goto error; \ } \ } while (0) @@ -392,6 +393,7 @@ PyMODINIT_FUNC PyInit__sqlite3(void) } module = PyModule_Create(&_sqlite3module); + pysqlite_state *state = pysqlite_get_state(module); if (!module || (pysqlite_row_setup_types(module) < 0) || @@ -403,10 +405,10 @@ PyMODINIT_FUNC PyInit__sqlite3(void) goto error; } - ADD_TYPE(module, *pysqlite_ConnectionType); - ADD_TYPE(module, *pysqlite_CursorType); - ADD_TYPE(module, *pysqlite_PrepareProtocolType); - ADD_TYPE(module, *pysqlite_RowType); + ADD_TYPE(module, state->ConnectionType); + ADD_TYPE(module, state->CursorType); + ADD_TYPE(module, state->PrepareProtocolType); + ADD_TYPE(module, state->RowType); /*** Create DB-API Exception hierarchy */ ADD_EXCEPTION(module, "Error", pysqlite_Error, PyExc_Exception); diff --git a/Modules/_sqlite/module.h b/Modules/_sqlite/module.h index a40e86e9c4da72..3f29035b5fe68a 100644 --- a/Modules/_sqlite/module.h +++ b/Modules/_sqlite/module.h @@ -31,9 +31,20 @@ typedef struct { PyObject *lru_cache; + PyTypeObject *ConnectionType; + PyTypeObject *CursorType; + PyTypeObject *PrepareProtocolType; + PyTypeObject *RowType; + PyTypeObject *StatementType; } pysqlite_state; -extern pysqlite_state *pysqlite_get_state(PyObject *module); +extern pysqlite_state pysqlite_global_state; + +static inline pysqlite_state * +pysqlite_get_state(PyObject *Py_UNUSED(module)) +{ + return &pysqlite_global_state; +} extern PyObject* pysqlite_Error; extern PyObject* pysqlite_Warning; diff --git a/Modules/_sqlite/prepare_protocol.c b/Modules/_sqlite/prepare_protocol.c index ece42f4df6f5ac..1f9d7b751d209b 100644 --- a/Modules/_sqlite/prepare_protocol.c +++ b/Modules/_sqlite/prepare_protocol.c @@ -60,14 +60,14 @@ static PyType_Spec type_spec = { .slots = type_slots, }; -PyTypeObject *pysqlite_PrepareProtocolType = NULL; - int pysqlite_prepare_protocol_setup_types(PyObject *module) { - pysqlite_PrepareProtocolType = (PyTypeObject *)PyType_FromModuleAndSpec(module, &type_spec, NULL); - if (pysqlite_PrepareProtocolType == NULL) { + PyObject *type = PyType_FromModuleAndSpec(module, &type_spec, NULL); + if (type == NULL) { return -1; } + pysqlite_state *state = pysqlite_get_state(module); + state->PrepareProtocolType = (PyTypeObject *)type; return 0; } diff --git a/Modules/_sqlite/row.c b/Modules/_sqlite/row.c index 24722be49082cf..bf43dad4473aae 100644 --- a/Modules/_sqlite/row.c +++ b/Modules/_sqlite/row.c @@ -23,13 +23,16 @@ #include "row.h" #include "cursor.h" + +#define clinic_state() (pysqlite_get_state(NULL)) #include "clinic/row.c.h" +#undef clinic_state /*[clinic input] module _sqlite3 -class _sqlite3.Row "pysqlite_Row *" "pysqlite_RowType" +class _sqlite3.Row "pysqlite_Row *" "clinic_state()->RowType" [clinic start generated code]*/ -/*[clinic end generated code: output=da39a3ee5e6b4b0d input=384227da65f250fd]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=966c53403d7f3a40]*/ static int row_clear(pysqlite_Row *self) @@ -62,7 +65,7 @@ pysqlite_row_dealloc(PyObject *self) @classmethod _sqlite3.Row.__new__ as pysqlite_row_new - cursor: object(type='pysqlite_Cursor *', subclass_of='pysqlite_CursorType') + cursor: object(type='pysqlite_Cursor *', subclass_of='clinic_state()->CursorType') data: object(subclass_of='&PyTuple_Type') / @@ -71,7 +74,7 @@ _sqlite3.Row.__new__ as pysqlite_row_new static PyObject * pysqlite_row_new_impl(PyTypeObject *type, pysqlite_Cursor *cursor, PyObject *data) -/*[clinic end generated code: output=10d58b09a819a4c1 input=f6cd7e6e0935828d]*/ +/*[clinic end generated code: output=10d58b09a819a4c1 input=b9e954ca31345dbf]*/ { pysqlite_Row *self; @@ -216,7 +219,8 @@ static PyObject* pysqlite_row_richcompare(pysqlite_Row *self, PyObject *_other, if (opid != Py_EQ && opid != Py_NE) Py_RETURN_NOTIMPLEMENTED; - if (PyObject_TypeCheck(_other, pysqlite_RowType)) { + pysqlite_state *state = pysqlite_get_state(NULL); + if (PyObject_TypeCheck(_other, state->RowType)) { pysqlite_Row *other = (pysqlite_Row *)_other; int eq = PyObject_RichCompareBool(self->description, other->description, Py_EQ); if (eq < 0) { @@ -258,14 +262,14 @@ static PyType_Spec row_spec = { .slots = row_slots, }; -PyTypeObject *pysqlite_RowType = NULL; - int pysqlite_row_setup_types(PyObject *module) { - pysqlite_RowType = (PyTypeObject *)PyType_FromModuleAndSpec(module, &row_spec, NULL); - if (pysqlite_RowType == NULL) { + PyObject *type = PyType_FromModuleAndSpec(module, &row_spec, NULL); + if (type == NULL) { return -1; } + pysqlite_state *state = pysqlite_get_state(module); + state->RowType = (PyTypeObject *)type; return 0; } diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index eca225820cd75e..89fe4bbec3ea43 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -110,8 +110,9 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) break; } + pysqlite_state *state = pysqlite_get_state(NULL); pysqlite_Statement *self = PyObject_GC_New(pysqlite_Statement, - pysqlite_StatementType); + state->StatementType); if (self == NULL) { goto error; } @@ -223,6 +224,7 @@ static int _need_adapt(PyObject* obj) void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* parameters) { + pysqlite_state *state = pysqlite_get_state(NULL); PyObject* current_param; PyObject* adapted; const char* binding_name; @@ -271,7 +273,10 @@ void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* para if (!_need_adapt(current_param)) { adapted = current_param; } else { - adapted = pysqlite_microprotocols_adapt(current_param, (PyObject*)pysqlite_PrepareProtocolType, current_param); + PyObject *protocol = (PyObject *)state->PrepareProtocolType; + adapted = pysqlite_microprotocols_adapt(current_param, + protocol, + current_param); Py_DECREF(current_param); if (!adapted) { return; @@ -322,7 +327,10 @@ void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* para if (!_need_adapt(current_param)) { adapted = current_param; } else { - adapted = pysqlite_microprotocols_adapt(current_param, (PyObject*)pysqlite_PrepareProtocolType, current_param); + PyObject *protocol = (PyObject *)state->PrepareProtocolType; + adapted = pysqlite_microprotocols_adapt(current_param, + protocol, + current_param); Py_DECREF(current_param); if (!adapted) { return; @@ -497,14 +505,15 @@ static PyType_Spec stmt_spec = { .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, .slots = stmt_slots, }; -PyTypeObject *pysqlite_StatementType = NULL; int pysqlite_statement_setup_types(PyObject *module) { - pysqlite_StatementType = (PyTypeObject *)PyType_FromModuleAndSpec(module, &stmt_spec, NULL); - if (pysqlite_StatementType == NULL) { + PyObject *type = PyType_FromModuleAndSpec(module, &stmt_spec, NULL); + if (type == NULL) { return -1; } + pysqlite_state *state = pysqlite_get_state(module); + state->StatementType = (PyTypeObject *)type; return 0; } From webhook-mailer at python.org Tue Jun 15 09:09:33 2021 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Jun 2021 13:09:33 -0000 Subject: [Python-checkins] bpo-42972: _thread.RLock implements the GH protocol (GH-26734) Message-ID: https://github.com/python/cpython/commit/1cd3d859a49b047dd08abb6f44f0539564d3525a commit: 1cd3d859a49b047dd08abb6f44f0539564d3525a branch: main author: Victor Stinner committer: vstinner date: 2021-06-15T15:09:24+02:00 summary: bpo-42972: _thread.RLock implements the GH protocol (GH-26734) The _thread.RLock type now fully implement the GC protocol: add a traverse function and the Py_TPFLAGS_HAVE_GC flag. files: A Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst M Modules/_threadmodule.c diff --git a/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst b/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst new file mode 100644 index 0000000000000..fbcc12c9f90a2 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst @@ -0,0 +1,2 @@ +The _thread.RLock type now fully implement the GC protocol: add a traverse +function and the :const:`Py_TPFLAGS_HAVE_GC` flag. Patch by Victor Stinner. diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index d4d5c0acff867..3f7f1d23bc90d 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -327,6 +327,14 @@ typedef struct { PyObject *in_weakreflist; } rlockobject; +static int +rlock_traverse(rlockobject *self, visitproc visit, void *arg) +{ + Py_VISIT(Py_TYPE(self)); + return 0; +} + + static void rlock_dealloc(rlockobject *self) { @@ -579,13 +587,14 @@ static PyType_Slot rlock_type_slots[] = { {Py_tp_alloc, PyType_GenericAlloc}, {Py_tp_new, rlock_new}, {Py_tp_members, rlock_type_members}, + {Py_tp_traverse, rlock_traverse}, {0, 0}, }; static PyType_Spec rlock_type_spec = { .name = "_thread.RLock", .basicsize = sizeof(rlockobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, .slots = rlock_type_slots, }; From webhook-mailer at python.org Tue Jun 15 09:29:52 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 15 Jun 2021 13:29:52 -0000 Subject: [Python-checkins] bpo-42972: _thread.RLock implements the GH protocol (GH-26734) Message-ID: https://github.com/python/cpython/commit/e30fe27dabbc6b48736c3c17d57f6fa542376e8f commit: e30fe27dabbc6b48736c3c17d57f6fa542376e8f branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-15T06:29:44-07:00 summary: bpo-42972: _thread.RLock implements the GH protocol (GH-26734) The _thread.RLock type now fully implement the GC protocol: add a traverse function and the Py_TPFLAGS_HAVE_GC flag. (cherry picked from commit 1cd3d859a49b047dd08abb6f44f0539564d3525a) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst M Modules/_threadmodule.c diff --git a/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst b/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst new file mode 100644 index 0000000000000..fbcc12c9f90a2 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst @@ -0,0 +1,2 @@ +The _thread.RLock type now fully implement the GC protocol: add a traverse +function and the :const:`Py_TPFLAGS_HAVE_GC` flag. Patch by Victor Stinner. diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index 6924d6553a1ff..5a2001c8fbf26 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -327,6 +327,14 @@ typedef struct { PyObject *in_weakreflist; } rlockobject; +static int +rlock_traverse(rlockobject *self, visitproc visit, void *arg) +{ + Py_VISIT(Py_TYPE(self)); + return 0; +} + + static void rlock_dealloc(rlockobject *self) { @@ -579,13 +587,14 @@ static PyType_Slot rlock_type_slots[] = { {Py_tp_alloc, PyType_GenericAlloc}, {Py_tp_new, rlock_new}, {Py_tp_members, rlock_type_members}, + {Py_tp_traverse, rlock_traverse}, {0, 0}, }; static PyType_Spec rlock_type_spec = { .name = "_thread.RLock", .basicsize = sizeof(rlockobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, .slots = rlock_type_slots, }; From webhook-mailer at python.org Tue Jun 15 10:14:32 2021 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Jun 2021 14:14:32 -0000 Subject: [Python-checkins] bpo-44422: Fix threading.enumerate() reentrant call (GH-26727) Message-ID: https://github.com/python/cpython/commit/243fd01047ddce1a7eb0f99a49732d123e942c63 commit: 243fd01047ddce1a7eb0f99a49732d123e942c63 branch: main author: Victor Stinner committer: vstinner date: 2021-06-15T16:14:24+02:00 summary: bpo-44422: Fix threading.enumerate() reentrant call (GH-26727) The threading.enumerate() function now uses a reentrant lock to prevent a hang on reentrant call. files: A Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst M Lib/threading.py diff --git a/Lib/threading.py b/Lib/threading.py index 6c3d49c2d5267..766011fa0312b 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -775,8 +775,11 @@ class BrokenBarrierError(RuntimeError): def _newname(name_template): return name_template % _counter() -# Active thread administration -_active_limbo_lock = _allocate_lock() +# Active thread administration. +# +# bpo-44422: Use a reentrant lock to allow reentrant calls to functions like +# threading.enumerate(). +_active_limbo_lock = RLock() _active = {} # maps thread id to Thread object _limbo = {} _dangling = WeakSet() @@ -1564,7 +1567,7 @@ def _after_fork(): # by another (non-forked) thread. http://bugs.python.org/issue874900 global _active_limbo_lock, _main_thread global _shutdown_locks_lock, _shutdown_locks - _active_limbo_lock = _allocate_lock() + _active_limbo_lock = RLock() # fork() only copied the current thread; clear references to others. new_active = {} diff --git a/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst b/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst new file mode 100644 index 0000000000000..09bace01fc779 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst @@ -0,0 +1,3 @@ +The :func:`threading.enumerate` function now uses a reentrant lock to +prevent a hang on reentrant call. +Patch by Victor Stinner. From webhook-mailer at python.org Tue Jun 15 10:34:51 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 15 Jun 2021 14:34:51 -0000 Subject: [Python-checkins] bpo-44422: Fix threading.enumerate() reentrant call (GH-26727) Message-ID: https://github.com/python/cpython/commit/c3b776f83b4c765da6d7b8854e844e07bd33c375 commit: c3b776f83b4c765da6d7b8854e844e07bd33c375 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-15T07:34:42-07:00 summary: bpo-44422: Fix threading.enumerate() reentrant call (GH-26727) The threading.enumerate() function now uses a reentrant lock to prevent a hang on reentrant call. (cherry picked from commit 243fd01047ddce1a7eb0f99a49732d123e942c63) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst M Lib/threading.py diff --git a/Lib/threading.py b/Lib/threading.py index 6c3d49c2d5267..766011fa0312b 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -775,8 +775,11 @@ class BrokenBarrierError(RuntimeError): def _newname(name_template): return name_template % _counter() -# Active thread administration -_active_limbo_lock = _allocate_lock() +# Active thread administration. +# +# bpo-44422: Use a reentrant lock to allow reentrant calls to functions like +# threading.enumerate(). +_active_limbo_lock = RLock() _active = {} # maps thread id to Thread object _limbo = {} _dangling = WeakSet() @@ -1564,7 +1567,7 @@ def _after_fork(): # by another (non-forked) thread. http://bugs.python.org/issue874900 global _active_limbo_lock, _main_thread global _shutdown_locks_lock, _shutdown_locks - _active_limbo_lock = _allocate_lock() + _active_limbo_lock = RLock() # fork() only copied the current thread; clear references to others. new_active = {} diff --git a/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst b/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst new file mode 100644 index 0000000000000..09bace01fc779 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst @@ -0,0 +1,3 @@ +The :func:`threading.enumerate` function now uses a reentrant lock to +prevent a hang on reentrant call. +Patch by Victor Stinner. From webhook-mailer at python.org Tue Jun 15 12:30:36 2021 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Jun 2021 16:30:36 -0000 Subject: [Python-checkins] bpo-44422: Fix threading.enumerate() reentrant call (GH-26727) (GH-26738) Message-ID: https://github.com/python/cpython/commit/8fe57aacc7bf9d9af84803b69dbb1d66597934c6 commit: 8fe57aacc7bf9d9af84803b69dbb1d66597934c6 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2021-06-15T18:30:26+02:00 summary: bpo-44422: Fix threading.enumerate() reentrant call (GH-26727) (GH-26738) The threading.enumerate() function now uses a reentrant lock to prevent a hang on reentrant call. (cherry picked from commit 243fd01047ddce1a7eb0f99a49732d123e942c63) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst M Lib/threading.py diff --git a/Lib/threading.py b/Lib/threading.py index 702acaa005430..a49775e6b1773 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -750,8 +750,11 @@ class BrokenBarrierError(RuntimeError): def _newname(template="Thread-%d"): return template % _counter() -# Active thread administration -_active_limbo_lock = _allocate_lock() +# Active thread administration. +# +# bpo-44422: Use a reentrant lock to allow reentrant calls to functions like +# threading.enumerate(). +_active_limbo_lock = RLock() _active = {} # maps thread id to Thread object _limbo = {} _dangling = WeakSet() @@ -1474,7 +1477,7 @@ def _after_fork(): # by another (non-forked) thread. http://bugs.python.org/issue874900 global _active_limbo_lock, _main_thread global _shutdown_locks_lock, _shutdown_locks - _active_limbo_lock = _allocate_lock() + _active_limbo_lock = RLock() # fork() only copied the current thread; clear references to others. new_active = {} diff --git a/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst b/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst new file mode 100644 index 0000000000000..09bace01fc779 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst @@ -0,0 +1,3 @@ +The :func:`threading.enumerate` function now uses a reentrant lock to +prevent a hang on reentrant call. +Patch by Victor Stinner. From webhook-mailer at python.org Tue Jun 15 14:25:17 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 15 Jun 2021 18:25:17 -0000 Subject: [Python-checkins] Fix a typo in _make_class_unpicklable() docstring (GH-26729) Message-ID: https://github.com/python/cpython/commit/f6cf38c8e2240c6dd94664d8dffd8ff42cacbc42 commit: f6cf38c8e2240c6dd94664d8dffd8ff42cacbc42 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-15T11:25:07-07:00 summary: Fix a typo in _make_class_unpicklable() docstring (GH-26729) (cherry picked from commit 689a84475e7b1da79d5ae82df67ab8897316f98c) Co-authored-by: andrei kulakov files: M Lib/enum.py diff --git a/Lib/enum.py b/Lib/enum.py index bf3460ca0fd43..9f9c89e8a4b26 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -79,7 +79,7 @@ def _make_class_unpicklable(obj): """ Make the given obj un-picklable. - obj should be either a dictionary, on an Enum + obj should be either a dictionary, or an Enum """ def _break_on_call_reduce(self, proto): raise TypeError('%r cannot be pickled' % self) From webhook-mailer at python.org Tue Jun 15 14:38:25 2021 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 15 Jun 2021 18:38:25 -0000 Subject: [Python-checkins] [Enum] improve test, add andrei kulakov to ACKS (GH-26726) Message-ID: https://github.com/python/cpython/commit/cb2014f2077c92c35486bf0db7e646a68478a7a5 commit: cb2014f2077c92c35486bf0db7e646a68478a7a5 branch: main author: Ethan Furman committer: ethanfurman date: 2021-06-15T11:38:15-07:00 summary: [Enum] improve test, add andrei kulakov to ACKS (GH-26726) files: M Lib/test/test_enum.py M Misc/ACKS diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 956b8347b1e1c..4626c2435c1ab 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -660,12 +660,35 @@ def __repr__(self): self.assertEqual(repr(MyEnum.A), '') # class SillyInt(HexInt): + __qualname__ = 'SillyInt' pass class MyOtherEnum(SillyInt, enum.Enum): + __qualname__ = 'MyOtherEnum' D = 4 E = 5 F = 6 self.assertIs(MyOtherEnum._member_type_, SillyInt) + globals()['SillyInt'] = SillyInt + globals()['MyOtherEnum'] = MyOtherEnum + test_pickle_dump_load(self.assertIs, MyOtherEnum.E) + test_pickle_dump_load(self.assertIs, MyOtherEnum) + # + # This did not work in 3.9, but does now with pickling by name + class UnBrokenInt(int): + __qualname__ = 'UnBrokenInt' + def __new__(cls, value): + return int.__new__(cls, value) + class MyUnBrokenEnum(UnBrokenInt, Enum): + __qualname__ = 'MyUnBrokenEnum' + G = 7 + H = 8 + I = 9 + self.assertIs(MyUnBrokenEnum._member_type_, UnBrokenInt) + self.assertIs(MyUnBrokenEnum(7), MyUnBrokenEnum.G) + globals()['UnBrokenInt'] = UnBrokenInt + globals()['MyUnBrokenEnum'] = MyUnBrokenEnum + test_pickle_dump_load(self.assertIs, MyUnBrokenEnum.I) + test_pickle_dump_load(self.assertIs, MyUnBrokenEnum) def test_too_many_data_types(self): with self.assertRaisesRegex(TypeError, 'too many data types'): diff --git a/Misc/ACKS b/Misc/ACKS index e8c99257ec611..87de95b938c20 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -970,6 +970,7 @@ Andrew Kuchling Jakub Kuczys Dave Kuhlman Jon Kuhn +Andrei Kulakov Ilya Kulakov Upendra Kumar Toshio Kuratomi From webhook-mailer at python.org Tue Jun 15 14:48:45 2021 From: webhook-mailer at python.org (mdickinson) Date: Tue, 15 Jun 2021 18:48:45 -0000 Subject: [Python-checkins] bpo-43475: Add what's new entry for NaN hash changes (GH-26725) Message-ID: https://github.com/python/cpython/commit/1d10bf0bb9409a406c56b0de8870df998637fd0f commit: 1d10bf0bb9409a406c56b0de8870df998637fd0f branch: main author: Mark Dickinson committer: mdickinson date: 2021-06-15T19:48:35+01:00 summary: bpo-43475: Add what's new entry for NaN hash changes (GH-26725) files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 249eb733a88bf..9b9dd31a3beab 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -836,6 +836,13 @@ Other Language Changes effectless under ``from __future__ import annotations``. (Contributed by Batuhan Taskaya in :issue:`42725`.) +* Hashes of NaN values of both :class:`float` type and + :class:`decimal.Decimal` type now depend on object identity. Formerly, they + always hashed to ``0`` even though NaN values are not equal to one another. + This caused potentially quadratic runtime behavior due to excessive hash + collisions when creating dictionaries and sets containing multiple NaNs. + (Contributed by Raymond Hettinger in :issue:`43475`.) + New Modules =========== From webhook-mailer at python.org Tue Jun 15 15:13:18 2021 From: webhook-mailer at python.org (mdickinson) Date: Tue, 15 Jun 2021 19:13:18 -0000 Subject: [Python-checkins] [3.10] bpo-43475: Add what's new entry for NaN hash changes (GH-26725) (GH-26743) Message-ID: https://github.com/python/cpython/commit/8d0b2ca493e236fcad8709a622c1ac8ad29c372d commit: 8d0b2ca493e236fcad8709a622c1ac8ad29c372d branch: 3.10 author: Mark Dickinson committer: mdickinson date: 2021-06-15T20:13:10+01:00 summary: [3.10] bpo-43475: Add what's new entry for NaN hash changes (GH-26725) (GH-26743) (cherry picked from commit 1d10bf0bb9409a406c56b0de8870df998637fd0f) Co-authored-by: Mark Dickinson files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 530ffce59b15b..6bd4157164f5b 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -836,6 +836,13 @@ Other Language Changes effectless under ``from __future__ import annotations``. (Contributed by Batuhan Taskaya in :issue:`42725`.) +* Hashes of NaN values of both :class:`float` type and + :class:`decimal.Decimal` type now depend on object identity. Formerly, they + always hashed to ``0`` even though NaN values are not equal to one another. + This caused potentially quadratic runtime behavior due to excessive hash + collisions when creating dictionaries and sets containing multiple NaNs. + (Contributed by Raymond Hettinger in :issue:`43475`.) + New Modules =========== From webhook-mailer at python.org Tue Jun 15 17:07:58 2021 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 15 Jun 2021 21:07:58 -0000 Subject: [Python-checkins] bpo-44342: [Enum] fix data type search (GH-26667) Message-ID: https://github.com/python/cpython/commit/0f99324f61d5a2edd8729be5eed6f172c892af24 commit: 0f99324f61d5a2edd8729be5eed6f172c892af24 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2021-06-15T14:07:37-07:00 summary: bpo-44342: [Enum] fix data type search (GH-26667) In an inheritance chain of int -> my_int -> final_int the data type is now final_int (not my_int) (cherry picked from commit 3a7cccfd6cd3693e1a2ab65ee05d7f45f8501dfa) Co-authored-by: Ethan Furman Co-authored-by: Ethan Furman files: M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 9f9c89e8a4b26..49c46ea86dbac 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -823,7 +823,7 @@ def _find_data_type(bases): data_types.add(candidate or base) break else: - candidate = base + candidate = candidate or base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) elif data_types: diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index ceb0da8c77ba3..956b8347b1e1c 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -658,6 +658,14 @@ class MyEnum(HexInt, enum.Enum): def __repr__(self): return '<%s.%s: %r>' % (self.__class__.__name__, self._name_, self._value_) self.assertEqual(repr(MyEnum.A), '') + # + class SillyInt(HexInt): + pass + class MyOtherEnum(SillyInt, enum.Enum): + D = 4 + E = 5 + F = 6 + self.assertIs(MyOtherEnum._member_type_, SillyInt) def test_too_many_data_types(self): with self.assertRaisesRegex(TypeError, 'too many data types'): From webhook-mailer at python.org Tue Jun 15 18:35:35 2021 From: webhook-mailer at python.org (ericsnowcurrently) Date: Tue, 15 Jun 2021 22:35:35 -0000 Subject: [Python-checkins] bpo-43693: Eliminate unused "fast locals". (gh-26587) Message-ID: https://github.com/python/cpython/commit/ac38a9f2dfbba95f5d4338eb11a0221d38ef9328 commit: ac38a9f2dfbba95f5d4338eb11a0221d38ef9328 branch: main author: Eric Snow committer: ericsnowcurrently date: 2021-06-15T16:35:25-06:00 summary: bpo-43693: Eliminate unused "fast locals". (gh-26587) Currently, if an arg value escapes (into the closure for an inner function) we end up allocating two indices in the fast locals even though only one gets used. Additionally, using the lower index would be better in some cases, such as with no-arg `super()`. To address this, we update the compiler to fix the offsets so each variable only gets one "fast local". As a consequence, now some cell offsets are interspersed with the locals (only when an arg escapes to an inner function). https://bugs.python.org/issue43693 files: A Misc/NEWS.d/next/Core and Builtins/2021-06-07-15-13-44.bpo-43693.c_zDeY.rst M Include/cpython/code.h M Include/internal/pycore_frame.h M Lib/importlib/_bootstrap_external.py M Lib/test/test_dis.py M Objects/codeobject.c M Objects/frameobject.c M Objects/typeobject.c M Python/ceval.c M Python/compile.c M Python/importlib.h M Python/importlib_external.h diff --git a/Include/cpython/code.h b/Include/cpython/code.h index df79ddbc1b19a..5bf4c8c15dcce 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -83,11 +83,11 @@ struct PyCodeObject { /* These fields are set with computed values on new code objects. */ - int *co_cell2arg; /* Maps cell vars which are arguments. */ // redundant values (derived from co_localsplusnames and co_localspluskinds) int co_nlocalsplus; /* number of local + cell + free variables */ int co_nlocals; /* number of local variables */ - int co_ncellvars; /* number of cell variables */ + int co_nplaincellvars; /* number of non-arg cell variables */ + int co_ncellvars; /* total number of cell variables */ int co_nfreevars; /* number of free variables */ // lazily-computed values PyObject *co_varnames; /* tuple of strings (local variable names) */ @@ -142,10 +142,6 @@ struct PyCodeObject { #define CO_FUTURE_GENERATOR_STOP 0x800000 #define CO_FUTURE_ANNOTATIONS 0x1000000 -/* This value is found in the co_cell2arg array when the associated cell - variable does not correspond to an argument. */ -#define CO_CELL_NOT_AN_ARG (-1) - /* This should be defined if a future statement modifies the syntax. For example, when a keyword is added. */ diff --git a/Include/internal/pycore_frame.h b/Include/internal/pycore_frame.h index 11c3a2c01e7e2..44f58fb694871 100644 --- a/Include/internal/pycore_frame.h +++ b/Include/internal/pycore_frame.h @@ -32,8 +32,6 @@ _PyFrame_GetBuiltins(PyFrameObject *f) int _PyFrame_TakeLocals(PyFrameObject *f); -PyAPI_FUNC(int) _PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg); - #ifdef __cplusplus } #endif diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 3cbbb80219cfc..7bf19fe43d0a1 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -358,6 +358,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds) # Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693) # Python 3.11a1 3455 (add MAKE_CELL bpo-43693) +# Python 3.11a1 3456 (interleave cell args bpo-43693) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -367,7 +368,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3455).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3456).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index b81fcb551427a..41dd9397cb004 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -427,9 +427,9 @@ def foo(x): return foo dis_nested_0 = """\ - 0 MAKE_CELL 2 (y) + 0 MAKE_CELL 0 (y) -%3d 2 LOAD_CLOSURE 2 (y) +%3d 2 LOAD_CLOSURE 0 (y) 4 BUILD_TUPLE 1 6 LOAD_CONST 1 () 8 LOAD_CONST 2 ('_h..foo') @@ -446,14 +446,14 @@ def foo(x): dis_nested_1 = """%s Disassembly of : - 0 MAKE_CELL 1 (x) + 0 MAKE_CELL 0 (x) -%3d 2 LOAD_CLOSURE 1 (x) +%3d 2 LOAD_CLOSURE 0 (x) 4 BUILD_TUPLE 1 6 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) 8 LOAD_CONST 2 ('_h..foo..') 10 MAKE_FUNCTION 8 (closure) - 12 LOAD_DEREF 2 (y) + 12 LOAD_DEREF 1 (y) 14 GET_ITER 16 CALL_FUNCTION 1 18 RETURN_VALUE @@ -966,19 +966,19 @@ def jumpy(): Instruction = dis.Instruction expected_opinfo_outer = [ - Instruction(opname='MAKE_CELL', opcode=135, arg=3, argval='a', argrepr='a', offset=0, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_CELL', opcode=135, arg=4, argval='b', argrepr='b', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=0, argval='a', argrepr='a', offset=0, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=1, argval='b', argrepr='b', offset=2, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=4, starts_line=2, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=0, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=1, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=12, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=14, starts_line=None, is_jump_target=False), Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=7, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=26, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=28, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=30, starts_line=None, is_jump_target=False), @@ -991,23 +991,23 @@ def jumpy(): ] expected_opinfo_f = [ - Instruction(opname='MAKE_CELL', opcode=135, arg=3, argval='c', argrepr='c', offset=0, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_CELL', opcode=135, arg=4, argval='d', argrepr='d', offset=2, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=0, argval='c', argrepr='c', offset=0, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=1, argval='d', argrepr='d', offset=2, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=4, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=5, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=6, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='c', argrepr='c', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='d', argrepr='d', offset=12, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=0, argval='c', argrepr='c', offset=10, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=1, argval='d', argrepr='d', offset=12, starts_line=None, is_jump_target=False), Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=14, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=16, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=18, starts_line=None, is_jump_target=False), Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=20, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=22, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=24, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='a', argrepr='a', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=6, argval='b', argrepr='b', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='c', argrepr='c', offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='d', argrepr='d', offset=32, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=28, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='c', argrepr='c', offset=30, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='d', argrepr='d', offset=32, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=34, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=38, starts_line=6, is_jump_target=False), diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-07-15-13-44.bpo-43693.c_zDeY.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-07-15-13-44.bpo-43693.c_zDeY.rst new file mode 100644 index 0000000000000..c3db81072254b --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-07-15-13-44.bpo-43693.c_zDeY.rst @@ -0,0 +1,4 @@ +Computation of the offsets of cell variables is done in the compiler instead +of at runtime. This reduces the overhead of handling cell and free +variables, especially in the case where a variable is both an argument and +cell variable. diff --git a/Objects/codeobject.c b/Objects/codeobject.c index e054c43a1cf93..11a83d4a51228 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -162,43 +162,28 @@ _Py_set_localsplus_info(int offset, PyObject *name, _PyLocalsPlusKind kind, Py_INCREF(name); PyTuple_SET_ITEM(names, offset, name); kinds[offset] = kind; - - if (kind == CO_FAST_CELL) { - // Cells can overlap with args, so mark those cases. - int nlocalsplus = (int)PyTuple_GET_SIZE(names); - for (int i = 0; i < nlocalsplus; i++) { - _PyLocalsPlusKind kind = kinds[i]; - if (kind && !(kind & CO_FAST_LOCAL)) { - // We've moved past the locals. - break; - } - PyObject *varname = PyTuple_GET_ITEM(names, i); - int cmp = PyUnicode_Compare(name, varname); - if (cmp == 0) { - kinds[i] |= CO_FAST_CELL; - break; - } - assert(cmp > 0 || !PyErr_Occurred()); - } - } } static void get_localsplus_counts(PyObject *names, _PyLocalsPlusKinds kinds, - int *pnlocals, int *pncellvars, + int *pnlocals, int *pnplaincellvars, int *pncellvars, int *pnfreevars) { int nlocals = 0; + int nplaincellvars = 0; int ncellvars = 0; int nfreevars = 0; - int nlocalsplus = Py_SAFE_DOWNCAST(PyTuple_GET_SIZE(names), - Py_ssize_t, int); + Py_ssize_t nlocalsplus = PyTuple_GET_SIZE(names); for (int i = 0; i < nlocalsplus; i++) { if (kinds[i] & CO_FAST_LOCAL) { nlocals += 1; + if (kinds[i] & CO_FAST_CELL) { + ncellvars += 1; + } } else if (kinds[i] & CO_FAST_CELL) { ncellvars += 1; + nplaincellvars += 1; } else if (kinds[i] & CO_FAST_FREE) { nfreevars += 1; @@ -207,6 +192,9 @@ get_localsplus_counts(PyObject *names, _PyLocalsPlusKinds kinds, if (pnlocals != NULL) { *pnlocals = nlocals; } + if (pnplaincellvars != NULL) { + *pnplaincellvars = nplaincellvars; + } if (pncellvars != NULL) { *pncellvars = ncellvars; } @@ -227,10 +215,6 @@ get_localsplus_names(PyCodeObject *co, _PyLocalsPlusKind kind, int num) if ((co->co_localspluskinds[offset] & kind) == 0) { continue; } - // For now there may be duplicates, which we ignore. - if (kind == CO_FAST_CELL && co->co_localspluskinds[offset] != kind) { - continue; - } assert(index < num); PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, offset); Py_INCREF(name); @@ -283,7 +267,7 @@ _PyCode_Validate(struct _PyCodeConstructor *con) * here to avoid the possibility of overflow (however remote). */ int nlocals; get_localsplus_counts(con->localsplusnames, con->localspluskinds, - &nlocals, NULL, NULL); + &nlocals, NULL, NULL, NULL); int nplainlocals = nlocals - con->argcount - con->kwonlyargcount - @@ -301,9 +285,9 @@ static void init_code(PyCodeObject *co, struct _PyCodeConstructor *con) { int nlocalsplus = (int)PyTuple_GET_SIZE(con->localsplusnames); - int nlocals, ncellvars, nfreevars; + int nlocals, nplaincellvars, ncellvars, nfreevars; get_localsplus_counts(con->localsplusnames, con->localspluskinds, - &nlocals, &ncellvars, &nfreevars); + &nlocals, &nplaincellvars, &ncellvars, &nfreevars); Py_INCREF(con->filename); co->co_filename = con->filename; @@ -338,9 +322,9 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) co->co_exceptiontable = con->exceptiontable; /* derived values */ - co->co_cell2arg = NULL; // This will be set soon. co->co_nlocalsplus = nlocalsplus; co->co_nlocals = nlocals; + co->co_nplaincellvars = nplaincellvars; co->co_ncellvars = ncellvars; co->co_nfreevars = nfreevars; co->co_varnames = NULL; @@ -392,44 +376,6 @@ _PyCode_New(struct _PyCodeConstructor *con) co->co_flags &= ~CO_NOFREE; } - /* Create mapping between cells and arguments if needed. */ - if (co->co_ncellvars) { - int totalargs = co->co_argcount + - co->co_kwonlyargcount + - ((co->co_flags & CO_VARARGS) != 0) + - ((co->co_flags & CO_VARKEYWORDS) != 0); - assert(totalargs <= co->co_nlocals); - /* Find cells which are also arguments. */ - for (int i = 0; i < co->co_ncellvars; i++) { - PyObject *cellname = PyTuple_GET_ITEM(co->co_localsplusnames, - i + co->co_nlocals); - for (int j = 0; j < totalargs; j++) { - PyObject *argname = PyTuple_GET_ITEM(co->co_localsplusnames, j); - int cmp = PyUnicode_Compare(cellname, argname); - if (cmp == -1 && PyErr_Occurred()) { - Py_DECREF(co); - return NULL; - } - if (cmp == 0) { - if (co->co_cell2arg == NULL) { - co->co_cell2arg = PyMem_NEW(int, co->co_ncellvars); - if (co->co_cell2arg == NULL) { - Py_DECREF(co); - PyErr_NoMemory(); - return NULL; - } - for (int k = 0; k < co->co_ncellvars; k++) { - co->co_cell2arg[k] = CO_CELL_NOT_AN_ARG; - } - } - co->co_cell2arg[i] = j; - // Go to the next cell name. - break; - } - } - } - } - return co; } @@ -478,6 +424,23 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, } for (int i = 0; i < ncellvars; i++, offset++) { PyObject *name = PyTuple_GET_ITEM(cellvars, i); + int argoffset = -1; + for (int j = 0; j < nvarnames; j++) { + int cmp = PyUnicode_Compare(PyTuple_GET_ITEM(varnames, j), + name); + assert(!PyErr_Occurred()); + if (cmp == 0) { + argoffset = j; + break; + } + } + if (argoffset >= 0) { + // Merge the localsplus indices. + nlocalsplus -= 1; + offset -= 1; + localspluskinds[argoffset] |= CO_FAST_CELL; + continue; + } _Py_set_localsplus_info(offset, name, CO_FAST_CELL, localsplusnames, localspluskinds); } @@ -486,6 +449,11 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, _Py_set_localsplus_info(offset, name, CO_FAST_FREE, localsplusnames, localspluskinds); } + // If any cells were args then nlocalsplus will have shrunk. + // We don't bother resizing localspluskinds. + if (_PyTuple_Resize(&localsplusnames, nlocalsplus) < 0) { + goto error; + } struct _PyCodeConstructor con = { .filename = filename, @@ -1182,8 +1150,6 @@ code_dealloc(PyCodeObject *co) Py_XDECREF(co->co_name); Py_XDECREF(co->co_linetable); Py_XDECREF(co->co_exceptiontable); - if (co->co_cell2arg != NULL) - PyMem_Free(co->co_cell2arg); if (co->co_weakreflist != NULL) PyObject_ClearWeakRefs((PyObject*)co); if (co->co_quickened) { @@ -1377,10 +1343,6 @@ code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args)) (co_extra->ce_size-1) * sizeof(co_extra->ce_extras[0]); } - if (co->co_cell2arg != NULL && co->co_cellvars != NULL) { - res += co->co_ncellvars * sizeof(Py_ssize_t); - } - if (co->co_quickened != NULL) { Py_ssize_t count = co->co_quickened[0].entry.zero.cache_count; count += (PyBytes_GET_SIZE(co->co_code)+sizeof(SpecializedCacheEntry)-1)/ diff --git a/Objects/frameobject.c b/Objects/frameobject.c index da56b551b8570..99afe06d81636 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -918,7 +918,7 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, return f; } -int +static int _PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg) { const _Py_CODEUNIT *code = @@ -966,26 +966,9 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) continue; } - /* Some args are also cells. For now each of those variables - has two indices in the fast array, with both marked as cells - but only one marked as an arg. That one is always set - to NULL in _PyEval_MakeFrameVector() and the other index - gets the cell holding the arg value. So we ignore the - former here and will later use the cell for the variable. - */ - if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { - continue; - } - PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); PyObject *value = fast[i]; if (f->f_state != FRAME_CLEARED) { - int cellargoffset = CO_CELL_NOT_AN_ARG; - if (kind & CO_FAST_CELL && co->co_cell2arg != NULL) { - assert(i - co->co_nlocals >= 0); - assert(i - co->co_nlocals < co->co_ncellvars); - cellargoffset = co->co_cell2arg[i - co->co_nlocals]; - } if (kind & CO_FAST_FREE) { // The cell was set by _PyEval_MakeFrameVector() from // the function's closure. @@ -1003,20 +986,10 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) // (likely) MAKE_CELL must have executed already. value = PyCell_GET(value); } - // (unlikely) Otherwise it must be an initial value set - // by an earlier call to PyFrame_FastToLocals(). - } - else { - // (unlikely) MAKE_CELL hasn't executed yet. - if (cellargoffset != CO_CELL_NOT_AN_ARG) { - // It is an arg that escapes into an inner - // function so we use the initial value that - // was already set by _PyEval_MakeFrameVector(). - // Normally the arg value would always be set. - // However, it can be NULL if it was deleted via - // PyFrame_LocalsToFast(). - value = fast[cellargoffset]; - } + // (likely) Otherwise it it is an arg (kind & CO_FAST_LOCAL), + // with the initial value set by _PyEval_MakeFrameVector()... + // (unlikely) ...or it was set to some initial value by + // an earlier call to PyFrame_LocalsToFast(). } } } @@ -1079,10 +1052,6 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) if (kind & CO_FAST_FREE && !(co->co_flags & CO_OPTIMIZED)) { continue; } - /* Same test as in PyFrame_FastToLocals() above. */ - if (kind & CO_FAST_LOCAL && kind & CO_FAST_CELL) { - continue; - } PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); PyObject *value = PyObject_GetItem(locals, name); /* We only care about NULLs if clear is true. */ @@ -1093,12 +1062,6 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) } } PyObject *oldvalue = fast[i]; - int cellargoffset = CO_CELL_NOT_AN_ARG; - if (kind & CO_FAST_CELL && co->co_cell2arg != NULL) { - assert(i - co->co_nlocals >= 0); - assert(i - co->co_nlocals < co->co_ncellvars); - cellargoffset = co->co_cell2arg[i - co->co_nlocals]; - } PyObject *cell = NULL; if (kind == CO_FAST_FREE) { // The cell was set by _PyEval_MakeFrameVector() from @@ -1107,21 +1070,14 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) cell = oldvalue; } else if (kind & CO_FAST_CELL && oldvalue != NULL) { - if (cellargoffset != CO_CELL_NOT_AN_ARG) { + /* Same test as in PyFrame_FastToLocals() above. */ + if (PyCell_Check(oldvalue) && + _PyFrame_OpAlreadyRan(f, MAKE_CELL, i)) { // (likely) MAKE_CELL must have executed already. - // It's the cell for an arg. - assert(PyCell_Check(oldvalue)); cell = oldvalue; } - else { - if (PyCell_Check(oldvalue) && - _PyFrame_OpAlreadyRan(f, MAKE_CELL, i)) { - // (likely) MAKE_CELL must have executed already. - cell = oldvalue; - } - // (unlikely) Otherwise, it must have been set to some - // initial value by an earlier call to PyFrame_LocalsToFast(). - } + // (unlikely) Otherwise, it must have been set to some + // initial value by an earlier call to PyFrame_LocalsToFast(). } if (cell != NULL) { oldvalue = PyCell_GET(cell); @@ -1131,30 +1087,9 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) PyCell_SET(cell, value); } } - else { - int offset = i; - if (kind & CO_FAST_CELL) { - // (unlikely) MAKE_CELL hasn't executed yet. - // Note that there is no need to create the cell that - // MAKE_CELL would otherwise create later, since no - // *_DEREF ops can happen before MAKE_CELL has run. - if (cellargoffset != CO_CELL_NOT_AN_ARG) { - // It's the cell for an arg. - // Replace the initial value that was set by - // _PyEval_MakeFrameVector(). - // Normally the arg value would always be set. - // However, it can be NULL if it was deleted - // via an earlier PyFrame_LocalsToFast() call. - offset = cellargoffset; - oldvalue = fast[offset]; - } - // Otherwise set an initial value for MAKE_CELL to use - // when it runs later. - } - if (value != oldvalue) { - Py_XINCREF(value); - Py_XSETREF(fast[offset], value); - } + else if (value != oldvalue) { + Py_XINCREF(value); + Py_XSETREF(fast[i], value); } Py_XDECREF(value); } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 4c7e5d4567f76..170929f5d8507 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -11,7 +11,6 @@ #include "pycore_pystate.h" // _PyThreadState_GET() #include "pycore_unionobject.h" // _Py_Union(), _Py_union_type_or #include "frameobject.h" -#include "pycore_frame.h" // _PyFrame_OpAlreadyRan #include "opcode.h" // MAKE_CELL #include "structmember.h" // PyMemberDef @@ -8878,23 +8877,18 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, return -1; } - PyObject *obj = f->f_localsptr[0]; - int i; - if (obj == NULL && co->co_cell2arg) { - /* The first argument might be a cell. */ - for (i = 0; i < co->co_ncellvars; i++) { - if (co->co_cell2arg[i] == 0) { - int celloffset = co->co_nlocals + i; - PyObject *cell = f->f_localsptr[celloffset]; - if (PyCell_Check(cell) && - _PyFrame_OpAlreadyRan(f, MAKE_CELL, celloffset)) { - obj = PyCell_GET(cell); - } - break; - } + PyObject *firstarg = f->f_localsptr[0]; + // The first argument might be a cell. + if (firstarg != NULL && (co->co_localspluskinds[0] & CO_FAST_CELL)) { + // "firstarg" is a cell here unless (very unlikely) super() + // was called from the C-API before the first MAKE_CELL op. + if (f->f_lasti >= 0) { + assert(_Py_OPCODE(*co->co_firstinstr) == MAKE_CELL); + assert(PyCell_Check(firstarg)); + firstarg = PyCell_GET(firstarg); } } - if (obj == NULL) { + if (firstarg == NULL) { PyErr_SetString(PyExc_RuntimeError, "super(): arg[0] deleted"); return -1; @@ -8902,9 +8896,9 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, // Look for __class__ in the free vars. PyTypeObject *type = NULL; - i = co->co_nlocals + co->co_ncellvars; + int i = co->co_nlocals + co->co_nplaincellvars; for (; i < co->co_nlocalsplus; i++) { - assert(co->co_localspluskinds[i] & CO_FAST_FREE); + assert((co->co_localspluskinds[i] & CO_FAST_FREE) != 0); PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); assert(PyUnicode_Check(name)); if (_PyUnicode_EqualToASCIIId(name, &PyId___class__)) { @@ -8936,7 +8930,7 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, } *type_p = type; - *obj_p = obj; + *obj_p = firstarg; return 0; } diff --git a/Python/ceval.c b/Python/ceval.c index 79ec143f5ea32..a9b9aca039903 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2922,29 +2922,13 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } case TARGET(MAKE_CELL): { + // "initial" is probably NULL but not if it's an arg (or set + // via PyFrame_LocalsToFast() before MAKE_CELL has run). PyObject *initial = GETLOCAL(oparg); - // Normally initial would be NULL. However, it - // might have been set to an initial value during - // a call to PyFrame_LocalsToFast(). PyObject *cell = PyCell_New(initial); if (cell == NULL) { goto error; } - /* If it is an arg then copy the arg into the cell. */ - if (initial == NULL && co->co_cell2arg != NULL) { - int argoffset = co->co_cell2arg[oparg - co->co_nlocals]; - if (argoffset != CO_CELL_NOT_AN_ARG) { - PyObject *arg = GETLOCAL(argoffset); - // It will have been set in initialize_locals() but - // may have been deleted PyFrame_LocalsToFast(). - if (arg != NULL) {; - Py_INCREF(arg); - PyCell_SET(cell, arg); - /* Clear the local copy. */ - SETLOCAL(argoffset, NULL); - } - } - } SETLOCAL(oparg, cell); DISPATCH(); } @@ -4915,7 +4899,7 @@ initialize_locals(PyThreadState *tstate, PyFrameConstructor *con, for (i = 0; i < co->co_nfreevars; ++i) { PyObject *o = PyTuple_GET_ITEM(con->fc_closure, i); Py_INCREF(o); - localsplus[co->co_nlocals + co->co_ncellvars + i] = o; + localsplus[co->co_nlocals + co->co_nplaincellvars + i] = o; } return 0; @@ -6244,7 +6228,7 @@ format_exc_unbound(PyThreadState *tstate, PyCodeObject *co, int oparg) if (_PyErr_Occurred(tstate)) return; name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg); - if (oparg < co->co_ncellvars + co->co_nlocals) { + if (oparg < co->co_nplaincellvars + co->co_nlocals) { format_exc_check_arg(tstate, PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, name); } else { diff --git a/Python/compile.c b/Python/compile.c index c97938adaafcf..60777b0bf7863 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -21,6 +21,8 @@ * objects. */ +#include + #include "Python.h" #include "pycore_ast.h" // _PyAST_GetDocString() #include "pycore_compile.h" // _PyFuture_FromAST() @@ -2053,7 +2055,7 @@ compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, qualname = co->co_name; if (co->co_nfreevars) { - int i = co->co_nlocals + co->co_ncellvars; + int i = co->co_nlocals + co->co_nplaincellvars; for (; i < co->co_nlocalsplus; ++i) { /* Bypass com_addop_varname because it will generate LOAD_DEREF but LOAD_CLOSURE is needed. @@ -7188,11 +7190,10 @@ extern void _Py_set_localsplus_info(int, PyObject *, _PyLocalsPlusKind, PyObject *, _PyLocalsPlusKinds); static void -compute_localsplus_info(struct compiler *c, +compute_localsplus_info(struct compiler *c, int nlocalsplus, PyObject *names, _PyLocalsPlusKinds kinds) { - int nlocalsplus = (int)PyTuple_GET_SIZE(names); - (void)nlocalsplus; // Avoid compiler errors for unused variable + assert(PyTuple_GET_SIZE(names) == nlocalsplus); PyObject *k, *v; Py_ssize_t pos = 0; @@ -7201,15 +7202,26 @@ compute_localsplus_info(struct compiler *c, assert(offset >= 0); assert(offset < nlocalsplus); // For now we do not distinguish arg kinds. - _Py_set_localsplus_info(offset, k, CO_FAST_LOCAL, names, kinds); + _PyLocalsPlusKind kind = CO_FAST_LOCAL; + if (PyDict_GetItem(c->u->u_cellvars, k) != NULL) { + kind |= CO_FAST_CELL; + } + _Py_set_localsplus_info(offset, k, kind, names, kinds); } int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); + // This counter mirrors the fix done in fix_cell_offsets(). + int numdropped = 0; pos = 0; while (PyDict_Next(c->u->u_cellvars, &pos, &k, &v)) { + if (PyDict_GetItem(c->u->u_varnames, k) != NULL) { + // Skip cells that are already covered by locals. + numdropped += 1; + continue; + } int offset = (int)PyLong_AS_LONG(v); assert(offset >= 0); - offset += nlocals; + offset += nlocals - numdropped; assert(offset < nlocalsplus); _Py_set_localsplus_info(offset, k, CO_FAST_CELL, names, kinds); } @@ -7218,7 +7230,7 @@ compute_localsplus_info(struct compiler *c, while (PyDict_Next(c->u->u_freevars, &pos, &k, &v)) { int offset = (int)PyLong_AS_LONG(v); assert(offset >= 0); - offset += nlocals; + offset += nlocals - numdropped; assert(offset < nlocalsplus); _Py_set_localsplus_info(offset, k, CO_FAST_FREE, names, kinds); } @@ -7226,7 +7238,7 @@ compute_localsplus_info(struct compiler *c, static PyCodeObject * makecode(struct compiler *c, struct assembler *a, PyObject *constslist, - int maxdepth) + int maxdepth, int nlocalsplus) { PyCodeObject *co = NULL; PyObject *names = NULL; @@ -7264,15 +7276,6 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, assert(INT_MAX - posonlyargcount - posorkwargcount > 0); int kwonlyargcount = (int)c->u->u_kwonlyargcount; - Py_ssize_t nlocals = PyDict_GET_SIZE(c->u->u_varnames); - Py_ssize_t ncellvars = PyDict_GET_SIZE(c->u->u_cellvars); - Py_ssize_t nfreevars = PyDict_GET_SIZE(c->u->u_freevars); - assert(nlocals < INT_MAX); - assert(ncellvars < INT_MAX); - assert(nfreevars < INT_MAX); - assert(INT_MAX - nlocals - ncellvars - nfreevars > 0); - int nlocalsplus = (int)nlocals + (int)ncellvars + (int)nfreevars; - localsplusnames = PyTuple_New(nlocalsplus); if (localsplusnames == NULL) { goto error; @@ -7280,7 +7283,7 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { goto error; } - compute_localsplus_info(c, localsplusnames, localspluskinds); + compute_localsplus_info(c, nlocalsplus, localsplusnames, localspluskinds); struct _PyCodeConstructor con = { .filename = c->c_filename, @@ -7376,6 +7379,39 @@ optimize_cfg(struct compiler *c, struct assembler *a, PyObject *consts); static int ensure_exits_have_lineno(struct compiler *c); +static int * +build_cellfixedoffsets(struct compiler *c) +{ + int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); + int ncellvars = (int)PyDict_GET_SIZE(c->u->u_cellvars); + int nfreevars = (int)PyDict_GET_SIZE(c->u->u_freevars); + + int noffsets = ncellvars + nfreevars; + int *fixed = PyMem_New(int, noffsets); + if (fixed == NULL) { + PyErr_NoMemory(); + return NULL; + } + for (int i = 0; i < noffsets; i++) { + fixed[i] = nlocals + i; + } + + PyObject *varname, *cellindex; + Py_ssize_t pos = 0; + while (PyDict_Next(c->u->u_cellvars, &pos, &varname, &cellindex)) { + PyObject *varindex = PyDict_GetItem(c->u->u_varnames, varname); + if (varindex != NULL) { + assert(PyLong_AS_LONG(cellindex) < INT_MAX); + assert(PyLong_AS_LONG(varindex) < INT_MAX); + int oldindex = (int)PyLong_AS_LONG(cellindex); + int argoffset = (int)PyLong_AS_LONG(varindex); + fixed[oldindex] = argoffset; + } + } + + return fixed; +} + static inline int insert_instruction(basicblock *block, int pos, struct instr *instr) { if (compiler_next_instr(block) < 0) { @@ -7389,7 +7425,9 @@ insert_instruction(basicblock *block, int pos, struct instr *instr) { } static int -insert_prefix_instructions(struct compiler *c, basicblock *entryblock) { +insert_prefix_instructions(struct compiler *c, basicblock *entryblock, + int *fixed) +{ int flags = compute_code_flags(c); if (flags < 0) { @@ -7397,21 +7435,38 @@ insert_prefix_instructions(struct compiler *c, basicblock *entryblock) { } /* Set up cells for any variable that escapes, to be put in a closure. */ - PyObject *k, *v; - Py_ssize_t pos = 0; - while (PyDict_Next(c->u->u_cellvars, &pos, &k, &v)) { - assert(PyLong_AS_LONG(v) < INT_MAX); - int cellindex = (int)PyLong_AS_LONG(v); - struct instr make_cell = { - .i_opcode = MAKE_CELL, - // This will get fixed in offset_derefs(). - .i_oparg = cellindex, - .i_lineno = -1, - .i_target = NULL, - }; - if (insert_instruction(entryblock, (int)(pos - 1), &make_cell) < 0) { + const int ncellvars = (int)PyDict_GET_SIZE(c->u->u_cellvars); + if (ncellvars) { + // c->u->u_cellvars has the cells out of order so we sort them + // before adding the MAKE_CELL instructions. Note that we + // adjust for arg cells, which come first. + const int nvars = ncellvars + (int)PyDict_GET_SIZE(c->u->u_varnames); + int *sorted = PyMem_RawCalloc(nvars, sizeof(int)); + if (sorted == NULL) { + PyErr_NoMemory(); return -1; } + for (int i = 0; i < ncellvars; i++) { + sorted[fixed[i]] = i + 1; + } + for (int i = 0, ncellsused = 0; ncellsused < ncellvars; i++) { + int oldindex = sorted[i] - 1; + if (oldindex == -1) { + continue; + } + struct instr make_cell = { + .i_opcode = MAKE_CELL, + // This will get fixed in offset_derefs(). + .i_oparg = oldindex, + .i_lineno = -1, + .i_target = NULL, + }; + if (insert_instruction(entryblock, ncellsused, &make_cell) < 0) { + return -1; + } + ncellsused += 1; + } + PyMem_RawFree(sorted); } /* Add the generator prefix instructions. */ @@ -7469,14 +7524,33 @@ guarantee_lineno_for_exits(struct assembler *a, int firstlineno) { } } -static void -fix_cell_offsets(struct compiler *c, basicblock *entryblock) +static int +fix_cell_offsets(struct compiler *c, basicblock *entryblock, int *fixedmap) { - assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); + int ncellvars = (int)PyDict_GET_SIZE(c->u->u_cellvars); + int nfreevars = (int)PyDict_GET_SIZE(c->u->u_freevars); + int noffsets = ncellvars + nfreevars; + + // First deal with duplicates (arg cells). + int numdropped = 0; + for (int i = 0; i < noffsets ; i++) { + if (fixedmap[i] == i + nlocals) { + fixedmap[i] -= numdropped; + } + else { + // It was a duplicate (cell/arg). + numdropped += 1; + } + } + + // Then update offsets, either relative to locals or by cell2arg. for (basicblock *b = entryblock; b != NULL; b = b->b_next) { for (int i = 0; i < b->b_iused; i++) { struct instr *inst = &b->b_instr[i]; + // This is called before extended args are generated. + assert(inst->i_opcode != EXTENDED_ARG); + int oldoffset = inst->i_oparg; switch(inst->i_opcode) { case MAKE_CELL: case LOAD_CLOSURE: @@ -7484,10 +7558,15 @@ fix_cell_offsets(struct compiler *c, basicblock *entryblock) case STORE_DEREF: case DELETE_DEREF: case LOAD_CLASSDEREF: - inst->i_oparg += nlocals; + assert(oldoffset >= 0); + assert(oldoffset < noffsets); + assert(fixedmap[oldoffset] >= 0); + inst->i_oparg = fixedmap[oldoffset]; } } } + + return numdropped; } static PyCodeObject * @@ -7528,7 +7607,22 @@ assemble(struct compiler *c, int addNone) } assert(entryblock != NULL); - if (insert_prefix_instructions(c, entryblock)) { + assert(PyDict_GET_SIZE(c->u->u_varnames) < INT_MAX); + assert(PyDict_GET_SIZE(c->u->u_cellvars) < INT_MAX); + assert(PyDict_GET_SIZE(c->u->u_freevars) < INT_MAX); + int nlocals = (int)PyDict_GET_SIZE(c->u->u_varnames); + int ncellvars = (int)PyDict_GET_SIZE(c->u->u_cellvars); + int nfreevars = (int)PyDict_GET_SIZE(c->u->u_freevars); + assert(INT_MAX - nlocals - ncellvars > 0); + assert(INT_MAX - nlocals - ncellvars - nfreevars > 0); + int nlocalsplus = nlocals + ncellvars + nfreevars; + int *cellfixedoffsets = build_cellfixedoffsets(c); + if (cellfixedoffsets == NULL) { + goto error; + } + + // This must be called before fix_cell_offsets(). + if (insert_prefix_instructions(c, entryblock, cellfixedoffsets)) { goto error; } @@ -7545,7 +7639,13 @@ assemble(struct compiler *c, int addNone) a.a_entry = entryblock; a.a_nblocks = nblocks; - fix_cell_offsets(c, entryblock); + int numdropped = fix_cell_offsets(c, entryblock, cellfixedoffsets); + PyMem_Free(cellfixedoffsets); // At this point we're done with it. + cellfixedoffsets = NULL; + if (numdropped < 0) { + goto error; + } + nlocalsplus -= numdropped; consts = consts_dict_keys_inorder(c->u->u_consts); if (consts == NULL) { @@ -7586,10 +7686,10 @@ assemble(struct compiler *c, int addNone) } if (!assemble_exception_table(&a)) { - return 0; + goto error; } if (!assemble_line_range(&a)) { - return 0; + goto error; } if (_PyBytes_Resize(&a.a_lnotab, a.a_lnotab_off) < 0) { @@ -7610,10 +7710,13 @@ assemble(struct compiler *c, int addNone) goto error; } - co = makecode(c, &a, consts, maxdepth); + co = makecode(c, &a, consts, maxdepth, nlocalsplus); error: Py_XDECREF(consts); assemble_free(&a); + if (cellfixedoffsets != NULL) { + PyMem_Free(cellfixedoffsets); + } return co; } diff --git a/Python/importlib.h b/Python/importlib.h index 16ccf3076f23b..cb94f016e8bb9 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -430,8 +430,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,243,28,0,0,0,135,2,136,2,102,1,100, - 1,100,2,132,8,125,1,116,0,124,1,137,2,131,2,1, + 3,0,0,0,243,28,0,0,0,135,0,136,0,102,1,100, + 1,100,2,132,8,125,1,116,0,124,1,137,0,131,2,1, 0,124,1,83,0,41,4,122,49,68,101,99,111,114,97,116, 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, @@ -454,1456 +454,1455 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 108,116,105,110,46,60,108,111,99,97,108,115,62,46,95,114, 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,95, 119,114,97,112,112,101,114,78,169,1,114,16,0,0,0,41, - 3,114,91,0,0,0,114,92,0,0,0,114,91,0,0,0, - 96,32,64,114,5,0,0,0,218,17,95,114,101,113,117,105, - 114,101,115,95,98,117,105,108,116,105,110,252,0,0,0,243, - 8,0,0,0,2,128,12,2,10,5,4,1,114,17,0,0, - 0,114,95,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,114,85,0,0,0, - 41,4,122,47,68,101,99,111,114,97,116,111,114,32,116,111, - 32,118,101,114,105,102,121,32,116,104,101,32,110,97,109,101, - 100,32,109,111,100,117,108,101,32,105,115,32,102,114,111,122, - 101,110,46,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,19,0,0,0,115,38,0,0,0,116,0,160, - 1,124,1,161,1,115,14,116,2,100,1,160,3,124,1,161, - 1,124,1,100,2,141,2,130,1,137,2,124,0,124,1,131, - 2,83,0,169,3,78,122,27,123,33,114,125,32,105,115,32, - 110,111,116,32,97,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,114,19,0,0,0,41,4,114,65,0,0,0,218, - 9,105,115,95,102,114,111,122,101,110,114,88,0,0,0,114, - 51,0,0,0,114,89,0,0,0,32,32,128,114,5,0,0, - 0,218,24,95,114,101,113,117,105,114,101,115,95,102,114,111, - 122,101,110,95,119,114,97,112,112,101,114,9,1,0,0,114, - 93,0,0,0,114,17,0,0,0,122,50,95,114,101,113,117, - 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, - 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, - 114,111,122,101,110,95,119,114,97,112,112,101,114,78,114,94, - 0,0,0,41,3,114,91,0,0,0,114,99,0,0,0,114, - 91,0,0,0,96,32,64,114,5,0,0,0,218,16,95,114, - 101,113,117,105,114,101,115,95,102,114,111,122,101,110,7,1, - 0,0,114,96,0,0,0,114,17,0,0,0,114,100,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,67,0,0,0,115,74,0,0,0,100,1,125,2,116, - 0,160,1,124,2,116,2,161,2,1,0,116,3,124,1,124, - 0,131,2,125,3,124,1,116,4,106,5,118,0,114,33,116, - 4,106,5,124,1,25,0,125,4,116,6,124,3,124,4,131, - 2,1,0,116,4,106,5,124,1,25,0,83,0,116,7,124, - 3,131,1,83,0,41,3,122,130,76,111,97,100,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,117, - 108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,105, - 116,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,46,32,32,85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101, - 32,108,111,97,100,95,109,111,100,117,108,101,40,41,32,109, - 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,101, - 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, - 116,101,97,100,78,41,8,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,16,115,112, - 101,99,95,102,114,111,109,95,108,111,97,100,101,114,114,18, - 0,0,0,218,7,109,111,100,117,108,101,115,218,5,95,101, - 120,101,99,218,5,95,108,111,97,100,41,5,114,34,0,0, - 0,114,90,0,0,0,218,3,109,115,103,218,4,115,112,101, - 99,218,6,109,111,100,117,108,101,32,32,32,32,32,114,5, - 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, - 101,95,115,104,105,109,19,1,0,0,115,16,0,0,0,4, - 6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,114, - 17,0,0,0,114,111,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,194, - 0,0,0,116,0,124,0,100,1,100,2,131,3,125,1,116, - 0,124,0,100,3,100,2,131,3,4,0,125,2,114,18,116, - 1,124,2,131,1,83,0,116,2,124,1,100,4,131,2,114, - 39,9,0,124,1,160,3,124,0,161,1,83,0,35,0,4, - 0,116,4,121,96,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,106,5,125,3,110,12,35,0,4,0,116, - 6,121,95,1,0,1,0,1,0,100,5,125,3,89,0,110, - 1,37,0,9,0,124,0,106,7,125,4,110,27,35,0,4, - 0,116,6,121,94,1,0,1,0,1,0,124,1,100,2,117, - 0,114,79,100,6,160,8,124,3,161,1,6,0,89,0,83, - 0,100,7,160,8,124,3,124,1,161,2,6,0,89,0,83, - 0,37,0,100,8,160,8,124,3,124,4,161,2,83,0,119, - 0,119,0,119,0,41,9,122,44,84,104,101,32,105,109,112, - 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,77, - 111,100,117,108,101,84,121,112,101,46,95,95,114,101,112,114, - 95,95,40,41,46,218,10,95,95,108,111,97,100,101,114,95, - 95,78,218,8,95,95,115,112,101,99,95,95,218,11,109,111, - 100,117,108,101,95,114,101,112,114,250,1,63,250,13,60,109, - 111,100,117,108,101,32,123,33,114,125,62,250,20,60,109,111, - 100,117,108,101,32,123,33,114,125,32,40,123,33,114,125,41, - 62,250,23,60,109,111,100,117,108,101,32,123,33,114,125,32, - 102,114,111,109,32,123,33,114,125,62,41,9,114,12,0,0, - 0,218,22,95,109,111,100,117,108,101,95,114,101,112,114,95, - 102,114,111,109,95,115,112,101,99,114,10,0,0,0,114,114, - 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,8, - 0,0,0,114,2,0,0,0,218,8,95,95,102,105,108,101, - 95,95,114,51,0,0,0,41,5,114,110,0,0,0,218,6, - 108,111,97,100,101,114,114,109,0,0,0,114,20,0,0,0, - 218,8,102,105,108,101,110,97,109,101,32,32,32,32,32,114, - 5,0,0,0,218,12,95,109,111,100,117,108,101,95,114,101, - 112,114,38,1,0,0,115,56,0,0,0,12,2,16,1,8, - 1,10,1,2,1,10,1,2,128,12,1,4,1,2,128,2, - 2,8,1,2,128,12,1,8,1,2,128,2,1,8,1,2, - 128,12,1,8,1,14,1,16,2,2,128,12,2,2,250,2, - 252,2,251,115,47,0,0,0,152,4,29,0,157,7,38,7, - 168,3,44,0,172,9,55,7,185,3,61,0,189,16,65,23, - 7,193,15,6,65,23,7,193,30,1,65,23,7,193,31,1, - 55,7,193,32,1,38,7,114,124,0,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,114,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,100,2,100,2,100,3,156,3,100,4,100,5, - 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, - 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, - 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, - 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, - 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, - 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, - 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, - 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, - 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, - 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, - 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, - 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, - 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, - 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, - 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, - 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, - 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, - 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, - 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, - 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, - 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, - 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, - 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, - 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, - 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, - 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, - 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, - 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, - 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, - 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, - 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, - 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, - 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, - 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, - 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, - 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, - 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, - 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, - 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, - 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, - 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, - 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, - 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, - 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, - 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, - 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, - 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, - 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, - 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, - 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, - 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, - 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, - 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, - 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, - 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, - 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, - 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, - 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, - 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, - 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, - 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, - 32,32,32,32,96,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,96, - 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, - 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, - 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, - 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, - 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, - 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, - 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, - 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, - 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, - 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, - 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, - 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, - 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, - 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, - 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, - 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, - 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, - 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, - 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, - 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, - 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, - 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, - 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, - 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, - 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, - 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, - 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, - 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, - 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, - 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, - 99,3,0,0,0,0,0,0,0,3,0,0,0,2,0,0, - 0,67,0,0,0,115,54,0,0,0,124,1,124,0,95,0, - 124,2,124,0,95,1,124,3,124,0,95,2,124,4,124,0, - 95,3,124,5,114,16,103,0,110,1,100,0,124,0,95,4, - 100,1,124,0,95,5,100,0,124,0,95,6,100,0,83,0, - 41,2,78,70,41,7,114,20,0,0,0,114,122,0,0,0, - 114,126,0,0,0,114,127,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,218,13,95,115,101,116,95,102,105,108, - 101,97,116,116,114,218,7,95,99,97,99,104,101,100,41,6, - 114,34,0,0,0,114,20,0,0,0,114,122,0,0,0,114, - 126,0,0,0,114,127,0,0,0,114,128,0,0,0,32,32, - 32,32,32,32,114,5,0,0,0,114,35,0,0,0,101,1, - 0,0,115,14,0,0,0,6,2,6,1,6,1,6,1,14, - 1,6,3,10,1,114,17,0,0,0,122,19,77,111,100,117, - 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, - 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, - 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, - 1,124,0,106,3,100,0,117,1,114,26,124,1,160,4,100, - 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, - 5,100,0,117,1,114,40,124,1,160,4,100,4,160,0,124, - 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, - 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, - 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, - 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, - 105,110,61,123,33,114,125,122,29,115,117,98,109,111,100,117, + 2,114,91,0,0,0,114,92,0,0,0,96,32,114,5,0, + 0,0,218,17,95,114,101,113,117,105,114,101,115,95,98,117, + 105,108,116,105,110,252,0,0,0,243,8,0,0,0,2,128, + 12,2,10,5,4,1,114,17,0,0,0,114,95,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,3,0,0,0,114,85,0,0,0,41,4,122,47,68,101, + 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, + 121,32,116,104,101,32,110,97,109,101,100,32,109,111,100,117, + 108,101,32,105,115,32,102,114,111,122,101,110,46,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,19,0, + 0,0,115,38,0,0,0,116,0,160,1,124,1,161,1,115, + 14,116,2,100,1,160,3,124,1,161,1,124,1,100,2,141, + 2,130,1,137,2,124,0,124,1,131,2,83,0,169,3,78, + 122,27,123,33,114,125,32,105,115,32,110,111,116,32,97,32, + 102,114,111,122,101,110,32,109,111,100,117,108,101,114,19,0, + 0,0,41,4,114,65,0,0,0,218,9,105,115,95,102,114, + 111,122,101,110,114,88,0,0,0,114,51,0,0,0,114,89, + 0,0,0,32,32,128,114,5,0,0,0,218,24,95,114,101, + 113,117,105,114,101,115,95,102,114,111,122,101,110,95,119,114, + 97,112,112,101,114,9,1,0,0,114,93,0,0,0,114,17, + 0,0,0,122,50,95,114,101,113,117,105,114,101,115,95,102, + 114,111,122,101,110,46,60,108,111,99,97,108,115,62,46,95, + 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, + 119,114,97,112,112,101,114,78,114,94,0,0,0,41,2,114, + 91,0,0,0,114,99,0,0,0,96,32,114,5,0,0,0, + 218,16,95,114,101,113,117,105,114,101,115,95,102,114,111,122, + 101,110,7,1,0,0,114,96,0,0,0,114,17,0,0,0, + 114,100,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,67,0,0,0,115,74,0,0,0,100, + 1,125,2,116,0,160,1,124,2,116,2,161,2,1,0,116, + 3,124,1,124,0,131,2,125,3,124,1,116,4,106,5,118, + 0,114,33,116,4,106,5,124,1,25,0,125,4,116,6,124, + 3,124,4,131,2,1,0,116,4,106,5,124,1,25,0,83, + 0,116,7,124,3,131,1,83,0,41,3,122,130,76,111,97, + 100,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, + 109,111,100,117,108,101,32,105,110,116,111,32,115,121,115,46, + 109,111,100,117,108,101,115,32,97,110,100,32,114,101,116,117, + 114,110,32,105,116,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,46,32,32,85,115,101,32,108,111,97,100, + 101,114,46,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,122, + 103,116,104,101,32,108,111,97,100,95,109,111,100,117,108,101, + 40,41,32,109,101,116,104,111,100,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,32,97,110,100,32,115,108,97,116, + 101,100,32,102,111,114,32,114,101,109,111,118,97,108,32,105, + 110,32,80,121,116,104,111,110,32,51,46,49,50,59,32,117, + 115,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,105,110,115,116,101,97,100,78,41,8,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,16,115,112,101,99,95,102,114,111,109,95,108,111,97,100, + 101,114,114,18,0,0,0,218,7,109,111,100,117,108,101,115, + 218,5,95,101,120,101,99,218,5,95,108,111,97,100,41,5, + 114,34,0,0,0,114,90,0,0,0,218,3,109,115,103,218, + 4,115,112,101,99,218,6,109,111,100,117,108,101,32,32,32, + 32,32,114,5,0,0,0,218,17,95,108,111,97,100,95,109, + 111,100,117,108,101,95,115,104,105,109,19,1,0,0,115,16, + 0,0,0,4,6,12,2,10,1,10,1,10,1,10,1,10, + 1,8,2,114,17,0,0,0,114,111,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,194,0,0,0,116,0,124,0,100,1,100,2,131, + 3,125,1,116,0,124,0,100,3,100,2,131,3,4,0,125, + 2,114,18,116,1,124,2,131,1,83,0,116,2,124,1,100, + 4,131,2,114,39,9,0,124,1,160,3,124,0,161,1,83, + 0,35,0,4,0,116,4,121,96,1,0,1,0,1,0,89, + 0,110,1,37,0,9,0,124,0,106,5,125,3,110,12,35, + 0,4,0,116,6,121,95,1,0,1,0,1,0,100,5,125, + 3,89,0,110,1,37,0,9,0,124,0,106,7,125,4,110, + 27,35,0,4,0,116,6,121,94,1,0,1,0,1,0,124, + 1,100,2,117,0,114,79,100,6,160,8,124,3,161,1,6, + 0,89,0,83,0,100,7,160,8,124,3,124,1,161,2,6, + 0,89,0,83,0,37,0,100,8,160,8,124,3,124,4,161, + 2,83,0,119,0,119,0,119,0,41,9,122,44,84,104,101, + 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32, + 111,102,32,77,111,100,117,108,101,84,121,112,101,46,95,95, + 114,101,112,114,95,95,40,41,46,218,10,95,95,108,111,97, + 100,101,114,95,95,78,218,8,95,95,115,112,101,99,95,95, + 218,11,109,111,100,117,108,101,95,114,101,112,114,250,1,63, + 250,13,60,109,111,100,117,108,101,32,123,33,114,125,62,250, + 20,60,109,111,100,117,108,101,32,123,33,114,125,32,40,123, + 33,114,125,41,62,250,23,60,109,111,100,117,108,101,32,123, + 33,114,125,32,102,114,111,109,32,123,33,114,125,62,41,9, + 114,12,0,0,0,218,22,95,109,111,100,117,108,101,95,114, + 101,112,114,95,102,114,111,109,95,115,112,101,99,114,10,0, + 0,0,114,114,0,0,0,218,9,69,120,99,101,112,116,105, + 111,110,114,8,0,0,0,114,2,0,0,0,218,8,95,95, + 102,105,108,101,95,95,114,51,0,0,0,41,5,114,110,0, + 0,0,218,6,108,111,97,100,101,114,114,109,0,0,0,114, + 20,0,0,0,218,8,102,105,108,101,110,97,109,101,32,32, + 32,32,32,114,5,0,0,0,218,12,95,109,111,100,117,108, + 101,95,114,101,112,114,38,1,0,0,115,56,0,0,0,12, + 2,16,1,8,1,10,1,2,1,10,1,2,128,12,1,4, + 1,2,128,2,2,8,1,2,128,12,1,8,1,2,128,2, + 1,8,1,2,128,12,1,8,1,14,1,16,2,2,128,12, + 2,2,250,2,252,2,251,115,47,0,0,0,152,4,29,0, + 157,7,38,7,168,3,44,0,172,9,55,7,185,3,61,0, + 189,16,65,23,7,193,15,6,65,23,7,193,30,1,65,23, + 7,193,31,1,55,7,193,32,1,38,7,114,124,0,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,64,0,0,0,115,114,0,0,0,101,0,90,1,100,0, + 90,2,100,1,90,3,100,2,100,2,100,2,100,3,156,3, + 100,4,100,5,132,2,90,4,100,6,100,7,132,0,90,5, + 100,8,100,9,132,0,90,6,101,7,100,10,100,11,132,0, + 131,1,90,8,101,8,106,9,100,12,100,11,132,0,131,1, + 90,8,101,7,100,13,100,14,132,0,131,1,90,10,101,7, + 100,15,100,16,132,0,131,1,90,11,101,11,106,9,100,17, + 100,16,132,0,131,1,90,11,100,2,83,0,41,18,218,10, + 77,111,100,117,108,101,83,112,101,99,97,208,5,0,0,84, + 104,101,32,115,112,101,99,105,102,105,99,97,116,105,111,110, + 32,102,111,114,32,97,32,109,111,100,117,108,101,44,32,117, + 115,101,100,32,102,111,114,32,108,111,97,100,105,110,103,46, + 10,10,32,32,32,32,65,32,109,111,100,117,108,101,39,115, + 32,115,112,101,99,32,105,115,32,116,104,101,32,115,111,117, + 114,99,101,32,102,111,114,32,105,110,102,111,114,109,97,116, + 105,111,110,32,97,98,111,117,116,32,116,104,101,32,109,111, + 100,117,108,101,46,32,32,70,111,114,10,32,32,32,32,100, + 97,116,97,32,97,115,115,111,99,105,97,116,101,100,32,119, + 105,116,104,32,116,104,101,32,109,111,100,117,108,101,44,32, + 105,110,99,108,117,100,105,110,103,32,115,111,117,114,99,101, + 44,32,117,115,101,32,116,104,101,32,115,112,101,99,39,115, + 10,32,32,32,32,108,111,97,100,101,114,46,10,10,32,32, + 32,32,96,110,97,109,101,96,32,105,115,32,116,104,101,32, + 97,98,115,111,108,117,116,101,32,110,97,109,101,32,111,102, + 32,116,104,101,32,109,111,100,117,108,101,46,32,32,96,108, + 111,97,100,101,114,96,32,105,115,32,116,104,101,32,108,111, + 97,100,101,114,10,32,32,32,32,116,111,32,117,115,101,32, + 119,104,101,110,32,108,111,97,100,105,110,103,32,116,104,101, + 32,109,111,100,117,108,101,46,32,32,96,112,97,114,101,110, + 116,96,32,105,115,32,116,104,101,32,110,97,109,101,32,111, + 102,32,116,104,101,10,32,32,32,32,112,97,99,107,97,103, + 101,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, + 105,110,46,32,32,84,104,101,32,112,97,114,101,110,116,32, + 105,115,32,100,101,114,105,118,101,100,32,102,114,111,109,32, + 116,104,101,32,110,97,109,101,46,10,10,32,32,32,32,96, + 105,115,95,112,97,99,107,97,103,101,96,32,100,101,116,101, + 114,109,105,110,101,115,32,105,102,32,116,104,101,32,109,111, + 100,117,108,101,32,105,115,32,99,111,110,115,105,100,101,114, + 101,100,32,97,32,112,97,99,107,97,103,101,32,111,114,10, + 32,32,32,32,110,111,116,46,32,32,79,110,32,109,111,100, + 117,108,101,115,32,116,104,105,115,32,105,115,32,114,101,102, + 108,101,99,116,101,100,32,98,121,32,116,104,101,32,96,95, + 95,112,97,116,104,95,95,96,32,97,116,116,114,105,98,117, + 116,101,46,10,10,32,32,32,32,96,111,114,105,103,105,110, + 96,32,105,115,32,116,104,101,32,115,112,101,99,105,102,105, + 99,32,108,111,99,97,116,105,111,110,32,117,115,101,100,32, + 98,121,32,116,104,101,32,108,111,97,100,101,114,32,102,114, + 111,109,32,119,104,105,99,104,32,116,111,10,32,32,32,32, + 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,44, + 32,105,102,32,116,104,97,116,32,105,110,102,111,114,109,97, + 116,105,111,110,32,105,115,32,97,118,97,105,108,97,98,108, + 101,46,32,32,87,104,101,110,32,102,105,108,101,110,97,109, + 101,32,105,115,10,32,32,32,32,115,101,116,44,32,111,114, + 105,103,105,110,32,119,105,108,108,32,109,97,116,99,104,46, + 10,10,32,32,32,32,96,104,97,115,95,108,111,99,97,116, + 105,111,110,96,32,105,110,100,105,99,97,116,101,115,32,116, + 104,97,116,32,97,32,115,112,101,99,39,115,32,34,111,114, + 105,103,105,110,34,32,114,101,102,108,101,99,116,115,32,97, + 32,108,111,99,97,116,105,111,110,46,10,32,32,32,32,87, + 104,101,110,32,116,104,105,115,32,105,115,32,84,114,117,101, + 44,32,96,95,95,102,105,108,101,95,95,96,32,97,116,116, + 114,105,98,117,116,101,32,111,102,32,116,104,101,32,109,111, + 100,117,108,101,32,105,115,32,115,101,116,46,10,10,32,32, + 32,32,96,99,97,99,104,101,100,96,32,105,115,32,116,104, + 101,32,108,111,99,97,116,105,111,110,32,111,102,32,116,104, + 101,32,99,97,99,104,101,100,32,98,121,116,101,99,111,100, + 101,32,102,105,108,101,44,32,105,102,32,97,110,121,46,32, + 32,73,116,10,32,32,32,32,99,111,114,114,101,115,112,111, + 110,100,115,32,116,111,32,116,104,101,32,96,95,95,99,97, + 99,104,101,100,95,95,96,32,97,116,116,114,105,98,117,116, + 101,46,10,10,32,32,32,32,96,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,61,123,125,122,6,123,125,40,123,125,41,122,2, - 44,32,41,9,114,51,0,0,0,114,20,0,0,0,114,122, - 0,0,0,114,126,0,0,0,218,6,97,112,112,101,110,100, - 114,129,0,0,0,218,9,95,95,99,108,97,115,115,95,95, - 114,8,0,0,0,218,4,106,111,105,110,41,2,114,34,0, - 0,0,114,63,0,0,0,32,32,114,5,0,0,0,114,54, - 0,0,0,113,1,0,0,115,20,0,0,0,10,1,10,1, - 4,255,10,2,18,1,10,1,6,1,8,1,4,255,22,2, - 114,17,0,0,0,122,19,77,111,100,117,108,101,83,112,101, - 99,46,95,95,114,101,112,114,95,95,99,2,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, - 104,0,0,0,124,0,106,0,125,2,9,0,124,0,106,1, - 124,1,106,1,107,2,111,38,124,0,106,2,124,1,106,2, - 107,2,111,38,124,0,106,3,124,1,106,3,107,2,111,38, - 124,2,124,1,106,0,107,2,111,38,124,0,106,4,124,1, - 106,4,107,2,111,38,124,0,106,5,124,1,106,5,107,2, - 83,0,35,0,4,0,116,6,121,51,1,0,1,0,1,0, - 116,7,6,0,89,0,83,0,37,0,119,0,114,0,0,0, - 0,41,8,114,129,0,0,0,114,20,0,0,0,114,122,0, - 0,0,114,126,0,0,0,218,6,99,97,99,104,101,100,218, - 12,104,97,115,95,108,111,99,97,116,105,111,110,114,2,0, - 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,41,3,114,34,0,0,0,90,5,111,116,104,101,114, - 90,4,115,109,115,108,32,32,32,114,5,0,0,0,218,6, - 95,95,101,113,95,95,123,1,0,0,115,36,0,0,0,6, - 1,2,1,12,1,10,1,2,255,10,2,2,254,8,3,2, - 253,10,4,2,252,10,5,2,251,2,128,12,6,8,1,2, - 128,2,255,115,12,0,0,0,132,34,39,0,167,9,50,7, - 179,1,50,7,122,17,77,111,100,117,108,101,83,112,101,99, - 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,67,0,0,0,115,58,0,0, - 0,124,0,106,0,100,0,117,0,114,26,124,0,106,1,100, - 0,117,1,114,26,124,0,106,2,114,26,116,3,100,0,117, - 0,114,19,116,4,130,1,116,3,160,5,124,0,106,1,161, - 1,124,0,95,0,124,0,106,0,83,0,114,0,0,0,0, - 41,6,114,131,0,0,0,114,126,0,0,0,114,130,0,0, - 0,218,19,95,98,111,111,116,115,116,114,97,112,95,101,120, - 116,101,114,110,97,108,218,19,78,111,116,73,109,112,108,101, - 109,101,110,116,101,100,69,114,114,111,114,90,11,95,103,101, - 116,95,99,97,99,104,101,100,114,53,0,0,0,32,114,5, - 0,0,0,114,135,0,0,0,135,1,0,0,115,12,0,0, - 0,10,2,16,1,8,1,4,1,14,1,6,1,114,17,0, - 0,0,122,17,77,111,100,117,108,101,83,112,101,99,46,99, - 97,99,104,101,100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1, - 114,131,0,0,0,41,2,114,34,0,0,0,114,135,0,0, - 0,32,32,114,5,0,0,0,114,135,0,0,0,144,1,0, - 0,115,2,0,0,0,10,2,114,17,0,0,0,99,1,0, + 111,110,115,96,32,105,115,32,116,104,101,32,115,101,113,117, + 101,110,99,101,32,111,102,32,112,97,116,104,32,101,110,116, + 114,105,101,115,32,116,111,10,32,32,32,32,115,101,97,114, + 99,104,32,119,104,101,110,32,105,109,112,111,114,116,105,110, + 103,32,115,117,98,109,111,100,117,108,101,115,46,32,32,73, + 102,32,115,101,116,44,32,105,115,95,112,97,99,107,97,103, + 101,32,115,104,111,117,108,100,32,98,101,10,32,32,32,32, + 84,114,117,101,45,45,97,110,100,32,70,97,108,115,101,32, + 111,116,104,101,114,119,105,115,101,46,10,10,32,32,32,32, + 80,97,99,107,97,103,101,115,32,97,114,101,32,115,105,109, + 112,108,121,32,109,111,100,117,108,101,115,32,116,104,97,116, + 32,40,109,97,121,41,32,104,97,118,101,32,115,117,98,109, + 111,100,117,108,101,115,46,32,32,73,102,32,97,32,115,112, + 101,99,10,32,32,32,32,104,97,115,32,97,32,110,111,110, + 45,78,111,110,101,32,118,97,108,117,101,32,105,110,32,96, + 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,96,44,32,116,104,101, + 32,105,109,112,111,114,116,10,32,32,32,32,115,121,115,116, + 101,109,32,119,105,108,108,32,99,111,110,115,105,100,101,114, + 32,109,111,100,117,108,101,115,32,108,111,97,100,101,100,32, + 102,114,111,109,32,116,104,101,32,115,112,101,99,32,97,115, + 32,112,97,99,107,97,103,101,115,46,10,10,32,32,32,32, + 79,110,108,121,32,102,105,110,100,101,114,115,32,40,115,101, + 101,32,105,109,112,111,114,116,108,105,98,46,97,98,99,46, + 77,101,116,97,80,97,116,104,70,105,110,100,101,114,32,97, + 110,100,10,32,32,32,32,105,109,112,111,114,116,108,105,98, + 46,97,98,99,46,80,97,116,104,69,110,116,114,121,70,105, + 110,100,101,114,41,32,115,104,111,117,108,100,32,109,111,100, + 105,102,121,32,77,111,100,117,108,101,83,112,101,99,32,105, + 110,115,116,97,110,99,101,115,46,10,10,32,32,32,32,78, + 41,3,218,6,111,114,105,103,105,110,218,12,108,111,97,100, + 101,114,95,115,116,97,116,101,218,10,105,115,95,112,97,99, + 107,97,103,101,99,3,0,0,0,0,0,0,0,3,0,0, + 0,2,0,0,0,67,0,0,0,115,54,0,0,0,124,1, + 124,0,95,0,124,2,124,0,95,1,124,3,124,0,95,2, + 124,4,124,0,95,3,124,5,114,16,103,0,110,1,100,0, + 124,0,95,4,100,1,124,0,95,5,100,0,124,0,95,6, + 100,0,83,0,41,2,78,70,41,7,114,20,0,0,0,114, + 122,0,0,0,114,126,0,0,0,114,127,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,218,13,95,115,101,116, + 95,102,105,108,101,97,116,116,114,218,7,95,99,97,99,104, + 101,100,41,6,114,34,0,0,0,114,20,0,0,0,114,122, + 0,0,0,114,126,0,0,0,114,127,0,0,0,114,128,0, + 0,0,32,32,32,32,32,32,114,5,0,0,0,114,35,0, + 0,0,101,1,0,0,115,14,0,0,0,6,2,6,1,6, + 1,6,1,14,1,6,3,10,1,114,17,0,0,0,122,19, + 77,111,100,117,108,101,83,112,101,99,46,95,95,105,110,105, + 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 6,0,0,0,67,0,0,0,115,102,0,0,0,100,1,160, + 0,124,0,106,1,161,1,100,2,160,0,124,0,106,2,161, + 1,103,2,125,1,124,0,106,3,100,0,117,1,114,26,124, + 1,160,4,100,3,160,0,124,0,106,3,161,1,161,1,1, + 0,124,0,106,5,100,0,117,1,114,40,124,1,160,4,100, + 4,160,0,124,0,106,5,161,1,161,1,1,0,100,5,160, + 0,124,0,106,6,106,7,100,6,160,8,124,1,161,1,161, + 2,83,0,41,7,78,122,9,110,97,109,101,61,123,33,114, + 125,122,11,108,111,97,100,101,114,61,123,33,114,125,122,11, + 111,114,105,103,105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123, + 125,41,122,2,44,32,41,9,114,51,0,0,0,114,20,0, + 0,0,114,122,0,0,0,114,126,0,0,0,218,6,97,112, + 112,101,110,100,114,129,0,0,0,218,9,95,95,99,108,97, + 115,115,95,95,114,8,0,0,0,218,4,106,111,105,110,41, + 2,114,34,0,0,0,114,63,0,0,0,32,32,114,5,0, + 0,0,114,54,0,0,0,113,1,0,0,115,20,0,0,0, + 10,1,10,1,4,255,10,2,18,1,10,1,6,1,8,1, + 4,255,22,2,114,17,0,0,0,122,19,77,111,100,117,108, + 101,83,112,101,99,46,95,95,114,101,112,114,95,95,99,2, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,104,0,0,0,124,0,106,0,125,2,9,0, + 124,0,106,1,124,1,106,1,107,2,111,38,124,0,106,2, + 124,1,106,2,107,2,111,38,124,0,106,3,124,1,106,3, + 107,2,111,38,124,2,124,1,106,0,107,2,111,38,124,0, + 106,4,124,1,106,4,107,2,111,38,124,0,106,5,124,1, + 106,5,107,2,83,0,35,0,4,0,116,6,121,51,1,0, + 1,0,1,0,116,7,6,0,89,0,83,0,37,0,119,0, + 114,0,0,0,0,41,8,114,129,0,0,0,114,20,0,0, + 0,114,122,0,0,0,114,126,0,0,0,218,6,99,97,99, + 104,101,100,218,12,104,97,115,95,108,111,99,97,116,105,111, + 110,114,2,0,0,0,218,14,78,111,116,73,109,112,108,101, + 109,101,110,116,101,100,41,3,114,34,0,0,0,90,5,111, + 116,104,101,114,90,4,115,109,115,108,32,32,32,114,5,0, + 0,0,218,6,95,95,101,113,95,95,123,1,0,0,115,36, + 0,0,0,6,1,2,1,12,1,10,1,2,255,10,2,2, + 254,8,3,2,253,10,4,2,252,10,5,2,251,2,128,12, + 6,8,1,2,128,2,255,115,12,0,0,0,132,34,39,0, + 167,9,50,7,179,1,50,7,122,17,77,111,100,117,108,101, + 83,112,101,99,46,95,95,101,113,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 115,58,0,0,0,124,0,106,0,100,0,117,0,114,26,124, + 0,106,1,100,0,117,1,114,26,124,0,106,2,114,26,116, + 3,100,0,117,0,114,19,116,4,130,1,116,3,160,5,124, + 0,106,1,161,1,124,0,95,0,124,0,106,0,83,0,114, + 0,0,0,0,41,6,114,131,0,0,0,114,126,0,0,0, + 114,130,0,0,0,218,19,95,98,111,111,116,115,116,114,97, + 112,95,101,120,116,101,114,110,97,108,218,19,78,111,116,73, + 109,112,108,101,109,101,110,116,101,100,69,114,114,111,114,90, + 11,95,103,101,116,95,99,97,99,104,101,100,114,53,0,0, + 0,32,114,5,0,0,0,114,135,0,0,0,135,1,0,0, + 115,12,0,0,0,10,2,16,1,8,1,4,1,14,1,6, + 1,114,17,0,0,0,122,17,77,111,100,117,108,101,83,112, + 101,99,46,99,97,99,104,101,100,99,2,0,0,0,0,0, + 0,0,0,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,0,0, + 0,0,41,1,114,131,0,0,0,41,2,114,34,0,0,0, + 114,135,0,0,0,32,32,114,5,0,0,0,114,135,0,0, + 0,144,1,0,0,115,2,0,0,0,10,2,114,17,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,67,0,0,0,115,32,0,0,0,124,0,106,0,100, + 1,117,0,114,13,124,0,106,1,160,2,100,2,161,1,100, + 3,25,0,83,0,124,0,106,1,83,0,41,4,122,32,84, + 104,101,32,110,97,109,101,32,111,102,32,116,104,101,32,109, + 111,100,117,108,101,39,115,32,112,97,114,101,110,116,46,78, + 218,1,46,114,26,0,0,0,41,3,114,129,0,0,0,114, + 20,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, + 114,53,0,0,0,32,114,5,0,0,0,218,6,112,97,114, + 101,110,116,148,1,0,0,115,6,0,0,0,10,3,16,1, + 6,2,114,17,0,0,0,122,17,77,111,100,117,108,101,83, + 112,101,99,46,112,97,114,101,110,116,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,67,0,0,0,115, + 6,0,0,0,124,0,106,0,83,0,114,0,0,0,0,41, + 1,114,130,0,0,0,114,53,0,0,0,32,114,5,0,0, + 0,114,136,0,0,0,156,1,0,0,115,2,0,0,0,6, + 2,114,17,0,0,0,122,23,77,111,100,117,108,101,83,112, + 101,99,46,104,97,115,95,108,111,99,97,116,105,111,110,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 67,0,0,0,115,14,0,0,0,116,0,124,1,131,1,124, + 0,95,1,100,0,83,0,114,0,0,0,0,41,2,218,4, + 98,111,111,108,114,130,0,0,0,41,2,114,34,0,0,0, + 218,5,118,97,108,117,101,32,32,114,5,0,0,0,114,136, + 0,0,0,160,1,0,0,115,2,0,0,0,14,2,114,17, + 0,0,0,41,12,114,8,0,0,0,114,7,0,0,0,114, + 1,0,0,0,114,9,0,0,0,114,35,0,0,0,114,54, + 0,0,0,114,138,0,0,0,218,8,112,114,111,112,101,114, + 116,121,114,135,0,0,0,218,6,115,101,116,116,101,114,114, + 143,0,0,0,114,136,0,0,0,114,23,0,0,0,114,5, + 0,0,0,114,125,0,0,0,64,1,0,0,115,34,0,0, + 0,8,0,4,1,4,36,2,1,12,255,8,12,8,10,2, + 12,10,1,4,8,10,1,2,3,10,1,2,7,10,1,4, + 3,14,1,114,17,0,0,0,114,125,0,0,0,169,2,114, + 126,0,0,0,114,128,0,0,0,99,2,0,0,0,0,0, + 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,152, + 0,0,0,116,0,124,1,100,1,131,2,114,37,116,1,100, + 2,117,0,114,11,116,2,130,1,116,1,106,3,125,4,124, + 3,100,2,117,0,114,24,124,4,124,0,124,1,100,3,141, + 2,83,0,124,3,114,28,103,0,110,1,100,2,125,5,124, + 4,124,0,124,1,124,5,100,4,141,3,83,0,124,3,100, + 2,117,0,114,67,116,0,124,1,100,5,131,2,114,65,9, + 0,124,1,160,4,124,0,161,1,125,3,110,14,35,0,4, + 0,116,5,121,75,1,0,1,0,1,0,100,2,125,3,89, + 0,110,3,37,0,100,6,125,3,116,6,124,0,124,1,124, + 2,124,3,100,7,141,4,83,0,119,0,41,8,122,53,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,118,97,114, + 105,111,117,115,32,108,111,97,100,101,114,32,109,101,116,104, + 111,100,115,46,90,12,103,101,116,95,102,105,108,101,110,97, + 109,101,78,41,1,114,122,0,0,0,41,2,114,122,0,0, + 0,114,129,0,0,0,114,128,0,0,0,70,114,148,0,0, + 0,41,7,114,10,0,0,0,114,139,0,0,0,114,140,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,114,128,0,0,0, + 114,88,0,0,0,114,125,0,0,0,41,6,114,20,0,0, + 0,114,122,0,0,0,114,126,0,0,0,114,128,0,0,0, + 114,149,0,0,0,90,6,115,101,97,114,99,104,32,32,32, + 32,32,32,114,5,0,0,0,114,104,0,0,0,165,1,0, + 0,115,42,0,0,0,10,2,8,1,4,1,6,1,8,2, + 12,1,12,1,6,1,2,1,6,255,8,3,10,1,2,1, + 12,1,2,128,12,1,8,1,2,128,4,3,16,2,2,250, + 115,15,0,0,0,175,5,53,0,181,9,65,0,7,193,11, + 1,65,0,7,114,104,0,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,50, + 1,0,0,9,0,124,0,106,0,125,3,110,10,35,0,4, + 0,116,1,121,152,1,0,1,0,1,0,89,0,110,7,37, + 0,124,3,100,0,117,1,114,21,124,3,83,0,124,0,106, + 2,125,4,124,1,100,0,117,0,114,43,9,0,124,0,106, + 3,125,1,110,10,35,0,4,0,116,1,121,151,1,0,1, + 0,1,0,89,0,110,1,37,0,9,0,124,0,106,4,125, + 5,110,12,35,0,4,0,116,1,121,150,1,0,1,0,1, + 0,100,0,125,5,89,0,110,1,37,0,124,2,100,0,117, + 0,114,87,124,5,100,0,117,0,114,85,9,0,124,1,106, + 5,125,2,110,14,35,0,4,0,116,1,121,149,1,0,1, + 0,1,0,100,0,125,2,89,0,110,3,37,0,124,5,125, + 2,9,0,124,0,106,6,125,6,110,12,35,0,4,0,116, + 1,121,148,1,0,1,0,1,0,100,0,125,6,89,0,110, + 1,37,0,9,0,116,7,124,0,106,8,131,1,125,7,110, + 12,35,0,4,0,116,1,121,147,1,0,1,0,1,0,100, + 0,125,7,89,0,110,1,37,0,116,9,124,4,124,1,124, + 2,100,1,141,3,125,3,124,5,100,0,117,0,114,136,100, + 2,110,1,100,3,124,3,95,10,124,6,124,3,95,11,124, + 7,124,3,95,12,124,3,83,0,119,0,119,0,119,0,119, + 0,119,0,119,0,41,4,78,169,1,114,126,0,0,0,70, + 84,41,13,114,113,0,0,0,114,2,0,0,0,114,8,0, + 0,0,114,112,0,0,0,114,121,0,0,0,218,7,95,79, + 82,73,71,73,78,218,10,95,95,99,97,99,104,101,100,95, + 95,218,4,108,105,115,116,218,8,95,95,112,97,116,104,95, + 95,114,125,0,0,0,114,130,0,0,0,114,135,0,0,0, + 114,129,0,0,0,41,8,114,110,0,0,0,114,122,0,0, + 0,114,126,0,0,0,114,109,0,0,0,114,20,0,0,0, + 90,8,108,111,99,97,116,105,111,110,114,135,0,0,0,114, + 129,0,0,0,32,32,32,32,32,32,32,32,114,5,0,0, + 0,218,17,95,115,112,101,99,95,102,114,111,109,95,109,111, + 100,117,108,101,191,1,0,0,115,108,0,0,0,2,2,8, + 1,2,128,12,1,4,1,2,128,8,2,4,1,6,2,8, + 1,2,1,8,1,2,128,12,1,4,2,2,128,2,1,8, + 1,2,128,12,1,8,1,2,128,8,1,8,1,2,1,8, + 1,2,128,12,1,8,1,2,128,4,2,2,1,8,1,2, + 128,12,1,8,1,2,128,2,1,12,1,2,128,12,1,8, + 1,2,128,14,2,18,1,6,1,6,1,4,1,2,249,2, + 252,2,250,2,250,2,251,2,246,115,93,0,0,0,129,3, + 5,0,133,7,14,7,157,3,33,0,161,7,42,7,172,3, + 48,0,176,9,59,7,193,5,3,65,9,0,193,9,9,65, + 20,7,193,24,3,65,28,0,193,28,9,65,39,7,193,41, + 5,65,47,0,193,47,9,65,58,7,194,19,1,65,58,7, + 194,20,1,65,39,7,194,21,1,65,20,7,194,22,1,59, + 7,194,23,1,42,7,194,24,1,14,7,114,155,0,0,0, + 70,169,1,218,8,111,118,101,114,114,105,100,101,99,2,0, + 0,0,0,0,0,0,1,0,0,0,8,0,0,0,67,0, + 0,0,115,204,1,0,0,124,2,115,10,116,0,124,1,100, + 1,100,0,131,3,100,0,117,0,114,26,9,0,124,0,106, + 1,124,1,95,2,110,10,35,0,4,0,116,3,121,229,1, + 0,1,0,1,0,89,0,110,1,37,0,124,2,115,36,116, + 0,124,1,100,2,100,0,131,3,100,0,117,0,114,87,124, + 0,106,4,125,3,124,3,100,0,117,0,114,72,124,0,106, + 5,100,0,117,1,114,72,116,6,100,0,117,0,114,54,116, + 7,130,1,116,6,106,8,125,4,124,4,160,9,124,4,161, + 1,125,3,124,0,106,5,124,3,95,10,124,3,124,0,95, + 4,100,0,124,1,95,11,9,0,124,3,124,1,95,12,110, + 10,35,0,4,0,116,3,121,228,1,0,1,0,1,0,89, + 0,110,1,37,0,124,2,115,97,116,0,124,1,100,3,100, + 0,131,3,100,0,117,0,114,113,9,0,124,0,106,13,124, + 1,95,14,110,10,35,0,4,0,116,3,121,227,1,0,1, + 0,1,0,89,0,110,1,37,0,9,0,124,0,124,1,95, + 15,110,10,35,0,4,0,116,3,121,226,1,0,1,0,1, + 0,89,0,110,1,37,0,124,2,115,138,116,0,124,1,100, + 4,100,0,131,3,100,0,117,0,114,159,124,0,106,5,100, + 0,117,1,114,159,9,0,124,0,106,5,124,1,95,16,110, + 10,35,0,4,0,116,3,121,225,1,0,1,0,1,0,89, + 0,110,1,37,0,124,0,106,17,114,221,124,2,115,172,116, + 0,124,1,100,5,100,0,131,3,100,0,117,0,114,188,9, + 0,124,0,106,18,124,1,95,11,110,10,35,0,4,0,116, + 3,121,224,1,0,1,0,1,0,89,0,110,1,37,0,124, + 2,115,198,116,0,124,1,100,6,100,0,131,3,100,0,117, + 0,114,221,124,0,106,19,100,0,117,1,114,221,9,0,124, + 0,106,19,124,1,95,20,124,1,83,0,35,0,4,0,116, + 3,121,223,1,0,1,0,1,0,89,0,124,1,83,0,37, + 0,124,1,83,0,119,0,119,0,119,0,119,0,119,0,119, + 0,119,0,41,7,78,114,8,0,0,0,114,112,0,0,0, + 218,11,95,95,112,97,99,107,97,103,101,95,95,114,154,0, + 0,0,114,121,0,0,0,114,152,0,0,0,41,21,114,12, + 0,0,0,114,20,0,0,0,114,8,0,0,0,114,2,0, + 0,0,114,122,0,0,0,114,129,0,0,0,114,139,0,0, + 0,114,140,0,0,0,218,16,95,78,97,109,101,115,112,97, + 99,101,76,111,97,100,101,114,218,7,95,95,110,101,119,95, + 95,90,5,95,112,97,116,104,114,121,0,0,0,114,112,0, + 0,0,114,143,0,0,0,114,158,0,0,0,114,113,0,0, + 0,114,154,0,0,0,114,136,0,0,0,114,126,0,0,0, + 114,135,0,0,0,114,152,0,0,0,41,5,114,109,0,0, + 0,114,110,0,0,0,114,157,0,0,0,114,122,0,0,0, + 114,159,0,0,0,32,32,32,32,32,114,5,0,0,0,218, + 18,95,105,110,105,116,95,109,111,100,117,108,101,95,97,116, + 116,114,115,236,1,0,0,115,142,0,0,0,20,4,2,1, + 10,1,2,128,12,1,4,1,2,128,20,2,6,1,8,1, + 10,2,8,1,4,1,6,1,10,2,8,1,6,1,6,11, + 2,1,8,1,2,128,12,1,4,1,2,128,20,2,2,1, + 10,1,2,128,12,1,4,1,2,128,2,2,8,1,2,128, + 12,1,4,1,2,128,20,2,10,1,2,1,10,1,2,128, + 12,1,4,1,2,128,6,2,20,1,2,1,10,1,2,128, + 12,1,4,1,2,128,20,2,10,1,2,1,8,1,4,3, + 2,128,12,254,2,1,4,1,2,128,4,0,2,254,2,249, + 2,249,2,249,2,251,2,250,2,228,115,121,0,0,0,139, + 4,16,0,144,7,25,7,193,9,3,65,13,0,193,13,7, + 65,22,7,193,34,4,65,39,0,193,39,7,65,48,7,193, + 50,3,65,54,0,193,54,7,65,63,7,194,16,4,66,21, + 0,194,21,7,66,30,7,194,45,4,66,50,0,194,50,7, + 66,59,7,195,12,4,67,18,0,195,18,7,67,28,7,195, + 31,1,67,28,7,195,32,1,66,59,7,195,33,1,66,30, + 7,195,34,1,65,63,7,195,35,1,65,48,7,195,36,1, + 65,22,7,195,37,1,25,7,114,161,0,0,0,99,1,0, 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,115,32,0,0,0,124,0,106,0,100,1,117,0,114, - 13,124,0,106,1,160,2,100,2,161,1,100,3,25,0,83, - 0,124,0,106,1,83,0,41,4,122,32,84,104,101,32,110, - 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, - 101,39,115,32,112,97,114,101,110,116,46,78,218,1,46,114, - 26,0,0,0,41,3,114,129,0,0,0,114,20,0,0,0, - 218,10,114,112,97,114,116,105,116,105,111,110,114,53,0,0, - 0,32,114,5,0,0,0,218,6,112,97,114,101,110,116,148, - 1,0,0,115,6,0,0,0,10,3,16,1,6,2,114,17, - 0,0,0,122,17,77,111,100,117,108,101,83,112,101,99,46, - 112,97,114,101,110,116,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,67,0,0,0,115,6,0,0,0, - 124,0,106,0,83,0,114,0,0,0,0,41,1,114,130,0, - 0,0,114,53,0,0,0,32,114,5,0,0,0,114,136,0, - 0,0,156,1,0,0,115,2,0,0,0,6,2,114,17,0, - 0,0,122,23,77,111,100,117,108,101,83,112,101,99,46,104, - 97,115,95,108,111,99,97,116,105,111,110,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,67,0,0,0, - 115,14,0,0,0,116,0,124,1,131,1,124,0,95,1,100, - 0,83,0,114,0,0,0,0,41,2,218,4,98,111,111,108, - 114,130,0,0,0,41,2,114,34,0,0,0,218,5,118,97, - 108,117,101,32,32,114,5,0,0,0,114,136,0,0,0,160, - 1,0,0,115,2,0,0,0,14,2,114,17,0,0,0,41, - 12,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, - 114,9,0,0,0,114,35,0,0,0,114,54,0,0,0,114, - 138,0,0,0,218,8,112,114,111,112,101,114,116,121,114,135, - 0,0,0,218,6,115,101,116,116,101,114,114,143,0,0,0, - 114,136,0,0,0,114,23,0,0,0,114,5,0,0,0,114, - 125,0,0,0,64,1,0,0,115,34,0,0,0,8,0,4, - 1,4,36,2,1,12,255,8,12,8,10,2,12,10,1,4, - 8,10,1,2,3,10,1,2,7,10,1,4,3,14,1,114, - 17,0,0,0,114,125,0,0,0,169,2,114,126,0,0,0, - 114,128,0,0,0,99,2,0,0,0,0,0,0,0,2,0, - 0,0,8,0,0,0,67,0,0,0,115,152,0,0,0,116, - 0,124,1,100,1,131,2,114,37,116,1,100,2,117,0,114, - 11,116,2,130,1,116,1,106,3,125,4,124,3,100,2,117, - 0,114,24,124,4,124,0,124,1,100,3,141,2,83,0,124, - 3,114,28,103,0,110,1,100,2,125,5,124,4,124,0,124, - 1,124,5,100,4,141,3,83,0,124,3,100,2,117,0,114, - 67,116,0,124,1,100,5,131,2,114,65,9,0,124,1,160, - 4,124,0,161,1,125,3,110,14,35,0,4,0,116,5,121, - 75,1,0,1,0,1,0,100,2,125,3,89,0,110,3,37, - 0,100,6,125,3,116,6,124,0,124,1,124,2,124,3,100, - 7,141,4,83,0,119,0,41,8,122,53,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,118,97,114,105,111,117,115, - 32,108,111,97,100,101,114,32,109,101,116,104,111,100,115,46, - 90,12,103,101,116,95,102,105,108,101,110,97,109,101,78,41, - 1,114,122,0,0,0,41,2,114,122,0,0,0,114,129,0, - 0,0,114,128,0,0,0,70,114,148,0,0,0,41,7,114, - 10,0,0,0,114,139,0,0,0,114,140,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,114,128,0,0,0,114,88,0,0, - 0,114,125,0,0,0,41,6,114,20,0,0,0,114,122,0, - 0,0,114,126,0,0,0,114,128,0,0,0,114,149,0,0, - 0,90,6,115,101,97,114,99,104,32,32,32,32,32,32,114, - 5,0,0,0,114,104,0,0,0,165,1,0,0,115,42,0, - 0,0,10,2,8,1,4,1,6,1,8,2,12,1,12,1, - 6,1,2,1,6,255,8,3,10,1,2,1,12,1,2,128, - 12,1,8,1,2,128,4,3,16,2,2,250,115,15,0,0, - 0,175,5,53,0,181,9,65,0,7,193,11,1,65,0,7, - 114,104,0,0,0,99,3,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,50,1,0,0,9, - 0,124,0,106,0,125,3,110,10,35,0,4,0,116,1,121, - 152,1,0,1,0,1,0,89,0,110,7,37,0,124,3,100, - 0,117,1,114,21,124,3,83,0,124,0,106,2,125,4,124, - 1,100,0,117,0,114,43,9,0,124,0,106,3,125,1,110, - 10,35,0,4,0,116,1,121,151,1,0,1,0,1,0,89, - 0,110,1,37,0,9,0,124,0,106,4,125,5,110,12,35, - 0,4,0,116,1,121,150,1,0,1,0,1,0,100,0,125, - 5,89,0,110,1,37,0,124,2,100,0,117,0,114,87,124, - 5,100,0,117,0,114,85,9,0,124,1,106,5,125,2,110, - 14,35,0,4,0,116,1,121,149,1,0,1,0,1,0,100, - 0,125,2,89,0,110,3,37,0,124,5,125,2,9,0,124, - 0,106,6,125,6,110,12,35,0,4,0,116,1,121,148,1, - 0,1,0,1,0,100,0,125,6,89,0,110,1,37,0,9, - 0,116,7,124,0,106,8,131,1,125,7,110,12,35,0,4, - 0,116,1,121,147,1,0,1,0,1,0,100,0,125,7,89, - 0,110,1,37,0,116,9,124,4,124,1,124,2,100,1,141, - 3,125,3,124,5,100,0,117,0,114,136,100,2,110,1,100, - 3,124,3,95,10,124,6,124,3,95,11,124,7,124,3,95, - 12,124,3,83,0,119,0,119,0,119,0,119,0,119,0,119, - 0,41,4,78,169,1,114,126,0,0,0,70,84,41,13,114, - 113,0,0,0,114,2,0,0,0,114,8,0,0,0,114,112, - 0,0,0,114,121,0,0,0,218,7,95,79,82,73,71,73, - 78,218,10,95,95,99,97,99,104,101,100,95,95,218,4,108, - 105,115,116,218,8,95,95,112,97,116,104,95,95,114,125,0, - 0,0,114,130,0,0,0,114,135,0,0,0,114,129,0,0, - 0,41,8,114,110,0,0,0,114,122,0,0,0,114,126,0, - 0,0,114,109,0,0,0,114,20,0,0,0,90,8,108,111, - 99,97,116,105,111,110,114,135,0,0,0,114,129,0,0,0, - 32,32,32,32,32,32,32,32,114,5,0,0,0,218,17,95, - 115,112,101,99,95,102,114,111,109,95,109,111,100,117,108,101, - 191,1,0,0,115,108,0,0,0,2,2,8,1,2,128,12, - 1,4,1,2,128,8,2,4,1,6,2,8,1,2,1,8, - 1,2,128,12,1,4,2,2,128,2,1,8,1,2,128,12, - 1,8,1,2,128,8,1,8,1,2,1,8,1,2,128,12, - 1,8,1,2,128,4,2,2,1,8,1,2,128,12,1,8, - 1,2,128,2,1,12,1,2,128,12,1,8,1,2,128,14, - 2,18,1,6,1,6,1,4,1,2,249,2,252,2,250,2, - 250,2,251,2,246,115,93,0,0,0,129,3,5,0,133,7, - 14,7,157,3,33,0,161,7,42,7,172,3,48,0,176,9, - 59,7,193,5,3,65,9,0,193,9,9,65,20,7,193,24, - 3,65,28,0,193,28,9,65,39,7,193,41,5,65,47,0, - 193,47,9,65,58,7,194,19,1,65,58,7,194,20,1,65, - 39,7,194,21,1,65,20,7,194,22,1,59,7,194,23,1, - 42,7,194,24,1,14,7,114,155,0,0,0,70,169,1,218, - 8,111,118,101,114,114,105,100,101,99,2,0,0,0,0,0, - 0,0,1,0,0,0,8,0,0,0,67,0,0,0,115,204, - 1,0,0,124,2,115,10,116,0,124,1,100,1,100,0,131, - 3,100,0,117,0,114,26,9,0,124,0,106,1,124,1,95, - 2,110,10,35,0,4,0,116,3,121,229,1,0,1,0,1, - 0,89,0,110,1,37,0,124,2,115,36,116,0,124,1,100, - 2,100,0,131,3,100,0,117,0,114,87,124,0,106,4,125, - 3,124,3,100,0,117,0,114,72,124,0,106,5,100,0,117, - 1,114,72,116,6,100,0,117,0,114,54,116,7,130,1,116, - 6,106,8,125,4,124,4,160,9,124,4,161,1,125,3,124, - 0,106,5,124,3,95,10,124,3,124,0,95,4,100,0,124, - 1,95,11,9,0,124,3,124,1,95,12,110,10,35,0,4, - 0,116,3,121,228,1,0,1,0,1,0,89,0,110,1,37, - 0,124,2,115,97,116,0,124,1,100,3,100,0,131,3,100, - 0,117,0,114,113,9,0,124,0,106,13,124,1,95,14,110, - 10,35,0,4,0,116,3,121,227,1,0,1,0,1,0,89, - 0,110,1,37,0,9,0,124,0,124,1,95,15,110,10,35, - 0,4,0,116,3,121,226,1,0,1,0,1,0,89,0,110, - 1,37,0,124,2,115,138,116,0,124,1,100,4,100,0,131, - 3,100,0,117,0,114,159,124,0,106,5,100,0,117,1,114, - 159,9,0,124,0,106,5,124,1,95,16,110,10,35,0,4, - 0,116,3,121,225,1,0,1,0,1,0,89,0,110,1,37, - 0,124,0,106,17,114,221,124,2,115,172,116,0,124,1,100, - 5,100,0,131,3,100,0,117,0,114,188,9,0,124,0,106, - 18,124,1,95,11,110,10,35,0,4,0,116,3,121,224,1, - 0,1,0,1,0,89,0,110,1,37,0,124,2,115,198,116, - 0,124,1,100,6,100,0,131,3,100,0,117,0,114,221,124, - 0,106,19,100,0,117,1,114,221,9,0,124,0,106,19,124, - 1,95,20,124,1,83,0,35,0,4,0,116,3,121,223,1, - 0,1,0,1,0,89,0,124,1,83,0,37,0,124,1,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,41, - 7,78,114,8,0,0,0,114,112,0,0,0,218,11,95,95, - 112,97,99,107,97,103,101,95,95,114,154,0,0,0,114,121, - 0,0,0,114,152,0,0,0,41,21,114,12,0,0,0,114, - 20,0,0,0,114,8,0,0,0,114,2,0,0,0,114,122, - 0,0,0,114,129,0,0,0,114,139,0,0,0,114,140,0, - 0,0,218,16,95,78,97,109,101,115,112,97,99,101,76,111, - 97,100,101,114,218,7,95,95,110,101,119,95,95,90,5,95, - 112,97,116,104,114,121,0,0,0,114,112,0,0,0,114,143, - 0,0,0,114,158,0,0,0,114,113,0,0,0,114,154,0, - 0,0,114,136,0,0,0,114,126,0,0,0,114,135,0,0, - 0,114,152,0,0,0,41,5,114,109,0,0,0,114,110,0, - 0,0,114,157,0,0,0,114,122,0,0,0,114,159,0,0, - 0,32,32,32,32,32,114,5,0,0,0,218,18,95,105,110, - 105,116,95,109,111,100,117,108,101,95,97,116,116,114,115,236, - 1,0,0,115,142,0,0,0,20,4,2,1,10,1,2,128, - 12,1,4,1,2,128,20,2,6,1,8,1,10,2,8,1, - 4,1,6,1,10,2,8,1,6,1,6,11,2,1,8,1, - 2,128,12,1,4,1,2,128,20,2,2,1,10,1,2,128, - 12,1,4,1,2,128,2,2,8,1,2,128,12,1,4,1, - 2,128,20,2,10,1,2,1,10,1,2,128,12,1,4,1, - 2,128,6,2,20,1,2,1,10,1,2,128,12,1,4,1, - 2,128,20,2,10,1,2,1,8,1,4,3,2,128,12,254, - 2,1,4,1,2,128,4,0,2,254,2,249,2,249,2,249, - 2,251,2,250,2,228,115,121,0,0,0,139,4,16,0,144, - 7,25,7,193,9,3,65,13,0,193,13,7,65,22,7,193, - 34,4,65,39,0,193,39,7,65,48,7,193,50,3,65,54, - 0,193,54,7,65,63,7,194,16,4,66,21,0,194,21,7, - 66,30,7,194,45,4,66,50,0,194,50,7,66,59,7,195, - 12,4,67,18,0,195,18,7,67,28,7,195,31,1,67,28, - 7,195,32,1,66,59,7,195,33,1,66,30,7,195,34,1, - 65,63,7,195,35,1,65,48,7,195,36,1,65,22,7,195, - 37,1,25,7,114,161,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,82, - 0,0,0,100,1,125,1,116,0,124,0,106,1,100,2,131, - 2,114,15,124,0,106,1,160,2,124,0,161,1,125,1,110, - 10,116,0,124,0,106,1,100,3,131,2,114,25,116,3,100, - 4,131,1,130,1,124,1,100,1,117,0,114,34,116,4,124, - 0,106,5,131,1,125,1,116,6,124,0,124,1,131,2,1, - 0,124,1,83,0,41,5,122,43,67,114,101,97,116,101,32, - 97,32,109,111,100,117,108,101,32,98,97,115,101,100,32,111, - 110,32,116,104,101,32,112,114,111,118,105,100,101,100,32,115, - 112,101,99,46,78,218,13,99,114,101,97,116,101,95,109,111, - 100,117,108,101,218,11,101,120,101,99,95,109,111,100,117,108, - 101,122,66,108,111,97,100,101,114,115,32,116,104,97,116,32, - 100,101,102,105,110,101,32,101,120,101,99,95,109,111,100,117, - 108,101,40,41,32,109,117,115,116,32,97,108,115,111,32,100, - 101,102,105,110,101,32,99,114,101,97,116,101,95,109,111,100, - 117,108,101,40,41,41,7,114,10,0,0,0,114,122,0,0, - 0,114,162,0,0,0,114,88,0,0,0,114,21,0,0,0, - 114,20,0,0,0,114,161,0,0,0,169,2,114,109,0,0, - 0,114,110,0,0,0,32,32,114,5,0,0,0,218,16,109, - 111,100,117,108,101,95,102,114,111,109,95,115,112,101,99,52, - 2,0,0,115,18,0,0,0,4,3,12,1,14,3,12,1, - 8,1,8,2,10,1,10,1,4,1,114,17,0,0,0,114, - 165,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,100,0,0,0,124,0, - 106,0,100,1,117,0,114,7,100,2,110,2,124,0,106,0, - 125,1,124,0,106,1,100,1,117,0,114,32,124,0,106,2, - 100,1,117,0,114,25,100,3,160,3,124,1,161,1,83,0, - 100,4,160,3,124,1,124,0,106,2,161,2,83,0,124,0, - 106,4,114,42,100,5,160,3,124,1,124,0,106,1,161,2, - 83,0,100,6,160,3,124,0,106,0,124,0,106,1,161,2, - 83,0,41,7,122,38,82,101,116,117,114,110,32,116,104,101, - 32,114,101,112,114,32,116,111,32,117,115,101,32,102,111,114, - 32,116,104,101,32,109,111,100,117,108,101,46,78,114,115,0, - 0,0,114,116,0,0,0,114,117,0,0,0,114,118,0,0, - 0,250,18,60,109,111,100,117,108,101,32,123,33,114,125,32, - 40,123,125,41,62,41,5,114,20,0,0,0,114,126,0,0, - 0,114,122,0,0,0,114,51,0,0,0,114,136,0,0,0, - 41,2,114,109,0,0,0,114,20,0,0,0,32,32,114,5, - 0,0,0,114,119,0,0,0,69,2,0,0,115,16,0,0, - 0,20,3,10,1,10,1,10,1,14,2,6,2,14,1,16, - 2,114,17,0,0,0,114,119,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,10,0,0,0,67,0,0,0, - 115,32,1,0,0,124,0,106,0,125,2,116,1,124,2,131, - 1,53,0,1,0,116,2,106,3,160,4,124,2,161,1,124, - 1,117,1,114,27,100,1,160,5,124,2,161,1,125,3,116, - 6,124,3,124,2,100,2,141,2,130,1,9,0,124,0,106, - 7,100,3,117,0,114,53,124,0,106,8,100,3,117,0,114, - 45,116,6,100,4,124,0,106,0,100,2,141,2,130,1,116, - 9,124,0,124,1,100,5,100,6,141,3,1,0,110,40,116, - 9,124,0,124,1,100,5,100,6,141,3,1,0,116,10,124, - 0,106,7,100,7,131,2,115,87,116,11,124,0,106,7,131, - 1,155,0,100,8,157,2,125,3,116,12,160,13,124,3,116, - 14,161,2,1,0,124,0,106,7,160,15,124,2,161,1,1, - 0,110,6,124,0,106,7,160,16,124,1,161,1,1,0,116, - 2,106,3,160,17,124,0,106,0,161,1,125,1,124,1,116, - 2,106,3,124,0,106,0,60,0,110,16,35,0,116,2,106, - 3,160,17,124,0,106,0,161,1,125,1,124,1,116,2,106, - 3,124,0,106,0,60,0,119,0,37,0,9,0,100,3,4, - 0,4,0,131,3,1,0,124,1,83,0,35,0,49,0,115, - 136,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, - 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, - 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, - 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, - 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, - 30,109,111,100,117,108,101,32,123,33,114,125,32,110,111,116, - 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,114, - 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, - 111,97,100,101,114,84,114,156,0,0,0,114,163,0,0,0, - 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, - 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, - 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, - 114,58,0,0,0,114,18,0,0,0,114,105,0,0,0,114, - 39,0,0,0,114,51,0,0,0,114,88,0,0,0,114,122, - 0,0,0,114,129,0,0,0,114,161,0,0,0,114,10,0, - 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, - 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, - 218,11,108,111,97,100,95,109,111,100,117,108,101,114,163,0, - 0,0,218,3,112,111,112,41,4,114,109,0,0,0,114,110, - 0,0,0,114,20,0,0,0,114,108,0,0,0,32,32,32, - 32,114,5,0,0,0,114,106,0,0,0,86,2,0,0,115, - 50,0,0,0,6,2,10,1,16,1,10,1,12,1,2,1, - 10,1,10,1,14,1,16,2,14,2,12,1,16,1,12,2, - 14,1,12,2,14,4,14,1,2,128,14,255,18,1,10,233, - 4,24,22,128,4,0,115,41,0,0,0,135,20,66,3,3, - 156,65,1,65,43,2,193,29,14,66,3,3,193,43,15,65, - 58,9,193,58,1,66,3,3,194,3,4,66,7,11,194,8, - 3,66,7,11,114,106,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,22, - 1,0,0,9,0,124,0,106,0,160,1,124,0,106,2,161, - 1,1,0,110,25,35,0,1,0,1,0,1,0,124,0,106, - 2,116,3,106,4,118,0,114,32,116,3,106,4,160,5,124, - 0,106,2,161,1,125,1,124,1,116,3,106,4,124,0,106, - 2,60,0,130,0,37,0,116,3,106,4,160,5,124,0,106, - 2,161,1,125,1,124,1,116,3,106,4,124,0,106,2,60, - 0,116,6,124,1,100,1,100,0,131,3,100,0,117,0,114, - 71,9,0,124,0,106,0,124,1,95,7,110,10,35,0,4, - 0,116,8,121,138,1,0,1,0,1,0,89,0,110,1,37, - 0,116,6,124,1,100,2,100,0,131,3,100,0,117,0,114, - 109,9,0,124,1,106,9,124,1,95,10,116,11,124,1,100, - 3,131,2,115,98,124,0,106,2,160,12,100,4,161,1,100, - 5,25,0,124,1,95,10,110,10,35,0,4,0,116,8,121, - 137,1,0,1,0,1,0,89,0,110,1,37,0,116,6,124, - 1,100,6,100,0,131,3,100,0,117,0,114,134,9,0,124, - 0,124,1,95,13,124,1,83,0,35,0,4,0,116,8,121, - 136,1,0,1,0,1,0,89,0,124,1,83,0,37,0,124, - 1,83,0,119,0,119,0,119,0,41,7,78,114,112,0,0, - 0,114,158,0,0,0,114,154,0,0,0,114,141,0,0,0, - 114,26,0,0,0,114,113,0,0,0,41,14,114,122,0,0, - 0,114,170,0,0,0,114,20,0,0,0,114,18,0,0,0, - 114,105,0,0,0,114,171,0,0,0,114,12,0,0,0,114, - 112,0,0,0,114,2,0,0,0,114,8,0,0,0,114,158, - 0,0,0,114,10,0,0,0,114,142,0,0,0,114,113,0, - 0,0,114,164,0,0,0,32,32,114,5,0,0,0,218,25, - 95,108,111,97,100,95,98,97,99,107,119,97,114,100,95,99, - 111,109,112,97,116,105,98,108,101,116,2,0,0,115,80,0, - 0,0,2,3,16,1,2,128,6,1,12,1,14,1,12,1, - 2,1,2,128,14,3,12,1,16,1,2,1,10,1,2,128, - 12,1,4,1,2,128,16,1,2,1,8,4,10,1,18,1, - 4,128,12,1,4,1,2,128,16,1,2,1,6,1,4,3, - 2,128,12,254,2,1,4,1,2,128,4,0,2,254,2,251, - 2,246,115,59,0,0,0,129,7,9,0,137,24,33,7,184, - 4,61,0,189,7,65,6,7,193,16,18,65,35,0,193,35, - 7,65,44,7,193,54,3,65,59,0,193,59,7,66,5,7, - 194,8,1,66,5,7,194,9,1,65,44,7,194,10,1,65, - 6,7,114,172,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,11,0,0,0,67,0,0,0,115,248,0,0, - 0,124,0,106,0,100,0,117,1,114,29,116,1,124,0,106, - 0,100,1,131,2,115,29,116,2,124,0,106,0,131,1,155, - 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, - 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, - 1,125,2,100,3,124,0,95,8,9,0,124,2,116,9,106, - 10,124,0,106,11,60,0,9,0,124,0,106,0,100,0,117, - 0,114,62,124,0,106,12,100,0,117,0,114,61,116,13,100, - 4,124,0,106,11,100,5,141,2,130,1,110,6,124,0,106, - 0,160,14,124,2,161,1,1,0,110,22,35,0,1,0,1, - 0,1,0,9,0,116,9,106,10,124,0,106,11,61,0,130, - 0,35,0,4,0,116,15,121,123,1,0,1,0,1,0,89, - 0,130,0,37,0,37,0,116,9,106,10,160,16,124,0,106, - 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, - 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, - 0,100,7,124,0,95,8,124,2,83,0,35,0,100,7,124, - 0,95,8,119,0,37,0,119,0,41,8,78,114,163,0,0, - 0,114,168,0,0,0,84,114,167,0,0,0,114,19,0,0, - 0,122,18,105,109,112,111,114,116,32,123,33,114,125,32,35, - 32,123,33,114,125,70,41,18,114,122,0,0,0,114,10,0, - 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, - 0,114,169,0,0,0,114,172,0,0,0,114,165,0,0,0, - 90,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114, - 18,0,0,0,114,105,0,0,0,114,20,0,0,0,114,129, - 0,0,0,114,88,0,0,0,114,163,0,0,0,114,71,0, - 0,0,114,171,0,0,0,114,84,0,0,0,41,3,114,109, - 0,0,0,114,108,0,0,0,114,110,0,0,0,32,32,32, - 114,5,0,0,0,218,14,95,108,111,97,100,95,117,110,108, - 111,99,107,101,100,152,2,0,0,115,66,0,0,0,10,2, - 12,2,16,1,12,2,8,1,8,2,6,5,2,1,12,1, - 2,1,10,1,10,1,14,1,2,255,12,4,4,128,6,1, - 2,1,10,1,2,3,2,128,12,254,2,1,2,1,4,128, - 14,5,12,1,16,1,6,2,4,2,2,128,10,254,2,245, - 115,64,0,0,0,165,6,65,53,0,172,24,65,5,0,193, - 4,1,65,53,0,193,5,4,65,26,7,193,10,5,65,16, - 6,193,15,1,65,26,7,193,16,7,65,25,13,193,23,3, - 65,26,7,193,26,22,65,53,0,193,53,5,65,58,7,193, - 59,1,65,25,13,114,173,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, - 58,0,0,0,116,0,124,0,106,1,131,1,53,0,1,0, - 116,2,124,0,131,1,2,0,100,1,4,0,4,0,131,3, - 1,0,83,0,35,0,49,0,115,21,119,4,37,0,1,0, - 1,0,1,0,89,0,1,0,1,0,100,1,83,0,41,2, - 122,191,82,101,116,117,114,110,32,97,32,110,101,119,32,109, - 111,100,117,108,101,32,111,98,106,101,99,116,44,32,108,111, - 97,100,101,100,32,98,121,32,116,104,101,32,115,112,101,99, - 39,115,32,108,111,97,100,101,114,46,10,10,32,32,32,32, - 84,104,101,32,109,111,100,117,108,101,32,105,115,32,110,111, - 116,32,97,100,100,101,100,32,116,111,32,105,116,115,32,112, - 97,114,101,110,116,46,10,10,32,32,32,32,73,102,32,97, - 32,109,111,100,117,108,101,32,105,115,32,97,108,114,101,97, - 100,121,32,105,110,32,115,121,115,46,109,111,100,117,108,101, - 115,44,32,116,104,97,116,32,101,120,105,115,116,105,110,103, - 32,109,111,100,117,108,101,32,103,101,116,115,10,32,32,32, - 32,99,108,111,98,98,101,114,101,100,46,10,10,32,32,32, - 32,78,41,3,114,58,0,0,0,114,20,0,0,0,114,173, - 0,0,0,169,1,114,109,0,0,0,32,114,5,0,0,0, - 114,107,0,0,0,197,2,0,0,115,10,0,0,0,12,9, - 6,1,14,255,22,128,4,0,115,12,0,0,0,133,4,16, - 3,144,4,20,11,149,3,20,11,114,107,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, - 0,0,0,115,140,0,0,0,101,0,90,1,100,0,90,2, - 100,1,90,3,100,2,90,4,101,5,100,3,100,4,132,0, - 131,1,90,6,101,7,100,20,100,6,100,7,132,1,131,1, - 90,8,101,7,100,21,100,8,100,9,132,1,131,1,90,9, - 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, - 100,13,132,0,131,1,90,11,101,7,101,12,100,14,100,15, - 132,0,131,1,131,1,90,13,101,7,101,12,100,16,100,17, - 132,0,131,1,131,1,90,14,101,7,101,12,100,18,100,19, - 132,0,131,1,131,1,90,15,101,7,101,16,131,1,90,17, - 100,5,83,0,41,22,218,15,66,117,105,108,116,105,110,73, - 109,112,111,114,116,101,114,122,144,77,101,116,97,32,112,97, - 116,104,32,105,109,112,111,114,116,32,102,111,114,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,115,46,10, - 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115, - 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115, - 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104, - 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101, - 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115, - 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97, - 115,115,46,10,10,32,32,32,32,122,8,98,117,105,108,116, - 45,105,110,99,1,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,67,0,0,0,115,34,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,100,2,124,0,106,3,155, - 2,100,3,116,4,106,5,155,0,100,4,157,5,83,0,41, - 6,250,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,81,66,117,105,108,116,105,110,73, - 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, - 101,112,114,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,122,8,60,109,111,100,117, - 108,101,32,122,2,32,40,122,2,41,62,78,41,6,114,101, - 0,0,0,114,102,0,0,0,114,103,0,0,0,114,8,0, - 0,0,114,175,0,0,0,114,151,0,0,0,169,1,114,110, - 0,0,0,32,114,5,0,0,0,114,114,0,0,0,223,2, - 0,0,115,8,0,0,0,6,7,2,1,4,255,22,2,114, - 17,0,0,0,122,27,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,109,111,100,117,108,101,95,114,101,112, - 114,78,99,4,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,115,42,0,0,0,124,2,100,0, - 117,1,114,6,100,0,83,0,116,0,160,1,124,1,161,1, - 114,19,116,2,124,1,124,0,124,0,106,3,100,1,141,3, - 83,0,100,0,83,0,169,2,78,114,150,0,0,0,41,4, - 114,65,0,0,0,90,10,105,115,95,98,117,105,108,116,105, - 110,114,104,0,0,0,114,151,0,0,0,169,4,218,3,99, - 108,115,114,90,0,0,0,218,4,112,97,116,104,218,6,116, - 97,114,103,101,116,32,32,32,32,114,5,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,234,2,0,0,115,10,0, - 0,0,8,2,4,1,10,1,16,1,4,2,114,17,0,0, - 0,122,25,66,117,105,108,116,105,110,73,109,112,111,114,116, - 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,67,0,0, - 0,115,42,0,0,0,116,0,160,1,100,1,116,2,161,2, - 1,0,124,0,160,3,124,1,124,2,161,2,125,3,124,3, - 100,2,117,1,114,19,124,3,106,4,83,0,100,2,83,0, - 41,3,122,175,70,105,110,100,32,116,104,101,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,32,32,32,32,73,102,32,39,112,97,116,104,39, - 32,105,115,32,101,118,101,114,32,115,112,101,99,105,102,105, - 101,100,32,116,104,101,110,32,116,104,101,32,115,101,97,114, - 99,104,32,105,115,32,99,111,110,115,105,100,101,114,101,100, - 32,97,32,102,97,105,108,117,114,101,46,10,10,32,32,32, - 32,32,32,32,32,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,122,106,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, - 41,5,114,101,0,0,0,114,102,0,0,0,114,103,0,0, - 0,114,183,0,0,0,114,122,0,0,0,41,4,114,180,0, - 0,0,114,90,0,0,0,114,181,0,0,0,114,109,0,0, - 0,32,32,32,32,114,5,0,0,0,218,11,102,105,110,100, - 95,109,111,100,117,108,101,243,2,0,0,115,10,0,0,0, - 6,9,2,2,4,254,12,3,18,1,114,17,0,0,0,122, - 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,46,0,0,0,124,0,106,0,116,1,106,2,118,1, - 114,17,116,3,100,1,160,4,124,0,106,0,161,1,124,0, - 106,0,100,2,141,2,130,1,116,5,116,6,106,7,124,0, - 131,2,83,0,41,4,122,24,67,114,101,97,116,101,32,97, + 0,0,115,82,0,0,0,100,1,125,1,116,0,124,0,106, + 1,100,2,131,2,114,15,124,0,106,1,160,2,124,0,161, + 1,125,1,110,10,116,0,124,0,106,1,100,3,131,2,114, + 25,116,3,100,4,131,1,130,1,124,1,100,1,117,0,114, + 34,116,4,124,0,106,5,131,1,125,1,116,6,124,0,124, + 1,131,2,1,0,124,1,83,0,41,5,122,43,67,114,101, + 97,116,101,32,97,32,109,111,100,117,108,101,32,98,97,115, + 101,100,32,111,110,32,116,104,101,32,112,114,111,118,105,100, + 101,100,32,115,112,101,99,46,78,218,13,99,114,101,97,116, + 101,95,109,111,100,117,108,101,218,11,101,120,101,99,95,109, + 111,100,117,108,101,122,66,108,111,97,100,101,114,115,32,116, + 104,97,116,32,100,101,102,105,110,101,32,101,120,101,99,95, + 109,111,100,117,108,101,40,41,32,109,117,115,116,32,97,108, + 115,111,32,100,101,102,105,110,101,32,99,114,101,97,116,101, + 95,109,111,100,117,108,101,40,41,41,7,114,10,0,0,0, + 114,122,0,0,0,114,162,0,0,0,114,88,0,0,0,114, + 21,0,0,0,114,20,0,0,0,114,161,0,0,0,169,2, + 114,109,0,0,0,114,110,0,0,0,32,32,114,5,0,0, + 0,218,16,109,111,100,117,108,101,95,102,114,111,109,95,115, + 112,101,99,52,2,0,0,115,18,0,0,0,4,3,12,1, + 14,3,12,1,8,1,8,2,10,1,10,1,4,1,114,17, + 0,0,0,114,165,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,100,0, + 0,0,124,0,106,0,100,1,117,0,114,7,100,2,110,2, + 124,0,106,0,125,1,124,0,106,1,100,1,117,0,114,32, + 124,0,106,2,100,1,117,0,114,25,100,3,160,3,124,1, + 161,1,83,0,100,4,160,3,124,1,124,0,106,2,161,2, + 83,0,124,0,106,4,114,42,100,5,160,3,124,1,124,0, + 106,1,161,2,83,0,100,6,160,3,124,0,106,0,124,0, + 106,1,161,2,83,0,41,7,122,38,82,101,116,117,114,110, + 32,116,104,101,32,114,101,112,114,32,116,111,32,117,115,101, + 32,102,111,114,32,116,104,101,32,109,111,100,117,108,101,46, + 78,114,115,0,0,0,114,116,0,0,0,114,117,0,0,0, + 114,118,0,0,0,250,18,60,109,111,100,117,108,101,32,123, + 33,114,125,32,40,123,125,41,62,41,5,114,20,0,0,0, + 114,126,0,0,0,114,122,0,0,0,114,51,0,0,0,114, + 136,0,0,0,41,2,114,109,0,0,0,114,20,0,0,0, + 32,32,114,5,0,0,0,114,119,0,0,0,69,2,0,0, + 115,16,0,0,0,20,3,10,1,10,1,10,1,14,2,6, + 2,14,1,16,2,114,17,0,0,0,114,119,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, + 67,0,0,0,115,32,1,0,0,124,0,106,0,125,2,116, + 1,124,2,131,1,53,0,1,0,116,2,106,3,160,4,124, + 2,161,1,124,1,117,1,114,27,100,1,160,5,124,2,161, + 1,125,3,116,6,124,3,124,2,100,2,141,2,130,1,9, + 0,124,0,106,7,100,3,117,0,114,53,124,0,106,8,100, + 3,117,0,114,45,116,6,100,4,124,0,106,0,100,2,141, + 2,130,1,116,9,124,0,124,1,100,5,100,6,141,3,1, + 0,110,40,116,9,124,0,124,1,100,5,100,6,141,3,1, + 0,116,10,124,0,106,7,100,7,131,2,115,87,116,11,124, + 0,106,7,131,1,155,0,100,8,157,2,125,3,116,12,160, + 13,124,3,116,14,161,2,1,0,124,0,106,7,160,15,124, + 2,161,1,1,0,110,6,124,0,106,7,160,16,124,1,161, + 1,1,0,116,2,106,3,160,17,124,0,106,0,161,1,125, + 1,124,1,116,2,106,3,124,0,106,0,60,0,110,16,35, + 0,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, + 1,116,2,106,3,124,0,106,0,60,0,119,0,37,0,9, + 0,100,3,4,0,4,0,131,3,1,0,124,1,83,0,35, + 0,49,0,115,136,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,124,1,83,0,41,9,122,70,69,120,101, + 99,117,116,101,32,116,104,101,32,115,112,101,99,39,115,32, + 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, + 32,105,110,32,97,110,32,101,120,105,115,116,105,110,103,32, + 109,111,100,117,108,101,39,115,32,110,97,109,101,115,112,97, + 99,101,46,122,30,109,111,100,117,108,101,32,123,33,114,125, + 32,110,111,116,32,105,110,32,115,121,115,46,109,111,100,117, + 108,101,115,114,19,0,0,0,78,250,14,109,105,115,115,105, + 110,103,32,108,111,97,100,101,114,84,114,156,0,0,0,114, + 163,0,0,0,250,55,46,101,120,101,99,95,109,111,100,117, + 108,101,40,41,32,110,111,116,32,102,111,117,110,100,59,32, + 102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32, + 108,111,97,100,95,109,111,100,117,108,101,40,41,41,18,114, + 20,0,0,0,114,58,0,0,0,114,18,0,0,0,114,105, + 0,0,0,114,39,0,0,0,114,51,0,0,0,114,88,0, + 0,0,114,122,0,0,0,114,129,0,0,0,114,161,0,0, + 0,114,10,0,0,0,114,6,0,0,0,114,101,0,0,0, + 114,102,0,0,0,218,13,73,109,112,111,114,116,87,97,114, + 110,105,110,103,218,11,108,111,97,100,95,109,111,100,117,108, + 101,114,163,0,0,0,218,3,112,111,112,41,4,114,109,0, + 0,0,114,110,0,0,0,114,20,0,0,0,114,108,0,0, + 0,32,32,32,32,114,5,0,0,0,114,106,0,0,0,86, + 2,0,0,115,50,0,0,0,6,2,10,1,16,1,10,1, + 12,1,2,1,10,1,10,1,14,1,16,2,14,2,12,1, + 16,1,12,2,14,1,12,2,14,4,14,1,2,128,14,255, + 18,1,10,233,4,24,22,128,4,0,115,41,0,0,0,135, + 20,66,3,3,156,65,1,65,43,2,193,29,14,66,3,3, + 193,43,15,65,58,9,193,58,1,66,3,3,194,3,4,66, + 7,11,194,8,3,66,7,11,114,106,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,22,1,0,0,9,0,124,0,106,0,160,1,124, + 0,106,2,161,1,1,0,110,25,35,0,1,0,1,0,1, + 0,124,0,106,2,116,3,106,4,118,0,114,32,116,3,106, + 4,160,5,124,0,106,2,161,1,125,1,124,1,116,3,106, + 4,124,0,106,2,60,0,130,0,37,0,116,3,106,4,160, + 5,124,0,106,2,161,1,125,1,124,1,116,3,106,4,124, + 0,106,2,60,0,116,6,124,1,100,1,100,0,131,3,100, + 0,117,0,114,71,9,0,124,0,106,0,124,1,95,7,110, + 10,35,0,4,0,116,8,121,138,1,0,1,0,1,0,89, + 0,110,1,37,0,116,6,124,1,100,2,100,0,131,3,100, + 0,117,0,114,109,9,0,124,1,106,9,124,1,95,10,116, + 11,124,1,100,3,131,2,115,98,124,0,106,2,160,12,100, + 4,161,1,100,5,25,0,124,1,95,10,110,10,35,0,4, + 0,116,8,121,137,1,0,1,0,1,0,89,0,110,1,37, + 0,116,6,124,1,100,6,100,0,131,3,100,0,117,0,114, + 134,9,0,124,0,124,1,95,13,124,1,83,0,35,0,4, + 0,116,8,121,136,1,0,1,0,1,0,89,0,124,1,83, + 0,37,0,124,1,83,0,119,0,119,0,119,0,41,7,78, + 114,112,0,0,0,114,158,0,0,0,114,154,0,0,0,114, + 141,0,0,0,114,26,0,0,0,114,113,0,0,0,41,14, + 114,122,0,0,0,114,170,0,0,0,114,20,0,0,0,114, + 18,0,0,0,114,105,0,0,0,114,171,0,0,0,114,12, + 0,0,0,114,112,0,0,0,114,2,0,0,0,114,8,0, + 0,0,114,158,0,0,0,114,10,0,0,0,114,142,0,0, + 0,114,113,0,0,0,114,164,0,0,0,32,32,114,5,0, + 0,0,218,25,95,108,111,97,100,95,98,97,99,107,119,97, + 114,100,95,99,111,109,112,97,116,105,98,108,101,116,2,0, + 0,115,80,0,0,0,2,3,16,1,2,128,6,1,12,1, + 14,1,12,1,2,1,2,128,14,3,12,1,16,1,2,1, + 10,1,2,128,12,1,4,1,2,128,16,1,2,1,8,4, + 10,1,18,1,4,128,12,1,4,1,2,128,16,1,2,1, + 6,1,4,3,2,128,12,254,2,1,4,1,2,128,4,0, + 2,254,2,251,2,246,115,59,0,0,0,129,7,9,0,137, + 24,33,7,184,4,61,0,189,7,65,6,7,193,16,18,65, + 35,0,193,35,7,65,44,7,193,54,3,65,59,0,193,59, + 7,66,5,7,194,8,1,66,5,7,194,9,1,65,44,7, + 194,10,1,65,6,7,114,172,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,11,0,0,0,67,0,0,0, + 115,248,0,0,0,124,0,106,0,100,0,117,1,114,29,116, + 1,124,0,106,0,100,1,131,2,115,29,116,2,124,0,106, + 0,131,1,155,0,100,2,157,2,125,1,116,3,160,4,124, + 1,116,5,161,2,1,0,116,6,124,0,131,1,83,0,116, + 7,124,0,131,1,125,2,100,3,124,0,95,8,9,0,124, + 2,116,9,106,10,124,0,106,11,60,0,9,0,124,0,106, + 0,100,0,117,0,114,62,124,0,106,12,100,0,117,0,114, + 61,116,13,100,4,124,0,106,11,100,5,141,2,130,1,110, + 6,124,0,106,0,160,14,124,2,161,1,1,0,110,22,35, + 0,1,0,1,0,1,0,9,0,116,9,106,10,124,0,106, + 11,61,0,130,0,35,0,4,0,116,15,121,123,1,0,1, + 0,1,0,89,0,130,0,37,0,37,0,116,9,106,10,160, + 16,124,0,106,11,161,1,125,2,124,2,116,9,106,10,124, + 0,106,11,60,0,116,17,100,6,124,0,106,11,124,0,106, + 0,131,3,1,0,100,7,124,0,95,8,124,2,83,0,35, + 0,100,7,124,0,95,8,119,0,37,0,119,0,41,8,78, + 114,163,0,0,0,114,168,0,0,0,84,114,167,0,0,0, + 114,19,0,0,0,122,18,105,109,112,111,114,116,32,123,33, + 114,125,32,35,32,123,33,114,125,70,41,18,114,122,0,0, + 0,114,10,0,0,0,114,6,0,0,0,114,101,0,0,0, + 114,102,0,0,0,114,169,0,0,0,114,172,0,0,0,114, + 165,0,0,0,90,13,95,105,110,105,116,105,97,108,105,122, + 105,110,103,114,18,0,0,0,114,105,0,0,0,114,20,0, + 0,0,114,129,0,0,0,114,88,0,0,0,114,163,0,0, + 0,114,71,0,0,0,114,171,0,0,0,114,84,0,0,0, + 41,3,114,109,0,0,0,114,108,0,0,0,114,110,0,0, + 0,32,32,32,114,5,0,0,0,218,14,95,108,111,97,100, + 95,117,110,108,111,99,107,101,100,152,2,0,0,115,66,0, + 0,0,10,2,12,2,16,1,12,2,8,1,8,2,6,5, + 2,1,12,1,2,1,10,1,10,1,14,1,2,255,12,4, + 4,128,6,1,2,1,10,1,2,3,2,128,12,254,2,1, + 2,1,4,128,14,5,12,1,16,1,6,2,4,2,2,128, + 10,254,2,245,115,64,0,0,0,165,6,65,53,0,172,24, + 65,5,0,193,4,1,65,53,0,193,5,4,65,26,7,193, + 10,5,65,16,6,193,15,1,65,26,7,193,16,7,65,25, + 13,193,23,3,65,26,7,193,26,22,65,53,0,193,53,5, + 65,58,7,193,59,1,65,25,13,114,173,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, + 0,0,0,115,58,0,0,0,116,0,124,0,106,1,131,1, + 53,0,1,0,116,2,124,0,131,1,2,0,100,1,4,0, + 4,0,131,3,1,0,83,0,35,0,49,0,115,21,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,100,1, + 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, + 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, + 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, + 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, + 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, + 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, + 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, + 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, + 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, + 100,117,108,101,115,44,32,116,104,97,116,32,101,120,105,115, + 116,105,110,103,32,109,111,100,117,108,101,32,103,101,116,115, + 10,32,32,32,32,99,108,111,98,98,101,114,101,100,46,10, + 10,32,32,32,32,78,41,3,114,58,0,0,0,114,20,0, + 0,0,114,173,0,0,0,169,1,114,109,0,0,0,32,114, + 5,0,0,0,114,107,0,0,0,197,2,0,0,115,10,0, + 0,0,12,9,6,1,14,255,22,128,4,0,115,12,0,0, + 0,133,4,16,3,144,4,20,11,149,3,20,11,114,107,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,64,0,0,0,115,140,0,0,0,101,0,90,1, + 100,0,90,2,100,1,90,3,100,2,90,4,101,5,100,3, + 100,4,132,0,131,1,90,6,101,7,100,20,100,6,100,7, + 132,1,131,1,90,8,101,7,100,21,100,8,100,9,132,1, + 131,1,90,9,101,5,100,10,100,11,132,0,131,1,90,10, + 101,5,100,12,100,13,132,0,131,1,90,11,101,7,101,12, + 100,14,100,15,132,0,131,1,131,1,90,13,101,7,101,12, + 100,16,100,17,132,0,131,1,131,1,90,14,101,7,101,12, + 100,18,100,19,132,0,131,1,131,1,90,15,101,7,101,16, + 131,1,90,17,100,5,83,0,41,22,218,15,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,122,144,77,101,116, + 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, + 114,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, + 101,115,46,10,10,32,32,32,32,65,108,108,32,109,101,116, + 104,111,100,115,32,97,114,101,32,101,105,116,104,101,114,32, + 99,108,97,115,115,32,111,114,32,115,116,97,116,105,99,32, + 109,101,116,104,111,100,115,32,116,111,32,97,118,111,105,100, + 32,116,104,101,32,110,101,101,100,32,116,111,10,32,32,32, + 32,105,110,115,116,97,110,116,105,97,116,101,32,116,104,101, + 32,99,108,97,115,115,46,10,10,32,32,32,32,122,8,98, + 117,105,108,116,45,105,110,99,1,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,67,0,0,0,115,34,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,124, + 0,106,3,155,2,100,3,116,4,106,5,155,0,100,4,157, + 5,83,0,41,6,250,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,81,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,46,109,111,100,117, + 108,101,95,114,101,112,114,40,41,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,32,97,110,100,32,115,108,97,116, + 101,100,32,102,111,114,32,114,101,109,111,118,97,108,32,105, + 110,32,80,121,116,104,111,110,32,51,46,49,50,122,8,60, + 109,111,100,117,108,101,32,122,2,32,40,122,2,41,62,78, + 41,6,114,101,0,0,0,114,102,0,0,0,114,103,0,0, + 0,114,8,0,0,0,114,175,0,0,0,114,151,0,0,0, + 169,1,114,110,0,0,0,32,114,5,0,0,0,114,114,0, + 0,0,223,2,0,0,115,8,0,0,0,6,7,2,1,4, + 255,22,2,114,17,0,0,0,122,27,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101, + 95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,67,0,0,0,115,42,0,0,0, + 124,2,100,0,117,1,114,6,100,0,83,0,116,0,160,1, + 124,1,161,1,114,19,116,2,124,1,124,0,124,0,106,3, + 100,1,141,3,83,0,100,0,83,0,169,2,78,114,150,0, + 0,0,41,4,114,65,0,0,0,90,10,105,115,95,98,117, + 105,108,116,105,110,114,104,0,0,0,114,151,0,0,0,169, + 4,218,3,99,108,115,114,90,0,0,0,218,4,112,97,116, + 104,218,6,116,97,114,103,101,116,32,32,32,32,114,5,0, + 0,0,218,9,102,105,110,100,95,115,112,101,99,234,2,0, + 0,115,10,0,0,0,8,2,4,1,10,1,16,1,4,2, + 114,17,0,0,0,122,25,66,117,105,108,116,105,110,73,109, + 112,111,114,116,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, + 125,3,124,3,100,2,117,1,114,19,124,3,106,4,83,0, + 100,2,83,0,41,3,122,175,70,105,110,100,32,116,104,101, 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 114,86,0,0,0,114,19,0,0,0,78,41,8,114,20,0, - 0,0,114,18,0,0,0,114,87,0,0,0,114,88,0,0, - 0,114,51,0,0,0,114,75,0,0,0,114,65,0,0,0, - 90,14,99,114,101,97,116,101,95,98,117,105,108,116,105,110, - 114,174,0,0,0,32,114,5,0,0,0,114,162,0,0,0, - 2,3,0,0,115,10,0,0,0,12,3,12,1,4,1,6, - 255,12,2,114,17,0,0,0,122,29,66,117,105,108,116,105, - 110,73,109,112,111,114,116,101,114,46,99,114,101,97,116,101, - 95,109,111,100,117,108,101,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, - 0,116,0,116,1,106,2,124,0,131,2,1,0,100,1,83, - 0,41,2,122,22,69,120,101,99,32,97,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,78,41,3,114,75, - 0,0,0,114,65,0,0,0,90,12,101,120,101,99,95,98, - 117,105,108,116,105,110,114,177,0,0,0,32,114,5,0,0, - 0,114,163,0,0,0,10,3,0,0,115,2,0,0,0,16, - 3,114,17,0,0,0,122,27,66,117,105,108,116,105,110,73, - 109,112,111,114,116,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, - 1,0,0,0,67,0,0,0,243,4,0,0,0,100,1,83, - 0,41,2,122,57,82,101,116,117,114,110,32,78,111,110,101, - 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,99,111,100,101,32,111,98,106,101,99,116,115,46,78,114, - 23,0,0,0,169,2,114,180,0,0,0,114,90,0,0,0, - 32,32,114,5,0,0,0,218,8,103,101,116,95,99,111,100, - 101,15,3,0,0,243,2,0,0,0,4,4,114,17,0,0, - 0,122,24,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,67,0,0,0, - 114,185,0,0,0,41,2,122,56,82,101,116,117,114,110,32, + 46,10,10,32,32,32,32,32,32,32,32,73,102,32,39,112, + 97,116,104,39,32,105,115,32,101,118,101,114,32,115,112,101, + 99,105,102,105,101,100,32,116,104,101,110,32,116,104,101,32, + 115,101,97,114,99,104,32,105,115,32,99,111,110,115,105,100, + 101,114,101,100,32,97,32,102,97,105,108,117,114,101,46,10, + 10,32,32,32,32,32,32,32,32,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,122,106,66,117,105,108,116,105,110, + 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, + 100,117,108,101,40,41,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, + 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, + 121,116,104,111,110,32,51,46,49,50,59,32,117,115,101,32, + 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, + 101,97,100,78,41,5,114,101,0,0,0,114,102,0,0,0, + 114,103,0,0,0,114,183,0,0,0,114,122,0,0,0,41, + 4,114,180,0,0,0,114,90,0,0,0,114,181,0,0,0, + 114,109,0,0,0,32,32,32,32,114,5,0,0,0,218,11, + 102,105,110,100,95,109,111,100,117,108,101,243,2,0,0,115, + 10,0,0,0,6,9,2,2,4,254,12,3,18,1,114,17, + 0,0,0,122,27,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,67,0,0,0,115,46,0,0,0,124,0,106,0,116,1, + 106,2,118,1,114,17,116,3,100,1,160,4,124,0,106,0, + 161,1,124,0,106,0,100,2,141,2,130,1,116,5,116,6, + 106,7,124,0,131,2,83,0,41,4,122,24,67,114,101,97, + 116,101,32,97,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,114,86,0,0,0,114,19,0,0,0,78,41, + 8,114,20,0,0,0,114,18,0,0,0,114,87,0,0,0, + 114,88,0,0,0,114,51,0,0,0,114,75,0,0,0,114, + 65,0,0,0,90,14,99,114,101,97,116,101,95,98,117,105, + 108,116,105,110,114,174,0,0,0,32,114,5,0,0,0,114, + 162,0,0,0,2,3,0,0,115,10,0,0,0,12,3,12, + 1,4,1,6,255,12,2,114,17,0,0,0,122,29,66,117, + 105,108,116,105,110,73,109,112,111,114,116,101,114,46,99,114, + 101,97,116,101,95,109,111,100,117,108,101,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 115,16,0,0,0,116,0,116,1,106,2,124,0,131,2,1, + 0,100,1,83,0,41,2,122,22,69,120,101,99,32,97,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,78, + 41,3,114,75,0,0,0,114,65,0,0,0,90,12,101,120, + 101,99,95,98,117,105,108,116,105,110,114,177,0,0,0,32, + 114,5,0,0,0,114,163,0,0,0,10,3,0,0,115,2, + 0,0,0,16,3,114,17,0,0,0,122,27,66,117,105,108, + 116,105,110,73,109,112,111,114,116,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,1,0,0,0,67,0,0,0,243,4,0,0, + 0,100,1,83,0,41,2,122,57,82,101,116,117,114,110,32, 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, - 104,97,118,101,32,115,111,117,114,99,101,32,99,111,100,101, - 46,78,114,23,0,0,0,114,186,0,0,0,32,32,114,5, - 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,21, - 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,67,0,0,0,114,185, - 0,0,0,41,3,122,52,82,101,116,117,114,110,32,70,97, - 108,115,101,32,97,115,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,115,32,97,114,101,32,110,101,118,101, - 114,32,112,97,99,107,97,103,101,115,46,70,78,114,23,0, - 0,0,114,186,0,0,0,32,32,114,5,0,0,0,114,128, - 0,0,0,27,3,0,0,114,188,0,0,0,114,17,0,0, + 104,97,118,101,32,99,111,100,101,32,111,98,106,101,99,116, + 115,46,78,114,23,0,0,0,169,2,114,180,0,0,0,114, + 90,0,0,0,32,32,114,5,0,0,0,218,8,103,101,116, + 95,99,111,100,101,15,3,0,0,243,2,0,0,0,4,4, + 114,17,0,0,0,122,24,66,117,105,108,116,105,110,73,109, + 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 67,0,0,0,114,185,0,0,0,41,2,122,56,82,101,116, + 117,114,110,32,78,111,110,101,32,97,115,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,115,32,100,111,32, + 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, + 99,111,100,101,46,78,114,23,0,0,0,114,186,0,0,0, + 32,32,114,5,0,0,0,218,10,103,101,116,95,115,111,117, + 114,99,101,21,3,0,0,114,188,0,0,0,114,17,0,0, 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,105,115,95,112,97,99,107,97,103,101,169,2,78, - 78,114,0,0,0,0,41,18,114,8,0,0,0,114,7,0, - 0,0,114,1,0,0,0,114,9,0,0,0,114,151,0,0, - 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, - 114,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, - 100,114,183,0,0,0,114,184,0,0,0,114,162,0,0,0, - 114,163,0,0,0,114,95,0,0,0,114,187,0,0,0,114, - 189,0,0,0,114,128,0,0,0,114,111,0,0,0,114,170, - 0,0,0,114,23,0,0,0,114,5,0,0,0,114,175,0, - 0,0,212,2,0,0,115,46,0,0,0,8,0,4,2,4, - 7,2,2,10,1,2,10,12,1,2,8,12,1,2,14,10, - 1,2,7,10,1,2,4,2,1,12,1,2,4,2,1,12, - 1,2,4,2,1,12,1,12,4,114,17,0,0,0,114,175, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,64,0,0,0,115,144,0,0,0,101,0,90, - 1,100,0,90,2,100,1,90,3,100,2,90,4,101,5,100, - 3,100,4,132,0,131,1,90,6,101,7,100,22,100,6,100, - 7,132,1,131,1,90,8,101,7,100,23,100,8,100,9,132, - 1,131,1,90,9,101,5,100,10,100,11,132,0,131,1,90, - 10,101,5,100,12,100,13,132,0,131,1,90,11,101,7,100, - 14,100,15,132,0,131,1,90,12,101,7,101,13,100,16,100, - 17,132,0,131,1,131,1,90,14,101,7,101,13,100,18,100, - 19,132,0,131,1,131,1,90,15,101,7,101,13,100,20,100, - 21,132,0,131,1,131,1,90,16,100,5,83,0,41,24,218, - 14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,122, - 142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, - 116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,109, - 101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,101, - 114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,105, - 99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,111, - 105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32, - 32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116, - 104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,90, - 6,102,114,111,122,101,110,99,1,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,160, - 3,124,0,106,4,116,5,106,6,161,2,83,0,41,4,114, - 176,0,0,0,122,80,70,114,111,122,101,110,73,109,112,111, - 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,114,166,0,0,0,78,41,7,114,101, - 0,0,0,114,102,0,0,0,114,103,0,0,0,114,51,0, - 0,0,114,8,0,0,0,114,193,0,0,0,114,151,0,0, - 0,41,1,218,1,109,32,114,5,0,0,0,114,114,0,0, - 0,47,3,0,0,115,8,0,0,0,6,7,2,1,4,255, - 16,2,114,17,0,0,0,122,26,70,114,111,122,101,110,73, - 109,112,111,114,116,101,114,46,109,111,100,117,108,101,95,114, - 101,112,114,78,99,4,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,67,0,0,0,115,30,0,0,0,116,0, - 160,1,124,1,161,1,114,13,116,2,124,1,124,0,124,0, - 106,3,100,1,141,3,83,0,100,0,83,0,114,178,0,0, - 0,41,4,114,65,0,0,0,114,98,0,0,0,114,104,0, - 0,0,114,151,0,0,0,114,179,0,0,0,32,32,32,32, - 114,5,0,0,0,114,183,0,0,0,58,3,0,0,115,6, - 0,0,0,10,2,16,1,4,2,114,17,0,0,0,122,24, - 70,114,111,122,101,110,73,109,112,111,114,116,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,67,0,0,0,115,30,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,116,3, - 160,4,124,1,161,1,114,13,124,0,83,0,100,2,83,0, - 41,3,122,93,70,105,110,100,32,97,32,102,114,111,122,101, - 110,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,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,122,105,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,40,41,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, - 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, - 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, - 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,78,41,5,114, - 101,0,0,0,114,102,0,0,0,114,103,0,0,0,114,65, - 0,0,0,114,98,0,0,0,41,3,114,180,0,0,0,114, - 90,0,0,0,114,181,0,0,0,32,32,32,114,5,0,0, - 0,114,184,0,0,0,65,3,0,0,115,8,0,0,0,6, - 7,2,2,4,254,18,3,114,17,0,0,0,122,26,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,67,0,0,0,114,185,0, - 0,0,41,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,23,0,0,0,114,174,0,0,0,32,114,5,0,0, - 0,114,162,0,0,0,77,3,0,0,115,2,0,0,0,4, - 0,114,17,0,0,0,122,28,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,99,114,101,97,116,101,95,109,111, - 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,64,0,0,0,124,0, - 106,0,106,1,125,1,116,2,160,3,124,1,161,1,115,18, - 116,4,100,1,160,5,124,1,161,1,124,1,100,2,141,2, - 130,1,116,6,116,2,106,7,124,1,131,2,125,2,116,8, - 124,2,124,0,106,9,131,2,1,0,100,0,83,0,114,97, - 0,0,0,41,10,114,113,0,0,0,114,20,0,0,0,114, - 65,0,0,0,114,98,0,0,0,114,88,0,0,0,114,51, - 0,0,0,114,75,0,0,0,218,17,103,101,116,95,102,114, - 111,122,101,110,95,111,98,106,101,99,116,218,4,101,120,101, - 99,114,13,0,0,0,41,3,114,110,0,0,0,114,20,0, - 0,0,218,4,99,111,100,101,32,32,32,114,5,0,0,0, - 114,163,0,0,0,81,3,0,0,115,14,0,0,0,8,2, - 10,1,10,1,2,1,6,255,12,2,16,1,114,17,0,0, + 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,1,0,0,0,67,0, + 0,0,114,185,0,0,0,41,3,122,52,82,101,116,117,114, + 110,32,70,97,108,115,101,32,97,115,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,115,32,97,114,101,32, + 110,101,118,101,114,32,112,97,99,107,97,103,101,115,46,70, + 78,114,23,0,0,0,114,186,0,0,0,32,32,114,5,0, + 0,0,114,128,0,0,0,27,3,0,0,114,188,0,0,0, + 114,17,0,0,0,122,26,66,117,105,108,116,105,110,73,109, + 112,111,114,116,101,114,46,105,115,95,112,97,99,107,97,103, + 101,169,2,78,78,114,0,0,0,0,41,18,114,8,0,0, + 0,114,7,0,0,0,114,1,0,0,0,114,9,0,0,0, + 114,151,0,0,0,218,12,115,116,97,116,105,99,109,101,116, + 104,111,100,114,114,0,0,0,218,11,99,108,97,115,115,109, + 101,116,104,111,100,114,183,0,0,0,114,184,0,0,0,114, + 162,0,0,0,114,163,0,0,0,114,95,0,0,0,114,187, + 0,0,0,114,189,0,0,0,114,128,0,0,0,114,111,0, + 0,0,114,170,0,0,0,114,23,0,0,0,114,5,0,0, + 0,114,175,0,0,0,212,2,0,0,115,46,0,0,0,8, + 0,4,2,4,7,2,2,10,1,2,10,12,1,2,8,12, + 1,2,14,10,1,2,7,10,1,2,4,2,1,12,1,2, + 4,2,1,12,1,2,4,2,1,12,1,12,4,114,17,0, + 0,0,114,175,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,64,0,0,0,115,144,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, + 4,101,5,100,3,100,4,132,0,131,1,90,6,101,7,100, + 22,100,6,100,7,132,1,131,1,90,8,101,7,100,23,100, + 8,100,9,132,1,131,1,90,9,101,5,100,10,100,11,132, + 0,131,1,90,10,101,5,100,12,100,13,132,0,131,1,90, + 11,101,7,100,14,100,15,132,0,131,1,90,12,101,7,101, + 13,100,16,100,17,132,0,131,1,131,1,90,14,101,7,101, + 13,100,18,100,19,132,0,131,1,131,1,90,15,101,7,101, + 13,100,20,100,21,132,0,131,1,131,1,90,16,100,5,83, + 0,41,24,218,14,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,122,142,77,101,116,97,32,112,97,116,104,32,105, + 109,112,111,114,116,32,102,111,114,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,65, + 108,108,32,109,101,116,104,111,100,115,32,97,114,101,32,101, + 105,116,104,101,114,32,99,108,97,115,115,32,111,114,32,115, + 116,97,116,105,99,32,109,101,116,104,111,100,115,32,116,111, + 32,97,118,111,105,100,32,116,104,101,32,110,101,101,100,32, + 116,111,10,32,32,32,32,105,110,115,116,97,110,116,105,97, + 116,101,32,116,104,101,32,99,108,97,115,115,46,10,10,32, + 32,32,32,90,6,102,114,111,122,101,110,99,1,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,28,0,0,0,116,0,160,1,100,1,116,2,161,2,1, + 0,100,2,160,3,124,0,106,4,116,5,106,6,161,2,83, + 0,41,4,114,176,0,0,0,122,80,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,46,109,111,100,117,108,101,95, + 114,101,112,114,40,41,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, + 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, + 121,116,104,111,110,32,51,46,49,50,114,166,0,0,0,78, + 41,7,114,101,0,0,0,114,102,0,0,0,114,103,0,0, + 0,114,51,0,0,0,114,8,0,0,0,114,193,0,0,0, + 114,151,0,0,0,41,1,218,1,109,32,114,5,0,0,0, + 114,114,0,0,0,47,3,0,0,115,8,0,0,0,6,7, + 2,1,4,255,16,2,114,17,0,0,0,122,26,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,109,111,100,117, + 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,30,0, + 0,0,116,0,160,1,124,1,161,1,114,13,116,2,124,1, + 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, + 114,178,0,0,0,41,4,114,65,0,0,0,114,98,0,0, + 0,114,104,0,0,0,114,151,0,0,0,114,179,0,0,0, + 32,32,32,32,114,5,0,0,0,114,183,0,0,0,58,3, + 0,0,115,6,0,0,0,10,2,16,1,4,2,114,17,0, + 0,0,122,24,70,114,111,122,101,110,73,109,112,111,114,116, + 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,67,0,0, + 0,115,30,0,0,0,116,0,160,1,100,1,116,2,161,2, + 1,0,116,3,160,4,124,1,161,1,114,13,124,0,83,0, + 100,2,83,0,41,3,122,93,70,105,110,100,32,97,32,102, + 114,111,122,101,110,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,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,122,105,70,114,111,122,101,110,73,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 78,41,5,114,101,0,0,0,114,102,0,0,0,114,103,0, + 0,0,114,65,0,0,0,114,98,0,0,0,41,3,114,180, + 0,0,0,114,90,0,0,0,114,181,0,0,0,32,32,32, + 114,5,0,0,0,114,184,0,0,0,65,3,0,0,115,8, + 0,0,0,6,7,2,2,4,254,18,3,114,17,0,0,0, + 122,26,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,67,0,0, + 0,114,185,0,0,0,41,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,23,0,0,0,114,174,0,0,0,32, + 114,5,0,0,0,114,162,0,0,0,77,3,0,0,115,2, + 0,0,0,4,0,114,17,0,0,0,122,28,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,46,99,114,101,97,116, + 101,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,64,0, + 0,0,124,0,106,0,106,1,125,1,116,2,160,3,124,1, + 161,1,115,18,116,4,100,1,160,5,124,1,161,1,124,1, + 100,2,141,2,130,1,116,6,116,2,106,7,124,1,131,2, + 125,2,116,8,124,2,124,0,106,9,131,2,1,0,100,0, + 83,0,114,97,0,0,0,41,10,114,113,0,0,0,114,20, + 0,0,0,114,65,0,0,0,114,98,0,0,0,114,88,0, + 0,0,114,51,0,0,0,114,75,0,0,0,218,17,103,101, + 116,95,102,114,111,122,101,110,95,111,98,106,101,99,116,218, + 4,101,120,101,99,114,13,0,0,0,41,3,114,110,0,0, + 0,114,20,0,0,0,218,4,99,111,100,101,32,32,32,114, + 5,0,0,0,114,163,0,0,0,81,3,0,0,115,14,0, + 0,0,8,2,10,1,10,1,2,1,6,255,12,2,16,1, + 114,17,0,0,0,122,26,70,114,111,122,101,110,73,109,112, + 111,114,116,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,3,0, + 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,124, + 1,131,2,83,0,41,2,122,95,76,111,97,100,32,97,32, + 102,114,111,122,101,110,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,78,41,1,114,111,0,0,0, + 114,186,0,0,0,32,32,114,5,0,0,0,114,170,0,0, + 0,90,3,0,0,115,2,0,0,0,10,8,114,17,0,0, 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,101,120,101,99,95,109,111,100,117,108,101,99,2,0, + 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,3,0,0,0,67,0, - 0,0,115,10,0,0,0,116,0,124,0,124,1,131,2,83, - 0,41,2,122,95,76,111,97,100,32,97,32,102,114,111,122, - 101,110,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,78,41,1,114,111,0,0,0,114,186,0,0, - 0,32,32,114,5,0,0,0,114,170,0,0,0,90,3,0, - 0,115,2,0,0,0,10,8,114,17,0,0,0,122,26,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,46,108,111, - 97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,243,10, - 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,122, - 45,82,101,116,117,114,110,32,116,104,101,32,99,111,100,101, - 32,111,98,106,101,99,116,32,102,111,114,32,116,104,101,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,46,78,41, - 2,114,65,0,0,0,114,195,0,0,0,114,186,0,0,0, - 32,32,114,5,0,0,0,114,187,0,0,0,100,3,0,0, - 243,2,0,0,0,10,4,114,17,0,0,0,122,23,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,103,101,116, - 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,67,0,0,0,114,185,0,0,0,41, - 2,122,54,82,101,116,117,114,110,32,78,111,110,101,32,97, - 115,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115, - 32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,117, - 114,99,101,32,99,111,100,101,46,78,114,23,0,0,0,114, - 186,0,0,0,32,32,114,5,0,0,0,114,189,0,0,0, - 106,3,0,0,114,188,0,0,0,114,17,0,0,0,122,25, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,114,198, - 0,0,0,41,2,122,46,82,101,116,117,114,110,32,84,114, - 117,101,32,105,102,32,116,104,101,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,32,105,115,32,97,32,112,97,99, - 107,97,103,101,46,78,41,2,114,65,0,0,0,90,17,105, - 115,95,102,114,111,122,101,110,95,112,97,99,107,97,103,101, - 114,186,0,0,0,32,32,114,5,0,0,0,114,128,0,0, - 0,112,3,0,0,114,199,0,0,0,114,17,0,0,0,122, - 25,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46, - 105,115,95,112,97,99,107,97,103,101,114,190,0,0,0,114, - 0,0,0,0,41,17,114,8,0,0,0,114,7,0,0,0, - 114,1,0,0,0,114,9,0,0,0,114,151,0,0,0,114, - 191,0,0,0,114,114,0,0,0,114,192,0,0,0,114,183, - 0,0,0,114,184,0,0,0,114,162,0,0,0,114,163,0, - 0,0,114,170,0,0,0,114,100,0,0,0,114,187,0,0, - 0,114,189,0,0,0,114,128,0,0,0,114,23,0,0,0, - 114,5,0,0,0,114,193,0,0,0,36,3,0,0,115,48, - 0,0,0,8,0,4,2,4,7,2,2,10,1,2,10,12, - 1,2,6,12,1,2,11,10,1,2,3,10,1,2,8,10, - 1,2,9,2,1,12,1,2,4,2,1,12,1,2,4,2, - 1,16,1,114,17,0,0,0,114,193,0,0,0,99,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,83,0,41,7,218,18,95,73,109,112,111, - 114,116,76,111,99,107,67,111,110,116,101,120,116,122,36,67, - 111,110,116,101,120,116,32,109,97,110,97,103,101,114,32,102, - 111,114,32,116,104,101,32,105,109,112,111,114,116,32,108,111, - 99,107,46,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,67,0,0,0,243,12,0,0,0,116,0,160, - 1,161,0,1,0,100,1,83,0,41,2,122,24,65,99,113, - 117,105,114,101,32,116,104,101,32,105,109,112,111,114,116,32, - 108,111,99,107,46,78,41,2,114,65,0,0,0,114,66,0, - 0,0,114,53,0,0,0,32,114,5,0,0,0,114,62,0, - 0,0,125,3,0,0,243,2,0,0,0,12,2,114,17,0, - 0,0,122,28,95,73,109,112,111,114,116,76,111,99,107,67, - 111,110,116,101,120,116,46,95,95,101,110,116,101,114,95,95, - 99,4,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,67,0,0,0,114,201,0,0,0,41,2,122,60,82,101, - 108,101,97,115,101,32,116,104,101,32,105,109,112,111,114,116, - 32,108,111,99,107,32,114,101,103,97,114,100,108,101,115,115, - 32,111,102,32,97,110,121,32,114,97,105,115,101,100,32,101, - 120,99,101,112,116,105,111,110,115,46,78,41,2,114,65,0, - 0,0,114,68,0,0,0,41,4,114,34,0,0,0,218,8, - 101,120,99,95,116,121,112,101,218,9,101,120,99,95,118,97, - 108,117,101,218,13,101,120,99,95,116,114,97,99,101,98,97, - 99,107,32,32,32,32,114,5,0,0,0,114,64,0,0,0, - 129,3,0,0,114,202,0,0,0,114,17,0,0,0,122,27, - 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, - 120,116,46,95,95,101,120,105,116,95,95,78,41,6,114,8, - 0,0,0,114,7,0,0,0,114,1,0,0,0,114,9,0, - 0,0,114,62,0,0,0,114,64,0,0,0,114,23,0,0, - 0,114,5,0,0,0,114,200,0,0,0,121,3,0,0,115, - 8,0,0,0,8,0,4,2,8,2,12,4,114,17,0,0, - 0,114,200,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,67,0,0,0,115,64,0,0,0, - 124,1,160,0,100,1,124,2,100,2,24,0,161,2,125,3, - 116,1,124,3,131,1,124,2,107,0,114,18,116,2,100,3, - 131,1,130,1,124,3,100,4,25,0,125,4,124,0,114,30, - 100,5,160,3,124,4,124,0,161,2,83,0,124,4,83,0, - 41,7,122,50,82,101,115,111,108,118,101,32,97,32,114,101, - 108,97,116,105,118,101,32,109,111,100,117,108,101,32,110,97, - 109,101,32,116,111,32,97,110,32,97,98,115,111,108,117,116, - 101,32,111,110,101,46,114,141,0,0,0,114,43,0,0,0, - 122,50,97,116,116,101,109,112,116,101,100,32,114,101,108,97, - 116,105,118,101,32,105,109,112,111,114,116,32,98,101,121,111, - 110,100,32,116,111,112,45,108,101,118,101,108,32,112,97,99, - 107,97,103,101,114,26,0,0,0,250,5,123,125,46,123,125, - 78,41,4,218,6,114,115,112,108,105,116,218,3,108,101,110, - 114,88,0,0,0,114,51,0,0,0,41,5,114,20,0,0, - 0,218,7,112,97,99,107,97,103,101,218,5,108,101,118,101, - 108,90,4,98,105,116,115,90,4,98,97,115,101,32,32,32, - 32,32,114,5,0,0,0,218,13,95,114,101,115,111,108,118, - 101,95,110,97,109,101,134,3,0,0,115,10,0,0,0,16, - 2,12,1,8,1,8,1,20,1,114,17,0,0,0,114,211, - 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,60,0,0,0,116,0,124, - 0,131,1,155,0,100,1,157,2,125,3,116,1,160,2,124, - 3,116,3,161,2,1,0,124,0,160,4,124,1,124,2,161, - 2,125,4,124,4,100,0,117,0,114,25,100,0,83,0,116, - 5,124,1,124,4,131,2,83,0,41,2,78,122,53,46,102, - 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, - 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, - 101,40,41,41,6,114,6,0,0,0,114,101,0,0,0,114, - 102,0,0,0,114,169,0,0,0,114,184,0,0,0,114,104, - 0,0,0,41,5,218,6,102,105,110,100,101,114,114,20,0, - 0,0,114,181,0,0,0,114,108,0,0,0,114,122,0,0, - 0,32,32,32,32,32,114,5,0,0,0,218,17,95,102,105, - 110,100,95,115,112,101,99,95,108,101,103,97,99,121,143,3, - 0,0,115,12,0,0,0,14,1,12,2,12,1,8,1,4, - 1,10,1,114,17,0,0,0,114,213,0,0,0,99,3,0, - 0,0,0,0,0,0,0,0,0,0,10,0,0,0,67,0, - 0,0,115,30,1,0,0,116,0,106,1,125,3,124,3,100, - 1,117,0,114,11,116,2,100,2,131,1,130,1,124,3,115, - 19,116,3,160,4,100,3,116,5,161,2,1,0,124,0,116, - 0,106,6,118,0,125,4,124,3,68,0,93,112,125,5,116, - 7,131,0,53,0,1,0,9,0,124,5,106,8,125,6,110, - 27,35,0,4,0,116,9,121,142,1,0,1,0,1,0,116, - 10,124,5,124,0,124,1,131,3,125,7,124,7,100,1,117, - 0,114,61,89,0,100,1,4,0,4,0,131,3,1,0,113, - 26,89,0,110,7,37,0,124,6,124,0,124,1,124,2,131, - 3,125,7,100,1,4,0,4,0,131,3,1,0,110,11,35, - 0,49,0,115,81,119,4,37,0,1,0,1,0,1,0,89, - 0,1,0,1,0,124,7,100,1,117,1,114,138,124,4,115, - 134,124,0,116,0,106,6,118,0,114,134,116,0,106,6,124, - 0,25,0,125,8,9,0,124,8,106,11,125,9,110,14,35, - 0,4,0,116,9,121,141,1,0,1,0,1,0,124,7,6, - 0,89,0,2,0,1,0,83,0,37,0,124,9,100,1,117, - 0,114,130,124,7,2,0,1,0,83,0,124,9,2,0,1, - 0,83,0,124,7,2,0,1,0,83,0,113,26,100,1,83, - 0,119,0,119,0,41,4,122,21,70,105,110,100,32,97,32, - 109,111,100,117,108,101,39,115,32,115,112,101,99,46,78,122, - 53,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, - 115,32,78,111,110,101,44,32,80,121,116,104,111,110,32,105, - 115,32,108,105,107,101,108,121,32,115,104,117,116,116,105,110, - 103,32,100,111,119,110,122,22,115,121,115,46,109,101,116,97, - 95,112,97,116,104,32,105,115,32,101,109,112,116,121,41,12, - 114,18,0,0,0,218,9,109,101,116,97,95,112,97,116,104, - 114,88,0,0,0,114,101,0,0,0,114,102,0,0,0,114, - 169,0,0,0,114,105,0,0,0,114,200,0,0,0,114,183, - 0,0,0,114,2,0,0,0,114,213,0,0,0,114,113,0, - 0,0,41,10,114,20,0,0,0,114,181,0,0,0,114,182, - 0,0,0,114,214,0,0,0,90,9,105,115,95,114,101,108, - 111,97,100,114,212,0,0,0,114,183,0,0,0,114,109,0, - 0,0,114,110,0,0,0,114,113,0,0,0,32,32,32,32, - 32,32,32,32,32,32,114,5,0,0,0,218,10,95,102,105, - 110,100,95,115,112,101,99,153,3,0,0,115,76,0,0,0, - 6,2,8,1,8,2,4,3,12,1,10,5,8,1,8,1, - 2,1,8,1,2,128,12,1,12,1,8,1,2,1,12,250, - 4,5,2,128,12,3,12,248,22,128,8,9,14,2,10,1, - 2,1,8,1,2,128,12,1,12,4,2,128,8,2,8,1, - 8,2,8,2,2,239,4,19,2,243,2,244,115,63,0,0, - 0,159,1,65,12,5,161,3,37,4,164,1,65,12,5,165, - 17,63,11,182,1,65,12,5,189,9,65,12,5,193,12,4, - 65,16,13,193,17,3,65,16,13,193,40,3,65,44,2,193, - 44,9,65,57,9,194,13,1,65,57,9,194,14,1,63,11, - 114,215,0,0,0,99,3,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,67,0,0,0,115,110,0,0,0,116, - 0,124,0,116,1,131,2,115,14,116,2,100,1,160,3,116, - 4,124,0,131,1,161,1,131,1,130,1,124,2,100,2,107, - 0,114,22,116,5,100,3,131,1,130,1,124,2,100,2,107, - 4,114,41,116,0,124,1,116,1,131,2,115,35,116,2,100, - 4,131,1,130,1,124,1,115,41,116,6,100,5,131,1,130, - 1,124,0,115,53,124,2,100,2,107,2,114,51,116,5,100, - 6,131,1,130,1,100,7,83,0,100,7,83,0,41,8,122, - 28,86,101,114,105,102,121,32,97,114,103,117,109,101,110,116, - 115,32,97,114,101,32,34,115,97,110,101,34,46,122,31,109, - 111,100,117,108,101,32,110,97,109,101,32,109,117,115,116,32, - 98,101,32,115,116,114,44,32,110,111,116,32,123,125,114,26, - 0,0,0,122,18,108,101,118,101,108,32,109,117,115,116,32, - 98,101,32,62,61,32,48,122,31,95,95,112,97,99,107,97, - 103,101,95,95,32,110,111,116,32,115,101,116,32,116,111,32, - 97,32,115,116,114,105,110,103,122,54,97,116,116,101,109,112, - 116,101,100,32,114,101,108,97,116,105,118,101,32,105,109,112, - 111,114,116,32,119,105,116,104,32,110,111,32,107,110,111,119, - 110,32,112,97,114,101,110,116,32,112,97,99,107,97,103,101, - 122,17,69,109,112,116,121,32,109,111,100,117,108,101,32,110, - 97,109,101,78,41,7,218,10,105,115,105,110,115,116,97,110, - 99,101,218,3,115,116,114,218,9,84,121,112,101,69,114,114, - 111,114,114,51,0,0,0,114,3,0,0,0,218,10,86,97, - 108,117,101,69,114,114,111,114,114,88,0,0,0,169,3,114, - 20,0,0,0,114,209,0,0,0,114,210,0,0,0,32,32, - 32,114,5,0,0,0,218,13,95,115,97,110,105,116,121,95, - 99,104,101,99,107,200,3,0,0,115,24,0,0,0,10,2, - 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, - 12,2,8,1,8,255,114,17,0,0,0,114,221,0,0,0, - 122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101, - 100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0, - 0,0,0,0,0,8,0,0,0,67,0,0,0,115,20,1, - 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, - 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, - 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, - 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, - 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, - 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, - 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, - 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, - 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, - 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, - 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, - 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, - 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, - 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, - 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, - 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, - 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, - 83,0,119,0,119,0,41,8,78,114,141,0,0,0,114,26, - 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, - 111,116,32,97,32,112,97,99,107,97,103,101,114,19,0,0, - 0,233,2,0,0,0,122,27,67,97,110,110,111,116,32,115, - 101,116,32,97,110,32,97,116,116,114,105,98,117,116,101,32, - 111,110,32,122,18,32,102,111,114,32,99,104,105,108,100,32, - 109,111,100,117,108,101,32,41,15,114,142,0,0,0,114,18, - 0,0,0,114,105,0,0,0,114,75,0,0,0,114,154,0, - 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, - 71,114,51,0,0,0,218,19,77,111,100,117,108,101,78,111, - 116,70,111,117,110,100,69,114,114,111,114,114,215,0,0,0, - 114,173,0,0,0,114,11,0,0,0,114,101,0,0,0,114, - 102,0,0,0,114,169,0,0,0,41,9,114,20,0,0,0, - 218,7,105,109,112,111,114,116,95,114,181,0,0,0,114,143, - 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, - 108,101,114,108,0,0,0,114,109,0,0,0,114,110,0,0, - 0,90,5,99,104,105,108,100,32,32,32,32,32,32,32,32, - 32,114,5,0,0,0,218,23,95,102,105,110,100,95,97,110, - 100,95,108,111,97,100,95,117,110,108,111,99,107,101,100,219, - 3,0,0,115,68,0,0,0,4,1,14,1,4,1,10,1, - 10,1,10,2,10,1,10,1,2,1,8,1,2,128,12,1, - 16,1,14,1,2,128,10,1,8,1,18,1,8,2,4,1, - 10,2,14,1,2,1,12,1,4,4,2,128,12,253,16,1, - 14,1,4,1,2,128,4,0,2,253,2,242,115,31,0,0, - 0,165,3,41,0,169,22,63,7,193,37,6,65,45,0,193, - 45,21,66,5,7,194,8,1,66,5,7,194,9,1,63,7, - 114,226,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,9,0,0,0,67,0,0,0,115,132,0,0,0,116, - 0,124,0,131,1,53,0,1,0,116,1,106,2,160,3,124, - 0,116,4,161,2,125,2,124,2,116,4,117,0,114,27,116, - 5,124,0,124,1,131,2,2,0,100,1,4,0,4,0,131, - 3,1,0,83,0,9,0,100,1,4,0,4,0,131,3,1, - 0,110,11,35,0,49,0,115,39,119,4,37,0,1,0,1, - 0,1,0,89,0,1,0,1,0,124,2,100,1,117,0,114, - 60,100,2,160,6,124,0,161,1,125,3,116,7,124,3,124, - 0,100,3,141,2,130,1,116,8,124,0,131,1,1,0,124, - 2,83,0,41,4,122,25,70,105,110,100,32,97,110,100,32, - 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,46, - 78,122,40,105,109,112,111,114,116,32,111,102,32,123,125,32, - 104,97,108,116,101,100,59,32,78,111,110,101,32,105,110,32, - 115,121,115,46,109,111,100,117,108,101,115,114,19,0,0,0, - 41,9,114,58,0,0,0,114,18,0,0,0,114,105,0,0, - 0,114,39,0,0,0,218,14,95,78,69,69,68,83,95,76, - 79,65,68,73,78,71,114,226,0,0,0,114,51,0,0,0, - 114,224,0,0,0,114,73,0,0,0,41,4,114,20,0,0, - 0,114,225,0,0,0,114,110,0,0,0,114,83,0,0,0, - 32,32,32,32,114,5,0,0,0,218,14,95,102,105,110,100, - 95,97,110,100,95,108,111,97,100,254,3,0,0,115,30,0, - 0,0,10,2,14,1,8,1,8,1,14,253,2,2,12,254, - 22,128,8,5,2,1,6,1,2,255,12,2,8,2,4,1, - 115,12,0,0,0,132,16,34,3,162,4,38,11,167,3,38, - 11,114,228,0,0,0,114,26,0,0,0,99,3,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, - 115,42,0,0,0,116,0,124,0,124,1,124,2,131,3,1, - 0,124,2,100,1,107,4,114,16,116,1,124,0,124,1,124, - 2,131,3,125,0,116,2,124,0,116,3,131,2,83,0,41, - 3,97,50,1,0,0,73,109,112,111,114,116,32,97,110,100, - 32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,117, - 108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,32, - 110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,103, - 101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,32, - 32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,111, - 109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,108, - 32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,32, - 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, - 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,103, - 114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,100, - 101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,117, - 110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,32, - 98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,109, - 111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,111, - 114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,117, - 100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,97, - 99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,116, - 104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,111, - 116,46,10,10,32,32,32,32,114,26,0,0,0,78,41,4, - 114,221,0,0,0,114,211,0,0,0,114,228,0,0,0,218, - 11,95,103,99,100,95,105,109,112,111,114,116,114,220,0,0, - 0,32,32,32,114,5,0,0,0,114,229,0,0,0,14,4, - 0,0,115,8,0,0,0,12,9,8,1,12,1,10,1,114, - 17,0,0,0,114,229,0,0,0,169,1,218,9,114,101,99, - 117,114,115,105,118,101,99,3,0,0,0,0,0,0,0,1, - 0,0,0,9,0,0,0,67,0,0,0,115,216,0,0,0, - 124,1,68,0,93,102,125,4,116,0,124,4,116,1,131,2, - 115,32,124,3,114,17,124,0,106,2,100,1,23,0,125,5, - 110,2,100,2,125,5,116,3,100,3,124,5,155,0,100,4, - 116,4,124,4,131,1,106,2,155,0,157,4,131,1,130,1, - 124,4,100,5,107,2,114,53,124,3,115,52,116,5,124,0, - 100,6,131,2,114,52,116,6,124,0,124,0,106,7,124,2, - 100,7,100,8,141,4,1,0,113,2,116,5,124,0,124,4, - 131,2,115,104,100,9,160,8,124,0,106,2,124,4,161,2, - 125,6,9,0,116,9,124,2,124,6,131,2,1,0,113,2, - 35,0,4,0,116,10,121,107,1,0,125,7,1,0,124,7, - 106,11,124,6,107,2,114,98,116,12,106,13,160,14,124,6, - 116,15,161,2,100,10,117,1,114,98,89,0,100,10,125,7, - 126,7,113,2,130,0,100,10,125,7,126,7,119,1,37,0, - 113,2,124,0,83,0,119,0,41,11,122,238,70,105,103,117, - 114,101,32,111,117,116,32,119,104,97,116,32,95,95,105,109, - 112,111,114,116,95,95,32,115,104,111,117,108,100,32,114,101, - 116,117,114,110,46,10,10,32,32,32,32,84,104,101,32,105, - 109,112,111,114,116,95,32,112,97,114,97,109,101,116,101,114, - 32,105,115,32,97,32,99,97,108,108,97,98,108,101,32,119, - 104,105,99,104,32,116,97,107,101,115,32,116,104,101,32,110, - 97,109,101,32,111,102,32,109,111,100,117,108,101,32,116,111, - 10,32,32,32,32,105,109,112,111,114,116,46,32,73,116,32, - 105,115,32,114,101,113,117,105,114,101,100,32,116,111,32,100, - 101,99,111,117,112,108,101,32,116,104,101,32,102,117,110,99, - 116,105,111,110,32,102,114,111,109,32,97,115,115,117,109,105, - 110,103,32,105,109,112,111,114,116,108,105,98,39,115,10,32, - 32,32,32,105,109,112,111,114,116,32,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,32,105,115,32,100,101,115,105, - 114,101,100,46,10,10,32,32,32,32,122,8,46,95,95,97, - 108,108,95,95,122,13,96,96,102,114,111,109,32,108,105,115, - 116,39,39,122,8,73,116,101,109,32,105,110,32,122,18,32, - 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, - 32,250,1,42,218,7,95,95,97,108,108,95,95,84,114,230, - 0,0,0,114,206,0,0,0,78,41,16,114,216,0,0,0, - 114,217,0,0,0,114,8,0,0,0,114,218,0,0,0,114, - 3,0,0,0,114,10,0,0,0,218,16,95,104,97,110,100, - 108,101,95,102,114,111,109,108,105,115,116,114,233,0,0,0, - 114,51,0,0,0,114,75,0,0,0,114,224,0,0,0,114, - 20,0,0,0,114,18,0,0,0,114,105,0,0,0,114,39, - 0,0,0,114,227,0,0,0,41,8,114,110,0,0,0,218, - 8,102,114,111,109,108,105,115,116,114,225,0,0,0,114,231, - 0,0,0,218,1,120,90,5,119,104,101,114,101,90,9,102, - 114,111,109,95,110,97,109,101,90,3,101,120,99,32,32,32, - 32,32,32,32,32,114,5,0,0,0,114,234,0,0,0,29, - 4,0,0,115,58,0,0,0,8,10,10,1,4,1,12,1, - 4,2,10,1,8,1,8,255,8,2,14,1,10,1,2,1, - 6,255,2,128,10,2,14,1,2,1,12,1,2,128,12,1, - 10,4,16,1,2,255,10,2,2,1,10,128,2,245,4,12, - 2,248,115,36,0,0,0,193,2,5,65,8,2,193,8,7, - 65,39,9,193,15,14,65,35,9,193,34,1,65,35,9,193, - 35,4,65,39,9,193,43,1,65,39,9,114,234,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0, - 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, - 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, - 100,3,117,1,114,41,124,2,100,3,117,1,114,39,124,1, - 124,2,106,1,107,3,114,39,116,2,160,3,100,4,124,1, - 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, - 100,7,100,8,166,3,1,0,124,1,83,0,124,2,100,3, - 117,1,114,48,124,2,106,1,83,0,116,2,160,3,100,9, - 116,4,100,7,100,8,166,3,1,0,124,0,100,10,25,0, - 125,1,100,11,124,0,118,1,114,71,124,1,160,5,100,12, - 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, - 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, - 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, - 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, - 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, - 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, - 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, - 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, - 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, - 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, - 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, - 46,10,10,32,32,32,32,114,158,0,0,0,114,113,0,0, - 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, - 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, - 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, - 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, - 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, - 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, - 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, - 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, - 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, - 110,100,32,95,95,112,97,116,104,95,95,114,8,0,0,0, - 114,154,0,0,0,114,141,0,0,0,114,26,0,0,0,41, - 6,114,39,0,0,0,114,143,0,0,0,114,101,0,0,0, - 114,102,0,0,0,114,169,0,0,0,114,142,0,0,0,41, - 3,218,7,103,108,111,98,97,108,115,114,209,0,0,0,114, - 109,0,0,0,32,32,32,114,5,0,0,0,218,17,95,99, - 97,108,99,95,95,95,112,97,99,107,97,103,101,95,95,66, - 4,0,0,115,42,0,0,0,10,7,10,1,8,1,18,1, - 6,1,2,1,4,255,4,1,6,255,4,2,6,254,4,3, - 8,1,6,1,6,2,4,2,6,254,8,3,8,1,14,1, - 4,1,114,17,0,0,0,114,240,0,0,0,114,23,0,0, - 0,99,5,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,67,0,0,0,115,174,0,0,0,124,4,100,1,107, - 2,114,9,116,0,124,0,131,1,125,5,110,18,124,1,100, - 2,117,1,114,15,124,1,110,1,105,0,125,6,116,1,124, - 6,131,1,125,7,116,0,124,0,124,7,124,4,131,3,125, - 5,124,3,115,74,124,4,100,1,107,2,114,42,116,0,124, - 0,160,2,100,3,161,1,100,1,25,0,131,1,83,0,124, - 0,115,46,124,5,83,0,116,3,124,0,131,1,116,3,124, - 0,160,2,100,3,161,1,100,1,25,0,131,1,24,0,125, - 8,116,4,106,5,124,5,106,6,100,2,116,3,124,5,106, - 6,131,1,124,8,24,0,133,2,25,0,25,0,83,0,116, - 7,124,5,100,4,131,2,114,85,116,8,124,5,124,3,116, - 0,131,3,83,0,124,5,83,0,41,5,97,215,1,0,0, - 73,109,112,111,114,116,32,97,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,84,104,101,32,39,103,108,111,98,97, - 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 117,115,101,100,32,116,111,32,105,110,102,101,114,32,119,104, - 101,114,101,32,116,104,101,32,105,109,112,111,114,116,32,105, - 115,32,111,99,99,117,114,114,105,110,103,32,102,114,111,109, - 10,32,32,32,32,116,111,32,104,97,110,100,108,101,32,114, - 101,108,97,116,105,118,101,32,105,109,112,111,114,116,115,46, - 32,84,104,101,32,39,108,111,99,97,108,115,39,32,97,114, - 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, - 100,46,32,84,104,101,10,32,32,32,32,39,102,114,111,109, - 108,105,115,116,39,32,97,114,103,117,109,101,110,116,32,115, - 112,101,99,105,102,105,101,115,32,119,104,97,116,32,115,104, - 111,117,108,100,32,101,120,105,115,116,32,97,115,32,97,116, - 116,114,105,98,117,116,101,115,32,111,110,32,116,104,101,32, - 109,111,100,117,108,101,10,32,32,32,32,98,101,105,110,103, - 32,105,109,112,111,114,116,101,100,32,40,101,46,103,46,32, - 96,96,102,114,111,109,32,109,111,100,117,108,101,32,105,109, - 112,111,114,116,32,60,102,114,111,109,108,105,115,116,62,96, - 96,41,46,32,32,84,104,101,32,39,108,101,118,101,108,39, - 10,32,32,32,32,97,114,103,117,109,101,110,116,32,114,101, - 112,114,101,115,101,110,116,115,32,116,104,101,32,112,97,99, - 107,97,103,101,32,108,111,99,97,116,105,111,110,32,116,111, - 32,105,109,112,111,114,116,32,102,114,111,109,32,105,110,32, - 97,32,114,101,108,97,116,105,118,101,10,32,32,32,32,105, - 109,112,111,114,116,32,40,101,46,103,46,32,96,96,102,114, - 111,109,32,46,46,112,107,103,32,105,109,112,111,114,116,32, - 109,111,100,96,96,32,119,111,117,108,100,32,104,97,118,101, - 32,97,32,39,108,101,118,101,108,39,32,111,102,32,50,41, - 46,10,10,32,32,32,32,114,26,0,0,0,78,114,141,0, - 0,0,114,154,0,0,0,41,9,114,229,0,0,0,114,240, - 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,208, - 0,0,0,114,18,0,0,0,114,105,0,0,0,114,8,0, - 0,0,114,10,0,0,0,114,234,0,0,0,41,9,114,20, - 0,0,0,114,239,0,0,0,218,6,108,111,99,97,108,115, - 114,235,0,0,0,114,210,0,0,0,114,110,0,0,0,90, - 8,103,108,111,98,97,108,115,95,114,209,0,0,0,90,7, - 99,117,116,95,111,102,102,32,32,32,32,32,32,32,32,32, - 114,5,0,0,0,218,10,95,95,105,109,112,111,114,116,95, - 95,93,4,0,0,115,30,0,0,0,8,11,10,1,16,2, - 8,1,12,1,4,1,8,3,18,1,4,1,4,1,26,4, - 30,3,10,1,12,1,4,2,114,17,0,0,0,114,243,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,115,38,0,0,0,116,0,160,1, - 124,0,161,1,125,1,124,1,100,0,117,0,114,15,116,2, - 100,1,124,0,23,0,131,1,130,1,116,3,124,1,131,1, - 83,0,41,2,78,122,25,110,111,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,32,110,97,109,101,100,32, - 41,4,114,175,0,0,0,114,183,0,0,0,114,88,0,0, - 0,114,173,0,0,0,41,2,114,20,0,0,0,114,109,0, - 0,0,32,32,114,5,0,0,0,218,18,95,98,117,105,108, - 116,105,110,95,102,114,111,109,95,110,97,109,101,130,4,0, - 0,115,8,0,0,0,10,1,8,1,12,1,8,1,114,17, - 0,0,0,114,244,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,166,0, - 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, - 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, - 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, - 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, - 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, - 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, - 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, - 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, - 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, - 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, - 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, - 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, - 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, - 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, - 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, - 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, - 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, - 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, - 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, - 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, - 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, - 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, - 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, - 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, - 10,10,32,32,32,32,41,3,114,27,0,0,0,114,101,0, - 0,0,114,72,0,0,0,78,41,15,114,65,0,0,0,114, - 18,0,0,0,114,3,0,0,0,114,105,0,0,0,218,5, - 105,116,101,109,115,114,216,0,0,0,114,87,0,0,0,114, - 175,0,0,0,114,98,0,0,0,114,193,0,0,0,114,155, - 0,0,0,114,161,0,0,0,114,8,0,0,0,114,244,0, - 0,0,114,11,0,0,0,41,10,218,10,115,121,115,95,109, - 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, - 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, - 20,0,0,0,114,110,0,0,0,114,122,0,0,0,114,109, - 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, - 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,32,32, - 32,32,32,32,32,32,32,32,114,5,0,0,0,218,6,95, - 115,101,116,117,112,137,4,0,0,115,40,0,0,0,4,9, - 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, - 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, - 10,2,14,1,4,251,114,17,0,0,0,114,248,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,38,0,0,0,116,0,124,0,124,1, - 131,2,1,0,116,1,106,2,160,3,116,4,161,1,1,0, - 116,1,106,2,160,3,116,5,161,1,1,0,100,1,83,0, - 41,2,122,48,73,110,115,116,97,108,108,32,105,109,112,111, - 114,116,101,114,115,32,102,111,114,32,98,117,105,108,116,105, - 110,32,97,110,100,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,78,41,6,114,248,0,0,0,114,18,0,0, - 0,114,214,0,0,0,114,132,0,0,0,114,175,0,0,0, - 114,193,0,0,0,41,2,114,246,0,0,0,114,247,0,0, - 0,32,32,114,5,0,0,0,218,8,95,105,110,115,116,97, - 108,108,172,4,0,0,115,6,0,0,0,10,2,12,2,16, - 1,114,17,0,0,0,114,249,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, - 115,32,0,0,0,100,1,100,2,108,0,125,0,124,0,97, - 1,124,0,160,2,116,3,106,4,116,5,25,0,161,1,1, - 0,100,2,83,0,41,3,122,57,73,110,115,116,97,108,108, - 32,105,109,112,111,114,116,101,114,115,32,116,104,97,116,32, - 114,101,113,117,105,114,101,32,101,120,116,101,114,110,97,108, - 32,102,105,108,101,115,121,115,116,101,109,32,97,99,99,101, - 115,115,114,26,0,0,0,78,41,6,218,26,95,102,114,111, - 122,101,110,95,105,109,112,111,114,116,108,105,98,95,101,120, - 116,101,114,110,97,108,114,139,0,0,0,114,249,0,0,0, - 114,18,0,0,0,114,105,0,0,0,114,8,0,0,0,41, - 1,114,250,0,0,0,32,114,5,0,0,0,218,27,95,105, - 110,115,116,97,108,108,95,101,120,116,101,114,110,97,108,95, - 105,109,112,111,114,116,101,114,115,180,4,0,0,115,6,0, - 0,0,8,3,4,1,20,1,114,17,0,0,0,114,251,0, - 0,0,114,190,0,0,0,114,0,0,0,0,114,25,0,0, - 0,41,4,78,78,114,23,0,0,0,114,26,0,0,0,41, - 54,114,9,0,0,0,114,6,0,0,0,114,27,0,0,0, - 114,101,0,0,0,114,72,0,0,0,114,139,0,0,0,114, - 16,0,0,0,114,21,0,0,0,114,67,0,0,0,114,38, - 0,0,0,114,48,0,0,0,114,22,0,0,0,114,24,0, - 0,0,114,56,0,0,0,114,58,0,0,0,114,61,0,0, - 0,114,73,0,0,0,114,75,0,0,0,114,84,0,0,0, - 114,95,0,0,0,114,100,0,0,0,114,111,0,0,0,114, - 124,0,0,0,114,125,0,0,0,114,104,0,0,0,114,155, - 0,0,0,114,161,0,0,0,114,165,0,0,0,114,119,0, - 0,0,114,106,0,0,0,114,172,0,0,0,114,173,0,0, - 0,114,107,0,0,0,114,175,0,0,0,114,193,0,0,0, - 114,200,0,0,0,114,211,0,0,0,114,213,0,0,0,114, - 215,0,0,0,114,221,0,0,0,90,15,95,69,82,82,95, - 77,83,71,95,80,82,69,70,73,88,114,223,0,0,0,114, - 226,0,0,0,218,6,111,98,106,101,99,116,114,227,0,0, - 0,114,228,0,0,0,114,229,0,0,0,114,234,0,0,0, - 114,240,0,0,0,114,243,0,0,0,114,244,0,0,0,114, - 248,0,0,0,114,249,0,0,0,114,251,0,0,0,114,23, - 0,0,0,114,5,0,0,0,218,8,60,109,111,100,117,108, - 101,62,1,0,0,0,115,104,0,0,0,4,0,8,22,4, - 9,4,1,4,1,4,3,8,3,8,8,4,8,4,2,16, - 3,14,4,14,77,14,21,8,16,8,37,8,17,14,11,8, - 8,8,11,8,12,8,19,14,26,16,101,10,26,14,45,8, - 72,8,17,8,17,8,30,8,36,8,45,14,15,14,80,14, - 85,8,13,8,9,10,10,8,47,4,16,8,1,8,2,6, - 32,8,3,10,16,14,15,8,37,10,27,8,37,8,7,8, - 35,12,8,114,17,0,0,0, + 0,0,243,10,0,0,0,116,0,160,1,124,1,161,1,83, + 0,41,2,122,45,82,101,116,117,114,110,32,116,104,101,32, + 99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32, + 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108, + 101,46,78,41,2,114,65,0,0,0,114,195,0,0,0,114, + 186,0,0,0,32,32,114,5,0,0,0,114,187,0,0,0, + 100,3,0,0,243,2,0,0,0,10,4,114,17,0,0,0, + 122,23,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 46,103,101,116,95,99,111,100,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,67,0,0,0,114,185, + 0,0,0,41,2,122,54,82,101,116,117,114,110,32,78,111, + 110,101,32,97,115,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, + 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, + 0,0,0,114,186,0,0,0,32,32,114,5,0,0,0,114, + 189,0,0,0,106,3,0,0,114,188,0,0,0,114,17,0, + 0,0,122,25,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,114,198,0,0,0,41,2,122,46,82,101,116,117,114, + 110,32,84,114,117,101,32,105,102,32,116,104,101,32,102,114, + 111,122,101,110,32,109,111,100,117,108,101,32,105,115,32,97, + 32,112,97,99,107,97,103,101,46,78,41,2,114,65,0,0, + 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, + 107,97,103,101,114,186,0,0,0,32,32,114,5,0,0,0, + 114,128,0,0,0,112,3,0,0,114,199,0,0,0,114,17, + 0,0,0,122,25,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,105,115,95,112,97,99,107,97,103,101,114,190, + 0,0,0,114,0,0,0,0,41,17,114,8,0,0,0,114, + 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,151, + 0,0,0,114,191,0,0,0,114,114,0,0,0,114,192,0, + 0,0,114,183,0,0,0,114,184,0,0,0,114,162,0,0, + 0,114,163,0,0,0,114,170,0,0,0,114,100,0,0,0, + 114,187,0,0,0,114,189,0,0,0,114,128,0,0,0,114, + 23,0,0,0,114,5,0,0,0,114,193,0,0,0,36,3, + 0,0,115,48,0,0,0,8,0,4,2,4,7,2,2,10, + 1,2,10,12,1,2,6,12,1,2,11,10,1,2,3,10, + 1,2,8,10,1,2,9,2,1,12,1,2,4,2,1,12, + 1,2,4,2,1,16,1,114,17,0,0,0,114,193,0,0, + 0,99,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,83,0,41,7,218,18,95, + 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, + 116,122,36,67,111,110,116,101,120,116,32,109,97,110,97,103, + 101,114,32,102,111,114,32,116,104,101,32,105,109,112,111,114, + 116,32,108,111,99,107,46,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,67,0,0,0,243,12,0,0, + 0,116,0,160,1,161,0,1,0,100,1,83,0,41,2,122, + 24,65,99,113,117,105,114,101,32,116,104,101,32,105,109,112, + 111,114,116,32,108,111,99,107,46,78,41,2,114,65,0,0, + 0,114,66,0,0,0,114,53,0,0,0,32,114,5,0,0, + 0,114,62,0,0,0,125,3,0,0,243,2,0,0,0,12, + 2,114,17,0,0,0,122,28,95,73,109,112,111,114,116,76, + 111,99,107,67,111,110,116,101,120,116,46,95,95,101,110,116, + 101,114,95,95,99,4,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,67,0,0,0,114,201,0,0,0,41,2, + 122,60,82,101,108,101,97,115,101,32,116,104,101,32,105,109, + 112,111,114,116,32,108,111,99,107,32,114,101,103,97,114,100, + 108,101,115,115,32,111,102,32,97,110,121,32,114,97,105,115, + 101,100,32,101,120,99,101,112,116,105,111,110,115,46,78,41, + 2,114,65,0,0,0,114,68,0,0,0,41,4,114,34,0, + 0,0,218,8,101,120,99,95,116,121,112,101,218,9,101,120, + 99,95,118,97,108,117,101,218,13,101,120,99,95,116,114,97, + 99,101,98,97,99,107,32,32,32,32,114,5,0,0,0,114, + 64,0,0,0,129,3,0,0,114,202,0,0,0,114,17,0, + 0,0,122,27,95,73,109,112,111,114,116,76,111,99,107,67, + 111,110,116,101,120,116,46,95,95,101,120,105,116,95,95,78, + 41,6,114,8,0,0,0,114,7,0,0,0,114,1,0,0, + 0,114,9,0,0,0,114,62,0,0,0,114,64,0,0,0, + 114,23,0,0,0,114,5,0,0,0,114,200,0,0,0,121, + 3,0,0,115,8,0,0,0,8,0,4,2,8,2,12,4, + 114,17,0,0,0,114,200,0,0,0,99,3,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, + 64,0,0,0,124,1,160,0,100,1,124,2,100,2,24,0, + 161,2,125,3,116,1,124,3,131,1,124,2,107,0,114,18, + 116,2,100,3,131,1,130,1,124,3,100,4,25,0,125,4, + 124,0,114,30,100,5,160,3,124,4,124,0,161,2,83,0, + 124,4,83,0,41,7,122,50,82,101,115,111,108,118,101,32, + 97,32,114,101,108,97,116,105,118,101,32,109,111,100,117,108, + 101,32,110,97,109,101,32,116,111,32,97,110,32,97,98,115, + 111,108,117,116,101,32,111,110,101,46,114,141,0,0,0,114, + 43,0,0,0,122,50,97,116,116,101,109,112,116,101,100,32, + 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,32, + 98,101,121,111,110,100,32,116,111,112,45,108,101,118,101,108, + 32,112,97,99,107,97,103,101,114,26,0,0,0,250,5,123, + 125,46,123,125,78,41,4,218,6,114,115,112,108,105,116,218, + 3,108,101,110,114,88,0,0,0,114,51,0,0,0,41,5, + 114,20,0,0,0,218,7,112,97,99,107,97,103,101,218,5, + 108,101,118,101,108,90,4,98,105,116,115,90,4,98,97,115, + 101,32,32,32,32,32,114,5,0,0,0,218,13,95,114,101, + 115,111,108,118,101,95,110,97,109,101,134,3,0,0,115,10, + 0,0,0,16,2,12,1,8,1,8,1,20,1,114,17,0, + 0,0,114,211,0,0,0,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,67,0,0,0,115,60,0,0, + 0,116,0,124,0,131,1,155,0,100,1,157,2,125,3,116, + 1,160,2,124,3,116,3,161,2,1,0,124,0,160,4,124, + 1,124,2,161,2,125,4,124,4,100,0,117,0,114,25,100, + 0,83,0,116,5,124,1,124,4,131,2,83,0,41,2,78, + 122,53,46,102,105,110,100,95,115,112,101,99,40,41,32,110, + 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, + 103,32,98,97,99,107,32,116,111,32,102,105,110,100,95,109, + 111,100,117,108,101,40,41,41,6,114,6,0,0,0,114,101, + 0,0,0,114,102,0,0,0,114,169,0,0,0,114,184,0, + 0,0,114,104,0,0,0,41,5,218,6,102,105,110,100,101, + 114,114,20,0,0,0,114,181,0,0,0,114,108,0,0,0, + 114,122,0,0,0,32,32,32,32,32,114,5,0,0,0,218, + 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, + 99,121,143,3,0,0,115,12,0,0,0,14,1,12,2,12, + 1,8,1,4,1,10,1,114,17,0,0,0,114,213,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,10,0, + 0,0,67,0,0,0,115,30,1,0,0,116,0,106,1,125, + 3,124,3,100,1,117,0,114,11,116,2,100,2,131,1,130, + 1,124,3,115,19,116,3,160,4,100,3,116,5,161,2,1, + 0,124,0,116,0,106,6,118,0,125,4,124,3,68,0,93, + 112,125,5,116,7,131,0,53,0,1,0,9,0,124,5,106, + 8,125,6,110,27,35,0,4,0,116,9,121,142,1,0,1, + 0,1,0,116,10,124,5,124,0,124,1,131,3,125,7,124, + 7,100,1,117,0,114,61,89,0,100,1,4,0,4,0,131, + 3,1,0,113,26,89,0,110,7,37,0,124,6,124,0,124, + 1,124,2,131,3,125,7,100,1,4,0,4,0,131,3,1, + 0,110,11,35,0,49,0,115,81,119,4,37,0,1,0,1, + 0,1,0,89,0,1,0,1,0,124,7,100,1,117,1,114, + 138,124,4,115,134,124,0,116,0,106,6,118,0,114,134,116, + 0,106,6,124,0,25,0,125,8,9,0,124,8,106,11,125, + 9,110,14,35,0,4,0,116,9,121,141,1,0,1,0,1, + 0,124,7,6,0,89,0,2,0,1,0,83,0,37,0,124, + 9,100,1,117,0,114,130,124,7,2,0,1,0,83,0,124, + 9,2,0,1,0,83,0,124,7,2,0,1,0,83,0,113, + 26,100,1,83,0,119,0,119,0,41,4,122,21,70,105,110, + 100,32,97,32,109,111,100,117,108,101,39,115,32,115,112,101, + 99,46,78,122,53,115,121,115,46,109,101,116,97,95,112,97, + 116,104,32,105,115,32,78,111,110,101,44,32,80,121,116,104, + 111,110,32,105,115,32,108,105,107,101,108,121,32,115,104,117, + 116,116,105,110,103,32,100,111,119,110,122,22,115,121,115,46, + 109,101,116,97,95,112,97,116,104,32,105,115,32,101,109,112, + 116,121,41,12,114,18,0,0,0,218,9,109,101,116,97,95, + 112,97,116,104,114,88,0,0,0,114,101,0,0,0,114,102, + 0,0,0,114,169,0,0,0,114,105,0,0,0,114,200,0, + 0,0,114,183,0,0,0,114,2,0,0,0,114,213,0,0, + 0,114,113,0,0,0,41,10,114,20,0,0,0,114,181,0, + 0,0,114,182,0,0,0,114,214,0,0,0,90,9,105,115, + 95,114,101,108,111,97,100,114,212,0,0,0,114,183,0,0, + 0,114,109,0,0,0,114,110,0,0,0,114,113,0,0,0, + 32,32,32,32,32,32,32,32,32,32,114,5,0,0,0,218, + 10,95,102,105,110,100,95,115,112,101,99,153,3,0,0,115, + 76,0,0,0,6,2,8,1,8,2,4,3,12,1,10,5, + 8,1,8,1,2,1,8,1,2,128,12,1,12,1,8,1, + 2,1,12,250,4,5,2,128,12,3,12,248,22,128,8,9, + 14,2,10,1,2,1,8,1,2,128,12,1,12,4,2,128, + 8,2,8,1,8,2,8,2,2,239,4,19,2,243,2,244, + 115,63,0,0,0,159,1,65,12,5,161,3,37,4,164,1, + 65,12,5,165,17,63,11,182,1,65,12,5,189,9,65,12, + 5,193,12,4,65,16,13,193,17,3,65,16,13,193,40,3, + 65,44,2,193,44,9,65,57,9,194,13,1,65,57,9,194, + 14,1,63,11,114,215,0,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,5,0,0,0,67,0,0,0,115,110, + 0,0,0,116,0,124,0,116,1,131,2,115,14,116,2,100, + 1,160,3,116,4,124,0,131,1,161,1,131,1,130,1,124, + 2,100,2,107,0,114,22,116,5,100,3,131,1,130,1,124, + 2,100,2,107,4,114,41,116,0,124,1,116,1,131,2,115, + 35,116,2,100,4,131,1,130,1,124,1,115,41,116,6,100, + 5,131,1,130,1,124,0,115,53,124,2,100,2,107,2,114, + 51,116,5,100,6,131,1,130,1,100,7,83,0,100,7,83, + 0,41,8,122,28,86,101,114,105,102,121,32,97,114,103,117, + 109,101,110,116,115,32,97,114,101,32,34,115,97,110,101,34, + 46,122,31,109,111,100,117,108,101,32,110,97,109,101,32,109, + 117,115,116,32,98,101,32,115,116,114,44,32,110,111,116,32, + 123,125,114,26,0,0,0,122,18,108,101,118,101,108,32,109, + 117,115,116,32,98,101,32,62,61,32,48,122,31,95,95,112, + 97,99,107,97,103,101,95,95,32,110,111,116,32,115,101,116, + 32,116,111,32,97,32,115,116,114,105,110,103,122,54,97,116, + 116,101,109,112,116,101,100,32,114,101,108,97,116,105,118,101, + 32,105,109,112,111,114,116,32,119,105,116,104,32,110,111,32, + 107,110,111,119,110,32,112,97,114,101,110,116,32,112,97,99, + 107,97,103,101,122,17,69,109,112,116,121,32,109,111,100,117, + 108,101,32,110,97,109,101,78,41,7,218,10,105,115,105,110, + 115,116,97,110,99,101,218,3,115,116,114,218,9,84,121,112, + 101,69,114,114,111,114,114,51,0,0,0,114,3,0,0,0, + 218,10,86,97,108,117,101,69,114,114,111,114,114,88,0,0, + 0,169,3,114,20,0,0,0,114,209,0,0,0,114,210,0, + 0,0,32,32,32,114,5,0,0,0,218,13,95,115,97,110, + 105,116,121,95,99,104,101,99,107,200,3,0,0,115,24,0, + 0,0,10,2,18,1,8,1,8,1,8,1,10,1,8,1, + 4,1,8,1,12,2,8,1,8,255,114,17,0,0,0,114, + 221,0,0,0,122,16,78,111,32,109,111,100,117,108,101,32, + 110,97,109,101,100,32,122,4,123,33,114,125,99,2,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, + 0,115,20,1,0,0,100,0,125,2,124,0,160,0,100,1, + 161,1,100,2,25,0,125,3,124,3,114,64,124,3,116,1, + 106,2,118,1,114,21,116,3,124,1,124,3,131,2,1,0, + 124,0,116,1,106,2,118,0,114,31,116,1,106,2,124,0, + 25,0,83,0,116,1,106,2,124,3,25,0,125,4,9,0, + 124,4,106,4,125,2,110,23,35,0,4,0,116,5,121,137, + 1,0,1,0,1,0,116,6,100,3,23,0,160,7,124,0, + 124,3,161,2,125,5,116,8,124,5,124,0,100,4,141,2, + 100,0,130,2,37,0,116,9,124,0,124,2,131,2,125,6, + 124,6,100,0,117,0,114,82,116,8,116,6,160,7,124,0, + 161,1,124,0,100,4,141,2,130,1,116,10,124,6,131,1, + 125,7,124,3,114,134,116,1,106,2,124,3,25,0,125,4, + 124,0,160,0,100,1,161,1,100,5,25,0,125,8,9,0, + 116,11,124,4,124,8,124,7,131,3,1,0,124,7,83,0, + 35,0,4,0,116,5,121,136,1,0,1,0,1,0,100,6, + 124,3,155,2,100,7,124,8,155,2,157,4,125,5,116,12, + 160,13,124,5,116,14,161,2,1,0,89,0,124,7,83,0, + 37,0,124,7,83,0,119,0,119,0,41,8,78,114,141,0, + 0,0,114,26,0,0,0,122,23,59,32,123,33,114,125,32, + 105,115,32,110,111,116,32,97,32,112,97,99,107,97,103,101, + 114,19,0,0,0,233,2,0,0,0,122,27,67,97,110,110, + 111,116,32,115,101,116,32,97,110,32,97,116,116,114,105,98, + 117,116,101,32,111,110,32,122,18,32,102,111,114,32,99,104, + 105,108,100,32,109,111,100,117,108,101,32,41,15,114,142,0, + 0,0,114,18,0,0,0,114,105,0,0,0,114,75,0,0, + 0,114,154,0,0,0,114,2,0,0,0,218,8,95,69,82, + 82,95,77,83,71,114,51,0,0,0,218,19,77,111,100,117, + 108,101,78,111,116,70,111,117,110,100,69,114,114,111,114,114, + 215,0,0,0,114,173,0,0,0,114,11,0,0,0,114,101, + 0,0,0,114,102,0,0,0,114,169,0,0,0,41,9,114, + 20,0,0,0,218,7,105,109,112,111,114,116,95,114,181,0, + 0,0,114,143,0,0,0,90,13,112,97,114,101,110,116,95, + 109,111,100,117,108,101,114,108,0,0,0,114,109,0,0,0, + 114,110,0,0,0,90,5,99,104,105,108,100,32,32,32,32, + 32,32,32,32,32,114,5,0,0,0,218,23,95,102,105,110, + 100,95,97,110,100,95,108,111,97,100,95,117,110,108,111,99, + 107,101,100,219,3,0,0,115,68,0,0,0,4,1,14,1, + 4,1,10,1,10,1,10,2,10,1,10,1,2,1,8,1, + 2,128,12,1,16,1,14,1,2,128,10,1,8,1,18,1, + 8,2,4,1,10,2,14,1,2,1,12,1,4,4,2,128, + 12,253,16,1,14,1,4,1,2,128,4,0,2,253,2,242, + 115,31,0,0,0,165,3,41,0,169,22,63,7,193,37,6, + 65,45,0,193,45,21,66,5,7,194,8,1,66,5,7,194, + 9,1,63,7,114,226,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,9,0,0,0,67,0,0,0,115,132, + 0,0,0,116,0,124,0,131,1,53,0,1,0,116,1,106, + 2,160,3,124,0,116,4,161,2,125,2,124,2,116,4,117, + 0,114,27,116,5,124,0,124,1,131,2,2,0,100,1,4, + 0,4,0,131,3,1,0,83,0,9,0,100,1,4,0,4, + 0,131,3,1,0,110,11,35,0,49,0,115,39,119,4,37, + 0,1,0,1,0,1,0,89,0,1,0,1,0,124,2,100, + 1,117,0,114,60,100,2,160,6,124,0,161,1,125,3,116, + 7,124,3,124,0,100,3,141,2,130,1,116,8,124,0,131, + 1,1,0,124,2,83,0,41,4,122,25,70,105,110,100,32, + 97,110,100,32,108,111,97,100,32,116,104,101,32,109,111,100, + 117,108,101,46,78,122,40,105,109,112,111,114,116,32,111,102, + 32,123,125,32,104,97,108,116,101,100,59,32,78,111,110,101, + 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,114, + 19,0,0,0,41,9,114,58,0,0,0,114,18,0,0,0, + 114,105,0,0,0,114,39,0,0,0,218,14,95,78,69,69, + 68,83,95,76,79,65,68,73,78,71,114,226,0,0,0,114, + 51,0,0,0,114,224,0,0,0,114,73,0,0,0,41,4, + 114,20,0,0,0,114,225,0,0,0,114,110,0,0,0,114, + 83,0,0,0,32,32,32,32,114,5,0,0,0,218,14,95, + 102,105,110,100,95,97,110,100,95,108,111,97,100,254,3,0, + 0,115,30,0,0,0,10,2,14,1,8,1,8,1,14,253, + 2,2,12,254,22,128,8,5,2,1,6,1,2,255,12,2, + 8,2,4,1,115,12,0,0,0,132,16,34,3,162,4,38, + 11,167,3,38,11,114,228,0,0,0,114,26,0,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,42,0,0,0,116,0,124,0,124,1,124, + 2,131,3,1,0,124,2,100,1,107,4,114,16,116,1,124, + 0,124,1,124,2,131,3,125,0,116,2,124,0,116,3,131, + 2,83,0,41,3,97,50,1,0,0,73,109,112,111,114,116, + 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32, + 109,111,100,117,108,101,32,98,97,115,101,100,32,111,110,32, + 105,116,115,32,110,97,109,101,44,32,116,104,101,32,112,97, + 99,107,97,103,101,32,116,104,101,32,99,97,108,108,32,105, + 115,10,32,32,32,32,98,101,105,110,103,32,109,97,100,101, + 32,102,114,111,109,44,32,97,110,100,32,116,104,101,32,108, + 101,118,101,108,32,97,100,106,117,115,116,109,101,110,116,46, + 10,10,32,32,32,32,84,104,105,115,32,102,117,110,99,116, + 105,111,110,32,114,101,112,114,101,115,101,110,116,115,32,116, + 104,101,32,103,114,101,97,116,101,115,116,32,99,111,109,109, + 111,110,32,100,101,110,111,109,105,110,97,116,111,114,32,111, + 102,32,102,117,110,99,116,105,111,110,97,108,105,116,121,10, + 32,32,32,32,98,101,116,119,101,101,110,32,105,109,112,111, + 114,116,95,109,111,100,117,108,101,32,97,110,100,32,95,95, + 105,109,112,111,114,116,95,95,46,32,84,104,105,115,32,105, + 110,99,108,117,100,101,115,32,115,101,116,116,105,110,103,32, + 95,95,112,97,99,107,97,103,101,95,95,32,105,102,10,32, + 32,32,32,116,104,101,32,108,111,97,100,101,114,32,100,105, + 100,32,110,111,116,46,10,10,32,32,32,32,114,26,0,0, + 0,78,41,4,114,221,0,0,0,114,211,0,0,0,114,228, + 0,0,0,218,11,95,103,99,100,95,105,109,112,111,114,116, + 114,220,0,0,0,32,32,32,114,5,0,0,0,114,229,0, + 0,0,14,4,0,0,115,8,0,0,0,12,9,8,1,12, + 1,10,1,114,17,0,0,0,114,229,0,0,0,169,1,218, + 9,114,101,99,117,114,115,105,118,101,99,3,0,0,0,0, + 0,0,0,1,0,0,0,9,0,0,0,67,0,0,0,115, + 216,0,0,0,124,1,68,0,93,102,125,4,116,0,124,4, + 116,1,131,2,115,32,124,3,114,17,124,0,106,2,100,1, + 23,0,125,5,110,2,100,2,125,5,116,3,100,3,124,5, + 155,0,100,4,116,4,124,4,131,1,106,2,155,0,157,4, + 131,1,130,1,124,4,100,5,107,2,114,53,124,3,115,52, + 116,5,124,0,100,6,131,2,114,52,116,6,124,0,124,0, + 106,7,124,2,100,7,100,8,141,4,1,0,113,2,116,5, + 124,0,124,4,131,2,115,104,100,9,160,8,124,0,106,2, + 124,4,161,2,125,6,9,0,116,9,124,2,124,6,131,2, + 1,0,113,2,35,0,4,0,116,10,121,107,1,0,125,7, + 1,0,124,7,106,11,124,6,107,2,114,98,116,12,106,13, + 160,14,124,6,116,15,161,2,100,10,117,1,114,98,89,0, + 100,10,125,7,126,7,113,2,130,0,100,10,125,7,126,7, + 119,1,37,0,113,2,124,0,83,0,119,0,41,11,122,238, + 70,105,103,117,114,101,32,111,117,116,32,119,104,97,116,32, + 95,95,105,109,112,111,114,116,95,95,32,115,104,111,117,108, + 100,32,114,101,116,117,114,110,46,10,10,32,32,32,32,84, + 104,101,32,105,109,112,111,114,116,95,32,112,97,114,97,109, + 101,116,101,114,32,105,115,32,97,32,99,97,108,108,97,98, + 108,101,32,119,104,105,99,104,32,116,97,107,101,115,32,116, + 104,101,32,110,97,109,101,32,111,102,32,109,111,100,117,108, + 101,32,116,111,10,32,32,32,32,105,109,112,111,114,116,46, + 32,73,116,32,105,115,32,114,101,113,117,105,114,101,100,32, + 116,111,32,100,101,99,111,117,112,108,101,32,116,104,101,32, + 102,117,110,99,116,105,111,110,32,102,114,111,109,32,97,115, + 115,117,109,105,110,103,32,105,109,112,111,114,116,108,105,98, + 39,115,10,32,32,32,32,105,109,112,111,114,116,32,105,109, + 112,108,101,109,101,110,116,97,116,105,111,110,32,105,115,32, + 100,101,115,105,114,101,100,46,10,10,32,32,32,32,122,8, + 46,95,95,97,108,108,95,95,122,13,96,96,102,114,111,109, + 32,108,105,115,116,39,39,122,8,73,116,101,109,32,105,110, + 32,122,18,32,109,117,115,116,32,98,101,32,115,116,114,44, + 32,110,111,116,32,250,1,42,218,7,95,95,97,108,108,95, + 95,84,114,230,0,0,0,114,206,0,0,0,78,41,16,114, + 216,0,0,0,114,217,0,0,0,114,8,0,0,0,114,218, + 0,0,0,114,3,0,0,0,114,10,0,0,0,218,16,95, + 104,97,110,100,108,101,95,102,114,111,109,108,105,115,116,114, + 233,0,0,0,114,51,0,0,0,114,75,0,0,0,114,224, + 0,0,0,114,20,0,0,0,114,18,0,0,0,114,105,0, + 0,0,114,39,0,0,0,114,227,0,0,0,41,8,114,110, + 0,0,0,218,8,102,114,111,109,108,105,115,116,114,225,0, + 0,0,114,231,0,0,0,218,1,120,90,5,119,104,101,114, + 101,90,9,102,114,111,109,95,110,97,109,101,90,3,101,120, + 99,32,32,32,32,32,32,32,32,114,5,0,0,0,114,234, + 0,0,0,29,4,0,0,115,58,0,0,0,8,10,10,1, + 4,1,12,1,4,2,10,1,8,1,8,255,8,2,14,1, + 10,1,2,1,6,255,2,128,10,2,14,1,2,1,12,1, + 2,128,12,1,10,4,16,1,2,255,10,2,2,1,10,128, + 2,245,4,12,2,248,115,36,0,0,0,193,2,5,65,8, + 2,193,8,7,65,39,9,193,15,14,65,35,9,193,34,1, + 65,35,9,193,35,4,65,39,9,193,43,1,65,39,9,114, + 234,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,7,0,0,0,67,0,0,0,115,146,0,0,0,124,0, + 160,0,100,1,161,1,125,1,124,0,160,0,100,2,161,1, + 125,2,124,1,100,3,117,1,114,41,124,2,100,3,117,1, + 114,39,124,1,124,2,106,1,107,3,114,39,116,2,160,3, + 100,4,124,1,155,2,100,5,124,2,106,1,155,2,100,6, + 157,5,116,4,100,7,100,8,166,3,1,0,124,1,83,0, + 124,2,100,3,117,1,114,48,124,2,106,1,83,0,116,2, + 160,3,100,9,116,4,100,7,100,8,166,3,1,0,124,0, + 100,10,25,0,125,1,100,11,124,0,118,1,114,71,124,1, + 160,5,100,12,161,1,100,13,25,0,125,1,124,1,83,0, + 41,14,122,167,67,97,108,99,117,108,97,116,101,32,119,104, + 97,116,32,95,95,112,97,99,107,97,103,101,95,95,32,115, + 104,111,117,108,100,32,98,101,46,10,10,32,32,32,32,95, + 95,112,97,99,107,97,103,101,95,95,32,105,115,32,110,111, + 116,32,103,117,97,114,97,110,116,101,101,100,32,116,111,32, + 98,101,32,100,101,102,105,110,101,100,32,111,114,32,99,111, + 117,108,100,32,98,101,32,115,101,116,32,116,111,32,78,111, + 110,101,10,32,32,32,32,116,111,32,114,101,112,114,101,115, + 101,110,116,32,116,104,97,116,32,105,116,115,32,112,114,111, + 112,101,114,32,118,97,108,117,101,32,105,115,32,117,110,107, + 110,111,119,110,46,10,10,32,32,32,32,114,158,0,0,0, + 114,113,0,0,0,78,122,32,95,95,112,97,99,107,97,103, + 101,95,95,32,33,61,32,95,95,115,112,101,99,95,95,46, + 112,97,114,101,110,116,32,40,122,4,32,33,61,32,250,1, + 41,233,3,0,0,0,41,1,90,10,115,116,97,99,107,108, + 101,118,101,108,122,89,99,97,110,39,116,32,114,101,115,111, + 108,118,101,32,112,97,99,107,97,103,101,32,102,114,111,109, + 32,95,95,115,112,101,99,95,95,32,111,114,32,95,95,112, + 97,99,107,97,103,101,95,95,44,32,102,97,108,108,105,110, + 103,32,98,97,99,107,32,111,110,32,95,95,110,97,109,101, + 95,95,32,97,110,100,32,95,95,112,97,116,104,95,95,114, + 8,0,0,0,114,154,0,0,0,114,141,0,0,0,114,26, + 0,0,0,41,6,114,39,0,0,0,114,143,0,0,0,114, + 101,0,0,0,114,102,0,0,0,114,169,0,0,0,114,142, + 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,209, + 0,0,0,114,109,0,0,0,32,32,32,114,5,0,0,0, + 218,17,95,99,97,108,99,95,95,95,112,97,99,107,97,103, + 101,95,95,66,4,0,0,115,42,0,0,0,10,7,10,1, + 8,1,18,1,6,1,2,1,4,255,4,1,6,255,4,2, + 6,254,4,3,8,1,6,1,6,2,4,2,6,254,8,3, + 8,1,14,1,4,1,114,17,0,0,0,114,240,0,0,0, + 114,23,0,0,0,99,5,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,67,0,0,0,115,174,0,0,0,124, + 4,100,1,107,2,114,9,116,0,124,0,131,1,125,5,110, + 18,124,1,100,2,117,1,114,15,124,1,110,1,105,0,125, + 6,116,1,124,6,131,1,125,7,116,0,124,0,124,7,124, + 4,131,3,125,5,124,3,115,74,124,4,100,1,107,2,114, + 42,116,0,124,0,160,2,100,3,161,1,100,1,25,0,131, + 1,83,0,124,0,115,46,124,5,83,0,116,3,124,0,131, + 1,116,3,124,0,160,2,100,3,161,1,100,1,25,0,131, + 1,24,0,125,8,116,4,106,5,124,5,106,6,100,2,116, + 3,124,5,106,6,131,1,124,8,24,0,133,2,25,0,25, + 0,83,0,116,7,124,5,100,4,131,2,114,85,116,8,124, + 5,124,3,116,0,131,3,83,0,124,5,83,0,41,5,97, + 215,1,0,0,73,109,112,111,114,116,32,97,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,84,104,101,32,39,103, + 108,111,98,97,108,115,39,32,97,114,103,117,109,101,110,116, + 32,105,115,32,117,115,101,100,32,116,111,32,105,110,102,101, + 114,32,119,104,101,114,101,32,116,104,101,32,105,109,112,111, + 114,116,32,105,115,32,111,99,99,117,114,114,105,110,103,32, + 102,114,111,109,10,32,32,32,32,116,111,32,104,97,110,100, + 108,101,32,114,101,108,97,116,105,118,101,32,105,109,112,111, + 114,116,115,46,32,84,104,101,32,39,108,111,99,97,108,115, + 39,32,97,114,103,117,109,101,110,116,32,105,115,32,105,103, + 110,111,114,101,100,46,32,84,104,101,10,32,32,32,32,39, + 102,114,111,109,108,105,115,116,39,32,97,114,103,117,109,101, + 110,116,32,115,112,101,99,105,102,105,101,115,32,119,104,97, + 116,32,115,104,111,117,108,100,32,101,120,105,115,116,32,97, + 115,32,97,116,116,114,105,98,117,116,101,115,32,111,110,32, + 116,104,101,32,109,111,100,117,108,101,10,32,32,32,32,98, + 101,105,110,103,32,105,109,112,111,114,116,101,100,32,40,101, + 46,103,46,32,96,96,102,114,111,109,32,109,111,100,117,108, + 101,32,105,109,112,111,114,116,32,60,102,114,111,109,108,105, + 115,116,62,96,96,41,46,32,32,84,104,101,32,39,108,101, + 118,101,108,39,10,32,32,32,32,97,114,103,117,109,101,110, + 116,32,114,101,112,114,101,115,101,110,116,115,32,116,104,101, + 32,112,97,99,107,97,103,101,32,108,111,99,97,116,105,111, + 110,32,116,111,32,105,109,112,111,114,116,32,102,114,111,109, + 32,105,110,32,97,32,114,101,108,97,116,105,118,101,10,32, + 32,32,32,105,109,112,111,114,116,32,40,101,46,103,46,32, + 96,96,102,114,111,109,32,46,46,112,107,103,32,105,109,112, + 111,114,116,32,109,111,100,96,96,32,119,111,117,108,100,32, + 104,97,118,101,32,97,32,39,108,101,118,101,108,39,32,111, + 102,32,50,41,46,10,10,32,32,32,32,114,26,0,0,0, + 78,114,141,0,0,0,114,154,0,0,0,41,9,114,229,0, + 0,0,114,240,0,0,0,218,9,112,97,114,116,105,116,105, + 111,110,114,208,0,0,0,114,18,0,0,0,114,105,0,0, + 0,114,8,0,0,0,114,10,0,0,0,114,234,0,0,0, + 41,9,114,20,0,0,0,114,239,0,0,0,218,6,108,111, + 99,97,108,115,114,235,0,0,0,114,210,0,0,0,114,110, + 0,0,0,90,8,103,108,111,98,97,108,115,95,114,209,0, + 0,0,90,7,99,117,116,95,111,102,102,32,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,10,95,95,105,109,112, + 111,114,116,95,95,93,4,0,0,115,30,0,0,0,8,11, + 10,1,16,2,8,1,12,1,4,1,8,3,18,1,4,1, + 4,1,26,4,30,3,10,1,12,1,4,2,114,17,0,0, + 0,114,243,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, + 116,0,160,1,124,0,161,1,125,1,124,1,100,0,117,0, + 114,15,116,2,100,1,124,0,23,0,131,1,130,1,116,3, + 124,1,131,1,83,0,41,2,78,122,25,110,111,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,32,110,97, + 109,101,100,32,41,4,114,175,0,0,0,114,183,0,0,0, + 114,88,0,0,0,114,173,0,0,0,41,2,114,20,0,0, + 0,114,109,0,0,0,32,32,114,5,0,0,0,218,18,95, + 98,117,105,108,116,105,110,95,102,114,111,109,95,110,97,109, + 101,130,4,0,0,115,8,0,0,0,10,1,8,1,12,1, + 8,1,114,17,0,0,0,114,244,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,67,0,0, + 0,115,166,0,0,0,124,1,97,0,124,0,97,1,116,2, + 116,1,131,1,125,2,116,1,106,3,160,4,161,0,68,0, + 93,36,92,2,125,3,125,4,116,5,124,4,124,2,131,2, + 114,49,124,3,116,1,106,6,118,0,114,30,116,7,125,5, + 110,9,116,0,160,8,124,3,161,1,114,38,116,9,125,5, + 110,1,113,13,116,10,124,4,124,5,131,2,125,6,116,11, + 124,6,124,4,131,2,1,0,113,13,116,1,106,3,116,12, + 25,0,125,7,100,1,68,0,93,23,125,8,124,8,116,1, + 106,3,118,1,114,69,116,13,124,8,131,1,125,9,110,5, + 116,1,106,3,124,8,25,0,125,9,116,14,124,7,124,8, + 124,9,131,3,1,0,113,57,100,2,83,0,41,3,122,250, + 83,101,116,117,112,32,105,109,112,111,114,116,108,105,98,32, + 98,121,32,105,109,112,111,114,116,105,110,103,32,110,101,101, + 100,101,100,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,115,32,97,110,100,32,105,110,106,101,99,116,105, + 110,103,32,116,104,101,109,10,32,32,32,32,105,110,116,111, + 32,116,104,101,32,103,108,111,98,97,108,32,110,97,109,101, + 115,112,97,99,101,46,10,10,32,32,32,32,65,115,32,115, + 121,115,32,105,115,32,110,101,101,100,101,100,32,102,111,114, + 32,115,121,115,46,109,111,100,117,108,101,115,32,97,99,99, + 101,115,115,32,97,110,100,32,95,105,109,112,32,105,115,32, + 110,101,101,100,101,100,32,116,111,32,108,111,97,100,32,98, + 117,105,108,116,45,105,110,10,32,32,32,32,109,111,100,117, + 108,101,115,44,32,116,104,111,115,101,32,116,119,111,32,109, + 111,100,117,108,101,115,32,109,117,115,116,32,98,101,32,101, + 120,112,108,105,99,105,116,108,121,32,112,97,115,115,101,100, + 32,105,110,46,10,10,32,32,32,32,41,3,114,27,0,0, + 0,114,101,0,0,0,114,72,0,0,0,78,41,15,114,65, + 0,0,0,114,18,0,0,0,114,3,0,0,0,114,105,0, + 0,0,218,5,105,116,101,109,115,114,216,0,0,0,114,87, + 0,0,0,114,175,0,0,0,114,98,0,0,0,114,193,0, + 0,0,114,155,0,0,0,114,161,0,0,0,114,8,0,0, + 0,114,244,0,0,0,114,11,0,0,0,41,10,218,10,115, + 121,115,95,109,111,100,117,108,101,218,11,95,105,109,112,95, + 109,111,100,117,108,101,90,11,109,111,100,117,108,101,95,116, + 121,112,101,114,20,0,0,0,114,110,0,0,0,114,122,0, + 0,0,114,109,0,0,0,90,11,115,101,108,102,95,109,111, + 100,117,108,101,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,32,32,32,32,32,32,32,32,32,32,114,5,0,0, + 0,218,6,95,115,101,116,117,112,137,4,0,0,115,40,0, + 0,0,4,9,4,1,8,3,18,1,10,1,10,1,6,1, + 10,1,6,1,2,2,10,1,10,1,2,128,10,3,8,1, + 10,1,10,1,10,2,14,1,4,251,114,17,0,0,0,114, + 248,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,67,0,0,0,115,38,0,0,0,116,0, + 124,0,124,1,131,2,1,0,116,1,106,2,160,3,116,4, + 161,1,1,0,116,1,106,2,160,3,116,5,161,1,1,0, + 100,1,83,0,41,2,122,48,73,110,115,116,97,108,108,32, + 105,109,112,111,114,116,101,114,115,32,102,111,114,32,98,117, + 105,108,116,105,110,32,97,110,100,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,115,78,41,6,114,248,0,0,0, + 114,18,0,0,0,114,214,0,0,0,114,132,0,0,0,114, + 175,0,0,0,114,193,0,0,0,41,2,114,246,0,0,0, + 114,247,0,0,0,32,32,114,5,0,0,0,218,8,95,105, + 110,115,116,97,108,108,172,4,0,0,115,6,0,0,0,10, + 2,12,2,16,1,114,17,0,0,0,114,249,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,32,0,0,0,100,1,100,2,108,0,125, + 0,124,0,97,1,124,0,160,2,116,3,106,4,116,5,25, + 0,161,1,1,0,100,2,83,0,41,3,122,57,73,110,115, + 116,97,108,108,32,105,109,112,111,114,116,101,114,115,32,116, + 104,97,116,32,114,101,113,117,105,114,101,32,101,120,116,101, + 114,110,97,108,32,102,105,108,101,115,121,115,116,101,109,32, + 97,99,99,101,115,115,114,26,0,0,0,78,41,6,218,26, + 95,102,114,111,122,101,110,95,105,109,112,111,114,116,108,105, + 98,95,101,120,116,101,114,110,97,108,114,139,0,0,0,114, + 249,0,0,0,114,18,0,0,0,114,105,0,0,0,114,8, + 0,0,0,41,1,114,250,0,0,0,32,114,5,0,0,0, + 218,27,95,105,110,115,116,97,108,108,95,101,120,116,101,114, + 110,97,108,95,105,109,112,111,114,116,101,114,115,180,4,0, + 0,115,6,0,0,0,8,3,4,1,20,1,114,17,0,0, + 0,114,251,0,0,0,114,190,0,0,0,114,0,0,0,0, + 114,25,0,0,0,41,4,78,78,114,23,0,0,0,114,26, + 0,0,0,41,54,114,9,0,0,0,114,6,0,0,0,114, + 27,0,0,0,114,101,0,0,0,114,72,0,0,0,114,139, + 0,0,0,114,16,0,0,0,114,21,0,0,0,114,67,0, + 0,0,114,38,0,0,0,114,48,0,0,0,114,22,0,0, + 0,114,24,0,0,0,114,56,0,0,0,114,58,0,0,0, + 114,61,0,0,0,114,73,0,0,0,114,75,0,0,0,114, + 84,0,0,0,114,95,0,0,0,114,100,0,0,0,114,111, + 0,0,0,114,124,0,0,0,114,125,0,0,0,114,104,0, + 0,0,114,155,0,0,0,114,161,0,0,0,114,165,0,0, + 0,114,119,0,0,0,114,106,0,0,0,114,172,0,0,0, + 114,173,0,0,0,114,107,0,0,0,114,175,0,0,0,114, + 193,0,0,0,114,200,0,0,0,114,211,0,0,0,114,213, + 0,0,0,114,215,0,0,0,114,221,0,0,0,90,15,95, + 69,82,82,95,77,83,71,95,80,82,69,70,73,88,114,223, + 0,0,0,114,226,0,0,0,218,6,111,98,106,101,99,116, + 114,227,0,0,0,114,228,0,0,0,114,229,0,0,0,114, + 234,0,0,0,114,240,0,0,0,114,243,0,0,0,114,244, + 0,0,0,114,248,0,0,0,114,249,0,0,0,114,251,0, + 0,0,114,23,0,0,0,114,5,0,0,0,218,8,60,109, + 111,100,117,108,101,62,1,0,0,0,115,104,0,0,0,4, + 0,8,22,4,9,4,1,4,1,4,3,8,3,8,8,4, + 8,4,2,16,3,14,4,14,77,14,21,8,16,8,37,8, + 17,14,11,8,8,8,11,8,12,8,19,14,26,16,101,10, + 26,14,45,8,72,8,17,8,17,8,30,8,36,8,45,14, + 15,14,80,14,85,8,13,8,9,10,10,8,47,4,16,8, + 1,8,2,6,32,8,3,10,16,14,15,8,37,10,27,8, + 37,8,7,8,35,12,8,114,17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 778cca1718bf8..e353132c55854 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -223,10 +223,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,67,0,0,0,126,0,0,0,115,6,0,0, 0,10,2,2,1,8,255,114,9,0,0,0,99,1,0,0, 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, - 0,115,68,0,0,0,135,2,116,0,136,2,102,1,100,1, + 0,115,68,0,0,0,135,0,116,0,136,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,20,100,4,137,2,102,2,83,0,137,2, - 100,5,124,1,133,2,25,0,137,2,124,1,100,6,23,0, + 100,3,107,0,114,20,100,4,137,0,102,2,83,0,137,0, + 100,5,124,1,133,2,25,0,137,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, @@ -240,1108 +240,1084 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,10,0,0,0,78,114,3,0,0,0,41,2, - 218,3,109,97,120,114,51,0,0,0,41,3,114,65,0,0, - 0,218,1,105,114,65,0,0,0,96,32,64,114,7,0,0, - 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, - 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, - 1,114,9,0,0,0,114,73,0,0,0,99,1,0,0,0, + 218,3,109,97,120,114,51,0,0,0,41,2,114,65,0,0, + 0,218,1,105,96,32,114,7,0,0,0,218,11,95,112,97, + 116,104,95,115,112,108,105,116,132,0,0,0,115,10,0,0, + 0,2,128,22,2,8,1,8,1,28,1,114,9,0,0,0, + 114,73,0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19, + 0,0,0,90,4,115,116,97,116,169,1,114,65,0,0,0, + 32,114,7,0,0,0,218,10,95,112,97,116,104,95,115,116, + 97,116,140,0,0,0,115,2,0,0,0,10,7,114,9,0, + 0,0,114,75,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,67,0,0,0,115,50,0,0, + 0,9,0,116,0,124,0,131,1,125,2,110,11,35,0,4, + 0,116,1,121,24,1,0,1,0,1,0,89,0,100,1,83, + 0,37,0,124,2,106,2,100,2,64,0,124,1,107,2,83, + 0,119,0,41,4,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,78,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, + 32,32,32,114,7,0,0,0,218,18,95,112,97,116,104,95, + 105,115,95,109,111,100,101,95,116,121,112,101,150,0,0,0, + 115,16,0,0,0,2,2,10,1,2,128,12,1,6,1,2, + 128,14,1,2,254,115,12,0,0,0,129,4,6,0,134,7, + 16,7,152,1,16,7,114,79,0,0,0,99,1,0,0,0, 0,0,0,0,0,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, - 2,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,78,41,2,114,19,0,0,0,90,4,115,116,97,116,169, - 1,114,65,0,0,0,32,114,7,0,0,0,218,10,95,112, - 97,116,104,95,115,116,97,116,140,0,0,0,115,2,0,0, - 0,10,7,114,9,0,0,0,114,75,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,50,0,0,0,9,0,116,0,124,0,131,1,125, - 2,110,11,35,0,4,0,116,1,121,24,1,0,1,0,1, - 0,89,0,100,1,83,0,37,0,124,2,106,2,100,2,64, - 0,124,1,107,2,83,0,119,0,41,4,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,78,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,32,32,32,114,7,0,0,0,218,18, - 95,112,97,116,104,95,105,115,95,109,111,100,101,95,116,121, - 112,101,150,0,0,0,115,16,0,0,0,2,2,10,1,2, - 128,12,1,6,1,2,128,14,1,2,254,115,12,0,0,0, - 129,4,6,0,134,7,16,7,152,1,16,7,114,79,0,0, - 0,99,1,0,0,0,0,0,0,0,0,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,3,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,78,41,1, - 114,79,0,0,0,114,74,0,0,0,32,114,7,0,0,0, - 218,12,95,112,97,116,104,95,105,115,102,105,108,101,159,0, - 0,0,243,2,0,0,0,10,2,114,9,0,0,0,114,80, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,67,0,0,0,115,22,0,0,0,124,0,115, - 6,116,0,160,1,161,0,125,0,116,2,124,0,100,1,131, - 2,83,0,41,3,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,78,41,3,114,19,0, - 0,0,218,6,103,101,116,99,119,100,114,79,0,0,0,114, - 74,0,0,0,32,114,7,0,0,0,218,11,95,112,97,116, - 104,95,105,115,100,105,114,164,0,0,0,115,6,0,0,0, - 4,2,8,1,10,1,114,9,0,0,0,114,83,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,62,0,0,0,124,0,115,4,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,30,124,1,160,4,100,6,161,1,112,30,124,1, - 160,5,100,4,161,1,83,0,41,8,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,3,0,0,0,122, - 2,92,92,78,41,6,114,19,0,0,0,114,56,0,0,0, - 218,7,114,101,112,108,97,99,101,114,4,0,0,0,114,27, - 0,0,0,114,58,0,0,0,41,2,114,65,0,0,0,114, - 64,0,0,0,32,32,114,7,0,0,0,218,11,95,112,97, - 116,104,95,105,115,97,98,115,172,0,0,0,115,8,0,0, - 0,4,2,4,1,22,1,32,1,114,9,0,0,0,114,86, - 0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,114,84,0,0,0,78,41, - 2,114,27,0,0,0,114,51,0,0,0,114,74,0,0,0, - 32,114,7,0,0,0,114,86,0,0,0,180,0,0,0,114, - 81,0,0,0,114,9,0,0,0,233,182,1,0,0,99,3, - 0,0,0,0,0,0,0,0,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,9,0,116,7,160,8,124,4, - 100,3,161,2,53,0,125,5,124,5,160,9,124,1,161,1, - 1,0,100,4,4,0,4,0,131,3,1,0,110,11,35,0, - 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,116,2,160,10,124,3,124,0,161,2,1,0, - 100,4,83,0,35,0,4,0,116,11,121,88,1,0,1,0, - 1,0,9,0,116,2,160,12,124,3,161,1,1,0,130,0, - 35,0,4,0,116,11,121,87,1,0,1,0,1,0,89,0, - 130,0,37,0,37,0,119,0,119,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,87,0,0,0,90,2,119,98, - 78,41,13,218,6,102,111,114,109,97,116,218,2,105,100,114, - 19,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,85,0,0,0,114,76, - 0,0,0,90,6,117,110,108,105,110,107,41,6,114,65,0, - 0,0,114,42,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, - 32,32,32,32,32,32,114,7,0,0,0,218,13,95,119,114, - 105,116,101,95,97,116,111,109,105,99,185,0,0,0,115,44, - 0,0,0,16,5,6,1,22,1,4,255,2,2,14,3,10, - 1,12,255,22,128,16,2,2,128,12,1,2,1,10,1,2, - 3,2,128,12,254,2,1,2,1,4,128,2,254,2,253,115, - 69,0,0,0,153,6,62,0,159,6,43,3,165,6,62,0, - 171,4,47,11,175,1,62,0,176,3,47,11,179,9,62,0, - 190,7,65,22,7,193,6,5,65,12,6,193,11,1,65,22, - 7,193,12,7,65,21,13,193,19,3,65,22,7,193,23,1, - 65,21,13,193,24,1,65,22,7,114,95,0,0,0,105,127, - 13,0,0,114,45,0,0,0,114,33,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,119,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,5,0,0,0,67,0,0,0,115,80,1, - 0,0,124,1,100,1,117,1,114,26,116,0,160,1,100,2, - 116,2,161,2,1,0,124,2,100,1,117,1,114,20,100,3, - 125,3,116,3,124,3,131,1,130,1,124,1,114,24,100,4, - 110,1,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,57,116,11,100,7, - 131,1,130,1,100,4,160,12,124,6,114,63,124,6,110,1, - 124,8,124,7,124,9,103,3,161,1,125,10,124,2,100,1, - 117,0,114,86,116,8,106,13,106,14,100,8,107,2,114,82, - 100,4,125,2,110,4,116,8,106,13,106,14,125,2,116,15, - 124,2,131,1,125,2,124,2,100,4,107,3,114,112,124,2, - 160,16,161,0,115,105,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,114,162,116,22,124,4,131,1,115,134, - 116,23,116,4,160,24,161,0,124,4,131,2,125,4,124,4, - 100,5,25,0,100,11,107,2,114,152,124,4,100,8,25,0, - 116,25,118,1,114,152,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,10,0,0,0,114,3,0,0,0,218,1, - 46,250,36,115,121,115,46,105,109,112,108,101,109,101,110,116, + 115,10,0,0,0,116,0,124,0,100,1,131,2,83,0,41, + 3,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,78,41,1,114,79,0,0,0,114, + 74,0,0,0,32,114,7,0,0,0,218,12,95,112,97,116, + 104,95,105,115,102,105,108,101,159,0,0,0,243,2,0,0, + 0,10,2,114,9,0,0,0,114,80,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, + 0,0,115,22,0,0,0,124,0,115,6,116,0,160,1,161, + 0,125,0,116,2,124,0,100,1,131,2,83,0,41,3,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,78,41,3,114,19,0,0,0,218,6,103,101, + 116,99,119,100,114,79,0,0,0,114,74,0,0,0,32,114, + 7,0,0,0,218,11,95,112,97,116,104,95,105,115,100,105, + 114,164,0,0,0,115,6,0,0,0,4,2,8,1,10,1, + 114,9,0,0,0,114,83,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 62,0,0,0,124,0,115,4,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,30,124,1, + 160,4,100,6,161,1,112,30,124,1,160,5,100,4,161,1, + 83,0,41,8,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,3,0,0,0,122,2,92,92,78,41,6, + 114,19,0,0,0,114,56,0,0,0,218,7,114,101,112,108, + 97,99,101,114,4,0,0,0,114,27,0,0,0,114,58,0, + 0,0,41,2,114,65,0,0,0,114,64,0,0,0,32,32, + 114,7,0,0,0,218,11,95,112,97,116,104,95,105,115,97, + 98,115,172,0,0,0,115,8,0,0,0,4,2,4,1,22, + 1,32,1,114,9,0,0,0,114,86,0,0,0,99,1,0, + 0,0,0,0,0,0,0,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,2,114,84,0,0,0,78,41,2,114,27,0,0,0, + 114,51,0,0,0,114,74,0,0,0,32,114,7,0,0,0, + 114,86,0,0,0,180,0,0,0,114,81,0,0,0,114,9, + 0,0,0,233,182,1,0,0,99,3,0,0,0,0,0,0, + 0,0,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,9,0,116,7,160,8,124,4,100,3,161,2,53,0, + 125,5,124,5,160,9,124,1,161,1,1,0,100,4,4,0, + 4,0,131,3,1,0,110,11,35,0,49,0,115,48,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,116,2, + 160,10,124,3,124,0,161,2,1,0,100,4,83,0,35,0, + 4,0,116,11,121,88,1,0,1,0,1,0,9,0,116,2, + 160,12,124,3,161,1,1,0,130,0,35,0,4,0,116,11, + 121,87,1,0,1,0,1,0,89,0,130,0,37,0,37,0, + 119,0,119,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,87,0,0,0,90,2,119,98,78,41,13,218,6,102, + 111,114,109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0,0,90,6,117, + 110,108,105,110,107,41,6,114,65,0,0,0,114,42,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,32,32,32,32,32,32, + 114,7,0,0,0,218,13,95,119,114,105,116,101,95,97,116, + 111,109,105,99,185,0,0,0,115,44,0,0,0,16,5,6, + 1,22,1,4,255,2,2,14,3,10,1,12,255,22,128,16, + 2,2,128,12,1,2,1,10,1,2,3,2,128,12,254,2, + 1,2,1,4,128,2,254,2,253,115,69,0,0,0,153,6, + 62,0,159,6,43,3,165,6,62,0,171,4,47,11,175,1, + 62,0,176,3,47,11,179,9,62,0,190,7,65,22,7,193, + 6,5,65,12,6,193,11,1,65,22,7,193,12,7,65,21, + 13,193,19,3,65,22,7,193,23,1,65,21,13,193,24,1, + 65,22,7,114,95,0,0,0,105,128,13,0,0,114,45,0, + 0,0,114,33,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,119,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,5, + 0,0,0,67,0,0,0,115,80,1,0,0,124,1,100,1, + 117,1,114,26,116,0,160,1,100,2,116,2,161,2,1,0, + 124,2,100,1,117,1,114,20,100,3,125,3,116,3,124,3, + 131,1,130,1,124,1,114,24,100,4,110,1,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,57,116,11,100,7,131,1,130,1,100,4, + 160,12,124,6,114,63,124,6,110,1,124,8,124,7,124,9, + 103,3,161,1,125,10,124,2,100,1,117,0,114,86,116,8, + 106,13,106,14,100,8,107,2,114,82,100,4,125,2,110,4, + 116,8,106,13,106,14,125,2,116,15,124,2,131,1,125,2, + 124,2,100,4,107,3,114,112,124,2,160,16,161,0,115,105, + 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, + 114,162,116,22,124,4,131,1,115,134,116,23,116,4,160,24, + 161,0,124,4,131,2,125,4,124,4,100,5,25,0,100,11, + 107,2,114,152,124,4,100,8,25,0,116,25,118,1,114,152, + 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,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, - 11,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,19,0,0,0, - 218,6,102,115,112,97,116,104,114,73,0,0,0,218,10,114, - 112,97,114,116,105,116,105,111,110,114,16,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,17,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,89,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,86,0,0,0,114, - 67,0,0,0,114,82,0,0,0,114,51,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,96,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,6,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,32,32,32,32,32,32,32,32,32,32,32,32,114,7,0, - 0,0,218,17,99,97,99,104,101,95,102,114,111,109,95,115, - 111,117,114,99,101,130,1,0,0,115,72,0,0,0,8,18, - 6,1,2,1,4,255,8,2,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,1,8,2,8,1,8,1,8,1,14,1,14,1,12,1, - 10,1,8,9,14,1,24,5,12,1,2,4,4,1,8,1, - 2,1,4,253,12,5,114,9,0,0,0,114,121,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,40,1,0,0,116,0,106,1,106,2, - 100,1,117,0,114,10,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,51,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,51,124,1,116,12, - 124,4,131,1,100,1,133,2,25,0,125,1,100,4,125,3, - 124,3,115,72,116,6,124,1,131,1,92,2,125,1,125,5, - 124,5,116,13,107,3,114,72,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,88,116,14,100,8, - 124,2,155,2,157,2,131,1,130,1,124,6,100,9,107,2, - 114,132,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,112,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, - 115,132,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,98,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,97,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,122,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,16,0,0,0,114,105,0,0,0,114,106, - 0,0,0,114,107,0,0,0,114,19,0,0,0,114,103,0, - 0,0,114,73,0,0,0,114,114,0,0,0,114,50,0,0, - 0,114,51,0,0,0,114,27,0,0,0,114,59,0,0,0, - 114,4,0,0,0,114,116,0,0,0,114,111,0,0,0,218, - 5,99,111,117,110,116,218,6,114,115,112,108,105,116,114,112, - 0,0,0,114,110,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,118,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,96,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,32,32,32,32,32,32,32,32,32,32,114,7,0,0, - 0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99, - 97,99,104,101,201,1,0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8, - 1,14,1,8,1,16,1,10,1,4,1,2,1,8,255,16, - 2,8,1,16,1,14,2,18,1,114,9,0,0,0,114,128, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,67,0,0,0,115,126,0,0,0,116,0,124, - 0,131,1,100,1,107,2,114,8,100,2,83,0,124,0,160, - 1,100,3,161,1,92,3,125,1,125,2,125,3,124,1,114, - 28,124,3,160,2,161,0,100,4,100,5,133,2,25,0,100, - 6,107,3,114,30,124,0,83,0,9,0,116,3,124,0,131, - 1,125,4,110,18,35,0,4,0,116,4,116,5,102,2,121, - 62,1,0,1,0,1,0,124,0,100,2,100,5,133,2,25, - 0,125,4,89,0,110,1,37,0,116,6,124,4,131,1,114, - 60,124,4,83,0,124,0,83,0,119,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,97,0,0,0,233,253,255,255,255,233,255,255,255,255, - 90,2,112,121,41,7,114,4,0,0,0,114,104,0,0,0, - 218,5,108,111,119,101,114,114,128,0,0,0,114,107,0,0, - 0,114,111,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,119,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,32,32,32,32, - 32,114,7,0,0,0,218,15,95,103,101,116,95,115,111,117, - 114,99,101,102,105,108,101,241,1,0,0,115,26,0,0,0, - 12,7,4,1,16,1,24,1,4,1,2,1,10,1,2,128, - 16,1,16,1,2,128,16,1,2,254,115,12,0,0,0,159, - 4,36,0,164,15,53,7,190,1,53,7,114,135,0,0,0, + 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,10, + 0,0,0,114,3,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,11,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,19,0,0,0,218,6,102,115,112,97, + 116,104,114,73,0,0,0,218,10,114,112,97,114,116,105,116, + 105,111,110,114,16,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,17,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,89,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,86,0,0,0,114,67,0,0,0,114,82, + 0,0,0,114,51,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,96,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,6,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,32,32,32,32,32, + 32,32,32,32,32,32,32,114,7,0,0,0,218,17,99,97, + 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,131, + 1,0,0,115,72,0,0,0,8,18,6,1,2,1,4,255, + 8,2,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,1,8,2,8,1, + 8,1,8,1,14,1,14,1,12,1,10,1,8,9,14,1, + 24,5,12,1,2,4,4,1,8,1,2,1,4,253,12,5, + 114,9,0,0,0,114,121,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, + 40,1,0,0,116,0,106,1,106,2,100,1,117,0,114,10, + 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,51,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,51,124,1,116,12,124,4,131,1,100,1, + 133,2,25,0,125,1,100,4,125,3,124,3,115,72,116,6, + 124,1,131,1,92,2,125,1,125,5,124,5,116,13,107,3, + 114,72,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,88,116,14,100,8,124,2,155,2,157,2, + 131,1,130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16, + 0,0,0,114,105,0,0,0,114,106,0,0,0,114,107,0, + 0,0,114,19,0,0,0,114,103,0,0,0,114,73,0,0, + 0,114,114,0,0,0,114,50,0,0,0,114,51,0,0,0, + 114,27,0,0,0,114,59,0,0,0,114,4,0,0,0,114, + 116,0,0,0,114,111,0,0,0,218,5,99,111,117,110,116, + 218,6,114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,32,32,32,32, + 32,32,32,32,32,32,114,7,0,0,0,218,17,115,111,117, + 114,99,101,95,102,114,111,109,95,99,97,99,104,101,202,1, + 0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16, + 1,10,1,4,1,2,1,8,255,16,2,8,1,16,1,14, + 2,18,1,114,9,0,0,0,114,128,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,67,0, + 0,0,115,126,0,0,0,116,0,124,0,131,1,100,1,107, + 2,114,8,100,2,83,0,124,0,160,1,100,3,161,1,92, + 3,125,1,125,2,125,3,124,1,114,28,124,3,160,2,161, + 0,100,4,100,5,133,2,25,0,100,6,107,3,114,30,124, + 0,83,0,9,0,116,3,124,0,131,1,125,4,110,18,35, + 0,4,0,116,4,116,5,102,2,121,62,1,0,1,0,1, + 0,124,0,100,2,100,5,133,2,25,0,125,4,89,0,110, + 1,37,0,116,6,124,4,131,1,114,60,124,4,83,0,124, + 0,83,0,119,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,97,0,0,0, + 233,253,255,255,255,233,255,255,255,255,90,2,112,121,41,7, + 114,4,0,0,0,114,104,0,0,0,218,5,108,111,119,101, + 114,114,128,0,0,0,114,107,0,0,0,114,111,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,119,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,32,32,32,32,32,114,7,0,0,0, + 218,15,95,103,101,116,95,115,111,117,114,99,101,102,105,108, + 101,242,1,0,0,115,26,0,0,0,12,7,4,1,16,1, + 24,1,4,1,2,1,10,1,2,128,16,1,16,1,2,128, + 16,1,2,254,115,12,0,0,0,159,4,36,0,164,15,53, + 7,190,1,53,7,114,135,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, + 70,0,0,0,124,0,160,0,116,1,116,2,131,1,161,1, + 114,23,9,0,116,3,124,0,131,1,83,0,35,0,4,0, + 116,4,121,34,1,0,1,0,1,0,89,0,100,0,83,0, + 37,0,124,0,160,0,116,1,116,5,131,1,161,1,114,32, + 124,0,83,0,100,0,83,0,119,0,114,69,0,0,0,41, + 6,114,58,0,0,0,218,5,116,117,112,108,101,114,127,0, + 0,0,114,121,0,0,0,114,107,0,0,0,114,113,0,0, + 0,41,1,114,120,0,0,0,32,114,7,0,0,0,218,11, + 95,103,101,116,95,99,97,99,104,101,100,5,2,0,0,115, + 22,0,0,0,14,1,2,1,8,1,2,128,12,1,6,1, + 2,128,14,1,4,1,4,2,2,251,115,12,0,0,0,136, + 3,12,0,140,7,22,7,162,1,22,7,114,137,0,0,0, 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,70,0,0,0,124,0,160,0,116,1, - 116,2,131,1,161,1,114,23,9,0,116,3,124,0,131,1, - 83,0,35,0,4,0,116,4,121,34,1,0,1,0,1,0, - 89,0,100,0,83,0,37,0,124,0,160,0,116,1,116,5, - 131,1,161,1,114,32,124,0,83,0,100,0,83,0,119,0, - 114,69,0,0,0,41,6,114,58,0,0,0,218,5,116,117, - 112,108,101,114,127,0,0,0,114,121,0,0,0,114,107,0, - 0,0,114,113,0,0,0,41,1,114,120,0,0,0,32,114, - 7,0,0,0,218,11,95,103,101,116,95,99,97,99,104,101, - 100,4,2,0,0,115,22,0,0,0,14,1,2,1,8,1, - 2,128,12,1,6,1,2,128,14,1,4,1,4,2,2,251, - 115,12,0,0,0,136,3,12,0,140,7,22,7,162,1,22, - 7,114,137,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,8,0,0,0,67,0,0,0,115,52,0,0,0, - 9,0,116,0,124,0,131,1,106,1,125,1,110,12,35,0, - 4,0,116,2,121,25,1,0,1,0,1,0,100,1,125,1, - 89,0,110,1,37,0,124,1,100,2,79,0,125,1,124,1, - 83,0,119,0,41,4,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,87,0,0,0, - 233,128,0,0,0,78,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,32,32,114,7,0,0,0,218,10,95,99,97,108, - 99,95,109,111,100,101,16,2,0,0,115,18,0,0,0,2, - 2,12,1,2,128,12,1,8,1,2,128,8,3,4,1,2, - 251,115,12,0,0,0,129,5,7,0,135,9,18,7,153,1, - 18,7,114,139,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,3,0,0,0,115,54,0,0, - 0,135,3,100,6,136,3,102,1,100,2,100,3,132,9,125, - 1,116,0,100,1,117,1,114,16,116,0,106,1,125,2,110, - 4,100,4,100,5,132,0,125,2,124,2,124,1,137,3,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,5,0,0,0,31,0,0,0,115,76,0, - 0,0,124,1,100,0,117,0,114,8,124,0,106,0,125,1, - 110,18,124,0,106,0,124,1,107,3,114,26,116,1,100,1, - 124,0,106,0,155,1,100,2,124,1,155,1,157,4,124,1, - 100,3,141,2,130,1,137,4,124,0,124,1,103,2,124,2, - 162,1,82,0,105,0,124,3,164,1,142,1,83,0,41,4, - 78,122,11,108,111,97,100,101,114,32,102,111,114,32,122,15, - 32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,169, - 1,218,4,110,97,109,101,41,2,114,141,0,0,0,218,11, - 73,109,112,111,114,116,69,114,114,111,114,41,5,218,4,115, - 101,108,102,114,141,0,0,0,218,4,97,114,103,115,218,6, - 107,119,97,114,103,115,218,6,109,101,116,104,111,100,32,32, - 32,32,128,114,7,0,0,0,218,19,95,99,104,101,99,107, - 95,110,97,109,101,95,119,114,97,112,112,101,114,36,2,0, - 0,115,18,0,0,0,8,1,8,1,10,1,4,1,12,1, - 2,255,2,1,6,255,24,2,114,9,0,0,0,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,7,0,0,0,83,0,0,0,115,56,0,0, - 0,100,1,68,0,93,16,125,2,116,0,124,1,124,2,131, - 2,114,18,116,1,124,0,124,2,116,2,124,1,124,2,131, - 2,131,3,1,0,113,2,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,85,0,0,0,32,32,32,114,7, - 0,0,0,218,5,95,119,114,97,112,49,2,0,0,115,10, - 0,0,0,8,1,10,1,18,1,2,128,18,1,114,9,0, - 0,0,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,114,69, - 0,0,0,41,2,218,10,95,98,111,111,116,115,116,114,97, - 112,114,157,0,0,0,41,4,114,146,0,0,0,114,147,0, - 0,0,114,157,0,0,0,114,146,0,0,0,96,32,32,64, - 114,7,0,0,0,218,11,95,99,104,101,99,107,95,110,97, - 109,101,28,2,0,0,115,14,0,0,0,2,128,14,8,8, - 10,8,1,8,2,10,6,4,1,114,9,0,0,0,114,159, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 6,0,0,0,67,0,0,0,115,72,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,161, - 1,92,2,125,2,125,3,124,2,100,2,117,0,114,34,116, - 4,124,3,131,1,114,34,100,3,125,4,116,0,160,1,124, - 4,160,5,124,3,100,4,25,0,161,1,116,6,161,2,1, - 0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109,111,100,117,108, - 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, - 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, - 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,7,114,99,0,0,0,114,100,0,0,0, - 114,101,0,0,0,218,11,102,105,110,100,95,108,111,97,100, - 101,114,114,4,0,0,0,114,89,0,0,0,218,13,73,109, - 112,111,114,116,87,97,114,110,105,110,103,41,5,114,143,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,32,32,32,32,32,114,7,0,0,0,218,17,95, - 102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,109, - 59,2,0,0,115,16,0,0,0,6,7,2,2,4,254,14, - 6,16,1,4,1,22,1,4,1,114,9,0,0,0,114,166, - 0,0,0,99,3,0,0,0,0,0,0,0,0,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, - 32,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,53,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,81,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, - 32,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,142,0,0,0,114,4,0, - 0,0,218,8,69,79,70,69,114,114,111,114,114,43,0,0, - 0,41,6,114,42,0,0,0,114,141,0,0,0,218,11,101, - 120,99,95,100,101,116,97,105,108,115,90,5,109,97,103,105, - 99,114,117,0,0,0,114,17,0,0,0,32,32,32,32,32, - 32,114,7,0,0,0,218,13,95,99,108,97,115,115,105,102, - 121,95,112,121,99,79,2,0,0,115,28,0,0,0,12,16, - 8,1,16,1,12,1,16,1,12,1,10,1,12,1,8,1, - 16,1,8,2,16,1,16,1,4,1,114,9,0,0,0,114, - 175,0,0,0,99,5,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0, - 131,1,124,2,100,3,64,0,107,3,114,58,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,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,169,0,0,0,233,12,0, - 0,0,114,31,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, - 167,0,0,0,78,114,168,0,0,0,41,4,114,43,0,0, - 0,114,158,0,0,0,114,172,0,0,0,114,142,0,0,0, - 41,6,114,42,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,141,0,0,0,114,174,0,0,0,114,117,0,0, - 0,32,32,32,32,32,32,114,7,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,112,2,0,0,115,18,0,0,0,24,19, - 10,1,12,1,16,1,8,1,22,1,2,255,22,2,8,254, - 114,9,0,0,0,114,179,0,0,0,99,4,0,0,0,0, - 0,0,0,0,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,19,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, + 0,67,0,0,0,115,52,0,0,0,9,0,116,0,124,0, + 131,1,106,1,125,1,110,12,35,0,4,0,116,2,121,25, + 1,0,1,0,1,0,100,1,125,1,89,0,110,1,37,0, + 124,1,100,2,79,0,125,1,124,1,83,0,119,0,41,4, + 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,87,0,0,0,233,128,0,0,0,78, + 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,32,32,114, + 7,0,0,0,218,10,95,99,97,108,99,95,109,111,100,101, + 17,2,0,0,115,18,0,0,0,2,2,12,1,2,128,12, + 1,8,1,2,128,8,3,4,1,2,251,115,12,0,0,0, + 129,5,7,0,135,9,18,7,153,1,18,7,114,139,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,115,54,0,0,0,135,0,100,6,136, + 0,102,1,100,2,100,3,132,9,125,1,116,0,100,1,117, + 1,114,16,116,0,106,1,125,2,110,4,100,4,100,5,132, + 0,125,2,124,2,124,1,137,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,5, + 0,0,0,31,0,0,0,115,76,0,0,0,124,1,100,0, + 117,0,114,8,124,0,106,0,125,1,110,18,124,0,106,0, + 124,1,107,3,114,26,116,1,100,1,124,0,106,0,155,1, + 100,2,124,1,155,1,157,4,124,1,100,3,141,2,130,1, + 137,4,124,0,124,1,103,2,124,2,162,1,82,0,105,0, + 124,3,164,1,142,1,83,0,41,4,78,122,11,108,111,97, + 100,101,114,32,102,111,114,32,122,15,32,99,97,110,110,111, + 116,32,104,97,110,100,108,101,32,169,1,218,4,110,97,109, + 101,41,2,114,141,0,0,0,218,11,73,109,112,111,114,116, + 69,114,114,111,114,41,5,218,4,115,101,108,102,114,141,0, + 0,0,218,4,97,114,103,115,218,6,107,119,97,114,103,115, + 218,6,109,101,116,104,111,100,32,32,32,32,128,114,7,0, + 0,0,218,19,95,99,104,101,99,107,95,110,97,109,101,95, + 119,114,97,112,112,101,114,37,2,0,0,115,18,0,0,0, + 8,1,8,1,10,1,4,1,12,1,2,255,2,1,6,255, + 24,2,114,9,0,0,0,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,7,0, + 0,0,83,0,0,0,115,56,0,0,0,100,1,68,0,93, + 16,125,2,116,0,124,1,124,2,131,2,114,18,116,1,124, + 0,124,2,116,2,124,1,124,2,131,2,131,3,1,0,113, + 2,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,85,0,0,0,32,32,32,114,7,0,0,0,218,5,95, + 119,114,97,112,50,2,0,0,115,10,0,0,0,8,1,10, + 1,18,1,2,128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218, + 10,95,98,111,111,116,115,116,114,97,112,114,157,0,0,0, + 41,3,114,146,0,0,0,114,147,0,0,0,114,157,0,0, + 0,96,32,32,114,7,0,0,0,218,11,95,99,104,101,99, + 107,95,110,97,109,101,29,2,0,0,115,14,0,0,0,2, + 128,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, + 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, + 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, + 3,124,1,161,1,92,2,125,2,125,3,124,2,100,2,117, + 0,114,34,116,4,124,3,131,1,114,34,100,3,125,4,116, + 0,160,1,124,4,160,5,124,3,100,4,25,0,161,1,116, + 6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109, + 111,100,117,108,101,40,41,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, + 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, + 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, + 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, + 116,101,97,100,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,7,114,99,0,0,0,114, + 100,0,0,0,114,101,0,0,0,218,11,102,105,110,100,95, + 108,111,97,100,101,114,114,4,0,0,0,114,89,0,0,0, + 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, + 5,114,143,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,32,32,32,32,32,114,7,0,0, + 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, + 115,104,105,109,60,2,0,0,115,16,0,0,0,6,7,2, + 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, + 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, + 0,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,32,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,53,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,81,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,32,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,142,0,0, + 0,114,4,0,0,0,218,8,69,79,70,69,114,114,111,114, + 114,43,0,0,0,41,6,114,42,0,0,0,114,141,0,0, + 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, + 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, + 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, + 115,115,105,102,121,95,112,121,99,80,2,0,0,115,28,0, + 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, + 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, + 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7, + 133,2,25,0,131,1,124,2,100,3,64,0,107,3,114,58, + 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,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,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,169,0,0,0,114,168,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,142,0,0,0,41,4,114,42,0,0, - 0,218,11,115,111,117,114,99,101,95,104,97,115,104,114,141, - 0,0,0,114,174,0,0,0,32,32,32,32,114,7,0,0, - 0,218,18,95,118,97,108,105,100,97,116,101,95,104,97,115, - 104,95,112,121,99,140,2,0,0,115,14,0,0,0,16,17, - 2,1,8,1,4,255,2,2,6,254,4,255,114,9,0,0, - 0,114,181,0,0,0,99,4,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,67,0,0,0,115,76,0,0,0, - 116,0,160,1,124,0,161,1,125,4,116,2,124,4,116,3, - 131,2,114,28,116,4,160,5,100,1,124,2,161,2,1,0, - 124,3,100,2,117,1,114,26,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,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,141,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, - 172,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,142,0,0, - 0,114,89,0,0,0,41,5,114,42,0,0,0,114,141,0, - 0,0,114,132,0,0,0,114,134,0,0,0,218,4,99,111, - 100,101,32,32,32,32,32,114,7,0,0,0,218,17,95,99, - 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,164, - 2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,1, - 12,1,4,1,10,2,4,1,6,255,114,9,0,0,0,114, - 188,0,0,0,99,3,0,0,0,0,0,0,0,0,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,3,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,78,41,6,218,9,98,121,116, - 101,97,114,114,97,121,114,171,0,0,0,218,6,101,120,116, - 101,110,100,114,37,0,0,0,114,183,0,0,0,218,5,100, - 117,109,112,115,41,4,114,187,0,0,0,218,5,109,116,105, - 109,101,114,178,0,0,0,114,42,0,0,0,32,32,32,32, - 114,7,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,177,2,0, - 0,115,12,0,0,0,8,2,14,1,14,1,14,1,16,1, - 4,1,114,9,0,0,0,114,193,0,0,0,84,99,3,0, - 0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78,41,7,114,189, - 0,0,0,114,171,0,0,0,114,190,0,0,0,114,37,0, - 0,0,114,4,0,0,0,114,183,0,0,0,114,191,0,0, - 0,41,5,114,187,0,0,0,114,180,0,0,0,90,7,99, - 104,101,99,107,101,100,114,42,0,0,0,114,17,0,0,0, - 32,32,32,32,32,114,7,0,0,0,218,17,95,99,111,100, - 101,95,116,111,95,104,97,115,104,95,112,121,99,187,2,0, - 0,115,14,0,0,0,8,2,12,1,14,1,16,1,10,1, - 16,1,4,1,114,9,0,0,0,114,194,0,0,0,99,1, - 0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32,32,32,114,7, - 0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,114, - 99,101,198,2,0,0,115,10,0,0,0,8,5,12,1,10, - 1,12,1,20,1,114,9,0,0,0,114,199,0,0,0,169, - 2,114,163,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,8, - 0,0,0,67,0,0,0,115,60,1,0,0,124,1,100,1, - 117,0,114,29,100,2,125,1,116,0,124,2,100,3,131,2, - 114,28,9,0,124,2,160,1,124,0,161,1,125,1,110,39, - 35,0,4,0,116,2,121,157,1,0,1,0,1,0,89,0, - 110,30,37,0,110,28,116,3,160,4,124,1,161,1,125,1, - 116,5,124,1,131,1,115,57,9,0,116,6,116,3,160,7, - 161,0,124,1,131,2,125,1,110,10,35,0,4,0,116,8, - 121,156,1,0,1,0,1,0,89,0,110,1,37,0,116,9, - 160,10,124,0,124,2,124,1,100,4,166,3,125,4,100,5, - 124,4,95,11,124,2,100,1,117,0,114,99,116,12,131,0, - 68,0,93,21,92,2,125,5,125,6,124,1,160,13,116,14, - 124,6,131,1,161,1,114,96,124,5,124,0,124,1,131,2, - 125,2,124,2,124,4,95,15,1,0,113,99,113,75,100,1, - 83,0,124,3,116,16,117,0,114,131,116,0,124,2,100,6, - 131,2,114,130,9,0,124,2,160,17,124,0,161,1,125,7, - 110,10,35,0,4,0,116,2,121,155,1,0,1,0,1,0, - 89,0,110,10,37,0,124,7,114,130,103,0,124,4,95,18, - 110,3,124,3,124,4,95,18,124,4,106,18,103,0,107,2, - 114,153,124,1,114,153,116,19,124,1,131,1,100,7,25,0, - 125,8,124,4,106,18,160,20,124,8,161,1,1,0,124,4, - 83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0,0,0,114,142, - 0,0,0,114,19,0,0,0,114,103,0,0,0,114,86,0, - 0,0,114,67,0,0,0,114,82,0,0,0,114,76,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,136,0,0,0,114,163,0,0,0,218,9,95, - 80,79,80,85,76,65,84,69,114,205,0,0,0,114,201,0, - 0,0,114,73,0,0,0,114,61,0,0,0,41,9,114,141, - 0,0,0,90,8,108,111,99,97,116,105,111,110,114,163,0, - 0,0,114,201,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,205,0,0,0,90,7,100,105,114,110, - 97,109,101,32,32,32,32,32,32,32,32,32,114,7,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,215,2,0,0,115,96, - 0,0,0,8,12,4,4,10,1,2,2,12,1,2,128,12, - 1,4,1,2,128,2,251,10,7,8,1,2,1,16,1,2, - 128,12,1,4,1,2,128,16,8,6,1,8,3,14,1,14, - 1,10,1,6,1,4,1,2,253,4,5,8,3,10,2,2, - 1,12,1,2,128,12,1,4,1,2,128,4,2,6,1,2, - 128,6,2,10,1,4,1,12,1,12,1,4,2,2,244,2, - 228,2,249,115,44,0,0,0,140,5,18,0,146,7,27,7, - 167,7,47,0,175,7,56,7,193,45,5,65,51,0,193,51, - 7,65,60,7,194,27,1,65,60,7,194,28,1,56,7,194, - 29,1,27,7,114,212,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,88, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, - 2,90,4,100,3,90,5,101,6,111,15,100,4,101,7,118, - 0,90,8,101,9,100,5,100,6,132,0,131,1,90,10,101, - 11,100,7,100,8,132,0,131,1,90,12,101,11,100,14,100, - 10,100,11,132,1,131,1,90,13,101,11,100,15,100,12,100, - 13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100,99,1,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, - 0,115,52,0,0,0,9,0,116,0,160,1,116,0,106,2, - 124,0,161,2,83,0,35,0,4,0,116,3,121,25,1,0, - 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, - 6,0,89,0,83,0,37,0,119,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,114,20, - 0,0,0,32,114,7,0,0,0,218,14,95,111,112,101,110, - 95,114,101,103,105,115,116,114,121,44,3,0,0,115,14,0, - 0,0,2,2,14,1,2,128,12,1,18,1,2,128,2,255, - 115,12,0,0,0,129,6,8,0,136,14,24,7,153,1,24, - 7,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,9,0,0,0,67,0,0,0,115,136,0,0, - 0,124,0,106,0,114,7,124,0,106,1,125,2,110,3,124, - 0,106,2,125,2,124,2,160,3,124,1,100,1,116,4,106, - 5,100,0,100,2,133,2,25,0,22,0,100,3,166,2,125, - 3,9,0,124,0,160,6,124,3,161,1,53,0,125,4,116, - 7,160,8,124,4,100,4,161,2,125,5,100,0,4,0,4, - 0,131,3,1,0,110,11,35,0,49,0,115,48,119,4,37, - 0,1,0,1,0,1,0,89,0,1,0,1,0,124,5,83, - 0,35,0,4,0,116,9,121,67,1,0,1,0,1,0,89, - 0,100,0,83,0,37,0,119,0,41,5,78,122,5,37,100, - 46,37,100,114,45,0,0,0,41,2,114,162,0,0,0,90, - 11,115,121,115,95,118,101,114,115,105,111,110,114,10,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,89,0,0,0,114,16,0,0,0,218,12,118,101, - 114,115,105,111,110,95,105,110,102,111,114,215,0,0,0,114, - 214,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101, - 114,76,0,0,0,41,6,218,3,99,108,115,114,162,0,0, - 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114, - 21,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101, - 112,97,116,104,32,32,32,32,32,32,114,7,0,0,0,218, - 16,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114, - 121,51,3,0,0,115,34,0,0,0,6,2,8,1,6,2, - 6,1,16,1,6,255,2,2,12,1,12,1,12,255,22,128, - 4,4,2,128,12,254,6,1,2,128,2,255,115,39,0,0, - 0,153,5,56,0,158,7,43,3,165,6,56,0,171,4,47, - 11,175,1,56,0,176,3,47,11,179,3,56,0,184,7,65, - 2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124,0,160,0,124, - 1,161,1,125,4,124,4,100,0,117,0,114,11,100,0,83, - 0,9,0,116,1,124,4,131,1,1,0,110,11,35,0,4, - 0,116,2,121,60,1,0,1,0,1,0,89,0,100,0,83, - 0,37,0,116,3,131,0,68,0,93,26,92,2,125,5,125, - 6,124,4,160,4,116,5,124,6,131,1,161,1,114,57,116, - 6,160,7,124,1,124,5,124,1,124,4,131,2,124,4,100, - 1,166,3,125,7,124,7,2,0,1,0,83,0,113,31,100, - 0,83,0,119,0,41,2,78,114,203,0,0,0,41,8,114, - 222,0,0,0,114,75,0,0,0,114,76,0,0,0,114,207, - 0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114,162,0,0,0, - 114,65,0,0,0,218,6,116,97,114,103,101,116,114,221,0, - 0,0,114,163,0,0,0,114,211,0,0,0,114,209,0,0, - 0,32,32,32,32,32,32,32,32,114,7,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,66,3,0,0,115,38,0, - 0,0,10,2,8,1,4,1,2,1,10,1,2,128,12,1, - 6,1,2,128,14,1,14,1,6,1,8,1,2,1,6,254, - 8,3,2,252,4,255,2,254,115,12,0,0,0,140,4,17, - 0,145,7,27,7,188,1,27,7,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,67,0,0,0,115, - 42,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, - 124,0,160,3,124,1,124,2,161,2,125,3,124,3,100,2, - 117,1,114,19,124,3,106,4,83,0,100,2,83,0,41,3, - 122,106,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,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,122,112,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,40, - 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,59,32,117,115,101,32,102,105,110,100,95, - 115,112,101,99,40,41,32,105,110,115,116,101,97,100,78,169, - 5,114,99,0,0,0,114,100,0,0,0,114,101,0,0,0, - 114,225,0,0,0,114,163,0,0,0,169,4,114,220,0,0, - 0,114,162,0,0,0,114,65,0,0,0,114,209,0,0,0, - 32,32,32,32,114,7,0,0,0,218,11,102,105,110,100,95, - 109,111,100,117,108,101,82,3,0,0,115,14,0,0,0,6, - 7,2,2,4,254,12,3,8,1,6,1,4,2,114,9,0, - 0,0,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,169,2,78,78,114,69,0,0,0,41,15, - 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, - 151,0,0,0,114,218,0,0,0,114,217,0,0,0,218,11, - 95,77,83,95,87,73,78,68,79,87,83,218,18,69,88,84, - 69,78,83,73,79,78,95,83,85,70,70,73,88,69,83,114, - 216,0,0,0,218,12,115,116,97,116,105,99,109,101,116,104, - 111,100,114,215,0,0,0,218,11,99,108,97,115,115,109,101, - 116,104,111,100,114,222,0,0,0,114,225,0,0,0,114,228, - 0,0,0,114,12,0,0,0,114,7,0,0,0,114,213,0, - 0,0,32,3,0,0,115,30,0,0,0,8,0,4,2,2, - 3,2,255,2,4,2,255,12,3,2,2,10,1,2,6,10, - 1,2,14,12,1,2,15,16,1,114,9,0,0,0,114,213, - 0,0,0,99,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, - 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,31,124,4,100,5,107,3,83,0,41,7,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,3, - 0,0,0,114,97,0,0,0,114,0,0,0,0,114,45,0, - 0,0,218,8,95,95,105,110,105,116,95,95,78,41,4,114, - 73,0,0,0,114,202,0,0,0,114,125,0,0,0,114,104, - 0,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, - 120,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,32,32, - 32,32,32,114,7,0,0,0,114,205,0,0,0,104,3,0, - 0,115,8,0,0,0,18,3,16,1,14,1,16,1,114,9, - 0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,0,0,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,12,0,0,0,169,2,114,143,0, - 0,0,114,209,0,0,0,32,32,114,7,0,0,0,218,13, - 99,114,101,97,116,101,95,109,111,100,117,108,101,112,3,0, - 0,243,2,0,0,0,4,0,114,9,0,0,0,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, + 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,169,0,0, + 0,233,12,0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4, + 114,43,0,0,0,114,158,0,0,0,114,172,0,0,0,114, + 142,0,0,0,41,6,114,42,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,141,0,0,0,114,174,0,0,0, + 114,117,0,0,0,32,32,32,32,32,32,114,7,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,113,2,0,0,115,18,0, + 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, + 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, + 0,0,0,0,0,0,0,0,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,19,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,169,0,0, + 0,114,168,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,142,0,0,0,41,4, + 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, + 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, + 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, + 95,104,97,115,104,95,112,121,99,141,2,0,0,115,14,0, + 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, + 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, 0,0,0,0,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,18,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,142,0,0,0, - 114,89,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,143,0,0,0,218,6,109,111,100,117,108,101,114, - 187,0,0,0,32,32,32,114,7,0,0,0,218,11,101,120, - 101,99,95,109,111,100,117,108,101,115,3,0,0,115,12,0, - 0,0,12,2,8,1,4,1,8,1,4,255,20,2,114,9, - 0,0,0,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, + 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, + 124,4,116,3,131,2,114,28,116,4,160,5,100,1,124,2, + 161,2,1,0,124,3,100,2,117,1,114,26,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, + 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,141,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,172,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,142,0,0,0,114,89,0,0,0,41,5,114,42,0,0, + 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, + 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, + 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, + 111,100,101,165,2,0,0,115,18,0,0,0,10,2,10,1, + 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, + 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, + 0,0,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,3,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,78,41,6,218, + 9,98,121,116,101,97,114,114,97,121,114,171,0,0,0,218, + 6,101,120,116,101,110,100,114,37,0,0,0,114,183,0,0, + 0,218,5,100,117,109,112,115,41,4,114,187,0,0,0,218, + 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, + 32,32,32,32,114,7,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,178,2,0,0,115,12,0,0,0,8,2,14,1,14,1, + 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, + 84,99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78, + 41,7,114,189,0,0,0,114,171,0,0,0,114,190,0,0, + 0,114,37,0,0,0,114,4,0,0,0,114,183,0,0,0, + 114,191,0,0,0,41,5,114,187,0,0,0,114,180,0,0, + 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, + 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, + 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, + 99,188,2,0,0,115,14,0,0,0,8,2,12,1,14,1, + 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, + 0,0,99,1,0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32, + 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, + 115,111,117,114,99,101,199,2,0,0,115,10,0,0,0,8, + 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, + 0,0,0,169,2,114,163,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,8,0,0,0,67,0,0,0,115,60,1,0,0, + 124,1,100,1,117,0,114,29,100,2,125,1,116,0,124,2, + 100,3,131,2,114,28,9,0,124,2,160,1,124,0,161,1, + 125,1,110,39,35,0,4,0,116,2,121,157,1,0,1,0, + 1,0,89,0,110,30,37,0,110,28,116,3,160,4,124,1, + 161,1,125,1,116,5,124,1,131,1,115,57,9,0,116,6, + 116,3,160,7,161,0,124,1,131,2,125,1,110,10,35,0, + 4,0,116,8,121,156,1,0,1,0,1,0,89,0,110,1, + 37,0,116,9,160,10,124,0,124,2,124,1,100,4,166,3, + 125,4,100,5,124,4,95,11,124,2,100,1,117,0,114,99, + 116,12,131,0,68,0,93,21,92,2,125,5,125,6,124,1, + 160,13,116,14,124,6,131,1,161,1,114,96,124,5,124,0, + 124,1,131,2,125,2,124,2,124,4,95,15,1,0,113,99, + 113,75,100,1,83,0,124,3,116,16,117,0,114,131,116,0, + 124,2,100,6,131,2,114,130,9,0,124,2,160,17,124,0, + 161,1,125,7,110,10,35,0,4,0,116,2,121,155,1,0, + 1,0,1,0,89,0,110,10,37,0,124,7,114,130,103,0, + 124,4,95,18,110,3,124,3,124,4,95,18,124,4,106,18, + 103,0,107,2,114,153,124,1,114,153,116,19,124,1,131,1, + 100,7,25,0,125,8,124,4,106,18,160,20,124,8,161,1, + 1,0,124,4,83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0, + 0,0,114,142,0,0,0,114,19,0,0,0,114,103,0,0, + 0,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, + 114,76,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,136,0,0,0,114,163,0,0, + 0,218,9,95,80,79,80,85,76,65,84,69,114,205,0,0, + 0,114,201,0,0,0,114,73,0,0,0,114,61,0,0,0, + 41,9,114,141,0,0,0,90,8,108,111,99,97,116,105,111, + 110,114,163,0,0,0,114,201,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,205,0,0,0,90,7, + 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, + 114,7,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,216,2, + 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, + 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, + 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, + 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, + 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, + 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, + 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, + 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, + 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, + 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, + 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, + 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, + 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, + 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, + 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,67,0,0,0,115,52,0,0,0,9,0,116,0,160,1, + 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, + 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, + 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, + 111,112,101,110,95,114,101,103,105,115,116,114,121,45,3,0, + 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, + 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, + 7,153,1,24,7,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,9,0,0,0,67,0,0,0, + 115,136,0,0,0,124,0,106,0,114,7,124,0,106,1,125, + 2,110,3,124,0,106,2,125,2,124,2,160,3,124,1,100, + 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, + 3,166,2,125,3,9,0,124,0,160,6,124,3,161,1,53, + 0,125,4,116,7,160,8,124,4,100,4,161,2,125,5,100, + 0,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, + 48,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,5,83,0,35,0,4,0,116,9,121,67,1,0,1, + 0,1,0,89,0,100,0,83,0,37,0,119,0,41,5,78, + 122,5,37,100,46,37,100,114,45,0,0,0,41,2,114,162, + 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, + 114,10,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,89,0,0,0,114,16,0,0,0, + 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,215, + 0,0,0,114,214,0,0,0,90,10,81,117,101,114,121,86, + 97,108,117,101,114,76,0,0,0,41,6,218,3,99,108,115, + 114,162,0,0,0,90,12,114,101,103,105,115,116,114,121,95, + 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, + 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, + 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, + 105,115,116,114,121,52,3,0,0,115,34,0,0,0,6,2, + 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, + 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, + 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, + 0,171,4,47,11,175,1,56,0,176,3,47,11,179,3,56, + 0,184,7,65,2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124, + 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, + 11,100,0,83,0,9,0,116,1,124,4,131,1,1,0,110, + 11,35,0,4,0,116,2,121,60,1,0,1,0,1,0,89, + 0,100,0,83,0,37,0,116,3,131,0,68,0,93,26,92, + 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, + 1,114,57,116,6,160,7,124,1,124,5,124,1,124,4,131, + 2,124,4,100,1,166,3,125,7,124,7,2,0,1,0,83, + 0,113,31,100,0,83,0,119,0,41,2,78,114,203,0,0, + 0,41,8,114,222,0,0,0,114,75,0,0,0,114,76,0, + 0,0,114,207,0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114, + 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, + 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, + 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, + 0,0,218,9,102,105,110,100,95,115,112,101,99,67,3,0, + 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, + 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, + 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, + 0,140,4,17,0,145,7,27,7,188,1,27,7,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,67, - 0,0,0,115,12,0,0,0,116,0,160,1,124,0,124,1, - 161,2,83,0,41,2,122,26,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,78,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, - 143,0,0,0,114,162,0,0,0,32,32,114,7,0,0,0, - 218,11,108,111,97,100,95,109,111,100,117,108,101,123,3,0, - 0,115,2,0,0,0,12,3,114,9,0,0,0,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, - 205,0,0,0,114,238,0,0,0,114,244,0,0,0,114,247, - 0,0,0,114,12,0,0,0,114,7,0,0,0,114,234,0, - 0,0,99,3,0,0,115,12,0,0,0,8,0,4,2,8, - 3,8,8,8,3,12,8,114,9,0,0,0,114,234,0,0, - 0,99,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,1,0,0,0,67,0,0,0,115,4,0,0,0,116, - 0,130,1,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,143,0,0,0,114,65,0,0,0, - 32,32,114,7,0,0,0,218,10,112,97,116,104,95,109,116, - 105,109,101,131,3,0,0,115,2,0,0,0,4,6,114,9, - 0,0,0,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,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,3,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,192,0,0,0,78,41, - 1,114,250,0,0,0,114,249,0,0,0,32,32,114,7,0, - 0,0,218,10,112,97,116,104,95,115,116,97,116,115,139,3, - 0,0,115,2,0,0,0,14,12,114,9,0,0,0,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,67,0,0,0,115,12,0,0, - 0,124,0,160,0,124,2,124,3,161,2,83,0,41,2,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,78,41,1,218,8,115,101,116,95,100,97, - 116,97,41,4,114,143,0,0,0,114,134,0,0,0,90,10, - 99,97,99,104,101,95,112,97,116,104,114,42,0,0,0,32, - 32,32,32,114,7,0,0,0,218,15,95,99,97,99,104,101, - 95,98,121,116,101,99,111,100,101,153,3,0,0,115,2,0, - 0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, - 0,41,2,122,150,79,112,116,105,111,110,97,108,32,109,101, + 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, + 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, + 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, + 83,0,41,3,122,106,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,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, + 122,112,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,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, + 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, + 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, + 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, + 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, + 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,83,3,0,0,115,14, + 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, + 2,114,9,0,0,0,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,169,2,78,78,114,69,0, + 0,0,41,15,114,149,0,0,0,114,148,0,0,0,114,150, + 0,0,0,114,151,0,0,0,114,218,0,0,0,114,217,0, + 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218, + 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, + 88,69,83,114,216,0,0,0,218,12,115,116,97,116,105,99, + 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, + 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, + 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,213,0,0,0,33,3,0,0,115,30,0,0,0,8, + 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, + 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, + 0,0,114,213,0,0,0,99,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,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,31,124,4,100,5,107,3,83, + 0,41,7,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,3,0,0,0,114,97,0,0,0,114,0,0,0, + 0,114,45,0,0,0,218,8,95,95,105,110,105,116,95,95, + 78,41,4,114,73,0,0,0,114,202,0,0,0,114,125,0, + 0,0,114,104,0,0,0,41,5,114,143,0,0,0,114,162, + 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, + 0,105,3,0,0,115,8,0,0,0,18,3,16,1,14,1, + 16,1,114,9,0,0,0,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,1,0, + 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,169, + 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, + 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, + 101,113,3,0,0,243,2,0,0,0,4,0,114,9,0,0, + 0,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,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,18,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, + 142,0,0,0,114,89,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,143,0,0,0,218,6,109,111,100, + 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, + 218,11,101,120,101,99,95,109,111,100,117,108,101,116,3,0, + 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, + 20,2,114,9,0,0,0,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,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,2,122,26,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,78,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,143,0,0,0,114,162,0,0,0,32,32,114, + 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, + 101,124,3,0,0,115,2,0,0,0,12,3,114,9,0,0, + 0,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,205,0,0,0,114,238,0,0,0,114,244,0, + 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,234,0,0,0,100,3,0,0,115,12,0,0,0,8, + 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, + 114,234,0,0,0,99,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,1,0,0,0,67,0,0,0,115,4, + 0,0,0,116,0,130,1,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,143,0,0,0,114, + 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, + 104,95,109,116,105,109,101,132,3,0,0,115,2,0,0,0, + 4,6,114,9,0,0,0,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,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,3,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,192,0, + 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, + 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, + 116,115,140,3,0,0,115,2,0,0,0,14,12,114,9,0, + 0,0,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,67,0,0,0, + 115,12,0,0,0,124,0,160,0,124,2,124,3,161,2,83, + 0,41,2,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, @@ -1350,1420 +1326,1443 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,12,0,0, - 0,41,3,114,143,0,0,0,114,65,0,0,0,114,42,0, - 0,0,32,32,32,114,7,0,0,0,114,252,0,0,0,163, - 3,0,0,114,239,0,0,0,114,9,0,0,0,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,8,0,0,0,67,0,0,0,115,70,0,0,0,124,0, - 160,0,124,1,161,1,125,2,9,0,124,0,160,1,124,2, - 161,1,125,3,116,4,124,3,131,1,83,0,35,0,4,0, - 116,2,121,34,1,0,125,4,1,0,116,3,100,1,124,1, - 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, - 37,0,119,0,41,4,122,52,67,111,110,99,114,101,116,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,78,41,1,218,8,115,101, + 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, + 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, + 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, + 97,99,104,101,95,98,121,116,101,99,111,100,101,154,3,0, + 0,115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0, + 114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, + 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, + 0,0,0,164,3,0,0,114,239,0,0,0,114,9,0,0, + 0,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,8,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,124,1,161,1,125,2,9,0,124,0, + 160,1,124,2,161,1,125,3,116,4,124,3,131,1,83,0, + 35,0,4,0,116,2,121,34,1,0,125,4,1,0,116,3, + 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, + 126,4,119,1,37,0,119,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,140,0,0,0,78,41, + 5,114,202,0,0,0,218,8,103,101,116,95,100,97,116,97, + 114,76,0,0,0,114,142,0,0,0,114,199,0,0,0,41, + 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, + 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, + 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, + 171,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, + 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, + 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, + 150,7,29,7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,67,0,0,0,115,22,0,0, + 0,116,0,160,1,116,2,124,1,124,2,100,1,100,2,124, + 3,100,3,166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0, + 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, + 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, + 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, + 111,117,114,99,101,95,116,111,95,99,111,100,101,181,3,0, + 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, + 0,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,9,0,0,0,67, + 0,0,0,115,28,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,9,0,116,1,124,2,131,1,125,8, + 110,13,35,0,4,0,116,2,144,1,121,13,1,0,1,0, + 1,0,100,1,125,8,89,0,110,147,37,0,9,0,124,0, + 160,3,124,2,161,1,125,9,110,11,35,0,4,0,116,4, + 144,1,121,12,1,0,1,0,1,0,89,0,110,129,37,0, + 116,5,124,9,100,4,25,0,131,1,125,3,9,0,124,0, + 160,6,124,8,161,1,125,10,110,11,35,0,4,0,116,4, + 144,1,121,11,1,0,1,0,1,0,89,0,110,105,37,0, + 124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8, + 107,3,125,7,116,9,106,10,100,10,107,3,114,140,124,7, + 115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0,124,1, + 124,11,131,5,1,0,110,13,35,0,4,0,116,15,116,16, + 102,2,144,1,121,10,1,0,1,0,1,0,89,0,110,16, + 37,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,114,189,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,1, + 115,7,124,8,100,1,117,1,144,1,114,7,124,3,100,1, + 117,1,144,1,114,7,124,6,114,233,124,5,100,1,117,0, + 114,226,116,9,160,11,124,4,161,1,125,5,116,23,124,14, + 124,5,124,7,131,3,125,10,110,8,116,24,124,14,124,3, + 116,25,124,4,131,1,131,3,125,10,9,0,124,0,160,26, + 124,2,124,8,124,10,161,3,1,0,124,14,83,0,35,0, + 4,0,116,2,144,1,121,9,1,0,1,0,1,0,89,0, + 124,14,83,0,37,0,124,14,83,0,119,0,119,0,119,0, + 119,0,119,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,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,140,0,0,0,78,41,5,114,202,0, - 0,0,218,8,103,101,116,95,100,97,116,97,114,76,0,0, - 0,114,142,0,0,0,114,199,0,0,0,41,5,114,143,0, - 0,0,114,162,0,0,0,114,65,0,0,0,114,197,0,0, - 0,218,3,101,120,99,32,32,32,32,32,114,7,0,0,0, - 218,10,103,101,116,95,115,111,117,114,99,101,170,3,0,0, - 115,26,0,0,0,10,2,2,1,10,1,8,4,2,128,12, - 253,4,1,2,1,4,255,2,1,2,255,10,128,2,255,115, - 20,0,0,0,134,5,15,0,143,7,33,7,150,7,29,7, - 157,4,33,7,162,1,33,7,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,130,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, - 9,0,0,0,67,0,0,0,115,22,0,0,0,116,0,160, - 1,116,2,124,1,124,2,100,1,100,2,124,3,100,3,166, - 6,83,0,41,5,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, - 108,0,0,0,78,41,3,114,158,0,0,0,114,241,0,0, - 0,218,7,99,111,109,112,105,108,101,41,4,114,143,0,0, - 0,114,42,0,0,0,114,65,0,0,0,114,1,1,0,0, - 32,32,32,32,114,7,0,0,0,218,14,115,111,117,114,99, - 101,95,116,111,95,99,111,100,101,180,3,0,0,115,6,0, - 0,0,12,5,4,1,6,255,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115, - 28,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,9,0,116,1,124,2,131,1,125,8,110,13,35,0, - 4,0,116,2,144,1,121,13,1,0,1,0,1,0,100,1, - 125,8,89,0,110,147,37,0,9,0,124,0,160,3,124,2, - 161,1,125,9,110,11,35,0,4,0,116,4,144,1,121,12, - 1,0,1,0,1,0,89,0,110,129,37,0,116,5,124,9, - 100,4,25,0,131,1,125,3,9,0,124,0,160,6,124,8, - 161,1,125,10,110,11,35,0,4,0,116,4,144,1,121,11, - 1,0,1,0,1,0,89,0,110,105,37,0,124,1,124,8, - 100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8,107,3,125,7, - 116,9,106,10,100,10,107,3,114,140,124,7,115,122,116,9, - 106,10,100,11,107,2,114,140,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,10,116,14, - 124,10,124,3,124,9,100,12,25,0,124,1,124,11,131,5, - 1,0,110,13,35,0,4,0,116,15,116,16,102,2,144,1, - 121,10,1,0,1,0,1,0,89,0,110,16,37,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,114,189,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,1,115,7,124,8, - 100,1,117,1,144,1,114,7,124,3,100,1,117,1,144,1, - 114,7,124,6,114,233,124,5,100,1,117,0,114,226,116,9, - 160,11,124,4,161,1,125,5,116,23,124,14,124,5,124,7, - 131,3,125,10,110,8,116,24,124,14,124,3,116,25,124,4, - 131,1,131,3,125,10,9,0,124,0,160,26,124,2,124,8, - 124,10,161,3,1,0,124,14,83,0,35,0,4,0,116,2, - 144,1,121,9,1,0,1,0,1,0,89,0,124,14,83,0, - 37,0,124,14,83,0,119,0,119,0,119,0,119,0,119,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,192,0,0,0,114,182,0,0,0,114, - 168,0,0,0,114,3,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,141,0,0,0,114,132, - 0,0,0,114,134,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, - 202,0,0,0,114,121,0,0,0,114,107,0,0,0,114,251, - 0,0,0,114,76,0,0,0,114,34,0,0,0,114,254,0, - 0,0,114,175,0,0,0,218,10,109,101,109,111,114,121,118, - 105,101,119,114,186,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, - 180,0,0,0,218,17,95,82,65,87,95,77,65,71,73,67, - 95,78,85,77,66,69,82,114,181,0,0,0,114,179,0,0, - 0,114,142,0,0,0,114,173,0,0,0,114,158,0,0,0, - 114,172,0,0,0,114,188,0,0,0,114,4,1,0,0,114, - 16,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,194,0,0,0,114,193, - 0,0,0,114,4,0,0,0,114,253,0,0,0,41,15,114, - 143,0,0,0,114,162,0,0,0,114,134,0,0,0,114,177, - 0,0,0,114,197,0,0,0,114,180,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,132,0,0,0,218,2,115,116, - 114,42,0,0,0,114,174,0,0,0,114,17,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,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,114,7,0,0,0,114,240,0,0, - 0,188,3,0,0,115,188,0,0,0,10,7,4,1,4,1, - 4,1,4,1,4,1,2,1,10,1,2,128,14,1,8,1, - 2,128,2,2,12,1,2,128,14,1,4,1,2,128,12,2, - 2,1,12,1,2,128,14,1,4,1,2,128,2,3,2,1, - 6,254,2,4,12,1,16,1,12,1,4,1,12,1,10,1, - 2,1,2,255,8,2,2,254,10,3,4,1,2,1,2,1, - 4,254,8,4,2,1,4,255,2,128,2,3,2,1,2,1, - 6,1,2,1,2,1,4,251,4,128,18,7,4,1,2,128, - 8,2,2,1,4,255,6,2,2,1,2,1,6,254,8,3, - 10,1,12,1,12,1,18,1,6,1,4,255,4,2,8,1, - 10,1,14,1,6,2,6,1,4,255,2,2,14,1,4,3, - 2,128,14,254,2,1,4,1,2,128,4,0,2,254,2,233, - 2,225,2,250,2,251,115,80,0,0,0,144,4,21,0,149, - 10,33,7,163,5,41,0,169,8,51,7,187,5,65,1,0, - 193,1,8,65,11,7,193,18,65,5,66,24,0,194,24,10, - 66,36,7,195,50,7,67,59,0,195,59,8,68,6,7,196, - 9,1,68,6,7,196,10,1,66,36,7,196,11,1,65,11, - 7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0,114,7,0,0, - 0,114,248,0,0,0,129,3,0,0,115,16,0,0,0,8, - 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, - 9,0,0,0,114,248,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,94, - 0,0,0,135,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,136,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,136,0,4,0,90,12,83, - 0,41,16,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,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,182,0,0,0,41,3,114,143,0,0,0,114,162, - 0,0,0,114,65,0,0,0,32,32,32,114,7,0,0,0, - 114,235,0,0,0,22,4,0,0,115,4,0,0,0,6,3, - 10,1,114,9,0,0,0,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, + 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,192,0,0,0,114,182, + 0,0,0,114,168,0,0,0,114,3,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,141,0, + 0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0, + 0,0,114,251,0,0,0,114,76,0,0,0,114,34,0,0, + 0,114,254,0,0,0,114,175,0,0,0,218,10,109,101,109, + 111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77, + 65,71,73,67,95,78,85,77,66,69,82,114,181,0,0,0, + 114,179,0,0,0,114,142,0,0,0,114,173,0,0,0,114, + 158,0,0,0,114,172,0,0,0,114,188,0,0,0,114,4, + 1,0,0,114,16,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,194,0, + 0,0,114,193,0,0,0,114,4,0,0,0,114,253,0,0, + 0,41,15,114,143,0,0,0,114,162,0,0,0,114,134,0, + 0,0,114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0, + 218,2,115,116,114,42,0,0,0,114,174,0,0,0,114,17, + 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,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, + 114,240,0,0,0,189,3,0,0,115,188,0,0,0,10,7, + 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, + 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, + 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, + 2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1, + 12,1,10,1,2,1,2,255,8,2,2,254,10,3,4,1, + 2,1,2,1,4,254,8,4,2,1,4,255,2,128,2,3, + 2,1,2,1,6,1,2,1,2,1,4,251,4,128,18,7, + 4,1,2,128,8,2,2,1,4,255,6,2,2,1,2,1, + 6,254,8,3,10,1,12,1,12,1,18,1,6,1,4,255, + 4,2,8,1,10,1,14,1,6,2,6,1,4,255,2,2, + 14,1,4,3,2,128,14,254,2,1,4,1,2,128,4,0, + 2,254,2,233,2,225,2,250,2,251,115,80,0,0,0,144, + 4,21,0,149,10,33,7,163,5,41,0,169,8,51,7,187, + 5,65,1,0,193,1,8,65,11,7,193,18,65,5,66,24, + 0,194,24,10,66,36,7,195,50,7,67,59,0,195,59,8, + 68,6,7,196,9,1,68,6,7,196,10,1,66,36,7,196, + 11,1,65,11,7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0, + 114,7,0,0,0,114,248,0,0,0,130,3,0,0,115,16, + 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, + 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, + 0,0,115,94,0,0,0,135,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,136, + 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,136,0,4, + 0,90,12,83,0,41,16,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,2,0,0,0,67,0,0, - 0,243,24,0,0,0,124,0,106,0,124,1,106,0,107,2, - 111,11,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,143,0,0,0,90,5,111,116, - 104,101,114,32,32,114,7,0,0,0,218,6,95,95,101,113, - 95,95,28,4,0,0,243,6,0,0,0,12,1,10,1,2, - 255,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,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,141,0,0,0,114,65,0,0,0,169,1, - 114,143,0,0,0,32,114,7,0,0,0,218,8,95,95,104, - 97,115,104,95,95,32,4,0,0,243,2,0,0,0,20,1, - 114,9,0,0,0,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,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,2,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,41,3,218, - 5,115,117,112,101,114,114,10,1,0,0,114,247,0,0,0, - 41,3,114,143,0,0,0,114,162,0,0,0,114,13,1,0, - 0,32,32,128,114,7,0,0,0,114,247,0,0,0,35,4, - 0,0,115,2,0,0,0,16,10,114,9,0,0,0,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,1,0,0,0,67,0,0,0,243,6,0,0,0, - 124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0,0,32, - 32,114,7,0,0,0,114,202,0,0,0,47,4,0,0,243, - 2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0,0,0,116,0, - 124,0,116,1,116,2,102,2,131,2,114,38,116,3,160,4, - 116,5,124,1,131,1,161,1,53,0,125,2,124,2,160,6, - 161,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 35,0,49,0,115,30,119,4,37,0,1,0,1,0,1,0, - 89,0,1,0,1,0,100,1,83,0,116,3,160,7,124,1, - 100,2,161,2,53,0,125,2,124,2,160,6,161,0,2,0, - 100,1,4,0,4,0,131,3,1,0,83,0,35,0,49,0, - 115,60,119,4,37,0,1,0,1,0,1,0,89,0,1,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,184,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,91,0,0,0,90,9,111,112,101, - 110,95,99,111,100,101,114,109,0,0,0,90,4,114,101,97, - 100,114,92,0,0,0,41,3,114,143,0,0,0,114,65,0, - 0,0,114,94,0,0,0,32,32,32,114,7,0,0,0,114, - 254,0,0,0,52,4,0,0,115,22,0,0,0,14,2,16, - 1,6,1,14,255,22,128,4,0,14,3,6,1,14,255,22, - 128,4,0,115,24,0,0,0,142,4,25,3,153,4,29,11, - 158,3,29,11,172,4,55,3,183,4,59,11,188,3,59,11, - 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,67,0,0,0,115,20,0,0,0,100, - 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,131, - 1,83,0,41,3,78,114,0,0,0,0,41,1,218,10,70, - 105,108,101,82,101,97,100,101,114,41,2,218,17,105,109,112, - 111,114,116,108,105,98,46,114,101,97,100,101,114,115,114,29, - 1,0,0,41,3,114,143,0,0,0,114,243,0,0,0,114, - 29,1,0,0,32,32,32,114,7,0,0,0,218,19,103,101, - 116,95,114,101,115,111,117,114,99,101,95,114,101,97,100,101, - 114,61,4,0,0,115,4,0,0,0,12,2,8,1,114,9, - 0,0,0,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,41,13,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,151,0,0,0,114,235,0,0,0,114,15, - 1,0,0,114,21,1,0,0,114,159,0,0,0,114,247,0, - 0,0,114,202,0,0,0,114,254,0,0,0,114,31,1,0, - 0,90,13,95,95,99,108,97,115,115,99,101,108,108,95,95, - 41,1,114,13,1,0,0,64,114,7,0,0,0,114,10,1, - 0,0,17,4,0,0,115,24,0,0,0,10,128,4,2,8, - 3,8,6,8,4,2,3,14,1,2,11,10,1,8,4,2, - 9,18,1,114,9,0,0,0,114,10,1,0,0,99,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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0,114,65,0,0, - 0,114,9,1,0,0,32,32,32,114,7,0,0,0,114,251, - 0,0,0,71,4,0,0,115,4,0,0,0,8,2,14,1, - 114,9,0,0,0,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,6, - 0,0,0,67,0,0,0,115,24,0,0,0,116,0,124,1, - 131,1,125,4,124,0,160,1,124,2,124,3,124,4,100,1, - 166,3,83,0,41,2,78,169,1,218,5,95,109,111,100,101, - 41,2,114,139,0,0,0,114,252,0,0,0,41,5,114,143, - 0,0,0,114,134,0,0,0,114,132,0,0,0,114,42,0, - 0,0,114,78,0,0,0,32,32,32,32,32,114,7,0,0, - 0,114,253,0,0,0,76,4,0,0,115,4,0,0,0,8, - 2,16,1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0,116,0, - 124,1,131,1,92,2,125,4,125,5,103,0,125,6,124,4, - 114,31,116,1,124,4,131,1,115,31,116,0,124,4,131,1, - 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, - 124,4,114,31,116,1,124,4,131,1,114,14,116,3,124,6, - 131,1,68,0,93,47,125,7,116,4,124,4,124,7,131,2, - 125,4,9,0,116,5,160,6,124,4,161,1,1,0,113,35, - 35,0,4,0,116,7,121,58,1,0,1,0,1,0,89,0, - 113,35,4,0,116,8,121,124,1,0,125,8,1,0,116,9, - 160,10,100,1,124,4,124,8,161,3,1,0,89,0,100,2, - 125,8,126,8,1,0,100,2,83,0,100,2,125,8,126,8, - 119,1,37,0,9,0,116,11,124,1,124,2,124,3,131,3, - 1,0,116,9,160,10,100,3,124,1,161,2,1,0,100,2, - 83,0,35,0,4,0,116,8,121,123,1,0,125,8,1,0, - 116,9,160,10,100,1,124,1,124,8,161,3,1,0,89,0, - 100,2,125,8,126,8,100,2,83,0,100,2,125,8,126,8, - 119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0,0,114, - 61,0,0,0,218,8,114,101,118,101,114,115,101,100,114,67, - 0,0,0,114,19,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,172,0,0,0,114, - 95,0,0,0,41,9,114,143,0,0,0,114,65,0,0,0, - 114,42,0,0,0,114,35,1,0,0,218,6,112,97,114,101, - 110,116,114,120,0,0,0,114,63,0,0,0,114,68,0,0, - 0,114,255,0,0,0,32,32,32,32,32,32,32,32,32,114, - 7,0,0,0,114,252,0,0,0,81,4,0,0,115,60,0, - 0,0,12,2,4,1,12,2,12,1,10,1,12,254,12,4, - 10,1,2,1,12,1,2,128,12,1,4,2,12,1,6,3, - 4,1,4,255,14,2,10,128,2,1,12,1,16,1,2,128, - 12,1,8,2,2,1,16,255,10,128,2,254,2,247,115,62, - 0,0,0,171,5,49,2,177,7,65,18,9,186,6,65,18, - 9,193,0,7,65,14,9,193,14,4,65,18,9,193,20,12, - 65,34,0,193,34,7,65,58,7,193,41,7,65,54,7,193, - 54,4,65,58,7,193,59,1,65,58,7,193,60,1,65,18, - 9,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,251,0,0,0,114,253,0,0,0,114,252,0, - 0,0,114,12,0,0,0,114,7,0,0,0,114,32,1,0, - 0,67,4,0,0,115,10,0,0,0,8,0,4,2,8,2, - 8,5,18,5,114,9,0,0,0,114,32,1,0,0,99,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,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, - 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,182,0,0,0,114,168,0,0,0,41,2,114,141,0,0, - 0,114,132,0,0,0,41,5,114,202,0,0,0,114,254,0, - 0,0,114,175,0,0,0,114,188,0,0,0,114,6,1,0, - 0,41,5,114,143,0,0,0,114,162,0,0,0,114,65,0, - 0,0,114,42,0,0,0,114,174,0,0,0,32,32,32,32, - 32,114,7,0,0,0,114,240,0,0,0,116,4,0,0,115, - 22,0,0,0,10,1,10,1,2,4,2,1,6,254,12,4, - 2,1,14,1,2,1,2,1,6,253,114,9,0,0,0,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,1,0,0,0,67, - 0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32, - 114,7,0,0,0,114,0,1,0,0,132,4,0,0,114,25, - 0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0,0,114, - 7,0,0,0,114,39,1,0,0,112,4,0,0,115,8,0, - 0,0,8,0,4,2,8,2,12,16,114,9,0,0,0,114, - 39,1,0,0,99,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,28,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,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,0,83,0,114,69,0,0,0,114, - 182,0,0,0,41,3,114,143,0,0,0,114,141,0,0,0, - 114,65,0,0,0,32,32,32,114,7,0,0,0,114,235,0, - 0,0,145,4,0,0,115,4,0,0,0,6,1,10,1,114, - 9,0,0,0,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,67,0,0,0,114,11,1,0,0,114,69,0,0, - 0,114,12,1,0,0,114,14,1,0,0,32,32,114,7,0, - 0,0,114,15,1,0,0,149,4,0,0,114,16,1,0,0, - 114,9,0,0,0,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,3,0, - 0,0,67,0,0,0,114,17,1,0,0,114,69,0,0,0, - 114,18,1,0,0,114,20,1,0,0,32,114,7,0,0,0, - 114,21,1,0,0,153,4,0,0,114,22,1,0,0,114,9, - 0,0,0,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,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, - 3,122,40,67,114,101,97,116,101,32,97,110,32,117,110,105, - 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,78,41,7,114,158,0,0,0,114,241,0,0,0, - 114,186,0,0,0,90,14,99,114,101,97,116,101,95,100,121, - 110,97,109,105,99,114,172,0,0,0,114,141,0,0,0,114, - 65,0,0,0,41,3,114,143,0,0,0,114,209,0,0,0, - 114,243,0,0,0,32,32,32,114,7,0,0,0,114,238,0, - 0,0,156,4,0,0,115,14,0,0,0,4,2,6,1,4, - 255,6,2,8,1,4,255,4,2,114,9,0,0,0,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,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,241,0,0,0,114,186,0,0,0,90,12,101, - 120,101,99,95,100,121,110,97,109,105,99,114,172,0,0,0, - 114,141,0,0,0,114,65,0,0,0,169,2,114,143,0,0, - 0,114,243,0,0,0,32,32,114,7,0,0,0,114,244,0, - 0,0,164,4,0,0,115,8,0,0,0,14,2,6,1,8, - 1,8,255,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,38, - 0,0,0,135,2,116,0,124,0,106,1,131,1,100,1,25, - 0,138,2,116,2,136,2,102,1,100,2,100,3,132,8,116, - 3,68,0,131,1,131,1,83,0,41,5,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,3, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,51,0,0,0,115,28,0,0,0,129,0,124, - 0,93,9,125,1,137,2,100,0,124,1,23,0,107,2,86, - 0,1,0,113,2,100,1,83,0,41,2,114,235,0,0,0, - 78,114,12,0,0,0,41,3,114,5,0,0,0,218,6,115, - 117,102,102,105,120,218,9,102,105,108,101,95,110,97,109,101, - 32,32,128,114,7,0,0,0,114,8,0,0,0,173,4,0, - 0,115,6,0,0,0,6,128,2,1,20,255,114,9,0,0, - 0,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,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101, - 120,112,114,62,78,41,4,114,73,0,0,0,114,65,0,0, - 0,218,3,97,110,121,114,231,0,0,0,41,3,114,143,0, - 0,0,114,162,0,0,0,114,42,1,0,0,32,32,64,114, - 7,0,0,0,114,205,0,0,0,170,4,0,0,115,10,0, - 0,0,2,128,14,2,12,1,2,1,8,255,114,9,0,0, - 0,122,30,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,1,0, - 0,0,67,0,0,0,114,24,0,0,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, - 12,0,0,0,114,246,0,0,0,32,32,114,7,0,0,0, - 114,240,0,0,0,176,4,0,0,114,25,0,0,0,114,9, - 0,0,0,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,1,0, - 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32, - 32,114,7,0,0,0,114,0,1,0,0,180,4,0,0,114, - 25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24, - 1,0,0,114,25,1,0,0,114,74,0,0,0,114,246,0, - 0,0,32,32,114,7,0,0,0,114,202,0,0,0,184,4, - 0,0,114,26,1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114, - 21,1,0,0,114,238,0,0,0,114,244,0,0,0,114,205, - 0,0,0,114,240,0,0,0,114,0,1,0,0,114,159,0, - 0,0,114,202,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,28,1,0,0,137,4,0,0,115,24,0,0,0,8, - 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, - 6,8,4,2,4,14,1,114,9,0,0,0,114,28,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100, - 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, - 24,83,0,41,25,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, - 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69, - 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, - 97,116,104,114,136,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,12,95, - 112,97,116,104,95,102,105,110,100,101,114,169,4,114,143,0, - 0,0,114,141,0,0,0,114,65,0,0,0,90,11,112,97, - 116,104,95,102,105,110,100,101,114,32,32,32,32,114,7,0, - 0,0,114,235,0,0,0,197,4,0,0,115,8,0,0,0, - 6,1,6,1,14,1,10,1,114,9,0,0,0,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,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,15,100,3,83,0,124,1, - 100,4,102,2,83,0,41,6,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,97,0,0,0,114,10,0, - 0,0,41,2,114,16,0,0,0,114,65,0,0,0,90,8, - 95,95,112,97,116,104,95,95,78,41,2,114,45,1,0,0, - 114,104,0,0,0,41,4,114,143,0,0,0,114,38,1,0, - 0,218,3,100,111,116,90,2,109,101,32,32,32,32,114,7, - 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,203,4,0,0, - 115,8,0,0,0,18,2,8,1,4,2,8,3,114,9,0, - 0,0,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,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,52,1,0,0,114,154,0,0, - 0,114,16,0,0,0,218,7,109,111,100,117,108,101,115,41, - 3,114,143,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,32,32,32,114,7,0, - 0,0,114,47,1,0,0,213,4,0,0,115,4,0,0,0, - 12,1,16,1,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115, - 80,0,0,0,116,0,124,0,160,1,161,0,131,1,125,1, - 124,1,124,0,106,2,107,3,114,37,124,0,160,3,124,0, - 106,4,124,1,161,2,125,2,124,2,100,0,117,1,114,34, - 124,2,106,5,100,0,117,0,114,34,124,2,106,6,114,34, - 124,2,106,6,124,0,95,7,124,1,124,0,95,2,124,0, - 106,7,83,0,114,69,0,0,0,41,8,114,136,0,0,0, - 114,47,1,0,0,114,48,1,0,0,114,49,1,0,0,114, - 45,1,0,0,114,163,0,0,0,114,201,0,0,0,114,46, - 1,0,0,41,3,114,143,0,0,0,90,11,112,97,114,101, - 110,116,95,112,97,116,104,114,209,0,0,0,32,32,32,114, - 7,0,0,0,218,12,95,114,101,99,97,108,99,117,108,97, - 116,101,217,4,0,0,115,16,0,0,0,12,2,10,1,14, - 1,18,3,6,1,8,1,6,1,6,1,114,9,0,0,0, - 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,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,182,0,0,0,41,3,114,143,0, + 0,0,114,162,0,0,0,114,65,0,0,0,32,32,32,114, + 7,0,0,0,114,235,0,0,0,23,4,0,0,115,4,0, + 0,0,6,3,10,1,114,9,0,0,0,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,67,0,0,0,243,24,0,0,0,124,0,106,0,124,1, + 106,0,107,2,111,11,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,143,0,0,0, + 90,5,111,116,104,101,114,32,32,114,7,0,0,0,218,6, + 95,95,101,113,95,95,29,4,0,0,243,6,0,0,0,12, + 1,10,1,2,255,114,9,0,0,0,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,3,0,0,0,67,0, - 0,0,243,12,0,0,0,116,0,124,0,160,1,161,0,131, - 1,83,0,114,69,0,0,0,41,2,218,4,105,116,101,114, - 114,54,1,0,0,114,20,1,0,0,32,114,7,0,0,0, - 218,8,95,95,105,116,101,114,95,95,230,4,0,0,243,2, - 0,0,0,12,1,114,9,0,0,0,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,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,54,1,0,0,41,2,114,143,0,0,0,218,5,105,110, - 100,101,120,32,32,114,7,0,0,0,218,11,95,95,103,101, - 116,105,116,101,109,95,95,233,4,0,0,114,58,1,0,0, - 114,9,0,0,0,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,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,46,1,0,0,41,3,114,143,0,0,0,114,60,1,0, - 0,114,65,0,0,0,32,32,32,114,7,0,0,0,218,11, - 95,95,115,101,116,105,116,101,109,95,95,236,4,0,0,115, - 2,0,0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,55,1,0, - 0,114,69,0,0,0,41,2,114,4,0,0,0,114,54,1, - 0,0,114,20,1,0,0,32,114,7,0,0,0,218,7,95, - 95,108,101,110,95,95,239,4,0,0,114,58,1,0,0,114, - 9,0,0,0,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,3,0,0,0,67,0,0, - 0,243,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,89,0, - 0,0,114,46,1,0,0,114,20,1,0,0,32,114,7,0, - 0,0,218,8,95,95,114,101,112,114,95,95,242,4,0,0, - 114,58,1,0,0,114,9,0,0,0,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, - 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,143,0,0,0,218,4,105,116,101,109, - 32,32,114,7,0,0,0,218,12,95,95,99,111,110,116,97, - 105,110,115,95,95,245,4,0,0,114,58,1,0,0,114,9, - 0,0,0,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,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,46,1,0,0,114,61,0,0,0,114,66,1,0,0, - 32,32,114,7,0,0,0,114,61,0,0,0,248,4,0,0, - 243,2,0,0,0,16,1,114,9,0,0,0,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,15,114,149,0,0,0,114,148,0,0,0, - 114,150,0,0,0,114,151,0,0,0,114,235,0,0,0,114, - 52,1,0,0,114,47,1,0,0,114,54,1,0,0,114,57, - 1,0,0,114,61,1,0,0,114,62,1,0,0,114,63,1, - 0,0,114,65,1,0,0,114,68,1,0,0,114,61,0,0, - 0,114,12,0,0,0,114,7,0,0,0,114,44,1,0,0, - 190,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, - 6,8,10,8,4,8,13,8,3,8,3,8,3,8,3,8, - 3,12,3,114,9,0,0,0,114,44,1,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0, - 0,0,115,88,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,100,18,132,0,90,12,100,19,83,0,41, - 20,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,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,44,1,0,0,114,46,1,0,0, - 114,50,1,0,0,32,32,32,32,114,7,0,0,0,114,235, - 0,0,0,254,4,0,0,115,2,0,0,0,18,1,114,9, - 0,0,0,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,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, - 0,0,0,115,24,0,0,0,116,0,160,1,100,1,116,2, - 161,2,1,0,100,2,160,3,124,0,106,4,161,1,83,0, - 41,4,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,82,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,40,41,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, - 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, - 80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100, - 0,0,0,114,101,0,0,0,114,89,0,0,0,114,149,0, - 0,0,41,1,114,243,0,0,0,32,114,7,0,0,0,218, - 11,109,111,100,117,108,101,95,114,101,112,114,1,5,0,0, - 115,8,0,0,0,6,7,2,1,4,255,12,2,114,9,0, - 0,0,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,1,0,0, - 0,67,0,0,0,114,24,0,0,0,41,2,78,84,114,12, - 0,0,0,114,246,0,0,0,32,32,114,7,0,0,0,114, - 205,0,0,0,12,5,0,0,243,2,0,0,0,4,1,114, - 9,0,0,0,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,1,0, - 0,0,67,0,0,0,114,24,0,0,0,41,2,78,114,10, - 0,0,0,114,12,0,0,0,114,246,0,0,0,32,32,114, - 7,0,0,0,114,0,1,0,0,15,5,0,0,114,72,1, - 0,0,114,9,0,0,0,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,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,10,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,32,32,114,7,0,0,0, - 114,240,0,0,0,18,5,0,0,114,69,1,0,0,114,9, - 0,0,0,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,1,0,0,0,67, - 0,0,0,114,24,0,0,0,114,236,0,0,0,114,12,0, - 0,0,114,237,0,0,0,32,32,114,7,0,0,0,114,238, - 0,0,0,21,5,0,0,114,239,0,0,0,114,9,0,0, - 0,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,1,0, - 0,0,67,0,0,0,115,4,0,0,0,100,0,83,0,114, - 69,0,0,0,114,12,0,0,0,114,40,1,0,0,32,32, - 114,7,0,0,0,114,244,0,0,0,24,5,0,0,114,72, - 1,0,0,114,9,0,0,0,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,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,3,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, + 0,0,243,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,141,0,0,0,114,65,0, + 0,0,169,1,114,143,0,0,0,32,114,7,0,0,0,218, + 8,95,95,104,97,115,104,95,95,33,4,0,0,243,2,0, + 0,0,20,1,114,9,0,0,0,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,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,2,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, - 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,78,41,4,114,158,0,0,0, - 114,172,0,0,0,114,46,1,0,0,114,245,0,0,0,114, - 246,0,0,0,32,32,114,7,0,0,0,114,247,0,0,0, - 27,5,0,0,115,8,0,0,0,6,7,4,1,4,255,12, - 3,114,9,0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,67,0,0,0,115,22,0,0,0,100,1, - 100,2,108,0,109,1,125,2,1,0,124,2,124,0,106,2, - 131,1,83,0,41,3,78,114,0,0,0,0,41,1,218,15, - 78,97,109,101,115,112,97,99,101,82,101,97,100,101,114,41, - 3,114,30,1,0,0,114,73,1,0,0,114,46,1,0,0, - 41,3,114,143,0,0,0,114,243,0,0,0,114,73,1,0, - 0,32,32,32,114,7,0,0,0,114,31,1,0,0,39,5, - 0,0,115,4,0,0,0,12,1,10,1,114,9,0,0,0, - 122,36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148, - 0,0,0,114,150,0,0,0,114,235,0,0,0,114,232,0, - 0,0,114,71,1,0,0,114,205,0,0,0,114,0,1,0, - 0,114,240,0,0,0,114,238,0,0,0,114,244,0,0,0, - 114,247,0,0,0,114,31,1,0,0,114,12,0,0,0,114, - 7,0,0,0,114,70,1,0,0,253,4,0,0,115,22,0, - 0,0,8,0,8,1,2,3,10,1,8,10,8,3,8,3, - 8,3,8,3,8,3,12,12,114,9,0,0,0,114,70,1, - 0,0,99,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,7,100,6,100,7,132,0,131,1,90,8,101,7,100,8, - 100,9,132,0,131,1,90,9,101,7,100,19,100,11,100,12, - 132,1,131,1,90,10,101,7,100,20,100,13,100,14,132,1, - 131,1,90,11,101,7,100,19,100,15,100,16,132,1,131,1, - 90,12,101,4,100,17,100,18,132,0,131,1,90,13,100,10, - 83,0,41,21,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,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,64,0,0,0,116,0,116,1,106,2, - 160,3,161,0,131,1,68,0,93,22,92,2,125,0,125,1, - 124,1,100,1,117,0,114,20,116,1,106,2,124,0,61,0, - 113,7,116,4,124,1,100,2,131,2,114,29,124,1,160,5, - 161,0,1,0,113,7,100,1,83,0,41,3,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,41, - 6,218,4,108,105,115,116,114,16,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,75,1, - 0,0,41,2,114,141,0,0,0,218,6,102,105,110,100,101, - 114,32,32,114,7,0,0,0,114,75,1,0,0,50,5,0, - 0,115,14,0,0,0,22,4,8,1,10,1,10,1,8,1, - 2,128,4,252,114,9,0,0,0,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,1,0,0,0,0,0,0,0, - 0,0,0,0,9,0,0,0,67,0,0,0,115,78,0,0, - 0,116,0,106,1,100,1,117,1,114,14,116,0,106,1,115, - 14,116,2,160,3,100,2,116,4,161,2,1,0,116,0,106, - 1,68,0,93,18,125,1,9,0,124,1,124,0,131,1,2, - 0,1,0,83,0,35,0,4,0,116,5,121,38,1,0,1, - 0,1,0,89,0,113,17,37,0,100,1,83,0,119,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,16,0, - 0,0,218,10,112,97,116,104,95,104,111,111,107,115,114,99, - 0,0,0,114,100,0,0,0,114,161,0,0,0,114,142,0, - 0,0,41,2,114,65,0,0,0,90,4,104,111,111,107,32, - 32,114,7,0,0,0,218,11,95,112,97,116,104,95,104,111, - 111,107,115,60,5,0,0,115,22,0,0,0,16,3,12,1, - 10,1,2,1,12,1,2,128,12,1,4,1,2,128,4,2, - 2,253,115,12,0,0,0,148,3,26,2,154,7,35,9,166, - 1,35,9,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,8,0,0,0,67,0,0,0, - 115,104,0,0,0,124,1,100,1,107,2,114,21,9,0,116, - 0,160,1,161,0,125,1,110,11,35,0,4,0,116,2,121, - 51,1,0,1,0,1,0,89,0,100,2,83,0,37,0,9, - 0,116,3,106,4,124,1,25,0,125,2,124,2,83,0,35, - 0,4,0,116,5,121,50,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,124,2,83,0,37,0,119,0,119,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,10,0,0,0,78,41,7,114,19,0,0,0, - 114,82,0,0,0,218,17,70,105,108,101,78,111,116,70,111, - 117,110,100,69,114,114,111,114,114,16,0,0,0,114,77,1, - 0,0,218,8,75,101,121,69,114,114,111,114,114,81,1,0, - 0,41,3,114,220,0,0,0,114,65,0,0,0,114,79,1, - 0,0,32,32,32,114,7,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, - 73,5,0,0,115,36,0,0,0,8,8,2,1,10,1,2, - 128,12,1,6,3,2,128,2,1,10,1,4,4,2,128,12, - 253,10,1,12,1,4,1,2,128,2,253,2,250,115,24,0, - 0,0,133,4,10,0,138,7,20,7,150,5,29,0,157,17, - 49,7,178,1,49,7,179,1,20,7,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,4,0,0,0,67,0,0,0, - 115,138,0,0,0,116,0,124,2,100,1,131,2,114,27,116, - 1,160,2,124,2,161,1,155,0,100,2,157,2,125,3,116, - 3,160,4,124,3,116,5,161,2,1,0,124,2,160,6,124, - 1,161,1,92,2,125,4,125,5,110,21,116,1,160,2,124, - 2,161,1,155,0,100,3,157,2,125,3,116,3,160,4,124, - 3,116,5,161,2,1,0,124,2,160,7,124,1,161,1,125, - 4,103,0,125,5,124,4,100,0,117,1,114,58,116,1,160, - 8,124,1,124,4,161,2,83,0,116,1,160,9,124,1,100, - 0,161,2,125,6,124,5,124,6,95,10,124,6,83,0,41, - 4,78,114,160,0,0,0,122,53,46,102,105,110,100,95,115, - 112,101,99,40,41,32,110,111,116,32,102,111,117,110,100,59, - 32,102,97,108,108,105,110,103,32,98,97,99,107,32,116,111, - 32,102,105,110,100,95,108,111,97,100,101,114,40,41,122,53, - 46,102,105,110,100,95,115,112,101,99,40,41,32,110,111,116, - 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, - 98,97,99,107,32,116,111,32,102,105,110,100,95,109,111,100, - 117,108,101,40,41,41,11,114,152,0,0,0,114,158,0,0, - 0,90,12,95,111,98,106,101,99,116,95,110,97,109,101,114, - 99,0,0,0,114,100,0,0,0,114,161,0,0,0,114,160, - 0,0,0,114,228,0,0,0,114,223,0,0,0,114,206,0, - 0,0,114,201,0,0,0,41,7,114,220,0,0,0,114,162, - 0,0,0,114,79,1,0,0,114,165,0,0,0,114,163,0, - 0,0,114,164,0,0,0,114,209,0,0,0,32,32,32,32, - 32,32,32,114,7,0,0,0,218,16,95,108,101,103,97,99, - 121,95,103,101,116,95,115,112,101,99,95,5,0,0,115,26, - 0,0,0,10,4,16,1,12,2,16,1,16,2,12,2,10, - 1,4,1,8,1,12,1,12,1,6,1,4,1,114,9,0, - 0,0,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,5,0,0, - 0,67,0,0,0,115,166,0,0,0,103,0,125,4,124,2, - 68,0,93,67,125,5,116,0,124,5,116,1,116,2,102,2, - 131,2,115,14,113,4,124,0,160,3,124,5,161,1,125,6, - 124,6,100,1,117,1,114,71,116,4,124,6,100,2,131,2, - 114,35,124,6,160,5,124,1,124,3,161,2,125,7,110,6, - 124,0,160,6,124,1,124,6,161,2,125,7,124,7,100,1, - 117,0,114,46,113,4,124,7,106,7,100,1,117,1,114,55, - 124,7,2,0,1,0,83,0,124,7,106,8,125,8,124,8, - 100,1,117,0,114,66,116,9,100,3,131,1,130,1,124,4, - 160,10,124,8,161,1,1,0,113,4,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,225,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,184,0,0,0,114,109,0,0,0,218,5,98,121,116,101, - 115,114,84,1,0,0,114,152,0,0,0,114,225,0,0,0, - 114,85,1,0,0,114,163,0,0,0,114,201,0,0,0,114, - 142,0,0,0,114,190,0,0,0,114,158,0,0,0,114,206, - 0,0,0,41,9,114,220,0,0,0,114,162,0,0,0,114, - 65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0,114,164,0,0,0,32, - 32,32,32,32,32,32,32,32,114,7,0,0,0,218,9,95, - 103,101,116,95,115,112,101,99,116,5,0,0,115,42,0,0, - 0,4,5,8,1,14,1,2,1,10,1,8,1,10,1,14, - 1,12,2,8,1,2,1,10,1,8,1,6,1,8,1,8, - 1,10,5,2,128,12,2,6,1,4,1,114,9,0,0,0, - 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,5,0,0,0,67,0,0,0,115,94,0,0,0, - 124,2,100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3,100,1,117,0, - 114,45,124,4,106,4,125,5,124,5,114,43,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,124,4,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,16,0,0,0,114,65,0,0,0,114,88,1,0, - 0,114,163,0,0,0,114,201,0,0,0,114,204,0,0,0, - 114,44,1,0,0,41,6,114,220,0,0,0,114,162,0,0, - 0,114,65,0,0,0,114,224,0,0,0,114,209,0,0,0, - 114,87,1,0,0,32,32,32,32,32,32,114,7,0,0,0, - 114,225,0,0,0,148,5,0,0,115,26,0,0,0,8,6, - 6,1,14,1,8,1,4,1,10,1,6,1,4,1,6,3, - 16,1,4,1,4,2,4,2,114,9,0,0,0,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,67,0,0,0,115,42,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,124, - 2,161,2,125,3,124,3,100,2,117,0,114,18,100,2,83, - 0,124,3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,40,41,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, - 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, - 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, - 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,78,114,226,0, - 0,0,114,227,0,0,0,32,32,32,32,114,7,0,0,0, - 114,228,0,0,0,172,5,0,0,115,14,0,0,0,6,8, - 2,2,4,254,12,3,8,1,4,1,6,1,114,9,0,0, - 0,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,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,79,0,0,0,115,28, + 78,41,3,218,5,115,117,112,101,114,114,10,1,0,0,114, + 247,0,0,0,41,3,114,143,0,0,0,114,162,0,0,0, + 114,13,1,0,0,32,32,128,114,7,0,0,0,114,247,0, + 0,0,36,4,0,0,115,2,0,0,0,16,10,114,9,0, + 0,0,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,1,0,0,0,67,0,0,0,243, + 6,0,0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246, + 0,0,0,32,32,114,7,0,0,0,114,202,0,0,0,48, + 4,0,0,243,2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0, + 0,0,116,0,124,0,116,1,116,2,102,2,131,2,114,38, + 116,3,160,4,116,5,124,1,131,1,161,1,53,0,125,2, + 124,2,160,6,161,0,2,0,100,1,4,0,4,0,131,3, + 1,0,83,0,35,0,49,0,115,30,119,4,37,0,1,0, + 1,0,1,0,89,0,1,0,1,0,100,1,83,0,116,3, + 160,7,124,1,100,2,161,2,53,0,125,2,124,2,160,6, + 161,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 35,0,49,0,115,60,119,4,37,0,1,0,1,0,1,0, + 89,0,1,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,184,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,91,0,0,0,90, + 9,111,112,101,110,95,99,111,100,101,114,109,0,0,0,90, + 4,114,101,97,100,114,92,0,0,0,41,3,114,143,0,0, + 0,114,65,0,0,0,114,94,0,0,0,32,32,32,114,7, + 0,0,0,114,254,0,0,0,53,4,0,0,115,22,0,0, + 0,14,2,16,1,6,1,14,255,22,128,4,0,14,3,6, + 1,14,255,22,128,4,0,115,24,0,0,0,142,4,25,3, + 153,4,29,11,158,3,29,11,172,4,55,3,183,4,59,11, + 188,3,59,11,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,67,0,0,0,115,20, 0,0,0,100,1,100,2,108,0,109,1,125,2,1,0,124, - 2,106,2,124,0,105,0,124,1,164,1,142,1,83,0,41, - 4,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,78,41,3,90,18,105,109,112,111,114,116,108,105,98,46, - 109,101,116,97,100,97,116,97,114,89,1,0,0,218,18,102, - 105,110,100,95,100,105,115,116,114,105,98,117,116,105,111,110, - 115,41,3,114,144,0,0,0,114,145,0,0,0,114,89,1, - 0,0,32,32,32,114,7,0,0,0,114,90,1,0,0,188, - 5,0,0,115,4,0,0,0,12,10,16,1,114,9,0,0, - 0,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, - 114,69,0,0,0,114,229,0,0,0,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,75,1,0,0,114,81,1,0,0,114, - 233,0,0,0,114,84,1,0,0,114,85,1,0,0,114,88, - 1,0,0,114,225,0,0,0,114,228,0,0,0,114,90,1, - 0,0,114,12,0,0,0,114,7,0,0,0,114,74,1,0, - 0,46,5,0,0,115,36,0,0,0,8,0,4,2,2,2, - 10,1,2,9,10,1,2,12,10,1,2,21,10,1,2,20, - 12,1,2,31,12,1,2,23,12,1,2,15,14,1,114,9, - 0,0,0,114,74,1,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,64,0,0,0,115,90,0, + 2,124,0,131,1,83,0,41,3,78,114,0,0,0,0,41, + 1,218,10,70,105,108,101,82,101,97,100,101,114,41,2,218, + 17,105,109,112,111,114,116,108,105,98,46,114,101,97,100,101, + 114,115,114,29,1,0,0,41,3,114,143,0,0,0,114,243, + 0,0,0,114,29,1,0,0,32,32,32,114,7,0,0,0, + 218,19,103,101,116,95,114,101,115,111,117,114,99,101,95,114, + 101,97,100,101,114,62,4,0,0,115,4,0,0,0,12,2, + 8,1,114,9,0,0,0,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,41,13,114,149,0,0,0,114,148, + 0,0,0,114,150,0,0,0,114,151,0,0,0,114,235,0, + 0,0,114,15,1,0,0,114,21,1,0,0,114,159,0,0, + 0,114,247,0,0,0,114,202,0,0,0,114,254,0,0,0, + 114,31,1,0,0,90,13,95,95,99,108,97,115,115,99,101, + 108,108,95,95,41,1,114,13,1,0,0,64,114,7,0,0, + 0,114,10,1,0,0,18,4,0,0,115,24,0,0,0,10, + 128,4,2,8,3,8,6,8,4,2,3,14,1,2,11,10, + 1,8,4,2,9,18,1,114,9,0,0,0,114,10,1,0, + 0,99,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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0, + 114,65,0,0,0,114,9,1,0,0,32,32,32,114,7,0, + 0,0,114,251,0,0,0,72,4,0,0,115,4,0,0,0, + 8,2,14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,24,0,0,0, + 116,0,124,1,131,1,125,4,124,0,160,1,124,2,124,3, + 124,4,100,1,166,3,83,0,41,2,78,169,1,218,5,95, + 109,111,100,101,41,2,114,139,0,0,0,114,252,0,0,0, + 41,5,114,143,0,0,0,114,134,0,0,0,114,132,0,0, + 0,114,42,0,0,0,114,78,0,0,0,32,32,32,32,32, + 114,7,0,0,0,114,253,0,0,0,77,4,0,0,115,4, + 0,0,0,8,2,16,1,114,9,0,0,0,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,87, + 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,67,0,0,0,115,250,0, + 0,0,116,0,124,1,131,1,92,2,125,4,125,5,103,0, + 125,6,124,4,114,31,116,1,124,4,131,1,115,31,116,0, + 124,4,131,1,92,2,125,4,125,7,124,6,160,2,124,7, + 161,1,1,0,124,4,114,31,116,1,124,4,131,1,114,14, + 116,3,124,6,131,1,68,0,93,47,125,7,116,4,124,4, + 124,7,131,2,125,4,9,0,116,5,160,6,124,4,161,1, + 1,0,113,35,35,0,4,0,116,7,121,58,1,0,1,0, + 1,0,89,0,113,35,4,0,116,8,121,124,1,0,125,8, + 1,0,116,9,160,10,100,1,124,4,124,8,161,3,1,0, + 89,0,100,2,125,8,126,8,1,0,100,2,83,0,100,2, + 125,8,126,8,119,1,37,0,9,0,116,11,124,1,124,2, + 124,3,131,3,1,0,116,9,160,10,100,3,124,1,161,2, + 1,0,100,2,83,0,35,0,4,0,116,8,121,123,1,0, + 125,8,1,0,116,9,160,10,100,1,124,1,124,8,161,3, + 1,0,89,0,100,2,125,8,126,8,100,2,83,0,100,2, + 125,8,126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83, + 0,0,0,114,61,0,0,0,218,8,114,101,118,101,114,115, + 101,100,114,67,0,0,0,114,19,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,172, + 0,0,0,114,95,0,0,0,41,9,114,143,0,0,0,114, + 65,0,0,0,114,42,0,0,0,114,35,1,0,0,218,6, + 112,97,114,101,110,116,114,120,0,0,0,114,63,0,0,0, + 114,68,0,0,0,114,255,0,0,0,32,32,32,32,32,32, + 32,32,32,114,7,0,0,0,114,252,0,0,0,82,4,0, + 0,115,60,0,0,0,12,2,4,1,12,2,12,1,10,1, + 12,254,12,4,10,1,2,1,12,1,2,128,12,1,4,2, + 12,1,6,3,4,1,4,255,14,2,10,128,2,1,12,1, + 16,1,2,128,12,1,8,2,2,1,16,255,10,128,2,254, + 2,247,115,62,0,0,0,171,5,49,2,177,7,65,18,9, + 186,6,65,18,9,193,0,7,65,14,9,193,14,4,65,18, + 9,193,20,12,65,34,0,193,34,7,65,58,7,193,41,7, + 65,54,7,193,54,4,65,58,7,193,59,1,65,58,7,193, + 60,1,65,18,9,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,251,0,0,0,114,253,0,0, + 0,114,252,0,0,0,114,12,0,0,0,114,7,0,0,0, + 114,32,1,0,0,68,4,0,0,115,10,0,0,0,8,0, + 4,2,8,2,8,5,18,5,114,9,0,0,0,114,32,1, + 0,0,99,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,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,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,182,0,0,0,114,168,0,0,0,41,2, + 114,141,0,0,0,114,132,0,0,0,41,5,114,202,0,0, + 0,114,254,0,0,0,114,175,0,0,0,114,188,0,0,0, + 114,6,1,0,0,41,5,114,143,0,0,0,114,162,0,0, + 0,114,65,0,0,0,114,42,0,0,0,114,174,0,0,0, + 32,32,32,32,32,114,7,0,0,0,114,240,0,0,0,117, + 4,0,0,115,22,0,0,0,10,1,10,1,2,4,2,1, + 6,254,12,4,2,1,14,1,2,1,2,1,6,253,114,9, + 0,0,0,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,1, + 0,0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0, + 0,0,32,32,114,7,0,0,0,114,0,1,0,0,133,4, + 0,0,114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12, + 0,0,0,114,7,0,0,0,114,39,1,0,0,113,4,0, + 0,115,8,0,0,0,8,0,4,2,8,2,12,16,114,9, + 0,0,0,114,39,1,0,0,99,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,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,6,0,0,0,7,0,0,0,115,114,0, - 0,0,135,5,103,0,125,3,124,2,68,0,93,16,92,2, - 138,5,125,4,124,3,160,0,136,5,102,1,100,1,100,2, - 132,8,124,4,68,0,131,1,161,1,1,0,113,5,124,3, - 124,0,95,1,124,1,112,28,100,3,124,0,95,2,116,3, - 124,0,106,2,131,1,115,44,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,3, - 0,0,0,51,0,0,0,115,24,0,0,0,129,0,124,0, - 93,7,125,1,124,1,137,2,102,2,86,0,1,0,113,2, - 100,0,83,0,114,69,0,0,0,114,12,0,0,0,41,3, - 114,5,0,0,0,114,41,1,0,0,114,163,0,0,0,32, - 32,128,114,7,0,0,0,114,8,0,0,0,217,5,0,0, - 115,4,0,0,0,6,128,18,0,114,9,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,97,0,0,0,114,130,0,0,0, - 78,41,11,114,190,0,0,0,218,8,95,108,111,97,100,101, - 114,115,114,65,0,0,0,114,86,0,0,0,114,67,0,0, - 0,114,19,0,0,0,114,82,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, - 6,114,143,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,211,0,0,0,114,163,0,0,0,32,32, - 32,32,32,64,114,7,0,0,0,114,235,0,0,0,211,5, - 0,0,115,22,0,0,0,2,128,4,4,12,1,26,1,6, - 1,10,2,10,1,18,1,6,1,8,1,12,1,114,9,0, - 0,0,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,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,130, - 0,0,0,78,41,1,114,93,1,0,0,114,20,1,0,0, - 32,114,7,0,0,0,114,75,1,0,0,227,5,0,0,114, - 81,0,0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0,0, + 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,28,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,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,0,83,0,114,69, + 0,0,0,114,182,0,0,0,41,3,114,143,0,0,0,114, + 141,0,0,0,114,65,0,0,0,32,32,32,114,7,0,0, + 0,114,235,0,0,0,146,4,0,0,115,4,0,0,0,6, + 1,10,1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0, + 114,69,0,0,0,114,12,1,0,0,114,14,1,0,0,32, + 32,114,7,0,0,0,114,15,1,0,0,150,4,0,0,114, + 16,1,0,0,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114,17,1,0,0,114, + 69,0,0,0,114,18,1,0,0,114,20,1,0,0,32,114, + 7,0,0,0,114,21,1,0,0,154,4,0,0,114,22,1, + 0,0,114,9,0,0,0,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,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,3,122,40,67,114,101,97,116,101,32,97,110, + 32,117,110,105,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,78,41,7,114,158,0,0,0,114, + 241,0,0,0,114,186,0,0,0,90,14,99,114,101,97,116, + 101,95,100,121,110,97,109,105,99,114,172,0,0,0,114,141, + 0,0,0,114,65,0,0,0,41,3,114,143,0,0,0,114, + 209,0,0,0,114,243,0,0,0,32,32,32,114,7,0,0, + 0,114,238,0,0,0,157,4,0,0,115,14,0,0,0,4, + 2,6,1,4,255,6,2,8,1,4,255,4,2,114,9,0, + 0,0,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,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,241,0,0,0,114,186,0,0, + 0,90,12,101,120,101,99,95,100,121,110,97,109,105,99,114, + 172,0,0,0,114,141,0,0,0,114,65,0,0,0,169,2, + 114,143,0,0,0,114,243,0,0,0,32,32,114,7,0,0, + 0,114,244,0,0,0,165,4,0,0,115,8,0,0,0,14, + 2,6,1,8,1,8,255,114,9,0,0,0,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,4,0,0,0,3,0, + 0,0,115,38,0,0,0,135,2,116,0,124,0,106,1,131, + 1,100,1,25,0,138,2,116,2,136,2,102,1,100,2,100, + 3,132,8,116,3,68,0,131,1,131,1,83,0,41,5,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,3,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,51,0,0,0,115,28,0,0, + 0,129,0,124,0,93,9,125,1,137,2,100,0,124,1,23, + 0,107,2,86,0,1,0,113,2,100,1,83,0,41,2,114, + 235,0,0,0,78,114,12,0,0,0,41,3,114,5,0,0, + 0,218,6,115,117,102,102,105,120,218,9,102,105,108,101,95, + 110,97,109,101,32,32,128,114,7,0,0,0,114,8,0,0, + 0,174,4,0,0,115,6,0,0,0,6,128,2,1,20,255, + 114,9,0,0,0,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,46,60,108,111,99,97,108,115,62,46,60, + 103,101,110,101,120,112,114,62,78,41,4,114,73,0,0,0, + 114,65,0,0,0,218,3,97,110,121,114,231,0,0,0,41, + 3,114,143,0,0,0,114,162,0,0,0,114,42,1,0,0, + 32,32,64,114,7,0,0,0,114,205,0,0,0,171,4,0, + 0,115,10,0,0,0,2,128,14,2,12,1,2,1,8,255, + 114,9,0,0,0,122,30,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,1,0,0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114, + 7,0,0,0,114,240,0,0,0,177,4,0,0,114,25,0, + 0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246, + 0,0,0,32,32,114,7,0,0,0,114,0,1,0,0,181, + 4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, + 0,0,114,24,1,0,0,114,25,1,0,0,114,74,0,0, + 0,114,246,0,0,0,32,32,114,7,0,0,0,114,202,0, + 0,0,185,4,0,0,114,26,1,0,0,114,9,0,0,0, + 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,235,0,0,0,114,15, + 1,0,0,114,21,1,0,0,114,238,0,0,0,114,244,0, + 0,0,114,205,0,0,0,114,240,0,0,0,114,0,1,0, + 0,114,159,0,0,0,114,202,0,0,0,114,12,0,0,0, + 114,7,0,0,0,114,28,1,0,0,138,4,0,0,115,24, + 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, + 8,8,6,8,6,8,4,2,4,14,1,114,9,0,0,0, + 114,28,1,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,64,0,0,0,115,104,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,100,18,100,19,132, + 0,90,12,100,20,100,21,132,0,90,13,100,22,100,23,132, + 0,90,14,100,24,83,0,41,25,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,99,4,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,67,0,0,0,115,36,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,3,124,0,95,5,100,0, + 83,0,114,69,0,0,0,41,6,218,5,95,110,97,109,101, + 218,5,95,112,97,116,104,114,136,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,12,95,112,97,116,104,95,102,105,110,100,101,114,169, + 4,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, + 90,11,112,97,116,104,95,102,105,110,100,101,114,32,32,32, + 32,114,7,0,0,0,114,235,0,0,0,198,4,0,0,115, + 8,0,0,0,6,1,6,1,14,1,10,1,114,9,0,0, + 0,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,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,15,100,3, + 83,0,124,1,100,4,102,2,83,0,41,6,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,97,0,0, + 0,114,10,0,0,0,41,2,114,16,0,0,0,114,65,0, + 0,0,90,8,95,95,112,97,116,104,95,95,78,41,2,114, + 45,1,0,0,114,104,0,0,0,41,4,114,143,0,0,0, + 114,38,1,0,0,218,3,100,111,116,90,2,109,101,32,32, + 32,32,114,7,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, + 204,4,0,0,115,8,0,0,0,18,2,8,1,4,2,8, + 3,114,9,0,0,0,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,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,52,1,0,0, + 114,154,0,0,0,114,16,0,0,0,218,7,109,111,100,117, + 108,101,115,41,3,114,143,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,32,32, + 32,114,7,0,0,0,114,47,1,0,0,214,4,0,0,115, + 4,0,0,0,12,1,16,1,114,9,0,0,0,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,4,0,0,0,67, + 0,0,0,115,80,0,0,0,116,0,124,0,160,1,161,0, + 131,1,125,1,124,1,124,0,106,2,107,3,114,37,124,0, + 160,3,124,0,106,4,124,1,161,2,125,2,124,2,100,0, + 117,1,114,34,124,2,106,5,100,0,117,0,114,34,124,2, + 106,6,114,34,124,2,106,6,124,0,95,7,124,1,124,0, + 95,2,124,0,106,7,83,0,114,69,0,0,0,41,8,114, + 136,0,0,0,114,47,1,0,0,114,48,1,0,0,114,49, + 1,0,0,114,45,1,0,0,114,163,0,0,0,114,201,0, + 0,0,114,46,1,0,0,41,3,114,143,0,0,0,90,11, + 112,97,114,101,110,116,95,112,97,116,104,114,209,0,0,0, + 32,32,32,114,7,0,0,0,218,12,95,114,101,99,97,108, + 99,117,108,97,116,101,218,4,0,0,115,16,0,0,0,12, + 2,10,1,14,1,18,3,6,1,8,1,6,1,6,1,114, + 9,0,0,0,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,3,0, + 0,0,67,0,0,0,243,12,0,0,0,116,0,124,0,160, + 1,161,0,131,1,83,0,114,69,0,0,0,41,2,218,4, + 105,116,101,114,114,54,1,0,0,114,20,1,0,0,32,114, + 7,0,0,0,218,8,95,95,105,116,101,114,95,95,231,4, + 0,0,243,2,0,0,0,12,1,114,9,0,0,0,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,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,54,1,0,0,41,2,114,143,0,0,0, + 218,5,105,110,100,101,120,32,32,114,7,0,0,0,218,11, + 95,95,103,101,116,105,116,101,109,95,95,234,4,0,0,114, + 58,1,0,0,114,9,0,0,0,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,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,46,1,0,0,41,3,114,143,0,0,0, + 114,60,1,0,0,114,65,0,0,0,32,32,32,114,7,0, + 0,0,218,11,95,95,115,101,116,105,116,101,109,95,95,237, + 4,0,0,115,2,0,0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0, + 114,55,1,0,0,114,69,0,0,0,41,2,114,4,0,0, + 0,114,54,1,0,0,114,20,1,0,0,32,114,7,0,0, + 0,218,7,95,95,108,101,110,95,95,240,4,0,0,114,58, + 1,0,0,114,9,0,0,0,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,3,0,0, + 0,67,0,0,0,243,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,89,0,0,0,114,46,1,0,0,114,20,1,0,0, + 32,114,7,0,0,0,218,8,95,95,114,101,112,114,95,95, + 243,4,0,0,114,58,1,0,0,114,9,0,0,0,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,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,143,0,0,0,218,4, + 105,116,101,109,32,32,114,7,0,0,0,218,12,95,95,99, + 111,110,116,97,105,110,115,95,95,246,4,0,0,114,58,1, + 0,0,114,9,0,0,0,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,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,46,1,0,0,114,61,0,0,0,114, + 66,1,0,0,32,32,114,7,0,0,0,114,61,0,0,0, + 249,4,0,0,243,2,0,0,0,16,1,114,9,0,0,0, + 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,15,114,149,0,0,0,114, + 148,0,0,0,114,150,0,0,0,114,151,0,0,0,114,235, + 0,0,0,114,52,1,0,0,114,47,1,0,0,114,54,1, + 0,0,114,57,1,0,0,114,61,1,0,0,114,62,1,0, + 0,114,63,1,0,0,114,65,1,0,0,114,68,1,0,0, + 114,61,0,0,0,114,12,0,0,0,114,7,0,0,0,114, + 44,1,0,0,191,4,0,0,115,26,0,0,0,8,0,4, + 1,8,6,8,6,8,10,8,4,8,13,8,3,8,3,8, + 3,8,3,8,3,12,3,114,9,0,0,0,114,44,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,64,0,0,0,115,88,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,100,18,132,0,90,12,100, + 19,83,0,41,20,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,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,44,1,0,0,114, + 46,1,0,0,114,50,1,0,0,32,32,32,32,114,7,0, + 0,0,114,235,0,0,0,255,4,0,0,115,2,0,0,0, + 18,1,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,67,0,0,0,115,24,0,0,0,116,0,160,1, + 100,1,116,2,161,2,1,0,100,2,160,3,124,0,106,4, + 161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0, + 0,0,114,100,0,0,0,114,101,0,0,0,114,89,0,0, + 0,114,149,0,0,0,41,1,114,243,0,0,0,32,114,7, + 0,0,0,218,11,109,111,100,117,108,101,95,114,101,112,114, + 2,5,0,0,115,8,0,0,0,6,7,2,1,4,255,12, + 2,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0,41,2, + 78,84,114,12,0,0,0,114,246,0,0,0,32,32,114,7, + 0,0,0,114,205,0,0,0,13,5,0,0,243,2,0,0, + 0,4,1,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0,41, + 2,78,114,10,0,0,0,114,12,0,0,0,114,246,0,0, + 0,32,32,114,7,0,0,0,114,0,1,0,0,16,5,0, + 0,114,72,1,0,0,114,9,0,0,0,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,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,10,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,32,32,114, + 7,0,0,0,114,240,0,0,0,19,5,0,0,114,69,1, + 0,0,114,9,0,0,0,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,1, + 0,0,0,67,0,0,0,114,24,0,0,0,114,236,0,0, + 0,114,12,0,0,0,114,237,0,0,0,32,32,114,7,0, + 0,0,114,238,0,0,0,22,5,0,0,114,239,0,0,0, + 114,9,0,0,0,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,1,0,0,0,67,0,0,0,115,4,0,0,0,100, + 0,83,0,114,69,0,0,0,114,12,0,0,0,114,40,1, + 0,0,32,32,114,7,0,0,0,114,244,0,0,0,25,5, + 0,0,114,72,1,0,0,114,9,0,0,0,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,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,3, + 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,78,41,4,114, + 158,0,0,0,114,172,0,0,0,114,46,1,0,0,114,245, + 0,0,0,114,246,0,0,0,32,32,114,7,0,0,0,114, + 247,0,0,0,28,5,0,0,115,8,0,0,0,6,7,4, + 1,4,255,12,3,114,9,0,0,0,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,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,67,0,0,0,115,22,0, + 0,0,100,1,100,2,108,0,109,1,125,2,1,0,124,2, + 124,0,106,2,131,1,83,0,41,3,78,114,0,0,0,0, + 41,1,218,15,78,97,109,101,115,112,97,99,101,82,101,97, + 100,101,114,41,3,114,30,1,0,0,114,73,1,0,0,114, + 46,1,0,0,41,3,114,143,0,0,0,114,243,0,0,0, + 114,73,1,0,0,32,32,32,114,7,0,0,0,114,31,1, + 0,0,40,5,0,0,115,4,0,0,0,12,1,10,1,114, + 9,0,0,0,122,36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,149,0, + 0,0,114,148,0,0,0,114,150,0,0,0,114,235,0,0, + 0,114,232,0,0,0,114,71,1,0,0,114,205,0,0,0, + 114,0,1,0,0,114,240,0,0,0,114,238,0,0,0,114, + 244,0,0,0,114,247,0,0,0,114,31,1,0,0,114,12, + 0,0,0,114,7,0,0,0,114,70,1,0,0,254,4,0, + 0,115,22,0,0,0,8,0,8,1,2,3,10,1,8,10, + 8,3,8,3,8,3,8,3,8,3,12,12,114,9,0,0, + 0,114,70,1,0,0,99,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,7,100,6,100,7,132,0,131,1,90,8, + 101,7,100,8,100,9,132,0,131,1,90,9,101,7,100,19, + 100,11,100,12,132,1,131,1,90,10,101,7,100,20,100,13, + 100,14,132,1,131,1,90,11,101,7,100,19,100,15,100,16, + 132,1,131,1,90,12,101,4,100,17,100,18,132,0,131,1, + 90,13,100,10,83,0,41,21,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,0,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,64,0,0,0,116,0, + 116,1,106,2,160,3,161,0,131,1,68,0,93,22,92,2, + 125,0,125,1,124,1,100,1,117,0,114,20,116,1,106,2, + 124,0,61,0,113,7,116,4,124,1,100,2,131,2,114,29, + 124,1,160,5,161,0,1,0,113,7,100,1,83,0,41,3, + 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,41,6,218,4,108,105,115,116,114,16,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,75,1,0,0,41,2,114,141,0,0,0,218,6,102, + 105,110,100,101,114,32,32,114,7,0,0,0,114,75,1,0, + 0,51,5,0,0,115,14,0,0,0,22,4,8,1,10,1, + 10,1,8,1,2,128,4,252,114,9,0,0,0,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,1,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, + 115,78,0,0,0,116,0,106,1,100,1,117,1,114,14,116, + 0,106,1,115,14,116,2,160,3,100,2,116,4,161,2,1, + 0,116,0,106,1,68,0,93,18,125,1,9,0,124,1,124, + 0,131,1,2,0,1,0,83,0,35,0,4,0,116,5,121, + 38,1,0,1,0,1,0,89,0,113,17,37,0,100,1,83, + 0,119,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,16,0,0,0,218,10,112,97,116,104,95,104,111,111, + 107,115,114,99,0,0,0,114,100,0,0,0,114,161,0,0, + 0,114,142,0,0,0,41,2,114,65,0,0,0,90,4,104, + 111,111,107,32,32,114,7,0,0,0,218,11,95,112,97,116, + 104,95,104,111,111,107,115,61,5,0,0,115,22,0,0,0, + 16,3,12,1,10,1,2,1,12,1,2,128,12,1,4,1, + 2,128,4,2,2,253,115,12,0,0,0,148,3,26,2,154, + 7,35,9,166,1,35,9,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,8,0,0,0, + 67,0,0,0,115,104,0,0,0,124,1,100,1,107,2,114, + 21,9,0,116,0,160,1,161,0,125,1,110,11,35,0,4, + 0,116,2,121,51,1,0,1,0,1,0,89,0,100,2,83, + 0,37,0,9,0,116,3,106,4,124,1,25,0,125,2,124, + 2,83,0,35,0,4,0,116,5,121,50,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,124,2,83,0,37,0,119,0,119, + 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,10,0,0,0,78,41,7,114, + 19,0,0,0,114,82,0,0,0,218,17,70,105,108,101,78, + 111,116,70,111,117,110,100,69,114,114,111,114,114,16,0,0, + 0,114,77,1,0,0,218,8,75,101,121,69,114,114,111,114, + 114,81,1,0,0,41,3,114,220,0,0,0,114,65,0,0, + 0,114,79,1,0,0,32,32,32,114,7,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,74,5,0,0,115,36,0,0,0,8,8,2, + 1,10,1,2,128,12,1,6,3,2,128,2,1,10,1,4, + 4,2,128,12,253,10,1,12,1,4,1,2,128,2,253,2, + 250,115,24,0,0,0,133,4,10,0,138,7,20,7,150,5, + 29,0,157,17,49,7,178,1,49,7,179,1,20,7,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,4,0,0,0, + 67,0,0,0,115,138,0,0,0,116,0,124,2,100,1,131, + 2,114,27,116,1,160,2,124,2,161,1,155,0,100,2,157, + 2,125,3,116,3,160,4,124,3,116,5,161,2,1,0,124, + 2,160,6,124,1,161,1,92,2,125,4,125,5,110,21,116, + 1,160,2,124,2,161,1,155,0,100,3,157,2,125,3,116, + 3,160,4,124,3,116,5,161,2,1,0,124,2,160,7,124, + 1,161,1,125,4,103,0,125,5,124,4,100,0,117,1,114, + 58,116,1,160,8,124,1,124,4,161,2,83,0,116,1,160, + 9,124,1,100,0,161,2,125,6,124,5,124,6,95,10,124, + 6,83,0,41,4,78,114,160,0,0,0,122,53,46,102,105, + 110,100,95,115,112,101,99,40,41,32,110,111,116,32,102,111, + 117,110,100,59,32,102,97,108,108,105,110,103,32,98,97,99, + 107,32,116,111,32,102,105,110,100,95,108,111,97,100,101,114, + 40,41,122,53,46,102,105,110,100,95,115,112,101,99,40,41, + 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, + 105,110,103,32,98,97,99,107,32,116,111,32,102,105,110,100, + 95,109,111,100,117,108,101,40,41,41,11,114,152,0,0,0, + 114,158,0,0,0,90,12,95,111,98,106,101,99,116,95,110, + 97,109,101,114,99,0,0,0,114,100,0,0,0,114,161,0, + 0,0,114,160,0,0,0,114,228,0,0,0,114,223,0,0, + 0,114,206,0,0,0,114,201,0,0,0,41,7,114,220,0, + 0,0,114,162,0,0,0,114,79,1,0,0,114,165,0,0, + 0,114,163,0,0,0,114,164,0,0,0,114,209,0,0,0, + 32,32,32,32,32,32,32,114,7,0,0,0,218,16,95,108, + 101,103,97,99,121,95,103,101,116,95,115,112,101,99,96,5, + 0,0,115,26,0,0,0,10,4,16,1,12,2,16,1,16, + 2,12,2,10,1,4,1,8,1,12,1,12,1,6,1,4, + 1,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,166,0,0,0,103,0, + 125,4,124,2,68,0,93,67,125,5,116,0,124,5,116,1, + 116,2,102,2,131,2,115,14,113,4,124,0,160,3,124,5, + 161,1,125,6,124,6,100,1,117,1,114,71,116,4,124,6, + 100,2,131,2,114,35,124,6,160,5,124,1,124,3,161,2, + 125,7,110,6,124,0,160,6,124,1,124,6,161,2,125,7, + 124,7,100,1,117,0,114,46,113,4,124,7,106,7,100,1, + 117,1,114,55,124,7,2,0,1,0,83,0,124,7,106,8, + 125,8,124,8,100,1,117,0,114,66,116,9,100,3,131,1, + 130,1,124,4,160,10,124,8,161,1,1,0,113,4,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,225,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,184,0,0,0,114,109,0,0,0,218,5, + 98,121,116,101,115,114,84,1,0,0,114,152,0,0,0,114, + 225,0,0,0,114,85,1,0,0,114,163,0,0,0,114,201, + 0,0,0,114,142,0,0,0,114,190,0,0,0,114,158,0, + 0,0,114,206,0,0,0,41,9,114,220,0,0,0,114,162, + 0,0,0,114,65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0,114,164, + 0,0,0,32,32,32,32,32,32,32,32,32,114,7,0,0, + 0,218,9,95,103,101,116,95,115,112,101,99,117,5,0,0, + 115,42,0,0,0,4,5,8,1,14,1,2,1,10,1,8, + 1,10,1,14,1,12,2,8,1,2,1,10,1,8,1,6, + 1,8,1,8,1,10,5,2,128,12,2,6,1,4,1,114, + 9,0,0,0,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,5,0,0,0,67,0,0,0,115, + 94,0,0,0,124,2,100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3, + 100,1,117,0,114,45,124,4,106,4,125,5,124,5,114,43, + 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,124,4, + 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,16,0,0,0,114,65,0,0,0, + 114,88,1,0,0,114,163,0,0,0,114,201,0,0,0,114, + 204,0,0,0,114,44,1,0,0,41,6,114,220,0,0,0, + 114,162,0,0,0,114,65,0,0,0,114,224,0,0,0,114, + 209,0,0,0,114,87,1,0,0,32,32,32,32,32,32,114, + 7,0,0,0,114,225,0,0,0,149,5,0,0,115,26,0, + 0,0,8,6,6,1,14,1,8,1,4,1,10,1,6,1, + 4,1,6,3,16,1,4,1,4,2,4,2,114,9,0,0, + 0,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,67,0,0,0,115,42,0,0, 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, - 3,124,1,161,1,125,2,124,2,100,2,117,0,114,19,100, - 2,103,0,102,2,83,0,124,2,106,4,124,2,106,5,112, - 25,103,0,102,2,83,0,41,3,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, - 122,101,70,105,108,101,70,105,110,100,101,114,46,102,105,110, - 100,95,108,111,97,100,101,114,40,41,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,32,97,110,100,32,115,108,97, - 116,101,100,32,102,111,114,32,114,101,109,111,118,97,108,32, - 105,110,32,80,121,116,104,111,110,32,51,46,49,50,59,32, - 117,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, - 105,110,115,116,101,97,100,78,41,6,114,99,0,0,0,114, - 100,0,0,0,114,101,0,0,0,114,225,0,0,0,114,163, - 0,0,0,114,201,0,0,0,41,3,114,143,0,0,0,114, - 162,0,0,0,114,209,0,0,0,32,32,32,114,7,0,0, - 0,114,160,0,0,0,233,5,0,0,115,14,0,0,0,6, - 7,2,2,4,254,10,3,8,1,8,1,16,1,114,9,0, - 0,0,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,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,200,0,0,0,41,1,114,212,0,0,0,41,7,114, - 143,0,0,0,114,210,0,0,0,114,162,0,0,0,114,65, - 0,0,0,90,4,115,109,115,108,114,224,0,0,0,114,163, - 0,0,0,32,32,32,32,32,32,32,114,7,0,0,0,114, - 88,1,0,0,248,5,0,0,115,8,0,0,0,10,1,8, - 1,2,1,6,255,114,9,0,0,0,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,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,9,0,116, - 1,124,0,106,2,112,17,116,3,160,4,161,0,131,1,106, - 5,125,5,110,12,35,0,4,0,116,6,121,190,1,0,1, - 0,1,0,100,4,125,5,89,0,110,1,37,0,124,5,124, - 0,106,7,107,3,114,45,124,0,160,8,161,0,1,0,124, - 5,124,0,95,7,116,9,131,0,114,56,124,0,106,10,125, - 6,124,4,160,11,161,0,125,7,110,5,124,0,106,12,125, - 6,124,4,125,7,124,7,124,6,118,0,114,108,116,13,124, - 0,106,2,124,4,131,2,125,8,124,0,106,14,68,0,93, - 29,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, - 103,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,74,116,17,124,8,131, - 1,125,3,124,0,106,14,68,0,93,55,92,2,125,9,125, - 10,9,0,116,13,124,0,106,2,124,4,124,9,23,0,131, - 2,125,12,110,12,35,0,4,0,116,18,121,189,1,0,1, - 0,1,0,89,0,1,0,100,6,83,0,37,0,116,19,160, - 20,100,7,124,12,100,3,100,8,166,3,1,0,124,7,124, - 9,23,0,124,6,118,0,114,166,116,15,124,12,131,1,114, - 166,124,0,160,16,124,10,124,1,124,12,100,6,124,2,161, - 5,2,0,1,0,83,0,113,111,124,3,114,187,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,119,0,119,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,97,0, - 0,0,114,45,0,0,0,114,130,0,0,0,114,235,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,104,0,0,0,114,75,0,0, - 0,114,65,0,0,0,114,19,0,0,0,114,82,0,0,0, - 114,33,1,0,0,114,76,0,0,0,114,93,1,0,0,218, - 11,95,102,105,108,108,95,99,97,99,104,101,114,22,0,0, - 0,114,96,1,0,0,114,131,0,0,0,114,95,1,0,0, - 114,67,0,0,0,114,92,1,0,0,114,80,0,0,0,114, - 88,1,0,0,114,83,0,0,0,114,111,0,0,0,114,158, - 0,0,0,114,172,0,0,0,114,206,0,0,0,114,201,0, - 0,0,41,14,114,143,0,0,0,114,162,0,0,0,114,224, - 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,192, - 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,210,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,209,0,0,0,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,114,7,0,0,0,114, - 225,0,0,0,253,5,0,0,115,94,0,0,0,4,5,14, - 1,2,1,22,1,2,128,12,1,8,1,2,128,10,1,8, - 1,6,1,6,2,6,1,10,1,6,2,4,1,8,2,12, - 1,14,1,8,1,10,1,8,1,24,1,2,255,8,5,14, - 2,2,1,18,1,2,128,12,1,8,1,2,128,16,1,12, - 1,8,1,10,1,4,1,8,255,2,128,4,2,12,1,12, - 1,8,1,4,1,4,1,2,244,2,228,115,31,0,0,0, - 138,10,21,0,149,9,32,7,193,52,8,65,61,2,193,61, - 7,66,8,9,194,61,1,66,8,9,194,62,1,32,7,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,10,0,0,0,67,0,0,0,115,194,0,0,0,124, - 0,106,0,125,1,9,0,116,1,160,2,124,1,112,11,116, - 1,160,3,161,0,161,1,125,2,110,15,35,0,4,0,116, - 4,116,5,116,6,102,3,121,96,1,0,1,0,1,0,103, - 0,125,2,89,0,110,1,37,0,116,7,106,8,160,9,100, - 1,161,1,115,41,116,10,124,2,131,1,124,0,95,11,110, - 37,116,10,131,0,125,3,124,2,68,0,93,28,125,4,124, - 4,160,12,100,2,161,1,92,3,125,5,125,6,125,7,124, - 6,114,67,100,3,160,13,124,5,124,7,160,14,161,0,161, - 2,125,8,110,2,124,5,125,8,124,3,160,15,124,8,161, - 1,1,0,113,46,124,3,124,0,95,11,116,7,106,8,160, - 9,116,16,161,1,114,94,100,4,100,5,132,0,124,2,68, - 0,131,1,124,0,95,17,100,6,83,0,100,6,83,0,119, - 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,15,0,0,0,114,97, - 0,0,0,114,88,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,83,0,0,0,115,20,0, - 0,0,104,0,124,0,93,6,125,1,124,1,160,0,161,0, - 146,2,113,2,83,0,114,12,0,0,0,41,1,114,131,0, - 0,0,41,2,114,5,0,0,0,90,2,102,110,32,32,114, - 7,0,0,0,114,14,0,0,0,77,6,0,0,115,2,0, - 0,0,20,0,114,9,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,19,0,0, - 0,90,7,108,105,115,116,100,105,114,114,82,0,0,0,114, - 82,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,16,0,0,0,114,26, - 0,0,0,114,27,0,0,0,114,94,1,0,0,114,95,1, - 0,0,114,126,0,0,0,114,89,0,0,0,114,131,0,0, - 0,218,3,97,100,100,114,28,0,0,0,114,96,1,0,0, - 41,9,114,143,0,0,0,114,65,0,0,0,90,8,99,111, - 110,116,101,110,116,115,90,21,108,111,119,101,114,95,115,117, - 102,102,105,120,95,99,111,110,116,101,110,116,115,114,67,1, - 0,0,114,141,0,0,0,114,51,1,0,0,114,41,1,0, - 0,90,8,110,101,119,95,110,97,109,101,32,32,32,32,32, - 32,32,32,32,114,7,0,0,0,114,98,1,0,0,48,6, - 0,0,115,42,0,0,0,6,2,2,1,20,1,2,128,18, - 1,8,3,2,128,12,3,12,1,6,7,8,1,16,1,4, - 1,18,1,4,2,12,1,6,1,12,1,20,1,4,255,2, - 233,115,13,0,0,0,132,9,14,0,142,12,28,7,193,32, - 1,28,7,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,7,0,0,0, - 115,22,0,0,0,135,3,135,4,136,3,136,4,102,2,100, - 1,100,2,132,8,125,2,124,2,83,0,41,4,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,4,0,0,0,19,0,0,0,115,36,0,0,0, - 116,0,124,0,131,1,115,10,116,1,100,1,124,0,100,2, - 141,2,130,1,137,1,124,0,103,1,137,2,162,1,82,0, - 142,0,83,0,41,4,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,78,41,2,114,83,0, - 0,0,114,142,0,0,0,41,3,114,65,0,0,0,114,220, - 0,0,0,114,97,1,0,0,32,128,128,114,7,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,89,6,0,0,115,6, - 0,0,0,8,2,12,1,16,1,114,9,0,0,0,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,78,114,12,0,0,0,41,5,114,220, - 0,0,0,114,97,1,0,0,114,102,1,0,0,114,220,0, - 0,0,114,97,1,0,0,96,96,32,64,64,114,7,0,0, - 0,218,9,112,97,116,104,95,104,111,111,107,79,6,0,0, - 115,6,0,0,0,4,128,14,10,4,6,114,9,0,0,0, - 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,3,0,0,0,67,0,0,0,114,64,1,0,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,89,0,0,0,114,65,0,0, - 0,114,20,1,0,0,32,114,7,0,0,0,114,65,1,0, - 0,97,6,0,0,114,58,1,0,0,114,9,0,0,0,122, - 19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,101, - 112,114,95,95,114,69,0,0,0,41,15,114,149,0,0,0, - 114,148,0,0,0,114,150,0,0,0,114,151,0,0,0,114, - 235,0,0,0,114,75,1,0,0,114,166,0,0,0,114,228, - 0,0,0,114,160,0,0,0,114,88,1,0,0,114,225,0, - 0,0,114,98,1,0,0,114,233,0,0,0,114,103,1,0, - 0,114,65,1,0,0,114,12,0,0,0,114,7,0,0,0, - 114,91,1,0,0,202,5,0,0,115,24,0,0,0,8,0, - 4,2,8,7,8,16,4,4,8,2,8,15,10,5,8,51, - 2,31,10,1,12,17,114,9,0,0,0,114,91,1,0,0, - 99,4,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,146,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,33,124,5,114,18,124,5,106,1,125,4,110,15,124,2, - 124,3,107,2,114,28,116,2,124,1,124,2,131,2,125,4, - 110,5,116,3,124,1,124,2,131,2,125,4,124,5,115,42, - 116,4,124,1,124,2,124,4,100,3,141,3,125,5,9,0, - 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, - 100,0,83,0,35,0,4,0,116,5,121,72,1,0,1,0, - 1,0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0,114,39, - 1,0,0,114,32,1,0,0,114,212,0,0,0,218,9,69, - 120,99,101,112,116,105,111,110,41,6,90,2,110,115,114,141, - 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,163,0,0,0,114,209,0, - 0,0,32,32,32,32,32,32,114,7,0,0,0,218,14,95, - 102,105,120,95,117,112,95,109,111,100,117,108,101,103,6,0, - 0,115,40,0,0,0,10,2,10,1,4,1,4,1,8,1, - 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, - 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, - 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, - 7,7,114,108,1,0,0,99,0,0,0,0,0,0,0,0, - 0,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,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, - 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, - 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, - 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, - 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, - 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, - 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, - 120,101,115,41,46,10,32,32,32,32,78,41,7,114,28,1, - 0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,32, - 32,32,114,7,0,0,0,114,207,0,0,0,126,6,0,0, - 115,8,0,0,0,12,5,8,1,8,1,10,1,114,9,0, - 0,0,114,207,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,67,0,0,0,115,8,0,0, - 0,124,0,97,0,100,0,83,0,114,69,0,0,0,41,1, - 114,158,0,0,0,41,1,218,17,95,98,111,111,116,115,116, - 114,97,112,95,109,111,100,117,108,101,32,114,7,0,0,0, - 218,21,95,115,101,116,95,98,111,111,116,115,116,114,97,112, - 95,109,111,100,117,108,101,137,6,0,0,115,2,0,0,0, - 8,2,114,9,0,0,0,114,111,1,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,67,0,0, - 0,115,50,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,111,1,0,0,114,207,0, - 0,0,114,16,0,0,0,114,80,1,0,0,114,190,0,0, - 0,114,91,1,0,0,114,103,1,0,0,218,9,109,101,116, - 97,95,112,97,116,104,114,61,0,0,0,114,74,1,0,0, - 41,2,114,110,1,0,0,90,17,115,117,112,112,111,114,116, - 101,100,95,108,111,97,100,101,114,115,32,32,114,7,0,0, - 0,218,8,95,105,110,115,116,97,108,108,142,6,0,0,115, - 8,0,0,0,8,2,6,1,20,1,16,1,114,9,0,0, - 0,114,113,1,0,0,41,1,114,87,0,0,0,114,69,0, - 0,0,41,3,78,78,78,41,2,114,0,0,0,0,114,0, - 0,0,0,41,1,84,41,85,114,151,0,0,0,114,158,0, - 0,0,114,186,0,0,0,114,91,0,0,0,114,16,0,0, - 0,114,99,0,0,0,114,183,0,0,0,114,26,0,0,0, - 114,230,0,0,0,90,2,110,116,114,19,0,0,0,114,214, - 0,0,0,90,5,112,111,115,105,120,114,51,0,0,0,218, - 3,97,108,108,114,59,0,0,0,114,136,0,0,0,114,57, - 0,0,0,114,62,0,0,0,90,20,95,112,97,116,104,115, - 101,112,115,95,119,105,116,104,95,99,111,108,111,110,114,29, - 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,28,0,0,0,114, - 30,0,0,0,114,22,0,0,0,114,37,0,0,0,114,43, - 0,0,0,114,46,0,0,0,114,67,0,0,0,114,73,0, - 0,0,114,75,0,0,0,114,79,0,0,0,114,80,0,0, - 0,114,83,0,0,0,114,86,0,0,0,114,95,0,0,0, - 218,4,116,121,112,101,218,8,95,95,99,111,100,101,95,95, - 114,185,0,0,0,114,35,0,0,0,114,171,0,0,0,114, - 34,0,0,0,114,40,0,0,0,114,7,1,0,0,114,116, - 0,0,0,114,112,0,0,0,114,127,0,0,0,114,61,0, - 0,0,114,109,1,0,0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0, - 0,114,135,0,0,0,114,137,0,0,0,114,139,0,0,0, - 114,159,0,0,0,114,166,0,0,0,114,175,0,0,0,114, - 179,0,0,0,114,181,0,0,0,114,188,0,0,0,114,193, - 0,0,0,114,194,0,0,0,114,199,0,0,0,218,6,111, - 98,106,101,99,116,114,208,0,0,0,114,212,0,0,0,114, - 213,0,0,0,114,234,0,0,0,114,248,0,0,0,114,10, - 1,0,0,114,32,1,0,0,114,39,1,0,0,114,28,1, - 0,0,114,44,1,0,0,114,70,1,0,0,114,74,1,0, - 0,114,91,1,0,0,114,108,1,0,0,114,207,0,0,0, - 114,111,1,0,0,114,113,1,0,0,114,12,0,0,0,114, - 7,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,180,0,0,0,4,0,4,22,8,3,8,1,8, - 1,8,1,8,1,10,3,4,1,8,1,10,1,8,2,4, - 3,10,1,6,2,22,2,8,1,8,1,10,1,14,1,4, - 4,4,1,2,1,2,1,4,255,8,4,6,16,8,3,8, - 5,8,5,4,6,10,1,8,30,8,6,8,8,8,10,8, - 9,8,5,4,7,10,1,8,8,10,5,10,22,0,127,16, - 36,12,1,4,2,4,1,6,2,4,1,10,1,8,2,6, - 2,8,2,16,2,8,71,8,40,8,19,8,12,8,12,8, - 31,8,20,8,33,8,28,10,24,10,13,10,10,8,11,6, - 14,4,3,2,1,12,255,14,73,14,67,16,30,0,127,14, - 17,18,50,18,45,18,25,14,53,14,63,14,49,0,127,14, - 29,0,127,10,30,8,23,8,11,12,5,114,9,0,0,0, + 3,124,1,124,2,161,2,125,3,124,3,100,2,117,0,114, + 18,100,2,83,0,124,3,106,4,83,0,41,3,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,122,101,80,97,116,104,70, + 105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 78,114,226,0,0,0,114,227,0,0,0,32,32,32,32,114, + 7,0,0,0,114,228,0,0,0,173,5,0,0,115,14,0, + 0,0,6,8,2,2,4,254,12,3,8,1,4,1,6,1, + 114,9,0,0,0,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,0,0, + 0,0,0,0,0,0,0,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, + 2,1,0,124,2,106,2,124,0,105,0,124,1,164,1,142, + 1,83,0,41,4,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,78,41,3,90,18,105,109,112,111,114,116, + 108,105,98,46,109,101,116,97,100,97,116,97,114,89,1,0, + 0,218,18,102,105,110,100,95,100,105,115,116,114,105,98,117, + 116,105,111,110,115,41,3,114,144,0,0,0,114,145,0,0, + 0,114,89,1,0,0,32,32,32,114,7,0,0,0,114,90, + 1,0,0,189,5,0,0,115,4,0,0,0,12,10,16,1, + 114,9,0,0,0,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,114,69,0,0,0,114,229,0,0,0,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,75,1,0,0,114,81, + 1,0,0,114,233,0,0,0,114,84,1,0,0,114,85,1, + 0,0,114,88,1,0,0,114,225,0,0,0,114,228,0,0, + 0,114,90,1,0,0,114,12,0,0,0,114,7,0,0,0, + 114,74,1,0,0,47,5,0,0,115,36,0,0,0,8,0, + 4,2,2,2,10,1,2,9,10,1,2,12,10,1,2,21, + 10,1,2,20,12,1,2,31,12,1,2,23,12,1,2,15, + 14,1,114,9,0,0,0,114,74,1,0,0,99,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,6,0,0,0,7,0,0, + 0,115,114,0,0,0,135,5,103,0,125,3,124,2,68,0, + 93,16,92,2,138,5,125,4,124,3,160,0,136,5,102,1, + 100,1,100,2,132,8,124,4,68,0,131,1,161,1,1,0, + 113,5,124,3,124,0,95,1,124,1,112,28,100,3,124,0, + 95,2,116,3,124,0,106,2,131,1,115,44,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,3,0,0,0,51,0,0,0,115,24,0,0,0, + 129,0,124,0,93,7,125,1,124,1,137,2,102,2,86,0, + 1,0,113,2,100,0,83,0,114,69,0,0,0,114,12,0, + 0,0,41,3,114,5,0,0,0,114,41,1,0,0,114,163, + 0,0,0,32,32,128,114,7,0,0,0,114,8,0,0,0, + 218,5,0,0,115,4,0,0,0,6,128,18,0,114,9,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,97,0,0,0,114, + 130,0,0,0,78,41,11,114,190,0,0,0,218,8,95,108, + 111,97,100,101,114,115,114,65,0,0,0,114,86,0,0,0, + 114,67,0,0,0,114,19,0,0,0,114,82,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,6,114,143,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,211,0,0,0,114,163,0, + 0,0,32,32,32,32,32,64,114,7,0,0,0,114,235,0, + 0,0,212,5,0,0,115,22,0,0,0,2,128,4,4,12, + 1,26,1,6,1,10,2,10,1,18,1,6,1,8,1,12, + 1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93,1,0,0,114, + 20,1,0,0,32,114,7,0,0,0,114,75,1,0,0,228, + 5,0,0,114,81,0,0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0, + 115,54,0,0,0,116,0,160,1,100,1,116,2,161,2,1, + 0,124,0,160,3,124,1,161,1,125,2,124,2,100,2,117, + 0,114,19,100,2,103,0,102,2,83,0,124,2,106,4,124, + 2,106,5,112,25,103,0,102,2,83,0,41,3,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,122,101,70,105,108,101,70,105,110,100,101,114, + 46,102,105,110,100,95,108,111,97,100,101,114,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,78,41,6,114,99, + 0,0,0,114,100,0,0,0,114,101,0,0,0,114,225,0, + 0,0,114,163,0,0,0,114,201,0,0,0,41,3,114,143, + 0,0,0,114,162,0,0,0,114,209,0,0,0,32,32,32, + 114,7,0,0,0,114,160,0,0,0,234,5,0,0,115,14, + 0,0,0,6,7,2,2,4,254,10,3,8,1,8,1,16, + 1,114,9,0,0,0,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,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,200,0,0,0,41,1,114,212,0,0, + 0,41,7,114,143,0,0,0,114,210,0,0,0,114,162,0, + 0,0,114,65,0,0,0,90,4,115,109,115,108,114,224,0, + 0,0,114,163,0,0,0,32,32,32,32,32,32,32,114,7, + 0,0,0,114,88,1,0,0,249,5,0,0,115,8,0,0, + 0,10,1,8,1,2,1,6,255,114,9,0,0,0,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,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,9,0,116,1,124,0,106,2,112,17,116,3,160,4,161, + 0,131,1,106,5,125,5,110,12,35,0,4,0,116,6,121, + 190,1,0,1,0,1,0,100,4,125,5,89,0,110,1,37, + 0,124,5,124,0,106,7,107,3,114,45,124,0,160,8,161, + 0,1,0,124,5,124,0,95,7,116,9,131,0,114,56,124, + 0,106,10,125,6,124,4,160,11,161,0,125,7,110,5,124, + 0,106,12,125,6,124,4,125,7,124,7,124,6,118,0,114, + 108,116,13,124,0,106,2,124,4,131,2,125,8,124,0,106, + 14,68,0,93,29,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,103,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,74,116, + 17,124,8,131,1,125,3,124,0,106,14,68,0,93,55,92, + 2,125,9,125,10,9,0,116,13,124,0,106,2,124,4,124, + 9,23,0,131,2,125,12,110,12,35,0,4,0,116,18,121, + 189,1,0,1,0,1,0,89,0,1,0,100,6,83,0,37, + 0,116,19,160,20,100,7,124,12,100,3,100,8,166,3,1, + 0,124,7,124,9,23,0,124,6,118,0,114,166,116,15,124, + 12,131,1,114,166,124,0,160,16,124,10,124,1,124,12,100, + 6,124,2,161,5,2,0,1,0,83,0,113,111,124,3,114, + 187,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,119,0,119,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,97,0,0,0,114,45,0,0,0,114,130,0,0,0, + 114,235,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,104,0,0,0, + 114,75,0,0,0,114,65,0,0,0,114,19,0,0,0,114, + 82,0,0,0,114,33,1,0,0,114,76,0,0,0,114,93, + 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101, + 114,22,0,0,0,114,96,1,0,0,114,131,0,0,0,114, + 95,1,0,0,114,67,0,0,0,114,92,1,0,0,114,80, + 0,0,0,114,88,1,0,0,114,83,0,0,0,114,111,0, + 0,0,114,158,0,0,0,114,172,0,0,0,114,206,0,0, + 0,114,201,0,0,0,41,14,114,143,0,0,0,114,162,0, + 0,0,114,224,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,192,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,210,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,209,0,0,0, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,7, + 0,0,0,114,225,0,0,0,254,5,0,0,115,94,0,0, + 0,4,5,14,1,2,1,22,1,2,128,12,1,8,1,2, + 128,10,1,8,1,6,1,6,2,6,1,10,1,6,2,4, + 1,8,2,12,1,14,1,8,1,10,1,8,1,24,1,2, + 255,8,5,14,2,2,1,18,1,2,128,12,1,8,1,2, + 128,16,1,12,1,8,1,10,1,4,1,8,255,2,128,4, + 2,12,1,12,1,8,1,4,1,4,1,2,244,2,228,115, + 31,0,0,0,138,10,21,0,149,9,32,7,193,52,8,65, + 61,2,193,61,7,66,8,9,194,61,1,66,8,9,194,62, + 1,32,7,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,10,0,0,0,67,0,0,0,115,194, + 0,0,0,124,0,106,0,125,1,9,0,116,1,160,2,124, + 1,112,11,116,1,160,3,161,0,161,1,125,2,110,15,35, + 0,4,0,116,4,116,5,116,6,102,3,121,96,1,0,1, + 0,1,0,103,0,125,2,89,0,110,1,37,0,116,7,106, + 8,160,9,100,1,161,1,115,41,116,10,124,2,131,1,124, + 0,95,11,110,37,116,10,131,0,125,3,124,2,68,0,93, + 28,125,4,124,4,160,12,100,2,161,1,92,3,125,5,125, + 6,125,7,124,6,114,67,100,3,160,13,124,5,124,7,160, + 14,161,0,161,2,125,8,110,2,124,5,125,8,124,3,160, + 15,124,8,161,1,1,0,113,46,124,3,124,0,95,11,116, + 7,106,8,160,9,116,16,161,1,114,94,100,4,100,5,132, + 0,124,2,68,0,131,1,124,0,95,17,100,6,83,0,100, + 6,83,0,119,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,15,0, + 0,0,114,97,0,0,0,114,88,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,83,0,0, + 0,115,20,0,0,0,104,0,124,0,93,6,125,1,124,1, + 160,0,161,0,146,2,113,2,83,0,114,12,0,0,0,41, + 1,114,131,0,0,0,41,2,114,5,0,0,0,90,2,102, + 110,32,32,114,7,0,0,0,114,14,0,0,0,78,6,0, + 0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100,105,114,114,82, + 0,0,0,114,82,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,16,0, + 0,0,114,26,0,0,0,114,27,0,0,0,114,94,1,0, + 0,114,95,1,0,0,114,126,0,0,0,114,89,0,0,0, + 114,131,0,0,0,218,3,97,100,100,114,28,0,0,0,114, + 96,1,0,0,41,9,114,143,0,0,0,114,65,0,0,0, + 90,8,99,111,110,116,101,110,116,115,90,21,108,111,119,101, + 114,95,115,117,102,102,105,120,95,99,111,110,116,101,110,116, + 115,114,67,1,0,0,114,141,0,0,0,114,51,1,0,0, + 114,41,1,0,0,90,8,110,101,119,95,110,97,109,101,32, + 32,32,32,32,32,32,32,32,114,7,0,0,0,114,98,1, + 0,0,49,6,0,0,115,42,0,0,0,6,2,2,1,20, + 1,2,128,18,1,8,3,2,128,12,3,12,1,6,7,8, + 1,16,1,4,1,18,1,4,2,12,1,6,1,12,1,20, + 1,4,255,2,233,115,13,0,0,0,132,9,14,0,142,12, + 28,7,193,32,1,28,7,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, + 7,0,0,0,115,22,0,0,0,135,0,135,1,136,0,136, + 1,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, + 4,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,4,0,0,0,19,0,0,0,115, + 36,0,0,0,116,0,124,0,131,1,115,10,116,1,100,1, + 124,0,100,2,141,2,130,1,137,1,124,0,103,1,137,2, + 162,1,82,0,142,0,83,0,41,4,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,78,41, + 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, + 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, + 7,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,90,6, + 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, + 0,0,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,78,114,12,0,0,0, + 41,3,114,220,0,0,0,114,97,1,0,0,114,102,1,0, + 0,96,96,32,114,7,0,0,0,218,9,112,97,116,104,95, + 104,111,111,107,80,6,0,0,115,6,0,0,0,4,128,14, + 10,4,6,114,9,0,0,0,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,3,0,0,0,67, + 0,0,0,114,64,1,0,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, + 89,0,0,0,114,65,0,0,0,114,20,1,0,0,32,114, + 7,0,0,0,114,65,1,0,0,98,6,0,0,114,58,1, + 0,0,114,9,0,0,0,122,19,70,105,108,101,70,105,110, + 100,101,114,46,95,95,114,101,112,114,95,95,114,69,0,0, + 0,41,15,114,149,0,0,0,114,148,0,0,0,114,150,0, + 0,0,114,151,0,0,0,114,235,0,0,0,114,75,1,0, + 0,114,166,0,0,0,114,228,0,0,0,114,160,0,0,0, + 114,88,1,0,0,114,225,0,0,0,114,98,1,0,0,114, + 233,0,0,0,114,103,1,0,0,114,65,1,0,0,114,12, + 0,0,0,114,7,0,0,0,114,91,1,0,0,203,5,0, + 0,115,24,0,0,0,8,0,4,2,8,7,8,16,4,4, + 8,2,8,15,10,5,8,51,2,31,10,1,12,17,114,9, + 0,0,0,114,91,1,0,0,99,4,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5, + 106,1,125,4,110,15,124,2,124,3,107,2,114,28,116,2, + 124,1,124,2,131,2,125,4,110,5,116,3,124,1,124,2, + 131,2,125,4,124,5,115,42,116,4,124,1,124,2,124,4, + 100,3,141,3,125,5,9,0,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,100,0,83,0,35,0,4,0, + 116,5,121,72,1,0,1,0,1,0,89,0,100,0,83,0, + 37,0,119,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,41,1,114, + 163,0,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,163,0,0,0,114,39,1,0,0,114,32,1,0,0, + 114,212,0,0,0,218,9,69,120,99,101,112,116,105,111,110, + 41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0,32,32,32,32,32,32, + 114,7,0,0,0,218,14,95,102,105,120,95,117,112,95,109, + 111,100,117,108,101,104,6,0,0,115,40,0,0,0,10,2, + 10,1,4,1,4,1,8,1,8,1,12,1,10,2,4,1, + 14,1,2,1,8,1,8,1,8,1,12,1,2,128,12,1, + 6,2,2,128,2,254,115,15,0,0,0,171,16,61,0,189, + 7,65,7,7,193,8,1,65,7,7,114,108,1,0,0,99, + 0,0,0,0,0,0,0,0,0,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,102,2,125,1,116,5,116, + 6,102,2,125,2,124,0,124,1,124,2,103,3,83,0,41, + 2,122,95,82,101,116,117,114,110,115,32,97,32,108,105,115, + 116,32,111,102,32,102,105,108,101,45,98,97,115,101,100,32, + 109,111,100,117,108,101,32,108,111,97,100,101,114,115,46,10, + 10,32,32,32,32,69,97,99,104,32,105,116,101,109,32,105, + 115,32,97,32,116,117,112,108,101,32,40,108,111,97,100,101, + 114,44,32,115,117,102,102,105,120,101,115,41,46,10,32,32, + 32,32,78,41,7,114,28,1,0,0,114,186,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,127,0,0,0,114,39,1, + 0,0,114,113,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,32,32,32,114,7,0,0,0,114, + 207,0,0,0,127,6,0,0,115,8,0,0,0,12,5,8, + 1,8,1,10,1,114,9,0,0,0,114,207,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 67,0,0,0,115,8,0,0,0,124,0,97,0,100,0,83, + 0,114,69,0,0,0,41,1,114,158,0,0,0,41,1,218, + 17,95,98,111,111,116,115,116,114,97,112,95,109,111,100,117, + 108,101,32,114,7,0,0,0,218,21,95,115,101,116,95,98, + 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,138, + 6,0,0,115,2,0,0,0,8,2,114,9,0,0,0,114, + 111,1,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,50,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,111,1,0,0,114,207,0,0,0,114,16,0,0,0,114, + 80,1,0,0,114,190,0,0,0,114,91,1,0,0,114,103, + 1,0,0,218,9,109,101,116,97,95,112,97,116,104,114,61, + 0,0,0,114,74,1,0,0,41,2,114,110,1,0,0,90, + 17,115,117,112,112,111,114,116,101,100,95,108,111,97,100,101, + 114,115,32,32,114,7,0,0,0,218,8,95,105,110,115,116, + 97,108,108,143,6,0,0,115,8,0,0,0,8,2,6,1, + 20,1,16,1,114,9,0,0,0,114,113,1,0,0,41,1, + 114,87,0,0,0,114,69,0,0,0,41,3,78,78,78,41, + 2,114,0,0,0,0,114,0,0,0,0,41,1,84,41,85, + 114,151,0,0,0,114,158,0,0,0,114,186,0,0,0,114, + 91,0,0,0,114,16,0,0,0,114,99,0,0,0,114,183, + 0,0,0,114,26,0,0,0,114,230,0,0,0,90,2,110, + 116,114,19,0,0,0,114,214,0,0,0,90,5,112,111,115, + 105,120,114,51,0,0,0,218,3,97,108,108,114,59,0,0, + 0,114,136,0,0,0,114,57,0,0,0,114,62,0,0,0, + 90,20,95,112,97,116,104,115,101,112,115,95,119,105,116,104, + 95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0,114,22,0,0, + 0,114,37,0,0,0,114,43,0,0,0,114,46,0,0,0, + 114,67,0,0,0,114,73,0,0,0,114,75,0,0,0,114, + 79,0,0,0,114,80,0,0,0,114,83,0,0,0,114,86, + 0,0,0,114,95,0,0,0,218,4,116,121,112,101,218,8, + 95,95,99,111,100,101,95,95,114,185,0,0,0,114,35,0, + 0,0,114,171,0,0,0,114,34,0,0,0,114,40,0,0, + 0,114,7,1,0,0,114,116,0,0,0,114,112,0,0,0, + 114,127,0,0,0,114,61,0,0,0,114,109,1,0,0,114, + 231,0,0,0,114,113,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, + 121,0,0,0,114,128,0,0,0,114,135,0,0,0,114,137, + 0,0,0,114,139,0,0,0,114,159,0,0,0,114,166,0, + 0,0,114,175,0,0,0,114,179,0,0,0,114,181,0,0, + 0,114,188,0,0,0,114,193,0,0,0,114,194,0,0,0, + 114,199,0,0,0,218,6,111,98,106,101,99,116,114,208,0, + 0,0,114,212,0,0,0,114,213,0,0,0,114,234,0,0, + 0,114,248,0,0,0,114,10,1,0,0,114,32,1,0,0, + 114,39,1,0,0,114,28,1,0,0,114,44,1,0,0,114, + 70,1,0,0,114,74,1,0,0,114,91,1,0,0,114,108, + 1,0,0,114,207,0,0,0,114,111,1,0,0,114,113,1, + 0,0,114,12,0,0,0,114,7,0,0,0,218,8,60,109, + 111,100,117,108,101,62,1,0,0,0,115,180,0,0,0,4, + 0,4,22,8,3,8,1,8,1,8,1,8,1,10,3,4, + 1,8,1,10,1,8,2,4,3,10,1,6,2,22,2,8, + 1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4, + 255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8, + 30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8, + 8,10,5,10,22,0,127,16,37,12,1,4,2,4,1,6, + 2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8, + 40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10, + 24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14, + 73,14,67,16,30,0,127,14,17,18,50,18,45,18,25,14, + 53,14,63,14,49,0,127,14,29,0,127,10,30,8,23,8, + 11,12,5,114,9,0,0,0, }; From webhook-mailer at python.org Tue Jun 15 21:51:13 2021 From: webhook-mailer at python.org (ethanfurman) Date: Wed, 16 Jun 2021 01:51:13 -0000 Subject: [Python-checkins] [3.10] bpo-44342: [Enum] improve test, add andrei kulakov to ACKS (GH-26726) Message-ID: https://github.com/python/cpython/commit/41c2a4a727d3d559632598759433e0ec1bf594f5 commit: 41c2a4a727d3d559632598759433e0ec1bf594f5 branch: 3.10 author: Ethan Furman committer: ethanfurman date: 2021-06-15T18:50:59-07:00 summary: [3.10] bpo-44342: [Enum] improve test, add andrei kulakov to ACKS (GH-26726) * [3.10] [Enum] improve test, add andrei kulakov to ACKS (GH-26726). (cherry picked from commit cb2014f2077c92c35486bf0db7e646a68478a7a5) Co-authored-by: Ethan Furman files: M Doc/library/enum.rst M Lib/enum.py M Lib/test/test_enum.py M Misc/ACKS diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 2d19ef6f25657..077a35453ae4c 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -576,7 +576,7 @@ Data Types ... NEON = 31 Traceback (most recent call last): ... - ValueError: invalid Flag 'Color': 'WHITE' is missing a named flag for value 8; 'NEON' is missing named flags for values 8, 16 + ValueError: invalid Flag 'Color': aliases WHITE and NEON are missing combined values of 0x18 [use enum.show_flag_values(value) for details] .. note:: diff --git a/Lib/enum.py b/Lib/enum.py index 49c46ea86dbac..90777988dd041 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -1637,7 +1637,7 @@ def __call__(self, enumeration): else: value = 'combined values of 0x%x' % missing_value raise ValueError( - 'invalid Flag %r: %s %s [use `enum.show_flag_values(value)` for details]' + 'invalid Flag %r: %s %s [use enum.show_flag_values(value) for details]' % (cls_name, alias, value) ) return enumeration diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 956b8347b1e1c..c4c458e6bfc4e 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -660,12 +660,35 @@ def __repr__(self): self.assertEqual(repr(MyEnum.A), '') # class SillyInt(HexInt): + __qualname__ = 'SillyInt' pass class MyOtherEnum(SillyInt, enum.Enum): + __qualname__ = 'MyOtherEnum' D = 4 E = 5 F = 6 self.assertIs(MyOtherEnum._member_type_, SillyInt) + globals()['SillyInt'] = SillyInt + globals()['MyOtherEnum'] = MyOtherEnum + test_pickle_dump_load(self.assertIs, MyOtherEnum.E) + test_pickle_dump_load(self.assertIs, MyOtherEnum) + # + # This did not work in 3.9, but does now with pickling by name + class UnBrokenInt(int): + __qualname__ = 'UnBrokenInt' + def __new__(cls, value): + return int.__new__(cls, value) + class MyUnBrokenEnum(UnBrokenInt, Enum): + __qualname__ = 'MyUnBrokenEnum' + G = 7 + H = 8 + I = 9 + self.assertIs(MyUnBrokenEnum._member_type_, UnBrokenInt) + self.assertIs(MyUnBrokenEnum(7), MyUnBrokenEnum.G) + globals()['UnBrokenInt'] = UnBrokenInt + globals()['MyUnBrokenEnum'] = MyUnBrokenEnum + test_pickle_dump_load(self.assertIs, MyUnBrokenEnum.I) + test_pickle_dump_load(self.assertIs, MyUnBrokenEnum) def test_too_many_data_types(self): with self.assertRaisesRegex(TypeError, 'too many data types'): @@ -3591,7 +3614,7 @@ class Bizarre(Flag): self.assertEqual(Bizarre.d.value, 6) with self.assertRaisesRegex( ValueError, - "invalid Flag 'Bizarre': aliases b and d are missing combined values of 0x3 .use `enum.show_flag_values.value.` for details.", + "invalid Flag 'Bizarre': aliases b and d are missing combined values of 0x3 .use enum.show_flag_values.value. for details.", ): @verify(NAMED_FLAGS) class Bizarre(Flag): @@ -3610,7 +3633,7 @@ class Bizarre(IntFlag): self.assertEqual(Bizarre.d.value, 6) with self.assertRaisesRegex( ValueError, - "invalid Flag 'Bizarre': alias d is missing value 0x2 .use `enum.show_flag_values.value.` for details.", + "invalid Flag 'Bizarre': alias d is missing value 0x2 .use enum.show_flag_values.value. for details.", ): @verify(NAMED_FLAGS) class Bizarre(IntFlag): diff --git a/Misc/ACKS b/Misc/ACKS index 0cb738b3a12ee..b1bd33aaa35cf 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -970,6 +970,7 @@ Andrew Kuchling Jakub Kuczys Dave Kuhlman Jon Kuhn +Andrei Kulakov Ilya Kulakov Upendra Kumar Toshio Kuratomi From webhook-mailer at python.org Tue Jun 15 21:51:27 2021 From: webhook-mailer at python.org (ethanfurman) Date: Wed, 16 Jun 2021 01:51:27 -0000 Subject: [Python-checkins] bpo-44342: [Enum] sync current docs to 3.10 (GH-26750) Message-ID: https://github.com/python/cpython/commit/741b8ae1cfc507902eb57e20f003487af13e40c0 commit: 741b8ae1cfc507902eb57e20f003487af13e40c0 branch: main author: Ethan Furman committer: ethanfurman date: 2021-06-15T18:51:19-07:00 summary: bpo-44342: [Enum] sync current docs to 3.10 (GH-26750) files: M Doc/library/enum.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index e1263f1a0372d..d53e3405e531f 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -576,7 +576,7 @@ Data Types ... NEON = 31 Traceback (most recent call last): ... - ValueError: invalid Flag 'Color': 'WHITE' is missing a named flag for value 8; 'NEON' is missing named flags for values 8, 16 + ValueError: invalid Flag 'Color': aliases WHITE and NEON are missing combined values of 0x18 [use enum.show_flag_values(value) for details] .. note:: diff --git a/Lib/enum.py b/Lib/enum.py index 49c46ea86dbac..90777988dd041 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -1637,7 +1637,7 @@ def __call__(self, enumeration): else: value = 'combined values of 0x%x' % missing_value raise ValueError( - 'invalid Flag %r: %s %s [use `enum.show_flag_values(value)` for details]' + 'invalid Flag %r: %s %s [use enum.show_flag_values(value) for details]' % (cls_name, alias, value) ) return enumeration diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 4626c2435c1ab..c4c458e6bfc4e 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -3614,7 +3614,7 @@ class Bizarre(Flag): self.assertEqual(Bizarre.d.value, 6) with self.assertRaisesRegex( ValueError, - "invalid Flag 'Bizarre': aliases b and d are missing combined values of 0x3 .use `enum.show_flag_values.value.` for details.", + "invalid Flag 'Bizarre': aliases b and d are missing combined values of 0x3 .use enum.show_flag_values.value. for details.", ): @verify(NAMED_FLAGS) class Bizarre(Flag): @@ -3633,7 +3633,7 @@ class Bizarre(IntFlag): self.assertEqual(Bizarre.d.value, 6) with self.assertRaisesRegex( ValueError, - "invalid Flag 'Bizarre': alias d is missing value 0x2 .use `enum.show_flag_values.value.` for details.", + "invalid Flag 'Bizarre': alias d is missing value 0x2 .use enum.show_flag_values.value. for details.", ): @verify(NAMED_FLAGS) class Bizarre(IntFlag): From webhook-mailer at python.org Wed Jun 16 05:22:54 2021 From: webhook-mailer at python.org (encukou) Date: Wed, 16 Jun 2021 09:22:54 -0000 Subject: [Python-checkins] bpo-43795: Don't list private names in the limited API (GH-26740) Message-ID: https://github.com/python/cpython/commit/7cad9cb51bdae2144cbab330f13a607ba3471742 commit: 7cad9cb51bdae2144cbab330f13a607ba3471742 branch: main author: Petr Viktorin committer: encukou date: 2021-06-16T11:22:36+02:00 summary: bpo-43795: Don't list private names in the limited API (GH-26740) * Remove struct _node from the stable ABI list This struct was removed along with the old parser in Python 3.9 (PEP 617) * Stable ABI list: Use the public name "PyFrameObject" rather than "_frame" * Ensure limited API doesn't contain private names Names prefixed by an underscore are private by definition. * Add a blurb files: A Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst M Doc/data/stable_abi.dat M Misc/stable_abi.txt M Tools/scripts/stable_abi.py diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 50207ac91ec8a8..5f4955bb35bcbf 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -272,6 +272,7 @@ function,PyFloat_GetInfo,3.2, function,PyFloat_GetMax,3.2, function,PyFloat_GetMin,3.2, var,PyFloat_Type,3.2, +type,PyFrameObject,3.2, function,PyFrame_GetCode,3.10, function,PyFrame_GetLineNumber,3.10, function,PyFrozenSet_New,3.2, @@ -825,8 +826,6 @@ function,Py_XNewRef,3.10, type,Py_intptr_t,3.2, type,Py_ssize_t,3.2, type,Py_uintptr_t,3.2, -type,_frame,3.2, -type,_node,3.2, type,allocfunc,3.2, type,binaryfunc,3.2, type,descrgetfunc,3.2, diff --git a/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst b/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst new file mode 100644 index 00000000000000..8d029a04579086 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst @@ -0,0 +1,3 @@ +The list in :ref:`stable-abi-list` now shows the public name +:c:struct:`PyFrameObject` rather than ``_frame``. The non-existing +entry ``_node`` no longer appears in the list. diff --git a/Misc/stable_abi.txt b/Misc/stable_abi.txt index adee1a9fe73035..168e81db42d05a 100644 --- a/Misc/stable_abi.txt +++ b/Misc/stable_abi.txt @@ -38,12 +38,10 @@ struct PyThreadState added 3.2 struct PyInterpreterState added 3.2 -struct _frame +struct PyFrameObject added 3.2 struct symtable added 3.2 -struct _node - added 3.2 struct PyWeakReference added 3.2 struct PyLongObject diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py index 2ba5b66cd1258b..b7fd2c8583ba70 100755 --- a/Tools/scripts/stable_abi.py +++ b/Tools/scripts/stable_abi.py @@ -492,6 +492,16 @@ def gcc_get_limited_api_definitions(headers): ) return stable_data | stable_exported_data | stable_functions +def check_private_names(manifest): + """Ensure limited API doesn't contain private names + + Names prefixed by an underscore are private by definition. + """ + for name, item in manifest.contents.items(): + if name.startswith('_') and not item.abi_only: + raise ValueError( + f'`{name}` is private (underscore-prefixed) and should be ' + + 'removed from the stable ABI list or or marked `abi_only`') def main(): parser = argparse.ArgumentParser( @@ -557,6 +567,8 @@ def main(): with args.file.open() as file: manifest = parse_manifest(file) + check_private_names(manifest) + # Remember results of all actions (as booleans). # At the end we'll check that at least one action was run, # and also fail if any are false. From webhook-mailer at python.org Wed Jun 16 05:41:39 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Jun 2021 09:41:39 -0000 Subject: [Python-checkins] bpo-44422: threading.Thread reuses the _delete() method (GH-26741) Message-ID: https://github.com/python/cpython/commit/0729694246174a5c2f0ae197f2e0dbea61b90c9f commit: 0729694246174a5c2f0ae197f2e0dbea61b90c9f branch: main author: Victor Stinner committer: vstinner date: 2021-06-16T11:41:17+02:00 summary: bpo-44422: threading.Thread reuses the _delete() method (GH-26741) The _bootstrap_inner() method of threading.Thread now reuses its _delete() method rather than accessing _active() directly. It became possible since _active_limbo_lock became reentrant. Moreover, it no longer ignores any exception when deleting the thread from the _active dictionary. files: M Lib/threading.py diff --git a/Lib/threading.py b/Lib/threading.py index 766011fa0312b..c2b94a5045514 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -1010,13 +1010,7 @@ def _bootstrap_inner(self): except: self._invoke_excepthook(self) finally: - with _active_limbo_lock: - try: - # We don't call self._delete() because it also - # grabs _active_limbo_lock. - del _active[get_ident()] - except: - pass + self._delete() def _stop(self): # After calling ._stop(), .is_alive() returns False and .join() returns From webhook-mailer at python.org Wed Jun 16 05:53:25 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Jun 2021 09:53:25 -0000 Subject: [Python-checkins] bpo-43795: Don't list private names in the limited API (GH-26740) Message-ID: https://github.com/python/cpython/commit/7fd40101b7130016fc98f05ce34746fed68ab542 commit: 7fd40101b7130016fc98f05ce34746fed68ab542 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-16T02:53:12-07:00 summary: bpo-43795: Don't list private names in the limited API (GH-26740) * Remove struct _node from the stable ABI list This struct was removed along with the old parser in Python 3.9 (PEP 617) * Stable ABI list: Use the public name "PyFrameObject" rather than "_frame" * Ensure limited API doesn't contain private names Names prefixed by an underscore are private by definition. * Add a blurb (cherry picked from commit 7cad9cb51bdae2144cbab330f13a607ba3471742) Co-authored-by: Petr Viktorin files: A Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst M Doc/data/stable_abi.dat M Misc/stable_abi.txt M Tools/scripts/stable_abi.py diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 50207ac91ec8a8..5f4955bb35bcbf 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -272,6 +272,7 @@ function,PyFloat_GetInfo,3.2, function,PyFloat_GetMax,3.2, function,PyFloat_GetMin,3.2, var,PyFloat_Type,3.2, +type,PyFrameObject,3.2, function,PyFrame_GetCode,3.10, function,PyFrame_GetLineNumber,3.10, function,PyFrozenSet_New,3.2, @@ -825,8 +826,6 @@ function,Py_XNewRef,3.10, type,Py_intptr_t,3.2, type,Py_ssize_t,3.2, type,Py_uintptr_t,3.2, -type,_frame,3.2, -type,_node,3.2, type,allocfunc,3.2, type,binaryfunc,3.2, type,descrgetfunc,3.2, diff --git a/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst b/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst new file mode 100644 index 00000000000000..8d029a04579086 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst @@ -0,0 +1,3 @@ +The list in :ref:`stable-abi-list` now shows the public name +:c:struct:`PyFrameObject` rather than ``_frame``. The non-existing +entry ``_node`` no longer appears in the list. diff --git a/Misc/stable_abi.txt b/Misc/stable_abi.txt index adee1a9fe73035..168e81db42d05a 100644 --- a/Misc/stable_abi.txt +++ b/Misc/stable_abi.txt @@ -38,12 +38,10 @@ struct PyThreadState added 3.2 struct PyInterpreterState added 3.2 -struct _frame +struct PyFrameObject added 3.2 struct symtable added 3.2 -struct _node - added 3.2 struct PyWeakReference added 3.2 struct PyLongObject diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py index 2ba5b66cd1258b..b7fd2c8583ba70 100755 --- a/Tools/scripts/stable_abi.py +++ b/Tools/scripts/stable_abi.py @@ -492,6 +492,16 @@ def gcc_get_limited_api_definitions(headers): ) return stable_data | stable_exported_data | stable_functions +def check_private_names(manifest): + """Ensure limited API doesn't contain private names + + Names prefixed by an underscore are private by definition. + """ + for name, item in manifest.contents.items(): + if name.startswith('_') and not item.abi_only: + raise ValueError( + f'`{name}` is private (underscore-prefixed) and should be ' + + 'removed from the stable ABI list or or marked `abi_only`') def main(): parser = argparse.ArgumentParser( @@ -557,6 +567,8 @@ def main(): with args.file.open() as file: manifest = parse_manifest(file) + check_private_names(manifest) + # Remember results of all actions (as booleans). # At the end we'll check that at least one action was run, # and also fail if any are false. From webhook-mailer at python.org Wed Jun 16 09:04:47 2021 From: webhook-mailer at python.org (markshannon) Date: Wed, 16 Jun 2021 13:04:47 -0000 Subject: [Python-checkins] bpo-38211: Clean up type_init() (GH-16257) Message-ID: https://github.com/python/cpython/commit/ab030d6f9d73e7f6c2213c2e308d1ceb04761485 commit: ab030d6f9d73e7f6c2213c2e308d1ceb04761485 branch: main author: Sergey Fedoseev committer: markshannon date: 2021-06-16T14:04:38+01:00 summary: bpo-38211: Clean up type_init() (GH-16257) 1. Remove conditions already checked by assert() 2. Remove object_init() call that effectively creates an empty tuple and checks that this tuple is empty files: M Objects/typeobject.c diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 170929f5d8507..fbe3d165a6097 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2428,41 +2428,26 @@ valid_identifier(PyObject *s) return 1; } -/* Forward */ -static int -object_init(PyObject *self, PyObject *args, PyObject *kwds); - static int type_init(PyObject *cls, PyObject *args, PyObject *kwds) { - int res; - assert(args != NULL && PyTuple_Check(args)); assert(kwds == NULL || PyDict_Check(kwds)); - if (kwds != NULL && PyTuple_Check(args) && PyTuple_GET_SIZE(args) == 1 && - PyDict_Check(kwds) && PyDict_GET_SIZE(kwds) != 0) { + if (kwds != NULL && PyTuple_GET_SIZE(args) == 1 && + PyDict_GET_SIZE(kwds) != 0) { PyErr_SetString(PyExc_TypeError, "type.__init__() takes no keyword arguments"); return -1; } - if (args != NULL && PyTuple_Check(args) && - (PyTuple_GET_SIZE(args) != 1 && PyTuple_GET_SIZE(args) != 3)) { + if ((PyTuple_GET_SIZE(args) != 1 && PyTuple_GET_SIZE(args) != 3)) { PyErr_SetString(PyExc_TypeError, "type.__init__() takes 1 or 3 arguments"); return -1; } - /* Call object.__init__(self) now. */ - /* XXX Could call super(type, cls).__init__() but what's the point? */ - args = PyTuple_GetSlice(args, 0, 0); - if (args == NULL) { - return -1; - } - res = object_init(cls, args, NULL); - Py_DECREF(args); - return res; + return 0; } unsigned long From webhook-mailer at python.org Wed Jun 16 10:12:34 2021 From: webhook-mailer at python.org (gvanrossum) Date: Wed, 16 Jun 2021 14:12:34 -0000 Subject: [Python-checkins] bpo-44392: Add Py_GenericAlias to C API docs (GH-26724) Message-ID: https://github.com/python/cpython/commit/6773c3eaa735b5061b4a97f2c730703a32d8c9ff commit: 6773c3eaa735b5061b4a97f2c730703a32d8c9ff branch: main author: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> committer: gvanrossum date: 2021-06-16T07:12:25-07:00 summary: bpo-44392: Add Py_GenericAlias to C API docs (GH-26724) Also fix stable ABI type definitions files: A Doc/c-api/typehints.rst A Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst M Doc/c-api/concrete.rst M Doc/data/stable_abi.dat M Misc/stable_abi.txt M PC/python3dll.c diff --git a/Doc/c-api/concrete.rst b/Doc/c-api/concrete.rst index c1d9fa1b41a3fe..84224dcca523b9 100644 --- a/Doc/c-api/concrete.rst +++ b/Doc/c-api/concrete.rst @@ -115,3 +115,4 @@ Other Objects coro.rst contextvars.rst datetime.rst + typehints.rst diff --git a/Doc/c-api/typehints.rst b/Doc/c-api/typehints.rst new file mode 100644 index 00000000000000..dfda96a47243bd --- /dev/null +++ b/Doc/c-api/typehints.rst @@ -0,0 +1,47 @@ +.. highlight:: c + +.. _typehintobjects: + +Objects for Type Hinting +------------------------ + +Various built-in types for type hinting are provided. Currently, +two types exist -- :ref:`GenericAlias ` and +:ref:`Union `. Only ``GenericAlias`` is exposed to C. + +.. c:function:: PyObject* Py_GenericAlias(PyObject *origin, PyObject *args) + + Create a :ref:`GenericAlias ` object. + Equivalent to calling the Python class + :class:`types.GenericAlias`. The *origin* and *args* arguments set the + ``GenericAlias``\ 's ``__origin__`` and ``__args__`` attributes respectively. + *origin* should be a :c:type:`PyTypeObject*`, and *args* can be a + :c:type:`PyTupleObject*` or any ``PyObject*``. If *args* passed is + not a tuple, a 1-tuple is automatically constructed and ``__args__`` is set + to ``(args,)``. + Minimal checking is done for the arguments, so the function will succeed even + if *origin* is not a type. + The ``GenericAlias``\ 's ``__parameters__`` attribute is constructed lazily + from ``__args__``. On failure, an exception is raised and ``NULL`` is + returned. + + Here's an example of how to make an extension type generic:: + + ... + static PyMethodDef my_obj_methods[] = { + // Other methods. + ... + {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"} + ... + } + + .. seealso:: The data model method :meth:`__class_getitem__`. + + .. versionadded:: 3.9 + +.. c:var:: PyTypeObject Py_GenericAliasType + + The C type of the object returned by :c:func:`Py_GenericAlias`. Equivalent to + :class:`types.GenericAlias` in Python. + + .. versionadded:: 3.9 diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 5f4955bb35bcbf..e373e2314a6517 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -785,7 +785,7 @@ var,Py_FileSystemDefaultEncoding,3.2, function,Py_Finalize,3.2, function,Py_FinalizeEx,3.6, function,Py_GenericAlias,3.9, -function,Py_GenericAliasType,3.9, +var,Py_GenericAliasType,3.9, function,Py_GetBuildInfo,3.2, function,Py_GetCompiler,3.2, function,Py_GetCopyright,3.2, diff --git a/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst b/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst new file mode 100644 index 00000000000000..ac197f22929d14 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst @@ -0,0 +1,2 @@ +Added a new section in the C API documentation for types used in type +hinting. Documented ``Py_GenericAlias`` and ``Py_GenericAliasType``. diff --git a/Misc/stable_abi.txt b/Misc/stable_abi.txt index 168e81db42d05a..24c71d12e3ba75 100644 --- a/Misc/stable_abi.txt +++ b/Misc/stable_abi.txt @@ -2043,7 +2043,7 @@ function Py_LeaveRecursiveCall added 3.9 function Py_GenericAlias added 3.9 -function Py_GenericAliasType +data Py_GenericAliasType added 3.9 function PyCMethod_New added 3.9 # Windows: 3.10 & 3.9.2 -- https://bugs.python.org/issue43155 diff --git a/PC/python3dll.c b/PC/python3dll.c index be85f27e72ac81..378669c27f0544 100755 --- a/PC/python3dll.c +++ b/PC/python3dll.c @@ -56,7 +56,6 @@ EXPORT_FUNC(Py_FatalError) EXPORT_FUNC(Py_Finalize) EXPORT_FUNC(Py_FinalizeEx) EXPORT_FUNC(Py_GenericAlias) -EXPORT_FUNC(Py_GenericAliasType) EXPORT_FUNC(Py_GetArgcArgv) EXPORT_FUNC(Py_GetBuildInfo) EXPORT_FUNC(Py_GetCompiler) @@ -722,6 +721,7 @@ EXPORT_DATA(_PyWeakref_ProxyType) EXPORT_DATA(_PyWeakref_RefType) EXPORT_DATA(Py_FileSystemDefaultEncodeErrors) EXPORT_DATA(Py_FileSystemDefaultEncoding) +EXPORT_DATA(Py_GenericAliasType) EXPORT_DATA(Py_HasFileSystemDefaultEncoding) EXPORT_DATA(Py_UTF8Mode) EXPORT_DATA(PyBaseObject_Type) From webhook-mailer at python.org Wed Jun 16 10:34:54 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Jun 2021 14:34:54 -0000 Subject: [Python-checkins] bpo-44392: Add Py_GenericAlias to C API docs (GH-26724) Message-ID: https://github.com/python/cpython/commit/84ce737f73136c1de7c4dc92bc096ed6c963e42d commit: 84ce737f73136c1de7c4dc92bc096ed6c963e42d branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-16T07:34:45-07:00 summary: bpo-44392: Add Py_GenericAlias to C API docs (GH-26724) Also fix stable ABI type definitions (cherry picked from commit 6773c3eaa735b5061b4a97f2c730703a32d8c9ff) Co-authored-by: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> files: A Doc/c-api/typehints.rst A Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst M Doc/c-api/concrete.rst M Doc/data/stable_abi.dat M Misc/stable_abi.txt M PC/python3dll.c diff --git a/Doc/c-api/concrete.rst b/Doc/c-api/concrete.rst index c1d9fa1b41a3fe..84224dcca523b9 100644 --- a/Doc/c-api/concrete.rst +++ b/Doc/c-api/concrete.rst @@ -115,3 +115,4 @@ Other Objects coro.rst contextvars.rst datetime.rst + typehints.rst diff --git a/Doc/c-api/typehints.rst b/Doc/c-api/typehints.rst new file mode 100644 index 00000000000000..dfda96a47243bd --- /dev/null +++ b/Doc/c-api/typehints.rst @@ -0,0 +1,47 @@ +.. highlight:: c + +.. _typehintobjects: + +Objects for Type Hinting +------------------------ + +Various built-in types for type hinting are provided. Currently, +two types exist -- :ref:`GenericAlias ` and +:ref:`Union `. Only ``GenericAlias`` is exposed to C. + +.. c:function:: PyObject* Py_GenericAlias(PyObject *origin, PyObject *args) + + Create a :ref:`GenericAlias ` object. + Equivalent to calling the Python class + :class:`types.GenericAlias`. The *origin* and *args* arguments set the + ``GenericAlias``\ 's ``__origin__`` and ``__args__`` attributes respectively. + *origin* should be a :c:type:`PyTypeObject*`, and *args* can be a + :c:type:`PyTupleObject*` or any ``PyObject*``. If *args* passed is + not a tuple, a 1-tuple is automatically constructed and ``__args__`` is set + to ``(args,)``. + Minimal checking is done for the arguments, so the function will succeed even + if *origin* is not a type. + The ``GenericAlias``\ 's ``__parameters__`` attribute is constructed lazily + from ``__args__``. On failure, an exception is raised and ``NULL`` is + returned. + + Here's an example of how to make an extension type generic:: + + ... + static PyMethodDef my_obj_methods[] = { + // Other methods. + ... + {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"} + ... + } + + .. seealso:: The data model method :meth:`__class_getitem__`. + + .. versionadded:: 3.9 + +.. c:var:: PyTypeObject Py_GenericAliasType + + The C type of the object returned by :c:func:`Py_GenericAlias`. Equivalent to + :class:`types.GenericAlias` in Python. + + .. versionadded:: 3.9 diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 5f4955bb35bcbf..e373e2314a6517 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -785,7 +785,7 @@ var,Py_FileSystemDefaultEncoding,3.2, function,Py_Finalize,3.2, function,Py_FinalizeEx,3.6, function,Py_GenericAlias,3.9, -function,Py_GenericAliasType,3.9, +var,Py_GenericAliasType,3.9, function,Py_GetBuildInfo,3.2, function,Py_GetCompiler,3.2, function,Py_GetCopyright,3.2, diff --git a/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst b/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst new file mode 100644 index 00000000000000..ac197f22929d14 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst @@ -0,0 +1,2 @@ +Added a new section in the C API documentation for types used in type +hinting. Documented ``Py_GenericAlias`` and ``Py_GenericAliasType``. diff --git a/Misc/stable_abi.txt b/Misc/stable_abi.txt index 168e81db42d05a..24c71d12e3ba75 100644 --- a/Misc/stable_abi.txt +++ b/Misc/stable_abi.txt @@ -2043,7 +2043,7 @@ function Py_LeaveRecursiveCall added 3.9 function Py_GenericAlias added 3.9 -function Py_GenericAliasType +data Py_GenericAliasType added 3.9 function PyCMethod_New added 3.9 # Windows: 3.10 & 3.9.2 -- https://bugs.python.org/issue43155 diff --git a/PC/python3dll.c b/PC/python3dll.c index be85f27e72ac81..378669c27f0544 100755 --- a/PC/python3dll.c +++ b/PC/python3dll.c @@ -56,7 +56,6 @@ EXPORT_FUNC(Py_FatalError) EXPORT_FUNC(Py_Finalize) EXPORT_FUNC(Py_FinalizeEx) EXPORT_FUNC(Py_GenericAlias) -EXPORT_FUNC(Py_GenericAliasType) EXPORT_FUNC(Py_GetArgcArgv) EXPORT_FUNC(Py_GetBuildInfo) EXPORT_FUNC(Py_GetCompiler) @@ -722,6 +721,7 @@ EXPORT_DATA(_PyWeakref_ProxyType) EXPORT_DATA(_PyWeakref_RefType) EXPORT_DATA(Py_FileSystemDefaultEncodeErrors) EXPORT_DATA(Py_FileSystemDefaultEncoding) +EXPORT_DATA(Py_GenericAliasType) EXPORT_DATA(Py_HasFileSystemDefaultEncoding) EXPORT_DATA(Py_UTF8Mode) EXPORT_DATA(PyBaseObject_Type) From webhook-mailer at python.org Wed Jun 16 11:35:00 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Jun 2021 15:35:00 -0000 Subject: [Python-checkins] [3.9] bpo-44392: Add Py_GenericAlias to C API docs (GH-26724) (GH-26757) Message-ID: https://github.com/python/cpython/commit/c7e95715ec2f2a16eace7aa35a1eb2f18e8d06ed commit: c7e95715ec2f2a16eace7aa35a1eb2f18e8d06ed branch: 3.9 author: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-16T08:34:52-07:00 summary: [3.9] bpo-44392: Add Py_GenericAlias to C API docs (GH-26724) (GH-26757) (cherry picked from commit 6773c3eaa735b5061b4a97f2c730703a32d8c9ff) files: A Doc/c-api/typehints.rst A Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst M Doc/c-api/concrete.rst diff --git a/Doc/c-api/concrete.rst b/Doc/c-api/concrete.rst index c1d9fa1b41a3fe..84224dcca523b9 100644 --- a/Doc/c-api/concrete.rst +++ b/Doc/c-api/concrete.rst @@ -115,3 +115,4 @@ Other Objects coro.rst contextvars.rst datetime.rst + typehints.rst diff --git a/Doc/c-api/typehints.rst b/Doc/c-api/typehints.rst new file mode 100644 index 00000000000000..2d1175f4738b10 --- /dev/null +++ b/Doc/c-api/typehints.rst @@ -0,0 +1,46 @@ +.. highlight:: c + +.. _typehintobjects: + +Objects for Type Hinting +------------------------ + +Various built-in types for type hinting are provided. +Only :ref:`GenericAlias ` is exposed to C. + +.. c:function:: PyObject* Py_GenericAlias(PyObject *origin, PyObject *args) + + Create a :ref:`GenericAlias ` object. + Equivalent to calling the Python class + :class:`types.GenericAlias`. The *origin* and *args* arguments set the + ``GenericAlias``\ 's ``__origin__`` and ``__args__`` attributes respectively. + *origin* should be a :c:type:`PyTypeObject*`, and *args* can be a + :c:type:`PyTupleObject*` or any ``PyObject*``. If *args* passed is + not a tuple, a 1-tuple is automatically constructed and ``__args__`` is set + to ``(args,)``. + Minimal checking is done for the arguments, so the function will succeed even + if *origin* is not a type. + The ``GenericAlias``\ 's ``__parameters__`` attribute is constructed lazily + from ``__args__``. On failure, an exception is raised and ``NULL`` is + returned. + + Here's an example of how to make an extension type generic:: + + ... + static PyMethodDef my_obj_methods[] = { + // Other methods. + ... + {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"} + ... + } + + .. seealso:: The data model method :meth:`__class_getitem__`. + + .. versionadded:: 3.9 + +.. c:var:: PyTypeObject Py_GenericAliasType + + The C type of the object returned by :c:func:`Py_GenericAlias`. Equivalent to + :class:`types.GenericAlias` in Python. + + .. versionadded:: 3.9 diff --git a/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst b/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst new file mode 100644 index 00000000000000..ac197f22929d14 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst @@ -0,0 +1,2 @@ +Added a new section in the C API documentation for types used in type +hinting. Documented ``Py_GenericAlias`` and ``Py_GenericAliasType``. From webhook-mailer at python.org Wed Jun 16 13:43:58 2021 From: webhook-mailer at python.org (mdickinson) Date: Wed, 16 Jun 2021 17:43:58 -0000 Subject: [Python-checkins] bpo-44426: Use of 'complex' as a C variable name confuses Sphinx; change it to 'num'. (GH-26744) Message-ID: https://github.com/python/cpython/commit/7247f6f433846c6e37308a550e8e5eb6be379856 commit: 7247f6f433846c6e37308a550e8e5eb6be379856 branch: main author: Mark Dickinson committer: mdickinson date: 2021-06-16T18:43:49+01:00 summary: bpo-44426: Use of 'complex' as a C variable name confuses Sphinx; change it to 'num'. (GH-26744) files: M Doc/c-api/complex.rst diff --git a/Doc/c-api/complex.rst b/Doc/c-api/complex.rst index e2ea766b3a32a..c25894681bca3 100644 --- a/Doc/c-api/complex.rst +++ b/Doc/c-api/complex.rst @@ -46,9 +46,9 @@ pointers. This is consistent throughout the API. :c:type:`Py_complex` representation. -.. c:function:: Py_complex _Py_c_neg(Py_complex complex) +.. c:function:: Py_complex _Py_c_neg(Py_complex num) - Return the negation of the complex number *complex*, using the C + Return the negation of the complex number *num*, using the C :c:type:`Py_complex` representation. From webhook-mailer at python.org Wed Jun 16 15:13:55 2021 From: webhook-mailer at python.org (mdickinson) Date: Wed, 16 Jun 2021 19:13:55 -0000 Subject: [Python-checkins] bpo-44426: Use of 'complex' as a C variable name confuses Sphinx; change it to 'num'. (GH-26744) (GH-26760) Message-ID: https://github.com/python/cpython/commit/c689e0a7e2a25621da82f22cc64d089eae05e753 commit: c689e0a7e2a25621da82f22cc64d089eae05e753 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: mdickinson date: 2021-06-16T20:13:37+01:00 summary: bpo-44426: Use of 'complex' as a C variable name confuses Sphinx; change it to 'num'. (GH-26744) (GH-26760) (cherry picked from commit 7247f6f433846c6e37308a550e8e5eb6be379856) files: M Doc/c-api/complex.rst diff --git a/Doc/c-api/complex.rst b/Doc/c-api/complex.rst index e2ea766b3a32a..c25894681bca3 100644 --- a/Doc/c-api/complex.rst +++ b/Doc/c-api/complex.rst @@ -46,9 +46,9 @@ pointers. This is consistent throughout the API. :c:type:`Py_complex` representation. -.. c:function:: Py_complex _Py_c_neg(Py_complex complex) +.. c:function:: Py_complex _Py_c_neg(Py_complex num) - Return the negation of the complex number *complex*, using the C + Return the negation of the complex number *num*, using the C :c:type:`Py_complex` representation. From webhook-mailer at python.org Wed Jun 16 15:13:57 2021 From: webhook-mailer at python.org (mdickinson) Date: Wed, 16 Jun 2021 19:13:57 -0000 Subject: [Python-checkins] bpo-44426: Use of 'complex' as a C variable name confuses Sphinx; change it to 'num'. (GH-26744) (GH-26761) Message-ID: https://github.com/python/cpython/commit/686c6f303a6e9e54b50401be0ae3dc6aa2fcf05a commit: 686c6f303a6e9e54b50401be0ae3dc6aa2fcf05a branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: mdickinson date: 2021-06-16T20:13:53+01:00 summary: bpo-44426: Use of 'complex' as a C variable name confuses Sphinx; change it to 'num'. (GH-26744) (GH-26761) (cherry picked from commit 7247f6f433846c6e37308a550e8e5eb6be379856) files: M Doc/c-api/complex.rst diff --git a/Doc/c-api/complex.rst b/Doc/c-api/complex.rst index e2ea766b3a32a..c25894681bca3 100644 --- a/Doc/c-api/complex.rst +++ b/Doc/c-api/complex.rst @@ -46,9 +46,9 @@ pointers. This is consistent throughout the API. :c:type:`Py_complex` representation. -.. c:function:: Py_complex _Py_c_neg(Py_complex complex) +.. c:function:: Py_complex _Py_c_neg(Py_complex num) - Return the negation of the complex number *complex*, using the C + Return the negation of the complex number *num*, using the C :c:type:`Py_complex` representation. From webhook-mailer at python.org Thu Jun 17 05:40:06 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Jun 2021 09:40:06 -0000 Subject: [Python-checkins] bpo-44389: Fix typo in ssl deprecation warning message (GH-26754) Message-ID: https://github.com/python/cpython/commit/c544393b89f9b3e2b1a22588fc9ae58019314879 commit: c544393b89f9b3e2b1a22588fc9ae58019314879 branch: main author: Joe committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-17T02:39:57-07:00 summary: bpo-44389: Fix typo in ssl deprecation warning message (GH-26754) `ssl.SSL_NO_TLS` should be `ssl.OP_NO_TLS`. files: M Lib/test/test_ssl.py M Modules/_ssl.c diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 6cea0ee9f1da5..cee97a83020b8 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -605,7 +605,7 @@ def test_openssl111_deprecations(self): with self.assertWarns(DeprecationWarning) as cm: ctx.options |= option self.assertEqual( - 'ssl.OP_NO_SSL*/ssl.SSL_NO_TLS* options are deprecated', + 'ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are deprecated', str(cm.warning) ) diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 26f31f8f4c534..ad5269d7b07b6 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -3597,7 +3597,7 @@ set_options(PySSLContext *self, PyObject *arg, void *c) set = ~opts & new_opts; if ((set & opt_no) != 0) { - if (_ssl_deprecated("ssl.OP_NO_SSL*/ssl.SSL_NO_TLS* options are " + if (_ssl_deprecated("ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are " "deprecated", 2) < 0) { return -1; } From webhook-mailer at python.org Thu Jun 17 06:01:15 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Jun 2021 10:01:15 -0000 Subject: [Python-checkins] bpo-44389: Fix typo in ssl deprecation warning message (GH-26754) Message-ID: https://github.com/python/cpython/commit/08f2b9dedea13d2e9d11c189914387db3a66e2ca commit: 08f2b9dedea13d2e9d11c189914387db3a66e2ca branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-17T03:00:56-07:00 summary: bpo-44389: Fix typo in ssl deprecation warning message (GH-26754) `ssl.SSL_NO_TLS` should be `ssl.OP_NO_TLS`. (cherry picked from commit c544393b89f9b3e2b1a22588fc9ae58019314879) Co-authored-by: Joe files: M Lib/test/test_ssl.py M Modules/_ssl.c diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index eddb85144cc58..06e501e396784 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -609,7 +609,7 @@ def test_openssl111_deprecations(self): with self.assertWarns(DeprecationWarning) as cm: ctx.options |= option self.assertEqual( - 'ssl.OP_NO_SSL*/ssl.SSL_NO_TLS* options are deprecated', + 'ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are deprecated', str(cm.warning) ) diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 26f31f8f4c534..ad5269d7b07b6 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -3597,7 +3597,7 @@ set_options(PySSLContext *self, PyObject *arg, void *c) set = ~opts & new_opts; if ((set & opt_no) != 0) { - if (_ssl_deprecated("ssl.OP_NO_SSL*/ssl.SSL_NO_TLS* options are " + if (_ssl_deprecated("ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are " "deprecated", 2) < 0) { return -1; } From webhook-mailer at python.org Thu Jun 17 06:06:17 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 17 Jun 2021 10:06:17 -0000 Subject: [Python-checkins] bpo-43908: Make heap types converted during 3.10 alpha immutable (GH-26351) Message-ID: https://github.com/python/cpython/commit/00710e6346fd2394aa020b2dfae170093effac98 commit: 00710e6346fd2394aa020b2dfae170093effac98 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-17T11:06:09+01:00 summary: bpo-43908: Make heap types converted during 3.10 alpha immutable (GH-26351) * Make functools types immutable * Multibyte codec types are now immutable * pyexpat.xmlparser is now immutable * array.arrayiterator is now immutable * _thread types are now immutable * _csv types are now immutable * _queue.SimpleQueue is now immutable * mmap.mmap is now immutable * unicodedata.UCD is now immutable * sqlite3 types are now immutable * _lsprof.Profiler is now immutable * _overlapped.Overlapped is now immutable * _operator types are now immutable * winapi__overlapped.Overlapped is now immutable * _lzma types are now immutable * _bz2 types are now immutable * _dbm.dbm and _gdbm.gdbm are now immutable files: M Modules/_bz2module.c M Modules/_csv.c M Modules/_dbmmodule.c M Modules/_functoolsmodule.c M Modules/_gdbmmodule.c M Modules/_lsprof.c M Modules/_lzmamodule.c M Modules/_operator.c M Modules/_queuemodule.c M Modules/_sqlite/connection.c M Modules/_sqlite/cursor.c M Modules/_sqlite/prepare_protocol.c M Modules/_sqlite/row.c M Modules/_sqlite/statement.c M Modules/_threadmodule.c M Modules/_winapi.c M Modules/arraymodule.c M Modules/cjkcodecs/multibytecodec.c M Modules/mmapmodule.c M Modules/overlapped.c M Modules/pyexpat.c M Modules/unicodedata.c diff --git a/Modules/_bz2module.c b/Modules/_bz2module.c index d75bb32d2fc5eb..798e9efc628f05 100644 --- a/Modules/_bz2module.c +++ b/Modules/_bz2module.c @@ -422,7 +422,7 @@ static PyType_Spec bz2_compressor_type_spec = { // bz2_compressor_type_spec does not have Py_TPFLAGS_BASETYPE flag // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = bz2_compressor_type_slots, }; @@ -766,7 +766,7 @@ static PyType_Spec bz2_decompressor_type_spec = { // bz2_decompressor_type_spec does not have Py_TPFLAGS_BASETYPE flag // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = bz2_decompressor_type_slots, }; diff --git a/Modules/_csv.c b/Modules/_csv.c index a213734f508068..78855b871352c5 100644 --- a/Modules/_csv.c +++ b/Modules/_csv.c @@ -537,7 +537,8 @@ static PyType_Slot Dialect_Type_slots[] = { PyType_Spec Dialect_Type_spec = { .name = "_csv.Dialect", .basicsize = sizeof(DialectObj), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = Dialect_Type_slots, }; @@ -958,7 +959,8 @@ static PyType_Slot Reader_Type_slots[] = { PyType_Spec Reader_Type_spec = { .name = "_csv.reader", .basicsize = sizeof(ReaderObj), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = Reader_Type_slots }; @@ -1382,7 +1384,8 @@ static PyType_Slot Writer_Type_slots[] = { PyType_Spec Writer_Type_spec = { .name = "_csv.writer", .basicsize = sizeof(WriterObj), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = Writer_Type_slots, }; diff --git a/Modules/_dbmmodule.c b/Modules/_dbmmodule.c index 2b4d071b3d1ae1..3fe97eff1586bc 100644 --- a/Modules/_dbmmodule.c +++ b/Modules/_dbmmodule.c @@ -423,7 +423,7 @@ static PyType_Spec dbmtype_spec = { // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = dbmtype_spec_slots, }; diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c index 218a8d16ac32d9..fa1452168094b9 100644 --- a/Modules/_functoolsmodule.c +++ b/Modules/_functoolsmodule.c @@ -491,7 +491,8 @@ static PyType_Spec partial_type_spec = { .name = "functools.partial", .basicsize = sizeof(partialobject), .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_VECTORCALL, + Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_VECTORCALL | + Py_TPFLAGS_IMMUTABLETYPE, .slots = partial_type_slots }; @@ -559,7 +560,7 @@ static PyType_Spec keyobject_type_spec = { .name = "functools.KeyWrapper", .basicsize = sizeof(keyobject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = keyobject_type_slots }; @@ -781,7 +782,8 @@ static PyType_Slot lru_list_elem_type_slots[] = { static PyType_Spec lru_list_elem_type_spec = { .name = "functools._lru_list_elem", .basicsize = sizeof(lru_list_elem), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION, + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_IMMUTABLETYPE, .slots = lru_list_elem_type_slots }; @@ -1417,7 +1419,7 @@ static PyType_Spec lru_cache_type_spec = { .name = "functools._lru_cache_wrapper", .basicsize = sizeof(lru_cache_object), .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_METHOD_DESCRIPTOR, + Py_TPFLAGS_METHOD_DESCRIPTOR | Py_TPFLAGS_IMMUTABLETYPE, .slots = lru_cache_type_slots }; diff --git a/Modules/_gdbmmodule.c b/Modules/_gdbmmodule.c index 98bfa6ab996119..8a8c6e78259ccd 100644 --- a/Modules/_gdbmmodule.c +++ b/Modules/_gdbmmodule.c @@ -581,7 +581,7 @@ static PyType_Spec gdbmtype_spec = { // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = gdbmtype_spec_slots, }; diff --git a/Modules/_lsprof.c b/Modules/_lsprof.c index a0e6afa844086a..703067cc743a55 100644 --- a/Modules/_lsprof.c +++ b/Modules/_lsprof.c @@ -812,7 +812,8 @@ static PyType_Slot _lsprof_profiler_type_spec_slots[] = { static PyType_Spec _lsprof_profiler_type_spec = { .name = "_lsprof.Profiler", .basicsize = sizeof(ProfilerObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = _lsprof_profiler_type_spec_slots, }; diff --git a/Modules/_lzmamodule.c b/Modules/_lzmamodule.c index 2f80bf0496bb3f..915c0c918f6443 100644 --- a/Modules/_lzmamodule.c +++ b/Modules/_lzmamodule.c @@ -915,7 +915,7 @@ static PyType_Spec lzma_compressor_type_spec = { // lzma_compressor_type_spec does not have Py_TPFLAGS_BASETYPE flag // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = lzma_compressor_type_slots, }; @@ -1359,7 +1359,7 @@ static PyType_Spec lzma_decompressor_type_spec = { // lzma_decompressor_type_spec does not have Py_TPFLAGS_BASETYPE flag // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = lzma_decompressor_type_slots, }; diff --git a/Modules/_operator.c b/Modules/_operator.c index 5bd5a3bcb9bfe8..d5e092e2f82f00 100644 --- a/Modules/_operator.c +++ b/Modules/_operator.c @@ -1133,7 +1133,8 @@ static PyType_Spec itemgetter_type_spec = { .name = "operator.itemgetter", .basicsize = sizeof(itemgetterobject), .itemsize = 0, - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = itemgetter_type_slots, }; @@ -1464,7 +1465,8 @@ static PyType_Spec attrgetter_type_spec = { .name = "operator.attrgetter", .basicsize = sizeof(attrgetterobject), .itemsize = 0, - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = attrgetter_type_slots, }; @@ -1719,7 +1721,8 @@ static PyType_Spec methodcaller_type_spec = { .name = "operator.methodcaller", .basicsize = sizeof(methodcallerobject), .itemsize = 0, - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = methodcaller_type_slots, }; diff --git a/Modules/_queuemodule.c b/Modules/_queuemodule.c index 5e0f38f387abc8..a124255a72cae2 100644 --- a/Modules/_queuemodule.c +++ b/Modules/_queuemodule.c @@ -380,7 +380,8 @@ static PyType_Slot simplequeue_slots[] = { static PyType_Spec simplequeue_spec = { .name = "_queue.SimpleQueue", .basicsize = sizeof(simplequeueobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = simplequeue_slots, }; diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 915515c0a195a1..e1eef587c4464e 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1914,7 +1914,8 @@ static PyType_Slot connection_slots[] = { static PyType_Spec connection_spec = { .name = MODULE_NAME ".Connection", .basicsize = sizeof(pysqlite_Connection), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = connection_slots, }; diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 8c8a347f46e57a..8e7d65faa2851e 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -1078,7 +1078,8 @@ static PyType_Slot cursor_slots[] = { static PyType_Spec cursor_spec = { .name = MODULE_NAME ".Cursor", .basicsize = sizeof(pysqlite_Cursor), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = cursor_slots, }; diff --git a/Modules/_sqlite/prepare_protocol.c b/Modules/_sqlite/prepare_protocol.c index 1f9d7b751d209b..cefb46e390ad6b 100644 --- a/Modules/_sqlite/prepare_protocol.c +++ b/Modules/_sqlite/prepare_protocol.c @@ -56,7 +56,8 @@ static PyType_Slot type_slots[] = { static PyType_Spec type_spec = { .name = MODULE_NAME ".PrepareProtocol", .basicsize = sizeof(pysqlite_PrepareProtocol), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = type_slots, }; diff --git a/Modules/_sqlite/row.c b/Modules/_sqlite/row.c index bf43dad4473aae..d2f9bdd00b670a 100644 --- a/Modules/_sqlite/row.c +++ b/Modules/_sqlite/row.c @@ -258,7 +258,8 @@ static PyType_Slot row_slots[] = { static PyType_Spec row_spec = { .name = MODULE_NAME ".Row", .basicsize = sizeof(pysqlite_Row), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = row_slots, }; diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 89fe4bbec3ea43..3960b21c859435 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -502,7 +502,8 @@ static PyType_Slot stmt_slots[] = { static PyType_Spec stmt_spec = { .name = MODULE_NAME ".Statement", .basicsize = sizeof(pysqlite_Statement), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = stmt_slots, }; diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index 3f7f1d23bc90da..bee69f2099c0e8 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -313,7 +313,7 @@ static PyType_Spec lock_type_spec = { .name = "_thread.lock", .basicsize = sizeof(lockobject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_DISALLOW_INSTANTIATION), + Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE), .slots = lock_type_slots, }; @@ -594,7 +594,8 @@ static PyType_Slot rlock_type_slots[] = { static PyType_Spec rlock_type_spec = { .name = "_thread.RLock", .basicsize = sizeof(rlockobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = rlock_type_slots, }; @@ -693,7 +694,8 @@ static PyType_Slot local_dummy_type_slots[] = { static PyType_Spec local_dummy_type_spec = { .name = "_thread._localdummy", .basicsize = sizeof(localdummyobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_IMMUTABLETYPE), .slots = local_dummy_type_slots, }; @@ -977,7 +979,8 @@ static PyType_Slot local_type_slots[] = { static PyType_Spec local_type_spec = { .name = "_thread._local", .basicsize = sizeof(localobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = local_type_slots, }; diff --git a/Modules/_winapi.c b/Modules/_winapi.c index 2c034628e34e94..1b85d7dd7ee97f 100644 --- a/Modules/_winapi.c +++ b/Modules/_winapi.c @@ -348,7 +348,7 @@ static PyType_Spec winapi_overlapped_type_spec = { .name = "_winapi.Overlapped", .basicsize = sizeof(OverlappedObject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = winapi_overlapped_type_slots, }; diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 30fb7c972438b6..1d9d4cd591afa6 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -2997,7 +2997,7 @@ static PyType_Spec arrayiter_spec = { .name = "array.arrayiterator", .basicsize = sizeof(arrayiterobject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_DISALLOW_INSTANTIATION), + Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE), .slots = arrayiter_slots, }; diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index cb7182ff21fbcd..ba558d0dbf2f1d 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -749,7 +749,7 @@ static PyType_Spec multibytecodec_spec = { .name = MODULE_NAME ".MultibyteCodec", .basicsize = sizeof(MultibyteCodecObject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_DISALLOW_INSTANTIATION), + Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE), .slots = multibytecodec_slots, }; @@ -1111,7 +1111,8 @@ static PyType_Slot encoder_slots[] = { static PyType_Spec encoder_spec = { .name = MODULE_NAME ".MultibyteIncrementalEncoder", .basicsize = sizeof(MultibyteIncrementalEncoderObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = encoder_slots, }; @@ -1384,7 +1385,8 @@ static PyType_Slot decoder_slots[] = { static PyType_Spec decoder_spec = { .name = MODULE_NAME ".MultibyteIncrementalDecoder", .basicsize = sizeof(MultibyteIncrementalDecoderObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = decoder_slots, }; @@ -1705,7 +1707,8 @@ static PyType_Slot reader_slots[] = { static PyType_Spec reader_spec = { .name = MODULE_NAME ".MultibyteStreamReader", .basicsize = sizeof(MultibyteStreamReaderObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = reader_slots, }; @@ -1925,7 +1928,8 @@ static PyType_Slot writer_slots[] = { static PyType_Spec writer_spec = { .name = MODULE_NAME ".MultibyteStreamWriter", .basicsize = sizeof(MultibyteStreamWriterObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = writer_slots, }; diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index 8327ba677ecce7..6397b0d4b81095 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -1121,7 +1121,8 @@ static PyType_Slot mmap_object_slots[] = { static PyType_Spec mmap_object_spec = { .name = "mmap.mmap", .basicsize = sizeof(mmap_object), - .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC), + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = mmap_object_slots, }; diff --git a/Modules/overlapped.c b/Modules/overlapped.c index 38dd98f084849e..7c4570896bc591 100644 --- a/Modules/overlapped.c +++ b/Modules/overlapped.c @@ -1876,7 +1876,7 @@ static PyType_Slot overlapped_type_slots[] = { static PyType_Spec overlapped_type_spec = { .name = "_overlapped.Overlapped", .basicsize = sizeof(OverlappedObject), - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = overlapped_type_slots }; diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c index 9b04df36f5201a..ec684638ead118 100644 --- a/Modules/pyexpat.c +++ b/Modules/pyexpat.c @@ -1504,7 +1504,7 @@ static PyType_Spec _xml_parse_type_spec = { .name = "pyexpat.xmlparser", .basicsize = sizeof(xmlparseobject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_DISALLOW_INSTANTIATION), + Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE), .slots = _xml_parse_type_spec_slots, }; diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c index a4b8193fbc2300..26ac68bdca6483 100644 --- a/Modules/unicodedata.c +++ b/Modules/unicodedata.c @@ -1465,7 +1465,7 @@ static PyType_Spec ucd_type_spec = { .name = "unicodedata.UCD", .basicsize = sizeof(PreviousDBVersion), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = ucd_type_slots }; From webhook-mailer at python.org Thu Jun 17 06:19:48 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 17 Jun 2021 10:19:48 -0000 Subject: [Python-checkins] bpo-43908: Make heap types converted during 3.10 alpha immutable (GH-26351) (GH-26766) Message-ID: https://github.com/python/cpython/commit/7297d74251de3b1c02dcdb9ca281461cc7fb4535 commit: 7297d74251de3b1c02dcdb9ca281461cc7fb4535 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-17T11:19:44+01:00 summary: bpo-43908: Make heap types converted during 3.10 alpha immutable (GH-26351) (GH-26766) * Make functools types immutable * Multibyte codec types are now immutable * pyexpat.xmlparser is now immutable * array.arrayiterator is now immutable * _thread types are now immutable * _csv types are now immutable * _queue.SimpleQueue is now immutable * mmap.mmap is now immutable * unicodedata.UCD is now immutable * sqlite3 types are now immutable * _lsprof.Profiler is now immutable * _overlapped.Overlapped is now immutable * _operator types are now immutable * winapi__overlapped.Overlapped is now immutable * _lzma types are now immutable * _bz2 types are now immutable * _dbm.dbm and _gdbm.gdbm are now immutable (cherry picked from commit 00710e6346fd2394aa020b2dfae170093effac98) Co-authored-by: Erlend Egeberg Aasland Co-authored-by: Erlend Egeberg Aasland files: M Modules/_bz2module.c M Modules/_csv.c M Modules/_dbmmodule.c M Modules/_functoolsmodule.c M Modules/_gdbmmodule.c M Modules/_lsprof.c M Modules/_lzmamodule.c M Modules/_operator.c M Modules/_queuemodule.c M Modules/_sqlite/connection.c M Modules/_sqlite/cursor.c M Modules/_sqlite/prepare_protocol.c M Modules/_sqlite/row.c M Modules/_sqlite/statement.c M Modules/_threadmodule.c M Modules/_winapi.c M Modules/arraymodule.c M Modules/cjkcodecs/multibytecodec.c M Modules/mmapmodule.c M Modules/overlapped.c M Modules/pyexpat.c M Modules/unicodedata.c diff --git a/Modules/_bz2module.c b/Modules/_bz2module.c index d75bb32d2fc5eb..798e9efc628f05 100644 --- a/Modules/_bz2module.c +++ b/Modules/_bz2module.c @@ -422,7 +422,7 @@ static PyType_Spec bz2_compressor_type_spec = { // bz2_compressor_type_spec does not have Py_TPFLAGS_BASETYPE flag // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = bz2_compressor_type_slots, }; @@ -766,7 +766,7 @@ static PyType_Spec bz2_decompressor_type_spec = { // bz2_decompressor_type_spec does not have Py_TPFLAGS_BASETYPE flag // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = bz2_decompressor_type_slots, }; diff --git a/Modules/_csv.c b/Modules/_csv.c index a213734f508068..78855b871352c5 100644 --- a/Modules/_csv.c +++ b/Modules/_csv.c @@ -537,7 +537,8 @@ static PyType_Slot Dialect_Type_slots[] = { PyType_Spec Dialect_Type_spec = { .name = "_csv.Dialect", .basicsize = sizeof(DialectObj), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = Dialect_Type_slots, }; @@ -958,7 +959,8 @@ static PyType_Slot Reader_Type_slots[] = { PyType_Spec Reader_Type_spec = { .name = "_csv.reader", .basicsize = sizeof(ReaderObj), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = Reader_Type_slots }; @@ -1382,7 +1384,8 @@ static PyType_Slot Writer_Type_slots[] = { PyType_Spec Writer_Type_spec = { .name = "_csv.writer", .basicsize = sizeof(WriterObj), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = Writer_Type_slots, }; diff --git a/Modules/_dbmmodule.c b/Modules/_dbmmodule.c index b6c42a35adc458..5733bb4a80de11 100644 --- a/Modules/_dbmmodule.c +++ b/Modules/_dbmmodule.c @@ -424,7 +424,7 @@ static PyType_Spec dbmtype_spec = { // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = dbmtype_spec_slots, }; diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c index 218a8d16ac32d9..fa1452168094b9 100644 --- a/Modules/_functoolsmodule.c +++ b/Modules/_functoolsmodule.c @@ -491,7 +491,8 @@ static PyType_Spec partial_type_spec = { .name = "functools.partial", .basicsize = sizeof(partialobject), .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_VECTORCALL, + Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_VECTORCALL | + Py_TPFLAGS_IMMUTABLETYPE, .slots = partial_type_slots }; @@ -559,7 +560,7 @@ static PyType_Spec keyobject_type_spec = { .name = "functools.KeyWrapper", .basicsize = sizeof(keyobject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = keyobject_type_slots }; @@ -781,7 +782,8 @@ static PyType_Slot lru_list_elem_type_slots[] = { static PyType_Spec lru_list_elem_type_spec = { .name = "functools._lru_list_elem", .basicsize = sizeof(lru_list_elem), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION, + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_IMMUTABLETYPE, .slots = lru_list_elem_type_slots }; @@ -1417,7 +1419,7 @@ static PyType_Spec lru_cache_type_spec = { .name = "functools._lru_cache_wrapper", .basicsize = sizeof(lru_cache_object), .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_METHOD_DESCRIPTOR, + Py_TPFLAGS_METHOD_DESCRIPTOR | Py_TPFLAGS_IMMUTABLETYPE, .slots = lru_cache_type_slots }; diff --git a/Modules/_gdbmmodule.c b/Modules/_gdbmmodule.c index 4fcf93aac7b3e8..6ca3ed6cc36fcc 100644 --- a/Modules/_gdbmmodule.c +++ b/Modules/_gdbmmodule.c @@ -581,7 +581,7 @@ static PyType_Spec gdbmtype_spec = { // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = gdbmtype_spec_slots, }; diff --git a/Modules/_lsprof.c b/Modules/_lsprof.c index a0e6afa844086a..703067cc743a55 100644 --- a/Modules/_lsprof.c +++ b/Modules/_lsprof.c @@ -812,7 +812,8 @@ static PyType_Slot _lsprof_profiler_type_spec_slots[] = { static PyType_Spec _lsprof_profiler_type_spec = { .name = "_lsprof.Profiler", .basicsize = sizeof(ProfilerObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = _lsprof_profiler_type_spec_slots, }; diff --git a/Modules/_lzmamodule.c b/Modules/_lzmamodule.c index 2f80bf0496bb3f..915c0c918f6443 100644 --- a/Modules/_lzmamodule.c +++ b/Modules/_lzmamodule.c @@ -915,7 +915,7 @@ static PyType_Spec lzma_compressor_type_spec = { // lzma_compressor_type_spec does not have Py_TPFLAGS_BASETYPE flag // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = lzma_compressor_type_slots, }; @@ -1359,7 +1359,7 @@ static PyType_Spec lzma_decompressor_type_spec = { // lzma_decompressor_type_spec does not have Py_TPFLAGS_BASETYPE flag // which prevents to create a subclass. // So calling PyType_GetModuleState() in this file is always safe. - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = lzma_decompressor_type_slots, }; diff --git a/Modules/_operator.c b/Modules/_operator.c index 5bd5a3bcb9bfe8..d5e092e2f82f00 100644 --- a/Modules/_operator.c +++ b/Modules/_operator.c @@ -1133,7 +1133,8 @@ static PyType_Spec itemgetter_type_spec = { .name = "operator.itemgetter", .basicsize = sizeof(itemgetterobject), .itemsize = 0, - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = itemgetter_type_slots, }; @@ -1464,7 +1465,8 @@ static PyType_Spec attrgetter_type_spec = { .name = "operator.attrgetter", .basicsize = sizeof(attrgetterobject), .itemsize = 0, - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = attrgetter_type_slots, }; @@ -1719,7 +1721,8 @@ static PyType_Spec methodcaller_type_spec = { .name = "operator.methodcaller", .basicsize = sizeof(methodcallerobject), .itemsize = 0, - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = methodcaller_type_slots, }; diff --git a/Modules/_queuemodule.c b/Modules/_queuemodule.c index 5e0f38f387abc8..a124255a72cae2 100644 --- a/Modules/_queuemodule.c +++ b/Modules/_queuemodule.c @@ -380,7 +380,8 @@ static PyType_Slot simplequeue_slots[] = { static PyType_Spec simplequeue_spec = { .name = "_queue.SimpleQueue", .basicsize = sizeof(simplequeueobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = simplequeue_slots, }; diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 8e42a36bd33729..4e0ad9ad89d275 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1934,7 +1934,8 @@ static PyType_Slot connection_slots[] = { static PyType_Spec connection_spec = { .name = MODULE_NAME ".Connection", .basicsize = sizeof(pysqlite_Connection), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = connection_slots, }; diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 0335e98730a126..c10a8235b018a3 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -1036,7 +1036,8 @@ static PyType_Slot cursor_slots[] = { static PyType_Spec cursor_spec = { .name = MODULE_NAME ".Cursor", .basicsize = sizeof(pysqlite_Cursor), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = cursor_slots, }; diff --git a/Modules/_sqlite/prepare_protocol.c b/Modules/_sqlite/prepare_protocol.c index ece42f4df6f5ac..800eef8794b455 100644 --- a/Modules/_sqlite/prepare_protocol.c +++ b/Modules/_sqlite/prepare_protocol.c @@ -56,7 +56,8 @@ static PyType_Slot type_slots[] = { static PyType_Spec type_spec = { .name = MODULE_NAME ".PrepareProtocol", .basicsize = sizeof(pysqlite_PrepareProtocol), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = type_slots, }; diff --git a/Modules/_sqlite/row.c b/Modules/_sqlite/row.c index 24722be49082cf..643194df040755 100644 --- a/Modules/_sqlite/row.c +++ b/Modules/_sqlite/row.c @@ -254,7 +254,8 @@ static PyType_Slot row_slots[] = { static PyType_Spec row_spec = { .name = MODULE_NAME ".Row", .basicsize = sizeof(pysqlite_Row), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = row_slots, }; diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 072b07d4eaba5a..2fd9ba3ca801ad 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -508,7 +508,8 @@ static PyType_Slot stmt_slots[] = { static PyType_Spec stmt_spec = { .name = MODULE_NAME ".Statement", .basicsize = sizeof(pysqlite_Statement), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = stmt_slots, }; PyTypeObject *pysqlite_StatementType = NULL; diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index 5a2001c8fbf268..d9a71af8d5cde4 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -313,7 +313,7 @@ static PyType_Spec lock_type_spec = { .name = "_thread.lock", .basicsize = sizeof(lockobject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_DISALLOW_INSTANTIATION), + Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE), .slots = lock_type_slots, }; @@ -594,7 +594,8 @@ static PyType_Slot rlock_type_slots[] = { static PyType_Spec rlock_type_spec = { .name = "_thread.RLock", .basicsize = sizeof(rlockobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = rlock_type_slots, }; @@ -693,7 +694,8 @@ static PyType_Slot local_dummy_type_slots[] = { static PyType_Spec local_dummy_type_spec = { .name = "_thread._localdummy", .basicsize = sizeof(localdummyobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_IMMUTABLETYPE), .slots = local_dummy_type_slots, }; @@ -977,7 +979,8 @@ static PyType_Slot local_type_slots[] = { static PyType_Spec local_type_spec = { .name = "_thread._local", .basicsize = sizeof(localobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_IMMUTABLETYPE), .slots = local_type_slots, }; diff --git a/Modules/_winapi.c b/Modules/_winapi.c index 2c034628e34e94..1b85d7dd7ee97f 100644 --- a/Modules/_winapi.c +++ b/Modules/_winapi.c @@ -348,7 +348,7 @@ static PyType_Spec winapi_overlapped_type_spec = { .name = "_winapi.Overlapped", .basicsize = sizeof(OverlappedObject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = winapi_overlapped_type_slots, }; diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 30fb7c972438b6..1d9d4cd591afa6 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -2997,7 +2997,7 @@ static PyType_Spec arrayiter_spec = { .name = "array.arrayiterator", .basicsize = sizeof(arrayiterobject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_DISALLOW_INSTANTIATION), + Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE), .slots = arrayiter_slots, }; diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index cb7182ff21fbcd..ba558d0dbf2f1d 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -749,7 +749,7 @@ static PyType_Spec multibytecodec_spec = { .name = MODULE_NAME ".MultibyteCodec", .basicsize = sizeof(MultibyteCodecObject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_DISALLOW_INSTANTIATION), + Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE), .slots = multibytecodec_slots, }; @@ -1111,7 +1111,8 @@ static PyType_Slot encoder_slots[] = { static PyType_Spec encoder_spec = { .name = MODULE_NAME ".MultibyteIncrementalEncoder", .basicsize = sizeof(MultibyteIncrementalEncoderObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = encoder_slots, }; @@ -1384,7 +1385,8 @@ static PyType_Slot decoder_slots[] = { static PyType_Spec decoder_spec = { .name = MODULE_NAME ".MultibyteIncrementalDecoder", .basicsize = sizeof(MultibyteIncrementalDecoderObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = decoder_slots, }; @@ -1705,7 +1707,8 @@ static PyType_Slot reader_slots[] = { static PyType_Spec reader_spec = { .name = MODULE_NAME ".MultibyteStreamReader", .basicsize = sizeof(MultibyteStreamReaderObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = reader_slots, }; @@ -1925,7 +1928,8 @@ static PyType_Slot writer_slots[] = { static PyType_Spec writer_spec = { .name = MODULE_NAME ".MultibyteStreamWriter", .basicsize = sizeof(MultibyteStreamWriterObject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = writer_slots, }; diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index 8327ba677ecce7..6397b0d4b81095 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -1121,7 +1121,8 @@ static PyType_Slot mmap_object_slots[] = { static PyType_Spec mmap_object_spec = { .name = "mmap.mmap", .basicsize = sizeof(mmap_object), - .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC), + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = mmap_object_slots, }; diff --git a/Modules/overlapped.c b/Modules/overlapped.c index 38dd98f084849e..7c4570896bc591 100644 --- a/Modules/overlapped.c +++ b/Modules/overlapped.c @@ -1876,7 +1876,7 @@ static PyType_Slot overlapped_type_slots[] = { static PyType_Spec overlapped_type_spec = { .name = "_overlapped.Overlapped", .basicsize = sizeof(OverlappedObject), - .flags = Py_TPFLAGS_DEFAULT, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE), .slots = overlapped_type_slots }; diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c index 9b04df36f5201a..ec684638ead118 100644 --- a/Modules/pyexpat.c +++ b/Modules/pyexpat.c @@ -1504,7 +1504,7 @@ static PyType_Spec _xml_parse_type_spec = { .name = "pyexpat.xmlparser", .basicsize = sizeof(xmlparseobject), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_DISALLOW_INSTANTIATION), + Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE), .slots = _xml_parse_type_spec_slots, }; diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c index 5fd329ff1bc3ab..f87eb608798919 100644 --- a/Modules/unicodedata.c +++ b/Modules/unicodedata.c @@ -1465,7 +1465,7 @@ static PyType_Spec ucd_type_spec = { .name = "unicodedata.UCD", .basicsize = sizeof(PreviousDBVersion), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_HAVE_GC), + Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE), .slots = ucd_type_slots }; From webhook-mailer at python.org Thu Jun 17 08:21:48 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 17 Jun 2021 12:21:48 -0000 Subject: [Python-checkins] Python 3.10.0b3 Message-ID: https://github.com/python/cpython/commit/865714a117aca026ecd407159bc6b380a0299bb8 commit: 865714a117aca026ecd407159bc6b380a0299bb8 branch: 3.10 author: Pablo Galindo committer: pablogsal date: 2021-06-17T11:29:18+01:00 summary: Python 3.10.0b3 files: A Misc/NEWS.d/3.10.0b3.rst D Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst D Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst D Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst D Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst D Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst D Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst D Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst D Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst D Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst D Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst D Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst D Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst D Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst D Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst D Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst D Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst D Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst D Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst D Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst D Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst D Misc/NEWS.d/next/Library/2021-05-31-11-28-03.bpo-44246.nhmt-v.rst D Misc/NEWS.d/next/Library/2021-05-31-11-34-56.bpo-44246.yHAkF0.rst D Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst D Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst D Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst D Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst D Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst D Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst D Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst D Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst D Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst D Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst D Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index edd9b6b880aff0..9c1687727e4a87 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -20,10 +20,10 @@ #define PY_MINOR_VERSION 10 #define PY_MICRO_VERSION 0 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_BETA -#define PY_RELEASE_SERIAL 2 +#define PY_RELEASE_SERIAL 3 /* Version as a string */ -#define PY_VERSION "3.10.0b2+" +#define PY_VERSION "3.10.0b3" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index 9c19173fd38ac9..5943dcdf1e1921 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Mon May 31 12:30:19 2021 +# Autogenerated by Sphinx on Thu Jun 17 11:28:07 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' diff --git a/Misc/NEWS.d/3.10.0b3.rst b/Misc/NEWS.d/3.10.0b3.rst new file mode 100644 index 00000000000000..ebbc0006080cc7 --- /dev/null +++ b/Misc/NEWS.d/3.10.0b3.rst @@ -0,0 +1,342 @@ +.. bpo: 44409 +.. date: 2021-06-13-23-12-18 +.. nonce: eW4LS- +.. release date: 2021-06-17 +.. section: Core and Builtins + +Fix error location information for tokenizer errors raised on initialization +of the tokenizer. Patch by Pablo Galindo. + +.. + +.. bpo: 44396 +.. date: 2021-06-11-18-17-42 +.. nonce: Z9EKim +.. section: Core and Builtins + +Fix a possible crash in the tokenizer when raising syntax errors for +unclosed strings. Patch by Pablo Galindo. + +.. + +.. bpo: 44349 +.. date: 2021-06-08-22-49-06 +.. nonce: xgEgeA +.. section: Core and Builtins + +Fix an edge case when displaying text from files with encoding in syntax +errors. Patch by Pablo Galindo. + +.. + +.. bpo: 44335 +.. date: 2021-06-08-01-13-47 +.. nonce: GQTTkl +.. section: Core and Builtins + +Fix a regression when identifying incorrect characters in syntax errors. +Patch by Pablo Galindo + +.. + +.. bpo: 44304 +.. date: 2021-06-05-02-34-57 +.. nonce: _MAoPc +.. section: Core and Builtins + +Fix a crash in the :mod:`sqlite3` module that happened when the garbage +collector clears :class:`sqlite.Statement` objects. Patch by Pablo Galindo + +.. + +.. bpo: 44305 +.. date: 2021-06-03-22-51-50 +.. nonce: 66dVDG +.. section: Core and Builtins + +Improve error message for ``try`` blocks without ``except`` or ``finally`` +blocks. Patch by Pablo Galindo. + +.. + +.. bpo: 43833 +.. date: 2021-04-18-18-07-33 +.. nonce: oChkCi +.. section: Core and Builtins + +Emit a deprecation warning if the numeric literal is immediately followed by +one of keywords: and, else, for, if, in, is, or. Raise a syntax error with +more informative message if it is immediately followed by other keyword or +identifier. + +.. + +.. bpo: 11105 +.. date: 2020-06-02-13-21-14 +.. nonce: wceryW +.. section: Core and Builtins + +When compiling :class:`ast.AST` objects with recursive references through +:func:`compile`, the interpreter doesn't crash anymore instead it raises a +:exc:`RecursionError`. + +.. + +.. bpo: 42972 +.. date: 2021-06-15-13-51-25 +.. nonce: UnyYo1 +.. section: Library + +The _thread.RLock type now fully implement the GC protocol: add a traverse +function and the :const:`Py_TPFLAGS_HAVE_GC` flag. Patch by Victor Stinner. + +.. + +.. bpo: 44422 +.. date: 2021-06-14-23-28-17 +.. nonce: BlWOgv +.. section: Library + +The :func:`threading.enumerate` function now uses a reentrant lock to +prevent a hang on reentrant call. Patch by Victor Stinner. + +.. + +.. bpo: 44389 +.. date: 2021-06-12-22-58-20 +.. nonce: WTRnoC +.. section: Library + +Fix deprecation of :data:`ssl.OP_NO_TLSv1_3` + +.. + +.. bpo: 44362 +.. date: 2021-06-10-20-07-32 +.. nonce: oVOMfd +.. section: Library + +Improve :mod:`ssl` module's deprecation messages, error reporting, and +documentation for deprecations. + +.. + +.. bpo: 44342 +.. date: 2021-06-10-15-06-47 +.. nonce: qqkGlj +.. section: Library + +[Enum] Change pickling from by-value to by-name. + +.. + +.. bpo: 44356 +.. date: 2021-06-10-08-35-38 +.. nonce: 6oDFhO +.. section: Library + +[Enum] Allow multiple data-type mixins if they are all the same. + +.. + +.. bpo: 44351 +.. date: 2021-06-10-07-26-12 +.. nonce: rvyf2v +.. section: Library + +Restore back :func:`parse_makefile` in :mod:`distutils.sysconfig` because it +behaves differently than the similar implementation in :mod:`sysconfig`. + +.. + +.. bpo: 44242 +.. date: 2021-06-07-10-26-14 +.. nonce: MKeMCQ +.. section: Library + +Remove missing flag check from Enum creation and move into a ``verify`` +decorator. + +.. + +.. bpo: 44246 +.. date: 2021-05-31-11-34-56 +.. nonce: yHAkF0 +.. section: Library + +In ``importlib.metadata``, restore compatibility in the result from +``Distribution.entry_points`` (``EntryPoints``) to honor expectations in +older implementations and issuing deprecation warnings for these cases: A. +``EntryPoints`` objects are once again mutable, allowing for ``sort()`` +and other list-based mutation operations. Avoid deprecation warnings by +casting to a mutable sequence (e.g. ``list(dist.entry_points).sort()``). +B. ``EntryPoints`` results once again allow for access by index. To avoid +deprecation warnings, cast the result to a Sequence first (e.g. +``tuple(dist.entry_points)[0]``). + +.. + +.. bpo: 44246 +.. date: 2021-05-31-11-28-03 +.. nonce: nhmt-v +.. section: Library + +In importlib.metadata.entry_points, de-duplication of distributions no +longer requires loading the full metadata for PathDistribution objects, +improving entry point loading performance by ~10x. + +.. + +.. bpo: 43853 +.. date: 2021-04-15-12-02-17 +.. nonce: XXCVAp +.. section: Library + +Improve :mod:`sqlite3` error handling: ``sqlite3_value_text()`` errors that +set ``SQLITE_NOMEM`` now raise :exc:`MemoryError`. Patch by Erlend E. +Aasland. + +.. + +.. bpo: 43318 +.. date: 2021-02-25-08-32-06 +.. nonce: bZJw6V +.. section: Library + +Fix a bug where :mod:`pdb` does not always echo cleared breakpoints. + +.. + +.. bpo: 37022 +.. date: 2020-01-25-12-58-20 +.. nonce: FUZI25 +.. section: Library + +:mod:`pdb` now displays exceptions from ``repr()`` with its ``p`` and ``pp`` +commands. + +.. + +.. bpo: 44392 +.. date: 2021-06-16-18-09-49 +.. nonce: 6RF1Sc +.. section: Documentation + +Added a new section in the C API documentation for types used in type +hinting. Documented ``Py_GenericAlias`` and ``Py_GenericAliasType``. + +.. + +.. bpo: 38291 +.. date: 2021-06-14-09-20-37 +.. nonce: VMYa_Q +.. section: Documentation + +Mark ``typing.io`` and ``typing.re`` as deprecated since Python 3.8 in the +documentation. They were never properly supported by type checkers. + +.. + +.. bpo: 44322 +.. date: 2021-06-06-14-12-00 +.. nonce: K0PHfE +.. section: Documentation + +Document that SyntaxError args have a details tuple and that details are +adjusted for errors in f-string field replacement expressions. + +.. + +.. bpo: 44363 +.. date: 2021-06-10-11-19-43 +.. nonce: -K9jD0 +.. section: Tests + +Account for address sanitizer in test_capi. test_capi now passes when run +GCC address sanitizer. + +.. + +.. bpo: 43921 +.. date: 2021-06-03-03-29-34 +.. nonce: nwH1FS +.. section: Tests + +Fix test_ssl.test_wrong_cert_tls13(): use ``suppress_ragged_eofs=False``, +since ``read()`` can raise :exc:`ssl.SSLEOFError` on Windows. Patch by +Victor Stinner. + +.. + +.. bpo: 43921 +.. date: 2021-06-02-17-41-42 +.. nonce: xP7yZ4 +.. section: Tests + +Fix test_pha_required_nocert() of test_ssl: catch two more EOF cases (when +the ``recv()`` method returns an empty string). Patch by Victor Stinner. + +.. + +.. bpo: 44381 +.. date: 2021-06-10-18-08-44 +.. nonce: Xpc1iX +.. section: Build + +The Windows build now accepts :envvar:`EnableControlFlowGuard` set to +``guard`` to enable CFG. + +.. + +.. bpo: 40128 +.. date: 2021-06-11-17-43-39 +.. nonce: 7vDN3U +.. section: IDLE + +Mostly fix completions on macOS when not using tcl/tk 8.6.11 (as with 3.9). +The added update_idletask call should be harmless and possibly helpful +otherwise. + +.. + +.. bpo: 33962 +.. date: 2021-06-10-00-50-02 +.. nonce: ikAUNg +.. section: IDLE + +Move the indent space setting from the Font tab to the new Windows tab. +Patch by Mark Roseman and Terry Jan Reedy. + +.. + +.. bpo: 40468 +.. date: 2021-06-08-03-04-51 +.. nonce: tUCGUb +.. section: IDLE + +Split the settings dialog General tab into Windows and Shell/ED tabs. Move +help sources, which extend the Help menu, to the Extensions tab. Make space +for new options and shorten the dialog. The latter makes the dialog better +fit small screens. + +.. + +.. bpo: 43795 +.. date: 2021-06-15-16-28-18 +.. nonce: fy0AXK +.. section: C API + +The list in :ref:`stable-abi-list` now shows the public name +:c:struct:`PyFrameObject` rather than ``_frame``. The non-existing entry +``_node`` no longer appears in the list. + +.. + +.. bpo: 44378 +.. date: 2021-06-10-15-22-31 +.. nonce: jGYakF +.. section: C API + +:c:func:`Py_IS_TYPE` no longer uses :c:func:`Py_TYPE` to avoid a compiler +warning: no longer cast ``const PyObject*`` to ``PyObject*``. Patch by +Victor Stinner. diff --git a/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst b/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst deleted file mode 100644 index 002112c4b55674..00000000000000 --- a/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst +++ /dev/null @@ -1,2 +0,0 @@ -The Windows build now accepts :envvar:`EnableControlFlowGuard` set to -``guard`` to enable CFG. diff --git a/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst b/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst deleted file mode 100644 index b620b499f23512..00000000000000 --- a/Misc/NEWS.d/next/C API/2021-06-10-15-22-31.bpo-44378.jGYakF.rst +++ /dev/null @@ -1,3 +0,0 @@ -:c:func:`Py_IS_TYPE` no longer uses :c:func:`Py_TYPE` to avoid a compiler -warning: no longer cast ``const PyObject*`` to ``PyObject*``. -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst b/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst deleted file mode 100644 index 8d029a04579086..00000000000000 --- a/Misc/NEWS.d/next/C API/2021-06-15-16-28-18.bpo-43795.fy0AXK.rst +++ /dev/null @@ -1,3 +0,0 @@ -The list in :ref:`stable-abi-list` now shows the public name -:c:struct:`PyFrameObject` rather than ``_frame``. The non-existing -entry ``_node`` no longer appears in the list. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst b/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst deleted file mode 100644 index 8891936cd88716..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst +++ /dev/null @@ -1,3 +0,0 @@ -When compiling :class:`ast.AST` objects with recursive references -through :func:`compile`, the interpreter doesn't crash anymore instead -it raises a :exc:`RecursionError`. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst deleted file mode 100644 index 2adbdba651b831..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-04-18-18-07-33.bpo-43833.oChkCi.rst +++ /dev/null @@ -1,4 +0,0 @@ -Emit a deprecation warning if the numeric literal is immediately followed by -one of keywords: and, else, for, if, in, is, or. Raise a syntax error with -more informative message if it is immediately followed by other keyword or -identifier. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst deleted file mode 100644 index eebc26f1cc777a..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-06-03-22-51-50.bpo-44305.66dVDG.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve error message for ``try`` blocks without ``except`` or ``finally`` -blocks. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst deleted file mode 100644 index 89104e8e387ed1..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-06-05-02-34-57.bpo-44304._MAoPc.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a crash in the :mod:`sqlite3` module that happened when the garbage -collector clears :class:`sqlite.Statement` objects. Patch by Pablo Galindo diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst deleted file mode 100644 index b57904e5da607f..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-01-13-47.bpo-44335.GQTTkl.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a regression when identifying incorrect characters in syntax errors. -Patch by Pablo Galindo diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst deleted file mode 100644 index b386a8ed2c846d..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-06-08-22-49-06.bpo-44349.xgEgeA.rst +++ /dev/null @@ -1 +0,0 @@ -Fix an edge case when displaying text from files with encoding in syntax errors. Patch by Pablo Galindo. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst deleted file mode 100644 index be72a7111dc8ae..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-06-11-18-17-42.bpo-44396.Z9EKim.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a possible crash in the tokenizer when raising syntax errors for -unclosed strings. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst deleted file mode 100644 index 0f204ed812b27a..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix error location information for tokenizer errors raised on initialization -of the tokenizer. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst b/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst deleted file mode 100644 index 48dd7e6d97662d..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst +++ /dev/null @@ -1,2 +0,0 @@ -Document that SyntaxError args have a details tuple and that details are -adjusted for errors in f-string field replacement expressions. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst b/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst deleted file mode 100644 index 23ce35eb176d9d..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst +++ /dev/null @@ -1,2 +0,0 @@ -Mark ``typing.io`` and ``typing.re`` as deprecated since Python 3.8 in the -documentation. They were never properly supported by type checkers. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst b/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst deleted file mode 100644 index ac197f22929d14..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added a new section in the C API documentation for types used in type -hinting. Documented ``Py_GenericAlias`` and ``Py_GenericAliasType``. diff --git a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst deleted file mode 100644 index 526036ccf841ee..00000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst +++ /dev/null @@ -1,4 +0,0 @@ -Split the settings dialog General tab into Windows and Shell/ED tabs. -Move help sources, which extend the Help menu, to the Extensions tab. -Make space for new options and shorten the dialog. -The latter makes the dialog better fit small screens. diff --git a/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst b/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst deleted file mode 100644 index b15fa8f184792a..00000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst +++ /dev/null @@ -1,2 +0,0 @@ -Move the indent space setting from the Font tab to the new Windows tab. -Patch by Mark Roseman and Terry Jan Reedy. diff --git a/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst b/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst deleted file mode 100644 index dafbe2cd5c3a8f..00000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst +++ /dev/null @@ -1,3 +0,0 @@ -Mostly fix completions on macOS when not using tcl/tk 8.6.11 (as with 3.9). -The added update_idletask call should be harmless and possibly helpful -otherwise. diff --git a/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst b/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst deleted file mode 100644 index 7b923b3aa6e444..00000000000000 --- a/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst +++ /dev/null @@ -1 +0,0 @@ -:mod:`pdb` now displays exceptions from ``repr()`` with its ``p`` and ``pp`` commands. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst b/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst deleted file mode 100644 index c2c9c8776fd86d..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a bug where :mod:`pdb` does not always echo cleared breakpoints. diff --git a/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst b/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst deleted file mode 100644 index c5c3a0ae83c7f4..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-04-15-12-02-17.bpo-43853.XXCVAp.rst +++ /dev/null @@ -1,3 +0,0 @@ -Improve :mod:`sqlite3` error handling: ``sqlite3_value_text()`` errors that -set ``SQLITE_NOMEM`` now raise :exc:`MemoryError`. Patch by Erlend E. -Aasland. diff --git a/Misc/NEWS.d/next/Library/2021-05-31-11-28-03.bpo-44246.nhmt-v.rst b/Misc/NEWS.d/next/Library/2021-05-31-11-28-03.bpo-44246.nhmt-v.rst deleted file mode 100644 index 727d9fd0a19d8a..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-31-11-28-03.bpo-44246.nhmt-v.rst +++ /dev/null @@ -1,3 +0,0 @@ -In importlib.metadata.entry_points, de-duplication of distributions no -longer requires loading the full metadata for PathDistribution objects, -improving entry point loading performance by ~10x. diff --git a/Misc/NEWS.d/next/Library/2021-05-31-11-34-56.bpo-44246.yHAkF0.rst b/Misc/NEWS.d/next/Library/2021-05-31-11-34-56.bpo-44246.yHAkF0.rst deleted file mode 100644 index b93f8b02dc4760..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-31-11-34-56.bpo-44246.yHAkF0.rst +++ /dev/null @@ -1,7 +0,0 @@ -In ``importlib.metadata``, restore compatibility in the result from -``Distribution.entry_points`` (``EntryPoints``) to honor expectations in -older implementations and issuing deprecation warnings for these cases: A. ``EntryPoints`` objects are once again mutable, allowing for ``sort()`` -and other list-based mutation operations. Avoid deprecation warnings by -casting to a mutable sequence (e.g. ``list(dist.entry_points).sort()``). B. ``EntryPoints`` results once again allow for access by index. To avoid -deprecation warnings, cast the result to a Sequence first (e.g. -``tuple(dist.entry_points)[0]``). diff --git a/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst b/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst deleted file mode 100644 index 39740b67365918..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-07-10-26-14.bpo-44242.MKeMCQ.rst +++ /dev/null @@ -1,2 +0,0 @@ -Remove missing flag check from Enum creation and move into a ``verify`` -decorator. diff --git a/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst b/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst deleted file mode 100644 index d731a549632b5f..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-10-07-26-12.bpo-44351.rvyf2v.rst +++ /dev/null @@ -1,2 +0,0 @@ -Restore back :func:`parse_makefile` in :mod:`distutils.sysconfig` because it -behaves differently than the similar implementation in :mod:`sysconfig`. diff --git a/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst b/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst deleted file mode 100644 index 954a803fe25c18..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst +++ /dev/null @@ -1 +0,0 @@ -[Enum] Allow multiple data-type mixins if they are all the same. diff --git a/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst b/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst deleted file mode 100644 index 6db75e3e9bcf11..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-10-15-06-47.bpo-44342.qqkGlj.rst +++ /dev/null @@ -1 +0,0 @@ -[Enum] Change pickling from by-value to by-name. diff --git a/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst b/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst deleted file mode 100644 index 0e6aef3c90e6fc..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-10-20-07-32.bpo-44362.oVOMfd.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve :mod:`ssl` module's deprecation messages, error reporting, and -documentation for deprecations. diff --git a/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst b/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst deleted file mode 100644 index e7e3b874899005..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-12-22-58-20.bpo-44389.WTRnoC.rst +++ /dev/null @@ -1 +0,0 @@ -Fix deprecation of :data:`ssl.OP_NO_TLSv1_3` diff --git a/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst b/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst deleted file mode 100644 index 09bace01fc7794..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst +++ /dev/null @@ -1,3 +0,0 @@ -The :func:`threading.enumerate` function now uses a reentrant lock to -prevent a hang on reentrant call. -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst b/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst deleted file mode 100644 index fbcc12c9f90a20..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-15-13-51-25.bpo-42972.UnyYo1.rst +++ /dev/null @@ -1,2 +0,0 @@ -The _thread.RLock type now fully implement the GC protocol: add a traverse -function and the :const:`Py_TPFLAGS_HAVE_GC` flag. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst b/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst deleted file mode 100644 index 83146c78524671..00000000000000 --- a/Misc/NEWS.d/next/Tests/2021-06-02-17-41-42.bpo-43921.xP7yZ4.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix test_pha_required_nocert() of test_ssl: catch two more EOF cases (when -the ``recv()`` method returns an empty string). Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst b/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst deleted file mode 100644 index 30e0fadd661258..00000000000000 --- a/Misc/NEWS.d/next/Tests/2021-06-03-03-29-34.bpo-43921.nwH1FS.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix test_ssl.test_wrong_cert_tls13(): use ``suppress_ragged_eofs=False``, -since ``read()`` can raise :exc:`ssl.SSLEOFError` on Windows. Patch by -Victor Stinner. diff --git a/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst b/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst deleted file mode 100644 index 28468cbd2b682b..00000000000000 --- a/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst +++ /dev/null @@ -1,2 +0,0 @@ -Account for address sanitizer in test_capi. test_capi now passes when run -GCC address sanitizer. diff --git a/README.rst b/README.rst index 1f566cfb76945c..29678bdab84cee 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.10.0 beta 2 +This is Python version 3.10.0 beta 3 ==================================== .. image:: https://travis-ci.com/python/cpython.svg?branch=master From webhook-mailer at python.org Thu Jun 17 11:29:20 2021 From: webhook-mailer at python.org (markshannon) Date: Thu, 17 Jun 2021 15:29:20 -0000 Subject: [Python-checkins] Do not clear globals or builtins when calling clear() on a frame object. Reverts behavior to that of 3.10 and earlier. (GH-26768) Message-ID: https://github.com/python/cpython/commit/ba2f32a983a08c4f64c23c187432e38908639c12 commit: ba2f32a983a08c4f64c23c187432e38908639c12 branch: main author: Mark Shannon committer: markshannon date: 2021-06-17T16:29:15+01:00 summary: Do not clear globals or builtins when calling clear() on a frame object. Reverts behavior to that of 3.10 and earlier. (GH-26768) files: M Lib/test/test_frame.py M Objects/frameobject.c diff --git a/Lib/test/test_frame.py b/Lib/test/test_frame.py index 7ac37b6937502..a715e725a7e45 100644 --- a/Lib/test/test_frame.py +++ b/Lib/test/test_frame.py @@ -45,6 +45,19 @@ class C: # The reference was released by .clear() self.assertIs(None, wr()) + def test_clear_does_not_clear_specials(self): + class C: + pass + c = C() + exc = self.outer(c=c) + del c + f = exc.__traceback__.tb_frame + f.clear() + self.assertIsNot(f.f_code, None) + self.assertIsNot(f.f_locals, None) + self.assertIsNot(f.f_builtins, None) + self.assertIsNot(f.f_globals, None) + def test_clear_generator(self): endly = False def g(): diff --git a/Objects/frameobject.c b/Objects/frameobject.c index 99afe06d81636..5057313870c60 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -612,7 +612,7 @@ frame_dealloc(PyFrameObject *f) Py_TRASHCAN_SAFE_BEGIN(f) PyCodeObject *co = f->f_code; - /* Kill all local variables */ + /* Kill all local variables including specials. */ if (f->f_localsptr) { for (int i = 0; i < co->co_nlocalsplus+FRAME_SPECIALS_SIZE; i++) { Py_CLEAR(f->f_localsptr[i]); @@ -683,11 +683,10 @@ frame_tp_clear(PyFrameObject *f) f->f_state = FRAME_CLEARED; Py_CLEAR(f->f_trace); - + PyCodeObject *co = f->f_code; /* locals */ - PyObject **localsplus = f->f_localsptr; - for (Py_ssize_t i = frame_nslots(f); --i >= 0; ++localsplus) { - Py_CLEAR(*localsplus); + for (int i = 0; i < co->co_nlocalsplus; i++) { + Py_CLEAR(f->f_localsptr[i]); } /* stack */ From webhook-mailer at python.org Thu Jun 17 12:14:38 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Jun 2021 16:14:38 -0000 Subject: [Python-checkins] =?utf-8?q?bpo-43024=3A_improve_signature_=28in?= =?utf-8?q?_help=2C_etc=29_for_functions_taking_sent=E2=80=A6_=28GH-24331?= =?utf-8?q?=29?= Message-ID: https://github.com/python/cpython/commit/f73377d57c5272390de63cccc3c292c44689310a commit: f73377d57c5272390de63cccc3c292c44689310a branch: main author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-17T09:14:30-07:00 summary: bpo-43024: improve signature (in help, etc) for functions taking sent? (GH-24331) ?inel defaults files: A Misc/NEWS.d/next/Library/2021-01-25-21-24-55.bpo-43024.vAUrIi.rst M Lib/test/test_traceback.py M Lib/traceback.py diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index e9df1ce9c79c0..78b2851d38494 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -4,6 +4,7 @@ from io import StringIO import linecache import sys +import inspect import unittest import re from test import support @@ -255,6 +256,21 @@ def test_exception_is_None(self): self.assertEqual( traceback.format_exception_only(None, None), [NONE_EXC_STRING]) + def test_signatures(self): + self.assertEqual( + str(inspect.signature(traceback.print_exception)), + ('(exc, /, value=, tb=, ' + 'limit=None, file=None, chain=True)')) + + self.assertEqual( + str(inspect.signature(traceback.format_exception)), + ('(exc, /, value=, tb=, limit=None, ' + 'chain=True)')) + + self.assertEqual( + str(inspect.signature(traceback.format_exception_only)), + '(exc, /, value=)') + class TracebackFormatTests(unittest.TestCase): diff --git a/Lib/traceback.py b/Lib/traceback.py index e19745df6def6..b4c7641addec7 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -84,8 +84,11 @@ def extract_tb(tb, limit=None): "another exception occurred:\n\n") -_sentinel = object() +class _Sentinel: + def __repr__(self): + return "" +_sentinel = _Sentinel() def _parse_value_tb(exc, value, tb): if (value is _sentinel) != (tb is _sentinel): diff --git a/Misc/NEWS.d/next/Library/2021-01-25-21-24-55.bpo-43024.vAUrIi.rst b/Misc/NEWS.d/next/Library/2021-01-25-21-24-55.bpo-43024.vAUrIi.rst new file mode 100644 index 0000000000000..56596ce3c2a97 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-01-25-21-24-55.bpo-43024.vAUrIi.rst @@ -0,0 +1 @@ +Improve the help signature of :func:`traceback.print_exception`, :func:`traceback.format_exception` and :func:`traceback.format_exception_only`. From webhook-mailer at python.org Thu Jun 17 12:42:05 2021 From: webhook-mailer at python.org (iritkatriel) Date: Thu, 17 Jun 2021 16:42:05 -0000 Subject: [Python-checkins] =?utf-8?q?bpo-43024=3A_improve_signature_=28in?= =?utf-8?q?_help=2C_etc=29_for_functions_taking_sent=E2=80=A6_=28GH-24331?= =?utf-8?b?KSAoR0gtMjY3NzMp?= Message-ID: https://github.com/python/cpython/commit/eb0a6801bef4f68eebf6fdb2b7a32c32a5b6c983 commit: eb0a6801bef4f68eebf6fdb2b7a32c32a5b6c983 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-17T17:41:46+01:00 summary: bpo-43024: improve signature (in help, etc) for functions taking sent? (GH-24331) (GH-26773) ?inel defaults (cherry picked from commit f73377d57c5272390de63cccc3c292c44689310a) Co-authored-by: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> files: A Misc/NEWS.d/next/Library/2021-01-25-21-24-55.bpo-43024.vAUrIi.rst M Lib/test/test_traceback.py M Lib/traceback.py diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 5bd969d62493a4..dd9459040ebc3a 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -4,6 +4,7 @@ from io import StringIO import linecache import sys +import inspect import unittest import re from test import support @@ -255,6 +256,21 @@ def test_exception_is_None(self): self.assertEqual( traceback.format_exception_only(None, None), [NONE_EXC_STRING]) + def test_signatures(self): + self.assertEqual( + str(inspect.signature(traceback.print_exception)), + ('(exc, /, value=, tb=, ' + 'limit=None, file=None, chain=True)')) + + self.assertEqual( + str(inspect.signature(traceback.format_exception)), + ('(exc, /, value=, tb=, limit=None, ' + 'chain=True)')) + + self.assertEqual( + str(inspect.signature(traceback.format_exception_only)), + '(exc, /, value=)') + class TracebackFormatTests(unittest.TestCase): diff --git a/Lib/traceback.py b/Lib/traceback.py index 8f908dd2e09444..7a7cca1b677029 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -84,8 +84,11 @@ def extract_tb(tb, limit=None): "another exception occurred:\n\n") -_sentinel = object() +class _Sentinel: + def __repr__(self): + return "" +_sentinel = _Sentinel() def _parse_value_tb(exc, value, tb): if (value is _sentinel) != (tb is _sentinel): diff --git a/Misc/NEWS.d/next/Library/2021-01-25-21-24-55.bpo-43024.vAUrIi.rst b/Misc/NEWS.d/next/Library/2021-01-25-21-24-55.bpo-43024.vAUrIi.rst new file mode 100644 index 00000000000000..56596ce3c2a978 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-01-25-21-24-55.bpo-43024.vAUrIi.rst @@ -0,0 +1 @@ +Improve the help signature of :func:`traceback.print_exception`, :func:`traceback.format_exception` and :func:`traceback.format_exception_only`. From webhook-mailer at python.org Thu Jun 17 16:39:53 2021 From: webhook-mailer at python.org (rhettinger) Date: Thu, 17 Jun 2021 20:39:53 -0000 Subject: [Python-checkins] bpo-44310: Add a FAQ entry for caching method calls (GH-26731) Message-ID: https://github.com/python/cpython/commit/7f01f77f8fabcfd7ddb5d99f12d6fc99af9af384 commit: 7f01f77f8fabcfd7ddb5d99f12d6fc99af9af384 branch: main author: Raymond Hettinger committer: rhettinger date: 2021-06-17T15:39:42-05:00 summary: bpo-44310: Add a FAQ entry for caching method calls (GH-26731) files: M Doc/faq/programming.rst diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index 921357d8fcdd2c..a519275040491d 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -1826,6 +1826,103 @@ For example, here is the implementation of return True return False +How do I cache method calls? +---------------------------- + +The two principal tools for caching methods are +:func:`functools.cached_property` and :func:`functools.lru_cache`. The +former stores results at the instance level and the latter at the class +level. + +The *cached_property* approach only works with methods that do not take +any arguments. It does not create a reference to the instance. The +cached method result will be kept only as long as the instance is alive. + +The advantage is that when an instance is not longer used, the cached +method result will be released right away. The disadvantage is that if +instances accumulate, so too will the accumulated method results. They +can grow without bound. + +The *lru_cache* approach works with methods that have hashable +arguments. It creates a reference to the instance unless special +efforts are made to pass in weak references. + +The advantage of the least recently used algorithm is that the cache is +bounded by the specified *maxsize*. The disadvantage is that instances +are kept alive until they age out of the cache or until the cache is +cleared. + +To avoid keeping an instance alive, it can be wrapped a weak reference +proxy. That allows an instance to be freed prior aging out of the LRU +cache. That said, the weak reference technique is rarely needed. It is +only helpful when the instances hold large amounts of data and the +normal aging-out process isn't fast enough. And even though the +instance is released early, the cache still keeps references to the +other method arguments and to the result of the method call. + +This example shows the various techniques:: + + class Weather: + "Lookup weather information on a government website" + + def __init__(self, station_id): + self._station_id = station_id + # The _station_id is private and immutable + + def current_temperature(self): + "Latest hourly observation" + # Do not cache this because old results + # can be out of date. + + @cached_property + def location(self): + "Return the longitude/latitude coordinates of the station" + # Result only depends on the station_id + + @lru_cache(maxsize=20) + def historic_rainfall(self, date, units='mm'): + "Rainfall on a given date" + # Depends on the station_id, date, and units. + + def climate(self, category='average_temperature'): + "List of daily average temperatures for a full year" + return self._climate(weakref.proxy(self), category) + + @staticmethod + @lru_cache(maxsize=10) + def _climate(self_proxy, category): + # Depends on a weak reference to the instance + # and on the category parameter. + +The above example assumes that the *station_id* never changes. If the +relevant instance attributes are mutable, the *cached_property* approach +can't be made to work because it cannot detect changes to the +attributes. + +The *lru_cache* approach can be made to work, but the class needs to define the +*__eq__* and *__hash__* methods so the cache can detect relevant attribute +updates:: + + class Weather: + "Example with a mutable station identifier" + + def __init__(self, station_id): + self.station_id = station_id + + def change_station(self, station_id): + self.station_id = station_id + + def __eq__(self, other): + return self.station_id == other.station_id + + def __hash__(self): + return hash(self.station_id) + + @lru_cache(maxsize=20) + def historic_rainfall(self, date, units='cm'): + 'Rainfall on a given date' + # Depends on the station_id, date, and units. + Modules ======= From webhook-mailer at python.org Thu Jun 17 17:14:50 2021 From: webhook-mailer at python.org (rhettinger) Date: Thu, 17 Jun 2021 21:14:50 -0000 Subject: [Python-checkins] bpo-44310: Add a FAQ entry for caching method calls (GH-26731) (GH-26777) Message-ID: https://github.com/python/cpython/commit/77eaf14d278882857e658f83681e5b9a52cf14ac commit: 77eaf14d278882857e658f83681e5b9a52cf14ac branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-06-17T16:14:36-05:00 summary: bpo-44310: Add a FAQ entry for caching method calls (GH-26731) (GH-26777) files: M Doc/faq/programming.rst diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index 921357d8fcdd2c..a519275040491d 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -1826,6 +1826,103 @@ For example, here is the implementation of return True return False +How do I cache method calls? +---------------------------- + +The two principal tools for caching methods are +:func:`functools.cached_property` and :func:`functools.lru_cache`. The +former stores results at the instance level and the latter at the class +level. + +The *cached_property* approach only works with methods that do not take +any arguments. It does not create a reference to the instance. The +cached method result will be kept only as long as the instance is alive. + +The advantage is that when an instance is not longer used, the cached +method result will be released right away. The disadvantage is that if +instances accumulate, so too will the accumulated method results. They +can grow without bound. + +The *lru_cache* approach works with methods that have hashable +arguments. It creates a reference to the instance unless special +efforts are made to pass in weak references. + +The advantage of the least recently used algorithm is that the cache is +bounded by the specified *maxsize*. The disadvantage is that instances +are kept alive until they age out of the cache or until the cache is +cleared. + +To avoid keeping an instance alive, it can be wrapped a weak reference +proxy. That allows an instance to be freed prior aging out of the LRU +cache. That said, the weak reference technique is rarely needed. It is +only helpful when the instances hold large amounts of data and the +normal aging-out process isn't fast enough. And even though the +instance is released early, the cache still keeps references to the +other method arguments and to the result of the method call. + +This example shows the various techniques:: + + class Weather: + "Lookup weather information on a government website" + + def __init__(self, station_id): + self._station_id = station_id + # The _station_id is private and immutable + + def current_temperature(self): + "Latest hourly observation" + # Do not cache this because old results + # can be out of date. + + @cached_property + def location(self): + "Return the longitude/latitude coordinates of the station" + # Result only depends on the station_id + + @lru_cache(maxsize=20) + def historic_rainfall(self, date, units='mm'): + "Rainfall on a given date" + # Depends on the station_id, date, and units. + + def climate(self, category='average_temperature'): + "List of daily average temperatures for a full year" + return self._climate(weakref.proxy(self), category) + + @staticmethod + @lru_cache(maxsize=10) + def _climate(self_proxy, category): + # Depends on a weak reference to the instance + # and on the category parameter. + +The above example assumes that the *station_id* never changes. If the +relevant instance attributes are mutable, the *cached_property* approach +can't be made to work because it cannot detect changes to the +attributes. + +The *lru_cache* approach can be made to work, but the class needs to define the +*__eq__* and *__hash__* methods so the cache can detect relevant attribute +updates:: + + class Weather: + "Example with a mutable station identifier" + + def __init__(self, station_id): + self.station_id = station_id + + def change_station(self, station_id): + self.station_id = station_id + + def __eq__(self, other): + return self.station_id == other.station_id + + def __hash__(self): + return hash(self.station_id) + + @lru_cache(maxsize=20) + def historic_rainfall(self, date, units='cm'): + 'Rainfall on a given date' + # Depends on the station_id, date, and units. + Modules ======= From webhook-mailer at python.org Fri Jun 18 06:00:50 2021 From: webhook-mailer at python.org (markshannon) Date: Fri, 18 Jun 2021 10:00:50 -0000 Subject: [Python-checkins] bpo-44032: Move pointer to code object from frame-object to frame specials array. (GH-26771) Message-ID: https://github.com/python/cpython/commit/0982ded179f280176868c1c4eccf77bf70687816 commit: 0982ded179f280176868c1c4eccf77bf70687816 branch: main author: Mark Shannon committer: markshannon date: 2021-06-18T11:00:29+01:00 summary: bpo-44032: Move pointer to code object from frame-object to frame specials array. (GH-26771) files: M Include/cpython/frameobject.h M Include/internal/pycore_frame.h M Lib/test/test_sys.py M Objects/frameobject.c M Python/ceval.c M Tools/gdb/libpython.py diff --git a/Include/cpython/frameobject.h b/Include/cpython/frameobject.h index fc20bc2ff89b0c..2bf458cab35451 100644 --- a/Include/cpython/frameobject.h +++ b/Include/cpython/frameobject.h @@ -22,7 +22,6 @@ typedef signed char PyFrameState; struct _frame { PyObject_HEAD struct _frame *f_back; /* previous frame, or NULL */ - PyCodeObject *f_code; /* code segment */ PyObject **f_valuestack; /* points after the last local */ PyObject *f_trace; /* Trace function */ /* Borrowed reference to a generator, or NULL */ diff --git a/Include/internal/pycore_frame.h b/Include/internal/pycore_frame.h index 44f58fb6948712..e30e3c89bfb62b 100644 --- a/Include/internal/pycore_frame.h +++ b/Include/internal/pycore_frame.h @@ -8,7 +8,8 @@ enum { FRAME_SPECIALS_GLOBALS_OFFSET = 0, FRAME_SPECIALS_BUILTINS_OFFSET = 1, FRAME_SPECIALS_LOCALS_OFFSET = 2, - FRAME_SPECIALS_SIZE = 3 + FRAME_SPECIALS_CODE_OFFSET = 3, + FRAME_SPECIALS_SIZE = 4 }; static inline PyObject ** @@ -30,6 +31,13 @@ _PyFrame_GetBuiltins(PyFrameObject *f) return _PyFrame_Specials(f)[FRAME_SPECIALS_BUILTINS_OFFSET]; } +/* Returns a *borrowed* reference. */ +static inline PyCodeObject * +_PyFrame_GetCode(PyFrameObject *f) +{ + return (PyCodeObject *)_PyFrame_Specials(f)[FRAME_SPECIALS_CODE_OFFSET]; +} + int _PyFrame_TakeLocals(PyFrameObject *f); #ifdef __cplusplus diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 40fb721f3fa595..a549d44c5210fc 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -1275,7 +1275,7 @@ class C(object): pass # frame import inspect x = inspect.currentframe() - check(x, size('5P3i4cP')) + check(x, size('4P3i4cP')) # function def func(): pass check(func, size('14P')) diff --git a/Objects/frameobject.c b/Objects/frameobject.c index 5057313870c60b..f9090d8cb14d27 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -46,7 +46,7 @@ PyFrame_GetLineNumber(PyFrameObject *f) return f->f_lineno; } else { - return PyCode_Addr2Line(f->f_code, f->f_lasti*2); + return PyCode_Addr2Line(_PyFrame_GetCode(f), f->f_lasti*2); } } @@ -472,7 +472,7 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno, void *Py_UNUSED(ignore } new_lineno = (int)l_new_lineno; - if (new_lineno < f->f_code->co_firstlineno) { + if (new_lineno < _PyFrame_GetCode(f)->co_firstlineno) { PyErr_Format(PyExc_ValueError, "line %d comes before the current code block", new_lineno); @@ -481,8 +481,8 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno, void *Py_UNUSED(ignore /* PyCode_NewWithPosOnlyArgs limits co_code to be under INT_MAX so this * should never overflow. */ - int len = (int)(PyBytes_GET_SIZE(f->f_code->co_code) / sizeof(_Py_CODEUNIT)); - int *lines = marklines(f->f_code, len); + int len = (int)(PyBytes_GET_SIZE(_PyFrame_GetCode(f)->co_code) / sizeof(_Py_CODEUNIT)); + int *lines = marklines(_PyFrame_GetCode(f), len); if (lines == NULL) { return -1; } @@ -496,7 +496,7 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno, void *Py_UNUSED(ignore return -1; } - int64_t *stacks = mark_stacks(f->f_code, len); + int64_t *stacks = mark_stacks(_PyFrame_GetCode(f), len); if (stacks == NULL) { PyMem_Free(lines); return -1; @@ -610,11 +610,17 @@ frame_dealloc(PyFrameObject *f) } Py_TRASHCAN_SAFE_BEGIN(f) - PyCodeObject *co = f->f_code; + PyCodeObject *co = NULL; /* Kill all local variables including specials. */ if (f->f_localsptr) { - for (int i = 0; i < co->co_nlocalsplus+FRAME_SPECIALS_SIZE; i++) { + /* Don't clear code object until the end */ + co = _PyFrame_GetCode(f); + PyObject **specials = _PyFrame_Specials(f); + Py_CLEAR(specials[FRAME_SPECIALS_GLOBALS_OFFSET]); + Py_CLEAR(specials[FRAME_SPECIALS_BUILTINS_OFFSET]); + Py_CLEAR(specials[FRAME_SPECIALS_LOCALS_OFFSET]); + for (int i = 0; i < co->co_nlocalsplus; i++) { Py_CLEAR(f->f_localsptr[i]); } /* Free items on stack */ @@ -625,6 +631,7 @@ frame_dealloc(PyFrameObject *f) PyMem_Free(f->f_localsptr); f->f_own_locals_memory = 0; } + f->f_localsptr = NULL; } f->f_stackdepth = 0; Py_XDECREF(f->f_back); @@ -643,7 +650,7 @@ frame_dealloc(PyFrameObject *f) PyObject_GC_Del(f); } - Py_DECREF(co); + Py_XDECREF(co); Py_TRASHCAN_SAFE_END(f) } @@ -683,7 +690,7 @@ frame_tp_clear(PyFrameObject *f) f->f_state = FRAME_CLEARED; Py_CLEAR(f->f_trace); - PyCodeObject *co = f->f_code; + PyCodeObject *co = _PyFrame_GetCode(f); /* locals */ for (int i = 0; i < co->co_nlocalsplus; i++) { Py_CLEAR(f->f_localsptr[i]); @@ -722,7 +729,7 @@ frame_sizeof(PyFrameObject *f, PyObject *Py_UNUSED(ignored)) Py_ssize_t res; res = sizeof(PyFrameObject); if (f->f_own_locals_memory) { - PyCodeObject *code = f->f_code; + PyCodeObject *code = _PyFrame_GetCode(f); res += (code->co_nlocalsplus+code->co_stacksize) * sizeof(PyObject *); } return PyLong_FromSsize_t(res); @@ -735,7 +742,7 @@ static PyObject * frame_repr(PyFrameObject *f) { int lineno = PyFrame_GetLineNumber(f); - PyCodeObject *code = f->f_code; + PyCodeObject *code = _PyFrame_GetCode(f); return PyUnicode_FromFormat( "", f, code->co_filename, lineno, code->co_name); @@ -876,7 +883,7 @@ _PyFrame_New_NoTrack(PyThreadState *tstate, PyFrameConstructor *con, PyObject *l PyObject **specials = f->f_localsptr + code->co_nlocalsplus; f->f_valuestack = specials + FRAME_SPECIALS_SIZE; f->f_back = (PyFrameObject*)Py_XNewRef(tstate->frame); - f->f_code = (PyCodeObject *)Py_NewRef(con->fc_code); + specials[FRAME_SPECIALS_CODE_OFFSET] = Py_NewRef(con->fc_code); specials[FRAME_SPECIALS_BUILTINS_OFFSET] = Py_NewRef(con->fc_builtins); specials[FRAME_SPECIALS_GLOBALS_OFFSET] = Py_NewRef(con->fc_globals); specials[FRAME_SPECIALS_LOCALS_OFFSET] = Py_XNewRef(locals); @@ -921,7 +928,7 @@ static int _PyFrame_OpAlreadyRan(PyFrameObject *f, int opcode, int oparg) { const _Py_CODEUNIT *code = - (const _Py_CODEUNIT *)PyBytes_AS_STRING(f->f_code->co_code); + (const _Py_CODEUNIT *)PyBytes_AS_STRING(_PyFrame_GetCode(f)->co_code); for (int i = 0; i < f->f_lasti; i++) { if (_Py_OPCODE(code[i]) == opcode && _Py_OPARG(code[i]) == oparg) { return 1; @@ -948,7 +955,7 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) if (locals == NULL) return -1; } - co = f->f_code; + co = _PyFrame_GetCode(f); fast = f->f_localsptr; for (int i = 0; i < co->co_nlocalsplus; i++) { _PyLocalsPlusKind kind = co->co_localspluskinds[i]; @@ -1041,7 +1048,7 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) if (locals == NULL) return; fast = f->f_localsptr; - co = f->f_code; + co = _PyFrame_GetCode(f); PyErr_Fetch(&error_type, &error_value, &error_traceback); for (int i = 0; i < co->co_nlocalsplus; i++) { @@ -1134,7 +1141,7 @@ PyCodeObject * PyFrame_GetCode(PyFrameObject *frame) { assert(frame != NULL); - PyCodeObject *code = frame->f_code; + PyCodeObject *code = _PyFrame_GetCode(frame); assert(code != NULL); Py_INCREF(code); return code; diff --git a/Python/ceval.c b/Python/ceval.c index a9b9aca0399035..699cd865faa1be 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1451,7 +1451,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) /* push frame */ tstate->frame = f; specials = f->f_valuestack - FRAME_SPECIALS_SIZE; - co = f->f_code; + co = (PyCodeObject *)specials[FRAME_SPECIALS_CODE_OFFSET]; if (cframe.use_tracing) { if (tstate->c_tracefunc != NULL) { @@ -5388,9 +5388,10 @@ call_trace_protected(Py_tracefunc func, PyObject *obj, static void initialize_trace_info(PyTraceInfo *trace_info, PyFrameObject *frame) { - if (trace_info->code != frame->f_code) { - trace_info->code = frame->f_code; - _PyCode_InitAddressRange(frame->f_code, &trace_info->bounds); + PyCodeObject *code = _PyFrame_GetCode(frame); + if (trace_info->code != code) { + trace_info->code = code; + _PyCode_InitAddressRange(code, &trace_info->bounds); } } @@ -5405,7 +5406,7 @@ call_trace(Py_tracefunc func, PyObject *obj, tstate->tracing++; tstate->cframe->use_tracing = 0; if (frame->f_lasti < 0) { - frame->f_lineno = frame->f_code->co_firstlineno; + frame->f_lineno = _PyFrame_GetCode(frame)->co_firstlineno; } else { initialize_trace_info(&tstate->trace_info, frame); @@ -5684,7 +5685,7 @@ PyEval_MergeCompilerFlags(PyCompilerFlags *cf) int result = cf->cf_flags != 0; if (current_frame != NULL) { - const int codeflags = current_frame->f_code->co_flags; + const int codeflags = _PyFrame_GetCode(current_frame)->co_flags; const int compilerflags = codeflags & PyCF_MASK; if (compilerflags) { result = 1; @@ -6289,7 +6290,7 @@ unicode_concatenate(PyThreadState *tstate, PyObject *v, PyObject *w, } case STORE_NAME: { - PyObject *names = f->f_code->co_names; + PyObject *names = _PyFrame_GetCode(f)->co_names; PyObject *name = GETITEM(names, oparg); PyObject *locals = f->f_valuestack[ FRAME_SPECIALS_LOCALS_OFFSET-FRAME_SPECIALS_SIZE]; @@ -6376,7 +6377,7 @@ dtrace_function_entry(PyFrameObject *f) const char *funcname; int lineno; - PyCodeObject *code = f->f_code; + PyCodeObject *code = _PyFrame_GetCode(f); filename = PyUnicode_AsUTF8(code->co_filename); funcname = PyUnicode_AsUTF8(code->co_name); lineno = PyFrame_GetLineNumber(f); @@ -6391,7 +6392,7 @@ dtrace_function_return(PyFrameObject *f) const char *funcname; int lineno; - PyCodeObject *code = f->f_code; + PyCodeObject *code = _PyFrame_GetCode(f); filename = PyUnicode_AsUTF8(code->co_filename); funcname = PyUnicode_AsUTF8(code->co_name); lineno = PyFrame_GetLineNumber(f); @@ -6418,10 +6419,10 @@ maybe_dtrace_line(PyFrameObject *frame, if (line != frame->f_lineno || frame->f_lasti < instr_prev) { if (line != -1) { frame->f_lineno = line; - co_filename = PyUnicode_AsUTF8(frame->f_code->co_filename); + co_filename = PyUnicode_AsUTF8(_PyFrame_GetCode(frame)->co_filename); if (!co_filename) co_filename = "?"; - co_name = PyUnicode_AsUTF8(frame->f_code->co_name); + co_name = PyUnicode_AsUTF8(_PyFrame_GetCode(frame)->co_name); if (!co_name) co_name = "?"; PyDTrace_LINE(co_filename, co_name, line); diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index 756b52c3c57a61..0198500265be41 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -856,6 +856,8 @@ def proxyval(self, visited): FRAME_SPECIALS_GLOBAL_OFFSET = 0 FRAME_SPECIALS_BUILTINS_OFFSET = 1 +FRAME_SPECIALS_CODE_OFFSET = 3 +FRAME_SPECIALS_SIZE = 4 class PyFrameObjectPtr(PyObjectPtr): _typename = 'PyFrameObject' @@ -864,7 +866,7 @@ def __init__(self, gdbval, cast_to=None): PyObjectPtr.__init__(self, gdbval, cast_to) if not self.is_optimized_out(): - self.co = PyCodeObjectPtr.from_pyobject_ptr(self.field('f_code')) + self.co = self._f_code() self.co_name = self.co.pyop_field('co_name') self.co_filename = self.co.pyop_field('co_filename') @@ -890,11 +892,18 @@ def iter_locals(self): pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_localsplusnames[i]) yield (pyop_name, pyop_value) + def _f_specials(self, index, cls=PyObjectPtr): + f_valuestack = self.field('f_valuestack') + return cls.from_pyobject_ptr(f_valuestack[index - FRAME_SPECIALS_SIZE]) + def _f_globals(self): - f_localsplus = self.field('f_localsptr') - nlocalsplus = int_from_int(self.co.field('co_nlocalsplus')) - index = nlocalsplus + FRAME_SPECIALS_GLOBAL_OFFSET - return PyObjectPtr.from_pyobject_ptr(f_localsplus[index]) + return self._f_specials(FRAME_SPECIALS_GLOBAL_OFFSET) + + def _f_builtins(self): + return self._f_specials(FRAME_SPECIALS_BUILTINS_OFFSET) + + def _f_code(self): + return self._f_specials(FRAME_SPECIALS_CODE_OFFSET, PyCodeObjectPtr) def iter_globals(self): ''' @@ -907,12 +916,6 @@ def iter_globals(self): pyop_globals = self._f_globals() return pyop_globals.iteritems() - def _f_builtins(self): - f_localsplus = self.field('f_localsptr') - nlocalsplus = int_from_int(self.co.field('co_nlocalsplus')) - index = nlocalsplus + FRAME_SPECIALS_BUILTINS_OFFSET - return PyObjectPtr.from_pyobject_ptr(f_localsplus[index]) - def iter_builtins(self): ''' Yield a sequence of (name,value) pairs of PyObjectPtr instances, for From webhook-mailer at python.org Fri Jun 18 13:18:24 2021 From: webhook-mailer at python.org (brandtbucher) Date: Fri, 18 Jun 2021 17:18:24 -0000 Subject: [Python-checkins] Reorganize the pattern matching suite (GH-26661) Message-ID: https://github.com/python/cpython/commit/c106cf31f816f719de0a83ff31b9f4d0bea3519b commit: c106cf31f816f719de0a83ff31b9f4d0bea3519b branch: main author: Brandt Bucher committer: brandtbucher date: 2021-06-18T10:18:14-07:00 summary: Reorganize the pattern matching suite (GH-26661) files: M Lib/test/test_patma.py diff --git a/Lib/test/test_patma.py b/Lib/test/test_patma.py index 084d0879f1764..91b1f7e2aa4c7 100644 --- a/Lib/test/test_patma.py +++ b/Lib/test/test_patma.py @@ -1,23 +1,9 @@ import array import collections -import contextlib import dataclasses import enum import inspect import unittest -import warnings - - -def no_perf(f): - f.no_perf = None - return f - - - at dataclasses.dataclass -class MyClass: - x: int - y: str - __match_args__ = ("x", "y") @dataclasses.dataclass @@ -26,11 +12,58 @@ class Point: y: int -class TestPatma(unittest.TestCase): +class TestCompiler(unittest.TestCase): - def assert_syntax_error(self, code: str): - with self.assertRaises(SyntaxError): - compile(inspect.cleandoc(code), "", "exec") + def test_refleaks(self): + # Hunting for leaks using -R doesn't catch leaks in the compiler itself, + # just the code under test. This test ensures that if there are leaks in + # the pattern compiler, those runs will fail: + with open(__file__) as file: + compile(file.read(), __file__, "exec") + + +class TestInheritance(unittest.TestCase): + + def test_multiple_inheritance(self): + class C: + pass + class S1(collections.UserList, collections.abc.Mapping): + pass + class S2(C, collections.UserList, collections.abc.Mapping): + pass + class S3(list, C, collections.abc.Mapping): + pass + class S4(collections.UserList, dict, C): + pass + class M1(collections.UserDict, collections.abc.Sequence): + pass + class M2(C, collections.UserDict, collections.abc.Sequence): + pass + class M3(collections.UserDict, C, list): + pass + class M4(dict, collections.abc.Sequence, C): + pass + def f(x): + match x: + case []: + return "seq" + case {}: + return "map" + def g(x): + match x: + case {}: + return "map" + case []: + return "seq" + for Seq in (S1, S2, S3, S4): + self.assertEqual(f(Seq()), "seq") + self.assertEqual(g(Seq()), "seq") + for Map in (M1, M2, M3, M4): + self.assertEqual(f(Map()), "map") + self.assertEqual(g(Map()), "map") + + +class TestPatma(unittest.TestCase): def test_patma_000(self): match 0: @@ -1701,7 +1734,6 @@ def http_error(status): self.assertIs(http_error("400"), None) self.assertIs(http_error(401 | 403 | 404), None) # 407 - @no_perf def test_patma_176(self): def whereis(point): match point: @@ -1714,13 +1746,12 @@ def whereis(point): case (x, y): return f"X={x}, Y={y}" case _: - raise ValueError("Not a point") + return "Not a point" self.assertEqual(whereis((0, 0)), "Origin") self.assertEqual(whereis((0, -1.0)), "Y=-1.0") self.assertEqual(whereis(("X", 0)), "X=X") self.assertEqual(whereis((None, 1j)), "X=None, Y=1j") - with self.assertRaises(ValueError): - whereis(42) + self.assertEqual(whereis(42), "Not a point") def test_patma_177(self): def whereis(point): @@ -2179,11 +2210,11 @@ def f(w): def test_patma_212(self): def f(w): match w: - case MyClass(int(xx), y="hello"): + case Point(int(xx), y="hello"): out = locals() del out["w"] return out - self.assertEqual(f(MyClass(42, "hello")), {"xx": 42}) + self.assertEqual(f(Point(42, "hello")), {"xx": 42}) def test_patma_213(self): def f(w): @@ -2225,99 +2256,35 @@ def f(): return locals() self.assertEqual(set(f()), {"abc"}) - @no_perf def test_patma_218(self): - self.assert_syntax_error(""" - match ...: - case "a" | a: - pass - """) - - @no_perf - def test_patma_219(self): - self.assert_syntax_error(""" - match ...: - case a | "a": - pass - """) - - def test_patma_220(self): def f(): match ..., ...: case a, b: return locals() self.assertEqual(set(f()), {"a", "b"}) - @no_perf - def test_patma_221(self): - self.assert_syntax_error(""" - match ...: - case a, a: - pass - """) - - def test_patma_222(self): + def test_patma_219(self): def f(): match {"k": ..., "l": ...}: case {"k": a, "l": b}: return locals() self.assertEqual(set(f()), {"a", "b"}) - @no_perf - def test_patma_223(self): - self.assert_syntax_error(""" - match ...: - case {"k": a, "l": a}: - pass - """) - - def test_patma_224(self): + def test_patma_220(self): def f(): - match MyClass(..., ...): - case MyClass(x, y=y): + match Point(..., ...): + case Point(x, y=y): return locals() self.assertEqual(set(f()), {"x", "y"}) - @no_perf - def test_patma_225(self): - self.assert_syntax_error(""" - match ...: - case MyClass(x, x): - pass - """) - - @no_perf - def test_patma_226(self): - self.assert_syntax_error(""" - match ...: - case MyClass(x=x, y=x): - pass - """) - - @no_perf - def test_patma_227(self): - self.assert_syntax_error(""" - match ...: - case MyClass(x, y=x): - pass - """) - - def test_patma_228(self): + def test_patma_221(self): def f(): match ...: case b as a: return locals() self.assertEqual(set(f()), {"a", "b"}) - @no_perf - def test_patma_229(self): - self.assert_syntax_error(""" - match ...: - case a as a: - pass - """) - - def test_patma_230(self): + def test_patma_222(self): def f(x): match x: case _: @@ -2327,7 +2294,7 @@ def f(x): self.assertEqual(f(2), 0) self.assertEqual(f(3), 0) - def test_patma_231(self): + def test_patma_223(self): def f(x): match x: case 0: @@ -2337,7 +2304,7 @@ def f(x): self.assertIs(f(2), None) self.assertIs(f(3), None) - def test_patma_232(self): + def test_patma_224(self): def f(x): match x: case 0: @@ -2349,7 +2316,7 @@ def f(x): self.assertEqual(f(2), 1) self.assertEqual(f(3), 1) - def test_patma_233(self): + def test_patma_225(self): def f(x): match x: case 0: @@ -2361,7 +2328,7 @@ def f(x): self.assertIs(f(2), None) self.assertIs(f(3), None) - def test_patma_234(self): + def test_patma_226(self): def f(x): match x: case 0: @@ -2375,7 +2342,7 @@ def f(x): self.assertEqual(f(2), 2) self.assertEqual(f(3), 2) - def test_patma_235(self): + def test_patma_227(self): def f(x): match x: case 0: @@ -2389,275 +2356,77 @@ def f(x): self.assertEqual(f(2), 2) self.assertIs(f(3), None) - @no_perf - def test_patma_236(self): - self.assert_syntax_error(""" - match ...: - case {**rest, "key": value}: - pass - """) - - @no_perf - def test_patma_237(self): - self.assert_syntax_error(""" - match ...: - case {"first": first, **rest, "last": last}: - pass - """) + def test_patma_228(self): + match(): + case(): + x = 0 + self.assertEqual(x, 0) - @no_perf - def test_patma_238(self): - self.assert_syntax_error(""" - match ...: - case *a, b, *c, d, *e: - pass - """) + def test_patma_229(self): + x = 0 + match(x): + case(x): + y = 0 + self.assertEqual(x, 0) + self.assertEqual(y, 0) - @no_perf - def test_patma_239(self): - self.assert_syntax_error(""" - match ...: - case a, *b, c, *d, e: - pass - """) + def test_patma_230(self): + x = 0 + match x: + case False: + y = 0 + case 0: + y = 1 + self.assertEqual(x, 0) + self.assertEqual(y, 1) - @no_perf - def test_patma_240(self): - self.assert_syntax_error(""" - match ...: - case 0+0: - pass - """) + def test_patma_231(self): + x = 1 + match x: + case True: + y = 0 + case 1: + y = 1 + self.assertEqual(x, 1) + self.assertEqual(y, 1) - @no_perf - def test_patma_241(self): - self.assert_syntax_error(""" - match ...: - case f"": - pass - """) + def test_patma_232(self): + class Eq: + def __eq__(self, other): + return True + x = eq = Eq() + y = None + match x: + case None: + y = 0 + self.assertIs(x, eq) + self.assertEqual(y, None) - @no_perf - def test_patma_242(self): - self.assert_syntax_error(""" - match ...: - case f"{x}": - pass - """) + def test_patma_233(self): + x = False + match x: + case False: + y = 0 + self.assertIs(x, False) + self.assertEqual(y, 0) - @no_perf - def test_patma_243(self): - self.assert_syntax_error(""" - match 42: - case x: - pass - case y: - pass - """) + def test_patma_234(self): + x = True + match x: + case True: + y = 0 + self.assertIs(x, True) + self.assertEqual(y, 0) - @no_perf - def test_patma_244(self): - self.assert_syntax_error(""" - match ...: - case {**_}: - pass - """) + def test_patma_235(self): + x = None + match x: + case None: + y = 0 + self.assertIs(x, None) + self.assertEqual(y, 0) - @no_perf - def test_patma_245(self): - self.assert_syntax_error(""" - match ...: - case 42 as _: - pass - """) - - @no_perf - def test_patma_246(self): - class Class: - __match_args__ = None - x = Class() - y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y): - z = 0 - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_247(self): - class Class: - __match_args__ = "XYZ" - x = Class() - y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y): - z = 0 - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_248(self): - class Class: - __match_args__ = (None,) - x = Class() - y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y): - z = 0 - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_249(self): - class Class: - __match_args__ = () - x = Class() - y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y): - z = 0 - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_250(self): - self.assert_syntax_error(""" - match ...: - case Class(a=_, a=_): - pass - """) - - @no_perf - def test_patma_251(self): - x = {"a": 0, "b": 1} - w = y = z = None - with self.assertRaises(ValueError): - match x: - case {"a": y, "a": z}: - w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_252(self): - class Keys: - KEY = "a" - x = {"a": 0, "b": 1} - w = y = z = None - with self.assertRaises(ValueError): - match x: - case {Keys.KEY: y, "a": z}: - w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_253(self): - class Class: - __match_args__ = ("a", "a") - a = None - x = Class() - w = y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y, z): - w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_254(self): - class Class: - __match_args__ = ("a",) - a = None - x = Class() - w = y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y, a=z): - w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) - - def test_patma_255(self): - match(): - case(): - x = 0 - self.assertEqual(x, 0) - - def test_patma_256(self): - x = 0 - match(x): - case(x): - y = 0 - self.assertEqual(x, 0) - self.assertEqual(y, 0) - - def test_patma_257(self): - x = 0 - match x: - case False: - y = 0 - case 0: - y = 1 - self.assertEqual(x, 0) - self.assertEqual(y, 1) - - def test_patma_258(self): - x = 1 - match x: - case True: - y = 0 - case 1: - y = 1 - self.assertEqual(x, 1) - self.assertEqual(y, 1) - - def test_patma_259(self): - class Eq: - def __eq__(self, other): - return True - x = eq = Eq() - y = None - match x: - case None: - y = 0 - self.assertIs(x, eq) - self.assertEqual(y, None) - - def test_patma_260(self): - x = False - match x: - case False: - y = 0 - self.assertIs(x, False) - self.assertEqual(y, 0) - - def test_patma_261(self): - x = True - match x: - case True: - y = 0 - self.assertIs(x, True) - self.assertEqual(y, 0) - - def test_patma_262(self): - x = None - match x: - case None: - y = 0 - self.assertIs(x, None) - self.assertEqual(y, 0) - - def test_patma_263(self): + def test_patma_236(self): x = 0 match x: case (0 as w) as z: @@ -2667,7 +2436,7 @@ def test_patma_263(self): self.assertEqual(y, 0) self.assertEqual(z, 0) - def test_patma_264(self): + def test_patma_237(self): x = 0 match x: case (0 as w) as z: @@ -2677,7 +2446,7 @@ def test_patma_264(self): self.assertEqual(y, 0) self.assertEqual(z, 0) - def test_patma_265(self): + def test_patma_238(self): x = ((0, 1), (2, 3)) match x: case ((a as b, c as d) as e) as w, ((f as g, h) as i) as z: @@ -2696,87 +2465,7 @@ def test_patma_265(self): self.assertEqual(y, 0) self.assertEqual(z, (2, 3)) - @no_perf - def test_patma_266(self): - self.assert_syntax_error(""" - match ...: - case _ | _: - pass - """) - - @no_perf - def test_patma_267(self): - self.assert_syntax_error(""" - match ...: - case (_ as x) | [x]: - pass - """) - - - @no_perf - def test_patma_268(self): - self.assert_syntax_error(""" - match ...: - case _ | _ if condition(): - pass - """) - - - @no_perf - def test_patma_269(self): - self.assert_syntax_error(""" - match ...: - case x | [_ as x] if x: - pass - """) - - @no_perf - def test_patma_270(self): - self.assert_syntax_error(""" - match ...: - case _: - pass - case None: - pass - """) - - @no_perf - def test_patma_271(self): - self.assert_syntax_error(""" - match ...: - case x: - pass - case [x] if x: - pass - """) - - @no_perf - def test_patma_272(self): - self.assert_syntax_error(""" - match ...: - case x: - pass - case _: - pass - """) - - @no_perf - def test_patma_273(self): - self.assert_syntax_error(""" - match ...: - case (None | _) | _: - pass - """) - - @no_perf - def test_patma_274(self): - self.assert_syntax_error(""" - match ...: - case _ | (True | False): - pass - """) - - def test_patma_275(self): + def test_patma_239(self): x = collections.UserDict({0: 1, 2: 3}) match x: case {2: 3}: @@ -2784,7 +2473,7 @@ def test_patma_275(self): self.assertEqual(x, {0: 1, 2: 3}) self.assertEqual(y, 0) - def test_patma_276(self): + def test_patma_240(self): x = collections.UserDict({0: 1, 2: 3}) match x: case {2: 3, **z}: @@ -2793,7 +2482,7 @@ def test_patma_276(self): self.assertEqual(y, 0) self.assertEqual(z, {0: 1}) - def test_patma_277(self): + def test_patma_241(self): x = [[{0: 0}]] match x: case list([({-0-0j: int(real=0+0j, imag=0-0j) | (1) as z},)]): @@ -2802,7 +2491,7 @@ def test_patma_277(self): self.assertEqual(y, 0) self.assertEqual(z, 0) - def test_patma_278(self): + def test_patma_242(self): x = range(3) match x: case [y, *_, z]: @@ -2812,7 +2501,7 @@ def test_patma_278(self): self.assertEqual(y, 0) self.assertEqual(z, 2) - def test_patma_279(self): + def test_patma_243(self): x = range(3) match x: case [_, *_, y]: @@ -2821,7 +2510,7 @@ def test_patma_279(self): self.assertEqual(y, 2) self.assertEqual(z, 0) - def test_patma_280(self): + def test_patma_244(self): x = range(3) match x: case [*_, y]: @@ -2830,228 +2519,488 @@ def test_patma_280(self): self.assertEqual(y, 2) self.assertEqual(z, 0) - @no_perf - def test_patma_281(self): - x = range(10) - y = None - with self.assertRaises(TypeError): - match x: - case range(10): - y = 0 - self.assertEqual(x, range(10)) - self.assertIs(y, None) + def test_patma_245(self): + x = {"y": 1} + match x: + case {"y": (0 as y) | (1 as y)}: + z = 0 + self.assertEqual(x, {"y": 1}) + self.assertEqual(y, 1) + self.assertEqual(z, 0) - @no_perf - def test_patma_282(self): - class Class: - __match_args__ = ["spam", "eggs"] - spam = 0 - eggs = 1 - x = Class() - w = y = z = None - with self.assertRaises(TypeError): + def test_patma_246(self): + def f(x): match x: - case Class(y, z): + case ((a, b, c, d, e, f, g, h, i, 9) | + (h, g, i, a, b, d, e, c, f, 10) | + (g, b, a, c, d, -5, e, h, i, f) | + (-1, d, f, b, g, e, i, a, h, c)): w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) + out = locals() + del out["x"] + return out + alts = [ + dict(a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8, w=0), + dict(h=1, g=2, i=3, a=4, b=5, d=6, e=7, c=8, f=9, w=0), + dict(g=0, b=-1, a=-2, c=-3, d=-4, e=-6, h=-7, i=-8, f=-9, w=0), + dict(d=-2, f=-3, b=-4, g=-5, e=-6, i=-7, a=-8, h=-9, c=-10, w=0), + dict(), + ] + self.assertEqual(f(range(10)), alts[0]) + self.assertEqual(f(range(1, 11)), alts[1]) + self.assertEqual(f(range(0, -10, -1)), alts[2]) + self.assertEqual(f(range(-1, -11, -1)), alts[3]) + self.assertEqual(f(range(10, 20)), alts[4]) + + def test_patma_247(self): + def f(x): + match x: + case [y, (a, b, c, d, e, f, g, h, i, 9) | + (h, g, i, a, b, d, e, c, f, 10) | + (g, b, a, c, d, -5, e, h, i, f) | + (-1, d, f, b, g, e, i, a, h, c), z]: + w = 0 + out = locals() + del out["x"] + return out + alts = [ + dict(a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8, w=0, y=False, z=True), + dict(h=1, g=2, i=3, a=4, b=5, d=6, e=7, c=8, f=9, w=0, y=False, z=True), + dict(g=0, b=-1, a=-2, c=-3, d=-4, e=-6, h=-7, i=-8, f=-9, w=0, y=False, z=True), + dict(d=-2, f=-3, b=-4, g=-5, e=-6, i=-7, a=-8, h=-9, c=-10, w=0, y=False, z=True), + dict(), + ] + self.assertEqual(f((False, range(10), True)), alts[0]) + self.assertEqual(f((False, range(1, 11), True)), alts[1]) + self.assertEqual(f((False, range(0, -10, -1), True)), alts[2]) + self.assertEqual(f((False, range(-1, -11, -1), True)), alts[3]) + self.assertEqual(f((False, range(10, 20), True)), alts[4]) - @no_perf - def test_patma_283(self): + +class TestSyntaxErrors(unittest.TestCase): + + def assert_syntax_error(self, code: str): + with self.assertRaises(SyntaxError): + compile(inspect.cleandoc(code), "", "exec") + + def test_alternative_patterns_bind_different_names_0(self): + self.assert_syntax_error(""" + match ...: + case "a" | a: + pass + """) + + def test_alternative_patterns_bind_different_names_1(self): + self.assert_syntax_error(""" + match ...: + case [a, [b] | [c] | [d]]: + pass + """) + + + def test_attribute_name_repeated_in_class_pattern(self): + self.assert_syntax_error(""" + match ...: + case Class(a=_, a=_): + pass + """) + + def test_imaginary_number_required_in_complex_literal_0(self): + self.assert_syntax_error(""" + match ...: + case 0+0: + pass + """) + + def test_imaginary_number_required_in_complex_literal_1(self): self.assert_syntax_error(""" match ...: case {0+0: _}: pass """) - @no_perf - def test_patma_284(self): + def test_invalid_syntax_0(self): + self.assert_syntax_error(""" + match ...: + case {**rest, "key": value}: + pass + """) + + def test_invalid_syntax_1(self): + self.assert_syntax_error(""" + match ...: + case {"first": first, **rest, "last": last}: + pass + """) + + def test_invalid_syntax_2(self): + self.assert_syntax_error(""" + match ...: + case {**_}: + pass + """) + + def test_invalid_syntax_3(self): + self.assert_syntax_error(""" + match ...: + case 42 as _: + pass + """) + + def test_mapping_pattern_keys_may_only_match_literals_and_attribute_lookups(self): self.assert_syntax_error(""" match ...: case {f"": _}: pass """) - @no_perf - def test_patma_285(self): + def test_multiple_assignments_to_name_in_pattern_0(self): + self.assert_syntax_error(""" + match ...: + case a, a: + pass + """) + + def test_multiple_assignments_to_name_in_pattern_1(self): + self.assert_syntax_error(""" + match ...: + case {"k": a, "l": a}: + pass + """) + + def test_multiple_assignments_to_name_in_pattern_2(self): + self.assert_syntax_error(""" + match ...: + case MyClass(x, x): + pass + """) + + def test_multiple_assignments_to_name_in_pattern_3(self): + self.assert_syntax_error(""" + match ...: + case MyClass(x=x, y=x): + pass + """) + + def test_multiple_assignments_to_name_in_pattern_4(self): + self.assert_syntax_error(""" + match ...: + case MyClass(x, y=x): + pass + """) + + def test_multiple_assignments_to_name_in_pattern_5(self): + self.assert_syntax_error(""" + match ...: + case a as a: + pass + """) + + def test_multiple_starred_names_in_sequence_pattern_0(self): + self.assert_syntax_error(""" + match ...: + case *a, b, *c, d, *e: + pass + """) + + def test_multiple_starred_names_in_sequence_pattern_1(self): + self.assert_syntax_error(""" + match ...: + case a, *b, c, *d, e: + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_0(self): + self.assert_syntax_error(""" + match ...: + case a | "a": + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_1(self): + self.assert_syntax_error(""" + match 42: + case x: + pass + case y: + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_2(self): + self.assert_syntax_error(""" + match ...: + case x | [_ as x] if x: + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_3(self): + self.assert_syntax_error(""" + match ...: + case x: + pass + case [x] if x: + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_4(self): + self.assert_syntax_error(""" + match ...: + case x: + pass + case _: + pass + """) + + def test_patterns_may_only_match_literals_and_attribute_lookups_0(self): + self.assert_syntax_error(""" + match ...: + case f"": + pass + """) + + def test_patterns_may_only_match_literals_and_attribute_lookups_1(self): + self.assert_syntax_error(""" + match ...: + case f"{x}": + pass + """) + + def test_real_number_required_in_complex_literal_0(self): self.assert_syntax_error(""" match ...: case 0j+0: pass """) - @no_perf - def test_patma_286(self): + def test_real_number_required_in_complex_literal_1(self): self.assert_syntax_error(""" match ...: case 0j+0j: pass """) - @no_perf - def test_patma_287(self): + def test_real_number_required_in_complex_literal_2(self): self.assert_syntax_error(""" match ...: case {0j+0: _}: pass """) - @no_perf - def test_patma_288(self): + def test_real_number_required_in_complex_literal_3(self): self.assert_syntax_error(""" match ...: case {0j+0j: _}: pass """) - def test_patma_289(self): - x = {"y": 1} - match x: - case {"y": (0 as y) | (1 as y)}: - z = 0 - self.assertEqual(x, {"y": 1}) - self.assertEqual(y, 1) - self.assertEqual(z, 0) + def test_wildcard_makes_remaining_patterns_unreachable_0(self): + self.assert_syntax_error(""" + match ...: + case _ | _: + pass + """) - @no_perf - def test_patma_290(self): + def test_wildcard_makes_remaining_patterns_unreachable_1(self): self.assert_syntax_error(""" match ...: - case [a, [b] | [c] | [d]]: + case (_ as x) | [x]: pass """) - @no_perf - def test_patma_291(self): - # Hunting for leaks using -R doesn't catch leaks in the compiler itself, - # just the code under test. This test ensures that if there are leaks in - # the pattern compiler, those runs will fail: - with open(__file__) as file: - compile(file.read(), __file__, "exec") + def test_wildcard_makes_remaining_patterns_unreachable_2(self): + self.assert_syntax_error(""" + match ...: + case _ | _ if condition(): + pass + """) - def test_patma_292(self): - def f(x): + def test_wildcard_makes_remaining_patterns_unreachable_3(self): + self.assert_syntax_error(""" + match ...: + case _: + pass + case None: + pass + """) + + def test_wildcard_makes_remaining_patterns_unreachable_4(self): + self.assert_syntax_error(""" + match ...: + case (None | _) | _: + pass + """) + + def test_wildcard_makes_remaining_patterns_unreachable_5(self): + self.assert_syntax_error(""" + match ...: + case _ | (True | False): + pass + """) + + +class TestTypeErrors(unittest.TestCase): + + def test_accepts_positional_subpatterns_0(self): + class Class: + __match_args__ = () + x = Class() + y = z = None + with self.assertRaises(TypeError): match x: - case ((a, b, c, d, e, f, g, h, i, 9) | - (h, g, i, a, b, d, e, c, f, 10) | - (g, b, a, c, d, -5, e, h, i, f) | - (-1, d, f, b, g, e, i, a, h, c)): + case Class(y): + z = 0 + self.assertIs(y, None) + self.assertIs(z, None) + + def test_accepts_positional_subpatterns_1(self): + x = range(10) + y = None + with self.assertRaises(TypeError): + match x: + case range(10): + y = 0 + self.assertEqual(x, range(10)) + self.assertIs(y, None) + + def test_got_multiple_subpatterns_for_attribute_0(self): + class Class: + __match_args__ = ("a", "a") + a = None + x = Class() + w = y = z = None + with self.assertRaises(TypeError): + match x: + case Class(y, z): w = 0 - out = locals() - del out["x"] - return out - alts = [ - dict(a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8, w=0), - dict(h=1, g=2, i=3, a=4, b=5, d=6, e=7, c=8, f=9, w=0), - dict(g=0, b=-1, a=-2, c=-3, d=-4, e=-6, h=-7, i=-8, f=-9, w=0), - dict(d=-2, f=-3, b=-4, g=-5, e=-6, i=-7, a=-8, h=-9, c=-10, w=0), - dict(), - ] - self.assertEqual(f(range(10)), alts[0]) - self.assertEqual(f(range(1, 11)), alts[1]) - self.assertEqual(f(range(0, -10, -1)), alts[2]) - self.assertEqual(f(range(-1, -11, -1)), alts[3]) - self.assertEqual(f(range(10, 20)), alts[4]) + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) - def test_patma_293(self): - def f(x): + def test_got_multiple_subpatterns_for_attribute_1(self): + class Class: + __match_args__ = ("a",) + a = None + x = Class() + w = y = z = None + with self.assertRaises(TypeError): match x: - case [y, (a, b, c, d, e, f, g, h, i, 9) | - (h, g, i, a, b, d, e, c, f, 10) | - (g, b, a, c, d, -5, e, h, i, f) | - (-1, d, f, b, g, e, i, a, h, c), z]: + case Class(y, a=z): w = 0 - out = locals() - del out["x"] - return out - alts = [ - dict(a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8, w=0, y=False, z=True), - dict(h=1, g=2, i=3, a=4, b=5, d=6, e=7, c=8, f=9, w=0, y=False, z=True), - dict(g=0, b=-1, a=-2, c=-3, d=-4, e=-6, h=-7, i=-8, f=-9, w=0, y=False, z=True), - dict(d=-2, f=-3, b=-4, g=-5, e=-6, i=-7, a=-8, h=-9, c=-10, w=0, y=False, z=True), - dict(), - ] - self.assertEqual(f((False, range(10), True)), alts[0]) - self.assertEqual(f((False, range(1, 11), True)), alts[1]) - self.assertEqual(f((False, range(0, -10, -1), True)), alts[2]) - self.assertEqual(f((False, range(-1, -11, -1), True)), alts[3]) - self.assertEqual(f((False, range(10, 20), True)), alts[4]) + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) + def test_match_args_elements_must_be_strings(self): + class Class: + __match_args__ = (None,) + x = Class() + y = z = None + with self.assertRaises(TypeError): + match x: + case Class(y): + z = 0 + self.assertIs(y, None) + self.assertIs(z, None) -class TestInheritance(unittest.TestCase): + def test_match_args_must_be_a_tuple_0(self): + class Class: + __match_args__ = None + x = Class() + y = z = None + with self.assertRaises(TypeError): + match x: + case Class(y): + z = 0 + self.assertIs(y, None) + self.assertIs(z, None) - def test_multiple_inheritance(self): - class C: - pass - class S1(collections.UserList, collections.abc.Mapping): - pass - class S2(C, collections.UserList, collections.abc.Mapping): - pass - class S3(list, C, collections.abc.Mapping): - pass - class S4(collections.UserList, dict, C): - pass - class M1(collections.UserDict, collections.abc.Sequence): - pass - class M2(C, collections.UserDict, collections.abc.Sequence): - pass - class M3(collections.UserDict, C, list): - pass - class M4(dict, collections.abc.Sequence, C): - pass - def f(x): + def test_match_args_must_be_a_tuple_1(self): + class Class: + __match_args__ = "XYZ" + x = Class() + y = z = None + with self.assertRaises(TypeError): match x: - case []: - return "seq" - case {}: - return "map" - def g(x): + case Class(y): + z = 0 + self.assertIs(y, None) + self.assertIs(z, None) + + def test_match_args_must_be_a_tuple_2(self): + class Class: + __match_args__ = ["spam", "eggs"] + spam = 0 + eggs = 1 + x = Class() + w = y = z = None + with self.assertRaises(TypeError): match x: - case {}: - return "map" - case []: - return "seq" - for Seq in (S1, S2, S3, S4): - self.assertEqual(f(Seq()), "seq") - self.assertEqual(g(Seq()), "seq") - for Map in (M1, M2, M3, M4): - self.assertEqual(f(Map()), "map") - self.assertEqual(g(Map()), "map") + case Class(y, z): + w = 0 + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) + + +class TestValueErrors(unittest.TestCase): + def test_mapping_pattern_checks_duplicate_key_0(self): + x = {"a": 0, "b": 1} + w = y = z = None + with self.assertRaises(ValueError): + match x: + case {"a": y, "a": z}: + w = 0 + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) -class PerfPatma(TestPatma): + def test_mapping_pattern_checks_duplicate_key_1(self): + class Keys: + KEY = "a" + x = {"a": 0, "b": 1} + w = y = z = None + with self.assertRaises(ValueError): + match x: + case {Keys.KEY: y, "a": z}: + w = 0 + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) - def assertEqual(*_, **__): - pass - def assertIs(*_, **__): - pass +if __name__ == "__main__": + """ + # From inside environment using this Python, with pyperf installed: + sudo $(which pyperf) system tune && \ + $(which python) -m test.test_patma --rigorous; \ + sudo $(which pyperf) system reset + """ + import pyperf - def assertRaises(*_, **__): - assert False, "this test should be decorated with @no_perf!" - def assertWarns(*_, **__): - assert False, "this test should be decorated with @no_perf!" + class PerfPatma(TestPatma): - def run_perf(self): - attrs = vars(TestPatma).items() - tests = [ - attr for name, attr in attrs - if name.startswith("test_") and not hasattr(attr, "no_perf") - ] - for _ in range(1 << 8): - for test in tests: - test(self) + def assertEqual(*_, **__): + pass + + def assertIs(*_, **__): + pass + + def assertRaises(*_, **__): + assert False, "this test should be a method of a different class!" - @staticmethod - def setUpClass(): - raise unittest.SkipTest("performance testing") + def run_perf(self, count): + tests = [] + for attr in vars(TestPatma): + if attr.startswith("test_"): + tests.append(getattr(self, attr)) + tests *= count + start = pyperf.perf_counter() + for test in tests: + test() + return pyperf.perf_counter() - start -""" -# From inside venv pointing to this Python, with pyperf installed: -sudo $(which python) -m pyperf system tune && \ - $(which python) -m pyperf timeit --rigorous --setup "from test.test_patma import PerfPatma; p = PerfPatma()" "p.run_perf()"; \ -sudo $(which python) -m pyperf system reset -""" + runner = pyperf.Runner() + runner.bench_time_func("patma", PerfPatma().run_perf) From webhook-mailer at python.org Fri Jun 18 13:48:25 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 18 Jun 2021 17:48:25 -0000 Subject: [Python-checkins] [3.10] Reorganize the pattern matching suite (GH-26661) (GH-26787) Message-ID: https://github.com/python/cpython/commit/bba726710b33a4f52b4a15fb5d94ee402e38d552 commit: bba726710b33a4f52b4a15fb5d94ee402e38d552 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-18T10:48:07-07:00 summary: [3.10] Reorganize the pattern matching suite (GH-26661) (GH-26787) (cherry picked from commit c106cf31f816f719de0a83ff31b9f4d0bea3519b) Co-authored-by: Brandt Bucher Automerge-Triggered-By: GH:brandtbucher files: M Lib/test/test_patma.py diff --git a/Lib/test/test_patma.py b/Lib/test/test_patma.py index 084d0879f1764..91b1f7e2aa4c7 100644 --- a/Lib/test/test_patma.py +++ b/Lib/test/test_patma.py @@ -1,23 +1,9 @@ import array import collections -import contextlib import dataclasses import enum import inspect import unittest -import warnings - - -def no_perf(f): - f.no_perf = None - return f - - - at dataclasses.dataclass -class MyClass: - x: int - y: str - __match_args__ = ("x", "y") @dataclasses.dataclass @@ -26,11 +12,58 @@ class Point: y: int -class TestPatma(unittest.TestCase): +class TestCompiler(unittest.TestCase): - def assert_syntax_error(self, code: str): - with self.assertRaises(SyntaxError): - compile(inspect.cleandoc(code), "", "exec") + def test_refleaks(self): + # Hunting for leaks using -R doesn't catch leaks in the compiler itself, + # just the code under test. This test ensures that if there are leaks in + # the pattern compiler, those runs will fail: + with open(__file__) as file: + compile(file.read(), __file__, "exec") + + +class TestInheritance(unittest.TestCase): + + def test_multiple_inheritance(self): + class C: + pass + class S1(collections.UserList, collections.abc.Mapping): + pass + class S2(C, collections.UserList, collections.abc.Mapping): + pass + class S3(list, C, collections.abc.Mapping): + pass + class S4(collections.UserList, dict, C): + pass + class M1(collections.UserDict, collections.abc.Sequence): + pass + class M2(C, collections.UserDict, collections.abc.Sequence): + pass + class M3(collections.UserDict, C, list): + pass + class M4(dict, collections.abc.Sequence, C): + pass + def f(x): + match x: + case []: + return "seq" + case {}: + return "map" + def g(x): + match x: + case {}: + return "map" + case []: + return "seq" + for Seq in (S1, S2, S3, S4): + self.assertEqual(f(Seq()), "seq") + self.assertEqual(g(Seq()), "seq") + for Map in (M1, M2, M3, M4): + self.assertEqual(f(Map()), "map") + self.assertEqual(g(Map()), "map") + + +class TestPatma(unittest.TestCase): def test_patma_000(self): match 0: @@ -1701,7 +1734,6 @@ def http_error(status): self.assertIs(http_error("400"), None) self.assertIs(http_error(401 | 403 | 404), None) # 407 - @no_perf def test_patma_176(self): def whereis(point): match point: @@ -1714,13 +1746,12 @@ def whereis(point): case (x, y): return f"X={x}, Y={y}" case _: - raise ValueError("Not a point") + return "Not a point" self.assertEqual(whereis((0, 0)), "Origin") self.assertEqual(whereis((0, -1.0)), "Y=-1.0") self.assertEqual(whereis(("X", 0)), "X=X") self.assertEqual(whereis((None, 1j)), "X=None, Y=1j") - with self.assertRaises(ValueError): - whereis(42) + self.assertEqual(whereis(42), "Not a point") def test_patma_177(self): def whereis(point): @@ -2179,11 +2210,11 @@ def f(w): def test_patma_212(self): def f(w): match w: - case MyClass(int(xx), y="hello"): + case Point(int(xx), y="hello"): out = locals() del out["w"] return out - self.assertEqual(f(MyClass(42, "hello")), {"xx": 42}) + self.assertEqual(f(Point(42, "hello")), {"xx": 42}) def test_patma_213(self): def f(w): @@ -2225,99 +2256,35 @@ def f(): return locals() self.assertEqual(set(f()), {"abc"}) - @no_perf def test_patma_218(self): - self.assert_syntax_error(""" - match ...: - case "a" | a: - pass - """) - - @no_perf - def test_patma_219(self): - self.assert_syntax_error(""" - match ...: - case a | "a": - pass - """) - - def test_patma_220(self): def f(): match ..., ...: case a, b: return locals() self.assertEqual(set(f()), {"a", "b"}) - @no_perf - def test_patma_221(self): - self.assert_syntax_error(""" - match ...: - case a, a: - pass - """) - - def test_patma_222(self): + def test_patma_219(self): def f(): match {"k": ..., "l": ...}: case {"k": a, "l": b}: return locals() self.assertEqual(set(f()), {"a", "b"}) - @no_perf - def test_patma_223(self): - self.assert_syntax_error(""" - match ...: - case {"k": a, "l": a}: - pass - """) - - def test_patma_224(self): + def test_patma_220(self): def f(): - match MyClass(..., ...): - case MyClass(x, y=y): + match Point(..., ...): + case Point(x, y=y): return locals() self.assertEqual(set(f()), {"x", "y"}) - @no_perf - def test_patma_225(self): - self.assert_syntax_error(""" - match ...: - case MyClass(x, x): - pass - """) - - @no_perf - def test_patma_226(self): - self.assert_syntax_error(""" - match ...: - case MyClass(x=x, y=x): - pass - """) - - @no_perf - def test_patma_227(self): - self.assert_syntax_error(""" - match ...: - case MyClass(x, y=x): - pass - """) - - def test_patma_228(self): + def test_patma_221(self): def f(): match ...: case b as a: return locals() self.assertEqual(set(f()), {"a", "b"}) - @no_perf - def test_patma_229(self): - self.assert_syntax_error(""" - match ...: - case a as a: - pass - """) - - def test_patma_230(self): + def test_patma_222(self): def f(x): match x: case _: @@ -2327,7 +2294,7 @@ def f(x): self.assertEqual(f(2), 0) self.assertEqual(f(3), 0) - def test_patma_231(self): + def test_patma_223(self): def f(x): match x: case 0: @@ -2337,7 +2304,7 @@ def f(x): self.assertIs(f(2), None) self.assertIs(f(3), None) - def test_patma_232(self): + def test_patma_224(self): def f(x): match x: case 0: @@ -2349,7 +2316,7 @@ def f(x): self.assertEqual(f(2), 1) self.assertEqual(f(3), 1) - def test_patma_233(self): + def test_patma_225(self): def f(x): match x: case 0: @@ -2361,7 +2328,7 @@ def f(x): self.assertIs(f(2), None) self.assertIs(f(3), None) - def test_patma_234(self): + def test_patma_226(self): def f(x): match x: case 0: @@ -2375,7 +2342,7 @@ def f(x): self.assertEqual(f(2), 2) self.assertEqual(f(3), 2) - def test_patma_235(self): + def test_patma_227(self): def f(x): match x: case 0: @@ -2389,275 +2356,77 @@ def f(x): self.assertEqual(f(2), 2) self.assertIs(f(3), None) - @no_perf - def test_patma_236(self): - self.assert_syntax_error(""" - match ...: - case {**rest, "key": value}: - pass - """) - - @no_perf - def test_patma_237(self): - self.assert_syntax_error(""" - match ...: - case {"first": first, **rest, "last": last}: - pass - """) + def test_patma_228(self): + match(): + case(): + x = 0 + self.assertEqual(x, 0) - @no_perf - def test_patma_238(self): - self.assert_syntax_error(""" - match ...: - case *a, b, *c, d, *e: - pass - """) + def test_patma_229(self): + x = 0 + match(x): + case(x): + y = 0 + self.assertEqual(x, 0) + self.assertEqual(y, 0) - @no_perf - def test_patma_239(self): - self.assert_syntax_error(""" - match ...: - case a, *b, c, *d, e: - pass - """) + def test_patma_230(self): + x = 0 + match x: + case False: + y = 0 + case 0: + y = 1 + self.assertEqual(x, 0) + self.assertEqual(y, 1) - @no_perf - def test_patma_240(self): - self.assert_syntax_error(""" - match ...: - case 0+0: - pass - """) + def test_patma_231(self): + x = 1 + match x: + case True: + y = 0 + case 1: + y = 1 + self.assertEqual(x, 1) + self.assertEqual(y, 1) - @no_perf - def test_patma_241(self): - self.assert_syntax_error(""" - match ...: - case f"": - pass - """) + def test_patma_232(self): + class Eq: + def __eq__(self, other): + return True + x = eq = Eq() + y = None + match x: + case None: + y = 0 + self.assertIs(x, eq) + self.assertEqual(y, None) - @no_perf - def test_patma_242(self): - self.assert_syntax_error(""" - match ...: - case f"{x}": - pass - """) + def test_patma_233(self): + x = False + match x: + case False: + y = 0 + self.assertIs(x, False) + self.assertEqual(y, 0) - @no_perf - def test_patma_243(self): - self.assert_syntax_error(""" - match 42: - case x: - pass - case y: - pass - """) + def test_patma_234(self): + x = True + match x: + case True: + y = 0 + self.assertIs(x, True) + self.assertEqual(y, 0) - @no_perf - def test_patma_244(self): - self.assert_syntax_error(""" - match ...: - case {**_}: - pass - """) + def test_patma_235(self): + x = None + match x: + case None: + y = 0 + self.assertIs(x, None) + self.assertEqual(y, 0) - @no_perf - def test_patma_245(self): - self.assert_syntax_error(""" - match ...: - case 42 as _: - pass - """) - - @no_perf - def test_patma_246(self): - class Class: - __match_args__ = None - x = Class() - y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y): - z = 0 - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_247(self): - class Class: - __match_args__ = "XYZ" - x = Class() - y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y): - z = 0 - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_248(self): - class Class: - __match_args__ = (None,) - x = Class() - y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y): - z = 0 - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_249(self): - class Class: - __match_args__ = () - x = Class() - y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y): - z = 0 - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_250(self): - self.assert_syntax_error(""" - match ...: - case Class(a=_, a=_): - pass - """) - - @no_perf - def test_patma_251(self): - x = {"a": 0, "b": 1} - w = y = z = None - with self.assertRaises(ValueError): - match x: - case {"a": y, "a": z}: - w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_252(self): - class Keys: - KEY = "a" - x = {"a": 0, "b": 1} - w = y = z = None - with self.assertRaises(ValueError): - match x: - case {Keys.KEY: y, "a": z}: - w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_253(self): - class Class: - __match_args__ = ("a", "a") - a = None - x = Class() - w = y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y, z): - w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) - - @no_perf - def test_patma_254(self): - class Class: - __match_args__ = ("a",) - a = None - x = Class() - w = y = z = None - with self.assertRaises(TypeError): - match x: - case Class(y, a=z): - w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) - - def test_patma_255(self): - match(): - case(): - x = 0 - self.assertEqual(x, 0) - - def test_patma_256(self): - x = 0 - match(x): - case(x): - y = 0 - self.assertEqual(x, 0) - self.assertEqual(y, 0) - - def test_patma_257(self): - x = 0 - match x: - case False: - y = 0 - case 0: - y = 1 - self.assertEqual(x, 0) - self.assertEqual(y, 1) - - def test_patma_258(self): - x = 1 - match x: - case True: - y = 0 - case 1: - y = 1 - self.assertEqual(x, 1) - self.assertEqual(y, 1) - - def test_patma_259(self): - class Eq: - def __eq__(self, other): - return True - x = eq = Eq() - y = None - match x: - case None: - y = 0 - self.assertIs(x, eq) - self.assertEqual(y, None) - - def test_patma_260(self): - x = False - match x: - case False: - y = 0 - self.assertIs(x, False) - self.assertEqual(y, 0) - - def test_patma_261(self): - x = True - match x: - case True: - y = 0 - self.assertIs(x, True) - self.assertEqual(y, 0) - - def test_patma_262(self): - x = None - match x: - case None: - y = 0 - self.assertIs(x, None) - self.assertEqual(y, 0) - - def test_patma_263(self): + def test_patma_236(self): x = 0 match x: case (0 as w) as z: @@ -2667,7 +2436,7 @@ def test_patma_263(self): self.assertEqual(y, 0) self.assertEqual(z, 0) - def test_patma_264(self): + def test_patma_237(self): x = 0 match x: case (0 as w) as z: @@ -2677,7 +2446,7 @@ def test_patma_264(self): self.assertEqual(y, 0) self.assertEqual(z, 0) - def test_patma_265(self): + def test_patma_238(self): x = ((0, 1), (2, 3)) match x: case ((a as b, c as d) as e) as w, ((f as g, h) as i) as z: @@ -2696,87 +2465,7 @@ def test_patma_265(self): self.assertEqual(y, 0) self.assertEqual(z, (2, 3)) - @no_perf - def test_patma_266(self): - self.assert_syntax_error(""" - match ...: - case _ | _: - pass - """) - - @no_perf - def test_patma_267(self): - self.assert_syntax_error(""" - match ...: - case (_ as x) | [x]: - pass - """) - - - @no_perf - def test_patma_268(self): - self.assert_syntax_error(""" - match ...: - case _ | _ if condition(): - pass - """) - - - @no_perf - def test_patma_269(self): - self.assert_syntax_error(""" - match ...: - case x | [_ as x] if x: - pass - """) - - @no_perf - def test_patma_270(self): - self.assert_syntax_error(""" - match ...: - case _: - pass - case None: - pass - """) - - @no_perf - def test_patma_271(self): - self.assert_syntax_error(""" - match ...: - case x: - pass - case [x] if x: - pass - """) - - @no_perf - def test_patma_272(self): - self.assert_syntax_error(""" - match ...: - case x: - pass - case _: - pass - """) - - @no_perf - def test_patma_273(self): - self.assert_syntax_error(""" - match ...: - case (None | _) | _: - pass - """) - - @no_perf - def test_patma_274(self): - self.assert_syntax_error(""" - match ...: - case _ | (True | False): - pass - """) - - def test_patma_275(self): + def test_patma_239(self): x = collections.UserDict({0: 1, 2: 3}) match x: case {2: 3}: @@ -2784,7 +2473,7 @@ def test_patma_275(self): self.assertEqual(x, {0: 1, 2: 3}) self.assertEqual(y, 0) - def test_patma_276(self): + def test_patma_240(self): x = collections.UserDict({0: 1, 2: 3}) match x: case {2: 3, **z}: @@ -2793,7 +2482,7 @@ def test_patma_276(self): self.assertEqual(y, 0) self.assertEqual(z, {0: 1}) - def test_patma_277(self): + def test_patma_241(self): x = [[{0: 0}]] match x: case list([({-0-0j: int(real=0+0j, imag=0-0j) | (1) as z},)]): @@ -2802,7 +2491,7 @@ def test_patma_277(self): self.assertEqual(y, 0) self.assertEqual(z, 0) - def test_patma_278(self): + def test_patma_242(self): x = range(3) match x: case [y, *_, z]: @@ -2812,7 +2501,7 @@ def test_patma_278(self): self.assertEqual(y, 0) self.assertEqual(z, 2) - def test_patma_279(self): + def test_patma_243(self): x = range(3) match x: case [_, *_, y]: @@ -2821,7 +2510,7 @@ def test_patma_279(self): self.assertEqual(y, 2) self.assertEqual(z, 0) - def test_patma_280(self): + def test_patma_244(self): x = range(3) match x: case [*_, y]: @@ -2830,228 +2519,488 @@ def test_patma_280(self): self.assertEqual(y, 2) self.assertEqual(z, 0) - @no_perf - def test_patma_281(self): - x = range(10) - y = None - with self.assertRaises(TypeError): - match x: - case range(10): - y = 0 - self.assertEqual(x, range(10)) - self.assertIs(y, None) + def test_patma_245(self): + x = {"y": 1} + match x: + case {"y": (0 as y) | (1 as y)}: + z = 0 + self.assertEqual(x, {"y": 1}) + self.assertEqual(y, 1) + self.assertEqual(z, 0) - @no_perf - def test_patma_282(self): - class Class: - __match_args__ = ["spam", "eggs"] - spam = 0 - eggs = 1 - x = Class() - w = y = z = None - with self.assertRaises(TypeError): + def test_patma_246(self): + def f(x): match x: - case Class(y, z): + case ((a, b, c, d, e, f, g, h, i, 9) | + (h, g, i, a, b, d, e, c, f, 10) | + (g, b, a, c, d, -5, e, h, i, f) | + (-1, d, f, b, g, e, i, a, h, c)): w = 0 - self.assertIs(w, None) - self.assertIs(y, None) - self.assertIs(z, None) + out = locals() + del out["x"] + return out + alts = [ + dict(a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8, w=0), + dict(h=1, g=2, i=3, a=4, b=5, d=6, e=7, c=8, f=9, w=0), + dict(g=0, b=-1, a=-2, c=-3, d=-4, e=-6, h=-7, i=-8, f=-9, w=0), + dict(d=-2, f=-3, b=-4, g=-5, e=-6, i=-7, a=-8, h=-9, c=-10, w=0), + dict(), + ] + self.assertEqual(f(range(10)), alts[0]) + self.assertEqual(f(range(1, 11)), alts[1]) + self.assertEqual(f(range(0, -10, -1)), alts[2]) + self.assertEqual(f(range(-1, -11, -1)), alts[3]) + self.assertEqual(f(range(10, 20)), alts[4]) + + def test_patma_247(self): + def f(x): + match x: + case [y, (a, b, c, d, e, f, g, h, i, 9) | + (h, g, i, a, b, d, e, c, f, 10) | + (g, b, a, c, d, -5, e, h, i, f) | + (-1, d, f, b, g, e, i, a, h, c), z]: + w = 0 + out = locals() + del out["x"] + return out + alts = [ + dict(a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8, w=0, y=False, z=True), + dict(h=1, g=2, i=3, a=4, b=5, d=6, e=7, c=8, f=9, w=0, y=False, z=True), + dict(g=0, b=-1, a=-2, c=-3, d=-4, e=-6, h=-7, i=-8, f=-9, w=0, y=False, z=True), + dict(d=-2, f=-3, b=-4, g=-5, e=-6, i=-7, a=-8, h=-9, c=-10, w=0, y=False, z=True), + dict(), + ] + self.assertEqual(f((False, range(10), True)), alts[0]) + self.assertEqual(f((False, range(1, 11), True)), alts[1]) + self.assertEqual(f((False, range(0, -10, -1), True)), alts[2]) + self.assertEqual(f((False, range(-1, -11, -1), True)), alts[3]) + self.assertEqual(f((False, range(10, 20), True)), alts[4]) - @no_perf - def test_patma_283(self): + +class TestSyntaxErrors(unittest.TestCase): + + def assert_syntax_error(self, code: str): + with self.assertRaises(SyntaxError): + compile(inspect.cleandoc(code), "", "exec") + + def test_alternative_patterns_bind_different_names_0(self): + self.assert_syntax_error(""" + match ...: + case "a" | a: + pass + """) + + def test_alternative_patterns_bind_different_names_1(self): + self.assert_syntax_error(""" + match ...: + case [a, [b] | [c] | [d]]: + pass + """) + + + def test_attribute_name_repeated_in_class_pattern(self): + self.assert_syntax_error(""" + match ...: + case Class(a=_, a=_): + pass + """) + + def test_imaginary_number_required_in_complex_literal_0(self): + self.assert_syntax_error(""" + match ...: + case 0+0: + pass + """) + + def test_imaginary_number_required_in_complex_literal_1(self): self.assert_syntax_error(""" match ...: case {0+0: _}: pass """) - @no_perf - def test_patma_284(self): + def test_invalid_syntax_0(self): + self.assert_syntax_error(""" + match ...: + case {**rest, "key": value}: + pass + """) + + def test_invalid_syntax_1(self): + self.assert_syntax_error(""" + match ...: + case {"first": first, **rest, "last": last}: + pass + """) + + def test_invalid_syntax_2(self): + self.assert_syntax_error(""" + match ...: + case {**_}: + pass + """) + + def test_invalid_syntax_3(self): + self.assert_syntax_error(""" + match ...: + case 42 as _: + pass + """) + + def test_mapping_pattern_keys_may_only_match_literals_and_attribute_lookups(self): self.assert_syntax_error(""" match ...: case {f"": _}: pass """) - @no_perf - def test_patma_285(self): + def test_multiple_assignments_to_name_in_pattern_0(self): + self.assert_syntax_error(""" + match ...: + case a, a: + pass + """) + + def test_multiple_assignments_to_name_in_pattern_1(self): + self.assert_syntax_error(""" + match ...: + case {"k": a, "l": a}: + pass + """) + + def test_multiple_assignments_to_name_in_pattern_2(self): + self.assert_syntax_error(""" + match ...: + case MyClass(x, x): + pass + """) + + def test_multiple_assignments_to_name_in_pattern_3(self): + self.assert_syntax_error(""" + match ...: + case MyClass(x=x, y=x): + pass + """) + + def test_multiple_assignments_to_name_in_pattern_4(self): + self.assert_syntax_error(""" + match ...: + case MyClass(x, y=x): + pass + """) + + def test_multiple_assignments_to_name_in_pattern_5(self): + self.assert_syntax_error(""" + match ...: + case a as a: + pass + """) + + def test_multiple_starred_names_in_sequence_pattern_0(self): + self.assert_syntax_error(""" + match ...: + case *a, b, *c, d, *e: + pass + """) + + def test_multiple_starred_names_in_sequence_pattern_1(self): + self.assert_syntax_error(""" + match ...: + case a, *b, c, *d, e: + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_0(self): + self.assert_syntax_error(""" + match ...: + case a | "a": + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_1(self): + self.assert_syntax_error(""" + match 42: + case x: + pass + case y: + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_2(self): + self.assert_syntax_error(""" + match ...: + case x | [_ as x] if x: + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_3(self): + self.assert_syntax_error(""" + match ...: + case x: + pass + case [x] if x: + pass + """) + + def test_name_capture_makes_remaining_patterns_unreachable_4(self): + self.assert_syntax_error(""" + match ...: + case x: + pass + case _: + pass + """) + + def test_patterns_may_only_match_literals_and_attribute_lookups_0(self): + self.assert_syntax_error(""" + match ...: + case f"": + pass + """) + + def test_patterns_may_only_match_literals_and_attribute_lookups_1(self): + self.assert_syntax_error(""" + match ...: + case f"{x}": + pass + """) + + def test_real_number_required_in_complex_literal_0(self): self.assert_syntax_error(""" match ...: case 0j+0: pass """) - @no_perf - def test_patma_286(self): + def test_real_number_required_in_complex_literal_1(self): self.assert_syntax_error(""" match ...: case 0j+0j: pass """) - @no_perf - def test_patma_287(self): + def test_real_number_required_in_complex_literal_2(self): self.assert_syntax_error(""" match ...: case {0j+0: _}: pass """) - @no_perf - def test_patma_288(self): + def test_real_number_required_in_complex_literal_3(self): self.assert_syntax_error(""" match ...: case {0j+0j: _}: pass """) - def test_patma_289(self): - x = {"y": 1} - match x: - case {"y": (0 as y) | (1 as y)}: - z = 0 - self.assertEqual(x, {"y": 1}) - self.assertEqual(y, 1) - self.assertEqual(z, 0) + def test_wildcard_makes_remaining_patterns_unreachable_0(self): + self.assert_syntax_error(""" + match ...: + case _ | _: + pass + """) - @no_perf - def test_patma_290(self): + def test_wildcard_makes_remaining_patterns_unreachable_1(self): self.assert_syntax_error(""" match ...: - case [a, [b] | [c] | [d]]: + case (_ as x) | [x]: pass """) - @no_perf - def test_patma_291(self): - # Hunting for leaks using -R doesn't catch leaks in the compiler itself, - # just the code under test. This test ensures that if there are leaks in - # the pattern compiler, those runs will fail: - with open(__file__) as file: - compile(file.read(), __file__, "exec") + def test_wildcard_makes_remaining_patterns_unreachable_2(self): + self.assert_syntax_error(""" + match ...: + case _ | _ if condition(): + pass + """) - def test_patma_292(self): - def f(x): + def test_wildcard_makes_remaining_patterns_unreachable_3(self): + self.assert_syntax_error(""" + match ...: + case _: + pass + case None: + pass + """) + + def test_wildcard_makes_remaining_patterns_unreachable_4(self): + self.assert_syntax_error(""" + match ...: + case (None | _) | _: + pass + """) + + def test_wildcard_makes_remaining_patterns_unreachable_5(self): + self.assert_syntax_error(""" + match ...: + case _ | (True | False): + pass + """) + + +class TestTypeErrors(unittest.TestCase): + + def test_accepts_positional_subpatterns_0(self): + class Class: + __match_args__ = () + x = Class() + y = z = None + with self.assertRaises(TypeError): match x: - case ((a, b, c, d, e, f, g, h, i, 9) | - (h, g, i, a, b, d, e, c, f, 10) | - (g, b, a, c, d, -5, e, h, i, f) | - (-1, d, f, b, g, e, i, a, h, c)): + case Class(y): + z = 0 + self.assertIs(y, None) + self.assertIs(z, None) + + def test_accepts_positional_subpatterns_1(self): + x = range(10) + y = None + with self.assertRaises(TypeError): + match x: + case range(10): + y = 0 + self.assertEqual(x, range(10)) + self.assertIs(y, None) + + def test_got_multiple_subpatterns_for_attribute_0(self): + class Class: + __match_args__ = ("a", "a") + a = None + x = Class() + w = y = z = None + with self.assertRaises(TypeError): + match x: + case Class(y, z): w = 0 - out = locals() - del out["x"] - return out - alts = [ - dict(a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8, w=0), - dict(h=1, g=2, i=3, a=4, b=5, d=6, e=7, c=8, f=9, w=0), - dict(g=0, b=-1, a=-2, c=-3, d=-4, e=-6, h=-7, i=-8, f=-9, w=0), - dict(d=-2, f=-3, b=-4, g=-5, e=-6, i=-7, a=-8, h=-9, c=-10, w=0), - dict(), - ] - self.assertEqual(f(range(10)), alts[0]) - self.assertEqual(f(range(1, 11)), alts[1]) - self.assertEqual(f(range(0, -10, -1)), alts[2]) - self.assertEqual(f(range(-1, -11, -1)), alts[3]) - self.assertEqual(f(range(10, 20)), alts[4]) + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) - def test_patma_293(self): - def f(x): + def test_got_multiple_subpatterns_for_attribute_1(self): + class Class: + __match_args__ = ("a",) + a = None + x = Class() + w = y = z = None + with self.assertRaises(TypeError): match x: - case [y, (a, b, c, d, e, f, g, h, i, 9) | - (h, g, i, a, b, d, e, c, f, 10) | - (g, b, a, c, d, -5, e, h, i, f) | - (-1, d, f, b, g, e, i, a, h, c), z]: + case Class(y, a=z): w = 0 - out = locals() - del out["x"] - return out - alts = [ - dict(a=0, b=1, c=2, d=3, e=4, f=5, g=6, h=7, i=8, w=0, y=False, z=True), - dict(h=1, g=2, i=3, a=4, b=5, d=6, e=7, c=8, f=9, w=0, y=False, z=True), - dict(g=0, b=-1, a=-2, c=-3, d=-4, e=-6, h=-7, i=-8, f=-9, w=0, y=False, z=True), - dict(d=-2, f=-3, b=-4, g=-5, e=-6, i=-7, a=-8, h=-9, c=-10, w=0, y=False, z=True), - dict(), - ] - self.assertEqual(f((False, range(10), True)), alts[0]) - self.assertEqual(f((False, range(1, 11), True)), alts[1]) - self.assertEqual(f((False, range(0, -10, -1), True)), alts[2]) - self.assertEqual(f((False, range(-1, -11, -1), True)), alts[3]) - self.assertEqual(f((False, range(10, 20), True)), alts[4]) + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) + def test_match_args_elements_must_be_strings(self): + class Class: + __match_args__ = (None,) + x = Class() + y = z = None + with self.assertRaises(TypeError): + match x: + case Class(y): + z = 0 + self.assertIs(y, None) + self.assertIs(z, None) -class TestInheritance(unittest.TestCase): + def test_match_args_must_be_a_tuple_0(self): + class Class: + __match_args__ = None + x = Class() + y = z = None + with self.assertRaises(TypeError): + match x: + case Class(y): + z = 0 + self.assertIs(y, None) + self.assertIs(z, None) - def test_multiple_inheritance(self): - class C: - pass - class S1(collections.UserList, collections.abc.Mapping): - pass - class S2(C, collections.UserList, collections.abc.Mapping): - pass - class S3(list, C, collections.abc.Mapping): - pass - class S4(collections.UserList, dict, C): - pass - class M1(collections.UserDict, collections.abc.Sequence): - pass - class M2(C, collections.UserDict, collections.abc.Sequence): - pass - class M3(collections.UserDict, C, list): - pass - class M4(dict, collections.abc.Sequence, C): - pass - def f(x): + def test_match_args_must_be_a_tuple_1(self): + class Class: + __match_args__ = "XYZ" + x = Class() + y = z = None + with self.assertRaises(TypeError): match x: - case []: - return "seq" - case {}: - return "map" - def g(x): + case Class(y): + z = 0 + self.assertIs(y, None) + self.assertIs(z, None) + + def test_match_args_must_be_a_tuple_2(self): + class Class: + __match_args__ = ["spam", "eggs"] + spam = 0 + eggs = 1 + x = Class() + w = y = z = None + with self.assertRaises(TypeError): match x: - case {}: - return "map" - case []: - return "seq" - for Seq in (S1, S2, S3, S4): - self.assertEqual(f(Seq()), "seq") - self.assertEqual(g(Seq()), "seq") - for Map in (M1, M2, M3, M4): - self.assertEqual(f(Map()), "map") - self.assertEqual(g(Map()), "map") + case Class(y, z): + w = 0 + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) + + +class TestValueErrors(unittest.TestCase): + def test_mapping_pattern_checks_duplicate_key_0(self): + x = {"a": 0, "b": 1} + w = y = z = None + with self.assertRaises(ValueError): + match x: + case {"a": y, "a": z}: + w = 0 + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) -class PerfPatma(TestPatma): + def test_mapping_pattern_checks_duplicate_key_1(self): + class Keys: + KEY = "a" + x = {"a": 0, "b": 1} + w = y = z = None + with self.assertRaises(ValueError): + match x: + case {Keys.KEY: y, "a": z}: + w = 0 + self.assertIs(w, None) + self.assertIs(y, None) + self.assertIs(z, None) - def assertEqual(*_, **__): - pass - def assertIs(*_, **__): - pass +if __name__ == "__main__": + """ + # From inside environment using this Python, with pyperf installed: + sudo $(which pyperf) system tune && \ + $(which python) -m test.test_patma --rigorous; \ + sudo $(which pyperf) system reset + """ + import pyperf - def assertRaises(*_, **__): - assert False, "this test should be decorated with @no_perf!" - def assertWarns(*_, **__): - assert False, "this test should be decorated with @no_perf!" + class PerfPatma(TestPatma): - def run_perf(self): - attrs = vars(TestPatma).items() - tests = [ - attr for name, attr in attrs - if name.startswith("test_") and not hasattr(attr, "no_perf") - ] - for _ in range(1 << 8): - for test in tests: - test(self) + def assertEqual(*_, **__): + pass + + def assertIs(*_, **__): + pass + + def assertRaises(*_, **__): + assert False, "this test should be a method of a different class!" - @staticmethod - def setUpClass(): - raise unittest.SkipTest("performance testing") + def run_perf(self, count): + tests = [] + for attr in vars(TestPatma): + if attr.startswith("test_"): + tests.append(getattr(self, attr)) + tests *= count + start = pyperf.perf_counter() + for test in tests: + test() + return pyperf.perf_counter() - start -""" -# From inside venv pointing to this Python, with pyperf installed: -sudo $(which python) -m pyperf system tune && \ - $(which python) -m pyperf timeit --rigorous --setup "from test.test_patma import PerfPatma; p = PerfPatma()" "p.run_perf()"; \ -sudo $(which python) -m pyperf system reset -""" + runner = pyperf.Runner() + runner.bench_time_func("patma", PerfPatma().run_perf) From webhook-mailer at python.org Fri Jun 18 16:02:54 2021 From: webhook-mailer at python.org (jaraco) Date: Fri, 18 Jun 2021 20:02:54 -0000 Subject: [Python-checkins] bpo-44451: Reset DeprecationWarning filters in test_importlib.test_entry_points_by_index (GH-26784) Message-ID: https://github.com/python/cpython/commit/df1502e47fc1e0cf1e7d460ae04530c3e2e4a7c6 commit: df1502e47fc1e0cf1e7d460ae04530c3e2e4a7c6 branch: main author: Miro Hron?ok committer: jaraco date: 2021-06-18T16:02:45-04:00 summary: bpo-44451: Reset DeprecationWarning filters in test_importlib.test_entry_points_by_index (GH-26784) This avoids the following error if DeprecationWarnings are ignored. ====================================================================== ERROR: test_entry_points_by_index (test.test_importlib.test_metadata_api.APITests) Prior versions of Distribution.entry_points would return a ---------------------------------------------------------------------- Traceback (most recent call last): File "/builddir/build/BUILD/Python-3.10.0b3/Lib/test/test_importlib/test_metadata_api.py", line 145, in test_entry_points_by_index expected = next(iter(caught)) StopIteration ---------------------------------------------------------------------- Ran 1402 tests in 2.125s FAILED (errors=1, skipped=18, expected failures=1) files: A Misc/NEWS.d/next/Tests/2021-06-18-15-19-35.bpo-44451.aj5pqE.rst M Lib/test/test_importlib/test_metadata_api.py diff --git a/Lib/test/test_importlib/test_metadata_api.py b/Lib/test/test_importlib/test_metadata_api.py index 3506493463d82e..2bfc44b18eedb4 100644 --- a/Lib/test/test_importlib/test_metadata_api.py +++ b/Lib/test/test_importlib/test_metadata_api.py @@ -139,6 +139,7 @@ def test_entry_points_by_index(self): """ eps = distribution('distinfo-pkg').entry_points with warnings.catch_warnings(record=True) as caught: + warnings.filterwarnings("default", category=DeprecationWarning) eps[0] # check warning diff --git a/Misc/NEWS.d/next/Tests/2021-06-18-15-19-35.bpo-44451.aj5pqE.rst b/Misc/NEWS.d/next/Tests/2021-06-18-15-19-35.bpo-44451.aj5pqE.rst new file mode 100644 index 00000000000000..0f635cfe18d141 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-18-15-19-35.bpo-44451.aj5pqE.rst @@ -0,0 +1,3 @@ +Reset ``DeprecationWarning`` filters in +``test.test_importlib.test_metadata_api.APITests.test_entry_points_by_index`` +to avoid ``StopIteration`` error if ``DeprecationWarnings`` are ignored. From webhook-mailer at python.org Fri Jun 18 16:15:55 2021 From: webhook-mailer at python.org (ethanfurman) Date: Fri, 18 Jun 2021 20:15:55 -0000 Subject: [Python-checkins] bpo-43945: [Enum] reduce scope of new format() behavior (GH-26752) Message-ID: https://github.com/python/cpython/commit/f60b07ab6c943fce084772c3c7731ab3bbd213ff commit: f60b07ab6c943fce084772c3c7731ab3bbd213ff branch: main author: Ethan Furman committer: ethanfurman date: 2021-06-18T13:15:46-07:00 summary: bpo-43945: [Enum] reduce scope of new format() behavior (GH-26752) * [Enum] reduce scope of new format behavior Instead of treating all Enums the same for format(), only user mixed-in enums will be affected. In other words, IntEnum and IntFlag will not be changing the format() behavior, due to the requirement that they be drop-in replacements of existing integer constants. If a user creates their own integer-based enum, then the new behavior will apply: class Grades(int, Enum): A = 5 B = 4 C = 3 D = 2 F = 0 Now: format(Grades.B) -> DeprecationWarning and '4' 3.12: -> no warning, and 'B' files: M Doc/library/enum.rst M Lib/asyncio/unix_events.py M Lib/enum.py M Lib/test/test_enum.py M Lib/test/test_httpservers.py diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index d53e3405e531f..89ce94b9f048c 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -22,7 +22,7 @@ * :ref:`Advanced Tutorial ` * :ref:`Enum Cookbook ` ----------------- +--------------- An enumeration: @@ -58,6 +58,7 @@ are not normal Python classes. See :attr:`Color.RED` is ``RED``, the value of :attr:`Color.BLUE` is ``3``, etc.) +--------------- Module Contents --------------- @@ -73,12 +74,12 @@ Module Contents :class:`IntEnum` Base class for creating enumerated constants that are also - subclasses of :class:`int`. + subclasses of :class:`int`. (`Notes`_) :class:`StrEnum` Base class for creating enumerated constants that are also - subclasses of :class:`str`. + subclasses of :class:`str`. (`Notes`_) :class:`Flag` @@ -89,7 +90,7 @@ Module Contents Base class for creating enumerated constants that can be combined using the bitwise operators without losing their :class:`IntFlag` membership. - :class:`IntFlag` members are also subclasses of :class:`int`. + :class:`IntFlag` members are also subclasses of :class:`int`. (`Notes`_) :class:`EnumCheck` @@ -132,6 +133,7 @@ Module Contents .. versionadded:: 3.6 ``Flag``, ``IntFlag``, ``auto`` .. versionadded:: 3.10 ``StrEnum``, ``EnumCheck``, ``FlagBoundary`` +--------------- Data Types ---------- @@ -647,6 +649,7 @@ Data Types .. versionadded:: 3.10 +--------------- Utilites and Decorators ----------------------- @@ -710,3 +713,25 @@ Utilites and Decorators on the decorated enumeration. .. versionadded:: 3.10 + +--------------- + +Notes +----- + +:class:`IntEnum`, :class:`StrEnum`, and :class:`IntFlag` + + These three enum types are designed to be drop-in replacements for existing + integer- and string-based values; as such, they have extra limitations: + + - ``format()`` will use the value of the enum member, unless ``__str__`` + has been overridden + + - ``StrEnum.__str__`` uses the value and not the name of the enum member + + If you do not need/want those limitations, you can create your own base + class by mixing in the ``int`` or ``str`` type yourself:: + + >>> from enum import Enum + >>> class MyIntEnum(int, Enum): + ... pass diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index a55b3a375fa22..e4f445e95026b 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -126,7 +126,7 @@ def add_signal_handler(self, sig, callback, *args): logger.info('set_wakeup_fd(-1) failed: %s', nexc) if exc.errno == errno.EINVAL: - raise RuntimeError(f'sig {sig:d} cannot be caught') + raise RuntimeError(f'sig {sig} cannot be caught') else: raise @@ -160,7 +160,7 @@ def remove_signal_handler(self, sig): signal.signal(sig, handler) except OSError as exc: if exc.errno == errno.EINVAL: - raise RuntimeError(f'sig {sig:d} cannot be caught') + raise RuntimeError(f'sig {sig} cannot be caught') else: raise diff --git a/Lib/enum.py b/Lib/enum.py index 90777988dd041..84e3cc17bbc53 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -993,9 +993,9 @@ def __format__(self, format_spec): # mixed-in Enums should use the mixed-in type's __format__, otherwise # we can get strange results with the Enum name showing up instead of # the value - + # # pure Enum branch, or branch with __str__ explicitly overridden - str_overridden = type(self).__str__ not in (Enum.__str__, Flag.__str__) + str_overridden = type(self).__str__ not in (Enum.__str__, IntEnum.__str__, Flag.__str__) if self._member_type_ is object or str_overridden: cls = str val = str(self) @@ -1005,7 +1005,7 @@ def __format__(self, format_spec): import warnings warnings.warn( "in 3.12 format() will use the enum member, not the enum member's value;\n" - "use a format specifier, such as :d for an IntEnum member, to maintain " + "use a format specifier, such as :d for an integer-based Enum, to maintain " "the current display", DeprecationWarning, stacklevel=2, @@ -1044,6 +1044,22 @@ class IntEnum(int, Enum): Enum where members are also (and must be) ints """ + def __str__(self): + return "%s" % (self._name_, ) + + def __format__(self, format_spec): + """ + Returns format using actual value unless __str__ has been overridden. + """ + str_overridden = type(self).__str__ != IntEnum.__str__ + if str_overridden: + cls = str + val = str(self) + else: + cls = self._member_type_ + val = self._value_ + return cls.__format__(val, format_spec) + class StrEnum(str, Enum): """ @@ -1072,6 +1088,8 @@ def __new__(cls, *values): __str__ = str.__str__ + __format__ = str.__format__ + def _generate_next_value_(name, start, count, last_values): """ Return the lower-cased version of the member name. @@ -1300,6 +1318,16 @@ class IntFlag(int, Flag, boundary=EJECT): Support for integer-based Flags """ + def __format__(self, format_spec): + """ + Returns format using actual value unless __str__ has been overridden. + """ + str_overridden = type(self).__str__ != Flag.__str__ + value = self + if not str_overridden: + value = self._value_ + return int.__format__(value, format_spec) + def __or__(self, other): if isinstance(other, self.__class__): other = other._value_ diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index c4c458e6bfc4e..0267ff5684c0d 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -557,16 +557,27 @@ def __format__(self, spec): 'mixin-format is still using member.value', ) def test_mixin_format_warning(self): - with self.assertWarns(DeprecationWarning): - self.assertEqual(f'{self.Grades.B}', 'Grades.B') + class Grades(int, Enum): + A = 5 + B = 4 + C = 3 + D = 2 + F = 0 + self.assertEqual(f'{self.Grades.B}', 'B') @unittest.skipIf( python_version >= (3, 12), 'mixin-format now uses member instead of member.value', ) def test_mixin_format_warning(self): + class Grades(int, Enum): + A = 5 + B = 4 + C = 3 + D = 2 + F = 0 with self.assertWarns(DeprecationWarning): - self.assertEqual(f'{self.Grades.B}', '4') + self.assertEqual(f'{Grades.B}', '4') def assertFormatIsValue(self, spec, member): if python_version < (3, 12) and (not spec or spec in ('{}','{:}')): @@ -599,7 +610,12 @@ def test_format_enum_float(self): self.assertFormatIsValue('{:f}', Konstants.TAU) def test_format_enum_int(self): - Grades = self.Grades + class Grades(int, Enum): + A = 5 + B = 4 + C = 3 + D = 2 + F = 0 self.assertFormatIsValue('{}', Grades.C) self.assertFormatIsValue('{:}', Grades.C) self.assertFormatIsValue('{:20}', Grades.C) @@ -2236,8 +2252,10 @@ class GoodStrEnum(StrEnum): four = b'4', 'latin1', 'strict' self.assertEqual(GoodStrEnum.one, '1') self.assertEqual(str(GoodStrEnum.one), '1') + self.assertEqual('{}'.format(GoodStrEnum.one), '1') self.assertEqual(GoodStrEnum.one, str(GoodStrEnum.one)) self.assertEqual(GoodStrEnum.one, '{}'.format(GoodStrEnum.one)) + self.assertEqual(repr(GoodStrEnum.one), 'GoodStrEnum.one') # class DumbMixin: def __str__(self): @@ -2287,6 +2305,132 @@ class ThirdFailedStrEnum(StrEnum): one = '1' two = b'2', 'ascii', 9 + @unittest.skipIf( + python_version >= (3, 12), + 'mixin-format now uses member instead of member.value', + ) + def test_custom_strenum_with_warning(self): + class CustomStrEnum(str, Enum): + pass + class OkayEnum(CustomStrEnum): + one = '1' + two = '2' + three = b'3', 'ascii' + four = b'4', 'latin1', 'strict' + self.assertEqual(OkayEnum.one, '1') + self.assertEqual(str(OkayEnum.one), 'one') + with self.assertWarns(DeprecationWarning): + self.assertEqual('{}'.format(OkayEnum.one), '1') + self.assertEqual(OkayEnum.one, '{}'.format(OkayEnum.one)) + self.assertEqual(repr(OkayEnum.one), 'OkayEnum.one') + # + class DumbMixin: + def __str__(self): + return "don't do this" + class DumbStrEnum(DumbMixin, CustomStrEnum): + five = '5' + six = '6' + seven = '7' + self.assertEqual(DumbStrEnum.seven, '7') + self.assertEqual(str(DumbStrEnum.seven), "don't do this") + # + class EnumMixin(Enum): + def hello(self): + print('hello from %s' % (self, )) + class HelloEnum(EnumMixin, CustomStrEnum): + eight = '8' + self.assertEqual(HelloEnum.eight, '8') + self.assertEqual(str(HelloEnum.eight), 'eight') + # + class GoodbyeMixin: + def goodbye(self): + print('%s wishes you a fond farewell') + class GoodbyeEnum(GoodbyeMixin, EnumMixin, CustomStrEnum): + nine = '9' + self.assertEqual(GoodbyeEnum.nine, '9') + self.assertEqual(str(GoodbyeEnum.nine), 'nine') + # + class FirstFailedStrEnum(CustomStrEnum): + one = 1 # this will become '1' + two = '2' + class SecondFailedStrEnum(CustomStrEnum): + one = '1' + two = 2, # this will become '2' + three = '3' + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = 2 # this will become '2' + with self.assertRaisesRegex(TypeError, '.encoding. must be str, not '): + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = b'2', sys.getdefaultencoding + with self.assertRaisesRegex(TypeError, '.errors. must be str, not '): + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = b'2', 'ascii', 9 + + @unittest.skipIf( + python_version < (3, 12), + 'mixin-format currently uses member.value', + ) + def test_custom_strenum(self): + class CustomStrEnum(str, Enum): + pass + class OkayEnum(CustomStrEnum): + one = '1' + two = '2' + three = b'3', 'ascii' + four = b'4', 'latin1', 'strict' + self.assertEqual(OkayEnum.one, '1') + self.assertEqual(str(OkayEnum.one), 'one') + self.assertEqual('{}'.format(OkayEnum.one), 'one') + self.assertEqual(repr(OkayEnum.one), 'OkayEnum.one') + # + class DumbMixin: + def __str__(self): + return "don't do this" + class DumbStrEnum(DumbMixin, CustomStrEnum): + five = '5' + six = '6' + seven = '7' + self.assertEqual(DumbStrEnum.seven, '7') + self.assertEqual(str(DumbStrEnum.seven), "don't do this") + # + class EnumMixin(Enum): + def hello(self): + print('hello from %s' % (self, )) + class HelloEnum(EnumMixin, CustomStrEnum): + eight = '8' + self.assertEqual(HelloEnum.eight, '8') + self.assertEqual(str(HelloEnum.eight), 'eight') + # + class GoodbyeMixin: + def goodbye(self): + print('%s wishes you a fond farewell') + class GoodbyeEnum(GoodbyeMixin, EnumMixin, CustomStrEnum): + nine = '9' + self.assertEqual(GoodbyeEnum.nine, '9') + self.assertEqual(str(GoodbyeEnum.nine), 'nine') + # + class FirstFailedStrEnum(CustomStrEnum): + one = 1 # this will become '1' + two = '2' + class SecondFailedStrEnum(CustomStrEnum): + one = '1' + two = 2, # this will become '2' + three = '3' + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = 2 # this will become '2' + with self.assertRaisesRegex(TypeError, '.encoding. must be str, not '): + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = b'2', sys.getdefaultencoding + with self.assertRaisesRegex(TypeError, '.errors. must be str, not '): + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = b'2', 'ascii', 9 + def test_missing_value_error(self): with self.assertRaisesRegex(TypeError, "_value_ not set in __new__"): class Combined(str, Enum): @@ -3080,15 +3224,19 @@ def test_repr(self): self.assertEqual(repr(~(Open.WO | Open.CE)), 'Open.RW') self.assertEqual(repr(Open(~4)), '-5') - @unittest.skipUnless( - python_version < (3, 12), - 'mixin-format now uses member instead of member.value', - ) def test_format(self): - with self.assertWarns(DeprecationWarning): - Perm = self.Perm - self.assertEqual(format(Perm.R, ''), '4') - self.assertEqual(format(Perm.R | Perm.X, ''), '5') + Perm = self.Perm + self.assertEqual(format(Perm.R, ''), '4') + self.assertEqual(format(Perm.R | Perm.X, ''), '5') + # + class NewPerm(IntFlag): + R = 1 << 2 + W = 1 << 1 + X = 1 << 0 + def __str__(self): + return self._name_ + self.assertEqual(format(NewPerm.R, ''), 'R') + self.assertEqual(format(NewPerm.R | Perm.X, ''), 'R|X') def test_or(self): Perm = self.Perm @@ -3979,10 +4127,6 @@ def test_convert_raise(self): ('test.test_enum', '__main__')[__name__=='__main__'], filter=lambda x: x.startswith('CONVERT_TEST_')) - @unittest.skipUnless( - python_version < (3, 12), - 'mixin-format now uses member instead of member.value', - ) def test_convert_repr_and_str(self): module = ('test.test_enum', '__main__')[__name__=='__main__'] test_type = enum.IntEnum._convert_( @@ -3991,8 +4135,7 @@ def test_convert_repr_and_str(self): filter=lambda x: x.startswith('CONVERT_STRING_TEST_')) self.assertEqual(repr(test_type.CONVERT_STRING_TEST_NAME_A), '%s.CONVERT_STRING_TEST_NAME_A' % module) self.assertEqual(str(test_type.CONVERT_STRING_TEST_NAME_A), 'CONVERT_STRING_TEST_NAME_A') - with self.assertWarns(DeprecationWarning): - self.assertEqual(format(test_type.CONVERT_STRING_TEST_NAME_A), '5') + self.assertEqual(format(test_type.CONVERT_STRING_TEST_NAME_A), '5') # global names for StrEnum._convert_ test CONVERT_STR_TEST_2 = 'goodbye' diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index cb0a3aa9e4045..aeea020d2416d 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -259,7 +259,7 @@ def test_send_error(self): for code in (HTTPStatus.NO_CONTENT, HTTPStatus.NOT_MODIFIED, HTTPStatus.PROCESSING, HTTPStatus.RESET_CONTENT, HTTPStatus.SWITCHING_PROTOCOLS): - self.con.request('SEND_ERROR', '/{:d}'.format(code)) + self.con.request('SEND_ERROR', '/{}'.format(code)) res = self.con.getresponse() self.assertEqual(code, res.status) self.assertEqual(None, res.getheader('Content-Length')) @@ -276,7 +276,7 @@ def test_head_via_send_error(self): for code in (HTTPStatus.OK, HTTPStatus.NO_CONTENT, HTTPStatus.NOT_MODIFIED, HTTPStatus.RESET_CONTENT, HTTPStatus.SWITCHING_PROTOCOLS): - self.con.request('HEAD', '/{:d}'.format(code)) + self.con.request('HEAD', '/{}'.format(code)) res = self.con.getresponse() self.assertEqual(code, res.status) if code == HTTPStatus.OK: From webhook-mailer at python.org Fri Jun 18 16:31:09 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 18 Jun 2021 20:31:09 -0000 Subject: [Python-checkins] bpo-44451: Reset DeprecationWarning filters in test_importlib.test_entry_points_by_index (GH-26784) Message-ID: https://github.com/python/cpython/commit/bf55a799e0c19285b094d71f794c301c1afaa28d commit: bf55a799e0c19285b094d71f794c301c1afaa28d branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-18T13:30:53-07:00 summary: bpo-44451: Reset DeprecationWarning filters in test_importlib.test_entry_points_by_index (GH-26784) This avoids the following error if DeprecationWarnings are ignored. ====================================================================== ERROR: test_entry_points_by_index (test.test_importlib.test_metadata_api.APITests) Prior versions of Distribution.entry_points would return a ---------------------------------------------------------------------- Traceback (most recent call last): File "/builddir/build/BUILD/Python-3.10.0b3/Lib/test/test_importlib/test_metadata_api.py", line 145, in test_entry_points_by_index expected = next(iter(caught)) StopIteration ---------------------------------------------------------------------- Ran 1402 tests in 2.125s FAILED (errors=1, skipped=18, expected failures=1) (cherry picked from commit df1502e47fc1e0cf1e7d460ae04530c3e2e4a7c6) Co-authored-by: Miro Hron?ok files: A Misc/NEWS.d/next/Tests/2021-06-18-15-19-35.bpo-44451.aj5pqE.rst M Lib/test/test_importlib/test_metadata_api.py diff --git a/Lib/test/test_importlib/test_metadata_api.py b/Lib/test/test_importlib/test_metadata_api.py index 3506493463d82e..2bfc44b18eedb4 100644 --- a/Lib/test/test_importlib/test_metadata_api.py +++ b/Lib/test/test_importlib/test_metadata_api.py @@ -139,6 +139,7 @@ def test_entry_points_by_index(self): """ eps = distribution('distinfo-pkg').entry_points with warnings.catch_warnings(record=True) as caught: + warnings.filterwarnings("default", category=DeprecationWarning) eps[0] # check warning diff --git a/Misc/NEWS.d/next/Tests/2021-06-18-15-19-35.bpo-44451.aj5pqE.rst b/Misc/NEWS.d/next/Tests/2021-06-18-15-19-35.bpo-44451.aj5pqE.rst new file mode 100644 index 00000000000000..0f635cfe18d141 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-18-15-19-35.bpo-44451.aj5pqE.rst @@ -0,0 +1,3 @@ +Reset ``DeprecationWarning`` filters in +``test.test_importlib.test_metadata_api.APITests.test_entry_points_by_index`` +to avoid ``StopIteration`` error if ``DeprecationWarnings`` are ignored. From webhook-mailer at python.org Fri Jun 18 17:16:01 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 18 Jun 2021 21:16:01 -0000 Subject: [Python-checkins] [3.10] bpo-44368: Improve syntax errors with invalid as pattern targets (GH-26632) (GH-26792) Message-ID: https://github.com/python/cpython/commit/a8c418d5ed1103106db547aa576b82c6031985a4 commit: a8c418d5ed1103106db547aa576b82c6031985a4 branch: 3.10 author: Pablo Galindo committer: pablogsal date: 2021-06-18T22:15:57+01:00 summary: [3.10] bpo-44368: Improve syntax errors with invalid as pattern targets (GH-26632) (GH-26792) (cherry picked from commit 05073036dcecefc00b0c3e7397601809da41e2f1) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-09-22-56-59.bpo-44368.vgT0Cx.rst M Grammar/python.gram M Lib/test/test_syntax.py M Parser/parser.c diff --git a/Grammar/python.gram b/Grammar/python.gram index 0ccdc3e5b96957..56daca054c8b54 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -244,6 +244,7 @@ pattern[pattern_ty]: as_pattern[pattern_ty]: | pattern=or_pattern 'as' target=pattern_capture_target { _PyAST_MatchAs(pattern, target->v.Name.id, EXTRA) } + | invalid_as_pattern or_pattern[pattern_ty]: | patterns[asdl_pattern_seq*]='|'.closed_pattern+ { asdl_seq_LEN(patterns) == 1 ? asdl_seq_GET(patterns, 0) : _PyAST_MatchOr(patterns, EXTRA) } @@ -974,6 +975,9 @@ invalid_case_block: | "case" patterns guard? !':' { RAISE_SYNTAX_ERROR("expected ':'") } | a="case" patterns guard? ':' NEWLINE !INDENT { RAISE_INDENTATION_ERROR("expected an indented block after 'case' statement on line %d", a->lineno) } +invalid_as_pattern: + | or_pattern 'as' a="_" { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot use '_' as a target") } + | or_pattern 'as' !NAME a=expression { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "invalid pattern target") } invalid_if_stmt: | 'if' named_expression NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") } | a='if' a=named_expression ':' NEWLINE !INDENT { diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 72e4ab15c87249..e0d0445a83d9d6 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -1226,6 +1226,20 @@ >>> import ? ? Traceback (most recent call last): SyntaxError: invalid character '?' (U+00A3) + + Invalid pattern matching constructs: + + >>> match ...: + ... case 42 as _: + ... ... + Traceback (most recent call last): + SyntaxError: cannot use '_' as a target + + >>> match ...: + ... case 42 as 1+2+4: + ... ... + Traceback (most recent call last): + SyntaxError: invalid pattern target """ import re diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-09-22-56-59.bpo-44368.vgT0Cx.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-09-22-56-59.bpo-44368.vgT0Cx.rst new file mode 100644 index 00000000000000..e0d19134510eeb --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-09-22-56-59.bpo-44368.vgT0Cx.rst @@ -0,0 +1 @@ +Improve syntax errors for invalid "as" targets. Patch by Pablo Galindo diff --git a/Parser/parser.c b/Parser/parser.c index 238ce36b4fb142..0a174788657040 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -280,218 +280,219 @@ static char *soft_keywords[] = { #define invalid_except_stmt_indent_type 1206 #define invalid_match_stmt_type 1207 #define invalid_case_block_type 1208 -#define invalid_if_stmt_type 1209 -#define invalid_elif_stmt_type 1210 -#define invalid_else_stmt_type 1211 -#define invalid_while_stmt_type 1212 -#define invalid_for_stmt_type 1213 -#define invalid_def_raw_type 1214 -#define invalid_class_def_raw_type 1215 -#define invalid_double_starred_kvpairs_type 1216 -#define invalid_kvpair_type 1217 -#define _loop0_1_type 1218 -#define _loop0_2_type 1219 -#define _loop0_4_type 1220 -#define _gather_3_type 1221 -#define _loop0_6_type 1222 -#define _gather_5_type 1223 -#define _loop0_8_type 1224 -#define _gather_7_type 1225 -#define _loop0_10_type 1226 -#define _gather_9_type 1227 -#define _loop1_11_type 1228 -#define _loop0_13_type 1229 -#define _gather_12_type 1230 -#define _tmp_14_type 1231 -#define _tmp_15_type 1232 -#define _tmp_16_type 1233 -#define _tmp_17_type 1234 -#define _tmp_18_type 1235 -#define _tmp_19_type 1236 -#define _tmp_20_type 1237 -#define _tmp_21_type 1238 -#define _loop1_22_type 1239 -#define _tmp_23_type 1240 -#define _tmp_24_type 1241 -#define _loop0_26_type 1242 -#define _gather_25_type 1243 -#define _loop0_28_type 1244 -#define _gather_27_type 1245 -#define _tmp_29_type 1246 -#define _tmp_30_type 1247 -#define _loop0_31_type 1248 -#define _loop1_32_type 1249 -#define _loop0_34_type 1250 -#define _gather_33_type 1251 -#define _tmp_35_type 1252 -#define _loop0_37_type 1253 -#define _gather_36_type 1254 -#define _tmp_38_type 1255 -#define _loop0_40_type 1256 -#define _gather_39_type 1257 -#define _loop0_42_type 1258 -#define _gather_41_type 1259 -#define _loop0_44_type 1260 -#define _gather_43_type 1261 -#define _loop0_46_type 1262 -#define _gather_45_type 1263 -#define _tmp_47_type 1264 -#define _loop1_48_type 1265 -#define _tmp_49_type 1266 -#define _loop1_50_type 1267 -#define _loop0_52_type 1268 -#define _gather_51_type 1269 -#define _tmp_53_type 1270 -#define _tmp_54_type 1271 -#define _tmp_55_type 1272 -#define _tmp_56_type 1273 -#define _loop0_58_type 1274 -#define _gather_57_type 1275 -#define _loop0_60_type 1276 -#define _gather_59_type 1277 -#define _tmp_61_type 1278 -#define _loop0_63_type 1279 -#define _gather_62_type 1280 -#define _loop0_65_type 1281 -#define _gather_64_type 1282 -#define _tmp_66_type 1283 -#define _tmp_67_type 1284 -#define _tmp_68_type 1285 -#define _tmp_69_type 1286 -#define _loop0_70_type 1287 -#define _loop0_71_type 1288 -#define _loop0_72_type 1289 -#define _loop1_73_type 1290 -#define _loop0_74_type 1291 -#define _loop1_75_type 1292 -#define _loop1_76_type 1293 -#define _loop1_77_type 1294 -#define _loop0_78_type 1295 -#define _loop1_79_type 1296 -#define _loop0_80_type 1297 -#define _loop1_81_type 1298 -#define _loop0_82_type 1299 -#define _loop1_83_type 1300 -#define _loop1_84_type 1301 -#define _tmp_85_type 1302 -#define _loop1_86_type 1303 -#define _loop0_88_type 1304 -#define _gather_87_type 1305 -#define _loop1_89_type 1306 -#define _loop0_90_type 1307 -#define _loop0_91_type 1308 -#define _loop0_92_type 1309 -#define _loop1_93_type 1310 -#define _loop0_94_type 1311 -#define _loop1_95_type 1312 -#define _loop1_96_type 1313 -#define _loop1_97_type 1314 -#define _loop0_98_type 1315 -#define _loop1_99_type 1316 -#define _loop0_100_type 1317 -#define _loop1_101_type 1318 -#define _loop0_102_type 1319 -#define _loop1_103_type 1320 -#define _loop1_104_type 1321 -#define _loop1_105_type 1322 -#define _loop1_106_type 1323 -#define _tmp_107_type 1324 -#define _loop0_109_type 1325 -#define _gather_108_type 1326 -#define _tmp_110_type 1327 -#define _tmp_111_type 1328 -#define _tmp_112_type 1329 -#define _tmp_113_type 1330 -#define _loop1_114_type 1331 -#define _tmp_115_type 1332 -#define _tmp_116_type 1333 -#define _tmp_117_type 1334 -#define _loop0_119_type 1335 -#define _gather_118_type 1336 -#define _loop1_120_type 1337 -#define _loop0_121_type 1338 -#define _loop0_122_type 1339 -#define _loop0_124_type 1340 -#define _gather_123_type 1341 -#define _tmp_125_type 1342 -#define _loop0_127_type 1343 -#define _gather_126_type 1344 -#define _loop0_129_type 1345 -#define _gather_128_type 1346 -#define _loop0_131_type 1347 -#define _gather_130_type 1348 -#define _loop0_133_type 1349 -#define _gather_132_type 1350 -#define _loop0_134_type 1351 -#define _loop0_136_type 1352 -#define _gather_135_type 1353 -#define _loop1_137_type 1354 -#define _tmp_138_type 1355 -#define _loop0_140_type 1356 -#define _gather_139_type 1357 -#define _tmp_141_type 1358 -#define _tmp_142_type 1359 -#define _tmp_143_type 1360 -#define _tmp_144_type 1361 -#define _tmp_145_type 1362 -#define _tmp_146_type 1363 -#define _loop0_147_type 1364 -#define _loop0_148_type 1365 -#define _loop0_149_type 1366 -#define _tmp_150_type 1367 -#define _tmp_151_type 1368 -#define _tmp_152_type 1369 -#define _tmp_153_type 1370 -#define _loop0_154_type 1371 -#define _loop1_155_type 1372 -#define _loop0_156_type 1373 -#define _loop1_157_type 1374 -#define _tmp_158_type 1375 -#define _tmp_159_type 1376 -#define _tmp_160_type 1377 -#define _loop0_162_type 1378 -#define _gather_161_type 1379 -#define _loop0_164_type 1380 -#define _gather_163_type 1381 -#define _loop0_166_type 1382 -#define _gather_165_type 1383 -#define _loop0_168_type 1384 -#define _gather_167_type 1385 -#define _tmp_169_type 1386 -#define _tmp_170_type 1387 -#define _tmp_171_type 1388 -#define _tmp_172_type 1389 -#define _tmp_173_type 1390 -#define _tmp_174_type 1391 -#define _loop0_176_type 1392 -#define _gather_175_type 1393 -#define _tmp_177_type 1394 -#define _tmp_178_type 1395 -#define _tmp_179_type 1396 -#define _tmp_180_type 1397 -#define _tmp_181_type 1398 -#define _tmp_182_type 1399 -#define _tmp_183_type 1400 -#define _tmp_184_type 1401 -#define _tmp_185_type 1402 -#define _tmp_186_type 1403 -#define _tmp_187_type 1404 -#define _tmp_188_type 1405 -#define _tmp_189_type 1406 -#define _tmp_190_type 1407 -#define _tmp_191_type 1408 -#define _tmp_192_type 1409 -#define _tmp_193_type 1410 -#define _tmp_194_type 1411 -#define _tmp_195_type 1412 -#define _tmp_196_type 1413 -#define _tmp_197_type 1414 -#define _tmp_198_type 1415 -#define _tmp_199_type 1416 -#define _tmp_200_type 1417 -#define _tmp_201_type 1418 -#define _tmp_202_type 1419 -#define _tmp_203_type 1420 +#define invalid_as_pattern_type 1209 +#define invalid_if_stmt_type 1210 +#define invalid_elif_stmt_type 1211 +#define invalid_else_stmt_type 1212 +#define invalid_while_stmt_type 1213 +#define invalid_for_stmt_type 1214 +#define invalid_def_raw_type 1215 +#define invalid_class_def_raw_type 1216 +#define invalid_double_starred_kvpairs_type 1217 +#define invalid_kvpair_type 1218 +#define _loop0_1_type 1219 +#define _loop0_2_type 1220 +#define _loop0_4_type 1221 +#define _gather_3_type 1222 +#define _loop0_6_type 1223 +#define _gather_5_type 1224 +#define _loop0_8_type 1225 +#define _gather_7_type 1226 +#define _loop0_10_type 1227 +#define _gather_9_type 1228 +#define _loop1_11_type 1229 +#define _loop0_13_type 1230 +#define _gather_12_type 1231 +#define _tmp_14_type 1232 +#define _tmp_15_type 1233 +#define _tmp_16_type 1234 +#define _tmp_17_type 1235 +#define _tmp_18_type 1236 +#define _tmp_19_type 1237 +#define _tmp_20_type 1238 +#define _tmp_21_type 1239 +#define _loop1_22_type 1240 +#define _tmp_23_type 1241 +#define _tmp_24_type 1242 +#define _loop0_26_type 1243 +#define _gather_25_type 1244 +#define _loop0_28_type 1245 +#define _gather_27_type 1246 +#define _tmp_29_type 1247 +#define _tmp_30_type 1248 +#define _loop0_31_type 1249 +#define _loop1_32_type 1250 +#define _loop0_34_type 1251 +#define _gather_33_type 1252 +#define _tmp_35_type 1253 +#define _loop0_37_type 1254 +#define _gather_36_type 1255 +#define _tmp_38_type 1256 +#define _loop0_40_type 1257 +#define _gather_39_type 1258 +#define _loop0_42_type 1259 +#define _gather_41_type 1260 +#define _loop0_44_type 1261 +#define _gather_43_type 1262 +#define _loop0_46_type 1263 +#define _gather_45_type 1264 +#define _tmp_47_type 1265 +#define _loop1_48_type 1266 +#define _tmp_49_type 1267 +#define _loop1_50_type 1268 +#define _loop0_52_type 1269 +#define _gather_51_type 1270 +#define _tmp_53_type 1271 +#define _tmp_54_type 1272 +#define _tmp_55_type 1273 +#define _tmp_56_type 1274 +#define _loop0_58_type 1275 +#define _gather_57_type 1276 +#define _loop0_60_type 1277 +#define _gather_59_type 1278 +#define _tmp_61_type 1279 +#define _loop0_63_type 1280 +#define _gather_62_type 1281 +#define _loop0_65_type 1282 +#define _gather_64_type 1283 +#define _tmp_66_type 1284 +#define _tmp_67_type 1285 +#define _tmp_68_type 1286 +#define _tmp_69_type 1287 +#define _loop0_70_type 1288 +#define _loop0_71_type 1289 +#define _loop0_72_type 1290 +#define _loop1_73_type 1291 +#define _loop0_74_type 1292 +#define _loop1_75_type 1293 +#define _loop1_76_type 1294 +#define _loop1_77_type 1295 +#define _loop0_78_type 1296 +#define _loop1_79_type 1297 +#define _loop0_80_type 1298 +#define _loop1_81_type 1299 +#define _loop0_82_type 1300 +#define _loop1_83_type 1301 +#define _loop1_84_type 1302 +#define _tmp_85_type 1303 +#define _loop1_86_type 1304 +#define _loop0_88_type 1305 +#define _gather_87_type 1306 +#define _loop1_89_type 1307 +#define _loop0_90_type 1308 +#define _loop0_91_type 1309 +#define _loop0_92_type 1310 +#define _loop1_93_type 1311 +#define _loop0_94_type 1312 +#define _loop1_95_type 1313 +#define _loop1_96_type 1314 +#define _loop1_97_type 1315 +#define _loop0_98_type 1316 +#define _loop1_99_type 1317 +#define _loop0_100_type 1318 +#define _loop1_101_type 1319 +#define _loop0_102_type 1320 +#define _loop1_103_type 1321 +#define _loop1_104_type 1322 +#define _loop1_105_type 1323 +#define _loop1_106_type 1324 +#define _tmp_107_type 1325 +#define _loop0_109_type 1326 +#define _gather_108_type 1327 +#define _tmp_110_type 1328 +#define _tmp_111_type 1329 +#define _tmp_112_type 1330 +#define _tmp_113_type 1331 +#define _loop1_114_type 1332 +#define _tmp_115_type 1333 +#define _tmp_116_type 1334 +#define _tmp_117_type 1335 +#define _loop0_119_type 1336 +#define _gather_118_type 1337 +#define _loop1_120_type 1338 +#define _loop0_121_type 1339 +#define _loop0_122_type 1340 +#define _loop0_124_type 1341 +#define _gather_123_type 1342 +#define _tmp_125_type 1343 +#define _loop0_127_type 1344 +#define _gather_126_type 1345 +#define _loop0_129_type 1346 +#define _gather_128_type 1347 +#define _loop0_131_type 1348 +#define _gather_130_type 1349 +#define _loop0_133_type 1350 +#define _gather_132_type 1351 +#define _loop0_134_type 1352 +#define _loop0_136_type 1353 +#define _gather_135_type 1354 +#define _loop1_137_type 1355 +#define _tmp_138_type 1356 +#define _loop0_140_type 1357 +#define _gather_139_type 1358 +#define _tmp_141_type 1359 +#define _tmp_142_type 1360 +#define _tmp_143_type 1361 +#define _tmp_144_type 1362 +#define _tmp_145_type 1363 +#define _tmp_146_type 1364 +#define _loop0_147_type 1365 +#define _loop0_148_type 1366 +#define _loop0_149_type 1367 +#define _tmp_150_type 1368 +#define _tmp_151_type 1369 +#define _tmp_152_type 1370 +#define _tmp_153_type 1371 +#define _loop0_154_type 1372 +#define _loop1_155_type 1373 +#define _loop0_156_type 1374 +#define _loop1_157_type 1375 +#define _tmp_158_type 1376 +#define _tmp_159_type 1377 +#define _tmp_160_type 1378 +#define _loop0_162_type 1379 +#define _gather_161_type 1380 +#define _loop0_164_type 1381 +#define _gather_163_type 1382 +#define _loop0_166_type 1383 +#define _gather_165_type 1384 +#define _loop0_168_type 1385 +#define _gather_167_type 1386 +#define _tmp_169_type 1387 +#define _tmp_170_type 1388 +#define _tmp_171_type 1389 +#define _tmp_172_type 1390 +#define _tmp_173_type 1391 +#define _tmp_174_type 1392 +#define _loop0_176_type 1393 +#define _gather_175_type 1394 +#define _tmp_177_type 1395 +#define _tmp_178_type 1396 +#define _tmp_179_type 1397 +#define _tmp_180_type 1398 +#define _tmp_181_type 1399 +#define _tmp_182_type 1400 +#define _tmp_183_type 1401 +#define _tmp_184_type 1402 +#define _tmp_185_type 1403 +#define _tmp_186_type 1404 +#define _tmp_187_type 1405 +#define _tmp_188_type 1406 +#define _tmp_189_type 1407 +#define _tmp_190_type 1408 +#define _tmp_191_type 1409 +#define _tmp_192_type 1410 +#define _tmp_193_type 1411 +#define _tmp_194_type 1412 +#define _tmp_195_type 1413 +#define _tmp_196_type 1414 +#define _tmp_197_type 1415 +#define _tmp_198_type 1416 +#define _tmp_199_type 1417 +#define _tmp_200_type 1418 +#define _tmp_201_type 1419 +#define _tmp_202_type 1420 +#define _tmp_203_type 1421 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -702,6 +703,7 @@ static void *invalid_finally_stmt_rule(Parser *p); static void *invalid_except_stmt_indent_rule(Parser *p); static void *invalid_match_stmt_rule(Parser *p); static void *invalid_case_block_rule(Parser *p); +static void *invalid_as_pattern_rule(Parser *p); static void *invalid_if_stmt_rule(Parser *p); static void *invalid_elif_stmt_rule(Parser *p); static void *invalid_else_stmt_rule(Parser *p); @@ -5601,7 +5603,7 @@ pattern_rule(Parser *p) return _res; } -// as_pattern: or_pattern 'as' pattern_capture_target +// as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern static pattern_ty as_pattern_rule(Parser *p) { @@ -5660,6 +5662,25 @@ as_pattern_rule(Parser *p) D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target")); } + if (p->call_invalid_rules) { // invalid_as_pattern + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern")); + void *invalid_as_pattern_var; + if ( + (invalid_as_pattern_var = invalid_as_pattern_rule(p)) // invalid_as_pattern + ) + { + D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern")); + _res = invalid_as_pattern_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern")); + } _res = NULL; done: D(p->level--); @@ -20210,6 +20231,85 @@ invalid_case_block_rule(Parser *p) return _res; } +// invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' !NAME expression +static void * +invalid_as_pattern_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // or_pattern 'as' "_" + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\"")); + Token * _keyword; + expr_ty a; + pattern_ty or_pattern_var; + if ( + (or_pattern_var = or_pattern_rule(p)) // or_pattern + && + (_keyword = _PyPegen_expect_token(p, 520)) // token='as' + && + (a = _PyPegen_expect_soft_keyword(p, "_")) // soft_keyword='"_"' + ) + { + D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\"")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\"")); + } + { // or_pattern 'as' !NAME expression + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression")); + Token * _keyword; + expr_ty a; + pattern_ty or_pattern_var; + if ( + (or_pattern_var = or_pattern_rule(p)) // or_pattern + && + (_keyword = _PyPegen_expect_token(p, 520)) // token='as' + && + _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p) + && + (a = expression_rule(p)) // expression + ) + { + D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "invalid pattern target" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' !NAME expression")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + // invalid_if_stmt: // | 'if' named_expression NEWLINE // | 'if' named_expression ':' NEWLINE !INDENT From webhook-mailer at python.org Fri Jun 18 17:25:51 2021 From: webhook-mailer at python.org (ethanfurman) Date: Fri, 18 Jun 2021 21:25:51 -0000 Subject: [Python-checkins] [3.10] bpo-43945: [Enum] reduce scope of new format() behavior (GH-26752) Message-ID: https://github.com/python/cpython/commit/1b4addf3cbd0ef424939681ee67c802328d567ba commit: 1b4addf3cbd0ef424939681ee67c802328d567ba branch: 3.10 author: Ethan Furman committer: ethanfurman date: 2021-06-18T14:25:42-07:00 summary: [3.10] bpo-43945: [Enum] reduce scope of new format() behavior (GH-26752) * [Enum] reduce scope of new format behavior Instead of treating all Enums the same for format(), only user mixed-in enums will be affected. In other words, IntEnum and IntFlag will not be changing the format() behavior, due to the requirement that they be drop-in replacements of existing integer constants. If a user creates their own integer-based enum, then the new behavior will apply: class Grades(int, Enum): A = 5 B = 4 C = 3 D = 2 F = 0 Now: format(Grades.B) -> DeprecationWarning and '4' 3.12: -> no warning, and 'B'. (cherry picked from commit f60b07ab6c943fce084772c3c7731ab3bbd213ff) Co-authored-by: Ethan Furman files: M Doc/library/enum.rst M Lib/asyncio/unix_events.py M Lib/enum.py M Lib/test/test_enum.py M Lib/test/test_httpservers.py diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 077a35453ae4ce..d3df151b71ea94 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -22,7 +22,7 @@ * :ref:`Advanced Tutorial ` * :ref:`Enum Cookbook ` ----------------- +--------------- An enumeration: @@ -58,6 +58,7 @@ are not normal Python classes. See :attr:`Color.RED` is ``RED``, the value of :attr:`Color.BLUE` is ``3``, etc.) +--------------- Module Contents --------------- @@ -73,12 +74,12 @@ Module Contents :class:`IntEnum` Base class for creating enumerated constants that are also - subclasses of :class:`int`. + subclasses of :class:`int`. (`Notes`_) :class:`StrEnum` Base class for creating enumerated constants that are also - subclasses of :class:`str`. + subclasses of :class:`str`. (`Notes`_) :class:`Flag` @@ -89,7 +90,7 @@ Module Contents Base class for creating enumerated constants that can be combined using the bitwise operators without losing their :class:`IntFlag` membership. - :class:`IntFlag` members are also subclasses of :class:`int`. + :class:`IntFlag` members are also subclasses of :class:`int`. (`Notes`_) :class:`EnumCheck` @@ -132,6 +133,7 @@ Module Contents .. versionadded:: 3.6 ``Flag``, ``IntFlag``, ``auto`` .. versionadded:: 3.10 ``StrEnum``, ``EnumCheck``, ``FlagBoundary`` +--------------- Data Types ---------- @@ -647,6 +649,8 @@ Data Types .. versionadded:: 3.10 +--------------- + Utilites and Decorators ----------------------- @@ -706,3 +710,25 @@ Utilites and Decorators on the decorated enumeration. .. versionadded:: 3.10 + +--------------- + +Notes +----- + +:class:`IntEnum`, :class:`StrEnum`, and :class:`IntFlag` + + These three enum types are designed to be drop-in replacements for existing + integer- and string-based values; as such, they have extra limitations: + + - ``format()`` will use the value of the enum member, unless ``__str__`` + has been overridden + + - ``StrEnum.__str__`` uses the value and not the name of the enum member + + If you do not need/want those limitations, you can create your own base + class by mixing in the ``int`` or ``str`` type yourself:: + + >>> from enum import Enum + >>> class MyIntEnum(int, Enum): + ... pass diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index a55b3a375fa22d..e4f445e95026b5 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -126,7 +126,7 @@ def add_signal_handler(self, sig, callback, *args): logger.info('set_wakeup_fd(-1) failed: %s', nexc) if exc.errno == errno.EINVAL: - raise RuntimeError(f'sig {sig:d} cannot be caught') + raise RuntimeError(f'sig {sig} cannot be caught') else: raise @@ -160,7 +160,7 @@ def remove_signal_handler(self, sig): signal.signal(sig, handler) except OSError as exc: if exc.errno == errno.EINVAL: - raise RuntimeError(f'sig {sig:d} cannot be caught') + raise RuntimeError(f'sig {sig} cannot be caught') else: raise diff --git a/Lib/enum.py b/Lib/enum.py index 90777988dd041d..84e3cc17bbc531 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -993,9 +993,9 @@ def __format__(self, format_spec): # mixed-in Enums should use the mixed-in type's __format__, otherwise # we can get strange results with the Enum name showing up instead of # the value - + # # pure Enum branch, or branch with __str__ explicitly overridden - str_overridden = type(self).__str__ not in (Enum.__str__, Flag.__str__) + str_overridden = type(self).__str__ not in (Enum.__str__, IntEnum.__str__, Flag.__str__) if self._member_type_ is object or str_overridden: cls = str val = str(self) @@ -1005,7 +1005,7 @@ def __format__(self, format_spec): import warnings warnings.warn( "in 3.12 format() will use the enum member, not the enum member's value;\n" - "use a format specifier, such as :d for an IntEnum member, to maintain " + "use a format specifier, such as :d for an integer-based Enum, to maintain " "the current display", DeprecationWarning, stacklevel=2, @@ -1044,6 +1044,22 @@ class IntEnum(int, Enum): Enum where members are also (and must be) ints """ + def __str__(self): + return "%s" % (self._name_, ) + + def __format__(self, format_spec): + """ + Returns format using actual value unless __str__ has been overridden. + """ + str_overridden = type(self).__str__ != IntEnum.__str__ + if str_overridden: + cls = str + val = str(self) + else: + cls = self._member_type_ + val = self._value_ + return cls.__format__(val, format_spec) + class StrEnum(str, Enum): """ @@ -1072,6 +1088,8 @@ def __new__(cls, *values): __str__ = str.__str__ + __format__ = str.__format__ + def _generate_next_value_(name, start, count, last_values): """ Return the lower-cased version of the member name. @@ -1300,6 +1318,16 @@ class IntFlag(int, Flag, boundary=EJECT): Support for integer-based Flags """ + def __format__(self, format_spec): + """ + Returns format using actual value unless __str__ has been overridden. + """ + str_overridden = type(self).__str__ != Flag.__str__ + value = self + if not str_overridden: + value = self._value_ + return int.__format__(value, format_spec) + def __or__(self, other): if isinstance(other, self.__class__): other = other._value_ diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index c4c458e6bfc4ef..0267ff5684c0d4 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -557,16 +557,27 @@ def __format__(self, spec): 'mixin-format is still using member.value', ) def test_mixin_format_warning(self): - with self.assertWarns(DeprecationWarning): - self.assertEqual(f'{self.Grades.B}', 'Grades.B') + class Grades(int, Enum): + A = 5 + B = 4 + C = 3 + D = 2 + F = 0 + self.assertEqual(f'{self.Grades.B}', 'B') @unittest.skipIf( python_version >= (3, 12), 'mixin-format now uses member instead of member.value', ) def test_mixin_format_warning(self): + class Grades(int, Enum): + A = 5 + B = 4 + C = 3 + D = 2 + F = 0 with self.assertWarns(DeprecationWarning): - self.assertEqual(f'{self.Grades.B}', '4') + self.assertEqual(f'{Grades.B}', '4') def assertFormatIsValue(self, spec, member): if python_version < (3, 12) and (not spec or spec in ('{}','{:}')): @@ -599,7 +610,12 @@ def test_format_enum_float(self): self.assertFormatIsValue('{:f}', Konstants.TAU) def test_format_enum_int(self): - Grades = self.Grades + class Grades(int, Enum): + A = 5 + B = 4 + C = 3 + D = 2 + F = 0 self.assertFormatIsValue('{}', Grades.C) self.assertFormatIsValue('{:}', Grades.C) self.assertFormatIsValue('{:20}', Grades.C) @@ -2236,8 +2252,10 @@ class GoodStrEnum(StrEnum): four = b'4', 'latin1', 'strict' self.assertEqual(GoodStrEnum.one, '1') self.assertEqual(str(GoodStrEnum.one), '1') + self.assertEqual('{}'.format(GoodStrEnum.one), '1') self.assertEqual(GoodStrEnum.one, str(GoodStrEnum.one)) self.assertEqual(GoodStrEnum.one, '{}'.format(GoodStrEnum.one)) + self.assertEqual(repr(GoodStrEnum.one), 'GoodStrEnum.one') # class DumbMixin: def __str__(self): @@ -2287,6 +2305,132 @@ class ThirdFailedStrEnum(StrEnum): one = '1' two = b'2', 'ascii', 9 + @unittest.skipIf( + python_version >= (3, 12), + 'mixin-format now uses member instead of member.value', + ) + def test_custom_strenum_with_warning(self): + class CustomStrEnum(str, Enum): + pass + class OkayEnum(CustomStrEnum): + one = '1' + two = '2' + three = b'3', 'ascii' + four = b'4', 'latin1', 'strict' + self.assertEqual(OkayEnum.one, '1') + self.assertEqual(str(OkayEnum.one), 'one') + with self.assertWarns(DeprecationWarning): + self.assertEqual('{}'.format(OkayEnum.one), '1') + self.assertEqual(OkayEnum.one, '{}'.format(OkayEnum.one)) + self.assertEqual(repr(OkayEnum.one), 'OkayEnum.one') + # + class DumbMixin: + def __str__(self): + return "don't do this" + class DumbStrEnum(DumbMixin, CustomStrEnum): + five = '5' + six = '6' + seven = '7' + self.assertEqual(DumbStrEnum.seven, '7') + self.assertEqual(str(DumbStrEnum.seven), "don't do this") + # + class EnumMixin(Enum): + def hello(self): + print('hello from %s' % (self, )) + class HelloEnum(EnumMixin, CustomStrEnum): + eight = '8' + self.assertEqual(HelloEnum.eight, '8') + self.assertEqual(str(HelloEnum.eight), 'eight') + # + class GoodbyeMixin: + def goodbye(self): + print('%s wishes you a fond farewell') + class GoodbyeEnum(GoodbyeMixin, EnumMixin, CustomStrEnum): + nine = '9' + self.assertEqual(GoodbyeEnum.nine, '9') + self.assertEqual(str(GoodbyeEnum.nine), 'nine') + # + class FirstFailedStrEnum(CustomStrEnum): + one = 1 # this will become '1' + two = '2' + class SecondFailedStrEnum(CustomStrEnum): + one = '1' + two = 2, # this will become '2' + three = '3' + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = 2 # this will become '2' + with self.assertRaisesRegex(TypeError, '.encoding. must be str, not '): + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = b'2', sys.getdefaultencoding + with self.assertRaisesRegex(TypeError, '.errors. must be str, not '): + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = b'2', 'ascii', 9 + + @unittest.skipIf( + python_version < (3, 12), + 'mixin-format currently uses member.value', + ) + def test_custom_strenum(self): + class CustomStrEnum(str, Enum): + pass + class OkayEnum(CustomStrEnum): + one = '1' + two = '2' + three = b'3', 'ascii' + four = b'4', 'latin1', 'strict' + self.assertEqual(OkayEnum.one, '1') + self.assertEqual(str(OkayEnum.one), 'one') + self.assertEqual('{}'.format(OkayEnum.one), 'one') + self.assertEqual(repr(OkayEnum.one), 'OkayEnum.one') + # + class DumbMixin: + def __str__(self): + return "don't do this" + class DumbStrEnum(DumbMixin, CustomStrEnum): + five = '5' + six = '6' + seven = '7' + self.assertEqual(DumbStrEnum.seven, '7') + self.assertEqual(str(DumbStrEnum.seven), "don't do this") + # + class EnumMixin(Enum): + def hello(self): + print('hello from %s' % (self, )) + class HelloEnum(EnumMixin, CustomStrEnum): + eight = '8' + self.assertEqual(HelloEnum.eight, '8') + self.assertEqual(str(HelloEnum.eight), 'eight') + # + class GoodbyeMixin: + def goodbye(self): + print('%s wishes you a fond farewell') + class GoodbyeEnum(GoodbyeMixin, EnumMixin, CustomStrEnum): + nine = '9' + self.assertEqual(GoodbyeEnum.nine, '9') + self.assertEqual(str(GoodbyeEnum.nine), 'nine') + # + class FirstFailedStrEnum(CustomStrEnum): + one = 1 # this will become '1' + two = '2' + class SecondFailedStrEnum(CustomStrEnum): + one = '1' + two = 2, # this will become '2' + three = '3' + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = 2 # this will become '2' + with self.assertRaisesRegex(TypeError, '.encoding. must be str, not '): + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = b'2', sys.getdefaultencoding + with self.assertRaisesRegex(TypeError, '.errors. must be str, not '): + class ThirdFailedStrEnum(CustomStrEnum): + one = '1' + two = b'2', 'ascii', 9 + def test_missing_value_error(self): with self.assertRaisesRegex(TypeError, "_value_ not set in __new__"): class Combined(str, Enum): @@ -3080,15 +3224,19 @@ def test_repr(self): self.assertEqual(repr(~(Open.WO | Open.CE)), 'Open.RW') self.assertEqual(repr(Open(~4)), '-5') - @unittest.skipUnless( - python_version < (3, 12), - 'mixin-format now uses member instead of member.value', - ) def test_format(self): - with self.assertWarns(DeprecationWarning): - Perm = self.Perm - self.assertEqual(format(Perm.R, ''), '4') - self.assertEqual(format(Perm.R | Perm.X, ''), '5') + Perm = self.Perm + self.assertEqual(format(Perm.R, ''), '4') + self.assertEqual(format(Perm.R | Perm.X, ''), '5') + # + class NewPerm(IntFlag): + R = 1 << 2 + W = 1 << 1 + X = 1 << 0 + def __str__(self): + return self._name_ + self.assertEqual(format(NewPerm.R, ''), 'R') + self.assertEqual(format(NewPerm.R | Perm.X, ''), 'R|X') def test_or(self): Perm = self.Perm @@ -3979,10 +4127,6 @@ def test_convert_raise(self): ('test.test_enum', '__main__')[__name__=='__main__'], filter=lambda x: x.startswith('CONVERT_TEST_')) - @unittest.skipUnless( - python_version < (3, 12), - 'mixin-format now uses member instead of member.value', - ) def test_convert_repr_and_str(self): module = ('test.test_enum', '__main__')[__name__=='__main__'] test_type = enum.IntEnum._convert_( @@ -3991,8 +4135,7 @@ def test_convert_repr_and_str(self): filter=lambda x: x.startswith('CONVERT_STRING_TEST_')) self.assertEqual(repr(test_type.CONVERT_STRING_TEST_NAME_A), '%s.CONVERT_STRING_TEST_NAME_A' % module) self.assertEqual(str(test_type.CONVERT_STRING_TEST_NAME_A), 'CONVERT_STRING_TEST_NAME_A') - with self.assertWarns(DeprecationWarning): - self.assertEqual(format(test_type.CONVERT_STRING_TEST_NAME_A), '5') + self.assertEqual(format(test_type.CONVERT_STRING_TEST_NAME_A), '5') # global names for StrEnum._convert_ test CONVERT_STR_TEST_2 = 'goodbye' diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index cb0a3aa9e40451..aeea020d2416d2 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -259,7 +259,7 @@ def test_send_error(self): for code in (HTTPStatus.NO_CONTENT, HTTPStatus.NOT_MODIFIED, HTTPStatus.PROCESSING, HTTPStatus.RESET_CONTENT, HTTPStatus.SWITCHING_PROTOCOLS): - self.con.request('SEND_ERROR', '/{:d}'.format(code)) + self.con.request('SEND_ERROR', '/{}'.format(code)) res = self.con.getresponse() self.assertEqual(code, res.status) self.assertEqual(None, res.getheader('Content-Length')) @@ -276,7 +276,7 @@ def test_head_via_send_error(self): for code in (HTTPStatus.OK, HTTPStatus.NO_CONTENT, HTTPStatus.NOT_MODIFIED, HTTPStatus.RESET_CONTENT, HTTPStatus.SWITCHING_PROTOCOLS): - self.con.request('HEAD', '/{:d}'.format(code)) + self.con.request('HEAD', '/{}'.format(code)) res = self.con.getresponse() self.assertEqual(code, res.status) if code == HTTPStatus.OK: From webhook-mailer at python.org Fri Jun 18 18:08:43 2021 From: webhook-mailer at python.org (pablogsal) Date: Fri, 18 Jun 2021 22:08:43 -0000 Subject: [Python-checkins] Add a note about NameError/AttributeError suggestions with custom error functions (GH-26794) Message-ID: https://github.com/python/cpython/commit/83c9dad8da5fc90b717eef683304aaa49448615a commit: 83c9dad8da5fc90b717eef683304aaa49448615a branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-18T23:08:38+01:00 summary: Add a note about NameError/AttributeError suggestions with custom error functions (GH-26794) files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 9b9dd31a3beab..c45925756ffa8 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -345,6 +345,11 @@ raised from: (Contributed by Pablo Galindo in :issue:`38530`.) + .. warning:: + Notice this won't work if :c:func:`PyErr_Display` is not called to display the error + which can happen if some other custom error display function is used. This is a common + scenario in some REPLs like IPython. + NameErrors ~~~~~~~~~~ @@ -362,6 +367,12 @@ was raised from: (Contributed by Pablo Galindo in :issue:`38530`.) + .. warning:: + Notice this won't work if :c:func:`PyErr_Display` is not called to display the error, + which can happen if some other custom error display function is used. This is a common + scenario in some REPLs like IPython. + + PEP 626: Precise line numbers for debugging and other tools ----------------------------------------------------------- From webhook-mailer at python.org Fri Jun 18 20:19:52 2021 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Jun 2021 00:19:52 -0000 Subject: [Python-checkins] Remove dubious suggestion (GH-26789) Message-ID: https://github.com/python/cpython/commit/e5c7ee1156986c2046799ce523f0df54af51b7a3 commit: e5c7ee1156986c2046799ce523f0df54af51b7a3 branch: main author: Raymond Hettinger committer: rhettinger date: 2021-06-18T19:19:32-05:00 summary: Remove dubious suggestion (GH-26789) Remove the weakref example. If a new instance is created and the same arguments are passes, it raises a ReferenceError. files: M Doc/faq/programming.rst diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index a519275040491..af4b489fc8a48 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -1852,14 +1852,6 @@ bounded by the specified *maxsize*. The disadvantage is that instances are kept alive until they age out of the cache or until the cache is cleared. -To avoid keeping an instance alive, it can be wrapped a weak reference -proxy. That allows an instance to be freed prior aging out of the LRU -cache. That said, the weak reference technique is rarely needed. It is -only helpful when the instances hold large amounts of data and the -normal aging-out process isn't fast enough. And even though the -instance is released early, the cache still keeps references to the -other method arguments and to the result of the method call. - This example shows the various techniques:: class Weather: @@ -1884,16 +1876,6 @@ This example shows the various techniques:: "Rainfall on a given date" # Depends on the station_id, date, and units. - def climate(self, category='average_temperature'): - "List of daily average temperatures for a full year" - return self._climate(weakref.proxy(self), category) - - @staticmethod - @lru_cache(maxsize=10) - def _climate(self_proxy, category): - # Depends on a weak reference to the instance - # and on the category parameter. - The above example assumes that the *station_id* never changes. If the relevant instance attributes are mutable, the *cached_property* approach can't be made to work because it cannot detect changes to the From webhook-mailer at python.org Sat Jun 19 00:27:55 2021 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Jun 2021 04:27:55 -0000 Subject: [Python-checkins] Remove dubious suggestion (GH-26789) (#26797) Message-ID: https://github.com/python/cpython/commit/3cb70ab2fb706232274cb4eb8d8eb74a10794739 commit: 3cb70ab2fb706232274cb4eb8d8eb74a10794739 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-06-18T23:27:47-05:00 summary: Remove dubious suggestion (GH-26789) (#26797) files: M Doc/faq/programming.rst diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index a519275040491..af4b489fc8a48 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -1852,14 +1852,6 @@ bounded by the specified *maxsize*. The disadvantage is that instances are kept alive until they age out of the cache or until the cache is cleared. -To avoid keeping an instance alive, it can be wrapped a weak reference -proxy. That allows an instance to be freed prior aging out of the LRU -cache. That said, the weak reference technique is rarely needed. It is -only helpful when the instances hold large amounts of data and the -normal aging-out process isn't fast enough. And even though the -instance is released early, the cache still keeps references to the -other method arguments and to the result of the method call. - This example shows the various techniques:: class Weather: @@ -1884,16 +1876,6 @@ This example shows the various techniques:: "Rainfall on a given date" # Depends on the station_id, date, and units. - def climate(self, category='average_temperature'): - "List of daily average temperatures for a full year" - return self._climate(weakref.proxy(self), category) - - @staticmethod - @lru_cache(maxsize=10) - def _climate(self_proxy, category): - # Depends on a weak reference to the instance - # and on the category parameter. - The above example assumes that the *station_id* never changes. If the relevant instance attributes are mutable, the *cached_property* approach can't be made to work because it cannot detect changes to the From webhook-mailer at python.org Sat Jun 19 05:08:49 2021 From: webhook-mailer at python.org (tiran) Date: Sat, 19 Jun 2021 09:08:49 -0000 Subject: [Python-checkins] bpo-38820: Test with OpenSSL 3.0.0-beta1 (GH-26769) Message-ID: https://github.com/python/cpython/commit/44fb55149934d8fb095edb6fc3f8167208035b96 commit: 44fb55149934d8fb095edb6fc3f8167208035b96 branch: main author: Christian Heimes committer: tiran date: 2021-06-19T11:08:41+02:00 summary: bpo-38820: Test with OpenSSL 3.0.0-beta1 (GH-26769) Signed-off-by: Christian Heimes files: M .github/workflows/build.yml M Tools/ssl/multissltests.py diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 00506bdf1af392..1140c86dfa665d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -179,7 +179,7 @@ jobs: strategy: fail-fast: false matrix: - openssl_ver: [1.1.1k, 3.0.0-alpha17] + openssl_ver: [1.1.1k, 3.0.0-beta1] env: OPENSSL_VER: ${{ matrix.openssl_ver }} MULTISSL_DIR: ${{ github.workspace }}/multissl diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py index ec7c0661f7595f..25ce2faffacfc3 100755 --- a/Tools/ssl/multissltests.py +++ b/Tools/ssl/multissltests.py @@ -48,7 +48,7 @@ OPENSSL_RECENT_VERSIONS = [ "1.1.1k", - "3.0.0-alpha17" + "3.0.0-beta1" ] LIBRESSL_OLD_VERSIONS = [ From webhook-mailer at python.org Sat Jun 19 06:45:10 2021 From: webhook-mailer at python.org (miss-islington) Date: Sat, 19 Jun 2021 10:45:10 -0000 Subject: [Python-checkins] [3.10] bpo-38820: Test with OpenSSL 3.0.0-beta1 (GH-26769) (GH-26799) Message-ID: https://github.com/python/cpython/commit/c6cd2ecdb64d16f640ff255e5a267b95974a8041 commit: c6cd2ecdb64d16f640ff255e5a267b95974a8041 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-19T03:44:37-07:00 summary: [3.10] bpo-38820: Test with OpenSSL 3.0.0-beta1 (GH-26769) (GH-26799) Signed-off-by: Christian Heimes (cherry picked from commit 44fb55149934d8fb095edb6fc3f8167208035b96) Co-authored-by: Christian Heimes Automerge-Triggered-By: GH:tiran files: M .github/workflows/build.yml M Tools/ssl/multissltests.py diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0aa0d6daca9c55..cd49b1dba0fc06 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -201,7 +201,7 @@ jobs: strategy: fail-fast: false matrix: - openssl_ver: [1.1.1k, 3.0.0-alpha17] + openssl_ver: [1.1.1k, 3.0.0-beta1] env: OPENSSL_VER: ${{ matrix.openssl_ver }} MULTISSL_DIR: ${{ github.workspace }}/multissl diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py index ec7c0661f7595f..25ce2faffacfc3 100755 --- a/Tools/ssl/multissltests.py +++ b/Tools/ssl/multissltests.py @@ -48,7 +48,7 @@ OPENSSL_RECENT_VERSIONS = [ "1.1.1k", - "3.0.0-alpha17" + "3.0.0-beta1" ] LIBRESSL_OLD_VERSIONS = [ From webhook-mailer at python.org Sat Jun 19 08:45:33 2021 From: webhook-mailer at python.org (zooba) Date: Sat, 19 Jun 2021 12:45:33 -0000 Subject: [Python-checkins] bpo-43298: Improved error message when building without the Windows SDK installed (GH-26800) Message-ID: https://github.com/python/cpython/commit/80190b3e533097b55077becddc75423318ab2371 commit: 80190b3e533097b55077becddc75423318ab2371 branch: main author: Steve Dower committer: zooba date: 2021-06-19T13:45:16+01:00 summary: bpo-43298: Improved error message when building without the Windows SDK installed (GH-26800) files: A Misc/NEWS.d/next/Build/2021-06-19-11-50-03.bpo-43298.9ircMb.rst M PCbuild/python.props diff --git a/Misc/NEWS.d/next/Build/2021-06-19-11-50-03.bpo-43298.9ircMb.rst b/Misc/NEWS.d/next/Build/2021-06-19-11-50-03.bpo-43298.9ircMb.rst new file mode 100644 index 00000000000000..3bdc24b147a3ef --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-19-11-50-03.bpo-43298.9ircMb.rst @@ -0,0 +1 @@ +Improved error message when building without a Windows SDK installed. diff --git a/PCbuild/python.props b/PCbuild/python.props index 419d5ebe84c2d1..4a56d50b8b7655 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -108,9 +108,18 @@ 10.0.10586.0 - $(_RegistryVersion) + $(_RegistryVersion) - + + + + <_Message>Failed to locate a Windows SDK installation. + <_Message>$(_Message) If the build fails, please use the Visual Studio Installer to install the Windows SDK. + <_Message>$(_Message) (Ignore the version number specified in the error message and select the latest.) + + + + $(DefaultWindowsSDKVersion) @@ -175,7 +184,7 @@ 11 12 - + $(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber) $(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)$(ReleaseLevelName) From webhook-mailer at python.org Sat Jun 19 10:32:42 2021 From: webhook-mailer at python.org (mdickinson) Date: Sat, 19 Jun 2021 14:32:42 -0000 Subject: [Python-checkins] bpo-44426: Fix use of the C keyword 'default' as a variable name (GH-26798) Message-ID: https://github.com/python/cpython/commit/291848195f85e23c01adb76d5a0ff9c6eb7f2614 commit: 291848195f85e23c01adb76d5a0ff9c6eb7f2614 branch: main author: Mark Dickinson committer: mdickinson date: 2021-06-19T15:32:24+01:00 summary: bpo-44426: Fix use of the C keyword 'default' as a variable name (GH-26798) files: M Doc/c-api/object.rst diff --git a/Doc/c-api/object.rst b/Doc/c-api/object.rst index 42e3340acb79a..70cff69dc16c1 100644 --- a/Doc/c-api/object.rst +++ b/Doc/c-api/object.rst @@ -311,12 +311,12 @@ Object Protocol returned. This is the equivalent to the Python expression ``len(o)``. -.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default) +.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue) Return an estimated length for the object *o*. First try to return its actual length, then an estimate using :meth:`~object.__length_hint__`, and finally return the default value. On error return ``-1``. This is the - equivalent to the Python expression ``operator.length_hint(o, default)``. + equivalent to the Python expression ``operator.length_hint(o, defaultvalue)``. .. versionadded:: 3.4 From webhook-mailer at python.org Sat Jun 19 11:16:17 2021 From: webhook-mailer at python.org (mdickinson) Date: Sat, 19 Jun 2021 15:16:17 -0000 Subject: [Python-checkins] bpo-44426: Fix use of the C keyword 'default' as a variable name (GH-26798) (GH-26804) Message-ID: https://github.com/python/cpython/commit/139c5778c26aaf25b51fcfabd88c99ba728beaea commit: 139c5778c26aaf25b51fcfabd88c99ba728beaea branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: mdickinson date: 2021-06-19T16:16:13+01:00 summary: bpo-44426: Fix use of the C keyword 'default' as a variable name (GH-26798) (GH-26804) (cherry picked from commit 291848195f85e23c01adb76d5a0ff9c6eb7f2614) files: M Doc/c-api/object.rst diff --git a/Doc/c-api/object.rst b/Doc/c-api/object.rst index 42e3340acb79a..70cff69dc16c1 100644 --- a/Doc/c-api/object.rst +++ b/Doc/c-api/object.rst @@ -311,12 +311,12 @@ Object Protocol returned. This is the equivalent to the Python expression ``len(o)``. -.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default) +.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue) Return an estimated length for the object *o*. First try to return its actual length, then an estimate using :meth:`~object.__length_hint__`, and finally return the default value. On error return ``-1``. This is the - equivalent to the Python expression ``operator.length_hint(o, default)``. + equivalent to the Python expression ``operator.length_hint(o, defaultvalue)``. .. versionadded:: 3.4 From webhook-mailer at python.org Sat Jun 19 11:16:41 2021 From: webhook-mailer at python.org (mdickinson) Date: Sat, 19 Jun 2021 15:16:41 -0000 Subject: [Python-checkins] bpo-44426: Fix use of the C keyword 'default' as a variable name (GH-26798) (GH-26805) Message-ID: https://github.com/python/cpython/commit/533bff4e9fe221a7c9cf12795fd2d002e87bfa6a commit: 533bff4e9fe221a7c9cf12795fd2d002e87bfa6a branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: mdickinson date: 2021-06-19T16:16:38+01:00 summary: bpo-44426: Fix use of the C keyword 'default' as a variable name (GH-26798) (GH-26805) (cherry picked from commit 291848195f85e23c01adb76d5a0ff9c6eb7f2614) files: M Doc/c-api/object.rst diff --git a/Doc/c-api/object.rst b/Doc/c-api/object.rst index a387b4a2df134..05faa72346ed6 100644 --- a/Doc/c-api/object.rst +++ b/Doc/c-api/object.rst @@ -311,12 +311,12 @@ Object Protocol returned. This is the equivalent to the Python expression ``len(o)``. -.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default) +.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue) Return an estimated length for the object *o*. First try to return its actual length, then an estimate using :meth:`~object.__length_hint__`, and finally return the default value. On error return ``-1``. This is the - equivalent to the Python expression ``operator.length_hint(o, default)``. + equivalent to the Python expression ``operator.length_hint(o, defaultvalue)``. .. versionadded:: 3.4 From webhook-mailer at python.org Sat Jun 19 13:31:28 2021 From: webhook-mailer at python.org (gvanrossum) Date: Sat, 19 Jun 2021 17:31:28 -0000 Subject: [Python-checkins] bpo-38291: DeprecationWarning when importing typing.{io, re} (#26719) Message-ID: https://github.com/python/cpython/commit/09eb81711597725f853e4f3b659ce185488b0d8c commit: 09eb81711597725f853e4f3b659ce185488b0d8c branch: main author: Sebastian Rittau committer: gvanrossum date: 2021-06-19T10:31:18-07:00 summary: bpo-38291: DeprecationWarning when importing typing.{io,re} (#26719) files: A Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst M Lib/importlib/resources.py M Lib/test/test_typing.py M Lib/typing.py diff --git a/Lib/importlib/resources.py b/Lib/importlib/resources.py index 8a98663ff8e6d..bb5c354d9f00a 100644 --- a/Lib/importlib/resources.py +++ b/Lib/importlib/resources.py @@ -11,8 +11,7 @@ from pathlib import Path from types import ModuleType from typing import ContextManager, Iterable, Union -from typing import cast -from typing.io import BinaryIO, TextIO +from typing import cast, BinaryIO, TextIO from collections.abc import Sequence from functools import singledispatch diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 79c5c3a910407..06df3e23264cb 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -3,6 +3,7 @@ import pickle import re import sys +import warnings from unittest import TestCase, main, skipUnless, skip from copy import copy, deepcopy @@ -1976,7 +1977,7 @@ def test_weakref_all(self): T = TypeVar('T') things = [Any, Union[T, int], Callable[..., T], Tuple[Any, Any], Optional[List[int]], typing.Mapping[int, str], - typing.re.Match[bytes], typing.Iterable['whatever']] + typing.Match[bytes], typing.Iterable['whatever']] for t in things: self.assertEqual(weakref.ref(t)(), t) @@ -3996,12 +3997,14 @@ def stuff(a: BinaryIO) -> bytes: self.assertEqual(a.__parameters__, ()) def test_io_submodule(self): - from typing.io import IO, TextIO, BinaryIO, __all__, __name__ - self.assertIs(IO, typing.IO) - self.assertIs(TextIO, typing.TextIO) - self.assertIs(BinaryIO, typing.BinaryIO) - self.assertEqual(set(__all__), set(['IO', 'TextIO', 'BinaryIO'])) - self.assertEqual(__name__, 'typing.io') + with warnings.catch_warnings(record=True) as w: + from typing.io import IO, TextIO, BinaryIO, __all__, __name__ + self.assertIs(IO, typing.IO) + self.assertIs(TextIO, typing.TextIO) + self.assertIs(BinaryIO, typing.BinaryIO) + self.assertEqual(set(__all__), set(['IO', 'TextIO', 'BinaryIO'])) + self.assertEqual(__name__, 'typing.io') + self.assertEqual(len(w), 1) class RETests(BaseTestCase): @@ -4048,11 +4051,13 @@ def test_repr(self): self.assertEqual(repr(Match[bytes]), 'typing.Match[bytes]') def test_re_submodule(self): - from typing.re import Match, Pattern, __all__, __name__ - self.assertIs(Match, typing.Match) - self.assertIs(Pattern, typing.Pattern) - self.assertEqual(set(__all__), set(['Match', 'Pattern'])) - self.assertEqual(__name__, 'typing.re') + with warnings.catch_warnings(record=True) as w: + from typing.re import Match, Pattern, __all__, __name__ + self.assertIs(Match, typing.Match) + self.assertIs(Pattern, typing.Pattern) + self.assertEqual(set(__all__), set(['Match', 'Pattern'])) + self.assertEqual(__name__, 'typing.re') + self.assertEqual(len(w), 1) def test_cannot_subclass(self): with self.assertRaises(TypeError) as ex: diff --git a/Lib/typing.py b/Lib/typing.py index 8fadb571f41dc..00a0df591cbfc 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -28,6 +28,7 @@ import re as stdlib_re # Avoid confusion with the re we export. import sys import types +import warnings from types import WrapperDescriptorType, MethodWrapperType, MethodDescriptorType, GenericAlias # Please keep __all__ alphabetized within each category. @@ -2512,7 +2513,20 @@ def __enter__(self) -> 'TextIO': pass -class io: +class _DeprecatedType(type): + def __getattribute__(cls, name): + if name != "__dict__" and name in cls.__dict__: + warnings.warn( + f"{cls.__name__} is deprecated, import directly " + f"from typing instead. {cls.__name__} will be removed " + "in Python 3.12.", + DeprecationWarning, + stacklevel=2, + ) + return super().__getattribute__(name) + + +class io(metaclass=_DeprecatedType): """Wrapper namespace for IO generic classes.""" __all__ = ['IO', 'TextIO', 'BinaryIO'] @@ -2527,7 +2541,7 @@ class io: Pattern = _alias(stdlib_re.Pattern, 1) Match = _alias(stdlib_re.Match, 1) -class re: +class re(metaclass=_DeprecatedType): """Wrapper namespace for re type aliases.""" __all__ = ['Pattern', 'Match'] diff --git a/Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst b/Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst new file mode 100644 index 0000000000000..7fb891dd4bc0c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst @@ -0,0 +1 @@ +Importing typing.io or typing.re now prints a `DeprecationWarning`. From webhook-mailer at python.org Sun Jun 20 15:22:50 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 19:22:50 -0000 Subject: [Python-checkins] Add a note about NameError/AttributeError suggestions with custom error functions (GH-26794) (GH-26796) Message-ID: https://github.com/python/cpython/commit/344487b9561612ab2aef7fac86eab2f0d914443f commit: 344487b9561612ab2aef7fac86eab2f0d914443f branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-20T20:22:40+01:00 summary: Add a note about NameError/AttributeError suggestions with custom error functions (GH-26794) (GH-26796) (cherry picked from commit 83c9dad8da5fc90b717eef683304aaa49448615a) Co-authored-by: Pablo Galindo Co-authored-by: Pablo Galindo files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 6bd4157164f5be..10e6ab71673982 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -345,6 +345,11 @@ raised from: (Contributed by Pablo Galindo in :issue:`38530`.) + .. warning:: + Notice this won't work if :c:func:`PyErr_Display` is not called to display the error + which can happen if some other custom error display function is used. This is a common + scenario in some REPLs like IPython. + NameErrors ~~~~~~~~~~ @@ -362,6 +367,12 @@ was raised from: (Contributed by Pablo Galindo in :issue:`38530`.) + .. warning:: + Notice this won't work if :c:func:`PyErr_Display` is not called to display the error, + which can happen if some other custom error display function is used. This is a common + scenario in some REPLs like IPython. + + PEP 626: Precise line numbers for debugging and other tools ----------------------------------------------------------- From webhook-mailer at python.org Sun Jun 20 15:24:04 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 19:24:04 -0000 Subject: [Python-checkins] bpo-40956: Convert sqlite3.connect and sqlite3.Connection.__init__ to AC (GH-24421) Message-ID: https://github.com/python/cpython/commit/185ecdc1463c527743eeb16a5deef75c1985de79 commit: 185ecdc1463c527743eeb16a5deef75c1985de79 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-20T20:24:00+01:00 summary: bpo-40956: Convert sqlite3.connect and sqlite3.Connection.__init__ to AC (GH-24421) files: A Misc/NEWS.d/next/Library/2020-10-01-21-46-34.bpo-40956._tvsZ7.rst M Lib/sqlite3/test/dbapi.py M Modules/_sqlite/clinic/connection.c.h M Modules/_sqlite/clinic/module.c.h M Modules/_sqlite/connection.c M Modules/_sqlite/module.c diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 4bda6aa393e3ff..2924231245460c 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -27,6 +27,7 @@ import unittest from test.support.os_helper import TESTFN, unlink +from test.support import threading_helper # Helper for tests using TESTFN @@ -224,6 +225,10 @@ def test_open_uri(self): with managed_connect(f"file:{TESTFN}?mode=ro", uri=True) as cx: cx.execute(self._sql) + def test_database_keyword(self): + with sqlite.connect(database=":memory:") as cx: + self.assertEqual(type(cx), sqlite.Connection) + class CursorTests(unittest.TestCase): def setUp(self): @@ -724,6 +729,22 @@ def run(cur, errors): if len(errors) > 0: self.fail("\n".join(errors)) + @threading_helper.reap_threads + def test_dont_check_same_thread(self): + def run(con, err): + try: + con.execute("select 1") + except sqlite.Error: + err.append("multi-threading not allowed") + + con = sqlite.connect(":memory:", check_same_thread=False) + err = [] + t = threading.Thread(target=run, kwargs={"con": con, "err": err}) + t.start() + t.join() + self.assertEqual(len(err), 0, "\n".join(err)) + + class ConstructorTests(unittest.TestCase): def test_date(self): d = sqlite.Date(2004, 10, 28) diff --git a/Misc/NEWS.d/next/Library/2020-10-01-21-46-34.bpo-40956._tvsZ7.rst b/Misc/NEWS.d/next/Library/2020-10-01-21-46-34.bpo-40956._tvsZ7.rst new file mode 100644 index 00000000000000..adec299d2316a8 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-01-21-46-34.bpo-40956._tvsZ7.rst @@ -0,0 +1 @@ +Use Argument Clinic in :mod:`sqlite3`. Patches by Erlend E. Aasland. diff --git a/Modules/_sqlite/clinic/connection.c.h b/Modules/_sqlite/clinic/connection.c.h index 41104e23dfdee2..b5809647a092a0 100644 --- a/Modules/_sqlite/clinic/connection.c.h +++ b/Modules/_sqlite/clinic/connection.c.h @@ -2,6 +2,107 @@ preserve [clinic start generated code]*/ +static int +pysqlite_connection_init_impl(pysqlite_Connection *self, + PyObject *database_obj, double timeout, + int detect_types, PyObject *isolation_level, + int check_same_thread, PyObject *factory, + int cached_statements, int uri); + +static int +pysqlite_connection_init(PyObject *self, PyObject *args, PyObject *kwargs) +{ + int return_value = -1; + static const char * const _keywords[] = {"database", "timeout", "detect_types", "isolation_level", "check_same_thread", "factory", "cached_statements", "uri", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "Connection", 0}; + PyObject *argsbuf[8]; + PyObject * const *fastargs; + Py_ssize_t nargs = PyTuple_GET_SIZE(args); + Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; + PyObject *database_obj; + double timeout = 5.0; + int detect_types = 0; + PyObject *isolation_level = NULL; + int check_same_thread = 1; + PyObject *factory = (PyObject*)clinic_state()->ConnectionType; + int cached_statements = 128; + int uri = 0; + + fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 8, 0, argsbuf); + if (!fastargs) { + goto exit; + } + if (!PyUnicode_FSConverter(fastargs[0], &database_obj)) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + if (fastargs[1]) { + if (PyFloat_CheckExact(fastargs[1])) { + timeout = PyFloat_AS_DOUBLE(fastargs[1]); + } + else + { + timeout = PyFloat_AsDouble(fastargs[1]); + if (timeout == -1.0 && PyErr_Occurred()) { + goto exit; + } + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[2]) { + detect_types = _PyLong_AsInt(fastargs[2]); + if (detect_types == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[3]) { + isolation_level = fastargs[3]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[4]) { + check_same_thread = _PyLong_AsInt(fastargs[4]); + if (check_same_thread == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[5]) { + factory = fastargs[5]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[6]) { + cached_statements = _PyLong_AsInt(fastargs[6]); + if (cached_statements == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + uri = PyObject_IsTrue(fastargs[7]); + if (uri < 0) { + goto exit; + } +skip_optional_pos: + return_value = pysqlite_connection_init_impl((pysqlite_Connection *)self, database_obj, timeout, detect_types, isolation_level, check_same_thread, factory, cached_statements, uri); + +exit: + return return_value; +} + PyDoc_STRVAR(pysqlite_connection_cursor__doc__, "cursor($self, /, factory=)\n" "--\n" @@ -710,4 +811,4 @@ pysqlite_connection_exit(pysqlite_Connection *self, PyObject *const *args, Py_ss #ifndef PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF #define PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF #endif /* !defined(PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF) */ -/*[clinic end generated code: output=1ee2f6173f4acec3 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=c350732a2758c8c1 input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/clinic/module.c.h b/Modules/_sqlite/clinic/module.c.h index 18557355061fa8..667343da97f74f 100644 --- a/Modules/_sqlite/clinic/module.c.h +++ b/Modules/_sqlite/clinic/module.c.h @@ -2,6 +2,118 @@ preserve [clinic start generated code]*/ +PyDoc_STRVAR(pysqlite_connect__doc__, +"connect($module, /, database, timeout=5.0, detect_types=0,\n" +" isolation_level=, check_same_thread=True,\n" +" factory=ConnectionType, cached_statements=128, uri=False)\n" +"--\n" +"\n" +"Opens a connection to the SQLite database file database.\n" +"\n" +"You can use \":memory:\" to open a database connection to a database that resides\n" +"in RAM instead of on disk."); + +#define PYSQLITE_CONNECT_METHODDEF \ + {"connect", (PyCFunction)(void(*)(void))pysqlite_connect, METH_FASTCALL|METH_KEYWORDS, pysqlite_connect__doc__}, + +static PyObject * +pysqlite_connect_impl(PyObject *module, PyObject *database, double timeout, + int detect_types, PyObject *isolation_level, + int check_same_thread, PyObject *factory, + int cached_statements, int uri); + +static PyObject * +pysqlite_connect(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"database", "timeout", "detect_types", "isolation_level", "check_same_thread", "factory", "cached_statements", "uri", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "connect", 0}; + PyObject *argsbuf[8]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; + PyObject *database; + double timeout = 5.0; + int detect_types = 0; + PyObject *isolation_level = NULL; + int check_same_thread = 1; + PyObject *factory = (PyObject*)clinic_state()->ConnectionType; + int cached_statements = 128; + int uri = 0; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 8, 0, argsbuf); + if (!args) { + goto exit; + } + if (!PyUnicode_FSConverter(args[0], &database)) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + if (args[1]) { + if (PyFloat_CheckExact(args[1])) { + timeout = PyFloat_AS_DOUBLE(args[1]); + } + else + { + timeout = PyFloat_AsDouble(args[1]); + if (timeout == -1.0 && PyErr_Occurred()) { + goto exit; + } + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[2]) { + detect_types = _PyLong_AsInt(args[2]); + if (detect_types == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[3]) { + isolation_level = args[3]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[4]) { + check_same_thread = _PyLong_AsInt(args[4]); + if (check_same_thread == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[5]) { + factory = args[5]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[6]) { + cached_statements = _PyLong_AsInt(args[6]); + if (cached_statements == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + uri = PyObject_IsTrue(args[7]); + if (uri < 0) { + goto exit; + } +skip_optional_pos: + return_value = pysqlite_connect_impl(module, database, timeout, detect_types, isolation_level, check_same_thread, factory, cached_statements, uri); + +exit: + return return_value; +} + PyDoc_STRVAR(pysqlite_complete_statement__doc__, "complete_statement($module, /, statement)\n" "--\n" @@ -219,4 +331,4 @@ pysqlite_adapt(PyObject *module, PyObject *const *args, Py_ssize_t nargs) exit: return return_value; } -/*[clinic end generated code: output=e9c2442673289cab input=a9049054013a1b77]*/ +/*[clinic end generated code: output=ef03fdbf018d3391 input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index e1eef587c4464e..11656b8a900342 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -79,40 +79,34 @@ new_statement_cache(pysqlite_Connection *self, int maxsize) return res; } +/*[clinic input] +_sqlite3.Connection.__init__ as pysqlite_connection_init + + database as database_obj: object(converter='PyUnicode_FSConverter') + timeout: double = 5.0 + detect_types: int = 0 + isolation_level: object = NULL + check_same_thread: bool(accept={int}) = True + factory: object(c_default='(PyObject*)clinic_state()->ConnectionType') = ConnectionType + cached_statements: int = 128 + uri: bool = False +[clinic start generated code]*/ + static int -pysqlite_connection_init(pysqlite_Connection *self, PyObject *args, - PyObject *kwargs) +pysqlite_connection_init_impl(pysqlite_Connection *self, + PyObject *database_obj, double timeout, + int detect_types, PyObject *isolation_level, + int check_same_thread, PyObject *factory, + int cached_statements, int uri) +/*[clinic end generated code: output=dc19df1c0e2b7b77 input=aa1f21bf12fe907a]*/ { - static char *kwlist[] = { - "database", "timeout", "detect_types", "isolation_level", - "check_same_thread", "factory", "cached_statements", "uri", - NULL - }; - - const char* database; - PyObject* database_obj; - int detect_types = 0; - PyObject* isolation_level = NULL; - PyObject* factory = NULL; - int check_same_thread = 1; - int cached_statements = 128; - int uri = 0; - double timeout = 5.0; int rc; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&|diOiOip", kwlist, - PyUnicode_FSConverter, &database_obj, &timeout, &detect_types, - &isolation_level, &check_same_thread, - &factory, &cached_statements, &uri)) - { - return -1; - } - if (PySys_Audit("sqlite3.connect", "O", database_obj) < 0) { return -1; } - database = PyBytes_AsString(database_obj); + const char *database = PyBytes_AsString(database_obj); self->initialized = 1; @@ -134,7 +128,7 @@ pysqlite_connection_init(pysqlite_Connection *self, PyObject *args, (uri ? SQLITE_OPEN_URI : 0), NULL); Py_END_ALLOW_THREADS - Py_DECREF(database_obj); + Py_DECREF(database_obj); // needed bco. the AC FSConverter if (rc != SQLITE_OK) { _pysqlite_seterror(self->db); diff --git a/Modules/_sqlite/module.c b/Modules/_sqlite/module.c index 9587cbd4b9971c..6adadf69216396 100644 --- a/Modules/_sqlite/module.c +++ b/Modules/_sqlite/module.c @@ -60,50 +60,49 @@ int pysqlite_BaseTypeAdapted = 0; pysqlite_state pysqlite_global_state; -static PyObject* module_connect(PyObject* self, PyObject* args, PyObject* - kwargs) -{ - /* Python seems to have no way of extracting a single keyword-arg at - * C-level, so this code is redundant with the one in connection_init in - * connection.c and must always be copied from there ... */ +// NOTE: This must equal sqlite3.Connection.__init__ argument spec! +/*[clinic input] +_sqlite3.connect as pysqlite_connect - static char *kwlist[] = { - "database", "timeout", "detect_types", "isolation_level", - "check_same_thread", "factory", "cached_statements", "uri", - NULL - }; - PyObject* database; - int detect_types = 0; - PyObject* isolation_level; - PyObject* factory = NULL; - int check_same_thread = 1; - int cached_statements; - int uri = 0; - double timeout = 5.0; - - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|diOiOip", kwlist, - &database, &timeout, &detect_types, - &isolation_level, &check_same_thread, - &factory, &cached_statements, &uri)) - { - return NULL; - } + database: object(converter='PyUnicode_FSConverter') + timeout: double = 5.0 + detect_types: int = 0 + isolation_level: object = NULL + check_same_thread: bool(accept={int}) = True + factory: object(c_default='(PyObject*)clinic_state()->ConnectionType') = ConnectionType + cached_statements: int = 128 + uri: bool = False - if (factory == NULL) { - pysqlite_state *state = pysqlite_get_state(self); - factory = (PyObject *)state->ConnectionType; - } +Opens a connection to the SQLite database file database. - return PyObject_Call(factory, args, kwargs); -} +You can use ":memory:" to open a database connection to a database that resides +in RAM instead of on disk. +[clinic start generated code]*/ -PyDoc_STRVAR(module_connect_doc, -"connect(database[, timeout, detect_types, isolation_level,\n\ - check_same_thread, factory, cached_statements, uri])\n\ -\n\ -Opens a connection to the SQLite database file *database*. You can use\n\ -\":memory:\" to open a database connection to a database that resides in\n\ -RAM instead of on disk."); +static PyObject * +pysqlite_connect_impl(PyObject *module, PyObject *database, double timeout, + int detect_types, PyObject *isolation_level, + int check_same_thread, PyObject *factory, + int cached_statements, int uri) +/*[clinic end generated code: output=450ac9078b4868bb input=ea6355ba55a78e12]*/ +{ + if (isolation_level == NULL) { + isolation_level = PyUnicode_FromString(""); + if (isolation_level == NULL) { + return NULL; + } + } + else { + Py_INCREF(isolation_level); + } + PyObject *res = PyObject_CallFunction(factory, "OdiOiOii", database, + timeout, detect_types, + isolation_level, check_same_thread, + factory, cached_statements, uri); + Py_DECREF(database); // needed bco. the AC FSConverter + Py_DECREF(isolation_level); + return res; +} /*[clinic input] _sqlite3.complete_statement as pysqlite_complete_statement @@ -287,10 +286,9 @@ load_functools_lru_cache(PyObject *module) } static PyMethodDef module_methods[] = { - {"connect", (PyCFunction)(void(*)(void))module_connect, - METH_VARARGS | METH_KEYWORDS, module_connect_doc}, PYSQLITE_ADAPT_METHODDEF PYSQLITE_COMPLETE_STATEMENT_METHODDEF + PYSQLITE_CONNECT_METHODDEF PYSQLITE_ENABLE_CALLBACK_TRACE_METHODDEF PYSQLITE_ENABLE_SHARED_CACHE_METHODDEF PYSQLITE_REGISTER_ADAPTER_METHODDEF From webhook-mailer at python.org Sun Jun 20 15:24:36 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 19:24:36 -0000 Subject: [Python-checkins] bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567) Message-ID: https://github.com/python/cpython/commit/7d0a47e1affd0a2f56600f3e9473f55f931595bd commit: 7d0a47e1affd0a2f56600f3e9473f55f931595bd branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-20T20:24:32+01:00 summary: bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567) files: M Lib/sqlite3/test/dbapi.py M Modules/_sqlite/statement.c diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 2924231245460c..e8bd8c59947cdd 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -26,6 +26,7 @@ import threading import unittest +from test.support import check_disallow_instantiation from test.support.os_helper import TESTFN, unlink from test.support import threading_helper @@ -105,6 +106,10 @@ def test_shared_cache_deprecated(self): sqlite.enable_shared_cache(enable) self.assertIn("dbapi.py", cm.filename) + def test_disallow_instantiation(self): + cx = sqlite.connect(":memory:") + check_disallow_instantiation(self, type(cx("select 1"))) + class ConnectionTests(unittest.TestCase): diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 3960b21c859435..fcf13809763f3e 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -503,7 +503,7 @@ static PyType_Spec stmt_spec = { .name = MODULE_NAME ".Statement", .basicsize = sizeof(pysqlite_Statement), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_IMMUTABLETYPE), + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION), .slots = stmt_slots, }; From webhook-mailer at python.org Sun Jun 20 15:26:44 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 19:26:44 -0000 Subject: [Python-checkins] bpo-44430: Refactor `sqlite3` threading tests (GH-26748) Message-ID: https://github.com/python/cpython/commit/5f0fc30de46d41dccf04096df12664fc0a684ca2 commit: 5f0fc30de46d41dccf04096df12664fc0a684ca2 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-20T20:26:36+01:00 summary: bpo-44430: Refactor `sqlite3` threading tests (GH-26748) 1. Rewrite ThreadTests with a _run_test() helper method that does the heavy lifting 2. Add test.support.threading_helper.reap_threads to _run_test() 3. Use _run_test() in all threading tests 4. Add test case for sqlite3.Connection.set_trace_callback 5. Add test case for sqlite3.Connection.create_collation files: M Lib/sqlite3/test/dbapi.py diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index e8bd8c59947cd..c9bcac9bb8327 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -581,158 +581,54 @@ class ThreadTests(unittest.TestCase): def setUp(self): self.con = sqlite.connect(":memory:") self.cur = self.con.cursor() - self.cur.execute("create table test(id integer primary key, name text, bin binary, ratio number, ts timestamp)") + self.cur.execute("create table test(name text)") def tearDown(self): self.cur.close() self.con.close() - def test_con_cursor(self): - def run(con, errors): - try: - cur = con.cursor() - errors.append("did not raise ProgrammingError") - return - except sqlite.ProgrammingError: - return - except: - errors.append("raised wrong exception") - - errors = [] - t = threading.Thread(target=run, kwargs={"con": self.con, "errors": errors}) - t.start() - t.join() - if len(errors) > 0: - self.fail("\n".join(errors)) - - def test_con_commit(self): - def run(con, errors): - try: - con.commit() - errors.append("did not raise ProgrammingError") - return - except sqlite.ProgrammingError: - return - except: - errors.append("raised wrong exception") - - errors = [] - t = threading.Thread(target=run, kwargs={"con": self.con, "errors": errors}) - t.start() - t.join() - if len(errors) > 0: - self.fail("\n".join(errors)) - - def test_con_rollback(self): - def run(con, errors): - try: - con.rollback() - errors.append("did not raise ProgrammingError") - return - except sqlite.ProgrammingError: - return - except: - errors.append("raised wrong exception") - - errors = [] - t = threading.Thread(target=run, kwargs={"con": self.con, "errors": errors}) - t.start() - t.join() - if len(errors) > 0: - self.fail("\n".join(errors)) - - def test_con_close(self): - def run(con, errors): - try: - con.close() - errors.append("did not raise ProgrammingError") - return - except sqlite.ProgrammingError: - return - except: - errors.append("raised wrong exception") - - errors = [] - t = threading.Thread(target=run, kwargs={"con": self.con, "errors": errors}) - t.start() - t.join() - if len(errors) > 0: - self.fail("\n".join(errors)) - - def test_cur_implicit_begin(self): - def run(cur, errors): - try: - cur.execute("insert into test(name) values ('a')") - errors.append("did not raise ProgrammingError") - return - except sqlite.ProgrammingError: - return - except: - errors.append("raised wrong exception") - - errors = [] - t = threading.Thread(target=run, kwargs={"cur": self.cur, "errors": errors}) - t.start() - t.join() - if len(errors) > 0: - self.fail("\n".join(errors)) - - def test_cur_close(self): - def run(cur, errors): - try: - cur.close() - errors.append("did not raise ProgrammingError") - return - except sqlite.ProgrammingError: - return - except: - errors.append("raised wrong exception") - - errors = [] - t = threading.Thread(target=run, kwargs={"cur": self.cur, "errors": errors}) - t.start() - t.join() - if len(errors) > 0: - self.fail("\n".join(errors)) - - def test_cur_execute(self): - def run(cur, errors): + @threading_helper.reap_threads + def _run_test(self, fn, *args, **kwds): + def run(err): try: - cur.execute("select name from test") - errors.append("did not raise ProgrammingError") - return + fn(*args, **kwds) + err.append("did not raise ProgrammingError") except sqlite.ProgrammingError: - return + pass except: - errors.append("raised wrong exception") + err.append("raised wrong exception") - errors = [] - self.cur.execute("insert into test(name) values ('a')") - t = threading.Thread(target=run, kwargs={"cur": self.cur, "errors": errors}) + err = [] + t = threading.Thread(target=run, kwargs={"err": err}) t.start() t.join() - if len(errors) > 0: - self.fail("\n".join(errors)) - - def test_cur_iter_next(self): - def run(cur, errors): - try: - row = cur.fetchone() - errors.append("did not raise ProgrammingError") - return - except sqlite.ProgrammingError: - return - except: - errors.append("raised wrong exception") + if err: + self.fail("\n".join(err)) + + def test_check_connection_thread(self): + fns = [ + lambda: self.con.cursor(), + lambda: self.con.commit(), + lambda: self.con.rollback(), + lambda: self.con.close(), + lambda: self.con.set_trace_callback(None), + lambda: self.con.create_collation("foo", None), + ] + for fn in fns: + with self.subTest(fn=fn): + self._run_test(fn) + + def test_check_cursor_thread(self): + fns = [ + lambda: self.cur.execute("insert into test(name) values('a')"), + lambda: self.cur.close(), + lambda: self.cur.execute("select name from test"), + lambda: self.cur.fetchone(), + ] + for fn in fns: + with self.subTest(fn=fn): + self._run_test(fn) - errors = [] - self.cur.execute("insert into test(name) values ('a')") - self.cur.execute("select name from test") - t = threading.Thread(target=run, kwargs={"cur": self.cur, "errors": errors}) - t.start() - t.join() - if len(errors) > 0: - self.fail("\n".join(errors)) @threading_helper.reap_threads def test_dont_check_same_thread(self): From webhook-mailer at python.org Sun Jun 20 15:47:03 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 19:47:03 -0000 Subject: [Python-checkins] Fix typos and grammatical changes in the 3.10 what's new document (GH-26319) Message-ID: https://github.com/python/cpython/commit/7265b277fa00337dfe4ea202c7f666dceb87a0b3 commit: 7265b277fa00337dfe4ea202c7f666dceb87a0b3 branch: main author: Hemangii committer: pablogsal date: 2021-06-20T20:46:59+01:00 summary: Fix typos and grammatical changes in the 3.10 what's new document (GH-26319) files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index c45925756ffa86..ba5b0a2382c088 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -197,7 +197,7 @@ now Python 3.10 will display the exception as: This improvement was contributed by Pablo Galindo in :issue:`43914`. A considerable amount of new specialized messages for :exc:`SyntaxError` exceptions -have been incorporated. Some of the most notable ones: +have been incorporated. Some of the most notable ones are as follows: * Missing ``:`` before blocks: From webhook-mailer at python.org Sun Jun 20 15:53:20 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 19:53:20 -0000 Subject: [Python-checkins] Fix typos and grammatical changes in the 3.10 what's new document (GH-26319) (GH-26814) Message-ID: https://github.com/python/cpython/commit/26c89e7c7a0e07c02801cb8a231d56ad66caff39 commit: 26c89e7c7a0e07c02801cb8a231d56ad66caff39 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-20T20:53:14+01:00 summary: Fix typos and grammatical changes in the 3.10 what's new document (GH-26319) (GH-26814) files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 10e6ab71673982..605cb6430e447a 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -197,7 +197,7 @@ now Python 3.10 will display the exception as: This improvement was contributed by Pablo Galindo in :issue:`43914`. A considerable amount of new specialized messages for :exc:`SyntaxError` exceptions -have been incorporated. Some of the most notable ones: +have been incorporated. Some of the most notable ones are as follows: * Missing ``:`` before blocks: From webhook-mailer at python.org Sun Jun 20 16:08:15 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 20:08:15 -0000 Subject: [Python-checkins] bpo-44077: Expose IP_RECVTOS in the socket module (GH-25992) Message-ID: https://github.com/python/cpython/commit/a317778fd58b1c6b250feffbdb4ecf15e293ef48 commit: a317778fd58b1c6b250feffbdb4ecf15e293ef48 branch: main author: Georg Sauthoff committer: pablogsal date: 2021-06-20T21:08:07+01:00 summary: bpo-44077: Expose IP_RECVTOS in the socket module (GH-25992) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Library/2021-05-13-19-44-38.bpo-44077.04b2a4.rst M Doc/library/socket.rst M Doc/whatsnew/3.10.rst M Modules/socketmodule.c diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index da3d0d8f1e1b0b..d67df474608d9c 100755 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -379,6 +379,9 @@ Constants On Windows, ``TCP_KEEPIDLE``, ``TCP_KEEPINTVL`` appear if run-time Windows supports. + .. versionchanged:: 3.10 + ``IP_RECVTOS`` was added. + .. data:: AF_CAN PF_CAN SOL_CAN_* diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index ba5b0a2382c088..528d8ab35123d2 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1219,6 +1219,9 @@ The exception :exc:`socket.timeout` is now an alias of :exc:`TimeoutError`. Add option to create MPTCP sockets with ``IPPROTO_MPTCP`` (Contributed by Rui Cunha in :issue:`43571`.) +Add ``IP_RECVTOS`` option to receive the type of service (ToS) or DSCP/ECN fields +(Contributed by Georg Sauthoff in :issue:`44077`.) + ssl --- diff --git a/Misc/NEWS.d/next/Library/2021-05-13-19-44-38.bpo-44077.04b2a4.rst b/Misc/NEWS.d/next/Library/2021-05-13-19-44-38.bpo-44077.04b2a4.rst new file mode 100644 index 00000000000000..7bb4379f571b68 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-05-13-19-44-38.bpo-44077.04b2a4.rst @@ -0,0 +1,3 @@ +It's now possible to receive the type of service (ToS), a.k.a. differentiated +services (DS), a.k.a. differenciated services code point (DSCP) and excplicit +congestion notification (ECN) IP header fields with ``socket.IP_RECVTOS``. diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 79559c04d5104d..142cc7c8a7484e 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -8024,6 +8024,9 @@ PyInit__socket(void) #ifdef IP_RECVRETOPTS PyModule_AddIntMacro(m, IP_RECVRETOPTS); #endif +#ifdef IP_RECVTOS + PyModule_AddIntMacro(m, IP_RECVTOS); +#endif #ifdef IP_RECVDSTADDR PyModule_AddIntMacro(m, IP_RECVDSTADDR); #endif From webhook-mailer at python.org Sun Jun 20 16:12:17 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 20:12:17 -0000 Subject: [Python-checkins] bpo-43667: Add news fragment for Solaris changes (GH-26405) (GH-26498) Message-ID: https://github.com/python/cpython/commit/f87d2038fadd9c067d50fb2f1d7c2f37b9f3893a commit: f87d2038fadd9c067d50fb2f1d7c2f37b9f3893a branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-20T21:12:12+01:00 summary: bpo-43667: Add news fragment for Solaris changes (GH-26405) (GH-26498) (cherry picked from commit 164a4f46d1606e21d82babc010e397a9116e6730) files: A Misc/NEWS.d/next/Core and Builtins/2021-05-27-17-34-29.bpo-43667.ND9jP3.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-27-17-34-29.bpo-43667.ND9jP3.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-27-17-34-29.bpo-43667.ND9jP3.rst new file mode 100644 index 00000000000000..53130cce7180a7 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-05-27-17-34-29.bpo-43667.ND9jP3.rst @@ -0,0 +1,2 @@ +Improve Unicode support in non-UTF locales on Oracle Solaris. This issue +does not affect other Solaris systems. From webhook-mailer at python.org Sun Jun 20 16:12:31 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 20:12:31 -0000 Subject: [Python-checkins] bpo-41299: Reduce lag in Windows threading timeouts by using a higher precision time source (GH-26568) (GH-26580) Message-ID: https://github.com/python/cpython/commit/8673b77e251e42874501a47b1df86c6bde4fe1d2 commit: 8673b77e251e42874501a47b1df86c6bde4fe1d2 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-20T21:12:27+01:00 summary: bpo-41299: Reduce lag in Windows threading timeouts by using a higher precision time source (GH-26568) (GH-26580) (cherry picked from commit 449e6f0ef395231e3abe467f910b02d7f075c27f) Co-authored-by: Ryan Hileman Co-authored-by: Ryan Hileman files: A Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst M Python/thread_nt.h diff --git a/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst b/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst new file mode 100644 index 00000000000000..71f700ffa1553e --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst @@ -0,0 +1 @@ +Fix 16ms jitter when using timeouts in :mod:`threading`, such as with :meth:`threading.Lock.acquire` or :meth:`threading.Condition.wait`. diff --git a/Python/thread_nt.h b/Python/thread_nt.h index 05b982d32dc526..0ce5e94f89bf72 100644 --- a/Python/thread_nt.h +++ b/Python/thread_nt.h @@ -76,16 +76,22 @@ EnterNonRecursiveMutex(PNRMUTEX mutex, DWORD milliseconds) } } else if (milliseconds != 0) { /* wait at least until the target */ - ULONGLONG now, target = GetTickCount64() + milliseconds; + _PyTime_t now = _PyTime_GetPerfCounter(); + if (now <= 0) { + Py_FatalError("_PyTime_GetPerfCounter() == 0"); + } + _PyTime_t nanoseconds = _PyTime_FromNanoseconds((_PyTime_t)milliseconds * 1000000); + _PyTime_t target = now + nanoseconds; while (mutex->locked) { - if (PyCOND_TIMEDWAIT(&mutex->cv, &mutex->cs, (long long)milliseconds*1000) < 0) { + _PyTime_t microseconds = _PyTime_AsMicroseconds(nanoseconds, _PyTime_ROUND_TIMEOUT); + if (PyCOND_TIMEDWAIT(&mutex->cv, &mutex->cs, microseconds) < 0) { result = WAIT_FAILED; break; } - now = GetTickCount64(); + now = _PyTime_GetPerfCounter(); if (target <= now) break; - milliseconds = (DWORD)(target-now); + nanoseconds = target - now; } } if (!mutex->locked) { From webhook-mailer at python.org Sun Jun 20 16:12:50 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 20:12:50 -0000 Subject: [Python-checkins] bpo-43298: Improved error message when building without the Windows SDK installed (GH-26800) (GH-26802) Message-ID: https://github.com/python/cpython/commit/5fbccb763ce540c0d07be86660e0357bffc69d76 commit: 5fbccb763ce540c0d07be86660e0357bffc69d76 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-20T21:12:46+01:00 summary: bpo-43298: Improved error message when building without the Windows SDK installed (GH-26800) (GH-26802) (cherry picked from commit 80190b3e533097b55077becddc75423318ab2371) Co-authored-by: Steve Dower Co-authored-by: Steve Dower files: A Misc/NEWS.d/next/Build/2021-06-19-11-50-03.bpo-43298.9ircMb.rst M PCbuild/python.props diff --git a/Misc/NEWS.d/next/Build/2021-06-19-11-50-03.bpo-43298.9ircMb.rst b/Misc/NEWS.d/next/Build/2021-06-19-11-50-03.bpo-43298.9ircMb.rst new file mode 100644 index 00000000000000..3bdc24b147a3ef --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-19-11-50-03.bpo-43298.9ircMb.rst @@ -0,0 +1 @@ +Improved error message when building without a Windows SDK installed. diff --git a/PCbuild/python.props b/PCbuild/python.props index 419d5ebe84c2d1..4a56d50b8b7655 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -108,9 +108,18 @@ 10.0.10586.0 - $(_RegistryVersion) + $(_RegistryVersion) - + + + + <_Message>Failed to locate a Windows SDK installation. + <_Message>$(_Message) If the build fails, please use the Visual Studio Installer to install the Windows SDK. + <_Message>$(_Message) (Ignore the version number specified in the error message and select the latest.) + + + + $(DefaultWindowsSDKVersion) @@ -175,7 +184,7 @@ 11 12 - + $(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber) $(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)$(ReleaseLevelName) From webhook-mailer at python.org Sun Jun 20 16:36:31 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 20 Jun 2021 20:36:31 -0000 Subject: [Python-checkins] bpo-44077: Expose IP_RECVTOS in the socket module (GH-25992) Message-ID: https://github.com/python/cpython/commit/28fe0159f59a761bf52c1999c8f7cb12d0d12562 commit: 28fe0159f59a761bf52c1999c8f7cb12d0d12562 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-20T13:36:21-07:00 summary: bpo-44077: Expose IP_RECVTOS in the socket module (GH-25992) Co-authored-by: Pablo Galindo (cherry picked from commit a317778fd58b1c6b250feffbdb4ecf15e293ef48) Co-authored-by: Georg Sauthoff files: A Misc/NEWS.d/next/Library/2021-05-13-19-44-38.bpo-44077.04b2a4.rst M Doc/library/socket.rst M Doc/whatsnew/3.10.rst M Modules/socketmodule.c diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index 8a1fc96e0362e2..914fdd7296dbb4 100755 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -379,6 +379,9 @@ Constants On Windows, ``TCP_KEEPIDLE``, ``TCP_KEEPINTVL`` appear if run-time Windows supports. + .. versionchanged:: 3.10 + ``IP_RECVTOS`` was added. + .. data:: AF_CAN PF_CAN SOL_CAN_* diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 605cb6430e447a..249f0e98e06ac0 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1219,6 +1219,9 @@ The exception :exc:`socket.timeout` is now an alias of :exc:`TimeoutError`. Add option to create MPTCP sockets with ``IPPROTO_MPTCP`` (Contributed by Rui Cunha in :issue:`43571`.) +Add ``IP_RECVTOS`` option to receive the type of service (ToS) or DSCP/ECN fields +(Contributed by Georg Sauthoff in :issue:`44077`.) + ssl --- diff --git a/Misc/NEWS.d/next/Library/2021-05-13-19-44-38.bpo-44077.04b2a4.rst b/Misc/NEWS.d/next/Library/2021-05-13-19-44-38.bpo-44077.04b2a4.rst new file mode 100644 index 00000000000000..7bb4379f571b68 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-05-13-19-44-38.bpo-44077.04b2a4.rst @@ -0,0 +1,3 @@ +It's now possible to receive the type of service (ToS), a.k.a. differentiated +services (DS), a.k.a. differenciated services code point (DSCP) and excplicit +congestion notification (ECN) IP header fields with ``socket.IP_RECVTOS``. diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 79559c04d5104d..142cc7c8a7484e 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -8024,6 +8024,9 @@ PyInit__socket(void) #ifdef IP_RECVRETOPTS PyModule_AddIntMacro(m, IP_RECVRETOPTS); #endif +#ifdef IP_RECVTOS + PyModule_AddIntMacro(m, IP_RECVTOS); +#endif #ifdef IP_RECVDSTADDR PyModule_AddIntMacro(m, IP_RECVDSTADDR); #endif From webhook-mailer at python.org Sun Jun 20 17:07:43 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Jun 2021 21:07:43 -0000 Subject: [Python-checkins] [3.10] bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567) (GH-26816) Message-ID: https://github.com/python/cpython/commit/ccc95c7b4799570c2d7e4de3d579860ad833e1f8 commit: ccc95c7b4799570c2d7e4de3d579860ad833e1f8 branch: 3.10 author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-20T22:07:31+01:00 summary: [3.10] bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567) (GH-26816) Co-authored-by: Erlend Egeberg Aasland files: M Lib/sqlite3/test/dbapi.py M Modules/_sqlite/statement.c diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 39c9bf5b61143d..0716e656a7f26f 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -92,6 +92,11 @@ def test_shared_cache_deprecated(self): sqlite.enable_shared_cache(enable) self.assertIn("dbapi.py", cm.filename) + def test_disallow_instantiation(self): + cx = sqlite.connect(":memory:") + tp = type(cx("select 1")) + self.assertRaises(TypeError, tp) + class ConnectionTests(unittest.TestCase): diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 2fd9ba3ca801ad..c875eb0cd74a40 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -509,7 +509,7 @@ static PyType_Spec stmt_spec = { .name = MODULE_NAME ".Statement", .basicsize = sizeof(pysqlite_Statement), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_IMMUTABLETYPE), + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION), .slots = stmt_slots, }; PyTypeObject *pysqlite_StatementType = NULL; From webhook-mailer at python.org Mon Jun 21 03:22:07 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Mon, 21 Jun 2021 07:22:07 -0000 Subject: [Python-checkins] bpo-44469: Fix tests for "async with" with bad object (GH-26817) Message-ID: https://github.com/python/cpython/commit/5d2b3a0d688cf8a33db3d266c9e7049c13766a4c commit: 5d2b3a0d688cf8a33db3d266c9e7049c13766a4c branch: main author: Serhiy Storchaka committer: serhiy-storchaka date: 2021-06-21T10:21:59+03:00 summary: bpo-44469: Fix tests for "async with" with bad object (GH-26817) Test for execution of the body was null. It would pass even if the code which should be skipped was executed. files: M Lib/test/test_coroutines.py diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index 145adb67781701..a6a199e323c5f9 100644 --- a/Lib/test/test_coroutines.py +++ b/Lib/test/test_coroutines.py @@ -1205,41 +1205,47 @@ class CM: def __aenter__(self): pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aexit__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_3(self): class CM: def __aexit__(self): pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aenter__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_4(self): class CM: pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aenter__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_5(self): # While this test doesn't make a lot of sense, From webhook-mailer at python.org Mon Jun 21 03:54:12 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 21 Jun 2021 07:54:12 -0000 Subject: [Python-checkins] bpo-44469: Fix tests for "async with" with bad object (GH-26817) Message-ID: https://github.com/python/cpython/commit/175e264d363164c905b08688bbda751c9ff26342 commit: 175e264d363164c905b08688bbda751c9ff26342 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-21T00:54:04-07:00 summary: bpo-44469: Fix tests for "async with" with bad object (GH-26817) Test for execution of the body was null. It would pass even if the code which should be skipped was executed. (cherry picked from commit 5d2b3a0d688cf8a33db3d266c9e7049c13766a4c) Co-authored-by: Serhiy Storchaka files: M Lib/test/test_coroutines.py diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index 8d1e0692a24221..1e01e3be83cda1 100644 --- a/Lib/test/test_coroutines.py +++ b/Lib/test/test_coroutines.py @@ -1203,41 +1203,47 @@ class CM: def __aenter__(self): pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aexit__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_3(self): class CM: def __aexit__(self): pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aenter__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_4(self): class CM: pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aenter__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_5(self): # While this test doesn't make a lot of sense, From webhook-mailer at python.org Mon Jun 21 03:57:12 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 21 Jun 2021 07:57:12 -0000 Subject: [Python-checkins] bpo-44469: Fix tests for "async with" with bad object (GH-26817) Message-ID: https://github.com/python/cpython/commit/553e10498ac2020e9abdb5302c91bfb235925cef commit: 553e10498ac2020e9abdb5302c91bfb235925cef branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-21T00:57:07-07:00 summary: bpo-44469: Fix tests for "async with" with bad object (GH-26817) Test for execution of the body was null. It would pass even if the code which should be skipped was executed. (cherry picked from commit 5d2b3a0d688cf8a33db3d266c9e7049c13766a4c) Co-authored-by: Serhiy Storchaka files: M Lib/test/test_coroutines.py diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index 145adb67781701..a6a199e323c5f9 100644 --- a/Lib/test/test_coroutines.py +++ b/Lib/test/test_coroutines.py @@ -1205,41 +1205,47 @@ class CM: def __aenter__(self): pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aexit__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_3(self): class CM: def __aexit__(self): pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aenter__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_4(self): class CM: pass - body_executed = False + body_executed = None async def foo(): + nonlocal body_executed + body_executed = False async with CM(): body_executed = True with self.assertRaisesRegex(AttributeError, '__aenter__'): run_async(foo()) - self.assertFalse(body_executed) + self.assertIs(body_executed, False) def test_with_5(self): # While this test doesn't make a lot of sense, From webhook-mailer at python.org Mon Jun 21 05:55:31 2021 From: webhook-mailer at python.org (markshannon) Date: Mon, 21 Jun 2021 09:55:31 -0000 Subject: [Python-checkins] bpo-44297: Fix missing line number in generator expressions (GH-26801) Message-ID: https://github.com/python/cpython/commit/82e5c28af7049c4f5343c808f172cbe2e145f49b commit: 82e5c28af7049c4f5343c808f172cbe2e145f49b branch: main author: Mark Shannon committer: markshannon date: 2021-06-21T10:55:15+01:00 summary: bpo-44297: Fix missing line number in generator expressions (GH-26801) * Make sure that line number is set when entering comprehension scope in compiler. files: A Misc/NEWS.d/next/Core and Builtins/2021-06-19-12-41-13.bpo-44297.F53vHj.rst M Lib/test/test_compile.py M Python/compile.c M Python/importlib_external.h diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index ea8ae22fce40f1..6dc1c383f8f2c9 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -895,6 +895,21 @@ def aug_store_attr(): for (_, _, line) in func.__code__.co_lines() ] self.assertEqual(lines, code_lines) + def test_line_number_genexp(self): + + def return_genexp(): + return (1 + for + x + in + y) + genexp_lines = [None, 1, 3, 1] + + genexp_code = return_genexp.__code__.co_consts[1] + code_lines = [None if line is None else line-return_genexp.__code__.co_firstlineno + for (_, _, line) in genexp_code.co_lines() ] + self.assertEqual(genexp_lines, code_lines) + def test_big_dict_literal(self): # The compiler has a flushing point in "compiler_dict" that calls compiles diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-19-12-41-13.bpo-44297.F53vHj.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-19-12-41-13.bpo-44297.F53vHj.rst new file mode 100644 index 00000000000000..bdcb5b2db39e09 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-19-12-41-13.bpo-44297.F53vHj.rst @@ -0,0 +1,3 @@ +Make sure that the line number is set when entering a comprehension scope. +Ensures that backtraces inclusing generator expressions show the correct +line number. diff --git a/Python/compile.c b/Python/compile.c index 60777b0bf78633..0a181485b304db 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -4900,6 +4900,7 @@ compiler_comprehension(struct compiler *c, expr_ty e, int type, { goto error; } + SET_LOC(c, e); is_async_generator = c->u->u_ste->ste_coroutine; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index e353132c55854f..2ffd039acddb7b 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -81,7 +81,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,46,0,0,0,115,4,0,0,0,6,128,22,0,243,0, + 62,46,0,0,0,115,4,0,0,0,2,128,26,0,243,0, 0,0,0,114,8,0,0,0,218,0,99,1,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, 22,0,0,0,104,0,124,0,93,7,125,1,100,0,124,1, @@ -217,7 +217,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,0,0,0,83,0,0,0,114,48,0,0,0,114,12,0, 0,0,114,49,0,0,0,41,2,114,5,0,0,0,218,4, 112,97,114,116,32,32,114,7,0,0,0,114,53,0,0,0, - 128,0,0,0,115,6,0,0,0,6,0,6,1,14,255,114, + 128,0,0,0,115,6,0,0,0,6,0,4,1,16,255,114, 9,0,0,0,114,54,0,0,0,78,41,2,114,59,0,0, 0,114,62,0,0,0,41,1,114,63,0,0,0,32,114,7, 0,0,0,114,67,0,0,0,126,0,0,0,115,6,0,0, @@ -236,7 +236,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 83,0,169,1,78,41,1,218,5,114,102,105,110,100,41,3, 114,5,0,0,0,114,52,0,0,0,114,65,0,0,0,32, 32,128,114,7,0,0,0,114,8,0,0,0,134,0,0,0, - 115,4,0,0,0,6,128,20,0,114,9,0,0,0,122,30, + 115,4,0,0,0,2,128,24,0,114,9,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,10,0,0,0,78,114,3,0,0,0,41,2, @@ -1812,957 +1812,957 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 235,0,0,0,78,114,12,0,0,0,41,3,114,5,0,0, 0,218,6,115,117,102,102,105,120,218,9,102,105,108,101,95, 110,97,109,101,32,32,128,114,7,0,0,0,114,8,0,0, - 0,174,4,0,0,115,6,0,0,0,6,128,2,1,20,255, - 114,9,0,0,0,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,46,60,108,111,99,97,108,115,62,46,60, - 103,101,110,101,120,112,114,62,78,41,4,114,73,0,0,0, - 114,65,0,0,0,218,3,97,110,121,114,231,0,0,0,41, - 3,114,143,0,0,0,114,162,0,0,0,114,42,1,0,0, - 32,32,64,114,7,0,0,0,114,205,0,0,0,171,4,0, - 0,115,10,0,0,0,2,128,14,2,12,1,2,1,8,255, - 114,9,0,0,0,122,30,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,1,0,0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,32,32,114, - 7,0,0,0,114,240,0,0,0,177,4,0,0,114,25,0, - 0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246, - 0,0,0,32,32,114,7,0,0,0,114,0,1,0,0,181, - 4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0, - 0,0,114,24,1,0,0,114,25,1,0,0,114,74,0,0, - 0,114,246,0,0,0,32,32,114,7,0,0,0,114,202,0, - 0,0,185,4,0,0,114,26,1,0,0,114,9,0,0,0, - 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,235,0,0,0,114,15, - 1,0,0,114,21,1,0,0,114,238,0,0,0,114,244,0, - 0,0,114,205,0,0,0,114,240,0,0,0,114,0,1,0, - 0,114,159,0,0,0,114,202,0,0,0,114,12,0,0,0, - 114,7,0,0,0,114,28,1,0,0,138,4,0,0,115,24, - 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, - 8,8,6,8,6,8,4,2,4,14,1,114,9,0,0,0, - 114,28,1,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,64,0,0,0,115,104,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,100,18,100,19,132, - 0,90,12,100,20,100,21,132,0,90,13,100,22,100,23,132, - 0,90,14,100,24,83,0,41,25,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,99,4,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,67,0,0,0,115,36,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,3,124,0,95,5,100,0, - 83,0,114,69,0,0,0,41,6,218,5,95,110,97,109,101, - 218,5,95,112,97,116,104,114,136,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,12,95,112,97,116,104,95,102,105,110,100,101,114,169, - 4,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, - 90,11,112,97,116,104,95,102,105,110,100,101,114,32,32,32, - 32,114,7,0,0,0,114,235,0,0,0,198,4,0,0,115, - 8,0,0,0,6,1,6,1,14,1,10,1,114,9,0,0, - 0,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,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,15,100,3, - 83,0,124,1,100,4,102,2,83,0,41,6,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,97,0,0, - 0,114,10,0,0,0,41,2,114,16,0,0,0,114,65,0, - 0,0,90,8,95,95,112,97,116,104,95,95,78,41,2,114, - 45,1,0,0,114,104,0,0,0,41,4,114,143,0,0,0, - 114,38,1,0,0,218,3,100,111,116,90,2,109,101,32,32, - 32,32,114,7,0,0,0,218,23,95,102,105,110,100,95,112, + 0,174,4,0,0,115,8,0,0,0,2,128,4,0,2,1, + 20,255,114,9,0,0,0,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,46,60,108,111,99,97,108,115,62, + 46,60,103,101,110,101,120,112,114,62,78,41,4,114,73,0, + 0,0,114,65,0,0,0,218,3,97,110,121,114,231,0,0, + 0,41,3,114,143,0,0,0,114,162,0,0,0,114,42,1, + 0,0,32,32,64,114,7,0,0,0,114,205,0,0,0,171, + 4,0,0,115,10,0,0,0,2,128,14,2,12,1,2,1, + 8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0,0,0,114,24,0,0, + 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,12,0,0,0,114,246,0,0,0,32, + 32,114,7,0,0,0,114,240,0,0,0,177,4,0,0,114, + 25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, + 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,12,0,0,0, + 114,246,0,0,0,32,32,114,7,0,0,0,114,0,1,0, + 0,181,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0, + 67,0,0,0,114,24,1,0,0,114,25,1,0,0,114,74, + 0,0,0,114,246,0,0,0,32,32,114,7,0,0,0,114, + 202,0,0,0,185,4,0,0,114,26,1,0,0,114,9,0, + 0,0,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,235,0,0,0, + 114,15,1,0,0,114,21,1,0,0,114,238,0,0,0,114, + 244,0,0,0,114,205,0,0,0,114,240,0,0,0,114,0, + 1,0,0,114,159,0,0,0,114,202,0,0,0,114,12,0, + 0,0,114,7,0,0,0,114,28,1,0,0,138,4,0,0, + 115,24,0,0,0,8,0,4,2,8,6,8,4,8,4,8, + 3,8,8,8,6,8,6,8,4,2,4,14,1,114,9,0, + 0,0,114,28,1,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,64,0,0,0,115,104,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,100,18,100, + 19,132,0,90,12,100,20,100,21,132,0,90,13,100,22,100, + 23,132,0,90,14,100,24,83,0,41,25,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,99,4,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,67,0,0,0,115,36,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,3,124,0,95,5, + 100,0,83,0,114,69,0,0,0,41,6,218,5,95,110,97, + 109,101,218,5,95,112,97,116,104,114,136,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,12,95,112,97,116,104,95,102,105,110,100,101, + 114,169,4,114,143,0,0,0,114,141,0,0,0,114,65,0, + 0,0,90,11,112,97,116,104,95,102,105,110,100,101,114,32, + 32,32,32,114,7,0,0,0,114,235,0,0,0,198,4,0, + 0,115,8,0,0,0,6,1,6,1,14,1,10,1,114,9, + 0,0,0,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,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,15, + 100,3,83,0,124,1,100,4,102,2,83,0,41,6,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,97, + 0,0,0,114,10,0,0,0,41,2,114,16,0,0,0,114, + 65,0,0,0,90,8,95,95,112,97,116,104,95,95,78,41, + 2,114,45,1,0,0,114,104,0,0,0,41,4,114,143,0, + 0,0,114,38,1,0,0,218,3,100,111,116,90,2,109,101, + 32,32,32,32,114,7,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,204,4,0,0,115,8,0,0,0,18,2,8,1,4, + 2,8,3,114,9,0,0,0,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, - 204,4,0,0,115,8,0,0,0,18,2,8,1,4,2,8, - 3,114,9,0,0,0,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,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,52,1,0,0, - 114,154,0,0,0,114,16,0,0,0,218,7,109,111,100,117, - 108,101,115,41,3,114,143,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,32,32, - 32,114,7,0,0,0,114,47,1,0,0,214,4,0,0,115, - 4,0,0,0,12,1,16,1,114,9,0,0,0,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,4,0,0,0,67, - 0,0,0,115,80,0,0,0,116,0,124,0,160,1,161,0, - 131,1,125,1,124,1,124,0,106,2,107,3,114,37,124,0, - 160,3,124,0,106,4,124,1,161,2,125,2,124,2,100,0, - 117,1,114,34,124,2,106,5,100,0,117,0,114,34,124,2, - 106,6,114,34,124,2,106,6,124,0,95,7,124,1,124,0, - 95,2,124,0,106,7,83,0,114,69,0,0,0,41,8,114, - 136,0,0,0,114,47,1,0,0,114,48,1,0,0,114,49, - 1,0,0,114,45,1,0,0,114,163,0,0,0,114,201,0, - 0,0,114,46,1,0,0,41,3,114,143,0,0,0,90,11, - 112,97,114,101,110,116,95,112,97,116,104,114,209,0,0,0, - 32,32,32,114,7,0,0,0,218,12,95,114,101,99,97,108, - 99,117,108,97,116,101,218,4,0,0,115,16,0,0,0,12, - 2,10,1,14,1,18,3,6,1,8,1,6,1,6,1,114, - 9,0,0,0,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,3,0, - 0,0,67,0,0,0,243,12,0,0,0,116,0,124,0,160, - 1,161,0,131,1,83,0,114,69,0,0,0,41,2,218,4, - 105,116,101,114,114,54,1,0,0,114,20,1,0,0,32,114, - 7,0,0,0,218,8,95,95,105,116,101,114,95,95,231,4, - 0,0,243,2,0,0,0,12,1,114,9,0,0,0,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,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,54,1,0,0,41,2,114,143,0,0,0, - 218,5,105,110,100,101,120,32,32,114,7,0,0,0,218,11, - 95,95,103,101,116,105,116,101,109,95,95,234,4,0,0,114, - 58,1,0,0,114,9,0,0,0,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,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,46,1,0,0,41,3,114,143,0,0,0, - 114,60,1,0,0,114,65,0,0,0,32,32,32,114,7,0, - 0,0,218,11,95,95,115,101,116,105,116,101,109,95,95,237, - 4,0,0,115,2,0,0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0, - 114,55,1,0,0,114,69,0,0,0,41,2,114,4,0,0, - 0,114,54,1,0,0,114,20,1,0,0,32,114,7,0,0, - 0,218,7,95,95,108,101,110,95,95,240,4,0,0,114,58, - 1,0,0,114,9,0,0,0,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,3,0,0, - 0,67,0,0,0,243,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,89,0,0,0,114,46,1,0,0,114,20,1,0,0, - 32,114,7,0,0,0,218,8,95,95,114,101,112,114,95,95, - 243,4,0,0,114,58,1,0,0,114,9,0,0,0,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,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,143,0,0,0,218,4, - 105,116,101,109,32,32,114,7,0,0,0,218,12,95,95,99, - 111,110,116,97,105,110,115,95,95,246,4,0,0,114,58,1, - 0,0,114,9,0,0,0,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,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,46,1,0,0,114,61,0,0,0,114, - 66,1,0,0,32,32,114,7,0,0,0,114,61,0,0,0, - 249,4,0,0,243,2,0,0,0,16,1,114,9,0,0,0, - 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,15,114,149,0,0,0,114, - 148,0,0,0,114,150,0,0,0,114,151,0,0,0,114,235, - 0,0,0,114,52,1,0,0,114,47,1,0,0,114,54,1, - 0,0,114,57,1,0,0,114,61,1,0,0,114,62,1,0, - 0,114,63,1,0,0,114,65,1,0,0,114,68,1,0,0, - 114,61,0,0,0,114,12,0,0,0,114,7,0,0,0,114, - 44,1,0,0,191,4,0,0,115,26,0,0,0,8,0,4, - 1,8,6,8,6,8,10,8,4,8,13,8,3,8,3,8, - 3,8,3,8,3,12,3,114,9,0,0,0,114,44,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,64,0,0,0,115,88,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,100,18,132,0,90,12,100, - 19,83,0,41,20,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,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,44,1,0,0,114, - 46,1,0,0,114,50,1,0,0,32,32,32,32,114,7,0, - 0,0,114,235,0,0,0,255,4,0,0,115,2,0,0,0, - 18,1,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,115,24,0,0,0,116,0,160,1, - 100,1,116,2,161,2,1,0,100,2,160,3,124,0,106,4, - 161,1,83,0,41,4,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,82,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,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0, - 0,0,114,100,0,0,0,114,101,0,0,0,114,89,0,0, - 0,114,149,0,0,0,41,1,114,243,0,0,0,32,114,7, - 0,0,0,218,11,109,111,100,117,108,101,95,114,101,112,114, - 2,5,0,0,115,8,0,0,0,6,7,2,1,4,255,12, - 2,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0,41,2, - 78,84,114,12,0,0,0,114,246,0,0,0,32,32,114,7, - 0,0,0,114,205,0,0,0,13,5,0,0,243,2,0,0, - 0,4,1,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0,41, - 2,78,114,10,0,0,0,114,12,0,0,0,114,246,0,0, - 0,32,32,114,7,0,0,0,114,0,1,0,0,16,5,0, - 0,114,72,1,0,0,114,9,0,0,0,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,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,10,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,32,32,114, - 7,0,0,0,114,240,0,0,0,19,5,0,0,114,69,1, - 0,0,114,9,0,0,0,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,1, - 0,0,0,67,0,0,0,114,24,0,0,0,114,236,0,0, - 0,114,12,0,0,0,114,237,0,0,0,32,32,114,7,0, - 0,0,114,238,0,0,0,22,5,0,0,114,239,0,0,0, - 114,9,0,0,0,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,1,0,0,0,67,0,0,0,115,4,0,0,0,100, - 0,83,0,114,69,0,0,0,114,12,0,0,0,114,40,1, - 0,0,32,32,114,7,0,0,0,114,244,0,0,0,25,5, - 0,0,114,72,1,0,0,114,9,0,0,0,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,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,3, - 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,78,41,4,114, - 158,0,0,0,114,172,0,0,0,114,46,1,0,0,114,245, - 0,0,0,114,246,0,0,0,32,32,114,7,0,0,0,114, - 247,0,0,0,28,5,0,0,115,8,0,0,0,6,7,4, - 1,4,255,12,3,114,9,0,0,0,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,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,67,0,0,0,115,22,0, - 0,0,100,1,100,2,108,0,109,1,125,2,1,0,124,2, - 124,0,106,2,131,1,83,0,41,3,78,114,0,0,0,0, - 41,1,218,15,78,97,109,101,115,112,97,99,101,82,101,97, - 100,101,114,41,3,114,30,1,0,0,114,73,1,0,0,114, - 46,1,0,0,41,3,114,143,0,0,0,114,243,0,0,0, - 114,73,1,0,0,32,32,32,114,7,0,0,0,114,31,1, - 0,0,40,5,0,0,115,4,0,0,0,12,1,10,1,114, - 9,0,0,0,122,36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,149,0, - 0,0,114,148,0,0,0,114,150,0,0,0,114,235,0,0, - 0,114,232,0,0,0,114,71,1,0,0,114,205,0,0,0, - 114,0,1,0,0,114,240,0,0,0,114,238,0,0,0,114, - 244,0,0,0,114,247,0,0,0,114,31,1,0,0,114,12, - 0,0,0,114,7,0,0,0,114,70,1,0,0,254,4,0, - 0,115,22,0,0,0,8,0,8,1,2,3,10,1,8,10, - 8,3,8,3,8,3,8,3,8,3,12,12,114,9,0,0, - 0,114,70,1,0,0,99,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,7,100,6,100,7,132,0,131,1,90,8, - 101,7,100,8,100,9,132,0,131,1,90,9,101,7,100,19, - 100,11,100,12,132,1,131,1,90,10,101,7,100,20,100,13, - 100,14,132,1,131,1,90,11,101,7,100,19,100,15,100,16, - 132,1,131,1,90,12,101,4,100,17,100,18,132,0,131,1, - 90,13,100,10,83,0,41,21,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,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,64,0,0,0,116,0, - 116,1,106,2,160,3,161,0,131,1,68,0,93,22,92,2, - 125,0,125,1,124,1,100,1,117,0,114,20,116,1,106,2, - 124,0,61,0,113,7,116,4,124,1,100,2,131,2,114,29, - 124,1,160,5,161,0,1,0,113,7,100,1,83,0,41,3, - 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,41,6,218,4,108,105,115,116,114,16,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,75,1,0,0,41,2,114,141,0,0,0,218,6,102, - 105,110,100,101,114,32,32,114,7,0,0,0,114,75,1,0, - 0,51,5,0,0,115,14,0,0,0,22,4,8,1,10,1, - 10,1,8,1,2,128,4,252,114,9,0,0,0,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,1,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,67,0,0,0, - 115,78,0,0,0,116,0,106,1,100,1,117,1,114,14,116, - 0,106,1,115,14,116,2,160,3,100,2,116,4,161,2,1, - 0,116,0,106,1,68,0,93,18,125,1,9,0,124,1,124, - 0,131,1,2,0,1,0,83,0,35,0,4,0,116,5,121, - 38,1,0,1,0,1,0,89,0,113,17,37,0,100,1,83, - 0,119,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,16,0,0,0,218,10,112,97,116,104,95,104,111,111, - 107,115,114,99,0,0,0,114,100,0,0,0,114,161,0,0, - 0,114,142,0,0,0,41,2,114,65,0,0,0,90,4,104, - 111,111,107,32,32,114,7,0,0,0,218,11,95,112,97,116, - 104,95,104,111,111,107,115,61,5,0,0,115,22,0,0,0, - 16,3,12,1,10,1,2,1,12,1,2,128,12,1,4,1, - 2,128,4,2,2,253,115,12,0,0,0,148,3,26,2,154, - 7,35,9,166,1,35,9,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,8,0,0,0, - 67,0,0,0,115,104,0,0,0,124,1,100,1,107,2,114, - 21,9,0,116,0,160,1,161,0,125,1,110,11,35,0,4, - 0,116,2,121,51,1,0,1,0,1,0,89,0,100,2,83, - 0,37,0,9,0,116,3,106,4,124,1,25,0,125,2,124, - 2,83,0,35,0,4,0,116,5,121,50,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,124,2,83,0,37,0,119,0,119, - 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,10,0,0,0,78,41,7,114, - 19,0,0,0,114,82,0,0,0,218,17,70,105,108,101,78, - 111,116,70,111,117,110,100,69,114,114,111,114,114,16,0,0, - 0,114,77,1,0,0,218,8,75,101,121,69,114,114,111,114, - 114,81,1,0,0,41,3,114,220,0,0,0,114,65,0,0, - 0,114,79,1,0,0,32,32,32,114,7,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,74,5,0,0,115,36,0,0,0,8,8,2, - 1,10,1,2,128,12,1,6,3,2,128,2,1,10,1,4, - 4,2,128,12,253,10,1,12,1,4,1,2,128,2,253,2, - 250,115,24,0,0,0,133,4,10,0,138,7,20,7,150,5, - 29,0,157,17,49,7,178,1,49,7,179,1,20,7,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,4,0,0,0, - 67,0,0,0,115,138,0,0,0,116,0,124,2,100,1,131, - 2,114,27,116,1,160,2,124,2,161,1,155,0,100,2,157, - 2,125,3,116,3,160,4,124,3,116,5,161,2,1,0,124, - 2,160,6,124,1,161,1,92,2,125,4,125,5,110,21,116, - 1,160,2,124,2,161,1,155,0,100,3,157,2,125,3,116, - 3,160,4,124,3,116,5,161,2,1,0,124,2,160,7,124, - 1,161,1,125,4,103,0,125,5,124,4,100,0,117,1,114, - 58,116,1,160,8,124,1,124,4,161,2,83,0,116,1,160, - 9,124,1,100,0,161,2,125,6,124,5,124,6,95,10,124, - 6,83,0,41,4,78,114,160,0,0,0,122,53,46,102,105, - 110,100,95,115,112,101,99,40,41,32,110,111,116,32,102,111, - 117,110,100,59,32,102,97,108,108,105,110,103,32,98,97,99, - 107,32,116,111,32,102,105,110,100,95,108,111,97,100,101,114, - 40,41,122,53,46,102,105,110,100,95,115,112,101,99,40,41, - 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, - 105,110,103,32,98,97,99,107,32,116,111,32,102,105,110,100, - 95,109,111,100,117,108,101,40,41,41,11,114,152,0,0,0, - 114,158,0,0,0,90,12,95,111,98,106,101,99,116,95,110, - 97,109,101,114,99,0,0,0,114,100,0,0,0,114,161,0, - 0,0,114,160,0,0,0,114,228,0,0,0,114,223,0,0, - 0,114,206,0,0,0,114,201,0,0,0,41,7,114,220,0, - 0,0,114,162,0,0,0,114,79,1,0,0,114,165,0,0, - 0,114,163,0,0,0,114,164,0,0,0,114,209,0,0,0, - 32,32,32,32,32,32,32,114,7,0,0,0,218,16,95,108, - 101,103,97,99,121,95,103,101,116,95,115,112,101,99,96,5, - 0,0,115,26,0,0,0,10,4,16,1,12,2,16,1,16, - 2,12,2,10,1,4,1,8,1,12,1,12,1,6,1,4, - 1,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,166,0,0,0,103,0, - 125,4,124,2,68,0,93,67,125,5,116,0,124,5,116,1, - 116,2,102,2,131,2,115,14,113,4,124,0,160,3,124,5, - 161,1,125,6,124,6,100,1,117,1,114,71,116,4,124,6, - 100,2,131,2,114,35,124,6,160,5,124,1,124,3,161,2, - 125,7,110,6,124,0,160,6,124,1,124,6,161,2,125,7, - 124,7,100,1,117,0,114,46,113,4,124,7,106,7,100,1, - 117,1,114,55,124,7,2,0,1,0,83,0,124,7,106,8, - 125,8,124,8,100,1,117,0,114,66,116,9,100,3,131,1, - 130,1,124,4,160,10,124,8,161,1,1,0,113,4,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,225,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,184,0,0,0,114,109,0,0,0,218,5, - 98,121,116,101,115,114,84,1,0,0,114,152,0,0,0,114, - 225,0,0,0,114,85,1,0,0,114,163,0,0,0,114,201, - 0,0,0,114,142,0,0,0,114,190,0,0,0,114,158,0, - 0,0,114,206,0,0,0,41,9,114,220,0,0,0,114,162, - 0,0,0,114,65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0,114,164, - 0,0,0,32,32,32,32,32,32,32,32,32,114,7,0,0, - 0,218,9,95,103,101,116,95,115,112,101,99,117,5,0,0, - 115,42,0,0,0,4,5,8,1,14,1,2,1,10,1,8, - 1,10,1,14,1,12,2,8,1,2,1,10,1,8,1,6, - 1,8,1,8,1,10,5,2,128,12,2,6,1,4,1,114, - 9,0,0,0,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,5,0,0,0,67,0,0,0,115, - 94,0,0,0,124,2,100,1,117,0,114,7,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,20,100,1,83,0,124,4,106,3, - 100,1,117,0,114,45,124,4,106,4,125,5,124,5,114,43, - 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,124,4, - 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,16,0,0,0,114,65,0,0,0, - 114,88,1,0,0,114,163,0,0,0,114,201,0,0,0,114, - 204,0,0,0,114,44,1,0,0,41,6,114,220,0,0,0, - 114,162,0,0,0,114,65,0,0,0,114,224,0,0,0,114, - 209,0,0,0,114,87,1,0,0,32,32,32,32,32,32,114, - 7,0,0,0,114,225,0,0,0,149,5,0,0,115,26,0, - 0,0,8,6,6,1,14,1,8,1,4,1,10,1,6,1, - 4,1,6,3,16,1,4,1,4,2,4,2,114,9,0,0, - 0,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,67,0,0,0,115,42,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, - 3,124,1,124,2,161,2,125,3,124,3,100,2,117,0,114, - 18,100,2,83,0,124,3,106,4,83,0,41,3,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,122,101,80,97,116,104,70, - 105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, - 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, - 78,114,226,0,0,0,114,227,0,0,0,32,32,32,32,114, - 7,0,0,0,114,228,0,0,0,173,5,0,0,115,14,0, - 0,0,6,8,2,2,4,254,12,3,8,1,4,1,6,1, - 114,9,0,0,0,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,0,0, - 0,0,0,0,0,0,0,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, - 2,1,0,124,2,106,2,124,0,105,0,124,1,164,1,142, - 1,83,0,41,4,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,78,41,3,90,18,105,109,112,111,114,116, - 108,105,98,46,109,101,116,97,100,97,116,97,114,89,1,0, - 0,218,18,102,105,110,100,95,100,105,115,116,114,105,98,117, - 116,105,111,110,115,41,3,114,144,0,0,0,114,145,0,0, - 0,114,89,1,0,0,32,32,32,114,7,0,0,0,114,90, - 1,0,0,189,5,0,0,115,4,0,0,0,12,10,16,1, - 114,9,0,0,0,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,114,69,0,0,0,114,229,0,0,0,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,75,1,0,0,114,81, - 1,0,0,114,233,0,0,0,114,84,1,0,0,114,85,1, - 0,0,114,88,1,0,0,114,225,0,0,0,114,228,0,0, - 0,114,90,1,0,0,114,12,0,0,0,114,7,0,0,0, - 114,74,1,0,0,47,5,0,0,115,36,0,0,0,8,0, - 4,2,2,2,10,1,2,9,10,1,2,12,10,1,2,21, - 10,1,2,20,12,1,2,31,12,1,2,23,12,1,2,15, - 14,1,114,9,0,0,0,114,74,1,0,0,99,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,6,0,0,0,7,0,0, - 0,115,114,0,0,0,135,5,103,0,125,3,124,2,68,0, - 93,16,92,2,138,5,125,4,124,3,160,0,136,5,102,1, - 100,1,100,2,132,8,124,4,68,0,131,1,161,1,1,0, - 113,5,124,3,124,0,95,1,124,1,112,28,100,3,124,0, - 95,2,116,3,124,0,106,2,131,1,115,44,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,3,0,0,0,51,0,0,0,115,24,0,0,0, - 129,0,124,0,93,7,125,1,124,1,137,2,102,2,86,0, - 1,0,113,2,100,0,83,0,114,69,0,0,0,114,12,0, - 0,0,41,3,114,5,0,0,0,114,41,1,0,0,114,163, - 0,0,0,32,32,128,114,7,0,0,0,114,8,0,0,0, - 218,5,0,0,115,4,0,0,0,6,128,18,0,114,9,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,97,0,0,0,114, - 130,0,0,0,78,41,11,114,190,0,0,0,218,8,95,108, - 111,97,100,101,114,115,114,65,0,0,0,114,86,0,0,0, - 114,67,0,0,0,114,19,0,0,0,114,82,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,6,114,143,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,211,0,0,0,114,163,0, - 0,0,32,32,32,32,32,64,114,7,0,0,0,114,235,0, - 0,0,212,5,0,0,115,22,0,0,0,2,128,4,4,12, - 1,26,1,6,1,10,2,10,1,18,1,6,1,8,1,12, - 1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93,1,0,0,114, - 20,1,0,0,32,114,7,0,0,0,114,75,1,0,0,228, - 5,0,0,114,81,0,0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0, - 115,54,0,0,0,116,0,160,1,100,1,116,2,161,2,1, - 0,124,0,160,3,124,1,161,1,125,2,124,2,100,2,117, - 0,114,19,100,2,103,0,102,2,83,0,124,2,106,4,124, - 2,106,5,112,25,103,0,102,2,83,0,41,3,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, + 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,52,1, + 0,0,114,154,0,0,0,114,16,0,0,0,218,7,109,111, + 100,117,108,101,115,41,3,114,143,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, + 32,32,32,114,7,0,0,0,114,47,1,0,0,214,4,0, + 0,115,4,0,0,0,12,1,16,1,114,9,0,0,0,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,4,0,0, + 0,67,0,0,0,115,80,0,0,0,116,0,124,0,160,1, + 161,0,131,1,125,1,124,1,124,0,106,2,107,3,114,37, + 124,0,160,3,124,0,106,4,124,1,161,2,125,2,124,2, + 100,0,117,1,114,34,124,2,106,5,100,0,117,0,114,34, + 124,2,106,6,114,34,124,2,106,6,124,0,95,7,124,1, + 124,0,95,2,124,0,106,7,83,0,114,69,0,0,0,41, + 8,114,136,0,0,0,114,47,1,0,0,114,48,1,0,0, + 114,49,1,0,0,114,45,1,0,0,114,163,0,0,0,114, + 201,0,0,0,114,46,1,0,0,41,3,114,143,0,0,0, + 90,11,112,97,114,101,110,116,95,112,97,116,104,114,209,0, + 0,0,32,32,32,114,7,0,0,0,218,12,95,114,101,99, + 97,108,99,117,108,97,116,101,218,4,0,0,115,16,0,0, + 0,12,2,10,1,14,1,18,3,6,1,8,1,6,1,6, + 1,114,9,0,0,0,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, + 3,0,0,0,67,0,0,0,243,12,0,0,0,116,0,124, + 0,160,1,161,0,131,1,83,0,114,69,0,0,0,41,2, + 218,4,105,116,101,114,114,54,1,0,0,114,20,1,0,0, + 32,114,7,0,0,0,218,8,95,95,105,116,101,114,95,95, + 231,4,0,0,243,2,0,0,0,12,1,114,9,0,0,0, + 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,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,54,1,0,0,41,2,114,143,0, + 0,0,218,5,105,110,100,101,120,32,32,114,7,0,0,0, + 218,11,95,95,103,101,116,105,116,101,109,95,95,234,4,0, + 0,114,58,1,0,0,114,9,0,0,0,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,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,46,1,0,0,41,3,114,143,0, + 0,0,114,60,1,0,0,114,65,0,0,0,32,32,32,114, + 7,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95, + 95,237,4,0,0,115,2,0,0,0,14,1,114,9,0,0, + 0,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,3,0,0,0,67,0, + 0,0,114,55,1,0,0,114,69,0,0,0,41,2,114,4, + 0,0,0,114,54,1,0,0,114,20,1,0,0,32,114,7, + 0,0,0,218,7,95,95,108,101,110,95,95,240,4,0,0, + 114,58,1,0,0,114,9,0,0,0,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,3, + 0,0,0,67,0,0,0,243,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,89,0,0,0,114,46,1,0,0,114,20,1, + 0,0,32,114,7,0,0,0,218,8,95,95,114,101,112,114, + 95,95,243,4,0,0,114,58,1,0,0,114,9,0,0,0, + 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,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,143,0,0,0, + 218,4,105,116,101,109,32,32,114,7,0,0,0,218,12,95, + 95,99,111,110,116,97,105,110,115,95,95,246,4,0,0,114, + 58,1,0,0,114,9,0,0,0,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,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,46,1,0,0,114,61,0,0, + 0,114,66,1,0,0,32,32,114,7,0,0,0,114,61,0, + 0,0,249,4,0,0,243,2,0,0,0,16,1,114,9,0, + 0,0,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,15,114,149,0,0, + 0,114,148,0,0,0,114,150,0,0,0,114,151,0,0,0, + 114,235,0,0,0,114,52,1,0,0,114,47,1,0,0,114, + 54,1,0,0,114,57,1,0,0,114,61,1,0,0,114,62, + 1,0,0,114,63,1,0,0,114,65,1,0,0,114,68,1, + 0,0,114,61,0,0,0,114,12,0,0,0,114,7,0,0, + 0,114,44,1,0,0,191,4,0,0,115,26,0,0,0,8, + 0,4,1,8,6,8,6,8,10,8,4,8,13,8,3,8, + 3,8,3,8,3,8,3,12,3,114,9,0,0,0,114,44, + 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,64,0,0,0,115,88,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,100,18,132,0,90, + 12,100,19,83,0,41,20,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,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,44,1,0, + 0,114,46,1,0,0,114,50,1,0,0,32,32,32,32,114, + 7,0,0,0,114,235,0,0,0,255,4,0,0,115,2,0, + 0,0,18,1,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,24,0,0,0,116,0, + 160,1,100,1,116,2,161,2,1,0,100,2,160,3,124,0, + 106,4,161,1,83,0,41,4,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,82,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,40,41,32,105,115, + 32,100,101,112,114,101,99,97,116,101,100,32,97,110,100,32, + 115,108,97,116,101,100,32,102,111,114,32,114,101,109,111,118, + 97,108,32,105,110,32,80,121,116,104,111,110,32,51,46,49, + 50,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,78,41,5,114, + 99,0,0,0,114,100,0,0,0,114,101,0,0,0,114,89, + 0,0,0,114,149,0,0,0,41,1,114,243,0,0,0,32, + 114,7,0,0,0,218,11,109,111,100,117,108,101,95,114,101, + 112,114,2,5,0,0,115,8,0,0,0,6,7,2,1,4, + 255,12,2,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0, + 41,2,78,84,114,12,0,0,0,114,246,0,0,0,32,32, + 114,7,0,0,0,114,205,0,0,0,13,5,0,0,243,2, + 0,0,0,4,1,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, + 0,41,2,78,114,10,0,0,0,114,12,0,0,0,114,246, + 0,0,0,32,32,114,7,0,0,0,114,0,1,0,0,16, + 5,0,0,114,72,1,0,0,114,9,0,0,0,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,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,10,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,32, + 32,114,7,0,0,0,114,240,0,0,0,19,5,0,0,114, + 69,1,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0,114,236, + 0,0,0,114,12,0,0,0,114,237,0,0,0,32,32,114, + 7,0,0,0,114,238,0,0,0,22,5,0,0,114,239,0, + 0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,0,83,0,114,69,0,0,0,114,12,0,0,0,114, + 40,1,0,0,32,32,114,7,0,0,0,114,244,0,0,0, + 25,5,0,0,114,72,1,0,0,114,9,0,0,0,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,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,3,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,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,122,101,70,105,108,101,70,105,110,100,101,114, - 46,102,105,110,100,95,108,111,97,100,101,114,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,78,41,6,114,99, - 0,0,0,114,100,0,0,0,114,101,0,0,0,114,225,0, - 0,0,114,163,0,0,0,114,201,0,0,0,41,3,114,143, - 0,0,0,114,162,0,0,0,114,209,0,0,0,32,32,32, - 114,7,0,0,0,114,160,0,0,0,234,5,0,0,115,14, - 0,0,0,6,7,2,2,4,254,10,3,8,1,8,1,16, - 1,114,9,0,0,0,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,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,200,0,0,0,41,1,114,212,0,0, - 0,41,7,114,143,0,0,0,114,210,0,0,0,114,162,0, - 0,0,114,65,0,0,0,90,4,115,109,115,108,114,224,0, - 0,0,114,163,0,0,0,32,32,32,32,32,32,32,114,7, - 0,0,0,114,88,1,0,0,249,5,0,0,115,8,0,0, - 0,10,1,8,1,2,1,6,255,114,9,0,0,0,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,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,9,0,116,1,124,0,106,2,112,17,116,3,160,4,161, - 0,131,1,106,5,125,5,110,12,35,0,4,0,116,6,121, - 190,1,0,1,0,1,0,100,4,125,5,89,0,110,1,37, - 0,124,5,124,0,106,7,107,3,114,45,124,0,160,8,161, - 0,1,0,124,5,124,0,95,7,116,9,131,0,114,56,124, - 0,106,10,125,6,124,4,160,11,161,0,125,7,110,5,124, - 0,106,12,125,6,124,4,125,7,124,7,124,6,118,0,114, - 108,116,13,124,0,106,2,124,4,131,2,125,8,124,0,106, - 14,68,0,93,29,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,103,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,74,116, - 17,124,8,131,1,125,3,124,0,106,14,68,0,93,55,92, - 2,125,9,125,10,9,0,116,13,124,0,106,2,124,4,124, - 9,23,0,131,2,125,12,110,12,35,0,4,0,116,18,121, - 189,1,0,1,0,1,0,89,0,1,0,100,6,83,0,37, - 0,116,19,160,20,100,7,124,12,100,3,100,8,166,3,1, - 0,124,7,124,9,23,0,124,6,118,0,114,166,116,15,124, - 12,131,1,114,166,124,0,160,16,124,10,124,1,124,12,100, - 6,124,2,161,5,2,0,1,0,83,0,113,111,124,3,114, - 187,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,119,0,119,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,97,0,0,0,114,45,0,0,0,114,130,0,0,0, - 114,235,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,104,0,0,0, - 114,75,0,0,0,114,65,0,0,0,114,19,0,0,0,114, - 82,0,0,0,114,33,1,0,0,114,76,0,0,0,114,93, - 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101, - 114,22,0,0,0,114,96,1,0,0,114,131,0,0,0,114, - 95,1,0,0,114,67,0,0,0,114,92,1,0,0,114,80, - 0,0,0,114,88,1,0,0,114,83,0,0,0,114,111,0, - 0,0,114,158,0,0,0,114,172,0,0,0,114,206,0,0, - 0,114,201,0,0,0,41,14,114,143,0,0,0,114,162,0, - 0,0,114,224,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,192,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,210,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,209,0,0,0, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,7, - 0,0,0,114,225,0,0,0,254,5,0,0,115,94,0,0, - 0,4,5,14,1,2,1,22,1,2,128,12,1,8,1,2, - 128,10,1,8,1,6,1,6,2,6,1,10,1,6,2,4, - 1,8,2,12,1,14,1,8,1,10,1,8,1,24,1,2, - 255,8,5,14,2,2,1,18,1,2,128,12,1,8,1,2, - 128,16,1,12,1,8,1,10,1,4,1,8,255,2,128,4, - 2,12,1,12,1,8,1,4,1,4,1,2,244,2,228,115, - 31,0,0,0,138,10,21,0,149,9,32,7,193,52,8,65, - 61,2,193,61,7,66,8,9,194,61,1,66,8,9,194,62, - 1,32,7,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,10,0,0,0,67,0,0,0,115,194, - 0,0,0,124,0,106,0,125,1,9,0,116,1,160,2,124, - 1,112,11,116,1,160,3,161,0,161,1,125,2,110,15,35, - 0,4,0,116,4,116,5,116,6,102,3,121,96,1,0,1, - 0,1,0,103,0,125,2,89,0,110,1,37,0,116,7,106, - 8,160,9,100,1,161,1,115,41,116,10,124,2,131,1,124, - 0,95,11,110,37,116,10,131,0,125,3,124,2,68,0,93, - 28,125,4,124,4,160,12,100,2,161,1,92,3,125,5,125, - 6,125,7,124,6,114,67,100,3,160,13,124,5,124,7,160, - 14,161,0,161,2,125,8,110,2,124,5,125,8,124,3,160, - 15,124,8,161,1,1,0,113,46,124,3,124,0,95,11,116, - 7,106,8,160,9,116,16,161,1,114,94,100,4,100,5,132, - 0,124,2,68,0,131,1,124,0,95,17,100,6,83,0,100, - 6,83,0,119,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,15,0, - 0,0,114,97,0,0,0,114,88,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,83,0,0, - 0,115,20,0,0,0,104,0,124,0,93,6,125,1,124,1, - 160,0,161,0,146,2,113,2,83,0,114,12,0,0,0,41, - 1,114,131,0,0,0,41,2,114,5,0,0,0,90,2,102, - 110,32,32,114,7,0,0,0,114,14,0,0,0,78,6,0, - 0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100,105,114,114,82, - 0,0,0,114,82,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,16,0, - 0,0,114,26,0,0,0,114,27,0,0,0,114,94,1,0, - 0,114,95,1,0,0,114,126,0,0,0,114,89,0,0,0, - 114,131,0,0,0,218,3,97,100,100,114,28,0,0,0,114, - 96,1,0,0,41,9,114,143,0,0,0,114,65,0,0,0, - 90,8,99,111,110,116,101,110,116,115,90,21,108,111,119,101, - 114,95,115,117,102,102,105,120,95,99,111,110,116,101,110,116, - 115,114,67,1,0,0,114,141,0,0,0,114,51,1,0,0, - 114,41,1,0,0,90,8,110,101,119,95,110,97,109,101,32, - 32,32,32,32,32,32,32,32,114,7,0,0,0,114,98,1, - 0,0,49,6,0,0,115,42,0,0,0,6,2,2,1,20, - 1,2,128,18,1,8,3,2,128,12,3,12,1,6,7,8, - 1,16,1,4,1,18,1,4,2,12,1,6,1,12,1,20, - 1,4,255,2,233,115,13,0,0,0,132,9,14,0,142,12, - 28,7,193,32,1,28,7,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, - 7,0,0,0,115,22,0,0,0,135,0,135,1,136,0,136, - 1,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, - 4,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,4,0,0,0,19,0,0,0,115, - 36,0,0,0,116,0,124,0,131,1,115,10,116,1,100,1, - 124,0,100,2,141,2,130,1,137,1,124,0,103,1,137,2, - 162,1,82,0,142,0,83,0,41,4,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,78,41, - 2,114,83,0,0,0,114,142,0,0,0,41,3,114,65,0, - 0,0,114,220,0,0,0,114,97,1,0,0,32,128,128,114, - 7,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,90,6, - 0,0,115,6,0,0,0,8,2,12,1,16,1,114,9,0, - 0,0,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,78,114,12,0,0,0, - 41,3,114,220,0,0,0,114,97,1,0,0,114,102,1,0, - 0,96,96,32,114,7,0,0,0,218,9,112,97,116,104,95, - 104,111,111,107,80,6,0,0,115,6,0,0,0,4,128,14, - 10,4,6,114,9,0,0,0,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,3,0,0,0,67, - 0,0,0,114,64,1,0,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, - 89,0,0,0,114,65,0,0,0,114,20,1,0,0,32,114, - 7,0,0,0,114,65,1,0,0,98,6,0,0,114,58,1, - 0,0,114,9,0,0,0,122,19,70,105,108,101,70,105,110, - 100,101,114,46,95,95,114,101,112,114,95,95,114,69,0,0, - 0,41,15,114,149,0,0,0,114,148,0,0,0,114,150,0, - 0,0,114,151,0,0,0,114,235,0,0,0,114,75,1,0, - 0,114,166,0,0,0,114,228,0,0,0,114,160,0,0,0, - 114,88,1,0,0,114,225,0,0,0,114,98,1,0,0,114, - 233,0,0,0,114,103,1,0,0,114,65,1,0,0,114,12, - 0,0,0,114,7,0,0,0,114,91,1,0,0,203,5,0, - 0,115,24,0,0,0,8,0,4,2,8,7,8,16,4,4, - 8,2,8,15,10,5,8,51,2,31,10,1,12,17,114,9, - 0,0,0,114,91,1,0,0,99,4,0,0,0,0,0,0, - 0,0,0,0,0,8,0,0,0,67,0,0,0,115,146,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,33,124,5,114,18,124,5, - 106,1,125,4,110,15,124,2,124,3,107,2,114,28,116,2, - 124,1,124,2,131,2,125,4,110,5,116,3,124,1,124,2, - 131,2,125,4,124,5,115,42,116,4,124,1,124,2,124,4, - 100,3,141,3,125,5,9,0,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,100,0,83,0,35,0,4,0, - 116,5,121,72,1,0,1,0,1,0,89,0,100,0,83,0, - 37,0,119,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,41,1,114, - 163,0,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,163,0,0,0,114,39,1,0,0,114,32,1,0,0, - 114,212,0,0,0,218,9,69,120,99,101,112,116,105,111,110, - 41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0,32,32,32,32,32,32, - 114,7,0,0,0,218,14,95,102,105,120,95,117,112,95,109, - 111,100,117,108,101,104,6,0,0,115,40,0,0,0,10,2, - 10,1,4,1,4,1,8,1,8,1,12,1,10,2,4,1, - 14,1,2,1,8,1,8,1,8,1,12,1,2,128,12,1, - 6,2,2,128,2,254,115,15,0,0,0,171,16,61,0,189, - 7,65,7,7,193,8,1,65,7,7,114,108,1,0,0,99, - 0,0,0,0,0,0,0,0,0,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,102,2,125,1,116,5,116, - 6,102,2,125,2,124,0,124,1,124,2,103,3,83,0,41, - 2,122,95,82,101,116,117,114,110,115,32,97,32,108,105,115, - 116,32,111,102,32,102,105,108,101,45,98,97,115,101,100,32, - 109,111,100,117,108,101,32,108,111,97,100,101,114,115,46,10, - 10,32,32,32,32,69,97,99,104,32,105,116,101,109,32,105, - 115,32,97,32,116,117,112,108,101,32,40,108,111,97,100,101, - 114,44,32,115,117,102,102,105,120,101,115,41,46,10,32,32, - 32,32,78,41,7,114,28,1,0,0,114,186,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,127,0,0,0,114,39,1, - 0,0,114,113,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,32,32,32,114,7,0,0,0,114, - 207,0,0,0,127,6,0,0,115,8,0,0,0,12,5,8, - 1,8,1,10,1,114,9,0,0,0,114,207,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 67,0,0,0,115,8,0,0,0,124,0,97,0,100,0,83, - 0,114,69,0,0,0,41,1,114,158,0,0,0,41,1,218, - 17,95,98,111,111,116,115,116,114,97,112,95,109,111,100,117, - 108,101,32,114,7,0,0,0,218,21,95,115,101,116,95,98, - 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,138, - 6,0,0,115,2,0,0,0,8,2,114,9,0,0,0,114, - 111,1,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,50,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,111,1,0,0,114,207,0,0,0,114,16,0,0,0,114, - 80,1,0,0,114,190,0,0,0,114,91,1,0,0,114,103, - 1,0,0,218,9,109,101,116,97,95,112,97,116,104,114,61, - 0,0,0,114,74,1,0,0,41,2,114,110,1,0,0,90, - 17,115,117,112,112,111,114,116,101,100,95,108,111,97,100,101, - 114,115,32,32,114,7,0,0,0,218,8,95,105,110,115,116, - 97,108,108,143,6,0,0,115,8,0,0,0,8,2,6,1, - 20,1,16,1,114,9,0,0,0,114,113,1,0,0,41,1, - 114,87,0,0,0,114,69,0,0,0,41,3,78,78,78,41, - 2,114,0,0,0,0,114,0,0,0,0,41,1,84,41,85, - 114,151,0,0,0,114,158,0,0,0,114,186,0,0,0,114, - 91,0,0,0,114,16,0,0,0,114,99,0,0,0,114,183, - 0,0,0,114,26,0,0,0,114,230,0,0,0,90,2,110, - 116,114,19,0,0,0,114,214,0,0,0,90,5,112,111,115, - 105,120,114,51,0,0,0,218,3,97,108,108,114,59,0,0, - 0,114,136,0,0,0,114,57,0,0,0,114,62,0,0,0, - 90,20,95,112,97,116,104,115,101,112,115,95,119,105,116,104, - 95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0,114,22,0,0, - 0,114,37,0,0,0,114,43,0,0,0,114,46,0,0,0, - 114,67,0,0,0,114,73,0,0,0,114,75,0,0,0,114, - 79,0,0,0,114,80,0,0,0,114,83,0,0,0,114,86, - 0,0,0,114,95,0,0,0,218,4,116,121,112,101,218,8, - 95,95,99,111,100,101,95,95,114,185,0,0,0,114,35,0, - 0,0,114,171,0,0,0,114,34,0,0,0,114,40,0,0, - 0,114,7,1,0,0,114,116,0,0,0,114,112,0,0,0, - 114,127,0,0,0,114,61,0,0,0,114,109,1,0,0,114, - 231,0,0,0,114,113,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, - 121,0,0,0,114,128,0,0,0,114,135,0,0,0,114,137, - 0,0,0,114,139,0,0,0,114,159,0,0,0,114,166,0, - 0,0,114,175,0,0,0,114,179,0,0,0,114,181,0,0, - 0,114,188,0,0,0,114,193,0,0,0,114,194,0,0,0, - 114,199,0,0,0,218,6,111,98,106,101,99,116,114,208,0, - 0,0,114,212,0,0,0,114,213,0,0,0,114,234,0,0, - 0,114,248,0,0,0,114,10,1,0,0,114,32,1,0,0, - 114,39,1,0,0,114,28,1,0,0,114,44,1,0,0,114, - 70,1,0,0,114,74,1,0,0,114,91,1,0,0,114,108, - 1,0,0,114,207,0,0,0,114,111,1,0,0,114,113,1, - 0,0,114,12,0,0,0,114,7,0,0,0,218,8,60,109, - 111,100,117,108,101,62,1,0,0,0,115,180,0,0,0,4, - 0,4,22,8,3,8,1,8,1,8,1,8,1,10,3,4, - 1,8,1,10,1,8,2,4,3,10,1,6,2,22,2,8, - 1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4, - 255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8, - 30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8, - 8,10,5,10,22,0,127,16,37,12,1,4,2,4,1,6, - 2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8, - 40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10, - 24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14, - 73,14,67,16,30,0,127,14,17,18,50,18,45,18,25,14, - 53,14,63,14,49,0,127,14,29,0,127,10,30,8,23,8, - 11,12,5,114,9,0,0,0, + 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,78,41, + 4,114,158,0,0,0,114,172,0,0,0,114,46,1,0,0, + 114,245,0,0,0,114,246,0,0,0,32,32,114,7,0,0, + 0,114,247,0,0,0,28,5,0,0,115,8,0,0,0,6, + 7,4,1,4,255,12,3,114,9,0,0,0,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,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,67,0,0,0,115, + 22,0,0,0,100,1,100,2,108,0,109,1,125,2,1,0, + 124,2,124,0,106,2,131,1,83,0,41,3,78,114,0,0, + 0,0,41,1,218,15,78,97,109,101,115,112,97,99,101,82, + 101,97,100,101,114,41,3,114,30,1,0,0,114,73,1,0, + 0,114,46,1,0,0,41,3,114,143,0,0,0,114,243,0, + 0,0,114,73,1,0,0,32,32,32,114,7,0,0,0,114, + 31,1,0,0,40,5,0,0,115,4,0,0,0,12,1,10, + 1,114,9,0,0,0,122,36,95,78,97,109,101,115,112,97, + 99,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,78,41,13,114, + 149,0,0,0,114,148,0,0,0,114,150,0,0,0,114,235, + 0,0,0,114,232,0,0,0,114,71,1,0,0,114,205,0, + 0,0,114,0,1,0,0,114,240,0,0,0,114,238,0,0, + 0,114,244,0,0,0,114,247,0,0,0,114,31,1,0,0, + 114,12,0,0,0,114,7,0,0,0,114,70,1,0,0,254, + 4,0,0,115,22,0,0,0,8,0,8,1,2,3,10,1, + 8,10,8,3,8,3,8,3,8,3,8,3,12,12,114,9, + 0,0,0,114,70,1,0,0,99,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,7,100,6,100,7,132,0,131,1, + 90,8,101,7,100,8,100,9,132,0,131,1,90,9,101,7, + 100,19,100,11,100,12,132,1,131,1,90,10,101,7,100,20, + 100,13,100,14,132,1,131,1,90,11,101,7,100,19,100,15, + 100,16,132,1,131,1,90,12,101,4,100,17,100,18,132,0, + 131,1,90,13,100,10,83,0,41,21,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,0,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,67,0,0,0,115,64,0,0,0, + 116,0,116,1,106,2,160,3,161,0,131,1,68,0,93,22, + 92,2,125,0,125,1,124,1,100,1,117,0,114,20,116,1, + 106,2,124,0,61,0,113,7,116,4,124,1,100,2,131,2, + 114,29,124,1,160,5,161,0,1,0,113,7,100,1,83,0, + 41,3,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,41,6,218,4,108,105,115,116,114,16,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,75,1,0,0,41,2,114,141,0,0,0,218, + 6,102,105,110,100,101,114,32,32,114,7,0,0,0,114,75, + 1,0,0,51,5,0,0,115,14,0,0,0,22,4,8,1, + 10,1,10,1,8,1,2,128,4,252,114,9,0,0,0,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,1,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,67,0, + 0,0,115,78,0,0,0,116,0,106,1,100,1,117,1,114, + 14,116,0,106,1,115,14,116,2,160,3,100,2,116,4,161, + 2,1,0,116,0,106,1,68,0,93,18,125,1,9,0,124, + 1,124,0,131,1,2,0,1,0,83,0,35,0,4,0,116, + 5,121,38,1,0,1,0,1,0,89,0,113,17,37,0,100, + 1,83,0,119,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,16,0,0,0,218,10,112,97,116,104,95,104, + 111,111,107,115,114,99,0,0,0,114,100,0,0,0,114,161, + 0,0,0,114,142,0,0,0,41,2,114,65,0,0,0,90, + 4,104,111,111,107,32,32,114,7,0,0,0,218,11,95,112, + 97,116,104,95,104,111,111,107,115,61,5,0,0,115,22,0, + 0,0,16,3,12,1,10,1,2,1,12,1,2,128,12,1, + 4,1,2,128,4,2,2,253,115,12,0,0,0,148,3,26, + 2,154,7,35,9,166,1,35,9,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,8,0, + 0,0,67,0,0,0,115,104,0,0,0,124,1,100,1,107, + 2,114,21,9,0,116,0,160,1,161,0,125,1,110,11,35, + 0,4,0,116,2,121,51,1,0,1,0,1,0,89,0,100, + 2,83,0,37,0,9,0,116,3,106,4,124,1,25,0,125, + 2,124,2,83,0,35,0,4,0,116,5,121,50,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,124,2,83,0,37,0,119, + 0,119,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,10,0,0,0,78,41, + 7,114,19,0,0,0,114,82,0,0,0,218,17,70,105,108, + 101,78,111,116,70,111,117,110,100,69,114,114,111,114,114,16, + 0,0,0,114,77,1,0,0,218,8,75,101,121,69,114,114, + 111,114,114,81,1,0,0,41,3,114,220,0,0,0,114,65, + 0,0,0,114,79,1,0,0,32,32,32,114,7,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,74,5,0,0,115,36,0,0,0,8, + 8,2,1,10,1,2,128,12,1,6,3,2,128,2,1,10, + 1,4,4,2,128,12,253,10,1,12,1,4,1,2,128,2, + 253,2,250,115,24,0,0,0,133,4,10,0,138,7,20,7, + 150,5,29,0,157,17,49,7,178,1,49,7,179,1,20,7, + 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,4,0, + 0,0,67,0,0,0,115,138,0,0,0,116,0,124,2,100, + 1,131,2,114,27,116,1,160,2,124,2,161,1,155,0,100, + 2,157,2,125,3,116,3,160,4,124,3,116,5,161,2,1, + 0,124,2,160,6,124,1,161,1,92,2,125,4,125,5,110, + 21,116,1,160,2,124,2,161,1,155,0,100,3,157,2,125, + 3,116,3,160,4,124,3,116,5,161,2,1,0,124,2,160, + 7,124,1,161,1,125,4,103,0,125,5,124,4,100,0,117, + 1,114,58,116,1,160,8,124,1,124,4,161,2,83,0,116, + 1,160,9,124,1,100,0,161,2,125,6,124,5,124,6,95, + 10,124,6,83,0,41,4,78,114,160,0,0,0,122,53,46, + 102,105,110,100,95,115,112,101,99,40,41,32,110,111,116,32, + 102,111,117,110,100,59,32,102,97,108,108,105,110,103,32,98, + 97,99,107,32,116,111,32,102,105,110,100,95,108,111,97,100, + 101,114,40,41,122,53,46,102,105,110,100,95,115,112,101,99, + 40,41,32,110,111,116,32,102,111,117,110,100,59,32,102,97, + 108,108,105,110,103,32,98,97,99,107,32,116,111,32,102,105, + 110,100,95,109,111,100,117,108,101,40,41,41,11,114,152,0, + 0,0,114,158,0,0,0,90,12,95,111,98,106,101,99,116, + 95,110,97,109,101,114,99,0,0,0,114,100,0,0,0,114, + 161,0,0,0,114,160,0,0,0,114,228,0,0,0,114,223, + 0,0,0,114,206,0,0,0,114,201,0,0,0,41,7,114, + 220,0,0,0,114,162,0,0,0,114,79,1,0,0,114,165, + 0,0,0,114,163,0,0,0,114,164,0,0,0,114,209,0, + 0,0,32,32,32,32,32,32,32,114,7,0,0,0,218,16, + 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, + 96,5,0,0,115,26,0,0,0,10,4,16,1,12,2,16, + 1,16,2,12,2,10,1,4,1,8,1,12,1,12,1,6, + 1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,166,0,0,0, + 103,0,125,4,124,2,68,0,93,67,125,5,116,0,124,5, + 116,1,116,2,102,2,131,2,115,14,113,4,124,0,160,3, + 124,5,161,1,125,6,124,6,100,1,117,1,114,71,116,4, + 124,6,100,2,131,2,114,35,124,6,160,5,124,1,124,3, + 161,2,125,7,110,6,124,0,160,6,124,1,124,6,161,2, + 125,7,124,7,100,1,117,0,114,46,113,4,124,7,106,7, + 100,1,117,1,114,55,124,7,2,0,1,0,83,0,124,7, + 106,8,125,8,124,8,100,1,117,0,114,66,116,9,100,3, + 131,1,130,1,124,4,160,10,124,8,161,1,1,0,113,4, + 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,225,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,184,0,0,0,114,109,0,0,0, + 218,5,98,121,116,101,115,114,84,1,0,0,114,152,0,0, + 0,114,225,0,0,0,114,85,1,0,0,114,163,0,0,0, + 114,201,0,0,0,114,142,0,0,0,114,190,0,0,0,114, + 158,0,0,0,114,206,0,0,0,41,9,114,220,0,0,0, + 114,162,0,0,0,114,65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0, + 114,164,0,0,0,32,32,32,32,32,32,32,32,32,114,7, + 0,0,0,218,9,95,103,101,116,95,115,112,101,99,117,5, + 0,0,115,42,0,0,0,4,5,8,1,14,1,2,1,10, + 1,8,1,10,1,14,1,12,2,8,1,2,1,10,1,8, + 1,6,1,8,1,8,1,10,5,2,128,12,2,6,1,4, + 1,114,9,0,0,0,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,5,0,0,0,67,0,0, + 0,115,94,0,0,0,124,2,100,1,117,0,114,7,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,20,100,1,83,0,124,4, + 106,3,100,1,117,0,114,45,124,4,106,4,125,5,124,5, + 114,43,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, + 124,4,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,16,0,0,0,114,65,0, + 0,0,114,88,1,0,0,114,163,0,0,0,114,201,0,0, + 0,114,204,0,0,0,114,44,1,0,0,41,6,114,220,0, + 0,0,114,162,0,0,0,114,65,0,0,0,114,224,0,0, + 0,114,209,0,0,0,114,87,1,0,0,32,32,32,32,32, + 32,114,7,0,0,0,114,225,0,0,0,149,5,0,0,115, + 26,0,0,0,8,6,6,1,14,1,8,1,4,1,10,1, + 6,1,4,1,6,3,16,1,4,1,4,2,4,2,114,9, + 0,0,0,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,67,0,0,0,115,42, + 0,0,0,116,0,160,1,100,1,116,2,161,2,1,0,124, + 0,160,3,124,1,124,2,161,2,125,3,124,3,100,2,117, + 0,114,18,100,2,83,0,124,3,106,4,83,0,41,3,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,122,101,80,97,116, + 104,70,105,110,100,101,114,46,102,105,110,100,95,109,111,100, + 117,108,101,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, + 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, + 97,100,78,114,226,0,0,0,114,227,0,0,0,32,32,32, + 32,114,7,0,0,0,114,228,0,0,0,173,5,0,0,115, + 14,0,0,0,6,8,2,2,4,254,12,3,8,1,4,1, + 6,1,114,9,0,0,0,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, + 0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124,0,105,0,124,1,164, + 1,142,1,83,0,41,4,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,78,41,3,90,18,105,109,112,111, + 114,116,108,105,98,46,109,101,116,97,100,97,116,97,114,89, + 1,0,0,218,18,102,105,110,100,95,100,105,115,116,114,105, + 98,117,116,105,111,110,115,41,3,114,144,0,0,0,114,145, + 0,0,0,114,89,1,0,0,32,32,32,114,7,0,0,0, + 114,90,1,0,0,189,5,0,0,115,4,0,0,0,12,10, + 16,1,114,9,0,0,0,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,114,69,0,0,0,114,229,0,0,0, + 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,75,1,0,0, + 114,81,1,0,0,114,233,0,0,0,114,84,1,0,0,114, + 85,1,0,0,114,88,1,0,0,114,225,0,0,0,114,228, + 0,0,0,114,90,1,0,0,114,12,0,0,0,114,7,0, + 0,0,114,74,1,0,0,47,5,0,0,115,36,0,0,0, + 8,0,4,2,2,2,10,1,2,9,10,1,2,12,10,1, + 2,21,10,1,2,20,12,1,2,31,12,1,2,23,12,1, + 2,15,14,1,114,9,0,0,0,114,74,1,0,0,99,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,6,0,0,0,7, + 0,0,0,115,114,0,0,0,135,5,103,0,125,3,124,2, + 68,0,93,16,92,2,138,5,125,4,124,3,160,0,136,5, + 102,1,100,1,100,2,132,8,124,4,68,0,131,1,161,1, + 1,0,113,5,124,3,124,0,95,1,124,1,112,28,100,3, + 124,0,95,2,116,3,124,0,106,2,131,1,115,44,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,3,0,0,0,51,0,0,0,115,24,0, + 0,0,129,0,124,0,93,7,125,1,124,1,137,2,102,2, + 86,0,1,0,113,2,100,0,83,0,114,69,0,0,0,114, + 12,0,0,0,41,3,114,5,0,0,0,114,41,1,0,0, + 114,163,0,0,0,32,32,128,114,7,0,0,0,114,8,0, + 0,0,218,5,0,0,115,4,0,0,0,2,128,22,0,114, + 9,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,97,0,0, + 0,114,130,0,0,0,78,41,11,114,190,0,0,0,218,8, + 95,108,111,97,100,101,114,115,114,65,0,0,0,114,86,0, + 0,0,114,67,0,0,0,114,19,0,0,0,114,82,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,6,114,143,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,211,0,0,0,114, + 163,0,0,0,32,32,32,32,32,64,114,7,0,0,0,114, + 235,0,0,0,212,5,0,0,115,22,0,0,0,2,128,4, + 4,12,1,26,1,6,1,10,2,10,1,18,1,6,1,8, + 1,12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93,1,0, + 0,114,20,1,0,0,32,114,7,0,0,0,114,75,1,0, + 0,228,5,0,0,114,81,0,0,0,114,9,0,0,0,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,4,0,0,0,67,0, + 0,0,115,54,0,0,0,116,0,160,1,100,1,116,2,161, + 2,1,0,124,0,160,3,124,1,161,1,125,2,124,2,100, + 2,117,0,114,19,100,2,103,0,102,2,83,0,124,2,106, + 4,124,2,106,5,112,25,103,0,102,2,83,0,41,3,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,122,101,70,105,108,101,70,105,110,100, + 101,114,46,102,105,110,100,95,108,111,97,100,101,114,40,41, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, + 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, + 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, + 51,46,49,50,59,32,117,115,101,32,102,105,110,100,95,115, + 112,101,99,40,41,32,105,110,115,116,101,97,100,78,41,6, + 114,99,0,0,0,114,100,0,0,0,114,101,0,0,0,114, + 225,0,0,0,114,163,0,0,0,114,201,0,0,0,41,3, + 114,143,0,0,0,114,162,0,0,0,114,209,0,0,0,32, + 32,32,114,7,0,0,0,114,160,0,0,0,234,5,0,0, + 115,14,0,0,0,6,7,2,2,4,254,10,3,8,1,8, + 1,16,1,114,9,0,0,0,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,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,200,0,0,0,41,1,114,212, + 0,0,0,41,7,114,143,0,0,0,114,210,0,0,0,114, + 162,0,0,0,114,65,0,0,0,90,4,115,109,115,108,114, + 224,0,0,0,114,163,0,0,0,32,32,32,32,32,32,32, + 114,7,0,0,0,114,88,1,0,0,249,5,0,0,115,8, + 0,0,0,10,1,8,1,2,1,6,255,114,9,0,0,0, + 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,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,9,0,116,1,124,0,106,2,112,17,116,3,160, + 4,161,0,131,1,106,5,125,5,110,12,35,0,4,0,116, + 6,121,190,1,0,1,0,1,0,100,4,125,5,89,0,110, + 1,37,0,124,5,124,0,106,7,107,3,114,45,124,0,160, + 8,161,0,1,0,124,5,124,0,95,7,116,9,131,0,114, + 56,124,0,106,10,125,6,124,4,160,11,161,0,125,7,110, + 5,124,0,106,12,125,6,124,4,125,7,124,7,124,6,118, + 0,114,108,116,13,124,0,106,2,124,4,131,2,125,8,124, + 0,106,14,68,0,93,29,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,103,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, + 74,116,17,124,8,131,1,125,3,124,0,106,14,68,0,93, + 55,92,2,125,9,125,10,9,0,116,13,124,0,106,2,124, + 4,124,9,23,0,131,2,125,12,110,12,35,0,4,0,116, + 18,121,189,1,0,1,0,1,0,89,0,1,0,100,6,83, + 0,37,0,116,19,160,20,100,7,124,12,100,3,100,8,166, + 3,1,0,124,7,124,9,23,0,124,6,118,0,114,166,116, + 15,124,12,131,1,114,166,124,0,160,16,124,10,124,1,124, + 12,100,6,124,2,161,5,2,0,1,0,83,0,113,111,124, + 3,114,187,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,119,0,119,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,97,0,0,0,114,45,0,0,0,114,130,0, + 0,0,114,235,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,104,0, + 0,0,114,75,0,0,0,114,65,0,0,0,114,19,0,0, + 0,114,82,0,0,0,114,33,1,0,0,114,76,0,0,0, + 114,93,1,0,0,218,11,95,102,105,108,108,95,99,97,99, + 104,101,114,22,0,0,0,114,96,1,0,0,114,131,0,0, + 0,114,95,1,0,0,114,67,0,0,0,114,92,1,0,0, + 114,80,0,0,0,114,88,1,0,0,114,83,0,0,0,114, + 111,0,0,0,114,158,0,0,0,114,172,0,0,0,114,206, + 0,0,0,114,201,0,0,0,41,14,114,143,0,0,0,114, + 162,0,0,0,114,224,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,192,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,210, + 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,209,0, + 0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 114,7,0,0,0,114,225,0,0,0,254,5,0,0,115,94, + 0,0,0,4,5,14,1,2,1,22,1,2,128,12,1,8, + 1,2,128,10,1,8,1,6,1,6,2,6,1,10,1,6, + 2,4,1,8,2,12,1,14,1,8,1,10,1,8,1,24, + 1,2,255,8,5,14,2,2,1,18,1,2,128,12,1,8, + 1,2,128,16,1,12,1,8,1,10,1,4,1,8,255,2, + 128,4,2,12,1,12,1,8,1,4,1,4,1,2,244,2, + 228,115,31,0,0,0,138,10,21,0,149,9,32,7,193,52, + 8,65,61,2,193,61,7,66,8,9,194,61,1,66,8,9, + 194,62,1,32,7,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,10,0,0,0,67,0,0,0, + 115,194,0,0,0,124,0,106,0,125,1,9,0,116,1,160, + 2,124,1,112,11,116,1,160,3,161,0,161,1,125,2,110, + 15,35,0,4,0,116,4,116,5,116,6,102,3,121,96,1, + 0,1,0,1,0,103,0,125,2,89,0,110,1,37,0,116, + 7,106,8,160,9,100,1,161,1,115,41,116,10,124,2,131, + 1,124,0,95,11,110,37,116,10,131,0,125,3,124,2,68, + 0,93,28,125,4,124,4,160,12,100,2,161,1,92,3,125, + 5,125,6,125,7,124,6,114,67,100,3,160,13,124,5,124, + 7,160,14,161,0,161,2,125,8,110,2,124,5,125,8,124, + 3,160,15,124,8,161,1,1,0,113,46,124,3,124,0,95, + 11,116,7,106,8,160,9,116,16,161,1,114,94,100,4,100, + 5,132,0,124,2,68,0,131,1,124,0,95,17,100,6,83, + 0,100,6,83,0,119,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, + 15,0,0,0,114,97,0,0,0,114,88,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,83, + 0,0,0,115,20,0,0,0,104,0,124,0,93,6,125,1, + 124,1,160,0,161,0,146,2,113,2,83,0,114,12,0,0, + 0,41,1,114,131,0,0,0,41,2,114,5,0,0,0,90, + 2,102,110,32,32,114,7,0,0,0,114,14,0,0,0,78, + 6,0,0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100,105,114, + 114,82,0,0,0,114,82,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, + 16,0,0,0,114,26,0,0,0,114,27,0,0,0,114,94, + 1,0,0,114,95,1,0,0,114,126,0,0,0,114,89,0, + 0,0,114,131,0,0,0,218,3,97,100,100,114,28,0,0, + 0,114,96,1,0,0,41,9,114,143,0,0,0,114,65,0, + 0,0,90,8,99,111,110,116,101,110,116,115,90,21,108,111, + 119,101,114,95,115,117,102,102,105,120,95,99,111,110,116,101, + 110,116,115,114,67,1,0,0,114,141,0,0,0,114,51,1, + 0,0,114,41,1,0,0,90,8,110,101,119,95,110,97,109, + 101,32,32,32,32,32,32,32,32,32,114,7,0,0,0,114, + 98,1,0,0,49,6,0,0,115,42,0,0,0,6,2,2, + 1,20,1,2,128,18,1,8,3,2,128,12,3,12,1,6, + 7,8,1,16,1,4,1,18,1,4,2,12,1,6,1,12, + 1,20,1,4,255,2,233,115,13,0,0,0,132,9,14,0, + 142,12,28,7,193,32,1,28,7,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,7,0,0,0,115,22,0,0,0,135,0,135,1,136, + 0,136,1,102,2,100,1,100,2,132,8,125,2,124,2,83, + 0,41,4,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,4,0,0,0,19,0,0, + 0,115,36,0,0,0,116,0,124,0,131,1,115,10,116,1, + 100,1,124,0,100,2,141,2,130,1,137,1,124,0,103,1, + 137,2,162,1,82,0,142,0,83,0,41,4,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, + 78,41,2,114,83,0,0,0,114,142,0,0,0,41,3,114, + 65,0,0,0,114,220,0,0,0,114,97,1,0,0,32,128, + 128,114,7,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, + 90,6,0,0,115,6,0,0,0,8,2,12,1,16,1,114, + 9,0,0,0,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,78,114,12,0, + 0,0,41,3,114,220,0,0,0,114,97,1,0,0,114,102, + 1,0,0,96,96,32,114,7,0,0,0,218,9,112,97,116, + 104,95,104,111,111,107,80,6,0,0,115,6,0,0,0,4, + 128,14,10,4,6,114,9,0,0,0,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,3,0,0, + 0,67,0,0,0,114,64,1,0,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,89,0,0,0,114,65,0,0,0,114,20,1,0,0, + 32,114,7,0,0,0,114,65,1,0,0,98,6,0,0,114, + 58,1,0,0,114,9,0,0,0,122,19,70,105,108,101,70, + 105,110,100,101,114,46,95,95,114,101,112,114,95,95,114,69, + 0,0,0,41,15,114,149,0,0,0,114,148,0,0,0,114, + 150,0,0,0,114,151,0,0,0,114,235,0,0,0,114,75, + 1,0,0,114,166,0,0,0,114,228,0,0,0,114,160,0, + 0,0,114,88,1,0,0,114,225,0,0,0,114,98,1,0, + 0,114,233,0,0,0,114,103,1,0,0,114,65,1,0,0, + 114,12,0,0,0,114,7,0,0,0,114,91,1,0,0,203, + 5,0,0,115,24,0,0,0,8,0,4,2,8,7,8,16, + 4,4,8,2,8,15,10,5,8,51,2,31,10,1,12,17, + 114,9,0,0,0,114,91,1,0,0,99,4,0,0,0,0, + 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, + 146,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,33,124,5,114,18, + 124,5,106,1,125,4,110,15,124,2,124,3,107,2,114,28, + 116,2,124,1,124,2,131,2,125,4,110,5,116,3,124,1, + 124,2,131,2,125,4,124,5,115,42,116,4,124,1,124,2, + 124,4,100,3,141,3,125,5,9,0,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,100,0,83,0,35,0, + 4,0,116,5,121,72,1,0,1,0,1,0,89,0,100,0, + 83,0,37,0,119,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,41, + 1,114,163,0,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,163,0,0,0,114,39,1,0,0,114,32,1, + 0,0,114,212,0,0,0,218,9,69,120,99,101,112,116,105, + 111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0,32,32,32,32, + 32,32,114,7,0,0,0,218,14,95,102,105,120,95,117,112, + 95,109,111,100,117,108,101,104,6,0,0,115,40,0,0,0, + 10,2,10,1,4,1,4,1,8,1,8,1,12,1,10,2, + 4,1,14,1,2,1,8,1,8,1,8,1,12,1,2,128, + 12,1,6,2,2,128,2,254,115,15,0,0,0,171,16,61, + 0,189,7,65,7,7,193,8,1,65,7,7,114,108,1,0, + 0,99,0,0,0,0,0,0,0,0,0,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,102,2,125,1,116, + 5,116,6,102,2,125,2,124,0,124,1,124,2,103,3,83, + 0,41,2,122,95,82,101,116,117,114,110,115,32,97,32,108, + 105,115,116,32,111,102,32,102,105,108,101,45,98,97,115,101, + 100,32,109,111,100,117,108,101,32,108,111,97,100,101,114,115, + 46,10,10,32,32,32,32,69,97,99,104,32,105,116,101,109, + 32,105,115,32,97,32,116,117,112,108,101,32,40,108,111,97, + 100,101,114,44,32,115,117,102,102,105,120,101,115,41,46,10, + 32,32,32,32,78,41,7,114,28,1,0,0,114,186,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,127,0,0,0,114, + 39,1,0,0,114,113,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,32,32,32,114,7,0,0, + 0,114,207,0,0,0,127,6,0,0,115,8,0,0,0,12, + 5,8,1,8,1,10,1,114,9,0,0,0,114,207,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,67,0,0,0,115,8,0,0,0,124,0,97,0,100, + 0,83,0,114,69,0,0,0,41,1,114,158,0,0,0,41, + 1,218,17,95,98,111,111,116,115,116,114,97,112,95,109,111, + 100,117,108,101,32,114,7,0,0,0,218,21,95,115,101,116, + 95,98,111,111,116,115,116,114,97,112,95,109,111,100,117,108, + 101,138,6,0,0,115,2,0,0,0,8,2,114,9,0,0, + 0,114,111,1,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,67,0,0,0,115,50,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,111,1,0,0,114,207,0,0,0,114,16,0,0, + 0,114,80,1,0,0,114,190,0,0,0,114,91,1,0,0, + 114,103,1,0,0,218,9,109,101,116,97,95,112,97,116,104, + 114,61,0,0,0,114,74,1,0,0,41,2,114,110,1,0, + 0,90,17,115,117,112,112,111,114,116,101,100,95,108,111,97, + 100,101,114,115,32,32,114,7,0,0,0,218,8,95,105,110, + 115,116,97,108,108,143,6,0,0,115,8,0,0,0,8,2, + 6,1,20,1,16,1,114,9,0,0,0,114,113,1,0,0, + 41,1,114,87,0,0,0,114,69,0,0,0,41,3,78,78, + 78,41,2,114,0,0,0,0,114,0,0,0,0,41,1,84, + 41,85,114,151,0,0,0,114,158,0,0,0,114,186,0,0, + 0,114,91,0,0,0,114,16,0,0,0,114,99,0,0,0, + 114,183,0,0,0,114,26,0,0,0,114,230,0,0,0,90, + 2,110,116,114,19,0,0,0,114,214,0,0,0,90,5,112, + 111,115,105,120,114,51,0,0,0,218,3,97,108,108,114,59, + 0,0,0,114,136,0,0,0,114,57,0,0,0,114,62,0, + 0,0,90,20,95,112,97,116,104,115,101,112,115,95,119,105, + 116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0,114,22, + 0,0,0,114,37,0,0,0,114,43,0,0,0,114,46,0, + 0,0,114,67,0,0,0,114,73,0,0,0,114,75,0,0, + 0,114,79,0,0,0,114,80,0,0,0,114,83,0,0,0, + 114,86,0,0,0,114,95,0,0,0,218,4,116,121,112,101, + 218,8,95,95,99,111,100,101,95,95,114,185,0,0,0,114, + 35,0,0,0,114,171,0,0,0,114,34,0,0,0,114,40, + 0,0,0,114,7,1,0,0,114,116,0,0,0,114,112,0, + 0,0,114,127,0,0,0,114,61,0,0,0,114,109,1,0, + 0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0,114,135,0,0,0, + 114,137,0,0,0,114,139,0,0,0,114,159,0,0,0,114, + 166,0,0,0,114,175,0,0,0,114,179,0,0,0,114,181, + 0,0,0,114,188,0,0,0,114,193,0,0,0,114,194,0, + 0,0,114,199,0,0,0,218,6,111,98,106,101,99,116,114, + 208,0,0,0,114,212,0,0,0,114,213,0,0,0,114,234, + 0,0,0,114,248,0,0,0,114,10,1,0,0,114,32,1, + 0,0,114,39,1,0,0,114,28,1,0,0,114,44,1,0, + 0,114,70,1,0,0,114,74,1,0,0,114,91,1,0,0, + 114,108,1,0,0,114,207,0,0,0,114,111,1,0,0,114, + 113,1,0,0,114,12,0,0,0,114,7,0,0,0,218,8, + 60,109,111,100,117,108,101,62,1,0,0,0,115,180,0,0, + 0,4,0,4,22,8,3,8,1,8,1,8,1,8,1,10, + 3,4,1,8,1,10,1,8,2,4,3,10,1,6,2,22, + 2,8,1,8,1,10,1,14,1,4,4,4,1,2,1,2, + 1,4,255,8,4,6,16,8,3,8,5,8,5,4,6,10, + 1,8,30,8,6,8,8,8,10,8,9,8,5,4,7,10, + 1,8,8,10,5,10,22,0,127,16,37,12,1,4,2,4, + 1,6,2,4,1,10,1,8,2,6,2,8,2,16,2,8, + 71,8,40,8,19,8,12,8,12,8,31,8,20,8,33,8, + 28,10,24,10,13,10,10,8,11,6,14,4,3,2,1,12, + 255,14,73,14,67,16,30,0,127,14,17,18,50,18,45,18, + 25,14,53,14,63,14,49,0,127,14,29,0,127,10,30,8, + 23,8,11,12,5,114,9,0,0,0, }; From webhook-mailer at python.org Mon Jun 21 06:47:45 2021 From: webhook-mailer at python.org (markshannon) Date: Mon, 21 Jun 2021 10:47:45 -0000 Subject: [Python-checkins] bpo-44297: Fix missing line number in generator expressions (GH-26821) Message-ID: https://github.com/python/cpython/commit/7674c83d81905d6afe989ca3f93f08b7939b057c commit: 7674c83d81905d6afe989ca3f93f08b7939b057c branch: 3.10 author: Mark Shannon committer: markshannon date: 2021-06-21T11:47:16+01:00 summary: bpo-44297: Fix missing line number in generator expressions (GH-26821) * Make sure that line number is set when entering comprehension scope in compiler. (cherry picked from commit 82e5c28af7049c4f5343c808f172cbe2e145f49b) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-19-12-41-13.bpo-44297.F53vHj.rst M Lib/test/test_compile.py M Python/compile.c M Python/importlib_external.h diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index ea8ae22fce40f1..6dc1c383f8f2c9 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -895,6 +895,21 @@ def aug_store_attr(): for (_, _, line) in func.__code__.co_lines() ] self.assertEqual(lines, code_lines) + def test_line_number_genexp(self): + + def return_genexp(): + return (1 + for + x + in + y) + genexp_lines = [None, 1, 3, 1] + + genexp_code = return_genexp.__code__.co_consts[1] + code_lines = [None if line is None else line-return_genexp.__code__.co_firstlineno + for (_, _, line) in genexp_code.co_lines() ] + self.assertEqual(genexp_lines, code_lines) + def test_big_dict_literal(self): # The compiler has a flushing point in "compiler_dict" that calls compiles diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-19-12-41-13.bpo-44297.F53vHj.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-19-12-41-13.bpo-44297.F53vHj.rst new file mode 100644 index 00000000000000..bdcb5b2db39e09 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-19-12-41-13.bpo-44297.F53vHj.rst @@ -0,0 +1,3 @@ +Make sure that the line number is set when entering a comprehension scope. +Ensures that backtraces inclusing generator expressions show the correct +line number. diff --git a/Python/compile.c b/Python/compile.c index 4abc9f05eab172..7dc04923af8811 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -4799,6 +4799,7 @@ compiler_comprehension(struct compiler *c, expr_ty e, int type, { goto error; } + SET_LOC(c, e); is_async_generator = c->u->u_ste->ste_coroutine; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 6808f2b0f1eafc..90da04e1533722 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -82,7 +82,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,46,0, - 0,0,115,4,0,0,0,6,128,22,0,114,9,0,0,0, + 0,0,115,4,0,0,0,2,128,26,0,114,9,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,7,125,1,100,0,124,1,155,0,157,2, @@ -222,8 +222,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 83,0,0,0,114,47,0,0,0,114,7,0,0,0,114,48, 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 53,0,0,0,128,0,0,0,115,6,0,0,0,6,0,6, - 1,14,255,114,54,0,0,0,78,41,2,114,59,0,0,0, + 53,0,0,0,128,0,0,0,115,6,0,0,0,6,0,4, + 1,16,255,114,54,0,0,0,78,41,2,114,59,0,0,0, 114,62,0,0,0,41,1,114,63,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,114,67,0,0,0, 126,0,0,0,115,6,0,0,0,10,2,2,1,8,255,99, @@ -241,7 +241,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0,0,0,114,8,0,0,0,114,9,0, - 0,0,134,0,0,0,115,4,0,0,0,6,128,20,0,122, + 0,0,134,0,0,0,115,4,0,0,0,2,128,24,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,10,0,0,0,78,114,3,0,0,0,41, @@ -1803,964 +1803,964 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,169,2,114,5,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, 7,0,0,0,114,8,0,0,0,114,9,0,0,0,167,4, - 0,0,115,6,0,0,0,6,128,2,1,20,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,46,60,108, - 111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,62, - 78,41,4,114,74,0,0,0,114,65,0,0,0,218,3,97, - 110,121,114,232,0,0,0,114,247,0,0,0,114,7,0,0, - 0,114,45,1,0,0,114,8,0,0,0,114,206,0,0,0, - 164,4,0,0,115,8,0,0,0,14,2,12,1,2,1,8, - 255,122,30,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,114,23,0,0,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,7,0,0,0,114,247,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,241,0,0, - 0,170,4,0,0,114,24,0,0,0,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,114,23,0,0,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,7,0,0,0,114,247,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,1,1,0,0,174,4, - 0,0,114,24,0,0,0,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, - 114,26,1,0,0,114,27,1,0,0,114,71,0,0,0,114, - 247,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,203,0,0,0,178,4,0,0,114,28,1,0, - 0,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,150,0,0,0,114,149,0,0,0, - 114,151,0,0,0,114,152,0,0,0,114,236,0,0,0,114, - 16,1,0,0,114,22,1,0,0,114,239,0,0,0,114,245, - 0,0,0,114,206,0,0,0,114,241,0,0,0,114,1,1, - 0,0,114,160,0,0,0,114,203,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,30,1,0,0,131,4,0,0,115,24,0,0,0,8,0, - 4,2,8,6,8,4,8,4,8,3,8,8,8,6,8,6, - 8,4,2,4,14,1,114,30,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,104,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,100,18,100,19,132,0,90,12,100,20,100, - 21,132,0,90,13,100,22,100,23,132,0,90,14,100,24,83, - 0,41,25,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,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,36,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,3,124,0,95,5,100,0,83,0, - 114,69,0,0,0,41,6,218,5,95,110,97,109,101,218,5, - 95,112,97,116,104,114,136,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, - 12,95,112,97,116,104,95,102,105,110,100,101,114,169,4,114, - 143,0,0,0,114,141,0,0,0,114,65,0,0,0,90,11, - 112,97,116,104,95,102,105,110,100,101,114,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,236,0,0,0,191, - 4,0,0,115,8,0,0,0,6,1,6,1,14,1,10,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, - 15,100,3,83,0,124,1,100,4,102,2,83,0,41,6,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, - 97,0,0,0,114,10,0,0,0,41,2,114,15,0,0,0, - 114,65,0,0,0,90,8,95,95,112,97,116,104,95,95,78, - 41,2,114,48,1,0,0,114,104,0,0,0,41,4,114,143, - 0,0,0,114,40,1,0,0,218,3,100,111,116,90,2,109, - 101,114,7,0,0,0,114,7,0,0,0,114,8,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,197,4,0,0,115,8,0, - 0,0,18,2,8,1,4,2,8,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,155,0,0,0,114,15,0, - 0,0,218,7,109,111,100,117,108,101,115,41,3,114,143,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,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,50,1,0,0,207,4,0,0,115,4, - 0,0,0,12,1,16,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,80,0,0,0,116,0,124,0,160,1,161,0,131,1, - 125,1,124,1,124,0,106,2,107,3,114,37,124,0,160,3, - 124,0,106,4,124,1,161,2,125,2,124,2,100,0,117,1, - 114,34,124,2,106,5,100,0,117,0,114,34,124,2,106,6, - 114,34,124,2,106,6,124,0,95,7,124,1,124,0,95,2, - 124,0,106,7,83,0,114,69,0,0,0,41,8,114,136,0, - 0,0,114,50,1,0,0,114,51,1,0,0,114,52,1,0, - 0,114,48,1,0,0,114,164,0,0,0,114,202,0,0,0, - 114,49,1,0,0,41,3,114,143,0,0,0,90,11,112,97, - 114,101,110,116,95,112,97,116,104,114,210,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,12,95, - 114,101,99,97,108,99,117,108,97,116,101,211,4,0,0,115, - 16,0,0,0,12,2,10,1,14,1,18,3,6,1,8,1, - 6,1,6,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,243,12,0,0,0,116, - 0,124,0,160,1,161,0,131,1,83,0,114,69,0,0,0, - 41,2,218,4,105,116,101,114,114,57,1,0,0,114,21,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,8,95,95,105,116,101,114,95,95,224,4,0,0,243, - 2,0,0,0,12,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,143,0,0,0,218,5,105,110, - 100,101,120,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,11,95,95,103,101,116,105,116,101,109,95,95,227, - 4,0,0,114,61,1,0,0,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,69,0,0,0,41,1,114,49,1,0,0,41,3,114,143, - 0,0,0,114,63,1,0,0,114,65,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,95,95, - 115,101,116,105,116,101,109,95,95,230,4,0,0,115,2,0, - 0,0,14,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,114,58,1,0,0,114,69, - 0,0,0,41,2,114,4,0,0,0,114,57,1,0,0,114, + 0,0,115,8,0,0,0,2,128,4,0,2,1,20,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,46, + 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, + 114,62,78,41,4,114,74,0,0,0,114,65,0,0,0,218, + 3,97,110,121,114,232,0,0,0,114,247,0,0,0,114,7, + 0,0,0,114,45,1,0,0,114,8,0,0,0,114,206,0, + 0,0,164,4,0,0,115,8,0,0,0,14,2,12,1,2, + 1,8,255,122,30,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,114,23,0,0, + 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,7,0,0,0,114,247,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,241, + 0,0,0,170,4,0,0,114,24,0,0,0,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,114,23,0,0,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,7,0,0,0,114,247,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,1,1,0,0, + 174,4,0,0,114,24,0,0,0,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,114,26,1,0,0,114,27,1,0,0,114,71,0,0, + 0,114,247,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,203,0,0,0,178,4,0,0,114,28, + 1,0,0,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,150,0,0,0,114,149,0, + 0,0,114,151,0,0,0,114,152,0,0,0,114,236,0,0, + 0,114,16,1,0,0,114,22,1,0,0,114,239,0,0,0, + 114,245,0,0,0,114,206,0,0,0,114,241,0,0,0,114, + 1,1,0,0,114,160,0,0,0,114,203,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,30,1,0,0,131,4,0,0,115,24,0,0,0, + 8,0,4,2,8,6,8,4,8,4,8,3,8,8,8,6, + 8,6,8,4,2,4,14,1,114,30,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,104,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,100,18,100,19,132,0,90,12,100, + 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, + 24,83,0,41,25,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, + 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,36,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,3,124,0,95,5,100,0, + 83,0,114,69,0,0,0,41,6,218,5,95,110,97,109,101, + 218,5,95,112,97,116,104,114,136,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,12,95,112,97,116,104,95,102,105,110,100,101,114,169, + 4,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, + 90,11,112,97,116,104,95,102,105,110,100,101,114,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,0, + 0,191,4,0,0,115,8,0,0,0,6,1,6,1,14,1, + 10,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,15,100,3,83,0,124,1,100,4,102,2,83,0,41, + 6,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,97,0,0,0,114,10,0,0,0,41,2,114,15,0, + 0,0,114,65,0,0,0,90,8,95,95,112,97,116,104,95, + 95,78,41,2,114,48,1,0,0,114,104,0,0,0,41,4, + 114,143,0,0,0,114,40,1,0,0,218,3,100,111,116,90, + 2,109,101,114,7,0,0,0,114,7,0,0,0,114,8,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,197,4,0,0,115, + 8,0,0,0,18,2,8,1,4,2,8,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,155,0,0,0,114, + 15,0,0,0,218,7,109,111,100,117,108,101,115,41,3,114, + 143,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,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,50,1,0,0,207,4,0,0, + 115,4,0,0,0,12,1,16,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,80,0,0,0,116,0,124,0,160,1,161,0, + 131,1,125,1,124,1,124,0,106,2,107,3,114,37,124,0, + 160,3,124,0,106,4,124,1,161,2,125,2,124,2,100,0, + 117,1,114,34,124,2,106,5,100,0,117,0,114,34,124,2, + 106,6,114,34,124,2,106,6,124,0,95,7,124,1,124,0, + 95,2,124,0,106,7,83,0,114,69,0,0,0,41,8,114, + 136,0,0,0,114,50,1,0,0,114,51,1,0,0,114,52, + 1,0,0,114,48,1,0,0,114,164,0,0,0,114,202,0, + 0,0,114,49,1,0,0,41,3,114,143,0,0,0,90,11, + 112,97,114,101,110,116,95,112,97,116,104,114,210,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 12,95,114,101,99,97,108,99,117,108,97,116,101,211,4,0, + 0,115,16,0,0,0,12,2,10,1,14,1,18,3,6,1, + 8,1,6,1,6,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,243,12,0,0, + 0,116,0,124,0,160,1,161,0,131,1,83,0,114,69,0, + 0,0,41,2,218,4,105,116,101,114,114,57,1,0,0,114, 21,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,7,95,95,108,101,110,95,95,233,4,0,0, - 114,61,1,0,0,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,243,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,89,0,0,0,114,49,1,0,0,114,21,1,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,8,95,95,114,101,112,114,95,95,236,4,0,0,114,61, - 1,0,0,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,62,1,0,0, - 169,2,114,143,0,0,0,218,4,105,116,101,109,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,12,95,95, - 99,111,110,116,97,105,110,115,95,95,239,4,0,0,114,61, - 1,0,0,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,49,1,0,0,114,61,0,0,0,114, - 69,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,61,0,0,0,242,4,0,0,243,2,0,0, - 0,16,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,15,114,150,0, - 0,0,114,149,0,0,0,114,151,0,0,0,114,152,0,0, - 0,114,236,0,0,0,114,55,1,0,0,114,50,1,0,0, - 114,57,1,0,0,114,60,1,0,0,114,64,1,0,0,114, - 65,1,0,0,114,66,1,0,0,114,68,1,0,0,114,71, - 1,0,0,114,61,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,47,1,0, - 0,184,4,0,0,115,26,0,0,0,8,0,4,1,8,6, - 8,6,8,10,8,4,8,13,8,3,8,3,8,3,8,3, - 8,3,12,3,114,47,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,88,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,100,18,132,0,90,12,100,19,83,0,41, - 20,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,47,1,0,0,114, - 49,1,0,0,114,53,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,236,0,0,0,248,4,0, - 0,115,2,0,0,0,18,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,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,24,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,160, - 3,124,0,106,4,161,1,83,0,41,4,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,82,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,40,41, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, - 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, - 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, - 51,46,49,50,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,78, - 41,5,114,99,0,0,0,114,100,0,0,0,114,101,0,0, - 0,114,89,0,0,0,114,150,0,0,0,41,1,114,244,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,11,109,111,100,117,108,101,95,114,101,112,114,251,4, - 0,0,115,8,0,0,0,6,7,2,1,4,255,12,2,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,114,23,0,0,0,41,2,78,84,114, - 7,0,0,0,114,247,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,206,0,0,0,6,5,0, - 0,243,2,0,0,0,4,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,114,23, - 0,0,0,41,2,78,114,10,0,0,0,114,7,0,0,0, - 114,247,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,1,1,0,0,9,5,0,0,114,75,1, - 0,0,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, + 0,0,0,218,8,95,95,105,116,101,114,95,95,224,4,0, + 0,243,2,0,0,0,12,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,143,0,0,0,218,5, + 105,110,100,101,120,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,11,95,95,103,101,116,105,116,101,109,95, + 95,227,4,0,0,114,61,1,0,0,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,69,0,0,0,41,1,114,49,1,0,0,41,3, + 114,143,0,0,0,114,63,1,0,0,114,65,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,11, + 95,95,115,101,116,105,116,101,109,95,95,230,4,0,0,115, + 2,0,0,0,14,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,114,58,1,0,0, + 114,69,0,0,0,41,2,114,4,0,0,0,114,57,1,0, + 0,114,21,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,7,95,95,108,101,110,95,95,233,4, + 0,0,114,61,1,0,0,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,243,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,89,0,0,0,114,49,1,0,0,114,21, + 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,8,95,95,114,101,112,114,95,95,236,4,0,0, + 114,61,1,0,0,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,62,1, + 0,0,169,2,114,143,0,0,0,218,4,105,116,101,109,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,12, + 95,95,99,111,110,116,97,105,110,115,95,95,239,4,0,0, + 114,61,1,0,0,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,49,1,0,0,114,61,0,0, + 0,114,69,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,61,0,0,0,242,4,0,0,243,2, + 0,0,0,16,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,15,114, + 150,0,0,0,114,149,0,0,0,114,151,0,0,0,114,152, + 0,0,0,114,236,0,0,0,114,55,1,0,0,114,50,1, + 0,0,114,57,1,0,0,114,60,1,0,0,114,64,1,0, + 0,114,65,1,0,0,114,66,1,0,0,114,68,1,0,0, + 114,71,1,0,0,114,61,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,47, + 1,0,0,184,4,0,0,115,26,0,0,0,8,0,4,1, + 8,6,8,6,8,10,8,4,8,13,8,3,8,3,8,3, + 8,3,8,3,12,3,114,47,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,88,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,100,18,132,0,90,12,100,19,83, + 0,41,20,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,47,1,0, + 0,114,49,1,0,0,114,53,1,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,236,0,0,0,248, + 4,0,0,115,2,0,0,0,18,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,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,24, + 0,0,0,116,0,160,1,100,1,116,2,161,2,1,0,100, + 2,160,3,124,0,106,4,161,1,83,0,41,4,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,82,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, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114,100,0,0,0,114,101, + 0,0,0,114,89,0,0,0,114,150,0,0,0,41,1,114, + 244,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,11,109,111,100,117,108,101,95,114,101,112,114, + 251,4,0,0,115,8,0,0,0,6,7,2,1,4,255,12, + 2,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, - 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,10,0,0,0,122,8,60,115,116,114,105,110,103,62,114, - 243,0,0,0,84,41,1,114,3,1,0,0,41,1,114,4, - 1,0,0,114,247,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,241,0,0,0,12,5,0,0, - 114,72,1,0,0,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,114,23,0,0,0,114,237, - 0,0,0,114,7,0,0,0,114,238,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,239,0,0, - 0,15,5,0,0,114,240,0,0,0,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,69,0,0, - 0,114,7,0,0,0,114,42,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,245,0,0,0,18, - 5,0,0,114,75,1,0,0,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,3, - 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,78,41,4,114, - 159,0,0,0,114,173,0,0,0,114,49,1,0,0,114,246, - 0,0,0,114,247,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,248,0,0,0,21,5,0,0, - 115,8,0,0,0,6,7,4,1,4,255,12,3,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,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0, - 67,0,0,0,115,22,0,0,0,100,1,100,2,108,0,109, - 1,125,2,1,0,124,2,124,0,106,2,131,1,83,0,41, - 3,78,114,0,0,0,0,41,1,218,15,78,97,109,101,115, - 112,97,99,101,82,101,97,100,101,114,41,3,114,32,1,0, - 0,114,76,1,0,0,114,49,1,0,0,41,3,114,143,0, - 0,0,114,244,0,0,0,114,76,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,33,1,0,0, - 33,5,0,0,115,4,0,0,0,12,1,10,1,122,36,95, - 78,97,109,101,115,112,97,99,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,78,41,13,114,150,0,0,0,114,149,0,0,0, - 114,151,0,0,0,114,236,0,0,0,114,233,0,0,0,114, - 74,1,0,0,114,206,0,0,0,114,1,1,0,0,114,241, - 0,0,0,114,239,0,0,0,114,245,0,0,0,114,248,0, - 0,0,114,33,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,73,1,0,0, - 247,4,0,0,115,22,0,0,0,8,0,8,1,2,3,10, - 1,8,10,8,3,8,3,8,3,8,3,8,3,12,12,114, - 73,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,7,100,6,100,7,132,0,131,1, - 90,8,101,7,100,8,100,9,132,0,131,1,90,9,101,7, - 100,19,100,11,100,12,132,1,131,1,90,10,101,7,100,20, - 100,13,100,14,132,1,131,1,90,11,101,7,100,19,100,15, - 100,16,132,1,131,1,90,12,101,4,100,17,100,18,132,0, - 131,1,90,13,100,10,83,0,41,21,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,0,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, - 64,0,0,0,116,0,116,1,106,2,160,3,161,0,131,1, - 68,0,93,22,92,2,125,0,125,1,124,1,100,1,117,0, - 114,20,116,1,106,2,124,0,61,0,113,7,116,4,124,1, - 100,2,131,2,114,29,124,1,160,5,161,0,1,0,113,7, - 100,1,83,0,41,3,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,41,6,218,4,108,105,115, - 116,114,15,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,153,0,0,0,114,78,1,0,0,41,2,114,141, - 0,0,0,218,6,102,105,110,100,101,114,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,78,1,0,0,44, - 5,0,0,115,14,0,0,0,22,4,8,1,10,1,10,1, - 8,1,2,128,4,252,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,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,9,0,0,0,67,0,0,0,115,76,0, - 0,0,116,0,106,1,100,1,117,1,114,14,116,0,106,1, - 115,14,116,2,160,3,100,2,116,4,161,2,1,0,116,0, - 106,1,68,0,93,17,125,1,122,7,124,1,124,0,131,1, - 87,0,2,0,1,0,83,0,4,0,116,5,121,37,1,0, - 1,0,1,0,89,0,113,17,100,1,83,0,119,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,15,0,0, - 0,218,10,112,97,116,104,95,104,111,111,107,115,114,99,0, - 0,0,114,100,0,0,0,114,162,0,0,0,114,142,0,0, - 0,41,2,114,65,0,0,0,90,4,104,111,111,107,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 112,97,116,104,95,104,111,111,107,115,54,5,0,0,115,18, - 0,0,0,16,3,12,1,10,1,2,1,14,1,12,1,4, - 1,4,2,2,253,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,20,122,6,116,0,160,1,161,0,125,1,87,0,110, - 9,4,0,116,2,121,49,1,0,1,0,1,0,89,0,100, - 2,83,0,122,8,116,3,106,4,124,1,25,0,125,2,87, - 0,124,2,83,0,4,0,116,5,121,48,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,124,2,83,0,119,0,119,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, + 1,0,0,0,67,0,0,0,114,23,0,0,0,41,2,78, + 84,114,7,0,0,0,114,247,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,206,0,0,0,6, + 5,0,0,243,2,0,0,0,4,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, + 114,23,0,0,0,41,2,78,114,10,0,0,0,114,7,0, + 0,0,114,247,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,1,1,0,0,9,5,0,0,114, + 75,1,0,0,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,10,0,0,0,122,8,60,115,116,114,105,110,103, + 62,114,243,0,0,0,84,41,1,114,3,1,0,0,41,1, + 114,4,1,0,0,114,247,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,241,0,0,0,12,5, + 0,0,114,72,1,0,0,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,114,23,0,0,0, + 114,237,0,0,0,114,7,0,0,0,114,238,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,239, + 0,0,0,15,5,0,0,114,240,0,0,0,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,69, + 0,0,0,114,7,0,0,0,114,42,1,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,245,0,0, + 0,18,5,0,0,114,75,1,0,0,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,3,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,78,41, + 4,114,159,0,0,0,114,173,0,0,0,114,49,1,0,0, + 114,246,0,0,0,114,247,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,248,0,0,0,21,5, + 0,0,115,8,0,0,0,6,7,4,1,4,255,12,3,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,99,2,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0, + 0,0,67,0,0,0,115,22,0,0,0,100,1,100,2,108, + 0,109,1,125,2,1,0,124,2,124,0,106,2,131,1,83, + 0,41,3,78,114,0,0,0,0,41,1,218,15,78,97,109, + 101,115,112,97,99,101,82,101,97,100,101,114,41,3,114,32, + 1,0,0,114,76,1,0,0,114,49,1,0,0,41,3,114, + 143,0,0,0,114,244,0,0,0,114,76,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,33,1, + 0,0,33,5,0,0,115,4,0,0,0,12,1,10,1,122, + 36,95,78,97,109,101,115,112,97,99,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,78,41,13,114,150,0,0,0,114,149,0, + 0,0,114,151,0,0,0,114,236,0,0,0,114,233,0,0, + 0,114,74,1,0,0,114,206,0,0,0,114,1,1,0,0, + 114,241,0,0,0,114,239,0,0,0,114,245,0,0,0,114, + 248,0,0,0,114,33,1,0,0,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,73,1, + 0,0,247,4,0,0,115,22,0,0,0,8,0,8,1,2, + 3,10,1,8,10,8,3,8,3,8,3,8,3,8,3,12, + 12,114,73,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,7,100,6,100,7,132,0, + 131,1,90,8,101,7,100,8,100,9,132,0,131,1,90,9, + 101,7,100,19,100,11,100,12,132,1,131,1,90,10,101,7, + 100,20,100,13,100,14,132,1,131,1,90,11,101,7,100,19, + 100,15,100,16,132,1,131,1,90,12,101,4,100,17,100,18, + 132,0,131,1,90,13,100,10,83,0,41,21,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,0,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, + 0,115,64,0,0,0,116,0,116,1,106,2,160,3,161,0, + 131,1,68,0,93,22,92,2,125,0,125,1,124,1,100,1, + 117,0,114,20,116,1,106,2,124,0,61,0,113,7,116,4, + 124,1,100,2,131,2,114,29,124,1,160,5,161,0,1,0, + 113,7,100,1,83,0,41,3,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,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,10,0,0,0,78,41,7,114,18,0, - 0,0,114,82,0,0,0,218,17,70,105,108,101,78,111,116, - 70,111,117,110,100,69,114,114,111,114,114,15,0,0,0,114, - 80,1,0,0,218,8,75,101,121,69,114,114,111,114,114,84, - 1,0,0,41,3,114,221,0,0,0,114,65,0,0,0,114, - 82,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 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,67,5,0,0,115,28,0, - 0,0,8,8,2,1,12,1,12,1,6,3,2,1,12,1, - 4,4,12,253,10,1,12,1,4,1,2,253,2,250,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,7,0,0,0, - 4,0,0,0,67,0,0,0,115,138,0,0,0,116,0,124, - 2,100,1,131,2,114,27,116,1,160,2,124,2,161,1,155, - 0,100,2,157,2,125,3,116,3,160,4,124,3,116,5,161, - 2,1,0,124,2,160,6,124,1,161,1,92,2,125,4,125, - 5,110,21,116,1,160,2,124,2,161,1,155,0,100,3,157, - 2,125,3,116,3,160,4,124,3,116,5,161,2,1,0,124, - 2,160,7,124,1,161,1,125,4,103,0,125,5,124,4,100, - 0,117,1,114,58,116,1,160,8,124,1,124,4,161,2,83, - 0,116,1,160,9,124,1,100,0,161,2,125,6,124,5,124, - 6,95,10,124,6,83,0,41,4,78,114,161,0,0,0,122, - 53,46,102,105,110,100,95,115,112,101,99,40,41,32,110,111, - 116,32,102,111,117,110,100,59,32,102,97,108,108,105,110,103, - 32,98,97,99,107,32,116,111,32,102,105,110,100,95,108,111, - 97,100,101,114,40,41,122,53,46,102,105,110,100,95,115,112, - 101,99,40,41,32,110,111,116,32,102,111,117,110,100,59,32, - 102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32, - 102,105,110,100,95,109,111,100,117,108,101,40,41,41,11,114, - 153,0,0,0,114,159,0,0,0,90,12,95,111,98,106,101, - 99,116,95,110,97,109,101,114,99,0,0,0,114,100,0,0, - 0,114,162,0,0,0,114,161,0,0,0,114,229,0,0,0, - 114,224,0,0,0,114,207,0,0,0,114,202,0,0,0,41, - 7,114,221,0,0,0,114,163,0,0,0,114,82,1,0,0, - 114,166,0,0,0,114,164,0,0,0,114,165,0,0,0,114, - 210,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,16,95,108,101,103,97,99,121,95,103,101,116, - 95,115,112,101,99,89,5,0,0,115,26,0,0,0,10,4, - 16,1,12,2,16,1,16,2,12,2,10,1,4,1,8,1, - 12,1,12,1,6,1,4,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,67,125,5, - 116,0,124,5,116,1,116,2,102,2,131,2,115,14,113,4, - 124,0,160,3,124,5,161,1,125,6,124,6,100,1,117,1, - 114,71,116,4,124,6,100,2,131,2,114,35,124,6,160,5, - 124,1,124,3,161,2,125,7,110,6,124,0,160,6,124,1, - 124,6,161,2,125,7,124,7,100,1,117,0,114,46,113,4, - 124,7,106,7,100,1,117,1,114,55,124,7,2,0,1,0, - 83,0,124,7,106,8,125,8,124,8,100,1,117,0,114,66, - 116,9,100,3,131,1,130,1,124,4,160,10,124,8,161,1, - 1,0,113,4,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, - 109,0,0,0,218,5,98,121,116,101,115,114,87,1,0,0, - 114,153,0,0,0,114,226,0,0,0,114,88,1,0,0,114, - 164,0,0,0,114,202,0,0,0,114,142,0,0,0,114,191, - 0,0,0,114,159,0,0,0,114,207,0,0,0,41,9,114, - 221,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,82,1,0,0,114, - 210,0,0,0,114,165,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,9,95,103,101,116,95,115, - 112,101,99,110,5,0,0,115,42,0,0,0,4,5,8,1, - 14,1,2,1,10,1,8,1,10,1,14,1,12,2,8,1, - 2,1,10,1,8,1,6,1,8,1,8,1,10,5,2,128, - 12,2,6,1,4,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,94,0,0,0,124,2,100,1,117,0, - 114,7,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,20,100,1, - 83,0,124,4,106,3,100,1,117,0,114,45,124,4,106,4, - 125,5,124,5,114,43,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,124,4,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,15,0,0, - 0,114,65,0,0,0,114,91,1,0,0,114,164,0,0,0, - 114,202,0,0,0,114,205,0,0,0,114,47,1,0,0,41, - 6,114,221,0,0,0,114,163,0,0,0,114,65,0,0,0, - 114,225,0,0,0,114,210,0,0,0,114,90,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,226, - 0,0,0,142,5,0,0,115,26,0,0,0,8,6,6,1, - 14,1,8,1,4,1,10,1,6,1,4,1,6,3,16,1, - 4,1,4,2,4,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,42,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, - 125,3,124,3,100,2,117,0,114,18,100,2,83,0,124,3, - 106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102, - 105,110,100,95,109,111,100,117,108,101,40,41,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, - 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, - 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, - 59,32,117,115,101,32,102,105,110,100,95,115,112,101,99,40, - 41,32,105,110,115,116,101,97,100,78,114,227,0,0,0,114, - 228,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,229,0,0,0,166,5,0,0,115,14,0,0, - 0,6,8,2,2,4,254,12,3,8,1,4,1,6,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,0,0,0,0,0,0,0,0, - 0,0,0,0,3,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,2,1, - 0,124,2,106,2,124,0,105,0,124,1,164,1,142,1,83, - 0,41,4,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,78,41,3,90,18,105,109,112,111,114,116,108,105, - 98,46,109,101,116,97,100,97,116,97,114,92,1,0,0,218, - 18,102,105,110,100,95,100,105,115,116,114,105,98,117,116,105, - 111,110,115,41,3,114,144,0,0,0,114,145,0,0,0,114, - 92,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,93,1,0,0,182,5,0,0,115,4,0,0, - 0,12,10,16,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,114,69,0,0,0,114,230,0,0,0,41,14, - 114,150,0,0,0,114,149,0,0,0,114,151,0,0,0,114, - 152,0,0,0,114,233,0,0,0,114,78,1,0,0,114,84, - 1,0,0,114,234,0,0,0,114,87,1,0,0,114,88,1, - 0,0,114,91,1,0,0,114,226,0,0,0,114,229,0,0, - 0,114,93,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,77,1,0,0,40, - 5,0,0,115,36,0,0,0,8,0,4,2,2,2,10,1, - 2,9,10,1,2,12,10,1,2,21,10,1,2,20,12,1, - 2,31,12,1,2,23,12,1,2,15,14,1,114,77,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,16,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,4,124,3,124, - 0,95,1,124,1,112,27,100,3,124,0,95,2,116,3,124, - 0,106,2,131,1,115,43,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,24,0,0,0,129, - 0,124,0,93,7,125,1,124,1,136,0,102,2,86,0,1, - 0,113,2,100,0,83,0,114,69,0,0,0,114,7,0,0, - 0,114,43,1,0,0,169,1,114,164,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,9,0,0,0,211,5,0,0, - 115,4,0,0,0,6,128,18,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,97,0,0,0,114,130,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,86,0,0,0,114,67,0,0,0,114,18,0,0, - 0,114,82,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,143,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,7,0,0,0,114,95,1,0,0,114,8, - 0,0,0,114,236,0,0,0,205,5,0,0,115,20,0,0, - 0,4,4,12,1,26,1,6,1,10,2,10,1,18,1,6, - 1,8,1,12,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,130,0,0,0,78,41,1,114,97,1, - 0,0,114,21,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,78,1,0,0,221,5,0,0,114, - 81,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0,0,0, - 116,0,160,1,100,1,116,2,161,2,1,0,124,0,160,3, - 124,1,161,1,125,2,124,2,100,2,117,0,114,19,100,2, - 103,0,102,2,83,0,124,2,106,4,124,2,106,5,112,25, - 103,0,102,2,83,0,41,3,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,122, - 101,70,105,108,101,70,105,110,100,101,114,46,102,105,110,100, - 95,108,111,97,100,101,114,40,41,32,105,115,32,100,101,112, - 114,101,99,97,116,101,100,32,97,110,100,32,115,108,97,116, - 101,100,32,102,111,114,32,114,101,109,111,118,97,108,32,105, - 110,32,80,121,116,104,111,110,32,51,46,49,50,59,32,117, - 115,101,32,102,105,110,100,95,115,112,101,99,40,41,32,105, - 110,115,116,101,97,100,78,41,6,114,99,0,0,0,114,100, - 0,0,0,114,101,0,0,0,114,226,0,0,0,114,164,0, - 0,0,114,202,0,0,0,41,3,114,143,0,0,0,114,163, - 0,0,0,114,210,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,161,0,0,0,227,5,0,0, - 115,14,0,0,0,6,7,2,2,4,254,10,3,8,1,8, - 1,16,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,143,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,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,91,1,0,0,242,5,0,0, - 115,8,0,0,0,10,1,8,1,2,1,6,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,120,1, - 0,0,100,1,125,3,124,1,160,0,100,2,161,1,100,3, - 25,0,125,4,122,12,116,1,124,0,106,2,112,17,116,3, - 160,4,161,0,131,1,106,5,125,5,87,0,110,9,4,0, - 116,6,121,187,1,0,1,0,1,0,100,4,125,5,89,0, - 124,5,124,0,106,7,107,3,114,43,124,0,160,8,161,0, - 1,0,124,5,124,0,95,7,116,9,131,0,114,54,124,0, - 106,10,125,6,124,4,160,11,161,0,125,7,110,5,124,0, - 106,12,125,6,124,4,125,7,124,7,124,6,118,0,114,106, - 116,13,124,0,106,2,124,4,131,2,125,8,124,0,106,14, - 68,0,93,29,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,101,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,72,116,17, - 124,8,131,1,125,3,124,0,106,14,68,0,93,54,92,2, - 125,9,125,10,122,10,116,13,124,0,106,2,124,4,124,9, - 23,0,131,2,125,12,87,0,110,10,4,0,116,18,121,186, - 1,0,1,0,1,0,89,0,1,0,100,6,83,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,163,116,15,124,12,131,1, - 114,163,124,0,160,16,124,10,124,1,124,12,100,6,124,2, - 161,5,2,0,1,0,83,0,113,109,124,3,114,184,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,119,0,119,0,41,10,122,111,84,114, + 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,41,6,218,4,108, + 105,115,116,114,15,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,153,0,0,0,114,78,1,0,0,41,2, + 114,141,0,0,0,218,6,102,105,110,100,101,114,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,78,1,0, + 0,44,5,0,0,115,14,0,0,0,22,4,8,1,10,1, + 10,1,8,1,2,128,4,252,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,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,9,0,0,0,67,0,0,0,115, + 76,0,0,0,116,0,106,1,100,1,117,1,114,14,116,0, + 106,1,115,14,116,2,160,3,100,2,116,4,161,2,1,0, + 116,0,106,1,68,0,93,17,125,1,122,7,124,1,124,0, + 131,1,87,0,2,0,1,0,83,0,4,0,116,5,121,37, + 1,0,1,0,1,0,89,0,113,17,100,1,83,0,119,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,15, + 0,0,0,218,10,112,97,116,104,95,104,111,111,107,115,114, + 99,0,0,0,114,100,0,0,0,114,162,0,0,0,114,142, + 0,0,0,41,2,114,65,0,0,0,90,4,104,111,111,107, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 11,95,112,97,116,104,95,104,111,111,107,115,54,5,0,0, + 115,18,0,0,0,16,3,12,1,10,1,2,1,14,1,12, + 1,4,1,4,2,2,253,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,20,122,6,116,0,160,1,161,0,125,1,87, + 0,110,9,4,0,116,2,121,49,1,0,1,0,1,0,89, + 0,100,2,83,0,122,8,116,3,106,4,124,1,25,0,125, + 2,87,0,124,2,83,0,4,0,116,5,121,48,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,124,2,83,0,119,0,119, + 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,10,0,0,0,78,41,7,114, + 18,0,0,0,114,82,0,0,0,218,17,70,105,108,101,78, + 111,116,70,111,117,110,100,69,114,114,111,114,114,15,0,0, + 0,114,80,1,0,0,218,8,75,101,121,69,114,114,111,114, + 114,84,1,0,0,41,3,114,221,0,0,0,114,65,0,0, + 0,114,82,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,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,67,5,0,0,115, + 28,0,0,0,8,8,2,1,12,1,12,1,6,3,2,1, + 12,1,4,4,12,253,10,1,12,1,4,1,2,253,2,250, + 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,7,0, + 0,0,4,0,0,0,67,0,0,0,115,138,0,0,0,116, + 0,124,2,100,1,131,2,114,27,116,1,160,2,124,2,161, + 1,155,0,100,2,157,2,125,3,116,3,160,4,124,3,116, + 5,161,2,1,0,124,2,160,6,124,1,161,1,92,2,125, + 4,125,5,110,21,116,1,160,2,124,2,161,1,155,0,100, + 3,157,2,125,3,116,3,160,4,124,3,116,5,161,2,1, + 0,124,2,160,7,124,1,161,1,125,4,103,0,125,5,124, + 4,100,0,117,1,114,58,116,1,160,8,124,1,124,4,161, + 2,83,0,116,1,160,9,124,1,100,0,161,2,125,6,124, + 5,124,6,95,10,124,6,83,0,41,4,78,114,161,0,0, + 0,122,53,46,102,105,110,100,95,115,112,101,99,40,41,32, + 110,111,116,32,102,111,117,110,100,59,32,102,97,108,108,105, + 110,103,32,98,97,99,107,32,116,111,32,102,105,110,100,95, + 108,111,97,100,101,114,40,41,122,53,46,102,105,110,100,95, + 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, + 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, + 111,32,102,105,110,100,95,109,111,100,117,108,101,40,41,41, + 11,114,153,0,0,0,114,159,0,0,0,90,12,95,111,98, + 106,101,99,116,95,110,97,109,101,114,99,0,0,0,114,100, + 0,0,0,114,162,0,0,0,114,161,0,0,0,114,229,0, + 0,0,114,224,0,0,0,114,207,0,0,0,114,202,0,0, + 0,41,7,114,221,0,0,0,114,163,0,0,0,114,82,1, + 0,0,114,166,0,0,0,114,164,0,0,0,114,165,0,0, + 0,114,210,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,16,95,108,101,103,97,99,121,95,103, + 101,116,95,115,112,101,99,89,5,0,0,115,26,0,0,0, + 10,4,16,1,12,2,16,1,16,2,12,2,10,1,4,1, + 8,1,12,1,12,1,6,1,4,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,67, + 125,5,116,0,124,5,116,1,116,2,102,2,131,2,115,14, + 113,4,124,0,160,3,124,5,161,1,125,6,124,6,100,1, + 117,1,114,71,116,4,124,6,100,2,131,2,114,35,124,6, + 160,5,124,1,124,3,161,2,125,7,110,6,124,0,160,6, + 124,1,124,6,161,2,125,7,124,7,100,1,117,0,114,46, + 113,4,124,7,106,7,100,1,117,1,114,55,124,7,2,0, + 1,0,83,0,124,7,106,8,125,8,124,8,100,1,117,0, + 114,66,116,9,100,3,131,1,130,1,124,4,160,10,124,8, + 161,1,1,0,113,4,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,109,0,0,0,218,5,98,121,116,101,115,114,87,1, + 0,0,114,153,0,0,0,114,226,0,0,0,114,88,1,0, + 0,114,164,0,0,0,114,202,0,0,0,114,142,0,0,0, + 114,191,0,0,0,114,159,0,0,0,114,207,0,0,0,41, + 9,114,221,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,82,1,0, + 0,114,210,0,0,0,114,165,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,9,95,103,101,116, + 95,115,112,101,99,110,5,0,0,115,42,0,0,0,4,5, + 8,1,14,1,2,1,10,1,8,1,10,1,14,1,12,2, + 8,1,2,1,10,1,8,1,6,1,8,1,8,1,10,5, + 2,128,12,2,6,1,4,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,94,0,0,0,124,2,100,1, + 117,0,114,7,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,20, + 100,1,83,0,124,4,106,3,100,1,117,0,114,45,124,4, + 106,4,125,5,124,5,114,43,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,124,4,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,15, + 0,0,0,114,65,0,0,0,114,91,1,0,0,114,164,0, + 0,0,114,202,0,0,0,114,205,0,0,0,114,47,1,0, + 0,41,6,114,221,0,0,0,114,163,0,0,0,114,65,0, + 0,0,114,225,0,0,0,114,210,0,0,0,114,90,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,226,0,0,0,142,5,0,0,115,26,0,0,0,8,6, + 6,1,14,1,8,1,4,1,10,1,6,1,4,1,6,3, + 16,1,4,1,4,2,4,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,42,0,0,0,116,0,160,1, + 100,1,116,2,161,2,1,0,124,0,160,3,124,1,124,2, + 161,2,125,3,124,3,100,2,117,0,114,18,100,2,83,0, + 124,3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,40,41,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, + 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, + 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, + 49,50,59,32,117,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,78,114,227,0,0, + 0,114,228,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,229,0,0,0,166,5,0,0,115,14, + 0,0,0,6,8,2,2,4,254,12,3,8,1,4,1,6, + 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,0,0,0,0,0,0, + 0,0,0,0,0,0,3,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, + 2,1,0,124,2,106,2,124,0,105,0,124,1,164,1,142, + 1,83,0,41,4,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,78,41,3,90,18,105,109,112,111,114,116, + 108,105,98,46,109,101,116,97,100,97,116,97,114,92,1,0, + 0,218,18,102,105,110,100,95,100,105,115,116,114,105,98,117, + 116,105,111,110,115,41,3,114,144,0,0,0,114,145,0,0, + 0,114,92,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,93,1,0,0,182,5,0,0,115,4, + 0,0,0,12,10,16,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,114,69,0,0,0,114,230,0,0,0, + 41,14,114,150,0,0,0,114,149,0,0,0,114,151,0,0, + 0,114,152,0,0,0,114,233,0,0,0,114,78,1,0,0, + 114,84,1,0,0,114,234,0,0,0,114,87,1,0,0,114, + 88,1,0,0,114,91,1,0,0,114,226,0,0,0,114,229, + 0,0,0,114,93,1,0,0,114,7,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,77,1,0, + 0,40,5,0,0,115,36,0,0,0,8,0,4,2,2,2, + 10,1,2,9,10,1,2,12,10,1,2,21,10,1,2,20, + 12,1,2,31,12,1,2,23,12,1,2,15,14,1,114,77, + 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,16,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,4,124, + 3,124,0,95,1,124,1,112,27,100,3,124,0,95,2,116, + 3,124,0,106,2,131,1,115,43,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,24,0,0, + 0,129,0,124,0,93,7,125,1,124,1,136,0,102,2,86, + 0,1,0,113,2,100,0,83,0,114,69,0,0,0,114,7, + 0,0,0,114,43,1,0,0,169,1,114,164,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,9,0,0,0,211,5, + 0,0,115,4,0,0,0,2,128,22,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,97,0,0,0,114,130,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,86,0,0,0,114,67,0,0,0,114,18, + 0,0,0,114,82,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,143, + 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,7,0,0,0,114,95,1,0,0, + 114,8,0,0,0,114,236,0,0,0,205,5,0,0,115,20, + 0,0,0,4,4,12,1,26,1,6,1,10,2,10,1,18, + 1,6,1,8,1,12,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,130,0,0,0,78,41,1,114, + 97,1,0,0,114,21,1,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,78,1,0,0,221,5,0, + 0,114,81,0,0,0,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,4,0,0,0,67,0,0,0,115,54,0, + 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, + 160,3,124,1,161,1,125,2,124,2,100,2,117,0,114,19, + 100,2,103,0,102,2,83,0,124,2,106,4,124,2,106,5, + 112,25,103,0,102,2,83,0,41,3,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,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,97, - 0,0,0,114,44,0,0,0,114,130,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,104,0,0,0,114,75,0, - 0,0,114,65,0,0,0,114,18,0,0,0,114,82,0,0, - 0,114,35,1,0,0,114,76,0,0,0,114,97,1,0,0, - 218,11,95,102,105,108,108,95,99,97,99,104,101,114,21,0, - 0,0,114,100,1,0,0,114,131,0,0,0,114,99,1,0, - 0,114,67,0,0,0,114,96,1,0,0,114,80,0,0,0, - 114,91,1,0,0,114,83,0,0,0,114,111,0,0,0,114, - 159,0,0,0,114,173,0,0,0,114,207,0,0,0,114,202, - 0,0,0,41,14,114,143,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,44,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,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,226,0,0, - 0,247,5,0,0,115,86,0,0,0,4,5,14,1,2,1, - 24,1,12,1,6,1,10,1,8,1,6,1,6,2,6,1, - 10,1,6,2,4,1,8,2,12,1,14,1,8,1,10,1, - 8,1,24,1,2,255,8,5,14,2,2,1,20,1,12,1, - 8,1,16,1,12,1,8,1,10,1,4,1,8,255,2,128, - 4,2,12,1,12,1,8,1,4,1,4,1,2,244,2,228, - 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, - 190,0,0,0,124,0,106,0,125,1,122,11,116,1,160,2, - 124,1,112,11,116,1,160,3,161,0,161,1,125,2,87,0, - 110,12,4,0,116,4,116,5,116,6,102,3,121,94,1,0, - 1,0,1,0,103,0,125,2,89,0,116,7,106,8,160,9, - 100,1,161,1,115,39,116,10,124,2,131,1,124,0,95,11, - 110,37,116,10,131,0,125,3,124,2,68,0,93,28,125,4, - 124,4,160,12,100,2,161,1,92,3,125,5,125,6,125,7, - 124,6,114,65,100,3,160,13,124,5,124,7,160,14,161,0, - 161,2,125,8,110,2,124,5,125,8,124,3,160,15,124,8, - 161,1,1,0,113,44,124,3,124,0,95,11,116,7,106,8, - 160,9,116,16,161,1,114,92,100,4,100,5,132,0,124,2, - 68,0,131,1,124,0,95,17,100,6,83,0,100,6,83,0, - 119,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,14,0,0,0,114, - 97,0,0,0,114,88,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,6,125,1,124, - 1,160,0,161,0,146,2,113,2,83,0,114,7,0,0,0, - 41,1,114,131,0,0,0,41,2,114,5,0,0,0,90,2, - 102,110,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,13,0,0,0,71,6,0,0,115,2,0,0,0,20, - 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,18,0,0,0,90,7,108,105,115,116,100, - 105,114,114,82,0,0,0,114,85,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,15,0,0,0,114,25,0,0,0,114,26,0,0,0, - 114,98,1,0,0,114,99,1,0,0,114,126,0,0,0,114, - 89,0,0,0,114,131,0,0,0,218,3,97,100,100,114,27, - 0,0,0,114,100,1,0,0,41,9,114,143,0,0,0,114, - 65,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, - 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, - 116,101,110,116,115,114,70,1,0,0,114,141,0,0,0,114, - 54,1,0,0,114,44,1,0,0,90,8,110,101,119,95,110, - 97,109,101,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,102,1,0,0,42,6,0,0,115,38,0,0,0, - 6,2,2,1,22,1,18,1,6,3,12,3,12,1,6,7, - 8,1,16,1,4,1,18,1,4,2,12,1,6,1,12,1, - 20,1,4,255,2,233,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,4, - 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,10,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,4,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,78,41,2,114,83,0,0,0,114,142,0,0,0,114,71, - 0,0,0,169,2,114,221,0,0,0,114,101,1,0,0,114, - 7,0,0,0,114,8,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,83,6,0,0,115,6,0,0,0,8,2,12,1, - 16,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,78,114,7,0,0,0, - 41,3,114,221,0,0,0,114,101,1,0,0,114,107,1,0, - 0,114,7,0,0,0,114,106,1,0,0,114,8,0,0,0, - 218,9,112,97,116,104,95,104,111,111,107,73,6,0,0,115, - 4,0,0,0,14,10,4,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,114,67,1,0,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,89,0,0,0,114,65,0,0,0,114,21,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,68,1,0,0,91,6,0,0,114,61,1,0,0,122, - 19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,101, - 112,114,95,95,114,69,0,0,0,41,15,114,150,0,0,0, - 114,149,0,0,0,114,151,0,0,0,114,152,0,0,0,114, - 236,0,0,0,114,78,1,0,0,114,167,0,0,0,114,229, - 0,0,0,114,161,0,0,0,114,91,1,0,0,114,226,0, - 0,0,114,102,1,0,0,114,234,0,0,0,114,108,1,0, - 0,114,68,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,94,1,0,0,196, - 5,0,0,115,24,0,0,0,8,0,4,2,8,7,8,16, - 4,4,8,2,8,15,10,5,8,51,2,31,10,1,12,17, - 114,94,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,33,124,5,114,18,124, - 5,106,1,125,4,110,15,124,2,124,3,107,2,114,28,116, - 2,124,1,124,2,131,2,125,4,110,5,116,3,124,1,124, - 2,131,2,125,4,124,5,115,42,116,4,124,1,124,2,124, - 4,100,3,141,3,125,5,122,19,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,100,0,83,0,4, - 0,116,5,121,71,1,0,1,0,1,0,89,0,100,0,83, - 0,119,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,95,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,41,1,0,0,114,34,1,0,0,114,213,0, - 0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,90, - 2,110,115,114,141,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,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,14,95,102,105,120,95,117,112,95, - 109,111,100,117,108,101,97,6,0,0,115,36,0,0,0,10, - 2,10,1,4,1,4,1,8,1,8,1,12,1,10,2,4, - 1,14,1,2,1,8,1,8,1,8,1,14,1,12,1,6, - 2,2,254,114,113,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,102,2,125,1,116,5,116,6,102,2, - 125,2,124,0,124,1,124,2,103,3,83,0,41,2,122,95, - 82,101,116,117,114,110,115,32,97,32,108,105,115,116,32,111, - 102,32,102,105,108,101,45,98,97,115,101,100,32,109,111,100, - 117,108,101,32,108,111,97,100,101,114,115,46,10,10,32,32, - 32,32,69,97,99,104,32,105,116,101,109,32,105,115,32,97, - 32,116,117,112,108,101,32,40,108,111,97,100,101,114,44,32, - 115,117,102,102,105,120,101,115,41,46,10,32,32,32,32,78, - 41,7,114,30,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,34,1,0,0,114,127,0,0,0,114,41,1,0,0,114, - 113,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,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,208,0,0,0,120,6,0,0,115,8,0,0, - 0,12,5,8,1,8,1,10,1,114,208,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1, - 0,0,0,67,0,0,0,115,8,0,0,0,124,0,97,0, - 100,0,83,0,114,69,0,0,0,41,1,114,159,0,0,0, - 41,1,218,17,95,98,111,111,116,115,116,114,97,112,95,109, - 111,100,117,108,101,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,21,95,115,101,116,95,98,111,111,116,115, - 116,114,97,112,95,109,111,100,117,108,101,131,6,0,0,115, - 2,0,0,0,8,2,114,116,1,0,0,99,1,0,0,0, + 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,122,101,70,105,108,101,70,105,110,100,101,114,46,102,105, + 110,100,95,108,111,97,100,101,114,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,41,6,114,99,0,0,0, + 114,100,0,0,0,114,101,0,0,0,114,226,0,0,0,114, + 164,0,0,0,114,202,0,0,0,41,3,114,143,0,0,0, + 114,163,0,0,0,114,210,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,161,0,0,0,227,5, + 0,0,115,14,0,0,0,6,7,2,2,4,254,10,3,8, + 1,8,1,16,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,143,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,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,91,1,0,0,242,5, + 0,0,115,8,0,0,0,10,1,8,1,2,1,6,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, + 120,1,0,0,100,1,125,3,124,1,160,0,100,2,161,1, + 100,3,25,0,125,4,122,12,116,1,124,0,106,2,112,17, + 116,3,160,4,161,0,131,1,106,5,125,5,87,0,110,9, + 4,0,116,6,121,187,1,0,1,0,1,0,100,4,125,5, + 89,0,124,5,124,0,106,7,107,3,114,43,124,0,160,8, + 161,0,1,0,124,5,124,0,95,7,116,9,131,0,114,54, + 124,0,106,10,125,6,124,4,160,11,161,0,125,7,110,5, + 124,0,106,12,125,6,124,4,125,7,124,7,124,6,118,0, + 114,106,116,13,124,0,106,2,124,4,131,2,125,8,124,0, + 106,14,68,0,93,29,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,101,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,72, + 116,17,124,8,131,1,125,3,124,0,106,14,68,0,93,54, + 92,2,125,9,125,10,122,10,116,13,124,0,106,2,124,4, + 124,9,23,0,131,2,125,12,87,0,110,10,4,0,116,18, + 121,186,1,0,1,0,1,0,89,0,1,0,100,6,83,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,163,116,15,124,12, + 131,1,114,163,124,0,160,16,124,10,124,1,124,12,100,6, + 124,2,161,5,2,0,1,0,83,0,113,109,124,3,114,184, + 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,119,0,119,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,97,0,0,0,114,44,0,0,0,114,130,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,104,0,0,0,114, + 75,0,0,0,114,65,0,0,0,114,18,0,0,0,114,82, + 0,0,0,114,35,1,0,0,114,76,0,0,0,114,97,1, + 0,0,218,11,95,102,105,108,108,95,99,97,99,104,101,114, + 21,0,0,0,114,100,1,0,0,114,131,0,0,0,114,99, + 1,0,0,114,67,0,0,0,114,96,1,0,0,114,80,0, + 0,0,114,91,1,0,0,114,83,0,0,0,114,111,0,0, + 0,114,159,0,0,0,114,173,0,0,0,114,207,0,0,0, + 114,202,0,0,0,41,14,114,143,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,44,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, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,226, + 0,0,0,247,5,0,0,115,86,0,0,0,4,5,14,1, + 2,1,24,1,12,1,6,1,10,1,8,1,6,1,6,2, + 6,1,10,1,6,2,4,1,8,2,12,1,14,1,8,1, + 10,1,8,1,24,1,2,255,8,5,14,2,2,1,20,1, + 12,1,8,1,16,1,12,1,8,1,10,1,4,1,8,255, + 2,128,4,2,12,1,12,1,8,1,4,1,4,1,2,244, + 2,228,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,190,0,0,0,124,0,106,0,125,1,122,11,116,1, + 160,2,124,1,112,11,116,1,160,3,161,0,161,1,125,2, + 87,0,110,12,4,0,116,4,116,5,116,6,102,3,121,94, + 1,0,1,0,1,0,103,0,125,2,89,0,116,7,106,8, + 160,9,100,1,161,1,115,39,116,10,124,2,131,1,124,0, + 95,11,110,37,116,10,131,0,125,3,124,2,68,0,93,28, + 125,4,124,4,160,12,100,2,161,1,92,3,125,5,125,6, + 125,7,124,6,114,65,100,3,160,13,124,5,124,7,160,14, + 161,0,161,2,125,8,110,2,124,5,125,8,124,3,160,15, + 124,8,161,1,1,0,113,44,124,3,124,0,95,11,116,7, + 106,8,160,9,116,16,161,1,114,92,100,4,100,5,132,0, + 124,2,68,0,131,1,124,0,95,17,100,6,83,0,100,6, + 83,0,119,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,14,0,0, + 0,114,97,0,0,0,114,88,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,50,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,116,1,0,0, - 114,208,0,0,0,114,15,0,0,0,114,83,1,0,0,114, - 191,0,0,0,114,94,1,0,0,114,108,1,0,0,218,9, - 109,101,116,97,95,112,97,116,104,114,61,0,0,0,114,77, - 1,0,0,41,2,114,115,1,0,0,90,17,115,117,112,112, - 111,114,116,101,100,95,108,111,97,100,101,114,115,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,105, - 110,115,116,97,108,108,136,6,0,0,115,8,0,0,0,8, - 2,6,1,20,1,16,1,114,118,1,0,0,41,1,114,87, - 0,0,0,114,69,0,0,0,41,3,78,78,78,41,2,114, - 0,0,0,0,114,0,0,0,0,41,1,84,41,85,114,152, - 0,0,0,114,159,0,0,0,114,187,0,0,0,114,91,0, - 0,0,114,15,0,0,0,114,99,0,0,0,114,184,0,0, - 0,114,25,0,0,0,114,231,0,0,0,90,2,110,116,114, - 18,0,0,0,114,215,0,0,0,90,5,112,111,115,105,120, - 114,50,0,0,0,218,3,97,108,108,114,59,0,0,0,114, - 136,0,0,0,114,57,0,0,0,114,62,0,0,0,90,20, - 95,112,97,116,104,115,101,112,115,95,119,105,116,104,95,99, - 111,108,111,110,114,28,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,27,0,0,0,114,29,0,0,0,114,21,0,0,0,114, - 36,0,0,0,114,42,0,0,0,114,45,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,83,0,0,0,114,86,0,0, - 0,114,95,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,34,0,0,0, - 114,172,0,0,0,114,33,0,0,0,114,39,0,0,0,114, - 8,1,0,0,114,116,0,0,0,114,112,0,0,0,114,127, - 0,0,0,114,61,0,0,0,114,114,1,0,0,114,232,0, - 0,0,114,113,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,121,0, - 0,0,114,128,0,0,0,114,135,0,0,0,114,137,0,0, - 0,114,139,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,235,0,0,0,114, - 249,0,0,0,114,11,1,0,0,114,34,1,0,0,114,41, - 1,0,0,114,30,1,0,0,114,47,1,0,0,114,73,1, - 0,0,114,77,1,0,0,114,94,1,0,0,114,113,1,0, - 0,114,208,0,0,0,114,116,1,0,0,114,118,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,180,0,0,0,4,0,4,22,8,3,8,1,8, - 1,8,1,8,1,10,3,4,1,8,1,10,1,8,2,4, - 3,10,1,6,2,22,2,8,1,8,1,10,1,14,1,4, - 4,4,1,2,1,2,1,4,255,8,4,6,16,8,3,8, - 5,8,5,4,6,10,1,8,30,8,6,8,8,8,10,8, - 9,8,5,4,7,10,1,8,8,10,5,10,22,0,127,16, - 30,12,1,4,2,4,1,6,2,4,1,10,1,8,2,6, - 2,8,2,16,2,8,71,8,40,8,19,8,12,8,12,8, - 31,8,20,8,33,8,28,10,24,10,13,10,10,8,11,6, - 14,4,3,2,1,12,255,14,73,14,67,16,30,0,127,14, - 17,18,50,18,45,18,25,14,53,14,63,14,49,0,127,14, - 29,0,127,10,30,8,23,8,11,12,5, + 83,0,0,0,115,20,0,0,0,104,0,124,0,93,6,125, + 1,124,1,160,0,161,0,146,2,113,2,83,0,114,7,0, + 0,0,41,1,114,131,0,0,0,41,2,114,5,0,0,0, + 90,2,102,110,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,13,0,0,0,71,6,0,0,115,2,0,0, + 0,20,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,18,0,0,0,90,7,108,105,115, + 116,100,105,114,114,82,0,0,0,114,85,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,15,0,0,0,114,25,0,0,0,114,26,0, + 0,0,114,98,1,0,0,114,99,1,0,0,114,126,0,0, + 0,114,89,0,0,0,114,131,0,0,0,218,3,97,100,100, + 114,27,0,0,0,114,100,1,0,0,41,9,114,143,0,0, + 0,114,65,0,0,0,90,8,99,111,110,116,101,110,116,115, + 90,21,108,111,119,101,114,95,115,117,102,102,105,120,95,99, + 111,110,116,101,110,116,115,114,70,1,0,0,114,141,0,0, + 0,114,54,1,0,0,114,44,1,0,0,90,8,110,101,119, + 95,110,97,109,101,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,102,1,0,0,42,6,0,0,115,38,0, + 0,0,6,2,2,1,22,1,18,1,6,3,12,3,12,1, + 6,7,8,1,16,1,4,1,18,1,4,2,12,1,6,1, + 12,1,20,1,4,255,2,233,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,4,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, + 10,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,4,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,78,41,2,114,83,0,0,0,114,142,0,0,0, + 114,71,0,0,0,169,2,114,221,0,0,0,114,101,1,0, + 0,114,7,0,0,0,114,8,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,83,6,0,0,115,6,0,0,0,8,2, + 12,1,16,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,78,114,7,0, + 0,0,41,3,114,221,0,0,0,114,101,1,0,0,114,107, + 1,0,0,114,7,0,0,0,114,106,1,0,0,114,8,0, + 0,0,218,9,112,97,116,104,95,104,111,111,107,73,6,0, + 0,115,4,0,0,0,14,10,4,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,114,67,1,0,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,89,0,0,0,114,65,0,0,0,114, + 21,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,68,1,0,0,91,6,0,0,114,61,1,0, + 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, + 114,101,112,114,95,95,114,69,0,0,0,41,15,114,150,0, + 0,0,114,149,0,0,0,114,151,0,0,0,114,152,0,0, + 0,114,236,0,0,0,114,78,1,0,0,114,167,0,0,0, + 114,229,0,0,0,114,161,0,0,0,114,91,1,0,0,114, + 226,0,0,0,114,102,1,0,0,114,234,0,0,0,114,108, + 1,0,0,114,68,1,0,0,114,7,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,94,1,0, + 0,196,5,0,0,115,24,0,0,0,8,0,4,2,8,7, + 8,16,4,4,8,2,8,15,10,5,8,51,2,31,10,1, + 12,17,114,94,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,33,124,5,114, + 18,124,5,106,1,125,4,110,15,124,2,124,3,107,2,114, + 28,116,2,124,1,124,2,131,2,125,4,110,5,116,3,124, + 1,124,2,131,2,125,4,124,5,115,42,116,4,124,1,124, + 2,124,4,100,3,141,3,125,5,122,19,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,100,0,83, + 0,4,0,116,5,121,71,1,0,1,0,1,0,89,0,100, + 0,83,0,119,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,95, + 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,41,1,0,0,114,34,1,0,0,114, + 213,0,0,0,218,9,69,120,99,101,112,116,105,111,110,41, + 6,90,2,110,115,114,141,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,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,14,95,102,105,120,95,117, + 112,95,109,111,100,117,108,101,97,6,0,0,115,36,0,0, + 0,10,2,10,1,4,1,4,1,8,1,8,1,12,1,10, + 2,4,1,14,1,2,1,8,1,8,1,8,1,14,1,12, + 1,6,2,2,254,114,113,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,102,2,125,1,116,5,116,6, + 102,2,125,2,124,0,124,1,124,2,103,3,83,0,41,2, + 122,95,82,101,116,117,114,110,115,32,97,32,108,105,115,116, + 32,111,102,32,102,105,108,101,45,98,97,115,101,100,32,109, + 111,100,117,108,101,32,108,111,97,100,101,114,115,46,10,10, + 32,32,32,32,69,97,99,104,32,105,116,101,109,32,105,115, + 32,97,32,116,117,112,108,101,32,40,108,111,97,100,101,114, + 44,32,115,117,102,102,105,120,101,115,41,46,10,32,32,32, + 32,78,41,7,114,30,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,34,1,0,0,114,127,0,0,0,114,41,1,0, + 0,114,113,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,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,208,0,0,0,120,6,0,0,115,8, + 0,0,0,12,5,8,1,8,1,10,1,114,208,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,1,0,0,0,67,0,0,0,115,8,0,0,0,124,0, + 97,0,100,0,83,0,114,69,0,0,0,41,1,114,159,0, + 0,0,41,1,218,17,95,98,111,111,116,115,116,114,97,112, + 95,109,111,100,117,108,101,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,21,95,115,101,116,95,98,111,111, + 116,115,116,114,97,112,95,109,111,100,117,108,101,131,6,0, + 0,115,2,0,0,0,8,2,114,116,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,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,116,1, + 0,0,114,208,0,0,0,114,15,0,0,0,114,83,1,0, + 0,114,191,0,0,0,114,94,1,0,0,114,108,1,0,0, + 218,9,109,101,116,97,95,112,97,116,104,114,61,0,0,0, + 114,77,1,0,0,41,2,114,115,1,0,0,90,17,115,117, + 112,112,111,114,116,101,100,95,108,111,97,100,101,114,115,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,8, + 95,105,110,115,116,97,108,108,136,6,0,0,115,8,0,0, + 0,8,2,6,1,20,1,16,1,114,118,1,0,0,41,1, + 114,87,0,0,0,114,69,0,0,0,41,3,78,78,78,41, + 2,114,0,0,0,0,114,0,0,0,0,41,1,84,41,85, + 114,152,0,0,0,114,159,0,0,0,114,187,0,0,0,114, + 91,0,0,0,114,15,0,0,0,114,99,0,0,0,114,184, + 0,0,0,114,25,0,0,0,114,231,0,0,0,90,2,110, + 116,114,18,0,0,0,114,215,0,0,0,90,5,112,111,115, + 105,120,114,50,0,0,0,218,3,97,108,108,114,59,0,0, + 0,114,136,0,0,0,114,57,0,0,0,114,62,0,0,0, + 90,20,95,112,97,116,104,115,101,112,115,95,119,105,116,104, + 95,99,111,108,111,110,114,28,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,27,0,0,0,114,29,0,0,0,114,21,0,0, + 0,114,36,0,0,0,114,42,0,0,0,114,45,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,83,0,0,0,114,86, + 0,0,0,114,95,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,34,0, + 0,0,114,172,0,0,0,114,33,0,0,0,114,39,0,0, + 0,114,8,1,0,0,114,116,0,0,0,114,112,0,0,0, + 114,127,0,0,0,114,61,0,0,0,114,114,1,0,0,114, + 232,0,0,0,114,113,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, + 121,0,0,0,114,128,0,0,0,114,135,0,0,0,114,137, + 0,0,0,114,139,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,235,0,0, + 0,114,249,0,0,0,114,11,1,0,0,114,34,1,0,0, + 114,41,1,0,0,114,30,1,0,0,114,47,1,0,0,114, + 73,1,0,0,114,77,1,0,0,114,94,1,0,0,114,113, + 1,0,0,114,208,0,0,0,114,116,1,0,0,114,118,1, + 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,8,60,109,111,100,117,108,101,62, + 1,0,0,0,115,180,0,0,0,4,0,4,22,8,3,8, + 1,8,1,8,1,8,1,10,3,4,1,8,1,10,1,8, + 2,4,3,10,1,6,2,22,2,8,1,8,1,10,1,14, + 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, + 3,8,5,8,5,4,6,10,1,8,30,8,6,8,8,8, + 10,8,9,8,5,4,7,10,1,8,8,10,5,10,22,0, + 127,16,30,12,1,4,2,4,1,6,2,4,1,10,1,8, + 2,6,2,8,2,16,2,8,71,8,40,8,19,8,12,8, + 12,8,31,8,20,8,33,8,28,10,24,10,13,10,10,8, + 11,6,14,4,3,2,1,12,255,14,73,14,67,16,30,0, + 127,14,17,18,50,18,45,18,25,14,53,14,63,14,49,0, + 127,14,29,0,127,10,30,8,23,8,11,12,5, }; From webhook-mailer at python.org Mon Jun 21 06:49:30 2021 From: webhook-mailer at python.org (markshannon) Date: Mon, 21 Jun 2021 10:49:30 -0000 Subject: [Python-checkins] bpo-44337: Improve LOAD_ATTR specialization (GH-26759) Message-ID: https://github.com/python/cpython/commit/fb68791a26e157ed3cdeb409c8d8b6cddc7535bd commit: fb68791a26e157ed3cdeb409c8d8b6cddc7535bd branch: main author: Mark Shannon committer: markshannon date: 2021-06-21T11:49:21+01:00 summary: bpo-44337: Improve LOAD_ATTR specialization (GH-26759) * Specialize obj.__class__ with LOAD_ATTR_SLOT * Specialize instance attribute lookup with attribute on class, provided attribute on class is not an overriding descriptor. * Add stat for how many times the unquickened instruction has executed. files: M Include/internal/pycore_code.h M Python/ceval.c M Python/specialize.c diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index a471c20265cbf7..1e78b928865e78 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -336,6 +336,7 @@ typedef struct _stats { uint64_t deferred; uint64_t miss; uint64_t deopt; + uint64_t unquickened; #if SPECIALIZATION_STATS_DETAILED PyObject *miss_types; #endif diff --git a/Python/ceval.c b/Python/ceval.c index 699cd865faa1be..b5e3dd53c8439a 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2805,6 +2805,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) case TARGET(LOAD_GLOBAL): { PREDICTED(LOAD_GLOBAL); + STAT_INC(LOAD_GLOBAL, unquickened); PyObject *name = GETITEM(names, oparg); PyObject *v; if (PyDict_CheckExact(GLOBALS()) @@ -3273,6 +3274,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) case TARGET(LOAD_ATTR): { PREDICTED(LOAD_ATTR); + STAT_INC(LOAD_ATTR, unquickened); PyObject *name = GETITEM(names, oparg); PyObject *owner = TOP(); PyObject *res = PyObject_GetAttr(owner, name); diff --git a/Python/specialize.c b/Python/specialize.c index ca3dcdac4d0396..a8ae09ff0e3839 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -47,6 +47,7 @@ print_stats(SpecializationStats *stats, const char *name) PRINT_STAT(name, deferred); PRINT_STAT(name, miss); PRINT_STAT(name, deopt); + PRINT_STAT(name, unquickened); #if SPECIALIZATION_STATS_DETAILED if (stats->miss_types == NULL) { return; @@ -302,6 +303,8 @@ _Py_Quicken(PyCodeObject *code) { return 0; } + + static int specialize_module_load_attr( PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, @@ -349,6 +352,68 @@ specialize_module_load_attr( return 0; } + + +/* Attribute specialization */ + +typedef enum { + OVERRIDING, /* Is an overriding descriptor, and will remain so. */ + METHOD, /* Attribute has Py_TPFLAGS_METHOD_DESCRIPTOR set */ + PROPERTY, /* Is a property */ + OBJECT_SLOT, /* Is an object slot descriptor */ + OTHER_SLOT, /* Is a slot descriptor of another type */ + NON_OVERRIDING, /* Is another non-overriding descriptor, and is an instance of an immutable class*/ + NON_DESCRIPTOR, /* Is not a descriptor, and is an instance of an immutable class */ + MUTABLE, /* Instance of a mutable class; might, or might not, be a descriptor */ + ABSENT, /* Attribute is not present on the class */ + DUNDER_CLASS, /* __class__ attribute */ + GETATTRIBUTE_OVERRIDDEN /* __getattribute__ has been overridden */ +} DesciptorClassification; + +static DesciptorClassification +analyze_descriptor(PyTypeObject *type, PyObject *name, PyObject **descr) +{ + if (type->tp_getattro != PyObject_GenericGetAttr) { + *descr = NULL; + return GETATTRIBUTE_OVERRIDDEN; + } + PyObject *descriptor = _PyType_Lookup(type, name); + *descr = descriptor; + if (descriptor == NULL) { + return ABSENT; + } + PyTypeObject *desc_cls = Py_TYPE(descriptor); + if (!(desc_cls->tp_flags & Py_TPFLAGS_IMMUTABLETYPE)) { + return MUTABLE; + } + if (desc_cls->tp_descr_set) { + if (desc_cls == &PyMemberDescr_Type) { + PyMemberDescrObject *member = (PyMemberDescrObject *)descriptor; + struct PyMemberDef *dmem = member->d_member; + if (dmem->type == T_OBJECT_EX) { + return OBJECT_SLOT; + } + return OTHER_SLOT; + } + if (desc_cls == &PyProperty_Type) { + return PROPERTY; + } + if (PyUnicode_CompareWithASCIIString(name, "__class__") == 0) { + if (descriptor == _PyType_Lookup(&PyBaseObject_Type, name)) { + return DUNDER_CLASS; + } + } + return OVERRIDING; + } + if (desc_cls->tp_descr_get) { + if (desc_cls->tp_flags & Py_TPFLAGS_METHOD_DESCRIPTOR) { + return METHOD; + } + return NON_OVERRIDING; + } + return NON_DESCRIPTOR; +} + int _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache) { @@ -362,94 +427,134 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, Sp goto success; } PyTypeObject *type = Py_TYPE(owner); - if (type->tp_getattro != PyObject_GenericGetAttr) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "__getattribute__ overridden"); - goto fail; - } if (type->tp_dict == NULL) { if (PyType_Ready(type) < 0) { return -1; } } - PyObject *descr = _PyType_Lookup(type, name); - if (descr != NULL) { - // We found an attribute with a data-like descriptor. - PyTypeObject *dtype = Py_TYPE(descr); - if (dtype != &PyMemberDescr_Type) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "not a member descriptor"); + PyObject *descr; + DesciptorClassification kind = analyze_descriptor(type, name, &descr); + switch(kind) { + case OVERRIDING: + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "overriding descriptor"); goto fail; - } - // It's a slot - PyMemberDescrObject *member = (PyMemberDescrObject *)descr; - struct PyMemberDef *dmem = member->d_member; - if (dmem->type != T_OBJECT_EX) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "non-object slot"); + case METHOD: + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "method"); goto fail; - } - Py_ssize_t offset = dmem->offset; - if (offset != (uint16_t)offset) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "offset out of range"); + case PROPERTY: + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "property"); goto fail; + case OBJECT_SLOT: + { + PyMemberDescrObject *member = (PyMemberDescrObject *)descr; + struct PyMemberDef *dmem = member->d_member; + Py_ssize_t offset = dmem->offset; + if (offset != (uint16_t)offset) { + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "offset out of range"); + goto fail; + } + assert(dmem->type == T_OBJECT_EX); + assert(offset > 0); + cache0->index = (uint16_t)offset; + cache1->tp_version = type->tp_version_tag; + *instr = _Py_MAKECODEUNIT(LOAD_ATTR_SLOT, _Py_OPARG(*instr)); + goto success; } - assert(offset > 0); - cache0->index = (uint16_t)offset; - cache1->tp_version = type->tp_version_tag; - *instr = _Py_MAKECODEUNIT(LOAD_ATTR_SLOT, _Py_OPARG(*instr)); - goto success; - } - // No desciptor - if (type->tp_dictoffset <= 0) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "no dict or negative offset"); - goto fail; - } - PyObject **dictptr = (PyObject **) ((char *)owner + type->tp_dictoffset); - if (*dictptr == NULL || !PyDict_CheckExact(*dictptr)) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "no dict or not a dict"); + case DUNDER_CLASS: + { + Py_ssize_t offset = offsetof(PyObject, ob_type); + assert(offset == (uint16_t)offset); + cache0->index = (uint16_t)offset; + cache1->tp_version = type->tp_version_tag; + *instr = _Py_MAKECODEUNIT(LOAD_ATTR_SLOT, _Py_OPARG(*instr)); + goto success; + } + case OTHER_SLOT: + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "non-object slot"); + goto fail; + case MUTABLE: + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "mutable class attribute"); + goto fail; + case GETATTRIBUTE_OVERRIDDEN: + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "__getattribute__ overridden"); + goto fail; + case NON_OVERRIDING: + case NON_DESCRIPTOR: + case ABSENT: + break; + } + assert(kind == NON_OVERRIDING || kind == NON_DESCRIPTOR || kind == ABSENT); + // No desciptor, or non overriding. + if (type->tp_dictoffset < 0) { + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "negative offset"); goto fail; } - // We found an instance with a __dict__. - PyDictObject *dict = (PyDictObject *)*dictptr; - if ((type->tp_flags & Py_TPFLAGS_HEAPTYPE) - && dict->ma_keys == ((PyHeapTypeObject*)type)->ht_cached_keys - ) { - // Keys are shared - assert(PyUnicode_CheckExact(name)); - Py_hash_t hash = PyObject_Hash(name); - if (hash == -1) { - return -1; - } - PyObject *value; - Py_ssize_t index = _Py_dict_lookup(dict, name, hash, &value); - assert (index != DKIX_ERROR); - if (index != (uint16_t)index) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "index out of range"); + if (type->tp_dictoffset > 0) { + PyObject **dictptr = (PyObject **) ((char *)owner + type->tp_dictoffset); + if (*dictptr == NULL || !PyDict_CheckExact(*dictptr)) { + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "no dict or not a dict"); goto fail; } - uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(dict); - if (keys_version == 0) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "no more key versions"); - goto fail; + // We found an instance with a __dict__. + PyDictObject *dict = (PyDictObject *)*dictptr; + if ((type->tp_flags & Py_TPFLAGS_HEAPTYPE) + && dict->ma_keys == ((PyHeapTypeObject*)type)->ht_cached_keys + ) { + // Keys are shared + assert(PyUnicode_CheckExact(name)); + Py_hash_t hash = PyObject_Hash(name); + if (hash == -1) { + return -1; + } + PyObject *value; + Py_ssize_t index = _Py_dict_lookup(dict, name, hash, &value); + assert (index != DKIX_ERROR); + if (index != (uint16_t)index) { + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, + index < 0 ? "attribute not in dict" : "index out of range"); + goto fail; + } + uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(dict); + if (keys_version == 0) { + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "no more key versions"); + goto fail; + } + cache1->dk_version_or_hint = keys_version; + cache1->tp_version = type->tp_version_tag; + cache0->index = (uint16_t)index; + *instr = _Py_MAKECODEUNIT(LOAD_ATTR_SPLIT_KEYS, _Py_OPARG(*instr)); + goto success; + } + else { + PyObject *value = NULL; + Py_ssize_t hint = + _PyDict_GetItemHint(dict, name, -1, &value); + if (hint != (uint32_t)hint) { + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "hint out of range"); + goto fail; + } + cache1->dk_version_or_hint = (uint32_t)hint; + cache1->tp_version = type->tp_version_tag; + *instr = _Py_MAKECODEUNIT(LOAD_ATTR_WITH_HINT, _Py_OPARG(*instr)); + goto success; } - cache1->dk_version_or_hint = keys_version; - cache1->tp_version = type->tp_version_tag; - cache0->index = (uint16_t)index; - *instr = _Py_MAKECODEUNIT(LOAD_ATTR_SPLIT_KEYS, _Py_OPARG(*instr)); - goto success; } - else { - PyObject *value = NULL; - Py_ssize_t hint = - _PyDict_GetItemHint(dict, name, -1, &value); - if (hint != (uint32_t)hint) { - SPECIALIZATION_FAIL(LOAD_ATTR, Py_TYPE(owner), name, "hint out of range"); + assert(type->tp_dictoffset == 0); + /* No attribute in instance dictionary */ + switch(kind) { + case NON_OVERRIDING: + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "non-overriding descriptor"); goto fail; - } - cache1->dk_version_or_hint = (uint32_t)hint; - cache1->tp_version = type->tp_version_tag; - *instr = _Py_MAKECODEUNIT(LOAD_ATTR_WITH_HINT, _Py_OPARG(*instr)); - goto success; + case NON_DESCRIPTOR: + /* To do -- Optimize this case */ + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "non descriptor"); + goto fail; + case ABSENT: + SPECIALIZATION_FAIL(LOAD_ATTR, type, name, "no attribute"); + goto fail; + default: + Py_UNREACHABLE(); } - fail: STAT_INC(LOAD_ATTR, specialization_failure); assert(!PyErr_Occurred()); @@ -462,7 +567,6 @@ _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, Sp return 0; } - int _Py_Specialize_LoadGlobal( PyObject *globals, PyObject *builtins, From webhook-mailer at python.org Mon Jun 21 07:15:52 2021 From: webhook-mailer at python.org (vstinner) Date: Mon, 21 Jun 2021 11:15:52 -0000 Subject: [Python-checkins] bpo-44466: Faulthandler now detects the GC (GH-26823) Message-ID: https://github.com/python/cpython/commit/d19163912bfc790283724f05328bd31e4e65003d commit: d19163912bfc790283724f05328bd31e4e65003d branch: main author: Victor Stinner committer: vstinner date: 2021-06-21T13:15:40+02:00 summary: bpo-44466: Faulthandler now detects the GC (GH-26823) The faulthandler module now detects if a fatal error occurs during a garbage collector collection (only if all_threads is true). files: A Misc/NEWS.d/next/Library/2021-06-21-12-43-04.bpo-44466.NSm6mv.rst M Doc/library/faulthandler.rst M Doc/whatsnew/3.10.rst M Lib/test/test_faulthandler.py M Python/traceback.c diff --git a/Doc/library/faulthandler.rst b/Doc/library/faulthandler.rst index 59274c1dd7ec3..be0912376bd8e 100644 --- a/Doc/library/faulthandler.rst +++ b/Doc/library/faulthandler.rst @@ -76,6 +76,10 @@ Fault handler state .. versionchanged:: 3.6 On Windows, a handler for Windows exception is also installed. + .. versionchanged:: 3.10 + The dump now mentions if a garbage collector collection is running + if *all_threads* is true. + .. function:: disable() Disable the fault handler: uninstall the signal handlers installed by diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 528d8ab35123d..54740628ddeb3 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1003,6 +1003,13 @@ Add *encoding* and *errors* parameters in :func:`fileinput.input` and when *mode* is "r" and file is compressed, like uncompressed files. (Contributed by Inada Naoki in :issue:`5758`.) +faulthandler +------------ + +The :mod:`faulthandler` module now detects if a fatal error occurs during a +garbage collector collection. +(Contributed by Victor Stinner in :issue:`44466`.) + gc -- diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py index 29a70857930c1..ee3f41a108a14 100644 --- a/Lib/test/test_faulthandler.py +++ b/Lib/test/test_faulthandler.py @@ -89,10 +89,12 @@ def get_output(self, code, filename=None, fd=None): output = output.decode('ascii', 'backslashreplace') return output.splitlines(), exitcode - def check_error(self, code, line_number, fatal_error, *, + def check_error(self, code, lineno, fatal_error, *, filename=None, all_threads=True, other_regex=None, fd=None, know_current_thread=True, - py_fatal_error=False): + py_fatal_error=False, + garbage_collecting=False, + function=''): """ Check that the fault handler for fatal errors is enabled and check the traceback from the child process output. @@ -106,20 +108,21 @@ def check_error(self, code, line_number, fatal_error, *, header = 'Thread 0x[0-9a-f]+' else: header = 'Stack' - regex = r""" - (?m)^{fatal_error} - - {header} \(most recent call first\): - File "", line {lineno} in - """ + regex = [f'^{fatal_error}'] if py_fatal_error: - fatal_error += "\nPython runtime state: initialized" - regex = dedent(regex).format( - lineno=line_number, - fatal_error=fatal_error, - header=header).strip() + regex.append("Python runtime state: initialized") + regex.append('') + regex.append(fr'{header} \(most recent call first\):') + if garbage_collecting: + regex.append(' Garbage-collecting') + regex.append(fr' File "", line {lineno} in {function}') + regex = '\n'.join(regex) + if other_regex: - regex += '|' + other_regex + regex = f'(?:{regex}|{other_regex})' + + # Enable MULTILINE flag + regex = f'(?m){regex}' output, exitcode = self.get_output(code, filename=filename, fd=fd) output = '\n'.join(output) self.assertRegex(output, regex) @@ -168,6 +171,42 @@ def test_sigsegv(self): 3, 'Segmentation fault') + @skip_segfault_on_android + def test_gc(self): + # bpo-44466: Detect if the GC is running + self.check_fatal_error(""" + import faulthandler + import gc + import sys + + faulthandler.enable() + + class RefCycle: + def __del__(self): + faulthandler._sigsegv() + + # create a reference cycle which triggers a fatal + # error in a destructor + a = RefCycle() + b = RefCycle() + a.b = b + b.a = a + + # Delete the objects, not the cycle + a = None + b = None + + # Break the reference cycle: call __del__() + gc.collect() + + # Should not reach this line + print("exit", file=sys.stderr) + """, + 9, + 'Segmentation fault', + function='__del__', + garbage_collecting=True) + def test_fatal_error_c_thread(self): self.check_fatal_error(""" import faulthandler diff --git a/Misc/NEWS.d/next/Library/2021-06-21-12-43-04.bpo-44466.NSm6mv.rst b/Misc/NEWS.d/next/Library/2021-06-21-12-43-04.bpo-44466.NSm6mv.rst new file mode 100644 index 0000000000000..69de3edb5a7f9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-21-12-43-04.bpo-44466.NSm6mv.rst @@ -0,0 +1,2 @@ +The :mod:`faulthandler` module now detects if a fatal error occurs during a +garbage collector collection. Patch by Victor Stinner. diff --git a/Python/traceback.c b/Python/traceback.c index 470324b1afd83..f7dc5ad686476 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -4,6 +4,7 @@ #include "Python.h" #include "code.h" +#include "pycore_interp.h" // PyInterpreterState.gc #include "frameobject.h" // PyFrame_GetBack() #include "structmember.h" // PyMemberDef #include "osdefs.h" // SEP @@ -914,6 +915,9 @@ _Py_DumpTracebackThreads(int fd, PyInterpreterState *interp, break; } write_thread_id(fd, tstate, tstate == current_tstate); + if (tstate == current_tstate && tstate->interp->gc.collecting) { + PUTS(fd, " Garbage-collecting\n"); + } dump_traceback(fd, tstate, 0); tstate = PyThreadState_Next(tstate); nthreads++; From webhook-mailer at python.org Mon Jun 21 07:16:22 2021 From: webhook-mailer at python.org (vstinner) Date: Mon, 21 Jun 2021 11:16:22 -0000 Subject: [Python-checkins] bpo-44434: Don't call PyThread_exit_thread() explicitly (GH-26758) Message-ID: https://github.com/python/cpython/commit/45a78f906d2d5fe5381d78466b11763fc56d57ba commit: 45a78f906d2d5fe5381d78466b11763fc56d57ba branch: main author: Victor Stinner committer: vstinner date: 2021-06-21T13:16:18+02:00 summary: bpo-44434: Don't call PyThread_exit_thread() explicitly (GH-26758) _thread.start_new_thread() no longer calls PyThread_exit_thread() explicitly at the thread exit, the call was redundant. On Linux with the glibc, pthread_cancel() loads dynamically the libgcc_s.so.1 library. dlopen() can fail if there is no more available file descriptor to open the file. In this case, the process aborts with the error message: "libgcc_s.so.1 must be installed for pthread_cancel to work" pthread_cancel() unwinds back to the thread's wrapping function that calls the thread entry point. The unwind function is dynamically loaded from the libgcc_s library since it is tightly coupled to the C compiler (GCC). The unwinder depends on DWARF, the compiler generates DWARF, so the unwinder belongs to the compiler. Thanks Florian Weimer and Carlos O'Donell for their help on investigating this issue. files: A Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst M Modules/_threadmodule.c diff --git a/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst b/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst new file mode 100644 index 0000000000000..37b5b57ce6569 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst @@ -0,0 +1,4 @@ +_thread.start_new_thread() no longer calls PyThread_exit_thread() explicitly +at the thread exit, the call was redundant. On Linux with the glibc, +pthread_exit() aborts the whole process if dlopen() fails to open +libgcc_s.so file (ex: EMFILE error). Patch by Victor Stinner. diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index bee69f2099c0e..5b5d2c5b03ec3 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -1110,7 +1110,9 @@ thread_run(void *boot_raw) PyThreadState_Clear(tstate); _PyThreadState_DeleteCurrent(tstate); - PyThread_exit_thread(); + // bpo-44434: Don't call explicitly PyThread_exit_thread(). On Linux with + // the glibc, pthread_exit() can abort the whole process if dlopen() fails + // to open the libgcc_s.so library (ex: EMFILE error). } static PyObject * From webhook-mailer at python.org Mon Jun 21 08:23:07 2021 From: webhook-mailer at python.org (vstinner) Date: Mon, 21 Jun 2021 12:23:07 -0000 Subject: [Python-checkins] bpo-44434: Don't call PyThread_exit_thread() explicitly (GH-26758) (GH-26825) Message-ID: https://github.com/python/cpython/commit/83ad40efc3e299d1e94692d958111a63c2fd6775 commit: 83ad40efc3e299d1e94692d958111a63c2fd6775 branch: 3.9 author: Victor Stinner committer: vstinner date: 2021-06-21T14:22:56+02:00 summary: bpo-44434: Don't call PyThread_exit_thread() explicitly (GH-26758) (GH-26825) _thread.start_new_thread() no longer calls PyThread_exit_thread() explicitly at the thread exit, the call was redundant. On Linux with the glibc, pthread_cancel() loads dynamically the libgcc_s.so.1 library. dlopen() can fail if there is no more available file descriptor to open the file. In this case, the process aborts with the error message: "libgcc_s.so.1 must be installed for pthread_cancel to work" pthread_cancel() unwinds back to the thread's wrapping function that calls the thread entry point. The unwind function is dynamically loaded from the libgcc_s library since it is tightly coupled to the C compiler (GCC). The unwinder depends on DWARF, the compiler generates DWARF, so the unwinder belongs to the compiler. Thanks Florian Weimer and Carlos O'Donell for their help on investigating this issue. (cherry picked from commit 45a78f906d2d5fe5381d78466b11763fc56d57ba) files: A Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst M Modules/_threadmodule.c diff --git a/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst b/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst new file mode 100644 index 00000000000000..37b5b57ce65693 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst @@ -0,0 +1,4 @@ +_thread.start_new_thread() no longer calls PyThread_exit_thread() explicitly +at the thread exit, the call was redundant. On Linux with the glibc, +pthread_exit() aborts the whole process if dlopen() fails to open +libgcc_s.so file (ex: EMFILE error). Patch by Victor Stinner. diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index 77baba4847897b..a370352238d32e 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -1056,7 +1056,10 @@ t_bootstrap(void *boot_raw) tstate->interp->num_threads--; PyThreadState_Clear(tstate); _PyThreadState_DeleteCurrent(tstate); - PyThread_exit_thread(); + + // bpo-44434: Don't call explicitly PyThread_exit_thread(). On Linux with + // the glibc, pthread_exit() can abort the whole process if dlopen() fails + // to open the libgcc_s.so library (ex: EMFILE error). } static PyObject * From webhook-mailer at python.org Mon Jun 21 08:23:18 2021 From: webhook-mailer at python.org (vstinner) Date: Mon, 21 Jun 2021 12:23:18 -0000 Subject: [Python-checkins] bpo-44466: Faulthandler now detects the GC (GH-26823) (GH-26826) Message-ID: https://github.com/python/cpython/commit/9b0bbb9143d15507aae0ff3afeb05969178b306c commit: 9b0bbb9143d15507aae0ff3afeb05969178b306c branch: 3.10 author: Victor Stinner committer: vstinner date: 2021-06-21T14:23:13+02:00 summary: bpo-44466: Faulthandler now detects the GC (GH-26823) (GH-26826) The faulthandler module now detects if a fatal error occurs during a garbage collector collection (only if all_threads is true). (cherry picked from commit d19163912bfc790283724f05328bd31e4e65003d) files: A Misc/NEWS.d/next/Library/2021-06-21-12-43-04.bpo-44466.NSm6mv.rst M Doc/library/faulthandler.rst M Doc/whatsnew/3.10.rst M Lib/test/test_faulthandler.py M Python/traceback.c diff --git a/Doc/library/faulthandler.rst b/Doc/library/faulthandler.rst index 59274c1dd7ec3..be0912376bd8e 100644 --- a/Doc/library/faulthandler.rst +++ b/Doc/library/faulthandler.rst @@ -76,6 +76,10 @@ Fault handler state .. versionchanged:: 3.6 On Windows, a handler for Windows exception is also installed. + .. versionchanged:: 3.10 + The dump now mentions if a garbage collector collection is running + if *all_threads* is true. + .. function:: disable() Disable the fault handler: uninstall the signal handlers installed by diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 249f0e98e06ac..987d125a0114c 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1003,6 +1003,13 @@ Add *encoding* and *errors* parameters in :func:`fileinput.input` and when *mode* is "r" and file is compressed, like uncompressed files. (Contributed by Inada Naoki in :issue:`5758`.) +faulthandler +------------ + +The :mod:`faulthandler` module now detects if a fatal error occurs during a +garbage collector collection. +(Contributed by Victor Stinner in :issue:`44466`.) + gc -- diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py index 29a70857930c1..ee3f41a108a14 100644 --- a/Lib/test/test_faulthandler.py +++ b/Lib/test/test_faulthandler.py @@ -89,10 +89,12 @@ def get_output(self, code, filename=None, fd=None): output = output.decode('ascii', 'backslashreplace') return output.splitlines(), exitcode - def check_error(self, code, line_number, fatal_error, *, + def check_error(self, code, lineno, fatal_error, *, filename=None, all_threads=True, other_regex=None, fd=None, know_current_thread=True, - py_fatal_error=False): + py_fatal_error=False, + garbage_collecting=False, + function=''): """ Check that the fault handler for fatal errors is enabled and check the traceback from the child process output. @@ -106,20 +108,21 @@ def check_error(self, code, line_number, fatal_error, *, header = 'Thread 0x[0-9a-f]+' else: header = 'Stack' - regex = r""" - (?m)^{fatal_error} - - {header} \(most recent call first\): - File "", line {lineno} in - """ + regex = [f'^{fatal_error}'] if py_fatal_error: - fatal_error += "\nPython runtime state: initialized" - regex = dedent(regex).format( - lineno=line_number, - fatal_error=fatal_error, - header=header).strip() + regex.append("Python runtime state: initialized") + regex.append('') + regex.append(fr'{header} \(most recent call first\):') + if garbage_collecting: + regex.append(' Garbage-collecting') + regex.append(fr' File "", line {lineno} in {function}') + regex = '\n'.join(regex) + if other_regex: - regex += '|' + other_regex + regex = f'(?:{regex}|{other_regex})' + + # Enable MULTILINE flag + regex = f'(?m){regex}' output, exitcode = self.get_output(code, filename=filename, fd=fd) output = '\n'.join(output) self.assertRegex(output, regex) @@ -168,6 +171,42 @@ def test_sigsegv(self): 3, 'Segmentation fault') + @skip_segfault_on_android + def test_gc(self): + # bpo-44466: Detect if the GC is running + self.check_fatal_error(""" + import faulthandler + import gc + import sys + + faulthandler.enable() + + class RefCycle: + def __del__(self): + faulthandler._sigsegv() + + # create a reference cycle which triggers a fatal + # error in a destructor + a = RefCycle() + b = RefCycle() + a.b = b + b.a = a + + # Delete the objects, not the cycle + a = None + b = None + + # Break the reference cycle: call __del__() + gc.collect() + + # Should not reach this line + print("exit", file=sys.stderr) + """, + 9, + 'Segmentation fault', + function='__del__', + garbage_collecting=True) + def test_fatal_error_c_thread(self): self.check_fatal_error(""" import faulthandler diff --git a/Misc/NEWS.d/next/Library/2021-06-21-12-43-04.bpo-44466.NSm6mv.rst b/Misc/NEWS.d/next/Library/2021-06-21-12-43-04.bpo-44466.NSm6mv.rst new file mode 100644 index 0000000000000..69de3edb5a7f9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-21-12-43-04.bpo-44466.NSm6mv.rst @@ -0,0 +1,2 @@ +The :mod:`faulthandler` module now detects if a fatal error occurs during a +garbage collector collection. Patch by Victor Stinner. diff --git a/Python/traceback.c b/Python/traceback.c index 470324b1afd83..f7dc5ad686476 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -4,6 +4,7 @@ #include "Python.h" #include "code.h" +#include "pycore_interp.h" // PyInterpreterState.gc #include "frameobject.h" // PyFrame_GetBack() #include "structmember.h" // PyMemberDef #include "osdefs.h" // SEP @@ -914,6 +915,9 @@ _Py_DumpTracebackThreads(int fd, PyInterpreterState *interp, break; } write_thread_id(fd, tstate, tstate == current_tstate); + if (tstate == current_tstate && tstate->interp->gc.collecting) { + PUTS(fd, " Garbage-collecting\n"); + } dump_traceback(fd, tstate, 0); tstate = PyThreadState_Next(tstate); nthreads++; From webhook-mailer at python.org Mon Jun 21 08:29:21 2021 From: webhook-mailer at python.org (vstinner) Date: Mon, 21 Jun 2021 12:29:21 -0000 Subject: [Python-checkins] bpo-44434: Don't call PyThread_exit_thread() explicitly (GH-26758) (GH-26824) Message-ID: https://github.com/python/cpython/commit/6614eac843c5dc0f4c2664ef610b81e556e44923 commit: 6614eac843c5dc0f4c2664ef610b81e556e44923 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2021-06-21T14:29:17+02:00 summary: bpo-44434: Don't call PyThread_exit_thread() explicitly (GH-26758) (GH-26824) _thread.start_new_thread() no longer calls PyThread_exit_thread() explicitly at the thread exit, the call was redundant. On Linux with the glibc, pthread_cancel() loads dynamically the libgcc_s.so.1 library. dlopen() can fail if there is no more available file descriptor to open the file. In this case, the process aborts with the error message: "libgcc_s.so.1 must be installed for pthread_cancel to work" pthread_cancel() unwinds back to the thread's wrapping function that calls the thread entry point. The unwind function is dynamically loaded from the libgcc_s library since it is tightly coupled to the C compiler (GCC). The unwinder depends on DWARF, the compiler generates DWARF, so the unwinder belongs to the compiler. Thanks Florian Weimer and Carlos O'Donell for their help on investigating this issue. (cherry picked from commit 45a78f906d2d5fe5381d78466b11763fc56d57ba) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst M Modules/_threadmodule.c diff --git a/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst b/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst new file mode 100644 index 0000000000000..37b5b57ce6569 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst @@ -0,0 +1,4 @@ +_thread.start_new_thread() no longer calls PyThread_exit_thread() explicitly +at the thread exit, the call was redundant. On Linux with the glibc, +pthread_exit() aborts the whole process if dlopen() fails to open +libgcc_s.so file (ex: EMFILE error). Patch by Victor Stinner. diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index d9a71af8d5cde..388e26e58d420 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -1105,7 +1105,9 @@ thread_run(void *boot_raw) PyThreadState_Clear(tstate); _PyThreadState_DeleteCurrent(tstate); - PyThread_exit_thread(); + // bpo-44434: Don't call explicitly PyThread_exit_thread(). On Linux with + // the glibc, pthread_exit() can abort the whole process if dlopen() fails + // to open the libgcc_s.so library (ex: EMFILE error). } static PyObject * From webhook-mailer at python.org Mon Jun 21 09:59:11 2021 From: webhook-mailer at python.org (corona10) Date: Mon, 21 Jun 2021 13:59:11 -0000 Subject: [Python-checkins] bpo-44395: Fix MIMEPart.as_string to pass unixfrom properly (GH-26685) Message-ID: https://github.com/python/cpython/commit/30f7a77f359a0fc6e37988b0f317a77a15d66b7b commit: 30f7a77f359a0fc6e37988b0f317a77a15d66b7b branch: main author: Dong-hee Na committer: corona10 date: 2021-06-21T22:59:02+09:00 summary: bpo-44395: Fix MIMEPart.as_string to pass unixfrom properly (GH-26685) files: A Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst M Lib/email/message.py M Lib/test/test_email/test_message.py diff --git a/Lib/email/message.py b/Lib/email/message.py index 3701b305532b4c..db30d9a1708992 100644 --- a/Lib/email/message.py +++ b/Lib/email/message.py @@ -948,7 +948,7 @@ def __init__(self, policy=None): if policy is None: from email.policy import default policy = default - Message.__init__(self, policy) + super().__init__(policy) def as_string(self, unixfrom=False, maxheaderlen=None, policy=None): @@ -965,7 +965,7 @@ def as_string(self, unixfrom=False, maxheaderlen=None, policy=None): policy = self.policy if policy is None else policy if maxheaderlen is None: maxheaderlen = policy.max_line_length - return super().as_string(maxheaderlen=maxheaderlen, policy=policy) + return super().as_string(unixfrom, maxheaderlen, policy) def __str__(self): return self.as_string(policy=self.policy.clone(utf8=True)) diff --git a/Lib/test/test_email/test_message.py b/Lib/test/test_email/test_message.py index fab97d91882b8b..7aaf780c042b03 100644 --- a/Lib/test/test_email/test_message.py +++ b/Lib/test/test_email/test_message.py @@ -775,6 +775,13 @@ def test_as_string_allows_maxheaderlen(self): self.assertEqual(len(m.as_string(maxheaderlen=34).strip().splitlines()), 6) + def test_as_string_unixform(self): + m = self._str_msg('test') + m.set_unixfrom('From foo at bar Thu Jan 1 00:00:00 1970') + self.assertEqual(m.as_string(unixfrom=True), + 'From foo at bar Thu Jan 1 00:00:00 1970\n\ntest') + self.assertEqual(m.as_string(unixfrom=False), '\ntest') + def test_str_defaults_to_policy_max_line_length(self): m = self._str_msg('Subject: long line' + ' ab'*50 + '\n\n') self.assertEqual(len(str(m).strip().splitlines()), 3) diff --git a/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst b/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst new file mode 100644 index 00000000000000..6172eec0a9bd3d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst @@ -0,0 +1,2 @@ +Fix :meth:`~email.message.MIMEPart.as_string` to pass unixfrom properly. +Patch by Dong-hee Na. From webhook-mailer at python.org Mon Jun 21 10:27:36 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 21 Jun 2021 14:27:36 -0000 Subject: [Python-checkins] bpo-44395: Fix MIMEPart.as_string to pass unixfrom properly (GH-26685) Message-ID: https://github.com/python/cpython/commit/20a1495b8a93596b322ea19bb09008db036eb7e6 commit: 20a1495b8a93596b322ea19bb09008db036eb7e6 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-21T07:27:26-07:00 summary: bpo-44395: Fix MIMEPart.as_string to pass unixfrom properly (GH-26685) (cherry picked from commit 30f7a77f359a0fc6e37988b0f317a77a15d66b7b) Co-authored-by: Dong-hee Na files: A Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst M Lib/email/message.py M Lib/test/test_email/test_message.py diff --git a/Lib/email/message.py b/Lib/email/message.py index 3701b305532b4c..db30d9a1708992 100644 --- a/Lib/email/message.py +++ b/Lib/email/message.py @@ -948,7 +948,7 @@ def __init__(self, policy=None): if policy is None: from email.policy import default policy = default - Message.__init__(self, policy) + super().__init__(policy) def as_string(self, unixfrom=False, maxheaderlen=None, policy=None): @@ -965,7 +965,7 @@ def as_string(self, unixfrom=False, maxheaderlen=None, policy=None): policy = self.policy if policy is None else policy if maxheaderlen is None: maxheaderlen = policy.max_line_length - return super().as_string(maxheaderlen=maxheaderlen, policy=policy) + return super().as_string(unixfrom, maxheaderlen, policy) def __str__(self): return self.as_string(policy=self.policy.clone(utf8=True)) diff --git a/Lib/test/test_email/test_message.py b/Lib/test/test_email/test_message.py index fab97d91882b8b..7aaf780c042b03 100644 --- a/Lib/test/test_email/test_message.py +++ b/Lib/test/test_email/test_message.py @@ -775,6 +775,13 @@ def test_as_string_allows_maxheaderlen(self): self.assertEqual(len(m.as_string(maxheaderlen=34).strip().splitlines()), 6) + def test_as_string_unixform(self): + m = self._str_msg('test') + m.set_unixfrom('From foo at bar Thu Jan 1 00:00:00 1970') + self.assertEqual(m.as_string(unixfrom=True), + 'From foo at bar Thu Jan 1 00:00:00 1970\n\ntest') + self.assertEqual(m.as_string(unixfrom=False), '\ntest') + def test_str_defaults_to_policy_max_line_length(self): m = self._str_msg('Subject: long line' + ' ab'*50 + '\n\n') self.assertEqual(len(str(m).strip().splitlines()), 3) diff --git a/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst b/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst new file mode 100644 index 00000000000000..6172eec0a9bd3d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst @@ -0,0 +1,2 @@ +Fix :meth:`~email.message.MIMEPart.as_string` to pass unixfrom properly. +Patch by Dong-hee Na. From webhook-mailer at python.org Mon Jun 21 10:27:47 2021 From: webhook-mailer at python.org (miss-islington) Date: Mon, 21 Jun 2021 14:27:47 -0000 Subject: [Python-checkins] bpo-44395: Fix MIMEPart.as_string to pass unixfrom properly (GH-26685) Message-ID: https://github.com/python/cpython/commit/67b3a9995368f89b7ce4a995920b2a83a81c599b commit: 67b3a9995368f89b7ce4a995920b2a83a81c599b branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-21T07:27:42-07:00 summary: bpo-44395: Fix MIMEPart.as_string to pass unixfrom properly (GH-26685) (cherry picked from commit 30f7a77f359a0fc6e37988b0f317a77a15d66b7b) Co-authored-by: Dong-hee Na files: A Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst M Lib/email/message.py M Lib/test/test_email/test_message.py diff --git a/Lib/email/message.py b/Lib/email/message.py index 3701b305532b4c..db30d9a1708992 100644 --- a/Lib/email/message.py +++ b/Lib/email/message.py @@ -948,7 +948,7 @@ def __init__(self, policy=None): if policy is None: from email.policy import default policy = default - Message.__init__(self, policy) + super().__init__(policy) def as_string(self, unixfrom=False, maxheaderlen=None, policy=None): @@ -965,7 +965,7 @@ def as_string(self, unixfrom=False, maxheaderlen=None, policy=None): policy = self.policy if policy is None else policy if maxheaderlen is None: maxheaderlen = policy.max_line_length - return super().as_string(maxheaderlen=maxheaderlen, policy=policy) + return super().as_string(unixfrom, maxheaderlen, policy) def __str__(self): return self.as_string(policy=self.policy.clone(utf8=True)) diff --git a/Lib/test/test_email/test_message.py b/Lib/test/test_email/test_message.py index fab97d91882b8b..7aaf780c042b03 100644 --- a/Lib/test/test_email/test_message.py +++ b/Lib/test/test_email/test_message.py @@ -775,6 +775,13 @@ def test_as_string_allows_maxheaderlen(self): self.assertEqual(len(m.as_string(maxheaderlen=34).strip().splitlines()), 6) + def test_as_string_unixform(self): + m = self._str_msg('test') + m.set_unixfrom('From foo at bar Thu Jan 1 00:00:00 1970') + self.assertEqual(m.as_string(unixfrom=True), + 'From foo at bar Thu Jan 1 00:00:00 1970\n\ntest') + self.assertEqual(m.as_string(unixfrom=False), '\ntest') + def test_str_defaults_to_policy_max_line_length(self): m = self._str_msg('Subject: long line' + ' ab'*50 + '\n\n') self.assertEqual(len(str(m).strip().splitlines()), 3) diff --git a/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst b/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst new file mode 100644 index 00000000000000..6172eec0a9bd3d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst @@ -0,0 +1,2 @@ +Fix :meth:`~email.message.MIMEPart.as_string` to pass unixfrom properly. +Patch by Dong-hee Na. From webhook-mailer at python.org Mon Jun 21 11:24:16 2021 From: webhook-mailer at python.org (pablogsal) Date: Mon, 21 Jun 2021 15:24:16 -0000 Subject: [Python-checkins] bpo-44472: Fix ltrace functionality when exceptions are raised (GH-26822) Message-ID: https://github.com/python/cpython/commit/06cda808f149fae9b4c688f752b6eccd0d455ba4 commit: 06cda808f149fae9b4c688f752b6eccd0d455ba4 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-21T16:23:53+01:00 summary: bpo-44472: Fix ltrace functionality when exceptions are raised (GH-26822) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-21-11-19-54.bpo-44472.Vvm1yn.rst M Python/ceval.c diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-21-11-19-54.bpo-44472.Vvm1yn.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-21-11-19-54.bpo-44472.Vvm1yn.rst new file mode 100644 index 00000000000000..34fa2a9e8615fa --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-21-11-19-54.bpo-44472.Vvm1yn.rst @@ -0,0 +1 @@ +Fix ltrace functionality when exceptions are raised. Patch by Pablo Galindo diff --git a/Python/ceval.c b/Python/ceval.c index b5e3dd53c8439a..9c11640ec6e0cd 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -5325,11 +5325,14 @@ static int prtrace(PyThreadState *tstate, PyObject *v, const char *str) { printf("%s ", str); + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); if (PyObject_Print(v, stdout, 0) != 0) { /* Don't know what else to do */ _PyErr_Clear(tstate); } printf("\n"); + PyErr_Restore(type, value, traceback); return 1; } #endif From webhook-mailer at python.org Mon Jun 21 14:18:11 2021 From: webhook-mailer at python.org (gvanrossum) Date: Mon, 21 Jun 2021 18:18:11 -0000 Subject: [Python-checkins] Reset DeprecationWarning filters in test_typing io and re (#26811) Message-ID: https://github.com/python/cpython/commit/c5d700f0e2e2921c6b54c72ffb0fca3c3d1ef06b commit: c5d700f0e2e2921c6b54c72ffb0fca3c3d1ef06b branch: main author: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> committer: gvanrossum date: 2021-06-21T11:17:55-07:00 summary: Reset DeprecationWarning filters in test_typing io and re (#26811) files: M Lib/test/test_typing.py M Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 06df3e23264cb..eff0f5bfc4b1e 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -3998,6 +3998,7 @@ def stuff(a: BinaryIO) -> bytes: def test_io_submodule(self): with warnings.catch_warnings(record=True) as w: + warnings.filterwarnings("default", category=DeprecationWarning) from typing.io import IO, TextIO, BinaryIO, __all__, __name__ self.assertIs(IO, typing.IO) self.assertIs(TextIO, typing.TextIO) @@ -4052,6 +4053,7 @@ def test_repr(self): def test_re_submodule(self): with warnings.catch_warnings(record=True) as w: + warnings.filterwarnings("default", category=DeprecationWarning) from typing.re import Match, Pattern, __all__, __name__ self.assertIs(Match, typing.Match) self.assertIs(Pattern, typing.Pattern) diff --git a/Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst b/Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst index 7fb891dd4bc0c..078d78d1778b1 100644 --- a/Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst +++ b/Misc/NEWS.d/next/Library/2021-06-14-14-19-11.bpo-38291.ee4cSX.rst @@ -1 +1 @@ -Importing typing.io or typing.re now prints a `DeprecationWarning`. +Importing typing.io or typing.re now prints a ``DeprecationWarning``. From webhook-mailer at python.org Mon Jun 21 16:53:16 2021 From: webhook-mailer at python.org (gvanrossum) Date: Mon, 21 Jun 2021 20:53:16 -0000 Subject: [Python-checkins] bpo-43693: Turn localspluskinds into an object (GH-26749) Message-ID: https://github.com/python/cpython/commit/355f5dd36a0f53175517f35798aa874564d1113a commit: 355f5dd36a0f53175517f35798aa874564d1113a branch: main author: Guido van Rossum committer: gvanrossum date: 2021-06-21T13:53:04-07:00 summary: bpo-43693: Turn localspluskinds into an object (GH-26749) Managing it as a bare pointer to malloc'ed bytes is just too awkward in a few places. files: M Include/cpython/code.h M Include/internal/pycore_code.h M Lib/ctypes/test/test_values.py M Lib/importlib/_bootstrap_external.py M Objects/codeobject.c M Objects/frameobject.c M Objects/typeobject.c M Programs/test_frozenmain.h M Python/compile.c M Python/frozen_hello.h M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h M Python/marshal.c diff --git a/Include/cpython/code.h b/Include/cpython/code.h index 5bf4c8c15dcce6..77801dc173db02 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -26,9 +26,6 @@ typedef uint16_t _Py_CODEUNIT; typedef struct _PyOpcache _PyOpcache; -typedef unsigned char _PyLocalsPlusKind; -typedef _PyLocalsPlusKind *_PyLocalsPlusKinds; - /* Bytecode object */ struct PyCodeObject { PyObject_HEAD @@ -75,7 +72,7 @@ struct PyCodeObject { int co_firstlineno; /* first source line number */ PyObject *co_code; /* instruction opcodes */ PyObject *co_localsplusnames; /* tuple mapping offsets to names */ - _PyLocalsPlusKinds co_localspluskinds; /* array mapping to local kinds */ + PyObject *co_localspluskinds; /* Bytes mapping to local kinds (one byte per variable) */ PyObject *co_filename; /* unicode (where it was loaded from) */ PyObject *co_name; /* unicode (name, for reference) */ PyObject *co_linetable; /* string (encoding addr<->lineno mapping) See @@ -222,4 +219,3 @@ void PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int int PyLineTable_NextAddressRange(PyCodeAddressRange *range); int PyLineTable_PreviousAddressRange(PyCodeAddressRange *range); - diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 1e78b928865e78..78969df081123e 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -180,39 +180,34 @@ extern Py_ssize_t _Py_QuickenedCount; * "free" kind is mutually exclusive with both. */ -// For now _PyLocalsPlusKind and _PyLocalsPlusKinds are defined -// in Include/cpython/code.h. -/* Note that these all fit within _PyLocalsPlusKind, as do combinations. */ +// Note that these all fit within a byte, as do combinations. // Later, we will use the smaller numbers to differentiate the different // kinds of locals (e.g. pos-only arg, varkwargs, local-only). #define CO_FAST_LOCAL 0x20 #define CO_FAST_CELL 0x40 #define CO_FAST_FREE 0x80 -static inline int -_PyCode_InitLocalsPlusKinds(int num, _PyLocalsPlusKinds *pkinds) +typedef unsigned char _PyLocals_Kind; + +static inline _PyLocals_Kind +_PyLocals_GetKind(PyObject *kinds, int i) { - if (num == 0) { - *pkinds = NULL; - return 0; - } - _PyLocalsPlusKinds kinds = PyMem_NEW(_PyLocalsPlusKind, num); - if (kinds == NULL) { - PyErr_NoMemory(); - return -1; - } - *pkinds = kinds; - return 0; + assert(PyBytes_Check(kinds)); + assert(0 <= i && i < PyBytes_GET_SIZE(kinds)); + char *ptr = PyBytes_AS_STRING(kinds); + return (_PyLocals_Kind)(ptr[i]); } static inline void -_PyCode_ClearLocalsPlusKinds(_PyLocalsPlusKinds kinds) +_PyLocals_SetKind(PyObject *kinds, int i, _PyLocals_Kind kind) { - if (kinds != NULL) { - PyMem_Free(kinds); - } + assert(PyBytes_Check(kinds)); + assert(0 <= i && i < PyBytes_GET_SIZE(kinds)); + char *ptr = PyBytes_AS_STRING(kinds); + ptr[i] = (char) kind; } + struct _PyCodeConstructor { /* metadata */ PyObject *filename; @@ -229,8 +224,8 @@ struct _PyCodeConstructor { PyObject *names; /* mapping frame offsets to information */ - PyObject *localsplusnames; - _PyLocalsPlusKinds localspluskinds; + PyObject *localsplusnames; // Tuple of strings + PyObject *localspluskinds; // Bytes object, one byte per variable /* args (within varnames) */ int argcount; diff --git a/Lib/ctypes/test/test_values.py b/Lib/ctypes/test/test_values.py index 5aa0d75fcbf0cb..ca41ef170dd052 100644 --- a/Lib/ctypes/test/test_values.py +++ b/Lib/ctypes/test/test_values.py @@ -80,9 +80,9 @@ class struct_frozen(Structure): continue items.append((entry.name.decode("ascii"), entry.size)) - expected = [("__hello__", 128), - ("__phello__", -128), - ("__phello__.spam", 128), + expected = [("__hello__", 133), + ("__phello__", -133), + ("__phello__.spam", 133), ] self.assertEqual(items, expected, "PyImport_FrozenModules example " "in Doc/library/ctypes.rst may be out of date") diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 7bf19fe43d0a10..21ac22d9464ee6 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -359,6 +359,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693) # Python 3.11a1 3455 (add MAKE_CELL bpo-43693) # Python 3.11a1 3456 (interleave cell args bpo-43693) +# Python 3.11a1 3457 (Change localsplus to a bytes object bpo-43693) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -368,7 +369,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3456).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3457).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 11a83d4a51228a..99199cc235e6ac 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -156,16 +156,16 @@ validate_and_copy_tuple(PyObject *tup) // This is also used in compile.c. void -_Py_set_localsplus_info(int offset, PyObject *name, _PyLocalsPlusKind kind, - PyObject *names, _PyLocalsPlusKinds kinds) +_Py_set_localsplus_info(int offset, PyObject *name, _PyLocals_Kind kind, + PyObject *names, PyObject *kinds) { Py_INCREF(name); PyTuple_SET_ITEM(names, offset, name); - kinds[offset] = kind; + _PyLocals_SetKind(kinds, offset, kind); } static void -get_localsplus_counts(PyObject *names, _PyLocalsPlusKinds kinds, +get_localsplus_counts(PyObject *names, PyObject *kinds, int *pnlocals, int *pnplaincellvars, int *pncellvars, int *pnfreevars) { @@ -175,17 +175,18 @@ get_localsplus_counts(PyObject *names, _PyLocalsPlusKinds kinds, int nfreevars = 0; Py_ssize_t nlocalsplus = PyTuple_GET_SIZE(names); for (int i = 0; i < nlocalsplus; i++) { - if (kinds[i] & CO_FAST_LOCAL) { + _PyLocals_Kind kind = _PyLocals_GetKind(kinds, i); + if (kind & CO_FAST_LOCAL) { nlocals += 1; - if (kinds[i] & CO_FAST_CELL) { + if (kind & CO_FAST_CELL) { ncellvars += 1; } } - else if (kinds[i] & CO_FAST_CELL) { + else if (kind & CO_FAST_CELL) { ncellvars += 1; nplaincellvars += 1; } - else if (kinds[i] & CO_FAST_FREE) { + else if (kind & CO_FAST_FREE) { nfreevars += 1; } } @@ -204,7 +205,7 @@ get_localsplus_counts(PyObject *names, _PyLocalsPlusKinds kinds, } static PyObject * -get_localsplus_names(PyCodeObject *co, _PyLocalsPlusKind kind, int num) +get_localsplus_names(PyCodeObject *co, _PyLocals_Kind kind, int num) { PyObject *names = PyTuple_New(num); if (names == NULL) { @@ -212,7 +213,8 @@ get_localsplus_names(PyCodeObject *co, _PyLocalsPlusKind kind, int num) } int index = 0; for (int offset = 0; offset < co->co_nlocalsplus; offset++) { - if ((co->co_localspluskinds[offset] & kind) == 0) { + _PyLocals_Kind k = _PyLocals_GetKind(co->co_localspluskinds, offset); + if ((k & kind) == 0) { continue; } assert(index < num); @@ -236,8 +238,9 @@ _PyCode_Validate(struct _PyCodeConstructor *con) con->consts == NULL || !PyTuple_Check(con->consts) || con->names == NULL || !PyTuple_Check(con->names) || con->localsplusnames == NULL || !PyTuple_Check(con->localsplusnames) || - (PyTuple_GET_SIZE(con->localsplusnames) && con->localspluskinds == NULL) || - (!PyTuple_GET_SIZE(con->localsplusnames) && con->localspluskinds != NULL) || + con->localspluskinds == NULL || !PyBytes_Check(con->localspluskinds) || + PyTuple_GET_SIZE(con->localsplusnames) + != PyBytes_GET_SIZE(con->localspluskinds) || con->name == NULL || !PyUnicode_Check(con->name) || con->filename == NULL || !PyUnicode_Check(con->filename) || con->linetable == NULL || !PyBytes_Check(con->linetable) || @@ -309,7 +312,7 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) Py_INCREF(con->localsplusnames); co->co_localsplusnames = con->localsplusnames; - // We take ownership of the kinds array. + Py_INCREF(con->localspluskinds); co->co_localspluskinds = con->localspluskinds; co->co_argcount = con->argcount; @@ -394,7 +397,7 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, { PyCodeObject *co = NULL; PyObject *localsplusnames = NULL; - _PyLocalsPlusKinds localspluskinds = NULL; + PyObject *localspluskinds = NULL; if (varnames == NULL || !PyTuple_Check(varnames) || cellvars == NULL || !PyTuple_Check(cellvars) || @@ -413,7 +416,8 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, if (localsplusnames == NULL) { goto error; } - if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { + localspluskinds = PyBytes_FromStringAndSize(NULL, nlocalsplus); + if (localspluskinds == NULL) { goto error; } int offset = 0; @@ -438,7 +442,8 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, // Merge the localsplus indices. nlocalsplus -= 1; offset -= 1; - localspluskinds[argoffset] |= CO_FAST_CELL; + _PyLocals_Kind kind = _PyLocals_GetKind(localspluskinds, argoffset); + _PyLocals_SetKind(localspluskinds, argoffset, kind | CO_FAST_CELL); continue; } _Py_set_localsplus_info(offset, name, CO_FAST_CELL, @@ -495,7 +500,6 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, goto error; } - localspluskinds = NULL; // This keeps it from getting freed below. Py_INCREF(varnames); co->co_varnames = varnames; Py_INCREF(cellvars); @@ -505,7 +509,7 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, error: Py_XDECREF(localsplusnames); - _PyCode_ClearLocalsPlusKinds(localspluskinds); + Py_XDECREF(localspluskinds); return co; } @@ -558,6 +562,7 @@ PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno) .consts = nulltuple, .names = nulltuple, .localsplusnames = nulltuple, + .localspluskinds = emptystring, .exceptiontable = emptystring, }; result = _PyCode_New(&con); @@ -1142,7 +1147,7 @@ code_dealloc(PyCodeObject *co) Py_XDECREF(co->co_consts); Py_XDECREF(co->co_names); Py_XDECREF(co->co_localsplusnames); - _PyCode_ClearLocalsPlusKinds(co->co_localspluskinds); + Py_XDECREF(co->co_localspluskinds); Py_XDECREF(co->co_varnames); Py_XDECREF(co->co_freevars); Py_XDECREF(co->co_cellvars); diff --git a/Objects/frameobject.c b/Objects/frameobject.c index f9090d8cb14d27..813ec561463ba5 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -958,7 +958,7 @@ PyFrame_FastToLocalsWithError(PyFrameObject *f) co = _PyFrame_GetCode(f); fast = f->f_localsptr; for (int i = 0; i < co->co_nlocalsplus; i++) { - _PyLocalsPlusKind kind = co->co_localspluskinds[i]; + _PyLocals_Kind kind = _PyLocals_GetKind(co->co_localspluskinds, i); /* If the namespace is unoptimized, then one of the following cases applies: @@ -1052,7 +1052,7 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear) PyErr_Fetch(&error_type, &error_value, &error_traceback); for (int i = 0; i < co->co_nlocalsplus; i++) { - _PyLocalsPlusKind kind = co->co_localspluskinds[i]; + _PyLocals_Kind kind = _PyLocals_GetKind(co->co_localspluskinds, i); /* Same test as in PyFrame_FastToLocals() above. */ if (kind & CO_FAST_FREE && !(co->co_flags & CO_OPTIMIZED)) { diff --git a/Objects/typeobject.c b/Objects/typeobject.c index fbe3d165a60971..3c766e9230e2b6 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -8864,7 +8864,7 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, PyObject *firstarg = f->f_localsptr[0]; // The first argument might be a cell. - if (firstarg != NULL && (co->co_localspluskinds[0] & CO_FAST_CELL)) { + if (firstarg != NULL && (_PyLocals_GetKind(co->co_localspluskinds, 0) & CO_FAST_CELL)) { // "firstarg" is a cell here unless (very unlikely) super() // was called from the C-API before the first MAKE_CELL op. if (f->f_lasti >= 0) { @@ -8883,7 +8883,7 @@ super_init_without_args(PyFrameObject *f, PyCodeObject *co, PyTypeObject *type = NULL; int i = co->co_nlocals + co->co_nplaincellvars; for (; i < co->co_nlocalsplus; i++) { - assert((co->co_localspluskinds[i] & CO_FAST_FREE) != 0); + assert((_PyLocals_GetKind(co->co_localspluskinds, i) & CO_FAST_FREE) != 0); PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i); assert(PyUnicode_Check(name)); if (_PyUnicode_EqualToASCIIId(name, &PyId___class__)) { diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index 5757c150343087..6256e987fab160 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -19,9 +19,9 @@ unsigned char M_test_frozenmain[] = { 121,115,90,17,95,116,101,115,116,105,110,116,101,114,110,97, 108,99,97,112,105,218,5,112,114,105,110,116,218,4,97,114, 103,118,90,11,103,101,116,95,99,111,110,102,105,103,115,114, - 2,0,0,0,218,3,107,101,121,169,0,250,18,116,101,115, - 116,95,102,114,111,122,101,110,109,97,105,110,46,112,121,218, - 8,60,109,111,100,117,108,101,62,1,0,0,0,115,16,0, - 0,0,8,3,8,1,8,2,12,1,12,1,8,1,26,7, - 4,249,243,0,0,0,0, + 2,0,0,0,218,3,107,101,121,169,0,243,0,0,0,0, + 250,18,116,101,115,116,95,102,114,111,122,101,110,109,97,105, + 110,46,112,121,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,16,0,0,0,8,3,8,1,8,2,12,1,12, + 1,8,1,26,7,4,249,114,9,0,0,0, }; diff --git a/Python/compile.c b/Python/compile.c index 0a181485b304db..9118d128213530 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -7187,15 +7187,13 @@ merge_const_one(struct compiler *c, PyObject **obj) } // This is in codeobject.c. -extern void _Py_set_localsplus_info(int, PyObject *, _PyLocalsPlusKind, - PyObject *, _PyLocalsPlusKinds); +extern void _Py_set_localsplus_info(int, PyObject *, unsigned char, + PyObject *, PyObject *); static void compute_localsplus_info(struct compiler *c, int nlocalsplus, - PyObject *names, _PyLocalsPlusKinds kinds) + PyObject *names, PyObject *kinds) { - assert(PyTuple_GET_SIZE(names) == nlocalsplus); - PyObject *k, *v; Py_ssize_t pos = 0; while (PyDict_Next(c->u->u_varnames, &pos, &k, &v)) { @@ -7203,7 +7201,7 @@ compute_localsplus_info(struct compiler *c, int nlocalsplus, assert(offset >= 0); assert(offset < nlocalsplus); // For now we do not distinguish arg kinds. - _PyLocalsPlusKind kind = CO_FAST_LOCAL; + _PyLocals_Kind kind = CO_FAST_LOCAL; if (PyDict_GetItem(c->u->u_cellvars, k) != NULL) { kind |= CO_FAST_CELL; } @@ -7245,7 +7243,7 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, PyObject *names = NULL; PyObject *consts = NULL; PyObject *localsplusnames = NULL; - _PyLocalsPlusKinds localspluskinds = NULL; + PyObject *localspluskinds = NULL; PyObject *name = NULL; names = dict_keys_inorder(c->u->u_names, 0); @@ -7281,7 +7279,8 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, if (localsplusnames == NULL) { goto error; } - if (_PyCode_InitLocalsPlusKinds(nlocalsplus, &localspluskinds) < 0) { + localspluskinds = PyBytes_FromStringAndSize(NULL, nlocalsplus); + if (localspluskinds == NULL) { goto error; } compute_localsplus_info(c, nlocalsplus, localsplusnames, localspluskinds); @@ -7315,7 +7314,6 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, } if (!merge_const_one(c, &localsplusnames)) { - _PyCode_ClearLocalsPlusKinds(con.localspluskinds); goto error; } con.localsplusnames = localsplusnames; @@ -7325,13 +7323,11 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, goto error; } - localspluskinds = NULL; // This keeps it from getting freed below. - error: Py_XDECREF(names); Py_XDECREF(consts); Py_XDECREF(localsplusnames); - _PyCode_ClearLocalsPlusKinds(localspluskinds); + Py_XDECREF(localspluskinds); Py_XDECREF(name); return co; } diff --git a/Python/frozen_hello.h b/Python/frozen_hello.h index 1e150630161f53..2d20d2ad6b351a 100644 --- a/Python/frozen_hello.h +++ b/Python/frozen_hello.h @@ -5,7 +5,8 @@ const unsigned char _Py_M__hello[] = { 100,1,131,1,1,0,100,2,83,0,41,3,84,122,12,72, 101,108,108,111,32,119,111,114,108,100,33,78,41,2,90,11, 105,110,105,116,105,97,108,105,122,101,100,218,5,112,114,105, - 110,116,169,0,122,14,60,102,114,111,122,101,110,32,104,101, - 108,108,111,62,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,4,0,0,0,4,0,12,1,243,0,0,0,0, + 110,116,169,0,243,0,0,0,0,122,14,60,102,114,111,122, + 101,110,32,104,101,108,108,111,62,218,8,60,109,111,100,117, + 108,101,62,1,0,0,0,115,4,0,0,0,4,0,12,1, + 114,2,0,0,0, }; diff --git a/Python/importlib.h b/Python/importlib.h index cb94f016e8bb93..69d181446036a6 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -59,233 +59,238 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 106,0,6,0,89,0,83,0,37,0,119,0,169,1,78,41, 3,218,12,95,95,113,117,97,108,110,97,109,101,95,95,218, 14,65,116,116,114,105,98,117,116,101,69,114,114,111,114,218, - 4,116,121,112,101,41,1,218,3,111,98,106,32,250,29,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,218,12,95,111, - 98,106,101,99,116,95,110,97,109,101,23,0,0,0,115,14, - 0,0,0,2,1,6,1,2,128,12,1,14,1,2,128,2, - 255,115,12,0,0,0,129,2,4,0,132,12,18,7,147,1, - 18,7,114,6,0,0,0,78,99,2,0,0,0,0,0,0, - 0,0,0,0,0,7,0,0,0,67,0,0,0,115,56,0, - 0,0,100,1,68,0,93,16,125,2,116,0,124,1,124,2, - 131,2,114,18,116,1,124,0,124,2,116,2,124,1,124,2, - 131,2,131,3,1,0,113,2,124,0,106,3,160,4,124,1, - 106,3,161,1,1,0,100,2,83,0,41,3,122,47,83,105, - 109,112,108,101,32,115,117,98,115,116,105,116,117,116,101,32, - 102,111,114,32,102,117,110,99,116,111,111,108,115,46,117,112, - 100,97,116,101,95,119,114,97,112,112,101,114,46,41,4,218, - 10,95,95,109,111,100,117,108,101,95,95,218,8,95,95,110, - 97,109,101,95,95,114,1,0,0,0,218,7,95,95,100,111, - 99,95,95,78,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,218, - 7,114,101,112,108,97,99,101,32,32,32,114,5,0,0,0, - 218,5,95,119,114,97,112,40,0,0,0,115,10,0,0,0, - 8,2,10,1,18,1,2,128,18,1,243,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,67,0,0,0,115,12,0,0,0,116,0, - 116,1,131,1,124,0,131,1,83,0,114,0,0,0,0,41, - 2,114,3,0,0,0,218,3,115,121,115,169,1,218,4,110, - 97,109,101,32,114,5,0,0,0,218,11,95,110,101,119,95, - 109,111,100,117,108,101,48,0,0,0,115,2,0,0,0,12, - 1,114,17,0,0,0,114,21,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0, - 115,12,0,0,0,101,0,90,1,100,0,90,2,100,1,83, - 0,41,2,218,14,95,68,101,97,100,108,111,99,107,69,114, - 114,111,114,78,41,3,114,8,0,0,0,114,7,0,0,0, - 114,1,0,0,0,169,0,114,5,0,0,0,114,22,0,0, - 0,61,0,0,0,115,4,0,0,0,8,0,4,1,114,17, - 0,0,0,114,22,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,64,0,0,0,115,56,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,83,0,41,13,218,11,95,77, - 111,100,117,108,101,76,111,99,107,122,169,65,32,114,101,99, - 117,114,115,105,118,101,32,108,111,99,107,32,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,32,119,104,105,99,104, - 32,105,115,32,97,98,108,101,32,116,111,32,100,101,116,101, - 99,116,32,100,101,97,100,108,111,99,107,115,10,32,32,32, - 32,40,101,46,103,46,32,116,104,114,101,97,100,32,49,32, - 116,114,121,105,110,103,32,116,111,32,116,97,107,101,32,108, - 111,99,107,115,32,65,32,116,104,101,110,32,66,44,32,97, - 110,100,32,116,104,114,101,97,100,32,50,32,116,114,121,105, - 110,103,32,116,111,10,32,32,32,32,116,97,107,101,32,108, - 111,99,107,115,32,66,32,116,104,101,110,32,65,41,46,10, - 32,32,32,32,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,67,0,0,0,115,48,0,0,0,116,0, - 160,1,161,0,124,0,95,2,116,0,160,1,161,0,124,0, - 95,3,124,1,124,0,95,4,100,0,124,0,95,5,100,1, - 124,0,95,6,100,1,124,0,95,7,100,0,83,0,169,2, - 78,233,0,0,0,0,41,8,218,7,95,116,104,114,101,97, - 100,90,13,97,108,108,111,99,97,116,101,95,108,111,99,107, - 218,4,108,111,99,107,218,6,119,97,107,101,117,112,114,20, - 0,0,0,218,5,111,119,110,101,114,218,5,99,111,117,110, - 116,218,7,119,97,105,116,101,114,115,169,2,218,4,115,101, - 108,102,114,20,0,0,0,32,32,114,5,0,0,0,218,8, - 95,95,105,110,105,116,95,95,71,0,0,0,115,12,0,0, - 0,10,1,10,1,6,1,6,1,6,1,10,1,114,17,0, - 0,0,122,20,95,77,111,100,117,108,101,76,111,99,107,46, - 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,86,0, - 0,0,116,0,160,1,161,0,125,1,124,0,106,2,125,2, - 116,3,131,0,125,3,9,0,116,4,160,5,124,2,161,1, - 125,4,124,4,100,0,117,0,114,22,100,2,83,0,124,4, - 106,2,125,2,124,2,124,1,107,2,114,31,100,1,83,0, - 124,2,124,3,118,0,114,37,100,2,83,0,124,3,160,6, - 124,2,161,1,1,0,113,11,41,3,78,84,70,41,7,114, - 27,0,0,0,218,9,103,101,116,95,105,100,101,110,116,114, - 30,0,0,0,218,3,115,101,116,218,12,95,98,108,111,99, - 107,105,110,103,95,111,110,218,3,103,101,116,218,3,97,100, - 100,41,5,114,34,0,0,0,90,2,109,101,218,3,116,105, - 100,90,4,115,101,101,110,114,28,0,0,0,32,32,32,32, - 32,114,5,0,0,0,218,12,104,97,115,95,100,101,97,100, - 108,111,99,107,79,0,0,0,115,28,0,0,0,8,2,6, - 1,6,1,2,1,10,1,8,1,4,1,6,1,8,1,4, - 1,8,1,4,6,10,1,2,242,114,17,0,0,0,122,24, - 95,77,111,100,117,108,101,76,111,99,107,46,104,97,115,95, - 100,101,97,100,108,111,99,107,99,1,0,0,0,0,0,0, - 0,0,0,0,0,9,0,0,0,67,0,0,0,115,204,0, - 0,0,116,0,160,1,161,0,125,1,124,0,116,2,124,1, - 60,0,9,0,9,0,124,0,106,3,53,0,1,0,124,0, - 106,4,100,2,107,2,115,24,124,0,106,5,124,1,107,2, - 114,45,124,1,124,0,95,5,124,0,4,0,106,4,100,3, - 55,0,2,0,95,4,9,0,100,4,4,0,4,0,131,3, - 1,0,116,2,124,1,61,0,100,1,83,0,124,0,160,6, - 161,0,114,55,116,7,100,5,124,0,22,0,131,1,130,1, - 124,0,106,8,160,9,100,6,161,1,114,68,124,0,4,0, - 106,10,100,3,55,0,2,0,95,10,100,4,4,0,4,0, - 131,3,1,0,110,11,35,0,49,0,115,79,119,4,37,0, - 1,0,1,0,1,0,89,0,1,0,1,0,124,0,106,8, - 160,9,161,0,1,0,124,0,106,8,160,11,161,0,1,0, - 113,10,35,0,116,2,124,1,61,0,119,0,37,0,41,7, - 122,185,10,32,32,32,32,32,32,32,32,65,99,113,117,105, - 114,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, - 99,107,46,32,32,73,102,32,97,32,112,111,116,101,110,116, - 105,97,108,32,100,101,97,100,108,111,99,107,32,105,115,32, - 100,101,116,101,99,116,101,100,44,10,32,32,32,32,32,32, - 32,32,97,32,95,68,101,97,100,108,111,99,107,69,114,114, - 111,114,32,105,115,32,114,97,105,115,101,100,46,10,32,32, - 32,32,32,32,32,32,79,116,104,101,114,119,105,115,101,44, - 32,116,104,101,32,108,111,99,107,32,105,115,32,97,108,119, - 97,121,115,32,97,99,113,117,105,114,101,100,32,97,110,100, - 32,84,114,117,101,32,105,115,32,114,101,116,117,114,110,101, - 100,46,10,32,32,32,32,32,32,32,32,84,114,26,0,0, - 0,233,1,0,0,0,78,122,23,100,101,97,100,108,111,99, - 107,32,100,101,116,101,99,116,101,100,32,98,121,32,37,114, - 70,41,12,114,27,0,0,0,114,36,0,0,0,114,38,0, - 0,0,114,28,0,0,0,114,31,0,0,0,114,30,0,0, - 0,114,42,0,0,0,114,22,0,0,0,114,29,0,0,0, - 218,7,97,99,113,117,105,114,101,114,32,0,0,0,218,7, - 114,101,108,101,97,115,101,169,2,114,34,0,0,0,114,41, - 0,0,0,32,32,114,5,0,0,0,114,44,0,0,0,100, - 0,0,0,115,44,0,0,0,8,6,8,1,2,1,2,1, - 8,1,20,1,6,1,14,1,2,1,10,252,10,13,8,248, - 12,1,12,1,14,1,12,248,22,128,10,10,10,1,2,244, - 2,128,10,14,115,56,0,0,0,137,4,65,32,0,141,22, - 65,10,3,163,5,65,32,0,173,23,65,10,3,193,4,6, - 65,32,0,193,10,4,65,14,11,193,14,1,65,32,0,193, - 15,3,65,14,11,193,18,14,65,32,0,193,32,5,65,37, - 7,122,19,95,77,111,100,117,108,101,76,111,99,107,46,97, - 99,113,117,105,114,101,99,1,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,67,0,0,0,115,148,0,0,0, - 116,0,160,1,161,0,125,1,124,0,106,2,53,0,1,0, - 124,0,106,3,124,1,107,3,114,17,116,4,100,1,131,1, - 130,1,124,0,106,5,100,2,107,4,115,24,74,0,130,1, - 124,0,4,0,106,5,100,3,56,0,2,0,95,5,124,0, - 106,5,100,2,107,2,114,54,100,0,124,0,95,3,124,0, - 106,6,114,54,124,0,4,0,106,6,100,3,56,0,2,0, - 95,6,124,0,106,7,160,8,161,0,1,0,100,0,4,0, - 4,0,131,3,1,0,100,0,83,0,35,0,49,0,115,66, - 119,4,37,0,1,0,1,0,1,0,89,0,1,0,1,0, - 100,0,83,0,41,4,78,250,31,99,97,110,110,111,116,32, - 114,101,108,101,97,115,101,32,117,110,45,97,99,113,117,105, - 114,101,100,32,108,111,99,107,114,26,0,0,0,114,43,0, - 0,0,41,9,114,27,0,0,0,114,36,0,0,0,114,28, - 0,0,0,114,30,0,0,0,218,12,82,117,110,116,105,109, - 101,69,114,114,111,114,114,31,0,0,0,114,32,0,0,0, - 114,29,0,0,0,114,45,0,0,0,114,46,0,0,0,32, - 32,114,5,0,0,0,114,45,0,0,0,125,0,0,0,115, - 28,0,0,0,8,1,8,1,10,1,8,1,14,1,14,1, - 10,1,6,1,6,1,14,1,10,1,14,247,22,128,4,0, - 115,15,0,0,0,135,47,61,3,189,4,65,1,11,193,2, - 3,65,1,11,122,19,95,77,111,100,117,108,101,76,111,99, - 107,46,114,101,108,101,97,115,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,67,0,0,0,243,18, - 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, - 1,161,2,83,0,41,2,78,122,23,95,77,111,100,117,108, - 101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,123, - 125,169,3,218,6,102,111,114,109,97,116,114,20,0,0,0, - 218,2,105,100,169,1,114,34,0,0,0,32,114,5,0,0, - 0,218,8,95,95,114,101,112,114,95,95,138,0,0,0,243, - 2,0,0,0,18,1,114,17,0,0,0,122,20,95,77,111, + 4,116,121,112,101,41,1,218,3,111,98,106,115,1,0,0, + 0,32,250,29,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,218,12,95,111,98,106,101,99,116,95,110,97,109,101,23, + 0,0,0,115,14,0,0,0,2,1,6,1,2,128,12,1, + 14,1,2,128,2,255,115,12,0,0,0,129,2,4,0,132, + 12,18,7,147,1,18,7,114,6,0,0,0,78,99,2,0, + 0,0,0,0,0,0,0,0,0,0,7,0,0,0,67,0, + 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, + 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, + 2,124,1,124,2,131,2,131,3,1,0,113,2,124,0,106, + 3,160,4,124,1,106,3,161,1,1,0,100,2,83,0,41, + 3,122,47,83,105,109,112,108,101,32,115,117,98,115,116,105, + 116,117,116,101,32,102,111,114,32,102,117,110,99,116,111,111, + 108,115,46,117,112,100,97,116,101,95,119,114,97,112,112,101, + 114,46,41,4,218,10,95,95,109,111,100,117,108,101,95,95, + 218,8,95,95,110,97,109,101,95,95,114,1,0,0,0,218, + 7,95,95,100,111,99,95,95,78,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,218,7,114,101,112,108,97,99,101,115,3,0, + 0,0,32,32,32,114,5,0,0,0,218,5,95,119,114,97, + 112,40,0,0,0,115,10,0,0,0,8,2,10,1,18,1, + 2,128,18,1,243,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,67, + 0,0,0,115,12,0,0,0,116,0,116,1,131,1,124,0, + 131,1,83,0,114,0,0,0,0,41,2,114,3,0,0,0, + 218,3,115,121,115,169,1,218,4,110,97,109,101,115,1,0, + 0,0,32,114,5,0,0,0,218,11,95,110,101,119,95,109, + 111,100,117,108,101,48,0,0,0,115,2,0,0,0,12,1, + 114,17,0,0,0,114,21,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,115, + 12,0,0,0,101,0,90,1,100,0,90,2,100,1,83,0, + 41,2,218,14,95,68,101,97,100,108,111,99,107,69,114,114, + 111,114,78,41,3,114,8,0,0,0,114,7,0,0,0,114, + 1,0,0,0,169,0,114,17,0,0,0,114,5,0,0,0, + 114,22,0,0,0,61,0,0,0,115,4,0,0,0,8,0, + 4,1,114,17,0,0,0,114,22,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, + 0,115,56,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,83,0,41,13, + 218,11,95,77,111,100,117,108,101,76,111,99,107,122,169,65, + 32,114,101,99,117,114,115,105,118,101,32,108,111,99,107,32, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,119, + 104,105,99,104,32,105,115,32,97,98,108,101,32,116,111,32, + 100,101,116,101,99,116,32,100,101,97,100,108,111,99,107,115, + 10,32,32,32,32,40,101,46,103,46,32,116,104,114,101,97, + 100,32,49,32,116,114,121,105,110,103,32,116,111,32,116,97, + 107,101,32,108,111,99,107,115,32,65,32,116,104,101,110,32, + 66,44,32,97,110,100,32,116,104,114,101,97,100,32,50,32, + 116,114,121,105,110,103,32,116,111,10,32,32,32,32,116,97, + 107,101,32,108,111,99,107,115,32,66,32,116,104,101,110,32, + 65,41,46,10,32,32,32,32,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,67,0,0,0,115,48,0, + 0,0,116,0,160,1,161,0,124,0,95,2,116,0,160,1, + 161,0,124,0,95,3,124,1,124,0,95,4,100,0,124,0, + 95,5,100,1,124,0,95,6,100,1,124,0,95,7,100,0, + 83,0,169,2,78,233,0,0,0,0,41,8,218,7,95,116, + 104,114,101,97,100,90,13,97,108,108,111,99,97,116,101,95, + 108,111,99,107,218,4,108,111,99,107,218,6,119,97,107,101, + 117,112,114,20,0,0,0,218,5,111,119,110,101,114,218,5, + 99,111,117,110,116,218,7,119,97,105,116,101,114,115,169,2, + 218,4,115,101,108,102,114,20,0,0,0,115,2,0,0,0, + 32,32,114,5,0,0,0,218,8,95,95,105,110,105,116,95, + 95,71,0,0,0,115,12,0,0,0,10,1,10,1,6,1, + 6,1,6,1,10,1,114,17,0,0,0,122,20,95,77,111, + 100,117,108,101,76,111,99,107,46,95,95,105,110,105,116,95, + 95,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,67,0,0,0,115,86,0,0,0,116,0,160,1,161, + 0,125,1,124,0,106,2,125,2,116,3,131,0,125,3,9, + 0,116,4,160,5,124,2,161,1,125,4,124,4,100,0,117, + 0,114,22,100,2,83,0,124,4,106,2,125,2,124,2,124, + 1,107,2,114,31,100,1,83,0,124,2,124,3,118,0,114, + 37,100,2,83,0,124,3,160,6,124,2,161,1,1,0,113, + 11,41,3,78,84,70,41,7,114,27,0,0,0,218,9,103, + 101,116,95,105,100,101,110,116,114,30,0,0,0,218,3,115, + 101,116,218,12,95,98,108,111,99,107,105,110,103,95,111,110, + 218,3,103,101,116,218,3,97,100,100,41,5,114,34,0,0, + 0,90,2,109,101,218,3,116,105,100,90,4,115,101,101,110, + 114,28,0,0,0,115,5,0,0,0,32,32,32,32,32,114, + 5,0,0,0,218,12,104,97,115,95,100,101,97,100,108,111, + 99,107,79,0,0,0,115,28,0,0,0,8,2,6,1,6, + 1,2,1,10,1,8,1,4,1,6,1,8,1,4,1,8, + 1,4,6,10,1,2,242,114,17,0,0,0,122,24,95,77, + 111,100,117,108,101,76,111,99,107,46,104,97,115,95,100,101, + 97,100,108,111,99,107,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,67,0,0,0,115,204,0,0,0, + 116,0,160,1,161,0,125,1,124,0,116,2,124,1,60,0, + 9,0,9,0,124,0,106,3,53,0,1,0,124,0,106,4, + 100,2,107,2,115,24,124,0,106,5,124,1,107,2,114,45, + 124,1,124,0,95,5,124,0,4,0,106,4,100,3,55,0, + 2,0,95,4,9,0,100,4,4,0,4,0,131,3,1,0, + 116,2,124,1,61,0,100,1,83,0,124,0,160,6,161,0, + 114,55,116,7,100,5,124,0,22,0,131,1,130,1,124,0, + 106,8,160,9,100,6,161,1,114,68,124,0,4,0,106,10, + 100,3,55,0,2,0,95,10,100,4,4,0,4,0,131,3, + 1,0,110,11,35,0,49,0,115,79,119,4,37,0,1,0, + 1,0,1,0,89,0,1,0,1,0,124,0,106,8,160,9, + 161,0,1,0,124,0,106,8,160,11,161,0,1,0,113,10, + 35,0,116,2,124,1,61,0,119,0,37,0,41,7,122,185, + 10,32,32,32,32,32,32,32,32,65,99,113,117,105,114,101, + 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, + 46,32,32,73,102,32,97,32,112,111,116,101,110,116,105,97, + 108,32,100,101,97,100,108,111,99,107,32,105,115,32,100,101, + 116,101,99,116,101,100,44,10,32,32,32,32,32,32,32,32, + 97,32,95,68,101,97,100,108,111,99,107,69,114,114,111,114, + 32,105,115,32,114,97,105,115,101,100,46,10,32,32,32,32, + 32,32,32,32,79,116,104,101,114,119,105,115,101,44,32,116, + 104,101,32,108,111,99,107,32,105,115,32,97,108,119,97,121, + 115,32,97,99,113,117,105,114,101,100,32,97,110,100,32,84, + 114,117,101,32,105,115,32,114,101,116,117,114,110,101,100,46, + 10,32,32,32,32,32,32,32,32,84,114,26,0,0,0,233, + 1,0,0,0,78,122,23,100,101,97,100,108,111,99,107,32, + 100,101,116,101,99,116,101,100,32,98,121,32,37,114,70,41, + 12,114,27,0,0,0,114,36,0,0,0,114,38,0,0,0, + 114,28,0,0,0,114,31,0,0,0,114,30,0,0,0,114, + 42,0,0,0,114,22,0,0,0,114,29,0,0,0,218,7, + 97,99,113,117,105,114,101,114,32,0,0,0,218,7,114,101, + 108,101,97,115,101,169,2,114,34,0,0,0,114,41,0,0, + 0,115,2,0,0,0,32,32,114,5,0,0,0,114,44,0, + 0,0,100,0,0,0,115,44,0,0,0,8,6,8,1,2, + 1,2,1,8,1,20,1,6,1,14,1,2,1,10,252,10, + 13,8,248,12,1,12,1,14,1,12,248,22,128,10,10,10, + 1,2,244,2,128,10,14,115,56,0,0,0,137,4,65,32, + 0,141,22,65,10,3,163,5,65,32,0,173,23,65,10,3, + 193,4,6,65,32,0,193,10,4,65,14,11,193,14,1,65, + 32,0,193,15,3,65,14,11,193,18,14,65,32,0,193,32, + 5,65,37,7,122,19,95,77,111,100,117,108,101,76,111,99, + 107,46,97,99,113,117,105,114,101,99,1,0,0,0,0,0, + 0,0,0,0,0,0,9,0,0,0,67,0,0,0,115,148, + 0,0,0,116,0,160,1,161,0,125,1,124,0,106,2,53, + 0,1,0,124,0,106,3,124,1,107,3,114,17,116,4,100, + 1,131,1,130,1,124,0,106,5,100,2,107,4,115,24,74, + 0,130,1,124,0,4,0,106,5,100,3,56,0,2,0,95, + 5,124,0,106,5,100,2,107,2,114,54,100,0,124,0,95, + 3,124,0,106,6,114,54,124,0,4,0,106,6,100,3,56, + 0,2,0,95,6,124,0,106,7,160,8,161,0,1,0,100, + 0,4,0,4,0,131,3,1,0,100,0,83,0,35,0,49, + 0,115,66,119,4,37,0,1,0,1,0,1,0,89,0,1, + 0,1,0,100,0,83,0,41,4,78,250,31,99,97,110,110, + 111,116,32,114,101,108,101,97,115,101,32,117,110,45,97,99, + 113,117,105,114,101,100,32,108,111,99,107,114,26,0,0,0, + 114,43,0,0,0,41,9,114,27,0,0,0,114,36,0,0, + 0,114,28,0,0,0,114,30,0,0,0,218,12,82,117,110, + 116,105,109,101,69,114,114,111,114,114,31,0,0,0,114,32, + 0,0,0,114,29,0,0,0,114,45,0,0,0,114,46,0, + 0,0,115,2,0,0,0,32,32,114,5,0,0,0,114,45, + 0,0,0,125,0,0,0,115,28,0,0,0,8,1,8,1, + 10,1,8,1,14,1,14,1,10,1,6,1,6,1,14,1, + 10,1,14,247,22,128,4,0,115,15,0,0,0,135,47,61, + 3,189,4,65,1,11,193,2,3,65,1,11,122,19,95,77, + 111,100,117,108,101,76,111,99,107,46,114,101,108,101,97,115, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,67,0,0,0,243,18,0,0,0,100,1,160,0,124, + 0,106,1,116,2,124,0,131,1,161,2,83,0,41,2,78, + 122,23,95,77,111,100,117,108,101,76,111,99,107,40,123,33, + 114,125,41,32,97,116,32,123,125,169,3,218,6,102,111,114, + 109,97,116,114,20,0,0,0,218,2,105,100,169,1,114,34, + 0,0,0,115,1,0,0,0,32,114,5,0,0,0,218,8, + 95,95,114,101,112,114,95,95,138,0,0,0,243,2,0,0, + 0,18,1,114,17,0,0,0,122,20,95,77,111,100,117,108, + 101,76,111,99,107,46,95,95,114,101,112,114,95,95,78,41, + 9,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, + 114,9,0,0,0,114,35,0,0,0,114,42,0,0,0,114, + 44,0,0,0,114,45,0,0,0,114,54,0,0,0,114,23, + 0,0,0,114,17,0,0,0,114,5,0,0,0,114,24,0, + 0,0,65,0,0,0,115,14,0,0,0,8,0,4,1,8, + 5,8,8,8,21,8,25,12,13,114,17,0,0,0,114,24, + 0,0,0,99,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, + 16,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, + 107,122,86,65,32,115,105,109,112,108,101,32,95,77,111,100, + 117,108,101,76,111,99,107,32,101,113,117,105,118,97,108,101, + 110,116,32,102,111,114,32,80,121,116,104,111,110,32,98,117, + 105,108,100,115,32,119,105,116,104,111,117,116,10,32,32,32, + 32,109,117,108,116,105,45,116,104,114,101,97,100,105,110,103, + 32,115,117,112,112,111,114,116,46,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,67,0,0,0,115,16, + 0,0,0,124,1,124,0,95,0,100,1,124,0,95,1,100, + 0,83,0,114,25,0,0,0,41,2,114,20,0,0,0,114, + 31,0,0,0,114,33,0,0,0,115,2,0,0,0,32,32, + 114,5,0,0,0,114,35,0,0,0,146,0,0,0,243,4, + 0,0,0,6,1,10,1,114,17,0,0,0,122,25,95,68, + 117,109,109,121,77,111,100,117,108,101,76,111,99,107,46,95, + 95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,67,0,0,0,115,18,0,0, + 0,124,0,4,0,106,0,100,1,55,0,2,0,95,0,100, + 2,83,0,41,3,78,114,43,0,0,0,84,41,1,114,31, + 0,0,0,114,53,0,0,0,115,1,0,0,0,32,114,5, + 0,0,0,114,44,0,0,0,150,0,0,0,115,4,0,0, + 0,14,1,4,1,114,17,0,0,0,122,24,95,68,117,109, + 109,121,77,111,100,117,108,101,76,111,99,107,46,97,99,113, + 117,105,114,101,99,1,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,67,0,0,0,115,36,0,0,0,124,0, + 106,0,100,1,107,2,114,9,116,1,100,2,131,1,130,1, + 124,0,4,0,106,0,100,3,56,0,2,0,95,0,100,0, + 83,0,41,4,78,114,26,0,0,0,114,47,0,0,0,114, + 43,0,0,0,41,2,114,31,0,0,0,114,48,0,0,0, + 114,53,0,0,0,115,1,0,0,0,32,114,5,0,0,0, + 114,45,0,0,0,154,0,0,0,115,6,0,0,0,10,1, + 8,1,18,1,114,17,0,0,0,122,24,95,68,117,109,109, + 121,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, + 97,115,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,67,0,0,0,114,49,0,0,0,41,2,78, + 122,28,95,68,117,109,109,121,77,111,100,117,108,101,76,111, + 99,107,40,123,33,114,125,41,32,97,116,32,123,125,114,50, + 0,0,0,114,53,0,0,0,115,1,0,0,0,32,114,5, + 0,0,0,114,54,0,0,0,159,0,0,0,114,55,0,0, + 0,114,17,0,0,0,122,25,95,68,117,109,109,121,77,111, 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, - 95,78,41,9,114,8,0,0,0,114,7,0,0,0,114,1, - 0,0,0,114,9,0,0,0,114,35,0,0,0,114,42,0, - 0,0,114,44,0,0,0,114,45,0,0,0,114,54,0,0, - 0,114,23,0,0,0,114,5,0,0,0,114,24,0,0,0, - 65,0,0,0,115,14,0,0,0,8,0,4,1,8,5,8, - 8,8,21,8,25,12,13,114,17,0,0,0,114,24,0,0, - 0,99,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,16,95, - 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,122, - 86,65,32,115,105,109,112,108,101,32,95,77,111,100,117,108, - 101,76,111,99,107,32,101,113,117,105,118,97,108,101,110,116, - 32,102,111,114,32,80,121,116,104,111,110,32,98,117,105,108, - 100,115,32,119,105,116,104,111,117,116,10,32,32,32,32,109, - 117,108,116,105,45,116,104,114,101,97,100,105,110,103,32,115, - 117,112,112,111,114,116,46,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,124,1,124,0,95,0,100,1,124,0,95,1,100,0,83, - 0,114,25,0,0,0,41,2,114,20,0,0,0,114,31,0, - 0,0,114,33,0,0,0,32,32,114,5,0,0,0,114,35, - 0,0,0,146,0,0,0,243,4,0,0,0,6,1,10,1, - 114,17,0,0,0,122,25,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,46,95,95,105,110,105,116,95,95, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,18,0,0,0,124,0,4,0,106,0, - 100,1,55,0,2,0,95,0,100,2,83,0,41,3,78,114, - 43,0,0,0,84,41,1,114,31,0,0,0,114,53,0,0, - 0,32,114,5,0,0,0,114,44,0,0,0,150,0,0,0, - 115,4,0,0,0,14,1,4,1,114,17,0,0,0,122,24, - 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, - 46,97,99,113,117,105,114,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,115,36,0, - 0,0,124,0,106,0,100,1,107,2,114,9,116,1,100,2, - 131,1,130,1,124,0,4,0,106,0,100,3,56,0,2,0, - 95,0,100,0,83,0,41,4,78,114,26,0,0,0,114,47, - 0,0,0,114,43,0,0,0,41,2,114,31,0,0,0,114, - 48,0,0,0,114,53,0,0,0,32,114,5,0,0,0,114, - 45,0,0,0,154,0,0,0,115,6,0,0,0,10,1,8, - 1,18,1,114,17,0,0,0,122,24,95,68,117,109,109,121, - 77,111,100,117,108,101,76,111,99,107,46,114,101,108,101,97, - 115,101,99,1,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,114,49,0,0,0,41,2,78,122, - 28,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, - 107,40,123,33,114,125,41,32,97,116,32,123,125,114,50,0, - 0,0,114,53,0,0,0,32,114,5,0,0,0,114,54,0, - 0,0,159,0,0,0,114,55,0,0,0,114,17,0,0,0, - 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,46,95,95,114,101,112,114,95,95,78,41,8,114,8, - 0,0,0,114,7,0,0,0,114,1,0,0,0,114,9,0, - 0,0,114,35,0,0,0,114,44,0,0,0,114,45,0,0, - 0,114,54,0,0,0,114,23,0,0,0,114,5,0,0,0, - 114,56,0,0,0,142,0,0,0,115,12,0,0,0,8,0, - 4,1,8,3,8,4,8,4,12,5,114,17,0,0,0,114, - 56,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,64,0,0,0,115,36,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, - 83,0,41,8,218,18,95,77,111,100,117,108,101,76,111,99, - 107,77,97,110,97,103,101,114,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,67,0,0,0,115,16,0, - 0,0,124,1,124,0,95,0,100,0,124,0,95,1,100,0, - 83,0,114,0,0,0,0,41,2,218,5,95,110,97,109,101, - 218,5,95,108,111,99,107,114,33,0,0,0,32,32,114,5, + 95,78,41,8,114,8,0,0,0,114,7,0,0,0,114,1, + 0,0,0,114,9,0,0,0,114,35,0,0,0,114,44,0, + 0,0,114,45,0,0,0,114,54,0,0,0,114,23,0,0, + 0,114,17,0,0,0,114,5,0,0,0,114,56,0,0,0, + 142,0,0,0,115,12,0,0,0,8,0,4,1,8,3,8, + 4,8,4,12,5,114,17,0,0,0,114,56,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 64,0,0,0,115,36,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,83,0,41,8,218, + 18,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, + 103,101,114,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,67,0,0,0,115,16,0,0,0,124,1,124, + 0,95,0,100,0,124,0,95,1,100,0,83,0,114,0,0, + 0,0,41,2,218,5,95,110,97,109,101,218,5,95,108,111, + 99,107,114,33,0,0,0,115,2,0,0,0,32,32,114,5, 0,0,0,114,35,0,0,0,165,0,0,0,114,57,0,0, 0,114,17,0,0,0,122,27,95,77,111,100,117,108,101,76, 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, @@ -295,403 +300,408 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,1,0,100,0,83,0,114,0,0,0,0,41,4,218,16, 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, 114,59,0,0,0,114,60,0,0,0,114,44,0,0,0,114, - 53,0,0,0,32,114,5,0,0,0,218,9,95,95,101,110, - 116,101,114,95,95,169,0,0,0,115,4,0,0,0,12,1, - 14,1,114,17,0,0,0,122,28,95,77,111,100,117,108,101, - 76,111,99,107,77,97,110,97,103,101,114,46,95,95,101,110, - 116,101,114,95,95,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,79,0,0,0,115,14,0,0,0,124, - 0,106,0,160,1,161,0,1,0,100,0,83,0,114,0,0, - 0,0,41,2,114,60,0,0,0,114,45,0,0,0,41,3, - 114,34,0,0,0,218,4,97,114,103,115,90,6,107,119,97, - 114,103,115,32,32,32,114,5,0,0,0,218,8,95,95,101, - 120,105,116,95,95,173,0,0,0,115,2,0,0,0,14,1, - 114,17,0,0,0,122,27,95,77,111,100,117,108,101,76,111, - 99,107,77,97,110,97,103,101,114,46,95,95,101,120,105,116, - 95,95,78,41,6,114,8,0,0,0,114,7,0,0,0,114, - 1,0,0,0,114,35,0,0,0,114,62,0,0,0,114,64, - 0,0,0,114,23,0,0,0,114,5,0,0,0,114,58,0, - 0,0,163,0,0,0,115,8,0,0,0,8,0,8,2,8, - 4,12,4,114,17,0,0,0,114,58,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,138,0,0,0,116,0,160,1,161,0,1,0,9, - 0,9,0,116,2,124,0,25,0,131,0,125,1,110,12,35, - 0,4,0,116,3,121,68,1,0,1,0,1,0,100,1,125, - 1,89,0,110,1,37,0,124,1,100,1,117,0,114,55,116, - 4,100,1,117,0,114,37,116,5,124,0,131,1,125,1,110, - 4,116,6,124,0,131,1,125,1,124,0,102,1,100,2,100, - 3,132,1,125,2,116,7,160,8,124,1,124,2,161,2,116, - 2,124,0,60,0,116,0,160,9,161,0,1,0,124,1,83, - 0,35,0,116,0,160,9,161,0,1,0,119,0,37,0,119, - 0,41,4,122,139,71,101,116,32,111,114,32,99,114,101,97, - 116,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, - 99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,109, - 111,100,117,108,101,32,110,97,109,101,46,10,10,32,32,32, - 32,65,99,113,117,105,114,101,47,114,101,108,101,97,115,101, - 32,105,110,116,101,114,110,97,108,108,121,32,116,104,101,32, - 103,108,111,98,97,108,32,105,109,112,111,114,116,32,108,111, - 99,107,32,116,111,32,112,114,111,116,101,99,116,10,32,32, - 32,32,95,109,111,100,117,108,101,95,108,111,99,107,115,46, - 78,99,2,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,83,0,0,0,115,56,0,0,0,116,0,160,1,161, - 0,1,0,9,0,116,2,160,3,124,1,161,1,124,0,117, - 0,114,15,116,2,124,1,61,0,116,0,160,4,161,0,1, - 0,100,0,83,0,35,0,116,0,160,4,161,0,1,0,119, - 0,37,0,114,0,0,0,0,41,5,218,4,95,105,109,112, - 218,12,97,99,113,117,105,114,101,95,108,111,99,107,218,13, - 95,109,111,100,117,108,101,95,108,111,99,107,115,114,39,0, - 0,0,218,12,114,101,108,101,97,115,101,95,108,111,99,107, - 41,2,218,3,114,101,102,114,20,0,0,0,32,32,114,5, - 0,0,0,218,2,99,98,198,0,0,0,115,16,0,0,0, - 8,1,2,1,14,4,6,1,12,2,2,128,10,0,2,128, - 115,8,0,0,0,133,10,21,0,149,6,27,7,122,28,95, - 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,46, - 60,108,111,99,97,108,115,62,46,99,98,41,10,114,65,0, - 0,0,114,66,0,0,0,114,67,0,0,0,218,8,75,101, - 121,69,114,114,111,114,114,27,0,0,0,114,56,0,0,0, - 114,24,0,0,0,218,8,95,119,101,97,107,114,101,102,114, - 69,0,0,0,114,68,0,0,0,41,3,114,20,0,0,0, - 114,28,0,0,0,114,70,0,0,0,32,32,32,114,5,0, - 0,0,114,61,0,0,0,179,0,0,0,115,40,0,0,0, - 8,6,2,1,2,1,12,1,2,128,12,1,8,1,2,128, - 8,2,8,1,10,1,8,2,12,2,16,11,8,2,4,2, - 2,128,10,254,2,128,2,234,115,26,0,0,0,134,5,12, - 0,139,1,61,0,140,9,23,7,149,34,61,0,189,6,65, - 3,7,193,4,1,23,7,114,61,0,0,0,99,1,0,0, + 53,0,0,0,115,1,0,0,0,32,114,5,0,0,0,218, + 9,95,95,101,110,116,101,114,95,95,169,0,0,0,115,4, + 0,0,0,12,1,14,1,114,17,0,0,0,122,28,95,77, + 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, + 46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,79,0,0,0,115, + 14,0,0,0,124,0,106,0,160,1,161,0,1,0,100,0, + 83,0,114,0,0,0,0,41,2,114,60,0,0,0,114,45, + 0,0,0,41,3,114,34,0,0,0,218,4,97,114,103,115, + 90,6,107,119,97,114,103,115,115,3,0,0,0,32,32,32, + 114,5,0,0,0,218,8,95,95,101,120,105,116,95,95,173, + 0,0,0,115,2,0,0,0,14,1,114,17,0,0,0,122, + 27,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, + 103,101,114,46,95,95,101,120,105,116,95,95,78,41,6,114, + 8,0,0,0,114,7,0,0,0,114,1,0,0,0,114,35, + 0,0,0,114,62,0,0,0,114,64,0,0,0,114,23,0, + 0,0,114,17,0,0,0,114,5,0,0,0,114,58,0,0, + 0,163,0,0,0,115,8,0,0,0,8,0,8,2,8,4, + 12,4,114,17,0,0,0,114,58,0,0,0,99,1,0,0, 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, - 0,115,56,0,0,0,116,0,124,0,131,1,125,1,9,0, - 124,1,160,1,161,0,1,0,110,11,35,0,4,0,116,2, - 121,27,1,0,1,0,1,0,89,0,100,1,83,0,37,0, - 124,1,160,3,161,0,1,0,100,1,83,0,119,0,41,2, - 122,189,65,99,113,117,105,114,101,115,32,116,104,101,110,32, - 114,101,108,101,97,115,101,115,32,116,104,101,32,109,111,100, - 117,108,101,32,108,111,99,107,32,102,111,114,32,97,32,103, - 105,118,101,110,32,109,111,100,117,108,101,32,110,97,109,101, - 46,10,10,32,32,32,32,84,104,105,115,32,105,115,32,117, - 115,101,100,32,116,111,32,101,110,115,117,114,101,32,97,32, - 109,111,100,117,108,101,32,105,115,32,99,111,109,112,108,101, - 116,101,108,121,32,105,110,105,116,105,97,108,105,122,101,100, - 44,32,105,110,32,116,104,101,10,32,32,32,32,101,118,101, - 110,116,32,105,116,32,105,115,32,98,101,105,110,103,32,105, - 109,112,111,114,116,101,100,32,98,121,32,97,110,111,116,104, - 101,114,32,116,104,114,101,97,100,46,10,32,32,32,32,78, - 41,4,114,61,0,0,0,114,44,0,0,0,114,22,0,0, - 0,114,45,0,0,0,41,2,114,20,0,0,0,114,28,0, - 0,0,32,32,114,5,0,0,0,218,19,95,108,111,99,107, - 95,117,110,108,111,99,107,95,109,111,100,117,108,101,216,0, - 0,0,115,18,0,0,0,8,6,2,1,10,1,2,128,12, - 1,6,3,2,128,12,2,2,251,115,12,0,0,0,133,4, - 10,0,138,7,20,7,155,1,20,7,114,73,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 79,0,0,0,115,14,0,0,0,124,0,124,1,105,0,124, - 2,164,1,142,1,83,0,41,2,97,46,1,0,0,114,101, - 109,111,118,101,95,105,109,112,111,114,116,108,105,98,95,102, - 114,97,109,101,115,32,105,110,32,105,109,112,111,114,116,46, - 99,32,119,105,108,108,32,97,108,119,97,121,115,32,114,101, - 109,111,118,101,32,115,101,113,117,101,110,99,101,115,10,32, - 32,32,32,111,102,32,105,109,112,111,114,116,108,105,98,32, - 102,114,97,109,101,115,32,116,104,97,116,32,101,110,100,32, - 119,105,116,104,32,97,32,99,97,108,108,32,116,111,32,116, - 104,105,115,32,102,117,110,99,116,105,111,110,10,10,32,32, - 32,32,85,115,101,32,105,116,32,105,110,115,116,101,97,100, - 32,111,102,32,97,32,110,111,114,109,97,108,32,99,97,108, - 108,32,105,110,32,112,108,97,99,101,115,32,119,104,101,114, - 101,32,105,110,99,108,117,100,105,110,103,32,116,104,101,32, - 105,109,112,111,114,116,108,105,98,10,32,32,32,32,102,114, - 97,109,101,115,32,105,110,116,114,111,100,117,99,101,115,32, - 117,110,119,97,110,116,101,100,32,110,111,105,115,101,32,105, - 110,116,111,32,116,104,101,32,116,114,97,99,101,98,97,99, - 107,32,40,101,46,103,46,32,119,104,101,110,32,101,120,101, - 99,117,116,105,110,103,10,32,32,32,32,109,111,100,117,108, - 101,32,99,111,100,101,41,10,32,32,32,32,78,114,23,0, - 0,0,41,3,218,1,102,114,63,0,0,0,90,4,107,119, - 100,115,32,32,32,114,5,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,233,0,0,0,115,2,0,0,0,14,8, - 114,17,0,0,0,114,75,0,0,0,114,43,0,0,0,41, - 1,218,9,118,101,114,98,111,115,105,116,121,99,1,0,0, - 0,0,0,0,0,1,0,0,0,4,0,0,0,71,0,0, - 0,115,58,0,0,0,116,0,106,1,106,2,124,1,107,5, - 114,27,124,0,160,3,100,1,161,1,115,15,100,2,124,0, - 23,0,125,0,116,4,124,0,106,5,124,2,142,0,116,0, - 106,6,100,3,141,2,1,0,100,4,83,0,100,4,83,0, - 41,5,122,61,80,114,105,110,116,32,116,104,101,32,109,101, - 115,115,97,103,101,32,116,111,32,115,116,100,101,114,114,32, - 105,102,32,45,118,47,80,89,84,72,79,78,86,69,82,66, - 79,83,69,32,105,115,32,116,117,114,110,101,100,32,111,110, - 46,41,2,250,1,35,122,7,105,109,112,111,114,116,32,122, - 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,18, - 0,0,0,218,5,102,108,97,103,115,218,7,118,101,114,98, - 111,115,101,218,10,115,116,97,114,116,115,119,105,116,104,218, - 5,112,114,105,110,116,114,51,0,0,0,218,6,115,116,100, - 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,76, - 0,0,0,114,63,0,0,0,32,32,32,114,5,0,0,0, - 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, - 103,101,244,0,0,0,115,10,0,0,0,12,2,10,1,8, - 1,24,1,4,253,114,17,0,0,0,114,84,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,243,28,0,0,0,135,0,136,0,102,1,100, - 1,100,2,132,8,125,1,116,0,124,1,137,0,131,2,1, - 0,124,1,83,0,41,4,122,49,68,101,99,111,114,97,116, - 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, - 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, - 32,98,117,105,108,116,45,105,110,46,99,2,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,19,0,0,0,115, - 38,0,0,0,124,1,116,0,106,1,118,1,114,14,116,2, - 100,1,160,3,124,1,161,1,124,1,100,2,141,2,130,1, - 137,2,124,0,124,1,131,2,83,0,41,3,78,250,29,123, - 33,114,125,32,105,115,32,110,111,116,32,97,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,114,19,0,0, - 0,41,4,114,18,0,0,0,218,20,98,117,105,108,116,105, - 110,95,109,111,100,117,108,101,95,110,97,109,101,115,218,11, - 73,109,112,111,114,116,69,114,114,111,114,114,51,0,0,0, - 169,3,114,34,0,0,0,218,8,102,117,108,108,110,97,109, - 101,218,3,102,120,110,32,32,128,114,5,0,0,0,218,25, + 0,115,138,0,0,0,116,0,160,1,161,0,1,0,9,0, + 9,0,116,2,124,0,25,0,131,0,125,1,110,12,35,0, + 4,0,116,3,121,68,1,0,1,0,1,0,100,1,125,1, + 89,0,110,1,37,0,124,1,100,1,117,0,114,55,116,4, + 100,1,117,0,114,37,116,5,124,0,131,1,125,1,110,4, + 116,6,124,0,131,1,125,1,124,0,102,1,100,2,100,3, + 132,1,125,2,116,7,160,8,124,1,124,2,161,2,116,2, + 124,0,60,0,116,0,160,9,161,0,1,0,124,1,83,0, + 35,0,116,0,160,9,161,0,1,0,119,0,37,0,119,0, + 41,4,122,139,71,101,116,32,111,114,32,99,114,101,97,116, + 101,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99, + 107,32,102,111,114,32,97,32,103,105,118,101,110,32,109,111, + 100,117,108,101,32,110,97,109,101,46,10,10,32,32,32,32, + 65,99,113,117,105,114,101,47,114,101,108,101,97,115,101,32, + 105,110,116,101,114,110,97,108,108,121,32,116,104,101,32,103, + 108,111,98,97,108,32,105,109,112,111,114,116,32,108,111,99, + 107,32,116,111,32,112,114,111,116,101,99,116,10,32,32,32, + 32,95,109,111,100,117,108,101,95,108,111,99,107,115,46,78, + 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,83,0,0,0,115,56,0,0,0,116,0,160,1,161,0, + 1,0,9,0,116,2,160,3,124,1,161,1,124,0,117,0, + 114,15,116,2,124,1,61,0,116,0,160,4,161,0,1,0, + 100,0,83,0,35,0,116,0,160,4,161,0,1,0,119,0, + 37,0,114,0,0,0,0,41,5,218,4,95,105,109,112,218, + 12,97,99,113,117,105,114,101,95,108,111,99,107,218,13,95, + 109,111,100,117,108,101,95,108,111,99,107,115,114,39,0,0, + 0,218,12,114,101,108,101,97,115,101,95,108,111,99,107,41, + 2,218,3,114,101,102,114,20,0,0,0,115,2,0,0,0, + 32,32,114,5,0,0,0,218,2,99,98,198,0,0,0,115, + 16,0,0,0,8,1,2,1,14,4,6,1,12,2,2,128, + 10,0,2,128,115,8,0,0,0,133,10,21,0,149,6,27, + 7,122,28,95,103,101,116,95,109,111,100,117,108,101,95,108, + 111,99,107,46,60,108,111,99,97,108,115,62,46,99,98,41, + 10,114,65,0,0,0,114,66,0,0,0,114,67,0,0,0, + 218,8,75,101,121,69,114,114,111,114,114,27,0,0,0,114, + 56,0,0,0,114,24,0,0,0,218,8,95,119,101,97,107, + 114,101,102,114,69,0,0,0,114,68,0,0,0,41,3,114, + 20,0,0,0,114,28,0,0,0,114,70,0,0,0,115,3, + 0,0,0,32,32,32,114,5,0,0,0,114,61,0,0,0, + 179,0,0,0,115,40,0,0,0,8,6,2,1,2,1,12, + 1,2,128,12,1,8,1,2,128,8,2,8,1,10,1,8, + 2,12,2,16,11,8,2,4,2,2,128,10,254,2,128,2, + 234,115,26,0,0,0,134,5,12,0,139,1,61,0,140,9, + 23,7,149,34,61,0,189,6,65,3,7,193,4,1,23,7, + 114,61,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,67,0,0,0,115,56,0,0,0,116, + 0,124,0,131,1,125,1,9,0,124,1,160,1,161,0,1, + 0,110,11,35,0,4,0,116,2,121,27,1,0,1,0,1, + 0,89,0,100,1,83,0,37,0,124,1,160,3,161,0,1, + 0,100,1,83,0,119,0,41,2,122,189,65,99,113,117,105, + 114,101,115,32,116,104,101,110,32,114,101,108,101,97,115,101, + 115,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99, + 107,32,102,111,114,32,97,32,103,105,118,101,110,32,109,111, + 100,117,108,101,32,110,97,109,101,46,10,10,32,32,32,32, + 84,104,105,115,32,105,115,32,117,115,101,100,32,116,111,32, + 101,110,115,117,114,101,32,97,32,109,111,100,117,108,101,32, + 105,115,32,99,111,109,112,108,101,116,101,108,121,32,105,110, + 105,116,105,97,108,105,122,101,100,44,32,105,110,32,116,104, + 101,10,32,32,32,32,101,118,101,110,116,32,105,116,32,105, + 115,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, + 32,98,121,32,97,110,111,116,104,101,114,32,116,104,114,101, + 97,100,46,10,32,32,32,32,78,41,4,114,61,0,0,0, + 114,44,0,0,0,114,22,0,0,0,114,45,0,0,0,41, + 2,114,20,0,0,0,114,28,0,0,0,115,2,0,0,0, + 32,32,114,5,0,0,0,218,19,95,108,111,99,107,95,117, + 110,108,111,99,107,95,109,111,100,117,108,101,216,0,0,0, + 115,18,0,0,0,8,6,2,1,10,1,2,128,12,1,6, + 3,2,128,12,2,2,251,115,12,0,0,0,133,4,10,0, + 138,7,20,7,155,1,20,7,114,73,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,79,0, + 0,0,115,14,0,0,0,124,0,124,1,105,0,124,2,164, + 1,142,1,83,0,41,2,97,46,1,0,0,114,101,109,111, + 118,101,95,105,109,112,111,114,116,108,105,98,95,102,114,97, + 109,101,115,32,105,110,32,105,109,112,111,114,116,46,99,32, + 119,105,108,108,32,97,108,119,97,121,115,32,114,101,109,111, + 118,101,32,115,101,113,117,101,110,99,101,115,10,32,32,32, + 32,111,102,32,105,109,112,111,114,116,108,105,98,32,102,114, + 97,109,101,115,32,116,104,97,116,32,101,110,100,32,119,105, + 116,104,32,97,32,99,97,108,108,32,116,111,32,116,104,105, + 115,32,102,117,110,99,116,105,111,110,10,10,32,32,32,32, + 85,115,101,32,105,116,32,105,110,115,116,101,97,100,32,111, + 102,32,97,32,110,111,114,109,97,108,32,99,97,108,108,32, + 105,110,32,112,108,97,99,101,115,32,119,104,101,114,101,32, + 105,110,99,108,117,100,105,110,103,32,116,104,101,32,105,109, + 112,111,114,116,108,105,98,10,32,32,32,32,102,114,97,109, + 101,115,32,105,110,116,114,111,100,117,99,101,115,32,117,110, + 119,97,110,116,101,100,32,110,111,105,115,101,32,105,110,116, + 111,32,116,104,101,32,116,114,97,99,101,98,97,99,107,32, + 40,101,46,103,46,32,119,104,101,110,32,101,120,101,99,117, + 116,105,110,103,10,32,32,32,32,109,111,100,117,108,101,32, + 99,111,100,101,41,10,32,32,32,32,78,114,23,0,0,0, + 41,3,218,1,102,114,63,0,0,0,90,4,107,119,100,115, + 115,3,0,0,0,32,32,32,114,5,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,233,0,0,0,115,2,0,0, + 0,14,8,114,17,0,0,0,114,75,0,0,0,114,43,0, + 0,0,41,1,218,9,118,101,114,98,111,115,105,116,121,99, + 1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, + 71,0,0,0,115,58,0,0,0,116,0,106,1,106,2,124, + 1,107,5,114,27,124,0,160,3,100,1,161,1,115,15,100, + 2,124,0,23,0,125,0,116,4,124,0,106,5,124,2,142, + 0,116,0,106,6,100,3,141,2,1,0,100,4,83,0,100, + 4,83,0,41,5,122,61,80,114,105,110,116,32,116,104,101, + 32,109,101,115,115,97,103,101,32,116,111,32,115,116,100,101, + 114,114,32,105,102,32,45,118,47,80,89,84,72,79,78,86, + 69,82,66,79,83,69,32,105,115,32,116,117,114,110,101,100, + 32,111,110,46,41,2,250,1,35,122,7,105,109,112,111,114, + 116,32,122,2,35,32,41,1,90,4,102,105,108,101,78,41, + 7,114,18,0,0,0,218,5,102,108,97,103,115,218,7,118, + 101,114,98,111,115,101,218,10,115,116,97,114,116,115,119,105, + 116,104,218,5,112,114,105,110,116,114,51,0,0,0,218,6, + 115,116,100,101,114,114,41,3,218,7,109,101,115,115,97,103, + 101,114,76,0,0,0,114,63,0,0,0,115,3,0,0,0, + 32,32,32,114,5,0,0,0,218,16,95,118,101,114,98,111, + 115,101,95,109,101,115,115,97,103,101,244,0,0,0,115,10, + 0,0,0,12,2,10,1,8,1,24,1,4,253,114,17,0, + 0,0,114,84,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,243,28,0,0, + 0,135,0,136,0,102,1,100,1,100,2,132,8,125,1,116, + 0,124,1,137,0,131,2,1,0,124,1,83,0,41,4,122, + 49,68,101,99,111,114,97,116,111,114,32,116,111,32,118,101, + 114,105,102,121,32,116,104,101,32,110,97,109,101,100,32,109, + 111,100,117,108,101,32,105,115,32,98,117,105,108,116,45,105, + 110,46,99,2,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,19,0,0,0,115,38,0,0,0,124,1,116,0, + 106,1,118,1,114,14,116,2,100,1,160,3,124,1,161,1, + 124,1,100,2,141,2,130,1,137,2,124,0,124,1,131,2, + 83,0,41,3,78,250,29,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,114,19,0,0,0,41,4,114,18,0,0,0, + 218,20,98,117,105,108,116,105,110,95,109,111,100,117,108,101, + 95,110,97,109,101,115,218,11,73,109,112,111,114,116,69,114, + 114,111,114,114,51,0,0,0,169,3,114,34,0,0,0,218, + 8,102,117,108,108,110,97,109,101,218,3,102,120,110,115,3, + 0,0,0,32,32,128,114,5,0,0,0,218,25,95,114,101, + 113,117,105,114,101,115,95,98,117,105,108,116,105,110,95,119, + 114,97,112,112,101,114,254,0,0,0,243,10,0,0,0,10, + 1,10,1,2,1,6,255,10,2,114,17,0,0,0,122,52, 95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,105, - 110,95,119,114,97,112,112,101,114,254,0,0,0,243,10,0, - 0,0,10,1,10,1,2,1,6,255,10,2,114,17,0,0, - 0,122,52,95,114,101,113,117,105,114,101,115,95,98,117,105, - 108,116,105,110,46,60,108,111,99,97,108,115,62,46,95,114, - 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,95, - 119,114,97,112,112,101,114,78,169,1,114,16,0,0,0,41, - 2,114,91,0,0,0,114,92,0,0,0,96,32,114,5,0, - 0,0,218,17,95,114,101,113,117,105,114,101,115,95,98,117, - 105,108,116,105,110,252,0,0,0,243,8,0,0,0,2,128, - 12,2,10,5,4,1,114,17,0,0,0,114,95,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,114,85,0,0,0,41,4,122,47,68,101, - 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, - 121,32,116,104,101,32,110,97,109,101,100,32,109,111,100,117, - 108,101,32,105,115,32,102,114,111,122,101,110,46,99,2,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,19,0, - 0,0,115,38,0,0,0,116,0,160,1,124,1,161,1,115, - 14,116,2,100,1,160,3,124,1,161,1,124,1,100,2,141, - 2,130,1,137,2,124,0,124,1,131,2,83,0,169,3,78, - 122,27,123,33,114,125,32,105,115,32,110,111,116,32,97,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,114,19,0, - 0,0,41,4,114,65,0,0,0,218,9,105,115,95,102,114, - 111,122,101,110,114,88,0,0,0,114,51,0,0,0,114,89, - 0,0,0,32,32,128,114,5,0,0,0,218,24,95,114,101, - 113,117,105,114,101,115,95,102,114,111,122,101,110,95,119,114, - 97,112,112,101,114,9,1,0,0,114,93,0,0,0,114,17, - 0,0,0,122,50,95,114,101,113,117,105,114,101,115,95,102, - 114,111,122,101,110,46,60,108,111,99,97,108,115,62,46,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, - 119,114,97,112,112,101,114,78,114,94,0,0,0,41,2,114, - 91,0,0,0,114,99,0,0,0,96,32,114,5,0,0,0, - 218,16,95,114,101,113,117,105,114,101,115,95,102,114,111,122, - 101,110,7,1,0,0,114,96,0,0,0,114,17,0,0,0, - 114,100,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,67,0,0,0,115,74,0,0,0,100, - 1,125,2,116,0,160,1,124,2,116,2,161,2,1,0,116, - 3,124,1,124,0,131,2,125,3,124,1,116,4,106,5,118, - 0,114,33,116,4,106,5,124,1,25,0,125,4,116,6,124, - 3,124,4,131,2,1,0,116,4,106,5,124,1,25,0,83, - 0,116,7,124,3,131,1,83,0,41,3,122,130,76,111,97, - 100,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, - 109,111,100,117,108,101,32,105,110,116,111,32,115,121,115,46, - 109,111,100,117,108,101,115,32,97,110,100,32,114,101,116,117, - 114,110,32,105,116,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,46,32,32,85,115,101,32,108,111,97,100, - 101,114,46,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,122, - 103,116,104,101,32,108,111,97,100,95,109,111,100,117,108,101, - 40,41,32,109,101,116,104,111,100,32,105,115,32,100,101,112, - 114,101,99,97,116,101,100,32,97,110,100,32,115,108,97,116, - 101,100,32,102,111,114,32,114,101,109,111,118,97,108,32,105, - 110,32,80,121,116,104,111,110,32,51,46,49,50,59,32,117, - 115,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,105,110,115,116,101,97,100,78,41,8,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,16,115,112,101,99,95,102,114,111,109,95,108,111,97,100, - 101,114,114,18,0,0,0,218,7,109,111,100,117,108,101,115, - 218,5,95,101,120,101,99,218,5,95,108,111,97,100,41,5, - 114,34,0,0,0,114,90,0,0,0,218,3,109,115,103,218, - 4,115,112,101,99,218,6,109,111,100,117,108,101,32,32,32, - 32,32,114,5,0,0,0,218,17,95,108,111,97,100,95,109, - 111,100,117,108,101,95,115,104,105,109,19,1,0,0,115,16, - 0,0,0,4,6,12,2,10,1,10,1,10,1,10,1,10, - 1,8,2,114,17,0,0,0,114,111,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,194,0,0,0,116,0,124,0,100,1,100,2,131, - 3,125,1,116,0,124,0,100,3,100,2,131,3,4,0,125, - 2,114,18,116,1,124,2,131,1,83,0,116,2,124,1,100, - 4,131,2,114,39,9,0,124,1,160,3,124,0,161,1,83, - 0,35,0,4,0,116,4,121,96,1,0,1,0,1,0,89, - 0,110,1,37,0,9,0,124,0,106,5,125,3,110,12,35, - 0,4,0,116,6,121,95,1,0,1,0,1,0,100,5,125, - 3,89,0,110,1,37,0,9,0,124,0,106,7,125,4,110, - 27,35,0,4,0,116,6,121,94,1,0,1,0,1,0,124, - 1,100,2,117,0,114,79,100,6,160,8,124,3,161,1,6, - 0,89,0,83,0,100,7,160,8,124,3,124,1,161,2,6, - 0,89,0,83,0,37,0,100,8,160,8,124,3,124,4,161, - 2,83,0,119,0,119,0,119,0,41,9,122,44,84,104,101, - 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32, - 111,102,32,77,111,100,117,108,101,84,121,112,101,46,95,95, - 114,101,112,114,95,95,40,41,46,218,10,95,95,108,111,97, - 100,101,114,95,95,78,218,8,95,95,115,112,101,99,95,95, - 218,11,109,111,100,117,108,101,95,114,101,112,114,250,1,63, - 250,13,60,109,111,100,117,108,101,32,123,33,114,125,62,250, - 20,60,109,111,100,117,108,101,32,123,33,114,125,32,40,123, - 33,114,125,41,62,250,23,60,109,111,100,117,108,101,32,123, - 33,114,125,32,102,114,111,109,32,123,33,114,125,62,41,9, - 114,12,0,0,0,218,22,95,109,111,100,117,108,101,95,114, - 101,112,114,95,102,114,111,109,95,115,112,101,99,114,10,0, - 0,0,114,114,0,0,0,218,9,69,120,99,101,112,116,105, - 111,110,114,8,0,0,0,114,2,0,0,0,218,8,95,95, - 102,105,108,101,95,95,114,51,0,0,0,41,5,114,110,0, - 0,0,218,6,108,111,97,100,101,114,114,109,0,0,0,114, - 20,0,0,0,218,8,102,105,108,101,110,97,109,101,32,32, - 32,32,32,114,5,0,0,0,218,12,95,109,111,100,117,108, - 101,95,114,101,112,114,38,1,0,0,115,56,0,0,0,12, - 2,16,1,8,1,10,1,2,1,10,1,2,128,12,1,4, - 1,2,128,2,2,8,1,2,128,12,1,8,1,2,128,2, - 1,8,1,2,128,12,1,8,1,14,1,16,2,2,128,12, - 2,2,250,2,252,2,251,115,47,0,0,0,152,4,29,0, - 157,7,38,7,168,3,44,0,172,9,55,7,185,3,61,0, - 189,16,65,23,7,193,15,6,65,23,7,193,30,1,65,23, - 7,193,31,1,55,7,193,32,1,38,7,114,124,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,64,0,0,0,115,114,0,0,0,101,0,90,1,100,0, - 90,2,100,1,90,3,100,2,100,2,100,2,100,3,156,3, - 100,4,100,5,132,2,90,4,100,6,100,7,132,0,90,5, - 100,8,100,9,132,0,90,6,101,7,100,10,100,11,132,0, - 131,1,90,8,101,8,106,9,100,12,100,11,132,0,131,1, - 90,8,101,7,100,13,100,14,132,0,131,1,90,10,101,7, - 100,15,100,16,132,0,131,1,90,11,101,11,106,9,100,17, - 100,16,132,0,131,1,90,11,100,2,83,0,41,18,218,10, - 77,111,100,117,108,101,83,112,101,99,97,208,5,0,0,84, - 104,101,32,115,112,101,99,105,102,105,99,97,116,105,111,110, - 32,102,111,114,32,97,32,109,111,100,117,108,101,44,32,117, - 115,101,100,32,102,111,114,32,108,111,97,100,105,110,103,46, - 10,10,32,32,32,32,65,32,109,111,100,117,108,101,39,115, - 32,115,112,101,99,32,105,115,32,116,104,101,32,115,111,117, - 114,99,101,32,102,111,114,32,105,110,102,111,114,109,97,116, - 105,111,110,32,97,98,111,117,116,32,116,104,101,32,109,111, - 100,117,108,101,46,32,32,70,111,114,10,32,32,32,32,100, - 97,116,97,32,97,115,115,111,99,105,97,116,101,100,32,119, - 105,116,104,32,116,104,101,32,109,111,100,117,108,101,44,32, - 105,110,99,108,117,100,105,110,103,32,115,111,117,114,99,101, - 44,32,117,115,101,32,116,104,101,32,115,112,101,99,39,115, - 10,32,32,32,32,108,111,97,100,101,114,46,10,10,32,32, - 32,32,96,110,97,109,101,96,32,105,115,32,116,104,101,32, - 97,98,115,111,108,117,116,101,32,110,97,109,101,32,111,102, - 32,116,104,101,32,109,111,100,117,108,101,46,32,32,96,108, - 111,97,100,101,114,96,32,105,115,32,116,104,101,32,108,111, - 97,100,101,114,10,32,32,32,32,116,111,32,117,115,101,32, - 119,104,101,110,32,108,111,97,100,105,110,103,32,116,104,101, - 32,109,111,100,117,108,101,46,32,32,96,112,97,114,101,110, - 116,96,32,105,115,32,116,104,101,32,110,97,109,101,32,111, - 102,32,116,104,101,10,32,32,32,32,112,97,99,107,97,103, - 101,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, - 105,110,46,32,32,84,104,101,32,112,97,114,101,110,116,32, - 105,115,32,100,101,114,105,118,101,100,32,102,114,111,109,32, - 116,104,101,32,110,97,109,101,46,10,10,32,32,32,32,96, - 105,115,95,112,97,99,107,97,103,101,96,32,100,101,116,101, - 114,109,105,110,101,115,32,105,102,32,116,104,101,32,109,111, - 100,117,108,101,32,105,115,32,99,111,110,115,105,100,101,114, - 101,100,32,97,32,112,97,99,107,97,103,101,32,111,114,10, - 32,32,32,32,110,111,116,46,32,32,79,110,32,109,111,100, - 117,108,101,115,32,116,104,105,115,32,105,115,32,114,101,102, - 108,101,99,116,101,100,32,98,121,32,116,104,101,32,96,95, - 95,112,97,116,104,95,95,96,32,97,116,116,114,105,98,117, - 116,101,46,10,10,32,32,32,32,96,111,114,105,103,105,110, - 96,32,105,115,32,116,104,101,32,115,112,101,99,105,102,105, - 99,32,108,111,99,97,116,105,111,110,32,117,115,101,100,32, - 98,121,32,116,104,101,32,108,111,97,100,101,114,32,102,114, - 111,109,32,119,104,105,99,104,32,116,111,10,32,32,32,32, - 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,44, - 32,105,102,32,116,104,97,116,32,105,110,102,111,114,109,97, - 116,105,111,110,32,105,115,32,97,118,97,105,108,97,98,108, - 101,46,32,32,87,104,101,110,32,102,105,108,101,110,97,109, - 101,32,105,115,10,32,32,32,32,115,101,116,44,32,111,114, - 105,103,105,110,32,119,105,108,108,32,109,97,116,99,104,46, - 10,10,32,32,32,32,96,104,97,115,95,108,111,99,97,116, - 105,111,110,96,32,105,110,100,105,99,97,116,101,115,32,116, - 104,97,116,32,97,32,115,112,101,99,39,115,32,34,111,114, - 105,103,105,110,34,32,114,101,102,108,101,99,116,115,32,97, - 32,108,111,99,97,116,105,111,110,46,10,32,32,32,32,87, - 104,101,110,32,116,104,105,115,32,105,115,32,84,114,117,101, - 44,32,96,95,95,102,105,108,101,95,95,96,32,97,116,116, - 114,105,98,117,116,101,32,111,102,32,116,104,101,32,109,111, - 100,117,108,101,32,105,115,32,115,101,116,46,10,10,32,32, - 32,32,96,99,97,99,104,101,100,96,32,105,115,32,116,104, - 101,32,108,111,99,97,116,105,111,110,32,111,102,32,116,104, - 101,32,99,97,99,104,101,100,32,98,121,116,101,99,111,100, - 101,32,102,105,108,101,44,32,105,102,32,97,110,121,46,32, - 32,73,116,10,32,32,32,32,99,111,114,114,101,115,112,111, - 110,100,115,32,116,111,32,116,104,101,32,96,95,95,99,97, - 99,104,101,100,95,95,96,32,97,116,116,114,105,98,117,116, - 101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101,113,117, - 101,110,99,101,32,111,102,32,112,97,116,104,32,101,110,116, - 114,105,101,115,32,116,111,10,32,32,32,32,115,101,97,114, - 99,104,32,119,104,101,110,32,105,109,112,111,114,116,105,110, - 103,32,115,117,98,109,111,100,117,108,101,115,46,32,32,73, - 102,32,115,101,116,44,32,105,115,95,112,97,99,107,97,103, - 101,32,115,104,111,117,108,100,32,98,101,10,32,32,32,32, - 84,114,117,101,45,45,97,110,100,32,70,97,108,115,101,32, - 111,116,104,101,114,119,105,115,101,46,10,10,32,32,32,32, - 80,97,99,107,97,103,101,115,32,97,114,101,32,115,105,109, - 112,108,121,32,109,111,100,117,108,101,115,32,116,104,97,116, - 32,40,109,97,121,41,32,104,97,118,101,32,115,117,98,109, - 111,100,117,108,101,115,46,32,32,73,102,32,97,32,115,112, - 101,99,10,32,32,32,32,104,97,115,32,97,32,110,111,110, - 45,78,111,110,101,32,118,97,108,117,101,32,105,110,32,96, - 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,96,44,32,116,104,101, - 32,105,109,112,111,114,116,10,32,32,32,32,115,121,115,116, - 101,109,32,119,105,108,108,32,99,111,110,115,105,100,101,114, - 32,109,111,100,117,108,101,115,32,108,111,97,100,101,100,32, - 102,114,111,109,32,116,104,101,32,115,112,101,99,32,97,115, - 32,112,97,99,107,97,103,101,115,46,10,10,32,32,32,32, - 79,110,108,121,32,102,105,110,100,101,114,115,32,40,115,101, - 101,32,105,109,112,111,114,116,108,105,98,46,97,98,99,46, - 77,101,116,97,80,97,116,104,70,105,110,100,101,114,32,97, - 110,100,10,32,32,32,32,105,109,112,111,114,116,108,105,98, - 46,97,98,99,46,80,97,116,104,69,110,116,114,121,70,105, - 110,100,101,114,41,32,115,104,111,117,108,100,32,109,111,100, - 105,102,121,32,77,111,100,117,108,101,83,112,101,99,32,105, - 110,115,116,97,110,99,101,115,46,10,10,32,32,32,32,78, - 41,3,218,6,111,114,105,103,105,110,218,12,108,111,97,100, - 101,114,95,115,116,97,116,101,218,10,105,115,95,112,97,99, - 107,97,103,101,99,3,0,0,0,0,0,0,0,3,0,0, - 0,2,0,0,0,67,0,0,0,115,54,0,0,0,124,1, - 124,0,95,0,124,2,124,0,95,1,124,3,124,0,95,2, - 124,4,124,0,95,3,124,5,114,16,103,0,110,1,100,0, - 124,0,95,4,100,1,124,0,95,5,100,0,124,0,95,6, - 100,0,83,0,41,2,78,70,41,7,114,20,0,0,0,114, - 122,0,0,0,114,126,0,0,0,114,127,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,218,13,95,115,101,116, - 95,102,105,108,101,97,116,116,114,218,7,95,99,97,99,104, - 101,100,41,6,114,34,0,0,0,114,20,0,0,0,114,122, - 0,0,0,114,126,0,0,0,114,127,0,0,0,114,128,0, - 0,0,32,32,32,32,32,32,114,5,0,0,0,114,35,0, - 0,0,101,1,0,0,115,14,0,0,0,6,2,6,1,6, - 1,6,1,14,1,6,3,10,1,114,17,0,0,0,122,19, - 77,111,100,117,108,101,83,112,101,99,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 6,0,0,0,67,0,0,0,115,102,0,0,0,100,1,160, - 0,124,0,106,1,161,1,100,2,160,0,124,0,106,2,161, - 1,103,2,125,1,124,0,106,3,100,0,117,1,114,26,124, - 1,160,4,100,3,160,0,124,0,106,3,161,1,161,1,1, - 0,124,0,106,5,100,0,117,1,114,40,124,1,160,4,100, - 4,160,0,124,0,106,5,161,1,161,1,1,0,100,5,160, - 0,124,0,106,6,106,7,100,6,160,8,124,1,161,1,161, - 2,83,0,41,7,78,122,9,110,97,109,101,61,123,33,114, - 125,122,11,108,111,97,100,101,114,61,123,33,114,125,122,11, - 111,114,105,103,105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123, - 125,41,122,2,44,32,41,9,114,51,0,0,0,114,20,0, - 0,0,114,122,0,0,0,114,126,0,0,0,218,6,97,112, - 112,101,110,100,114,129,0,0,0,218,9,95,95,99,108,97, - 115,115,95,95,114,8,0,0,0,218,4,106,111,105,110,41, - 2,114,34,0,0,0,114,63,0,0,0,32,32,114,5,0, + 110,46,60,108,111,99,97,108,115,62,46,95,114,101,113,117, + 105,114,101,115,95,98,117,105,108,116,105,110,95,119,114,97, + 112,112,101,114,78,169,1,114,16,0,0,0,41,2,114,91, + 0,0,0,114,92,0,0,0,115,2,0,0,0,96,32,114, + 5,0,0,0,218,17,95,114,101,113,117,105,114,101,115,95, + 98,117,105,108,116,105,110,252,0,0,0,243,8,0,0,0, + 2,128,12,2,10,5,4,1,114,17,0,0,0,114,95,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,114,85,0,0,0,41,4,122,47, + 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, + 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, + 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, + 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, + 2,141,2,130,1,137,2,124,0,124,1,131,2,83,0,169, + 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, + 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, + 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, + 102,114,111,122,101,110,114,88,0,0,0,114,51,0,0,0, + 114,89,0,0,0,115,3,0,0,0,32,32,128,114,5,0, + 0,0,218,24,95,114,101,113,117,105,114,101,115,95,102,114, + 111,122,101,110,95,119,114,97,112,112,101,114,9,1,0,0, + 114,93,0,0,0,114,17,0,0,0,122,50,95,114,101,113, + 117,105,114,101,115,95,102,114,111,122,101,110,46,60,108,111, + 99,97,108,115,62,46,95,114,101,113,117,105,114,101,115,95, + 102,114,111,122,101,110,95,119,114,97,112,112,101,114,78,114, + 94,0,0,0,41,2,114,91,0,0,0,114,99,0,0,0, + 115,2,0,0,0,96,32,114,5,0,0,0,218,16,95,114, + 101,113,117,105,114,101,115,95,102,114,111,122,101,110,7,1, + 0,0,114,96,0,0,0,114,17,0,0,0,114,100,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,67,0,0,0,115,74,0,0,0,100,1,125,2,116, + 0,160,1,124,2,116,2,161,2,1,0,116,3,124,1,124, + 0,131,2,125,3,124,1,116,4,106,5,118,0,114,33,116, + 4,106,5,124,1,25,0,125,4,116,6,124,3,124,4,131, + 2,1,0,116,4,106,5,124,1,25,0,83,0,116,7,124, + 3,131,1,83,0,41,3,122,130,76,111,97,100,32,116,104, + 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, + 108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,117, + 108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,105, + 116,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,46,32,32,85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101, + 32,108,111,97,100,95,109,111,100,117,108,101,40,41,32,109, + 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, + 116,101,97,100,78,41,8,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,16,115,112, + 101,99,95,102,114,111,109,95,108,111,97,100,101,114,114,18, + 0,0,0,218,7,109,111,100,117,108,101,115,218,5,95,101, + 120,101,99,218,5,95,108,111,97,100,41,5,114,34,0,0, + 0,114,90,0,0,0,218,3,109,115,103,218,4,115,112,101, + 99,218,6,109,111,100,117,108,101,115,5,0,0,0,32,32, + 32,32,32,114,5,0,0,0,218,17,95,108,111,97,100,95, + 109,111,100,117,108,101,95,115,104,105,109,19,1,0,0,115, + 16,0,0,0,4,6,12,2,10,1,10,1,10,1,10,1, + 10,1,8,2,114,17,0,0,0,114,111,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,194,0,0,0,116,0,124,0,100,1,100,2, + 131,3,125,1,116,0,124,0,100,3,100,2,131,3,4,0, + 125,2,114,18,116,1,124,2,131,1,83,0,116,2,124,1, + 100,4,131,2,114,39,9,0,124,1,160,3,124,0,161,1, + 83,0,35,0,4,0,116,4,121,96,1,0,1,0,1,0, + 89,0,110,1,37,0,9,0,124,0,106,5,125,3,110,12, + 35,0,4,0,116,6,121,95,1,0,1,0,1,0,100,5, + 125,3,89,0,110,1,37,0,9,0,124,0,106,7,125,4, + 110,27,35,0,4,0,116,6,121,94,1,0,1,0,1,0, + 124,1,100,2,117,0,114,79,100,6,160,8,124,3,161,1, + 6,0,89,0,83,0,100,7,160,8,124,3,124,1,161,2, + 6,0,89,0,83,0,37,0,100,8,160,8,124,3,124,4, + 161,2,83,0,119,0,119,0,119,0,41,9,122,44,84,104, + 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, + 32,111,102,32,77,111,100,117,108,101,84,121,112,101,46,95, + 95,114,101,112,114,95,95,40,41,46,218,10,95,95,108,111, + 97,100,101,114,95,95,78,218,8,95,95,115,112,101,99,95, + 95,218,11,109,111,100,117,108,101,95,114,101,112,114,250,1, + 63,250,13,60,109,111,100,117,108,101,32,123,33,114,125,62, + 250,20,60,109,111,100,117,108,101,32,123,33,114,125,32,40, + 123,33,114,125,41,62,250,23,60,109,111,100,117,108,101,32, + 123,33,114,125,32,102,114,111,109,32,123,33,114,125,62,41, + 9,114,12,0,0,0,218,22,95,109,111,100,117,108,101,95, + 114,101,112,114,95,102,114,111,109,95,115,112,101,99,114,10, + 0,0,0,114,114,0,0,0,218,9,69,120,99,101,112,116, + 105,111,110,114,8,0,0,0,114,2,0,0,0,218,8,95, + 95,102,105,108,101,95,95,114,51,0,0,0,41,5,114,110, + 0,0,0,218,6,108,111,97,100,101,114,114,109,0,0,0, + 114,20,0,0,0,218,8,102,105,108,101,110,97,109,101,115, + 5,0,0,0,32,32,32,32,32,114,5,0,0,0,218,12, + 95,109,111,100,117,108,101,95,114,101,112,114,38,1,0,0, + 115,56,0,0,0,12,2,16,1,8,1,10,1,2,1,10, + 1,2,128,12,1,4,1,2,128,2,2,8,1,2,128,12, + 1,8,1,2,128,2,1,8,1,2,128,12,1,8,1,14, + 1,16,2,2,128,12,2,2,250,2,252,2,251,115,47,0, + 0,0,152,4,29,0,157,7,38,7,168,3,44,0,172,9, + 55,7,185,3,61,0,189,16,65,23,7,193,15,6,65,23, + 7,193,30,1,65,23,7,193,31,1,55,7,193,32,1,38, + 7,114,124,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,64,0,0,0,115,114,0,0,0, + 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,2, + 100,2,100,3,156,3,100,4,100,5,132,2,90,4,100,6, + 100,7,132,0,90,5,100,8,100,9,132,0,90,6,101,7, + 100,10,100,11,132,0,131,1,90,8,101,8,106,9,100,12, + 100,11,132,0,131,1,90,8,101,7,100,13,100,14,132,0, + 131,1,90,10,101,7,100,15,100,16,132,0,131,1,90,11, + 101,11,106,9,100,17,100,16,132,0,131,1,90,11,100,2, + 83,0,41,18,218,10,77,111,100,117,108,101,83,112,101,99, + 97,208,5,0,0,84,104,101,32,115,112,101,99,105,102,105, + 99,97,116,105,111,110,32,102,111,114,32,97,32,109,111,100, + 117,108,101,44,32,117,115,101,100,32,102,111,114,32,108,111, + 97,100,105,110,103,46,10,10,32,32,32,32,65,32,109,111, + 100,117,108,101,39,115,32,115,112,101,99,32,105,115,32,116, + 104,101,32,115,111,117,114,99,101,32,102,111,114,32,105,110, + 102,111,114,109,97,116,105,111,110,32,97,98,111,117,116,32, + 116,104,101,32,109,111,100,117,108,101,46,32,32,70,111,114, + 10,32,32,32,32,100,97,116,97,32,97,115,115,111,99,105, + 97,116,101,100,32,119,105,116,104,32,116,104,101,32,109,111, + 100,117,108,101,44,32,105,110,99,108,117,100,105,110,103,32, + 115,111,117,114,99,101,44,32,117,115,101,32,116,104,101,32, + 115,112,101,99,39,115,10,32,32,32,32,108,111,97,100,101, + 114,46,10,10,32,32,32,32,96,110,97,109,101,96,32,105, + 115,32,116,104,101,32,97,98,115,111,108,117,116,101,32,110, + 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, + 101,46,32,32,96,108,111,97,100,101,114,96,32,105,115,32, + 116,104,101,32,108,111,97,100,101,114,10,32,32,32,32,116, + 111,32,117,115,101,32,119,104,101,110,32,108,111,97,100,105, + 110,103,32,116,104,101,32,109,111,100,117,108,101,46,32,32, + 96,112,97,114,101,110,116,96,32,105,115,32,116,104,101,32, + 110,97,109,101,32,111,102,32,116,104,101,10,32,32,32,32, + 112,97,99,107,97,103,101,32,116,104,101,32,109,111,100,117, + 108,101,32,105,115,32,105,110,46,32,32,84,104,101,32,112, + 97,114,101,110,116,32,105,115,32,100,101,114,105,118,101,100, + 32,102,114,111,109,32,116,104,101,32,110,97,109,101,46,10, + 10,32,32,32,32,96,105,115,95,112,97,99,107,97,103,101, + 96,32,100,101,116,101,114,109,105,110,101,115,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,105,115,32,99,111, + 110,115,105,100,101,114,101,100,32,97,32,112,97,99,107,97, + 103,101,32,111,114,10,32,32,32,32,110,111,116,46,32,32, + 79,110,32,109,111,100,117,108,101,115,32,116,104,105,115,32, + 105,115,32,114,101,102,108,101,99,116,101,100,32,98,121,32, + 116,104,101,32,96,95,95,112,97,116,104,95,95,96,32,97, + 116,116,114,105,98,117,116,101,46,10,10,32,32,32,32,96, + 111,114,105,103,105,110,96,32,105,115,32,116,104,101,32,115, + 112,101,99,105,102,105,99,32,108,111,99,97,116,105,111,110, + 32,117,115,101,100,32,98,121,32,116,104,101,32,108,111,97, + 100,101,114,32,102,114,111,109,32,119,104,105,99,104,32,116, + 111,10,32,32,32,32,108,111,97,100,32,116,104,101,32,109, + 111,100,117,108,101,44,32,105,102,32,116,104,97,116,32,105, + 110,102,111,114,109,97,116,105,111,110,32,105,115,32,97,118, + 97,105,108,97,98,108,101,46,32,32,87,104,101,110,32,102, + 105,108,101,110,97,109,101,32,105,115,10,32,32,32,32,115, + 101,116,44,32,111,114,105,103,105,110,32,119,105,108,108,32, + 109,97,116,99,104,46,10,10,32,32,32,32,96,104,97,115, + 95,108,111,99,97,116,105,111,110,96,32,105,110,100,105,99, + 97,116,101,115,32,116,104,97,116,32,97,32,115,112,101,99, + 39,115,32,34,111,114,105,103,105,110,34,32,114,101,102,108, + 101,99,116,115,32,97,32,108,111,99,97,116,105,111,110,46, + 10,32,32,32,32,87,104,101,110,32,116,104,105,115,32,105, + 115,32,84,114,117,101,44,32,96,95,95,102,105,108,101,95, + 95,96,32,97,116,116,114,105,98,117,116,101,32,111,102,32, + 116,104,101,32,109,111,100,117,108,101,32,105,115,32,115,101, + 116,46,10,10,32,32,32,32,96,99,97,99,104,101,100,96, + 32,105,115,32,116,104,101,32,108,111,99,97,116,105,111,110, + 32,111,102,32,116,104,101,32,99,97,99,104,101,100,32,98, + 121,116,101,99,111,100,101,32,102,105,108,101,44,32,105,102, + 32,97,110,121,46,32,32,73,116,10,32,32,32,32,99,111, + 114,114,101,115,112,111,110,100,115,32,116,111,32,116,104,101, + 32,96,95,95,99,97,99,104,101,100,95,95,96,32,97,116, + 116,114,105,98,117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104, + 101,32,115,101,113,117,101,110,99,101,32,111,102,32,112,97, + 116,104,32,101,110,116,114,105,101,115,32,116,111,10,32,32, + 32,32,115,101,97,114,99,104,32,119,104,101,110,32,105,109, + 112,111,114,116,105,110,103,32,115,117,98,109,111,100,117,108, + 101,115,46,32,32,73,102,32,115,101,116,44,32,105,115,95, + 112,97,99,107,97,103,101,32,115,104,111,117,108,100,32,98, + 101,10,32,32,32,32,84,114,117,101,45,45,97,110,100,32, + 70,97,108,115,101,32,111,116,104,101,114,119,105,115,101,46, + 10,10,32,32,32,32,80,97,99,107,97,103,101,115,32,97, + 114,101,32,115,105,109,112,108,121,32,109,111,100,117,108,101, + 115,32,116,104,97,116,32,40,109,97,121,41,32,104,97,118, + 101,32,115,117,98,109,111,100,117,108,101,115,46,32,32,73, + 102,32,97,32,115,112,101,99,10,32,32,32,32,104,97,115, + 32,97,32,110,111,110,45,78,111,110,101,32,118,97,108,117, + 101,32,105,110,32,96,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, + 96,44,32,116,104,101,32,105,109,112,111,114,116,10,32,32, + 32,32,115,121,115,116,101,109,32,119,105,108,108,32,99,111, + 110,115,105,100,101,114,32,109,111,100,117,108,101,115,32,108, + 111,97,100,101,100,32,102,114,111,109,32,116,104,101,32,115, + 112,101,99,32,97,115,32,112,97,99,107,97,103,101,115,46, + 10,10,32,32,32,32,79,110,108,121,32,102,105,110,100,101, + 114,115,32,40,115,101,101,32,105,109,112,111,114,116,108,105, + 98,46,97,98,99,46,77,101,116,97,80,97,116,104,70,105, + 110,100,101,114,32,97,110,100,10,32,32,32,32,105,109,112, + 111,114,116,108,105,98,46,97,98,99,46,80,97,116,104,69, + 110,116,114,121,70,105,110,100,101,114,41,32,115,104,111,117, + 108,100,32,109,111,100,105,102,121,32,77,111,100,117,108,101, + 83,112,101,99,32,105,110,115,116,97,110,99,101,115,46,10, + 10,32,32,32,32,78,41,3,218,6,111,114,105,103,105,110, + 218,12,108,111,97,100,101,114,95,115,116,97,116,101,218,10, + 105,115,95,112,97,99,107,97,103,101,99,3,0,0,0,0, + 0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115, + 54,0,0,0,124,1,124,0,95,0,124,2,124,0,95,1, + 124,3,124,0,95,2,124,4,124,0,95,3,124,5,114,16, + 103,0,110,1,100,0,124,0,95,4,100,1,124,0,95,5, + 100,0,124,0,95,6,100,0,83,0,41,2,78,70,41,7, + 114,20,0,0,0,114,122,0,0,0,114,126,0,0,0,114, + 127,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, + 218,13,95,115,101,116,95,102,105,108,101,97,116,116,114,218, + 7,95,99,97,99,104,101,100,41,6,114,34,0,0,0,114, + 20,0,0,0,114,122,0,0,0,114,126,0,0,0,114,127, + 0,0,0,114,128,0,0,0,115,6,0,0,0,32,32,32, + 32,32,32,114,5,0,0,0,114,35,0,0,0,101,1,0, + 0,115,14,0,0,0,6,2,6,1,6,1,6,1,14,1, + 6,3,10,1,114,17,0,0,0,122,19,77,111,100,117,108, + 101,83,112,101,99,46,95,95,105,110,105,116,95,95,99,1, + 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,67, + 0,0,0,115,102,0,0,0,100,1,160,0,124,0,106,1, + 161,1,100,2,160,0,124,0,106,2,161,1,103,2,125,1, + 124,0,106,3,100,0,117,1,114,26,124,1,160,4,100,3, + 160,0,124,0,106,3,161,1,161,1,1,0,124,0,106,5, + 100,0,117,1,114,40,124,1,160,4,100,4,160,0,124,0, + 106,5,161,1,161,1,1,0,100,5,160,0,124,0,106,6, + 106,7,100,6,160,8,124,1,161,1,161,2,83,0,41,7, + 78,122,9,110,97,109,101,61,123,33,114,125,122,11,108,111, + 97,100,101,114,61,123,33,114,125,122,11,111,114,105,103,105, + 110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122,2,44, + 32,41,9,114,51,0,0,0,114,20,0,0,0,114,122,0, + 0,0,114,126,0,0,0,218,6,97,112,112,101,110,100,114, + 129,0,0,0,218,9,95,95,99,108,97,115,115,95,95,114, + 8,0,0,0,218,4,106,111,105,110,41,2,114,34,0,0, + 0,114,63,0,0,0,115,2,0,0,0,32,32,114,5,0, 0,0,114,54,0,0,0,113,1,0,0,115,20,0,0,0, 10,1,10,1,4,255,10,2,18,1,10,1,6,1,8,1, 4,255,22,2,114,17,0,0,0,122,19,77,111,100,117,108, @@ -709,387 +719,392 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 104,101,100,218,12,104,97,115,95,108,111,99,97,116,105,111, 110,114,2,0,0,0,218,14,78,111,116,73,109,112,108,101, 109,101,110,116,101,100,41,3,114,34,0,0,0,90,5,111, - 116,104,101,114,90,4,115,109,115,108,32,32,32,114,5,0, - 0,0,218,6,95,95,101,113,95,95,123,1,0,0,115,36, - 0,0,0,6,1,2,1,12,1,10,1,2,255,10,2,2, - 254,8,3,2,253,10,4,2,252,10,5,2,251,2,128,12, - 6,8,1,2,128,2,255,115,12,0,0,0,132,34,39,0, - 167,9,50,7,179,1,50,7,122,17,77,111,100,117,108,101, - 83,112,101,99,46,95,95,101,113,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, - 115,58,0,0,0,124,0,106,0,100,0,117,0,114,26,124, - 0,106,1,100,0,117,1,114,26,124,0,106,2,114,26,116, - 3,100,0,117,0,114,19,116,4,130,1,116,3,160,5,124, - 0,106,1,161,1,124,0,95,0,124,0,106,0,83,0,114, - 0,0,0,0,41,6,114,131,0,0,0,114,126,0,0,0, - 114,130,0,0,0,218,19,95,98,111,111,116,115,116,114,97, - 112,95,101,120,116,101,114,110,97,108,218,19,78,111,116,73, - 109,112,108,101,109,101,110,116,101,100,69,114,114,111,114,90, - 11,95,103,101,116,95,99,97,99,104,101,100,114,53,0,0, - 0,32,114,5,0,0,0,114,135,0,0,0,135,1,0,0, - 115,12,0,0,0,10,2,16,1,8,1,4,1,14,1,6, - 1,114,17,0,0,0,122,17,77,111,100,117,108,101,83,112, - 101,99,46,99,97,99,104,101,100,99,2,0,0,0,0,0, - 0,0,0,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,0,0, - 0,0,41,1,114,131,0,0,0,41,2,114,34,0,0,0, - 114,135,0,0,0,32,32,114,5,0,0,0,114,135,0,0, - 0,144,1,0,0,115,2,0,0,0,10,2,114,17,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,67,0,0,0,115,32,0,0,0,124,0,106,0,100, - 1,117,0,114,13,124,0,106,1,160,2,100,2,161,1,100, - 3,25,0,83,0,124,0,106,1,83,0,41,4,122,32,84, - 104,101,32,110,97,109,101,32,111,102,32,116,104,101,32,109, - 111,100,117,108,101,39,115,32,112,97,114,101,110,116,46,78, - 218,1,46,114,26,0,0,0,41,3,114,129,0,0,0,114, - 20,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, - 114,53,0,0,0,32,114,5,0,0,0,218,6,112,97,114, - 101,110,116,148,1,0,0,115,6,0,0,0,10,3,16,1, - 6,2,114,17,0,0,0,122,17,77,111,100,117,108,101,83, - 112,101,99,46,112,97,114,101,110,116,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,67,0,0,0,115, - 6,0,0,0,124,0,106,0,83,0,114,0,0,0,0,41, - 1,114,130,0,0,0,114,53,0,0,0,32,114,5,0,0, - 0,114,136,0,0,0,156,1,0,0,115,2,0,0,0,6, - 2,114,17,0,0,0,122,23,77,111,100,117,108,101,83,112, - 101,99,46,104,97,115,95,108,111,99,97,116,105,111,110,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 67,0,0,0,115,14,0,0,0,116,0,124,1,131,1,124, - 0,95,1,100,0,83,0,114,0,0,0,0,41,2,218,4, - 98,111,111,108,114,130,0,0,0,41,2,114,34,0,0,0, - 218,5,118,97,108,117,101,32,32,114,5,0,0,0,114,136, - 0,0,0,160,1,0,0,115,2,0,0,0,14,2,114,17, - 0,0,0,41,12,114,8,0,0,0,114,7,0,0,0,114, - 1,0,0,0,114,9,0,0,0,114,35,0,0,0,114,54, - 0,0,0,114,138,0,0,0,218,8,112,114,111,112,101,114, - 116,121,114,135,0,0,0,218,6,115,101,116,116,101,114,114, - 143,0,0,0,114,136,0,0,0,114,23,0,0,0,114,5, - 0,0,0,114,125,0,0,0,64,1,0,0,115,34,0,0, - 0,8,0,4,1,4,36,2,1,12,255,8,12,8,10,2, - 12,10,1,4,8,10,1,2,3,10,1,2,7,10,1,4, - 3,14,1,114,17,0,0,0,114,125,0,0,0,169,2,114, - 126,0,0,0,114,128,0,0,0,99,2,0,0,0,0,0, - 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,152, - 0,0,0,116,0,124,1,100,1,131,2,114,37,116,1,100, - 2,117,0,114,11,116,2,130,1,116,1,106,3,125,4,124, - 3,100,2,117,0,114,24,124,4,124,0,124,1,100,3,141, - 2,83,0,124,3,114,28,103,0,110,1,100,2,125,5,124, - 4,124,0,124,1,124,5,100,4,141,3,83,0,124,3,100, - 2,117,0,114,67,116,0,124,1,100,5,131,2,114,65,9, - 0,124,1,160,4,124,0,161,1,125,3,110,14,35,0,4, - 0,116,5,121,75,1,0,1,0,1,0,100,2,125,3,89, - 0,110,3,37,0,100,6,125,3,116,6,124,0,124,1,124, - 2,124,3,100,7,141,4,83,0,119,0,41,8,122,53,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,118,97,114, - 105,111,117,115,32,108,111,97,100,101,114,32,109,101,116,104, - 111,100,115,46,90,12,103,101,116,95,102,105,108,101,110,97, - 109,101,78,41,1,114,122,0,0,0,41,2,114,122,0,0, - 0,114,129,0,0,0,114,128,0,0,0,70,114,148,0,0, - 0,41,7,114,10,0,0,0,114,139,0,0,0,114,140,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,114,128,0,0,0, - 114,88,0,0,0,114,125,0,0,0,41,6,114,20,0,0, - 0,114,122,0,0,0,114,126,0,0,0,114,128,0,0,0, - 114,149,0,0,0,90,6,115,101,97,114,99,104,32,32,32, - 32,32,32,114,5,0,0,0,114,104,0,0,0,165,1,0, - 0,115,42,0,0,0,10,2,8,1,4,1,6,1,8,2, - 12,1,12,1,6,1,2,1,6,255,8,3,10,1,2,1, - 12,1,2,128,12,1,8,1,2,128,4,3,16,2,2,250, - 115,15,0,0,0,175,5,53,0,181,9,65,0,7,193,11, - 1,65,0,7,114,104,0,0,0,99,3,0,0,0,0,0, - 0,0,0,0,0,0,8,0,0,0,67,0,0,0,115,50, - 1,0,0,9,0,124,0,106,0,125,3,110,10,35,0,4, - 0,116,1,121,152,1,0,1,0,1,0,89,0,110,7,37, - 0,124,3,100,0,117,1,114,21,124,3,83,0,124,0,106, - 2,125,4,124,1,100,0,117,0,114,43,9,0,124,0,106, - 3,125,1,110,10,35,0,4,0,116,1,121,151,1,0,1, - 0,1,0,89,0,110,1,37,0,9,0,124,0,106,4,125, - 5,110,12,35,0,4,0,116,1,121,150,1,0,1,0,1, - 0,100,0,125,5,89,0,110,1,37,0,124,2,100,0,117, - 0,114,87,124,5,100,0,117,0,114,85,9,0,124,1,106, - 5,125,2,110,14,35,0,4,0,116,1,121,149,1,0,1, - 0,1,0,100,0,125,2,89,0,110,3,37,0,124,5,125, - 2,9,0,124,0,106,6,125,6,110,12,35,0,4,0,116, - 1,121,148,1,0,1,0,1,0,100,0,125,6,89,0,110, - 1,37,0,9,0,116,7,124,0,106,8,131,1,125,7,110, - 12,35,0,4,0,116,1,121,147,1,0,1,0,1,0,100, - 0,125,7,89,0,110,1,37,0,116,9,124,4,124,1,124, - 2,100,1,141,3,125,3,124,5,100,0,117,0,114,136,100, - 2,110,1,100,3,124,3,95,10,124,6,124,3,95,11,124, - 7,124,3,95,12,124,3,83,0,119,0,119,0,119,0,119, - 0,119,0,119,0,41,4,78,169,1,114,126,0,0,0,70, - 84,41,13,114,113,0,0,0,114,2,0,0,0,114,8,0, - 0,0,114,112,0,0,0,114,121,0,0,0,218,7,95,79, - 82,73,71,73,78,218,10,95,95,99,97,99,104,101,100,95, - 95,218,4,108,105,115,116,218,8,95,95,112,97,116,104,95, - 95,114,125,0,0,0,114,130,0,0,0,114,135,0,0,0, - 114,129,0,0,0,41,8,114,110,0,0,0,114,122,0,0, - 0,114,126,0,0,0,114,109,0,0,0,114,20,0,0,0, - 90,8,108,111,99,97,116,105,111,110,114,135,0,0,0,114, - 129,0,0,0,32,32,32,32,32,32,32,32,114,5,0,0, - 0,218,17,95,115,112,101,99,95,102,114,111,109,95,109,111, - 100,117,108,101,191,1,0,0,115,108,0,0,0,2,2,8, - 1,2,128,12,1,4,1,2,128,8,2,4,1,6,2,8, - 1,2,1,8,1,2,128,12,1,4,2,2,128,2,1,8, - 1,2,128,12,1,8,1,2,128,8,1,8,1,2,1,8, - 1,2,128,12,1,8,1,2,128,4,2,2,1,8,1,2, - 128,12,1,8,1,2,128,2,1,12,1,2,128,12,1,8, - 1,2,128,14,2,18,1,6,1,6,1,4,1,2,249,2, - 252,2,250,2,250,2,251,2,246,115,93,0,0,0,129,3, - 5,0,133,7,14,7,157,3,33,0,161,7,42,7,172,3, - 48,0,176,9,59,7,193,5,3,65,9,0,193,9,9,65, - 20,7,193,24,3,65,28,0,193,28,9,65,39,7,193,41, - 5,65,47,0,193,47,9,65,58,7,194,19,1,65,58,7, - 194,20,1,65,39,7,194,21,1,65,20,7,194,22,1,59, - 7,194,23,1,42,7,194,24,1,14,7,114,155,0,0,0, - 70,169,1,218,8,111,118,101,114,114,105,100,101,99,2,0, - 0,0,0,0,0,0,1,0,0,0,8,0,0,0,67,0, - 0,0,115,204,1,0,0,124,2,115,10,116,0,124,1,100, - 1,100,0,131,3,100,0,117,0,114,26,9,0,124,0,106, - 1,124,1,95,2,110,10,35,0,4,0,116,3,121,229,1, - 0,1,0,1,0,89,0,110,1,37,0,124,2,115,36,116, - 0,124,1,100,2,100,0,131,3,100,0,117,0,114,87,124, - 0,106,4,125,3,124,3,100,0,117,0,114,72,124,0,106, - 5,100,0,117,1,114,72,116,6,100,0,117,0,114,54,116, - 7,130,1,116,6,106,8,125,4,124,4,160,9,124,4,161, - 1,125,3,124,0,106,5,124,3,95,10,124,3,124,0,95, - 4,100,0,124,1,95,11,9,0,124,3,124,1,95,12,110, - 10,35,0,4,0,116,3,121,228,1,0,1,0,1,0,89, - 0,110,1,37,0,124,2,115,97,116,0,124,1,100,3,100, - 0,131,3,100,0,117,0,114,113,9,0,124,0,106,13,124, - 1,95,14,110,10,35,0,4,0,116,3,121,227,1,0,1, - 0,1,0,89,0,110,1,37,0,9,0,124,0,124,1,95, - 15,110,10,35,0,4,0,116,3,121,226,1,0,1,0,1, - 0,89,0,110,1,37,0,124,2,115,138,116,0,124,1,100, - 4,100,0,131,3,100,0,117,0,114,159,124,0,106,5,100, - 0,117,1,114,159,9,0,124,0,106,5,124,1,95,16,110, - 10,35,0,4,0,116,3,121,225,1,0,1,0,1,0,89, - 0,110,1,37,0,124,0,106,17,114,221,124,2,115,172,116, - 0,124,1,100,5,100,0,131,3,100,0,117,0,114,188,9, - 0,124,0,106,18,124,1,95,11,110,10,35,0,4,0,116, - 3,121,224,1,0,1,0,1,0,89,0,110,1,37,0,124, - 2,115,198,116,0,124,1,100,6,100,0,131,3,100,0,117, - 0,114,221,124,0,106,19,100,0,117,1,114,221,9,0,124, - 0,106,19,124,1,95,20,124,1,83,0,35,0,4,0,116, - 3,121,223,1,0,1,0,1,0,89,0,124,1,83,0,37, - 0,124,1,83,0,119,0,119,0,119,0,119,0,119,0,119, - 0,119,0,41,7,78,114,8,0,0,0,114,112,0,0,0, - 218,11,95,95,112,97,99,107,97,103,101,95,95,114,154,0, - 0,0,114,121,0,0,0,114,152,0,0,0,41,21,114,12, - 0,0,0,114,20,0,0,0,114,8,0,0,0,114,2,0, - 0,0,114,122,0,0,0,114,129,0,0,0,114,139,0,0, - 0,114,140,0,0,0,218,16,95,78,97,109,101,115,112,97, - 99,101,76,111,97,100,101,114,218,7,95,95,110,101,119,95, - 95,90,5,95,112,97,116,104,114,121,0,0,0,114,112,0, - 0,0,114,143,0,0,0,114,158,0,0,0,114,113,0,0, - 0,114,154,0,0,0,114,136,0,0,0,114,126,0,0,0, - 114,135,0,0,0,114,152,0,0,0,41,5,114,109,0,0, - 0,114,110,0,0,0,114,157,0,0,0,114,122,0,0,0, - 114,159,0,0,0,32,32,32,32,32,114,5,0,0,0,218, - 18,95,105,110,105,116,95,109,111,100,117,108,101,95,97,116, - 116,114,115,236,1,0,0,115,142,0,0,0,20,4,2,1, - 10,1,2,128,12,1,4,1,2,128,20,2,6,1,8,1, - 10,2,8,1,4,1,6,1,10,2,8,1,6,1,6,11, - 2,1,8,1,2,128,12,1,4,1,2,128,20,2,2,1, - 10,1,2,128,12,1,4,1,2,128,2,2,8,1,2,128, - 12,1,4,1,2,128,20,2,10,1,2,1,10,1,2,128, - 12,1,4,1,2,128,6,2,20,1,2,1,10,1,2,128, - 12,1,4,1,2,128,20,2,10,1,2,1,8,1,4,3, - 2,128,12,254,2,1,4,1,2,128,4,0,2,254,2,249, - 2,249,2,249,2,251,2,250,2,228,115,121,0,0,0,139, - 4,16,0,144,7,25,7,193,9,3,65,13,0,193,13,7, - 65,22,7,193,34,4,65,39,0,193,39,7,65,48,7,193, - 50,3,65,54,0,193,54,7,65,63,7,194,16,4,66,21, - 0,194,21,7,66,30,7,194,45,4,66,50,0,194,50,7, - 66,59,7,195,12,4,67,18,0,195,18,7,67,28,7,195, - 31,1,67,28,7,195,32,1,66,59,7,195,33,1,66,30, - 7,195,34,1,65,63,7,195,35,1,65,48,7,195,36,1, - 65,22,7,195,37,1,25,7,114,161,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,115,82,0,0,0,100,1,125,1,116,0,124,0,106, - 1,100,2,131,2,114,15,124,0,106,1,160,2,124,0,161, - 1,125,1,110,10,116,0,124,0,106,1,100,3,131,2,114, - 25,116,3,100,4,131,1,130,1,124,1,100,1,117,0,114, - 34,116,4,124,0,106,5,131,1,125,1,116,6,124,0,124, - 1,131,2,1,0,124,1,83,0,41,5,122,43,67,114,101, - 97,116,101,32,97,32,109,111,100,117,108,101,32,98,97,115, - 101,100,32,111,110,32,116,104,101,32,112,114,111,118,105,100, - 101,100,32,115,112,101,99,46,78,218,13,99,114,101,97,116, - 101,95,109,111,100,117,108,101,218,11,101,120,101,99,95,109, - 111,100,117,108,101,122,66,108,111,97,100,101,114,115,32,116, - 104,97,116,32,100,101,102,105,110,101,32,101,120,101,99,95, - 109,111,100,117,108,101,40,41,32,109,117,115,116,32,97,108, - 115,111,32,100,101,102,105,110,101,32,99,114,101,97,116,101, - 95,109,111,100,117,108,101,40,41,41,7,114,10,0,0,0, - 114,122,0,0,0,114,162,0,0,0,114,88,0,0,0,114, - 21,0,0,0,114,20,0,0,0,114,161,0,0,0,169,2, - 114,109,0,0,0,114,110,0,0,0,32,32,114,5,0,0, - 0,218,16,109,111,100,117,108,101,95,102,114,111,109,95,115, - 112,101,99,52,2,0,0,115,18,0,0,0,4,3,12,1, - 14,3,12,1,8,1,8,2,10,1,10,1,4,1,114,17, - 0,0,0,114,165,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,100,0, - 0,0,124,0,106,0,100,1,117,0,114,7,100,2,110,2, - 124,0,106,0,125,1,124,0,106,1,100,1,117,0,114,32, - 124,0,106,2,100,1,117,0,114,25,100,3,160,3,124,1, - 161,1,83,0,100,4,160,3,124,1,124,0,106,2,161,2, - 83,0,124,0,106,4,114,42,100,5,160,3,124,1,124,0, - 106,1,161,2,83,0,100,6,160,3,124,0,106,0,124,0, - 106,1,161,2,83,0,41,7,122,38,82,101,116,117,114,110, - 32,116,104,101,32,114,101,112,114,32,116,111,32,117,115,101, - 32,102,111,114,32,116,104,101,32,109,111,100,117,108,101,46, - 78,114,115,0,0,0,114,116,0,0,0,114,117,0,0,0, - 114,118,0,0,0,250,18,60,109,111,100,117,108,101,32,123, - 33,114,125,32,40,123,125,41,62,41,5,114,20,0,0,0, - 114,126,0,0,0,114,122,0,0,0,114,51,0,0,0,114, - 136,0,0,0,41,2,114,109,0,0,0,114,20,0,0,0, - 32,32,114,5,0,0,0,114,119,0,0,0,69,2,0,0, - 115,16,0,0,0,20,3,10,1,10,1,10,1,14,2,6, - 2,14,1,16,2,114,17,0,0,0,114,119,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, - 67,0,0,0,115,32,1,0,0,124,0,106,0,125,2,116, - 1,124,2,131,1,53,0,1,0,116,2,106,3,160,4,124, - 2,161,1,124,1,117,1,114,27,100,1,160,5,124,2,161, - 1,125,3,116,6,124,3,124,2,100,2,141,2,130,1,9, - 0,124,0,106,7,100,3,117,0,114,53,124,0,106,8,100, - 3,117,0,114,45,116,6,100,4,124,0,106,0,100,2,141, - 2,130,1,116,9,124,0,124,1,100,5,100,6,141,3,1, - 0,110,40,116,9,124,0,124,1,100,5,100,6,141,3,1, - 0,116,10,124,0,106,7,100,7,131,2,115,87,116,11,124, - 0,106,7,131,1,155,0,100,8,157,2,125,3,116,12,160, - 13,124,3,116,14,161,2,1,0,124,0,106,7,160,15,124, - 2,161,1,1,0,110,6,124,0,106,7,160,16,124,1,161, - 1,1,0,116,2,106,3,160,17,124,0,106,0,161,1,125, - 1,124,1,116,2,106,3,124,0,106,0,60,0,110,16,35, - 0,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, - 1,116,2,106,3,124,0,106,0,60,0,119,0,37,0,9, - 0,100,3,4,0,4,0,131,3,1,0,124,1,83,0,35, - 0,49,0,115,136,119,4,37,0,1,0,1,0,1,0,89, - 0,1,0,1,0,124,1,83,0,41,9,122,70,69,120,101, - 99,117,116,101,32,116,104,101,32,115,112,101,99,39,115,32, - 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, - 32,105,110,32,97,110,32,101,120,105,115,116,105,110,103,32, - 109,111,100,117,108,101,39,115,32,110,97,109,101,115,112,97, - 99,101,46,122,30,109,111,100,117,108,101,32,123,33,114,125, - 32,110,111,116,32,105,110,32,115,121,115,46,109,111,100,117, - 108,101,115,114,19,0,0,0,78,250,14,109,105,115,115,105, - 110,103,32,108,111,97,100,101,114,84,114,156,0,0,0,114, - 163,0,0,0,250,55,46,101,120,101,99,95,109,111,100,117, - 108,101,40,41,32,110,111,116,32,102,111,117,110,100,59,32, - 102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32, - 108,111,97,100,95,109,111,100,117,108,101,40,41,41,18,114, - 20,0,0,0,114,58,0,0,0,114,18,0,0,0,114,105, - 0,0,0,114,39,0,0,0,114,51,0,0,0,114,88,0, - 0,0,114,122,0,0,0,114,129,0,0,0,114,161,0,0, - 0,114,10,0,0,0,114,6,0,0,0,114,101,0,0,0, - 114,102,0,0,0,218,13,73,109,112,111,114,116,87,97,114, - 110,105,110,103,218,11,108,111,97,100,95,109,111,100,117,108, - 101,114,163,0,0,0,218,3,112,111,112,41,4,114,109,0, - 0,0,114,110,0,0,0,114,20,0,0,0,114,108,0,0, - 0,32,32,32,32,114,5,0,0,0,114,106,0,0,0,86, - 2,0,0,115,50,0,0,0,6,2,10,1,16,1,10,1, - 12,1,2,1,10,1,10,1,14,1,16,2,14,2,12,1, - 16,1,12,2,14,1,12,2,14,4,14,1,2,128,14,255, - 18,1,10,233,4,24,22,128,4,0,115,41,0,0,0,135, - 20,66,3,3,156,65,1,65,43,2,193,29,14,66,3,3, - 193,43,15,65,58,9,193,58,1,66,3,3,194,3,4,66, - 7,11,194,8,3,66,7,11,114,106,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, - 0,0,115,22,1,0,0,9,0,124,0,106,0,160,1,124, - 0,106,2,161,1,1,0,110,25,35,0,1,0,1,0,1, - 0,124,0,106,2,116,3,106,4,118,0,114,32,116,3,106, - 4,160,5,124,0,106,2,161,1,125,1,124,1,116,3,106, - 4,124,0,106,2,60,0,130,0,37,0,116,3,106,4,160, - 5,124,0,106,2,161,1,125,1,124,1,116,3,106,4,124, - 0,106,2,60,0,116,6,124,1,100,1,100,0,131,3,100, - 0,117,0,114,71,9,0,124,0,106,0,124,1,95,7,110, - 10,35,0,4,0,116,8,121,138,1,0,1,0,1,0,89, - 0,110,1,37,0,116,6,124,1,100,2,100,0,131,3,100, - 0,117,0,114,109,9,0,124,1,106,9,124,1,95,10,116, - 11,124,1,100,3,131,2,115,98,124,0,106,2,160,12,100, - 4,161,1,100,5,25,0,124,1,95,10,110,10,35,0,4, - 0,116,8,121,137,1,0,1,0,1,0,89,0,110,1,37, - 0,116,6,124,1,100,6,100,0,131,3,100,0,117,0,114, - 134,9,0,124,0,124,1,95,13,124,1,83,0,35,0,4, - 0,116,8,121,136,1,0,1,0,1,0,89,0,124,1,83, - 0,37,0,124,1,83,0,119,0,119,0,119,0,41,7,78, - 114,112,0,0,0,114,158,0,0,0,114,154,0,0,0,114, - 141,0,0,0,114,26,0,0,0,114,113,0,0,0,41,14, - 114,122,0,0,0,114,170,0,0,0,114,20,0,0,0,114, - 18,0,0,0,114,105,0,0,0,114,171,0,0,0,114,12, - 0,0,0,114,112,0,0,0,114,2,0,0,0,114,8,0, - 0,0,114,158,0,0,0,114,10,0,0,0,114,142,0,0, - 0,114,113,0,0,0,114,164,0,0,0,32,32,114,5,0, - 0,0,218,25,95,108,111,97,100,95,98,97,99,107,119,97, - 114,100,95,99,111,109,112,97,116,105,98,108,101,116,2,0, - 0,115,80,0,0,0,2,3,16,1,2,128,6,1,12,1, - 14,1,12,1,2,1,2,128,14,3,12,1,16,1,2,1, - 10,1,2,128,12,1,4,1,2,128,16,1,2,1,8,4, - 10,1,18,1,4,128,12,1,4,1,2,128,16,1,2,1, - 6,1,4,3,2,128,12,254,2,1,4,1,2,128,4,0, - 2,254,2,251,2,246,115,59,0,0,0,129,7,9,0,137, - 24,33,7,184,4,61,0,189,7,65,6,7,193,16,18,65, - 35,0,193,35,7,65,44,7,193,54,3,65,59,0,193,59, - 7,66,5,7,194,8,1,66,5,7,194,9,1,65,44,7, - 194,10,1,65,6,7,114,172,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,11,0,0,0,67,0,0,0, - 115,248,0,0,0,124,0,106,0,100,0,117,1,114,29,116, - 1,124,0,106,0,100,1,131,2,115,29,116,2,124,0,106, - 0,131,1,155,0,100,2,157,2,125,1,116,3,160,4,124, - 1,116,5,161,2,1,0,116,6,124,0,131,1,83,0,116, - 7,124,0,131,1,125,2,100,3,124,0,95,8,9,0,124, - 2,116,9,106,10,124,0,106,11,60,0,9,0,124,0,106, - 0,100,0,117,0,114,62,124,0,106,12,100,0,117,0,114, - 61,116,13,100,4,124,0,106,11,100,5,141,2,130,1,110, - 6,124,0,106,0,160,14,124,2,161,1,1,0,110,22,35, - 0,1,0,1,0,1,0,9,0,116,9,106,10,124,0,106, - 11,61,0,130,0,35,0,4,0,116,15,121,123,1,0,1, - 0,1,0,89,0,130,0,37,0,37,0,116,9,106,10,160, - 16,124,0,106,11,161,1,125,2,124,2,116,9,106,10,124, - 0,106,11,60,0,116,17,100,6,124,0,106,11,124,0,106, - 0,131,3,1,0,100,7,124,0,95,8,124,2,83,0,35, - 0,100,7,124,0,95,8,119,0,37,0,119,0,41,8,78, - 114,163,0,0,0,114,168,0,0,0,84,114,167,0,0,0, - 114,19,0,0,0,122,18,105,109,112,111,114,116,32,123,33, - 114,125,32,35,32,123,33,114,125,70,41,18,114,122,0,0, - 0,114,10,0,0,0,114,6,0,0,0,114,101,0,0,0, - 114,102,0,0,0,114,169,0,0,0,114,172,0,0,0,114, - 165,0,0,0,90,13,95,105,110,105,116,105,97,108,105,122, - 105,110,103,114,18,0,0,0,114,105,0,0,0,114,20,0, - 0,0,114,129,0,0,0,114,88,0,0,0,114,163,0,0, - 0,114,71,0,0,0,114,171,0,0,0,114,84,0,0,0, - 41,3,114,109,0,0,0,114,108,0,0,0,114,110,0,0, - 0,32,32,32,114,5,0,0,0,218,14,95,108,111,97,100, - 95,117,110,108,111,99,107,101,100,152,2,0,0,115,66,0, - 0,0,10,2,12,2,16,1,12,2,8,1,8,2,6,5, - 2,1,12,1,2,1,10,1,10,1,14,1,2,255,12,4, - 4,128,6,1,2,1,10,1,2,3,2,128,12,254,2,1, - 2,1,4,128,14,5,12,1,16,1,6,2,4,2,2,128, - 10,254,2,245,115,64,0,0,0,165,6,65,53,0,172,24, - 65,5,0,193,4,1,65,53,0,193,5,4,65,26,7,193, - 10,5,65,16,6,193,15,1,65,26,7,193,16,7,65,25, - 13,193,23,3,65,26,7,193,26,22,65,53,0,193,53,5, - 65,58,7,193,59,1,65,25,13,114,173,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, - 0,0,0,115,58,0,0,0,116,0,124,0,106,1,131,1, - 53,0,1,0,116,2,124,0,131,1,2,0,100,1,4,0, - 4,0,131,3,1,0,83,0,35,0,49,0,115,21,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,100,1, - 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, - 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, - 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, - 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, - 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, - 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, - 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, - 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, - 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, - 100,117,108,101,115,44,32,116,104,97,116,32,101,120,105,115, - 116,105,110,103,32,109,111,100,117,108,101,32,103,101,116,115, - 10,32,32,32,32,99,108,111,98,98,101,114,101,100,46,10, - 10,32,32,32,32,78,41,3,114,58,0,0,0,114,20,0, - 0,0,114,173,0,0,0,169,1,114,109,0,0,0,32,114, + 116,104,101,114,90,4,115,109,115,108,115,3,0,0,0,32, + 32,32,114,5,0,0,0,218,6,95,95,101,113,95,95,123, + 1,0,0,115,36,0,0,0,6,1,2,1,12,1,10,1, + 2,255,10,2,2,254,8,3,2,253,10,4,2,252,10,5, + 2,251,2,128,12,6,8,1,2,128,2,255,115,12,0,0, + 0,132,34,39,0,167,9,50,7,179,1,50,7,122,17,77, + 111,100,117,108,101,83,112,101,99,46,95,95,101,113,95,95, + 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,58,0,0,0,124,0,106,0,100,0, + 117,0,114,26,124,0,106,1,100,0,117,1,114,26,124,0, + 106,2,114,26,116,3,100,0,117,0,114,19,116,4,130,1, + 116,3,160,5,124,0,106,1,161,1,124,0,95,0,124,0, + 106,0,83,0,114,0,0,0,0,41,6,114,131,0,0,0, + 114,126,0,0,0,114,130,0,0,0,218,19,95,98,111,111, + 116,115,116,114,97,112,95,101,120,116,101,114,110,97,108,218, + 19,78,111,116,73,109,112,108,101,109,101,110,116,101,100,69, + 114,114,111,114,90,11,95,103,101,116,95,99,97,99,104,101, + 100,114,53,0,0,0,115,1,0,0,0,32,114,5,0,0, + 0,114,135,0,0,0,135,1,0,0,115,12,0,0,0,10, + 2,16,1,8,1,4,1,14,1,6,1,114,17,0,0,0, + 122,17,77,111,100,117,108,101,83,112,101,99,46,99,97,99, + 104,101,100,99,2,0,0,0,0,0,0,0,0,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,0,0,0,0,41,1,114,131, + 0,0,0,41,2,114,34,0,0,0,114,135,0,0,0,115, + 2,0,0,0,32,32,114,5,0,0,0,114,135,0,0,0, + 144,1,0,0,115,2,0,0,0,10,2,114,17,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,32,0,0,0,124,0,106,0,100,1, + 117,0,114,13,124,0,106,1,160,2,100,2,161,1,100,3, + 25,0,83,0,124,0,106,1,83,0,41,4,122,32,84,104, + 101,32,110,97,109,101,32,111,102,32,116,104,101,32,109,111, + 100,117,108,101,39,115,32,112,97,114,101,110,116,46,78,218, + 1,46,114,26,0,0,0,41,3,114,129,0,0,0,114,20, + 0,0,0,218,10,114,112,97,114,116,105,116,105,111,110,114, + 53,0,0,0,115,1,0,0,0,32,114,5,0,0,0,218, + 6,112,97,114,101,110,116,148,1,0,0,115,6,0,0,0, + 10,3,16,1,6,2,114,17,0,0,0,122,17,77,111,100, + 117,108,101,83,112,101,99,46,112,97,114,101,110,116,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,67, + 0,0,0,115,6,0,0,0,124,0,106,0,83,0,114,0, + 0,0,0,41,1,114,130,0,0,0,114,53,0,0,0,115, + 1,0,0,0,32,114,5,0,0,0,114,136,0,0,0,156, + 1,0,0,115,2,0,0,0,6,2,114,17,0,0,0,122, + 23,77,111,100,117,108,101,83,112,101,99,46,104,97,115,95, + 108,111,99,97,116,105,111,110,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,67,0,0,0,115,14,0, + 0,0,116,0,124,1,131,1,124,0,95,1,100,0,83,0, + 114,0,0,0,0,41,2,218,4,98,111,111,108,114,130,0, + 0,0,41,2,114,34,0,0,0,218,5,118,97,108,117,101, + 115,2,0,0,0,32,32,114,5,0,0,0,114,136,0,0, + 0,160,1,0,0,115,2,0,0,0,14,2,114,17,0,0, + 0,41,12,114,8,0,0,0,114,7,0,0,0,114,1,0, + 0,0,114,9,0,0,0,114,35,0,0,0,114,54,0,0, + 0,114,138,0,0,0,218,8,112,114,111,112,101,114,116,121, + 114,135,0,0,0,218,6,115,101,116,116,101,114,114,143,0, + 0,0,114,136,0,0,0,114,23,0,0,0,114,17,0,0, + 0,114,5,0,0,0,114,125,0,0,0,64,1,0,0,115, + 34,0,0,0,8,0,4,1,4,36,2,1,12,255,8,12, + 8,10,2,12,10,1,4,8,10,1,2,3,10,1,2,7, + 10,1,4,3,14,1,114,17,0,0,0,114,125,0,0,0, + 169,2,114,126,0,0,0,114,128,0,0,0,99,2,0,0, + 0,0,0,0,0,2,0,0,0,8,0,0,0,67,0,0, + 0,115,152,0,0,0,116,0,124,1,100,1,131,2,114,37, + 116,1,100,2,117,0,114,11,116,2,130,1,116,1,106,3, + 125,4,124,3,100,2,117,0,114,24,124,4,124,0,124,1, + 100,3,141,2,83,0,124,3,114,28,103,0,110,1,100,2, + 125,5,124,4,124,0,124,1,124,5,100,4,141,3,83,0, + 124,3,100,2,117,0,114,67,116,0,124,1,100,5,131,2, + 114,65,9,0,124,1,160,4,124,0,161,1,125,3,110,14, + 35,0,4,0,116,5,121,75,1,0,1,0,1,0,100,2, + 125,3,89,0,110,3,37,0,100,6,125,3,116,6,124,0, + 124,1,124,2,124,3,100,7,141,4,83,0,119,0,41,8, + 122,53,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, + 118,97,114,105,111,117,115,32,108,111,97,100,101,114,32,109, + 101,116,104,111,100,115,46,90,12,103,101,116,95,102,105,108, + 101,110,97,109,101,78,41,1,114,122,0,0,0,41,2,114, + 122,0,0,0,114,129,0,0,0,114,128,0,0,0,70,114, + 148,0,0,0,41,7,114,10,0,0,0,114,139,0,0,0, + 114,140,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,114,128, + 0,0,0,114,88,0,0,0,114,125,0,0,0,41,6,114, + 20,0,0,0,114,122,0,0,0,114,126,0,0,0,114,128, + 0,0,0,114,149,0,0,0,90,6,115,101,97,114,99,104, + 115,6,0,0,0,32,32,32,32,32,32,114,5,0,0,0, + 114,104,0,0,0,165,1,0,0,115,42,0,0,0,10,2, + 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, + 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, + 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, + 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, + 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, + 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, + 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, + 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, + 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, + 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, + 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, + 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, + 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, + 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, + 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, + 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, + 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, + 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, + 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, + 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, + 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, + 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, + 169,1,114,126,0,0,0,70,84,41,13,114,113,0,0,0, + 114,2,0,0,0,114,8,0,0,0,114,112,0,0,0,114, + 121,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, + 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, + 8,95,95,112,97,116,104,95,95,114,125,0,0,0,114,130, + 0,0,0,114,135,0,0,0,114,129,0,0,0,41,8,114, + 110,0,0,0,114,122,0,0,0,114,126,0,0,0,114,109, + 0,0,0,114,20,0,0,0,90,8,108,111,99,97,116,105, + 111,110,114,135,0,0,0,114,129,0,0,0,115,8,0,0, + 0,32,32,32,32,32,32,32,32,114,5,0,0,0,218,17, + 95,115,112,101,99,95,102,114,111,109,95,109,111,100,117,108, + 101,191,1,0,0,115,108,0,0,0,2,2,8,1,2,128, + 12,1,4,1,2,128,8,2,4,1,6,2,8,1,2,1, + 8,1,2,128,12,1,4,2,2,128,2,1,8,1,2,128, + 12,1,8,1,2,128,8,1,8,1,2,1,8,1,2,128, + 12,1,8,1,2,128,4,2,2,1,8,1,2,128,12,1, + 8,1,2,128,2,1,12,1,2,128,12,1,8,1,2,128, + 14,2,18,1,6,1,6,1,4,1,2,249,2,252,2,250, + 2,250,2,251,2,246,115,93,0,0,0,129,3,5,0,133, + 7,14,7,157,3,33,0,161,7,42,7,172,3,48,0,176, + 9,59,7,193,5,3,65,9,0,193,9,9,65,20,7,193, + 24,3,65,28,0,193,28,9,65,39,7,193,41,5,65,47, + 0,193,47,9,65,58,7,194,19,1,65,58,7,194,20,1, + 65,39,7,194,21,1,65,20,7,194,22,1,59,7,194,23, + 1,42,7,194,24,1,14,7,114,155,0,0,0,70,169,1, + 218,8,111,118,101,114,114,105,100,101,99,2,0,0,0,0, + 0,0,0,1,0,0,0,8,0,0,0,67,0,0,0,115, + 204,1,0,0,124,2,115,10,116,0,124,1,100,1,100,0, + 131,3,100,0,117,0,114,26,9,0,124,0,106,1,124,1, + 95,2,110,10,35,0,4,0,116,3,121,229,1,0,1,0, + 1,0,89,0,110,1,37,0,124,2,115,36,116,0,124,1, + 100,2,100,0,131,3,100,0,117,0,114,87,124,0,106,4, + 125,3,124,3,100,0,117,0,114,72,124,0,106,5,100,0, + 117,1,114,72,116,6,100,0,117,0,114,54,116,7,130,1, + 116,6,106,8,125,4,124,4,160,9,124,4,161,1,125,3, + 124,0,106,5,124,3,95,10,124,3,124,0,95,4,100,0, + 124,1,95,11,9,0,124,3,124,1,95,12,110,10,35,0, + 4,0,116,3,121,228,1,0,1,0,1,0,89,0,110,1, + 37,0,124,2,115,97,116,0,124,1,100,3,100,0,131,3, + 100,0,117,0,114,113,9,0,124,0,106,13,124,1,95,14, + 110,10,35,0,4,0,116,3,121,227,1,0,1,0,1,0, + 89,0,110,1,37,0,9,0,124,0,124,1,95,15,110,10, + 35,0,4,0,116,3,121,226,1,0,1,0,1,0,89,0, + 110,1,37,0,124,2,115,138,116,0,124,1,100,4,100,0, + 131,3,100,0,117,0,114,159,124,0,106,5,100,0,117,1, + 114,159,9,0,124,0,106,5,124,1,95,16,110,10,35,0, + 4,0,116,3,121,225,1,0,1,0,1,0,89,0,110,1, + 37,0,124,0,106,17,114,221,124,2,115,172,116,0,124,1, + 100,5,100,0,131,3,100,0,117,0,114,188,9,0,124,0, + 106,18,124,1,95,11,110,10,35,0,4,0,116,3,121,224, + 1,0,1,0,1,0,89,0,110,1,37,0,124,2,115,198, + 116,0,124,1,100,6,100,0,131,3,100,0,117,0,114,221, + 124,0,106,19,100,0,117,1,114,221,9,0,124,0,106,19, + 124,1,95,20,124,1,83,0,35,0,4,0,116,3,121,223, + 1,0,1,0,1,0,89,0,124,1,83,0,37,0,124,1, + 83,0,119,0,119,0,119,0,119,0,119,0,119,0,119,0, + 41,7,78,114,8,0,0,0,114,112,0,0,0,218,11,95, + 95,112,97,99,107,97,103,101,95,95,114,154,0,0,0,114, + 121,0,0,0,114,152,0,0,0,41,21,114,12,0,0,0, + 114,20,0,0,0,114,8,0,0,0,114,2,0,0,0,114, + 122,0,0,0,114,129,0,0,0,114,139,0,0,0,114,140, + 0,0,0,218,16,95,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,218,7,95,95,110,101,119,95,95,90,5, + 95,112,97,116,104,114,121,0,0,0,114,112,0,0,0,114, + 143,0,0,0,114,158,0,0,0,114,113,0,0,0,114,154, + 0,0,0,114,136,0,0,0,114,126,0,0,0,114,135,0, + 0,0,114,152,0,0,0,41,5,114,109,0,0,0,114,110, + 0,0,0,114,157,0,0,0,114,122,0,0,0,114,159,0, + 0,0,115,5,0,0,0,32,32,32,32,32,114,5,0,0, + 0,218,18,95,105,110,105,116,95,109,111,100,117,108,101,95, + 97,116,116,114,115,236,1,0,0,115,142,0,0,0,20,4, + 2,1,10,1,2,128,12,1,4,1,2,128,20,2,6,1, + 8,1,10,2,8,1,4,1,6,1,10,2,8,1,6,1, + 6,11,2,1,8,1,2,128,12,1,4,1,2,128,20,2, + 2,1,10,1,2,128,12,1,4,1,2,128,2,2,8,1, + 2,128,12,1,4,1,2,128,20,2,10,1,2,1,10,1, + 2,128,12,1,4,1,2,128,6,2,20,1,2,1,10,1, + 2,128,12,1,4,1,2,128,20,2,10,1,2,1,8,1, + 4,3,2,128,12,254,2,1,4,1,2,128,4,0,2,254, + 2,249,2,249,2,249,2,251,2,250,2,228,115,121,0,0, + 0,139,4,16,0,144,7,25,7,193,9,3,65,13,0,193, + 13,7,65,22,7,193,34,4,65,39,0,193,39,7,65,48, + 7,193,50,3,65,54,0,193,54,7,65,63,7,194,16,4, + 66,21,0,194,21,7,66,30,7,194,45,4,66,50,0,194, + 50,7,66,59,7,195,12,4,67,18,0,195,18,7,67,28, + 7,195,31,1,67,28,7,195,32,1,66,59,7,195,33,1, + 66,30,7,195,34,1,65,63,7,195,35,1,65,48,7,195, + 36,1,65,22,7,195,37,1,25,7,114,161,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 67,0,0,0,115,82,0,0,0,100,1,125,1,116,0,124, + 0,106,1,100,2,131,2,114,15,124,0,106,1,160,2,124, + 0,161,1,125,1,110,10,116,0,124,0,106,1,100,3,131, + 2,114,25,116,3,100,4,131,1,130,1,124,1,100,1,117, + 0,114,34,116,4,124,0,106,5,131,1,125,1,116,6,124, + 0,124,1,131,2,1,0,124,1,83,0,41,5,122,43,67, + 114,101,97,116,101,32,97,32,109,111,100,117,108,101,32,98, + 97,115,101,100,32,111,110,32,116,104,101,32,112,114,111,118, + 105,100,101,100,32,115,112,101,99,46,78,218,13,99,114,101, + 97,116,101,95,109,111,100,117,108,101,218,11,101,120,101,99, + 95,109,111,100,117,108,101,122,66,108,111,97,100,101,114,115, + 32,116,104,97,116,32,100,101,102,105,110,101,32,101,120,101, + 99,95,109,111,100,117,108,101,40,41,32,109,117,115,116,32, + 97,108,115,111,32,100,101,102,105,110,101,32,99,114,101,97, + 116,101,95,109,111,100,117,108,101,40,41,41,7,114,10,0, + 0,0,114,122,0,0,0,114,162,0,0,0,114,88,0,0, + 0,114,21,0,0,0,114,20,0,0,0,114,161,0,0,0, + 169,2,114,109,0,0,0,114,110,0,0,0,115,2,0,0, + 0,32,32,114,5,0,0,0,218,16,109,111,100,117,108,101, + 95,102,114,111,109,95,115,112,101,99,52,2,0,0,115,18, + 0,0,0,4,3,12,1,14,3,12,1,8,1,8,2,10, + 1,10,1,4,1,114,17,0,0,0,114,165,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, + 0,114,7,100,2,110,2,124,0,106,0,125,1,124,0,106, + 1,100,1,117,0,114,32,124,0,106,2,100,1,117,0,114, + 25,100,3,160,3,124,1,161,1,83,0,100,4,160,3,124, + 1,124,0,106,2,161,2,83,0,124,0,106,4,114,42,100, + 5,160,3,124,1,124,0,106,1,161,2,83,0,100,6,160, + 3,124,0,106,0,124,0,106,1,161,2,83,0,41,7,122, + 38,82,101,116,117,114,110,32,116,104,101,32,114,101,112,114, + 32,116,111,32,117,115,101,32,102,111,114,32,116,104,101,32, + 109,111,100,117,108,101,46,78,114,115,0,0,0,114,116,0, + 0,0,114,117,0,0,0,114,118,0,0,0,250,18,60,109, + 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, + 41,5,114,20,0,0,0,114,126,0,0,0,114,122,0,0, + 0,114,51,0,0,0,114,136,0,0,0,41,2,114,109,0, + 0,0,114,20,0,0,0,115,2,0,0,0,32,32,114,5, + 0,0,0,114,119,0,0,0,69,2,0,0,115,16,0,0, + 0,20,3,10,1,10,1,10,1,14,2,6,2,14,1,16, + 2,114,17,0,0,0,114,119,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,10,0,0,0,67,0,0,0, + 115,32,1,0,0,124,0,106,0,125,2,116,1,124,2,131, + 1,53,0,1,0,116,2,106,3,160,4,124,2,161,1,124, + 1,117,1,114,27,100,1,160,5,124,2,161,1,125,3,116, + 6,124,3,124,2,100,2,141,2,130,1,9,0,124,0,106, + 7,100,3,117,0,114,53,124,0,106,8,100,3,117,0,114, + 45,116,6,100,4,124,0,106,0,100,2,141,2,130,1,116, + 9,124,0,124,1,100,5,100,6,141,3,1,0,110,40,116, + 9,124,0,124,1,100,5,100,6,141,3,1,0,116,10,124, + 0,106,7,100,7,131,2,115,87,116,11,124,0,106,7,131, + 1,155,0,100,8,157,2,125,3,116,12,160,13,124,3,116, + 14,161,2,1,0,124,0,106,7,160,15,124,2,161,1,1, + 0,110,6,124,0,106,7,160,16,124,1,161,1,1,0,116, + 2,106,3,160,17,124,0,106,0,161,1,125,1,124,1,116, + 2,106,3,124,0,106,0,60,0,110,16,35,0,116,2,106, + 3,160,17,124,0,106,0,161,1,125,1,124,1,116,2,106, + 3,124,0,106,0,60,0,119,0,37,0,9,0,100,3,4, + 0,4,0,131,3,1,0,124,1,83,0,35,0,49,0,115, + 136,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, + 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, + 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, + 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, + 30,109,111,100,117,108,101,32,123,33,114,125,32,110,111,116, + 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,114, + 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, + 111,97,100,101,114,84,114,156,0,0,0,114,163,0,0,0, + 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, + 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, + 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, + 114,58,0,0,0,114,18,0,0,0,114,105,0,0,0,114, + 39,0,0,0,114,51,0,0,0,114,88,0,0,0,114,122, + 0,0,0,114,129,0,0,0,114,161,0,0,0,114,10,0, + 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, + 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, + 218,11,108,111,97,100,95,109,111,100,117,108,101,114,163,0, + 0,0,218,3,112,111,112,41,4,114,109,0,0,0,114,110, + 0,0,0,114,20,0,0,0,114,108,0,0,0,115,4,0, + 0,0,32,32,32,32,114,5,0,0,0,114,106,0,0,0, + 86,2,0,0,115,50,0,0,0,6,2,10,1,16,1,10, + 1,12,1,2,1,10,1,10,1,14,1,16,2,14,2,12, + 1,16,1,12,2,14,1,12,2,14,4,14,1,2,128,14, + 255,18,1,10,233,4,24,22,128,4,0,115,41,0,0,0, + 135,20,66,3,3,156,65,1,65,43,2,193,29,14,66,3, + 3,193,43,15,65,58,9,193,58,1,66,3,3,194,3,4, + 66,7,11,194,8,3,66,7,11,114,106,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,22,1,0,0,9,0,124,0,106,0,160,1, + 124,0,106,2,161,1,1,0,110,25,35,0,1,0,1,0, + 1,0,124,0,106,2,116,3,106,4,118,0,114,32,116,3, + 106,4,160,5,124,0,106,2,161,1,125,1,124,1,116,3, + 106,4,124,0,106,2,60,0,130,0,37,0,116,3,106,4, + 160,5,124,0,106,2,161,1,125,1,124,1,116,3,106,4, + 124,0,106,2,60,0,116,6,124,1,100,1,100,0,131,3, + 100,0,117,0,114,71,9,0,124,0,106,0,124,1,95,7, + 110,10,35,0,4,0,116,8,121,138,1,0,1,0,1,0, + 89,0,110,1,37,0,116,6,124,1,100,2,100,0,131,3, + 100,0,117,0,114,109,9,0,124,1,106,9,124,1,95,10, + 116,11,124,1,100,3,131,2,115,98,124,0,106,2,160,12, + 100,4,161,1,100,5,25,0,124,1,95,10,110,10,35,0, + 4,0,116,8,121,137,1,0,1,0,1,0,89,0,110,1, + 37,0,116,6,124,1,100,6,100,0,131,3,100,0,117,0, + 114,134,9,0,124,0,124,1,95,13,124,1,83,0,35,0, + 4,0,116,8,121,136,1,0,1,0,1,0,89,0,124,1, + 83,0,37,0,124,1,83,0,119,0,119,0,119,0,41,7, + 78,114,112,0,0,0,114,158,0,0,0,114,154,0,0,0, + 114,141,0,0,0,114,26,0,0,0,114,113,0,0,0,41, + 14,114,122,0,0,0,114,170,0,0,0,114,20,0,0,0, + 114,18,0,0,0,114,105,0,0,0,114,171,0,0,0,114, + 12,0,0,0,114,112,0,0,0,114,2,0,0,0,114,8, + 0,0,0,114,158,0,0,0,114,10,0,0,0,114,142,0, + 0,0,114,113,0,0,0,114,164,0,0,0,115,2,0,0, + 0,32,32,114,5,0,0,0,218,25,95,108,111,97,100,95, + 98,97,99,107,119,97,114,100,95,99,111,109,112,97,116,105, + 98,108,101,116,2,0,0,115,80,0,0,0,2,3,16,1, + 2,128,6,1,12,1,14,1,12,1,2,1,2,128,14,3, + 12,1,16,1,2,1,10,1,2,128,12,1,4,1,2,128, + 16,1,2,1,8,4,10,1,18,1,4,128,12,1,4,1, + 2,128,16,1,2,1,6,1,4,3,2,128,12,254,2,1, + 4,1,2,128,4,0,2,254,2,251,2,246,115,59,0,0, + 0,129,7,9,0,137,24,33,7,184,4,61,0,189,7,65, + 6,7,193,16,18,65,35,0,193,35,7,65,44,7,193,54, + 3,65,59,0,193,59,7,66,5,7,194,8,1,66,5,7, + 194,9,1,65,44,7,194,10,1,65,6,7,114,172,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,11,0, + 0,0,67,0,0,0,115,248,0,0,0,124,0,106,0,100, + 0,117,1,114,29,116,1,124,0,106,0,100,1,131,2,115, + 29,116,2,124,0,106,0,131,1,155,0,100,2,157,2,125, + 1,116,3,160,4,124,1,116,5,161,2,1,0,116,6,124, + 0,131,1,83,0,116,7,124,0,131,1,125,2,100,3,124, + 0,95,8,9,0,124,2,116,9,106,10,124,0,106,11,60, + 0,9,0,124,0,106,0,100,0,117,0,114,62,124,0,106, + 12,100,0,117,0,114,61,116,13,100,4,124,0,106,11,100, + 5,141,2,130,1,110,6,124,0,106,0,160,14,124,2,161, + 1,1,0,110,22,35,0,1,0,1,0,1,0,9,0,116, + 9,106,10,124,0,106,11,61,0,130,0,35,0,4,0,116, + 15,121,123,1,0,1,0,1,0,89,0,130,0,37,0,37, + 0,116,9,106,10,160,16,124,0,106,11,161,1,125,2,124, + 2,116,9,106,10,124,0,106,11,60,0,116,17,100,6,124, + 0,106,11,124,0,106,0,131,3,1,0,100,7,124,0,95, + 8,124,2,83,0,35,0,100,7,124,0,95,8,119,0,37, + 0,119,0,41,8,78,114,163,0,0,0,114,168,0,0,0, + 84,114,167,0,0,0,114,19,0,0,0,122,18,105,109,112, + 111,114,116,32,123,33,114,125,32,35,32,123,33,114,125,70, + 41,18,114,122,0,0,0,114,10,0,0,0,114,6,0,0, + 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, + 114,172,0,0,0,114,165,0,0,0,90,13,95,105,110,105, + 116,105,97,108,105,122,105,110,103,114,18,0,0,0,114,105, + 0,0,0,114,20,0,0,0,114,129,0,0,0,114,88,0, + 0,0,114,163,0,0,0,114,71,0,0,0,114,171,0,0, + 0,114,84,0,0,0,41,3,114,109,0,0,0,114,108,0, + 0,0,114,110,0,0,0,115,3,0,0,0,32,32,32,114, + 5,0,0,0,218,14,95,108,111,97,100,95,117,110,108,111, + 99,107,101,100,152,2,0,0,115,66,0,0,0,10,2,12, + 2,16,1,12,2,8,1,8,2,6,5,2,1,12,1,2, + 1,10,1,10,1,14,1,2,255,12,4,4,128,6,1,2, + 1,10,1,2,3,2,128,12,254,2,1,2,1,4,128,14, + 5,12,1,16,1,6,2,4,2,2,128,10,254,2,245,115, + 64,0,0,0,165,6,65,53,0,172,24,65,5,0,193,4, + 1,65,53,0,193,5,4,65,26,7,193,10,5,65,16,6, + 193,15,1,65,26,7,193,16,7,65,25,13,193,23,3,65, + 26,7,193,26,22,65,53,0,193,53,5,65,58,7,193,59, + 1,65,25,13,114,173,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,9,0,0,0,67,0,0,0,115,58, + 0,0,0,116,0,124,0,106,1,131,1,53,0,1,0,116, + 2,124,0,131,1,2,0,100,1,4,0,4,0,131,3,1, + 0,83,0,35,0,49,0,115,21,119,4,37,0,1,0,1, + 0,1,0,89,0,1,0,1,0,100,1,83,0,41,2,122, + 191,82,101,116,117,114,110,32,97,32,110,101,119,32,109,111, + 100,117,108,101,32,111,98,106,101,99,116,44,32,108,111,97, + 100,101,100,32,98,121,32,116,104,101,32,115,112,101,99,39, + 115,32,108,111,97,100,101,114,46,10,10,32,32,32,32,84, + 104,101,32,109,111,100,117,108,101,32,105,115,32,110,111,116, + 32,97,100,100,101,100,32,116,111,32,105,116,115,32,112,97, + 114,101,110,116,46,10,10,32,32,32,32,73,102,32,97,32, + 109,111,100,117,108,101,32,105,115,32,97,108,114,101,97,100, + 121,32,105,110,32,115,121,115,46,109,111,100,117,108,101,115, + 44,32,116,104,97,116,32,101,120,105,115,116,105,110,103,32, + 109,111,100,117,108,101,32,103,101,116,115,10,32,32,32,32, + 99,108,111,98,98,101,114,101,100,46,10,10,32,32,32,32, + 78,41,3,114,58,0,0,0,114,20,0,0,0,114,173,0, + 0,0,169,1,114,109,0,0,0,115,1,0,0,0,32,114, 5,0,0,0,114,107,0,0,0,197,2,0,0,115,10,0, 0,0,12,9,6,1,14,255,22,128,4,0,115,12,0,0, 0,133,4,16,3,144,4,20,11,149,3,20,11,114,107,0, @@ -1134,233 +1149,238 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 109,111,100,117,108,101,32,122,2,32,40,122,2,41,62,78, 41,6,114,101,0,0,0,114,102,0,0,0,114,103,0,0, 0,114,8,0,0,0,114,175,0,0,0,114,151,0,0,0, - 169,1,114,110,0,0,0,32,114,5,0,0,0,114,114,0, - 0,0,223,2,0,0,115,8,0,0,0,6,7,2,1,4, - 255,22,2,114,17,0,0,0,122,27,66,117,105,108,116,105, - 110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101, - 95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,67,0,0,0,115,42,0,0,0, - 124,2,100,0,117,1,114,6,100,0,83,0,116,0,160,1, - 124,1,161,1,114,19,116,2,124,1,124,0,124,0,106,3, - 100,1,141,3,83,0,100,0,83,0,169,2,78,114,150,0, - 0,0,41,4,114,65,0,0,0,90,10,105,115,95,98,117, - 105,108,116,105,110,114,104,0,0,0,114,151,0,0,0,169, - 4,218,3,99,108,115,114,90,0,0,0,218,4,112,97,116, - 104,218,6,116,97,114,103,101,116,32,32,32,32,114,5,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,234,2,0, - 0,115,10,0,0,0,8,2,4,1,10,1,16,1,4,2, - 114,17,0,0,0,122,25,66,117,105,108,116,105,110,73,109, - 112,111,114,116,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,67,0,0,0,115,42,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, - 125,3,124,3,100,2,117,1,114,19,124,3,106,4,83,0, - 100,2,83,0,41,3,122,175,70,105,110,100,32,116,104,101, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 46,10,10,32,32,32,32,32,32,32,32,73,102,32,39,112, - 97,116,104,39,32,105,115,32,101,118,101,114,32,115,112,101, - 99,105,102,105,101,100,32,116,104,101,110,32,116,104,101,32, - 115,101,97,114,99,104,32,105,115,32,99,111,110,115,105,100, - 101,114,101,100,32,97,32,102,97,105,108,117,114,101,46,10, - 10,32,32,32,32,32,32,32,32,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,122,106,66,117,105,108,116,105,110, - 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, - 100,117,108,101,40,41,32,105,115,32,100,101,112,114,101,99, - 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, - 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, - 121,116,104,111,110,32,51,46,49,50,59,32,117,115,101,32, - 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, - 101,97,100,78,41,5,114,101,0,0,0,114,102,0,0,0, - 114,103,0,0,0,114,183,0,0,0,114,122,0,0,0,41, - 4,114,180,0,0,0,114,90,0,0,0,114,181,0,0,0, - 114,109,0,0,0,32,32,32,32,114,5,0,0,0,218,11, - 102,105,110,100,95,109,111,100,117,108,101,243,2,0,0,115, - 10,0,0,0,6,9,2,2,4,254,12,3,18,1,114,17, + 169,1,114,110,0,0,0,115,1,0,0,0,32,114,5,0, + 0,0,114,114,0,0,0,223,2,0,0,115,8,0,0,0, + 6,7,2,1,4,255,22,2,114,17,0,0,0,122,27,66, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,109, + 111,100,117,108,101,95,114,101,112,114,78,99,4,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,67,0,0,0, + 115,42,0,0,0,124,2,100,0,117,1,114,6,100,0,83, + 0,116,0,160,1,124,1,161,1,114,19,116,2,124,1,124, + 0,124,0,106,3,100,1,141,3,83,0,100,0,83,0,169, + 2,78,114,150,0,0,0,41,4,114,65,0,0,0,90,10, + 105,115,95,98,117,105,108,116,105,110,114,104,0,0,0,114, + 151,0,0,0,169,4,218,3,99,108,115,114,90,0,0,0, + 218,4,112,97,116,104,218,6,116,97,114,103,101,116,115,4, + 0,0,0,32,32,32,32,114,5,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,234,2,0,0,115,10,0,0,0, + 8,2,4,1,10,1,16,1,4,2,114,17,0,0,0,122, + 25,66,117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115, + 42,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 124,0,160,3,124,1,124,2,161,2,125,3,124,3,100,2, + 117,1,114,19,124,3,106,4,83,0,100,2,83,0,41,3, + 122,175,70,105,110,100,32,116,104,101,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,46,10,10,32,32,32, + 32,32,32,32,32,73,102,32,39,112,97,116,104,39,32,105, + 115,32,101,118,101,114,32,115,112,101,99,105,102,105,101,100, + 32,116,104,101,110,32,116,104,101,32,115,101,97,114,99,104, + 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, + 32,102,97,105,108,117,114,101,46,10,10,32,32,32,32,32, + 32,32,32,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,122,106,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,102,105,110,100,95,109,111,100,117,108,101,40,41, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, + 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, + 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, + 51,46,49,50,59,32,117,115,101,32,102,105,110,100,95,115, + 112,101,99,40,41,32,105,110,115,116,101,97,100,78,41,5, + 114,101,0,0,0,114,102,0,0,0,114,103,0,0,0,114, + 183,0,0,0,114,122,0,0,0,41,4,114,180,0,0,0, + 114,90,0,0,0,114,181,0,0,0,114,109,0,0,0,115, + 4,0,0,0,32,32,32,32,114,5,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,243,2,0,0,115,10, + 0,0,0,6,9,2,2,4,254,12,3,18,1,114,17,0, + 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,46,0,0,0,124,0,106,0,116,1,106, + 2,118,1,114,17,116,3,100,1,160,4,124,0,106,0,161, + 1,124,0,106,0,100,2,141,2,130,1,116,5,116,6,106, + 7,124,0,131,2,83,0,41,4,122,24,67,114,101,97,116, + 101,32,97,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,114,86,0,0,0,114,19,0,0,0,78,41,8, + 114,20,0,0,0,114,18,0,0,0,114,87,0,0,0,114, + 88,0,0,0,114,51,0,0,0,114,75,0,0,0,114,65, + 0,0,0,90,14,99,114,101,97,116,101,95,98,117,105,108, + 116,105,110,114,174,0,0,0,115,1,0,0,0,32,114,5, + 0,0,0,114,162,0,0,0,2,3,0,0,115,10,0,0, + 0,12,3,12,1,4,1,6,255,12,2,114,17,0,0,0, + 122,29,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 67,0,0,0,115,16,0,0,0,116,0,116,1,106,2,124, + 0,131,2,1,0,100,1,83,0,41,2,122,22,69,120,101, + 99,32,97,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,78,41,3,114,75,0,0,0,114,65,0,0,0, + 90,12,101,120,101,99,95,98,117,105,108,116,105,110,114,177, + 0,0,0,115,1,0,0,0,32,114,5,0,0,0,114,163, + 0,0,0,10,3,0,0,115,2,0,0,0,16,3,114,17, 0,0,0,122,27,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, - 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,46,0,0,0,124,0,106,0,116,1, - 106,2,118,1,114,17,116,3,100,1,160,4,124,0,106,0, - 161,1,124,0,106,0,100,2,141,2,130,1,116,5,116,6, - 106,7,124,0,131,2,83,0,41,4,122,24,67,114,101,97, - 116,101,32,97,32,98,117,105,108,116,45,105,110,32,109,111, - 100,117,108,101,114,86,0,0,0,114,19,0,0,0,78,41, - 8,114,20,0,0,0,114,18,0,0,0,114,87,0,0,0, - 114,88,0,0,0,114,51,0,0,0,114,75,0,0,0,114, - 65,0,0,0,90,14,99,114,101,97,116,101,95,98,117,105, - 108,116,105,110,114,174,0,0,0,32,114,5,0,0,0,114, - 162,0,0,0,2,3,0,0,115,10,0,0,0,12,3,12, - 1,4,1,6,255,12,2,114,17,0,0,0,122,29,66,117, - 105,108,116,105,110,73,109,112,111,114,116,101,114,46,99,114, - 101,97,116,101,95,109,111,100,117,108,101,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, - 115,16,0,0,0,116,0,116,1,106,2,124,0,131,2,1, - 0,100,1,83,0,41,2,122,22,69,120,101,99,32,97,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,78, - 41,3,114,75,0,0,0,114,65,0,0,0,90,12,101,120, - 101,99,95,98,117,105,108,116,105,110,114,177,0,0,0,32, - 114,5,0,0,0,114,163,0,0,0,10,3,0,0,115,2, - 0,0,0,16,3,114,17,0,0,0,122,27,66,117,105,108, - 116,105,110,73,109,112,111,114,116,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,1,0,0,0,67,0,0,0,243,4,0,0, - 0,100,1,83,0,41,2,122,57,82,101,116,117,114,110,32, - 78,111,110,101,32,97,115,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,115,32,100,111,32,110,111,116,32, - 104,97,118,101,32,99,111,100,101,32,111,98,106,101,99,116, - 115,46,78,114,23,0,0,0,169,2,114,180,0,0,0,114, - 90,0,0,0,32,32,114,5,0,0,0,218,8,103,101,116, - 95,99,111,100,101,15,3,0,0,243,2,0,0,0,4,4, - 114,17,0,0,0,122,24,66,117,105,108,116,105,110,73,109, - 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 67,0,0,0,114,185,0,0,0,41,2,122,56,82,101,116, - 117,114,110,32,78,111,110,101,32,97,115,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,32,100,111,32, - 110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,32, - 99,111,100,101,46,78,114,23,0,0,0,114,186,0,0,0, - 32,32,114,5,0,0,0,218,10,103,101,116,95,115,111,117, - 114,99,101,21,3,0,0,114,188,0,0,0,114,17,0,0, - 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, + 114,116,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,1,0,0, + 0,67,0,0,0,243,4,0,0,0,100,1,83,0,41,2, + 122,57,82,101,116,117,114,110,32,78,111,110,101,32,97,115, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 115,32,100,111,32,110,111,116,32,104,97,118,101,32,99,111, + 100,101,32,111,98,106,101,99,116,115,46,78,114,23,0,0, + 0,169,2,114,180,0,0,0,114,90,0,0,0,115,2,0, + 0,0,32,32,114,5,0,0,0,218,8,103,101,116,95,99, + 111,100,101,15,3,0,0,243,2,0,0,0,4,4,114,17, + 0,0,0,122,24,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,103,101,116,95,99,111,100,101,99,2,0, 0,0,0,0,0,0,0,0,0,0,1,0,0,0,67,0, - 0,0,114,185,0,0,0,41,3,122,52,82,101,116,117,114, - 110,32,70,97,108,115,101,32,97,115,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,115,32,97,114,101,32, - 110,101,118,101,114,32,112,97,99,107,97,103,101,115,46,70, - 78,114,23,0,0,0,114,186,0,0,0,32,32,114,5,0, - 0,0,114,128,0,0,0,27,3,0,0,114,188,0,0,0, - 114,17,0,0,0,122,26,66,117,105,108,116,105,110,73,109, - 112,111,114,116,101,114,46,105,115,95,112,97,99,107,97,103, - 101,169,2,78,78,114,0,0,0,0,41,18,114,8,0,0, - 0,114,7,0,0,0,114,1,0,0,0,114,9,0,0,0, - 114,151,0,0,0,218,12,115,116,97,116,105,99,109,101,116, - 104,111,100,114,114,0,0,0,218,11,99,108,97,115,115,109, - 101,116,104,111,100,114,183,0,0,0,114,184,0,0,0,114, - 162,0,0,0,114,163,0,0,0,114,95,0,0,0,114,187, - 0,0,0,114,189,0,0,0,114,128,0,0,0,114,111,0, - 0,0,114,170,0,0,0,114,23,0,0,0,114,5,0,0, - 0,114,175,0,0,0,212,2,0,0,115,46,0,0,0,8, - 0,4,2,4,7,2,2,10,1,2,10,12,1,2,8,12, - 1,2,14,10,1,2,7,10,1,2,4,2,1,12,1,2, - 4,2,1,12,1,2,4,2,1,12,1,12,4,114,17,0, - 0,0,114,175,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,64,0,0,0,115,144,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, - 4,101,5,100,3,100,4,132,0,131,1,90,6,101,7,100, - 22,100,6,100,7,132,1,131,1,90,8,101,7,100,23,100, - 8,100,9,132,1,131,1,90,9,101,5,100,10,100,11,132, - 0,131,1,90,10,101,5,100,12,100,13,132,0,131,1,90, - 11,101,7,100,14,100,15,132,0,131,1,90,12,101,7,101, - 13,100,16,100,17,132,0,131,1,131,1,90,14,101,7,101, - 13,100,18,100,19,132,0,131,1,131,1,90,15,101,7,101, - 13,100,20,100,21,132,0,131,1,131,1,90,16,100,5,83, - 0,41,24,218,14,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,122,142,77,101,116,97,32,112,97,116,104,32,105, - 109,112,111,114,116,32,102,111,114,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,65, - 108,108,32,109,101,116,104,111,100,115,32,97,114,101,32,101, - 105,116,104,101,114,32,99,108,97,115,115,32,111,114,32,115, - 116,97,116,105,99,32,109,101,116,104,111,100,115,32,116,111, - 32,97,118,111,105,100,32,116,104,101,32,110,101,101,100,32, - 116,111,10,32,32,32,32,105,110,115,116,97,110,116,105,97, - 116,101,32,116,104,101,32,99,108,97,115,115,46,10,10,32, - 32,32,32,90,6,102,114,111,122,101,110,99,1,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, - 115,28,0,0,0,116,0,160,1,100,1,116,2,161,2,1, - 0,100,2,160,3,124,0,106,4,116,5,106,6,161,2,83, - 0,41,4,114,176,0,0,0,122,80,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,46,109,111,100,117,108,101,95, - 114,101,112,114,40,41,32,105,115,32,100,101,112,114,101,99, - 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, - 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, - 121,116,104,111,110,32,51,46,49,50,114,166,0,0,0,78, - 41,7,114,101,0,0,0,114,102,0,0,0,114,103,0,0, - 0,114,51,0,0,0,114,8,0,0,0,114,193,0,0,0, - 114,151,0,0,0,41,1,218,1,109,32,114,5,0,0,0, - 114,114,0,0,0,47,3,0,0,115,8,0,0,0,6,7, - 2,1,4,255,16,2,114,17,0,0,0,122,26,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,46,109,111,100,117, - 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,30,0, - 0,0,116,0,160,1,124,1,161,1,114,13,116,2,124,1, - 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, - 114,178,0,0,0,41,4,114,65,0,0,0,114,98,0,0, - 0,114,104,0,0,0,114,151,0,0,0,114,179,0,0,0, - 32,32,32,32,114,5,0,0,0,114,183,0,0,0,58,3, - 0,0,115,6,0,0,0,10,2,16,1,4,2,114,17,0, - 0,0,122,24,70,114,111,122,101,110,73,109,112,111,114,116, - 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,67,0,0, - 0,115,30,0,0,0,116,0,160,1,100,1,116,2,161,2, - 1,0,116,3,160,4,124,1,161,1,114,13,124,0,83,0, - 100,2,83,0,41,3,122,93,70,105,110,100,32,97,32,102, - 114,111,122,101,110,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,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,122,105,70,114,111,122,101,110,73,109,112, - 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 0,0,114,185,0,0,0,41,2,122,56,82,101,116,117,114, + 110,32,78,111,110,101,32,97,115,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,32,100,111,32,110,111, + 116,32,104,97,118,101,32,115,111,117,114,99,101,32,99,111, + 100,101,46,78,114,23,0,0,0,114,186,0,0,0,115,2, + 0,0,0,32,32,114,5,0,0,0,218,10,103,101,116,95, + 115,111,117,114,99,101,21,3,0,0,114,188,0,0,0,114, + 17,0,0,0,122,26,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,103,101,116,95,115,111,117,114,99,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,67,0,0,0,114,185,0,0,0,41,3,122,52,82,101, + 116,117,114,110,32,70,97,108,115,101,32,97,115,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97, + 114,101,32,110,101,118,101,114,32,112,97,99,107,97,103,101, + 115,46,70,78,114,23,0,0,0,114,186,0,0,0,115,2, + 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,27, + 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, + 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, + 0,0,41,18,114,8,0,0,0,114,7,0,0,0,114,1, + 0,0,0,114,9,0,0,0,114,151,0,0,0,218,12,115, + 116,97,116,105,99,109,101,116,104,111,100,114,114,0,0,0, + 218,11,99,108,97,115,115,109,101,116,104,111,100,114,183,0, + 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, + 0,114,95,0,0,0,114,187,0,0,0,114,189,0,0,0, + 114,128,0,0,0,114,111,0,0,0,114,170,0,0,0,114, + 23,0,0,0,114,17,0,0,0,114,5,0,0,0,114,175, + 0,0,0,212,2,0,0,115,46,0,0,0,8,0,4,2, + 4,7,2,2,10,1,2,10,12,1,2,8,12,1,2,14, + 10,1,2,7,10,1,2,4,2,1,12,1,2,4,2,1, + 12,1,2,4,2,1,12,1,12,4,114,17,0,0,0,114, + 175,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,64,0,0,0,115,144,0,0,0,101,0, + 90,1,100,0,90,2,100,1,90,3,100,2,90,4,101,5, + 100,3,100,4,132,0,131,1,90,6,101,7,100,22,100,6, + 100,7,132,1,131,1,90,8,101,7,100,23,100,8,100,9, + 132,1,131,1,90,9,101,5,100,10,100,11,132,0,131,1, + 90,10,101,5,100,12,100,13,132,0,131,1,90,11,101,7, + 100,14,100,15,132,0,131,1,90,12,101,7,101,13,100,16, + 100,17,132,0,131,1,131,1,90,14,101,7,101,13,100,18, + 100,19,132,0,131,1,131,1,90,15,101,7,101,13,100,20, + 100,21,132,0,131,1,131,1,90,16,100,5,83,0,41,24, + 218,14,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 122,142,77,101,116,97,32,112,97,116,104,32,105,109,112,111, + 114,116,32,102,111,114,32,102,114,111,122,101,110,32,109,111, + 100,117,108,101,115,46,10,10,32,32,32,32,65,108,108,32, + 109,101,116,104,111,100,115,32,97,114,101,32,101,105,116,104, + 101,114,32,99,108,97,115,115,32,111,114,32,115,116,97,116, + 105,99,32,109,101,116,104,111,100,115,32,116,111,32,97,118, + 111,105,100,32,116,104,101,32,110,101,101,100,32,116,111,10, + 32,32,32,32,105,110,115,116,97,110,116,105,97,116,101,32, + 116,104,101,32,99,108,97,115,115,46,10,10,32,32,32,32, + 90,6,102,114,111,122,101,110,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,67,0,0,0,115,28,0, + 0,0,116,0,160,1,100,1,116,2,161,2,1,0,100,2, + 160,3,124,0,106,4,116,5,106,6,161,2,83,0,41,4, + 114,176,0,0,0,122,80,70,114,111,122,101,110,73,109,112, + 111,114,116,101,114,46,109,111,100,117,108,101,95,114,101,112, + 114,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, - 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, - 78,41,5,114,101,0,0,0,114,102,0,0,0,114,103,0, - 0,0,114,65,0,0,0,114,98,0,0,0,41,3,114,180, - 0,0,0,114,90,0,0,0,114,181,0,0,0,32,32,32, - 114,5,0,0,0,114,184,0,0,0,65,3,0,0,115,8, - 0,0,0,6,7,2,2,4,254,18,3,114,17,0,0,0, - 122,26,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,67,0,0, - 0,114,185,0,0,0,41,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,23,0,0,0,114,174,0,0,0,32, - 114,5,0,0,0,114,162,0,0,0,77,3,0,0,115,2, - 0,0,0,4,0,114,17,0,0,0,122,28,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,99,114,101,97,116, - 101,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,64,0, - 0,0,124,0,106,0,106,1,125,1,116,2,160,3,124,1, - 161,1,115,18,116,4,100,1,160,5,124,1,161,1,124,1, - 100,2,141,2,130,1,116,6,116,2,106,7,124,1,131,2, - 125,2,116,8,124,2,124,0,106,9,131,2,1,0,100,0, - 83,0,114,97,0,0,0,41,10,114,113,0,0,0,114,20, - 0,0,0,114,65,0,0,0,114,98,0,0,0,114,88,0, - 0,0,114,51,0,0,0,114,75,0,0,0,218,17,103,101, - 116,95,102,114,111,122,101,110,95,111,98,106,101,99,116,218, - 4,101,120,101,99,114,13,0,0,0,41,3,114,110,0,0, - 0,114,20,0,0,0,218,4,99,111,100,101,32,32,32,114, - 5,0,0,0,114,163,0,0,0,81,3,0,0,115,14,0, - 0,0,8,2,10,1,10,1,2,1,6,255,12,2,16,1, - 114,17,0,0,0,122,26,70,114,111,122,101,110,73,109,112, - 111,114,116,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,3,0, - 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,124, - 1,131,2,83,0,41,2,122,95,76,111,97,100,32,97,32, - 102,114,111,122,101,110,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,78,41,1,114,111,0,0,0, - 114,186,0,0,0,32,32,114,5,0,0,0,114,170,0,0, - 0,90,3,0,0,115,2,0,0,0,10,8,114,17,0,0, - 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,243,10,0,0,0,116,0,160,1,124,1,161,1,83, - 0,41,2,122,45,82,101,116,117,114,110,32,116,104,101,32, - 99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32, - 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,46,78,41,2,114,65,0,0,0,114,195,0,0,0,114, - 186,0,0,0,32,32,114,5,0,0,0,114,187,0,0,0, + 111,110,32,51,46,49,50,114,166,0,0,0,78,41,7,114, + 101,0,0,0,114,102,0,0,0,114,103,0,0,0,114,51, + 0,0,0,114,8,0,0,0,114,193,0,0,0,114,151,0, + 0,0,41,1,218,1,109,115,1,0,0,0,32,114,5,0, + 0,0,114,114,0,0,0,47,3,0,0,115,8,0,0,0, + 6,7,2,1,4,255,16,2,114,17,0,0,0,122,26,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,109,111, + 100,117,108,101,95,114,101,112,114,78,99,4,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, + 30,0,0,0,116,0,160,1,124,1,161,1,114,13,116,2, + 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, + 83,0,114,178,0,0,0,41,4,114,65,0,0,0,114,98, + 0,0,0,114,104,0,0,0,114,151,0,0,0,114,179,0, + 0,0,115,4,0,0,0,32,32,32,32,114,5,0,0,0, + 114,183,0,0,0,58,3,0,0,115,6,0,0,0,10,2, + 16,1,4,2,114,17,0,0,0,122,24,70,114,111,122,101, + 110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,116,3,160,4,124,1,161, + 1,114,13,124,0,83,0,100,2,83,0,41,3,122,93,70, + 105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,40,41,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,32,97,110,100,32,115,108,97, + 116,101,100,32,102,111,114,32,114,101,109,111,118,97,108,32, + 105,110,32,80,121,116,104,111,110,32,51,46,49,50,59,32, + 117,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, + 105,110,115,116,101,97,100,78,41,5,114,101,0,0,0,114, + 102,0,0,0,114,103,0,0,0,114,65,0,0,0,114,98, + 0,0,0,41,3,114,180,0,0,0,114,90,0,0,0,114, + 181,0,0,0,115,3,0,0,0,32,32,32,114,5,0,0, + 0,114,184,0,0,0,65,3,0,0,115,8,0,0,0,6, + 7,2,2,4,254,18,3,114,17,0,0,0,122,26,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,67,0,0,0,114,185,0, + 0,0,41,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,23,0,0,0,114,174,0,0,0,115,1,0,0,0, + 32,114,5,0,0,0,114,162,0,0,0,77,3,0,0,115, + 2,0,0,0,4,0,114,17,0,0,0,122,28,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,99,114,101,97, + 116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,64, + 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, + 1,161,1,115,18,116,4,100,1,160,5,124,1,161,1,124, + 1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131, + 2,125,2,116,8,124,2,124,0,106,9,131,2,1,0,100, + 0,83,0,114,97,0,0,0,41,10,114,113,0,0,0,114, + 20,0,0,0,114,65,0,0,0,114,98,0,0,0,114,88, + 0,0,0,114,51,0,0,0,114,75,0,0,0,218,17,103, + 101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116, + 218,4,101,120,101,99,114,13,0,0,0,41,3,114,110,0, + 0,0,114,20,0,0,0,218,4,99,111,100,101,115,3,0, + 0,0,32,32,32,114,5,0,0,0,114,163,0,0,0,81, + 3,0,0,115,14,0,0,0,8,2,10,1,10,1,2,1, + 6,255,12,2,16,1,114,17,0,0,0,122,26,70,114,111, + 122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10,0,0, + 0,116,0,124,0,124,1,131,2,83,0,41,2,122,95,76, + 111,97,100,32,97,32,102,114,111,122,101,110,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,78,41, + 1,114,111,0,0,0,114,186,0,0,0,115,2,0,0,0, + 32,32,114,5,0,0,0,114,170,0,0,0,90,3,0,0, + 115,2,0,0,0,10,8,114,17,0,0,0,122,26,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,108,111,97, + 100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,67,0,0,0,243,10,0, + 0,0,116,0,160,1,124,1,161,1,83,0,41,2,122,45, + 82,101,116,117,114,110,32,116,104,101,32,99,111,100,101,32, + 111,98,106,101,99,116,32,102,111,114,32,116,104,101,32,102, + 114,111,122,101,110,32,109,111,100,117,108,101,46,78,41,2, + 114,65,0,0,0,114,195,0,0,0,114,186,0,0,0,115, + 2,0,0,0,32,32,114,5,0,0,0,114,187,0,0,0, 100,3,0,0,243,2,0,0,0,10,4,114,17,0,0,0, 122,23,70,114,111,122,101,110,73,109,112,111,114,116,101,114, 46,103,101,116,95,99,111,100,101,99,2,0,0,0,0,0, @@ -1369,424 +1389,429 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 110,101,32,97,115,32,102,114,111,122,101,110,32,109,111,100, 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, - 0,0,0,114,186,0,0,0,32,32,114,5,0,0,0,114, - 189,0,0,0,106,3,0,0,114,188,0,0,0,114,17,0, - 0,0,122,25,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,114,198,0,0,0,41,2,122,46,82,101,116,117,114, - 110,32,84,114,117,101,32,105,102,32,116,104,101,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,32,105,115,32,97, - 32,112,97,99,107,97,103,101,46,78,41,2,114,65,0,0, - 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, - 107,97,103,101,114,186,0,0,0,32,32,114,5,0,0,0, - 114,128,0,0,0,112,3,0,0,114,199,0,0,0,114,17, - 0,0,0,122,25,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,105,115,95,112,97,99,107,97,103,101,114,190, - 0,0,0,114,0,0,0,0,41,17,114,8,0,0,0,114, - 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,151, - 0,0,0,114,191,0,0,0,114,114,0,0,0,114,192,0, - 0,0,114,183,0,0,0,114,184,0,0,0,114,162,0,0, - 0,114,163,0,0,0,114,170,0,0,0,114,100,0,0,0, - 114,187,0,0,0,114,189,0,0,0,114,128,0,0,0,114, - 23,0,0,0,114,5,0,0,0,114,193,0,0,0,36,3, - 0,0,115,48,0,0,0,8,0,4,2,4,7,2,2,10, - 1,2,10,12,1,2,6,12,1,2,11,10,1,2,3,10, - 1,2,8,10,1,2,9,2,1,12,1,2,4,2,1,12, - 1,2,4,2,1,16,1,114,17,0,0,0,114,193,0,0, - 0,99,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,83,0,41,7,218,18,95, - 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, - 116,122,36,67,111,110,116,101,120,116,32,109,97,110,97,103, - 101,114,32,102,111,114,32,116,104,101,32,105,109,112,111,114, - 116,32,108,111,99,107,46,99,1,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,67,0,0,0,243,12,0,0, - 0,116,0,160,1,161,0,1,0,100,1,83,0,41,2,122, - 24,65,99,113,117,105,114,101,32,116,104,101,32,105,109,112, - 111,114,116,32,108,111,99,107,46,78,41,2,114,65,0,0, - 0,114,66,0,0,0,114,53,0,0,0,32,114,5,0,0, - 0,114,62,0,0,0,125,3,0,0,243,2,0,0,0,12, - 2,114,17,0,0,0,122,28,95,73,109,112,111,114,116,76, - 111,99,107,67,111,110,116,101,120,116,46,95,95,101,110,116, - 101,114,95,95,99,4,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,67,0,0,0,114,201,0,0,0,41,2, - 122,60,82,101,108,101,97,115,101,32,116,104,101,32,105,109, - 112,111,114,116,32,108,111,99,107,32,114,101,103,97,114,100, - 108,101,115,115,32,111,102,32,97,110,121,32,114,97,105,115, - 101,100,32,101,120,99,101,112,116,105,111,110,115,46,78,41, - 2,114,65,0,0,0,114,68,0,0,0,41,4,114,34,0, - 0,0,218,8,101,120,99,95,116,121,112,101,218,9,101,120, - 99,95,118,97,108,117,101,218,13,101,120,99,95,116,114,97, - 99,101,98,97,99,107,32,32,32,32,114,5,0,0,0,114, - 64,0,0,0,129,3,0,0,114,202,0,0,0,114,17,0, - 0,0,122,27,95,73,109,112,111,114,116,76,111,99,107,67, - 111,110,116,101,120,116,46,95,95,101,120,105,116,95,95,78, - 41,6,114,8,0,0,0,114,7,0,0,0,114,1,0,0, - 0,114,9,0,0,0,114,62,0,0,0,114,64,0,0,0, - 114,23,0,0,0,114,5,0,0,0,114,200,0,0,0,121, - 3,0,0,115,8,0,0,0,8,0,4,2,8,2,12,4, - 114,17,0,0,0,114,200,0,0,0,99,3,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, - 64,0,0,0,124,1,160,0,100,1,124,2,100,2,24,0, - 161,2,125,3,116,1,124,3,131,1,124,2,107,0,114,18, - 116,2,100,3,131,1,130,1,124,3,100,4,25,0,125,4, - 124,0,114,30,100,5,160,3,124,4,124,0,161,2,83,0, - 124,4,83,0,41,7,122,50,82,101,115,111,108,118,101,32, - 97,32,114,101,108,97,116,105,118,101,32,109,111,100,117,108, - 101,32,110,97,109,101,32,116,111,32,97,110,32,97,98,115, - 111,108,117,116,101,32,111,110,101,46,114,141,0,0,0,114, - 43,0,0,0,122,50,97,116,116,101,109,112,116,101,100,32, - 114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,32, - 98,101,121,111,110,100,32,116,111,112,45,108,101,118,101,108, - 32,112,97,99,107,97,103,101,114,26,0,0,0,250,5,123, - 125,46,123,125,78,41,4,218,6,114,115,112,108,105,116,218, - 3,108,101,110,114,88,0,0,0,114,51,0,0,0,41,5, - 114,20,0,0,0,218,7,112,97,99,107,97,103,101,218,5, - 108,101,118,101,108,90,4,98,105,116,115,90,4,98,97,115, - 101,32,32,32,32,32,114,5,0,0,0,218,13,95,114,101, - 115,111,108,118,101,95,110,97,109,101,134,3,0,0,115,10, - 0,0,0,16,2,12,1,8,1,8,1,20,1,114,17,0, - 0,0,114,211,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,67,0,0,0,115,60,0,0, - 0,116,0,124,0,131,1,155,0,100,1,157,2,125,3,116, - 1,160,2,124,3,116,3,161,2,1,0,124,0,160,4,124, - 1,124,2,161,2,125,4,124,4,100,0,117,0,114,25,100, - 0,83,0,116,5,124,1,124,4,131,2,83,0,41,2,78, - 122,53,46,102,105,110,100,95,115,112,101,99,40,41,32,110, - 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, - 103,32,98,97,99,107,32,116,111,32,102,105,110,100,95,109, - 111,100,117,108,101,40,41,41,6,114,6,0,0,0,114,101, - 0,0,0,114,102,0,0,0,114,169,0,0,0,114,184,0, - 0,0,114,104,0,0,0,41,5,218,6,102,105,110,100,101, - 114,114,20,0,0,0,114,181,0,0,0,114,108,0,0,0, - 114,122,0,0,0,32,32,32,32,32,114,5,0,0,0,218, - 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, - 99,121,143,3,0,0,115,12,0,0,0,14,1,12,2,12, - 1,8,1,4,1,10,1,114,17,0,0,0,114,213,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,10,0, - 0,0,67,0,0,0,115,30,1,0,0,116,0,106,1,125, - 3,124,3,100,1,117,0,114,11,116,2,100,2,131,1,130, - 1,124,3,115,19,116,3,160,4,100,3,116,5,161,2,1, - 0,124,0,116,0,106,6,118,0,125,4,124,3,68,0,93, - 112,125,5,116,7,131,0,53,0,1,0,9,0,124,5,106, - 8,125,6,110,27,35,0,4,0,116,9,121,142,1,0,1, - 0,1,0,116,10,124,5,124,0,124,1,131,3,125,7,124, - 7,100,1,117,0,114,61,89,0,100,1,4,0,4,0,131, - 3,1,0,113,26,89,0,110,7,37,0,124,6,124,0,124, - 1,124,2,131,3,125,7,100,1,4,0,4,0,131,3,1, - 0,110,11,35,0,49,0,115,81,119,4,37,0,1,0,1, - 0,1,0,89,0,1,0,1,0,124,7,100,1,117,1,114, - 138,124,4,115,134,124,0,116,0,106,6,118,0,114,134,116, - 0,106,6,124,0,25,0,125,8,9,0,124,8,106,11,125, - 9,110,14,35,0,4,0,116,9,121,141,1,0,1,0,1, - 0,124,7,6,0,89,0,2,0,1,0,83,0,37,0,124, - 9,100,1,117,0,114,130,124,7,2,0,1,0,83,0,124, - 9,2,0,1,0,83,0,124,7,2,0,1,0,83,0,113, - 26,100,1,83,0,119,0,119,0,41,4,122,21,70,105,110, - 100,32,97,32,109,111,100,117,108,101,39,115,32,115,112,101, - 99,46,78,122,53,115,121,115,46,109,101,116,97,95,112,97, - 116,104,32,105,115,32,78,111,110,101,44,32,80,121,116,104, - 111,110,32,105,115,32,108,105,107,101,108,121,32,115,104,117, - 116,116,105,110,103,32,100,111,119,110,122,22,115,121,115,46, - 109,101,116,97,95,112,97,116,104,32,105,115,32,101,109,112, - 116,121,41,12,114,18,0,0,0,218,9,109,101,116,97,95, - 112,97,116,104,114,88,0,0,0,114,101,0,0,0,114,102, - 0,0,0,114,169,0,0,0,114,105,0,0,0,114,200,0, - 0,0,114,183,0,0,0,114,2,0,0,0,114,213,0,0, - 0,114,113,0,0,0,41,10,114,20,0,0,0,114,181,0, - 0,0,114,182,0,0,0,114,214,0,0,0,90,9,105,115, - 95,114,101,108,111,97,100,114,212,0,0,0,114,183,0,0, - 0,114,109,0,0,0,114,110,0,0,0,114,113,0,0,0, - 32,32,32,32,32,32,32,32,32,32,114,5,0,0,0,218, - 10,95,102,105,110,100,95,115,112,101,99,153,3,0,0,115, - 76,0,0,0,6,2,8,1,8,2,4,3,12,1,10,5, - 8,1,8,1,2,1,8,1,2,128,12,1,12,1,8,1, - 2,1,12,250,4,5,2,128,12,3,12,248,22,128,8,9, - 14,2,10,1,2,1,8,1,2,128,12,1,12,4,2,128, - 8,2,8,1,8,2,8,2,2,239,4,19,2,243,2,244, - 115,63,0,0,0,159,1,65,12,5,161,3,37,4,164,1, - 65,12,5,165,17,63,11,182,1,65,12,5,189,9,65,12, - 5,193,12,4,65,16,13,193,17,3,65,16,13,193,40,3, - 65,44,2,193,44,9,65,57,9,194,13,1,65,57,9,194, - 14,1,63,11,114,215,0,0,0,99,3,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,67,0,0,0,115,110, - 0,0,0,116,0,124,0,116,1,131,2,115,14,116,2,100, - 1,160,3,116,4,124,0,131,1,161,1,131,1,130,1,124, - 2,100,2,107,0,114,22,116,5,100,3,131,1,130,1,124, - 2,100,2,107,4,114,41,116,0,124,1,116,1,131,2,115, - 35,116,2,100,4,131,1,130,1,124,1,115,41,116,6,100, - 5,131,1,130,1,124,0,115,53,124,2,100,2,107,2,114, - 51,116,5,100,6,131,1,130,1,100,7,83,0,100,7,83, - 0,41,8,122,28,86,101,114,105,102,121,32,97,114,103,117, - 109,101,110,116,115,32,97,114,101,32,34,115,97,110,101,34, - 46,122,31,109,111,100,117,108,101,32,110,97,109,101,32,109, - 117,115,116,32,98,101,32,115,116,114,44,32,110,111,116,32, - 123,125,114,26,0,0,0,122,18,108,101,118,101,108,32,109, - 117,115,116,32,98,101,32,62,61,32,48,122,31,95,95,112, - 97,99,107,97,103,101,95,95,32,110,111,116,32,115,101,116, - 32,116,111,32,97,32,115,116,114,105,110,103,122,54,97,116, - 116,101,109,112,116,101,100,32,114,101,108,97,116,105,118,101, - 32,105,109,112,111,114,116,32,119,105,116,104,32,110,111,32, - 107,110,111,119,110,32,112,97,114,101,110,116,32,112,97,99, - 107,97,103,101,122,17,69,109,112,116,121,32,109,111,100,117, - 108,101,32,110,97,109,101,78,41,7,218,10,105,115,105,110, - 115,116,97,110,99,101,218,3,115,116,114,218,9,84,121,112, - 101,69,114,114,111,114,114,51,0,0,0,114,3,0,0,0, - 218,10,86,97,108,117,101,69,114,114,111,114,114,88,0,0, - 0,169,3,114,20,0,0,0,114,209,0,0,0,114,210,0, - 0,0,32,32,32,114,5,0,0,0,218,13,95,115,97,110, - 105,116,121,95,99,104,101,99,107,200,3,0,0,115,24,0, - 0,0,10,2,18,1,8,1,8,1,8,1,10,1,8,1, - 4,1,8,1,12,2,8,1,8,255,114,17,0,0,0,114, - 221,0,0,0,122,16,78,111,32,109,111,100,117,108,101,32, - 110,97,109,101,100,32,122,4,123,33,114,125,99,2,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, - 0,115,20,1,0,0,100,0,125,2,124,0,160,0,100,1, - 161,1,100,2,25,0,125,3,124,3,114,64,124,3,116,1, - 106,2,118,1,114,21,116,3,124,1,124,3,131,2,1,0, - 124,0,116,1,106,2,118,0,114,31,116,1,106,2,124,0, - 25,0,83,0,116,1,106,2,124,3,25,0,125,4,9,0, - 124,4,106,4,125,2,110,23,35,0,4,0,116,5,121,137, - 1,0,1,0,1,0,116,6,100,3,23,0,160,7,124,0, - 124,3,161,2,125,5,116,8,124,5,124,0,100,4,141,2, - 100,0,130,2,37,0,116,9,124,0,124,2,131,2,125,6, - 124,6,100,0,117,0,114,82,116,8,116,6,160,7,124,0, - 161,1,124,0,100,4,141,2,130,1,116,10,124,6,131,1, - 125,7,124,3,114,134,116,1,106,2,124,3,25,0,125,4, - 124,0,160,0,100,1,161,1,100,5,25,0,125,8,9,0, - 116,11,124,4,124,8,124,7,131,3,1,0,124,7,83,0, - 35,0,4,0,116,5,121,136,1,0,1,0,1,0,100,6, - 124,3,155,2,100,7,124,8,155,2,157,4,125,5,116,12, - 160,13,124,5,116,14,161,2,1,0,89,0,124,7,83,0, - 37,0,124,7,83,0,119,0,119,0,41,8,78,114,141,0, - 0,0,114,26,0,0,0,122,23,59,32,123,33,114,125,32, - 105,115,32,110,111,116,32,97,32,112,97,99,107,97,103,101, - 114,19,0,0,0,233,2,0,0,0,122,27,67,97,110,110, - 111,116,32,115,101,116,32,97,110,32,97,116,116,114,105,98, - 117,116,101,32,111,110,32,122,18,32,102,111,114,32,99,104, - 105,108,100,32,109,111,100,117,108,101,32,41,15,114,142,0, - 0,0,114,18,0,0,0,114,105,0,0,0,114,75,0,0, - 0,114,154,0,0,0,114,2,0,0,0,218,8,95,69,82, - 82,95,77,83,71,114,51,0,0,0,218,19,77,111,100,117, - 108,101,78,111,116,70,111,117,110,100,69,114,114,111,114,114, - 215,0,0,0,114,173,0,0,0,114,11,0,0,0,114,101, - 0,0,0,114,102,0,0,0,114,169,0,0,0,41,9,114, - 20,0,0,0,218,7,105,109,112,111,114,116,95,114,181,0, - 0,0,114,143,0,0,0,90,13,112,97,114,101,110,116,95, - 109,111,100,117,108,101,114,108,0,0,0,114,109,0,0,0, - 114,110,0,0,0,90,5,99,104,105,108,100,32,32,32,32, - 32,32,32,32,32,114,5,0,0,0,218,23,95,102,105,110, - 100,95,97,110,100,95,108,111,97,100,95,117,110,108,111,99, - 107,101,100,219,3,0,0,115,68,0,0,0,4,1,14,1, - 4,1,10,1,10,1,10,2,10,1,10,1,2,1,8,1, - 2,128,12,1,16,1,14,1,2,128,10,1,8,1,18,1, - 8,2,4,1,10,2,14,1,2,1,12,1,4,4,2,128, - 12,253,16,1,14,1,4,1,2,128,4,0,2,253,2,242, - 115,31,0,0,0,165,3,41,0,169,22,63,7,193,37,6, - 65,45,0,193,45,21,66,5,7,194,8,1,66,5,7,194, - 9,1,63,7,114,226,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,67,0,0,0,115,132, - 0,0,0,116,0,124,0,131,1,53,0,1,0,116,1,106, - 2,160,3,124,0,116,4,161,2,125,2,124,2,116,4,117, - 0,114,27,116,5,124,0,124,1,131,2,2,0,100,1,4, - 0,4,0,131,3,1,0,83,0,9,0,100,1,4,0,4, - 0,131,3,1,0,110,11,35,0,49,0,115,39,119,4,37, - 0,1,0,1,0,1,0,89,0,1,0,1,0,124,2,100, - 1,117,0,114,60,100,2,160,6,124,0,161,1,125,3,116, - 7,124,3,124,0,100,3,141,2,130,1,116,8,124,0,131, - 1,1,0,124,2,83,0,41,4,122,25,70,105,110,100,32, - 97,110,100,32,108,111,97,100,32,116,104,101,32,109,111,100, - 117,108,101,46,78,122,40,105,109,112,111,114,116,32,111,102, - 32,123,125,32,104,97,108,116,101,100,59,32,78,111,110,101, - 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,114, - 19,0,0,0,41,9,114,58,0,0,0,114,18,0,0,0, - 114,105,0,0,0,114,39,0,0,0,218,14,95,78,69,69, - 68,83,95,76,79,65,68,73,78,71,114,226,0,0,0,114, - 51,0,0,0,114,224,0,0,0,114,73,0,0,0,41,4, - 114,20,0,0,0,114,225,0,0,0,114,110,0,0,0,114, - 83,0,0,0,32,32,32,32,114,5,0,0,0,218,14,95, - 102,105,110,100,95,97,110,100,95,108,111,97,100,254,3,0, - 0,115,30,0,0,0,10,2,14,1,8,1,8,1,14,253, - 2,2,12,254,22,128,8,5,2,1,6,1,2,255,12,2, - 8,2,4,1,115,12,0,0,0,132,16,34,3,162,4,38, - 11,167,3,38,11,114,228,0,0,0,114,26,0,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,42,0,0,0,116,0,124,0,124,1,124, - 2,131,3,1,0,124,2,100,1,107,4,114,16,116,1,124, - 0,124,1,124,2,131,3,125,0,116,2,124,0,116,3,131, - 2,83,0,41,3,97,50,1,0,0,73,109,112,111,114,116, - 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32, - 109,111,100,117,108,101,32,98,97,115,101,100,32,111,110,32, - 105,116,115,32,110,97,109,101,44,32,116,104,101,32,112,97, - 99,107,97,103,101,32,116,104,101,32,99,97,108,108,32,105, - 115,10,32,32,32,32,98,101,105,110,103,32,109,97,100,101, - 32,102,114,111,109,44,32,97,110,100,32,116,104,101,32,108, - 101,118,101,108,32,97,100,106,117,115,116,109,101,110,116,46, - 10,10,32,32,32,32,84,104,105,115,32,102,117,110,99,116, - 105,111,110,32,114,101,112,114,101,115,101,110,116,115,32,116, - 104,101,32,103,114,101,97,116,101,115,116,32,99,111,109,109, - 111,110,32,100,101,110,111,109,105,110,97,116,111,114,32,111, - 102,32,102,117,110,99,116,105,111,110,97,108,105,116,121,10, - 32,32,32,32,98,101,116,119,101,101,110,32,105,109,112,111, - 114,116,95,109,111,100,117,108,101,32,97,110,100,32,95,95, - 105,109,112,111,114,116,95,95,46,32,84,104,105,115,32,105, - 110,99,108,117,100,101,115,32,115,101,116,116,105,110,103,32, - 95,95,112,97,99,107,97,103,101,95,95,32,105,102,10,32, - 32,32,32,116,104,101,32,108,111,97,100,101,114,32,100,105, - 100,32,110,111,116,46,10,10,32,32,32,32,114,26,0,0, - 0,78,41,4,114,221,0,0,0,114,211,0,0,0,114,228, - 0,0,0,218,11,95,103,99,100,95,105,109,112,111,114,116, - 114,220,0,0,0,32,32,32,114,5,0,0,0,114,229,0, - 0,0,14,4,0,0,115,8,0,0,0,12,9,8,1,12, - 1,10,1,114,17,0,0,0,114,229,0,0,0,169,1,218, - 9,114,101,99,117,114,115,105,118,101,99,3,0,0,0,0, - 0,0,0,1,0,0,0,9,0,0,0,67,0,0,0,115, - 216,0,0,0,124,1,68,0,93,102,125,4,116,0,124,4, - 116,1,131,2,115,32,124,3,114,17,124,0,106,2,100,1, - 23,0,125,5,110,2,100,2,125,5,116,3,100,3,124,5, - 155,0,100,4,116,4,124,4,131,1,106,2,155,0,157,4, - 131,1,130,1,124,4,100,5,107,2,114,53,124,3,115,52, - 116,5,124,0,100,6,131,2,114,52,116,6,124,0,124,0, - 106,7,124,2,100,7,100,8,141,4,1,0,113,2,116,5, - 124,0,124,4,131,2,115,104,100,9,160,8,124,0,106,2, - 124,4,161,2,125,6,9,0,116,9,124,2,124,6,131,2, - 1,0,113,2,35,0,4,0,116,10,121,107,1,0,125,7, - 1,0,124,7,106,11,124,6,107,2,114,98,116,12,106,13, - 160,14,124,6,116,15,161,2,100,10,117,1,114,98,89,0, - 100,10,125,7,126,7,113,2,130,0,100,10,125,7,126,7, - 119,1,37,0,113,2,124,0,83,0,119,0,41,11,122,238, - 70,105,103,117,114,101,32,111,117,116,32,119,104,97,116,32, - 95,95,105,109,112,111,114,116,95,95,32,115,104,111,117,108, - 100,32,114,101,116,117,114,110,46,10,10,32,32,32,32,84, - 104,101,32,105,109,112,111,114,116,95,32,112,97,114,97,109, - 101,116,101,114,32,105,115,32,97,32,99,97,108,108,97,98, - 108,101,32,119,104,105,99,104,32,116,97,107,101,115,32,116, - 104,101,32,110,97,109,101,32,111,102,32,109,111,100,117,108, - 101,32,116,111,10,32,32,32,32,105,109,112,111,114,116,46, - 32,73,116,32,105,115,32,114,101,113,117,105,114,101,100,32, - 116,111,32,100,101,99,111,117,112,108,101,32,116,104,101,32, - 102,117,110,99,116,105,111,110,32,102,114,111,109,32,97,115, - 115,117,109,105,110,103,32,105,109,112,111,114,116,108,105,98, - 39,115,10,32,32,32,32,105,109,112,111,114,116,32,105,109, - 112,108,101,109,101,110,116,97,116,105,111,110,32,105,115,32, - 100,101,115,105,114,101,100,46,10,10,32,32,32,32,122,8, - 46,95,95,97,108,108,95,95,122,13,96,96,102,114,111,109, - 32,108,105,115,116,39,39,122,8,73,116,101,109,32,105,110, - 32,122,18,32,109,117,115,116,32,98,101,32,115,116,114,44, - 32,110,111,116,32,250,1,42,218,7,95,95,97,108,108,95, - 95,84,114,230,0,0,0,114,206,0,0,0,78,41,16,114, - 216,0,0,0,114,217,0,0,0,114,8,0,0,0,114,218, - 0,0,0,114,3,0,0,0,114,10,0,0,0,218,16,95, - 104,97,110,100,108,101,95,102,114,111,109,108,105,115,116,114, - 233,0,0,0,114,51,0,0,0,114,75,0,0,0,114,224, - 0,0,0,114,20,0,0,0,114,18,0,0,0,114,105,0, - 0,0,114,39,0,0,0,114,227,0,0,0,41,8,114,110, - 0,0,0,218,8,102,114,111,109,108,105,115,116,114,225,0, - 0,0,114,231,0,0,0,218,1,120,90,5,119,104,101,114, - 101,90,9,102,114,111,109,95,110,97,109,101,90,3,101,120, - 99,32,32,32,32,32,32,32,32,114,5,0,0,0,114,234, - 0,0,0,29,4,0,0,115,58,0,0,0,8,10,10,1, - 4,1,12,1,4,2,10,1,8,1,8,255,8,2,14,1, - 10,1,2,1,6,255,2,128,10,2,14,1,2,1,12,1, - 2,128,12,1,10,4,16,1,2,255,10,2,2,1,10,128, - 2,245,4,12,2,248,115,36,0,0,0,193,2,5,65,8, - 2,193,8,7,65,39,9,193,15,14,65,35,9,193,34,1, - 65,35,9,193,35,4,65,39,9,193,43,1,65,39,9,114, - 234,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,7,0,0,0,67,0,0,0,115,146,0,0,0,124,0, - 160,0,100,1,161,1,125,1,124,0,160,0,100,2,161,1, - 125,2,124,1,100,3,117,1,114,41,124,2,100,3,117,1, - 114,39,124,1,124,2,106,1,107,3,114,39,116,2,160,3, - 100,4,124,1,155,2,100,5,124,2,106,1,155,2,100,6, - 157,5,116,4,100,7,100,8,166,3,1,0,124,1,83,0, - 124,2,100,3,117,1,114,48,124,2,106,1,83,0,116,2, - 160,3,100,9,116,4,100,7,100,8,166,3,1,0,124,0, - 100,10,25,0,125,1,100,11,124,0,118,1,114,71,124,1, - 160,5,100,12,161,1,100,13,25,0,125,1,124,1,83,0, - 41,14,122,167,67,97,108,99,117,108,97,116,101,32,119,104, - 97,116,32,95,95,112,97,99,107,97,103,101,95,95,32,115, - 104,111,117,108,100,32,98,101,46,10,10,32,32,32,32,95, - 95,112,97,99,107,97,103,101,95,95,32,105,115,32,110,111, - 116,32,103,117,97,114,97,110,116,101,101,100,32,116,111,32, - 98,101,32,100,101,102,105,110,101,100,32,111,114,32,99,111, - 117,108,100,32,98,101,32,115,101,116,32,116,111,32,78,111, - 110,101,10,32,32,32,32,116,111,32,114,101,112,114,101,115, - 101,110,116,32,116,104,97,116,32,105,116,115,32,112,114,111, - 112,101,114,32,118,97,108,117,101,32,105,115,32,117,110,107, - 110,111,119,110,46,10,10,32,32,32,32,114,158,0,0,0, - 114,113,0,0,0,78,122,32,95,95,112,97,99,107,97,103, - 101,95,95,32,33,61,32,95,95,115,112,101,99,95,95,46, - 112,97,114,101,110,116,32,40,122,4,32,33,61,32,250,1, - 41,233,3,0,0,0,41,1,90,10,115,116,97,99,107,108, - 101,118,101,108,122,89,99,97,110,39,116,32,114,101,115,111, - 108,118,101,32,112,97,99,107,97,103,101,32,102,114,111,109, - 32,95,95,115,112,101,99,95,95,32,111,114,32,95,95,112, - 97,99,107,97,103,101,95,95,44,32,102,97,108,108,105,110, - 103,32,98,97,99,107,32,111,110,32,95,95,110,97,109,101, - 95,95,32,97,110,100,32,95,95,112,97,116,104,95,95,114, - 8,0,0,0,114,154,0,0,0,114,141,0,0,0,114,26, - 0,0,0,41,6,114,39,0,0,0,114,143,0,0,0,114, - 101,0,0,0,114,102,0,0,0,114,169,0,0,0,114,142, - 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,209, - 0,0,0,114,109,0,0,0,32,32,32,114,5,0,0,0, - 218,17,95,99,97,108,99,95,95,95,112,97,99,107,97,103, - 101,95,95,66,4,0,0,115,42,0,0,0,10,7,10,1, - 8,1,18,1,6,1,2,1,4,255,4,1,6,255,4,2, - 6,254,4,3,8,1,6,1,6,2,4,2,6,254,8,3, - 8,1,14,1,4,1,114,17,0,0,0,114,240,0,0,0, - 114,23,0,0,0,99,5,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,67,0,0,0,115,174,0,0,0,124, - 4,100,1,107,2,114,9,116,0,124,0,131,1,125,5,110, - 18,124,1,100,2,117,1,114,15,124,1,110,1,105,0,125, - 6,116,1,124,6,131,1,125,7,116,0,124,0,124,7,124, - 4,131,3,125,5,124,3,115,74,124,4,100,1,107,2,114, - 42,116,0,124,0,160,2,100,3,161,1,100,1,25,0,131, - 1,83,0,124,0,115,46,124,5,83,0,116,3,124,0,131, - 1,116,3,124,0,160,2,100,3,161,1,100,1,25,0,131, - 1,24,0,125,8,116,4,106,5,124,5,106,6,100,2,116, - 3,124,5,106,6,131,1,124,8,24,0,133,2,25,0,25, - 0,83,0,116,7,124,5,100,4,131,2,114,85,116,8,124, - 5,124,3,116,0,131,3,83,0,124,5,83,0,41,5,97, - 215,1,0,0,73,109,112,111,114,116,32,97,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,84,104,101,32,39,103, - 108,111,98,97,108,115,39,32,97,114,103,117,109,101,110,116, - 32,105,115,32,117,115,101,100,32,116,111,32,105,110,102,101, - 114,32,119,104,101,114,101,32,116,104,101,32,105,109,112,111, - 114,116,32,105,115,32,111,99,99,117,114,114,105,110,103,32, - 102,114,111,109,10,32,32,32,32,116,111,32,104,97,110,100, - 108,101,32,114,101,108,97,116,105,118,101,32,105,109,112,111, - 114,116,115,46,32,84,104,101,32,39,108,111,99,97,108,115, - 39,32,97,114,103,117,109,101,110,116,32,105,115,32,105,103, - 110,111,114,101,100,46,32,84,104,101,10,32,32,32,32,39, - 102,114,111,109,108,105,115,116,39,32,97,114,103,117,109,101, - 110,116,32,115,112,101,99,105,102,105,101,115,32,119,104,97, - 116,32,115,104,111,117,108,100,32,101,120,105,115,116,32,97, - 115,32,97,116,116,114,105,98,117,116,101,115,32,111,110,32, - 116,104,101,32,109,111,100,117,108,101,10,32,32,32,32,98, - 101,105,110,103,32,105,109,112,111,114,116,101,100,32,40,101, - 46,103,46,32,96,96,102,114,111,109,32,109,111,100,117,108, - 101,32,105,109,112,111,114,116,32,60,102,114,111,109,108,105, - 115,116,62,96,96,41,46,32,32,84,104,101,32,39,108,101, - 118,101,108,39,10,32,32,32,32,97,114,103,117,109,101,110, - 116,32,114,101,112,114,101,115,101,110,116,115,32,116,104,101, - 32,112,97,99,107,97,103,101,32,108,111,99,97,116,105,111, - 110,32,116,111,32,105,109,112,111,114,116,32,102,114,111,109, - 32,105,110,32,97,32,114,101,108,97,116,105,118,101,10,32, - 32,32,32,105,109,112,111,114,116,32,40,101,46,103,46,32, - 96,96,102,114,111,109,32,46,46,112,107,103,32,105,109,112, - 111,114,116,32,109,111,100,96,96,32,119,111,117,108,100,32, - 104,97,118,101,32,97,32,39,108,101,118,101,108,39,32,111, - 102,32,50,41,46,10,10,32,32,32,32,114,26,0,0,0, - 78,114,141,0,0,0,114,154,0,0,0,41,9,114,229,0, - 0,0,114,240,0,0,0,218,9,112,97,114,116,105,116,105, - 111,110,114,208,0,0,0,114,18,0,0,0,114,105,0,0, - 0,114,8,0,0,0,114,10,0,0,0,114,234,0,0,0, - 41,9,114,20,0,0,0,114,239,0,0,0,218,6,108,111, - 99,97,108,115,114,235,0,0,0,114,210,0,0,0,114,110, - 0,0,0,90,8,103,108,111,98,97,108,115,95,114,209,0, - 0,0,90,7,99,117,116,95,111,102,102,32,32,32,32,32, + 0,0,0,114,186,0,0,0,115,2,0,0,0,32,32,114, + 5,0,0,0,114,189,0,0,0,106,3,0,0,114,188,0, + 0,0,114,17,0,0,0,122,25,70,114,111,122,101,110,73, + 109,112,111,114,116,101,114,46,103,101,116,95,115,111,117,114, + 99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,114,198,0,0,0,41,2,122,46, + 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116, + 104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,101, + 32,105,115,32,97,32,112,97,99,107,97,103,101,46,78,41, + 2,114,65,0,0,0,90,17,105,115,95,102,114,111,122,101, + 110,95,112,97,99,107,97,103,101,114,186,0,0,0,115,2, + 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,112, + 3,0,0,114,199,0,0,0,114,17,0,0,0,122,25,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,105,115, + 95,112,97,99,107,97,103,101,114,190,0,0,0,114,0,0, + 0,0,41,17,114,8,0,0,0,114,7,0,0,0,114,1, + 0,0,0,114,9,0,0,0,114,151,0,0,0,114,191,0, + 0,0,114,114,0,0,0,114,192,0,0,0,114,183,0,0, + 0,114,184,0,0,0,114,162,0,0,0,114,163,0,0,0, + 114,170,0,0,0,114,100,0,0,0,114,187,0,0,0,114, + 189,0,0,0,114,128,0,0,0,114,23,0,0,0,114,17, + 0,0,0,114,5,0,0,0,114,193,0,0,0,36,3,0, + 0,115,48,0,0,0,8,0,4,2,4,7,2,2,10,1, + 2,10,12,1,2,6,12,1,2,11,10,1,2,3,10,1, + 2,8,10,1,2,9,2,1,12,1,2,4,2,1,12,1, + 2,4,2,1,16,1,114,17,0,0,0,114,193,0,0,0, + 99,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,83,0,41,7,218,18,95,73, + 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, + 122,36,67,111,110,116,101,120,116,32,109,97,110,97,103,101, + 114,32,102,111,114,32,116,104,101,32,105,109,112,111,114,116, + 32,108,111,99,107,46,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,67,0,0,0,243,12,0,0,0, + 116,0,160,1,161,0,1,0,100,1,83,0,41,2,122,24, + 65,99,113,117,105,114,101,32,116,104,101,32,105,109,112,111, + 114,116,32,108,111,99,107,46,78,41,2,114,65,0,0,0, + 114,66,0,0,0,114,53,0,0,0,115,1,0,0,0,32, + 114,5,0,0,0,114,62,0,0,0,125,3,0,0,243,2, + 0,0,0,12,2,114,17,0,0,0,122,28,95,73,109,112, + 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, + 95,101,110,116,101,114,95,95,99,4,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,67,0,0,0,114,201,0, + 0,0,41,2,122,60,82,101,108,101,97,115,101,32,116,104, + 101,32,105,109,112,111,114,116,32,108,111,99,107,32,114,101, + 103,97,114,100,108,101,115,115,32,111,102,32,97,110,121,32, + 114,97,105,115,101,100,32,101,120,99,101,112,116,105,111,110, + 115,46,78,41,2,114,65,0,0,0,114,68,0,0,0,41, + 4,114,34,0,0,0,218,8,101,120,99,95,116,121,112,101, + 218,9,101,120,99,95,118,97,108,117,101,218,13,101,120,99, + 95,116,114,97,99,101,98,97,99,107,115,4,0,0,0,32, + 32,32,32,114,5,0,0,0,114,64,0,0,0,129,3,0, + 0,114,202,0,0,0,114,17,0,0,0,122,27,95,73,109, + 112,111,114,116,76,111,99,107,67,111,110,116,101,120,116,46, + 95,95,101,120,105,116,95,95,78,41,6,114,8,0,0,0, + 114,7,0,0,0,114,1,0,0,0,114,9,0,0,0,114, + 62,0,0,0,114,64,0,0,0,114,23,0,0,0,114,17, + 0,0,0,114,5,0,0,0,114,200,0,0,0,121,3,0, + 0,115,8,0,0,0,8,0,4,2,8,2,12,4,114,17, + 0,0,0,114,200,0,0,0,99,3,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,64,0, + 0,0,124,1,160,0,100,1,124,2,100,2,24,0,161,2, + 125,3,116,1,124,3,131,1,124,2,107,0,114,18,116,2, + 100,3,131,1,130,1,124,3,100,4,25,0,125,4,124,0, + 114,30,100,5,160,3,124,4,124,0,161,2,83,0,124,4, + 83,0,41,7,122,50,82,101,115,111,108,118,101,32,97,32, + 114,101,108,97,116,105,118,101,32,109,111,100,117,108,101,32, + 110,97,109,101,32,116,111,32,97,110,32,97,98,115,111,108, + 117,116,101,32,111,110,101,46,114,141,0,0,0,114,43,0, + 0,0,122,50,97,116,116,101,109,112,116,101,100,32,114,101, + 108,97,116,105,118,101,32,105,109,112,111,114,116,32,98,101, + 121,111,110,100,32,116,111,112,45,108,101,118,101,108,32,112, + 97,99,107,97,103,101,114,26,0,0,0,250,5,123,125,46, + 123,125,78,41,4,218,6,114,115,112,108,105,116,218,3,108, + 101,110,114,88,0,0,0,114,51,0,0,0,41,5,114,20, + 0,0,0,218,7,112,97,99,107,97,103,101,218,5,108,101, + 118,101,108,90,4,98,105,116,115,90,4,98,97,115,101,115, + 5,0,0,0,32,32,32,32,32,114,5,0,0,0,218,13, + 95,114,101,115,111,108,118,101,95,110,97,109,101,134,3,0, + 0,115,10,0,0,0,16,2,12,1,8,1,8,1,20,1, + 114,17,0,0,0,114,211,0,0,0,99,3,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 60,0,0,0,116,0,124,0,131,1,155,0,100,1,157,2, + 125,3,116,1,160,2,124,3,116,3,161,2,1,0,124,0, + 160,4,124,1,124,2,161,2,125,4,124,4,100,0,117,0, + 114,25,100,0,83,0,116,5,124,1,124,4,131,2,83,0, + 41,2,78,122,53,46,102,105,110,100,95,115,112,101,99,40, + 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, + 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, + 100,95,109,111,100,117,108,101,40,41,41,6,114,6,0,0, + 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, + 114,184,0,0,0,114,104,0,0,0,41,5,218,6,102,105, + 110,100,101,114,114,20,0,0,0,114,181,0,0,0,114,108, + 0,0,0,114,122,0,0,0,115,5,0,0,0,32,32,32, + 32,32,114,5,0,0,0,218,17,95,102,105,110,100,95,115, + 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, + 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, + 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,10,0,0,0,67,0,0,0,115,30, + 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, + 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, + 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, + 0,125,4,124,3,68,0,93,112,125,5,116,7,131,0,53, + 0,1,0,9,0,124,5,106,8,125,6,110,27,35,0,4, + 0,116,9,121,142,1,0,1,0,1,0,116,10,124,5,124, + 0,124,1,131,3,125,7,124,7,100,1,117,0,114,61,89, + 0,100,1,4,0,4,0,131,3,1,0,113,26,89,0,110, + 7,37,0,124,6,124,0,124,1,124,2,131,3,125,7,100, + 1,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, + 81,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, + 0,124,7,100,1,117,1,114,138,124,4,115,134,124,0,116, + 0,106,6,118,0,114,134,116,0,106,6,124,0,25,0,125, + 8,9,0,124,8,106,11,125,9,110,14,35,0,4,0,116, + 9,121,141,1,0,1,0,1,0,124,7,6,0,89,0,2, + 0,1,0,83,0,37,0,124,9,100,1,117,0,114,130,124, + 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, + 7,2,0,1,0,83,0,113,26,100,1,83,0,119,0,119, + 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, + 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, + 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, + 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, + 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, + 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, + 104,32,105,115,32,101,109,112,116,121,41,12,114,18,0,0, + 0,218,9,109,101,116,97,95,112,97,116,104,114,88,0,0, + 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, + 114,105,0,0,0,114,200,0,0,0,114,183,0,0,0,114, + 2,0,0,0,114,213,0,0,0,114,113,0,0,0,41,10, + 114,20,0,0,0,114,181,0,0,0,114,182,0,0,0,114, + 214,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, + 212,0,0,0,114,183,0,0,0,114,109,0,0,0,114,110, + 0,0,0,114,113,0,0,0,115,10,0,0,0,32,32,32, + 32,32,32,32,32,32,32,114,5,0,0,0,218,10,95,102, + 105,110,100,95,115,112,101,99,153,3,0,0,115,76,0,0, + 0,6,2,8,1,8,2,4,3,12,1,10,5,8,1,8, + 1,2,1,8,1,2,128,12,1,12,1,8,1,2,1,12, + 250,4,5,2,128,12,3,12,248,22,128,8,9,14,2,10, + 1,2,1,8,1,2,128,12,1,12,4,2,128,8,2,8, + 1,8,2,8,2,2,239,4,19,2,243,2,244,115,63,0, + 0,0,159,1,65,12,5,161,3,37,4,164,1,65,12,5, + 165,17,63,11,182,1,65,12,5,189,9,65,12,5,193,12, + 4,65,16,13,193,17,3,65,16,13,193,40,3,65,44,2, + 193,44,9,65,57,9,194,13,1,65,57,9,194,14,1,63, + 11,114,215,0,0,0,99,3,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,67,0,0,0,115,110,0,0,0, + 116,0,124,0,116,1,131,2,115,14,116,2,100,1,160,3, + 116,4,124,0,131,1,161,1,131,1,130,1,124,2,100,2, + 107,0,114,22,116,5,100,3,131,1,130,1,124,2,100,2, + 107,4,114,41,116,0,124,1,116,1,131,2,115,35,116,2, + 100,4,131,1,130,1,124,1,115,41,116,6,100,5,131,1, + 130,1,124,0,115,53,124,2,100,2,107,2,114,51,116,5, + 100,6,131,1,130,1,100,7,83,0,100,7,83,0,41,8, + 122,28,86,101,114,105,102,121,32,97,114,103,117,109,101,110, + 116,115,32,97,114,101,32,34,115,97,110,101,34,46,122,31, + 109,111,100,117,108,101,32,110,97,109,101,32,109,117,115,116, + 32,98,101,32,115,116,114,44,32,110,111,116,32,123,125,114, + 26,0,0,0,122,18,108,101,118,101,108,32,109,117,115,116, + 32,98,101,32,62,61,32,48,122,31,95,95,112,97,99,107, + 97,103,101,95,95,32,110,111,116,32,115,101,116,32,116,111, + 32,97,32,115,116,114,105,110,103,122,54,97,116,116,101,109, + 112,116,101,100,32,114,101,108,97,116,105,118,101,32,105,109, + 112,111,114,116,32,119,105,116,104,32,110,111,32,107,110,111, + 119,110,32,112,97,114,101,110,116,32,112,97,99,107,97,103, + 101,122,17,69,109,112,116,121,32,109,111,100,117,108,101,32, + 110,97,109,101,78,41,7,218,10,105,115,105,110,115,116,97, + 110,99,101,218,3,115,116,114,218,9,84,121,112,101,69,114, + 114,111,114,114,51,0,0,0,114,3,0,0,0,218,10,86, + 97,108,117,101,69,114,114,111,114,114,88,0,0,0,169,3, + 114,20,0,0,0,114,209,0,0,0,114,210,0,0,0,115, + 3,0,0,0,32,32,32,114,5,0,0,0,218,13,95,115, + 97,110,105,116,121,95,99,104,101,99,107,200,3,0,0,115, + 24,0,0,0,10,2,18,1,8,1,8,1,8,1,10,1, + 8,1,4,1,8,1,12,2,8,1,8,255,114,17,0,0, + 0,114,221,0,0,0,122,16,78,111,32,109,111,100,117,108, + 101,32,110,97,109,101,100,32,122,4,123,33,114,125,99,2, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,20,1,0,0,100,0,125,2,124,0,160,0, + 100,1,161,1,100,2,25,0,125,3,124,3,114,64,124,3, + 116,1,106,2,118,1,114,21,116,3,124,1,124,3,131,2, + 1,0,124,0,116,1,106,2,118,0,114,31,116,1,106,2, + 124,0,25,0,83,0,116,1,106,2,124,3,25,0,125,4, + 9,0,124,4,106,4,125,2,110,23,35,0,4,0,116,5, + 121,137,1,0,1,0,1,0,116,6,100,3,23,0,160,7, + 124,0,124,3,161,2,125,5,116,8,124,5,124,0,100,4, + 141,2,100,0,130,2,37,0,116,9,124,0,124,2,131,2, + 125,6,124,6,100,0,117,0,114,82,116,8,116,6,160,7, + 124,0,161,1,124,0,100,4,141,2,130,1,116,10,124,6, + 131,1,125,7,124,3,114,134,116,1,106,2,124,3,25,0, + 125,4,124,0,160,0,100,1,161,1,100,5,25,0,125,8, + 9,0,116,11,124,4,124,8,124,7,131,3,1,0,124,7, + 83,0,35,0,4,0,116,5,121,136,1,0,1,0,1,0, + 100,6,124,3,155,2,100,7,124,8,155,2,157,4,125,5, + 116,12,160,13,124,5,116,14,161,2,1,0,89,0,124,7, + 83,0,37,0,124,7,83,0,119,0,119,0,41,8,78,114, + 141,0,0,0,114,26,0,0,0,122,23,59,32,123,33,114, + 125,32,105,115,32,110,111,116,32,97,32,112,97,99,107,97, + 103,101,114,19,0,0,0,233,2,0,0,0,122,27,67,97, + 110,110,111,116,32,115,101,116,32,97,110,32,97,116,116,114, + 105,98,117,116,101,32,111,110,32,122,18,32,102,111,114,32, + 99,104,105,108,100,32,109,111,100,117,108,101,32,41,15,114, + 142,0,0,0,114,18,0,0,0,114,105,0,0,0,114,75, + 0,0,0,114,154,0,0,0,114,2,0,0,0,218,8,95, + 69,82,82,95,77,83,71,114,51,0,0,0,218,19,77,111, + 100,117,108,101,78,111,116,70,111,117,110,100,69,114,114,111, + 114,114,215,0,0,0,114,173,0,0,0,114,11,0,0,0, + 114,101,0,0,0,114,102,0,0,0,114,169,0,0,0,41, + 9,114,20,0,0,0,218,7,105,109,112,111,114,116,95,114, + 181,0,0,0,114,143,0,0,0,90,13,112,97,114,101,110, + 116,95,109,111,100,117,108,101,114,108,0,0,0,114,109,0, + 0,0,114,110,0,0,0,90,5,99,104,105,108,100,115,9, + 0,0,0,32,32,32,32,32,32,32,32,32,114,5,0,0, + 0,218,23,95,102,105,110,100,95,97,110,100,95,108,111,97, + 100,95,117,110,108,111,99,107,101,100,219,3,0,0,115,68, + 0,0,0,4,1,14,1,4,1,10,1,10,1,10,2,10, + 1,10,1,2,1,8,1,2,128,12,1,16,1,14,1,2, + 128,10,1,8,1,18,1,8,2,4,1,10,2,14,1,2, + 1,12,1,4,4,2,128,12,253,16,1,14,1,4,1,2, + 128,4,0,2,253,2,242,115,31,0,0,0,165,3,41,0, + 169,22,63,7,193,37,6,65,45,0,193,45,21,66,5,7, + 194,8,1,66,5,7,194,9,1,63,7,114,226,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,0, + 0,67,0,0,0,115,132,0,0,0,116,0,124,0,131,1, + 53,0,1,0,116,1,106,2,160,3,124,0,116,4,161,2, + 125,2,124,2,116,4,117,0,114,27,116,5,124,0,124,1, + 131,2,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 9,0,100,1,4,0,4,0,131,3,1,0,110,11,35,0, + 49,0,115,39,119,4,37,0,1,0,1,0,1,0,89,0, + 1,0,1,0,124,2,100,1,117,0,114,60,100,2,160,6, + 124,0,161,1,125,3,116,7,124,3,124,0,100,3,141,2, + 130,1,116,8,124,0,131,1,1,0,124,2,83,0,41,4, + 122,25,70,105,110,100,32,97,110,100,32,108,111,97,100,32, + 116,104,101,32,109,111,100,117,108,101,46,78,122,40,105,109, + 112,111,114,116,32,111,102,32,123,125,32,104,97,108,116,101, + 100,59,32,78,111,110,101,32,105,110,32,115,121,115,46,109, + 111,100,117,108,101,115,114,19,0,0,0,41,9,114,58,0, + 0,0,114,18,0,0,0,114,105,0,0,0,114,39,0,0, + 0,218,14,95,78,69,69,68,83,95,76,79,65,68,73,78, + 71,114,226,0,0,0,114,51,0,0,0,114,224,0,0,0, + 114,73,0,0,0,41,4,114,20,0,0,0,114,225,0,0, + 0,114,110,0,0,0,114,83,0,0,0,115,4,0,0,0, + 32,32,32,32,114,5,0,0,0,218,14,95,102,105,110,100, + 95,97,110,100,95,108,111,97,100,254,3,0,0,115,30,0, + 0,0,10,2,14,1,8,1,8,1,14,253,2,2,12,254, + 22,128,8,5,2,1,6,1,2,255,12,2,8,2,4,1, + 115,12,0,0,0,132,16,34,3,162,4,38,11,167,3,38, + 11,114,228,0,0,0,114,26,0,0,0,99,3,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,42,0,0,0,116,0,124,0,124,1,124,2,131,3,1, + 0,124,2,100,1,107,4,114,16,116,1,124,0,124,1,124, + 2,131,3,125,0,116,2,124,0,116,3,131,2,83,0,41, + 3,97,50,1,0,0,73,109,112,111,114,116,32,97,110,100, + 32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,117, + 108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,32, + 110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,103, + 101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,32, + 32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,111, + 109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,108, + 32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,32, + 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, + 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,103, + 114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,100, + 101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,117, + 110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,32, + 98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,109, + 111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,111, + 114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,117, + 100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,97, + 99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,116, + 104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,111, + 116,46,10,10,32,32,32,32,114,26,0,0,0,78,41,4, + 114,221,0,0,0,114,211,0,0,0,114,228,0,0,0,218, + 11,95,103,99,100,95,105,109,112,111,114,116,114,220,0,0, + 0,115,3,0,0,0,32,32,32,114,5,0,0,0,114,229, + 0,0,0,14,4,0,0,115,8,0,0,0,12,9,8,1, + 12,1,10,1,114,17,0,0,0,114,229,0,0,0,169,1, + 218,9,114,101,99,117,114,115,105,118,101,99,3,0,0,0, + 0,0,0,0,1,0,0,0,9,0,0,0,67,0,0,0, + 115,216,0,0,0,124,1,68,0,93,102,125,4,116,0,124, + 4,116,1,131,2,115,32,124,3,114,17,124,0,106,2,100, + 1,23,0,125,5,110,2,100,2,125,5,116,3,100,3,124, + 5,155,0,100,4,116,4,124,4,131,1,106,2,155,0,157, + 4,131,1,130,1,124,4,100,5,107,2,114,53,124,3,115, + 52,116,5,124,0,100,6,131,2,114,52,116,6,124,0,124, + 0,106,7,124,2,100,7,100,8,141,4,1,0,113,2,116, + 5,124,0,124,4,131,2,115,104,100,9,160,8,124,0,106, + 2,124,4,161,2,125,6,9,0,116,9,124,2,124,6,131, + 2,1,0,113,2,35,0,4,0,116,10,121,107,1,0,125, + 7,1,0,124,7,106,11,124,6,107,2,114,98,116,12,106, + 13,160,14,124,6,116,15,161,2,100,10,117,1,114,98,89, + 0,100,10,125,7,126,7,113,2,130,0,100,10,125,7,126, + 7,119,1,37,0,113,2,124,0,83,0,119,0,41,11,122, + 238,70,105,103,117,114,101,32,111,117,116,32,119,104,97,116, + 32,95,95,105,109,112,111,114,116,95,95,32,115,104,111,117, + 108,100,32,114,101,116,117,114,110,46,10,10,32,32,32,32, + 84,104,101,32,105,109,112,111,114,116,95,32,112,97,114,97, + 109,101,116,101,114,32,105,115,32,97,32,99,97,108,108,97, + 98,108,101,32,119,104,105,99,104,32,116,97,107,101,115,32, + 116,104,101,32,110,97,109,101,32,111,102,32,109,111,100,117, + 108,101,32,116,111,10,32,32,32,32,105,109,112,111,114,116, + 46,32,73,116,32,105,115,32,114,101,113,117,105,114,101,100, + 32,116,111,32,100,101,99,111,117,112,108,101,32,116,104,101, + 32,102,117,110,99,116,105,111,110,32,102,114,111,109,32,97, + 115,115,117,109,105,110,103,32,105,109,112,111,114,116,108,105, + 98,39,115,10,32,32,32,32,105,109,112,111,114,116,32,105, + 109,112,108,101,109,101,110,116,97,116,105,111,110,32,105,115, + 32,100,101,115,105,114,101,100,46,10,10,32,32,32,32,122, + 8,46,95,95,97,108,108,95,95,122,13,96,96,102,114,111, + 109,32,108,105,115,116,39,39,122,8,73,116,101,109,32,105, + 110,32,122,18,32,109,117,115,116,32,98,101,32,115,116,114, + 44,32,110,111,116,32,250,1,42,218,7,95,95,97,108,108, + 95,95,84,114,230,0,0,0,114,206,0,0,0,78,41,16, + 114,216,0,0,0,114,217,0,0,0,114,8,0,0,0,114, + 218,0,0,0,114,3,0,0,0,114,10,0,0,0,218,16, + 95,104,97,110,100,108,101,95,102,114,111,109,108,105,115,116, + 114,233,0,0,0,114,51,0,0,0,114,75,0,0,0,114, + 224,0,0,0,114,20,0,0,0,114,18,0,0,0,114,105, + 0,0,0,114,39,0,0,0,114,227,0,0,0,41,8,114, + 110,0,0,0,218,8,102,114,111,109,108,105,115,116,114,225, + 0,0,0,114,231,0,0,0,218,1,120,90,5,119,104,101, + 114,101,90,9,102,114,111,109,95,110,97,109,101,90,3,101, + 120,99,115,8,0,0,0,32,32,32,32,32,32,32,32,114, + 5,0,0,0,114,234,0,0,0,29,4,0,0,115,58,0, + 0,0,8,10,10,1,4,1,12,1,4,2,10,1,8,1, + 8,255,8,2,14,1,10,1,2,1,6,255,2,128,10,2, + 14,1,2,1,12,1,2,128,12,1,10,4,16,1,2,255, + 10,2,2,1,10,128,2,245,4,12,2,248,115,36,0,0, + 0,193,2,5,65,8,2,193,8,7,65,39,9,193,15,14, + 65,35,9,193,34,1,65,35,9,193,35,4,65,39,9,193, + 43,1,65,39,9,114,234,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,7,0,0,0,67,0,0,0,115, + 146,0,0,0,124,0,160,0,100,1,161,1,125,1,124,0, + 160,0,100,2,161,1,125,2,124,1,100,3,117,1,114,41, + 124,2,100,3,117,1,114,39,124,1,124,2,106,1,107,3, + 114,39,116,2,160,3,100,4,124,1,155,2,100,5,124,2, + 106,1,155,2,100,6,157,5,116,4,100,7,100,8,166,3, + 1,0,124,1,83,0,124,2,100,3,117,1,114,48,124,2, + 106,1,83,0,116,2,160,3,100,9,116,4,100,7,100,8, + 166,3,1,0,124,0,100,10,25,0,125,1,100,11,124,0, + 118,1,114,71,124,1,160,5,100,12,161,1,100,13,25,0, + 125,1,124,1,83,0,41,14,122,167,67,97,108,99,117,108, + 97,116,101,32,119,104,97,116,32,95,95,112,97,99,107,97, + 103,101,95,95,32,115,104,111,117,108,100,32,98,101,46,10, + 10,32,32,32,32,95,95,112,97,99,107,97,103,101,95,95, + 32,105,115,32,110,111,116,32,103,117,97,114,97,110,116,101, + 101,100,32,116,111,32,98,101,32,100,101,102,105,110,101,100, + 32,111,114,32,99,111,117,108,100,32,98,101,32,115,101,116, + 32,116,111,32,78,111,110,101,10,32,32,32,32,116,111,32, + 114,101,112,114,101,115,101,110,116,32,116,104,97,116,32,105, + 116,115,32,112,114,111,112,101,114,32,118,97,108,117,101,32, + 105,115,32,117,110,107,110,111,119,110,46,10,10,32,32,32, + 32,114,158,0,0,0,114,113,0,0,0,78,122,32,95,95, + 112,97,99,107,97,103,101,95,95,32,33,61,32,95,95,115, + 112,101,99,95,95,46,112,97,114,101,110,116,32,40,122,4, + 32,33,61,32,250,1,41,233,3,0,0,0,41,1,90,10, + 115,116,97,99,107,108,101,118,101,108,122,89,99,97,110,39, + 116,32,114,101,115,111,108,118,101,32,112,97,99,107,97,103, + 101,32,102,114,111,109,32,95,95,115,112,101,99,95,95,32, + 111,114,32,95,95,112,97,99,107,97,103,101,95,95,44,32, + 102,97,108,108,105,110,103,32,98,97,99,107,32,111,110,32, + 95,95,110,97,109,101,95,95,32,97,110,100,32,95,95,112, + 97,116,104,95,95,114,8,0,0,0,114,154,0,0,0,114, + 141,0,0,0,114,26,0,0,0,41,6,114,39,0,0,0, + 114,143,0,0,0,114,101,0,0,0,114,102,0,0,0,114, + 169,0,0,0,114,142,0,0,0,41,3,218,7,103,108,111, + 98,97,108,115,114,209,0,0,0,114,109,0,0,0,115,3, + 0,0,0,32,32,32,114,5,0,0,0,218,17,95,99,97, + 108,99,95,95,95,112,97,99,107,97,103,101,95,95,66,4, + 0,0,115,42,0,0,0,10,7,10,1,8,1,18,1,6, + 1,2,1,4,255,4,1,6,255,4,2,6,254,4,3,8, + 1,6,1,6,2,4,2,6,254,8,3,8,1,14,1,4, + 1,114,17,0,0,0,114,240,0,0,0,114,23,0,0,0, + 99,5,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,67,0,0,0,115,174,0,0,0,124,4,100,1,107,2, + 114,9,116,0,124,0,131,1,125,5,110,18,124,1,100,2, + 117,1,114,15,124,1,110,1,105,0,125,6,116,1,124,6, + 131,1,125,7,116,0,124,0,124,7,124,4,131,3,125,5, + 124,3,115,74,124,4,100,1,107,2,114,42,116,0,124,0, + 160,2,100,3,161,1,100,1,25,0,131,1,83,0,124,0, + 115,46,124,5,83,0,116,3,124,0,131,1,116,3,124,0, + 160,2,100,3,161,1,100,1,25,0,131,1,24,0,125,8, + 116,4,106,5,124,5,106,6,100,2,116,3,124,5,106,6, + 131,1,124,8,24,0,133,2,25,0,25,0,83,0,116,7, + 124,5,100,4,131,2,114,85,116,8,124,5,124,3,116,0, + 131,3,83,0,124,5,83,0,41,5,97,215,1,0,0,73, + 109,112,111,114,116,32,97,32,109,111,100,117,108,101,46,10, + 10,32,32,32,32,84,104,101,32,39,103,108,111,98,97,108, + 115,39,32,97,114,103,117,109,101,110,116,32,105,115,32,117, + 115,101,100,32,116,111,32,105,110,102,101,114,32,119,104,101, + 114,101,32,116,104,101,32,105,109,112,111,114,116,32,105,115, + 32,111,99,99,117,114,114,105,110,103,32,102,114,111,109,10, + 32,32,32,32,116,111,32,104,97,110,100,108,101,32,114,101, + 108,97,116,105,118,101,32,105,109,112,111,114,116,115,46,32, + 84,104,101,32,39,108,111,99,97,108,115,39,32,97,114,103, + 117,109,101,110,116,32,105,115,32,105,103,110,111,114,101,100, + 46,32,84,104,101,10,32,32,32,32,39,102,114,111,109,108, + 105,115,116,39,32,97,114,103,117,109,101,110,116,32,115,112, + 101,99,105,102,105,101,115,32,119,104,97,116,32,115,104,111, + 117,108,100,32,101,120,105,115,116,32,97,115,32,97,116,116, + 114,105,98,117,116,101,115,32,111,110,32,116,104,101,32,109, + 111,100,117,108,101,10,32,32,32,32,98,101,105,110,103,32, + 105,109,112,111,114,116,101,100,32,40,101,46,103,46,32,96, + 96,102,114,111,109,32,109,111,100,117,108,101,32,105,109,112, + 111,114,116,32,60,102,114,111,109,108,105,115,116,62,96,96, + 41,46,32,32,84,104,101,32,39,108,101,118,101,108,39,10, + 32,32,32,32,97,114,103,117,109,101,110,116,32,114,101,112, + 114,101,115,101,110,116,115,32,116,104,101,32,112,97,99,107, + 97,103,101,32,108,111,99,97,116,105,111,110,32,116,111,32, + 105,109,112,111,114,116,32,102,114,111,109,32,105,110,32,97, + 32,114,101,108,97,116,105,118,101,10,32,32,32,32,105,109, + 112,111,114,116,32,40,101,46,103,46,32,96,96,102,114,111, + 109,32,46,46,112,107,103,32,105,109,112,111,114,116,32,109, + 111,100,96,96,32,119,111,117,108,100,32,104,97,118,101,32, + 97,32,39,108,101,118,101,108,39,32,111,102,32,50,41,46, + 10,10,32,32,32,32,114,26,0,0,0,78,114,141,0,0, + 0,114,154,0,0,0,41,9,114,229,0,0,0,114,240,0, + 0,0,218,9,112,97,114,116,105,116,105,111,110,114,208,0, + 0,0,114,18,0,0,0,114,105,0,0,0,114,8,0,0, + 0,114,10,0,0,0,114,234,0,0,0,41,9,114,20,0, + 0,0,114,239,0,0,0,218,6,108,111,99,97,108,115,114, + 235,0,0,0,114,210,0,0,0,114,110,0,0,0,90,8, + 103,108,111,98,97,108,115,95,114,209,0,0,0,90,7,99, + 117,116,95,111,102,102,115,9,0,0,0,32,32,32,32,32, 32,32,32,32,114,5,0,0,0,218,10,95,95,105,109,112, 111,114,116,95,95,93,4,0,0,115,30,0,0,0,8,11, 10,1,16,2,8,1,12,1,4,1,8,3,18,1,4,1, @@ -1799,110 +1824,112 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 105,108,116,45,105,110,32,109,111,100,117,108,101,32,110,97, 109,101,100,32,41,4,114,175,0,0,0,114,183,0,0,0, 114,88,0,0,0,114,173,0,0,0,41,2,114,20,0,0, - 0,114,109,0,0,0,32,32,114,5,0,0,0,218,18,95, - 98,117,105,108,116,105,110,95,102,114,111,109,95,110,97,109, - 101,130,4,0,0,115,8,0,0,0,10,1,8,1,12,1, - 8,1,114,17,0,0,0,114,244,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,67,0,0, - 0,115,166,0,0,0,124,1,97,0,124,0,97,1,116,2, - 116,1,131,1,125,2,116,1,106,3,160,4,161,0,68,0, - 93,36,92,2,125,3,125,4,116,5,124,4,124,2,131,2, - 114,49,124,3,116,1,106,6,118,0,114,30,116,7,125,5, - 110,9,116,0,160,8,124,3,161,1,114,38,116,9,125,5, - 110,1,113,13,116,10,124,4,124,5,131,2,125,6,116,11, - 124,6,124,4,131,2,1,0,113,13,116,1,106,3,116,12, - 25,0,125,7,100,1,68,0,93,23,125,8,124,8,116,1, - 106,3,118,1,114,69,116,13,124,8,131,1,125,9,110,5, - 116,1,106,3,124,8,25,0,125,9,116,14,124,7,124,8, - 124,9,131,3,1,0,113,57,100,2,83,0,41,3,122,250, - 83,101,116,117,112,32,105,109,112,111,114,116,108,105,98,32, - 98,121,32,105,109,112,111,114,116,105,110,103,32,110,101,101, - 100,101,100,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,115,32,97,110,100,32,105,110,106,101,99,116,105, - 110,103,32,116,104,101,109,10,32,32,32,32,105,110,116,111, - 32,116,104,101,32,103,108,111,98,97,108,32,110,97,109,101, - 115,112,97,99,101,46,10,10,32,32,32,32,65,115,32,115, - 121,115,32,105,115,32,110,101,101,100,101,100,32,102,111,114, - 32,115,121,115,46,109,111,100,117,108,101,115,32,97,99,99, - 101,115,115,32,97,110,100,32,95,105,109,112,32,105,115,32, - 110,101,101,100,101,100,32,116,111,32,108,111,97,100,32,98, - 117,105,108,116,45,105,110,10,32,32,32,32,109,111,100,117, - 108,101,115,44,32,116,104,111,115,101,32,116,119,111,32,109, - 111,100,117,108,101,115,32,109,117,115,116,32,98,101,32,101, - 120,112,108,105,99,105,116,108,121,32,112,97,115,115,101,100, - 32,105,110,46,10,10,32,32,32,32,41,3,114,27,0,0, - 0,114,101,0,0,0,114,72,0,0,0,78,41,15,114,65, - 0,0,0,114,18,0,0,0,114,3,0,0,0,114,105,0, - 0,0,218,5,105,116,101,109,115,114,216,0,0,0,114,87, - 0,0,0,114,175,0,0,0,114,98,0,0,0,114,193,0, - 0,0,114,155,0,0,0,114,161,0,0,0,114,8,0,0, - 0,114,244,0,0,0,114,11,0,0,0,41,10,218,10,115, - 121,115,95,109,111,100,117,108,101,218,11,95,105,109,112,95, - 109,111,100,117,108,101,90,11,109,111,100,117,108,101,95,116, - 121,112,101,114,20,0,0,0,114,110,0,0,0,114,122,0, - 0,0,114,109,0,0,0,90,11,115,101,108,102,95,109,111, - 100,117,108,101,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,32,32,32,32,32,32,32,32,32,32,114,5,0,0, - 0,218,6,95,115,101,116,117,112,137,4,0,0,115,40,0, - 0,0,4,9,4,1,8,3,18,1,10,1,10,1,6,1, - 10,1,6,1,2,2,10,1,10,1,2,128,10,3,8,1, - 10,1,10,1,10,2,14,1,4,251,114,17,0,0,0,114, - 248,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,67,0,0,0,115,38,0,0,0,116,0, - 124,0,124,1,131,2,1,0,116,1,106,2,160,3,116,4, - 161,1,1,0,116,1,106,2,160,3,116,5,161,1,1,0, - 100,1,83,0,41,2,122,48,73,110,115,116,97,108,108,32, - 105,109,112,111,114,116,101,114,115,32,102,111,114,32,98,117, - 105,108,116,105,110,32,97,110,100,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,115,78,41,6,114,248,0,0,0, - 114,18,0,0,0,114,214,0,0,0,114,132,0,0,0,114, - 175,0,0,0,114,193,0,0,0,41,2,114,246,0,0,0, - 114,247,0,0,0,32,32,114,5,0,0,0,218,8,95,105, - 110,115,116,97,108,108,172,4,0,0,115,6,0,0,0,10, - 2,12,2,16,1,114,17,0,0,0,114,249,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,32,0,0,0,100,1,100,2,108,0,125, - 0,124,0,97,1,124,0,160,2,116,3,106,4,116,5,25, - 0,161,1,1,0,100,2,83,0,41,3,122,57,73,110,115, - 116,97,108,108,32,105,109,112,111,114,116,101,114,115,32,116, - 104,97,116,32,114,101,113,117,105,114,101,32,101,120,116,101, - 114,110,97,108,32,102,105,108,101,115,121,115,116,101,109,32, - 97,99,99,101,115,115,114,26,0,0,0,78,41,6,218,26, - 95,102,114,111,122,101,110,95,105,109,112,111,114,116,108,105, - 98,95,101,120,116,101,114,110,97,108,114,139,0,0,0,114, - 249,0,0,0,114,18,0,0,0,114,105,0,0,0,114,8, - 0,0,0,41,1,114,250,0,0,0,32,114,5,0,0,0, - 218,27,95,105,110,115,116,97,108,108,95,101,120,116,101,114, - 110,97,108,95,105,109,112,111,114,116,101,114,115,180,4,0, - 0,115,6,0,0,0,8,3,4,1,20,1,114,17,0,0, - 0,114,251,0,0,0,114,190,0,0,0,114,0,0,0,0, - 114,25,0,0,0,41,4,78,78,114,23,0,0,0,114,26, - 0,0,0,41,54,114,9,0,0,0,114,6,0,0,0,114, - 27,0,0,0,114,101,0,0,0,114,72,0,0,0,114,139, - 0,0,0,114,16,0,0,0,114,21,0,0,0,114,67,0, - 0,0,114,38,0,0,0,114,48,0,0,0,114,22,0,0, - 0,114,24,0,0,0,114,56,0,0,0,114,58,0,0,0, - 114,61,0,0,0,114,73,0,0,0,114,75,0,0,0,114, - 84,0,0,0,114,95,0,0,0,114,100,0,0,0,114,111, - 0,0,0,114,124,0,0,0,114,125,0,0,0,114,104,0, - 0,0,114,155,0,0,0,114,161,0,0,0,114,165,0,0, - 0,114,119,0,0,0,114,106,0,0,0,114,172,0,0,0, - 114,173,0,0,0,114,107,0,0,0,114,175,0,0,0,114, - 193,0,0,0,114,200,0,0,0,114,211,0,0,0,114,213, - 0,0,0,114,215,0,0,0,114,221,0,0,0,90,15,95, - 69,82,82,95,77,83,71,95,80,82,69,70,73,88,114,223, - 0,0,0,114,226,0,0,0,218,6,111,98,106,101,99,116, - 114,227,0,0,0,114,228,0,0,0,114,229,0,0,0,114, - 234,0,0,0,114,240,0,0,0,114,243,0,0,0,114,244, - 0,0,0,114,248,0,0,0,114,249,0,0,0,114,251,0, - 0,0,114,23,0,0,0,114,5,0,0,0,218,8,60,109, - 111,100,117,108,101,62,1,0,0,0,115,104,0,0,0,4, - 0,8,22,4,9,4,1,4,1,4,3,8,3,8,8,4, - 8,4,2,16,3,14,4,14,77,14,21,8,16,8,37,8, - 17,14,11,8,8,8,11,8,12,8,19,14,26,16,101,10, - 26,14,45,8,72,8,17,8,17,8,30,8,36,8,45,14, - 15,14,80,14,85,8,13,8,9,10,10,8,47,4,16,8, - 1,8,2,6,32,8,3,10,16,14,15,8,37,10,27,8, - 37,8,7,8,35,12,8,114,17,0,0,0, + 0,114,109,0,0,0,115,2,0,0,0,32,32,114,5,0, + 0,0,218,18,95,98,117,105,108,116,105,110,95,102,114,111, + 109,95,110,97,109,101,130,4,0,0,115,8,0,0,0,10, + 1,8,1,12,1,8,1,114,17,0,0,0,114,244,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,67,0,0,0,115,166,0,0,0,124,1,97,0,124, + 0,97,1,116,2,116,1,131,1,125,2,116,1,106,3,160, + 4,161,0,68,0,93,36,92,2,125,3,125,4,116,5,124, + 4,124,2,131,2,114,49,124,3,116,1,106,6,118,0,114, + 30,116,7,125,5,110,9,116,0,160,8,124,3,161,1,114, + 38,116,9,125,5,110,1,113,13,116,10,124,4,124,5,131, + 2,125,6,116,11,124,6,124,4,131,2,1,0,113,13,116, + 1,106,3,116,12,25,0,125,7,100,1,68,0,93,23,125, + 8,124,8,116,1,106,3,118,1,114,69,116,13,124,8,131, + 1,125,9,110,5,116,1,106,3,124,8,25,0,125,9,116, + 14,124,7,124,8,124,9,131,3,1,0,113,57,100,2,83, + 0,41,3,122,250,83,101,116,117,112,32,105,109,112,111,114, + 116,108,105,98,32,98,121,32,105,109,112,111,114,116,105,110, + 103,32,110,101,101,100,101,100,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,115,32,97,110,100,32,105,110, + 106,101,99,116,105,110,103,32,116,104,101,109,10,32,32,32, + 32,105,110,116,111,32,116,104,101,32,103,108,111,98,97,108, + 32,110,97,109,101,115,112,97,99,101,46,10,10,32,32,32, + 32,65,115,32,115,121,115,32,105,115,32,110,101,101,100,101, + 100,32,102,111,114,32,115,121,115,46,109,111,100,117,108,101, + 115,32,97,99,99,101,115,115,32,97,110,100,32,95,105,109, + 112,32,105,115,32,110,101,101,100,101,100,32,116,111,32,108, + 111,97,100,32,98,117,105,108,116,45,105,110,10,32,32,32, + 32,109,111,100,117,108,101,115,44,32,116,104,111,115,101,32, + 116,119,111,32,109,111,100,117,108,101,115,32,109,117,115,116, + 32,98,101,32,101,120,112,108,105,99,105,116,108,121,32,112, + 97,115,115,101,100,32,105,110,46,10,10,32,32,32,32,41, + 3,114,27,0,0,0,114,101,0,0,0,114,72,0,0,0, + 78,41,15,114,65,0,0,0,114,18,0,0,0,114,3,0, + 0,0,114,105,0,0,0,218,5,105,116,101,109,115,114,216, + 0,0,0,114,87,0,0,0,114,175,0,0,0,114,98,0, + 0,0,114,193,0,0,0,114,155,0,0,0,114,161,0,0, + 0,114,8,0,0,0,114,244,0,0,0,114,11,0,0,0, + 41,10,218,10,115,121,115,95,109,111,100,117,108,101,218,11, + 95,105,109,112,95,109,111,100,117,108,101,90,11,109,111,100, + 117,108,101,95,116,121,112,101,114,20,0,0,0,114,110,0, + 0,0,114,122,0,0,0,114,109,0,0,0,90,11,115,101, + 108,102,95,109,111,100,117,108,101,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,115,10,0,0,0,32,32,32,32, + 32,32,32,32,32,32,114,5,0,0,0,218,6,95,115,101, + 116,117,112,137,4,0,0,115,40,0,0,0,4,9,4,1, + 8,3,18,1,10,1,10,1,6,1,10,1,6,1,2,2, + 10,1,10,1,2,128,10,3,8,1,10,1,10,1,10,2, + 14,1,4,251,114,17,0,0,0,114,248,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, + 0,0,0,115,38,0,0,0,116,0,124,0,124,1,131,2, + 1,0,116,1,106,2,160,3,116,4,161,1,1,0,116,1, + 106,2,160,3,116,5,161,1,1,0,100,1,83,0,41,2, + 122,48,73,110,115,116,97,108,108,32,105,109,112,111,114,116, + 101,114,115,32,102,111,114,32,98,117,105,108,116,105,110,32, + 97,110,100,32,102,114,111,122,101,110,32,109,111,100,117,108, + 101,115,78,41,6,114,248,0,0,0,114,18,0,0,0,114, + 214,0,0,0,114,132,0,0,0,114,175,0,0,0,114,193, + 0,0,0,41,2,114,246,0,0,0,114,247,0,0,0,115, + 2,0,0,0,32,32,114,5,0,0,0,218,8,95,105,110, + 115,116,97,108,108,172,4,0,0,115,6,0,0,0,10,2, + 12,2,16,1,114,17,0,0,0,114,249,0,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,32,0,0,0,100,1,100,2,108,0,125,0, + 124,0,97,1,124,0,160,2,116,3,106,4,116,5,25,0, + 161,1,1,0,100,2,83,0,41,3,122,57,73,110,115,116, + 97,108,108,32,105,109,112,111,114,116,101,114,115,32,116,104, + 97,116,32,114,101,113,117,105,114,101,32,101,120,116,101,114, + 110,97,108,32,102,105,108,101,115,121,115,116,101,109,32,97, + 99,99,101,115,115,114,26,0,0,0,78,41,6,218,26,95, + 102,114,111,122,101,110,95,105,109,112,111,114,116,108,105,98, + 95,101,120,116,101,114,110,97,108,114,139,0,0,0,114,249, + 0,0,0,114,18,0,0,0,114,105,0,0,0,114,8,0, + 0,0,41,1,114,250,0,0,0,115,1,0,0,0,32,114, + 5,0,0,0,218,27,95,105,110,115,116,97,108,108,95,101, + 120,116,101,114,110,97,108,95,105,109,112,111,114,116,101,114, + 115,180,4,0,0,115,6,0,0,0,8,3,4,1,20,1, + 114,17,0,0,0,114,251,0,0,0,114,190,0,0,0,114, + 0,0,0,0,114,25,0,0,0,41,4,78,78,114,23,0, + 0,0,114,26,0,0,0,41,54,114,9,0,0,0,114,6, + 0,0,0,114,27,0,0,0,114,101,0,0,0,114,72,0, + 0,0,114,139,0,0,0,114,16,0,0,0,114,21,0,0, + 0,114,67,0,0,0,114,38,0,0,0,114,48,0,0,0, + 114,22,0,0,0,114,24,0,0,0,114,56,0,0,0,114, + 58,0,0,0,114,61,0,0,0,114,73,0,0,0,114,75, + 0,0,0,114,84,0,0,0,114,95,0,0,0,114,100,0, + 0,0,114,111,0,0,0,114,124,0,0,0,114,125,0,0, + 0,114,104,0,0,0,114,155,0,0,0,114,161,0,0,0, + 114,165,0,0,0,114,119,0,0,0,114,106,0,0,0,114, + 172,0,0,0,114,173,0,0,0,114,107,0,0,0,114,175, + 0,0,0,114,193,0,0,0,114,200,0,0,0,114,211,0, + 0,0,114,213,0,0,0,114,215,0,0,0,114,221,0,0, + 0,90,15,95,69,82,82,95,77,83,71,95,80,82,69,70, + 73,88,114,223,0,0,0,114,226,0,0,0,218,6,111,98, + 106,101,99,116,114,227,0,0,0,114,228,0,0,0,114,229, + 0,0,0,114,234,0,0,0,114,240,0,0,0,114,243,0, + 0,0,114,244,0,0,0,114,248,0,0,0,114,249,0,0, + 0,114,251,0,0,0,114,23,0,0,0,114,17,0,0,0, + 114,5,0,0,0,218,8,60,109,111,100,117,108,101,62,1, + 0,0,0,115,104,0,0,0,4,0,8,22,4,9,4,1, + 4,1,4,3,8,3,8,8,4,8,4,2,16,3,14,4, + 14,77,14,21,8,16,8,37,8,17,14,11,8,8,8,11, + 8,12,8,19,14,26,16,101,10,26,14,45,8,72,8,17, + 8,17,8,30,8,36,8,45,14,15,14,80,14,85,8,13, + 8,9,10,10,8,47,4,16,8,1,8,2,6,32,8,3, + 10,16,14,15,8,37,10,27,8,37,8,7,8,35,12,8, + 114,17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 2ffd039acddb7b..92a14851a14ca0 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -77,199 +77,204 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,28,0,0,0,129,0,124,0,93,9,125,1,116,0, 124,1,131,1,100,0,107,2,86,0,1,0,113,2,100,1, 83,0,41,2,233,1,0,0,0,78,41,1,218,3,108,101, - 110,41,2,218,2,46,48,218,3,115,101,112,32,32,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,46,0,0,0,115,4,0,0,0,2,128,26,0,243,0, - 0,0,0,114,8,0,0,0,218,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 22,0,0,0,104,0,124,0,93,7,125,1,100,0,124,1, - 155,0,157,2,146,2,113,2,83,0,41,1,250,1,58,169, - 0,41,2,114,5,0,0,0,218,1,115,32,32,114,7,0, - 0,0,218,9,60,115,101,116,99,111,109,112,62,50,0,0, - 0,115,2,0,0,0,22,0,114,9,0,0,0,114,14,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,3,0,0,0,3,0,0,0, - 115,64,0,0,0,135,1,116,0,106,1,160,2,116,3,161, - 1,114,26,116,0,106,1,160,2,116,4,161,1,114,16,100, - 1,138,1,110,2,100,2,138,1,136,1,102,1,100,3,100, - 4,132,8,125,0,124,0,83,0,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,2,0,0,0,19,0,0,0,115,20,0,0, - 0,116,0,106,1,106,2,12,0,111,9,137,0,116,3,106, - 4,118,0,83,0,41,2,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,78,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,169,1,218,3,107,101,121,128, - 114,7,0,0,0,218,11,95,114,101,108,97,120,95,99,97, - 115,101,67,0,0,0,243,2,0,0,0,20,2,114,9,0, - 0,0,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,1,0,0,0,83,0,0,0,243,4, - 0,0,0,100,1,83,0,41,3,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,78,114,12,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,22,0,0,0,71,0,0,0,243,2,0,0,0,4, - 2,114,9,0,0,0,41,5,114,16,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,2,114,22,0,0,0,114,21,0,0, - 0,32,64,114,7,0,0,0,218,16,95,109,97,107,101,95, - 114,101,108,97,120,95,99,97,115,101,60,0,0,0,115,18, - 0,0,0,2,128,12,1,12,1,6,1,4,2,12,2,4, - 7,8,253,4,3,114,9,0,0,0,114,30,0,0,0,99, + 110,41,2,218,2,46,48,218,3,115,101,112,115,2,0,0, + 0,32,32,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,46,0,0,0,115,4,0,0,0,2, + 128,26,0,243,0,0,0,0,114,8,0,0,0,218,0,99, 1,0,0,0,0,0,0,0,0,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,5,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,78,41,2,218,3,105,110,116,218,8,116,111,95, - 98,121,116,101,115,41,1,218,1,120,32,114,7,0,0,0, - 218,12,95,112,97,99,107,95,117,105,110,116,51,50,79,0, - 0,0,114,23,0,0,0,114,9,0,0,0,114,37,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,67,0,0,0,243,28,0,0,0,116,0,124,0,131, - 1,100,1,107,2,115,8,74,0,130,1,116,1,160,2,124, - 0,100,2,161,2,83,0,41,4,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,32,0,0,0,114, - 33,0,0,0,78,169,3,114,4,0,0,0,114,34,0,0, - 0,218,10,102,114,111,109,95,98,121,116,101,115,169,1,218, - 4,100,97,116,97,32,114,7,0,0,0,218,14,95,117,110, - 112,97,99,107,95,117,105,110,116,51,50,84,0,0,0,243, - 4,0,0,0,16,2,12,1,114,9,0,0,0,114,43,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,67,0,0,0,114,38,0,0,0,41,4,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,33,0,0,0,78,114,39,0,0,0,114, - 41,0,0,0,32,114,7,0,0,0,218,14,95,117,110,112, - 97,99,107,95,117,105,110,116,49,54,89,0,0,0,114,44, - 0,0,0,114,9,0,0,0,114,46,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,71,0, - 0,0,115,228,0,0,0,124,0,115,4,100,1,83,0,116, - 0,124,0,131,1,100,2,107,2,114,14,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,61,92,2,125,3,125,4,124, - 3,160,4,116,5,161,1,115,38,124,3,160,6,116,5,161, - 1,114,51,124,3,160,7,116,8,161,1,112,44,124,1,125, - 1,116,9,124,4,23,0,103,1,125,2,113,24,124,3,160, - 6,100,4,161,1,114,76,124,1,160,10,161,0,124,3,160, - 10,161,0,107,3,114,70,124,3,125,1,124,4,103,1,125, - 2,113,24,124,2,160,11,124,4,161,1,1,0,113,24,124, - 3,112,79,124,1,125,1,124,2,160,11,124,4,161,1,1, - 0,113,24,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,107,124,2,100, - 3,25,0,115,107,124,1,116,9,23,0,83,0,124,1,116, - 9,160,12,124,2,161,1,23,0,83,0,41,8,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,10, - 0,0,0,114,3,0,0,0,114,0,0,0,0,114,11,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,83,0,0,0,243,26,0,0,0,103,0,124,0, - 93,9,125,1,124,1,114,2,124,1,160,0,116,1,161,1, - 145,2,113,2,83,0,114,12,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,41,2,114,5,0,0,0,218,1,112, - 32,32,114,7,0,0,0,218,10,60,108,105,115,116,99,111, - 109,112,62,119,0,0,0,115,2,0,0,0,26,0,114,9, - 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,78,41,13,114,4,0,0,0,218,3,109,97,112, - 114,19,0,0,0,218,15,95,112,97,116,104,95,115,112,108, - 105,116,114,111,111,116,114,27,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,50,0,0,0,114,51,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,32,32,32,32,32, - 114,7,0,0,0,218,10,95,112,97,116,104,95,106,111,105, - 110,96,0,0,0,115,42,0,0,0,4,2,4,1,12,1, - 8,1,4,1,4,1,20,1,20,1,14,1,12,1,10,1, - 16,1,4,3,8,1,12,2,8,2,12,1,14,1,20,1, - 8,2,14,1,114,9,0,0,0,114,67,0,0,0,99,0, - 0,0,0,0,0,0,0,0,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,4,114,47, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,83,0,0,0,114,48,0,0,0,114,12,0, - 0,0,114,49,0,0,0,41,2,114,5,0,0,0,218,4, - 112,97,114,116,32,32,114,7,0,0,0,114,53,0,0,0, - 128,0,0,0,115,6,0,0,0,6,0,4,1,16,255,114, - 9,0,0,0,114,54,0,0,0,78,41,2,114,59,0,0, - 0,114,62,0,0,0,41,1,114,63,0,0,0,32,114,7, - 0,0,0,114,67,0,0,0,126,0,0,0,115,6,0,0, - 0,10,2,2,1,8,255,114,9,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, - 0,115,68,0,0,0,135,0,116,0,136,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,20,100,4,137,0,102,2,83,0,137,0, - 100,5,124,1,133,2,25,0,137,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,4,0,0,0,51, - 0,0,0,115,26,0,0,0,129,0,124,0,93,8,125,1, - 137,2,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,41,3, - 114,5,0,0,0,114,52,0,0,0,114,65,0,0,0,32, - 32,128,114,7,0,0,0,114,8,0,0,0,134,0,0,0, - 115,4,0,0,0,2,128,24,0,114,9,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,10,0,0,0,78,114,3,0,0,0,41,2, - 218,3,109,97,120,114,51,0,0,0,41,2,114,65,0,0, - 0,218,1,105,96,32,114,7,0,0,0,218,11,95,112,97, - 116,104,95,115,112,108,105,116,132,0,0,0,115,10,0,0, - 0,2,128,22,2,8,1,8,1,28,1,114,9,0,0,0, - 114,73,0,0,0,99,1,0,0,0,0,0,0,0,0,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,2,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,78,41,2,114,19, - 0,0,0,90,4,115,116,97,116,169,1,114,65,0,0,0, - 32,114,7,0,0,0,218,10,95,112,97,116,104,95,115,116, - 97,116,140,0,0,0,115,2,0,0,0,10,7,114,9,0, - 0,0,114,75,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,67,0,0,0,115,50,0,0, - 0,9,0,116,0,124,0,131,1,125,2,110,11,35,0,4, - 0,116,1,121,24,1,0,1,0,1,0,89,0,100,1,83, - 0,37,0,124,2,106,2,100,2,64,0,124,1,107,2,83, - 0,119,0,41,4,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,78,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, + 67,0,0,0,115,22,0,0,0,104,0,124,0,93,7,125, + 1,100,0,124,1,155,0,157,2,146,2,113,2,83,0,41, + 1,250,1,58,169,0,41,2,114,5,0,0,0,218,1,115, + 115,2,0,0,0,32,32,114,7,0,0,0,218,9,60,115, + 101,116,99,111,109,112,62,50,0,0,0,115,2,0,0,0, + 22,0,114,9,0,0,0,114,14,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,3,0,0,0,3,0,0,0,115,64,0,0,0,135, + 1,116,0,106,1,160,2,116,3,161,1,114,26,116,0,106, + 1,160,2,116,4,161,1,114,16,100,1,138,1,110,2,100, + 2,138,1,136,1,102,1,100,3,100,4,132,8,125,0,124, + 0,83,0,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,2,0, + 0,0,19,0,0,0,115,20,0,0,0,116,0,106,1,106, + 2,12,0,111,9,137,0,116,3,106,4,118,0,83,0,41, + 2,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,78,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,169,1,218,3,107,101,121,115,1,0,0,0,128,114, + 7,0,0,0,218,11,95,114,101,108,97,120,95,99,97,115, + 101,67,0,0,0,243,2,0,0,0,20,2,114,9,0,0, + 0,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,1,0,0,0,83,0,0,0,243,4,0, + 0,0,100,1,83,0,41,3,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, + 78,114,12,0,0,0,114,12,0,0,0,114,9,0,0,0, + 114,7,0,0,0,114,22,0,0,0,71,0,0,0,243,2, + 0,0,0,4,2,114,9,0,0,0,41,5,114,16,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,2,114,22,0,0,0, + 114,21,0,0,0,115,2,0,0,0,32,64,114,7,0,0, + 0,218,16,95,109,97,107,101,95,114,101,108,97,120,95,99, + 97,115,101,60,0,0,0,115,18,0,0,0,2,128,12,1, + 12,1,6,1,4,2,12,2,4,7,8,253,4,3,114,9, + 0,0,0,114,30,0,0,0,99,1,0,0,0,0,0,0, + 0,0,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,5,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,78,41,2,218, + 3,105,110,116,218,8,116,111,95,98,121,116,101,115,41,1, + 218,1,120,115,1,0,0,0,32,114,7,0,0,0,218,12, + 95,112,97,99,107,95,117,105,110,116,51,50,79,0,0,0, + 114,23,0,0,0,114,9,0,0,0,114,37,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,243,28,0,0,0,116,0,124,0,131,1,100, + 1,107,2,115,8,74,0,130,1,116,1,160,2,124,0,100, + 2,161,2,83,0,41,4,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,32,0,0,0,114,33,0, + 0,0,78,169,3,114,4,0,0,0,114,34,0,0,0,218, + 10,102,114,111,109,95,98,121,116,101,115,169,1,218,4,100, + 97,116,97,115,1,0,0,0,32,114,7,0,0,0,218,14, + 95,117,110,112,97,99,107,95,117,105,110,116,51,50,84,0, + 0,0,243,4,0,0,0,16,2,12,1,114,9,0,0,0, + 114,43,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,67,0,0,0,114,38,0,0,0,41, + 4,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,33,0,0,0,78,114,39,0, + 0,0,114,41,0,0,0,115,1,0,0,0,32,114,7,0, + 0,0,218,14,95,117,110,112,97,99,107,95,117,105,110,116, + 49,54,89,0,0,0,114,44,0,0,0,114,9,0,0,0, + 114,46,0,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,71,0,0,0,115,228,0,0,0,124, + 0,115,4,100,1,83,0,116,0,124,0,131,1,100,2,107, + 2,114,14,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, + 61,92,2,125,3,125,4,124,3,160,4,116,5,161,1,115, + 38,124,3,160,6,116,5,161,1,114,51,124,3,160,7,116, + 8,161,1,112,44,124,1,125,1,116,9,124,4,23,0,103, + 1,125,2,113,24,124,3,160,6,100,4,161,1,114,76,124, + 1,160,10,161,0,124,3,160,10,161,0,107,3,114,70,124, + 3,125,1,124,4,103,1,125,2,113,24,124,2,160,11,124, + 4,161,1,1,0,113,24,124,3,112,79,124,1,125,1,124, + 2,160,11,124,4,161,1,1,0,113,24,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,107,124,2,100,3,25,0,115,107,124,1,116, + 9,23,0,83,0,124,1,116,9,160,12,124,2,161,1,23, + 0,83,0,41,8,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,10,0,0,0,114,3,0,0,0, + 114,0,0,0,0,114,11,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,83,0,0,0,243, + 26,0,0,0,103,0,124,0,93,9,125,1,124,1,114,2, + 124,1,160,0,116,1,161,1,145,2,113,2,83,0,114,12, + 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,41,2, + 114,5,0,0,0,218,1,112,115,2,0,0,0,32,32,114, + 7,0,0,0,218,10,60,108,105,115,116,99,111,109,112,62, + 119,0,0,0,115,2,0,0,0,26,0,114,9,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, + 78,41,13,114,4,0,0,0,218,3,109,97,112,114,19,0, + 0,0,218,15,95,112,97,116,104,95,115,112,108,105,116,114, + 111,111,116,114,27,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,50,0,0,0,114,51,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,115,5,0,0,0,32,32,32, + 32,32,114,7,0,0,0,218,10,95,112,97,116,104,95,106, + 111,105,110,96,0,0,0,115,42,0,0,0,4,2,4,1, + 12,1,8,1,4,1,4,1,20,1,20,1,14,1,12,1, + 10,1,16,1,4,3,8,1,12,2,8,2,12,1,14,1, + 20,1,8,2,14,1,114,9,0,0,0,114,67,0,0,0, + 99,0,0,0,0,0,0,0,0,0,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,4, + 114,47,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,83,0,0,0,114,48,0,0,0,114, + 12,0,0,0,114,49,0,0,0,41,2,114,5,0,0,0, + 218,4,112,97,114,116,115,2,0,0,0,32,32,114,7,0, + 0,0,114,53,0,0,0,128,0,0,0,115,6,0,0,0, + 6,0,4,1,16,255,114,9,0,0,0,114,54,0,0,0, + 78,41,2,114,59,0,0,0,114,62,0,0,0,41,1,114, + 63,0,0,0,115,1,0,0,0,32,114,7,0,0,0,114, + 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, + 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,68,0, + 0,0,135,0,116,0,136,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,20,100,4,137,0,102,2,83,0,137,0,100,5,124,1, + 133,2,25,0,137,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,4,0,0,0,51,0,0,0,115, + 26,0,0,0,129,0,124,0,93,8,125,1,137,2,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,41,3,114,5,0,0, + 0,114,52,0,0,0,114,65,0,0,0,115,3,0,0,0, + 32,32,128,114,7,0,0,0,114,8,0,0,0,134,0,0, + 0,115,4,0,0,0,2,128,24,0,114,9,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,10,0,0,0,78,114,3,0,0,0,41, + 2,218,3,109,97,120,114,51,0,0,0,41,2,114,65,0, + 0,0,218,1,105,115,2,0,0,0,96,32,114,7,0,0, + 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, + 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, + 1,114,9,0,0,0,114,73,0,0,0,99,1,0,0,0, + 0,0,0,0,0,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, + 2,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,78,41,2,114,19,0,0,0,90,4,115,116,97,116,169, + 1,114,65,0,0,0,115,1,0,0,0,32,114,7,0,0, + 0,218,10,95,112,97,116,104,95,115,116,97,116,140,0,0, + 0,115,2,0,0,0,10,7,114,9,0,0,0,114,75,0, + 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,67,0,0,0,115,50,0,0,0,9,0,116,0, + 124,0,131,1,125,2,110,11,35,0,4,0,116,1,121,24, + 1,0,1,0,1,0,89,0,100,1,83,0,37,0,124,2, + 106,2,100,2,64,0,124,1,107,2,83,0,119,0,41,4, + 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,78,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,115,3,0,0,0, 32,32,32,114,7,0,0,0,218,18,95,112,97,116,104,95, 105,115,95,109,111,100,101,95,116,121,112,101,150,0,0,0, 115,16,0,0,0,2,2,10,1,2,128,12,1,6,1,2, @@ -280,562 +285,567 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,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,78,41,1,114,79,0,0,0,114, - 74,0,0,0,32,114,7,0,0,0,218,12,95,112,97,116, - 104,95,105,115,102,105,108,101,159,0,0,0,243,2,0,0, - 0,10,2,114,9,0,0,0,114,80,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,67,0, - 0,0,115,22,0,0,0,124,0,115,6,116,0,160,1,161, - 0,125,0,116,2,124,0,100,1,131,2,83,0,41,3,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,78,41,3,114,19,0,0,0,218,6,103,101, - 116,99,119,100,114,79,0,0,0,114,74,0,0,0,32,114, - 7,0,0,0,218,11,95,112,97,116,104,95,105,115,100,105, - 114,164,0,0,0,115,6,0,0,0,4,2,8,1,10,1, - 114,9,0,0,0,114,83,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 62,0,0,0,124,0,115,4,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,30,124,1, - 160,4,100,6,161,1,112,30,124,1,160,5,100,4,161,1, - 83,0,41,8,250,30,82,101,112,108,97,99,101,109,101,110, + 74,0,0,0,115,1,0,0,0,32,114,7,0,0,0,218, + 12,95,112,97,116,104,95,105,115,102,105,108,101,159,0,0, + 0,243,2,0,0,0,10,2,114,9,0,0,0,114,80,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,115,22,0,0,0,124,0,115,6, + 116,0,160,1,161,0,125,0,116,2,124,0,100,1,131,2, + 83,0,41,3,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, - 97,98,115,46,70,114,0,0,0,0,114,2,0,0,0,114, - 1,0,0,0,114,3,0,0,0,122,2,92,92,78,41,6, - 114,19,0,0,0,114,56,0,0,0,218,7,114,101,112,108, - 97,99,101,114,4,0,0,0,114,27,0,0,0,114,58,0, - 0,0,41,2,114,65,0,0,0,114,64,0,0,0,32,32, - 114,7,0,0,0,218,11,95,112,97,116,104,95,105,115,97, - 98,115,172,0,0,0,115,8,0,0,0,4,2,4,1,22, - 1,32,1,114,9,0,0,0,114,86,0,0,0,99,1,0, - 0,0,0,0,0,0,0,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,2,114,84,0,0,0,78,41,2,114,27,0,0,0, - 114,51,0,0,0,114,74,0,0,0,32,114,7,0,0,0, - 114,86,0,0,0,180,0,0,0,114,81,0,0,0,114,9, - 0,0,0,233,182,1,0,0,99,3,0,0,0,0,0,0, - 0,0,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,9,0,116,7,160,8,124,4,100,3,161,2,53,0, - 125,5,124,5,160,9,124,1,161,1,1,0,100,4,4,0, - 4,0,131,3,1,0,110,11,35,0,49,0,115,48,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,116,2, - 160,10,124,3,124,0,161,2,1,0,100,4,83,0,35,0, - 4,0,116,11,121,88,1,0,1,0,1,0,9,0,116,2, - 160,12,124,3,161,1,1,0,130,0,35,0,4,0,116,11, - 121,87,1,0,1,0,1,0,89,0,130,0,37,0,37,0, - 119,0,119,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,87,0,0,0,90,2,119,98,78,41,13,218,6,102, - 111,114,109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0,0,90,6,117, - 110,108,105,110,107,41,6,114,65,0,0,0,114,42,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,32,32,32,32,32,32, - 114,7,0,0,0,218,13,95,119,114,105,116,101,95,97,116, - 111,109,105,99,185,0,0,0,115,44,0,0,0,16,5,6, - 1,22,1,4,255,2,2,14,3,10,1,12,255,22,128,16, - 2,2,128,12,1,2,1,10,1,2,3,2,128,12,254,2, - 1,2,1,4,128,2,254,2,253,115,69,0,0,0,153,6, - 62,0,159,6,43,3,165,6,62,0,171,4,47,11,175,1, - 62,0,176,3,47,11,179,9,62,0,190,7,65,22,7,193, - 6,5,65,12,6,193,11,1,65,22,7,193,12,7,65,21, - 13,193,19,3,65,22,7,193,23,1,65,21,13,193,24,1, - 65,22,7,114,95,0,0,0,105,128,13,0,0,114,45,0, - 0,0,114,33,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,119,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,5, - 0,0,0,67,0,0,0,115,80,1,0,0,124,1,100,1, - 117,1,114,26,116,0,160,1,100,2,116,2,161,2,1,0, - 124,2,100,1,117,1,114,20,100,3,125,3,116,3,124,3, - 131,1,130,1,124,1,114,24,100,4,110,1,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,57,116,11,100,7,131,1,130,1,100,4, - 160,12,124,6,114,63,124,6,110,1,124,8,124,7,124,9, - 103,3,161,1,125,10,124,2,100,1,117,0,114,86,116,8, - 106,13,106,14,100,8,107,2,114,82,100,4,125,2,110,4, - 116,8,106,13,106,14,125,2,116,15,124,2,131,1,125,2, - 124,2,100,4,107,3,114,112,124,2,160,16,161,0,115,105, - 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, - 114,162,116,22,124,4,131,1,115,134,116,23,116,4,160,24, - 161,0,124,4,131,2,125,4,124,4,100,5,25,0,100,11, - 107,2,114,152,124,4,100,8,25,0,116,25,118,1,114,152, - 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, + 100,105,114,46,105,0,64,0,0,78,41,3,114,19,0,0, + 0,218,6,103,101,116,99,119,100,114,79,0,0,0,114,74, + 0,0,0,115,1,0,0,0,32,114,7,0,0,0,218,11, + 95,112,97,116,104,95,105,115,100,105,114,164,0,0,0,115, + 6,0,0,0,4,2,8,1,10,1,114,9,0,0,0,114, + 83,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,62,0,0,0,124,0, + 115,4,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,30,124,1,160,4,100,6,161,1, + 112,30,124,1,160,5,100,4,161,1,83,0,41,8,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,3, + 0,0,0,122,2,92,92,78,41,6,114,19,0,0,0,114, + 56,0,0,0,218,7,114,101,112,108,97,99,101,114,4,0, + 0,0,114,27,0,0,0,114,58,0,0,0,41,2,114,65, + 0,0,0,114,64,0,0,0,115,2,0,0,0,32,32,114, + 7,0,0,0,218,11,95,112,97,116,104,95,105,115,97,98, + 115,172,0,0,0,115,8,0,0,0,4,2,4,1,22,1, + 32,1,114,9,0,0,0,114,86,0,0,0,99,1,0,0, + 0,0,0,0,0,0,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,2,114,84,0,0,0,78,41,2,114,27,0,0,0,114, + 51,0,0,0,114,74,0,0,0,115,1,0,0,0,32,114, + 7,0,0,0,114,86,0,0,0,180,0,0,0,114,81,0, + 0,0,114,9,0,0,0,233,182,1,0,0,99,3,0,0, + 0,0,0,0,0,0,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,9,0,116,7,160,8,124,4,100,3, + 161,2,53,0,125,5,124,5,160,9,124,1,161,1,1,0, + 100,4,4,0,4,0,131,3,1,0,110,11,35,0,49,0, + 115,48,119,4,37,0,1,0,1,0,1,0,89,0,1,0, + 1,0,116,2,160,10,124,3,124,0,161,2,1,0,100,4, + 83,0,35,0,4,0,116,11,121,88,1,0,1,0,1,0, + 9,0,116,2,160,12,124,3,161,1,1,0,130,0,35,0, + 4,0,116,11,121,87,1,0,1,0,1,0,89,0,130,0, + 37,0,37,0,119,0,119,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,87,0,0,0,90,2,119,98,78,41, + 13,218,6,102,111,114,109,97,116,218,2,105,100,114,19,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,85,0,0,0,114,76,0,0, + 0,90,6,117,110,108,105,110,107,41,6,114,65,0,0,0, + 114,42,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,115,6, + 0,0,0,32,32,32,32,32,32,114,7,0,0,0,218,13, + 95,119,114,105,116,101,95,97,116,111,109,105,99,185,0,0, + 0,115,44,0,0,0,16,5,6,1,22,1,4,255,2,2, + 14,3,10,1,12,255,22,128,16,2,2,128,12,1,2,1, + 10,1,2,3,2,128,12,254,2,1,2,1,4,128,2,254, + 2,253,115,69,0,0,0,153,6,62,0,159,6,43,3,165, + 6,62,0,171,4,47,11,175,1,62,0,176,3,47,11,179, + 9,62,0,190,7,65,22,7,193,6,5,65,12,6,193,11, + 1,65,22,7,193,12,7,65,21,13,193,19,3,65,22,7, + 193,23,1,65,21,13,193,24,1,65,22,7,114,95,0,0, + 0,105,129,13,0,0,114,45,0,0,0,114,33,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,119,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,5,0,0,0,67,0,0,0, + 115,80,1,0,0,124,1,100,1,117,1,114,26,116,0,160, + 1,100,2,116,2,161,2,1,0,124,2,100,1,117,1,114, + 20,100,3,125,3,116,3,124,3,131,1,130,1,124,1,114, + 24,100,4,110,1,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,57,116, + 11,100,7,131,1,130,1,100,4,160,12,124,6,114,63,124, + 6,110,1,124,8,124,7,124,9,103,3,161,1,125,10,124, + 2,100,1,117,0,114,86,116,8,106,13,106,14,100,8,107, + 2,114,82,100,4,125,2,110,4,116,8,106,13,106,14,125, + 2,116,15,124,2,131,1,125,2,124,2,100,4,107,3,114, + 112,124,2,160,16,161,0,115,105,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,114,162,116,22,124,4,131, + 1,115,134,116,23,116,4,160,24,161,0,124,4,131,2,125, + 4,124,4,100,5,25,0,100,11,107,2,114,152,124,4,100, + 8,25,0,116,25,118,1,114,152,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,10,0,0,0,114,3,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,11,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,19, + 0,0,0,218,6,102,115,112,97,116,104,114,73,0,0,0, + 218,10,114,112,97,114,116,105,116,105,111,110,114,16,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,17,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, + 89,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,86,0, + 0,0,114,67,0,0,0,114,82,0,0,0,114,51,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,96,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,6,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,115,12,0,0,0,32,32,32,32,32,32,32, + 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, + 101,95,102,114,111,109,95,115,111,117,114,99,101,132,1,0, + 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, + 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,1,8,2,8,1,8,1, + 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, + 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, + 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,67,0,0,0,115,40,1, + 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133,2, + 25,0,125,1,100,4,125,3,124,3,115,72,116,6,124,1, + 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,72, + 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,88,116,14,100,8,124,2,155,2,157,2,131,1, + 130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,99,32,102,105,108, - 101,46,10,10,32,32,32,32,84,104,101,32,46,112,121,32, + 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,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,10, - 0,0,0,114,3,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,11,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,19,0,0,0,218,6,102,115,112,97, - 116,104,114,73,0,0,0,218,10,114,112,97,114,116,105,116, - 105,111,110,114,16,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,17,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,89,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,86,0,0,0,114,67,0,0,0,114,82, - 0,0,0,114,51,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,96,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,6,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,32,32,32,32,32, - 32,32,32,32,32,32,32,114,7,0,0,0,218,17,99,97, - 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,131, - 1,0,0,115,72,0,0,0,8,18,6,1,2,1,4,255, - 8,2,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,1,8,2,8,1, - 8,1,8,1,14,1,14,1,12,1,10,1,8,9,14,1, - 24,5,12,1,2,4,4,1,8,1,2,1,4,253,12,5, - 114,9,0,0,0,114,121,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, - 40,1,0,0,116,0,106,1,106,2,100,1,117,0,114,10, - 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,51,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,51,124,1,116,12,124,4,131,1,100,1, - 133,2,25,0,125,1,100,4,125,3,124,3,115,72,116,6, - 124,1,131,1,92,2,125,1,125,5,124,5,116,13,107,3, - 114,72,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,88,116,14,100,8,124,2,155,2,157,2, - 131,1,130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16, - 0,0,0,114,105,0,0,0,114,106,0,0,0,114,107,0, - 0,0,114,19,0,0,0,114,103,0,0,0,114,73,0,0, - 0,114,114,0,0,0,114,50,0,0,0,114,51,0,0,0, - 114,27,0,0,0,114,59,0,0,0,114,4,0,0,0,114, - 116,0,0,0,114,111,0,0,0,218,5,99,111,117,110,116, - 218,6,114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,32,32,32,32, - 32,32,32,32,32,32,114,7,0,0,0,218,17,115,111,117, - 114,99,101,95,102,114,111,109,95,99,97,99,104,101,202,1, - 0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1,8,1,16, - 1,10,1,4,1,2,1,8,255,16,2,8,1,16,1,14, - 2,18,1,114,9,0,0,0,114,128,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,67,0, - 0,0,115,126,0,0,0,116,0,124,0,131,1,100,1,107, - 2,114,8,100,2,83,0,124,0,160,1,100,3,161,1,92, - 3,125,1,125,2,125,3,124,1,114,28,124,3,160,2,161, - 0,100,4,100,5,133,2,25,0,100,6,107,3,114,30,124, - 0,83,0,9,0,116,3,124,0,131,1,125,4,110,18,35, - 0,4,0,116,4,116,5,102,2,121,62,1,0,1,0,1, - 0,124,0,100,2,100,5,133,2,25,0,125,4,89,0,110, - 1,37,0,116,6,124,4,131,1,114,60,124,4,83,0,124, - 0,83,0,119,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,97,0,0,0, - 233,253,255,255,255,233,255,255,255,255,90,2,112,121,41,7, - 114,4,0,0,0,114,104,0,0,0,218,5,108,111,119,101, - 114,114,128,0,0,0,114,107,0,0,0,114,111,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,119,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,32,32,32,32,32,114,7,0,0,0, - 218,15,95,103,101,116,95,115,111,117,114,99,101,102,105,108, - 101,242,1,0,0,115,26,0,0,0,12,7,4,1,16,1, - 24,1,4,1,2,1,10,1,2,128,16,1,16,1,2,128, - 16,1,2,254,115,12,0,0,0,159,4,36,0,164,15,53, - 7,190,1,53,7,114,135,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, - 70,0,0,0,124,0,160,0,116,1,116,2,131,1,161,1, - 114,23,9,0,116,3,124,0,131,1,83,0,35,0,4,0, - 116,4,121,34,1,0,1,0,1,0,89,0,100,0,83,0, - 37,0,124,0,160,0,116,1,116,5,131,1,161,1,114,32, - 124,0,83,0,100,0,83,0,119,0,114,69,0,0,0,41, - 6,114,58,0,0,0,218,5,116,117,112,108,101,114,127,0, - 0,0,114,121,0,0,0,114,107,0,0,0,114,113,0,0, - 0,41,1,114,120,0,0,0,32,114,7,0,0,0,218,11, - 95,103,101,116,95,99,97,99,104,101,100,5,2,0,0,115, - 22,0,0,0,14,1,2,1,8,1,2,128,12,1,6,1, - 2,128,14,1,4,1,4,2,2,251,115,12,0,0,0,136, - 3,12,0,140,7,22,7,162,1,22,7,114,137,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,52,0,0,0,9,0,116,0,124,0, - 131,1,106,1,125,1,110,12,35,0,4,0,116,2,121,25, - 1,0,1,0,1,0,100,1,125,1,89,0,110,1,37,0, - 124,1,100,2,79,0,125,1,124,1,83,0,119,0,41,4, - 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,87,0,0,0,233,128,0,0,0,78, - 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,32,32,114, - 7,0,0,0,218,10,95,99,97,108,99,95,109,111,100,101, - 17,2,0,0,115,18,0,0,0,2,2,12,1,2,128,12, - 1,8,1,2,128,8,3,4,1,2,251,115,12,0,0,0, - 129,5,7,0,135,9,18,7,153,1,18,7,114,139,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,115,54,0,0,0,135,0,100,6,136, - 0,102,1,100,2,100,3,132,9,125,1,116,0,100,1,117, - 1,114,16,116,0,106,1,125,2,110,4,100,4,100,5,132, - 0,125,2,124,2,124,1,137,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,5, - 0,0,0,31,0,0,0,115,76,0,0,0,124,1,100,0, - 117,0,114,8,124,0,106,0,125,1,110,18,124,0,106,0, - 124,1,107,3,114,26,116,1,100,1,124,0,106,0,155,1, - 100,2,124,1,155,1,157,4,124,1,100,3,141,2,130,1, - 137,4,124,0,124,1,103,2,124,2,162,1,82,0,105,0, - 124,3,164,1,142,1,83,0,41,4,78,122,11,108,111,97, - 100,101,114,32,102,111,114,32,122,15,32,99,97,110,110,111, - 116,32,104,97,110,100,108,101,32,169,1,218,4,110,97,109, - 101,41,2,114,141,0,0,0,218,11,73,109,112,111,114,116, - 69,114,114,111,114,41,5,218,4,115,101,108,102,114,141,0, - 0,0,218,4,97,114,103,115,218,6,107,119,97,114,103,115, - 218,6,109,101,116,104,111,100,32,32,32,32,128,114,7,0, - 0,0,218,19,95,99,104,101,99,107,95,110,97,109,101,95, - 119,114,97,112,112,101,114,37,2,0,0,115,18,0,0,0, - 8,1,8,1,10,1,4,1,12,1,2,255,2,1,6,255, - 24,2,114,9,0,0,0,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,7,0, - 0,0,83,0,0,0,115,56,0,0,0,100,1,68,0,93, - 16,125,2,116,0,124,1,124,2,131,2,114,18,116,1,124, - 0,124,2,116,2,124,1,124,2,131,2,131,3,1,0,113, - 2,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,85,0,0,0,32,32,32,114,7,0,0,0,218,5,95, - 119,114,97,112,50,2,0,0,115,10,0,0,0,8,1,10, - 1,18,1,2,128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218, - 10,95,98,111,111,116,115,116,114,97,112,114,157,0,0,0, - 41,3,114,146,0,0,0,114,147,0,0,0,114,157,0,0, - 0,96,32,32,114,7,0,0,0,218,11,95,99,104,101,99, - 107,95,110,97,109,101,29,2,0,0,115,14,0,0,0,2, - 128,14,8,8,10,8,1,8,2,10,6,4,1,114,9,0, - 0,0,114,159,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,6,0,0,0,67,0,0,0,115,72,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,124,0,160, - 3,124,1,161,1,92,2,125,2,125,3,124,2,100,2,117, - 0,114,34,116,4,124,3,131,1,114,34,100,3,125,4,116, - 0,160,1,124,4,160,5,124,3,100,4,25,0,161,1,116, - 6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95,109, - 111,100,117,108,101,40,41,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, - 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, - 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, - 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, - 116,101,97,100,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,7,114,99,0,0,0,114, - 100,0,0,0,114,101,0,0,0,218,11,102,105,110,100,95, - 108,111,97,100,101,114,114,4,0,0,0,114,89,0,0,0, - 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, - 5,114,143,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,32,32,32,32,32,114,7,0,0, - 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, - 115,104,105,109,60,2,0,0,115,16,0,0,0,6,7,2, - 2,4,254,14,6,16,1,4,1,22,1,4,1,114,9,0, - 0,0,114,166,0,0,0,99,3,0,0,0,0,0,0,0, - 0,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,32,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,53,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,81,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,32,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,142,0,0, - 0,114,4,0,0,0,218,8,69,79,70,69,114,114,111,114, - 114,43,0,0,0,41,6,114,42,0,0,0,114,141,0,0, - 0,218,11,101,120,99,95,100,101,116,97,105,108,115,90,5, - 109,97,103,105,99,114,117,0,0,0,114,17,0,0,0,32, - 32,32,32,32,32,114,7,0,0,0,218,13,95,99,108,97, - 115,115,105,102,121,95,112,121,99,80,2,0,0,115,28,0, - 0,0,12,16,8,1,16,1,12,1,16,1,12,1,10,1, - 12,1,8,1,16,1,8,2,16,1,16,1,4,1,114,9, - 0,0,0,114,175,0,0,0,99,5,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7, - 133,2,25,0,131,1,124,2,100,3,64,0,107,3,114,58, - 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,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,169,0,0, - 0,233,12,0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4, - 114,43,0,0,0,114,158,0,0,0,114,172,0,0,0,114, - 142,0,0,0,41,6,114,42,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,141,0,0,0,114,174,0,0,0, - 114,117,0,0,0,32,32,32,32,32,32,114,7,0,0,0, + 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,98,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,97,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,122,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,16,0,0, + 0,114,105,0,0,0,114,106,0,0,0,114,107,0,0,0, + 114,19,0,0,0,114,103,0,0,0,114,73,0,0,0,114, + 114,0,0,0,114,50,0,0,0,114,51,0,0,0,114,27, + 0,0,0,114,59,0,0,0,114,4,0,0,0,114,116,0, + 0,0,114,111,0,0,0,218,5,99,111,117,110,116,218,6, + 114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,115,10,0,0,0,32, + 32,32,32,32,32,32,32,32,32,114,7,0,0,0,218,17, + 115,111,117,114,99,101,95,102,114,111,109,95,99,97,99,104, + 101,203,1,0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1, + 8,1,16,1,10,1,4,1,2,1,8,255,16,2,8,1, + 16,1,14,2,18,1,114,9,0,0,0,114,128,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0, + 0,67,0,0,0,115,126,0,0,0,116,0,124,0,131,1, + 100,1,107,2,114,8,100,2,83,0,124,0,160,1,100,3, + 161,1,92,3,125,1,125,2,125,3,124,1,114,28,124,3, + 160,2,161,0,100,4,100,5,133,2,25,0,100,6,107,3, + 114,30,124,0,83,0,9,0,116,3,124,0,131,1,125,4, + 110,18,35,0,4,0,116,4,116,5,102,2,121,62,1,0, + 1,0,1,0,124,0,100,2,100,5,133,2,25,0,125,4, + 89,0,110,1,37,0,116,6,124,4,131,1,114,60,124,4, + 83,0,124,0,83,0,119,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,97, + 0,0,0,233,253,255,255,255,233,255,255,255,255,90,2,112, + 121,41,7,114,4,0,0,0,114,104,0,0,0,218,5,108, + 111,119,101,114,114,128,0,0,0,114,107,0,0,0,114,111, + 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,119,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,115,5,0,0,0,32,32, + 32,32,32,114,7,0,0,0,218,15,95,103,101,116,95,115, + 111,117,114,99,101,102,105,108,101,243,1,0,0,115,26,0, + 0,0,12,7,4,1,16,1,24,1,4,1,2,1,10,1, + 2,128,16,1,16,1,2,128,16,1,2,254,115,12,0,0, + 0,159,4,36,0,164,15,53,7,190,1,53,7,114,135,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,67,0,0,0,115,70,0,0,0,124,0,160,0, + 116,1,116,2,131,1,161,1,114,23,9,0,116,3,124,0, + 131,1,83,0,35,0,4,0,116,4,121,34,1,0,1,0, + 1,0,89,0,100,0,83,0,37,0,124,0,160,0,116,1, + 116,5,131,1,161,1,114,32,124,0,83,0,100,0,83,0, + 119,0,114,69,0,0,0,41,6,114,58,0,0,0,218,5, + 116,117,112,108,101,114,127,0,0,0,114,121,0,0,0,114, + 107,0,0,0,114,113,0,0,0,41,1,114,120,0,0,0, + 115,1,0,0,0,32,114,7,0,0,0,218,11,95,103,101, + 116,95,99,97,99,104,101,100,6,2,0,0,115,22,0,0, + 0,14,1,2,1,8,1,2,128,12,1,6,1,2,128,14, + 1,4,1,4,2,2,251,115,12,0,0,0,136,3,12,0, + 140,7,22,7,162,1,22,7,114,137,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,115,52,0,0,0,9,0,116,0,124,0,131,1,106, + 1,125,1,110,12,35,0,4,0,116,2,121,25,1,0,1, + 0,1,0,100,1,125,1,89,0,110,1,37,0,124,1,100, + 2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,115,2,0,0,0,32, + 32,114,7,0,0,0,218,10,95,99,97,108,99,95,109,111, + 100,101,18,2,0,0,115,18,0,0,0,2,2,12,1,2, + 128,12,1,8,1,2,128,8,3,4,1,2,251,115,12,0, + 0,0,129,5,7,0,135,9,18,7,153,1,18,7,114,139, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,3,0,0,0,115,54,0,0,0,135,0,100, + 6,136,0,102,1,100,2,100,3,132,9,125,1,116,0,100, + 1,117,1,114,16,116,0,106,1,125,2,110,4,100,4,100, + 5,132,0,125,2,124,2,124,1,137,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,5,0,0,0,31,0,0,0,115,76,0,0,0,124,1, + 100,0,117,0,114,8,124,0,106,0,125,1,110,18,124,0, + 106,0,124,1,107,3,114,26,116,1,100,1,124,0,106,0, + 155,1,100,2,124,1,155,1,157,4,124,1,100,3,141,2, + 130,1,137,4,124,0,124,1,103,2,124,2,162,1,82,0, + 105,0,124,3,164,1,142,1,83,0,41,4,78,122,11,108, + 111,97,100,101,114,32,102,111,114,32,122,15,32,99,97,110, + 110,111,116,32,104,97,110,100,108,101,32,169,1,218,4,110, + 97,109,101,41,2,114,141,0,0,0,218,11,73,109,112,111, + 114,116,69,114,114,111,114,41,5,218,4,115,101,108,102,114, + 141,0,0,0,218,4,97,114,103,115,218,6,107,119,97,114, + 103,115,218,6,109,101,116,104,111,100,115,5,0,0,0,32, + 32,32,32,128,114,7,0,0,0,218,19,95,99,104,101,99, + 107,95,110,97,109,101,95,119,114,97,112,112,101,114,38,2, + 0,0,115,18,0,0,0,8,1,8,1,10,1,4,1,12, + 1,2,255,2,1,6,255,24,2,114,9,0,0,0,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,7,0,0,0,83,0,0,0,115,56,0, + 0,0,100,1,68,0,93,16,125,2,116,0,124,1,124,2, + 131,2,114,18,116,1,124,0,124,2,116,2,124,1,124,2, + 131,2,131,3,1,0,113,2,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,85,0,0,0,115,3,0,0, + 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, + 51,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, + 128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218,10,95,98,111, + 111,116,115,116,114,97,112,114,157,0,0,0,41,3,114,146, + 0,0,0,114,147,0,0,0,114,157,0,0,0,115,3,0, + 0,0,96,32,32,114,7,0,0,0,218,11,95,99,104,101, + 99,107,95,110,97,109,101,30,2,0,0,115,14,0,0,0, + 2,128,14,8,8,10,8,1,8,2,10,6,4,1,114,9, + 0,0,0,114,159,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,67,0,0,0,115,72,0, + 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, + 160,3,124,1,161,1,92,2,125,2,125,3,124,2,100,2, + 117,0,114,34,116,4,124,3,131,1,114,34,100,3,125,4, + 116,0,160,1,124,4,160,5,124,3,100,4,25,0,161,1, + 116,6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95, + 109,111,100,117,108,101,40,41,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, + 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, + 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, + 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, + 115,116,101,97,100,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,7,114,99,0,0,0, + 114,100,0,0,0,114,101,0,0,0,218,11,102,105,110,100, + 95,108,111,97,100,101,114,114,4,0,0,0,114,89,0,0, + 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, + 41,5,114,143,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,115,5,0,0,0,32,32,32, + 32,32,114,7,0,0,0,218,17,95,102,105,110,100,95,109, + 111,100,117,108,101,95,115,104,105,109,61,2,0,0,115,16, + 0,0,0,6,7,2,2,4,254,14,6,16,1,4,1,22, + 1,4,1,114,9,0,0,0,114,166,0,0,0,99,3,0, + 0,0,0,0,0,0,0,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,32,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,53,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,81,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,32,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,142,0,0,0,114,4,0,0,0,218,8,69,79, + 70,69,114,114,111,114,114,43,0,0,0,41,6,114,42,0, + 0,0,114,141,0,0,0,218,11,101,120,99,95,100,101,116, + 97,105,108,115,90,5,109,97,103,105,99,114,117,0,0,0, + 114,17,0,0,0,115,6,0,0,0,32,32,32,32,32,32, + 114,7,0,0,0,218,13,95,99,108,97,115,115,105,102,121, + 95,112,121,99,81,2,0,0,115,28,0,0,0,12,16,8, + 1,16,1,12,1,16,1,12,1,10,1,12,1,8,1,16, + 1,8,2,16,1,16,1,4,1,114,9,0,0,0,114,175, + 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,67,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0,131, + 1,124,2,100,3,64,0,107,3,114,58,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,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,169,0,0,0,233,12,0,0, + 0,114,31,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,167, + 0,0,0,78,114,168,0,0,0,41,4,114,43,0,0,0, + 114,158,0,0,0,114,172,0,0,0,114,142,0,0,0,41, + 6,114,42,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,141,0,0,0,114,174,0,0,0,114,117,0,0,0, + 115,6,0,0,0,32,32,32,32,32,32,114,7,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,113,2,0,0,115,18,0, + 115,116,97,109,112,95,112,121,99,114,2,0,0,115,18,0, 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, @@ -879,382 +889,387 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,142,0,0,0,41,4, 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, - 115,104,114,141,0,0,0,114,174,0,0,0,32,32,32,32, - 114,7,0,0,0,218,18,95,118,97,108,105,100,97,116,101, - 95,104,97,115,104,95,112,121,99,141,2,0,0,115,14,0, - 0,0,16,17,2,1,8,1,4,255,2,2,6,254,4,255, - 114,9,0,0,0,114,181,0,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, - 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, - 124,4,116,3,131,2,114,28,116,4,160,5,100,1,124,2, - 161,2,1,0,124,3,100,2,117,1,114,26,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, - 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,141,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,172,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,142,0,0,0,114,89,0,0,0,41,5,114,42,0,0, - 0,114,141,0,0,0,114,132,0,0,0,114,134,0,0,0, - 218,4,99,111,100,101,32,32,32,32,32,114,7,0,0,0, - 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, - 111,100,101,165,2,0,0,115,18,0,0,0,10,2,10,1, - 12,1,8,1,12,1,4,1,10,2,4,1,6,255,114,9, - 0,0,0,114,188,0,0,0,99,3,0,0,0,0,0,0, - 0,0,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,3,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,78,41,6,218, - 9,98,121,116,101,97,114,114,97,121,114,171,0,0,0,218, - 6,101,120,116,101,110,100,114,37,0,0,0,114,183,0,0, - 0,218,5,100,117,109,112,115,41,4,114,187,0,0,0,218, - 5,109,116,105,109,101,114,178,0,0,0,114,42,0,0,0, - 32,32,32,32,114,7,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,178,2,0,0,115,12,0,0,0,8,2,14,1,14,1, - 14,1,16,1,4,1,114,9,0,0,0,114,193,0,0,0, - 84,99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78, - 41,7,114,189,0,0,0,114,171,0,0,0,114,190,0,0, - 0,114,37,0,0,0,114,4,0,0,0,114,183,0,0,0, - 114,191,0,0,0,41,5,114,187,0,0,0,114,180,0,0, - 0,90,7,99,104,101,99,107,101,100,114,42,0,0,0,114, - 17,0,0,0,32,32,32,32,32,114,7,0,0,0,218,17, - 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, - 99,188,2,0,0,115,14,0,0,0,8,2,12,1,14,1, - 16,1,10,1,16,1,4,1,114,9,0,0,0,114,194,0, - 0,0,99,1,0,0,0,0,0,0,0,0,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,91,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,195,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,32,32,32, - 32,32,114,7,0,0,0,218,13,100,101,99,111,100,101,95, - 115,111,117,114,99,101,199,2,0,0,115,10,0,0,0,8, - 5,12,1,10,1,12,1,20,1,114,9,0,0,0,114,199, - 0,0,0,169,2,114,163,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,8,0,0,0,67,0,0,0,115,60,1,0,0, - 124,1,100,1,117,0,114,29,100,2,125,1,116,0,124,2, - 100,3,131,2,114,28,9,0,124,2,160,1,124,0,161,1, - 125,1,110,39,35,0,4,0,116,2,121,157,1,0,1,0, - 1,0,89,0,110,30,37,0,110,28,116,3,160,4,124,1, - 161,1,125,1,116,5,124,1,131,1,115,57,9,0,116,6, - 116,3,160,7,161,0,124,1,131,2,125,1,110,10,35,0, - 4,0,116,8,121,156,1,0,1,0,1,0,89,0,110,1, - 37,0,116,9,160,10,124,0,124,2,124,1,100,4,166,3, - 125,4,100,5,124,4,95,11,124,2,100,1,117,0,114,99, - 116,12,131,0,68,0,93,21,92,2,125,5,125,6,124,1, - 160,13,116,14,124,6,131,1,161,1,114,96,124,5,124,0, - 124,1,131,2,125,2,124,2,124,4,95,15,1,0,113,99, - 113,75,100,1,83,0,124,3,116,16,117,0,114,131,116,0, - 124,2,100,6,131,2,114,130,9,0,124,2,160,17,124,0, - 161,1,125,7,110,10,35,0,4,0,116,2,121,155,1,0, - 1,0,1,0,89,0,110,10,37,0,124,7,114,130,103,0, - 124,4,95,18,110,3,124,3,124,4,95,18,124,4,106,18, - 103,0,107,2,114,153,124,1,114,153,116,19,124,1,131,1, - 100,7,25,0,125,8,124,4,106,18,160,20,124,8,161,1, - 1,0,124,4,83,0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0, - 0,0,114,142,0,0,0,114,19,0,0,0,114,103,0,0, - 0,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, - 114,76,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,136,0,0,0,114,163,0,0, - 0,218,9,95,80,79,80,85,76,65,84,69,114,205,0,0, - 0,114,201,0,0,0,114,73,0,0,0,114,61,0,0,0, - 41,9,114,141,0,0,0,90,8,108,111,99,97,116,105,111, - 110,114,163,0,0,0,114,201,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,205,0,0,0,90,7, - 100,105,114,110,97,109,101,32,32,32,32,32,32,32,32,32, - 114,7,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,216,2, - 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, - 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, - 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, - 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, - 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, - 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, - 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, - 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, - 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, - 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, - 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, - 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, - 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, - 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, - 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, - 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,52,0,0,0,9,0,116,0,160,1, - 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, - 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, - 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,32,114,7,0,0,0,218,14,95, - 111,112,101,110,95,114,101,103,105,115,116,114,121,45,3,0, - 0,115,14,0,0,0,2,2,14,1,2,128,12,1,18,1, - 2,128,2,255,115,12,0,0,0,129,6,8,0,136,14,24, - 7,153,1,24,7,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,9,0,0,0,67,0,0,0, - 115,136,0,0,0,124,0,106,0,114,7,124,0,106,1,125, - 2,110,3,124,0,106,2,125,2,124,2,160,3,124,1,100, - 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, - 3,166,2,125,3,9,0,124,0,160,6,124,3,161,1,53, - 0,125,4,116,7,160,8,124,4,100,4,161,2,125,5,100, - 0,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, - 48,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,5,83,0,35,0,4,0,116,9,121,67,1,0,1, - 0,1,0,89,0,100,0,83,0,37,0,119,0,41,5,78, - 122,5,37,100,46,37,100,114,45,0,0,0,41,2,114,162, - 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, - 114,10,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,89,0,0,0,114,16,0,0,0, - 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,215, - 0,0,0,114,214,0,0,0,90,10,81,117,101,114,121,86, - 97,108,117,101,114,76,0,0,0,41,6,218,3,99,108,115, - 114,162,0,0,0,90,12,114,101,103,105,115,116,114,121,95, - 107,101,121,114,21,0,0,0,90,4,104,107,101,121,218,8, - 102,105,108,101,112,97,116,104,32,32,32,32,32,32,114,7, - 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, - 105,115,116,114,121,52,3,0,0,115,34,0,0,0,6,2, - 8,1,6,2,6,1,16,1,6,255,2,2,12,1,12,1, - 12,255,22,128,4,4,2,128,12,254,6,1,2,128,2,255, - 115,39,0,0,0,153,5,56,0,158,7,43,3,165,6,56, - 0,171,4,47,11,175,1,56,0,176,3,47,11,179,3,56, - 0,184,7,65,2,7,193,3,1,65,2,7,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,67,0,0,0,115,122,0,0,0,124, - 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, - 11,100,0,83,0,9,0,116,1,124,4,131,1,1,0,110, - 11,35,0,4,0,116,2,121,60,1,0,1,0,1,0,89, - 0,100,0,83,0,37,0,116,3,131,0,68,0,93,26,92, - 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, - 1,114,57,116,6,160,7,124,1,124,5,124,1,124,4,131, - 2,124,4,100,1,166,3,125,7,124,7,2,0,1,0,83, - 0,113,31,100,0,83,0,119,0,41,2,78,114,203,0,0, - 0,41,8,114,222,0,0,0,114,75,0,0,0,114,76,0, - 0,0,114,207,0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114, - 162,0,0,0,114,65,0,0,0,218,6,116,97,114,103,101, - 116,114,221,0,0,0,114,163,0,0,0,114,211,0,0,0, - 114,209,0,0,0,32,32,32,32,32,32,32,32,114,7,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,67,3,0, - 0,115,38,0,0,0,10,2,8,1,4,1,2,1,10,1, - 2,128,12,1,6,1,2,128,14,1,14,1,6,1,8,1, - 2,1,6,254,8,3,2,252,4,255,2,254,115,12,0,0, - 0,140,4,17,0,145,7,27,7,188,1,27,7,122,31,87, + 115,104,114,141,0,0,0,114,174,0,0,0,115,4,0,0, + 0,32,32,32,32,114,7,0,0,0,218,18,95,118,97,108, + 105,100,97,116,101,95,104,97,115,104,95,112,121,99,142,2, + 0,0,115,14,0,0,0,16,17,2,1,8,1,4,255,2, + 2,6,254,4,255,114,9,0,0,0,114,181,0,0,0,99, + 4,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 67,0,0,0,115,76,0,0,0,116,0,160,1,124,0,161, + 1,125,4,116,2,124,4,116,3,131,2,114,28,116,4,160, + 5,100,1,124,2,161,2,1,0,124,3,100,2,117,1,114, + 26,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,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, + 141,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,172,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,142,0,0,0,114,89,0,0,0,41, + 5,114,42,0,0,0,114,141,0,0,0,114,132,0,0,0, + 114,134,0,0,0,218,4,99,111,100,101,115,5,0,0,0, + 32,32,32,32,32,114,7,0,0,0,218,17,95,99,111,109, + 112,105,108,101,95,98,121,116,101,99,111,100,101,166,2,0, + 0,115,18,0,0,0,10,2,10,1,12,1,8,1,12,1, + 4,1,10,2,4,1,6,255,114,9,0,0,0,114,188,0, + 0,0,99,3,0,0,0,0,0,0,0,0,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,3,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,78,41,6,218,9,98,121,116,101,97, + 114,114,97,121,114,171,0,0,0,218,6,101,120,116,101,110, + 100,114,37,0,0,0,114,183,0,0,0,218,5,100,117,109, + 112,115,41,4,114,187,0,0,0,218,5,109,116,105,109,101, + 114,178,0,0,0,114,42,0,0,0,115,4,0,0,0,32, + 32,32,32,114,7,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, + 179,2,0,0,115,12,0,0,0,8,2,14,1,14,1,14, + 1,16,1,4,1,114,9,0,0,0,114,193,0,0,0,84, + 99,3,0,0,0,0,0,0,0,0,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78,41, + 7,114,189,0,0,0,114,171,0,0,0,114,190,0,0,0, + 114,37,0,0,0,114,4,0,0,0,114,183,0,0,0,114, + 191,0,0,0,41,5,114,187,0,0,0,114,180,0,0,0, + 90,7,99,104,101,99,107,101,100,114,42,0,0,0,114,17, + 0,0,0,115,5,0,0,0,32,32,32,32,32,114,7,0, + 0,0,218,17,95,99,111,100,101,95,116,111,95,104,97,115, + 104,95,112,121,99,189,2,0,0,115,14,0,0,0,8,2, + 12,1,14,1,16,1,10,1,16,1,4,1,114,9,0,0, + 0,114,194,0,0,0,99,1,0,0,0,0,0,0,0,0, + 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,91, + 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,195,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,115,5,0,0,0,32,32,32,32,32,114,7,0,0,0, + 218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,200, + 2,0,0,115,10,0,0,0,8,5,12,1,10,1,12,1, + 20,1,114,9,0,0,0,114,199,0,0,0,169,2,114,163, + 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,8,0,0,0, + 67,0,0,0,115,60,1,0,0,124,1,100,1,117,0,114, + 29,100,2,125,1,116,0,124,2,100,3,131,2,114,28,9, + 0,124,2,160,1,124,0,161,1,125,1,110,39,35,0,4, + 0,116,2,121,157,1,0,1,0,1,0,89,0,110,30,37, + 0,110,28,116,3,160,4,124,1,161,1,125,1,116,5,124, + 1,131,1,115,57,9,0,116,6,116,3,160,7,161,0,124, + 1,131,2,125,1,110,10,35,0,4,0,116,8,121,156,1, + 0,1,0,1,0,89,0,110,1,37,0,116,9,160,10,124, + 0,124,2,124,1,100,4,166,3,125,4,100,5,124,4,95, + 11,124,2,100,1,117,0,114,99,116,12,131,0,68,0,93, + 21,92,2,125,5,125,6,124,1,160,13,116,14,124,6,131, + 1,161,1,114,96,124,5,124,0,124,1,131,2,125,2,124, + 2,124,4,95,15,1,0,113,99,113,75,100,1,83,0,124, + 3,116,16,117,0,114,131,116,0,124,2,100,6,131,2,114, + 130,9,0,124,2,160,17,124,0,161,1,125,7,110,10,35, + 0,4,0,116,2,121,155,1,0,1,0,1,0,89,0,110, + 10,37,0,124,7,114,130,103,0,124,4,95,18,110,3,124, + 3,124,4,95,18,124,4,106,18,103,0,107,2,114,153,124, + 1,114,153,116,19,124,1,131,1,100,7,25,0,125,8,124, + 4,106,18,160,20,124,8,161,1,1,0,124,4,83,0,119, + 0,119,0,119,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, + 21,114,152,0,0,0,114,202,0,0,0,114,142,0,0,0, + 114,19,0,0,0,114,103,0,0,0,114,86,0,0,0,114, + 67,0,0,0,114,82,0,0,0,114,76,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,136,0,0,0,114,163,0,0,0,218,9,95,80,79,80, + 85,76,65,84,69,114,205,0,0,0,114,201,0,0,0,114, + 73,0,0,0,114,61,0,0,0,41,9,114,141,0,0,0, + 90,8,108,111,99,97,116,105,111,110,114,163,0,0,0,114, + 201,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,205,0,0,0,90,7,100,105,114,110,97,109,101, + 115,9,0,0,0,32,32,32,32,32,32,32,32,32,114,7, + 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,217,2,0,0, + 115,96,0,0,0,8,12,4,4,10,1,2,2,12,1,2, + 128,12,1,4,1,2,128,2,251,10,7,8,1,2,1,16, + 1,2,128,12,1,4,1,2,128,16,8,6,1,8,3,14, + 1,14,1,10,1,6,1,4,1,2,253,4,5,8,3,10, + 2,2,1,12,1,2,128,12,1,4,1,2,128,4,2,6, + 1,2,128,6,2,10,1,4,1,12,1,12,1,4,2,2, + 244,2,228,2,249,115,44,0,0,0,140,5,18,0,146,7, + 27,7,167,7,47,0,175,7,56,7,193,45,5,65,51,0, + 193,51,7,65,60,7,194,27,1,65,60,7,194,28,1,56, + 7,194,29,1,27,7,114,212,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,0, + 115,88,0,0,0,101,0,90,1,100,0,90,2,100,1,90, + 3,100,2,90,4,100,3,90,5,101,6,111,15,100,4,101, + 7,118,0,90,8,101,9,100,5,100,6,132,0,131,1,90, + 10,101,11,100,7,100,8,132,0,131,1,90,12,101,11,100, + 14,100,10,100,11,132,1,131,1,90,13,101,11,100,15,100, + 12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100,99,1, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,115,52,0,0,0,9,0,116,0,160,1,116,0, + 106,2,124,0,161,2,83,0,35,0,4,0,116,3,121,25, + 1,0,1,0,1,0,116,0,160,1,116,0,106,4,124,0, + 161,2,6,0,89,0,83,0,37,0,119,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, + 114,20,0,0,0,115,1,0,0,0,32,114,7,0,0,0, + 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, + 46,3,0,0,115,14,0,0,0,2,2,14,1,2,128,12, + 1,18,1,2,128,2,255,115,12,0,0,0,129,6,8,0, + 136,14,24,7,153,1,24,7,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,9,0,0,0,67, + 0,0,0,115,136,0,0,0,124,0,106,0,114,7,124,0, + 106,1,125,2,110,3,124,0,106,2,125,2,124,2,160,3, + 124,1,100,1,116,4,106,5,100,0,100,2,133,2,25,0, + 22,0,100,3,166,2,125,3,9,0,124,0,160,6,124,3, + 161,1,53,0,125,4,116,7,160,8,124,4,100,4,161,2, + 125,5,100,0,4,0,4,0,131,3,1,0,110,11,35,0, + 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, + 1,0,1,0,124,5,83,0,35,0,4,0,116,9,121,67, + 1,0,1,0,1,0,89,0,100,0,83,0,37,0,119,0, + 41,5,78,122,5,37,100,46,37,100,114,45,0,0,0,41, + 2,114,162,0,0,0,90,11,115,121,115,95,118,101,114,115, + 105,111,110,114,10,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,89,0,0,0,114,16, + 0,0,0,218,12,118,101,114,115,105,111,110,95,105,110,102, + 111,114,215,0,0,0,114,214,0,0,0,90,10,81,117,101, + 114,121,86,97,108,117,101,114,76,0,0,0,41,6,218,3, + 99,108,115,114,162,0,0,0,90,12,114,101,103,105,115,116, + 114,121,95,107,101,121,114,21,0,0,0,90,4,104,107,101, + 121,218,8,102,105,108,101,112,97,116,104,115,6,0,0,0, + 32,32,32,32,32,32,114,7,0,0,0,218,16,95,115,101, + 97,114,99,104,95,114,101,103,105,115,116,114,121,53,3,0, + 0,115,34,0,0,0,6,2,8,1,6,2,6,1,16,1, + 6,255,2,2,12,1,12,1,12,255,22,128,4,4,2,128, + 12,254,6,1,2,128,2,255,115,39,0,0,0,153,5,56, + 0,158,7,43,3,165,6,56,0,171,4,47,11,175,1,56, + 0,176,3,47,11,179,3,56,0,184,7,65,2,7,193,3, + 1,65,2,7,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,67,0, + 0,0,115,122,0,0,0,124,0,160,0,124,1,161,1,125, + 4,124,4,100,0,117,0,114,11,100,0,83,0,9,0,116, + 1,124,4,131,1,1,0,110,11,35,0,4,0,116,2,121, + 60,1,0,1,0,1,0,89,0,100,0,83,0,37,0,116, + 3,131,0,68,0,93,26,92,2,125,5,125,6,124,4,160, + 4,116,5,124,6,131,1,161,1,114,57,116,6,160,7,124, + 1,124,5,124,1,124,4,131,2,124,4,100,1,166,3,125, + 7,124,7,2,0,1,0,83,0,113,31,100,0,83,0,119, + 0,41,2,78,114,203,0,0,0,41,8,114,222,0,0,0, + 114,75,0,0,0,114,76,0,0,0,114,207,0,0,0,114, + 58,0,0,0,114,136,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,220,0,0,0,114,162,0,0,0,114,65,0,0, + 0,218,6,116,97,114,103,101,116,114,221,0,0,0,114,163, + 0,0,0,114,211,0,0,0,114,209,0,0,0,115,8,0, + 0,0,32,32,32,32,32,32,32,32,114,7,0,0,0,218, + 9,102,105,110,100,95,115,112,101,99,68,3,0,0,115,38, + 0,0,0,10,2,8,1,4,1,2,1,10,1,2,128,12, + 1,6,1,2,128,14,1,14,1,6,1,8,1,2,1,6, + 254,8,3,2,252,4,255,2,254,115,12,0,0,0,140,4, + 17,0,145,7,27,7,188,1,27,7,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,67,0,0,0, + 115,42,0,0,0,116,0,160,1,100,1,116,2,161,2,1, + 0,124,0,160,3,124,1,124,2,161,2,125,3,124,3,100, + 2,117,1,114,19,124,3,106,4,83,0,100,2,83,0,41, + 3,122,106,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,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,122,112,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, + 110,100,101,114,46,102,105,110,100,95,109,111,100,117,108,101, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, + 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, + 169,5,114,99,0,0,0,114,100,0,0,0,114,101,0,0, + 0,114,225,0,0,0,114,163,0,0,0,169,4,114,220,0, + 0,0,114,162,0,0,0,114,65,0,0,0,114,209,0,0, + 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, + 11,102,105,110,100,95,109,111,100,117,108,101,84,3,0,0, + 115,14,0,0,0,6,7,2,2,4,254,12,3,8,1,6, + 1,4,2,114,9,0,0,0,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,169,2,78,78,114, + 69,0,0,0,41,15,114,149,0,0,0,114,148,0,0,0, + 114,150,0,0,0,114,151,0,0,0,114,218,0,0,0,114, + 217,0,0,0,218,11,95,77,83,95,87,73,78,68,79,87, + 83,218,18,69,88,84,69,78,83,73,79,78,95,83,85,70, + 70,73,88,69,83,114,216,0,0,0,218,12,115,116,97,116, + 105,99,109,101,116,104,111,100,114,215,0,0,0,218,11,99, + 108,97,115,115,109,101,116,104,111,100,114,222,0,0,0,114, + 225,0,0,0,114,228,0,0,0,114,12,0,0,0,114,9, + 0,0,0,114,7,0,0,0,114,213,0,0,0,34,3,0, + 0,115,30,0,0,0,8,0,4,2,2,3,2,255,2,4, + 2,255,12,3,2,2,10,1,2,6,10,1,2,14,12,1, + 2,15,16,1,114,9,0,0,0,114,213,0,0,0,99,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,4,0,0,0,67, - 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, - 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, - 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, - 83,0,41,3,122,106,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,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, - 122,112,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,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, - 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, - 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, - 101,0,0,0,114,225,0,0,0,114,163,0,0,0,169,4, - 114,220,0,0,0,114,162,0,0,0,114,65,0,0,0,114, - 209,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, - 105,110,100,95,109,111,100,117,108,101,83,3,0,0,115,14, - 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, - 2,114,9,0,0,0,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,169,2,78,78,114,69,0, - 0,0,41,15,114,149,0,0,0,114,148,0,0,0,114,150, - 0,0,0,114,151,0,0,0,114,218,0,0,0,114,217,0, - 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218, - 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, - 88,69,83,114,216,0,0,0,218,12,115,116,97,116,105,99, - 109,101,116,104,111,100,114,215,0,0,0,218,11,99,108,97, - 115,115,109,101,116,104,111,100,114,222,0,0,0,114,225,0, - 0,0,114,228,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,213,0,0,0,33,3,0,0,115,30,0,0,0,8, - 0,4,2,2,3,2,255,2,4,2,255,12,3,2,2,10, - 1,2,6,10,1,2,14,12,1,2,15,16,1,114,9,0, - 0,0,114,213,0,0,0,99,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,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,31,124,4,100,5,107,3,83, - 0,41,7,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,3,0,0,0,114,97,0,0,0,114,0,0,0, - 0,114,45,0,0,0,218,8,95,95,105,110,105,116,95,95, - 78,41,4,114,73,0,0,0,114,202,0,0,0,114,125,0, - 0,0,114,104,0,0,0,41,5,114,143,0,0,0,114,162, - 0,0,0,114,120,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,32,32,32,32,32,114,7,0,0,0,114,205,0,0, - 0,105,3,0,0,115,8,0,0,0,18,3,16,1,14,1, - 16,1,114,9,0,0,0,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,1,0, - 0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,169, - 2,114,143,0,0,0,114,209,0,0,0,32,32,114,7,0, - 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, - 101,113,3,0,0,243,2,0,0,0,4,0,114,9,0,0, - 0,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,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,18,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, - 142,0,0,0,114,89,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,143,0,0,0,218,6,109,111,100, - 117,108,101,114,187,0,0,0,32,32,32,114,7,0,0,0, - 218,11,101,120,101,99,95,109,111,100,117,108,101,116,3,0, - 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, - 20,2,114,9,0,0,0,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,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,2,122,26,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,78,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,143,0,0,0,114,162,0,0,0,32,32,114, - 7,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, - 101,124,3,0,0,115,2,0,0,0,12,3,114,9,0,0, - 0,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,205,0,0,0,114,238,0,0,0,114,244,0, - 0,0,114,247,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,234,0,0,0,100,3,0,0,115,12,0,0,0,8, + 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,31, + 124,4,100,5,107,3,83,0,41,7,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,3,0,0,0,114,97, + 0,0,0,114,0,0,0,0,114,45,0,0,0,218,8,95, + 95,105,110,105,116,95,95,78,41,4,114,73,0,0,0,114, + 202,0,0,0,114,125,0,0,0,114,104,0,0,0,41,5, + 114,143,0,0,0,114,162,0,0,0,114,120,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,115,5,0,0,0,32,32, + 32,32,32,114,7,0,0,0,114,205,0,0,0,106,3,0, + 0,115,8,0,0,0,18,3,16,1,14,1,16,1,114,9, + 0,0,0,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0,169,2,114,143,0, + 0,0,114,209,0,0,0,115,2,0,0,0,32,32,114,7, + 0,0,0,218,13,99,114,101,97,116,101,95,109,111,100,117, + 108,101,114,3,0,0,243,2,0,0,0,4,0,114,9,0, + 0,0,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,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,18,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,142,0,0,0,114,89,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,143,0,0,0,218,6,109,111, + 100,117,108,101,114,187,0,0,0,115,3,0,0,0,32,32, + 32,114,7,0,0,0,218,11,101,120,101,99,95,109,111,100, + 117,108,101,117,3,0,0,115,12,0,0,0,12,2,8,1, + 4,1,8,1,4,255,20,2,114,9,0,0,0,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,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,2, + 122,26,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,78,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,143,0,0,0,114,162, + 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,218, + 11,108,111,97,100,95,109,111,100,117,108,101,125,3,0,0, + 115,2,0,0,0,12,3,114,9,0,0,0,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,205, + 0,0,0,114,238,0,0,0,114,244,0,0,0,114,247,0, + 0,0,114,12,0,0,0,114,9,0,0,0,114,7,0,0, + 0,114,234,0,0,0,101,3,0,0,115,12,0,0,0,8, 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, 114,234,0,0,0,99,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, @@ -1277,339 +1292,344 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,143,0,0,0,114, - 65,0,0,0,32,32,114,7,0,0,0,218,10,112,97,116, - 104,95,109,116,105,109,101,132,3,0,0,115,2,0,0,0, - 4,6,114,9,0,0,0,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,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,3,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, + 65,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, + 218,10,112,97,116,104,95,109,116,105,109,101,133,3,0,0, + 115,2,0,0,0,4,6,114,9,0,0,0,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,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,3,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,192,0,0,0,78,41,1,114,250,0,0,0,114, + 249,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, + 218,10,112,97,116,104,95,115,116,97,116,115,141,3,0,0, + 115,2,0,0,0,14,12,114,9,0,0,0,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,67,0,0,0,115,12,0,0,0,124, + 0,160,0,124,2,124,3,161,2,83,0,41,2,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,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,192,0, - 0,0,78,41,1,114,250,0,0,0,114,249,0,0,0,32, - 32,114,7,0,0,0,218,10,112,97,116,104,95,115,116,97, - 116,115,140,3,0,0,115,2,0,0,0,14,12,114,9,0, - 0,0,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,67,0,0,0, - 115,12,0,0,0,124,0,160,0,124,2,124,3,161,2,83, - 0,41,2,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,78,41,1,218,8,115,101, - 116,95,100,97,116,97,41,4,114,143,0,0,0,114,134,0, - 0,0,90,10,99,97,99,104,101,95,112,97,116,104,114,42, - 0,0,0,32,32,32,32,114,7,0,0,0,218,15,95,99, - 97,99,104,101,95,98,121,116,101,99,111,100,101,154,3,0, - 0,115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0, - 114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114,65,0,0, - 0,114,42,0,0,0,32,32,32,114,7,0,0,0,114,252, - 0,0,0,164,3,0,0,114,239,0,0,0,114,9,0,0, - 0,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,8,0,0,0,67,0,0,0,115,70,0, - 0,0,124,0,160,0,124,1,161,1,125,2,9,0,124,0, - 160,1,124,2,161,1,125,3,116,4,124,3,131,1,83,0, - 35,0,4,0,116,2,121,34,1,0,125,4,1,0,116,3, - 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, - 126,4,119,1,37,0,119,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,140,0,0,0,78,41, - 5,114,202,0,0,0,218,8,103,101,116,95,100,97,116,97, - 114,76,0,0,0,114,142,0,0,0,114,199,0,0,0,41, - 5,114,143,0,0,0,114,162,0,0,0,114,65,0,0,0, - 114,197,0,0,0,218,3,101,120,99,32,32,32,32,32,114, - 7,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, - 171,3,0,0,115,26,0,0,0,10,2,2,1,10,1,8, - 4,2,128,12,253,4,1,2,1,4,255,2,1,2,255,10, - 128,2,255,115,20,0,0,0,134,5,15,0,143,7,33,7, - 150,7,29,7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,67,0,0,0,115,22,0,0, - 0,116,0,160,1,116,2,124,1,124,2,100,1,100,2,124, - 3,100,3,166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0, - 114,241,0,0,0,218,7,99,111,109,112,105,108,101,41,4, - 114,143,0,0,0,114,42,0,0,0,114,65,0,0,0,114, - 1,1,0,0,32,32,32,32,114,7,0,0,0,218,14,115, - 111,117,114,99,101,95,116,111,95,99,111,100,101,181,3,0, - 0,115,6,0,0,0,12,5,4,1,6,255,114,9,0,0, - 0,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,9,0,0,0,67, - 0,0,0,115,28,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,9,0,116,1,124,2,131,1,125,8, - 110,13,35,0,4,0,116,2,144,1,121,13,1,0,1,0, - 1,0,100,1,125,8,89,0,110,147,37,0,9,0,124,0, - 160,3,124,2,161,1,125,9,110,11,35,0,4,0,116,4, - 144,1,121,12,1,0,1,0,1,0,89,0,110,129,37,0, - 116,5,124,9,100,4,25,0,131,1,125,3,9,0,124,0, - 160,6,124,8,161,1,125,10,110,11,35,0,4,0,116,4, - 144,1,121,11,1,0,1,0,1,0,89,0,110,105,37,0, - 124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8, - 107,3,125,7,116,9,106,10,100,10,107,3,114,140,124,7, - 115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0,124,1, - 124,11,131,5,1,0,110,13,35,0,4,0,116,15,116,16, - 102,2,144,1,121,10,1,0,1,0,1,0,89,0,110,16, - 37,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,114,189,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,1, - 115,7,124,8,100,1,117,1,144,1,114,7,124,3,100,1, - 117,1,144,1,114,7,124,6,114,233,124,5,100,1,117,0, - 114,226,116,9,160,11,124,4,161,1,125,5,116,23,124,14, - 124,5,124,7,131,3,125,10,110,8,116,24,124,14,124,3, - 116,25,124,4,131,1,131,3,125,10,9,0,124,0,160,26, - 124,2,124,8,124,10,161,3,1,0,124,14,83,0,35,0, - 4,0,116,2,144,1,121,9,1,0,1,0,1,0,89,0, - 124,14,83,0,37,0,124,14,83,0,119,0,119,0,119,0, - 119,0,119,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,192,0,0,0,114,182, - 0,0,0,114,168,0,0,0,114,3,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,141,0, - 0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0, - 0,0,114,251,0,0,0,114,76,0,0,0,114,34,0,0, - 0,114,254,0,0,0,114,175,0,0,0,218,10,109,101,109, - 111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77, - 65,71,73,67,95,78,85,77,66,69,82,114,181,0,0,0, - 114,179,0,0,0,114,142,0,0,0,114,173,0,0,0,114, - 158,0,0,0,114,172,0,0,0,114,188,0,0,0,114,4, - 1,0,0,114,16,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,194,0, - 0,0,114,193,0,0,0,114,4,0,0,0,114,253,0,0, - 0,41,15,114,143,0,0,0,114,162,0,0,0,114,134,0, - 0,0,114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0, - 218,2,115,116,114,42,0,0,0,114,174,0,0,0,114,17, - 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,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, - 114,240,0,0,0,189,3,0,0,115,188,0,0,0,10,7, - 4,1,4,1,4,1,4,1,4,1,2,1,10,1,2,128, - 14,1,8,1,2,128,2,2,12,1,2,128,14,1,4,1, - 2,128,12,2,2,1,12,1,2,128,14,1,4,1,2,128, - 2,3,2,1,6,254,2,4,12,1,16,1,12,1,4,1, - 12,1,10,1,2,1,2,255,8,2,2,254,10,3,4,1, - 2,1,2,1,4,254,8,4,2,1,4,255,2,128,2,3, - 2,1,2,1,6,1,2,1,2,1,4,251,4,128,18,7, - 4,1,2,128,8,2,2,1,4,255,6,2,2,1,2,1, - 6,254,8,3,10,1,12,1,12,1,18,1,6,1,4,255, - 4,2,8,1,10,1,14,1,6,2,6,1,4,255,2,2, - 14,1,4,3,2,128,14,254,2,1,4,1,2,128,4,0, - 2,254,2,233,2,225,2,250,2,251,115,80,0,0,0,144, - 4,21,0,149,10,33,7,163,5,41,0,169,8,51,7,187, - 5,65,1,0,193,1,8,65,11,7,193,18,65,5,66,24, - 0,194,24,10,66,36,7,195,50,7,67,59,0,195,59,8, - 68,6,7,196,9,1,68,6,7,196,10,1,66,36,7,196, - 11,1,65,11,7,196,12,1,51,7,196,13,1,33,7,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,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,12,0,0,0, - 114,7,0,0,0,114,248,0,0,0,130,3,0,0,115,16, - 0,0,0,8,0,8,2,8,8,8,14,8,10,8,7,14, - 10,12,8,114,9,0,0,0,114,248,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, - 0,0,115,94,0,0,0,135,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,136, - 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,136,0,4, - 0,90,12,83,0,41,16,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,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,182,0,0,0,41,3,114,143,0, - 0,0,114,162,0,0,0,114,65,0,0,0,32,32,32,114, - 7,0,0,0,114,235,0,0,0,23,4,0,0,115,4,0, - 0,0,6,3,10,1,114,9,0,0,0,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,67,0,0,0,243,24,0,0,0,124,0,106,0,124,1, - 106,0,107,2,111,11,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,143,0,0,0, - 90,5,111,116,104,101,114,32,32,114,7,0,0,0,218,6, - 95,95,101,113,95,95,29,4,0,0,243,6,0,0,0,12, - 1,10,1,2,255,114,9,0,0,0,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,3,0,0,0,67,0, - 0,0,243,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,141,0,0,0,114,65,0, - 0,0,169,1,114,143,0,0,0,32,114,7,0,0,0,218, - 8,95,95,104,97,115,104,95,95,33,4,0,0,243,2,0, - 0,0,20,1,114,9,0,0,0,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,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,2,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,41,3,218,5,115,117,112,101,114,114,10,1,0,0,114, - 247,0,0,0,41,3,114,143,0,0,0,114,162,0,0,0, - 114,13,1,0,0,32,32,128,114,7,0,0,0,114,247,0, - 0,0,36,4,0,0,115,2,0,0,0,16,10,114,9,0, - 0,0,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,1,0,0,0,67,0,0,0,243, - 6,0,0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246, - 0,0,0,32,32,114,7,0,0,0,114,202,0,0,0,48, - 4,0,0,243,2,0,0,0,6,3,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,136,0, - 0,0,116,0,124,0,116,1,116,2,102,2,131,2,114,38, - 116,3,160,4,116,5,124,1,131,1,161,1,53,0,125,2, - 124,2,160,6,161,0,2,0,100,1,4,0,4,0,131,3, - 1,0,83,0,35,0,49,0,115,30,119,4,37,0,1,0, - 1,0,1,0,89,0,1,0,1,0,100,1,83,0,116,3, - 160,7,124,1,100,2,161,2,53,0,125,2,124,2,160,6, - 161,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 35,0,49,0,115,60,119,4,37,0,1,0,1,0,1,0, - 89,0,1,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,184,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,91,0,0,0,90, - 9,111,112,101,110,95,99,111,100,101,114,109,0,0,0,90, - 4,114,101,97,100,114,92,0,0,0,41,3,114,143,0,0, - 0,114,65,0,0,0,114,94,0,0,0,32,32,32,114,7, - 0,0,0,114,254,0,0,0,53,4,0,0,115,22,0,0, - 0,14,2,16,1,6,1,14,255,22,128,4,0,14,3,6, - 1,14,255,22,128,4,0,115,24,0,0,0,142,4,25,3, - 153,4,29,11,158,3,29,11,172,4,55,3,183,4,59,11, - 188,3,59,11,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,67,0,0,0,115,20, - 0,0,0,100,1,100,2,108,0,109,1,125,2,1,0,124, - 2,124,0,131,1,83,0,41,3,78,114,0,0,0,0,41, - 1,218,10,70,105,108,101,82,101,97,100,101,114,41,2,218, - 17,105,109,112,111,114,116,108,105,98,46,114,101,97,100,101, - 114,115,114,29,1,0,0,41,3,114,143,0,0,0,114,243, - 0,0,0,114,29,1,0,0,32,32,32,114,7,0,0,0, - 218,19,103,101,116,95,114,101,115,111,117,114,99,101,95,114, - 101,97,100,101,114,62,4,0,0,115,4,0,0,0,12,2, - 8,1,114,9,0,0,0,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,41,13,114,149,0,0,0,114,148, - 0,0,0,114,150,0,0,0,114,151,0,0,0,114,235,0, - 0,0,114,15,1,0,0,114,21,1,0,0,114,159,0,0, - 0,114,247,0,0,0,114,202,0,0,0,114,254,0,0,0, - 114,31,1,0,0,90,13,95,95,99,108,97,115,115,99,101, - 108,108,95,95,41,1,114,13,1,0,0,64,114,7,0,0, - 0,114,10,1,0,0,18,4,0,0,115,24,0,0,0,10, + 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,78,41,1,218,8,115,101,116,95,100,97,116,97, + 41,4,114,143,0,0,0,114,134,0,0,0,90,10,99,97, + 99,104,101,95,112,97,116,104,114,42,0,0,0,115,4,0, + 0,0,32,32,32,32,114,7,0,0,0,218,15,95,99,97, + 99,104,101,95,98,121,116,101,99,111,100,101,155,3,0,0, + 115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, + 24,0,0,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, + 12,0,0,0,41,3,114,143,0,0,0,114,65,0,0,0, + 114,42,0,0,0,115,3,0,0,0,32,32,32,114,7,0, + 0,0,114,252,0,0,0,165,3,0,0,114,239,0,0,0, + 114,9,0,0,0,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,8,0,0,0,67,0,0, + 0,115,70,0,0,0,124,0,160,0,124,1,161,1,125,2, + 9,0,124,0,160,1,124,2,161,1,125,3,116,4,124,3, + 131,1,83,0,35,0,4,0,116,2,121,34,1,0,125,4, + 1,0,116,3,100,1,124,1,100,2,141,2,124,4,130,2, + 100,3,125,4,126,4,119,1,37,0,119,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,140,0, + 0,0,78,41,5,114,202,0,0,0,218,8,103,101,116,95, + 100,97,116,97,114,76,0,0,0,114,142,0,0,0,114,199, + 0,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, + 65,0,0,0,114,197,0,0,0,218,3,101,120,99,115,5, + 0,0,0,32,32,32,32,32,114,7,0,0,0,218,10,103, + 101,116,95,115,111,117,114,99,101,172,3,0,0,115,26,0, + 0,0,10,2,2,1,10,1,8,4,2,128,12,253,4,1, + 2,1,4,255,2,1,2,255,10,128,2,255,115,20,0,0, + 0,134,5,15,0,143,7,33,7,150,7,29,7,157,4,33, + 7,162,1,33,7,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,130, + 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,9,0,0, + 0,67,0,0,0,115,22,0,0,0,116,0,160,1,116,2, + 124,1,124,2,100,1,100,2,124,3,100,3,166,6,83,0, + 41,5,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,108,0,0, + 0,78,41,3,114,158,0,0,0,114,241,0,0,0,218,7, + 99,111,109,112,105,108,101,41,4,114,143,0,0,0,114,42, + 0,0,0,114,65,0,0,0,114,1,1,0,0,115,4,0, + 0,0,32,32,32,32,114,7,0,0,0,218,14,115,111,117, + 114,99,101,95,116,111,95,99,111,100,101,182,3,0,0,115, + 6,0,0,0,12,5,4,1,6,255,114,9,0,0,0,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,9,0,0,0,67,0,0, + 0,115,28,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,9,0,116,1,124,2,131,1,125,8,110,13, + 35,0,4,0,116,2,144,1,121,13,1,0,1,0,1,0, + 100,1,125,8,89,0,110,147,37,0,9,0,124,0,160,3, + 124,2,161,1,125,9,110,11,35,0,4,0,116,4,144,1, + 121,12,1,0,1,0,1,0,89,0,110,129,37,0,116,5, + 124,9,100,4,25,0,131,1,125,3,9,0,124,0,160,6, + 124,8,161,1,125,10,110,11,35,0,4,0,116,4,144,1, + 121,11,1,0,1,0,1,0,89,0,110,105,37,0,124,1, + 124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8,107,3, + 125,7,116,9,106,10,100,10,107,3,114,140,124,7,115,122, + 116,9,106,10,100,11,107,2,114,140,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,10, + 116,14,124,10,124,3,124,9,100,12,25,0,124,1,124,11, + 131,5,1,0,110,13,35,0,4,0,116,15,116,16,102,2, + 144,1,121,10,1,0,1,0,1,0,89,0,110,16,37,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,114,189,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,1,115,7, + 124,8,100,1,117,1,144,1,114,7,124,3,100,1,117,1, + 144,1,114,7,124,6,114,233,124,5,100,1,117,0,114,226, + 116,9,160,11,124,4,161,1,125,5,116,23,124,14,124,5, + 124,7,131,3,125,10,110,8,116,24,124,14,124,3,116,25, + 124,4,131,1,131,3,125,10,9,0,124,0,160,26,124,2, + 124,8,124,10,161,3,1,0,124,14,83,0,35,0,4,0, + 116,2,144,1,121,9,1,0,1,0,1,0,89,0,124,14, + 83,0,37,0,124,14,83,0,119,0,119,0,119,0,119,0, + 119,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,192,0,0,0,114,182,0,0, + 0,114,168,0,0,0,114,3,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,141,0,0,0, + 114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0,0,0, + 114,251,0,0,0,114,76,0,0,0,114,34,0,0,0,114, + 254,0,0,0,114,175,0,0,0,218,10,109,101,109,111,114, + 121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77,65,71, + 73,67,95,78,85,77,66,69,82,114,181,0,0,0,114,179, + 0,0,0,114,142,0,0,0,114,173,0,0,0,114,158,0, + 0,0,114,172,0,0,0,114,188,0,0,0,114,4,1,0, + 0,114,16,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,194,0,0,0, + 114,193,0,0,0,114,4,0,0,0,114,253,0,0,0,41, + 15,114,143,0,0,0,114,162,0,0,0,114,134,0,0,0, + 114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0,218,2, + 115,116,114,42,0,0,0,114,174,0,0,0,114,17,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,115,15,0,0,0,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,7, + 0,0,0,114,240,0,0,0,190,3,0,0,115,188,0,0, + 0,10,7,4,1,4,1,4,1,4,1,4,1,2,1,10, + 1,2,128,14,1,8,1,2,128,2,2,12,1,2,128,14, + 1,4,1,2,128,12,2,2,1,12,1,2,128,14,1,4, + 1,2,128,2,3,2,1,6,254,2,4,12,1,16,1,12, + 1,4,1,12,1,10,1,2,1,2,255,8,2,2,254,10, + 3,4,1,2,1,2,1,4,254,8,4,2,1,4,255,2, + 128,2,3,2,1,2,1,6,1,2,1,2,1,4,251,4, + 128,18,7,4,1,2,128,8,2,2,1,4,255,6,2,2, + 1,2,1,6,254,8,3,10,1,12,1,12,1,18,1,6, + 1,4,255,4,2,8,1,10,1,14,1,6,2,6,1,4, + 255,2,2,14,1,4,3,2,128,14,254,2,1,4,1,2, + 128,4,0,2,254,2,233,2,225,2,250,2,251,115,80,0, + 0,0,144,4,21,0,149,10,33,7,163,5,41,0,169,8, + 51,7,187,5,65,1,0,193,1,8,65,11,7,193,18,65, + 5,66,24,0,194,24,10,66,36,7,195,50,7,67,59,0, + 195,59,8,68,6,7,196,9,1,68,6,7,196,10,1,66, + 36,7,196,11,1,65,11,7,196,12,1,51,7,196,13,1, + 33,7,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,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,12, + 0,0,0,114,9,0,0,0,114,7,0,0,0,114,248,0, + 0,0,131,3,0,0,115,16,0,0,0,8,0,8,2,8, + 8,8,14,8,10,8,7,14,10,12,8,114,9,0,0,0, + 114,248,0,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,0,0,0,0,115,94,0,0,0,135, + 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,136,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,136,0,4,0,90,12,83,0,41,16,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,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,182, + 0,0,0,41,3,114,143,0,0,0,114,162,0,0,0,114, + 65,0,0,0,115,3,0,0,0,32,32,32,114,7,0,0, + 0,114,235,0,0,0,24,4,0,0,115,4,0,0,0,6, + 3,10,1,114,9,0,0,0,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,67,0, + 0,0,243,24,0,0,0,124,0,106,0,124,1,106,0,107, + 2,111,11,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,143,0,0,0,90,5,111, + 116,104,101,114,115,2,0,0,0,32,32,114,7,0,0,0, + 218,6,95,95,101,113,95,95,30,4,0,0,243,6,0,0, + 0,12,1,10,1,2,255,114,9,0,0,0,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,3,0,0,0, + 67,0,0,0,243,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,141,0,0,0,114, + 65,0,0,0,169,1,114,143,0,0,0,115,1,0,0,0, + 32,114,7,0,0,0,218,8,95,95,104,97,115,104,95,95, + 34,4,0,0,243,2,0,0,0,20,1,114,9,0,0,0, + 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,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, + 2,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,41,3,218,5,115,117,112,101, + 114,114,10,1,0,0,114,247,0,0,0,41,3,114,143,0, + 0,0,114,162,0,0,0,114,13,1,0,0,115,3,0,0, + 0,32,32,128,114,7,0,0,0,114,247,0,0,0,37,4, + 0,0,115,2,0,0,0,16,10,114,9,0,0,0,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,1,0,0,0,67,0,0,0,243,6,0,0,0, + 124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0,0,115, + 2,0,0,0,32,32,114,7,0,0,0,114,202,0,0,0, + 49,4,0,0,243,2,0,0,0,6,3,114,9,0,0,0, + 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,9,0,0,0,67,0,0,0,115,136, + 0,0,0,116,0,124,0,116,1,116,2,102,2,131,2,114, + 38,116,3,160,4,116,5,124,1,131,1,161,1,53,0,125, + 2,124,2,160,6,161,0,2,0,100,1,4,0,4,0,131, + 3,1,0,83,0,35,0,49,0,115,30,119,4,37,0,1, + 0,1,0,1,0,89,0,1,0,1,0,100,1,83,0,116, + 3,160,7,124,1,100,2,161,2,53,0,125,2,124,2,160, + 6,161,0,2,0,100,1,4,0,4,0,131,3,1,0,83, + 0,35,0,49,0,115,60,119,4,37,0,1,0,1,0,1, + 0,89,0,1,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,184,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,91,0,0,0, + 90,9,111,112,101,110,95,99,111,100,101,114,109,0,0,0, + 90,4,114,101,97,100,114,92,0,0,0,41,3,114,143,0, + 0,0,114,65,0,0,0,114,94,0,0,0,115,3,0,0, + 0,32,32,32,114,7,0,0,0,114,254,0,0,0,54,4, + 0,0,115,22,0,0,0,14,2,16,1,6,1,14,255,22, + 128,4,0,14,3,6,1,14,255,22,128,4,0,115,24,0, + 0,0,142,4,25,3,153,4,29,11,158,3,29,11,172,4, + 55,3,183,4,59,11,188,3,59,11,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, + 67,0,0,0,115,20,0,0,0,100,1,100,2,108,0,109, + 1,125,2,1,0,124,2,124,0,131,1,83,0,41,3,78, + 114,0,0,0,0,41,1,218,10,70,105,108,101,82,101,97, + 100,101,114,41,2,218,17,105,109,112,111,114,116,108,105,98, + 46,114,101,97,100,101,114,115,114,29,1,0,0,41,3,114, + 143,0,0,0,114,243,0,0,0,114,29,1,0,0,115,3, + 0,0,0,32,32,32,114,7,0,0,0,218,19,103,101,116, + 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, + 63,4,0,0,115,4,0,0,0,12,2,8,1,114,9,0, + 0,0,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,41,13,114,149,0,0,0,114,148,0,0,0,114,150, + 0,0,0,114,151,0,0,0,114,235,0,0,0,114,15,1, + 0,0,114,21,1,0,0,114,159,0,0,0,114,247,0,0, + 0,114,202,0,0,0,114,254,0,0,0,114,31,1,0,0, + 90,13,95,95,99,108,97,115,115,99,101,108,108,95,95,41, + 1,114,13,1,0,0,115,1,0,0,0,64,114,7,0,0, + 0,114,10,1,0,0,19,4,0,0,115,24,0,0,0,10, 128,4,2,8,3,8,6,8,4,2,3,14,1,2,11,10, 1,8,4,2,9,18,1,114,9,0,0,0,114,10,1,0, 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, @@ -1630,731 +1650,746 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,46,41,2,114,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0, - 114,65,0,0,0,114,9,1,0,0,32,32,32,114,7,0, - 0,0,114,251,0,0,0,72,4,0,0,115,4,0,0,0, - 8,2,14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,24,0,0,0, - 116,0,124,1,131,1,125,4,124,0,160,1,124,2,124,3, - 124,4,100,1,166,3,83,0,41,2,78,169,1,218,5,95, - 109,111,100,101,41,2,114,139,0,0,0,114,252,0,0,0, - 41,5,114,143,0,0,0,114,134,0,0,0,114,132,0,0, - 0,114,42,0,0,0,114,78,0,0,0,32,32,32,32,32, - 114,7,0,0,0,114,253,0,0,0,77,4,0,0,115,4, - 0,0,0,8,2,16,1,114,9,0,0,0,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,87, - 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,67,0,0,0,115,250,0, - 0,0,116,0,124,1,131,1,92,2,125,4,125,5,103,0, - 125,6,124,4,114,31,116,1,124,4,131,1,115,31,116,0, - 124,4,131,1,92,2,125,4,125,7,124,6,160,2,124,7, - 161,1,1,0,124,4,114,31,116,1,124,4,131,1,114,14, - 116,3,124,6,131,1,68,0,93,47,125,7,116,4,124,4, - 124,7,131,2,125,4,9,0,116,5,160,6,124,4,161,1, - 1,0,113,35,35,0,4,0,116,7,121,58,1,0,1,0, - 1,0,89,0,113,35,4,0,116,8,121,124,1,0,125,8, - 1,0,116,9,160,10,100,1,124,4,124,8,161,3,1,0, - 89,0,100,2,125,8,126,8,1,0,100,2,83,0,100,2, - 125,8,126,8,119,1,37,0,9,0,116,11,124,1,124,2, - 124,3,131,3,1,0,116,9,160,10,100,3,124,1,161,2, - 1,0,100,2,83,0,35,0,4,0,116,8,121,123,1,0, - 125,8,1,0,116,9,160,10,100,1,124,1,124,8,161,3, - 1,0,89,0,100,2,125,8,126,8,100,2,83,0,100,2, - 125,8,126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83, - 0,0,0,114,61,0,0,0,218,8,114,101,118,101,114,115, - 101,100,114,67,0,0,0,114,19,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,172, - 0,0,0,114,95,0,0,0,41,9,114,143,0,0,0,114, - 65,0,0,0,114,42,0,0,0,114,35,1,0,0,218,6, - 112,97,114,101,110,116,114,120,0,0,0,114,63,0,0,0, - 114,68,0,0,0,114,255,0,0,0,32,32,32,32,32,32, - 32,32,32,114,7,0,0,0,114,252,0,0,0,82,4,0, - 0,115,60,0,0,0,12,2,4,1,12,2,12,1,10,1, - 12,254,12,4,10,1,2,1,12,1,2,128,12,1,4,2, - 12,1,6,3,4,1,4,255,14,2,10,128,2,1,12,1, - 16,1,2,128,12,1,8,2,2,1,16,255,10,128,2,254, - 2,247,115,62,0,0,0,171,5,49,2,177,7,65,18,9, - 186,6,65,18,9,193,0,7,65,14,9,193,14,4,65,18, - 9,193,20,12,65,34,0,193,34,7,65,58,7,193,41,7, - 65,54,7,193,54,4,65,58,7,193,59,1,65,58,7,193, - 60,1,65,18,9,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,251,0,0,0,114,253,0,0, - 0,114,252,0,0,0,114,12,0,0,0,114,7,0,0,0, - 114,32,1,0,0,68,4,0,0,115,10,0,0,0,8,0, - 4,2,8,2,8,5,18,5,114,9,0,0,0,114,32,1, - 0,0,99,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,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,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,182,0,0,0,114,168,0,0,0,41,2, - 114,141,0,0,0,114,132,0,0,0,41,5,114,202,0,0, - 0,114,254,0,0,0,114,175,0,0,0,114,188,0,0,0, - 114,6,1,0,0,41,5,114,143,0,0,0,114,162,0,0, - 0,114,65,0,0,0,114,42,0,0,0,114,174,0,0,0, - 32,32,32,32,32,114,7,0,0,0,114,240,0,0,0,117, - 4,0,0,115,22,0,0,0,10,1,10,1,2,4,2,1, - 6,254,12,4,2,1,14,1,2,1,2,1,6,253,114,9, - 0,0,0,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,1, - 0,0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0, - 0,0,32,32,114,7,0,0,0,114,0,1,0,0,133,4, - 0,0,114,25,0,0,0,114,9,0,0,0,122,31,83,111, + 114,65,0,0,0,114,9,1,0,0,115,3,0,0,0,32, + 32,32,114,7,0,0,0,114,251,0,0,0,73,4,0,0, + 115,4,0,0,0,8,2,14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0, + 115,24,0,0,0,116,0,124,1,131,1,125,4,124,0,160, + 1,124,2,124,3,124,4,100,1,166,3,83,0,41,2,78, + 169,1,218,5,95,109,111,100,101,41,2,114,139,0,0,0, + 114,252,0,0,0,41,5,114,143,0,0,0,114,134,0,0, + 0,114,132,0,0,0,114,42,0,0,0,114,78,0,0,0, + 115,5,0,0,0,32,32,32,32,32,114,7,0,0,0,114, + 253,0,0,0,78,4,0,0,115,4,0,0,0,8,2,16, + 1,114,9,0,0,0,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,87,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,67,0,0,0,115,250,0,0,0,116,0,124,1, + 131,1,92,2,125,4,125,5,103,0,125,6,124,4,114,31, + 116,1,124,4,131,1,115,31,116,0,124,4,131,1,92,2, + 125,4,125,7,124,6,160,2,124,7,161,1,1,0,124,4, + 114,31,116,1,124,4,131,1,114,14,116,3,124,6,131,1, + 68,0,93,47,125,7,116,4,124,4,124,7,131,2,125,4, + 9,0,116,5,160,6,124,4,161,1,1,0,113,35,35,0, + 4,0,116,7,121,58,1,0,1,0,1,0,89,0,113,35, + 4,0,116,8,121,124,1,0,125,8,1,0,116,9,160,10, + 100,1,124,4,124,8,161,3,1,0,89,0,100,2,125,8, + 126,8,1,0,100,2,83,0,100,2,125,8,126,8,119,1, + 37,0,9,0,116,11,124,1,124,2,124,3,131,3,1,0, + 116,9,160,10,100,3,124,1,161,2,1,0,100,2,83,0, + 35,0,4,0,116,8,121,123,1,0,125,8,1,0,116,9, + 160,10,100,1,124,1,124,8,161,3,1,0,89,0,100,2, + 125,8,126,8,100,2,83,0,100,2,125,8,126,8,119,1, + 37,0,119,0,119,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,73,0,0,0,114,83,0,0,0,114,61,0, + 0,0,218,8,114,101,118,101,114,115,101,100,114,67,0,0, + 0,114,19,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,172,0,0,0,114,95,0, + 0,0,41,9,114,143,0,0,0,114,65,0,0,0,114,42, + 0,0,0,114,35,1,0,0,218,6,112,97,114,101,110,116, + 114,120,0,0,0,114,63,0,0,0,114,68,0,0,0,114, + 255,0,0,0,115,9,0,0,0,32,32,32,32,32,32,32, + 32,32,114,7,0,0,0,114,252,0,0,0,83,4,0,0, + 115,60,0,0,0,12,2,4,1,12,2,12,1,10,1,12, + 254,12,4,10,1,2,1,12,1,2,128,12,1,4,2,12, + 1,6,3,4,1,4,255,14,2,10,128,2,1,12,1,16, + 1,2,128,12,1,8,2,2,1,16,255,10,128,2,254,2, + 247,115,62,0,0,0,171,5,49,2,177,7,65,18,9,186, + 6,65,18,9,193,0,7,65,14,9,193,14,4,65,18,9, + 193,20,12,65,34,0,193,34,7,65,58,7,193,41,7,65, + 54,7,193,54,4,65,58,7,193,59,1,65,58,7,193,60, + 1,65,18,9,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,251,0,0,0,114,253,0,0,0, + 114,252,0,0,0,114,12,0,0,0,114,9,0,0,0,114, + 7,0,0,0,114,32,1,0,0,69,4,0,0,115,10,0, + 0,0,8,0,4,2,8,2,8,5,18,5,114,9,0,0, + 0,114,32,1,0,0,99,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,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,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,182,0,0,0,114,168,0, + 0,0,41,2,114,141,0,0,0,114,132,0,0,0,41,5, + 114,202,0,0,0,114,254,0,0,0,114,175,0,0,0,114, + 188,0,0,0,114,6,1,0,0,41,5,114,143,0,0,0, + 114,162,0,0,0,114,65,0,0,0,114,42,0,0,0,114, + 174,0,0,0,115,5,0,0,0,32,32,32,32,32,114,7, + 0,0,0,114,240,0,0,0,118,4,0,0,115,22,0,0, + 0,10,1,10,1,2,4,2,1,6,254,12,4,2,1,14, + 1,2,1,2,1,6,253,114,9,0,0,0,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,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,240,0,0,0,114,0,1,0,0,114,12, - 0,0,0,114,7,0,0,0,114,39,1,0,0,113,4,0, - 0,115,8,0,0,0,8,0,4,2,8,2,12,16,114,9, - 0,0,0,114,39,1,0,0,99,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,28,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,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,0,83,0,114,69, - 0,0,0,114,182,0,0,0,41,3,114,143,0,0,0,114, - 141,0,0,0,114,65,0,0,0,32,32,32,114,7,0,0, - 0,114,235,0,0,0,146,4,0,0,115,4,0,0,0,6, - 1,10,1,114,9,0,0,0,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,67,0,0,0,114,11,1,0,0, - 114,69,0,0,0,114,12,1,0,0,114,14,1,0,0,32, - 32,114,7,0,0,0,114,15,1,0,0,150,4,0,0,114, - 16,1,0,0,114,9,0,0,0,122,26,69,120,116,101,110, + 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,67,0,0,0, + 114,24,0,0,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,12,0,0,0,114,246,0,0,0,115,2,0,0,0, + 32,32,114,7,0,0,0,114,0,1,0,0,134,4,0,0, + 114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0, + 0,114,9,0,0,0,114,7,0,0,0,114,39,1,0,0, + 114,4,0,0,115,8,0,0,0,8,0,4,2,8,2,12, + 16,114,9,0,0,0,114,39,1,0,0,99,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,28,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,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,0,83, + 0,114,69,0,0,0,114,182,0,0,0,41,3,114,143,0, + 0,0,114,141,0,0,0,114,65,0,0,0,115,3,0,0, + 0,32,32,32,114,7,0,0,0,114,235,0,0,0,147,4, + 0,0,115,4,0,0,0,6,1,10,1,114,9,0,0,0, + 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,67, + 0,0,0,114,11,1,0,0,114,69,0,0,0,114,12,1, + 0,0,114,14,1,0,0,115,2,0,0,0,32,32,114,7, + 0,0,0,114,15,1,0,0,151,4,0,0,114,16,1,0, + 0,114,9,0,0,0,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,3, + 0,0,0,67,0,0,0,114,17,1,0,0,114,69,0,0, + 0,114,18,1,0,0,114,20,1,0,0,115,1,0,0,0, + 32,114,7,0,0,0,114,21,1,0,0,155,4,0,0,114, + 22,1,0,0,114,9,0,0,0,122,28,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,3,0,0,0,67,0,0,0,114,17,1,0,0,114, - 69,0,0,0,114,18,1,0,0,114,20,1,0,0,32,114, - 7,0,0,0,114,21,1,0,0,154,4,0,0,114,22,1, - 0,0,114,9,0,0,0,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,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,3,122,40,67,114,101,97,116,101,32,97,110, - 32,117,110,105,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,78,41,7,114,158,0,0,0,114, - 241,0,0,0,114,186,0,0,0,90,14,99,114,101,97,116, - 101,95,100,121,110,97,109,105,99,114,172,0,0,0,114,141, - 0,0,0,114,65,0,0,0,41,3,114,143,0,0,0,114, - 209,0,0,0,114,243,0,0,0,32,32,32,114,7,0,0, - 0,114,238,0,0,0,157,4,0,0,115,14,0,0,0,4, - 2,6,1,4,255,6,2,8,1,4,255,4,2,114,9,0, - 0,0,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,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,241,0,0,0,114,186,0,0, - 0,90,12,101,120,101,99,95,100,121,110,97,109,105,99,114, - 172,0,0,0,114,141,0,0,0,114,65,0,0,0,169,2, - 114,143,0,0,0,114,243,0,0,0,32,32,114,7,0,0, - 0,114,244,0,0,0,165,4,0,0,115,8,0,0,0,14, - 2,6,1,8,1,8,255,114,9,0,0,0,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,4,0,0,0,3,0, - 0,0,115,38,0,0,0,135,2,116,0,124,0,106,1,131, - 1,100,1,25,0,138,2,116,2,136,2,102,1,100,2,100, - 3,132,8,116,3,68,0,131,1,131,1,83,0,41,5,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,3,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,51,0,0,0,115,28,0,0, - 0,129,0,124,0,93,9,125,1,137,2,100,0,124,1,23, - 0,107,2,86,0,1,0,113,2,100,1,83,0,41,2,114, - 235,0,0,0,78,114,12,0,0,0,41,3,114,5,0,0, - 0,218,6,115,117,102,102,105,120,218,9,102,105,108,101,95, - 110,97,109,101,32,32,128,114,7,0,0,0,114,8,0,0, - 0,174,4,0,0,115,8,0,0,0,2,128,4,0,2,1, - 20,255,114,9,0,0,0,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,46,60,108,111,99,97,108,115,62, - 46,60,103,101,110,101,120,112,114,62,78,41,4,114,73,0, - 0,0,114,65,0,0,0,218,3,97,110,121,114,231,0,0, - 0,41,3,114,143,0,0,0,114,162,0,0,0,114,42,1, - 0,0,32,32,64,114,7,0,0,0,114,205,0,0,0,171, - 4,0,0,115,10,0,0,0,2,128,14,2,12,1,2,1, - 8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0,0,0,114,24,0,0, - 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,12,0,0,0,114,246,0,0,0,32, - 32,114,7,0,0,0,114,240,0,0,0,177,4,0,0,114, - 25,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, - 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,12,0,0,0, - 114,246,0,0,0,32,32,114,7,0,0,0,114,0,1,0, - 0,181,4,0,0,114,25,0,0,0,114,9,0,0,0,122, + 95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0, + 0,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,3,122,40,67,114,101,97,116,101,32, + 97,110,32,117,110,105,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,78,41,7,114,158,0,0, + 0,114,241,0,0,0,114,186,0,0,0,90,14,99,114,101, + 97,116,101,95,100,121,110,97,109,105,99,114,172,0,0,0, + 114,141,0,0,0,114,65,0,0,0,41,3,114,143,0,0, + 0,114,209,0,0,0,114,243,0,0,0,115,3,0,0,0, + 32,32,32,114,7,0,0,0,114,238,0,0,0,158,4,0, + 0,115,14,0,0,0,4,2,6,1,4,255,6,2,8,1, + 4,255,4,2,114,9,0,0,0,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,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,241, + 0,0,0,114,186,0,0,0,90,12,101,120,101,99,95,100, + 121,110,97,109,105,99,114,172,0,0,0,114,141,0,0,0, + 114,65,0,0,0,169,2,114,143,0,0,0,114,243,0,0, + 0,115,2,0,0,0,32,32,114,7,0,0,0,114,244,0, + 0,0,166,4,0,0,115,8,0,0,0,14,2,6,1,8, + 1,8,255,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,38, + 0,0,0,135,2,116,0,124,0,106,1,131,1,100,1,25, + 0,138,2,116,2,136,2,102,1,100,2,100,3,132,8,116, + 3,68,0,131,1,131,1,83,0,41,5,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,3, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,51,0,0,0,115,28,0,0,0,129,0,124, + 0,93,9,125,1,137,2,100,0,124,1,23,0,107,2,86, + 0,1,0,113,2,100,1,83,0,41,2,114,235,0,0,0, + 78,114,12,0,0,0,41,3,114,5,0,0,0,218,6,115, + 117,102,102,105,120,218,9,102,105,108,101,95,110,97,109,101, + 115,3,0,0,0,32,32,128,114,7,0,0,0,114,8,0, + 0,0,175,4,0,0,115,8,0,0,0,2,128,4,0,2, + 1,20,255,114,9,0,0,0,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,46,60,108,111,99,97,108,115, + 62,46,60,103,101,110,101,120,112,114,62,78,41,4,114,73, + 0,0,0,114,65,0,0,0,218,3,97,110,121,114,231,0, + 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,42, + 1,0,0,115,3,0,0,0,32,32,64,114,7,0,0,0, + 114,205,0,0,0,172,4,0,0,115,10,0,0,0,2,128, + 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0, + 0,0,114,24,0,0,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,12,0,0,0, + 114,246,0,0,0,115,2,0,0,0,32,32,114,7,0,0, + 0,114,240,0,0,0,178,4,0,0,114,25,0,0,0,114, + 9,0,0,0,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,1, + 0,0,0,67,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0, + 115,2,0,0,0,32,32,114,7,0,0,0,114,0,1,0, + 0,182,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0, 67,0,0,0,114,24,1,0,0,114,25,1,0,0,114,74, - 0,0,0,114,246,0,0,0,32,32,114,7,0,0,0,114, - 202,0,0,0,185,4,0,0,114,26,1,0,0,114,9,0, - 0,0,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,235,0,0,0, - 114,15,1,0,0,114,21,1,0,0,114,238,0,0,0,114, - 244,0,0,0,114,205,0,0,0,114,240,0,0,0,114,0, - 1,0,0,114,159,0,0,0,114,202,0,0,0,114,12,0, - 0,0,114,7,0,0,0,114,28,1,0,0,138,4,0,0, - 115,24,0,0,0,8,0,4,2,8,6,8,4,8,4,8, - 3,8,8,8,6,8,6,8,4,2,4,14,1,114,9,0, - 0,0,114,28,1,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,64,0,0,0,115,104,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,100,18,100, - 19,132,0,90,12,100,20,100,21,132,0,90,13,100,22,100, - 23,132,0,90,14,100,24,83,0,41,25,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,99,4,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,67,0,0,0,115,36,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,3,124,0,95,5, - 100,0,83,0,114,69,0,0,0,41,6,218,5,95,110,97, - 109,101,218,5,95,112,97,116,104,114,136,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,12,95,112,97,116,104,95,102,105,110,100,101, - 114,169,4,114,143,0,0,0,114,141,0,0,0,114,65,0, - 0,0,90,11,112,97,116,104,95,102,105,110,100,101,114,32, - 32,32,32,114,7,0,0,0,114,235,0,0,0,198,4,0, - 0,115,8,0,0,0,6,1,6,1,14,1,10,1,114,9, - 0,0,0,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,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,15, - 100,3,83,0,124,1,100,4,102,2,83,0,41,6,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,97, - 0,0,0,114,10,0,0,0,41,2,114,16,0,0,0,114, - 65,0,0,0,90,8,95,95,112,97,116,104,95,95,78,41, - 2,114,45,1,0,0,114,104,0,0,0,41,4,114,143,0, - 0,0,114,38,1,0,0,218,3,100,111,116,90,2,109,101, - 32,32,32,32,114,7,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,204,4,0,0,115,8,0,0,0,18,2,8,1,4, - 2,8,3,114,9,0,0,0,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,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,52,1, - 0,0,114,154,0,0,0,114,16,0,0,0,218,7,109,111, - 100,117,108,101,115,41,3,114,143,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, - 32,32,32,114,7,0,0,0,114,47,1,0,0,214,4,0, - 0,115,4,0,0,0,12,1,16,1,114,9,0,0,0,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,4,0,0, - 0,67,0,0,0,115,80,0,0,0,116,0,124,0,160,1, - 161,0,131,1,125,1,124,1,124,0,106,2,107,3,114,37, - 124,0,160,3,124,0,106,4,124,1,161,2,125,2,124,2, - 100,0,117,1,114,34,124,2,106,5,100,0,117,0,114,34, - 124,2,106,6,114,34,124,2,106,6,124,0,95,7,124,1, - 124,0,95,2,124,0,106,7,83,0,114,69,0,0,0,41, - 8,114,136,0,0,0,114,47,1,0,0,114,48,1,0,0, - 114,49,1,0,0,114,45,1,0,0,114,163,0,0,0,114, - 201,0,0,0,114,46,1,0,0,41,3,114,143,0,0,0, - 90,11,112,97,114,101,110,116,95,112,97,116,104,114,209,0, - 0,0,32,32,32,114,7,0,0,0,218,12,95,114,101,99, - 97,108,99,117,108,97,116,101,218,4,0,0,115,16,0,0, - 0,12,2,10,1,14,1,18,3,6,1,8,1,6,1,6, - 1,114,9,0,0,0,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, - 3,0,0,0,67,0,0,0,243,12,0,0,0,116,0,124, - 0,160,1,161,0,131,1,83,0,114,69,0,0,0,41,2, - 218,4,105,116,101,114,114,54,1,0,0,114,20,1,0,0, - 32,114,7,0,0,0,218,8,95,95,105,116,101,114,95,95, - 231,4,0,0,243,2,0,0,0,12,1,114,9,0,0,0, - 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,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,54,1,0,0,41,2,114,143,0, - 0,0,218,5,105,110,100,101,120,32,32,114,7,0,0,0, - 218,11,95,95,103,101,116,105,116,101,109,95,95,234,4,0, - 0,114,58,1,0,0,114,9,0,0,0,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,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,46,1,0,0,41,3,114,143,0, - 0,0,114,60,1,0,0,114,65,0,0,0,32,32,32,114, - 7,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95, - 95,237,4,0,0,115,2,0,0,0,14,1,114,9,0,0, - 0,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,3,0,0,0,67,0, - 0,0,114,55,1,0,0,114,69,0,0,0,41,2,114,4, - 0,0,0,114,54,1,0,0,114,20,1,0,0,32,114,7, - 0,0,0,218,7,95,95,108,101,110,95,95,240,4,0,0, - 114,58,1,0,0,114,9,0,0,0,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,3, - 0,0,0,67,0,0,0,243,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,89,0,0,0,114,46,1,0,0,114,20,1, - 0,0,32,114,7,0,0,0,218,8,95,95,114,101,112,114, - 95,95,243,4,0,0,114,58,1,0,0,114,9,0,0,0, - 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,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,143,0,0,0, - 218,4,105,116,101,109,32,32,114,7,0,0,0,218,12,95, - 95,99,111,110,116,97,105,110,115,95,95,246,4,0,0,114, - 58,1,0,0,114,9,0,0,0,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,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,46,1,0,0,114,61,0,0, - 0,114,66,1,0,0,32,32,114,7,0,0,0,114,61,0, - 0,0,249,4,0,0,243,2,0,0,0,16,1,114,9,0, - 0,0,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,15,114,149,0,0, + 0,0,0,114,246,0,0,0,115,2,0,0,0,32,32,114, + 7,0,0,0,114,202,0,0,0,186,4,0,0,114,26,1, + 0,0,114,9,0,0,0,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,235,0,0,0,114,52,1,0,0,114,47,1,0,0,114, - 54,1,0,0,114,57,1,0,0,114,61,1,0,0,114,62, - 1,0,0,114,63,1,0,0,114,65,1,0,0,114,68,1, - 0,0,114,61,0,0,0,114,12,0,0,0,114,7,0,0, - 0,114,44,1,0,0,191,4,0,0,115,26,0,0,0,8, - 0,4,1,8,6,8,6,8,10,8,4,8,13,8,3,8, - 3,8,3,8,3,8,3,12,3,114,9,0,0,0,114,44, - 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,64,0,0,0,115,88,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,100,18,132,0,90, - 12,100,19,83,0,41,20,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,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,44,1,0, - 0,114,46,1,0,0,114,50,1,0,0,32,32,32,32,114, - 7,0,0,0,114,235,0,0,0,255,4,0,0,115,2,0, - 0,0,18,1,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,24,0,0,0,116,0, - 160,1,100,1,116,2,161,2,1,0,100,2,160,3,124,0, - 106,4,161,1,83,0,41,4,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,82,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,40,41,32,105,115, - 32,100,101,112,114,101,99,97,116,101,100,32,97,110,100,32, - 115,108,97,116,101,100,32,102,111,114,32,114,101,109,111,118, - 97,108,32,105,110,32,80,121,116,104,111,110,32,51,46,49, - 50,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,78,41,5,114, - 99,0,0,0,114,100,0,0,0,114,101,0,0,0,114,89, - 0,0,0,114,149,0,0,0,41,1,114,243,0,0,0,32, + 114,235,0,0,0,114,15,1,0,0,114,21,1,0,0,114, + 238,0,0,0,114,244,0,0,0,114,205,0,0,0,114,240, + 0,0,0,114,0,1,0,0,114,159,0,0,0,114,202,0, + 0,0,114,12,0,0,0,114,9,0,0,0,114,7,0,0, + 0,114,28,1,0,0,139,4,0,0,115,24,0,0,0,8, + 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, + 6,8,4,2,4,14,1,114,9,0,0,0,114,28,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,64,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100, + 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, + 24,83,0,41,25,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, + 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,67,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69, + 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, + 97,116,104,114,136,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,12,95, + 112,97,116,104,95,102,105,110,100,101,114,169,4,114,143,0, + 0,0,114,141,0,0,0,114,65,0,0,0,90,11,112,97, + 116,104,95,102,105,110,100,101,114,115,4,0,0,0,32,32, + 32,32,114,7,0,0,0,114,235,0,0,0,199,4,0,0, + 115,8,0,0,0,6,1,6,1,14,1,10,1,114,9,0, + 0,0,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,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,15,100, + 3,83,0,124,1,100,4,102,2,83,0,41,6,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,97,0, + 0,0,114,10,0,0,0,41,2,114,16,0,0,0,114,65, + 0,0,0,90,8,95,95,112,97,116,104,95,95,78,41,2, + 114,45,1,0,0,114,104,0,0,0,41,4,114,143,0,0, + 0,114,38,1,0,0,218,3,100,111,116,90,2,109,101,115, + 4,0,0,0,32,32,32,32,114,7,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,205,4,0,0,115,8,0,0,0,18, + 2,8,1,4,2,8,3,114,9,0,0,0,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,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,52,1,0,0,114,154,0,0,0,114,16,0,0,0, + 218,7,109,111,100,117,108,101,115,41,3,114,143,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,115,3,0,0,0,32,32,32,114,7,0,0, + 0,114,47,1,0,0,215,4,0,0,115,4,0,0,0,12, + 1,16,1,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80, + 0,0,0,116,0,124,0,160,1,161,0,131,1,125,1,124, + 1,124,0,106,2,107,3,114,37,124,0,160,3,124,0,106, + 4,124,1,161,2,125,2,124,2,100,0,117,1,114,34,124, + 2,106,5,100,0,117,0,114,34,124,2,106,6,114,34,124, + 2,106,6,124,0,95,7,124,1,124,0,95,2,124,0,106, + 7,83,0,114,69,0,0,0,41,8,114,136,0,0,0,114, + 47,1,0,0,114,48,1,0,0,114,49,1,0,0,114,45, + 1,0,0,114,163,0,0,0,114,201,0,0,0,114,46,1, + 0,0,41,3,114,143,0,0,0,90,11,112,97,114,101,110, + 116,95,112,97,116,104,114,209,0,0,0,115,3,0,0,0, + 32,32,32,114,7,0,0,0,218,12,95,114,101,99,97,108, + 99,117,108,97,116,101,219,4,0,0,115,16,0,0,0,12, + 2,10,1,14,1,18,3,6,1,8,1,6,1,6,1,114, + 9,0,0,0,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,3,0, + 0,0,67,0,0,0,243,12,0,0,0,116,0,124,0,160, + 1,161,0,131,1,83,0,114,69,0,0,0,41,2,218,4, + 105,116,101,114,114,54,1,0,0,114,20,1,0,0,115,1, + 0,0,0,32,114,7,0,0,0,218,8,95,95,105,116,101, + 114,95,95,232,4,0,0,243,2,0,0,0,12,1,114,9, + 0,0,0,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,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,54,1,0,0,41,2, + 114,143,0,0,0,218,5,105,110,100,101,120,115,2,0,0, + 0,32,32,114,7,0,0,0,218,11,95,95,103,101,116,105, + 116,101,109,95,95,235,4,0,0,114,58,1,0,0,114,9, + 0,0,0,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, + 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,46, + 1,0,0,41,3,114,143,0,0,0,114,60,1,0,0,114, + 65,0,0,0,115,3,0,0,0,32,32,32,114,7,0,0, + 0,218,11,95,95,115,101,116,105,116,101,109,95,95,238,4, + 0,0,115,2,0,0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114, + 55,1,0,0,114,69,0,0,0,41,2,114,4,0,0,0, + 114,54,1,0,0,114,20,1,0,0,115,1,0,0,0,32, + 114,7,0,0,0,218,7,95,95,108,101,110,95,95,241,4, + 0,0,114,58,1,0,0,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,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,89,0,0,0,114,46,1,0,0,114, + 20,1,0,0,115,1,0,0,0,32,114,7,0,0,0,218, + 8,95,95,114,101,112,114,95,95,244,4,0,0,114,58,1, + 0,0,114,9,0,0,0,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,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,143,0,0,0,218,4,105,116,101,109,115,2,0, + 0,0,32,32,114,7,0,0,0,218,12,95,95,99,111,110, + 116,97,105,110,115,95,95,247,4,0,0,114,58,1,0,0, + 114,9,0,0,0,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,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,46,1,0,0,114,61,0,0,0,114,66,1, + 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,61, + 0,0,0,250,4,0,0,243,2,0,0,0,16,1,114,9, + 0,0,0,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,15,114,149,0, + 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, + 0,114,235,0,0,0,114,52,1,0,0,114,47,1,0,0, + 114,54,1,0,0,114,57,1,0,0,114,61,1,0,0,114, + 62,1,0,0,114,63,1,0,0,114,65,1,0,0,114,68, + 1,0,0,114,61,0,0,0,114,12,0,0,0,114,9,0, + 0,0,114,7,0,0,0,114,44,1,0,0,192,4,0,0, + 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, + 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, + 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, + 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,100,18,132,0,90,12,100,19,83,0,41,20,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, + 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,44,1,0,0,114,46,1,0,0,114,50,1,0, + 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,114, + 235,0,0,0,0,5,0,0,115,2,0,0,0,18,1,114, + 9,0,0,0,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, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,24,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,100,2,160,3,124,0,106,4,161,1,83, + 0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, + 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, + 32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114, + 100,0,0,0,114,101,0,0,0,114,89,0,0,0,114,149, + 0,0,0,41,1,114,243,0,0,0,115,1,0,0,0,32, 114,7,0,0,0,218,11,109,111,100,117,108,101,95,114,101, - 112,114,2,5,0,0,115,8,0,0,0,6,7,2,1,4, + 112,114,3,5,0,0,115,8,0,0,0,6,7,2,1,4, 255,12,2,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0, - 41,2,78,84,114,12,0,0,0,114,246,0,0,0,32,32, - 114,7,0,0,0,114,205,0,0,0,13,5,0,0,243,2, - 0,0,0,4,1,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0, - 0,41,2,78,114,10,0,0,0,114,12,0,0,0,114,246, - 0,0,0,32,32,114,7,0,0,0,114,0,1,0,0,16, - 5,0,0,114,72,1,0,0,114,9,0,0,0,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,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,10,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,32, - 32,114,7,0,0,0,114,240,0,0,0,19,5,0,0,114, - 69,1,0,0,114,9,0,0,0,122,25,95,78,97,109,101, + 41,2,78,84,114,12,0,0,0,114,246,0,0,0,115,2, + 0,0,0,32,32,114,7,0,0,0,114,205,0,0,0,14, + 5,0,0,243,2,0,0,0,4,1,114,9,0,0,0,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,1,0,0,0,67,0,0, + 0,114,24,0,0,0,41,2,78,114,10,0,0,0,114,12, + 0,0,0,114,246,0,0,0,115,2,0,0,0,32,32,114, + 7,0,0,0,114,0,1,0,0,17,5,0,0,114,72,1, + 0,0,114,9,0,0,0,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,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,10,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,115,2,0,0,0,32,32, + 114,7,0,0,0,114,240,0,0,0,20,5,0,0,114,69, + 1,0,0,114,9,0,0,0,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, + 1,0,0,0,67,0,0,0,114,24,0,0,0,114,236,0, + 0,0,114,12,0,0,0,114,237,0,0,0,115,2,0,0, + 0,32,32,114,7,0,0,0,114,238,0,0,0,23,5,0, + 0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0, + 115,4,0,0,0,100,0,83,0,114,69,0,0,0,114,12, + 0,0,0,114,40,1,0,0,115,2,0,0,0,32,32,114, + 7,0,0,0,114,244,0,0,0,26,5,0,0,114,72,1, + 0,0,114,9,0,0,0,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,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,3,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,78,41,4,114,158,0,0,0,114, + 172,0,0,0,114,46,1,0,0,114,245,0,0,0,114,246, + 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, + 247,0,0,0,29,5,0,0,115,8,0,0,0,6,7,4, + 1,4,255,12,3,114,9,0,0,0,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,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,67,0,0,0,115,22,0, + 0,0,100,1,100,2,108,0,109,1,125,2,1,0,124,2, + 124,0,106,2,131,1,83,0,41,3,78,114,0,0,0,0, + 41,1,218,15,78,97,109,101,115,112,97,99,101,82,101,97, + 100,101,114,41,3,114,30,1,0,0,114,73,1,0,0,114, + 46,1,0,0,41,3,114,143,0,0,0,114,243,0,0,0, + 114,73,1,0,0,115,3,0,0,0,32,32,32,114,7,0, + 0,0,114,31,1,0,0,41,5,0,0,115,4,0,0,0, + 12,1,10,1,114,9,0,0,0,122,36,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,1,0,0,0,67,0,0,0,114,24,0,0,0,114,236, - 0,0,0,114,12,0,0,0,114,237,0,0,0,32,32,114, - 7,0,0,0,114,238,0,0,0,22,5,0,0,114,239,0, - 0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0,115,4,0,0, - 0,100,0,83,0,114,69,0,0,0,114,12,0,0,0,114, - 40,1,0,0,32,32,114,7,0,0,0,114,244,0,0,0, - 25,5,0,0,114,72,1,0,0,114,9,0,0,0,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,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,3,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,78,41, - 4,114,158,0,0,0,114,172,0,0,0,114,46,1,0,0, - 114,245,0,0,0,114,246,0,0,0,32,32,114,7,0,0, - 0,114,247,0,0,0,28,5,0,0,115,8,0,0,0,6, - 7,4,1,4,255,12,3,114,9,0,0,0,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,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,67,0,0,0,115, - 22,0,0,0,100,1,100,2,108,0,109,1,125,2,1,0, - 124,2,124,0,106,2,131,1,83,0,41,3,78,114,0,0, - 0,0,41,1,218,15,78,97,109,101,115,112,97,99,101,82, - 101,97,100,101,114,41,3,114,30,1,0,0,114,73,1,0, - 0,114,46,1,0,0,41,3,114,143,0,0,0,114,243,0, - 0,0,114,73,1,0,0,32,32,32,114,7,0,0,0,114, - 31,1,0,0,40,5,0,0,115,4,0,0,0,12,1,10, - 1,114,9,0,0,0,122,36,95,78,97,109,101,115,112,97, - 99,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,78,41,13,114, - 149,0,0,0,114,148,0,0,0,114,150,0,0,0,114,235, - 0,0,0,114,232,0,0,0,114,71,1,0,0,114,205,0, - 0,0,114,0,1,0,0,114,240,0,0,0,114,238,0,0, - 0,114,244,0,0,0,114,247,0,0,0,114,31,1,0,0, - 114,12,0,0,0,114,7,0,0,0,114,70,1,0,0,254, - 4,0,0,115,22,0,0,0,8,0,8,1,2,3,10,1, - 8,10,8,3,8,3,8,3,8,3,8,3,12,12,114,9, - 0,0,0,114,70,1,0,0,99,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,7,100,6,100,7,132,0,131,1, - 90,8,101,7,100,8,100,9,132,0,131,1,90,9,101,7, - 100,19,100,11,100,12,132,1,131,1,90,10,101,7,100,20, - 100,13,100,14,132,1,131,1,90,11,101,7,100,19,100,15, - 100,16,132,1,131,1,90,12,101,4,100,17,100,18,132,0, - 131,1,90,13,100,10,83,0,41,21,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,0,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,115,64,0,0,0, - 116,0,116,1,106,2,160,3,161,0,131,1,68,0,93,22, - 92,2,125,0,125,1,124,1,100,1,117,0,114,20,116,1, - 106,2,124,0,61,0,113,7,116,4,124,1,100,2,131,2, - 114,29,124,1,160,5,161,0,1,0,113,7,100,1,83,0, - 41,3,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,41,6,218,4,108,105,115,116,114,16,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,75,1,0,0,41,2,114,141,0,0,0,218, - 6,102,105,110,100,101,114,32,32,114,7,0,0,0,114,75, - 1,0,0,51,5,0,0,115,14,0,0,0,22,4,8,1, - 10,1,10,1,8,1,2,128,4,252,114,9,0,0,0,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,1,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,67,0, - 0,0,115,78,0,0,0,116,0,106,1,100,1,117,1,114, - 14,116,0,106,1,115,14,116,2,160,3,100,2,116,4,161, - 2,1,0,116,0,106,1,68,0,93,18,125,1,9,0,124, - 1,124,0,131,1,2,0,1,0,83,0,35,0,4,0,116, - 5,121,38,1,0,1,0,1,0,89,0,113,17,37,0,100, - 1,83,0,119,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,16,0,0,0,218,10,112,97,116,104,95,104, - 111,111,107,115,114,99,0,0,0,114,100,0,0,0,114,161, - 0,0,0,114,142,0,0,0,41,2,114,65,0,0,0,90, - 4,104,111,111,107,32,32,114,7,0,0,0,218,11,95,112, - 97,116,104,95,104,111,111,107,115,61,5,0,0,115,22,0, - 0,0,16,3,12,1,10,1,2,1,12,1,2,128,12,1, - 4,1,2,128,4,2,2,253,115,12,0,0,0,148,3,26, - 2,154,7,35,9,166,1,35,9,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,8,0, - 0,0,67,0,0,0,115,104,0,0,0,124,1,100,1,107, - 2,114,21,9,0,116,0,160,1,161,0,125,1,110,11,35, - 0,4,0,116,2,121,51,1,0,1,0,1,0,89,0,100, - 2,83,0,37,0,9,0,116,3,106,4,124,1,25,0,125, - 2,124,2,83,0,35,0,4,0,116,5,121,50,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,124,2,83,0,37,0,119, - 0,119,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,10,0,0,0,78,41, - 7,114,19,0,0,0,114,82,0,0,0,218,17,70,105,108, - 101,78,111,116,70,111,117,110,100,69,114,114,111,114,114,16, - 0,0,0,114,77,1,0,0,218,8,75,101,121,69,114,114, - 111,114,114,81,1,0,0,41,3,114,220,0,0,0,114,65, - 0,0,0,114,79,1,0,0,32,32,32,114,7,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,74,5,0,0,115,36,0,0,0,8, - 8,2,1,10,1,2,128,12,1,6,3,2,128,2,1,10, - 1,4,4,2,128,12,253,10,1,12,1,4,1,2,128,2, - 253,2,250,115,24,0,0,0,133,4,10,0,138,7,20,7, - 150,5,29,0,157,17,49,7,178,1,49,7,179,1,20,7, - 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,4,0, - 0,0,67,0,0,0,115,138,0,0,0,116,0,124,2,100, - 1,131,2,114,27,116,1,160,2,124,2,161,1,155,0,100, - 2,157,2,125,3,116,3,160,4,124,3,116,5,161,2,1, - 0,124,2,160,6,124,1,161,1,92,2,125,4,125,5,110, - 21,116,1,160,2,124,2,161,1,155,0,100,3,157,2,125, - 3,116,3,160,4,124,3,116,5,161,2,1,0,124,2,160, - 7,124,1,161,1,125,4,103,0,125,5,124,4,100,0,117, - 1,114,58,116,1,160,8,124,1,124,4,161,2,83,0,116, - 1,160,9,124,1,100,0,161,2,125,6,124,5,124,6,95, - 10,124,6,83,0,41,4,78,114,160,0,0,0,122,53,46, - 102,105,110,100,95,115,112,101,99,40,41,32,110,111,116,32, - 102,111,117,110,100,59,32,102,97,108,108,105,110,103,32,98, - 97,99,107,32,116,111,32,102,105,110,100,95,108,111,97,100, - 101,114,40,41,122,53,46,102,105,110,100,95,115,112,101,99, + 114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,78, + 41,13,114,149,0,0,0,114,148,0,0,0,114,150,0,0, + 0,114,235,0,0,0,114,232,0,0,0,114,71,1,0,0, + 114,205,0,0,0,114,0,1,0,0,114,240,0,0,0,114, + 238,0,0,0,114,244,0,0,0,114,247,0,0,0,114,31, + 1,0,0,114,12,0,0,0,114,9,0,0,0,114,7,0, + 0,0,114,70,1,0,0,255,4,0,0,115,22,0,0,0, + 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, + 8,3,8,3,12,12,114,9,0,0,0,114,70,1,0,0, + 99,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,7, + 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, + 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, + 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, + 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, + 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, + 41,21,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,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, + 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, + 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, + 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, + 1,0,113,7,100,1,83,0,41,3,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,41,6,218, + 4,108,105,115,116,114,16,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,75,1,0,0, + 41,2,114,141,0,0,0,218,6,102,105,110,100,101,114,115, + 2,0,0,0,32,32,114,7,0,0,0,114,75,1,0,0, + 52,5,0,0,115,14,0,0,0,22,4,8,1,10,1,10, + 1,8,1,2,128,4,252,114,9,0,0,0,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,1,0,0,0,0, + 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, + 78,0,0,0,116,0,106,1,100,1,117,1,114,14,116,0, + 106,1,115,14,116,2,160,3,100,2,116,4,161,2,1,0, + 116,0,106,1,68,0,93,18,125,1,9,0,124,1,124,0, + 131,1,2,0,1,0,83,0,35,0,4,0,116,5,121,38, + 1,0,1,0,1,0,89,0,113,17,37,0,100,1,83,0, + 119,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,16,0,0,0,218,10,112,97,116,104,95,104,111,111,107, + 115,114,99,0,0,0,114,100,0,0,0,114,161,0,0,0, + 114,142,0,0,0,41,2,114,65,0,0,0,90,4,104,111, + 111,107,115,2,0,0,0,32,32,114,7,0,0,0,218,11, + 95,112,97,116,104,95,104,111,111,107,115,62,5,0,0,115, + 22,0,0,0,16,3,12,1,10,1,2,1,12,1,2,128, + 12,1,4,1,2,128,4,2,2,253,115,12,0,0,0,148, + 3,26,2,154,7,35,9,166,1,35,9,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, + 8,0,0,0,67,0,0,0,115,104,0,0,0,124,1,100, + 1,107,2,114,21,9,0,116,0,160,1,161,0,125,1,110, + 11,35,0,4,0,116,2,121,51,1,0,1,0,1,0,89, + 0,100,2,83,0,37,0,9,0,116,3,106,4,124,1,25, + 0,125,2,124,2,83,0,35,0,4,0,116,5,121,50,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,124,2,83,0,37, + 0,119,0,119,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,10,0,0,0, + 78,41,7,114,19,0,0,0,114,82,0,0,0,218,17,70, + 105,108,101,78,111,116,70,111,117,110,100,69,114,114,111,114, + 114,16,0,0,0,114,77,1,0,0,218,8,75,101,121,69, + 114,114,111,114,114,81,1,0,0,41,3,114,220,0,0,0, + 114,65,0,0,0,114,79,1,0,0,115,3,0,0,0,32, + 32,32,114,7,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,75,5,0, + 0,115,36,0,0,0,8,8,2,1,10,1,2,128,12,1, + 6,3,2,128,2,1,10,1,4,4,2,128,12,253,10,1, + 12,1,4,1,2,128,2,253,2,250,115,24,0,0,0,133, + 4,10,0,138,7,20,7,150,5,29,0,157,17,49,7,178, + 1,49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138,0, + 0,0,116,0,124,2,100,1,131,2,114,27,116,1,160,2, + 124,2,161,1,155,0,100,2,157,2,125,3,116,3,160,4, + 124,3,116,5,161,2,1,0,124,2,160,6,124,1,161,1, + 92,2,125,4,125,5,110,21,116,1,160,2,124,2,161,1, + 155,0,100,3,157,2,125,3,116,3,160,4,124,3,116,5, + 161,2,1,0,124,2,160,7,124,1,161,1,125,4,103,0, + 125,5,124,4,100,0,117,1,114,58,116,1,160,8,124,1, + 124,4,161,2,83,0,116,1,160,9,124,1,100,0,161,2, + 125,6,124,5,124,6,95,10,124,6,83,0,41,4,78,114, + 160,0,0,0,122,53,46,102,105,110,100,95,115,112,101,99, 40,41,32,110,111,116,32,102,111,117,110,100,59,32,102,97, 108,108,105,110,103,32,98,97,99,107,32,116,111,32,102,105, - 110,100,95,109,111,100,117,108,101,40,41,41,11,114,152,0, - 0,0,114,158,0,0,0,90,12,95,111,98,106,101,99,116, - 95,110,97,109,101,114,99,0,0,0,114,100,0,0,0,114, - 161,0,0,0,114,160,0,0,0,114,228,0,0,0,114,223, - 0,0,0,114,206,0,0,0,114,201,0,0,0,41,7,114, - 220,0,0,0,114,162,0,0,0,114,79,1,0,0,114,165, - 0,0,0,114,163,0,0,0,114,164,0,0,0,114,209,0, - 0,0,32,32,32,32,32,32,32,114,7,0,0,0,218,16, - 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, - 96,5,0,0,115,26,0,0,0,10,4,16,1,12,2,16, - 1,16,2,12,2,10,1,4,1,8,1,12,1,12,1,6, - 1,4,1,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,166,0,0,0, - 103,0,125,4,124,2,68,0,93,67,125,5,116,0,124,5, - 116,1,116,2,102,2,131,2,115,14,113,4,124,0,160,3, - 124,5,161,1,125,6,124,6,100,1,117,1,114,71,116,4, - 124,6,100,2,131,2,114,35,124,6,160,5,124,1,124,3, - 161,2,125,7,110,6,124,0,160,6,124,1,124,6,161,2, - 125,7,124,7,100,1,117,0,114,46,113,4,124,7,106,7, - 100,1,117,1,114,55,124,7,2,0,1,0,83,0,124,7, - 106,8,125,8,124,8,100,1,117,0,114,66,116,9,100,3, - 131,1,130,1,124,4,160,10,124,8,161,1,1,0,113,4, - 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,225,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,184,0,0,0,114,109,0,0,0, - 218,5,98,121,116,101,115,114,84,1,0,0,114,152,0,0, - 0,114,225,0,0,0,114,85,1,0,0,114,163,0,0,0, - 114,201,0,0,0,114,142,0,0,0,114,190,0,0,0,114, - 158,0,0,0,114,206,0,0,0,41,9,114,220,0,0,0, - 114,162,0,0,0,114,65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0, - 114,164,0,0,0,32,32,32,32,32,32,32,32,32,114,7, - 0,0,0,218,9,95,103,101,116,95,115,112,101,99,117,5, - 0,0,115,42,0,0,0,4,5,8,1,14,1,2,1,10, - 1,8,1,10,1,14,1,12,2,8,1,2,1,10,1,8, - 1,6,1,8,1,8,1,10,5,2,128,12,2,6,1,4, - 1,114,9,0,0,0,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,5,0,0,0,67,0,0, - 0,115,94,0,0,0,124,2,100,1,117,0,114,7,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,20,100,1,83,0,124,4, - 106,3,100,1,117,0,114,45,124,4,106,4,125,5,124,5, - 114,43,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, - 124,4,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,16,0,0,0,114,65,0, - 0,0,114,88,1,0,0,114,163,0,0,0,114,201,0,0, - 0,114,204,0,0,0,114,44,1,0,0,41,6,114,220,0, - 0,0,114,162,0,0,0,114,65,0,0,0,114,224,0,0, - 0,114,209,0,0,0,114,87,1,0,0,32,32,32,32,32, - 32,114,7,0,0,0,114,225,0,0,0,149,5,0,0,115, - 26,0,0,0,8,6,6,1,14,1,8,1,4,1,10,1, - 6,1,4,1,6,3,16,1,4,1,4,2,4,2,114,9, - 0,0,0,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,67,0,0,0,115,42, - 0,0,0,116,0,160,1,100,1,116,2,161,2,1,0,124, - 0,160,3,124,1,124,2,161,2,125,3,124,3,100,2,117, - 0,114,18,100,2,83,0,124,3,106,4,83,0,41,3,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,122,101,80,97,116, - 104,70,105,110,100,101,114,46,102,105,110,100,95,109,111,100, - 117,108,101,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, - 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, - 97,100,78,114,226,0,0,0,114,227,0,0,0,32,32,32, - 32,114,7,0,0,0,114,228,0,0,0,173,5,0,0,115, - 14,0,0,0,6,8,2,2,4,254,12,3,8,1,4,1, - 6,1,114,9,0,0,0,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, - 0,0,0,0,0,0,0,0,0,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,2,1,0,124,2,106,2,124,0,105,0,124,1,164, - 1,142,1,83,0,41,4,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,78,41,3,90,18,105,109,112,111, - 114,116,108,105,98,46,109,101,116,97,100,97,116,97,114,89, - 1,0,0,218,18,102,105,110,100,95,100,105,115,116,114,105, - 98,117,116,105,111,110,115,41,3,114,144,0,0,0,114,145, - 0,0,0,114,89,1,0,0,32,32,32,114,7,0,0,0, - 114,90,1,0,0,189,5,0,0,115,4,0,0,0,12,10, + 110,100,95,108,111,97,100,101,114,40,41,122,53,46,102,105, + 110,100,95,115,112,101,99,40,41,32,110,111,116,32,102,111, + 117,110,100,59,32,102,97,108,108,105,110,103,32,98,97,99, + 107,32,116,111,32,102,105,110,100,95,109,111,100,117,108,101, + 40,41,41,11,114,152,0,0,0,114,158,0,0,0,90,12, + 95,111,98,106,101,99,116,95,110,97,109,101,114,99,0,0, + 0,114,100,0,0,0,114,161,0,0,0,114,160,0,0,0, + 114,228,0,0,0,114,223,0,0,0,114,206,0,0,0,114, + 201,0,0,0,41,7,114,220,0,0,0,114,162,0,0,0, + 114,79,1,0,0,114,165,0,0,0,114,163,0,0,0,114, + 164,0,0,0,114,209,0,0,0,115,7,0,0,0,32,32, + 32,32,32,32,32,114,7,0,0,0,218,16,95,108,101,103, + 97,99,121,95,103,101,116,95,115,112,101,99,97,5,0,0, + 115,26,0,0,0,10,4,16,1,12,2,16,1,16,2,12, + 2,10,1,4,1,8,1,12,1,12,1,6,1,4,1,114, + 9,0,0,0,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,5, + 0,0,0,67,0,0,0,115,166,0,0,0,103,0,125,4, + 124,2,68,0,93,67,125,5,116,0,124,5,116,1,116,2, + 102,2,131,2,115,14,113,4,124,0,160,3,124,5,161,1, + 125,6,124,6,100,1,117,1,114,71,116,4,124,6,100,2, + 131,2,114,35,124,6,160,5,124,1,124,3,161,2,125,7, + 110,6,124,0,160,6,124,1,124,6,161,2,125,7,124,7, + 100,1,117,0,114,46,113,4,124,7,106,7,100,1,117,1, + 114,55,124,7,2,0,1,0,83,0,124,7,106,8,125,8, + 124,8,100,1,117,0,114,66,116,9,100,3,131,1,130,1, + 124,4,160,10,124,8,161,1,1,0,113,4,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,225,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,184,0,0,0,114,109,0,0,0,218,5,98,121, + 116,101,115,114,84,1,0,0,114,152,0,0,0,114,225,0, + 0,0,114,85,1,0,0,114,163,0,0,0,114,201,0,0, + 0,114,142,0,0,0,114,190,0,0,0,114,158,0,0,0, + 114,206,0,0,0,41,9,114,220,0,0,0,114,162,0,0, + 0,114,65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0,114,164,0,0, + 0,115,9,0,0,0,32,32,32,32,32,32,32,32,32,114, + 7,0,0,0,218,9,95,103,101,116,95,115,112,101,99,118, + 5,0,0,115,42,0,0,0,4,5,8,1,14,1,2,1, + 10,1,8,1,10,1,14,1,12,2,8,1,2,1,10,1, + 8,1,6,1,8,1,8,1,10,5,2,128,12,2,6,1, + 4,1,114,9,0,0,0,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,5,0,0,0,67,0, + 0,0,115,94,0,0,0,124,2,100,1,117,0,114,7,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,20,100,1,83,0,124, + 4,106,3,100,1,117,0,114,45,124,4,106,4,125,5,124, + 5,114,43,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,124,4,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,16,0,0,0,114,65, + 0,0,0,114,88,1,0,0,114,163,0,0,0,114,201,0, + 0,0,114,204,0,0,0,114,44,1,0,0,41,6,114,220, + 0,0,0,114,162,0,0,0,114,65,0,0,0,114,224,0, + 0,0,114,209,0,0,0,114,87,1,0,0,115,6,0,0, + 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, + 0,150,5,0,0,115,26,0,0,0,8,6,6,1,14,1, + 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, + 4,2,4,2,114,9,0,0,0,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, + 67,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, + 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, + 4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, + 0,0,0,115,4,0,0,0,32,32,32,32,114,7,0,0, + 0,114,228,0,0,0,174,5,0,0,115,14,0,0,0,6, + 8,2,2,4,254,12,3,8,1,4,1,6,1,114,9,0, + 0,0,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,0,0,0,0,0, + 0,0,0,0,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,2,1,0, + 124,2,106,2,124,0,105,0,124,1,164,1,142,1,83,0, + 41,4,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,78,41,3,90,18,105,109,112,111,114,116,108,105,98, + 46,109,101,116,97,100,97,116,97,114,89,1,0,0,218,18, + 102,105,110,100,95,100,105,115,116,114,105,98,117,116,105,111, + 110,115,41,3,114,144,0,0,0,114,145,0,0,0,114,89, + 1,0,0,115,3,0,0,0,32,32,32,114,7,0,0,0, + 114,90,1,0,0,190,5,0,0,115,4,0,0,0,12,10, 16,1,114,9,0,0,0,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,114,69,0,0,0,114,229,0,0,0, @@ -2362,344 +2397,349 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,151,0,0,0,114,232,0,0,0,114,75,1,0,0, 114,81,1,0,0,114,233,0,0,0,114,84,1,0,0,114, 85,1,0,0,114,88,1,0,0,114,225,0,0,0,114,228, - 0,0,0,114,90,1,0,0,114,12,0,0,0,114,7,0, - 0,0,114,74,1,0,0,47,5,0,0,115,36,0,0,0, - 8,0,4,2,2,2,10,1,2,9,10,1,2,12,10,1, - 2,21,10,1,2,20,12,1,2,31,12,1,2,23,12,1, - 2,15,14,1,114,9,0,0,0,114,74,1,0,0,99,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,6,0,0,0,7, - 0,0,0,115,114,0,0,0,135,5,103,0,125,3,124,2, - 68,0,93,16,92,2,138,5,125,4,124,3,160,0,136,5, - 102,1,100,1,100,2,132,8,124,4,68,0,131,1,161,1, - 1,0,113,5,124,3,124,0,95,1,124,1,112,28,100,3, - 124,0,95,2,116,3,124,0,106,2,131,1,115,44,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,3,0,0,0,51,0,0,0,115,24,0, - 0,0,129,0,124,0,93,7,125,1,124,1,137,2,102,2, - 86,0,1,0,113,2,100,0,83,0,114,69,0,0,0,114, - 12,0,0,0,41,3,114,5,0,0,0,114,41,1,0,0, - 114,163,0,0,0,32,32,128,114,7,0,0,0,114,8,0, - 0,0,218,5,0,0,115,4,0,0,0,2,128,22,0,114, - 9,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,97,0,0, - 0,114,130,0,0,0,78,41,11,114,190,0,0,0,218,8, - 95,108,111,97,100,101,114,115,114,65,0,0,0,114,86,0, - 0,0,114,67,0,0,0,114,19,0,0,0,114,82,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,6,114,143,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,211,0,0,0,114, - 163,0,0,0,32,32,32,32,32,64,114,7,0,0,0,114, - 235,0,0,0,212,5,0,0,115,22,0,0,0,2,128,4, - 4,12,1,26,1,6,1,10,2,10,1,18,1,6,1,8, - 1,12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93,1,0, - 0,114,20,1,0,0,32,114,7,0,0,0,114,75,1,0, - 0,228,5,0,0,114,81,0,0,0,114,9,0,0,0,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,4,0,0,0,67,0, - 0,0,115,54,0,0,0,116,0,160,1,100,1,116,2,161, - 2,1,0,124,0,160,3,124,1,161,1,125,2,124,2,100, - 2,117,0,114,19,100,2,103,0,102,2,83,0,124,2,106, - 4,124,2,106,5,112,25,103,0,102,2,83,0,41,3,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,122,101,70,105,108,101,70,105,110,100, - 101,114,46,102,105,110,100,95,108,111,97,100,101,114,40,41, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, - 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, - 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, - 51,46,49,50,59,32,117,115,101,32,102,105,110,100,95,115, - 112,101,99,40,41,32,105,110,115,116,101,97,100,78,41,6, - 114,99,0,0,0,114,100,0,0,0,114,101,0,0,0,114, - 225,0,0,0,114,163,0,0,0,114,201,0,0,0,41,3, - 114,143,0,0,0,114,162,0,0,0,114,209,0,0,0,32, - 32,32,114,7,0,0,0,114,160,0,0,0,234,5,0,0, - 115,14,0,0,0,6,7,2,2,4,254,10,3,8,1,8, - 1,16,1,114,9,0,0,0,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,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,200,0,0,0,41,1,114,212, - 0,0,0,41,7,114,143,0,0,0,114,210,0,0,0,114, - 162,0,0,0,114,65,0,0,0,90,4,115,109,115,108,114, - 224,0,0,0,114,163,0,0,0,32,32,32,32,32,32,32, - 114,7,0,0,0,114,88,1,0,0,249,5,0,0,115,8, - 0,0,0,10,1,8,1,2,1,6,255,114,9,0,0,0, - 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,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,9,0,116,1,124,0,106,2,112,17,116,3,160, - 4,161,0,131,1,106,5,125,5,110,12,35,0,4,0,116, - 6,121,190,1,0,1,0,1,0,100,4,125,5,89,0,110, - 1,37,0,124,5,124,0,106,7,107,3,114,45,124,0,160, - 8,161,0,1,0,124,5,124,0,95,7,116,9,131,0,114, - 56,124,0,106,10,125,6,124,4,160,11,161,0,125,7,110, - 5,124,0,106,12,125,6,124,4,125,7,124,7,124,6,118, - 0,114,108,116,13,124,0,106,2,124,4,131,2,125,8,124, - 0,106,14,68,0,93,29,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,103,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, - 74,116,17,124,8,131,1,125,3,124,0,106,14,68,0,93, - 55,92,2,125,9,125,10,9,0,116,13,124,0,106,2,124, - 4,124,9,23,0,131,2,125,12,110,12,35,0,4,0,116, - 18,121,189,1,0,1,0,1,0,89,0,1,0,100,6,83, - 0,37,0,116,19,160,20,100,7,124,12,100,3,100,8,166, - 3,1,0,124,7,124,9,23,0,124,6,118,0,114,166,116, - 15,124,12,131,1,114,166,124,0,160,16,124,10,124,1,124, - 12,100,6,124,2,161,5,2,0,1,0,83,0,113,111,124, - 3,114,187,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,119,0,119,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,97,0,0,0,114,45,0,0,0,114,130,0, - 0,0,114,235,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,104,0, - 0,0,114,75,0,0,0,114,65,0,0,0,114,19,0,0, - 0,114,82,0,0,0,114,33,1,0,0,114,76,0,0,0, - 114,93,1,0,0,218,11,95,102,105,108,108,95,99,97,99, - 104,101,114,22,0,0,0,114,96,1,0,0,114,131,0,0, - 0,114,95,1,0,0,114,67,0,0,0,114,92,1,0,0, - 114,80,0,0,0,114,88,1,0,0,114,83,0,0,0,114, - 111,0,0,0,114,158,0,0,0,114,172,0,0,0,114,206, - 0,0,0,114,201,0,0,0,41,14,114,143,0,0,0,114, - 162,0,0,0,114,224,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,192,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,210, - 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,209,0, - 0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 114,7,0,0,0,114,225,0,0,0,254,5,0,0,115,94, - 0,0,0,4,5,14,1,2,1,22,1,2,128,12,1,8, - 1,2,128,10,1,8,1,6,1,6,2,6,1,10,1,6, - 2,4,1,8,2,12,1,14,1,8,1,10,1,8,1,24, - 1,2,255,8,5,14,2,2,1,18,1,2,128,12,1,8, - 1,2,128,16,1,12,1,8,1,10,1,4,1,8,255,2, - 128,4,2,12,1,12,1,8,1,4,1,4,1,2,244,2, - 228,115,31,0,0,0,138,10,21,0,149,9,32,7,193,52, - 8,65,61,2,193,61,7,66,8,9,194,61,1,66,8,9, - 194,62,1,32,7,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,10,0,0,0,67,0,0,0, - 115,194,0,0,0,124,0,106,0,125,1,9,0,116,1,160, - 2,124,1,112,11,116,1,160,3,161,0,161,1,125,2,110, - 15,35,0,4,0,116,4,116,5,116,6,102,3,121,96,1, - 0,1,0,1,0,103,0,125,2,89,0,110,1,37,0,116, - 7,106,8,160,9,100,1,161,1,115,41,116,10,124,2,131, - 1,124,0,95,11,110,37,116,10,131,0,125,3,124,2,68, - 0,93,28,125,4,124,4,160,12,100,2,161,1,92,3,125, - 5,125,6,125,7,124,6,114,67,100,3,160,13,124,5,124, - 7,160,14,161,0,161,2,125,8,110,2,124,5,125,8,124, - 3,160,15,124,8,161,1,1,0,113,46,124,3,124,0,95, - 11,116,7,106,8,160,9,116,16,161,1,114,94,100,4,100, - 5,132,0,124,2,68,0,131,1,124,0,95,17,100,6,83, - 0,100,6,83,0,119,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, - 15,0,0,0,114,97,0,0,0,114,88,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,83, - 0,0,0,115,20,0,0,0,104,0,124,0,93,6,125,1, - 124,1,160,0,161,0,146,2,113,2,83,0,114,12,0,0, - 0,41,1,114,131,0,0,0,41,2,114,5,0,0,0,90, - 2,102,110,32,32,114,7,0,0,0,114,14,0,0,0,78, - 6,0,0,115,2,0,0,0,20,0,114,9,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,19,0,0,0,90,7,108,105,115,116,100,105,114, - 114,82,0,0,0,114,82,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, - 16,0,0,0,114,26,0,0,0,114,27,0,0,0,114,94, - 1,0,0,114,95,1,0,0,114,126,0,0,0,114,89,0, - 0,0,114,131,0,0,0,218,3,97,100,100,114,28,0,0, - 0,114,96,1,0,0,41,9,114,143,0,0,0,114,65,0, - 0,0,90,8,99,111,110,116,101,110,116,115,90,21,108,111, - 119,101,114,95,115,117,102,102,105,120,95,99,111,110,116,101, - 110,116,115,114,67,1,0,0,114,141,0,0,0,114,51,1, - 0,0,114,41,1,0,0,90,8,110,101,119,95,110,97,109, - 101,32,32,32,32,32,32,32,32,32,114,7,0,0,0,114, - 98,1,0,0,49,6,0,0,115,42,0,0,0,6,2,2, - 1,20,1,2,128,18,1,8,3,2,128,12,3,12,1,6, - 7,8,1,16,1,4,1,18,1,4,2,12,1,6,1,12, - 1,20,1,4,255,2,233,115,13,0,0,0,132,9,14,0, - 142,12,28,7,193,32,1,28,7,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,7,0,0,0,115,22,0,0,0,135,0,135,1,136, - 0,136,1,102,2,100,1,100,2,132,8,125,2,124,2,83, - 0,41,4,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,4,0,0,0,19,0,0, - 0,115,36,0,0,0,116,0,124,0,131,1,115,10,116,1, - 100,1,124,0,100,2,141,2,130,1,137,1,124,0,103,1, - 137,2,162,1,82,0,142,0,83,0,41,4,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, - 78,41,2,114,83,0,0,0,114,142,0,0,0,41,3,114, - 65,0,0,0,114,220,0,0,0,114,97,1,0,0,32,128, - 128,114,7,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, - 90,6,0,0,115,6,0,0,0,8,2,12,1,16,1,114, - 9,0,0,0,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,78,114,12,0, - 0,0,41,3,114,220,0,0,0,114,97,1,0,0,114,102, - 1,0,0,96,96,32,114,7,0,0,0,218,9,112,97,116, - 104,95,104,111,111,107,80,6,0,0,115,6,0,0,0,4, - 128,14,10,4,6,114,9,0,0,0,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,3,0,0, - 0,67,0,0,0,114,64,1,0,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,89,0,0,0,114,65,0,0,0,114,20,1,0,0, - 32,114,7,0,0,0,114,65,1,0,0,98,6,0,0,114, - 58,1,0,0,114,9,0,0,0,122,19,70,105,108,101,70, - 105,110,100,101,114,46,95,95,114,101,112,114,95,95,114,69, - 0,0,0,41,15,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,151,0,0,0,114,235,0,0,0,114,75, - 1,0,0,114,166,0,0,0,114,228,0,0,0,114,160,0, - 0,0,114,88,1,0,0,114,225,0,0,0,114,98,1,0, - 0,114,233,0,0,0,114,103,1,0,0,114,65,1,0,0, - 114,12,0,0,0,114,7,0,0,0,114,91,1,0,0,203, - 5,0,0,115,24,0,0,0,8,0,4,2,8,7,8,16, - 4,4,8,2,8,15,10,5,8,51,2,31,10,1,12,17, - 114,9,0,0,0,114,91,1,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, - 146,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,33,124,5,114,18, - 124,5,106,1,125,4,110,15,124,2,124,3,107,2,114,28, - 116,2,124,1,124,2,131,2,125,4,110,5,116,3,124,1, - 124,2,131,2,125,4,124,5,115,42,116,4,124,1,124,2, - 124,4,100,3,141,3,125,5,9,0,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,100,0,83,0,35,0, - 4,0,116,5,121,72,1,0,1,0,1,0,89,0,100,0, - 83,0,37,0,119,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,41, - 1,114,163,0,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,163,0,0,0,114,39,1,0,0,114,32,1, - 0,0,114,212,0,0,0,218,9,69,120,99,101,112,116,105, - 111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0,32,32,32,32, - 32,32,114,7,0,0,0,218,14,95,102,105,120,95,117,112, - 95,109,111,100,117,108,101,104,6,0,0,115,40,0,0,0, - 10,2,10,1,4,1,4,1,8,1,8,1,12,1,10,2, - 4,1,14,1,2,1,8,1,8,1,8,1,12,1,2,128, - 12,1,6,2,2,128,2,254,115,15,0,0,0,171,16,61, - 0,189,7,65,7,7,193,8,1,65,7,7,114,108,1,0, - 0,99,0,0,0,0,0,0,0,0,0,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,102,2,125,1,116, - 5,116,6,102,2,125,2,124,0,124,1,124,2,103,3,83, - 0,41,2,122,95,82,101,116,117,114,110,115,32,97,32,108, - 105,115,116,32,111,102,32,102,105,108,101,45,98,97,115,101, - 100,32,109,111,100,117,108,101,32,108,111,97,100,101,114,115, - 46,10,10,32,32,32,32,69,97,99,104,32,105,116,101,109, - 32,105,115,32,97,32,116,117,112,108,101,32,40,108,111,97, - 100,101,114,44,32,115,117,102,102,105,120,101,115,41,46,10, - 32,32,32,32,78,41,7,114,28,1,0,0,114,186,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,127,0,0,0,114, - 39,1,0,0,114,113,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,32,32,32,114,7,0,0, - 0,114,207,0,0,0,127,6,0,0,115,8,0,0,0,12, - 5,8,1,8,1,10,1,114,9,0,0,0,114,207,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,67,0,0,0,115,8,0,0,0,124,0,97,0,100, - 0,83,0,114,69,0,0,0,41,1,114,158,0,0,0,41, - 1,218,17,95,98,111,111,116,115,116,114,97,112,95,109,111, - 100,117,108,101,32,114,7,0,0,0,218,21,95,115,101,116, + 0,0,0,114,90,1,0,0,114,12,0,0,0,114,9,0, + 0,0,114,7,0,0,0,114,74,1,0,0,48,5,0,0, + 115,36,0,0,0,8,0,4,2,2,2,10,1,2,9,10, + 1,2,12,10,1,2,21,10,1,2,20,12,1,2,31,12, + 1,2,23,12,1,2,15,14,1,114,9,0,0,0,114,74, + 1,0,0,99,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, + 6,0,0,0,7,0,0,0,115,114,0,0,0,135,5,103, + 0,125,3,124,2,68,0,93,16,92,2,138,5,125,4,124, + 3,160,0,136,5,102,1,100,1,100,2,132,8,124,4,68, + 0,131,1,161,1,1,0,113,5,124,3,124,0,95,1,124, + 1,112,28,100,3,124,0,95,2,116,3,124,0,106,2,131, + 1,115,44,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,3,0,0,0,51,0, + 0,0,115,24,0,0,0,129,0,124,0,93,7,125,1,124, + 1,137,2,102,2,86,0,1,0,113,2,100,0,83,0,114, + 69,0,0,0,114,12,0,0,0,41,3,114,5,0,0,0, + 114,41,1,0,0,114,163,0,0,0,115,3,0,0,0,32, + 32,128,114,7,0,0,0,114,8,0,0,0,219,5,0,0, + 115,4,0,0,0,2,128,22,0,114,9,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,97,0,0,0,114,130,0,0,0, + 78,41,11,114,190,0,0,0,218,8,95,108,111,97,100,101, + 114,115,114,65,0,0,0,114,86,0,0,0,114,67,0,0, + 0,114,19,0,0,0,114,82,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, + 6,114,143,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,211,0,0,0,114,163,0,0,0,115,6, + 0,0,0,32,32,32,32,32,64,114,7,0,0,0,114,235, + 0,0,0,213,5,0,0,115,22,0,0,0,2,128,4,4, + 12,1,26,1,6,1,10,2,10,1,18,1,6,1,8,1, + 12,1,114,9,0,0,0,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,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,130,0,0,0,78,41,1,114,93,1,0,0, + 114,20,1,0,0,115,1,0,0,0,32,114,7,0,0,0, + 114,75,1,0,0,229,5,0,0,114,81,0,0,0,114,9, + 0,0,0,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,4,0, + 0,0,67,0,0,0,115,54,0,0,0,116,0,160,1,100, + 1,116,2,161,2,1,0,124,0,160,3,124,1,161,1,125, + 2,124,2,100,2,117,0,114,19,100,2,103,0,102,2,83, + 0,124,2,106,4,124,2,106,5,112,25,103,0,102,2,83, + 0,41,3,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,122,101,70,105,108,101, + 70,105,110,100,101,114,46,102,105,110,100,95,108,111,97,100, + 101,114,40,41,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, + 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, + 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, + 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, + 100,78,41,6,114,99,0,0,0,114,100,0,0,0,114,101, + 0,0,0,114,225,0,0,0,114,163,0,0,0,114,201,0, + 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,209, + 0,0,0,115,3,0,0,0,32,32,32,114,7,0,0,0, + 114,160,0,0,0,235,5,0,0,115,14,0,0,0,6,7, + 2,2,4,254,10,3,8,1,8,1,16,1,114,9,0,0, + 0,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,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,200,0,0,0,41,1,114,212,0,0,0,41,7,114,143, + 0,0,0,114,210,0,0,0,114,162,0,0,0,114,65,0, + 0,0,90,4,115,109,115,108,114,224,0,0,0,114,163,0, + 0,0,115,7,0,0,0,32,32,32,32,32,32,32,114,7, + 0,0,0,114,88,1,0,0,250,5,0,0,115,8,0,0, + 0,10,1,8,1,2,1,6,255,114,9,0,0,0,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,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,9,0,116,1,124,0,106,2,112,17,116,3,160,4,161, + 0,131,1,106,5,125,5,110,12,35,0,4,0,116,6,121, + 190,1,0,1,0,1,0,100,4,125,5,89,0,110,1,37, + 0,124,5,124,0,106,7,107,3,114,45,124,0,160,8,161, + 0,1,0,124,5,124,0,95,7,116,9,131,0,114,56,124, + 0,106,10,125,6,124,4,160,11,161,0,125,7,110,5,124, + 0,106,12,125,6,124,4,125,7,124,7,124,6,118,0,114, + 108,116,13,124,0,106,2,124,4,131,2,125,8,124,0,106, + 14,68,0,93,29,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,103,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,74,116, + 17,124,8,131,1,125,3,124,0,106,14,68,0,93,55,92, + 2,125,9,125,10,9,0,116,13,124,0,106,2,124,4,124, + 9,23,0,131,2,125,12,110,12,35,0,4,0,116,18,121, + 189,1,0,1,0,1,0,89,0,1,0,100,6,83,0,37, + 0,116,19,160,20,100,7,124,12,100,3,100,8,166,3,1, + 0,124,7,124,9,23,0,124,6,118,0,114,166,116,15,124, + 12,131,1,114,166,124,0,160,16,124,10,124,1,124,12,100, + 6,124,2,161,5,2,0,1,0,83,0,113,111,124,3,114, + 187,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,119,0,119,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,97,0,0,0,114,45,0,0,0,114,130,0,0,0, + 114,235,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,104,0,0,0, + 114,75,0,0,0,114,65,0,0,0,114,19,0,0,0,114, + 82,0,0,0,114,33,1,0,0,114,76,0,0,0,114,93, + 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101, + 114,22,0,0,0,114,96,1,0,0,114,131,0,0,0,114, + 95,1,0,0,114,67,0,0,0,114,92,1,0,0,114,80, + 0,0,0,114,88,1,0,0,114,83,0,0,0,114,111,0, + 0,0,114,158,0,0,0,114,172,0,0,0,114,206,0,0, + 0,114,201,0,0,0,41,14,114,143,0,0,0,114,162,0, + 0,0,114,224,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,192,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,210,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,209,0,0,0, + 115,14,0,0,0,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,114,7,0,0,0,114,225,0,0,0,255,5,0, + 0,115,94,0,0,0,4,5,14,1,2,1,22,1,2,128, + 12,1,8,1,2,128,10,1,8,1,6,1,6,2,6,1, + 10,1,6,2,4,1,8,2,12,1,14,1,8,1,10,1, + 8,1,24,1,2,255,8,5,14,2,2,1,18,1,2,128, + 12,1,8,1,2,128,16,1,12,1,8,1,10,1,4,1, + 8,255,2,128,4,2,12,1,12,1,8,1,4,1,4,1, + 2,244,2,228,115,31,0,0,0,138,10,21,0,149,9,32, + 7,193,52,8,65,61,2,193,61,7,66,8,9,194,61,1, + 66,8,9,194,62,1,32,7,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,10,0,0,0,67, + 0,0,0,115,194,0,0,0,124,0,106,0,125,1,9,0, + 116,1,160,2,124,1,112,11,116,1,160,3,161,0,161,1, + 125,2,110,15,35,0,4,0,116,4,116,5,116,6,102,3, + 121,96,1,0,1,0,1,0,103,0,125,2,89,0,110,1, + 37,0,116,7,106,8,160,9,100,1,161,1,115,41,116,10, + 124,2,131,1,124,0,95,11,110,37,116,10,131,0,125,3, + 124,2,68,0,93,28,125,4,124,4,160,12,100,2,161,1, + 92,3,125,5,125,6,125,7,124,6,114,67,100,3,160,13, + 124,5,124,7,160,14,161,0,161,2,125,8,110,2,124,5, + 125,8,124,3,160,15,124,8,161,1,1,0,113,46,124,3, + 124,0,95,11,116,7,106,8,160,9,116,16,161,1,114,94, + 100,4,100,5,132,0,124,2,68,0,131,1,124,0,95,17, + 100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0,114,88,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,83,0,0,0,115,20,0,0,0,104,0,124,0,93, + 6,125,1,124,1,160,0,161,0,146,2,113,2,83,0,114, + 12,0,0,0,41,1,114,131,0,0,0,41,2,114,5,0, + 0,0,90,2,102,110,115,2,0,0,0,32,32,114,7,0, + 0,0,114,14,0,0,0,79,6,0,0,115,2,0,0,0, + 20,0,114,9,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,19,0,0,0,90, + 7,108,105,115,116,100,105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0, + 0,114,27,0,0,0,114,94,1,0,0,114,95,1,0,0, + 114,126,0,0,0,114,89,0,0,0,114,131,0,0,0,218, + 3,97,100,100,114,28,0,0,0,114,96,1,0,0,41,9, + 114,143,0,0,0,114,65,0,0,0,90,8,99,111,110,116, + 101,110,116,115,90,21,108,111,119,101,114,95,115,117,102,102, + 105,120,95,99,111,110,116,101,110,116,115,114,67,1,0,0, + 114,141,0,0,0,114,51,1,0,0,114,41,1,0,0,90, + 8,110,101,119,95,110,97,109,101,115,9,0,0,0,32,32, + 32,32,32,32,32,32,32,114,7,0,0,0,114,98,1,0, + 0,50,6,0,0,115,42,0,0,0,6,2,2,1,20,1, + 2,128,18,1,8,3,2,128,12,3,12,1,6,7,8,1, + 16,1,4,1,18,1,4,2,12,1,6,1,12,1,20,1, + 4,255,2,233,115,13,0,0,0,132,9,14,0,142,12,28, + 7,193,32,1,28,7,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,7, + 0,0,0,115,22,0,0,0,135,0,135,1,136,0,136,1, + 102,2,100,1,100,2,132,8,125,2,124,2,83,0,41,4, + 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,4,0,0,0,19,0,0,0,115,36, + 0,0,0,116,0,124,0,131,1,115,10,116,1,100,1,124, + 0,100,2,141,2,130,1,137,1,124,0,103,1,137,2,162, + 1,82,0,142,0,83,0,41,4,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,78,41,2, + 114,83,0,0,0,114,142,0,0,0,41,3,114,65,0,0, + 0,114,220,0,0,0,114,97,1,0,0,115,3,0,0,0, + 32,128,128,114,7,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,91,6,0,0,115,6,0,0,0,8,2,12,1,16, + 1,114,9,0,0,0,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,78,114, + 12,0,0,0,41,3,114,220,0,0,0,114,97,1,0,0, + 114,102,1,0,0,115,3,0,0,0,96,96,32,114,7,0, + 0,0,218,9,112,97,116,104,95,104,111,111,107,81,6,0, + 0,115,6,0,0,0,4,128,14,10,4,6,114,9,0,0, + 0,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,3,0,0,0,67,0,0,0,114,64,1,0, + 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,89,0,0,0,114,65,0, + 0,0,114,20,1,0,0,115,1,0,0,0,32,114,7,0, + 0,0,114,65,1,0,0,99,6,0,0,114,58,1,0,0, + 114,9,0,0,0,122,19,70,105,108,101,70,105,110,100,101, + 114,46,95,95,114,101,112,114,95,95,114,69,0,0,0,41, + 15,114,149,0,0,0,114,148,0,0,0,114,150,0,0,0, + 114,151,0,0,0,114,235,0,0,0,114,75,1,0,0,114, + 166,0,0,0,114,228,0,0,0,114,160,0,0,0,114,88, + 1,0,0,114,225,0,0,0,114,98,1,0,0,114,233,0, + 0,0,114,103,1,0,0,114,65,1,0,0,114,12,0,0, + 0,114,9,0,0,0,114,7,0,0,0,114,91,1,0,0, + 204,5,0,0,115,24,0,0,0,8,0,4,2,8,7,8, + 16,4,4,8,2,8,15,10,5,8,51,2,31,10,1,12, + 17,114,9,0,0,0,114,91,1,0,0,99,4,0,0,0, + 0,0,0,0,0,0,0,0,8,0,0,0,67,0,0,0, + 115,146,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,33,124,5,114, + 18,124,5,106,1,125,4,110,15,124,2,124,3,107,2,114, + 28,116,2,124,1,124,2,131,2,125,4,110,5,116,3,124, + 1,124,2,131,2,125,4,124,5,115,42,116,4,124,1,124, + 2,124,4,100,3,141,3,125,5,9,0,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,100,0,83,0,35, + 0,4,0,116,5,121,72,1,0,1,0,1,0,89,0,100, + 0,83,0,37,0,119,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, + 41,1,114,163,0,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,163,0,0,0,114,39,1,0,0,114,32, + 1,0,0,114,212,0,0,0,218,9,69,120,99,101,112,116, + 105,111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0,115,6,0, + 0,0,32,32,32,32,32,32,114,7,0,0,0,218,14,95, + 102,105,120,95,117,112,95,109,111,100,117,108,101,105,6,0, + 0,115,40,0,0,0,10,2,10,1,4,1,4,1,8,1, + 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, + 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, + 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, + 7,7,114,108,1,0,0,99,0,0,0,0,0,0,0,0, + 0,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,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, + 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, + 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, + 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, + 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, + 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, + 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, + 120,101,115,41,46,10,32,32,32,32,78,41,7,114,28,1, + 0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,115, + 3,0,0,0,32,32,32,114,7,0,0,0,114,207,0,0, + 0,128,6,0,0,115,8,0,0,0,12,5,8,1,8,1, + 10,1,114,9,0,0,0,114,207,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,67,0,0, + 0,115,8,0,0,0,124,0,97,0,100,0,83,0,114,69, + 0,0,0,41,1,114,158,0,0,0,41,1,218,17,95,98, + 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,115, + 1,0,0,0,32,114,7,0,0,0,218,21,95,115,101,116, 95,98,111,111,116,115,116,114,97,112,95,109,111,100,117,108, - 101,138,6,0,0,115,2,0,0,0,8,2,114,9,0,0, + 101,139,6,0,0,115,2,0,0,0,8,2,114,9,0,0, 0,114,111,1,0,0,99,1,0,0,0,0,0,0,0,0, 0,0,0,4,0,0,0,67,0,0,0,115,50,0,0,0, 116,0,124,0,131,1,1,0,116,1,131,0,125,1,116,2, @@ -2713,56 +2753,57 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,103,1,0,0,218,9,109,101,116,97,95,112,97,116,104, 114,61,0,0,0,114,74,1,0,0,41,2,114,110,1,0, 0,90,17,115,117,112,112,111,114,116,101,100,95,108,111,97, - 100,101,114,115,32,32,114,7,0,0,0,218,8,95,105,110, - 115,116,97,108,108,143,6,0,0,115,8,0,0,0,8,2, - 6,1,20,1,16,1,114,9,0,0,0,114,113,1,0,0, - 41,1,114,87,0,0,0,114,69,0,0,0,41,3,78,78, - 78,41,2,114,0,0,0,0,114,0,0,0,0,41,1,84, - 41,85,114,151,0,0,0,114,158,0,0,0,114,186,0,0, - 0,114,91,0,0,0,114,16,0,0,0,114,99,0,0,0, - 114,183,0,0,0,114,26,0,0,0,114,230,0,0,0,90, - 2,110,116,114,19,0,0,0,114,214,0,0,0,90,5,112, - 111,115,105,120,114,51,0,0,0,218,3,97,108,108,114,59, - 0,0,0,114,136,0,0,0,114,57,0,0,0,114,62,0, - 0,0,90,20,95,112,97,116,104,115,101,112,115,95,119,105, - 116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30,0,0,0,114,22, - 0,0,0,114,37,0,0,0,114,43,0,0,0,114,46,0, - 0,0,114,67,0,0,0,114,73,0,0,0,114,75,0,0, - 0,114,79,0,0,0,114,80,0,0,0,114,83,0,0,0, - 114,86,0,0,0,114,95,0,0,0,218,4,116,121,112,101, - 218,8,95,95,99,111,100,101,95,95,114,185,0,0,0,114, - 35,0,0,0,114,171,0,0,0,114,34,0,0,0,114,40, - 0,0,0,114,7,1,0,0,114,116,0,0,0,114,112,0, - 0,0,114,127,0,0,0,114,61,0,0,0,114,109,1,0, - 0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0,114,135,0,0,0, - 114,137,0,0,0,114,139,0,0,0,114,159,0,0,0,114, - 166,0,0,0,114,175,0,0,0,114,179,0,0,0,114,181, - 0,0,0,114,188,0,0,0,114,193,0,0,0,114,194,0, - 0,0,114,199,0,0,0,218,6,111,98,106,101,99,116,114, - 208,0,0,0,114,212,0,0,0,114,213,0,0,0,114,234, - 0,0,0,114,248,0,0,0,114,10,1,0,0,114,32,1, - 0,0,114,39,1,0,0,114,28,1,0,0,114,44,1,0, - 0,114,70,1,0,0,114,74,1,0,0,114,91,1,0,0, - 114,108,1,0,0,114,207,0,0,0,114,111,1,0,0,114, - 113,1,0,0,114,12,0,0,0,114,7,0,0,0,218,8, - 60,109,111,100,117,108,101,62,1,0,0,0,115,180,0,0, - 0,4,0,4,22,8,3,8,1,8,1,8,1,8,1,10, - 3,4,1,8,1,10,1,8,2,4,3,10,1,6,2,22, - 2,8,1,8,1,10,1,14,1,4,4,4,1,2,1,2, - 1,4,255,8,4,6,16,8,3,8,5,8,5,4,6,10, - 1,8,30,8,6,8,8,8,10,8,9,8,5,4,7,10, - 1,8,8,10,5,10,22,0,127,16,37,12,1,4,2,4, - 1,6,2,4,1,10,1,8,2,6,2,8,2,16,2,8, - 71,8,40,8,19,8,12,8,12,8,31,8,20,8,33,8, - 28,10,24,10,13,10,10,8,11,6,14,4,3,2,1,12, - 255,14,73,14,67,16,30,0,127,14,17,18,50,18,45,18, - 25,14,53,14,63,14,49,0,127,14,29,0,127,10,30,8, - 23,8,11,12,5,114,9,0,0,0, + 100,101,114,115,115,2,0,0,0,32,32,114,7,0,0,0, + 218,8,95,105,110,115,116,97,108,108,144,6,0,0,115,8, + 0,0,0,8,2,6,1,20,1,16,1,114,9,0,0,0, + 114,113,1,0,0,41,1,114,87,0,0,0,114,69,0,0, + 0,41,3,78,78,78,41,2,114,0,0,0,0,114,0,0, + 0,0,41,1,84,41,85,114,151,0,0,0,114,158,0,0, + 0,114,186,0,0,0,114,91,0,0,0,114,16,0,0,0, + 114,99,0,0,0,114,183,0,0,0,114,26,0,0,0,114, + 230,0,0,0,90,2,110,116,114,19,0,0,0,114,214,0, + 0,0,90,5,112,111,115,105,120,114,51,0,0,0,218,3, + 97,108,108,114,59,0,0,0,114,136,0,0,0,114,57,0, + 0,0,114,62,0,0,0,90,20,95,112,97,116,104,115,101, + 112,115,95,119,105,116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30, + 0,0,0,114,22,0,0,0,114,37,0,0,0,114,43,0, + 0,0,114,46,0,0,0,114,67,0,0,0,114,73,0,0, + 0,114,75,0,0,0,114,79,0,0,0,114,80,0,0,0, + 114,83,0,0,0,114,86,0,0,0,114,95,0,0,0,218, + 4,116,121,112,101,218,8,95,95,99,111,100,101,95,95,114, + 185,0,0,0,114,35,0,0,0,114,171,0,0,0,114,34, + 0,0,0,114,40,0,0,0,114,7,1,0,0,114,116,0, + 0,0,114,112,0,0,0,114,127,0,0,0,114,61,0,0, + 0,114,109,1,0,0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0, + 114,135,0,0,0,114,137,0,0,0,114,139,0,0,0,114, + 159,0,0,0,114,166,0,0,0,114,175,0,0,0,114,179, + 0,0,0,114,181,0,0,0,114,188,0,0,0,114,193,0, + 0,0,114,194,0,0,0,114,199,0,0,0,218,6,111,98, + 106,101,99,116,114,208,0,0,0,114,212,0,0,0,114,213, + 0,0,0,114,234,0,0,0,114,248,0,0,0,114,10,1, + 0,0,114,32,1,0,0,114,39,1,0,0,114,28,1,0, + 0,114,44,1,0,0,114,70,1,0,0,114,74,1,0,0, + 114,91,1,0,0,114,108,1,0,0,114,207,0,0,0,114, + 111,1,0,0,114,113,1,0,0,114,12,0,0,0,114,9, + 0,0,0,114,7,0,0,0,218,8,60,109,111,100,117,108, + 101,62,1,0,0,0,115,180,0,0,0,4,0,4,22,8, + 3,8,1,8,1,8,1,8,1,10,3,4,1,8,1,10, + 1,8,2,4,3,10,1,6,2,22,2,8,1,8,1,10, + 1,14,1,4,4,4,1,2,1,2,1,4,255,8,4,6, + 16,8,3,8,5,8,5,4,6,10,1,8,30,8,6,8, + 8,8,10,8,9,8,5,4,7,10,1,8,8,10,5,10, + 22,0,127,16,38,12,1,4,2,4,1,6,2,4,1,10, + 1,8,2,6,2,8,2,16,2,8,71,8,40,8,19,8, + 12,8,12,8,31,8,20,8,33,8,28,10,24,10,13,10, + 10,8,11,6,14,4,3,2,1,12,255,14,73,14,67,16, + 30,0,127,14,17,18,50,18,45,18,25,14,53,14,63,14, + 49,0,127,14,29,0,127,10,30,8,23,8,11,12,5,114, + 9,0,0,0, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 63084b7e57d251..34d581d29912c3 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -70,400 +70,119 @@ const unsigned char _Py_M__zipimport[] = { 0,41,2,114,3,0,0,0,78,41,3,218,8,95,95,110, 97,109,101,95,95,218,10,95,95,109,111,100,117,108,101,95, 95,218,12,95,95,113,117,97,108,110,97,109,101,95,95,169, - 0,250,18,60,102,114,111,122,101,110,32,122,105,112,105,109, - 112,111,114,116,62,114,3,0,0,0,34,0,0,0,115,4, - 0,0,0,8,0,4,1,243,0,0,0,0,233,22,0,0, - 0,115,4,0,0,0,80,75,5,6,105,255,255,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 64,0,0,0,115,126,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,100,3,132,0,90,4,100,29,100, - 5,100,6,132,1,90,5,100,29,100,7,100,8,132,1,90, - 6,100,29,100,9,100,10,132,1,90,7,100,11,100,12,132, - 0,90,8,100,13,100,14,132,0,90,9,100,15,100,16,132, - 0,90,10,100,17,100,18,132,0,90,11,100,19,100,20,132, - 0,90,12,100,21,100,22,132,0,90,13,100,23,100,24,132, - 0,90,14,100,25,100,26,132,0,90,15,100,27,100,28,132, - 0,90,16,100,4,83,0,41,30,114,4,0,0,0,97,255, - 1,0,0,122,105,112,105,109,112,111,114,116,101,114,40,97, - 114,99,104,105,118,101,112,97,116,104,41,32,45,62,32,122, - 105,112,105,109,112,111,114,116,101,114,32,111,98,106,101,99, - 116,10,10,32,32,32,32,67,114,101,97,116,101,32,97,32, - 110,101,119,32,122,105,112,105,109,112,111,114,116,101,114,32, - 105,110,115,116,97,110,99,101,46,32,39,97,114,99,104,105, - 118,101,112,97,116,104,39,32,109,117,115,116,32,98,101,32, - 97,32,112,97,116,104,32,116,111,10,32,32,32,32,97,32, - 122,105,112,102,105,108,101,44,32,111,114,32,116,111,32,97, - 32,115,112,101,99,105,102,105,99,32,112,97,116,104,32,105, - 110,115,105,100,101,32,97,32,122,105,112,102,105,108,101,46, - 32,70,111,114,32,101,120,97,109,112,108,101,44,32,105,116, - 32,99,97,110,32,98,101,10,32,32,32,32,39,47,116,109, - 112,47,109,121,105,109,112,111,114,116,46,122,105,112,39,44, - 32,111,114,32,39,47,116,109,112,47,109,121,105,109,112,111, - 114,116,46,122,105,112,47,109,121,100,105,114,101,99,116,111, - 114,121,39,44,32,105,102,32,109,121,100,105,114,101,99,116, - 111,114,121,32,105,115,32,97,10,32,32,32,32,118,97,108, - 105,100,32,100,105,114,101,99,116,111,114,121,32,105,110,115, - 105,100,101,32,116,104,101,32,97,114,99,104,105,118,101,46, - 10,10,32,32,32,32,39,90,105,112,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,39,97,114,99,104,105,118,101,112,97,116,104,39, - 32,100,111,101,115,110,39,116,32,112,111,105,110,116,32,116, - 111,32,97,32,118,97,108,105,100,32,90,105,112,10,32,32, - 32,32,97,114,99,104,105,118,101,46,10,10,32,32,32,32, - 84,104,101,32,39,97,114,99,104,105,118,101,39,32,97,116, - 116,114,105,98,117,116,101,32,111,102,32,122,105,112,105,109, - 112,111,114,116,101,114,32,111,98,106,101,99,116,115,32,99, - 111,110,116,97,105,110,115,32,116,104,101,32,110,97,109,101, - 32,111,102,32,116,104,101,10,32,32,32,32,122,105,112,102, - 105,108,101,32,116,97,114,103,101,116,101,100,46,10,32,32, - 32,32,99,2,0,0,0,0,0,0,0,0,0,0,0,9, - 0,0,0,67,0,0,0,115,40,1,0,0,116,0,124,1, - 116,1,131,2,115,14,100,1,100,0,108,2,125,2,124,2, - 160,3,124,1,161,1,125,1,124,1,115,22,116,4,100,2, - 124,1,100,3,141,2,130,1,116,5,114,30,124,1,160,6, - 116,5,116,7,161,2,125,1,103,0,125,3,9,0,9,0, - 116,8,160,9,124,1,161,1,125,4,110,36,35,0,4,0, - 116,10,116,11,102,2,121,147,1,0,1,0,1,0,116,8, - 160,12,124,1,161,1,92,2,125,5,125,6,124,5,124,1, - 107,2,114,66,116,4,100,5,124,1,100,3,141,2,130,1, - 124,5,125,1,124,3,160,13,124,6,161,1,1,0,89,0, - 110,15,37,0,124,4,106,14,100,6,64,0,100,7,107,3, - 114,89,116,4,100,5,124,1,100,3,141,2,130,1,113,91, - 113,33,9,0,116,15,124,1,25,0,125,7,110,18,35,0, - 4,0,116,16,121,146,1,0,1,0,1,0,116,17,124,1, - 131,1,125,7,124,7,116,15,124,1,60,0,89,0,110,1, - 37,0,124,7,124,0,95,18,124,1,124,0,95,19,116,8, - 106,20,124,3,100,0,100,0,100,8,133,3,25,0,142,0, - 124,0,95,21,124,0,106,21,114,144,124,0,4,0,106,21, - 116,7,55,0,2,0,95,21,100,0,83,0,100,0,83,0, - 119,0,119,0,41,9,78,114,0,0,0,0,122,21,97,114, - 99,104,105,118,101,32,112,97,116,104,32,105,115,32,101,109, - 112,116,121,169,1,218,4,112,97,116,104,84,122,14,110,111, - 116,32,97,32,90,105,112,32,102,105,108,101,105,0,240,0, - 0,105,0,128,0,0,233,255,255,255,255,41,22,218,10,105, - 115,105,110,115,116,97,110,99,101,218,3,115,116,114,218,2, - 111,115,90,8,102,115,100,101,99,111,100,101,114,3,0,0, - 0,218,12,97,108,116,95,112,97,116,104,95,115,101,112,218, - 7,114,101,112,108,97,99,101,218,8,112,97,116,104,95,115, - 101,112,218,19,95,98,111,111,116,115,116,114,97,112,95,101, - 120,116,101,114,110,97,108,90,10,95,112,97,116,104,95,115, - 116,97,116,218,7,79,83,69,114,114,111,114,218,10,86,97, - 108,117,101,69,114,114,111,114,90,11,95,112,97,116,104,95, - 115,112,108,105,116,218,6,97,112,112,101,110,100,90,7,115, - 116,95,109,111,100,101,218,20,95,122,105,112,95,100,105,114, - 101,99,116,111,114,121,95,99,97,99,104,101,218,8,75,101, - 121,69,114,114,111,114,218,15,95,114,101,97,100,95,100,105, - 114,101,99,116,111,114,121,218,6,95,102,105,108,101,115,218, - 7,97,114,99,104,105,118,101,218,10,95,112,97,116,104,95, - 106,111,105,110,218,6,112,114,101,102,105,120,41,8,218,4, - 115,101,108,102,114,14,0,0,0,114,18,0,0,0,114,32, - 0,0,0,90,2,115,116,90,7,100,105,114,110,97,109,101, - 90,8,98,97,115,101,110,97,109,101,218,5,102,105,108,101, - 115,32,32,32,32,32,32,32,32,114,10,0,0,0,218,8, - 95,95,105,110,105,116,95,95,64,0,0,0,115,76,0,0, - 0,10,1,8,1,10,1,4,1,12,1,4,1,12,1,4, - 2,2,1,2,1,12,1,2,128,16,1,14,3,8,1,12, - 1,4,1,14,1,2,128,14,3,12,2,2,1,2,240,2, - 18,10,1,2,128,12,1,8,1,12,1,2,128,6,1,6, - 1,22,2,6,1,18,1,4,255,2,249,2,239,115,33,0, - 0,0,162,5,40,0,168,33,65,11,7,193,28,4,65,33, - 0,193,33,15,65,50,7,194,18,1,65,50,7,194,19,1, - 65,11,7,122,20,122,105,112,105,109,112,111,114,116,101,114, - 46,95,95,105,110,105,116,95,95,78,99,3,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 90,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, - 116,3,124,0,124,1,131,2,125,3,124,3,100,2,117,1, - 114,19,124,0,103,0,102,2,83,0,116,4,124,0,124,1, - 131,2,125,4,116,5,124,0,124,4,131,2,114,41,100,2, - 124,0,106,6,155,0,116,7,155,0,124,4,155,0,157,3, - 103,1,102,2,83,0,100,2,103,0,102,2,83,0,41,3, - 97,47,2,0,0,102,105,110,100,95,108,111,97,100,101,114, - 40,102,117,108,108,110,97,109,101,44,32,112,97,116,104,61, - 78,111,110,101,41,32,45,62,32,115,101,108,102,44,32,115, - 116,114,32,111,114,32,78,111,110,101,46,10,10,32,32,32, - 32,32,32,32,32,83,101,97,114,99,104,32,102,111,114,32, - 97,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, - 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, - 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, - 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, - 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, - 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, - 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, - 115,32,116,104,101,32,122,105,112,105,109,112,111,114,116,101, - 114,10,32,32,32,32,32,32,32,32,105,110,115,116,97,110, - 99,101,32,105,116,115,101,108,102,32,105,102,32,116,104,101, - 32,109,111,100,117,108,101,32,119,97,115,32,102,111,117,110, - 100,44,32,97,32,115,116,114,105,110,103,32,99,111,110,116, - 97,105,110,105,110,103,32,116,104,101,10,32,32,32,32,32, - 32,32,32,102,117,108,108,32,112,97,116,104,32,110,97,109, - 101,32,105,102,32,105,116,39,115,32,112,111,115,115,105,98, - 108,121,32,97,32,112,111,114,116,105,111,110,32,111,102,32, - 97,32,110,97,109,101,115,112,97,99,101,32,112,97,99,107, - 97,103,101,44,10,32,32,32,32,32,32,32,32,111,114,32, - 78,111,110,101,32,111,116,104,101,114,119,105,115,101,46,32, - 84,104,101,32,111,112,116,105,111,110,97,108,32,39,112,97, - 116,104,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 105,103,110,111,114,101,100,32,45,45,32,105,116,39,115,10, - 32,32,32,32,32,32,32,32,116,104,101,114,101,32,102,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,105,109,112,111,114,116,101, - 114,32,112,114,111,116,111,99,111,108,46,10,10,32,32,32, - 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, - 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, - 48,46,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,32,32,32,32, - 32,32,32,32,122,102,122,105,112,105,109,112,111,114,116,101, - 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, - 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, - 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, - 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,78,41,8,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,16,95,103,101,116,95,109,111,100,117,108, - 101,95,105,110,102,111,218,16,95,103,101,116,95,109,111,100, - 117,108,101,95,112,97,116,104,218,7,95,105,115,95,100,105, - 114,114,30,0,0,0,114,21,0,0,0,41,5,114,33,0, - 0,0,218,8,102,117,108,108,110,97,109,101,114,14,0,0, - 0,218,2,109,105,218,7,109,111,100,112,97,116,104,32,32, - 32,32,32,114,10,0,0,0,218,11,102,105,110,100,95,108, - 111,97,100,101,114,110,0,0,0,115,20,0,0,0,6,12, - 2,2,4,254,10,3,8,1,8,2,10,7,10,1,24,4, - 8,2,114,11,0,0,0,122,23,122,105,112,105,109,112,111, - 114,116,101,114,46,102,105,110,100,95,108,111,97,100,101,114, - 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,67,0,0,0,115,28,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, - 100,2,25,0,83,0,41,4,97,203,1,0,0,102,105,110, - 100,95,109,111,100,117,108,101,40,102,117,108,108,110,97,109, - 101,44,32,112,97,116,104,61,78,111,110,101,41,32,45,62, - 32,115,101,108,102,32,111,114,32,78,111,110,101,46,10,10, - 32,32,32,32,32,32,32,32,83,101,97,114,99,104,32,102, - 111,114,32,97,32,109,111,100,117,108,101,32,115,112,101,99, - 105,102,105,101,100,32,98,121,32,39,102,117,108,108,110,97, - 109,101,39,46,32,39,102,117,108,108,110,97,109,101,39,32, - 109,117,115,116,32,98,101,32,116,104,101,10,32,32,32,32, - 32,32,32,32,102,117,108,108,121,32,113,117,97,108,105,102, - 105,101,100,32,40,100,111,116,116,101,100,41,32,109,111,100, - 117,108,101,32,110,97,109,101,46,32,73,116,32,114,101,116, - 117,114,110,115,32,116,104,101,32,122,105,112,105,109,112,111, - 114,116,101,114,10,32,32,32,32,32,32,32,32,105,110,115, - 116,97,110,99,101,32,105,116,115,101,108,102,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,119,97,115,32,102, - 111,117,110,100,44,32,111,114,32,78,111,110,101,32,105,102, - 32,105,116,32,119,97,115,110,39,116,46,10,32,32,32,32, - 32,32,32,32,84,104,101,32,111,112,116,105,111,110,97,108, - 32,39,112,97,116,104,39,32,97,114,103,117,109,101,110,116, - 32,105,115,32,105,103,110,111,114,101,100,32,45,45,32,105, - 116,39,115,32,116,104,101,114,101,32,102,111,114,32,99,111, - 109,112,97,116,105,98,105,108,105,116,121,10,32,32,32,32, - 32,32,32,32,119,105,116,104,32,116,104,101,32,105,109,112, - 111,114,116,101,114,32,112,114,111,116,111,99,111,108,46,10, - 10,32,32,32,32,32,32,32,32,68,101,112,114,101,99,97, - 116,101,100,32,115,105,110,99,101,32,80,121,116,104,111,110, - 32,51,46,49,48,46,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, - 32,32,32,32,32,32,32,32,122,102,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,59,32,117,115,101,32,102,105,110, - 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, - 114,0,0,0,0,78,41,4,114,36,0,0,0,114,37,0, - 0,0,114,38,0,0,0,114,45,0,0,0,41,3,114,33, - 0,0,0,114,42,0,0,0,114,14,0,0,0,32,32,32, - 114,10,0,0,0,218,11,102,105,110,100,95,109,111,100,117, - 108,101,147,0,0,0,115,8,0,0,0,6,11,2,2,4, - 254,16,3,114,11,0,0,0,122,23,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,99,3,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,67,0,0,0,115,108,0,0,0,116,0,124,0,124, - 1,131,2,125,3,124,3,100,1,117,1,114,17,116,1,160, - 2,124,1,124,0,124,3,100,2,166,3,83,0,116,3,124, - 0,124,1,131,2,125,4,116,4,124,0,124,4,131,2,114, - 52,124,0,106,5,155,0,116,6,155,0,124,4,155,0,157, - 3,125,5,116,1,160,7,124,1,100,1,100,3,100,4,166, - 3,125,6,124,6,106,8,160,9,124,5,161,1,1,0,124, - 6,83,0,100,1,83,0,41,5,122,107,67,114,101,97,116, - 101,32,97,32,77,111,100,117,108,101,83,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,78,111,110,101,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,99,97,110, - 110,111,116,32,98,101,32,102,111,117,110,100,46,10,32,32, - 32,32,32,32,32,32,78,41,1,218,10,105,115,95,112,97, - 99,107,97,103,101,84,41,3,218,4,110,97,109,101,90,6, - 108,111,97,100,101,114,114,47,0,0,0,41,10,114,39,0, - 0,0,218,10,95,98,111,111,116,115,116,114,97,112,90,16, - 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, - 114,40,0,0,0,114,41,0,0,0,114,30,0,0,0,114, - 21,0,0,0,90,10,77,111,100,117,108,101,83,112,101,99, - 90,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,114,25,0,0, - 0,41,7,114,33,0,0,0,114,42,0,0,0,90,6,116, - 97,114,103,101,116,90,11,109,111,100,117,108,101,95,105,110, - 102,111,114,44,0,0,0,114,14,0,0,0,90,4,115,112, - 101,99,32,32,32,32,32,32,32,114,10,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,163,0,0,0,115,24,0, - 0,0,10,5,8,1,16,1,10,7,10,1,18,4,8,1, - 2,1,6,255,12,2,4,1,4,2,114,11,0,0,0,122, - 21,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, - 100,95,115,112,101,99,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,67,0,0,0,115,20,0,0,0, - 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, - 124,2,83,0,41,2,122,166,103,101,116,95,99,111,100,101, - 40,102,117,108,108,110,97,109,101,41,32,45,62,32,99,111, - 100,101,32,111,98,106,101,99,116,46,10,10,32,32,32,32, - 32,32,32,32,82,101,116,117,114,110,32,116,104,101,32,99, - 111,100,101,32,111,98,106,101,99,116,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,32,82,97,105,115,101,32,90,105,112,73,109, - 112,111,114,116,69,114,114,111,114,10,32,32,32,32,32,32, - 32,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, - 99,111,117,108,100,110,39,116,32,98,101,32,105,109,112,111, - 114,116,101,100,46,10,32,32,32,32,32,32,32,32,78,169, - 1,218,16,95,103,101,116,95,109,111,100,117,108,101,95,99, - 111,100,101,169,5,114,33,0,0,0,114,42,0,0,0,218, - 4,99,111,100,101,218,9,105,115,112,97,99,107,97,103,101, - 114,44,0,0,0,32,32,32,32,32,114,10,0,0,0,218, - 8,103,101,116,95,99,111,100,101,190,0,0,0,115,4,0, - 0,0,16,6,4,1,114,11,0,0,0,122,20,122,105,112, - 105,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,67,0,0,0,115,114,0,0,0,116,0,114,8,124, - 1,160,1,116,0,116,2,161,2,125,1,124,1,125,2,124, - 1,160,3,124,0,106,4,116,2,23,0,161,1,114,29,124, - 1,116,5,124,0,106,4,116,2,23,0,131,1,100,1,133, - 2,25,0,125,2,9,0,124,0,106,6,124,2,25,0,125, - 3,110,14,35,0,4,0,116,7,121,56,1,0,1,0,1, - 0,116,8,100,2,100,3,124,2,131,3,130,1,37,0,116, - 9,124,0,106,4,124,3,131,2,83,0,119,0,41,4,122, - 154,103,101,116,95,100,97,116,97,40,112,97,116,104,110,97, - 109,101,41,32,45,62,32,115,116,114,105,110,103,32,119,105, - 116,104,32,102,105,108,101,32,100,97,116,97,46,10,10,32, - 32,32,32,32,32,32,32,82,101,116,117,114,110,32,116,104, - 101,32,100,97,116,97,32,97,115,115,111,99,105,97,116,101, - 100,32,119,105,116,104,32,39,112,97,116,104,110,97,109,101, - 39,46,32,82,97,105,115,101,32,79,83,69,114,114,111,114, - 32,105,102,10,32,32,32,32,32,32,32,32,116,104,101,32, - 102,105,108,101,32,119,97,115,110,39,116,32,102,111,117,110, - 100,46,10,32,32,32,32,32,32,32,32,78,114,0,0,0, - 0,218,0,41,10,114,19,0,0,0,114,20,0,0,0,114, - 21,0,0,0,218,10,115,116,97,114,116,115,119,105,116,104, - 114,30,0,0,0,218,3,108,101,110,114,29,0,0,0,114, - 27,0,0,0,114,23,0,0,0,218,9,95,103,101,116,95, - 100,97,116,97,41,4,114,33,0,0,0,218,8,112,97,116, - 104,110,97,109,101,90,3,107,101,121,218,9,116,111,99,95, - 101,110,116,114,121,32,32,32,32,114,10,0,0,0,218,8, - 103,101,116,95,100,97,116,97,200,0,0,0,115,26,0,0, - 0,4,6,12,1,4,2,16,1,22,1,2,2,12,1,2, - 128,12,1,12,1,2,128,12,1,2,254,115,12,0,0,0, - 158,5,36,0,164,13,49,7,184,1,49,7,122,20,122,105, - 112,105,109,112,111,114,116,101,114,46,103,101,116,95,100,97, - 116,97,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,115,20,0,0,0,116,0,124,0, - 124,1,131,2,92,3,125,2,125,3,125,4,124,4,83,0, - 41,2,122,165,103,101,116,95,102,105,108,101,110,97,109,101, - 40,102,117,108,108,110,97,109,101,41,32,45,62,32,102,105, - 108,101,110,97,109,101,32,115,116,114,105,110,103,46,10,10, - 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, - 104,101,32,102,105,108,101,110,97,109,101,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,111,114,32,114,97,105,115,101,32,90,105, - 112,73,109,112,111,114,116,69,114,114,111,114,10,32,32,32, - 32,32,32,32,32,105,102,32,105,116,32,99,111,117,108,100, - 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, - 10,32,32,32,32,32,32,32,32,78,114,51,0,0,0,114, - 53,0,0,0,32,32,32,32,32,114,10,0,0,0,218,12, - 103,101,116,95,102,105,108,101,110,97,109,101,221,0,0,0, - 115,4,0,0,0,16,8,4,1,114,11,0,0,0,122,24, - 122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115,128,0, - 0,0,116,0,124,0,124,1,131,2,125,2,124,2,100,1, - 117,0,114,18,116,1,100,2,124,1,155,2,157,2,124,1, - 100,3,141,2,130,1,116,2,124,0,124,1,131,2,125,3, - 124,2,114,32,116,3,160,4,124,3,100,4,161,2,125,4, - 110,5,124,3,155,0,100,5,157,2,125,4,9,0,124,0, - 106,5,124,4,25,0,125,5,110,11,35,0,4,0,116,6, - 121,63,1,0,1,0,1,0,89,0,100,1,83,0,37,0, - 116,7,124,0,106,8,124,5,131,2,160,9,161,0,83,0, - 119,0,41,6,122,253,103,101,116,95,115,111,117,114,99,101, - 40,102,117,108,108,110,97,109,101,41,32,45,62,32,115,111, - 117,114,99,101,32,115,116,114,105,110,103,46,10,10,32,32, - 32,32,32,32,32,32,82,101,116,117,114,110,32,116,104,101, - 32,115,111,117,114,99,101,32,99,111,100,101,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,32,82,97,105,115,101,32,90,105,112, - 73,109,112,111,114,116,69,114,114,111,114,10,32,32,32,32, - 32,32,32,32,105,102,32,116,104,101,32,109,111,100,117,108, - 101,32,99,111,117,108,100,110,39,116,32,98,101,32,102,111, - 117,110,100,44,32,114,101,116,117,114,110,32,78,111,110,101, - 32,105,102,32,116,104,101,32,97,114,99,104,105,118,101,32, - 100,111,101,115,10,32,32,32,32,32,32,32,32,99,111,110, - 116,97,105,110,32,116,104,101,32,109,111,100,117,108,101,44, - 32,98,117,116,32,104,97,115,32,110,111,32,115,111,117,114, - 99,101,32,102,111,114,32,105,116,46,10,32,32,32,32,32, - 32,32,32,78,250,18,99,97,110,39,116,32,102,105,110,100, - 32,109,111,100,117,108,101,32,169,1,114,48,0,0,0,250, - 11,95,95,105,110,105,116,95,95,46,112,121,250,3,46,112, - 121,41,10,114,39,0,0,0,114,3,0,0,0,114,40,0, - 0,0,114,22,0,0,0,114,31,0,0,0,114,29,0,0, - 0,114,27,0,0,0,114,60,0,0,0,114,30,0,0,0, - 218,6,100,101,99,111,100,101,41,6,114,33,0,0,0,114, - 42,0,0,0,114,43,0,0,0,114,14,0,0,0,218,8, - 102,117,108,108,112,97,116,104,114,62,0,0,0,32,32,32, - 32,32,32,114,10,0,0,0,218,10,103,101,116,95,115,111, - 117,114,99,101,233,0,0,0,115,30,0,0,0,10,7,8, - 1,18,1,10,2,4,1,14,1,10,2,2,2,12,1,2, - 128,12,1,6,2,2,128,16,1,2,253,115,12,0,0,0, - 166,5,44,0,172,7,54,7,191,1,54,7,122,22,122,105, - 112,105,109,112,111,114,116,101,114,46,103,101,116,95,115,111, - 117,114,99,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,40,0,0,0,116,0, - 124,0,124,1,131,2,125,2,124,2,100,1,117,0,114,18, - 116,1,100,2,124,1,155,2,157,2,124,1,100,3,141,2, - 130,1,124,2,83,0,41,4,122,171,105,115,95,112,97,99, - 107,97,103,101,40,102,117,108,108,110,97,109,101,41,32,45, - 62,32,98,111,111,108,46,10,10,32,32,32,32,32,32,32, - 32,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,115,112,101,99,105, - 102,105,101,100,32,98,121,32,102,117,108,108,110,97,109,101, - 32,105,115,32,97,32,112,97,99,107,97,103,101,46,10,32, - 32,32,32,32,32,32,32,82,97,105,115,101,32,90,105,112, - 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,116, - 104,101,32,109,111,100,117,108,101,32,99,111,117,108,100,110, - 39,116,32,98,101,32,102,111,117,110,100,46,10,32,32,32, - 32,32,32,32,32,78,114,65,0,0,0,114,66,0,0,0, - 41,2,114,39,0,0,0,114,3,0,0,0,41,3,114,33, - 0,0,0,114,42,0,0,0,114,43,0,0,0,32,32,32, - 114,10,0,0,0,114,47,0,0,0,3,1,0,0,115,8, - 0,0,0,10,6,8,1,18,1,4,1,114,11,0,0,0, - 122,22,122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115,0,1, - 0,0,100,1,125,2,116,0,160,1,124,2,116,2,161,2, - 1,0,116,3,124,0,124,1,131,2,92,3,125,3,125,4, - 125,5,116,4,106,5,160,6,124,1,161,1,125,6,124,6, - 100,2,117,0,115,31,116,7,124,6,116,8,131,2,115,40, - 116,8,124,1,131,1,125,6,124,6,116,4,106,5,124,1, - 60,0,124,0,124,6,95,9,9,0,124,4,114,62,116,10, - 124,0,124,1,131,2,125,7,116,11,160,12,124,0,106,13, - 124,7,161,2,125,8,124,8,103,1,124,6,95,14,116,15, - 124,6,100,3,131,2,115,70,116,16,124,6,95,16,116,11, - 160,17,124,6,106,18,124,1,124,5,161,3,1,0,116,19, - 124,3,124,6,106,18,131,2,1,0,110,10,35,0,1,0, - 1,0,1,0,116,4,106,5,124,1,61,0,130,0,37,0, - 9,0,116,4,106,5,124,1,25,0,125,6,110,16,35,0, - 4,0,116,20,121,127,1,0,1,0,1,0,116,21,100,4, - 124,1,155,2,100,5,157,3,131,1,130,1,37,0,116,22, - 160,23,100,6,124,1,124,5,161,3,1,0,124,6,83,0, - 119,0,41,7,97,64,1,0,0,108,111,97,100,95,109,111, - 100,117,108,101,40,102,117,108,108,110,97,109,101,41,32,45, - 62,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,76,111,97,100,32,116,104,101,32,109,111,100,117, + 0,243,0,0,0,0,250,18,60,102,114,111,122,101,110,32, + 122,105,112,105,109,112,111,114,116,62,114,3,0,0,0,34, + 0,0,0,115,4,0,0,0,8,0,4,1,114,10,0,0, + 0,233,22,0,0,0,115,4,0,0,0,80,75,5,6,105, + 255,255,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,64,0,0,0,115,126,0,0,0,101,0, + 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, + 90,4,100,29,100,5,100,6,132,1,90,5,100,29,100,7, + 100,8,132,1,90,6,100,29,100,9,100,10,132,1,90,7, + 100,11,100,12,132,0,90,8,100,13,100,14,132,0,90,9, + 100,15,100,16,132,0,90,10,100,17,100,18,132,0,90,11, + 100,19,100,20,132,0,90,12,100,21,100,22,132,0,90,13, + 100,23,100,24,132,0,90,14,100,25,100,26,132,0,90,15, + 100,27,100,28,132,0,90,16,100,4,83,0,41,30,114,4, + 0,0,0,97,255,1,0,0,122,105,112,105,109,112,111,114, + 116,101,114,40,97,114,99,104,105,118,101,112,97,116,104,41, + 32,45,62,32,122,105,112,105,109,112,111,114,116,101,114,32, + 111,98,106,101,99,116,10,10,32,32,32,32,67,114,101,97, + 116,101,32,97,32,110,101,119,32,122,105,112,105,109,112,111, + 114,116,101,114,32,105,110,115,116,97,110,99,101,46,32,39, + 97,114,99,104,105,118,101,112,97,116,104,39,32,109,117,115, + 116,32,98,101,32,97,32,112,97,116,104,32,116,111,10,32, + 32,32,32,97,32,122,105,112,102,105,108,101,44,32,111,114, + 32,116,111,32,97,32,115,112,101,99,105,102,105,99,32,112, + 97,116,104,32,105,110,115,105,100,101,32,97,32,122,105,112, + 102,105,108,101,46,32,70,111,114,32,101,120,97,109,112,108, + 101,44,32,105,116,32,99,97,110,32,98,101,10,32,32,32, + 32,39,47,116,109,112,47,109,121,105,109,112,111,114,116,46, + 122,105,112,39,44,32,111,114,32,39,47,116,109,112,47,109, + 121,105,109,112,111,114,116,46,122,105,112,47,109,121,100,105, + 114,101,99,116,111,114,121,39,44,32,105,102,32,109,121,100, + 105,114,101,99,116,111,114,121,32,105,115,32,97,10,32,32, + 32,32,118,97,108,105,100,32,100,105,114,101,99,116,111,114, + 121,32,105,110,115,105,100,101,32,116,104,101,32,97,114,99, + 104,105,118,101,46,10,10,32,32,32,32,39,90,105,112,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,39,97,114,99,104,105,118,101, + 112,97,116,104,39,32,100,111,101,115,110,39,116,32,112,111, + 105,110,116,32,116,111,32,97,32,118,97,108,105,100,32,90, + 105,112,10,32,32,32,32,97,114,99,104,105,118,101,46,10, + 10,32,32,32,32,84,104,101,32,39,97,114,99,104,105,118, + 101,39,32,97,116,116,114,105,98,117,116,101,32,111,102,32, + 122,105,112,105,109,112,111,114,116,101,114,32,111,98,106,101, + 99,116,115,32,99,111,110,116,97,105,110,115,32,116,104,101, + 32,110,97,109,101,32,111,102,32,116,104,101,10,32,32,32, + 32,122,105,112,102,105,108,101,32,116,97,114,103,101,116,101, + 100,46,10,32,32,32,32,99,2,0,0,0,0,0,0,0, + 0,0,0,0,9,0,0,0,67,0,0,0,115,40,1,0, + 0,116,0,124,1,116,1,131,2,115,14,100,1,100,0,108, + 2,125,2,124,2,160,3,124,1,161,1,125,1,124,1,115, + 22,116,4,100,2,124,1,100,3,141,2,130,1,116,5,114, + 30,124,1,160,6,116,5,116,7,161,2,125,1,103,0,125, + 3,9,0,9,0,116,8,160,9,124,1,161,1,125,4,110, + 36,35,0,4,0,116,10,116,11,102,2,121,147,1,0,1, + 0,1,0,116,8,160,12,124,1,161,1,92,2,125,5,125, + 6,124,5,124,1,107,2,114,66,116,4,100,5,124,1,100, + 3,141,2,130,1,124,5,125,1,124,3,160,13,124,6,161, + 1,1,0,89,0,110,15,37,0,124,4,106,14,100,6,64, + 0,100,7,107,3,114,89,116,4,100,5,124,1,100,3,141, + 2,130,1,113,91,113,33,9,0,116,15,124,1,25,0,125, + 7,110,18,35,0,4,0,116,16,121,146,1,0,1,0,1, + 0,116,17,124,1,131,1,125,7,124,7,116,15,124,1,60, + 0,89,0,110,1,37,0,124,7,124,0,95,18,124,1,124, + 0,95,19,116,8,106,20,124,3,100,0,100,0,100,8,133, + 3,25,0,142,0,124,0,95,21,124,0,106,21,114,144,124, + 0,4,0,106,21,116,7,55,0,2,0,95,21,100,0,83, + 0,100,0,83,0,119,0,119,0,41,9,78,114,0,0,0, + 0,122,21,97,114,99,104,105,118,101,32,112,97,116,104,32, + 105,115,32,101,109,112,116,121,169,1,218,4,112,97,116,104, + 84,122,14,110,111,116,32,97,32,90,105,112,32,102,105,108, + 101,105,0,240,0,0,105,0,128,0,0,233,255,255,255,255, + 41,22,218,10,105,115,105,110,115,116,97,110,99,101,218,3, + 115,116,114,218,2,111,115,90,8,102,115,100,101,99,111,100, + 101,114,3,0,0,0,218,12,97,108,116,95,112,97,116,104, + 95,115,101,112,218,7,114,101,112,108,97,99,101,218,8,112, + 97,116,104,95,115,101,112,218,19,95,98,111,111,116,115,116, + 114,97,112,95,101,120,116,101,114,110,97,108,90,10,95,112, + 97,116,104,95,115,116,97,116,218,7,79,83,69,114,114,111, + 114,218,10,86,97,108,117,101,69,114,114,111,114,90,11,95, + 112,97,116,104,95,115,112,108,105,116,218,6,97,112,112,101, + 110,100,90,7,115,116,95,109,111,100,101,218,20,95,122,105, + 112,95,100,105,114,101,99,116,111,114,121,95,99,97,99,104, + 101,218,8,75,101,121,69,114,114,111,114,218,15,95,114,101, + 97,100,95,100,105,114,101,99,116,111,114,121,218,6,95,102, + 105,108,101,115,218,7,97,114,99,104,105,118,101,218,10,95, + 112,97,116,104,95,106,111,105,110,218,6,112,114,101,102,105, + 120,41,8,218,4,115,101,108,102,114,14,0,0,0,114,18, + 0,0,0,114,32,0,0,0,90,2,115,116,90,7,100,105, + 114,110,97,109,101,90,8,98,97,115,101,110,97,109,101,218, + 5,102,105,108,101,115,115,8,0,0,0,32,32,32,32,32, + 32,32,32,114,11,0,0,0,218,8,95,95,105,110,105,116, + 95,95,64,0,0,0,115,76,0,0,0,10,1,8,1,10, + 1,4,1,12,1,4,1,12,1,4,2,2,1,2,1,12, + 1,2,128,16,1,14,3,8,1,12,1,4,1,14,1,2, + 128,14,3,12,2,2,1,2,240,2,18,10,1,2,128,12, + 1,8,1,12,1,2,128,6,1,6,1,22,2,6,1,18, + 1,4,255,2,249,2,239,115,33,0,0,0,162,5,40,0, + 168,33,65,11,7,193,28,4,65,33,0,193,33,15,65,50, + 7,194,18,1,65,50,7,194,19,1,65,11,7,122,20,122, + 105,112,105,109,112,111,114,116,101,114,46,95,95,105,110,105, + 116,95,95,78,99,3,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,67,0,0,0,115,90,0,0,0,116,0, + 160,1,100,1,116,2,161,2,1,0,116,3,124,0,124,1, + 131,2,125,3,124,3,100,2,117,1,114,19,124,0,103,0, + 102,2,83,0,116,4,124,0,124,1,131,2,125,4,116,5, + 124,0,124,4,131,2,114,41,100,2,124,0,106,6,155,0, + 116,7,155,0,124,4,155,0,157,3,103,1,102,2,83,0, + 100,2,103,0,102,2,83,0,41,3,97,47,2,0,0,102, + 105,110,100,95,108,111,97,100,101,114,40,102,117,108,108,110, + 97,109,101,44,32,112,97,116,104,61,78,111,110,101,41,32, + 45,62,32,115,101,108,102,44,32,115,116,114,32,111,114,32, + 78,111,110,101,46,10,10,32,32,32,32,32,32,32,32,83, + 101,97,114,99,104,32,102,111,114,32,97,32,109,111,100,117, 108,101,32,115,112,101,99,105,102,105,101,100,32,98,121,32, 39,102,117,108,108,110,97,109,101,39,46,32,39,102,117,108, 108,110,97,109,101,39,32,109,117,115,116,32,98,101,32,116, @@ -471,629 +190,919 @@ const unsigned char _Py_M__zipimport[] = { 32,113,117,97,108,105,102,105,101,100,32,40,100,111,116,116, 101,100,41,32,109,111,100,117,108,101,32,110,97,109,101,46, 32,73,116,32,114,101,116,117,114,110,115,32,116,104,101,32, - 105,109,112,111,114,116,101,100,10,32,32,32,32,32,32,32, - 32,109,111,100,117,108,101,44,32,111,114,32,114,97,105,115, - 101,115,32,90,105,112,73,109,112,111,114,116,69,114,114,111, - 114,32,105,102,32,105,116,32,99,111,117,108,100,32,110,111, - 116,32,98,101,32,105,109,112,111,114,116,101,100,46,10,10, + 122,105,112,105,109,112,111,114,116,101,114,10,32,32,32,32, + 32,32,32,32,105,110,115,116,97,110,99,101,32,105,116,115, + 101,108,102,32,105,102,32,116,104,101,32,109,111,100,117,108, + 101,32,119,97,115,32,102,111,117,110,100,44,32,97,32,115, + 116,114,105,110,103,32,99,111,110,116,97,105,110,105,110,103, + 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, + 108,32,112,97,116,104,32,110,97,109,101,32,105,102,32,105, + 116,39,115,32,112,111,115,115,105,98,108,121,32,97,32,112, + 111,114,116,105,111,110,32,111,102,32,97,32,110,97,109,101, + 115,112,97,99,101,32,112,97,99,107,97,103,101,44,10,32, + 32,32,32,32,32,32,32,111,114,32,78,111,110,101,32,111, + 116,104,101,114,119,105,115,101,46,32,84,104,101,32,111,112, + 116,105,111,110,97,108,32,39,112,97,116,104,39,32,97,114, + 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, + 100,32,45,45,32,105,116,39,115,10,32,32,32,32,32,32, + 32,32,116,104,101,114,101,32,102,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,105,109,112,111,114,116,101,114,32,112,114,111,116, + 111,99,111,108,46,10,10,32,32,32,32,32,32,32,32,68, + 101,112,114,101,99,97,116,101,100,32,115,105,110,99,101,32, + 80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,102, + 122,105,112,105,109,112,111,114,116,101,114,46,102,105,110,100, + 95,108,111,97,100,101,114,40,41,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,32,97,110,100,32,115,108,97,116, + 101,100,32,102,111,114,32,114,101,109,111,118,97,108,32,105, + 110,32,80,121,116,104,111,110,32,51,46,49,50,59,32,117, + 115,101,32,102,105,110,100,95,115,112,101,99,40,41,32,105, + 110,115,116,101,97,100,78,41,8,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,16, + 95,103,101,116,95,109,111,100,117,108,101,95,105,110,102,111, + 218,16,95,103,101,116,95,109,111,100,117,108,101,95,112,97, + 116,104,218,7,95,105,115,95,100,105,114,114,30,0,0,0, + 114,21,0,0,0,41,5,114,33,0,0,0,218,8,102,117, + 108,108,110,97,109,101,114,14,0,0,0,218,2,109,105,218, + 7,109,111,100,112,97,116,104,115,5,0,0,0,32,32,32, + 32,32,114,11,0,0,0,218,11,102,105,110,100,95,108,111, + 97,100,101,114,110,0,0,0,115,20,0,0,0,6,12,2, + 2,4,254,10,3,8,1,8,2,10,7,10,1,24,4,8, + 2,114,10,0,0,0,122,23,122,105,112,105,109,112,111,114, + 116,101,114,46,102,105,110,100,95,108,111,97,100,101,114,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 67,0,0,0,115,28,0,0,0,116,0,160,1,100,1,116, + 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,100, + 2,25,0,83,0,41,4,97,203,1,0,0,102,105,110,100, + 95,109,111,100,117,108,101,40,102,117,108,108,110,97,109,101, + 44,32,112,97,116,104,61,78,111,110,101,41,32,45,62,32, + 115,101,108,102,32,111,114,32,78,111,110,101,46,10,10,32, + 32,32,32,32,32,32,32,83,101,97,114,99,104,32,102,111, + 114,32,97,32,109,111,100,117,108,101,32,115,112,101,99,105, + 102,105,101,100,32,98,121,32,39,102,117,108,108,110,97,109, + 101,39,46,32,39,102,117,108,108,110,97,109,101,39,32,109, + 117,115,116,32,98,101,32,116,104,101,10,32,32,32,32,32, + 32,32,32,102,117,108,108,121,32,113,117,97,108,105,102,105, + 101,100,32,40,100,111,116,116,101,100,41,32,109,111,100,117, + 108,101,32,110,97,109,101,46,32,73,116,32,114,101,116,117, + 114,110,115,32,116,104,101,32,122,105,112,105,109,112,111,114, + 116,101,114,10,32,32,32,32,32,32,32,32,105,110,115,116, + 97,110,99,101,32,105,116,115,101,108,102,32,105,102,32,116, + 104,101,32,109,111,100,117,108,101,32,119,97,115,32,102,111, + 117,110,100,44,32,111,114,32,78,111,110,101,32,105,102,32, + 105,116,32,119,97,115,110,39,116,46,10,32,32,32,32,32, + 32,32,32,84,104,101,32,111,112,116,105,111,110,97,108,32, + 39,112,97,116,104,39,32,97,114,103,117,109,101,110,116,32, + 105,115,32,105,103,110,111,114,101,100,32,45,45,32,105,116, + 39,115,32,116,104,101,114,101,32,102,111,114,32,99,111,109, + 112,97,116,105,98,105,108,105,116,121,10,32,32,32,32,32, + 32,32,32,119,105,116,104,32,116,104,101,32,105,109,112,111, + 114,116,101,114,32,112,114,111,116,111,99,111,108,46,10,10, 32,32,32,32,32,32,32,32,68,101,112,114,101,99,97,116, 101,100,32,115,105,110,99,101,32,80,121,116,104,111,110,32, - 51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,114,122,105,112,105,109, - 112,111,114,116,46,122,105,112,105,109,112,111,114,116,101,114, - 46,108,111,97,100,95,109,111,100,117,108,101,40,41,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,97,110,100, - 32,115,108,97,116,101,100,32,102,111,114,32,114,101,109,111, - 118,97,108,32,105,110,32,80,121,116,104,111,110,32,51,46, - 49,50,59,32,117,115,101,32,101,120,101,99,95,109,111,100, - 117,108,101,40,41,32,105,110,115,116,101,97,100,78,218,12, - 95,95,98,117,105,108,116,105,110,115,95,95,122,14,76,111, - 97,100,101,100,32,109,111,100,117,108,101,32,122,25,32,110, - 111,116,32,102,111,117,110,100,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,122,30,105,109,112,111,114,116,32, - 123,125,32,35,32,108,111,97,100,101,100,32,102,114,111,109, - 32,90,105,112,32,123,125,41,24,114,36,0,0,0,114,37, - 0,0,0,114,38,0,0,0,114,52,0,0,0,218,3,115, - 121,115,218,7,109,111,100,117,108,101,115,218,3,103,101,116, - 114,16,0,0,0,218,12,95,109,111,100,117,108,101,95,116, - 121,112,101,218,10,95,95,108,111,97,100,101,114,95,95,114, - 40,0,0,0,114,22,0,0,0,114,31,0,0,0,114,30, - 0,0,0,90,8,95,95,112,97,116,104,95,95,218,7,104, - 97,115,97,116,116,114,114,72,0,0,0,90,14,95,102,105, - 120,95,117,112,95,109,111,100,117,108,101,218,8,95,95,100, - 105,99,116,95,95,218,4,101,120,101,99,114,27,0,0,0, - 218,11,73,109,112,111,114,116,69,114,114,111,114,114,49,0, - 0,0,218,16,95,118,101,114,98,111,115,101,95,109,101,115, - 115,97,103,101,41,9,114,33,0,0,0,114,42,0,0,0, - 218,3,109,115,103,114,54,0,0,0,114,55,0,0,0,114, - 44,0,0,0,90,3,109,111,100,114,14,0,0,0,114,70, - 0,0,0,32,32,32,32,32,32,32,32,32,114,10,0,0, - 0,218,11,108,111,97,100,95,109,111,100,117,108,101,16,1, - 0,0,115,62,0,0,0,4,9,12,2,16,1,12,1,18, - 1,8,1,10,1,6,1,2,2,4,1,10,3,14,1,8, - 1,10,2,6,1,16,1,14,1,2,128,6,1,8,1,2, - 1,2,128,2,2,12,1,2,128,12,1,16,1,2,128,14, - 1,4,1,2,253,115,29,0,0,0,172,40,65,21,0,193, - 21,9,65,30,7,193,32,5,65,38,0,193,38,15,65,53, - 7,193,63,1,65,53,7,122,23,122,105,112,105,109,112,111, - 114,116,101,114,46,108,111,97,100,95,109,111,100,117,108,101, + 51,46,49,48,46,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,32, + 32,32,32,32,32,32,32,122,102,122,105,112,105,109,112,111, + 114,116,101,114,46,102,105,110,100,95,109,111,100,117,108,101, + 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, + 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,114, + 0,0,0,0,78,41,4,114,36,0,0,0,114,37,0,0, + 0,114,38,0,0,0,114,45,0,0,0,41,3,114,33,0, + 0,0,114,42,0,0,0,114,14,0,0,0,115,3,0,0, + 0,32,32,32,114,11,0,0,0,218,11,102,105,110,100,95, + 109,111,100,117,108,101,147,0,0,0,115,8,0,0,0,6, + 11,2,2,4,254,16,3,114,10,0,0,0,122,23,122,105, + 112,105,109,112,111,114,116,101,114,46,102,105,110,100,95,109, + 111,100,117,108,101,99,3,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,67,0,0,0,115,108,0,0,0,116, + 0,124,0,124,1,131,2,125,3,124,3,100,1,117,1,114, + 17,116,1,160,2,124,1,124,0,124,3,100,2,166,3,83, + 0,116,3,124,0,124,1,131,2,125,4,116,4,124,0,124, + 4,131,2,114,52,124,0,106,5,155,0,116,6,155,0,124, + 4,155,0,157,3,125,5,116,1,160,7,124,1,100,1,100, + 3,100,4,166,3,125,6,124,6,106,8,160,9,124,5,161, + 1,1,0,124,6,83,0,100,1,83,0,41,5,122,107,67, + 114,101,97,116,101,32,97,32,77,111,100,117,108,101,83,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,78,111, + 110,101,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,99,97,110,110,111,116,32,98,101,32,102,111,117,110,100, + 46,10,32,32,32,32,32,32,32,32,78,41,1,218,10,105, + 115,95,112,97,99,107,97,103,101,84,41,3,218,4,110,97, + 109,101,90,6,108,111,97,100,101,114,114,47,0,0,0,41, + 10,114,39,0,0,0,218,10,95,98,111,111,116,115,116,114, + 97,112,90,16,115,112,101,99,95,102,114,111,109,95,108,111, + 97,100,101,114,114,40,0,0,0,114,41,0,0,0,114,30, + 0,0,0,114,21,0,0,0,90,10,77,111,100,117,108,101, + 83,112,101,99,90,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, + 114,25,0,0,0,41,7,114,33,0,0,0,114,42,0,0, + 0,90,6,116,97,114,103,101,116,90,11,109,111,100,117,108, + 101,95,105,110,102,111,114,44,0,0,0,114,14,0,0,0, + 90,4,115,112,101,99,115,7,0,0,0,32,32,32,32,32, + 32,32,114,11,0,0,0,218,9,102,105,110,100,95,115,112, + 101,99,163,0,0,0,115,24,0,0,0,10,5,8,1,16, + 1,10,7,10,1,18,4,8,1,2,1,6,255,12,2,4, + 1,4,2,114,10,0,0,0,122,21,122,105,112,105,109,112, + 111,114,116,101,114,46,102,105,110,100,95,115,112,101,99,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 67,0,0,0,115,20,0,0,0,116,0,124,0,124,1,131, + 2,92,3,125,2,125,3,125,4,124,2,83,0,41,2,122, + 166,103,101,116,95,99,111,100,101,40,102,117,108,108,110,97, + 109,101,41,32,45,62,32,99,111,100,101,32,111,98,106,101, + 99,116,46,10,10,32,32,32,32,32,32,32,32,82,101,116, + 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, + 101,99,116,32,102,111,114,32,116,104,101,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,46,32,82,97, + 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, + 111,114,10,32,32,32,32,32,32,32,32,105,102,32,116,104, + 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, + 116,32,98,101,32,105,109,112,111,114,116,101,100,46,10,32, + 32,32,32,32,32,32,32,78,169,1,218,16,95,103,101,116, + 95,109,111,100,117,108,101,95,99,111,100,101,169,5,114,33, + 0,0,0,114,42,0,0,0,218,4,99,111,100,101,218,9, + 105,115,112,97,99,107,97,103,101,114,44,0,0,0,115,5, + 0,0,0,32,32,32,32,32,114,11,0,0,0,218,8,103, + 101,116,95,99,111,100,101,190,0,0,0,115,4,0,0,0, + 16,6,4,1,114,10,0,0,0,122,20,122,105,112,105,109, + 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 67,0,0,0,115,114,0,0,0,116,0,114,8,124,1,160, + 1,116,0,116,2,161,2,125,1,124,1,125,2,124,1,160, + 3,124,0,106,4,116,2,23,0,161,1,114,29,124,1,116, + 5,124,0,106,4,116,2,23,0,131,1,100,1,133,2,25, + 0,125,2,9,0,124,0,106,6,124,2,25,0,125,3,110, + 14,35,0,4,0,116,7,121,56,1,0,1,0,1,0,116, + 8,100,2,100,3,124,2,131,3,130,1,37,0,116,9,124, + 0,106,4,124,3,131,2,83,0,119,0,41,4,122,154,103, + 101,116,95,100,97,116,97,40,112,97,116,104,110,97,109,101, + 41,32,45,62,32,115,116,114,105,110,103,32,119,105,116,104, + 32,102,105,108,101,32,100,97,116,97,46,10,10,32,32,32, + 32,32,32,32,32,82,101,116,117,114,110,32,116,104,101,32, + 100,97,116,97,32,97,115,115,111,99,105,97,116,101,100,32, + 119,105,116,104,32,39,112,97,116,104,110,97,109,101,39,46, + 32,82,97,105,115,101,32,79,83,69,114,114,111,114,32,105, + 102,10,32,32,32,32,32,32,32,32,116,104,101,32,102,105, + 108,101,32,119,97,115,110,39,116,32,102,111,117,110,100,46, + 10,32,32,32,32,32,32,32,32,78,114,0,0,0,0,218, + 0,41,10,114,19,0,0,0,114,20,0,0,0,114,21,0, + 0,0,218,10,115,116,97,114,116,115,119,105,116,104,114,30, + 0,0,0,218,3,108,101,110,114,29,0,0,0,114,27,0, + 0,0,114,23,0,0,0,218,9,95,103,101,116,95,100,97, + 116,97,41,4,114,33,0,0,0,218,8,112,97,116,104,110, + 97,109,101,90,3,107,101,121,218,9,116,111,99,95,101,110, + 116,114,121,115,4,0,0,0,32,32,32,32,114,11,0,0, + 0,218,8,103,101,116,95,100,97,116,97,200,0,0,0,115, + 26,0,0,0,4,6,12,1,4,2,16,1,22,1,2,2, + 12,1,2,128,12,1,12,1,2,128,12,1,2,254,115,12, + 0,0,0,158,5,36,0,164,13,49,7,184,1,49,7,122, + 20,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, + 95,100,97,116,97,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,115,20,0,0,0,116, + 0,124,0,124,1,131,2,92,3,125,2,125,3,125,4,124, + 4,83,0,41,2,122,165,103,101,116,95,102,105,108,101,110, + 97,109,101,40,102,117,108,108,110,97,109,101,41,32,45,62, + 32,102,105,108,101,110,97,109,101,32,115,116,114,105,110,103, + 46,10,10,32,32,32,32,32,32,32,32,82,101,116,117,114, + 110,32,116,104,101,32,102,105,108,101,110,97,109,101,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,111,114,32,114,97,105,115,101, + 32,90,105,112,73,109,112,111,114,116,69,114,114,111,114,10, + 32,32,32,32,32,32,32,32,105,102,32,105,116,32,99,111, + 117,108,100,110,39,116,32,98,101,32,105,109,112,111,114,116, + 101,100,46,10,32,32,32,32,32,32,32,32,78,114,51,0, + 0,0,114,53,0,0,0,115,5,0,0,0,32,32,32,32, + 32,114,11,0,0,0,218,12,103,101,116,95,102,105,108,101, + 110,97,109,101,221,0,0,0,115,4,0,0,0,16,8,4, + 1,114,10,0,0,0,122,24,122,105,112,105,109,112,111,114, + 116,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,8,0,0, - 0,67,0,0,0,115,64,0,0,0,9,0,124,0,160,0, - 124,1,161,1,115,8,100,1,83,0,110,11,35,0,4,0, - 116,1,121,31,1,0,1,0,1,0,89,0,100,1,83,0, - 37,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, - 124,0,124,1,131,2,83,0,119,0,41,4,122,204,82,101, - 116,117,114,110,32,116,104,101,32,82,101,115,111,117,114,99, - 101,82,101,97,100,101,114,32,102,111,114,32,97,32,112,97, - 99,107,97,103,101,32,105,110,32,97,32,122,105,112,32,102, - 105,108,101,46,10,10,32,32,32,32,32,32,32,32,73,102, - 32,39,102,117,108,108,110,97,109,101,39,32,105,115,32,97, - 32,112,97,99,107,97,103,101,32,119,105,116,104,105,110,32, - 116,104,101,32,122,105,112,32,102,105,108,101,44,32,114,101, - 116,117,114,110,32,116,104,101,10,32,32,32,32,32,32,32, - 32,39,82,101,115,111,117,114,99,101,82,101,97,100,101,114, - 39,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, - 32,112,97,99,107,97,103,101,46,32,32,79,116,104,101,114, - 119,105,115,101,32,114,101,116,117,114,110,32,78,111,110,101, - 46,10,32,32,32,32,32,32,32,32,78,114,0,0,0,0, - 41,1,218,9,90,105,112,82,101,97,100,101,114,41,4,114, - 47,0,0,0,114,3,0,0,0,90,17,105,109,112,111,114, - 116,108,105,98,46,114,101,97,100,101,114,115,114,85,0,0, - 0,41,3,114,33,0,0,0,114,42,0,0,0,114,85,0, - 0,0,32,32,32,114,10,0,0,0,218,19,103,101,116,95, - 114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,59, - 1,0,0,115,22,0,0,0,2,6,10,1,4,1,2,255, - 2,128,12,2,6,1,2,128,12,1,10,1,2,253,115,12, - 0,0,0,129,5,9,0,137,7,19,7,159,1,19,7,122, - 31,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, - 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,67,0,0,0,115,74,0,0,0,9,0,116,0,124,0, - 106,1,131,1,124,0,95,2,124,0,106,2,116,3,124,0, - 106,1,60,0,100,1,83,0,35,0,4,0,116,4,121,36, - 1,0,1,0,1,0,116,3,160,5,124,0,106,1,100,1, - 161,2,1,0,100,1,124,0,95,2,89,0,100,1,83,0, - 37,0,119,0,41,2,122,41,82,101,108,111,97,100,32,116, - 104,101,32,102,105,108,101,32,100,97,116,97,32,111,102,32, - 116,104,101,32,97,114,99,104,105,118,101,32,112,97,116,104, - 46,78,41,6,114,28,0,0,0,114,30,0,0,0,114,29, - 0,0,0,114,26,0,0,0,114,3,0,0,0,218,3,112, - 111,112,169,1,114,33,0,0,0,32,114,10,0,0,0,218, - 17,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, - 101,115,74,1,0,0,115,18,0,0,0,2,2,12,1,16, - 1,2,128,12,1,14,1,12,1,2,128,2,254,115,12,0, - 0,0,129,12,15,0,143,17,35,7,164,1,35,7,122,29, - 122,105,112,105,109,112,111,114,116,101,114,46,105,110,118,97, - 108,105,100,97,116,101,95,99,97,99,104,101,115,99,1,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,67,0, - 0,0,115,24,0,0,0,100,1,124,0,106,0,155,0,116, - 1,155,0,124,0,106,2,155,0,100,2,157,5,83,0,41, - 3,78,122,21,60,122,105,112,105,109,112,111,114,116,101,114, - 32,111,98,106,101,99,116,32,34,122,2,34,62,41,3,114, - 30,0,0,0,114,21,0,0,0,114,32,0,0,0,114,88, - 0,0,0,32,114,10,0,0,0,218,8,95,95,114,101,112, - 114,95,95,84,1,0,0,115,2,0,0,0,24,1,114,11, - 0,0,0,122,20,122,105,112,105,109,112,111,114,116,101,114, - 46,95,95,114,101,112,114,95,95,169,1,78,41,17,114,6, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,7,95, - 95,100,111,99,95,95,114,35,0,0,0,114,45,0,0,0, - 114,46,0,0,0,114,50,0,0,0,114,56,0,0,0,114, - 63,0,0,0,114,64,0,0,0,114,71,0,0,0,114,47, - 0,0,0,114,84,0,0,0,114,86,0,0,0,114,89,0, - 0,0,114,90,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,4,0,0,0,46,0,0,0,115,30,0,0,0,8, - 0,4,1,8,17,10,46,10,37,10,16,8,27,8,10,8, - 21,8,12,8,26,8,13,8,43,8,15,12,10,114,11,0, - 0,0,122,12,95,95,105,110,105,116,95,95,46,112,121,99, - 84,114,67,0,0,0,70,41,3,122,4,46,112,121,99,84, - 70,41,3,114,68,0,0,0,70,70,99,2,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, - 20,0,0,0,124,0,106,0,124,1,160,1,100,1,161,1, - 100,2,25,0,23,0,83,0,41,3,78,218,1,46,233,2, - 0,0,0,41,2,114,32,0,0,0,218,10,114,112,97,114, - 116,105,116,105,111,110,41,2,114,33,0,0,0,114,42,0, - 0,0,32,32,114,10,0,0,0,114,40,0,0,0,102,1, - 0,0,115,2,0,0,0,20,1,114,11,0,0,0,114,40, + 0,67,0,0,0,115,128,0,0,0,116,0,124,0,124,1, + 131,2,125,2,124,2,100,1,117,0,114,18,116,1,100,2, + 124,1,155,2,157,2,124,1,100,3,141,2,130,1,116,2, + 124,0,124,1,131,2,125,3,124,2,114,32,116,3,160,4, + 124,3,100,4,161,2,125,4,110,5,124,3,155,0,100,5, + 157,2,125,4,9,0,124,0,106,5,124,4,25,0,125,5, + 110,11,35,0,4,0,116,6,121,63,1,0,1,0,1,0, + 89,0,100,1,83,0,37,0,116,7,124,0,106,8,124,5, + 131,2,160,9,161,0,83,0,119,0,41,6,122,253,103,101, + 116,95,115,111,117,114,99,101,40,102,117,108,108,110,97,109, + 101,41,32,45,62,32,115,111,117,114,99,101,32,115,116,114, + 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101, + 116,117,114,110,32,116,104,101,32,115,111,117,114,99,101,32, + 99,111,100,101,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,32,82, + 97,105,115,101,32,90,105,112,73,109,112,111,114,116,69,114, + 114,111,114,10,32,32,32,32,32,32,32,32,105,102,32,116, + 104,101,32,109,111,100,117,108,101,32,99,111,117,108,100,110, + 39,116,32,98,101,32,102,111,117,110,100,44,32,114,101,116, + 117,114,110,32,78,111,110,101,32,105,102,32,116,104,101,32, + 97,114,99,104,105,118,101,32,100,111,101,115,10,32,32,32, + 32,32,32,32,32,99,111,110,116,97,105,110,32,116,104,101, + 32,109,111,100,117,108,101,44,32,98,117,116,32,104,97,115, + 32,110,111,32,115,111,117,114,99,101,32,102,111,114,32,105, + 116,46,10,32,32,32,32,32,32,32,32,78,250,18,99,97, + 110,39,116,32,102,105,110,100,32,109,111,100,117,108,101,32, + 169,1,114,48,0,0,0,250,11,95,95,105,110,105,116,95, + 95,46,112,121,250,3,46,112,121,41,10,114,39,0,0,0, + 114,3,0,0,0,114,40,0,0,0,114,22,0,0,0,114, + 31,0,0,0,114,29,0,0,0,114,27,0,0,0,114,60, + 0,0,0,114,30,0,0,0,218,6,100,101,99,111,100,101, + 41,6,114,33,0,0,0,114,42,0,0,0,114,43,0,0, + 0,114,14,0,0,0,218,8,102,117,108,108,112,97,116,104, + 114,62,0,0,0,115,6,0,0,0,32,32,32,32,32,32, + 114,11,0,0,0,218,10,103,101,116,95,115,111,117,114,99, + 101,233,0,0,0,115,30,0,0,0,10,7,8,1,18,1, + 10,2,4,1,14,1,10,2,2,2,12,1,2,128,12,1, + 6,2,2,128,16,1,2,253,115,12,0,0,0,166,5,44, + 0,172,7,54,7,191,1,54,7,122,22,122,105,112,105,109, + 112,111,114,116,101,114,46,103,101,116,95,115,111,117,114,99, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,67,0,0,0,115,40,0,0,0,116,0,124,0,124, + 1,131,2,125,2,124,2,100,1,117,0,114,18,116,1,100, + 2,124,1,155,2,157,2,124,1,100,3,141,2,130,1,124, + 2,83,0,41,4,122,171,105,115,95,112,97,99,107,97,103, + 101,40,102,117,108,108,110,97,109,101,41,32,45,62,32,98, + 111,111,108,46,10,10,32,32,32,32,32,32,32,32,82,101, + 116,117,114,110,32,84,114,117,101,32,105,102,32,116,104,101, + 32,109,111,100,117,108,101,32,115,112,101,99,105,102,105,101, + 100,32,98,121,32,102,117,108,108,110,97,109,101,32,105,115, + 32,97,32,112,97,99,107,97,103,101,46,10,32,32,32,32, + 32,32,32,32,82,97,105,115,101,32,90,105,112,73,109,112, + 111,114,116,69,114,114,111,114,32,105,102,32,116,104,101,32, + 109,111,100,117,108,101,32,99,111,117,108,100,110,39,116,32, + 98,101,32,102,111,117,110,100,46,10,32,32,32,32,32,32, + 32,32,78,114,65,0,0,0,114,66,0,0,0,41,2,114, + 39,0,0,0,114,3,0,0,0,41,3,114,33,0,0,0, + 114,42,0,0,0,114,43,0,0,0,115,3,0,0,0,32, + 32,32,114,11,0,0,0,114,47,0,0,0,3,1,0,0, + 115,8,0,0,0,10,6,8,1,18,1,4,1,114,10,0, + 0,0,122,22,122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115, + 0,1,0,0,100,1,125,2,116,0,160,1,124,2,116,2, + 161,2,1,0,116,3,124,0,124,1,131,2,92,3,125,3, + 125,4,125,5,116,4,106,5,160,6,124,1,161,1,125,6, + 124,6,100,2,117,0,115,31,116,7,124,6,116,8,131,2, + 115,40,116,8,124,1,131,1,125,6,124,6,116,4,106,5, + 124,1,60,0,124,0,124,6,95,9,9,0,124,4,114,62, + 116,10,124,0,124,1,131,2,125,7,116,11,160,12,124,0, + 106,13,124,7,161,2,125,8,124,8,103,1,124,6,95,14, + 116,15,124,6,100,3,131,2,115,70,116,16,124,6,95,16, + 116,11,160,17,124,6,106,18,124,1,124,5,161,3,1,0, + 116,19,124,3,124,6,106,18,131,2,1,0,110,10,35,0, + 1,0,1,0,1,0,116,4,106,5,124,1,61,0,130,0, + 37,0,9,0,116,4,106,5,124,1,25,0,125,6,110,16, + 35,0,4,0,116,20,121,127,1,0,1,0,1,0,116,21, + 100,4,124,1,155,2,100,5,157,3,131,1,130,1,37,0, + 116,22,160,23,100,6,124,1,124,5,161,3,1,0,124,6, + 83,0,119,0,41,7,97,64,1,0,0,108,111,97,100,95, + 109,111,100,117,108,101,40,102,117,108,108,110,97,109,101,41, + 32,45,62,32,109,111,100,117,108,101,46,10,10,32,32,32, + 32,32,32,32,32,76,111,97,100,32,116,104,101,32,109,111, + 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, + 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102, + 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101, + 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, + 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111, + 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109, + 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104, + 101,32,105,109,112,111,114,116,101,100,10,32,32,32,32,32, + 32,32,32,109,111,100,117,108,101,44,32,111,114,32,114,97, + 105,115,101,115,32,90,105,112,73,109,112,111,114,116,69,114, + 114,111,114,32,105,102,32,105,116,32,99,111,117,108,100,32, + 110,111,116,32,98,101,32,105,109,112,111,114,116,101,100,46, + 10,10,32,32,32,32,32,32,32,32,68,101,112,114,101,99, + 97,116,101,100,32,115,105,110,99,101,32,80,121,116,104,111, + 110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122,114,122,105,112, + 105,109,112,111,114,116,46,122,105,112,105,109,112,111,114,116, + 101,114,46,108,111,97,100,95,109,111,100,117,108,101,40,41, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, + 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, + 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, + 51,46,49,50,59,32,117,115,101,32,101,120,101,99,95,109, + 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,78, + 218,12,95,95,98,117,105,108,116,105,110,115,95,95,122,14, + 76,111,97,100,101,100,32,109,111,100,117,108,101,32,122,25, + 32,110,111,116,32,102,111,117,110,100,32,105,110,32,115,121, + 115,46,109,111,100,117,108,101,115,122,30,105,109,112,111,114, + 116,32,123,125,32,35,32,108,111,97,100,101,100,32,102,114, + 111,109,32,90,105,112,32,123,125,41,24,114,36,0,0,0, + 114,37,0,0,0,114,38,0,0,0,114,52,0,0,0,218, + 3,115,121,115,218,7,109,111,100,117,108,101,115,218,3,103, + 101,116,114,16,0,0,0,218,12,95,109,111,100,117,108,101, + 95,116,121,112,101,218,10,95,95,108,111,97,100,101,114,95, + 95,114,40,0,0,0,114,22,0,0,0,114,31,0,0,0, + 114,30,0,0,0,90,8,95,95,112,97,116,104,95,95,218, + 7,104,97,115,97,116,116,114,114,72,0,0,0,90,14,95, + 102,105,120,95,117,112,95,109,111,100,117,108,101,218,8,95, + 95,100,105,99,116,95,95,218,4,101,120,101,99,114,27,0, + 0,0,218,11,73,109,112,111,114,116,69,114,114,111,114,114, + 49,0,0,0,218,16,95,118,101,114,98,111,115,101,95,109, + 101,115,115,97,103,101,41,9,114,33,0,0,0,114,42,0, + 0,0,218,3,109,115,103,114,54,0,0,0,114,55,0,0, + 0,114,44,0,0,0,90,3,109,111,100,114,14,0,0,0, + 114,70,0,0,0,115,9,0,0,0,32,32,32,32,32,32, + 32,32,32,114,11,0,0,0,218,11,108,111,97,100,95,109, + 111,100,117,108,101,16,1,0,0,115,62,0,0,0,4,9, + 12,2,16,1,12,1,18,1,8,1,10,1,6,1,2,2, + 4,1,10,3,14,1,8,1,10,2,6,1,16,1,14,1, + 2,128,6,1,8,1,2,1,2,128,2,2,12,1,2,128, + 12,1,16,1,2,128,14,1,4,1,2,253,115,29,0,0, + 0,172,40,65,21,0,193,21,9,65,30,7,193,32,5,65, + 38,0,193,38,15,65,53,7,193,63,1,65,53,7,122,23, + 122,105,112,105,109,112,111,114,116,101,114,46,108,111,97,100, + 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,67,0,0,0,115,64,0,0, + 0,9,0,124,0,160,0,124,1,161,1,115,8,100,1,83, + 0,110,11,35,0,4,0,116,1,121,31,1,0,1,0,1, + 0,89,0,100,1,83,0,37,0,100,2,100,3,108,2,109, + 3,125,2,1,0,124,2,124,0,124,1,131,2,83,0,119, + 0,41,4,122,204,82,101,116,117,114,110,32,116,104,101,32, + 82,101,115,111,117,114,99,101,82,101,97,100,101,114,32,102, + 111,114,32,97,32,112,97,99,107,97,103,101,32,105,110,32, + 97,32,122,105,112,32,102,105,108,101,46,10,10,32,32,32, + 32,32,32,32,32,73,102,32,39,102,117,108,108,110,97,109, + 101,39,32,105,115,32,97,32,112,97,99,107,97,103,101,32, + 119,105,116,104,105,110,32,116,104,101,32,122,105,112,32,102, + 105,108,101,44,32,114,101,116,117,114,110,32,116,104,101,10, + 32,32,32,32,32,32,32,32,39,82,101,115,111,117,114,99, + 101,82,101,97,100,101,114,39,32,111,98,106,101,99,116,32, + 102,111,114,32,116,104,101,32,112,97,99,107,97,103,101,46, + 32,32,79,116,104,101,114,119,105,115,101,32,114,101,116,117, + 114,110,32,78,111,110,101,46,10,32,32,32,32,32,32,32, + 32,78,114,0,0,0,0,41,1,218,9,90,105,112,82,101, + 97,100,101,114,41,4,114,47,0,0,0,114,3,0,0,0, + 90,17,105,109,112,111,114,116,108,105,98,46,114,101,97,100, + 101,114,115,114,85,0,0,0,41,3,114,33,0,0,0,114, + 42,0,0,0,114,85,0,0,0,115,3,0,0,0,32,32, + 32,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,59,1,0,0,115, + 22,0,0,0,2,6,10,1,4,1,2,255,2,128,12,2, + 6,1,2,128,12,1,10,1,2,253,115,12,0,0,0,129, + 5,9,0,137,7,19,7,159,1,19,7,122,31,122,105,112, + 105,109,112,111,114,116,101,114,46,103,101,116,95,114,101,115, + 111,117,114,99,101,95,114,101,97,100,101,114,99,1,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, + 0,115,74,0,0,0,9,0,116,0,124,0,106,1,131,1, + 124,0,95,2,124,0,106,2,116,3,124,0,106,1,60,0, + 100,1,83,0,35,0,4,0,116,4,121,36,1,0,1,0, + 1,0,116,3,160,5,124,0,106,1,100,1,161,2,1,0, + 100,1,124,0,95,2,89,0,100,1,83,0,37,0,119,0, + 41,2,122,41,82,101,108,111,97,100,32,116,104,101,32,102, + 105,108,101,32,100,97,116,97,32,111,102,32,116,104,101,32, + 97,114,99,104,105,118,101,32,112,97,116,104,46,78,41,6, + 114,28,0,0,0,114,30,0,0,0,114,29,0,0,0,114, + 26,0,0,0,114,3,0,0,0,218,3,112,111,112,169,1, + 114,33,0,0,0,115,1,0,0,0,32,114,11,0,0,0, + 218,17,105,110,118,97,108,105,100,97,116,101,95,99,97,99, + 104,101,115,74,1,0,0,115,18,0,0,0,2,2,12,1, + 16,1,2,128,12,1,14,1,12,1,2,128,2,254,115,12, + 0,0,0,129,12,15,0,143,17,35,7,164,1,35,7,122, + 29,122,105,112,105,109,112,111,114,116,101,114,46,105,110,118, + 97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,1, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, + 0,0,0,115,24,0,0,0,100,1,124,0,106,0,155,0, + 116,1,155,0,124,0,106,2,155,0,100,2,157,5,83,0, + 41,3,78,122,21,60,122,105,112,105,109,112,111,114,116,101, + 114,32,111,98,106,101,99,116,32,34,122,2,34,62,41,3, + 114,30,0,0,0,114,21,0,0,0,114,32,0,0,0,114, + 88,0,0,0,115,1,0,0,0,32,114,11,0,0,0,218, + 8,95,95,114,101,112,114,95,95,84,1,0,0,115,2,0, + 0,0,24,1,114,10,0,0,0,122,20,122,105,112,105,109, + 112,111,114,116,101,114,46,95,95,114,101,112,114,95,95,169, + 1,78,41,17,114,6,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,7,95,95,100,111,99,95,95,114,35,0,0, + 0,114,45,0,0,0,114,46,0,0,0,114,50,0,0,0, + 114,56,0,0,0,114,63,0,0,0,114,64,0,0,0,114, + 71,0,0,0,114,47,0,0,0,114,84,0,0,0,114,86, + 0,0,0,114,89,0,0,0,114,90,0,0,0,114,9,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,4,0,0, + 0,46,0,0,0,115,30,0,0,0,8,0,4,1,8,17, + 10,46,10,37,10,16,8,27,8,10,8,21,8,12,8,26, + 8,13,8,43,8,15,12,10,114,10,0,0,0,122,12,95, + 95,105,110,105,116,95,95,46,112,121,99,84,114,67,0,0, + 0,70,41,3,122,4,46,112,121,99,84,70,41,3,114,68, + 0,0,0,70,70,99,2,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,67,0,0,0,115,20,0,0,0,124, + 0,106,0,124,1,160,1,100,1,161,1,100,2,25,0,23, + 0,83,0,41,3,78,218,1,46,233,2,0,0,0,41,2, + 114,32,0,0,0,218,10,114,112,97,114,116,105,116,105,111, + 110,41,2,114,33,0,0,0,114,42,0,0,0,115,2,0, + 0,0,32,32,114,11,0,0,0,114,40,0,0,0,102,1, + 0,0,115,2,0,0,0,20,1,114,10,0,0,0,114,40, 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,114, 91,0,0,0,41,2,114,21,0,0,0,114,29,0,0,0, 41,3,114,33,0,0,0,114,14,0,0,0,90,7,100,105, - 114,112,97,116,104,32,32,32,114,10,0,0,0,114,41,0, - 0,0,106,1,0,0,115,4,0,0,0,8,4,10,2,114, - 11,0,0,0,114,41,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,56, - 0,0,0,116,0,124,0,124,1,131,2,125,2,116,1,68, - 0,93,18,92,3,125,3,125,4,125,5,124,2,124,3,23, - 0,125,6,124,6,124,0,106,2,118,0,114,25,124,5,2, - 0,1,0,83,0,113,7,100,0,83,0,114,91,0,0,0, - 41,3,114,40,0,0,0,218,16,95,122,105,112,95,115,101, - 97,114,99,104,111,114,100,101,114,114,29,0,0,0,41,7, - 114,33,0,0,0,114,42,0,0,0,114,14,0,0,0,218, - 6,115,117,102,102,105,120,218,10,105,115,98,121,116,101,99, - 111,100,101,114,55,0,0,0,114,70,0,0,0,32,32,32, - 32,32,32,32,114,10,0,0,0,114,39,0,0,0,115,1, - 0,0,115,14,0,0,0,10,1,14,1,8,1,10,1,8, - 1,2,255,4,2,114,11,0,0,0,114,39,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, - 67,0,0,0,115,248,4,0,0,9,0,116,0,160,1,124, - 0,161,1,125,1,110,18,35,0,4,0,116,2,144,2,121, - 123,1,0,1,0,1,0,116,3,100,1,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,124,1,53,0,1, - 0,9,0,124,1,160,4,116,5,11,0,100,3,161,2,1, - 0,124,1,160,6,161,0,125,2,124,1,160,7,116,5,161, - 1,125,3,110,18,35,0,4,0,116,2,144,2,121,122,1, - 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,37,0,116,8,124,3,131,1,116, - 5,107,3,114,79,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,124,3,100,0,100,5,133,2,25, - 0,116,9,107,3,114,204,9,0,124,1,160,4,100,6,100, - 3,161,2,1,0,124,1,160,6,161,0,125,4,110,18,35, - 0,4,0,116,2,144,2,121,121,1,0,1,0,1,0,116, + 114,112,97,116,104,115,3,0,0,0,32,32,32,114,11,0, + 0,0,114,41,0,0,0,106,1,0,0,115,4,0,0,0, + 8,4,10,2,114,10,0,0,0,114,41,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,115,56,0,0,0,116,0,124,0,124,1,131,2, + 125,2,116,1,68,0,93,18,92,3,125,3,125,4,125,5, + 124,2,124,3,23,0,125,6,124,6,124,0,106,2,118,0, + 114,25,124,5,2,0,1,0,83,0,113,7,100,0,83,0, + 114,91,0,0,0,41,3,114,40,0,0,0,218,16,95,122, + 105,112,95,115,101,97,114,99,104,111,114,100,101,114,114,29, + 0,0,0,41,7,114,33,0,0,0,114,42,0,0,0,114, + 14,0,0,0,218,6,115,117,102,102,105,120,218,10,105,115, + 98,121,116,101,99,111,100,101,114,55,0,0,0,114,70,0, + 0,0,115,7,0,0,0,32,32,32,32,32,32,32,114,11, + 0,0,0,114,39,0,0,0,115,1,0,0,115,14,0,0, + 0,10,1,14,1,8,1,10,1,8,1,2,255,4,2,114, + 10,0,0,0,114,39,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,9,0,0,0,67,0,0,0,115,248, + 4,0,0,9,0,116,0,160,1,124,0,161,1,125,1,110, + 18,35,0,4,0,116,2,144,2,121,123,1,0,1,0,1, + 0,116,3,100,1,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,37,0,124,1,53,0,1,0,9,0,124,1,160, + 4,116,5,11,0,100,3,161,2,1,0,124,1,160,6,161, + 0,125,2,124,1,160,7,116,5,161,1,125,3,110,18,35, + 0,4,0,116,2,144,2,121,122,1,0,1,0,1,0,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,37,0,116,8,124,3,131,1,116,5,107,3,114,79,116, 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,37,0,116,10,124,4,116,11,24,0,116,5,24,0,100, - 6,131,2,125,5,9,0,124,1,160,4,124,5,161,1,1, - 0,124,1,160,7,161,0,125,6,110,18,35,0,4,0,116, - 2,144,2,121,120,1,0,1,0,1,0,116,3,100,4,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,37,0,124, - 6,160,12,116,9,161,1,125,7,124,7,100,6,107,0,114, - 173,116,3,100,7,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,124,6,124,7,124,7,116,5,23,0,133,2,25, - 0,125,3,116,8,124,3,131,1,116,5,107,3,114,196,116, - 3,100,8,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,4,116,8,124,6,131,1,24,0,124,7,23,0,125, - 2,116,13,124,3,100,9,100,10,133,2,25,0,131,1,125, - 8,116,13,124,3,100,10,100,11,133,2,25,0,131,1,125, - 9,124,2,124,8,107,0,114,233,116,3,100,12,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,2,124,9,107, - 0,114,246,116,3,100,13,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,124,2,124,8,56,0,125,2,124,2,124, - 9,24,0,125,10,124,10,100,6,107,0,144,1,114,12,116, - 3,100,14,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,105,0,125,11,100,6,125,12,9,0,124,1,160,4,124, - 2,161,1,1,0,110,18,35,0,4,0,116,2,144,2,121, - 119,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,9,0,124,1,160, - 7,100,16,161,1,125,3,116,8,124,3,131,1,100,5,107, - 0,144,1,114,58,116,14,100,17,131,1,130,1,124,3,100, - 0,100,5,133,2,25,0,100,18,107,3,144,1,114,69,144, - 2,113,88,116,8,124,3,131,1,100,16,107,3,144,1,114, - 80,116,14,100,17,131,1,130,1,116,15,124,3,100,19,100, - 20,133,2,25,0,131,1,125,13,116,15,124,3,100,20,100, - 9,133,2,25,0,131,1,125,14,116,15,124,3,100,9,100, - 21,133,2,25,0,131,1,125,15,116,15,124,3,100,21,100, - 10,133,2,25,0,131,1,125,16,116,13,124,3,100,10,100, - 11,133,2,25,0,131,1,125,17,116,13,124,3,100,11,100, - 22,133,2,25,0,131,1,125,18,116,13,124,3,100,22,100, - 23,133,2,25,0,131,1,125,4,116,15,124,3,100,23,100, - 24,133,2,25,0,131,1,125,19,116,15,124,3,100,24,100, - 25,133,2,25,0,131,1,125,20,116,15,124,3,100,25,100, - 26,133,2,25,0,131,1,125,21,116,13,124,3,100,27,100, - 16,133,2,25,0,131,1,125,22,124,19,124,20,23,0,124, - 21,23,0,125,8,124,22,124,9,107,4,144,1,114,188,116, - 3,100,28,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,22,124,10,55,0,125,22,9,0,124,1,160,7,124, - 19,161,1,125,23,110,18,35,0,4,0,116,2,144,2,121, - 118,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,116,8,124,23,131, - 1,124,19,107,3,144,1,114,233,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,9,0,116,8,124, - 1,160,7,124,8,124,19,24,0,161,1,131,1,124,8,124, - 19,24,0,107,3,144,2,114,1,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,110,18,35,0,4, - 0,116,2,144,2,121,117,1,0,1,0,1,0,116,3,100, - 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,37, - 0,124,13,100,29,64,0,144,2,114,30,124,23,160,16,161, - 0,125,23,110,26,9,0,124,23,160,16,100,30,161,1,125, - 23,110,19,35,0,4,0,116,17,144,2,121,116,1,0,1, - 0,1,0,124,23,160,16,100,31,161,1,160,18,116,19,161, - 1,125,23,89,0,110,1,37,0,124,23,160,20,100,32,116, - 21,161,2,125,23,116,22,160,23,124,0,124,23,161,2,125, - 24,124,24,124,14,124,18,124,4,124,22,124,15,124,16,124, - 17,102,8,125,25,124,25,124,11,124,23,60,0,124,12,100, - 33,55,0,125,12,144,1,113,42,9,0,100,0,4,0,4, - 0,131,3,1,0,110,12,35,0,49,0,144,2,115,101,119, - 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,116, - 24,160,25,100,34,124,12,124,0,161,3,1,0,124,11,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,119, - 0,41,35,78,122,21,99,97,110,39,116,32,111,112,101,110, - 32,90,105,112,32,102,105,108,101,58,32,114,13,0,0,0, - 114,94,0,0,0,250,21,99,97,110,39,116,32,114,101,97, - 100,32,90,105,112,32,102,105,108,101,58,32,233,4,0,0, - 0,114,0,0,0,0,122,16,110,111,116,32,97,32,90,105, - 112,32,102,105,108,101,58,32,122,18,99,111,114,114,117,112, - 116,32,90,105,112,32,102,105,108,101,58,32,233,12,0,0, - 0,233,16,0,0,0,233,20,0,0,0,122,28,98,97,100, - 32,99,101,110,116,114,97,108,32,100,105,114,101,99,116,111, - 114,121,32,115,105,122,101,58,32,122,30,98,97,100,32,99, - 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, - 32,111,102,102,115,101,116,58,32,122,38,98,97,100,32,99, - 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, - 32,115,105,122,101,32,111,114,32,111,102,102,115,101,116,58, - 32,84,233,46,0,0,0,250,27,69,79,70,32,114,101,97, - 100,32,119,104,101,114,101,32,110,111,116,32,101,120,112,101, - 99,116,101,100,115,4,0,0,0,80,75,1,2,233,8,0, - 0,0,233,10,0,0,0,233,14,0,0,0,233,24,0,0, - 0,233,28,0,0,0,233,30,0,0,0,233,32,0,0,0, - 233,34,0,0,0,233,42,0,0,0,122,25,98,97,100,32, - 108,111,99,97,108,32,104,101,97,100,101,114,32,111,102,102, - 115,101,116,58,32,105,0,8,0,0,218,5,97,115,99,105, - 105,90,6,108,97,116,105,110,49,250,1,47,114,5,0,0, - 0,122,33,122,105,112,105,109,112,111,114,116,58,32,102,111, - 117,110,100,32,123,125,32,110,97,109,101,115,32,105,110,32, - 123,33,114,125,41,26,218,3,95,105,111,218,9,111,112,101, - 110,95,99,111,100,101,114,23,0,0,0,114,3,0,0,0, - 218,4,115,101,101,107,218,20,69,78,68,95,67,69,78,84, - 82,65,76,95,68,73,82,95,83,73,90,69,90,4,116,101, - 108,108,218,4,114,101,97,100,114,59,0,0,0,218,18,83, - 84,82,73,78,71,95,69,78,68,95,65,82,67,72,73,86, - 69,218,3,109,97,120,218,15,77,65,88,95,67,79,77,77, - 69,78,84,95,76,69,78,218,5,114,102,105,110,100,114,2, - 0,0,0,218,8,69,79,70,69,114,114,111,114,114,1,0, - 0,0,114,69,0,0,0,218,18,85,110,105,99,111,100,101, - 68,101,99,111,100,101,69,114,114,111,114,218,9,116,114,97, - 110,115,108,97,116,101,218,11,99,112,52,51,55,95,116,97, - 98,108,101,114,20,0,0,0,114,21,0,0,0,114,22,0, - 0,0,114,31,0,0,0,114,49,0,0,0,114,82,0,0, - 0,41,26,114,30,0,0,0,218,2,102,112,90,15,104,101, - 97,100,101,114,95,112,111,115,105,116,105,111,110,218,6,98, - 117,102,102,101,114,218,9,102,105,108,101,95,115,105,122,101, - 90,17,109,97,120,95,99,111,109,109,101,110,116,95,115,116, - 97,114,116,218,4,100,97,116,97,90,3,112,111,115,218,11, - 104,101,97,100,101,114,95,115,105,122,101,90,13,104,101,97, - 100,101,114,95,111,102,102,115,101,116,90,10,97,114,99,95, - 111,102,102,115,101,116,114,34,0,0,0,218,5,99,111,117, - 110,116,218,5,102,108,97,103,115,218,8,99,111,109,112,114, - 101,115,115,218,4,116,105,109,101,218,4,100,97,116,101,218, - 3,99,114,99,218,9,100,97,116,97,95,115,105,122,101,218, - 9,110,97,109,101,95,115,105,122,101,218,10,101,120,116,114, - 97,95,115,105,122,101,90,12,99,111,109,109,101,110,116,95, - 115,105,122,101,218,11,102,105,108,101,95,111,102,102,115,101, - 116,114,48,0,0,0,114,14,0,0,0,218,1,116,32,32, + 1,124,3,100,0,100,5,133,2,25,0,116,9,107,3,114, + 204,9,0,124,1,160,4,100,6,100,3,161,2,1,0,124, + 1,160,6,161,0,125,4,110,18,35,0,4,0,116,2,144, + 2,121,121,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,37,0,116,10,124, + 4,116,11,24,0,116,5,24,0,100,6,131,2,125,5,9, + 0,124,1,160,4,124,5,161,1,1,0,124,1,160,7,161, + 0,125,6,110,18,35,0,4,0,116,2,144,2,121,120,1, + 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,37,0,124,6,160,12,116,9,161, + 1,125,7,124,7,100,6,107,0,114,173,116,3,100,7,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,6,124, + 7,124,7,116,5,23,0,133,2,25,0,125,3,116,8,124, + 3,131,1,116,5,107,3,114,196,116,3,100,8,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,4,116,8,124, + 6,131,1,24,0,124,7,23,0,125,2,116,13,124,3,100, + 9,100,10,133,2,25,0,131,1,125,8,116,13,124,3,100, + 10,100,11,133,2,25,0,131,1,125,9,124,2,124,8,107, + 0,114,233,116,3,100,12,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,2,124,9,107,0,114,246,116,3,100, + 13,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, + 2,124,8,56,0,125,2,124,2,124,9,24,0,125,10,124, + 10,100,6,107,0,144,1,114,12,116,3,100,14,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,105,0,125,11,100, + 6,125,12,9,0,124,1,160,4,124,2,161,1,1,0,110, + 18,35,0,4,0,116,2,144,2,121,119,1,0,1,0,1, + 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,37,0,9,0,124,1,160,7,100,16,161,1,125, + 3,116,8,124,3,131,1,100,5,107,0,144,1,114,58,116, + 14,100,17,131,1,130,1,124,3,100,0,100,5,133,2,25, + 0,100,18,107,3,144,1,114,69,144,2,113,88,116,8,124, + 3,131,1,100,16,107,3,144,1,114,80,116,14,100,17,131, + 1,130,1,116,15,124,3,100,19,100,20,133,2,25,0,131, + 1,125,13,116,15,124,3,100,20,100,9,133,2,25,0,131, + 1,125,14,116,15,124,3,100,9,100,21,133,2,25,0,131, + 1,125,15,116,15,124,3,100,21,100,10,133,2,25,0,131, + 1,125,16,116,13,124,3,100,10,100,11,133,2,25,0,131, + 1,125,17,116,13,124,3,100,11,100,22,133,2,25,0,131, + 1,125,18,116,13,124,3,100,22,100,23,133,2,25,0,131, + 1,125,4,116,15,124,3,100,23,100,24,133,2,25,0,131, + 1,125,19,116,15,124,3,100,24,100,25,133,2,25,0,131, + 1,125,20,116,15,124,3,100,25,100,26,133,2,25,0,131, + 1,125,21,116,13,124,3,100,27,100,16,133,2,25,0,131, + 1,125,22,124,19,124,20,23,0,124,21,23,0,125,8,124, + 22,124,9,107,4,144,1,114,188,116,3,100,28,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,22,124,10,55, + 0,125,22,9,0,124,1,160,7,124,19,161,1,125,23,110, + 18,35,0,4,0,116,2,144,2,121,118,1,0,1,0,1, + 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,37,0,116,8,124,23,131,1,124,19,107,3,144, + 1,114,233,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,9,0,116,8,124,1,160,7,124,8,124, + 19,24,0,161,1,131,1,124,8,124,19,24,0,107,3,144, + 2,114,1,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,110,18,35,0,4,0,116,2,144,2,121, + 117,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,37,0,124,13,100,29,64, + 0,144,2,114,30,124,23,160,16,161,0,125,23,110,26,9, + 0,124,23,160,16,100,30,161,1,125,23,110,19,35,0,4, + 0,116,17,144,2,121,116,1,0,1,0,1,0,124,23,160, + 16,100,31,161,1,160,18,116,19,161,1,125,23,89,0,110, + 1,37,0,124,23,160,20,100,32,116,21,161,2,125,23,116, + 22,160,23,124,0,124,23,161,2,125,24,124,24,124,14,124, + 18,124,4,124,22,124,15,124,16,124,17,102,8,125,25,124, + 25,124,11,124,23,60,0,124,12,100,33,55,0,125,12,144, + 1,113,42,9,0,100,0,4,0,4,0,131,3,1,0,110, + 12,35,0,49,0,144,2,115,101,119,4,37,0,1,0,1, + 0,1,0,89,0,1,0,1,0,116,24,160,25,100,34,124, + 12,124,0,161,3,1,0,124,11,83,0,119,0,119,0,119, + 0,119,0,119,0,119,0,119,0,119,0,41,35,78,122,21, + 99,97,110,39,116,32,111,112,101,110,32,90,105,112,32,102, + 105,108,101,58,32,114,13,0,0,0,114,94,0,0,0,250, + 21,99,97,110,39,116,32,114,101,97,100,32,90,105,112,32, + 102,105,108,101,58,32,233,4,0,0,0,114,0,0,0,0, + 122,16,110,111,116,32,97,32,90,105,112,32,102,105,108,101, + 58,32,122,18,99,111,114,114,117,112,116,32,90,105,112,32, + 102,105,108,101,58,32,233,12,0,0,0,233,16,0,0,0, + 233,20,0,0,0,122,28,98,97,100,32,99,101,110,116,114, + 97,108,32,100,105,114,101,99,116,111,114,121,32,115,105,122, + 101,58,32,122,30,98,97,100,32,99,101,110,116,114,97,108, + 32,100,105,114,101,99,116,111,114,121,32,111,102,102,115,101, + 116,58,32,122,38,98,97,100,32,99,101,110,116,114,97,108, + 32,100,105,114,101,99,116,111,114,121,32,115,105,122,101,32, + 111,114,32,111,102,102,115,101,116,58,32,84,233,46,0,0, + 0,250,27,69,79,70,32,114,101,97,100,32,119,104,101,114, + 101,32,110,111,116,32,101,120,112,101,99,116,101,100,115,4, + 0,0,0,80,75,1,2,233,8,0,0,0,233,10,0,0, + 0,233,14,0,0,0,233,24,0,0,0,233,28,0,0,0, + 233,30,0,0,0,233,32,0,0,0,233,34,0,0,0,233, + 42,0,0,0,122,25,98,97,100,32,108,111,99,97,108,32, + 104,101,97,100,101,114,32,111,102,102,115,101,116,58,32,105, + 0,8,0,0,218,5,97,115,99,105,105,90,6,108,97,116, + 105,110,49,250,1,47,114,5,0,0,0,122,33,122,105,112, + 105,109,112,111,114,116,58,32,102,111,117,110,100,32,123,125, + 32,110,97,109,101,115,32,105,110,32,123,33,114,125,41,26, + 218,3,95,105,111,218,9,111,112,101,110,95,99,111,100,101, + 114,23,0,0,0,114,3,0,0,0,218,4,115,101,101,107, + 218,20,69,78,68,95,67,69,78,84,82,65,76,95,68,73, + 82,95,83,73,90,69,90,4,116,101,108,108,218,4,114,101, + 97,100,114,59,0,0,0,218,18,83,84,82,73,78,71,95, + 69,78,68,95,65,82,67,72,73,86,69,218,3,109,97,120, + 218,15,77,65,88,95,67,79,77,77,69,78,84,95,76,69, + 78,218,5,114,102,105,110,100,114,2,0,0,0,218,8,69, + 79,70,69,114,114,111,114,114,1,0,0,0,114,69,0,0, + 0,218,18,85,110,105,99,111,100,101,68,101,99,111,100,101, + 69,114,114,111,114,218,9,116,114,97,110,115,108,97,116,101, + 218,11,99,112,52,51,55,95,116,97,98,108,101,114,20,0, + 0,0,114,21,0,0,0,114,22,0,0,0,114,31,0,0, + 0,114,49,0,0,0,114,82,0,0,0,41,26,114,30,0, + 0,0,218,2,102,112,90,15,104,101,97,100,101,114,95,112, + 111,115,105,116,105,111,110,218,6,98,117,102,102,101,114,218, + 9,102,105,108,101,95,115,105,122,101,90,17,109,97,120,95, + 99,111,109,109,101,110,116,95,115,116,97,114,116,218,4,100, + 97,116,97,90,3,112,111,115,218,11,104,101,97,100,101,114, + 95,115,105,122,101,90,13,104,101,97,100,101,114,95,111,102, + 102,115,101,116,90,10,97,114,99,95,111,102,102,115,101,116, + 114,34,0,0,0,218,5,99,111,117,110,116,218,5,102,108, + 97,103,115,218,8,99,111,109,112,114,101,115,115,218,4,116, + 105,109,101,218,4,100,97,116,101,218,3,99,114,99,218,9, + 100,97,116,97,95,115,105,122,101,218,9,110,97,109,101,95, + 115,105,122,101,218,10,101,120,116,114,97,95,115,105,122,101, + 90,12,99,111,109,109,101,110,116,95,115,105,122,101,218,11, + 102,105,108,101,95,111,102,102,115,101,116,114,48,0,0,0, + 114,14,0,0,0,218,1,116,115,26,0,0,0,32,32,32, 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,114,10,0,0,0,114,28,0, - 0,0,146,1,0,0,115,16,1,0,0,2,1,12,1,2, - 128,14,1,18,1,2,128,6,2,2,1,14,1,8,1,12, - 1,2,128,14,1,18,1,2,128,12,1,18,1,16,1,2, - 3,12,1,10,1,2,128,14,1,10,1,2,1,6,255,2, - 128,8,2,2,1,2,255,2,1,4,255,2,2,10,1,10, - 1,2,128,14,1,10,1,2,1,6,255,2,128,10,2,8, - 1,10,1,2,1,6,255,16,2,12,1,10,1,2,1,6, - 255,16,2,16,2,16,1,8,1,18,1,8,1,18,1,8, - 1,8,1,10,1,18,1,4,2,4,2,2,1,12,1,2, - 128,14,1,18,1,2,128,2,1,10,1,14,1,8,1,18, - 2,4,1,14,1,8,1,16,1,16,1,16,1,16,1,16, - 1,16,1,16,1,16,1,16,1,16,1,16,1,12,1,10, - 1,18,1,8,1,2,2,12,1,2,128,14,1,18,1,2, - 128,14,1,18,1,2,4,28,1,18,1,2,255,2,128,14, - 2,18,1,2,128,10,2,10,2,2,3,12,1,2,128,14, - 1,20,1,2,128,12,2,12,1,20,1,8,1,8,1,4, - 202,2,6,12,196,24,128,14,109,4,1,2,247,2,246,2, - 246,2,227,2,227,2,248,2,246,2,248,115,235,0,0,0, - 129,5,7,0,135,17,24,7,155,1,73,31,3,157,16,46, - 2,173,1,73,31,3,174,17,63,9,191,24,73,31,3,193, - 24,10,65,35,2,193,34,1,73,31,3,193,35,17,65,52, - 9,193,52,10,73,31,3,193,63,9,66,9,2,194,8,1, - 73,31,3,194,9,17,66,26,9,194,26,65,54,73,31,3, - 196,17,5,68,23,2,196,22,1,73,31,3,196,23,17,68, - 40,9,196,40,66,24,73,31,3,199,1,5,71,7,2,199, - 6,1,73,31,3,199,7,17,71,24,9,199,24,17,73,31, - 3,199,42,23,72,2,2,200,1,1,73,31,3,200,2,17, - 72,19,9,200,19,11,73,31,3,200,31,5,72,37,2,200, - 36,1,73,31,3,200,37,16,72,55,9,200,53,35,73,31, - 3,201,31,5,73,36,11,201,37,3,73,36,11,201,52,1, - 72,55,9,201,53,1,72,19,9,201,54,1,71,24,9,201, - 55,1,68,40,9,201,56,1,66,26,9,201,57,1,65,52, - 9,201,58,1,63,9,201,59,1,24,7,114,28,0,0,0, - 117,190,1,0,0,0,1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42, - 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, - 75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, - 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106, - 107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122, - 123,124,125,126,127,195,135,195,188,195,169,195,162,195,164,195, - 160,195,165,195,167,195,170,195,171,195,168,195,175,195,174,195, - 172,195,132,195,133,195,137,195,166,195,134,195,180,195,182,195, - 178,195,187,195,185,195,191,195,150,195,156,194,162,194,163,194, - 165,226,130,167,198,146,195,161,195,173,195,179,195,186,195,177, - 195,145,194,170,194,186,194,191,226,140,144,194,172,194,189,194, - 188,194,161,194,171,194,187,226,150,145,226,150,146,226,150,147, - 226,148,130,226,148,164,226,149,161,226,149,162,226,149,150,226, - 149,149,226,149,163,226,149,145,226,149,151,226,149,157,226,149, - 156,226,149,155,226,148,144,226,148,148,226,148,180,226,148,172, - 226,148,156,226,148,128,226,148,188,226,149,158,226,149,159,226, - 149,154,226,149,148,226,149,169,226,149,166,226,149,160,226,149, - 144,226,149,172,226,149,167,226,149,168,226,149,164,226,149,165, - 226,149,153,226,149,152,226,149,146,226,149,147,226,149,171,226, - 149,170,226,148,152,226,148,140,226,150,136,226,150,132,226,150, - 140,226,150,144,226,150,128,206,177,195,159,206,147,207,128,206, - 163,207,131,194,181,207,132,206,166,206,152,206,169,206,180,226, - 136,158,207,134,206,181,226,136,169,226,137,161,194,177,226,137, - 165,226,137,164,226,140,160,226,140,161,195,183,226,137,136,194, - 176,226,136,153,194,183,226,136,154,226,129,191,194,178,226,150, - 160,194,160,99,0,0,0,0,0,0,0,0,0,0,0,0, - 8,0,0,0,67,0,0,0,115,110,0,0,0,116,0,114, - 11,116,1,160,2,100,1,161,1,1,0,116,3,100,2,131, - 1,130,1,100,3,97,0,9,0,100,4,100,5,108,4,109, - 5,125,0,1,0,110,17,35,0,4,0,116,6,121,54,1, - 0,1,0,1,0,116,1,160,2,100,1,161,1,1,0,116, - 3,100,2,131,1,130,1,37,0,9,0,100,6,97,0,110, - 5,35,0,100,6,97,0,119,0,37,0,116,1,160,2,100, - 7,161,1,1,0,124,0,83,0,119,0,41,8,78,122,27, - 122,105,112,105,109,112,111,114,116,58,32,122,108,105,98,32, - 85,78,65,86,65,73,76,65,66,76,69,250,41,99,97,110, - 39,116,32,100,101,99,111,109,112,114,101,115,115,32,100,97, - 116,97,59,32,122,108,105,98,32,110,111,116,32,97,118,97, - 105,108,97,98,108,101,84,114,0,0,0,0,169,1,218,10, - 100,101,99,111,109,112,114,101,115,115,70,122,25,122,105,112, - 105,109,112,111,114,116,58,32,122,108,105,98,32,97,118,97, - 105,108,97,98,108,101,41,7,218,15,95,105,109,112,111,114, - 116,105,110,103,95,122,108,105,98,114,49,0,0,0,114,82, - 0,0,0,114,3,0,0,0,90,4,122,108,105,98,114,148, - 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,147, - 0,0,0,32,114,10,0,0,0,218,20,95,103,101,116,95, - 100,101,99,111,109,112,114,101,115,115,95,102,117,110,99,48, - 2,0,0,115,36,0,0,0,4,2,10,3,8,1,4,2, - 2,1,14,1,2,128,12,1,10,1,8,1,2,128,2,253, - 6,5,2,128,8,0,10,2,4,1,2,249,115,24,0,0, - 0,142,6,21,0,148,1,42,0,149,16,37,7,165,1,42, - 0,170,4,46,7,182,1,37,7,114,151,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,67, - 0,0,0,115,132,1,0,0,124,1,92,8,125,2,125,3, - 125,4,125,5,125,6,125,7,125,8,125,9,124,4,100,1, - 107,0,114,18,116,0,100,2,131,1,130,1,116,1,160,2, - 124,0,161,1,53,0,125,10,9,0,124,10,160,3,124,6, - 161,1,1,0,110,17,35,0,4,0,116,4,121,193,1,0, - 1,0,1,0,116,0,100,3,124,0,155,2,157,2,124,0, - 100,4,141,2,130,1,37,0,124,10,160,5,100,5,161,1, - 125,11,116,6,124,11,131,1,100,5,107,3,114,63,116,7, - 100,6,131,1,130,1,124,11,100,0,100,7,133,2,25,0, - 100,8,107,3,114,80,116,0,100,9,124,0,155,2,157,2, - 124,0,100,4,141,2,130,1,116,8,124,11,100,10,100,11, - 133,2,25,0,131,1,125,12,116,8,124,11,100,11,100,5, - 133,2,25,0,131,1,125,13,100,5,124,12,23,0,124,13, - 23,0,125,14,124,6,124,14,55,0,125,6,9,0,124,10, + 32,32,32,32,32,32,32,114,11,0,0,0,114,28,0,0, + 0,146,1,0,0,115,16,1,0,0,2,1,12,1,2,128, + 14,1,18,1,2,128,6,2,2,1,14,1,8,1,12,1, + 2,128,14,1,18,1,2,128,12,1,18,1,16,1,2,3, + 12,1,10,1,2,128,14,1,10,1,2,1,6,255,2,128, + 8,2,2,1,2,255,2,1,4,255,2,2,10,1,10,1, + 2,128,14,1,10,1,2,1,6,255,2,128,10,2,8,1, + 10,1,2,1,6,255,16,2,12,1,10,1,2,1,6,255, + 16,2,16,2,16,1,8,1,18,1,8,1,18,1,8,1, + 8,1,10,1,18,1,4,2,4,2,2,1,12,1,2,128, + 14,1,18,1,2,128,2,1,10,1,14,1,8,1,18,2, + 4,1,14,1,8,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,12,1,10,1, + 18,1,8,1,2,2,12,1,2,128,14,1,18,1,2,128, + 14,1,18,1,2,4,28,1,18,1,2,255,2,128,14,2, + 18,1,2,128,10,2,10,2,2,3,12,1,2,128,14,1, + 20,1,2,128,12,2,12,1,20,1,8,1,8,1,4,202, + 2,6,12,196,24,128,14,109,4,1,2,247,2,246,2,246, + 2,227,2,227,2,248,2,246,2,248,115,235,0,0,0,129, + 5,7,0,135,17,24,7,155,1,73,31,3,157,16,46,2, + 173,1,73,31,3,174,17,63,9,191,24,73,31,3,193,24, + 10,65,35,2,193,34,1,73,31,3,193,35,17,65,52,9, + 193,52,10,73,31,3,193,63,9,66,9,2,194,8,1,73, + 31,3,194,9,17,66,26,9,194,26,65,54,73,31,3,196, + 17,5,68,23,2,196,22,1,73,31,3,196,23,17,68,40, + 9,196,40,66,24,73,31,3,199,1,5,71,7,2,199,6, + 1,73,31,3,199,7,17,71,24,9,199,24,17,73,31,3, + 199,42,23,72,2,2,200,1,1,73,31,3,200,2,17,72, + 19,9,200,19,11,73,31,3,200,31,5,72,37,2,200,36, + 1,73,31,3,200,37,16,72,55,9,200,53,35,73,31,3, + 201,31,5,73,36,11,201,37,3,73,36,11,201,52,1,72, + 55,9,201,53,1,72,19,9,201,54,1,71,24,9,201,55, + 1,68,40,9,201,56,1,66,26,9,201,57,1,65,52,9, + 201,58,1,63,9,201,59,1,24,7,114,28,0,0,0,117, + 190,1,0,0,0,1,2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, + 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43, + 44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59, + 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, + 76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91, + 92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, + 108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123, + 124,125,126,127,195,135,195,188,195,169,195,162,195,164,195,160, + 195,165,195,167,195,170,195,171,195,168,195,175,195,174,195,172, + 195,132,195,133,195,137,195,166,195,134,195,180,195,182,195,178, + 195,187,195,185,195,191,195,150,195,156,194,162,194,163,194,165, + 226,130,167,198,146,195,161,195,173,195,179,195,186,195,177,195, + 145,194,170,194,186,194,191,226,140,144,194,172,194,189,194,188, + 194,161,194,171,194,187,226,150,145,226,150,146,226,150,147,226, + 148,130,226,148,164,226,149,161,226,149,162,226,149,150,226,149, + 149,226,149,163,226,149,145,226,149,151,226,149,157,226,149,156, + 226,149,155,226,148,144,226,148,148,226,148,180,226,148,172,226, + 148,156,226,148,128,226,148,188,226,149,158,226,149,159,226,149, + 154,226,149,148,226,149,169,226,149,166,226,149,160,226,149,144, + 226,149,172,226,149,167,226,149,168,226,149,164,226,149,165,226, + 149,153,226,149,152,226,149,146,226,149,147,226,149,171,226,149, + 170,226,148,152,226,148,140,226,150,136,226,150,132,226,150,140, + 226,150,144,226,150,128,206,177,195,159,206,147,207,128,206,163, + 207,131,194,181,207,132,206,166,206,152,206,169,206,180,226,136, + 158,207,134,206,181,226,136,169,226,137,161,194,177,226,137,165, + 226,137,164,226,140,160,226,140,161,195,183,226,137,136,194,176, + 226,136,153,194,183,226,136,154,226,129,191,194,178,226,150,160, + 194,160,99,0,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,67,0,0,0,115,110,0,0,0,116,0,114,11, + 116,1,160,2,100,1,161,1,1,0,116,3,100,2,131,1, + 130,1,100,3,97,0,9,0,100,4,100,5,108,4,109,5, + 125,0,1,0,110,17,35,0,4,0,116,6,121,54,1,0, + 1,0,1,0,116,1,160,2,100,1,161,1,1,0,116,3, + 100,2,131,1,130,1,37,0,9,0,100,6,97,0,110,5, + 35,0,100,6,97,0,119,0,37,0,116,1,160,2,100,7, + 161,1,1,0,124,0,83,0,119,0,41,8,78,122,27,122, + 105,112,105,109,112,111,114,116,58,32,122,108,105,98,32,85, + 78,65,86,65,73,76,65,66,76,69,250,41,99,97,110,39, + 116,32,100,101,99,111,109,112,114,101,115,115,32,100,97,116, + 97,59,32,122,108,105,98,32,110,111,116,32,97,118,97,105, + 108,97,98,108,101,84,114,0,0,0,0,169,1,218,10,100, + 101,99,111,109,112,114,101,115,115,70,122,25,122,105,112,105, + 109,112,111,114,116,58,32,122,108,105,98,32,97,118,97,105, + 108,97,98,108,101,41,7,218,15,95,105,109,112,111,114,116, + 105,110,103,95,122,108,105,98,114,49,0,0,0,114,82,0, + 0,0,114,3,0,0,0,90,4,122,108,105,98,114,148,0, + 0,0,218,9,69,120,99,101,112,116,105,111,110,114,147,0, + 0,0,115,1,0,0,0,32,114,11,0,0,0,218,20,95, + 103,101,116,95,100,101,99,111,109,112,114,101,115,115,95,102, + 117,110,99,48,2,0,0,115,36,0,0,0,4,2,10,3, + 8,1,4,2,2,1,14,1,2,128,12,1,10,1,8,1, + 2,128,2,253,6,5,2,128,8,0,10,2,4,1,2,249, + 115,24,0,0,0,142,6,21,0,148,1,42,0,149,16,37, + 7,165,1,42,0,170,4,46,7,182,1,37,7,114,151,0, + 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,67,0,0,0,115,132,1,0,0,124,1,92,8, + 125,2,125,3,125,4,125,5,125,6,125,7,125,8,125,9, + 124,4,100,1,107,0,114,18,116,0,100,2,131,1,130,1, + 116,1,160,2,124,0,161,1,53,0,125,10,9,0,124,10, 160,3,124,6,161,1,1,0,110,17,35,0,4,0,116,4, - 121,192,1,0,1,0,1,0,116,0,100,3,124,0,155,2, + 121,193,1,0,1,0,1,0,116,0,100,3,124,0,155,2, 157,2,124,0,100,4,141,2,130,1,37,0,124,10,160,5, - 124,4,161,1,125,15,116,6,124,15,131,1,124,4,107,3, - 114,145,116,4,100,12,131,1,130,1,9,0,100,0,4,0, - 4,0,131,3,1,0,110,11,35,0,49,0,115,157,119,4, - 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,3, - 100,1,107,2,114,169,124,15,83,0,9,0,116,9,131,0, - 125,16,110,12,35,0,4,0,116,10,121,191,1,0,1,0, - 1,0,116,0,100,13,131,1,130,1,37,0,124,16,124,15, - 100,14,131,2,83,0,119,0,119,0,119,0,41,15,78,114, - 0,0,0,0,122,18,110,101,103,97,116,105,118,101,32,100, - 97,116,97,32,115,105,122,101,114,99,0,0,0,114,13,0, - 0,0,114,111,0,0,0,114,105,0,0,0,114,100,0,0, - 0,115,4,0,0,0,80,75,3,4,122,23,98,97,100,32, - 108,111,99,97,108,32,102,105,108,101,32,104,101,97,100,101, - 114,58,32,233,26,0,0,0,114,110,0,0,0,122,26,122, - 105,112,105,109,112,111,114,116,58,32,99,97,110,39,116,32, - 114,101,97,100,32,100,97,116,97,114,146,0,0,0,105,241, - 255,255,255,41,11,114,3,0,0,0,114,117,0,0,0,114, - 118,0,0,0,114,119,0,0,0,114,23,0,0,0,114,121, - 0,0,0,114,59,0,0,0,114,126,0,0,0,114,1,0, - 0,0,114,151,0,0,0,114,150,0,0,0,41,17,114,30, - 0,0,0,114,62,0,0,0,90,8,100,97,116,97,112,97, - 116,104,114,137,0,0,0,114,141,0,0,0,114,132,0,0, - 0,114,144,0,0,0,114,138,0,0,0,114,139,0,0,0, - 114,140,0,0,0,114,130,0,0,0,114,131,0,0,0,114, - 142,0,0,0,114,143,0,0,0,114,134,0,0,0,90,8, - 114,97,119,95,100,97,116,97,114,148,0,0,0,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,10, - 0,0,0,114,60,0,0,0,69,2,0,0,115,86,0,0, - 0,20,1,8,1,8,1,12,2,2,2,12,1,2,128,12, - 1,18,1,2,128,10,1,12,1,8,1,16,2,18,2,16, - 2,16,1,12,1,8,1,2,1,12,1,2,128,12,1,18, - 1,2,128,10,1,12,1,8,1,2,255,12,233,22,128,8, - 26,4,2,2,3,8,1,2,128,12,1,8,1,2,128,10, - 1,2,254,2,243,2,240,115,88,0,0,0,151,1,66,24, - 3,153,5,31,2,158,1,66,24,3,159,16,47,9,175,59, - 66,24,3,193,43,5,65,49,2,193,48,1,66,24,3,193, - 49,16,66,1,9,194,1,16,66,24,3,194,24,4,66,28, - 11,194,29,3,66,28,11,194,42,3,66,46,0,194,46,11, - 66,57,7,194,63,1,66,57,7,195,0,1,66,1,9,195, - 1,1,47,9,114,60,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,67,0,0,0,115,16, - 0,0,0,116,0,124,0,124,1,24,0,131,1,100,1,107, - 1,83,0,41,2,78,114,5,0,0,0,41,1,218,3,97, - 98,115,41,2,90,2,116,49,90,2,116,50,32,32,114,10, - 0,0,0,218,9,95,101,113,95,109,116,105,109,101,115,2, - 0,0,115,2,0,0,0,16,2,114,11,0,0,0,114,154, - 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, - 6,0,0,0,67,0,0,0,115,254,0,0,0,124,3,124, - 2,100,1,156,2,125,5,116,0,160,1,124,4,124,3,124, - 5,161,3,125,6,124,6,100,2,64,0,100,3,107,3,125, - 7,124,7,114,63,124,6,100,4,64,0,100,3,107,3,125, - 8,116,2,106,3,100,5,107,3,114,62,124,8,115,38,116, - 2,106,3,100,6,107,2,114,62,116,4,124,0,124,2,131, - 2,125,9,124,9,100,0,117,1,114,62,116,2,160,5,116, - 0,106,6,124,9,161,2,125,10,116,0,160,7,124,4,124, - 10,124,3,124,5,161,4,1,0,110,40,116,8,124,0,124, - 2,131,2,92,2,125,11,125,12,124,11,114,103,116,9,116, - 10,124,4,100,7,100,8,133,2,25,0,131,1,124,11,131, - 2,114,93,116,10,124,4,100,8,100,9,133,2,25,0,131, - 1,124,12,107,3,114,103,116,11,160,12,100,10,124,3,155, - 2,157,2,161,1,1,0,100,0,83,0,116,13,160,14,124, - 4,100,9,100,0,133,2,25,0,161,1,125,13,116,15,124, - 13,116,16,131,2,115,125,116,17,100,11,124,1,155,2,100, - 12,157,3,131,1,130,1,124,13,83,0,41,13,78,41,2, - 114,48,0,0,0,114,14,0,0,0,114,5,0,0,0,114, - 0,0,0,0,114,94,0,0,0,90,5,110,101,118,101,114, - 90,6,97,108,119,97,121,115,114,106,0,0,0,114,101,0, - 0,0,114,102,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,122, - 16,99,111,109,112,105,108,101,100,32,109,111,100,117,108,101, - 32,122,21,32,105,115,32,110,111,116,32,97,32,99,111,100, - 101,32,111,98,106,101,99,116,41,18,114,22,0,0,0,90, - 13,95,99,108,97,115,115,105,102,121,95,112,121,99,218,4, - 95,105,109,112,90,21,99,104,101,99,107,95,104,97,115,104, - 95,98,97,115,101,100,95,112,121,99,115,218,15,95,103,101, - 116,95,112,121,99,95,115,111,117,114,99,101,218,11,115,111, - 117,114,99,101,95,104,97,115,104,90,17,95,82,65,87,95, - 77,65,71,73,67,95,78,85,77,66,69,82,90,18,95,118, - 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, - 218,29,95,103,101,116,95,109,116,105,109,101,95,97,110,100, - 95,115,105,122,101,95,111,102,95,115,111,117,114,99,101,114, - 154,0,0,0,114,2,0,0,0,114,49,0,0,0,114,82, - 0,0,0,218,7,109,97,114,115,104,97,108,90,5,108,111, - 97,100,115,114,16,0,0,0,218,10,95,99,111,100,101,95, - 116,121,112,101,218,9,84,121,112,101,69,114,114,111,114,41, - 14,114,33,0,0,0,114,61,0,0,0,114,70,0,0,0, - 114,42,0,0,0,114,133,0,0,0,90,11,101,120,99,95, - 100,101,116,97,105,108,115,114,136,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,90,12,115,111,117,114,99,101,95,98, - 121,116,101,115,114,157,0,0,0,90,12,115,111,117,114,99, - 101,95,109,116,105,109,101,90,11,115,111,117,114,99,101,95, - 115,105,122,101,114,54,0,0,0,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,114,10,0,0,0,218,15,95,117, - 110,109,97,114,115,104,97,108,95,99,111,100,101,123,2,0, - 0,115,72,0,0,0,2,2,2,1,6,254,14,5,12,2, - 4,1,12,1,10,1,2,1,2,255,8,1,2,255,10,2, - 8,1,4,1,4,1,2,1,4,254,4,5,8,1,4,255, - 2,128,8,4,6,255,4,3,22,3,18,1,2,255,4,2, - 8,1,4,255,4,2,18,2,10,1,16,1,4,1,114,11, - 0,0,0,114,162,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,28,0, - 0,0,124,0,160,0,100,1,100,2,161,2,125,0,124,0, - 160,0,100,3,100,2,161,2,125,0,124,0,83,0,41,4, - 78,115,2,0,0,0,13,10,243,1,0,0,0,10,243,1, - 0,0,0,13,41,1,114,20,0,0,0,41,1,218,6,115, - 111,117,114,99,101,32,114,10,0,0,0,218,23,95,110,111, - 114,109,97,108,105,122,101,95,108,105,110,101,95,101,110,100, - 105,110,103,115,168,2,0,0,115,6,0,0,0,12,1,12, - 1,4,1,114,11,0,0,0,114,166,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,6,0,0,0,67,0, - 0,0,115,24,0,0,0,116,0,124,1,131,1,125,1,116, - 1,124,1,124,0,100,1,100,2,100,3,141,4,83,0,41, - 4,78,114,80,0,0,0,84,41,1,90,12,100,111,110,116, - 95,105,110,104,101,114,105,116,41,2,114,166,0,0,0,218, - 7,99,111,109,112,105,108,101,41,2,114,61,0,0,0,114, - 165,0,0,0,32,32,114,10,0,0,0,218,15,95,99,111, - 109,112,105,108,101,95,115,111,117,114,99,101,175,2,0,0, - 115,4,0,0,0,8,1,16,1,114,11,0,0,0,114,168, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 11,0,0,0,67,0,0,0,115,68,0,0,0,116,0,160, - 1,124,0,100,1,63,0,100,2,23,0,124,0,100,3,63, - 0,100,4,64,0,124,0,100,5,64,0,124,1,100,6,63, - 0,124,1,100,3,63,0,100,7,64,0,124,1,100,5,64, - 0,100,8,20,0,100,9,100,9,100,9,102,9,161,1,83, - 0,41,10,78,233,9,0,0,0,105,188,7,0,0,233,5, - 0,0,0,233,15,0,0,0,233,31,0,0,0,233,11,0, - 0,0,233,63,0,0,0,114,94,0,0,0,114,15,0,0, - 0,41,2,114,138,0,0,0,90,6,109,107,116,105,109,101, - 41,2,218,1,100,114,145,0,0,0,32,32,114,10,0,0, - 0,218,14,95,112,97,114,115,101,95,100,111,115,116,105,109, - 101,181,2,0,0,115,18,0,0,0,4,1,10,1,10,1, - 6,1,6,1,10,1,10,1,6,1,6,249,114,11,0,0, - 0,114,176,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,10,0,0,0,67,0,0,0,115,112,0,0,0, - 9,0,124,1,100,1,100,0,133,2,25,0,100,2,118,0, - 115,11,74,0,130,1,124,1,100,0,100,1,133,2,25,0, - 125,1,124,0,106,0,124,1,25,0,125,2,124,2,100,3, - 25,0,125,3,124,2,100,4,25,0,125,4,124,2,100,5, - 25,0,125,5,116,1,124,4,124,3,131,2,124,5,102,2, - 83,0,35,0,4,0,116,2,116,3,116,4,102,3,121,55, - 1,0,1,0,1,0,89,0,100,6,83,0,37,0,119,0, - 41,7,78,114,15,0,0,0,169,2,218,1,99,218,1,111, - 114,170,0,0,0,233,6,0,0,0,233,3,0,0,0,41, - 2,114,0,0,0,0,114,0,0,0,0,41,5,114,29,0, - 0,0,114,176,0,0,0,114,27,0,0,0,218,10,73,110, - 100,101,120,69,114,114,111,114,114,161,0,0,0,41,6,114, - 33,0,0,0,114,14,0,0,0,114,62,0,0,0,114,138, - 0,0,0,114,139,0,0,0,90,17,117,110,99,111,109,112, - 114,101,115,115,101,100,95,115,105,122,101,32,32,32,32,32, - 32,114,10,0,0,0,114,158,0,0,0,194,2,0,0,115, - 26,0,0,0,2,1,20,2,12,1,10,1,8,3,8,1, - 8,1,14,1,2,128,18,1,6,1,2,128,2,255,115,12, - 0,0,0,129,39,41,0,169,10,54,7,183,1,54,7,114, - 158,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,67,0,0,0,115,82,0,0,0,124,1, - 100,1,100,0,133,2,25,0,100,2,118,0,115,10,74,0, - 130,1,124,1,100,0,100,1,133,2,25,0,125,1,9,0, - 124,0,106,0,124,1,25,0,125,2,110,11,35,0,4,0, - 116,1,121,40,1,0,1,0,1,0,89,0,100,0,83,0, - 37,0,116,2,124,0,106,3,124,2,131,2,83,0,119,0, - 41,3,78,114,15,0,0,0,114,177,0,0,0,41,4,114, - 29,0,0,0,114,27,0,0,0,114,60,0,0,0,114,30, - 0,0,0,41,3,114,33,0,0,0,114,14,0,0,0,114, - 62,0,0,0,32,32,32,114,10,0,0,0,114,156,0,0, - 0,213,2,0,0,115,20,0,0,0,20,2,12,1,2,2, - 12,1,2,128,12,1,6,1,2,128,12,2,2,253,115,12, - 0,0,0,145,5,23,0,151,7,33,7,168,1,33,7,114, - 156,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,9,0,0,0,67,0,0,0,115,14,1,0,0,116,0, - 124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,0, - 93,100,92,3,125,4,125,5,125,6,124,2,124,4,23,0, - 125,7,116,2,160,3,100,1,124,0,106,4,116,5,124,7, - 100,2,100,3,166,5,1,0,9,0,124,0,106,6,124,7, - 25,0,125,8,110,10,35,0,4,0,116,7,121,134,1,0, - 1,0,1,0,89,0,113,9,37,0,124,8,100,4,25,0, - 125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,0, - 125,11,124,5,114,89,9,0,116,9,124,0,124,9,124,7, - 124,1,124,10,131,5,125,11,110,24,35,0,4,0,116,10, - 121,133,1,0,125,12,1,0,124,12,125,3,89,0,100,0, - 125,12,126,12,110,10,100,0,125,12,126,12,119,1,37,0, - 116,11,124,9,124,10,131,2,125,11,124,11,100,0,117,0, - 114,99,113,9,124,8,100,4,25,0,125,9,124,11,124,6, - 124,9,102,3,2,0,1,0,83,0,124,3,114,124,100,5, - 124,3,155,0,157,2,125,13,116,12,124,13,124,1,100,6, - 141,2,124,3,130,2,116,12,100,7,124,1,155,2,157,2, - 124,1,100,6,141,2,130,1,119,0,119,0,41,8,78,122, - 13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,94, - 0,0,0,41,1,90,9,118,101,114,98,111,115,105,116,121, - 114,0,0,0,0,122,20,109,111,100,117,108,101,32,108,111, - 97,100,32,102,97,105,108,101,100,58,32,114,66,0,0,0, - 114,65,0,0,0,41,13,114,40,0,0,0,114,96,0,0, - 0,114,49,0,0,0,114,82,0,0,0,114,30,0,0,0, - 114,21,0,0,0,114,29,0,0,0,114,27,0,0,0,114, - 60,0,0,0,114,162,0,0,0,114,81,0,0,0,114,168, - 0,0,0,114,3,0,0,0,41,14,114,33,0,0,0,114, - 42,0,0,0,114,14,0,0,0,90,12,105,109,112,111,114, - 116,95,101,114,114,111,114,114,97,0,0,0,114,98,0,0, - 0,114,55,0,0,0,114,70,0,0,0,114,62,0,0,0, - 114,44,0,0,0,114,133,0,0,0,114,54,0,0,0,90, - 3,101,120,99,114,83,0,0,0,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,114,10,0,0,0,114,52,0,0, - 0,228,2,0,0,115,64,0,0,0,10,1,4,1,14,1, - 8,1,22,1,2,1,12,1,2,128,12,1,4,1,2,128, - 8,2,12,1,4,1,4,1,2,1,18,1,2,128,12,1, - 14,1,10,128,10,2,8,1,2,3,8,1,14,1,4,2, - 10,1,14,1,18,2,2,241,2,247,115,42,0,0,0,158, - 5,36,2,164,7,45,9,189,8,65,6,2,193,6,7,65, - 24,9,193,13,2,65,20,9,193,20,4,65,24,9,194,5, - 1,65,24,9,194,6,1,45,9,114,52,0,0,0,41,46, - 114,92,0,0,0,90,26,95,102,114,111,122,101,110,95,105, - 109,112,111,114,116,108,105,98,95,101,120,116,101,114,110,97, - 108,114,22,0,0,0,114,1,0,0,0,114,2,0,0,0, - 90,17,95,102,114,111,122,101,110,95,105,109,112,111,114,116, - 108,105,98,114,49,0,0,0,114,155,0,0,0,114,117,0, - 0,0,114,159,0,0,0,114,73,0,0,0,114,138,0,0, - 0,114,36,0,0,0,90,7,95,95,97,108,108,95,95,114, - 21,0,0,0,90,15,112,97,116,104,95,115,101,112,97,114, - 97,116,111,114,115,114,19,0,0,0,114,81,0,0,0,114, - 3,0,0,0,114,26,0,0,0,218,4,116,121,112,101,114, - 76,0,0,0,114,120,0,0,0,114,122,0,0,0,114,124, - 0,0,0,90,13,95,76,111,97,100,101,114,66,97,115,105, - 99,115,114,4,0,0,0,114,96,0,0,0,114,40,0,0, - 0,114,41,0,0,0,114,39,0,0,0,114,28,0,0,0, - 114,129,0,0,0,114,149,0,0,0,114,151,0,0,0,114, - 60,0,0,0,114,154,0,0,0,114,162,0,0,0,218,8, - 95,95,99,111,100,101,95,95,114,160,0,0,0,114,166,0, - 0,0,114,168,0,0,0,114,176,0,0,0,114,158,0,0, - 0,114,156,0,0,0,114,52,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,8,60,109,111,100,117,108,101,62,1, - 0,0,0,115,90,0,0,0,4,0,8,16,16,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,2,6,3, - 14,1,16,3,4,4,8,2,4,2,4,1,4,1,18,2, - 0,127,0,127,12,50,12,1,2,1,2,1,4,252,8,9, - 8,4,8,9,8,31,2,126,2,254,4,29,8,5,8,21, - 8,46,8,8,10,40,8,5,8,7,8,6,8,13,8,19, - 12,15,114,11,0,0,0, + 100,5,161,1,125,11,116,6,124,11,131,1,100,5,107,3, + 114,63,116,7,100,6,131,1,130,1,124,11,100,0,100,7, + 133,2,25,0,100,8,107,3,114,80,116,0,100,9,124,0, + 155,2,157,2,124,0,100,4,141,2,130,1,116,8,124,11, + 100,10,100,11,133,2,25,0,131,1,125,12,116,8,124,11, + 100,11,100,5,133,2,25,0,131,1,125,13,100,5,124,12, + 23,0,124,13,23,0,125,14,124,6,124,14,55,0,125,6, + 9,0,124,10,160,3,124,6,161,1,1,0,110,17,35,0, + 4,0,116,4,121,192,1,0,1,0,1,0,116,0,100,3, + 124,0,155,2,157,2,124,0,100,4,141,2,130,1,37,0, + 124,10,160,5,124,4,161,1,125,15,116,6,124,15,131,1, + 124,4,107,3,114,145,116,4,100,12,131,1,130,1,9,0, + 100,0,4,0,4,0,131,3,1,0,110,11,35,0,49,0, + 115,157,119,4,37,0,1,0,1,0,1,0,89,0,1,0, + 1,0,124,3,100,1,107,2,114,169,124,15,83,0,9,0, + 116,9,131,0,125,16,110,12,35,0,4,0,116,10,121,191, + 1,0,1,0,1,0,116,0,100,13,131,1,130,1,37,0, + 124,16,124,15,100,14,131,2,83,0,119,0,119,0,119,0, + 41,15,78,114,0,0,0,0,122,18,110,101,103,97,116,105, + 118,101,32,100,97,116,97,32,115,105,122,101,114,99,0,0, + 0,114,13,0,0,0,114,111,0,0,0,114,105,0,0,0, + 114,100,0,0,0,115,4,0,0,0,80,75,3,4,122,23, + 98,97,100,32,108,111,99,97,108,32,102,105,108,101,32,104, + 101,97,100,101,114,58,32,233,26,0,0,0,114,110,0,0, + 0,122,26,122,105,112,105,109,112,111,114,116,58,32,99,97, + 110,39,116,32,114,101,97,100,32,100,97,116,97,114,146,0, + 0,0,105,241,255,255,255,41,11,114,3,0,0,0,114,117, + 0,0,0,114,118,0,0,0,114,119,0,0,0,114,23,0, + 0,0,114,121,0,0,0,114,59,0,0,0,114,126,0,0, + 0,114,1,0,0,0,114,151,0,0,0,114,150,0,0,0, + 41,17,114,30,0,0,0,114,62,0,0,0,90,8,100,97, + 116,97,112,97,116,104,114,137,0,0,0,114,141,0,0,0, + 114,132,0,0,0,114,144,0,0,0,114,138,0,0,0,114, + 139,0,0,0,114,140,0,0,0,114,130,0,0,0,114,131, + 0,0,0,114,142,0,0,0,114,143,0,0,0,114,134,0, + 0,0,90,8,114,97,119,95,100,97,116,97,114,148,0,0, + 0,115,17,0,0,0,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,114,11,0,0,0,114,60,0,0, + 0,69,2,0,0,115,86,0,0,0,20,1,8,1,8,1, + 12,2,2,2,12,1,2,128,12,1,18,1,2,128,10,1, + 12,1,8,1,16,2,18,2,16,2,16,1,12,1,8,1, + 2,1,12,1,2,128,12,1,18,1,2,128,10,1,12,1, + 8,1,2,255,12,233,22,128,8,26,4,2,2,3,8,1, + 2,128,12,1,8,1,2,128,10,1,2,254,2,243,2,240, + 115,88,0,0,0,151,1,66,24,3,153,5,31,2,158,1, + 66,24,3,159,16,47,9,175,59,66,24,3,193,43,5,65, + 49,2,193,48,1,66,24,3,193,49,16,66,1,9,194,1, + 16,66,24,3,194,24,4,66,28,11,194,29,3,66,28,11, + 194,42,3,66,46,0,194,46,11,66,57,7,194,63,1,66, + 57,7,195,0,1,66,1,9,195,1,1,47,9,114,60,0, + 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,67,0,0,0,115,16,0,0,0,116,0,124,0, + 124,1,24,0,131,1,100,1,107,1,83,0,41,2,78,114, + 5,0,0,0,41,1,218,3,97,98,115,41,2,90,2,116, + 49,90,2,116,50,115,2,0,0,0,32,32,114,11,0,0, + 0,218,9,95,101,113,95,109,116,105,109,101,115,2,0,0, + 115,2,0,0,0,16,2,114,10,0,0,0,114,154,0,0, + 0,99,5,0,0,0,0,0,0,0,0,0,0,0,6,0, + 0,0,67,0,0,0,115,254,0,0,0,124,3,124,2,100, + 1,156,2,125,5,116,0,160,1,124,4,124,3,124,5,161, + 3,125,6,124,6,100,2,64,0,100,3,107,3,125,7,124, + 7,114,63,124,6,100,4,64,0,100,3,107,3,125,8,116, + 2,106,3,100,5,107,3,114,62,124,8,115,38,116,2,106, + 3,100,6,107,2,114,62,116,4,124,0,124,2,131,2,125, + 9,124,9,100,0,117,1,114,62,116,2,160,5,116,0,106, + 6,124,9,161,2,125,10,116,0,160,7,124,4,124,10,124, + 3,124,5,161,4,1,0,110,40,116,8,124,0,124,2,131, + 2,92,2,125,11,125,12,124,11,114,103,116,9,116,10,124, + 4,100,7,100,8,133,2,25,0,131,1,124,11,131,2,114, + 93,116,10,124,4,100,8,100,9,133,2,25,0,131,1,124, + 12,107,3,114,103,116,11,160,12,100,10,124,3,155,2,157, + 2,161,1,1,0,100,0,83,0,116,13,160,14,124,4,100, + 9,100,0,133,2,25,0,161,1,125,13,116,15,124,13,116, + 16,131,2,115,125,116,17,100,11,124,1,155,2,100,12,157, + 3,131,1,130,1,124,13,83,0,41,13,78,41,2,114,48, + 0,0,0,114,14,0,0,0,114,5,0,0,0,114,0,0, + 0,0,114,94,0,0,0,90,5,110,101,118,101,114,90,6, + 97,108,119,97,121,115,114,106,0,0,0,114,101,0,0,0, + 114,102,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,122,16,99, + 111,109,112,105,108,101,100,32,109,111,100,117,108,101,32,122, + 21,32,105,115,32,110,111,116,32,97,32,99,111,100,101,32, + 111,98,106,101,99,116,41,18,114,22,0,0,0,90,13,95, + 99,108,97,115,115,105,102,121,95,112,121,99,218,4,95,105, + 109,112,90,21,99,104,101,99,107,95,104,97,115,104,95,98, + 97,115,101,100,95,112,121,99,115,218,15,95,103,101,116,95, + 112,121,99,95,115,111,117,114,99,101,218,11,115,111,117,114, + 99,101,95,104,97,115,104,90,17,95,82,65,87,95,77,65, + 71,73,67,95,78,85,77,66,69,82,90,18,95,118,97,108, + 105,100,97,116,101,95,104,97,115,104,95,112,121,99,218,29, + 95,103,101,116,95,109,116,105,109,101,95,97,110,100,95,115, + 105,122,101,95,111,102,95,115,111,117,114,99,101,114,154,0, + 0,0,114,2,0,0,0,114,49,0,0,0,114,82,0,0, + 0,218,7,109,97,114,115,104,97,108,90,5,108,111,97,100, + 115,114,16,0,0,0,218,10,95,99,111,100,101,95,116,121, + 112,101,218,9,84,121,112,101,69,114,114,111,114,41,14,114, + 33,0,0,0,114,61,0,0,0,114,70,0,0,0,114,42, + 0,0,0,114,133,0,0,0,90,11,101,120,99,95,100,101, + 116,97,105,108,115,114,136,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,90,12,115,111,117,114,99,101,95,98,121,116, + 101,115,114,157,0,0,0,90,12,115,111,117,114,99,101,95, + 109,116,105,109,101,90,11,115,111,117,114,99,101,95,115,105, + 122,101,114,54,0,0,0,115,14,0,0,0,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,114,11,0,0,0,218, + 15,95,117,110,109,97,114,115,104,97,108,95,99,111,100,101, + 123,2,0,0,115,72,0,0,0,2,2,2,1,6,254,14, + 5,12,2,4,1,12,1,10,1,2,1,2,255,8,1,2, + 255,10,2,8,1,4,1,4,1,2,1,4,254,4,5,8, + 1,4,255,2,128,8,4,6,255,4,3,22,3,18,1,2, + 255,4,2,8,1,4,255,4,2,18,2,10,1,16,1,4, + 1,114,10,0,0,0,114,162,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 115,28,0,0,0,124,0,160,0,100,1,100,2,161,2,125, + 0,124,0,160,0,100,3,100,2,161,2,125,0,124,0,83, + 0,41,4,78,115,2,0,0,0,13,10,243,1,0,0,0, + 10,243,1,0,0,0,13,41,1,114,20,0,0,0,41,1, + 218,6,115,111,117,114,99,101,115,1,0,0,0,32,114,11, + 0,0,0,218,23,95,110,111,114,109,97,108,105,122,101,95, + 108,105,110,101,95,101,110,100,105,110,103,115,168,2,0,0, + 115,6,0,0,0,12,1,12,1,4,1,114,10,0,0,0, + 114,166,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,67,0,0,0,115,24,0,0,0,116, + 0,124,1,131,1,125,1,116,1,124,1,124,0,100,1,100, + 2,100,3,141,4,83,0,41,4,78,114,80,0,0,0,84, + 41,1,90,12,100,111,110,116,95,105,110,104,101,114,105,116, + 41,2,114,166,0,0,0,218,7,99,111,109,112,105,108,101, + 41,2,114,61,0,0,0,114,165,0,0,0,115,2,0,0, + 0,32,32,114,11,0,0,0,218,15,95,99,111,109,112,105, + 108,101,95,115,111,117,114,99,101,175,2,0,0,115,4,0, + 0,0,8,1,16,1,114,10,0,0,0,114,168,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,11,0,0, + 0,67,0,0,0,115,68,0,0,0,116,0,160,1,124,0, + 100,1,63,0,100,2,23,0,124,0,100,3,63,0,100,4, + 64,0,124,0,100,5,64,0,124,1,100,6,63,0,124,1, + 100,3,63,0,100,7,64,0,124,1,100,5,64,0,100,8, + 20,0,100,9,100,9,100,9,102,9,161,1,83,0,41,10, + 78,233,9,0,0,0,105,188,7,0,0,233,5,0,0,0, + 233,15,0,0,0,233,31,0,0,0,233,11,0,0,0,233, + 63,0,0,0,114,94,0,0,0,114,15,0,0,0,41,2, + 114,138,0,0,0,90,6,109,107,116,105,109,101,41,2,218, + 1,100,114,145,0,0,0,115,2,0,0,0,32,32,114,11, + 0,0,0,218,14,95,112,97,114,115,101,95,100,111,115,116, + 105,109,101,181,2,0,0,115,18,0,0,0,4,1,10,1, + 10,1,6,1,6,1,10,1,10,1,6,1,6,249,114,10, + 0,0,0,114,176,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,10,0,0,0,67,0,0,0,115,112,0, + 0,0,9,0,124,1,100,1,100,0,133,2,25,0,100,2, + 118,0,115,11,74,0,130,1,124,1,100,0,100,1,133,2, + 25,0,125,1,124,0,106,0,124,1,25,0,125,2,124,2, + 100,3,25,0,125,3,124,2,100,4,25,0,125,4,124,2, + 100,5,25,0,125,5,116,1,124,4,124,3,131,2,124,5, + 102,2,83,0,35,0,4,0,116,2,116,3,116,4,102,3, + 121,55,1,0,1,0,1,0,89,0,100,6,83,0,37,0, + 119,0,41,7,78,114,15,0,0,0,169,2,218,1,99,218, + 1,111,114,170,0,0,0,233,6,0,0,0,233,3,0,0, + 0,41,2,114,0,0,0,0,114,0,0,0,0,41,5,114, + 29,0,0,0,114,176,0,0,0,114,27,0,0,0,218,10, + 73,110,100,101,120,69,114,114,111,114,114,161,0,0,0,41, + 6,114,33,0,0,0,114,14,0,0,0,114,62,0,0,0, + 114,138,0,0,0,114,139,0,0,0,90,17,117,110,99,111, + 109,112,114,101,115,115,101,100,95,115,105,122,101,115,6,0, + 0,0,32,32,32,32,32,32,114,11,0,0,0,114,158,0, + 0,0,194,2,0,0,115,26,0,0,0,2,1,20,2,12, + 1,10,1,8,3,8,1,8,1,14,1,2,128,18,1,6, + 1,2,128,2,255,115,12,0,0,0,129,39,41,0,169,10, + 54,7,183,1,54,7,114,158,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,8,0,0,0,67,0,0,0, + 115,82,0,0,0,124,1,100,1,100,0,133,2,25,0,100, + 2,118,0,115,10,74,0,130,1,124,1,100,0,100,1,133, + 2,25,0,125,1,9,0,124,0,106,0,124,1,25,0,125, + 2,110,11,35,0,4,0,116,1,121,40,1,0,1,0,1, + 0,89,0,100,0,83,0,37,0,116,2,124,0,106,3,124, + 2,131,2,83,0,119,0,41,3,78,114,15,0,0,0,114, + 177,0,0,0,41,4,114,29,0,0,0,114,27,0,0,0, + 114,60,0,0,0,114,30,0,0,0,41,3,114,33,0,0, + 0,114,14,0,0,0,114,62,0,0,0,115,3,0,0,0, + 32,32,32,114,11,0,0,0,114,156,0,0,0,213,2,0, + 0,115,20,0,0,0,20,2,12,1,2,2,12,1,2,128, + 12,1,6,1,2,128,12,2,2,253,115,12,0,0,0,145, + 5,23,0,151,7,33,7,168,1,33,7,114,156,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,0, + 0,67,0,0,0,115,14,1,0,0,116,0,124,0,124,1, + 131,2,125,2,100,0,125,3,116,1,68,0,93,100,92,3, + 125,4,125,5,125,6,124,2,124,4,23,0,125,7,116,2, + 160,3,100,1,124,0,106,4,116,5,124,7,100,2,100,3, + 166,5,1,0,9,0,124,0,106,6,124,7,25,0,125,8, + 110,10,35,0,4,0,116,7,121,134,1,0,1,0,1,0, + 89,0,113,9,37,0,124,8,100,4,25,0,125,9,116,8, + 124,0,106,4,124,8,131,2,125,10,100,0,125,11,124,5, + 114,89,9,0,116,9,124,0,124,9,124,7,124,1,124,10, + 131,5,125,11,110,24,35,0,4,0,116,10,121,133,1,0, + 125,12,1,0,124,12,125,3,89,0,100,0,125,12,126,12, + 110,10,100,0,125,12,126,12,119,1,37,0,116,11,124,9, + 124,10,131,2,125,11,124,11,100,0,117,0,114,99,113,9, + 124,8,100,4,25,0,125,9,124,11,124,6,124,9,102,3, + 2,0,1,0,83,0,124,3,114,124,100,5,124,3,155,0, + 157,2,125,13,116,12,124,13,124,1,100,6,141,2,124,3, + 130,2,116,12,100,7,124,1,155,2,157,2,124,1,100,6, + 141,2,130,1,119,0,119,0,41,8,78,122,13,116,114,121, + 105,110,103,32,123,125,123,125,123,125,114,94,0,0,0,41, + 1,90,9,118,101,114,98,111,115,105,116,121,114,0,0,0, + 0,122,20,109,111,100,117,108,101,32,108,111,97,100,32,102, + 97,105,108,101,100,58,32,114,66,0,0,0,114,65,0,0, + 0,41,13,114,40,0,0,0,114,96,0,0,0,114,49,0, + 0,0,114,82,0,0,0,114,30,0,0,0,114,21,0,0, + 0,114,29,0,0,0,114,27,0,0,0,114,60,0,0,0, + 114,162,0,0,0,114,81,0,0,0,114,168,0,0,0,114, + 3,0,0,0,41,14,114,33,0,0,0,114,42,0,0,0, + 114,14,0,0,0,90,12,105,109,112,111,114,116,95,101,114, + 114,111,114,114,97,0,0,0,114,98,0,0,0,114,55,0, + 0,0,114,70,0,0,0,114,62,0,0,0,114,44,0,0, + 0,114,133,0,0,0,114,54,0,0,0,90,3,101,120,99, + 114,83,0,0,0,115,14,0,0,0,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,114,11,0,0,0,114,52,0, + 0,0,228,2,0,0,115,64,0,0,0,10,1,4,1,14, + 1,8,1,22,1,2,1,12,1,2,128,12,1,4,1,2, + 128,8,2,12,1,4,1,4,1,2,1,18,1,2,128,12, + 1,14,1,10,128,10,2,8,1,2,3,8,1,14,1,4, + 2,10,1,14,1,18,2,2,241,2,247,115,42,0,0,0, + 158,5,36,2,164,7,45,9,189,8,65,6,2,193,6,7, + 65,24,9,193,13,2,65,20,9,193,20,4,65,24,9,194, + 5,1,65,24,9,194,6,1,45,9,114,52,0,0,0,41, + 46,114,92,0,0,0,90,26,95,102,114,111,122,101,110,95, + 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110, + 97,108,114,22,0,0,0,114,1,0,0,0,114,2,0,0, + 0,90,17,95,102,114,111,122,101,110,95,105,109,112,111,114, + 116,108,105,98,114,49,0,0,0,114,155,0,0,0,114,117, + 0,0,0,114,159,0,0,0,114,73,0,0,0,114,138,0, + 0,0,114,36,0,0,0,90,7,95,95,97,108,108,95,95, + 114,21,0,0,0,90,15,112,97,116,104,95,115,101,112,97, + 114,97,116,111,114,115,114,19,0,0,0,114,81,0,0,0, + 114,3,0,0,0,114,26,0,0,0,218,4,116,121,112,101, + 114,76,0,0,0,114,120,0,0,0,114,122,0,0,0,114, + 124,0,0,0,90,13,95,76,111,97,100,101,114,66,97,115, + 105,99,115,114,4,0,0,0,114,96,0,0,0,114,40,0, + 0,0,114,41,0,0,0,114,39,0,0,0,114,28,0,0, + 0,114,129,0,0,0,114,149,0,0,0,114,151,0,0,0, + 114,60,0,0,0,114,154,0,0,0,114,162,0,0,0,218, + 8,95,95,99,111,100,101,95,95,114,160,0,0,0,114,166, + 0,0,0,114,168,0,0,0,114,176,0,0,0,114,158,0, + 0,0,114,156,0,0,0,114,52,0,0,0,114,9,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,90,0,0,0,4,0, + 8,16,16,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,2,6,3,14,1,16,3,4,4,8,2,4,2, + 4,1,4,1,18,2,0,127,0,127,12,50,12,1,2,1, + 2,1,4,252,8,9,8,4,8,9,8,31,2,126,2,254, + 4,29,8,5,8,21,8,46,8,8,10,40,8,5,8,7, + 8,6,8,13,8,19,12,15,114,10,0,0,0, }; diff --git a/Python/marshal.c b/Python/marshal.c index 80517b3d65d41a..d6504a8b8c18ff 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -519,7 +519,7 @@ w_complex_object(PyObject *v, char flag, WFILE *p) w_object(co->co_consts, p); w_object(co->co_names, p); w_object(co->co_localsplusnames, p); - w_string(co->co_localspluskinds, co->co_nlocalsplus, p); + w_object(co->co_localspluskinds, p); w_object(co->co_filename, p); w_object(co->co_name, p); w_long(co->co_firstlineno, p); @@ -1306,7 +1306,7 @@ r_object(RFILE *p) PyObject *consts = NULL; PyObject *names = NULL; PyObject *localsplusnames = NULL; - _PyLocalsPlusKinds localspluskinds = NULL; + PyObject *localspluskinds = NULL; PyObject *filename = NULL; PyObject *name = NULL; int firstlineno; @@ -1348,19 +1348,9 @@ r_object(RFILE *p) localsplusnames = r_object(p); if (localsplusnames == NULL) goto code_error; - - assert(PyTuple_GET_SIZE(localsplusnames) < INT_MAX); - int nlocalsplus = (int)PyTuple_GET_SIZE(localsplusnames); - if (nlocalsplus) { - if (_PyCode_InitLocalsPlusKinds(nlocalsplus, - &localspluskinds) < 0) { - goto code_error; - } - for (int i = 0; i < nlocalsplus; i++) { - localspluskinds[i] = r_byte(p); - } - } - + localspluskinds = r_object(p); + if (localspluskinds == NULL) + goto code_error; filename = r_object(p); if (filename == NULL) goto code_error; @@ -1377,6 +1367,7 @@ r_object(RFILE *p) if (exceptiontable == NULL) goto code_error; + Py_ssize_t nlocalsplus = PyTuple_GET_SIZE(localsplusnames); if (PySys_Audit("code.__new__", "OOOiiiiii", code, filename, name, argcount, posonlyargcount, kwonlyargcount, nlocalsplus, stacksize, @@ -1417,8 +1408,6 @@ r_object(RFILE *p) goto code_error; } - localspluskinds = NULL; // This keeps it from getting freed below. - v = r_ref_insert(v, idx, flag, p); code_error: @@ -1426,7 +1415,7 @@ r_object(RFILE *p) Py_XDECREF(consts); Py_XDECREF(names); Py_XDECREF(localsplusnames); - _PyCode_ClearLocalsPlusKinds(localspluskinds); + Py_XDECREF(localspluskinds); Py_XDECREF(filename); Py_XDECREF(name); Py_XDECREF(linetable); From webhook-mailer at python.org Mon Jun 21 17:23:37 2021 From: webhook-mailer at python.org (terryjreedy) Date: Mon, 21 Jun 2021 21:23:37 -0000 Subject: [Python-checkins] bpo-13814: Explain why generators are not context managers (GH-26835) Message-ID: https://github.com/python/cpython/commit/51f45d085dad3b708f6fe166af517aba69e7e9f7 commit: 51f45d085dad3b708f6fe166af517aba69e7e9f7 branch: main author: Terry Jan Reedy committer: terryjreedy date: 2021-06-21T17:23:29-04:00 summary: bpo-13814: Explain why generators are not context managers (GH-26835) Put entry in Design FAQ after a question about a context manager for assignment. Original patch by Aidan Lowe. files: A Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst M Doc/faq/design.rst diff --git a/Doc/faq/design.rst b/Doc/faq/design.rst index 68570b33e2f626..720b1e496eb848 100644 --- a/Doc/faq/design.rst +++ b/Doc/faq/design.rst @@ -708,6 +708,15 @@ bindings are resolved at run-time in Python, and the second version only needs to perform the resolution once. +Why don't generators support the with statement? +------------------------------------------------ + +For technical reasons, a generator used directly as a context manager +would not work correctly. When, as is most common, a generator is used as +an iterator run to completion, no closing is needed. When it is, wrap +it as "contextlib.closing(generator)" in the 'with' statment. + + Why are colons required for the if/while/def/class statements? -------------------------------------------------------------- diff --git a/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst b/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst new file mode 100644 index 00000000000000..db0c6d6524beeb --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst @@ -0,0 +1 @@ +In the Design FAQ, answer "Why don't generators support the with statement?" From webhook-mailer at python.org Mon Jun 21 18:02:50 2021 From: webhook-mailer at python.org (terryjreedy) Date: Mon, 21 Jun 2021 22:02:50 -0000 Subject: [Python-checkins] bpo-13814: Explain why generators are not context managers (GH-26835) Message-ID: https://github.com/python/cpython/commit/1e16217204c0e8e595c4d1e869c81899bfe3376b commit: 1e16217204c0e8e595c4d1e869c81899bfe3376b branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2021-06-21T18:02:43-04:00 summary: bpo-13814: Explain why generators are not context managers (GH-26835) Put entry in Design FAQ after a question about a context manager for assignment. Original patch by Aidan Lowe. (cherry picked from commit 51f45d085dad3b708f6fe166af517aba69e7e9f7) Co-authored-by: Terry Jan Reedy files: A Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst M Doc/faq/design.rst diff --git a/Doc/faq/design.rst b/Doc/faq/design.rst index 68570b33e2f626..720b1e496eb848 100644 --- a/Doc/faq/design.rst +++ b/Doc/faq/design.rst @@ -708,6 +708,15 @@ bindings are resolved at run-time in Python, and the second version only needs to perform the resolution once. +Why don't generators support the with statement? +------------------------------------------------ + +For technical reasons, a generator used directly as a context manager +would not work correctly. When, as is most common, a generator is used as +an iterator run to completion, no closing is needed. When it is, wrap +it as "contextlib.closing(generator)" in the 'with' statment. + + Why are colons required for the if/while/def/class statements? -------------------------------------------------------------- diff --git a/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst b/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst new file mode 100644 index 00000000000000..db0c6d6524beeb --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst @@ -0,0 +1 @@ +In the Design FAQ, answer "Why don't generators support the with statement?" From webhook-mailer at python.org Mon Jun 21 18:03:10 2021 From: webhook-mailer at python.org (terryjreedy) Date: Mon, 21 Jun 2021 22:03:10 -0000 Subject: [Python-checkins] bpo-13814: Explain why generators are not context managers (GH-26835) Message-ID: https://github.com/python/cpython/commit/d881002fbdf12ddbd93db3e182dc5cdeb1f90386 commit: d881002fbdf12ddbd93db3e182dc5cdeb1f90386 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2021-06-21T18:03:06-04:00 summary: bpo-13814: Explain why generators are not context managers (GH-26835) Put entry in Design FAQ after a question about a context manager for assignment. Original patch by Aidan Lowe. (cherry picked from commit 51f45d085dad3b708f6fe166af517aba69e7e9f7) Co-authored-by: Terry Jan Reedy files: A Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst M Doc/faq/design.rst diff --git a/Doc/faq/design.rst b/Doc/faq/design.rst index 5c59fcccb6c746..d2b868ebb8290a 100644 --- a/Doc/faq/design.rst +++ b/Doc/faq/design.rst @@ -709,6 +709,15 @@ bindings are resolved at run-time in Python, and the second version only needs to perform the resolution once. +Why don't generators support the with statement? +------------------------------------------------ + +For technical reasons, a generator used directly as a context manager +would not work correctly. When, as is most common, a generator is used as +an iterator run to completion, no closing is needed. When it is, wrap +it as "contextlib.closing(generator)" in the 'with' statment. + + Why are colons required for the if/while/def/class statements? -------------------------------------------------------------- diff --git a/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst b/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst new file mode 100644 index 00000000000000..db0c6d6524beeb --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst @@ -0,0 +1 @@ +In the Design FAQ, answer "Why don't generators support the with statement?" From webhook-mailer at python.org Mon Jun 21 19:58:28 2021 From: webhook-mailer at python.org (vstinner) Date: Mon, 21 Jun 2021 23:58:28 -0000 Subject: [Python-checkins] bpo-44287: asyncio test_popen() uses longer timeout (GH-26832) Message-ID: https://github.com/python/cpython/commit/be1cb3214d09d4bf0288bc45f3c1f167f67e4514 commit: be1cb3214d09d4bf0288bc45f3c1f167f67e4514 branch: main author: Victor Stinner committer: vstinner date: 2021-06-22T01:58:19+02:00 summary: bpo-44287: asyncio test_popen() uses longer timeout (GH-26832) Fix asyncio test_popen() of test_windows_utils by using a longer timeout. Use military grade battle-tested test.support.SHORT_TIMEOUT timeout rather than a hardcoded timeout of 10 seconds: it's 30 seconds by default, but it is made longer on slow buildbots. WaitForMultipleObjects() timeout argument is in milliseconds. files: A Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst M Lib/test/test_asyncio/test_windows_utils.py diff --git a/Lib/test/test_asyncio/test_windows_utils.py b/Lib/test/test_asyncio/test_windows_utils.py index 45c09bb4a2d3a0..eafa5be3829682 100644 --- a/Lib/test/test_asyncio/test_windows_utils.py +++ b/Lib/test/test_asyncio/test_windows_utils.py @@ -107,7 +107,8 @@ def test_popen(self): events = [ovin.event, ovout.event, overr.event] # Super-long timeout for slow buildbots. - res = _winapi.WaitForMultipleObjects(events, True, 10000) + res = _winapi.WaitForMultipleObjects(events, True, + int(support.SHORT_TIMEOUT * 1000)) self.assertEqual(res, _winapi.WAIT_OBJECT_0) self.assertFalse(ovout.pending) self.assertFalse(overr.pending) diff --git a/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst b/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst new file mode 100644 index 00000000000000..66b3afe139aa8d --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst @@ -0,0 +1,4 @@ +Fix asyncio test_popen() of test_windows_utils by using a longer timeout. +Use military grade battle-tested :data:`test.support.SHORT_TIMEOUT` timeout +rather than a hardcoded timeout of 10 seconds: it's 30 seconds by default, but +it is made longer on slow buildbots. Patch by Victor Stinner. From webhook-mailer at python.org Mon Jun 21 20:22:11 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Jun 2021 00:22:11 -0000 Subject: [Python-checkins] bpo-44287: asyncio test_popen() uses longer timeout (GH-26832) Message-ID: https://github.com/python/cpython/commit/c032a12cbb7d6e2d6a292b0e9220c33ef7349d28 commit: c032a12cbb7d6e2d6a292b0e9220c33ef7349d28 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-21T17:22:02-07:00 summary: bpo-44287: asyncio test_popen() uses longer timeout (GH-26832) Fix asyncio test_popen() of test_windows_utils by using a longer timeout. Use military grade battle-tested test.support.SHORT_TIMEOUT timeout rather than a hardcoded timeout of 10 seconds: it's 30 seconds by default, but it is made longer on slow buildbots. WaitForMultipleObjects() timeout argument is in milliseconds. (cherry picked from commit be1cb3214d09d4bf0288bc45f3c1f167f67e4514) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst M Lib/test/test_asyncio/test_windows_utils.py diff --git a/Lib/test/test_asyncio/test_windows_utils.py b/Lib/test/test_asyncio/test_windows_utils.py index 45c09bb4a2d3a0..eafa5be3829682 100644 --- a/Lib/test/test_asyncio/test_windows_utils.py +++ b/Lib/test/test_asyncio/test_windows_utils.py @@ -107,7 +107,8 @@ def test_popen(self): events = [ovin.event, ovout.event, overr.event] # Super-long timeout for slow buildbots. - res = _winapi.WaitForMultipleObjects(events, True, 10000) + res = _winapi.WaitForMultipleObjects(events, True, + int(support.SHORT_TIMEOUT * 1000)) self.assertEqual(res, _winapi.WAIT_OBJECT_0) self.assertFalse(ovout.pending) self.assertFalse(overr.pending) diff --git a/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst b/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst new file mode 100644 index 00000000000000..66b3afe139aa8d --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst @@ -0,0 +1,4 @@ +Fix asyncio test_popen() of test_windows_utils by using a longer timeout. +Use military grade battle-tested :data:`test.support.SHORT_TIMEOUT` timeout +rather than a hardcoded timeout of 10 seconds: it's 30 seconds by default, but +it is made longer on slow buildbots. Patch by Victor Stinner. From webhook-mailer at python.org Mon Jun 21 20:29:26 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Jun 2021 00:29:26 -0000 Subject: [Python-checkins] bpo-44287: asyncio test_popen() uses longer timeout (GH-26832) Message-ID: https://github.com/python/cpython/commit/0ff487b8abe70f091285acf367b795861eed8049 commit: 0ff487b8abe70f091285acf367b795861eed8049 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-21T17:29:13-07:00 summary: bpo-44287: asyncio test_popen() uses longer timeout (GH-26832) Fix asyncio test_popen() of test_windows_utils by using a longer timeout. Use military grade battle-tested test.support.SHORT_TIMEOUT timeout rather than a hardcoded timeout of 10 seconds: it's 30 seconds by default, but it is made longer on slow buildbots. WaitForMultipleObjects() timeout argument is in milliseconds. (cherry picked from commit be1cb3214d09d4bf0288bc45f3c1f167f67e4514) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst M Lib/test/test_asyncio/test_windows_utils.py diff --git a/Lib/test/test_asyncio/test_windows_utils.py b/Lib/test/test_asyncio/test_windows_utils.py index 45c09bb4a2d3a0..eafa5be3829682 100644 --- a/Lib/test/test_asyncio/test_windows_utils.py +++ b/Lib/test/test_asyncio/test_windows_utils.py @@ -107,7 +107,8 @@ def test_popen(self): events = [ovin.event, ovout.event, overr.event] # Super-long timeout for slow buildbots. - res = _winapi.WaitForMultipleObjects(events, True, 10000) + res = _winapi.WaitForMultipleObjects(events, True, + int(support.SHORT_TIMEOUT * 1000)) self.assertEqual(res, _winapi.WAIT_OBJECT_0) self.assertFalse(ovout.pending) self.assertFalse(overr.pending) diff --git a/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst b/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst new file mode 100644 index 00000000000000..66b3afe139aa8d --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst @@ -0,0 +1,4 @@ +Fix asyncio test_popen() of test_windows_utils by using a longer timeout. +Use military grade battle-tested :data:`test.support.SHORT_TIMEOUT` timeout +rather than a hardcoded timeout of 10 seconds: it's 30 seconds by default, but +it is made longer on slow buildbots. Patch by Victor Stinner. From webhook-mailer at python.org Tue Jun 22 02:36:48 2021 From: webhook-mailer at python.org (gpshead) Date: Tue, 22 Jun 2021 06:36:48 -0000 Subject: [Python-checkins] bpo-44458: Ensure BUFFER_BLOCK_SIZE symbol is statically allocated. (GH-26808) Message-ID: https://github.com/python/cpython/commit/92c2e91580521ba5c85aa3205a0211df5b48689b commit: 92c2e91580521ba5c85aa3205a0211df5b48689b branch: main author: Russell Keith-Magee committer: gpshead date: 2021-06-21T23:36:36-07:00 summary: bpo-44458: Ensure BUFFER_BLOCK_SIZE symbol is statically allocated. (GH-26808) * bpo-44458: Ensure BUFFER_BLOCK_SIZE symbol is statically allocated. files: A Misc/NEWS.d/next/Library/2021-06-20-07-14-46.bpo-44458.myqCQ0.rst M Include/internal/pycore_blocks_output_buffer.h diff --git a/Include/internal/pycore_blocks_output_buffer.h b/Include/internal/pycore_blocks_output_buffer.h index 22546e9a32a80..28cf6fba4eeba 100644 --- a/Include/internal/pycore_blocks_output_buffer.h +++ b/Include/internal/pycore_blocks_output_buffer.h @@ -57,7 +57,7 @@ static const char unable_allocate_msg[] = "Unable to allocate output buffer."; /* Block size sequence */ #define KB (1024) #define MB (1024*1024) -const Py_ssize_t BUFFER_BLOCK_SIZE[] = +static const Py_ssize_t BUFFER_BLOCK_SIZE[] = { 32*KB, 64*KB, 256*KB, 1*MB, 4*MB, 8*MB, 16*MB, 16*MB, 32*MB, 32*MB, 32*MB, 32*MB, 64*MB, 64*MB, 128*MB, 128*MB, OUTPUT_BUFFER_MAX_BLOCK_SIZE }; diff --git a/Misc/NEWS.d/next/Library/2021-06-20-07-14-46.bpo-44458.myqCQ0.rst b/Misc/NEWS.d/next/Library/2021-06-20-07-14-46.bpo-44458.myqCQ0.rst new file mode 100644 index 0000000000000..f15104b75e31c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-20-07-14-46.bpo-44458.myqCQ0.rst @@ -0,0 +1 @@ +``BUFFER_BLOCK_SIZE`` is now declared static, to avoid linking collisions when bz2, lmza or zlib are statically linked. \ No newline at end of file From webhook-mailer at python.org Tue Jun 22 03:04:48 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Tue, 22 Jun 2021 07:04:48 -0000 Subject: [Python-checkins] bpo-44439: BZ2File.write() / LZMAFile.write() handle buffer protocol correctly (GH-26764) Message-ID: https://github.com/python/cpython/commit/bc6c12c72a9536acc96e7b9355fd69d1083a43c1 commit: bc6c12c72a9536acc96e7b9355fd69d1083a43c1 branch: main author: Ma Lin committer: serhiy-storchaka date: 2021-06-22T10:04:23+03:00 summary: bpo-44439: BZ2File.write() / LZMAFile.write() handle buffer protocol correctly (GH-26764) No longer use len() to get the length of the input data. For some buffer protocol objects, the length obtained by using len() is wrong. files: A Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst M Lib/bz2.py M Lib/gzip.py M Lib/lzma.py M Lib/test/test_bz2.py M Lib/test/test_gzip.py M Lib/test/test_lzma.py diff --git a/Lib/bz2.py b/Lib/bz2.py index a2c588e7487f3..7f1d20632ef13 100644 --- a/Lib/bz2.py +++ b/Lib/bz2.py @@ -219,14 +219,22 @@ def write(self, data): """Write a byte string to the file. Returns the number of uncompressed bytes written, which is - always len(data). Note that due to buffering, the file on disk - may not reflect the data written until close() is called. + always the length of data in bytes. Note that due to buffering, + the file on disk may not reflect the data written until close() + is called. """ self._check_can_write() + if isinstance(data, (bytes, bytearray)): + length = len(data) + else: + # accept any data that supports the buffer protocol + data = memoryview(data) + length = data.nbytes + compressed = self._compressor.compress(data) self._fp.write(compressed) - self._pos += len(data) - return len(data) + self._pos += length + return length def writelines(self, seq): """Write a sequence of byte strings to the file. diff --git a/Lib/gzip.py b/Lib/gzip.py index 1c1e795e1715d..3d837b744800e 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -278,7 +278,7 @@ def write(self,data): if self.fileobj is None: raise ValueError("write() on closed GzipFile object") - if isinstance(data, bytes): + if isinstance(data, (bytes, bytearray)): length = len(data) else: # accept any data that supports the buffer protocol diff --git a/Lib/lzma.py b/Lib/lzma.py index 2ada7d81d3c81..9abf06d91db18 100644 --- a/Lib/lzma.py +++ b/Lib/lzma.py @@ -229,14 +229,22 @@ def write(self, data): """Write a bytes object to the file. Returns the number of uncompressed bytes written, which is - always len(data). Note that due to buffering, the file on disk - may not reflect the data written until close() is called. + always the length of data in bytes. Note that due to buffering, + the file on disk may not reflect the data written until close() + is called. """ self._check_can_write() + if isinstance(data, (bytes, bytearray)): + length = len(data) + else: + # accept any data that supports the buffer protocol + data = memoryview(data) + length = data.nbytes + compressed = self._compressor.compress(data) self._fp.write(compressed) - self._pos += len(data) - return len(data) + self._pos += length + return length def seek(self, offset, whence=io.SEEK_SET): """Change the file position. diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index efed3a859ba21..7913beb87a352 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -1,6 +1,7 @@ from test import support from test.support import bigmemtest, _4G +import array import unittest from io import BytesIO, DEFAULT_BUFFER_SIZE import os @@ -620,6 +621,14 @@ def test_read_truncated(self): with BZ2File(BytesIO(truncated[:i])) as f: self.assertRaises(EOFError, f.read, 1) + def test_issue44439(self): + q = array.array('Q', [1, 2, 3, 4, 5]) + LENGTH = len(q) * q.itemsize + + with BZ2File(BytesIO(), 'w') as f: + self.assertEqual(f.write(q), LENGTH) + self.assertEqual(f.tell(), LENGTH) + class BZ2CompressorTest(BaseTest): def testCompress(self): diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index 446b61ab439ff..7b51e45aad92b 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -592,6 +592,15 @@ def test_prepend_error(self): with gzip.open(self.filename, "rb") as f: f._buffer.raw._fp.prepend() + def test_issue44439(self): + q = array.array('Q', [1, 2, 3, 4, 5]) + LENGTH = len(q) * q.itemsize + + with gzip.GzipFile(fileobj=io.BytesIO(), mode='w') as f: + self.assertEqual(f.write(q), LENGTH) + self.assertEqual(f.tell(), LENGTH) + + class TestOpen(BaseTest): def test_binary_modes(self): uncompressed = data1 * 50 diff --git a/Lib/test/test_lzma.py b/Lib/test/test_lzma.py index db20300056e48..1e2066b89168f 100644 --- a/Lib/test/test_lzma.py +++ b/Lib/test/test_lzma.py @@ -1,4 +1,5 @@ import _compression +import array from io import BytesIO, UnsupportedOperation, DEFAULT_BUFFER_SIZE import os import pathlib @@ -1231,6 +1232,14 @@ def test_issue21872(self): self.assertTrue(d2.eof) self.assertEqual(out1 + out2, entire) + def test_issue44439(self): + q = array.array('Q', [1, 2, 3, 4, 5]) + LENGTH = len(q) * q.itemsize + + with LZMAFile(BytesIO(), 'w') as f: + self.assertEqual(f.write(q), LENGTH) + self.assertEqual(f.tell(), LENGTH) + class OpenTestCase(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst b/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst new file mode 100644 index 0000000000000..27396683700a8 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst @@ -0,0 +1,3 @@ +Fix in :meth:`bz2.BZ2File.write` / :meth:`lzma.LZMAFile.write` methods, when +the input data is an object that supports the buffer protocol, the file length +may be wrong. From webhook-mailer at python.org Tue Jun 22 03:10:32 2021 From: webhook-mailer at python.org (gpshead) Date: Tue, 22 Jun 2021 07:10:32 -0000 Subject: [Python-checkins] bpo-44458: Ensure BUFFER_BLOCK_SIZE symbol is statically allocated. (GH-26808) (GH-26844) Message-ID: https://github.com/python/cpython/commit/cf739332bd039cd2303b58663a804f784883820d commit: cf739332bd039cd2303b58663a804f784883820d branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: gpshead date: 2021-06-22T00:10:23-07:00 summary: bpo-44458: Ensure BUFFER_BLOCK_SIZE symbol is statically allocated. (GH-26808) (GH-26844) * bpo-44458: Ensure BUFFER_BLOCK_SIZE symbol is statically allocated. (cherry picked from commit 92c2e91580521ba5c85aa3205a0211df5b48689b) Co-authored-by: Russell Keith-Magee files: A Misc/NEWS.d/next/Library/2021-06-20-07-14-46.bpo-44458.myqCQ0.rst M Include/internal/pycore_blocks_output_buffer.h diff --git a/Include/internal/pycore_blocks_output_buffer.h b/Include/internal/pycore_blocks_output_buffer.h index 22546e9a32a80b..28cf6fba4eeba2 100644 --- a/Include/internal/pycore_blocks_output_buffer.h +++ b/Include/internal/pycore_blocks_output_buffer.h @@ -57,7 +57,7 @@ static const char unable_allocate_msg[] = "Unable to allocate output buffer."; /* Block size sequence */ #define KB (1024) #define MB (1024*1024) -const Py_ssize_t BUFFER_BLOCK_SIZE[] = +static const Py_ssize_t BUFFER_BLOCK_SIZE[] = { 32*KB, 64*KB, 256*KB, 1*MB, 4*MB, 8*MB, 16*MB, 16*MB, 32*MB, 32*MB, 32*MB, 32*MB, 64*MB, 64*MB, 128*MB, 128*MB, OUTPUT_BUFFER_MAX_BLOCK_SIZE }; diff --git a/Misc/NEWS.d/next/Library/2021-06-20-07-14-46.bpo-44458.myqCQ0.rst b/Misc/NEWS.d/next/Library/2021-06-20-07-14-46.bpo-44458.myqCQ0.rst new file mode 100644 index 00000000000000..f15104b75e31c9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-20-07-14-46.bpo-44458.myqCQ0.rst @@ -0,0 +1 @@ +``BUFFER_BLOCK_SIZE`` is now declared static, to avoid linking collisions when bz2, lmza or zlib are statically linked. \ No newline at end of file From webhook-mailer at python.org Tue Jun 22 09:54:52 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Tue, 22 Jun 2021 13:54:52 -0000 Subject: [Python-checkins] bpo-44483: Fix crash in union object with bad ``__module__`` (GH-26848) Message-ID: https://github.com/python/cpython/commit/adfa1ba398c74720b42f16f06fd3ec0353599fa5 commit: adfa1ba398c74720b42f16f06fd3ec0353599fa5 branch: main author: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> committer: serhiy-storchaka date: 2021-06-22T16:54:44+03:00 summary: bpo-44483: Fix crash in union object with bad ``__module__`` (GH-26848) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-22-19-08-19.bpo-44483.eq2f7T.rst M Lib/test/test_types.py M Objects/unionobject.c diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index 767c3d06a4f583..d3e315a196b514 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -747,6 +747,15 @@ def __eq__(self, other): with self.assertRaises(TypeError): issubclass(list, type_) + def test_or_type_operator_with_bad_module(self): + class TypeVar: + @property + def __module__(self): + 1 / 0 + # Crashes in Issue44483 + with self.assertRaises(ZeroDivisionError): + str | TypeVar() + def test_ellipsis_type(self): self.assertIsInstance(Ellipsis, types.EllipsisType) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-22-19-08-19.bpo-44483.eq2f7T.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-22-19-08-19.bpo-44483.eq2f7T.rst new file mode 100644 index 00000000000000..ea54e79acfd9d8 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-22-19-08-19.bpo-44483.eq2f7T.rst @@ -0,0 +1,2 @@ +Fix a crash in ``types.Union`` objects when creating a union of an object +with bad ``__module__`` field. diff --git a/Objects/unionobject.c b/Objects/unionobject.c index 05350363eed63f..a66d61524dcfc7 100644 --- a/Objects/unionobject.c +++ b/Objects/unionobject.c @@ -284,6 +284,16 @@ is_new_type(PyObject *obj) return is_typing_module(obj); } +// Emulates short-circuiting behavior of the ``||`` operator +// while also checking negative values. +#define CHECK_RES(res) { \ + int result = res; \ + if (result) { \ + return result; \ + } \ +} + +// Returns 1 on true, 0 on false, and -1 on error. static int is_unionable(PyObject *obj) { @@ -291,10 +301,11 @@ is_unionable(PyObject *obj) return 1; } PyTypeObject *type = Py_TYPE(obj); + CHECK_RES(is_typevar(obj)); + CHECK_RES(is_new_type(obj)); + CHECK_RES(is_special_form(obj)); return ( - is_typevar(obj) || - is_new_type(obj) || - is_special_form(obj) || + // The following checks never fail. PyType_Check(obj) || PyObject_TypeCheck(obj, &Py_GenericAliasType) || type == &_Py_UnionType); From webhook-mailer at python.org Tue Jun 22 09:57:50 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Tue, 22 Jun 2021 13:57:50 -0000 Subject: [Python-checkins] bpo-44439: BZ2File.write()/LZMAFile.write() handle length correctly (GH-26846) Message-ID: https://github.com/python/cpython/commit/8bc26d8c9d092840054f57f9b4620de0d40d8423 commit: 8bc26d8c9d092840054f57f9b4620de0d40d8423 branch: 3.9 author: Ma Lin committer: serhiy-storchaka date: 2021-06-22T16:57:41+03:00 summary: bpo-44439: BZ2File.write()/LZMAFile.write() handle length correctly (GH-26846) No longer use len() to get the length of the input data. For some buffer protocol objects, the length obtained by using len() is wrong. Co-authored-by: Marco Ribeiro files: A Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst M Lib/bz2.py M Lib/lzma.py M Lib/test/test_bz2.py M Lib/test/test_lzma.py diff --git a/Lib/bz2.py b/Lib/bz2.py index ce07ebeb142d9..7447d12fc4b8c 100644 --- a/Lib/bz2.py +++ b/Lib/bz2.py @@ -226,15 +226,23 @@ def write(self, data): """Write a byte string to the file. Returns the number of uncompressed bytes written, which is - always len(data). Note that due to buffering, the file on disk - may not reflect the data written until close() is called. + always the length of data in bytes. Note that due to buffering, + the file on disk may not reflect the data written until close() + is called. """ with self._lock: self._check_can_write() + if isinstance(data, (bytes, bytearray)): + length = len(data) + else: + # accept any data that supports the buffer protocol + data = memoryview(data) + length = data.nbytes + compressed = self._compressor.compress(data) self._fp.write(compressed) - self._pos += len(data) - return len(data) + self._pos += length + return length def writelines(self, seq): """Write a sequence of byte strings to the file. diff --git a/Lib/lzma.py b/Lib/lzma.py index 0817b872d2019..0aa30fe87f8c0 100644 --- a/Lib/lzma.py +++ b/Lib/lzma.py @@ -225,14 +225,22 @@ def write(self, data): """Write a bytes object to the file. Returns the number of uncompressed bytes written, which is - always len(data). Note that due to buffering, the file on disk - may not reflect the data written until close() is called. + always the length of data in bytes. Note that due to buffering, + the file on disk may not reflect the data written until close() + is called. """ self._check_can_write() + if isinstance(data, (bytes, bytearray)): + length = len(data) + else: + # accept any data that supports the buffer protocol + data = memoryview(data) + length = data.nbytes + compressed = self._compressor.compress(data) self._fp.write(compressed) - self._pos += len(data) - return len(data) + self._pos += length + return length def seek(self, offset, whence=io.SEEK_SET): """Change the file position. diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index 1fce9d82d25d6..c84f70ebb094a 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -1,6 +1,7 @@ from test import support from test.support import bigmemtest, _4G +import array import unittest from io import BytesIO, DEFAULT_BUFFER_SIZE import os @@ -618,6 +619,14 @@ def test_read_truncated(self): with BZ2File(BytesIO(truncated[:i])) as f: self.assertRaises(EOFError, f.read, 1) + def test_issue44439(self): + q = array.array('Q', [1, 2, 3, 4, 5]) + LENGTH = len(q) * q.itemsize + + with BZ2File(BytesIO(), 'w') as f: + self.assertEqual(f.write(q), LENGTH) + self.assertEqual(f.tell(), LENGTH) + class BZ2CompressorTest(BaseTest): def testCompress(self): diff --git a/Lib/test/test_lzma.py b/Lib/test/test_lzma.py index 0f3af27efa909..ef7dd6325d49f 100644 --- a/Lib/test/test_lzma.py +++ b/Lib/test/test_lzma.py @@ -1,4 +1,5 @@ import _compression +import array from io import BytesIO, UnsupportedOperation, DEFAULT_BUFFER_SIZE import os import pathlib @@ -1227,6 +1228,14 @@ def test_issue21872(self): self.assertTrue(d2.eof) self.assertEqual(out1 + out2, entire) + def test_issue44439(self): + q = array.array('Q', [1, 2, 3, 4, 5]) + LENGTH = len(q) * q.itemsize + + with LZMAFile(BytesIO(), 'w') as f: + self.assertEqual(f.write(q), LENGTH) + self.assertEqual(f.tell(), LENGTH) + class OpenTestCase(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst b/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst new file mode 100644 index 0000000000000..27396683700a8 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst @@ -0,0 +1,3 @@ +Fix in :meth:`bz2.BZ2File.write` / :meth:`lzma.LZMAFile.write` methods, when +the input data is an object that supports the buffer protocol, the file length +may be wrong. From webhook-mailer at python.org Tue Jun 22 10:00:02 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Tue, 22 Jun 2021 14:00:02 -0000 Subject: [Python-checkins] bpo-44439: BZ2File.write() / LZMAFile.write() handle buffer protocol correctly (GH-26764) (GH-26845) Message-ID: https://github.com/python/cpython/commit/01858fbe31e8e0185edfbd3f10172f7c61391c9d commit: 01858fbe31e8e0185edfbd3f10172f7c61391c9d branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: serhiy-storchaka date: 2021-06-22T16:59:53+03:00 summary: bpo-44439: BZ2File.write() / LZMAFile.write() handle buffer protocol correctly (GH-26764) (GH-26845) No longer use len() to get the length of the input data. For some buffer protocol objects, the length obtained by using len() is wrong. (cherry picked from commit bc6c12c72a9536acc96e7b9355fd69d1083a43c1) Co-authored-by: Ma Lin files: A Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst M Lib/bz2.py M Lib/gzip.py M Lib/lzma.py M Lib/test/test_bz2.py M Lib/test/test_gzip.py M Lib/test/test_lzma.py diff --git a/Lib/bz2.py b/Lib/bz2.py index a2c588e7487f3..7f1d20632ef13 100644 --- a/Lib/bz2.py +++ b/Lib/bz2.py @@ -219,14 +219,22 @@ def write(self, data): """Write a byte string to the file. Returns the number of uncompressed bytes written, which is - always len(data). Note that due to buffering, the file on disk - may not reflect the data written until close() is called. + always the length of data in bytes. Note that due to buffering, + the file on disk may not reflect the data written until close() + is called. """ self._check_can_write() + if isinstance(data, (bytes, bytearray)): + length = len(data) + else: + # accept any data that supports the buffer protocol + data = memoryview(data) + length = data.nbytes + compressed = self._compressor.compress(data) self._fp.write(compressed) - self._pos += len(data) - return len(data) + self._pos += length + return length def writelines(self, seq): """Write a sequence of byte strings to the file. diff --git a/Lib/gzip.py b/Lib/gzip.py index 1c1e795e1715d..3d837b744800e 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -278,7 +278,7 @@ def write(self,data): if self.fileobj is None: raise ValueError("write() on closed GzipFile object") - if isinstance(data, bytes): + if isinstance(data, (bytes, bytearray)): length = len(data) else: # accept any data that supports the buffer protocol diff --git a/Lib/lzma.py b/Lib/lzma.py index 2ada7d81d3c81..9abf06d91db18 100644 --- a/Lib/lzma.py +++ b/Lib/lzma.py @@ -229,14 +229,22 @@ def write(self, data): """Write a bytes object to the file. Returns the number of uncompressed bytes written, which is - always len(data). Note that due to buffering, the file on disk - may not reflect the data written until close() is called. + always the length of data in bytes. Note that due to buffering, + the file on disk may not reflect the data written until close() + is called. """ self._check_can_write() + if isinstance(data, (bytes, bytearray)): + length = len(data) + else: + # accept any data that supports the buffer protocol + data = memoryview(data) + length = data.nbytes + compressed = self._compressor.compress(data) self._fp.write(compressed) - self._pos += len(data) - return len(data) + self._pos += length + return length def seek(self, offset, whence=io.SEEK_SET): """Change the file position. diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index efed3a859ba21..7913beb87a352 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -1,6 +1,7 @@ from test import support from test.support import bigmemtest, _4G +import array import unittest from io import BytesIO, DEFAULT_BUFFER_SIZE import os @@ -620,6 +621,14 @@ def test_read_truncated(self): with BZ2File(BytesIO(truncated[:i])) as f: self.assertRaises(EOFError, f.read, 1) + def test_issue44439(self): + q = array.array('Q', [1, 2, 3, 4, 5]) + LENGTH = len(q) * q.itemsize + + with BZ2File(BytesIO(), 'w') as f: + self.assertEqual(f.write(q), LENGTH) + self.assertEqual(f.tell(), LENGTH) + class BZ2CompressorTest(BaseTest): def testCompress(self): diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index 446b61ab439ff..7b51e45aad92b 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -592,6 +592,15 @@ def test_prepend_error(self): with gzip.open(self.filename, "rb") as f: f._buffer.raw._fp.prepend() + def test_issue44439(self): + q = array.array('Q', [1, 2, 3, 4, 5]) + LENGTH = len(q) * q.itemsize + + with gzip.GzipFile(fileobj=io.BytesIO(), mode='w') as f: + self.assertEqual(f.write(q), LENGTH) + self.assertEqual(f.tell(), LENGTH) + + class TestOpen(BaseTest): def test_binary_modes(self): uncompressed = data1 * 50 diff --git a/Lib/test/test_lzma.py b/Lib/test/test_lzma.py index db20300056e48..1e2066b89168f 100644 --- a/Lib/test/test_lzma.py +++ b/Lib/test/test_lzma.py @@ -1,4 +1,5 @@ import _compression +import array from io import BytesIO, UnsupportedOperation, DEFAULT_BUFFER_SIZE import os import pathlib @@ -1231,6 +1232,14 @@ def test_issue21872(self): self.assertTrue(d2.eof) self.assertEqual(out1 + out2, entire) + def test_issue44439(self): + q = array.array('Q', [1, 2, 3, 4, 5]) + LENGTH = len(q) * q.itemsize + + with LZMAFile(BytesIO(), 'w') as f: + self.assertEqual(f.write(q), LENGTH) + self.assertEqual(f.tell(), LENGTH) + class OpenTestCase(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst b/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst new file mode 100644 index 0000000000000..27396683700a8 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst @@ -0,0 +1,3 @@ +Fix in :meth:`bz2.BZ2File.write` / :meth:`lzma.LZMAFile.write` methods, when +the input data is an object that supports the buffer protocol, the file length +may be wrong. From webhook-mailer at python.org Tue Jun 22 10:19:35 2021 From: webhook-mailer at python.org (terryjreedy) Date: Tue, 22 Jun 2021 14:19:35 -0000 Subject: [Python-checkins] bpo-41621: Document defaultdict's default_factory parameter (GH-21945) Message-ID: https://github.com/python/cpython/commit/d1ae57027fc39ff60dcfc1b63881400e5ca3ce56 commit: d1ae57027fc39ff60dcfc1b63881400e5ca3ce56 branch: main author: Dennis Sweeney <36520290+sweeneyde at users.noreply.github.com> committer: terryjreedy date: 2021-06-22T10:19:24-04:00 summary: bpo-41621: Document defaultdict's default_factory parameter (GH-21945) It defaults to None and is positional only. files: A Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst M Doc/library/collections.rst M Modules/_collectionsmodule.c diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index 94166ec6c754a..a63090414d439 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -707,9 +707,9 @@ stack manipulations such as ``dup``, ``drop``, ``swap``, ``over``, ``pick``, :class:`defaultdict` objects ---------------------------- -.. class:: defaultdict([default_factory[, ...]]) +.. class:: defaultdict(default_factory=None, /, [...]) - Returns a new dictionary-like object. :class:`defaultdict` is a subclass of the + Return a new dictionary-like object. :class:`defaultdict` is a subclass of the built-in :class:`dict` class. It overrides one method and adds one writable instance variable. The remaining functionality is the same as for the :class:`dict` class and is not documented here. diff --git a/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst b/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst new file mode 100644 index 0000000000000..bd193d9163073 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst @@ -0,0 +1 @@ +Document that :class:`collections.defaultdict` parameter ``default_factory`` defaults to None and is positional-only. diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 79c6b5752afa2..57e3464145be6 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -2241,7 +2241,7 @@ defdict_init(PyObject *self, PyObject *args, PyObject *kwds) } PyDoc_STRVAR(defdict_doc, -"defaultdict(default_factory[, ...]) --> dict with default factory\n\ +"defaultdict(default_factory=None, /, [...]) --> dict with default factory\n\ \n\ The default factory is called without arguments to produce\n\ a new value when a key is not present, in __getitem__ only.\n\ From webhook-mailer at python.org Tue Jun 22 10:42:50 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Jun 2021 14:42:50 -0000 Subject: [Python-checkins] bpo-41621: Document defaultdict's default_factory parameter (GH-21945) Message-ID: https://github.com/python/cpython/commit/a65df3f9fc9a51f3e8d710492aafe07b13f0be0f commit: a65df3f9fc9a51f3e8d710492aafe07b13f0be0f branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-22T07:42:41-07:00 summary: bpo-41621: Document defaultdict's default_factory parameter (GH-21945) It defaults to None and is positional only. (cherry picked from commit d1ae57027fc39ff60dcfc1b63881400e5ca3ce56) Co-authored-by: Dennis Sweeney <36520290+sweeneyde at users.noreply.github.com> files: A Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst M Doc/library/collections.rst M Modules/_collectionsmodule.c diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index 4dc1b9fc2ec749..5189a2e88a6ce1 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -685,9 +685,9 @@ stack manipulations such as ``dup``, ``drop``, ``swap``, ``over``, ``pick``, :class:`defaultdict` objects ---------------------------- -.. class:: defaultdict([default_factory[, ...]]) +.. class:: defaultdict(default_factory=None, /, [...]) - Returns a new dictionary-like object. :class:`defaultdict` is a subclass of the + Return a new dictionary-like object. :class:`defaultdict` is a subclass of the built-in :class:`dict` class. It overrides one method and adds one writable instance variable. The remaining functionality is the same as for the :class:`dict` class and is not documented here. diff --git a/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst b/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst new file mode 100644 index 00000000000000..bd193d9163073a --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst @@ -0,0 +1 @@ +Document that :class:`collections.defaultdict` parameter ``default_factory`` defaults to None and is positional-only. diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 7120e4dda0ed23..2e19b83dcec6fe 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -2213,7 +2213,7 @@ defdict_init(PyObject *self, PyObject *args, PyObject *kwds) } PyDoc_STRVAR(defdict_doc, -"defaultdict(default_factory[, ...]) --> dict with default factory\n\ +"defaultdict(default_factory=None, /, [...]) --> dict with default factory\n\ \n\ The default factory is called without arguments to produce\n\ a new value when a key is not present, in __getitem__ only.\n\ From webhook-mailer at python.org Tue Jun 22 12:29:50 2021 From: webhook-mailer at python.org (isidentical) Date: Tue, 22 Jun 2021 16:29:50 -0000 Subject: [Python-checkins] bpo-40528: Implement a metadata system for ASDL Generator (GH-20193) Message-ID: https://github.com/python/cpython/commit/35ad425866d591c33d7f2be2b9da8bce2bff9523 commit: 35ad425866d591c33d7f2be2b9da8bce2bff9523 branch: main author: Batuhan Taskaya committer: isidentical date: 2021-06-22T19:29:42+03:00 summary: bpo-40528: Implement a metadata system for ASDL Generator (GH-20193) ASDL Generator was lack of proper annotation related to generated module. This patch implements a MetadataVisitor that produces a metadata object to pass to other visitors that are visiting that same module. For the inital patch, it dynamically retrieves int sequences (like cmpop), that was previously hardcoded. It offers an interface that is easy to extend. files: M Parser/asdl_c.py diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index 4e5c5c8f7f7093..371730a13f0578 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -4,6 +4,7 @@ import os import sys import textwrap +import types from argparse import ArgumentParser from contextlib import contextmanager @@ -100,11 +101,12 @@ def asdl_of(name, obj): class EmitVisitor(asdl.VisitorBase): """Visit that emits lines""" - def __init__(self, file): + def __init__(self, file, metadata = None): self.file = file self.identifiers = set() self.singletons = set() self.types = set() + self._metadata = metadata super(EmitVisitor, self).__init__() def emit_identifier(self, name): @@ -127,6 +129,42 @@ def emit(self, s, depth, reflow=True): line = (" " * TABSIZE * depth) + line self.file.write(line + "\n") + @property + def metadata(self): + if self._metadata is None: + raise ValueError( + "%s was expecting to be annnotated with metadata" + % type(self).__name__ + ) + return self._metadata + + @metadata.setter + def metadata(self, value): + self._metadata = value + +class MetadataVisitor(asdl.VisitorBase): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Metadata: + # - simple_sums: Tracks the list of compound type + # names where all the constructors + # belonging to that type lack of any + # fields. + self.metadata = types.SimpleNamespace( + simple_sums=set() + ) + + def visitModule(self, mod): + for dfn in mod.dfns: + self.visit(dfn) + + def visitType(self, type): + self.visit(type.value, type.name) + + def visitSum(self, sum, name): + if is_simple(sum): + self.metadata.simple_sums.add(name) class TypeDefVisitor(EmitVisitor): def visitModule(self, mod): @@ -244,7 +282,7 @@ def visitField(self, field, depth): ctype = get_c_type(field.type) name = field.name if field.seq: - if field.type == 'cmpop': + if field.type in self.metadata.simple_sums: self.emit("asdl_int_seq *%(name)s;" % locals(), depth) else: _type = field.type @@ -304,7 +342,7 @@ def get_args(self, fields): name = f.name # XXX should extend get_c_type() to handle this if f.seq: - if f.type == 'cmpop': + if f.type in self.metadata.simple_sums: ctype = "asdl_int_seq *" else: ctype = f"asdl_{f.type}_seq *" @@ -549,16 +587,11 @@ def visitFieldDeclaration(self, field, name, sum=None, prod=None, depth=0): ctype = get_c_type(field.type) self.emit("%s %s;" % (ctype, field.name), depth) - def isSimpleSum(self, field): - # XXX can the members of this list be determined automatically? - return field.type in ('expr_context', 'boolop', 'operator', - 'unaryop', 'cmpop') - def isNumeric(self, field): return get_c_type(field.type) in ("int", "bool") def isSimpleType(self, field): - return self.isSimpleSum(field) or self.isNumeric(field) + return field.type in self.metadata.simple_sums or self.isNumeric(field) def visitField(self, field, name, sum=None, prod=None, depth=0): ctype = get_c_type(field.type) @@ -1282,18 +1315,23 @@ def emit(s, d): def set(self, field, value, depth): if field.seq: - # XXX should really check for is_simple, but that requires a symbol table - if field.type == "cmpop": + if field.type in self.metadata.simple_sums: # While the sequence elements are stored as void*, - # ast2obj_cmpop expects an enum + # simple sums expects an enum self.emit("{", depth) self.emit("Py_ssize_t i, n = asdl_seq_LEN(%s);" % value, depth+1) self.emit("value = PyList_New(n);", depth+1) self.emit("if (!value) goto failed;", depth+1) self.emit("for(i = 0; i < n; i++)", depth+1) # This cannot fail, so no need for error handling - self.emit("PyList_SET_ITEM(value, i, ast2obj_cmpop(state, (cmpop_ty)asdl_seq_GET(%s, i)));" % value, - depth+2, reflow=False) + self.emit( + "PyList_SET_ITEM(value, i, ast2obj_{0}(state, ({0}_ty)asdl_seq_GET({1}, i)));".format( + field.type, + value + ), + depth + 2, + reflow=False, + ) self.emit("}", depth) else: self.emit("value = ast2obj_list(state, (asdl_seq*)%s, ast2obj_%s);" % (value, field.type), depth) @@ -1362,11 +1400,13 @@ class PartingShots(StaticVisitor): """ class ChainOfVisitors: - def __init__(self, *visitors): + def __init__(self, *visitors, metadata = None): self.visitors = visitors + self.metadata = metadata def visit(self, object): for v in self.visitors: + v.metadata = self.metadata v.visit(object) v.emit("", 0) @@ -1468,7 +1508,7 @@ def generate_module_def(mod, f, internal_h): f.write(' return 1;\n') f.write('};\n\n') -def write_header(mod, f): +def write_header(mod, metadata, f): f.write(textwrap.dedent(""" #ifndef Py_INTERNAL_AST_H #define Py_INTERNAL_AST_H @@ -1483,12 +1523,19 @@ def write_header(mod, f): #include "pycore_asdl.h" """).lstrip()) - c = ChainOfVisitors(TypeDefVisitor(f), - SequenceDefVisitor(f), - StructVisitor(f)) + + c = ChainOfVisitors( + TypeDefVisitor(f), + SequenceDefVisitor(f), + StructVisitor(f), + metadata=metadata + ) c.visit(mod) + f.write("// Note: these macros affect function definitions, not only call sites.\n") - PrototypeVisitor(f).visit(mod) + prototype_visitor = PrototypeVisitor(f, metadata=metadata) + prototype_visitor.visit(mod) + f.write(textwrap.dedent(""" PyObject* PyAST_mod2obj(mod_ty t); @@ -1535,8 +1582,7 @@ def write_internal_h_footer(mod, f): #endif /* !Py_INTERNAL_AST_STATE_H */ """), file=f) - -def write_source(mod, f, internal_h_file): +def write_source(mod, metadata, f, internal_h_file): generate_module_def(mod, f, internal_h_file) v = ChainOfVisitors( @@ -1549,6 +1595,7 @@ def write_source(mod, f, internal_h_file): Obj2ModVisitor(f), ASTModuleVisitor(f), PartingShots(f), + metadata=metadata ) v.visit(mod) @@ -1561,6 +1608,10 @@ def main(input_filename, c_filename, h_filename, internal_h_filename, dump_modul if not asdl.check(mod): sys.exit(1) + metadata_visitor = MetadataVisitor() + metadata_visitor.visit(mod) + metadata = metadata_visitor.metadata + with c_filename.open("w") as c_file, \ h_filename.open("w") as h_file, \ internal_h_filename.open("w") as internal_h_file: @@ -1569,8 +1620,8 @@ def main(input_filename, c_filename, h_filename, internal_h_filename, dump_modul internal_h_file.write(auto_gen_msg) write_internal_h_header(mod, internal_h_file) - write_source(mod, c_file, internal_h_file) - write_header(mod, h_file) + write_source(mod, metadata, c_file, internal_h_file) + write_header(mod, metadata, h_file) write_internal_h_footer(mod, internal_h_file) print(f"{c_filename}, {h_filename}, {internal_h_filename} regenerated.") From webhook-mailer at python.org Tue Jun 22 12:49:20 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 22 Jun 2021 16:49:20 -0000 Subject: [Python-checkins] [doc] Improve punctuation atexit doc Message-ID: https://github.com/python/cpython/commit/a6b47de07a304eaa37a1c5554ed00a3ec91f8407 commit: a6b47de07a304eaa37a1c5554ed00a3ec91f8407 branch: main author: G?ry Ogam committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-22T17:49:12+01:00 summary: [doc] Improve punctuation atexit doc files: M Doc/library/atexit.rst diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index c2c058e474cbd..e6fa33ac3eaa3 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -39,7 +39,7 @@ internal error is detected, or when :func:`os._exit` is called. If an exception is raised during execution of the exit handlers, a traceback is printed (unless :exc:`SystemExit` is raised) and the exception information is - saved. After all exit handlers have had a chance to run the last exception to + saved. After all exit handlers have had a chance to run, the last exception to be raised is re-raised. This function returns *func*, which makes it possible to use it as a @@ -73,7 +73,7 @@ automatically when the program terminates without relying on the application making an explicit call into this module at termination. :: try: - with open("counterfile") as infile: + with open('counterfile') as infile: _count = int(infile.read()) except FileNotFoundError: _count = 0 @@ -83,21 +83,22 @@ making an explicit call into this module at termination. :: _count = _count + n def savecounter(): - with open("counterfile", "w") as outfile: - outfile.write("%d" % _count) + with open('counterfile', 'w') as outfile: + outfile.write('%d' % _count) import atexit + atexit.register(savecounter) Positional and keyword arguments may also be passed to :func:`register` to be passed along to the registered function when it is called:: def goodbye(name, adjective): - print('Goodbye, %s, it was %s to meet you.' % (name, adjective)) + print('Goodbye %s, it was %s to meet you.' % (name, adjective)) import atexit - atexit.register(goodbye, 'Donny', 'nice') + atexit.register(goodbye, 'Donny', 'nice') # or: atexit.register(goodbye, adjective='nice', name='Donny') @@ -107,6 +108,6 @@ Usage as a :term:`decorator`:: @atexit.register def goodbye(): - print("You are now leaving the Python sector.") + print('You are now leaving the Python sector.') This only works with functions that can be called without arguments. From webhook-mailer at python.org Tue Jun 22 13:10:32 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 22 Jun 2021 17:10:32 -0000 Subject: [Python-checkins] [doc] Improve punctuation atexit doc (GH-25629) (GH-26856) Message-ID: https://github.com/python/cpython/commit/e6ea428b83acfee86fb83a7f7f76efece801c67a commit: e6ea428b83acfee86fb83a7f7f76efece801c67a branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-22T18:10:22+01:00 summary: [doc] Improve punctuation atexit doc (GH-25629) (GH-26856) (cherry picked from commit a6b47de07a304eaa37a1c5554ed00a3ec91f8407) Co-authored-by: G?ry Ogam Co-authored-by: G?ry Ogam files: M Doc/library/atexit.rst diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index c2c058e474cbd..e6fa33ac3eaa3 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -39,7 +39,7 @@ internal error is detected, or when :func:`os._exit` is called. If an exception is raised during execution of the exit handlers, a traceback is printed (unless :exc:`SystemExit` is raised) and the exception information is - saved. After all exit handlers have had a chance to run the last exception to + saved. After all exit handlers have had a chance to run, the last exception to be raised is re-raised. This function returns *func*, which makes it possible to use it as a @@ -73,7 +73,7 @@ automatically when the program terminates without relying on the application making an explicit call into this module at termination. :: try: - with open("counterfile") as infile: + with open('counterfile') as infile: _count = int(infile.read()) except FileNotFoundError: _count = 0 @@ -83,21 +83,22 @@ making an explicit call into this module at termination. :: _count = _count + n def savecounter(): - with open("counterfile", "w") as outfile: - outfile.write("%d" % _count) + with open('counterfile', 'w') as outfile: + outfile.write('%d' % _count) import atexit + atexit.register(savecounter) Positional and keyword arguments may also be passed to :func:`register` to be passed along to the registered function when it is called:: def goodbye(name, adjective): - print('Goodbye, %s, it was %s to meet you.' % (name, adjective)) + print('Goodbye %s, it was %s to meet you.' % (name, adjective)) import atexit - atexit.register(goodbye, 'Donny', 'nice') + atexit.register(goodbye, 'Donny', 'nice') # or: atexit.register(goodbye, adjective='nice', name='Donny') @@ -107,6 +108,6 @@ Usage as a :term:`decorator`:: @atexit.register def goodbye(): - print("You are now leaving the Python sector.") + print('You are now leaving the Python sector.') This only works with functions that can be called without arguments. From webhook-mailer at python.org Tue Jun 22 13:10:54 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 22 Jun 2021 17:10:54 -0000 Subject: [Python-checkins] [doc] Improve punctuation atexit doc (GH-25629) (GH-26857) Message-ID: https://github.com/python/cpython/commit/ef89b2bf42650accd460973f2ecb4f8d661fa5c4 commit: ef89b2bf42650accd460973f2ecb4f8d661fa5c4 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-22T18:10:50+01:00 summary: [doc] Improve punctuation atexit doc (GH-25629) (GH-26857) (cherry picked from commit a6b47de07a304eaa37a1c5554ed00a3ec91f8407) Co-authored-by: G?ry Ogam Co-authored-by: G?ry Ogam files: M Doc/library/atexit.rst diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index c2c058e474cbd..e6fa33ac3eaa3 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -39,7 +39,7 @@ internal error is detected, or when :func:`os._exit` is called. If an exception is raised during execution of the exit handlers, a traceback is printed (unless :exc:`SystemExit` is raised) and the exception information is - saved. After all exit handlers have had a chance to run the last exception to + saved. After all exit handlers have had a chance to run, the last exception to be raised is re-raised. This function returns *func*, which makes it possible to use it as a @@ -73,7 +73,7 @@ automatically when the program terminates without relying on the application making an explicit call into this module at termination. :: try: - with open("counterfile") as infile: + with open('counterfile') as infile: _count = int(infile.read()) except FileNotFoundError: _count = 0 @@ -83,21 +83,22 @@ making an explicit call into this module at termination. :: _count = _count + n def savecounter(): - with open("counterfile", "w") as outfile: - outfile.write("%d" % _count) + with open('counterfile', 'w') as outfile: + outfile.write('%d' % _count) import atexit + atexit.register(savecounter) Positional and keyword arguments may also be passed to :func:`register` to be passed along to the registered function when it is called:: def goodbye(name, adjective): - print('Goodbye, %s, it was %s to meet you.' % (name, adjective)) + print('Goodbye %s, it was %s to meet you.' % (name, adjective)) import atexit - atexit.register(goodbye, 'Donny', 'nice') + atexit.register(goodbye, 'Donny', 'nice') # or: atexit.register(goodbye, adjective='nice', name='Donny') @@ -107,6 +108,6 @@ Usage as a :term:`decorator`:: @atexit.register def goodbye(): - print("You are now leaving the Python sector.") + print('You are now leaving the Python sector.') This only works with functions that can be called without arguments. From webhook-mailer at python.org Tue Jun 22 17:01:15 2021 From: webhook-mailer at python.org (gvanrossum) Date: Tue, 22 Jun 2021 21:01:15 -0000 Subject: [Python-checkins] bpo-43918: document signature and default argument of `anext` builtin (#25551) Message-ID: https://github.com/python/cpython/commit/6af4e6b266cb19d646ad7e4051fc7974c3096d23 commit: 6af4e6b266cb19d646ad7e4051fc7974c3096d23 branch: main author: Erik Welch committer: gvanrossum date: 2021-06-22T14:00:51-07:00 summary: bpo-43918: document signature and default argument of `anext` builtin (#25551) Co-authored-by: Dennis Sweeney <36520290+sweeneyde at users.noreply.github.com> files: A Misc/NEWS.d/next/Core and Builtins/2021-04-23-03-46-45.bpo-43918.nNDY3S.rst M Python/bltinmodule.c M Python/clinic/bltinmodule.c.h diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-23-03-46-45.bpo-43918.nNDY3S.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-23-03-46-45.bpo-43918.nNDY3S.rst new file mode 100644 index 00000000000000..f2f33f02abbd99 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-23-03-46-45.bpo-43918.nNDY3S.rst @@ -0,0 +1 @@ +Document the signature and ``default`` argument in the docstring of the new ``anext`` builtin. \ No newline at end of file diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 66a74cbdef6104..66c5fba275dc24 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -1631,13 +1631,16 @@ anext as builtin_anext default: object = NULL / -Return the next item from the async iterator. +async anext(aiterator[, default]) + +Return the next item from the async iterator. If default is given and the async +iterator is exhausted, it is returned instead of raising StopAsyncIteration. [clinic start generated code]*/ static PyObject * builtin_anext_impl(PyObject *module, PyObject *aiterator, PyObject *default_value) -/*[clinic end generated code: output=f02c060c163a81fa input=699d11f4e38eca24]*/ +/*[clinic end generated code: output=f02c060c163a81fa input=8f63f4f78590bb4c]*/ { PyTypeObject *t; PyObject *awaitable; diff --git a/Python/clinic/bltinmodule.c.h b/Python/clinic/bltinmodule.c.h index 545f5b53f6e549..4ea58761cf9628 100644 --- a/Python/clinic/bltinmodule.c.h +++ b/Python/clinic/bltinmodule.c.h @@ -543,7 +543,10 @@ PyDoc_STRVAR(builtin_anext__doc__, "anext($module, aiterator, default=, /)\n" "--\n" "\n" -"Return the next item from the async iterator."); +"async anext(aiterator[, default])\n" +"\n" +"Return the next item from the async iterator. If default is given and the async\n" +"iterator is exhausted, it is returned instead of raising StopAsyncIteration."); #define BUILTIN_ANEXT_METHODDEF \ {"anext", (PyCFunction)(void(*)(void))builtin_anext, METH_FASTCALL, builtin_anext__doc__}, @@ -874,4 +877,4 @@ builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs) exit: return return_value; } -/*[clinic end generated code: output=da9ae459e9233259 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=e1d8057298b5de61 input=a9049054013a1b77]*/ From webhook-mailer at python.org Tue Jun 22 18:42:36 2021 From: webhook-mailer at python.org (gvanrossum) Date: Tue, 22 Jun 2021 22:42:36 -0000 Subject: [Python-checkins] Fix typo in test_typing.py (GH-26853) Message-ID: https://github.com/python/cpython/commit/35b773accb41f09e40bf17bfaa5f0bc80796a26c commit: 35b773accb41f09e40bf17bfaa5f0bc80796a26c branch: main author: Ikko Ashimine committer: gvanrossum date: 2021-06-22T15:42:28-07:00 summary: Fix typo in test_typing.py (GH-26853) maximium -> maximum files: M Lib/test/test_typing.py diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index eff0f5bfc4b1e..cb198d6b75fd6 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -517,7 +517,7 @@ def test_basics(self): def test_illegal_parameters_do_not_raise_runtime_errors(self): # Type checkers should reject these types, but we do not - # raise errors at runtime to maintain maximium flexibility. + # raise errors at runtime to maintain maximum flexibility. Literal[int] Literal[3j + 2, ..., ()] Literal[{"foo": 3, "bar": 4}] From webhook-mailer at python.org Wed Jun 23 05:00:50 2021 From: webhook-mailer at python.org (markshannon) Date: Wed, 23 Jun 2021 09:00:50 -0000 Subject: [Python-checkins] bpo-44486: Make sure that modules always have a dictionary. (GH-26847) Message-ID: https://github.com/python/cpython/commit/c3f52b4d707a78eb342372a2be00f3eb846a05b9 commit: c3f52b4d707a78eb342372a2be00f3eb846a05b9 branch: main author: Mark Shannon committer: markshannon date: 2021-06-23T10:00:43+01:00 summary: bpo-44486: Make sure that modules always have a dictionary. (GH-26847) * Make sure that modules always have a dictionary. files: A Misc/NEWS.d/next/Core and Builtins/2021-06-22-10-55-23.bpo-44486.wct-9X.rst M Lib/test/test_module.py M Objects/moduleobject.c M Python/ceval.c diff --git a/Lib/test/test_module.py b/Lib/test/test_module.py index 65319d5dca6d5..6608dbc8a5a70 100644 --- a/Lib/test/test_module.py +++ b/Lib/test/test_module.py @@ -22,8 +22,8 @@ def test_uninitialized(self): # An uninitialized module has no __dict__ or __name__, # and __doc__ is None foo = ModuleType.__new__(ModuleType) - self.assertTrue(foo.__dict__ is None) - self.assertRaises(TypeError, dir, foo) + self.assertTrue(isinstance(foo.__dict__, dict)) + self.assertEqual(dir(foo), []) try: s = foo.__name__ self.fail("__name__ = %s" % repr(s)) @@ -318,15 +318,6 @@ def test_setting_annotations(self): del foo.__dict__['__annotations__'] def test_annotations_getset_raises(self): - # module has no dict, all operations fail - foo = ModuleType.__new__(ModuleType) - with self.assertRaises(TypeError): - print(foo.__annotations__) - with self.assertRaises(TypeError): - foo.__annotations__ = {} - with self.assertRaises(TypeError): - del foo.__annotations__ - # double delete foo = ModuleType("foo") foo.__annotations__ = {} diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-22-10-55-23.bpo-44486.wct-9X.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-22-10-55-23.bpo-44486.wct-9X.rst new file mode 100644 index 0000000000000..cc419602541b7 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-22-10-55-23.bpo-44486.wct-9X.rst @@ -0,0 +1,2 @@ +Modules will always have a dictionary, even when created by +``types.ModuleType.__new__()`` diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index b69e5cedbb5f3..61478a1c4817c 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -64,8 +64,7 @@ module_init_dict(PyModuleObject *mod, PyObject *md_dict, _Py_IDENTIFIER(__package__); _Py_IDENTIFIER(__loader__); - if (md_dict == NULL) - return -1; + assert(md_dict != NULL); if (doc == NULL) doc = Py_None; @@ -87,12 +86,11 @@ module_init_dict(PyModuleObject *mod, PyObject *md_dict, return 0; } - -PyObject * -PyModule_NewObject(PyObject *name) +static PyModuleObject * +new_module_notrack(PyTypeObject *mt) { PyModuleObject *m; - m = PyObject_GC_New(PyModuleObject, &PyModule_Type); + m = PyObject_GC_New(PyModuleObject, mt); if (m == NULL) return NULL; m->md_def = NULL; @@ -100,6 +98,29 @@ PyModule_NewObject(PyObject *name) m->md_weaklist = NULL; m->md_name = NULL; m->md_dict = PyDict_New(); + if (m->md_dict != NULL) { + return m; + } + Py_DECREF(m); + return NULL; +} + +static PyObject * +new_module(PyTypeObject *mt, PyObject *args, PyObject *kws) +{ + PyObject *m = (PyObject *)new_module_notrack(mt); + if (m != NULL) { + PyObject_GC_Track(m); + } + return m; +} + +PyObject * +PyModule_NewObject(PyObject *name) +{ + PyModuleObject *m = new_module_notrack(&PyModule_Type); + if (m == NULL) + return NULL; if (module_init_dict(m, m->md_dict, name, NULL) != 0) goto fail; PyObject_GC_Track(m); @@ -728,43 +749,42 @@ module_getattro(PyModuleObject *m, PyObject *name) return attr; } PyErr_Clear(); - if (m->md_dict) { - _Py_IDENTIFIER(__getattr__); - getattr = _PyDict_GetItemIdWithError(m->md_dict, &PyId___getattr__); - if (getattr) { - return PyObject_CallOneArg(getattr, name); - } - if (PyErr_Occurred()) { - return NULL; - } - mod_name = _PyDict_GetItemIdWithError(m->md_dict, &PyId___name__); - if (mod_name && PyUnicode_Check(mod_name)) { - Py_INCREF(mod_name); - PyObject *spec = _PyDict_GetItemIdWithError(m->md_dict, &PyId___spec__); - if (spec == NULL && PyErr_Occurred()) { - Py_DECREF(mod_name); - return NULL; - } - Py_XINCREF(spec); - if (_PyModuleSpec_IsInitializing(spec)) { - PyErr_Format(PyExc_AttributeError, - "partially initialized " - "module '%U' has no attribute '%U' " - "(most likely due to a circular import)", - mod_name, name); - } - else { - PyErr_Format(PyExc_AttributeError, - "module '%U' has no attribute '%U'", - mod_name, name); - } - Py_XDECREF(spec); + assert(m->md_dict != NULL); + _Py_IDENTIFIER(__getattr__); + getattr = _PyDict_GetItemIdWithError(m->md_dict, &PyId___getattr__); + if (getattr) { + return PyObject_CallOneArg(getattr, name); + } + if (PyErr_Occurred()) { + return NULL; + } + mod_name = _PyDict_GetItemIdWithError(m->md_dict, &PyId___name__); + if (mod_name && PyUnicode_Check(mod_name)) { + Py_INCREF(mod_name); + PyObject *spec = _PyDict_GetItemIdWithError(m->md_dict, &PyId___spec__); + if (spec == NULL && PyErr_Occurred()) { Py_DECREF(mod_name); return NULL; } - else if (PyErr_Occurred()) { - return NULL; + Py_XINCREF(spec); + if (_PyModuleSpec_IsInitializing(spec)) { + PyErr_Format(PyExc_AttributeError, + "partially initialized " + "module '%U' has no attribute '%U' " + "(most likely due to a circular import)", + mod_name, name); } + else { + PyErr_Format(PyExc_AttributeError, + "module '%U' has no attribute '%U'", + mod_name, name); + } + Py_XDECREF(spec); + Py_DECREF(mod_name); + return NULL; + } + else if (PyErr_Occurred()) { + return NULL; } PyErr_Format(PyExc_AttributeError, "module has no attribute '%U'", name); @@ -948,7 +968,7 @@ PyTypeObject PyModule_Type = { 0, /* tp_descr_set */ offsetof(PyModuleObject, md_dict), /* tp_dictoffset */ module___init__, /* tp_init */ - PyType_GenericAlloc, /* tp_alloc */ - PyType_GenericNew, /* tp_new */ + 0, /* tp_alloc */ + new_module, /* tp_new */ PyObject_GC_Del, /* tp_free */ }; diff --git a/Python/ceval.c b/Python/ceval.c index 9c11640ec6e0c..3f961f60c081c 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3337,6 +3337,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) _PyLoadAttrCache *cache1 = &caches[-1].load_attr; DEOPT_IF(!PyModule_CheckExact(owner), LOAD_ATTR); PyDictObject *dict = (PyDictObject *)((PyModuleObject *)owner)->md_dict; + assert(dict != NULL); DEOPT_IF(dict->ma_keys->dk_version != cache1->dk_version_or_hint, LOAD_ATTR); assert(dict->ma_keys->dk_kind == DICT_KEYS_UNICODE); assert(cache0->index < dict->ma_keys->dk_nentries); From webhook-mailer at python.org Wed Jun 23 05:01:11 2021 From: webhook-mailer at python.org (corona10) Date: Wed, 23 Jun 2021 09:01:11 -0000 Subject: [Python-checkins] bpo-28395: Remove unnecessary semicolons in tests (GH-26868) Message-ID: https://github.com/python/cpython/commit/5a3108044d2e5b694da2d1f4176c9bbaef15c142 commit: 5a3108044d2e5b694da2d1f4176c9bbaef15c142 branch: main author: Dong-hee Na committer: corona10 date: 2021-06-23T18:01:06+09:00 summary: bpo-28395: Remove unnecessary semicolons in tests (GH-26868) files: M Lib/test/test_capi.py M Lib/test/test_codeop.py M Lib/test/test_csv.py M Lib/test/test_deque.py M Lib/test/test_float.py M Lib/test/test_heapq.py M Lib/test/test_import/__init__.py M Lib/test/test_set.py diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index f4b7b8c13b7d38..169e7acbf92b4c 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -635,11 +635,11 @@ def callback(): #unsuccessful. while True: if _testcapi._pending_threadfunc(callback): - break; + break def pendingcalls_wait(self, l, n, context = None): #now, stick around until l[0] has grown to 10 - count = 0; + count = 0 while len(l) != n: #this busy loop is where we expect to be interrupted to #run our callbacks. Note that callbacks are only run on the diff --git a/Lib/test/test_codeop.py b/Lib/test/test_codeop.py index 07b46afbe1bd89..17376c7ed7537e 100644 --- a/Lib/test/test_codeop.py +++ b/Lib/test/test_codeop.py @@ -182,21 +182,21 @@ def test_incomplete(self): ai("from a import (b,c") ai("from a import (b,c,") - ai("["); - ai("[a"); - ai("[a,"); - ai("[a,b"); - ai("[a,b,"); - - ai("{"); - ai("{a"); - ai("{a:"); - ai("{a:b"); - ai("{a:b,"); - ai("{a:b,c"); - ai("{a:b,c:"); - ai("{a:b,c:d"); - ai("{a:b,c:d,"); + ai("[") + ai("[a") + ai("[a,") + ai("[a,b") + ai("[a,b,") + + ai("{") + ai("{a") + ai("{a:") + ai("{a:b") + ai("{a:b,") + ai("{a:b,c") + ai("{a:b,c:") + ai("{a:b,c:d") + ai("{a:b,c:d,") ai("a(") ai("a(b") diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index a1e050acd2a0c6..225f5c7289081a 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -157,7 +157,7 @@ def test_write_arg_valid(self): self._write_error_test(OSError, BadIterable()) class BadList: def __len__(self): - return 10; + return 10 def __getitem__(self, i): if i > 2: raise OSError diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py index f1a79373decda5..ffe0e204a0e8c0 100644 --- a/Lib/test/test_deque.py +++ b/Lib/test/test_deque.py @@ -129,7 +129,8 @@ def __eq__(self, other): self.assertEqual(d.count(None), 16) def test_comparisons(self): - d = deque('xabc'); d.popleft() + d = deque('xabc') + d.popleft() for e in [d, deque('abc'), deque('ab'), deque(), list(d)]: self.assertEqual(d==e, type(d)==type(e) and list(d)==list(e)) self.assertEqual(d!=e, not(type(d)==type(e) and list(d)==list(e))) @@ -529,8 +530,8 @@ def test_repr(self): self.assertEqual(repr(d)[-20:], '7, 198, 199, [...]])') def test_init(self): - self.assertRaises(TypeError, deque, 'abc', 2, 3); - self.assertRaises(TypeError, deque, 1); + self.assertRaises(TypeError, deque, 'abc', 2, 3) + self.assertRaises(TypeError, deque, 1) def test_hash(self): self.assertRaises(TypeError, hash, deque('abc')) diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py index f0ed40f7c94a7e..38a17cedd6446f 100644 --- a/Lib/test/test_float.py +++ b/Lib/test/test_float.py @@ -1184,10 +1184,10 @@ def test_whitespace(self): def test_from_hex(self): - MIN = self.MIN; - MAX = self.MAX; - TINY = self.TINY; - EPS = self.EPS; + MIN = self.MIN + MAX = self.MAX + TINY = self.TINY + EPS = self.EPS # two spellings of infinity, with optional signs; case-insensitive self.identical(fromHex('inf'), INF) diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py index ebbc62745707cc..cb1e4505b02a30 100644 --- a/Lib/test/test_heapq.py +++ b/Lib/test/test_heapq.py @@ -146,11 +146,11 @@ def test_heappushpop(self): self.assertEqual(type(h[0]), int) self.assertEqual(type(x), float) - h = [10]; + h = [10] x = self.module.heappushpop(h, 9) self.assertEqual((h, x), ([10], 9)) - h = [10]; + h = [10] x = self.module.heappushpop(h, 11) self.assertEqual((h, x), ([11], 10)) diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py index 8fe3e1d4bf38d8..97447619b90d2d 100644 --- a/Lib/test/test_import/__init__.py +++ b/Lib/test/test_import/__init__.py @@ -1086,7 +1086,7 @@ def test_get_sourcefile(self): # Given a valid bytecode path, return the path to the corresponding # source file if it exists. with mock.patch('importlib._bootstrap_external._path_isfile') as _path_isfile: - _path_isfile.return_value = True; + _path_isfile.return_value = True path = TESTFN + '.pyc' expect = TESTFN + '.py' self.assertEqual(_get_sourcefile(path), expect) @@ -1095,7 +1095,7 @@ def test_get_sourcefile_no_source(self): # Given a valid bytecode path without a corresponding source path, # return the original bytecode path. with mock.patch('importlib._bootstrap_external._path_isfile') as _path_isfile: - _path_isfile.return_value = False; + _path_isfile.return_value = False path = TESTFN + '.pyc' self.assertEqual(_get_sourcefile(path), path) diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py index e45f018d2da71b..b1fab0f6207f40 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -362,8 +362,8 @@ def test_init(self): self.assertEqual(s, set(self.word)) s.__init__(self.otherword) self.assertEqual(s, set(self.otherword)) - self.assertRaises(TypeError, s.__init__, s, 2); - self.assertRaises(TypeError, s.__init__, 1); + self.assertRaises(TypeError, s.__init__, s, 2) + self.assertRaises(TypeError, s.__init__, 1) def test_constructor_identity(self): s = self.thetype(range(3)) From webhook-mailer at python.org Wed Jun 23 05:39:22 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Wed, 23 Jun 2021 09:39:22 -0000 Subject: [Python-checkins] bpo-44483: Fix crash in union object with bad ``__module__`` (GH-26848) (GH-26852) Message-ID: https://github.com/python/cpython/commit/7e6cad7e303b3991360a0fe332b0d21aa0f6fe5e commit: 7e6cad7e303b3991360a0fe332b0d21aa0f6fe5e branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: serhiy-storchaka date: 2021-06-23T12:38:49+03:00 summary: bpo-44483: Fix crash in union object with bad ``__module__`` (GH-26848) (GH-26852) (cherry picked from commit adfa1ba398c74720b42f16f06fd3ec0353599fa5) Co-authored-by: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> files: A Misc/NEWS.d/next/Core and Builtins/2021-06-22-19-08-19.bpo-44483.eq2f7T.rst M Lib/test/test_types.py M Objects/unionobject.c diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index 767c3d06a4f583..d3e315a196b514 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -747,6 +747,15 @@ def __eq__(self, other): with self.assertRaises(TypeError): issubclass(list, type_) + def test_or_type_operator_with_bad_module(self): + class TypeVar: + @property + def __module__(self): + 1 / 0 + # Crashes in Issue44483 + with self.assertRaises(ZeroDivisionError): + str | TypeVar() + def test_ellipsis_type(self): self.assertIsInstance(Ellipsis, types.EllipsisType) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-22-19-08-19.bpo-44483.eq2f7T.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-22-19-08-19.bpo-44483.eq2f7T.rst new file mode 100644 index 00000000000000..ea54e79acfd9d8 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-22-19-08-19.bpo-44483.eq2f7T.rst @@ -0,0 +1,2 @@ +Fix a crash in ``types.Union`` objects when creating a union of an object +with bad ``__module__`` field. diff --git a/Objects/unionobject.c b/Objects/unionobject.c index 05350363eed63f..a66d61524dcfc7 100644 --- a/Objects/unionobject.c +++ b/Objects/unionobject.c @@ -284,6 +284,16 @@ is_new_type(PyObject *obj) return is_typing_module(obj); } +// Emulates short-circuiting behavior of the ``||`` operator +// while also checking negative values. +#define CHECK_RES(res) { \ + int result = res; \ + if (result) { \ + return result; \ + } \ +} + +// Returns 1 on true, 0 on false, and -1 on error. static int is_unionable(PyObject *obj) { @@ -291,10 +301,11 @@ is_unionable(PyObject *obj) return 1; } PyTypeObject *type = Py_TYPE(obj); + CHECK_RES(is_typevar(obj)); + CHECK_RES(is_new_type(obj)); + CHECK_RES(is_special_form(obj)); return ( - is_typevar(obj) || - is_new_type(obj) || - is_special_form(obj) || + // The following checks never fail. PyType_Check(obj) || PyObject_TypeCheck(obj, &Py_GenericAliasType) || type == &_Py_UnionType); From webhook-mailer at python.org Wed Jun 23 05:53:41 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Wed, 23 Jun 2021 09:53:41 -0000 Subject: [Python-checkins] bpo-44482: Fix very unlikely resource leak in glob in non-CPython implementations (GH-26843) Message-ID: https://github.com/python/cpython/commit/5c7940257e1f611e7284fd504887bd29a63d0a94 commit: 5c7940257e1f611e7284fd504887bd29a63d0a94 branch: main author: Serhiy Storchaka committer: serhiy-storchaka date: 2021-06-23T12:53:37+03:00 summary: bpo-44482: Fix very unlikely resource leak in glob in non-CPython implementations (GH-26843) files: A Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst M Lib/glob.py diff --git a/Lib/glob.py b/Lib/glob.py index a6cff87350826..9fc08f45df115 100644 --- a/Lib/glob.py +++ b/Lib/glob.py @@ -1,5 +1,6 @@ """Filename globbing utility.""" +import contextlib import os import re import fnmatch @@ -90,7 +91,7 @@ def _iglob(pathname, root_dir, dir_fd, recursive, dironly): # takes a literal basename (so it only has to check for its existence). def _glob1(dirname, pattern, dir_fd, dironly): - names = list(_iterdir(dirname, dir_fd, dironly)) + names = _listdir(dirname, dir_fd, dironly) if not _ishidden(pattern): names = (x for x in names if not _ishidden(x)) return fnmatch.filter(names, pattern) @@ -158,9 +159,13 @@ def _iterdir(dirname, dir_fd, dironly): except OSError: return +def _listdir(dirname, dir_fd, dironly): + with contextlib.closing(_iterdir(dirname, dir_fd, dironly)) as it: + return list(it) + # Recursively yields relative pathnames inside a literal directory. def _rlistdir(dirname, dir_fd, dironly): - names = list(_iterdir(dirname, dir_fd, dironly)) + names = _listdir(dirname, dir_fd, dironly) for x in names: if not _ishidden(x): yield x diff --git a/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst b/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst new file mode 100644 index 0000000000000..d05fe908e3eba --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst @@ -0,0 +1,2 @@ +Fix very unlikely resource leak in :mod:`glob` in alternate Python +implementations. From webhook-mailer at python.org Wed Jun 23 06:02:45 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Jun 2021 10:02:45 -0000 Subject: [Python-checkins] bpo-28395: Remove unnecessary semicolons in tests (GH-26868) Message-ID: https://github.com/python/cpython/commit/280425d41797f9c0b20fb02a22341937a13a8987 commit: 280425d41797f9c0b20fb02a22341937a13a8987 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-23T03:02:40-07:00 summary: bpo-28395: Remove unnecessary semicolons in tests (GH-26868) (cherry picked from commit 5a3108044d2e5b694da2d1f4176c9bbaef15c142) Co-authored-by: Dong-hee Na files: M Lib/test/test_capi.py M Lib/test/test_codeop.py M Lib/test/test_csv.py M Lib/test/test_deque.py M Lib/test/test_float.py M Lib/test/test_heapq.py M Lib/test/test_import/__init__.py M Lib/test/test_set.py diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 1b18bfad553007..f9c5aca728b433 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -635,11 +635,11 @@ def callback(): #unsuccessful. while True: if _testcapi._pending_threadfunc(callback): - break; + break def pendingcalls_wait(self, l, n, context = None): #now, stick around until l[0] has grown to 10 - count = 0; + count = 0 while len(l) != n: #this busy loop is where we expect to be interrupted to #run our callbacks. Note that callbacks are only run on the diff --git a/Lib/test/test_codeop.py b/Lib/test/test_codeop.py index 07b46afbe1bd89..17376c7ed7537e 100644 --- a/Lib/test/test_codeop.py +++ b/Lib/test/test_codeop.py @@ -182,21 +182,21 @@ def test_incomplete(self): ai("from a import (b,c") ai("from a import (b,c,") - ai("["); - ai("[a"); - ai("[a,"); - ai("[a,b"); - ai("[a,b,"); - - ai("{"); - ai("{a"); - ai("{a:"); - ai("{a:b"); - ai("{a:b,"); - ai("{a:b,c"); - ai("{a:b,c:"); - ai("{a:b,c:d"); - ai("{a:b,c:d,"); + ai("[") + ai("[a") + ai("[a,") + ai("[a,b") + ai("[a,b,") + + ai("{") + ai("{a") + ai("{a:") + ai("{a:b") + ai("{a:b,") + ai("{a:b,c") + ai("{a:b,c:") + ai("{a:b,c:d") + ai("{a:b,c:d,") ai("a(") ai("a(b") diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index a1e050acd2a0c6..225f5c7289081a 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -157,7 +157,7 @@ def test_write_arg_valid(self): self._write_error_test(OSError, BadIterable()) class BadList: def __len__(self): - return 10; + return 10 def __getitem__(self, i): if i > 2: raise OSError diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py index 93cc6ca4f44ecb..8bd6ebdbbadb5d 100644 --- a/Lib/test/test_deque.py +++ b/Lib/test/test_deque.py @@ -129,7 +129,8 @@ def __eq__(self, other): self.assertEqual(d.count(None), 16) def test_comparisons(self): - d = deque('xabc'); d.popleft() + d = deque('xabc') + d.popleft() for e in [d, deque('abc'), deque('ab'), deque(), list(d)]: self.assertEqual(d==e, type(d)==type(e) and list(d)==list(e)) self.assertEqual(d!=e, not(type(d)==type(e) and list(d)==list(e))) @@ -529,8 +530,8 @@ def test_repr(self): self.assertEqual(repr(d)[-20:], '7, 198, 199, [...]])') def test_init(self): - self.assertRaises(TypeError, deque, 'abc', 2, 3); - self.assertRaises(TypeError, deque, 1); + self.assertRaises(TypeError, deque, 'abc', 2, 3) + self.assertRaises(TypeError, deque, 1) def test_hash(self): self.assertRaises(TypeError, hash, deque('abc')) diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py index f0ed40f7c94a7e..38a17cedd6446f 100644 --- a/Lib/test/test_float.py +++ b/Lib/test/test_float.py @@ -1184,10 +1184,10 @@ def test_whitespace(self): def test_from_hex(self): - MIN = self.MIN; - MAX = self.MAX; - TINY = self.TINY; - EPS = self.EPS; + MIN = self.MIN + MAX = self.MAX + TINY = self.TINY + EPS = self.EPS # two spellings of infinity, with optional signs; case-insensitive self.identical(fromHex('inf'), INF) diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py index ebbc62745707cc..cb1e4505b02a30 100644 --- a/Lib/test/test_heapq.py +++ b/Lib/test/test_heapq.py @@ -146,11 +146,11 @@ def test_heappushpop(self): self.assertEqual(type(h[0]), int) self.assertEqual(type(x), float) - h = [10]; + h = [10] x = self.module.heappushpop(h, 9) self.assertEqual((h, x), ([10], 9)) - h = [10]; + h = [10] x = self.module.heappushpop(h, 11) self.assertEqual((h, x), ([11], 10)) diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py index 8fe3e1d4bf38d8..97447619b90d2d 100644 --- a/Lib/test/test_import/__init__.py +++ b/Lib/test/test_import/__init__.py @@ -1086,7 +1086,7 @@ def test_get_sourcefile(self): # Given a valid bytecode path, return the path to the corresponding # source file if it exists. with mock.patch('importlib._bootstrap_external._path_isfile') as _path_isfile: - _path_isfile.return_value = True; + _path_isfile.return_value = True path = TESTFN + '.pyc' expect = TESTFN + '.py' self.assertEqual(_get_sourcefile(path), expect) @@ -1095,7 +1095,7 @@ def test_get_sourcefile_no_source(self): # Given a valid bytecode path without a corresponding source path, # return the original bytecode path. with mock.patch('importlib._bootstrap_external._path_isfile') as _path_isfile: - _path_isfile.return_value = False; + _path_isfile.return_value = False path = TESTFN + '.pyc' self.assertEqual(_get_sourcefile(path), path) diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py index e45f018d2da71b..b1fab0f6207f40 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -362,8 +362,8 @@ def test_init(self): self.assertEqual(s, set(self.word)) s.__init__(self.otherword) self.assertEqual(s, set(self.otherword)) - self.assertRaises(TypeError, s.__init__, s, 2); - self.assertRaises(TypeError, s.__init__, 1); + self.assertRaises(TypeError, s.__init__, s, 2) + self.assertRaises(TypeError, s.__init__, 1) def test_constructor_identity(self): s = self.thetype(range(3)) From webhook-mailer at python.org Wed Jun 23 06:03:04 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Jun 2021 10:03:04 -0000 Subject: [Python-checkins] bpo-28395: Remove unnecessary semicolons in tests (GH-26868) Message-ID: https://github.com/python/cpython/commit/fcde2c6a8c99a56576b25733d5cc60bce6d51f46 commit: fcde2c6a8c99a56576b25733d5cc60bce6d51f46 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-23T03:03:00-07:00 summary: bpo-28395: Remove unnecessary semicolons in tests (GH-26868) (cherry picked from commit 5a3108044d2e5b694da2d1f4176c9bbaef15c142) Co-authored-by: Dong-hee Na files: M Lib/test/test_capi.py M Lib/test/test_codeop.py M Lib/test/test_csv.py M Lib/test/test_deque.py M Lib/test/test_float.py M Lib/test/test_heapq.py M Lib/test/test_import/__init__.py M Lib/test/test_set.py diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 5150d5770f6644..b21c3acf39b245 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -553,11 +553,11 @@ def callback(): #unsuccessful. while True: if _testcapi._pending_threadfunc(callback): - break; + break def pendingcalls_wait(self, l, n, context = None): #now, stick around until l[0] has grown to 10 - count = 0; + count = 0 while len(l) != n: #this busy loop is where we expect to be interrupted to #run our callbacks. Note that callbacks are only run on the diff --git a/Lib/test/test_codeop.py b/Lib/test/test_codeop.py index 66caf5aaae32b9..98f4be291b73b9 100644 --- a/Lib/test/test_codeop.py +++ b/Lib/test/test_codeop.py @@ -178,21 +178,21 @@ def test_incomplete(self): ai("from a import (b,c") ai("from a import (b,c,") - ai("["); - ai("[a"); - ai("[a,"); - ai("[a,b"); - ai("[a,b,"); - - ai("{"); - ai("{a"); - ai("{a:"); - ai("{a:b"); - ai("{a:b,"); - ai("{a:b,c"); - ai("{a:b,c:"); - ai("{a:b,c:d"); - ai("{a:b,c:d,"); + ai("[") + ai("[a") + ai("[a,") + ai("[a,b") + ai("[a,b,") + + ai("{") + ai("{a") + ai("{a:") + ai("{a:b") + ai("{a:b,") + ai("{a:b,c") + ai("{a:b,c:") + ai("{a:b,c:d") + ai("{a:b,c:d,") ai("a(") ai("a(b") diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index d421be075ca27f..2dab17dc073b1b 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -156,7 +156,7 @@ def test_write_arg_valid(self): self._write_error_test(OSError, BadIterable()) class BadList: def __len__(self): - return 10; + return 10 def __getitem__(self, i): if i > 2: raise OSError diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py index c0f7138254f3f6..67c0ace3bc8689 100644 --- a/Lib/test/test_deque.py +++ b/Lib/test/test_deque.py @@ -148,7 +148,8 @@ def __eq__(self, other): self.assertEqual(d.count(None), 16) def test_comparisons(self): - d = deque('xabc'); d.popleft() + d = deque('xabc') + d.popleft() for e in [d, deque('abc'), deque('ab'), deque(), list(d)]: self.assertEqual(d==e, type(d)==type(e) and list(d)==list(e)) self.assertEqual(d!=e, not(type(d)==type(e) and list(d)==list(e))) @@ -562,8 +563,8 @@ def test_print(self): support.unlink(support.TESTFN) def test_init(self): - self.assertRaises(TypeError, deque, 'abc', 2, 3); - self.assertRaises(TypeError, deque, 1); + self.assertRaises(TypeError, deque, 'abc', 2, 3) + self.assertRaises(TypeError, deque, 1) def test_hash(self): self.assertRaises(TypeError, hash, deque('abc')) diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py index 9651281e24edbe..4f66b41e0ad0ec 100644 --- a/Lib/test/test_float.py +++ b/Lib/test/test_float.py @@ -1162,10 +1162,10 @@ def test_whitespace(self): def test_from_hex(self): - MIN = self.MIN; - MAX = self.MAX; - TINY = self.TINY; - EPS = self.EPS; + MIN = self.MIN + MAX = self.MAX + TINY = self.TINY + EPS = self.EPS # two spellings of infinity, with optional signs; case-insensitive self.identical(fromHex('inf'), INF) diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py index 6902573e8fa85a..2cca9a008baa50 100644 --- a/Lib/test/test_heapq.py +++ b/Lib/test/test_heapq.py @@ -145,11 +145,11 @@ def test_heappushpop(self): self.assertEqual(type(h[0]), int) self.assertEqual(type(x), float) - h = [10]; + h = [10] x = self.module.heappushpop(h, 9) self.assertEqual((h, x), ([10], 9)) - h = [10]; + h = [10] x = self.module.heappushpop(h, 11) self.assertEqual((h, x), ([11], 10)) diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py index 35f148436df397..538b22d3ff9723 100644 --- a/Lib/test/test_import/__init__.py +++ b/Lib/test/test_import/__init__.py @@ -1084,7 +1084,7 @@ def test_get_sourcefile(self): # Given a valid bytecode path, return the path to the corresponding # source file if it exists. with mock.patch('importlib._bootstrap_external._path_isfile') as _path_isfile: - _path_isfile.return_value = True; + _path_isfile.return_value = True path = TESTFN + '.pyc' expect = TESTFN + '.py' self.assertEqual(_get_sourcefile(path), expect) @@ -1093,7 +1093,7 @@ def test_get_sourcefile_no_source(self): # Given a valid bytecode path without a corresponding source path, # return the original bytecode path. with mock.patch('importlib._bootstrap_external._path_isfile') as _path_isfile: - _path_isfile.return_value = False; + _path_isfile.return_value = False path = TESTFN + '.pyc' self.assertEqual(_get_sourcefile(path), path) diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py index e4766ab190be01..faf25a79e80212 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -375,8 +375,8 @@ def test_init(self): self.assertEqual(s, set(self.word)) s.__init__(self.otherword) self.assertEqual(s, set(self.otherword)) - self.assertRaises(TypeError, s.__init__, s, 2); - self.assertRaises(TypeError, s.__init__, 1); + self.assertRaises(TypeError, s.__init__, s, 2) + self.assertRaises(TypeError, s.__init__, 1) def test_constructor_identity(self): s = self.thetype(range(3)) From webhook-mailer at python.org Wed Jun 23 06:28:13 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Wed, 23 Jun 2021 10:28:13 -0000 Subject: [Python-checkins] bpo-44482: Fix very unlikely resource leak in glob in non-CPython implementations (GH-26843) (GH-26872) Message-ID: https://github.com/python/cpython/commit/38e021ab90b595945f15c59273c788f2f24053dc commit: 38e021ab90b595945f15c59273c788f2f24053dc branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: serhiy-storchaka date: 2021-06-23T13:28:08+03:00 summary: bpo-44482: Fix very unlikely resource leak in glob in non-CPython implementations (GH-26843) (GH-26872) (cherry picked from commit 5c7940257e1f611e7284fd504887bd29a63d0a94) Co-authored-by: Serhiy Storchaka files: A Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst M Lib/glob.py diff --git a/Lib/glob.py b/Lib/glob.py index a6cff87350826..9fc08f45df115 100644 --- a/Lib/glob.py +++ b/Lib/glob.py @@ -1,5 +1,6 @@ """Filename globbing utility.""" +import contextlib import os import re import fnmatch @@ -90,7 +91,7 @@ def _iglob(pathname, root_dir, dir_fd, recursive, dironly): # takes a literal basename (so it only has to check for its existence). def _glob1(dirname, pattern, dir_fd, dironly): - names = list(_iterdir(dirname, dir_fd, dironly)) + names = _listdir(dirname, dir_fd, dironly) if not _ishidden(pattern): names = (x for x in names if not _ishidden(x)) return fnmatch.filter(names, pattern) @@ -158,9 +159,13 @@ def _iterdir(dirname, dir_fd, dironly): except OSError: return +def _listdir(dirname, dir_fd, dironly): + with contextlib.closing(_iterdir(dirname, dir_fd, dironly)) as it: + return list(it) + # Recursively yields relative pathnames inside a literal directory. def _rlistdir(dirname, dir_fd, dironly): - names = list(_iterdir(dirname, dir_fd, dironly)) + names = _listdir(dirname, dir_fd, dironly) for x in names: if not _ishidden(x): yield x diff --git a/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst b/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst new file mode 100644 index 0000000000000..d05fe908e3eba --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst @@ -0,0 +1,2 @@ +Fix very unlikely resource leak in :mod:`glob` in alternate Python +implementations. From webhook-mailer at python.org Wed Jun 23 06:30:28 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Wed, 23 Jun 2021 10:30:28 -0000 Subject: [Python-checkins] bpo-44404: tkinter `after` support callable classes (GH-26812) Message-ID: https://github.com/python/cpython/commit/e9c8f784fa13ea3a51df3b72a498a3896ec9e768 commit: e9c8f784fa13ea3a51df3b72a498a3896ec9e768 branch: main author: E-Paine <63801254+E-Paine at users.noreply.github.com> committer: serhiy-storchaka date: 2021-06-23T13:30:24+03:00 summary: bpo-44404: tkinter `after` support callable classes (GH-26812) files: A Misc/NEWS.d/next/Library/2021-06-20-19-01-11.bpo-44404.McfrYB.rst M Lib/tkinter/__init__.py M Lib/tkinter/test/test_tkinter/test_misc.py diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index 369004c9d1b3d4..2513c972bc77f0 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -841,7 +841,11 @@ def callit(): self.deletecommand(name) except TclError: pass - callit.__name__ = func.__name__ + try: + callit.__name__ = func.__name__ + except AttributeError: + # Required for callable classes (bpo-44404) + callit.__name__ = type(func).__name__ name = self._register(callit) return self.tk.call('after', ms, name) diff --git a/Lib/tkinter/test/test_tkinter/test_misc.py b/Lib/tkinter/test/test_tkinter/test_misc.py index d4b7cbd867bc04..ab8f64790dfc0e 100644 --- a/Lib/tkinter/test/test_tkinter/test_misc.py +++ b/Lib/tkinter/test/test_tkinter/test_misc.py @@ -1,3 +1,4 @@ +import functools import unittest import tkinter import enum @@ -98,6 +99,12 @@ def callback(start=0, step=1): with self.assertRaises(tkinter.TclError): root.tk.call(script) + # Call with a callable class + count = 0 + timer1 = root.after(0, functools.partial(callback, 42, 11)) + root.update() # Process all pending events. + self.assertEqual(count, 53) + def test_after_idle(self): root = self.root diff --git a/Misc/NEWS.d/next/Library/2021-06-20-19-01-11.bpo-44404.McfrYB.rst b/Misc/NEWS.d/next/Library/2021-06-20-19-01-11.bpo-44404.McfrYB.rst new file mode 100644 index 00000000000000..ff6ca1bfa7242d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-20-19-01-11.bpo-44404.McfrYB.rst @@ -0,0 +1 @@ +:mod:`tkinter`'s ``after()`` method now supports callables without the ``__name__`` attribute. From webhook-mailer at python.org Wed Jun 23 08:07:01 2021 From: webhook-mailer at python.org (corona10) Date: Wed, 23 Jun 2021 12:07:01 -0000 Subject: [Python-checkins] bpo-42064: Remove stale extern declarations in `sqlite3` headers (GH-26840) Message-ID: https://github.com/python/cpython/commit/019ad62afd20e80c74f879aa716e339b992a0bb9 commit: 019ad62afd20e80c74f879aa716e339b992a0bb9 branch: main author: Erlend Egeberg Aasland committer: corona10 date: 2021-06-23T21:06:53+09:00 summary: bpo-42064: Remove stale extern declarations in `sqlite3` headers (GH-26840) files: M Modules/_sqlite/connection.h M Modules/_sqlite/cursor.h M Modules/_sqlite/prepare_protocol.h M Modules/_sqlite/row.h M Modules/_sqlite/statement.h M Tools/c-analyzer/cpython/ignored.tsv diff --git a/Modules/_sqlite/connection.h b/Modules/_sqlite/connection.h index 88c58b385ba844..5e7e7e5abe0668 100644 --- a/Modules/_sqlite/connection.h +++ b/Modules/_sqlite/connection.h @@ -98,8 +98,6 @@ typedef struct PyObject* NotSupportedError; } pysqlite_Connection; -extern PyTypeObject *pysqlite_ConnectionType; - int pysqlite_connection_register_cursor(pysqlite_Connection* connection, PyObject* cursor); int pysqlite_check_thread(pysqlite_Connection* self); int pysqlite_check_connection(pysqlite_Connection* con); diff --git a/Modules/_sqlite/cursor.h b/Modules/_sqlite/cursor.h index b26b2886746c29..9a5e9eede23025 100644 --- a/Modules/_sqlite/cursor.h +++ b/Modules/_sqlite/cursor.h @@ -52,8 +52,6 @@ typedef struct PyObject* in_weakreflist; /* List of weak references */ } pysqlite_Cursor; -extern PyTypeObject *pysqlite_CursorType; - int pysqlite_cursor_setup_types(PyObject *module); #define UNKNOWN (-1) diff --git a/Modules/_sqlite/prepare_protocol.h b/Modules/_sqlite/prepare_protocol.h index 593961331c90da..f24cef5497139f 100644 --- a/Modules/_sqlite/prepare_protocol.h +++ b/Modules/_sqlite/prepare_protocol.h @@ -30,8 +30,6 @@ typedef struct PyObject_HEAD } pysqlite_PrepareProtocol; -extern PyTypeObject *pysqlite_PrepareProtocolType; - int pysqlite_prepare_protocol_setup_types(PyObject *module); #define UNKNOWN (-1) diff --git a/Modules/_sqlite/row.h b/Modules/_sqlite/row.h index 2dac41e89e12d8..b51909817584ba 100644 --- a/Modules/_sqlite/row.h +++ b/Modules/_sqlite/row.h @@ -33,8 +33,6 @@ typedef struct _Row PyObject* description; } pysqlite_Row; -extern PyTypeObject *pysqlite_RowType; - int pysqlite_row_setup_types(PyObject *module); #endif diff --git a/Modules/_sqlite/statement.h b/Modules/_sqlite/statement.h index b06f6155e15c2f..70801cc5ce9fdb 100644 --- a/Modules/_sqlite/statement.h +++ b/Modules/_sqlite/statement.h @@ -38,8 +38,6 @@ typedef struct PyObject* in_weakreflist; /* List of weak references */ } pysqlite_Statement; -extern PyTypeObject *pysqlite_StatementType; - pysqlite_Statement *pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql); int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter); diff --git a/Tools/c-analyzer/cpython/ignored.tsv b/Tools/c-analyzer/cpython/ignored.tsv index e5d93782076c3d..d8407ed3745faf 100644 --- a/Tools/c-analyzer/cpython/ignored.tsv +++ b/Tools/c-analyzer/cpython/ignored.tsv @@ -49,13 +49,6 @@ Modules/_io/_iomodule.h - _PyIO_str_write - Modules/_io/_iomodule.h - _PyIO_empty_str - Modules/_io/_iomodule.h - _PyIO_empty_bytes - Modules/_multiprocessing/multiprocessing.h - _PyMp_SemLockType - -Modules/_sqlite/cache.h - pysqlite_NodeType - -Modules/_sqlite/cache.h - pysqlite_CacheType - -Modules/_sqlite/cursor.h - pysqlite_CursorType - -Modules/_sqlite/row.h - pysqlite_RowType - -Modules/_sqlite/prepare_protocol.h - pysqlite_PrepareProtocolType - -Modules/_sqlite/statement.h - pysqlite_StatementType - -Modules/_sqlite/connection.h - pysqlite_ConnectionType - Modules/_sqlite/module.c - pysqlite_Error - Modules/_sqlite/module.c - pysqlite_Warning - Modules/_sqlite/module.c - pysqlite_InterfaceError - @@ -2372,13 +2365,6 @@ Modules/_tkinter.c - Tktt_Type - Modules/xxlimited.c - Xxo_Type - Modules/_decimal/_decimal.c - DecimalTuple - Modules/_decimal/_decimal.c - PyDecSignalDict_Type - -Modules/_sqlite/connection.c - pysqlite_ConnectionType - -Modules/_sqlite/statement.c - pysqlite_StatementType - -Modules/_sqlite/cache.c - pysqlite_NodeType - -Modules/_sqlite/cache.c - pysqlite_CacheType - -Modules/_sqlite/row.c - pysqlite_RowType - -Modules/_sqlite/prepare_protocol.c - pysqlite_PrepareProtocolType - -Modules/_sqlite/cursor.c - pysqlite_CursorType - # exception types [] Modules/_ctypes/_ctypes.c - PyExc_ArgError - From webhook-mailer at python.org Wed Jun 23 08:13:32 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 23 Jun 2021 12:13:32 -0000 Subject: [Python-checkins] bpo-44441: _PyImport_Fini2() resets PyImport_Inittab (GH-26874) Message-ID: https://github.com/python/cpython/commit/489699ca05bed5cfd10e847d8580840812b476cd commit: 489699ca05bed5cfd10e847d8580840812b476cd branch: main author: Victor Stinner committer: vstinner date: 2021-06-23T14:13:27+02:00 summary: bpo-44441: _PyImport_Fini2() resets PyImport_Inittab (GH-26874) Py_RunMain() now resets PyImport_Inittab to its initial value at exit. It must be possible to call PyImport_AppendInittab() or PyImport_ExtendInittab() at each Python initialization. files: A Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst M Doc/c-api/import.rst M Doc/c-api/init_config.rst M Lib/test/test_embed.py M Programs/_testembed.c M Python/import.c diff --git a/Doc/c-api/import.rst b/Doc/c-api/import.rst index c6fc33076f0f51..d2ae6b6d4e4711 100644 --- a/Doc/c-api/import.rst +++ b/Doc/c-api/import.rst @@ -299,4 +299,8 @@ Importing Modules field; failure to provide the sentinel value can result in a memory fault. Returns ``0`` on success or ``-1`` if insufficient memory could be allocated to extend the internal table. In the event of failure, no modules are added to the - internal table. This should be called before :c:func:`Py_Initialize`. + internal table. This must be called before :c:func:`Py_Initialize`. + + If Python is initialized multiple times, :c:func:`PyImport_AppendInittab` or + :c:func:`PyImport_ExtendInittab` must be called before each Python + initialization. diff --git a/Doc/c-api/init_config.rst b/Doc/c-api/init_config.rst index de85029481185a..fe5b83aa8dc95a 100644 --- a/Doc/c-api/init_config.rst +++ b/Doc/c-api/init_config.rst @@ -1193,7 +1193,10 @@ The caller is responsible to handle exceptions (error or exit) using If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or :c:func:`PyImport_ExtendInittab` are used, they must be set or called after -Python preinitialization and before the Python initialization. +Python preinitialization and before the Python initialization. If Python is +initialized multiple times, :c:func:`PyImport_AppendInittab` or +:c:func:`PyImport_ExtendInittab` must be called before each Python +initialization. The current configuration (``PyConfig`` type) is stored in ``PyInterpreterState.config``. diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index 373fcf0ffac086..c50defd9a6a3fb 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -30,6 +30,7 @@ # _PyCoreConfig_InitIsolatedConfig() API_ISOLATED = 3 +INIT_LOOPS = 16 MAX_HASH_SEED = 4294967295 @@ -111,13 +112,13 @@ def run_repeated_init_and_subinterpreters(self): self.assertEqual(err, "") # The output from _testembed looks like this: - # --- Pass 0 --- + # --- Pass 1 --- # interp 0 <0x1cf9330>, thread state <0x1cf9700>: id(modules) = 139650431942728 # interp 1 <0x1d4f690>, thread state <0x1d35350>: id(modules) = 139650431165784 # interp 2 <0x1d5a690>, thread state <0x1d99ed0>: id(modules) = 139650413140368 # interp 3 <0x1d4f690>, thread state <0x1dc3340>: id(modules) = 139650412862200 # interp 0 <0x1cf9330>, thread state <0x1cf9700>: id(modules) = 139650431942728 - # --- Pass 1 --- + # --- Pass 2 --- # ... interp_pat = (r"^interp (\d+) <(0x[\dA-F]+)>, " @@ -125,7 +126,7 @@ def run_repeated_init_and_subinterpreters(self): r"id\(modules\) = ([\d]+)$") Interp = namedtuple("Interp", "id interp tstate modules") - numloops = 0 + numloops = 1 current_run = [] for line in out.splitlines(): if line == "--- Pass {} ---".format(numloops): @@ -159,6 +160,8 @@ def run_repeated_init_and_subinterpreters(self): class EmbeddingTests(EmbeddingTestsMixin, unittest.TestCase): + maxDiff = 100 * 50 + def test_subinterps_main(self): for run in self.run_repeated_init_and_subinterpreters(): main = run[0] @@ -194,6 +197,14 @@ def test_subinterps_distinct_state(self): self.assertNotEqual(sub.tstate, main.tstate) self.assertNotEqual(sub.modules, main.modules) + def test_repeated_init_and_inittab(self): + out, err = self.run_embedded_interpreter("test_repeated_init_and_inittab") + self.assertEqual(err, "") + + lines = [f"--- Pass {i} ---" for i in range(1, INIT_LOOPS+1)] + lines = "\n".join(lines) + "\n" + self.assertEqual(out, lines) + def test_forced_io_encoding(self): # Checks forced configuration of embedded interpreter IO streams env = dict(os.environ, PYTHONIOENCODING="utf-8:surrogateescape") diff --git a/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst b/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst new file mode 100644 index 00000000000000..80c4282c18ea64 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst @@ -0,0 +1,4 @@ +:c:func:`Py_RunMain` now resets :c:data:`PyImport_Inittab` to its initial value +at exit. It must be possible to call :c:func:`PyImport_AppendInittab` or +:c:func:`PyImport_ExtendInittab` at each Python initialization. +Patch by Victor Stinner. diff --git a/Programs/_testembed.c b/Programs/_testembed.c index a5ae7c1d863357..d963cb3dc7e20e 100644 --- a/Programs/_testembed.c +++ b/Programs/_testembed.c @@ -22,6 +22,8 @@ /* Use path starting with "./" avoids a search along the PATH */ #define PROGRAM_NAME L"./_testembed" +#define INIT_LOOPS 16 + // Ignore Py_DEPRECATED() compiler warnings: deprecated functions are // tested on purpose here. _Py_COMP_DIAG_PUSH @@ -67,9 +69,8 @@ static int test_repeated_init_and_subinterpreters(void) { PyThreadState *mainstate, *substate; PyGILState_STATE gilstate; - int i, j; - for (i=0; i<15; i++) { + for (int i=1; i <= INIT_LOOPS; i++) { printf("--- Pass %d ---\n", i); _testembed_Py_Initialize(); mainstate = PyThreadState_Get(); @@ -80,7 +81,7 @@ static int test_repeated_init_and_subinterpreters(void) print_subinterp(); PyThreadState_Swap(NULL); - for (j=0; j<3; j++) { + for (int j=0; j<3; j++) { substate = Py_NewInterpreter(); print_subinterp(); Py_EndInterpreter(substate); @@ -96,6 +97,20 @@ static int test_repeated_init_and_subinterpreters(void) return 0; } +#define EMBEDDED_EXT_NAME "embedded_ext" + +static PyModuleDef embedded_ext = { + PyModuleDef_HEAD_INIT, + .m_name = EMBEDDED_EXT_NAME, + .m_size = 0, +}; + +static PyObject* +PyInit_embedded_ext(void) +{ + return PyModule_Create(&embedded_ext); +} + /***************************************************** * Test forcing a particular IO encoding *****************************************************/ @@ -1790,6 +1805,38 @@ static int list_frozen(void) } +static int test_repeated_init_and_inittab(void) +{ + // bpo-44441: Py_RunMain() must reset PyImport_Inittab at exit. + // It must be possible to call PyImport_AppendInittab() or + // PyImport_ExtendInittab() before each Python initialization. + for (int i=1; i <= INIT_LOOPS; i++) { + printf("--- Pass %d ---\n", i); + + // Call PyImport_AppendInittab() at each iteration + if (PyImport_AppendInittab(EMBEDDED_EXT_NAME, + &PyInit_embedded_ext) != 0) { + fprintf(stderr, "PyImport_AppendInittab() failed\n"); + return 1; + } + + // Initialize Python + wchar_t* argv[] = {PROGRAM_NAME, L"-c", L"pass"}; + PyConfig config; + PyConfig_InitPythonConfig(&config); + config.isolated = 1; + config_set_argv(&config, Py_ARRAY_LENGTH(argv), argv); + init_from_config_clear(&config); + + // Py_RunMain() calls _PyImport_Fini2() which resets PyImport_Inittab + int exitcode = Py_RunMain(); + if (exitcode != 0) { + return exitcode; + } + } + return 0; +} + /* ********************************************************* * List of test cases and the function that implements it. @@ -1810,8 +1857,10 @@ struct TestCase }; static struct TestCase TestCases[] = { + // Python initialization {"test_forced_io_encoding", test_forced_io_encoding}, {"test_repeated_init_and_subinterpreters", test_repeated_init_and_subinterpreters}, + {"test_repeated_init_and_inittab", test_repeated_init_and_inittab}, {"test_pre_initialization_api", test_pre_initialization_api}, {"test_pre_initialization_sys_options", test_pre_initialization_sys_options}, {"test_bpo20891", test_bpo20891}, @@ -1851,6 +1900,7 @@ static struct TestCase TestCases[] = { {"test_run_main", test_run_main}, {"test_get_argc_argv", test_get_argc_argv}, + // Audit {"test_open_code_hook", test_open_code_hook}, {"test_audit", test_audit}, {"test_audit_subinterpreter", test_audit_subinterpreter}, @@ -1860,11 +1910,13 @@ static struct TestCase TestCases[] = { {"test_audit_run_startup", test_audit_run_startup}, {"test_audit_run_stdin", test_audit_run_stdin}, + // Specific C API {"test_unicode_id_init", test_unicode_id_init}, #ifndef MS_WINDOWS {"test_frozenmain", test_frozenmain}, #endif + // Command {"list_frozen", list_frozen}, {NULL, NULL} }; diff --git a/Python/import.c b/Python/import.c index c4878c628bedcf..7301fccb9fac0c 100644 --- a/Python/import.c +++ b/Python/import.c @@ -255,6 +255,9 @@ _PyImport_Fini2(void) PyMemAllocatorEx old_alloc; _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc); + // Reset PyImport_Inittab + PyImport_Inittab = _PyImport_Inittab; + /* Free memory allocated by PyImport_ExtendInittab() */ PyMem_RawFree(inittab_copy); inittab_copy = NULL; From webhook-mailer at python.org Wed Jun 23 08:57:00 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Jun 2021 12:57:00 -0000 Subject: [Python-checkins] bpo-42064: Move `sqlite3` exceptions to global state, part 1 of 2 (GH-26745) Message-ID: https://github.com/python/cpython/commit/a50e28377bcf37121b55c2de70d95a5386c478f8 commit: a50e28377bcf37121b55c2de70d95a5386c478f8 branch: main author: Erlend Egeberg Aasland committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-23T05:56:40-07:00 summary: bpo-42064: Move `sqlite3` exceptions to global state, part 1 of 2 (GH-26745) Also adds a test to verify the (borrowed) exceptions in `sqlite3.Connection`. files: M Lib/sqlite3/test/dbapi.py M Modules/_sqlite/connection.c M Modules/_sqlite/cursor.c M Modules/_sqlite/module.c M Modules/_sqlite/module.h M Modules/_sqlite/statement.c M Modules/_sqlite/util.c M Tools/c-analyzer/cpython/ignored.tsv diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index c9bcac9bb8327..7e44cac76f5b3 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -208,6 +208,24 @@ def test_in_transaction_ro(self): with self.assertRaises(AttributeError): self.cx.in_transaction = True + def test_connection_exceptions(self): + exceptions = [ + "DataError", + "DatabaseError", + "Error", + "IntegrityError", + "InterfaceError", + "NotSupportedError", + "OperationalError", + "ProgrammingError", + "Warning", + ] + for exc in exceptions: + with self.subTest(exc=exc): + self.assertTrue(hasattr(self.cx, exc)) + self.assertIs(getattr(sqlite, exc), getattr(self.cx, exc)) + + class OpenTests(unittest.TestCase): _sql = "create table test(id integer)" diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 11656b8a90034..3e12679cd14c0 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -182,14 +182,15 @@ pysqlite_connection_init_impl(pysqlite_Connection *self, return -1; } - self->Warning = pysqlite_Warning; - self->Error = pysqlite_Error; - self->InterfaceError = pysqlite_InterfaceError; - self->DatabaseError = pysqlite_DatabaseError; + pysqlite_state *state = pysqlite_get_state(NULL); + self->Warning = state->Warning; + self->Error = state->Error; + self->InterfaceError = state->InterfaceError; + self->DatabaseError = state->DatabaseError; self->DataError = pysqlite_DataError; self->OperationalError = pysqlite_OperationalError; self->IntegrityError = pysqlite_IntegrityError; - self->InternalError = pysqlite_InternalError; + self->InternalError = state->InternalError; self->ProgrammingError = pysqlite_ProgrammingError; self->NotSupportedError = pysqlite_NotSupportedError; diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c index 8e7d65faa2851..451742b3ecda5 100644 --- a/Modules/_sqlite/cursor.c +++ b/Modules/_sqlite/cursor.c @@ -272,7 +272,8 @@ _pysqlite_fetch_one_row(pysqlite_Cursor* self) PyObject* error_msg; if (self->reset) { - PyErr_SetString(pysqlite_InterfaceError, errmsg_fetch_across_rollback); + PyObject *exc = self->connection->InterfaceError; + PyErr_SetString(exc, errmsg_fetch_across_rollback); return NULL; } @@ -822,7 +823,8 @@ pysqlite_cursor_iternext(pysqlite_Cursor *self) } if (self->reset) { - PyErr_SetString(pysqlite_InterfaceError, errmsg_fetch_across_rollback); + PyObject *exc = self->connection->InterfaceError; + PyErr_SetString(exc, errmsg_fetch_across_rollback); return NULL; } diff --git a/Modules/_sqlite/module.c b/Modules/_sqlite/module.c index 6adadf6921639..2607c6ee3b475 100644 --- a/Modules/_sqlite/module.c +++ b/Modules/_sqlite/module.c @@ -43,11 +43,6 @@ module _sqlite3 /* static objects at module-level */ -PyObject *pysqlite_Error = NULL; -PyObject *pysqlite_Warning = NULL; -PyObject *pysqlite_InterfaceError = NULL; -PyObject *pysqlite_DatabaseError = NULL; -PyObject *pysqlite_InternalError = NULL; PyObject *pysqlite_OperationalError = NULL; PyObject *pysqlite_ProgrammingError = NULL; PyObject *pysqlite_IntegrityError = NULL; @@ -409,20 +404,27 @@ PyMODINIT_FUNC PyInit__sqlite3(void) ADD_TYPE(module, state->RowType); /*** Create DB-API Exception hierarchy */ - ADD_EXCEPTION(module, "Error", pysqlite_Error, PyExc_Exception); - ADD_EXCEPTION(module, "Warning", pysqlite_Warning, PyExc_Exception); + ADD_EXCEPTION(module, "Error", state->Error, PyExc_Exception); + ADD_EXCEPTION(module, "Warning", state->Warning, PyExc_Exception); /* Error subclasses */ - ADD_EXCEPTION(module, "InterfaceError", pysqlite_InterfaceError, pysqlite_Error); - ADD_EXCEPTION(module, "DatabaseError", pysqlite_DatabaseError, pysqlite_Error); - - /* pysqlite_DatabaseError subclasses */ - ADD_EXCEPTION(module, "InternalError", pysqlite_InternalError, pysqlite_DatabaseError); - ADD_EXCEPTION(module, "OperationalError", pysqlite_OperationalError, pysqlite_DatabaseError); - ADD_EXCEPTION(module, "ProgrammingError", pysqlite_ProgrammingError, pysqlite_DatabaseError); - ADD_EXCEPTION(module, "IntegrityError", pysqlite_IntegrityError, pysqlite_DatabaseError); - ADD_EXCEPTION(module, "DataError", pysqlite_DataError, pysqlite_DatabaseError); - ADD_EXCEPTION(module, "NotSupportedError", pysqlite_NotSupportedError, pysqlite_DatabaseError); + ADD_EXCEPTION(module, "InterfaceError", state->InterfaceError, + state->Error); + ADD_EXCEPTION(module, "DatabaseError", state->DatabaseError, state->Error); + + /* DatabaseError subclasses */ + ADD_EXCEPTION(module, "InternalError", state->InternalError, + state->DatabaseError); + ADD_EXCEPTION(module, "OperationalError", pysqlite_OperationalError, + state->DatabaseError); + ADD_EXCEPTION(module, "ProgrammingError", pysqlite_ProgrammingError, + state->DatabaseError); + ADD_EXCEPTION(module, "IntegrityError", pysqlite_IntegrityError, + state->DatabaseError); + ADD_EXCEPTION(module, "DataError", pysqlite_DataError, + state->DatabaseError); + ADD_EXCEPTION(module, "NotSupportedError", pysqlite_NotSupportedError, + state->DatabaseError); /* Set integer constants */ if (add_integer_constants(module) < 0) { diff --git a/Modules/_sqlite/module.h b/Modules/_sqlite/module.h index 3f29035b5fe68..a745096a8ecf6 100644 --- a/Modules/_sqlite/module.h +++ b/Modules/_sqlite/module.h @@ -30,6 +30,11 @@ #define MODULE_NAME "sqlite3" typedef struct { + PyObject *DatabaseError; + PyObject *Error; + PyObject *InterfaceError; + PyObject *InternalError; + PyObject *Warning; PyObject *lru_cache; PyTypeObject *ConnectionType; PyTypeObject *CursorType; @@ -46,11 +51,6 @@ pysqlite_get_state(PyObject *Py_UNUSED(module)) return &pysqlite_global_state; } -extern PyObject* pysqlite_Error; -extern PyObject* pysqlite_Warning; -extern PyObject* pysqlite_InterfaceError; -extern PyObject* pysqlite_DatabaseError; -extern PyObject* pysqlite_InternalError; extern PyObject* pysqlite_OperationalError; extern PyObject* pysqlite_ProgrammingError; extern PyObject* pysqlite_IntegrityError; diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index fcf13809763f3..035023dc009a8 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -51,12 +51,13 @@ typedef enum { pysqlite_Statement * pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) { + pysqlite_state *state = pysqlite_get_state(NULL); assert(PyUnicode_Check(sql)); Py_ssize_t size; const char *sql_cstr = PyUnicode_AsUTF8AndSize(sql, &size); if (sql_cstr == NULL) { - PyErr_Format(pysqlite_Warning, - "SQL is of wrong type ('%s'). Must be string.", + PyObject *exc = connection->Warning; + PyErr_Format(exc, "SQL is of wrong type ('%s'). Must be string.", Py_TYPE(sql)->tp_name); return NULL; } @@ -86,8 +87,8 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) } if (pysqlite_check_remaining_sql(tail)) { - PyErr_SetString(pysqlite_Warning, - "You can only execute one statement at a time."); + PyObject *exc = connection->Warning; + PyErr_SetString(exc, "You can only execute one statement at a time."); goto error; } @@ -110,7 +111,6 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql) break; } - pysqlite_state *state = pysqlite_get_state(NULL); pysqlite_Statement *self = PyObject_GC_New(pysqlite_Statement, state->StatementType); if (self == NULL) { @@ -288,7 +288,9 @@ void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* para if (rc != SQLITE_OK) { if (!PyErr_Occurred()) { - PyErr_Format(pysqlite_InterfaceError, "Error binding parameter %d - probably unsupported type.", i); + PyErr_Format(state->InterfaceError, + "Error binding parameter %d - " + "probably unsupported type.", i); } return; } @@ -342,7 +344,9 @@ void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* para if (rc != SQLITE_OK) { if (!PyErr_Occurred()) { - PyErr_Format(pysqlite_InterfaceError, "Error binding parameter :%s - probably unsupported type.", binding_name); + PyErr_Format(state->InterfaceError, + "Error binding parameter :%s - " + "probably unsupported type.", binding_name); } return; } diff --git a/Modules/_sqlite/util.c b/Modules/_sqlite/util.c index 2de819e9e8529..2684773b6d394 100644 --- a/Modules/_sqlite/util.c +++ b/Modules/_sqlite/util.c @@ -43,6 +43,7 @@ pysqlite_step(sqlite3_stmt *statement) int _pysqlite_seterror(sqlite3 *db) { + pysqlite_state *state = pysqlite_get_state(NULL); int errorcode = sqlite3_errcode(db); switch (errorcode) @@ -52,7 +53,7 @@ _pysqlite_seterror(sqlite3 *db) break; case SQLITE_INTERNAL: case SQLITE_NOTFOUND: - PyErr_SetString(pysqlite_InternalError, sqlite3_errmsg(db)); + PyErr_SetString(state->InternalError, sqlite3_errmsg(db)); break; case SQLITE_NOMEM: (void)PyErr_NoMemory(); @@ -73,7 +74,7 @@ _pysqlite_seterror(sqlite3 *db) PyErr_SetString(pysqlite_OperationalError, sqlite3_errmsg(db)); break; case SQLITE_CORRUPT: - PyErr_SetString(pysqlite_DatabaseError, sqlite3_errmsg(db)); + PyErr_SetString(state->DatabaseError, sqlite3_errmsg(db)); break; case SQLITE_TOOBIG: PyErr_SetString(pysqlite_DataError, sqlite3_errmsg(db)); @@ -86,7 +87,7 @@ _pysqlite_seterror(sqlite3 *db) PyErr_SetString(pysqlite_ProgrammingError, sqlite3_errmsg(db)); break; default: - PyErr_SetString(pysqlite_DatabaseError, sqlite3_errmsg(db)); + PyErr_SetString(state->DatabaseError, sqlite3_errmsg(db)); break; } diff --git a/Tools/c-analyzer/cpython/ignored.tsv b/Tools/c-analyzer/cpython/ignored.tsv index d8407ed3745fa..b002703b352f1 100644 --- a/Tools/c-analyzer/cpython/ignored.tsv +++ b/Tools/c-analyzer/cpython/ignored.tsv @@ -49,11 +49,6 @@ Modules/_io/_iomodule.h - _PyIO_str_write - Modules/_io/_iomodule.h - _PyIO_empty_str - Modules/_io/_iomodule.h - _PyIO_empty_bytes - Modules/_multiprocessing/multiprocessing.h - _PyMp_SemLockType - -Modules/_sqlite/module.c - pysqlite_Error - -Modules/_sqlite/module.c - pysqlite_Warning - -Modules/_sqlite/module.c - pysqlite_InterfaceError - -Modules/_sqlite/module.c - pysqlite_DatabaseError - -Modules/_sqlite/module.c - pysqlite_InternalError - Modules/_sqlite/module.c - pysqlite_OperationalError - Modules/_sqlite/module.c - pysqlite_ProgrammingError - Modules/_sqlite/module.c - pysqlite_IntegrityError - @@ -2371,11 +2366,6 @@ Modules/_ctypes/_ctypes.c - PyExc_ArgError - Modules/_cursesmodule.c - PyCursesError - Modules/_decimal/_decimal.c - DecimalException - Modules/_queuemodule.c - EmptyError - -Modules/_sqlite/module.h - pysqlite_Error - -Modules/_sqlite/module.h - pysqlite_Warning - -Modules/_sqlite/module.h - pysqlite_InterfaceError - -Modules/_sqlite/module.h - pysqlite_DatabaseError - -Modules/_sqlite/module.h - pysqlite_InternalError - Modules/_sqlite/module.h - pysqlite_OperationalError - Modules/_sqlite/module.h - pysqlite_ProgrammingError - Modules/_sqlite/module.h - pysqlite_IntegrityError - From webhook-mailer at python.org Wed Jun 23 09:40:37 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 23 Jun 2021 13:40:37 -0000 Subject: [Python-checkins] bpo-43770: Cleanup PyModuleDef_Init() (GH-26879) Message-ID: https://github.com/python/cpython/commit/2a396d65b8e63300ff05e217adacf0765c502ba3 commit: 2a396d65b8e63300ff05e217adacf0765c502ba3 branch: main author: Victor Stinner committer: vstinner date: 2021-06-23T15:40:27+02:00 summary: bpo-43770: Cleanup PyModuleDef_Init() (GH-26879) PyModuleDef_Init() no longer tries to make PyModule_Type type: it's already done by _PyTypes_Init() at Python startup. Replace PyType_Ready() call with an assertion. files: M Objects/moduleobject.c diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index 61478a1c4817c..ef39bde4e425d 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -46,8 +46,7 @@ _PyModule_IsExtension(PyObject *obj) PyObject* PyModuleDef_Init(struct PyModuleDef* def) { - if (PyType_Ready(&PyModuleDef_Type) < 0) - return NULL; + assert(PyModuleDef_Type.tp_flags & Py_TPFLAGS_READY); if (def->m_base.m_index == 0) { max_module_number++; Py_SET_REFCNT(def, 1); From webhook-mailer at python.org Wed Jun 23 09:51:56 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 23 Jun 2021 13:51:56 -0000 Subject: [Python-checkins] bpo-39947: Remove old private trashcan C API functions (GH-26869) Message-ID: https://github.com/python/cpython/commit/db532a09990c837ec1348e6e6bd2719f5d4a8216 commit: db532a09990c837ec1348e6e6bd2719f5d4a8216 branch: main author: Victor Stinner committer: vstinner date: 2021-06-23T15:51:47+02:00 summary: bpo-39947: Remove old private trashcan C API functions (GH-26869) Remove 4 C API private trashcan functions which were only kept for the backward compatibility of the stable ABI with Python 3.8 and older, since the trashcan API was not usable with the limited C API on Python 3.8 and older. The trashcan API was excluded from the limited C API in Python 3.9. Removed functions: * _PyTrash_deposit_object() * _PyTrash_destroy_chain() * _PyTrash_thread_deposit_object() * _PyTrash_thread_destroy_chain() The trashcan C API was never usable with the limited C API, since old trashcan macros accessed directly PyThreadState members like "_tstate->trash_delete_nesting", whereas the PyThreadState structure is opaque in the limited C API. Exclude also the PyTrash_UNWIND_LEVEL constant from the C API. The trashcan C API was modified in Python 3.9 by commit 38965ec5411da60d312b59be281f3510d58e0cf1 and in Python 3.10 by commit ed1a5a5baca8f61e9a99c5be3adc16b1801514fe to hide implementation details. files: A Misc/NEWS.d/next/C API/2021-06-23-10-31-45.bpo-39947.je_HMo.rst M Include/cpython/object.h M Misc/stable_abi.txt M Objects/object.c M PC/python3dll.c diff --git a/Include/cpython/object.h b/Include/cpython/object.h index 84c60e55d5c9df..75cd0f9002215b 100644 --- a/Include/cpython/object.h +++ b/Include/cpython/object.h @@ -493,8 +493,8 @@ without deallocating anything (and so unbounded call-stack depth is avoided). When the call stack finishes unwinding again, code generated by the END macro notices this, and calls another routine to deallocate all the objects that may have been added to the list of deferred deallocations. In effect, a -chain of N deallocations is broken into (N-1)/(PyTrash_UNWIND_LEVEL-1) pieces, -with the call stack never exceeding a depth of PyTrash_UNWIND_LEVEL. +chain of N deallocations is broken into (N-1)/(_PyTrash_UNWIND_LEVEL-1) pieces, +with the call stack never exceeding a depth of _PyTrash_UNWIND_LEVEL. Since the tp_dealloc of a subclass typically calls the tp_dealloc of the base class, we need to ensure that the trashcan is only triggered on the tp_dealloc @@ -503,16 +503,6 @@ partially-deallocated object. To check this, the tp_dealloc function must be passed as second argument to Py_TRASHCAN_BEGIN(). */ -/* This is the old private API, invoked by the macros before 3.2.4. - Kept for binary compatibility of extensions using the stable ABI. */ -PyAPI_FUNC(void) _PyTrash_deposit_object(PyObject*); -PyAPI_FUNC(void) _PyTrash_destroy_chain(void); - -/* This is the old private API, invoked by the macros before 3.9. - Kept for binary compatibility of extensions using the stable ABI. */ -PyAPI_FUNC(void) _PyTrash_thread_deposit_object(PyObject*); -PyAPI_FUNC(void) _PyTrash_thread_destroy_chain(void); - /* Forward declarations for PyThreadState */ struct _ts; @@ -522,8 +512,6 @@ PyAPI_FUNC(void) _PyTrash_end(struct _ts *tstate); /* Python 3.10 private API, invoked by the Py_TRASHCAN_BEGIN(). */ PyAPI_FUNC(int) _PyTrash_cond(PyObject *op, destructor dealloc); -#define PyTrash_UNWIND_LEVEL 50 - #define Py_TRASHCAN_BEGIN_CONDITION(op, cond) \ do { \ PyThreadState *_tstate = NULL; \ diff --git a/Misc/NEWS.d/next/C API/2021-06-23-10-31-45.bpo-39947.je_HMo.rst b/Misc/NEWS.d/next/C API/2021-06-23-10-31-45.bpo-39947.je_HMo.rst new file mode 100644 index 00000000000000..43adbffc7cce24 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-23-10-31-45.bpo-39947.je_HMo.rst @@ -0,0 +1,20 @@ +Remove 4 private trashcan C API functions which were only kept for the backward +compatibility of the stable ABI with Python 3.8 and older, since the trashcan +API was not usable with the limited C API on Python 3.8 and older. The +trashcan API was excluded from the limited C API in Python 3.9. + +Removed functions: + +* _PyTrash_deposit_object() +* _PyTrash_destroy_chain() +* _PyTrash_thread_deposit_object() +* _PyTrash_thread_destroy_chain() + +The trashcan C API was never usable with the limited C API, since old trashcan +macros accessed directly :c:type:`PyThreadState` members like +``_tstate->trash_delete_nesting``, whereas the :c:type:`PyThreadState` +structure is opaque in the limited C API. + +Exclude also the the ``PyTrash_UNWIND_LEVEL`` constant from the C API. + +Patch by Victor Stinner. diff --git a/Misc/stable_abi.txt b/Misc/stable_abi.txt index 24c71d12e3ba75..f104f84e451da1 100644 --- a/Misc/stable_abi.txt +++ b/Misc/stable_abi.txt @@ -1602,12 +1602,6 @@ function _PyThreadState_Init function _PyThreadState_Prealloc added 3.2 abi_only -function _PyTrash_deposit_object - added 3.2 - abi_only -function _PyTrash_destroy_chain - added 3.2 - abi_only data _PyWeakref_CallableProxyType added 3.2 abi_only @@ -1920,12 +1914,6 @@ function Py_EncodeLocale added 3.7 # (and 3.6.1 and 3.5.3) function Py_SetPath added 3.7 # (and 3.6.1 and 3.5.3) -function _PyTrash_thread_deposit_object - added 3.7 # (and 3.6.1 and 3.5.3) - abi_only -function _PyTrash_thread_destroy_chain - added 3.7 # (and 3.6.1 and 3.5.3) - abi_only function PyErr_SetExcFromWindowsErr added 3.7 # (and 3.6.1 and 3.5.3) ifdef MS_WINDOWS diff --git a/Objects/object.c b/Objects/object.c index 854cc85b1cfa46..c87a83f225f14b 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -2092,25 +2092,13 @@ Py_ReprLeave(PyObject *obj) /* Trashcan support. */ -/* Add op to the _PyTrash_delete_later list. Called when the current +#define _PyTrash_UNWIND_LEVEL 50 + +/* Add op to the gcstate->trash_delete_later list. Called when the current * call-stack depth gets large. op must be a currently untracked gc'ed * object, with refcount 0. Py_DECREF must already have been called on it. */ -void -_PyTrash_deposit_object(PyObject *op) -{ - PyInterpreterState *interp = _PyInterpreterState_GET(); - struct _gc_runtime_state *gcstate = &interp->gc; - - _PyObject_ASSERT(op, _PyObject_IS_GC(op)); - _PyObject_ASSERT(op, !_PyObject_GC_IS_TRACKED(op)); - _PyObject_ASSERT(op, Py_REFCNT(op) == 0); - _PyGCHead_SET_PREV(_Py_AS_GC(op), gcstate->trash_delete_later); - gcstate->trash_delete_later = op; -} - -/* The equivalent API, using per-thread state recursion info */ -void +static void _PyTrash_thread_deposit_object(PyObject *op) { PyThreadState *tstate = _PyThreadState_GET(); @@ -2121,37 +2109,9 @@ _PyTrash_thread_deposit_object(PyObject *op) tstate->trash_delete_later = op; } -/* Deallocate all the objects in the _PyTrash_delete_later list. Called when - * the call-stack unwinds again. - */ -void -_PyTrash_destroy_chain(void) -{ - PyInterpreterState *interp = _PyInterpreterState_GET(); - struct _gc_runtime_state *gcstate = &interp->gc; - - while (gcstate->trash_delete_later) { - PyObject *op = gcstate->trash_delete_later; - destructor dealloc = Py_TYPE(op)->tp_dealloc; - - gcstate->trash_delete_later = - (PyObject*) _PyGCHead_PREV(_Py_AS_GC(op)); - - /* Call the deallocator directly. This used to try to - * fool Py_DECREF into calling it indirectly, but - * Py_DECREF was already called on this object, and in - * assorted non-release builds calling Py_DECREF again ends - * up distorting allocation statistics. - */ - _PyObject_ASSERT(op, Py_REFCNT(op) == 0); - ++gcstate->trash_delete_nesting; - (*dealloc)(op); - --gcstate->trash_delete_nesting; - } -} - -/* The equivalent API, using per-thread state recursion info */ -void +/* Deallocate all the objects in the gcstate->trash_delete_later list. + * Called when the call-stack unwinds again. */ +static void _PyTrash_thread_destroy_chain(void) { PyThreadState *tstate = _PyThreadState_GET(); @@ -2192,7 +2152,7 @@ _PyTrash_thread_destroy_chain(void) int _PyTrash_begin(PyThreadState *tstate, PyObject *op) { - if (tstate->trash_delete_nesting >= PyTrash_UNWIND_LEVEL) { + if (tstate->trash_delete_nesting >= _PyTrash_UNWIND_LEVEL) { /* Store the object (to be deallocated later) and jump past * Py_TRASHCAN_END, skipping the body of the deallocator */ _PyTrash_thread_deposit_object(op); diff --git a/PC/python3dll.c b/PC/python3dll.c index 378669c27f0544..0ebb56efaecb2c 100755 --- a/PC/python3dll.c +++ b/PC/python3dll.c @@ -37,10 +37,6 @@ EXPORT_FUNC(_PyObject_NewVar) EXPORT_FUNC(_PyState_AddModule) EXPORT_FUNC(_PyThreadState_Init) EXPORT_FUNC(_PyThreadState_Prealloc) -EXPORT_FUNC(_PyTrash_deposit_object) -EXPORT_FUNC(_PyTrash_destroy_chain) -EXPORT_FUNC(_PyTrash_thread_deposit_object) -EXPORT_FUNC(_PyTrash_thread_destroy_chain) EXPORT_FUNC(Py_AddPendingCall) EXPORT_FUNC(Py_AtExit) EXPORT_FUNC(Py_BuildValue) From webhook-mailer at python.org Wed Jun 23 10:04:34 2021 From: webhook-mailer at python.org (corona10) Date: Wed, 23 Jun 2021 14:04:34 -0000 Subject: [Python-checkins] bpo-42862: Strip stale sqlite3 cache ignores from c-analyzer (GH-26876) Message-ID: https://github.com/python/cpython/commit/34356a0a4bad0be124ae892cda6c30a38f5f1061 commit: 34356a0a4bad0be124ae892cda6c30a38f5f1061 branch: main author: Erlend Egeberg Aasland committer: corona10 date: 2021-06-23T23:04:26+09:00 summary: bpo-42862: Strip stale sqlite3 cache ignores from c-analyzer (GH-26876) files: M Tools/c-analyzer/cpython/ignored.tsv diff --git a/Tools/c-analyzer/cpython/ignored.tsv b/Tools/c-analyzer/cpython/ignored.tsv index b002703b352f1..a05dea9a0323b 100644 --- a/Tools/c-analyzer/cpython/ignored.tsv +++ b/Tools/c-analyzer/cpython/ignored.tsv @@ -628,7 +628,6 @@ Modules/signalmodule.c - signal_methods - Modules/socketmodule.c - sock_methods - Modules/socketmodule.c - socket_methods - Modules/spwdmodule.c - spwd_methods - -Modules/_sqlite/cache.c - cache_methods - Modules/_sqlite/connection.c - connection_methods - Modules/_sqlite/cursor.c - cursor_methods - Modules/_sqlite/module.c - module_methods - @@ -1098,8 +1097,6 @@ Modules/_sha3/sha3module.c - SHAKE256slots - Modules/_sha3/sha3module.c - type_slots_obj - Modules/sha512module.c - sha512_sha384_type_slots - Modules/sha512module.c - sha512_sha512_type_slots - -Modules/_sqlite/cache.c - pysqlite_NodeType_slots - -Modules/_sqlite/cache.c - pysqlite_CacheType_slots - Modules/_sqlite/connection.c - connection_slots - Modules/_sqlite/cursor.c - cursor_slots - Modules/_sqlite/prepare_protocol.c - type_slots - @@ -1148,8 +1145,6 @@ Modules/_sha3/sha3module.c - sha3_512_spec - Modules/_sha3/sha3module.c - SHAKE128_spec - Modules/_sha3/sha3module.c - SHAKE256_spec - Modules/_sha3/sha3module.c - type_spec_obj - -Modules/_sqlite/cache.c - pysqlite_NodeType_spec - -Modules/_sqlite/cache.c - pysqlite_CacheType_spec - Modules/_sqlite/connection.c - connection_spec - Modules/_sqlite/cursor.c - cursor_spec - Modules/_sqlite/prepare_protocol.c - type_spec - From webhook-mailer at python.org Wed Jun 23 10:58:41 2021 From: webhook-mailer at python.org (terryjreedy) Date: Wed, 23 Jun 2021 14:58:41 -0000 Subject: [Python-checkins] bpo-41621: Document defaultdict's default_factory parameter (GH-21945) Message-ID: https://github.com/python/cpython/commit/88a3342314c8b9ff40a2b6fd4759cfbf64712c67 commit: 88a3342314c8b9ff40a2b6fd4759cfbf64712c67 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2021-06-23T10:58:20-04:00 summary: bpo-41621: Document defaultdict's default_factory parameter (GH-21945) It defaults to None and is positional only. (cherry picked from commit d1ae57027fc39ff60dcfc1b63881400e5ca3ce56) Co-authored-by: Dennis Sweeney <36520290+sweeneyde at users.noreply.github.com> files: A Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst M Doc/library/collections.rst M Modules/_collectionsmodule.c diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index 94166ec6c754a..a63090414d439 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -707,9 +707,9 @@ stack manipulations such as ``dup``, ``drop``, ``swap``, ``over``, ``pick``, :class:`defaultdict` objects ---------------------------- -.. class:: defaultdict([default_factory[, ...]]) +.. class:: defaultdict(default_factory=None, /, [...]) - Returns a new dictionary-like object. :class:`defaultdict` is a subclass of the + Return a new dictionary-like object. :class:`defaultdict` is a subclass of the built-in :class:`dict` class. It overrides one method and adds one writable instance variable. The remaining functionality is the same as for the :class:`dict` class and is not documented here. diff --git a/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst b/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst new file mode 100644 index 0000000000000..bd193d9163073 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst @@ -0,0 +1 @@ +Document that :class:`collections.defaultdict` parameter ``default_factory`` defaults to None and is positional-only. diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 9c8701af904ab..eff03c789ede6 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -2236,7 +2236,7 @@ defdict_init(PyObject *self, PyObject *args, PyObject *kwds) } PyDoc_STRVAR(defdict_doc, -"defaultdict(default_factory[, ...]) --> dict with default factory\n\ +"defaultdict(default_factory=None, /, [...]) --> dict with default factory\n\ \n\ The default factory is called without arguments to produce\n\ a new value when a key is not present, in __getitem__ only.\n\ From webhook-mailer at python.org Wed Jun 23 11:47:43 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 23 Jun 2021 15:47:43 -0000 Subject: [Python-checkins] bpo-44441: _PyImport_Fini2() resets PyImport_Inittab (GH-26874) (GH-26878) Message-ID: https://github.com/python/cpython/commit/5ed7827b1620f5b3729bc9767158d24a33863fa9 commit: 5ed7827b1620f5b3729bc9767158d24a33863fa9 branch: 3.9 author: Victor Stinner committer: vstinner date: 2021-06-23T17:47:33+02:00 summary: bpo-44441: _PyImport_Fini2() resets PyImport_Inittab (GH-26874) (GH-26878) Py_RunMain() now resets PyImport_Inittab to its initial value at exit. It must be possible to call PyImport_AppendInittab() or PyImport_ExtendInittab() at each Python initialization. (cherry picked from commit 489699ca05bed5cfd10e847d8580840812b476cd) files: A Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst M Doc/c-api/import.rst M Doc/c-api/init_config.rst M Lib/test/test_embed.py M Programs/_testembed.c M Python/import.c diff --git a/Doc/c-api/import.rst b/Doc/c-api/import.rst index c6fc33076f0f51..d2ae6b6d4e4711 100644 --- a/Doc/c-api/import.rst +++ b/Doc/c-api/import.rst @@ -299,4 +299,8 @@ Importing Modules field; failure to provide the sentinel value can result in a memory fault. Returns ``0`` on success or ``-1`` if insufficient memory could be allocated to extend the internal table. In the event of failure, no modules are added to the - internal table. This should be called before :c:func:`Py_Initialize`. + internal table. This must be called before :c:func:`Py_Initialize`. + + If Python is initialized multiple times, :c:func:`PyImport_AppendInittab` or + :c:func:`PyImport_ExtendInittab` must be called before each Python + initialization. diff --git a/Doc/c-api/init_config.rst b/Doc/c-api/init_config.rst index f2b82a0c6a5118..23009e4191f88c 100644 --- a/Doc/c-api/init_config.rst +++ b/Doc/c-api/init_config.rst @@ -730,9 +730,12 @@ Function to initialize Python: The caller is responsible to handle exceptions (error or exit) using :c:func:`PyStatus_Exception` and :c:func:`Py_ExitStatusException`. -If ``PyImport_FrozenModules``, ``PyImport_AppendInittab()`` or -``PyImport_ExtendInittab()`` are used, they must be set or called after Python -preinitialization and before the Python initialization. +If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or +:c:func:`PyImport_ExtendInittab` are used, they must be set or called after +Python preinitialization and before the Python initialization. If Python is +initialized multiple times, :c:func:`PyImport_AppendInittab` or +:c:func:`PyImport_ExtendInittab` must be called before each Python +initialization. Example setting the program name:: diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index aeb44d78c2bb93..ea47004443006c 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -28,6 +28,8 @@ # _PyCoreConfig_InitIsolatedConfig() API_ISOLATED = 3 +INIT_LOOPS = 16 + def debug_build(program): program = os.path.basename(program) @@ -107,13 +109,13 @@ def run_repeated_init_and_subinterpreters(self): self.assertEqual(err, "") # The output from _testembed looks like this: - # --- Pass 0 --- + # --- Pass 1 --- # interp 0 <0x1cf9330>, thread state <0x1cf9700>: id(modules) = 139650431942728 # interp 1 <0x1d4f690>, thread state <0x1d35350>: id(modules) = 139650431165784 # interp 2 <0x1d5a690>, thread state <0x1d99ed0>: id(modules) = 139650413140368 # interp 3 <0x1d4f690>, thread state <0x1dc3340>: id(modules) = 139650412862200 # interp 0 <0x1cf9330>, thread state <0x1cf9700>: id(modules) = 139650431942728 - # --- Pass 1 --- + # --- Pass 2 --- # ... interp_pat = (r"^interp (\d+) <(0x[\dA-F]+)>, " @@ -121,7 +123,7 @@ def run_repeated_init_and_subinterpreters(self): r"id\(modules\) = ([\d]+)$") Interp = namedtuple("Interp", "id interp tstate modules") - numloops = 0 + numloops = 1 current_run = [] for line in out.splitlines(): if line == "--- Pass {} ---".format(numloops): @@ -155,6 +157,8 @@ def run_repeated_init_and_subinterpreters(self): class EmbeddingTests(EmbeddingTestsMixin, unittest.TestCase): + maxDiff = 100 * 50 + def test_subinterps_main(self): for run in self.run_repeated_init_and_subinterpreters(): main = run[0] @@ -190,6 +194,14 @@ def test_subinterps_distinct_state(self): self.assertNotEqual(sub.tstate, main.tstate) self.assertNotEqual(sub.modules, main.modules) + def test_repeated_init_and_inittab(self): + out, err = self.run_embedded_interpreter("test_repeated_init_and_inittab") + self.assertEqual(err, "") + + lines = [f"--- Pass {i} ---" for i in range(1, INIT_LOOPS+1)] + lines = "\n".join(lines) + "\n" + self.assertEqual(out, lines) + def test_forced_io_encoding(self): # Checks forced configuration of embedded interpreter IO streams env = dict(os.environ, PYTHONIOENCODING="utf-8:surrogateescape") diff --git a/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst b/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst new file mode 100644 index 00000000000000..80c4282c18ea64 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst @@ -0,0 +1,4 @@ +:c:func:`Py_RunMain` now resets :c:data:`PyImport_Inittab` to its initial value +at exit. It must be possible to call :c:func:`PyImport_AppendInittab` or +:c:func:`PyImport_ExtendInittab` at each Python initialization. +Patch by Victor Stinner. diff --git a/Programs/_testembed.c b/Programs/_testembed.c index 3bf0c37a47209e..3933b86af11940 100644 --- a/Programs/_testembed.c +++ b/Programs/_testembed.c @@ -22,6 +22,9 @@ /* Use path starting with "./" avoids a search along the PATH */ #define PROGRAM_NAME L"./_testembed" +#define INIT_LOOPS 16 + + static void _testembed_Py_Initialize(void) { Py_SetProgramName(PROGRAM_NAME); @@ -54,9 +57,8 @@ static int test_repeated_init_and_subinterpreters(void) { PyThreadState *mainstate, *substate; PyGILState_STATE gilstate; - int i, j; - for (i=0; i<15; i++) { + for (int i=1; i <= INIT_LOOPS; i++) { printf("--- Pass %d ---\n", i); _testembed_Py_Initialize(); mainstate = PyThreadState_Get(); @@ -67,7 +69,7 @@ static int test_repeated_init_and_subinterpreters(void) print_subinterp(); PyThreadState_Swap(NULL); - for (j=0; j<3; j++) { + for (int j=0; j<3; j++) { substate = Py_NewInterpreter(); print_subinterp(); Py_EndInterpreter(substate); @@ -83,6 +85,20 @@ static int test_repeated_init_and_subinterpreters(void) return 0; } +#define EMBEDDED_EXT_NAME "embedded_ext" + +static PyModuleDef embedded_ext = { + PyModuleDef_HEAD_INIT, + .m_name = EMBEDDED_EXT_NAME, + .m_size = 0, +}; + +static PyObject* +PyInit_embedded_ext(void) +{ + return PyModule_Create(&embedded_ext); +} + /***************************************************** * Test forcing a particular IO encoding *****************************************************/ @@ -1641,6 +1657,39 @@ static int test_get_argc_argv(void) } +static int test_repeated_init_and_inittab(void) +{ + // bpo-44441: Py_RunMain() must reset PyImport_Inittab at exit. + // It must be possible to call PyImport_AppendInittab() or + // PyImport_ExtendInittab() before each Python initialization. + for (int i=1; i <= INIT_LOOPS; i++) { + printf("--- Pass %d ---\n", i); + + // Call PyImport_AppendInittab() at each iteration + if (PyImport_AppendInittab(EMBEDDED_EXT_NAME, + &PyInit_embedded_ext) != 0) { + fprintf(stderr, "PyImport_AppendInittab() failed\n"); + return 1; + } + + // Initialize Python + wchar_t* argv[] = {PROGRAM_NAME, L"-c", L"pass"}; + PyConfig config; + PyConfig_InitPythonConfig(&config); + config.isolated = 1; + config_set_argv(&config, Py_ARRAY_LENGTH(argv), argv); + init_from_config_clear(&config); + + // Py_RunMain() calls _PyImport_Fini2() which resets PyImport_Inittab + int exitcode = Py_RunMain(); + if (exitcode != 0) { + return exitcode; + } + } + return 0; +} + + /* ********************************************************* * List of test cases and the function that implements it. * @@ -1660,8 +1709,10 @@ struct TestCase }; static struct TestCase TestCases[] = { + // Python initialization {"test_forced_io_encoding", test_forced_io_encoding}, {"test_repeated_init_and_subinterpreters", test_repeated_init_and_subinterpreters}, + {"test_repeated_init_and_inittab", test_repeated_init_and_inittab}, {"test_pre_initialization_api", test_pre_initialization_api}, {"test_pre_initialization_sys_options", test_pre_initialization_sys_options}, {"test_bpo20891", test_bpo20891}, @@ -1700,6 +1751,7 @@ static struct TestCase TestCases[] = { {"test_run_main", test_run_main}, {"test_get_argc_argv", test_get_argc_argv}, + // Audit {"test_open_code_hook", test_open_code_hook}, {"test_audit", test_audit}, {"test_audit_subinterpreter", test_audit_subinterpreter}, diff --git a/Python/import.c b/Python/import.c index 55fbe41bc13370..1ec755393df997 100644 --- a/Python/import.c +++ b/Python/import.c @@ -296,6 +296,9 @@ _PyImport_Fini2(void) PyMemAllocatorEx old_alloc; _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc); + // Reset PyImport_Inittab + PyImport_Inittab = _PyImport_Inittab; + /* Free memory allocated by PyImport_ExtendInittab() */ PyMem_RawFree(inittab_copy); inittab_copy = NULL; From webhook-mailer at python.org Wed Jun 23 11:47:44 2021 From: webhook-mailer at python.org (vstinner) Date: Wed, 23 Jun 2021 15:47:44 -0000 Subject: [Python-checkins] bpo-44441: _PyImport_Fini2() resets PyImport_Inittab (GH-26874) (GH-26877) Message-ID: https://github.com/python/cpython/commit/ece3841d3ddf38875b997eb919488cbb911a66e2 commit: ece3841d3ddf38875b997eb919488cbb911a66e2 branch: 3.10 author: Victor Stinner committer: vstinner date: 2021-06-23T17:47:38+02:00 summary: bpo-44441: _PyImport_Fini2() resets PyImport_Inittab (GH-26874) (GH-26877) Py_RunMain() now resets PyImport_Inittab to its initial value at exit. It must be possible to call PyImport_AppendInittab() or PyImport_ExtendInittab() at each Python initialization. (cherry picked from commit 489699ca05bed5cfd10e847d8580840812b476cd) files: A Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst M Doc/c-api/import.rst M Doc/c-api/init_config.rst M Lib/test/test_embed.py M Programs/_testembed.c M Python/import.c diff --git a/Doc/c-api/import.rst b/Doc/c-api/import.rst index c6fc33076f0f51..d2ae6b6d4e4711 100644 --- a/Doc/c-api/import.rst +++ b/Doc/c-api/import.rst @@ -299,4 +299,8 @@ Importing Modules field; failure to provide the sentinel value can result in a memory fault. Returns ``0`` on success or ``-1`` if insufficient memory could be allocated to extend the internal table. In the event of failure, no modules are added to the - internal table. This should be called before :c:func:`Py_Initialize`. + internal table. This must be called before :c:func:`Py_Initialize`. + + If Python is initialized multiple times, :c:func:`PyImport_AppendInittab` or + :c:func:`PyImport_ExtendInittab` must be called before each Python + initialization. diff --git a/Doc/c-api/init_config.rst b/Doc/c-api/init_config.rst index de85029481185a..fe5b83aa8dc95a 100644 --- a/Doc/c-api/init_config.rst +++ b/Doc/c-api/init_config.rst @@ -1193,7 +1193,10 @@ The caller is responsible to handle exceptions (error or exit) using If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or :c:func:`PyImport_ExtendInittab` are used, they must be set or called after -Python preinitialization and before the Python initialization. +Python preinitialization and before the Python initialization. If Python is +initialized multiple times, :c:func:`PyImport_AppendInittab` or +:c:func:`PyImport_ExtendInittab` must be called before each Python +initialization. The current configuration (``PyConfig`` type) is stored in ``PyInterpreterState.config``. diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index 23cf297d4ab624..f2cf4a63add287 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -30,6 +30,7 @@ # _PyCoreConfig_InitIsolatedConfig() API_ISOLATED = 3 +INIT_LOOPS = 16 MAX_HASH_SEED = 4294967295 @@ -111,13 +112,13 @@ def run_repeated_init_and_subinterpreters(self): self.assertEqual(err, "") # The output from _testembed looks like this: - # --- Pass 0 --- + # --- Pass 1 --- # interp 0 <0x1cf9330>, thread state <0x1cf9700>: id(modules) = 139650431942728 # interp 1 <0x1d4f690>, thread state <0x1d35350>: id(modules) = 139650431165784 # interp 2 <0x1d5a690>, thread state <0x1d99ed0>: id(modules) = 139650413140368 # interp 3 <0x1d4f690>, thread state <0x1dc3340>: id(modules) = 139650412862200 # interp 0 <0x1cf9330>, thread state <0x1cf9700>: id(modules) = 139650431942728 - # --- Pass 1 --- + # --- Pass 2 --- # ... interp_pat = (r"^interp (\d+) <(0x[\dA-F]+)>, " @@ -125,7 +126,7 @@ def run_repeated_init_and_subinterpreters(self): r"id\(modules\) = ([\d]+)$") Interp = namedtuple("Interp", "id interp tstate modules") - numloops = 0 + numloops = 1 current_run = [] for line in out.splitlines(): if line == "--- Pass {} ---".format(numloops): @@ -159,6 +160,8 @@ def run_repeated_init_and_subinterpreters(self): class EmbeddingTests(EmbeddingTestsMixin, unittest.TestCase): + maxDiff = 100 * 50 + def test_subinterps_main(self): for run in self.run_repeated_init_and_subinterpreters(): main = run[0] @@ -194,6 +197,14 @@ def test_subinterps_distinct_state(self): self.assertNotEqual(sub.tstate, main.tstate) self.assertNotEqual(sub.modules, main.modules) + def test_repeated_init_and_inittab(self): + out, err = self.run_embedded_interpreter("test_repeated_init_and_inittab") + self.assertEqual(err, "") + + lines = [f"--- Pass {i} ---" for i in range(1, INIT_LOOPS+1)] + lines = "\n".join(lines) + "\n" + self.assertEqual(out, lines) + def test_forced_io_encoding(self): # Checks forced configuration of embedded interpreter IO streams env = dict(os.environ, PYTHONIOENCODING="utf-8:surrogateescape") diff --git a/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst b/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst new file mode 100644 index 00000000000000..80c4282c18ea64 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst @@ -0,0 +1,4 @@ +:c:func:`Py_RunMain` now resets :c:data:`PyImport_Inittab` to its initial value +at exit. It must be possible to call :c:func:`PyImport_AppendInittab` or +:c:func:`PyImport_ExtendInittab` at each Python initialization. +Patch by Victor Stinner. diff --git a/Programs/_testembed.c b/Programs/_testembed.c index 0901933bfbb857..f8de6bc07934bc 100644 --- a/Programs/_testembed.c +++ b/Programs/_testembed.c @@ -22,6 +22,9 @@ /* Use path starting with "./" avoids a search along the PATH */ #define PROGRAM_NAME L"./_testembed" +#define INIT_LOOPS 16 + + static void _testembed_Py_Initialize(void) { Py_SetProgramName(PROGRAM_NAME); @@ -54,9 +57,8 @@ static int test_repeated_init_and_subinterpreters(void) { PyThreadState *mainstate, *substate; PyGILState_STATE gilstate; - int i, j; - for (i=0; i<15; i++) { + for (int i=1; i <= INIT_LOOPS; i++) { printf("--- Pass %d ---\n", i); _testembed_Py_Initialize(); mainstate = PyThreadState_Get(); @@ -67,7 +69,7 @@ static int test_repeated_init_and_subinterpreters(void) print_subinterp(); PyThreadState_Swap(NULL); - for (j=0; j<3; j++) { + for (int j=0; j<3; j++) { substate = Py_NewInterpreter(); print_subinterp(); Py_EndInterpreter(substate); @@ -83,6 +85,20 @@ static int test_repeated_init_and_subinterpreters(void) return 0; } +#define EMBEDDED_EXT_NAME "embedded_ext" + +static PyModuleDef embedded_ext = { + PyModuleDef_HEAD_INIT, + .m_name = EMBEDDED_EXT_NAME, + .m_size = 0, +}; + +static PyObject* +PyInit_embedded_ext(void) +{ + return PyModule_Create(&embedded_ext); +} + /***************************************************** * Test forcing a particular IO encoding *****************************************************/ @@ -1735,6 +1751,38 @@ static int list_frozen(void) } +static int test_repeated_init_and_inittab(void) +{ + // bpo-44441: Py_RunMain() must reset PyImport_Inittab at exit. + // It must be possible to call PyImport_AppendInittab() or + // PyImport_ExtendInittab() before each Python initialization. + for (int i=1; i <= INIT_LOOPS; i++) { + printf("--- Pass %d ---\n", i); + + // Call PyImport_AppendInittab() at each iteration + if (PyImport_AppendInittab(EMBEDDED_EXT_NAME, + &PyInit_embedded_ext) != 0) { + fprintf(stderr, "PyImport_AppendInittab() failed\n"); + return 1; + } + + // Initialize Python + wchar_t* argv[] = {PROGRAM_NAME, L"-c", L"pass"}; + PyConfig config; + PyConfig_InitPythonConfig(&config); + config.isolated = 1; + config_set_argv(&config, Py_ARRAY_LENGTH(argv), argv); + init_from_config_clear(&config); + + // Py_RunMain() calls _PyImport_Fini2() which resets PyImport_Inittab + int exitcode = Py_RunMain(); + if (exitcode != 0) { + return exitcode; + } + } + return 0; +} + /* ********************************************************* * List of test cases and the function that implements it. @@ -1755,8 +1803,10 @@ struct TestCase }; static struct TestCase TestCases[] = { + // Python initialization {"test_forced_io_encoding", test_forced_io_encoding}, {"test_repeated_init_and_subinterpreters", test_repeated_init_and_subinterpreters}, + {"test_repeated_init_and_inittab", test_repeated_init_and_inittab}, {"test_pre_initialization_api", test_pre_initialization_api}, {"test_pre_initialization_sys_options", test_pre_initialization_sys_options}, {"test_bpo20891", test_bpo20891}, @@ -1796,6 +1846,7 @@ static struct TestCase TestCases[] = { {"test_run_main", test_run_main}, {"test_get_argc_argv", test_get_argc_argv}, + // Audit {"test_open_code_hook", test_open_code_hook}, {"test_audit", test_audit}, {"test_audit_subinterpreter", test_audit_subinterpreter}, @@ -1805,8 +1856,10 @@ static struct TestCase TestCases[] = { {"test_audit_run_startup", test_audit_run_startup}, {"test_audit_run_stdin", test_audit_run_stdin}, + // Specific C API {"test_unicode_id_init", test_unicode_id_init}, + // Command {"list_frozen", list_frozen}, {NULL, NULL} }; diff --git a/Python/import.c b/Python/import.c index c4878c628bedcf..7301fccb9fac0c 100644 --- a/Python/import.c +++ b/Python/import.c @@ -255,6 +255,9 @@ _PyImport_Fini2(void) PyMemAllocatorEx old_alloc; _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc); + // Reset PyImport_Inittab + PyImport_Inittab = _PyImport_Inittab; + /* Free memory allocated by PyImport_ExtendInittab() */ PyMem_RawFree(inittab_copy); inittab_copy = NULL; From webhook-mailer at python.org Wed Jun 23 12:51:52 2021 From: webhook-mailer at python.org (gvanrossum) Date: Wed, 23 Jun 2021 16:51:52 -0000 Subject: [Python-checkins] bpo-43693 Get rid of CO_NOFREE -- it's unused (GH-26839) Message-ID: https://github.com/python/cpython/commit/769d7d0c66c5b86e2dd29b9ce67ac2daaab1bb38 commit: 769d7d0c66c5b86e2dd29b9ce67ac2daaab1bb38 branch: main author: Guido van Rossum committer: gvanrossum date: 2021-06-23T09:51:44-07:00 summary: bpo-43693 Get rid of CO_NOFREE -- it's unused (GH-26839) All uses of this flag are either setting it or in doc or tests for it. So we should be able to get rid of it completely. files: M Doc/library/inspect.rst M Include/cpython/code.h M Lib/test/test_code.py M Lib/test/test_dis.py M Objects/codeobject.c M Programs/test_frozenmain.h M Python/frozen_hello.h M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index ed33cbb8a61ab..1d7572e56410f 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -1450,10 +1450,6 @@ the following flags: The flag is set when the code object is a generator function, i.e. a generator object is returned when the code object is executed. -.. data:: CO_NOFREE - - The flag is set if there are no free or cell variables. - .. data:: CO_COROUTINE The flag is set when the code object is a coroutine function. diff --git a/Include/cpython/code.h b/Include/cpython/code.h index 77801dc173db0..ed9ac2ee0deed 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -112,12 +112,6 @@ struct PyCodeObject { #define CO_VARKEYWORDS 0x0008 #define CO_NESTED 0x0010 #define CO_GENERATOR 0x0020 -/* The CO_NOFREE flag is set if there are no free or cell variables. - This information is redundant, but it allows a single flag test - to determine whether there is any extra work to be done when the - call frame it setup. -*/ -#define CO_NOFREE 0x0040 /* The CO_COROUTINE flag is set for coroutine functions (defined with ``async def`` keywords) */ diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py index 244acab560a84..27342ad414834 100644 --- a/Lib/test/test_code.py +++ b/Lib/test/test_code.py @@ -49,7 +49,7 @@ cellvars: () freevars: () nlocals: 5 -flags: 67 +flags: 3 consts: ('None',) >>> def attrs(obj): @@ -67,7 +67,7 @@ cellvars: () freevars: () nlocals: 1 -flags: 67 +flags: 3 consts: ('None',) >>> def optimize_away(): @@ -86,7 +86,7 @@ cellvars: () freevars: () nlocals: 0 -flags: 67 +flags: 3 consts: ("'doc string'", 'None') >>> def keywordonly_args(a,b,*,k1): @@ -103,7 +103,7 @@ cellvars: () freevars: () nlocals: 3 -flags: 67 +flags: 3 consts: ('None',) >>> def posonly_args(a,b,/,c): @@ -120,7 +120,7 @@ cellvars: () freevars: () nlocals: 3 -flags: 67 +flags: 3 consts: ('None',) """ @@ -199,10 +199,6 @@ class List(list): class_ref = function.__closure__[0].cell_contents self.assertIs(class_ref, List) - # Ensure the code correctly indicates it accesses a free variable - self.assertFalse(function.__code__.co_flags & inspect.CO_NOFREE, - hex(function.__code__.co_flags)) - # Ensure the zero-arg super() call in the injected method works obj = List([1, 2, 3]) self.assertEqual(obj[0], "Foreign getitem: 1") diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index 41dd9397cb004..f2daa17acd1fc 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -719,7 +719,7 @@ def get_disassembly(self, func, lasti=-1, wrapper=True, **kwargs): Kw-only arguments: 0 Number of locals: 1 Stack size: 3 -Flags: OPTIMIZED, NEWLOCALS, NOFREE +Flags: OPTIMIZED, NEWLOCALS Constants: {code_info_consts} Names: @@ -800,7 +800,7 @@ def f(c=c): Kw-only arguments: 0 Number of locals: 0 Stack size: 2 -Flags: NOFREE +Flags: 0x0 Constants: 0: 1 Names: @@ -814,7 +814,7 @@ def f(c=c): Kw-only arguments: 0 Number of locals: 0 Stack size: 2 -Flags: NOFREE +Flags: 0x0 Constants: 0: 1 1: None @@ -829,7 +829,7 @@ def f(c=c): Kw-only arguments: 0 Number of locals: 0 Stack size: 2 -Flags: NOFREE +Flags: 0x0 Constants: 0: 0 1: 1 @@ -851,7 +851,7 @@ async def async_def(): Kw-only arguments: 0 Number of locals: 2 Stack size: 10 -Flags: OPTIMIZED, NEWLOCALS, NOFREE, COROUTINE +Flags: OPTIMIZED, NEWLOCALS, COROUTINE Constants: 0: None 1: 1 diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 99199cc235e6a..88e09ac4b97bb 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -372,13 +372,6 @@ _PyCode_New(struct _PyCodeConstructor *con) } init_code(co, con); - /* Check for any inner or outer closure references */ - if (!co->co_ncellvars && !co->co_nfreevars) { - co->co_flags |= CO_NOFREE; - } else { - co->co_flags &= ~CO_NOFREE; - } - return co; } diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index 6256e987fab16..519b91526d157 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -1,7 +1,7 @@ // Auto-generated by Programs/freeze_test_frozenmain.py unsigned char M_test_frozenmain[] = { 227,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0, - 0,64,0,0,0,115,86,0,0,0,100,0,100,1,108,0, + 0,0,0,0,0,115,86,0,0,0,100,0,100,1,108,0, 90,0,100,0,100,1,108,1,90,1,101,2,100,2,131,1, 1,0,101,2,100,3,101,0,106,3,131,2,1,0,101,1, 160,4,161,0,100,4,25,0,90,5,100,5,68,0,93,14, diff --git a/Python/frozen_hello.h b/Python/frozen_hello.h index 2d20d2ad6b351..c02d2c5f343c8 100644 --- a/Python/frozen_hello.h +++ b/Python/frozen_hello.h @@ -1,7 +1,7 @@ /* Auto-generated by Programs/_freeze_importlib.c */ const unsigned char _Py_M__hello[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,64,0,0,0,115,16,0,0,0,100,0,90,0,101,1, + 0,0,0,0,0,115,16,0,0,0,100,0,90,0,101,1, 100,1,131,1,1,0,100,2,83,0,41,3,84,122,12,72, 101,108,108,111,32,119,111,114,108,100,33,78,41,2,90,11, 105,110,105,116,105,97,108,105,122,101,100,218,5,112,114,105, diff --git a/Python/importlib.h b/Python/importlib.h index 69d181446036a..998d5bdaae0d0 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1,7 +1,7 @@ /* Auto-generated by Programs/_freeze_importlib.c */ const unsigned char _Py_M__importlib_bootstrap[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,64,0,0,0,115,214,1,0,0,100,0,90,0,100,1, + 0,0,0,0,0,115,214,1,0,0,100,0,90,0,100,1, 100,2,132,0,90,1,100,3,90,2,100,3,90,3,100,3, 90,4,100,3,97,5,100,4,100,5,132,0,90,6,100,6, 100,7,132,0,90,7,105,0,90,8,105,0,90,9,71,0, @@ -53,7 +53,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 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,99,1,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,67,0,0,0,115, + 0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,115, 40,0,0,0,9,0,124,0,106,0,83,0,35,0,4,0, 116,1,121,19,1,0,1,0,1,0,116,2,124,0,131,1, 106,0,6,0,89,0,83,0,37,0,119,0,169,1,78,41, @@ -66,7 +66,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,115,14,0,0,0,2,1,6,1,2,128,12,1, 14,1,2,128,2,255,115,12,0,0,0,129,2,4,0,132, 12,18,7,147,1,18,7,114,6,0,0,0,78,99,2,0, - 0,0,0,0,0,0,0,0,0,0,7,0,0,0,67,0, + 0,0,0,0,0,0,0,0,0,0,7,0,0,0,3,0, 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, 2,124,1,124,2,131,2,131,3,1,0,113,2,124,0,106, @@ -84,21 +84,21 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,32,32,32,114,5,0,0,0,218,5,95,119,114,97, 112,40,0,0,0,115,10,0,0,0,8,2,10,1,18,1, 2,128,18,1,243,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,67, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, 0,0,0,115,12,0,0,0,116,0,116,1,131,1,124,0, 131,1,83,0,114,0,0,0,0,41,2,114,3,0,0,0, 218,3,115,121,115,169,1,218,4,110,97,109,101,115,1,0, 0,0,32,114,5,0,0,0,218,11,95,110,101,119,95,109, 111,100,117,108,101,48,0,0,0,115,2,0,0,0,12,1, 114,17,0,0,0,114,21,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,115, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,115, 12,0,0,0,101,0,90,1,100,0,90,2,100,1,83,0, 41,2,218,14,95,68,101,97,100,108,111,99,107,69,114,114, 111,114,78,41,3,114,8,0,0,0,114,7,0,0,0,114, 1,0,0,0,169,0,114,17,0,0,0,114,5,0,0,0, 114,22,0,0,0,61,0,0,0,115,4,0,0,0,8,0, 4,1,114,17,0,0,0,114,22,0,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, 0,115,56,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, @@ -115,7 +115,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 116,114,121,105,110,103,32,116,111,10,32,32,32,32,116,97, 107,101,32,108,111,99,107,115,32,66,32,116,104,101,110,32, 65,41,46,10,32,32,32,32,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,67,0,0,0,115,48,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,115,48,0, 0,0,116,0,160,1,161,0,124,0,95,2,116,0,160,1, 161,0,124,0,95,3,124,1,124,0,95,4,100,0,124,0, 95,5,100,1,124,0,95,6,100,1,124,0,95,7,100,0, @@ -130,7 +130,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 6,1,6,1,10,1,114,17,0,0,0,122,20,95,77,111, 100,117,108,101,76,111,99,107,46,95,95,105,110,105,116,95, 95,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,67,0,0,0,115,86,0,0,0,116,0,160,1,161, + 0,0,3,0,0,0,115,86,0,0,0,116,0,160,1,161, 0,125,1,124,0,106,2,125,2,116,3,131,0,125,3,9, 0,116,4,160,5,124,2,161,1,125,4,124,4,100,0,117, 0,114,22,100,2,83,0,124,4,106,2,125,2,124,2,124, @@ -148,7 +148,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,4,6,10,1,2,242,114,17,0,0,0,122,24,95,77, 111,100,117,108,101,76,111,99,107,46,104,97,115,95,100,101, 97,100,108,111,99,107,99,1,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,67,0,0,0,115,204,0,0,0, + 0,0,0,9,0,0,0,3,0,0,0,115,204,0,0,0, 116,0,160,1,161,0,125,1,124,0,116,2,124,1,60,0, 9,0,9,0,124,0,106,3,53,0,1,0,124,0,106,4, 100,2,107,2,115,24,124,0,106,5,124,1,107,2,114,45, @@ -191,7 +191,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 32,0,193,15,3,65,14,11,193,18,14,65,32,0,193,32, 5,65,37,7,122,19,95,77,111,100,117,108,101,76,111,99, 107,46,97,99,113,117,105,114,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,67,0,0,0,115,148, + 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,148, 0,0,0,116,0,160,1,161,0,125,1,124,0,106,2,53, 0,1,0,124,0,106,3,124,1,107,3,114,17,116,4,100, 1,131,1,130,1,124,0,106,5,100,2,107,4,115,24,74, @@ -215,7 +215,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 3,189,4,65,1,11,193,2,3,65,1,11,122,19,95,77, 111,100,117,108,101,76,111,99,107,46,114,101,108,101,97,115, 101,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,67,0,0,0,243,18,0,0,0,100,1,160,0,124, + 0,0,3,0,0,0,243,18,0,0,0,100,1,160,0,124, 0,106,1,116,2,124,0,131,1,161,2,83,0,41,2,78, 122,23,95,77,111,100,117,108,101,76,111,99,107,40,123,33, 114,125,41,32,97,116,32,123,125,169,3,218,6,102,111,114, @@ -231,7 +231,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,65,0,0,0,115,14,0,0,0,8,0,4,1,8, 5,8,8,8,21,8,25,12,13,114,17,0,0,0,114,24, 0,0,0,99,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, + 2,0,0,0,0,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, @@ -242,7 +242,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 105,108,100,115,32,119,105,116,104,111,117,116,10,32,32,32, 32,109,117,108,116,105,45,116,104,114,101,97,100,105,110,103, 32,115,117,112,112,111,114,116,46,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,67,0,0,0,115,16, + 0,0,0,0,0,0,2,0,0,0,3,0,0,0,115,16, 0,0,0,124,1,124,0,95,0,100,1,124,0,95,1,100, 0,83,0,114,25,0,0,0,41,2,114,20,0,0,0,114, 31,0,0,0,114,33,0,0,0,115,2,0,0,0,32,32, @@ -250,7 +250,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,6,1,10,1,114,17,0,0,0,122,25,95,68, 117,109,109,121,77,111,100,117,108,101,76,111,99,107,46,95, 95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,67,0,0,0,115,18,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,115,18,0,0, 0,124,0,4,0,106,0,100,1,55,0,2,0,95,0,100, 2,83,0,41,3,78,114,43,0,0,0,84,41,1,114,31, 0,0,0,114,53,0,0,0,115,1,0,0,0,32,114,5, @@ -258,7 +258,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,14,1,4,1,114,17,0,0,0,122,24,95,68,117,109, 109,121,77,111,100,117,108,101,76,111,99,107,46,97,99,113, 117,105,114,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,67,0,0,0,115,36,0,0,0,124,0, + 0,3,0,0,0,3,0,0,0,115,36,0,0,0,124,0, 106,0,100,1,107,2,114,9,116,1,100,2,131,1,130,1, 124,0,4,0,106,0,100,3,56,0,2,0,95,0,100,0, 83,0,41,4,78,114,26,0,0,0,114,47,0,0,0,114, @@ -268,7 +268,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 8,1,18,1,114,17,0,0,0,122,24,95,68,117,109,109, 121,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, 97,115,101,99,1,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,67,0,0,0,114,49,0,0,0,41,2,78, + 5,0,0,0,3,0,0,0,114,49,0,0,0,41,2,78, 122,28,95,68,117,109,109,121,77,111,100,117,108,101,76,111, 99,107,40,123,33,114,125,41,32,97,116,32,123,125,114,50, 0,0,0,114,53,0,0,0,115,1,0,0,0,32,114,5, @@ -282,12 +282,12 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 142,0,0,0,115,12,0,0,0,8,0,4,1,8,3,8, 4,8,4,12,5,114,17,0,0,0,114,56,0,0,0,99, 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 64,0,0,0,115,36,0,0,0,101,0,90,1,100,0,90, + 0,0,0,0,115,36,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,83,0,41,8,218, 18,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, 103,101,114,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,67,0,0,0,115,16,0,0,0,124,1,124, + 2,0,0,0,3,0,0,0,115,16,0,0,0,124,1,124, 0,95,0,100,0,124,0,95,1,100,0,83,0,114,0,0, 0,0,41,2,218,5,95,110,97,109,101,218,5,95,108,111, 99,107,114,33,0,0,0,115,2,0,0,0,32,32,114,5, @@ -295,7 +295,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,114,17,0,0,0,122,27,95,77,111,100,117,108,101,76, 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,67,0,0,0,115,26,0,0,0,116,0,124, + 2,0,0,0,3,0,0,0,115,26,0,0,0,116,0,124, 0,106,1,131,1,124,0,95,2,124,0,106,2,160,3,161, 0,1,0,100,0,83,0,114,0,0,0,0,41,4,218,16, 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, @@ -305,7 +305,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,12,1,14,1,114,17,0,0,0,122,28,95,77, 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, 46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,79,0,0,0,115, + 0,0,0,0,0,0,0,2,0,0,0,15,0,0,0,115, 14,0,0,0,124,0,106,0,160,1,161,0,1,0,100,0, 83,0,114,0,0,0,0,41,2,114,60,0,0,0,114,45, 0,0,0,41,3,114,34,0,0,0,218,4,97,114,103,115, @@ -319,7 +319,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,114,17,0,0,0,114,5,0,0,0,114,58,0,0, 0,163,0,0,0,115,8,0,0,0,8,0,8,2,8,4, 12,4,114,17,0,0,0,114,58,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0, 0,115,138,0,0,0,116,0,160,1,161,0,1,0,9,0, 9,0,116,2,124,0,25,0,131,0,125,1,110,12,35,0, 4,0,116,3,121,68,1,0,1,0,1,0,100,1,125,1, @@ -339,7 +339,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 107,32,116,111,32,112,114,111,116,101,99,116,10,32,32,32, 32,95,109,111,100,117,108,101,95,108,111,99,107,115,46,78, 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,83,0,0,0,115,56,0,0,0,116,0,160,1,161,0, + 0,19,0,0,0,115,56,0,0,0,116,0,160,1,161,0, 1,0,9,0,116,2,160,3,124,1,161,1,124,0,117,0, 114,15,116,2,124,1,61,0,116,0,160,4,161,0,1,0, 100,0,83,0,35,0,116,0,160,4,161,0,1,0,119,0, @@ -365,7 +365,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 234,115,26,0,0,0,134,5,12,0,139,1,61,0,140,9, 23,7,149,34,61,0,189,6,65,3,7,193,4,1,23,7, 114,61,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,67,0,0,0,115,56,0,0,0,116, + 0,0,8,0,0,0,3,0,0,0,115,56,0,0,0,116, 0,124,0,131,1,125,1,9,0,124,1,160,1,161,0,1, 0,110,11,35,0,4,0,116,2,121,27,1,0,1,0,1, 0,89,0,100,1,83,0,37,0,124,1,160,3,161,0,1, @@ -389,7 +389,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 115,18,0,0,0,8,6,2,1,10,1,2,128,12,1,6, 3,2,128,12,2,2,251,115,12,0,0,0,133,4,10,0, 138,7,20,7,155,1,20,7,114,73,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,79,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,15,0, 0,0,115,14,0,0,0,124,0,124,1,105,0,124,2,164, 1,142,1,83,0,41,2,97,46,1,0,0,114,101,109,111, 118,101,95,105,109,112,111,114,116,108,105,98,95,102,114,97, @@ -418,7 +418,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,14,8,114,17,0,0,0,114,75,0,0,0,114,43,0, 0,0,41,1,218,9,118,101,114,98,111,115,105,116,121,99, 1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 71,0,0,0,115,58,0,0,0,116,0,106,1,106,2,124, + 7,0,0,0,115,58,0,0,0,116,0,106,1,106,2,124, 1,107,5,114,27,124,0,160,3,100,1,161,1,115,15,100, 2,124,0,23,0,125,0,116,4,124,0,106,5,124,2,142, 0,116,0,106,6,100,3,141,2,1,0,100,4,83,0,100, @@ -491,7 +491,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 101,113,117,105,114,101,115,95,102,114,111,122,101,110,7,1, 0,0,114,96,0,0,0,114,17,0,0,0,114,100,0,0, 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,67,0,0,0,115,74,0,0,0,100,1,125,2,116, + 0,0,3,0,0,0,115,74,0,0,0,100,1,125,2,116, 0,160,1,124,2,116,2,161,2,1,0,116,3,124,1,124, 0,131,2,125,3,124,1,116,4,106,5,118,0,114,33,116, 4,106,5,124,1,25,0,125,4,116,6,124,3,124,4,131, @@ -523,7 +523,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 109,111,100,117,108,101,95,115,104,105,109,19,1,0,0,115, 16,0,0,0,4,6,12,2,10,1,10,1,10,1,10,1, 10,1,8,2,114,17,0,0,0,114,111,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, 0,0,0,115,194,0,0,0,116,0,124,0,100,1,100,2, 131,3,125,1,116,0,124,0,100,3,100,2,131,3,4,0, 125,2,114,18,116,1,124,2,131,1,83,0,116,2,124,1, @@ -563,7 +563,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 55,7,185,3,61,0,189,16,65,23,7,193,15,6,65,23, 7,193,30,1,65,23,7,193,31,1,55,7,193,32,1,38, 7,114,124,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,64,0,0,0,115,114,0,0,0, + 0,0,0,4,0,0,0,0,0,0,0,115,114,0,0,0, 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,2, 100,2,100,3,156,3,100,4,100,5,132,2,90,4,100,6, 100,7,132,0,90,5,100,8,100,9,132,0,90,6,101,7, @@ -668,7 +668,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 10,32,32,32,32,78,41,3,218,6,111,114,105,103,105,110, 218,12,108,111,97,100,101,114,95,115,116,97,116,101,218,10, 105,115,95,112,97,99,107,97,103,101,99,3,0,0,0,0, - 0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115, + 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,115, 54,0,0,0,124,1,124,0,95,0,124,2,124,0,95,1, 124,3,124,0,95,2,124,4,124,0,95,3,124,5,114,16, 103,0,110,1,100,0,124,0,95,4,100,1,124,0,95,5, @@ -684,7 +684,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,115,14,0,0,0,6,2,6,1,6,1,6,1,14,1, 6,3,10,1,114,17,0,0,0,122,19,77,111,100,117,108, 101,83,112,101,99,46,95,95,105,110,105,116,95,95,99,1, - 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3, 0,0,0,115,102,0,0,0,100,1,160,0,124,0,106,1, 161,1,100,2,160,0,124,0,106,2,161,1,103,2,125,1, 124,0,106,3,100,0,117,1,114,26,124,1,160,4,100,3, @@ -706,7 +706,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 10,1,10,1,4,255,10,2,18,1,10,1,6,1,8,1, 4,255,22,2,114,17,0,0,0,122,19,77,111,100,117,108, 101,83,112,101,99,46,95,95,114,101,112,114,95,95,99,2, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, 0,0,0,115,104,0,0,0,124,0,106,0,125,2,9,0, 124,0,106,1,124,1,106,1,107,2,111,38,124,0,106,2, 124,1,106,2,107,2,111,38,124,0,106,3,124,1,106,3, @@ -727,7 +727,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,132,34,39,0,167,9,50,7,179,1,50,7,122,17,77, 111,100,117,108,101,83,112,101,99,46,95,95,101,113,95,95, 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,58,0,0,0,124,0,106,0,100,0, + 0,3,0,0,0,115,58,0,0,0,124,0,106,0,100,0, 117,0,114,26,124,0,106,1,100,0,117,1,114,26,124,0, 106,2,114,26,116,3,100,0,117,0,114,19,116,4,130,1, 116,3,160,5,124,0,106,1,161,1,124,0,95,0,124,0, @@ -741,13 +741,13 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,16,1,8,1,4,1,14,1,6,1,114,17,0,0,0, 122,17,77,111,100,117,108,101,83,112,101,99,46,99,97,99, 104,101,100,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,67,0,0,0,115,10,0,0,0,124,1,124, + 2,0,0,0,3,0,0,0,115,10,0,0,0,124,1,124, 0,95,0,100,0,83,0,114,0,0,0,0,41,1,114,131, 0,0,0,41,2,114,34,0,0,0,114,135,0,0,0,115, 2,0,0,0,32,32,114,5,0,0,0,114,135,0,0,0, 144,1,0,0,115,2,0,0,0,10,2,114,17,0,0,0, 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,32,0,0,0,124,0,106,0,100,1, + 0,3,0,0,0,115,32,0,0,0,124,0,106,0,100,1, 117,0,114,13,124,0,106,1,160,2,100,2,161,1,100,3, 25,0,83,0,124,0,106,1,83,0,41,4,122,32,84,104, 101,32,110,97,109,101,32,111,102,32,116,104,101,32,109,111, @@ -758,14 +758,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 6,112,97,114,101,110,116,148,1,0,0,115,6,0,0,0, 10,3,16,1,6,2,114,17,0,0,0,122,17,77,111,100, 117,108,101,83,112,101,99,46,112,97,114,101,110,116,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, 0,0,0,115,6,0,0,0,124,0,106,0,83,0,114,0, 0,0,0,41,1,114,130,0,0,0,114,53,0,0,0,115, 1,0,0,0,32,114,5,0,0,0,114,136,0,0,0,156, 1,0,0,115,2,0,0,0,6,2,114,17,0,0,0,122, 23,77,111,100,117,108,101,83,112,101,99,46,104,97,115,95, 108,111,99,97,116,105,111,110,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,67,0,0,0,115,14,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,115,14,0, 0,0,116,0,124,1,131,1,124,0,95,1,100,0,83,0, 114,0,0,0,0,41,2,218,4,98,111,111,108,114,130,0, 0,0,41,2,114,34,0,0,0,218,5,118,97,108,117,101, @@ -781,7 +781,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 8,10,2,12,10,1,4,8,10,1,2,3,10,1,2,7, 10,1,4,3,14,1,114,17,0,0,0,114,125,0,0,0, 169,2,114,126,0,0,0,114,128,0,0,0,99,2,0,0, - 0,0,0,0,0,2,0,0,0,8,0,0,0,67,0,0, + 0,0,0,0,0,2,0,0,0,8,0,0,0,3,0,0, 0,115,152,0,0,0,116,0,124,1,100,1,131,2,114,37, 116,1,100,2,117,0,114,11,116,2,130,1,116,1,106,3, 125,4,124,3,100,2,117,0,114,24,124,4,124,0,124,1, @@ -811,7 +811,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,67,0,0,0,115,50,1,0,0,9,0,124,0,106, + 0,0,3,0,0,0,115,50,1,0,0,9,0,124,0,106, 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, @@ -857,7 +857,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 65,39,7,194,21,1,65,20,7,194,22,1,59,7,194,23, 1,42,7,194,24,1,14,7,114,155,0,0,0,70,169,1, 218,8,111,118,101,114,114,105,100,101,99,2,0,0,0,0, - 0,0,0,1,0,0,0,8,0,0,0,67,0,0,0,115, + 0,0,0,1,0,0,0,8,0,0,0,3,0,0,0,115, 204,1,0,0,124,2,115,10,116,0,124,1,100,1,100,0, 131,3,100,0,117,0,114,26,9,0,124,0,106,1,124,1, 95,2,110,10,35,0,4,0,116,3,121,229,1,0,1,0, @@ -920,7 +920,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 66,30,7,195,34,1,65,63,7,195,35,1,65,48,7,195, 36,1,65,22,7,195,37,1,25,7,114,161,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 67,0,0,0,115,82,0,0,0,100,1,125,1,116,0,124, + 3,0,0,0,115,82,0,0,0,100,1,125,1,116,0,124, 0,106,1,100,2,131,2,114,15,124,0,106,1,160,2,124, 0,161,1,125,1,110,10,116,0,124,0,106,1,100,3,131, 2,114,25,116,3,100,4,131,1,130,1,124,1,100,1,117, @@ -943,7 +943,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,4,3,12,1,14,3,12,1,8,1,8,2,10, 1,10,1,4,1,114,17,0,0,0,114,165,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, + 3,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, 0,114,7,100,2,110,2,124,0,106,0,125,1,124,0,106, 1,100,1,117,0,114,32,124,0,106,2,100,1,117,0,114, 25,100,3,160,3,124,1,161,1,83,0,100,4,160,3,124, @@ -961,7 +961,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,114,119,0,0,0,69,2,0,0,115,16,0,0, 0,20,3,10,1,10,1,10,1,14,2,6,2,14,1,16, 2,114,17,0,0,0,114,119,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,10,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,10,0,0,0,3,0,0,0, 115,32,1,0,0,124,0,106,0,125,2,116,1,124,2,131, 1,53,0,1,0,116,2,106,3,160,4,124,2,161,1,124, 1,117,1,114,27,100,1,160,5,124,2,161,1,125,3,116, @@ -1009,7 +1009,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 135,20,66,3,3,156,65,1,65,43,2,193,29,14,66,3, 3,193,43,15,65,58,9,193,58,1,66,3,3,194,3,4, 66,7,11,194,8,3,66,7,11,114,106,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, 0,0,0,115,22,1,0,0,9,0,124,0,106,0,160,1, 124,0,106,2,161,1,1,0,110,25,35,0,1,0,1,0, 1,0,124,0,106,2,116,3,106,4,118,0,114,32,116,3, @@ -1048,7 +1048,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 3,65,59,0,193,59,7,66,5,7,194,8,1,66,5,7, 194,9,1,65,44,7,194,10,1,65,6,7,114,172,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,11,0, - 0,0,67,0,0,0,115,248,0,0,0,124,0,106,0,100, + 0,0,3,0,0,0,115,248,0,0,0,124,0,106,0,100, 0,117,1,114,29,116,1,124,0,106,0,100,1,131,2,115, 29,116,2,124,0,106,0,131,1,155,0,100,2,157,2,125, 1,116,3,160,4,124,1,116,5,161,2,1,0,116,6,124, @@ -1086,7 +1086,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 193,15,1,65,26,7,193,16,7,65,25,13,193,23,3,65, 26,7,193,26,22,65,53,0,193,53,5,65,58,7,193,59, 1,65,25,13,114,173,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,67,0,0,0,115,58, + 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,58, 0,0,0,116,0,124,0,106,1,131,1,53,0,1,0,116, 2,124,0,131,1,2,0,100,1,4,0,4,0,131,3,1, 0,83,0,35,0,49,0,115,21,119,4,37,0,1,0,1, @@ -1109,7 +1109,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,12,9,6,1,14,255,22,128,4,0,115,12,0,0, 0,133,4,16,3,144,4,20,11,149,3,20,11,114,107,0, 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,64,0,0,0,115,140,0,0,0,101,0,90,1, + 0,0,0,0,0,0,0,115,140,0,0,0,101,0,90,1, 100,0,90,2,100,1,90,3,100,2,90,4,101,5,100,3, 100,4,132,0,131,1,90,6,101,7,100,20,100,6,100,7, 132,1,131,1,90,8,101,7,100,21,100,8,100,9,132,1, @@ -1130,7 +1130,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 32,105,110,115,116,97,110,116,105,97,116,101,32,116,104,101, 32,99,108,97,115,115,46,10,10,32,32,32,32,122,8,98, 117,105,108,116,45,105,110,99,1,0,0,0,0,0,0,0, - 0,0,0,0,5,0,0,0,67,0,0,0,115,34,0,0, + 0,0,0,0,5,0,0,0,3,0,0,0,115,34,0,0, 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,124, 0,106,3,155,2,100,3,116,4,106,5,155,0,100,4,157, 5,83,0,41,6,250,115,82,101,116,117,114,110,32,114,101, @@ -1154,7 +1154,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 6,7,2,1,4,255,22,2,114,17,0,0,0,122,27,66, 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,109, 111,100,117,108,101,95,114,101,112,114,78,99,4,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, 115,42,0,0,0,124,2,100,0,117,1,114,6,100,0,83, 0,116,0,160,1,124,1,161,1,114,19,116,2,124,1,124, 0,124,0,106,3,100,1,141,3,83,0,100,0,83,0,169, @@ -1167,7 +1167,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 8,2,4,1,10,1,16,1,4,2,114,17,0,0,0,122, 25,66,117,105,108,116,105,110,73,109,112,111,114,116,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,67,0,0,0,115, + 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,115, 42,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, 124,0,160,3,124,1,124,2,161,2,125,3,124,3,100,2, 117,1,114,19,124,3,106,4,83,0,100,2,83,0,41,3, @@ -1198,7 +1198,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, 116,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99, 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,46,0,0,0,124,0,106,0,116,1,106, + 3,0,0,0,115,46,0,0,0,124,0,106,0,116,1,106, 2,118,1,114,17,116,3,100,1,160,4,124,0,106,0,161, 1,124,0,106,0,100,2,141,2,130,1,116,5,116,6,106, 7,124,0,131,2,83,0,41,4,122,24,67,114,101,97,116, @@ -1213,7 +1213,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 122,29,66,117,105,108,116,105,110,73,109,112,111,114,116,101, 114,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 67,0,0,0,115,16,0,0,0,116,0,116,1,106,2,124, + 3,0,0,0,115,16,0,0,0,116,0,116,1,106,2,124, 0,131,2,1,0,100,1,83,0,41,2,122,22,69,120,101, 99,32,97,32,98,117,105,108,116,45,105,110,32,109,111,100, 117,108,101,78,41,3,114,75,0,0,0,114,65,0,0,0, @@ -1223,7 +1223,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,122,27,66,117,105,108,116,105,110,73,109,112,111, 114,116,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,1,0,0, - 0,67,0,0,0,243,4,0,0,0,100,1,83,0,41,2, + 0,3,0,0,0,243,4,0,0,0,100,1,83,0,41,2, 122,57,82,101,116,117,114,110,32,78,111,110,101,32,97,115, 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, 115,32,100,111,32,110,111,116,32,104,97,118,101,32,99,111, @@ -1233,7 +1233,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 111,100,101,15,3,0,0,243,2,0,0,0,4,4,114,17, 0,0,0,122,24,66,117,105,108,116,105,110,73,109,112,111, 114,116,101,114,46,103,101,116,95,99,111,100,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,67,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, 0,0,114,185,0,0,0,41,2,122,56,82,101,116,117,114, 110,32,78,111,110,101,32,97,115,32,98,117,105,108,116,45, 105,110,32,109,111,100,117,108,101,115,32,100,111,32,110,111, @@ -1244,7 +1244,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 17,0,0,0,122,26,66,117,105,108,116,105,110,73,109,112, 111,114,116,101,114,46,103,101,116,95,115,111,117,114,99,101, 99,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,67,0,0,0,114,185,0,0,0,41,3,122,52,82,101, + 0,3,0,0,0,114,185,0,0,0,41,3,122,52,82,101, 116,117,114,110,32,70,97,108,115,101,32,97,115,32,98,117, 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97, 114,101,32,110,101,118,101,114,32,112,97,99,107,97,103,101, @@ -1266,7 +1266,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 10,1,2,7,10,1,2,4,2,1,12,1,2,4,2,1, 12,1,2,4,2,1,12,1,12,4,114,17,0,0,0,114, 175,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,64,0,0,0,115,144,0,0,0,101,0, + 0,4,0,0,0,0,0,0,0,115,144,0,0,0,101,0, 90,1,100,0,90,2,100,1,90,3,100,2,90,4,101,5, 100,3,100,4,132,0,131,1,90,6,101,7,100,22,100,6, 100,7,132,1,131,1,90,8,101,7,100,23,100,8,100,9, @@ -1287,7 +1287,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 32,32,32,32,105,110,115,116,97,110,116,105,97,116,101,32, 116,104,101,32,99,108,97,115,115,46,10,10,32,32,32,32, 90,6,102,114,111,122,101,110,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,28,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,28,0, 0,0,116,0,160,1,100,1,116,2,161,2,1,0,100,2, 160,3,124,0,106,4,116,5,106,6,161,2,83,0,41,4, 114,176,0,0,0,122,80,70,114,111,122,101,110,73,109,112, @@ -1303,7 +1303,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 6,7,2,1,4,255,16,2,114,17,0,0,0,122,26,70, 114,111,122,101,110,73,109,112,111,114,116,101,114,46,109,111, 100,117,108,101,95,114,101,112,114,78,99,4,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,67,0,0,0,115, + 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, 30,0,0,0,116,0,160,1,124,1,161,1,114,13,116,2, 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, 83,0,114,178,0,0,0,41,4,114,65,0,0,0,114,98, @@ -1313,7 +1313,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 16,1,4,2,114,17,0,0,0,122,24,70,114,111,122,101, 110,73,109,112,111,114,116,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,67,0,0,0,115,30,0,0,0,116,0,160, + 4,0,0,0,3,0,0,0,115,30,0,0,0,116,0,160, 1,100,1,116,2,161,2,1,0,116,3,160,4,124,1,161, 1,114,13,124,0,83,0,100,2,83,0,41,3,122,93,70, 105,110,100,32,97,32,102,114,111,122,101,110,32,109,111,100, @@ -1336,7 +1336,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 7,2,2,4,254,18,3,114,17,0,0,0,122,26,70,114, 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,67,0,0,0,114,185,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,114,185,0, 0,0,41,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, @@ -1345,7 +1345,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,0,0,0,4,0,114,17,0,0,0,122,28,70,114,111, 122,101,110,73,109,112,111,114,116,101,114,46,99,114,101,97, 116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,67,0,0,0,115,64, + 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,64, 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, 1,161,1,115,18,116,4,100,1,160,5,124,1,161,1,124, 1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131, @@ -1361,7 +1361,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 6,255,12,2,16,1,114,17,0,0,0,122,26,70,114,111, 122,101,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,10,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,115,10,0,0, 0,116,0,124,0,124,1,131,2,83,0,41,2,122,95,76, 111,97,100,32,97,32,102,114,111,122,101,110,32,109,111,100, 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, @@ -1374,7 +1374,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 115,2,0,0,0,10,8,114,17,0,0,0,122,26,70,114, 111,122,101,110,73,109,112,111,114,116,101,114,46,108,111,97, 100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,67,0,0,0,243,10,0, + 0,0,0,0,0,3,0,0,0,3,0,0,0,243,10,0, 0,0,116,0,160,1,124,1,161,1,83,0,41,2,122,45, 82,101,116,117,114,110,32,116,104,101,32,99,111,100,101,32, 111,98,106,101,99,116,32,102,111,114,32,116,104,101,32,102, @@ -1384,7 +1384,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 100,3,0,0,243,2,0,0,0,10,4,114,17,0,0,0, 122,23,70,114,111,122,101,110,73,109,112,111,114,116,101,114, 46,103,101,116,95,99,111,100,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,67,0,0,0,114,185, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,114,185, 0,0,0,41,2,122,54,82,101,116,117,114,110,32,78,111, 110,101,32,97,115,32,102,114,111,122,101,110,32,109,111,100, 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, @@ -1394,7 +1394,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,114,17,0,0,0,122,25,70,114,111,122,101,110,73, 109,112,111,114,116,101,114,46,103,101,116,95,115,111,117,114, 99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,114,198,0,0,0,41,2,122,46, + 0,0,0,3,0,0,0,114,198,0,0,0,41,2,122,46, 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116, 104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,101, 32,105,115,32,97,32,112,97,99,107,97,103,101,46,78,41, @@ -1416,14 +1416,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,8,10,1,2,9,2,1,12,1,2,4,2,1,12,1, 2,4,2,1,16,1,114,17,0,0,0,114,193,0,0,0, 99,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, + 0,0,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,83,0,41,7,218,18,95,73, 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, 122,36,67,111,110,116,101,120,116,32,109,97,110,97,103,101, 114,32,102,111,114,32,116,104,101,32,105,109,112,111,114,116, 32,108,111,99,107,46,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,67,0,0,0,243,12,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,243,12,0,0,0, 116,0,160,1,161,0,1,0,100,1,83,0,41,2,122,24, 65,99,113,117,105,114,101,32,116,104,101,32,105,109,112,111, 114,116,32,108,111,99,107,46,78,41,2,114,65,0,0,0, @@ -1432,7 +1432,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,12,2,114,17,0,0,0,122,28,95,73,109,112, 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, 95,101,110,116,101,114,95,95,99,4,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,67,0,0,0,114,201,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,114,201,0, 0,0,41,2,122,60,82,101,108,101,97,115,101,32,116,104, 101,32,105,109,112,111,114,116,32,108,111,99,107,32,114,101, 103,97,114,100,108,101,115,115,32,111,102,32,97,110,121,32, @@ -1450,7 +1450,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,114,5,0,0,0,114,200,0,0,0,121,3,0, 0,115,8,0,0,0,8,0,4,2,8,2,12,4,114,17, 0,0,0,114,200,0,0,0,99,3,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,64,0, + 0,0,0,0,0,5,0,0,0,3,0,0,0,115,64,0, 0,0,124,1,160,0,100,1,124,2,100,2,24,0,161,2, 125,3,116,1,124,3,131,1,124,2,107,0,114,18,116,2, 100,3,131,1,130,1,124,3,100,4,25,0,125,4,124,0, @@ -1471,7 +1471,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 95,114,101,115,111,108,118,101,95,110,97,109,101,134,3,0, 0,115,10,0,0,0,16,2,12,1,8,1,8,1,20,1, 114,17,0,0,0,114,211,0,0,0,99,3,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,67,0,0,0,115, + 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,115, 60,0,0,0,116,0,124,0,131,1,155,0,100,1,157,2, 125,3,116,1,160,2,124,3,116,3,161,2,1,0,124,0, 160,4,124,1,124,2,161,2,125,4,124,4,100,0,117,0, @@ -1488,7 +1488,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, - 0,0,0,0,0,0,10,0,0,0,67,0,0,0,115,30, + 0,0,0,0,0,0,10,0,0,0,3,0,0,0,115,30, 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, @@ -1534,7 +1534,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 4,65,16,13,193,17,3,65,16,13,193,40,3,65,44,2, 193,44,9,65,57,9,194,13,1,65,57,9,194,14,1,63, 11,114,215,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,67,0,0,0,115,110,0,0,0, + 0,0,0,5,0,0,0,3,0,0,0,115,110,0,0,0, 116,0,124,0,116,1,131,2,115,14,116,2,100,1,160,3, 116,4,124,0,131,1,161,1,131,1,130,1,124,2,100,2, 107,0,114,22,116,5,100,3,131,1,130,1,124,2,100,2, @@ -1565,7 +1565,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 8,1,4,1,8,1,12,2,8,1,8,255,114,17,0,0, 0,114,221,0,0,0,122,16,78,111,32,109,111,100,117,108, 101,32,110,97,109,101,100,32,122,4,123,33,114,125,99,2, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, 0,0,0,115,20,1,0,0,100,0,125,2,124,0,160,0, 100,1,161,1,100,2,25,0,125,3,124,3,114,64,124,3, 116,1,106,2,118,1,114,21,116,3,124,1,124,3,131,2, @@ -1611,7 +1611,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 169,22,63,7,193,37,6,65,45,0,193,45,21,66,5,7, 194,8,1,66,5,7,194,9,1,63,7,114,226,0,0,0, 99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,67,0,0,0,115,132,0,0,0,116,0,124,0,131,1, + 0,3,0,0,0,115,132,0,0,0,116,0,124,0,131,1, 53,0,1,0,116,1,106,2,160,3,124,0,116,4,161,2, 125,2,124,2,116,4,117,0,114,27,116,5,124,0,124,1, 131,2,2,0,100,1,4,0,4,0,131,3,1,0,83,0, @@ -1636,7 +1636,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 22,128,8,5,2,1,6,1,2,255,12,2,8,2,4,1, 115,12,0,0,0,132,16,34,3,162,4,38,11,167,3,38, 11,114,228,0,0,0,114,26,0,0,0,99,3,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, 115,42,0,0,0,116,0,124,0,124,1,124,2,131,3,1, 0,124,2,100,1,107,4,114,16,116,1,124,0,124,1,124, 2,131,3,125,0,116,2,124,0,116,3,131,2,83,0,41, @@ -1666,7 +1666,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,14,4,0,0,115,8,0,0,0,12,9,8,1, 12,1,10,1,114,17,0,0,0,114,229,0,0,0,169,1, 218,9,114,101,99,117,114,115,105,118,101,99,3,0,0,0, - 0,0,0,0,1,0,0,0,9,0,0,0,67,0,0,0, + 0,0,0,0,1,0,0,0,9,0,0,0,3,0,0,0, 115,216,0,0,0,124,1,68,0,93,102,125,4,116,0,124, 4,116,1,131,2,115,32,124,3,114,17,124,0,106,2,100, 1,23,0,125,5,110,2,100,2,125,5,116,3,100,3,124, @@ -1719,7 +1719,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,193,2,5,65,8,2,193,8,7,65,39,9,193,15,14, 65,35,9,193,34,1,65,35,9,193,35,4,65,39,9,193, 43,1,65,39,9,114,234,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,7,0,0,0,67,0,0,0,115, + 0,0,0,0,0,0,0,7,0,0,0,3,0,0,0,115, 146,0,0,0,124,0,160,0,100,1,161,1,125,1,124,0, 160,0,100,2,161,1,125,2,124,1,100,3,117,1,114,41, 124,2,100,3,117,1,114,39,124,1,124,2,106,1,107,3, @@ -1762,7 +1762,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,6,1,6,2,4,2,6,254,8,3,8,1,14,1,4, 1,114,17,0,0,0,114,240,0,0,0,114,23,0,0,0, 99,5,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,174,0,0,0,124,4,100,1,107,2, + 0,3,0,0,0,115,174,0,0,0,124,4,100,1,107,2, 114,9,116,0,124,0,131,1,125,5,110,18,124,1,100,2, 117,1,114,15,124,1,110,1,105,0,125,6,116,1,124,6, 131,1,125,7,116,0,124,0,124,7,124,4,131,3,125,5, @@ -1817,7 +1817,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 10,1,16,2,8,1,12,1,4,1,8,3,18,1,4,1, 4,1,26,4,30,3,10,1,12,1,4,2,114,17,0,0, 0,114,243,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,115,38,0,0,0, 116,0,160,1,124,0,161,1,125,1,124,1,100,0,117,0, 114,15,116,2,100,1,124,0,23,0,131,1,130,1,116,3, 124,1,131,1,83,0,41,2,78,122,25,110,111,32,98,117, @@ -1829,7 +1829,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 109,95,110,97,109,101,130,4,0,0,115,8,0,0,0,10, 1,8,1,12,1,8,1,114,17,0,0,0,114,244,0,0, 0,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,67,0,0,0,115,166,0,0,0,124,1,97,0,124, + 0,0,3,0,0,0,115,166,0,0,0,124,1,97,0,124, 0,97,1,116,2,116,1,131,1,125,2,116,1,106,3,160, 4,161,0,68,0,93,36,92,2,125,3,125,4,116,5,124, 4,124,2,131,2,114,49,124,3,116,1,106,6,118,0,114, @@ -1874,7 +1874,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 8,3,18,1,10,1,10,1,6,1,10,1,6,1,2,2, 10,1,10,1,2,128,10,3,8,1,10,1,10,1,10,2, 14,1,4,251,114,17,0,0,0,114,248,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, 0,0,0,115,38,0,0,0,116,0,124,0,124,1,131,2, 1,0,116,1,106,2,160,3,116,4,161,1,1,0,116,1, 106,2,160,3,116,5,161,1,1,0,100,1,83,0,41,2, @@ -1887,7 +1887,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,0,0,0,32,32,114,5,0,0,0,218,8,95,105,110, 115,116,97,108,108,172,4,0,0,115,6,0,0,0,10,2, 12,2,16,1,114,17,0,0,0,114,249,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, 0,0,0,115,32,0,0,0,100,1,100,2,108,0,125,0, 124,0,97,1,124,0,160,2,116,3,106,4,116,5,25,0, 161,1,1,0,100,2,83,0,41,3,122,57,73,110,115,116, diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 92a14851a14ca..30f731a756f1b 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,5,0,0, - 0,64,0,0,0,115,250,2,0,0,100,0,90,0,100,1, + 0,0,0,0,0,115,250,2,0,0,100,0,90,0,100,1, 97,1,100,2,100,1,108,2,90,2,100,2,100,1,108,3, 90,3,100,2,100,1,108,4,90,4,100,2,100,1,108,5, 90,5,100,2,100,1,108,6,90,6,101,4,106,7,100,3, @@ -73,7 +73,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,78,233,0,0,0,0,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,3,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,35,0,0, 0,115,28,0,0,0,129,0,124,0,93,9,125,1,116,0, 124,1,131,1,100,0,107,2,86,0,1,0,113,2,100,1, 83,0,41,2,233,1,0,0,0,78,41,1,218,3,108,101, @@ -84,7 +84,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,101,120,112,114,62,46,0,0,0,115,4,0,0,0,2, 128,26,0,243,0,0,0,0,114,8,0,0,0,218,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,22,0,0,0,104,0,124,0,93,7,125, + 3,0,0,0,115,22,0,0,0,104,0,124,0,93,7,125, 1,100,0,124,1,155,0,157,2,146,2,113,2,83,0,41, 1,250,1,58,169,0,41,2,114,5,0,0,0,218,1,115, 115,2,0,0,0,32,32,114,7,0,0,0,218,9,60,115, @@ -117,7 +117,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,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,1,0,0,0,83,0,0,0,243,4,0, + 0,0,0,0,0,1,0,0,0,19,0,0,0,243,4,0, 0,0,100,1,83,0,41,3,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, @@ -136,7 +136,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,115,101,60,0,0,0,115,18,0,0,0,2,128,12,1, 12,1,6,1,4,2,12,2,4,7,8,253,4,3,114,9, 0,0,0,114,30,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,67,0,0,0,115,20,0, + 0,0,0,0,0,4,0,0,0,3,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,5,122,42,67,111,110,118,101,114, 116,32,97,32,51,50,45,98,105,116,32,105,110,116,101,103, @@ -148,7 +148,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,112,97,99,107,95,117,105,110,116,51,50,79,0,0,0, 114,23,0,0,0,114,9,0,0,0,114,37,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,243,28,0,0,0,116,0,124,0,131,1,100, + 3,0,0,0,243,28,0,0,0,116,0,124,0,131,1,100, 1,107,2,115,8,74,0,130,1,116,1,160,2,124,0,100, 2,161,2,83,0,41,4,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, @@ -160,7 +160,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,117,110,112,97,99,107,95,117,105,110,116,51,50,84,0, 0,0,243,4,0,0,0,16,2,12,1,114,9,0,0,0, 114,43,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,67,0,0,0,114,38,0,0,0,41, + 0,0,4,0,0,0,3,0,0,0,114,38,0,0,0,41, 4,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, @@ -169,7 +169,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,218,14,95,117,110,112,97,99,107,95,117,105,110,116, 49,54,89,0,0,0,114,44,0,0,0,114,9,0,0,0, 114,46,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,71,0,0,0,115,228,0,0,0,124, + 0,0,4,0,0,0,7,0,0,0,115,228,0,0,0,124, 0,115,4,100,1,83,0,116,0,124,0,131,1,100,2,107, 2,114,14,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, @@ -188,7 +188,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,116,32,102,111,114,32,111,115,46,112,97,116,104,46,106, 111,105,110,40,41,46,114,10,0,0,0,114,3,0,0,0, 114,0,0,0,0,114,11,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,83,0,0,0,243, + 0,0,0,0,0,0,0,5,0,0,0,19,0,0,0,243, 26,0,0,0,103,0,124,0,93,9,125,1,124,1,114,2, 124,1,160,0,116,1,161,1,145,2,113,2,83,0,114,12, 0,0,0,169,2,218,6,114,115,116,114,105,112,218,15,112, @@ -214,10 +214,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 10,1,16,1,4,3,8,1,12,2,8,2,12,1,14,1, 20,1,8,2,14,1,114,9,0,0,0,114,67,0,0,0, 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,71,0,0,0,115,20,0,0,0,116,0,160,1,100,1, + 0,7,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,4, 114,47,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,83,0,0,0,114,48,0,0,0,114, + 0,0,5,0,0,0,19,0,0,0,114,48,0,0,0,114, 12,0,0,0,114,49,0,0,0,41,2,114,5,0,0,0, 218,4,112,97,114,116,115,2,0,0,0,32,32,114,7,0, 0,0,114,53,0,0,0,128,0,0,0,115,6,0,0,0, @@ -249,7 +249,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, 1,114,9,0,0,0,114,73,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, 115,10,0,0,0,116,0,160,1,124,0,161,1,83,0,41, 2,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, @@ -264,7 +264,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,218,10,95,112,97,116,104,95,115,116,97,116,140,0,0, 0,115,2,0,0,0,10,7,114,9,0,0,0,114,75,0, 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,50,0,0,0,9,0,116,0, + 0,0,0,3,0,0,0,115,50,0,0,0,9,0,116,0, 124,0,131,1,125,2,110,11,35,0,4,0,116,1,121,24, 1,0,1,0,1,0,89,0,100,1,83,0,37,0,124,2, 106,2,100,2,64,0,124,1,107,2,83,0,119,0,41,4, @@ -280,7 +280,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,16,0,0,0,2,2,10,1,2,128,12,1,6,1,2, 128,14,1,2,254,115,12,0,0,0,129,4,6,0,134,7, 16,7,152,1,16,7,114,79,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, 115,10,0,0,0,116,0,124,0,100,1,131,2,83,0,41, 3,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, @@ -289,7 +289,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 12,95,112,97,116,104,95,105,115,102,105,108,101,159,0,0, 0,243,2,0,0,0,10,2,114,9,0,0,0,114,80,0, 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,115,22,0,0,0,124,0,115,6, + 0,0,0,3,0,0,0,115,22,0,0,0,124,0,115,6, 116,0,160,1,161,0,125,0,116,2,124,0,100,1,131,2, 83,0,41,3,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, @@ -299,7 +299,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,112,97,116,104,95,105,115,100,105,114,164,0,0,0,115, 6,0,0,0,4,2,8,1,10,1,114,9,0,0,0,114, 83,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,62,0,0,0,124,0, + 0,4,0,0,0,3,0,0,0,115,62,0,0,0,124,0, 115,4,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,30,124,1,160,4,100,6,161,1, @@ -314,13 +314,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 7,0,0,0,218,11,95,112,97,116,104,95,105,115,97,98, 115,172,0,0,0,115,8,0,0,0,4,2,4,1,22,1, 32,1,114,9,0,0,0,114,86,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, 0,115,10,0,0,0,124,0,160,0,116,1,161,1,83,0, 41,2,114,84,0,0,0,78,41,2,114,27,0,0,0,114, 51,0,0,0,114,74,0,0,0,115,1,0,0,0,32,114, 7,0,0,0,114,86,0,0,0,180,0,0,0,114,81,0, 0,0,114,9,0,0,0,233,182,1,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,11,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,11,0,0,0,3,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, @@ -367,7 +367,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,101,95,95,122,4,111,112,116,45,122,3,46,112,121,122, 4,46,112,121,119,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,5,0,0,0,67,0,0,0, + 0,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0, 115,80,1,0,0,124,1,100,1,117,1,114,26,116,0,160, 1,100,2,116,2,161,2,1,0,124,2,100,1,117,1,114, 20,100,3,125,3,116,3,124,3,131,1,130,1,124,1,114, @@ -483,7 +483,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,67,0,0,0,115,40,1, + 0,0,0,0,0,5,0,0,0,3,0,0,0,115,40,1, 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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, @@ -564,7 +564,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 8,1,16,1,10,1,4,1,2,1,8,255,16,2,8,1, 16,1,14,2,18,1,114,9,0,0,0,114,128,0,0,0, 99,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,67,0,0,0,115,126,0,0,0,116,0,124,0,131,1, + 0,3,0,0,0,115,126,0,0,0,116,0,124,0,131,1, 100,1,107,2,114,8,100,2,83,0,124,0,160,1,100,3, 161,1,92,3,125,1,125,2,125,3,124,1,114,28,124,3, 160,2,161,0,100,4,100,5,133,2,25,0,100,6,107,3, @@ -598,7 +598,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 2,128,16,1,16,1,2,128,16,1,2,254,115,12,0,0, 0,159,4,36,0,164,15,53,7,190,1,53,7,114,135,0, 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,70,0,0,0,124,0,160,0, + 0,0,0,3,0,0,0,115,70,0,0,0,124,0,160,0, 116,1,116,2,131,1,161,1,114,23,9,0,116,3,124,0, 131,1,83,0,35,0,4,0,116,4,121,34,1,0,1,0, 1,0,89,0,100,0,83,0,37,0,124,0,160,0,116,1, @@ -611,7 +611,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,14,1,2,1,8,1,2,128,12,1,6,1,2,128,14, 1,4,1,4,2,2,251,115,12,0,0,0,136,3,12,0, 140,7,22,7,162,1,22,7,114,137,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,67,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,3,0, 0,0,115,52,0,0,0,9,0,116,0,124,0,131,1,106, 1,125,1,110,12,35,0,4,0,116,2,121,25,1,0,1, 0,1,0,100,1,125,1,89,0,110,1,37,0,124,1,100, @@ -667,7 +667,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0,0,0,83,0,0,0,115,56,0, + 0,0,0,0,0,7,0,0,0,19,0,0,0,115,56,0, 0,0,100,1,68,0,93,16,125,2,116,0,124,1,124,2, 131,2,114,18,116,1,124,0,124,2,116,2,124,1,124,2, 131,2,131,3,1,0,113,2,124,0,106,3,160,4,124,1, @@ -690,7 +690,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,107,95,110,97,109,101,30,2,0,0,115,14,0,0,0, 2,128,14,8,8,10,8,1,8,2,10,6,4,1,114,9, 0,0,0,114,159,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,67,0,0,0,115,72,0, + 0,0,0,0,0,6,0,0,0,3,0,0,0,115,72,0, 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, 160,3,124,1,161,1,92,2,125,2,125,3,124,2,100,2, 117,0,114,34,116,4,124,3,131,1,114,34,100,3,125,4, @@ -725,7 +725,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,100,117,108,101,95,115,104,105,109,61,2,0,0,115,16, 0,0,0,6,7,2,2,4,254,14,6,16,1,4,1,22, 1,4,1,114,9,0,0,0,114,166,0,0,0,99,3,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,67,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,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,32,100,3,124,1,155, 2,100,4,124,3,155,2,157,4,125,4,116,1,160,2,100, @@ -794,7 +794,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,16,1,12,1,16,1,12,1,10,1,12,1,8,1,16, 1,8,2,16,1,16,1,4,1,114,9,0,0,0,114,175, 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,67,0,0,0,115,124,0,0,0,116,0,124, + 4,0,0,0,3,0,0,0,115,124,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,31,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, @@ -848,7 +848,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,116,97,109,112,95,112,121,99,114,2,0,0,115,18,0, 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, 0,0,0,115,42,0,0,0,124,0,100,1,100,2,133,2, 25,0,124,1,107,3,114,19,116,0,100,3,124,2,155,2, 157,2,102,1,105,0,124,3,164,1,142,1,130,1,100,4, @@ -895,7 +895,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,115,14,0,0,0,16,17,2,1,8,1,4,255,2, 2,6,254,4,255,114,9,0,0,0,114,181,0,0,0,99, 4,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 67,0,0,0,115,76,0,0,0,116,0,160,1,124,0,161, + 3,0,0,0,115,76,0,0,0,116,0,160,1,124,0,161, 1,125,4,116,2,124,4,116,3,131,2,114,28,116,4,160, 5,100,1,124,2,161,2,1,0,124,3,100,2,117,1,114, 26,116,6,160,7,124,4,124,3,161,2,1,0,124,4,83, @@ -919,7 +919,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,18,0,0,0,10,2,10,1,12,1,8,1,12,1, 4,1,10,2,4,1,6,255,114,9,0,0,0,114,188,0, 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,67,0,0,0,115,70,0,0,0,116,0,116,1, + 0,0,0,3,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, @@ -937,7 +937,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 179,2,0,0,115,12,0,0,0,8,2,14,1,14,1,14, 1,16,1,4,1,114,9,0,0,0,114,193,0,0,0,84, 99,3,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,67,0,0,0,115,80,0,0,0,116,0,116,1,131,1, + 0,3,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,25,74,0,130,1,124,3,160,2, @@ -955,7 +955,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,95,112,121,99,189,2,0,0,115,14,0,0,0,8,2, 12,1,14,1,16,1,10,1,16,1,4,1,114,9,0,0, 0,114,194,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,6,0,0,0,67,0,0,0,115,62,0,0,0, + 0,0,0,6,0,0,0,3,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, @@ -985,7 +985,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,8,0,0,0, - 67,0,0,0,115,60,1,0,0,124,1,100,1,117,0,114, + 3,0,0,0,115,60,1,0,0,124,1,100,1,117,0,114, 29,100,2,125,1,116,0,124,2,100,3,131,2,114,28,9, 0,124,2,160,1,124,0,161,1,125,1,110,39,35,0,4, 0,116,2,121,157,1,0,1,0,1,0,89,0,110,30,37, @@ -1056,7 +1056,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 27,7,167,7,47,0,175,7,56,7,193,45,5,65,51,0, 193,51,7,65,60,7,194,27,1,65,60,7,194,28,1,56, 7,194,29,1,27,7,114,212,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, 115,88,0,0,0,101,0,90,1,100,0,90,2,100,1,90, 3,100,2,90,4,100,3,90,5,101,6,111,15,100,4,101, 7,118,0,90,8,101,9,100,5,100,6,132,0,131,1,90, @@ -1077,7 +1077,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,122,6,95,100,46,112,121,100,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, 0,0,0,115,52,0,0,0,9,0,116,0,160,1,116,0, 106,2,124,0,161,2,83,0,35,0,4,0,116,3,121,25, 1,0,1,0,1,0,116,0,160,1,116,0,106,4,124,0, @@ -1093,7 +1093,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 136,14,24,7,153,1,24,7,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,9,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,3, 0,0,0,115,136,0,0,0,124,0,106,0,114,7,124,0, 106,1,125,2,110,3,124,0,106,2,125,2,124,2,160,3, 124,1,100,1,116,4,106,5,100,0,100,2,133,2,25,0, @@ -1125,7 +1125,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,65,2,7,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,67,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,3,0, 0,0,115,122,0,0,0,124,0,160,0,124,1,161,1,125, 4,124,4,100,0,117,0,114,11,100,0,83,0,9,0,116, 1,124,4,131,1,1,0,110,11,35,0,4,0,116,2,121, @@ -1149,7 +1149,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 17,0,145,7,27,7,188,1,27,7,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,67,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, 115,42,0,0,0,116,0,160,1,100,1,116,2,161,2,1, 0,124,0,160,3,124,1,124,2,161,2,125,3,124,3,100, 2,117,1,114,19,124,3,106,4,83,0,100,2,83,0,41, @@ -1188,7 +1188,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,30,0,0,0,8,0,4,2,2,3,2,255,2,4, 2,255,12,3,2,2,10,1,2,6,10,1,2,14,12,1, 2,15,16,1,114,9,0,0,0,114,213,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, 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, @@ -1199,7 +1199,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,4,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, 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, @@ -1224,7 +1224,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,8,0,0,0,18,3,16,1,14,1,16,1,114,9, 0,0,0,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,1,0,0,0,67,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, 0,0,114,24,0,0,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, @@ -1235,7 +1235,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,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,5,0,0,0, - 67,0,0,0,115,56,0,0,0,124,0,160,0,124,1,106, + 3,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,18,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, @@ -1255,7 +1255,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,1,8,1,4,255,20,2,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,12,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,12,0, 0,0,116,0,160,1,124,0,124,1,161,2,83,0,41,2, 122,26,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,78,41,2,114, @@ -1272,14 +1272,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,234,0,0,0,101,3,0,0,115,12,0,0,0,8, 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, 114,234,0,0,0,99,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,0,3,0,0,0,0,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,1,0,0,0,67,0,0,0,115,4, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,115,4, 0,0,0,116,0,130,1,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, @@ -1297,7 +1297,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,2,0,0,0,4,6,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,14,0,0,0,100, + 0,0,4,0,0,0,3,0,0,0,115,14,0,0,0,100, 1,124,0,160,0,124,1,161,1,105,1,83,0,41,3,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, @@ -1331,7 +1331,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,2,0,0,0,14,12,114,9,0,0,0,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,67,0,0,0,115,12,0,0,0,124, + 0,0,4,0,0,0,3,0,0,0,115,12,0,0,0,124, 0,160,0,124,2,124,3,161,2,83,0,41,2,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, @@ -1355,7 +1355,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114, + 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,114, 24,0,0,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, @@ -1371,7 +1371,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,252,0,0,0,165,3,0,0,114,239,0,0,0, 114,9,0,0,0,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,8,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0, 0,115,70,0,0,0,124,0,160,0,124,1,161,1,125,2, 9,0,124,0,160,1,124,2,161,1,125,3,116,4,124,3, 131,1,83,0,35,0,4,0,116,2,121,34,1,0,125,4, @@ -1396,7 +1396,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,101,114,46,103,101,116,95,115,111,117,114,99,101,114,130, 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,9,0,0, - 0,67,0,0,0,115,22,0,0,0,116,0,160,1,116,2, + 0,3,0,0,0,115,22,0,0,0,116,0,160,1,116,2, 124,1,124,2,100,1,100,2,124,3,100,3,166,6,83,0, 41,5,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, @@ -1416,7 +1416,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 6,0,0,0,12,5,4,1,6,255,114,9,0,0,0,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,9,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,9,0,0,0,3,0,0, 0,115,28,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,9,0,116,1,124,2,131,1,125,8,110,13, @@ -1532,7 +1532,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,2,0,0,0,67,0,0,0,115,16,0,0,0,124,1, + 0,2,0,0,0,3,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, @@ -1544,7 +1544,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,235,0,0,0,24,4,0,0,115,4,0,0,0,6, 3,10,1,114,9,0,0,0,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,67,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, 0,0,243,24,0,0,0,124,0,106,0,124,1,106,0,107, 2,111,11,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, @@ -1554,7 +1554,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,12,1,10,1,2,255,114,9,0,0,0,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,3,0,0,0, - 67,0,0,0,243,20,0,0,0,116,0,124,0,106,1,131, + 3,0,0,0,243,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,141,0,0,0,114, 65,0,0,0,169,1,114,143,0,0,0,115,1,0,0,0, @@ -1577,7 +1577,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,115,2,0,0,0,16,10,114,9,0,0,0,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,1,0,0,0,67,0,0,0,243,6,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,243,6,0,0,0, 124,0,106,0,83,0,169,2,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, @@ -1587,7 +1587,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 49,4,0,0,243,2,0,0,0,6,3,114,9,0,0,0, 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,9,0,0,0,67,0,0,0,115,136, + 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,136, 0,0,0,116,0,124,0,116,1,116,2,102,2,131,2,114, 38,116,3,160,4,116,5,124,1,131,1,161,1,53,0,125, 2,124,2,160,6,161,0,2,0,100,1,4,0,4,0,131, @@ -1612,7 +1612,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 55,3,183,4,59,11,188,3,59,11,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, - 67,0,0,0,115,20,0,0,0,100,1,100,2,108,0,109, + 3,0,0,0,115,20,0,0,0,100,1,100,2,108,0,109, 1,125,2,1,0,124,2,124,0,131,1,83,0,41,3,78, 114,0,0,0,0,41,1,218,10,70,105,108,101,82,101,97, 100,101,114,41,2,218,17,105,109,112,111,114,116,108,105,98, @@ -1633,7 +1633,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 128,4,2,8,3,8,6,8,4,2,3,14,1,2,11,10, 1,8,4,2,9,18,1,114,9,0,0,0,114,10,1,0, 0,99,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,0,0,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, @@ -1642,7 +1642,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,67,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,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,3,122, 33,82,101,116,117,114,110,32,116,104,101,32,109,101,116,97, @@ -1655,7 +1655,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,4,0,0,0,8,2,14,1,114,9,0,0,0,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,6,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0, 115,24,0,0,0,116,0,124,1,131,1,125,4,124,0,160, 1,124,2,124,3,124,4,100,1,166,3,83,0,41,2,78, 169,1,218,5,95,109,111,100,101,41,2,114,139,0,0,0, @@ -1667,7 +1667,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,87,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,67,0,0,0,115,250,0,0,0,116,0,124,1, + 0,0,0,3,0,0,0,115,250,0,0,0,116,0,124,1, 131,1,92,2,125,4,125,5,103,0,125,6,124,4,114,31, 116,1,124,4,131,1,115,31,116,0,124,4,131,1,92,2, 125,4,125,7,124,6,160,2,124,7,161,1,1,0,124,4, @@ -1714,7 +1714,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 7,0,0,0,114,32,1,0,0,69,4,0,0,115,10,0, 0,0,8,0,4,2,8,2,8,5,18,5,114,9,0,0, 0,114,32,1,0,0,99,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,2,0,0,0,0,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,83,0, 41,7,218,20,83,111,117,114,99,101,108,101,115,115,70,105, @@ -1722,7 +1722,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,67,0,0,0,115,68,0,0, + 0,0,0,0,5,0,0,0,3,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, @@ -1738,7 +1738,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,2,1,2,1,6,253,114,9,0,0,0,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,1,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, 114,24,0,0,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, @@ -1752,7 +1752,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,9,0,0,0,114,7,0,0,0,114,39,1,0,0, 114,4,0,0,115,8,0,0,0,8,0,4,2,8,2,12, 16,114,9,0,0,0,114,39,1,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,0,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, @@ -1766,7 +1766,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,2,0,0,0,67,0,0,0,115,16,0,0, + 0,0,0,0,2,0,0,0,3,0,0,0,115,16,0,0, 0,124,1,124,0,95,0,124,2,124,0,95,1,100,0,83, 0,114,69,0,0,0,114,182,0,0,0,41,3,114,143,0, 0,0,114,141,0,0,0,114,65,0,0,0,115,3,0,0, @@ -1774,20 +1774,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,115,4,0,0,0,6,1,10,1,114,9,0,0,0, 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,67, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, 0,0,0,114,11,1,0,0,114,69,0,0,0,114,12,1, 0,0,114,14,1,0,0,115,2,0,0,0,32,32,114,7, 0,0,0,114,15,1,0,0,151,4,0,0,114,16,1,0, 0,114,9,0,0,0,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,3, - 0,0,0,67,0,0,0,114,17,1,0,0,114,69,0,0, + 0,0,0,3,0,0,0,114,17,1,0,0,114,69,0,0, 0,114,18,1,0,0,114,20,1,0,0,115,1,0,0,0, 32,114,7,0,0,0,114,21,1,0,0,155,4,0,0,114, 22,1,0,0,114,9,0,0,0,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,5,0,0,0,67,0,0,0,115,36,0,0, + 0,0,0,0,5,0,0,0,3,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,3,122,40,67,114,101,97,116,101,32, @@ -1805,7 +1805,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,255,4,2,114,9,0,0,0,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,5,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,3,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, @@ -1848,7 +1848,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,67,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, 0,0,114,24,0,0,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, @@ -1859,7 +1859,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 9,0,0,0,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,1, - 0,0,0,67,0,0,0,114,24,0,0,0,41,2,122,53, + 0,0,0,3,0,0,0,114,24,0,0,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, @@ -1869,7 +1869,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,1,0,0,0, - 67,0,0,0,114,24,1,0,0,114,25,1,0,0,114,74, + 3,0,0,0,114,24,1,0,0,114,25,1,0,0,114,74, 0,0,0,114,246,0,0,0,115,2,0,0,0,32,32,114, 7,0,0,0,114,202,0,0,0,186,4,0,0,114,26,1, 0,0,114,9,0,0,0,122,32,69,120,116,101,110,115,105, @@ -1884,7 +1884,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, 6,8,4,2,4,14,1,114,9,0,0,0,114,28,1,0, 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,64,0,0,0,115,104,0,0,0,101,0,90,1,100, + 0,0,0,0,0,0,115,104,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, @@ -1912,7 +1912,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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, 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,67,0,0,0,115,36,0,0,0,124,1,124,0,95,0, + 0,3,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69, 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, @@ -1926,7 +1926,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,8,0,0,0,6,1,6,1,14,1,10,1,114,9,0, 0,0,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,3,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,3,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,15,100, 3,83,0,124,1,100,4,102,2,83,0,41,6,122,62,82, @@ -1945,7 +1945,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,67,0,0,0,115,28,0,0,0,124,0, + 0,3,0,0,0,3,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,52,1,0,0,114,154,0,0,0,114,16,0,0,0, @@ -1957,7 +1957,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,16,1,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,80, + 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,80, 0,0,0,116,0,124,0,160,1,161,0,131,1,125,1,124, 1,124,0,106,2,107,3,114,37,124,0,160,3,124,0,106, 4,124,1,161,2,125,2,124,2,100,0,117,1,114,34,124, @@ -1974,14 +1974,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 9,0,0,0,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,3,0, - 0,0,67,0,0,0,243,12,0,0,0,116,0,124,0,160, + 0,0,3,0,0,0,243,12,0,0,0,116,0,124,0,160, 1,161,0,131,1,83,0,114,69,0,0,0,41,2,218,4, 105,116,101,114,114,54,1,0,0,114,20,1,0,0,115,1, 0,0,0,32,114,7,0,0,0,218,8,95,95,105,116,101, 114,95,95,232,4,0,0,243,2,0,0,0,12,1,114,9, 0,0,0,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,67,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,3,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,54,1,0,0,41,2, 114,143,0,0,0,218,5,105,110,100,101,120,115,2,0,0, @@ -1990,7 +1990,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,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, - 67,0,0,0,115,14,0,0,0,124,2,124,0,106,0,124, + 3,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,46, 1,0,0,41,3,114,143,0,0,0,114,60,1,0,0,114, 65,0,0,0,115,3,0,0,0,32,32,32,114,7,0,0, @@ -1998,14 +1998,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,115,2,0,0,0,14,1,114,9,0,0,0,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,3,0,0,0,67,0,0,0,114, + 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,114, 55,1,0,0,114,69,0,0,0,41,2,114,4,0,0,0, 114,54,1,0,0,114,20,1,0,0,115,1,0,0,0,32, 114,7,0,0,0,218,7,95,95,108,101,110,95,95,241,4, 0,0,114,58,1,0,0,114,9,0,0,0,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,3,0,0,0,67,0,0,0,243,12,0,0,0,100,1, + 0,3,0,0,0,3,0,0,0,243,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,89,0,0,0,114,46,1,0,0,114, @@ -2014,7 +2014,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,9,0,0,0,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,3,0,0, - 0,67,0,0,0,115,12,0,0,0,124,1,124,0,160,0, + 0,3,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,143,0,0,0,218,4,105,116,101,109,115,2,0, 0,0,32,32,114,7,0,0,0,218,12,95,95,99,111,110, @@ -2022,7 +2022,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,9,0,0,0,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,3, - 0,0,0,67,0,0,0,115,16,0,0,0,124,0,106,0, + 0,0,0,3,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,46,1,0,0,114,61,0,0,0,114,66,1, 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,61, @@ -2038,7 +2038,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, + 0,0,0,0,0,0,3,0,0,0,0,0,0,0,115,88, 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, @@ -2047,7 +2047,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 17,100,18,132,0,90,12,100,19,83,0,41,20,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, - 67,0,0,0,115,18,0,0,0,116,0,124,1,124,2,124, + 3,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,44,1,0,0,114,46,1,0,0,114,50,1,0, 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,114, @@ -2055,7 +2055,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 9,0,0,0,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, 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,24,0,0,0,116,0,160,1,100,1,116, + 3,0,0,0,115,24,0,0,0,116,0,160,1,100,1,116, 2,161,2,1,0,100,2,160,3,124,0,106,4,161,1,83, 0,41,4,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, @@ -2079,20 +2079,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 255,12,2,114,9,0,0,0,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,1,0,0,0,67,0,0,0,114,24,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,114,24,0,0,0, 41,2,78,84,114,12,0,0,0,114,246,0,0,0,115,2, 0,0,0,32,32,114,7,0,0,0,114,205,0,0,0,14, 5,0,0,243,2,0,0,0,4,1,114,9,0,0,0,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,1,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, 0,114,24,0,0,0,41,2,78,114,10,0,0,0,114,12, 0,0,0,114,246,0,0,0,115,2,0,0,0,32,32,114, 7,0,0,0,114,0,1,0,0,17,5,0,0,114,72,1, 0,0,114,9,0,0,0,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,6,0,0,0,67,0,0,0,115,16,0,0,0,116,0, + 0,6,0,0,0,3,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,10,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, @@ -2101,20 +2101,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,114,9,0,0,0,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, - 1,0,0,0,67,0,0,0,114,24,0,0,0,114,236,0, + 1,0,0,0,3,0,0,0,114,24,0,0,0,114,236,0, 0,0,114,12,0,0,0,114,237,0,0,0,115,2,0,0, 0,32,32,114,7,0,0,0,114,238,0,0,0,23,5,0, 0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, 115,4,0,0,0,100,0,83,0,114,69,0,0,0,114,12, 0,0,0,114,40,1,0,0,115,2,0,0,0,32,32,114, 7,0,0,0,114,244,0,0,0,26,5,0,0,114,72,1, 0,0,114,9,0,0,0,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,4,0,0,0,67,0,0,0,115,26,0,0,0,116, + 0,0,4,0,0,0,3,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,3,122,98,76,111,97, 100,32,97,32,110,97,109,101,115,112,97,99,101,32,109,111, @@ -2132,7 +2132,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,4,255,12,3,114,9,0,0,0,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,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,67,0,0,0,115,22,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,115,22,0, 0,0,100,1,100,2,108,0,109,1,125,2,1,0,124,2, 124,0,106,2,131,1,83,0,41,3,78,114,0,0,0,0, 41,1,218,15,78,97,109,101,115,112,97,99,101,82,101,97, @@ -2152,7 +2152,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, 8,3,8,3,12,12,114,9,0,0,0,114,70,1,0,0, 99,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, + 0,0,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,7, 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, @@ -2165,7 +2165,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, @@ -2189,7 +2189,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,8,1,2,128,4,252,114,9,0,0,0,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,1,0,0,0,0, - 0,0,0,0,0,0,0,9,0,0,0,67,0,0,0,115, + 0,0,0,0,0,0,0,9,0,0,0,3,0,0,0,115, 78,0,0,0,116,0,106,1,100,1,117,1,114,14,116,0, 106,1,115,14,116,2,160,3,100,2,116,4,161,2,1,0, 116,0,106,1,68,0,93,18,125,1,9,0,124,1,124,0, @@ -2210,7 +2210,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,26,2,154,7,35,9,166,1,35,9,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, - 8,0,0,0,67,0,0,0,115,104,0,0,0,124,1,100, + 8,0,0,0,3,0,0,0,115,104,0,0,0,124,1,100, 1,107,2,114,21,9,0,116,0,160,1,161,0,125,1,110, 11,35,0,4,0,116,2,121,51,1,0,1,0,1,0,89, 0,100,2,83,0,37,0,9,0,116,3,106,4,124,1,25, @@ -2245,7 +2245,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,49,7,179,1,20,7,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,4,0,0,0,67,0,0,0,115,138,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,138,0, 0,0,116,0,124,2,100,1,131,2,114,27,116,1,160,2, 124,2,161,1,155,0,100,2,157,2,125,3,116,3,160,4, 124,3,116,5,161,2,1,0,124,2,160,6,124,1,161,1, @@ -2276,7 +2276,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 9,0,0,0,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,5, - 0,0,0,67,0,0,0,115,166,0,0,0,103,0,125,4, + 0,0,0,3,0,0,0,115,166,0,0,0,103,0,125,4, 124,2,68,0,93,67,125,5,116,0,124,5,116,1,116,2, 102,2,131,2,115,14,113,4,124,0,160,3,124,5,161,1, 125,6,124,6,100,1,117,1,114,71,116,4,124,6,100,2, @@ -2308,7 +2308,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 8,1,6,1,8,1,8,1,10,5,2,128,12,2,6,1, 4,1,114,9,0,0,0,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,5,0,0,0,67,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, 0,0,115,94,0,0,0,124,2,100,1,117,0,114,7,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,20,100,1,83,0,124, @@ -2335,7 +2335,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,2,4,2,114,9,0,0,0,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, - 67,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, + 3,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, 4,83,0,41,3,122,170,102,105,110,100,32,116,104,101,32, @@ -2361,7 +2361,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 8,2,2,4,254,12,3,8,1,4,1,6,1,114,9,0, 0,0,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,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,79,0,0,0,115, + 0,0,0,0,0,0,0,4,0,0,0,15,0,0,0,115, 28,0,0,0,100,1,100,2,108,0,109,1,125,2,1,0, 124,2,106,2,124,0,105,0,124,1,164,1,142,1,83,0, 41,4,97,32,1,0,0,10,32,32,32,32,32,32,32,32, @@ -2403,7 +2403,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,2,12,10,1,2,21,10,1,2,20,12,1,2,31,12, 1,2,23,12,1,2,15,14,1,114,9,0,0,0,114,74, 1,0,0,99,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, + 3,0,0,0,0,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, @@ -2464,7 +2464,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 12,1,26,1,6,1,10,2,10,1,18,1,6,1,8,1, 12,1,114,9,0,0,0,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,2,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,3,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, @@ -2474,7 +2474,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,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,4,0, - 0,0,67,0,0,0,115,54,0,0,0,116,0,160,1,100, + 0,0,3,0,0,0,115,54,0,0,0,116,0,160,1,100, 1,116,2,161,2,1,0,124,0,160,3,124,1,161,1,125, 2,124,2,100,2,117,0,114,19,100,2,103,0,102,2,83, 0,124,2,106,4,124,2,106,5,112,25,103,0,102,2,83, @@ -2505,7 +2505,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 2,2,4,254,10,3,8,1,8,1,16,1,114,9,0,0, 0,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,6,0,0,0,67,0,0,0,115,26, + 0,0,0,0,0,0,6,0,0,0,3,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,200,0,0,0,41,1,114,212,0,0,0,41,7,114,143, @@ -2516,7 +2516,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,10,1,8,1,2,1,6,255,114,9,0,0,0,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,9,0,0,0,67,0,0,0,115,126,1,0,0,100, + 0,0,9,0,0,0,3,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,9,0,116,1,124,0,106,2,112,17,116,3,160,4,161, 0,131,1,106,5,125,5,110,12,35,0,4,0,116,6,121, @@ -2580,7 +2580,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 7,193,52,8,65,61,2,193,61,7,66,8,9,194,61,1, 66,8,9,194,62,1,32,7,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,10,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,3, 0,0,0,115,194,0,0,0,124,0,106,0,125,1,9,0, 116,1,160,2,124,1,112,11,116,1,160,3,161,0,161,1, 125,2,110,15,35,0,4,0,116,4,116,5,116,6,102,3, @@ -2600,7 +2600,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,114,32,116,104,105,115,32,100,105,114,101,99,116,111,114, 121,46,114,15,0,0,0,114,97,0,0,0,114,88,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,83,0,0,0,115,20,0,0,0,104,0,124,0,93, + 0,0,19,0,0,0,115,20,0,0,0,104,0,124,0,93, 6,125,1,124,1,160,0,161,0,146,2,113,2,83,0,114, 12,0,0,0,41,1,114,131,0,0,0,41,2,114,5,0, 0,0,90,2,102,110,115,2,0,0,0,32,32,114,7,0, @@ -2673,7 +2673,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,6,0,0,0,4,128,14,10,4,6,114,9,0,0, 0,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,3,0,0,0,67,0,0,0,114,64,1,0, + 0,0,0,0,3,0,0,0,3,0,0,0,114,64,1,0, 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,89,0,0,0,114,65,0, 0,0,114,20,1,0,0,115,1,0,0,0,32,114,7,0, @@ -2689,7 +2689,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 204,5,0,0,115,24,0,0,0,8,0,4,2,8,7,8, 16,4,4,8,2,8,15,10,5,8,51,2,31,10,1,12, 17,114,9,0,0,0,114,91,1,0,0,99,4,0,0,0, - 0,0,0,0,0,0,0,0,8,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,8,0,0,0,3,0,0,0, 115,146,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,33,124,5,114, 18,124,5,106,1,125,4,110,15,124,2,124,3,107,2,114, @@ -2715,7 +2715,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, 7,7,114,108,1,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,67,0,0,0,115,38,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,115,38,0,0, 0,116,0,116,1,160,2,161,0,102,2,125,0,116,3,116, 4,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, @@ -2733,7 +2733,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,0,0,0,32,32,32,114,7,0,0,0,114,207,0,0, 0,128,6,0,0,115,8,0,0,0,12,5,8,1,8,1, 10,1,114,9,0,0,0,114,207,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, 0,115,8,0,0,0,124,0,97,0,100,0,83,0,114,69, 0,0,0,41,1,114,158,0,0,0,41,1,218,17,95,98, 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,115, @@ -2741,7 +2741,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,98,111,111,116,115,116,114,97,112,95,109,111,100,117,108, 101,139,6,0,0,115,2,0,0,0,8,2,114,9,0,0, 0,114,111,1,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,67,0,0,0,115,50,0,0,0, + 0,0,0,4,0,0,0,3,0,0,0,115,50,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, diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 34d581d29912c..a9608403da3f2 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -1,7 +1,7 @@ /* Auto-generated by Programs/_freeze_importlib.c */ const unsigned char _Py_M__zipimport[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,64,0,0,0,115,80,1,0,0,100,0,90,0,100,1, + 0,0,0,0,0,115,80,1,0,0,100,0,90,0,100,1, 100,2,108,1,90,2,100,1,100,3,108,1,109,3,90,3, 109,4,90,4,1,0,100,1,100,2,108,5,90,6,100,1, 100,2,108,7,90,7,100,1,100,2,108,8,90,8,100,1, @@ -65,7 +65,7 @@ const unsigned char _Py_M__zipimport[] = { 99,107,95,117,105,110,116,51,50,218,14,90,105,112,73,109, 112,111,114,116,69,114,114,111,114,218,11,122,105,112,105,109, 112,111,114,116,101,114,233,1,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 115,12,0,0,0,101,0,90,1,100,0,90,2,100,1,83, 0,41,2,114,3,0,0,0,78,41,3,218,8,95,95,110, 97,109,101,95,95,218,10,95,95,109,111,100,117,108,101,95, @@ -75,7 +75,7 @@ const unsigned char _Py_M__zipimport[] = { 0,0,0,115,4,0,0,0,8,0,4,1,114,10,0,0, 0,233,22,0,0,0,115,4,0,0,0,80,75,5,6,105, 255,255,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,64,0,0,0,115,126,0,0,0,101,0, + 0,3,0,0,0,0,0,0,0,115,126,0,0,0,101,0, 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, 90,4,100,29,100,5,100,6,132,1,90,5,100,29,100,7, 100,8,132,1,90,6,100,29,100,9,100,10,132,1,90,7, @@ -117,7 +117,7 @@ const unsigned char _Py_M__zipimport[] = { 32,110,97,109,101,32,111,102,32,116,104,101,10,32,32,32, 32,122,105,112,102,105,108,101,32,116,97,114,103,101,116,101, 100,46,10,32,32,32,32,99,2,0,0,0,0,0,0,0, - 0,0,0,0,9,0,0,0,67,0,0,0,115,40,1,0, + 0,0,0,0,9,0,0,0,3,0,0,0,115,40,1,0, 0,116,0,124,1,116,1,131,2,115,14,100,1,100,0,108, 2,125,2,124,2,160,3,124,1,161,1,125,1,124,1,115, 22,116,4,100,2,124,1,100,3,141,2,130,1,116,5,114, @@ -171,7 +171,7 @@ const unsigned char _Py_M__zipimport[] = { 7,194,18,1,65,50,7,194,19,1,65,11,7,122,20,122, 105,112,105,109,112,111,114,116,101,114,46,95,95,105,110,105, 116,95,95,78,99,3,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,67,0,0,0,115,90,0,0,0,116,0, + 0,4,0,0,0,3,0,0,0,115,90,0,0,0,116,0, 160,1,100,1,116,2,161,2,1,0,116,3,124,0,124,1, 131,2,125,3,124,3,100,2,117,1,114,19,124,0,103,0, 102,2,83,0,116,4,124,0,124,1,131,2,125,4,116,5, @@ -234,7 +234,7 @@ const unsigned char _Py_M__zipimport[] = { 2,114,10,0,0,0,122,23,122,105,112,105,109,112,111,114, 116,101,114,46,102,105,110,100,95,108,111,97,100,101,114,99, 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 67,0,0,0,115,28,0,0,0,116,0,160,1,100,1,116, + 3,0,0,0,115,28,0,0,0,116,0,160,1,100,1,116, 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,100, 2,25,0,83,0,41,4,97,203,1,0,0,102,105,110,100, 95,109,111,100,117,108,101,40,102,117,108,108,110,97,109,101, @@ -280,7 +280,7 @@ const unsigned char _Py_M__zipimport[] = { 11,2,2,4,254,16,3,114,10,0,0,0,122,23,122,105, 112,105,109,112,111,114,116,101,114,46,102,105,110,100,95,109, 111,100,117,108,101,99,3,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,67,0,0,0,115,108,0,0,0,116, + 0,0,6,0,0,0,3,0,0,0,115,108,0,0,0,116, 0,124,0,124,1,131,2,125,3,124,3,100,1,117,1,114, 17,116,1,160,2,124,1,124,0,124,3,100,2,166,3,83, 0,116,3,124,0,124,1,131,2,125,4,116,4,124,0,124, @@ -313,7 +313,7 @@ const unsigned char _Py_M__zipimport[] = { 1,4,2,114,10,0,0,0,122,21,122,105,112,105,109,112, 111,114,116,101,114,46,102,105,110,100,95,115,112,101,99,99, 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 67,0,0,0,115,20,0,0,0,116,0,124,0,124,1,131, + 3,0,0,0,115,20,0,0,0,116,0,124,0,124,1,131, 2,92,3,125,2,125,3,125,4,124,2,83,0,41,2,122, 166,103,101,116,95,99,111,100,101,40,102,117,108,108,110,97, 109,101,41,32,45,62,32,99,111,100,101,32,111,98,106,101, @@ -334,7 +334,7 @@ const unsigned char _Py_M__zipimport[] = { 16,6,4,1,114,10,0,0,0,122,20,122,105,112,105,109, 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, 2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 67,0,0,0,115,114,0,0,0,116,0,114,8,124,1,160, + 3,0,0,0,115,114,0,0,0,116,0,114,8,124,1,160, 1,116,0,116,2,161,2,125,1,124,1,125,2,124,1,160, 3,124,0,106,4,116,2,23,0,161,1,114,29,124,1,116, 5,124,0,106,4,116,2,23,0,131,1,100,1,133,2,25, @@ -365,7 +365,7 @@ const unsigned char _Py_M__zipimport[] = { 0,0,0,158,5,36,0,164,13,49,7,184,1,49,7,122, 20,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, 95,100,97,116,97,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,67,0,0,0,115,20,0,0,0,116, + 0,0,3,0,0,0,3,0,0,0,115,20,0,0,0,116, 0,124,0,124,1,131,2,92,3,125,2,125,3,125,4,124, 4,83,0,41,2,122,165,103,101,116,95,102,105,108,101,110, 97,109,101,40,102,117,108,108,110,97,109,101,41,32,45,62, @@ -384,7 +384,7 @@ const unsigned char _Py_M__zipimport[] = { 1,114,10,0,0,0,122,24,122,105,112,105,109,112,111,114, 116,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,8,0,0, - 0,67,0,0,0,115,128,0,0,0,116,0,124,0,124,1, + 0,3,0,0,0,115,128,0,0,0,116,0,124,0,124,1, 131,2,125,2,124,2,100,1,117,0,114,18,116,1,100,2, 124,1,155,2,157,2,124,1,100,3,141,2,130,1,116,2, 124,0,124,1,131,2,125,3,124,2,114,32,116,3,160,4, @@ -425,7 +425,7 @@ const unsigned char _Py_M__zipimport[] = { 0,172,7,54,7,191,1,54,7,122,22,122,105,112,105,109, 112,111,114,116,101,114,46,103,101,116,95,115,111,117,114,99, 101,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,67,0,0,0,115,40,0,0,0,116,0,124,0,124, + 0,0,3,0,0,0,115,40,0,0,0,116,0,124,0,124, 1,131,2,125,2,124,2,100,1,117,0,114,18,116,1,100, 2,124,1,155,2,157,2,124,1,100,3,141,2,130,1,124, 2,83,0,41,4,122,171,105,115,95,112,97,99,107,97,103, @@ -446,7 +446,7 @@ const unsigned char _Py_M__zipimport[] = { 115,8,0,0,0,10,6,8,1,18,1,4,1,114,10,0, 0,0,122,22,122,105,112,105,109,112,111,114,116,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,8,0,0,0,67,0,0,0,115, + 0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,115, 0,1,0,0,100,1,125,2,116,0,160,1,124,2,116,2, 161,2,1,0,116,3,124,0,124,1,131,2,92,3,125,3, 125,4,125,5,116,4,106,5,160,6,124,1,161,1,125,6, @@ -522,7 +522,7 @@ const unsigned char _Py_M__zipimport[] = { 38,0,193,38,15,65,53,7,193,63,1,65,53,7,122,23, 122,105,112,105,109,112,111,114,116,101,114,46,108,111,97,100, 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,67,0,0,0,115,64,0,0, + 0,0,0,0,8,0,0,0,3,0,0,0,115,64,0,0, 0,9,0,124,0,160,0,124,1,161,1,115,8,100,1,83, 0,110,11,35,0,4,0,116,1,121,31,1,0,1,0,1, 0,89,0,100,1,83,0,37,0,100,2,100,3,108,2,109, @@ -552,7 +552,7 @@ const unsigned char _Py_M__zipimport[] = { 5,9,0,137,7,19,7,159,1,19,7,122,31,122,105,112, 105,109,112,111,114,116,101,114,46,103,101,116,95,114,101,115, 111,117,114,99,101,95,114,101,97,100,101,114,99,1,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,67,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0, 0,115,74,0,0,0,9,0,116,0,124,0,106,1,131,1, 124,0,95,2,124,0,106,2,116,3,124,0,106,1,60,0, 100,1,83,0,35,0,4,0,116,4,121,36,1,0,1,0, @@ -570,7 +570,7 @@ const unsigned char _Py_M__zipimport[] = { 0,0,0,129,12,15,0,143,17,35,7,164,1,35,7,122, 29,122,105,112,105,109,112,111,114,116,101,114,46,105,110,118, 97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,1, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3, 0,0,0,115,24,0,0,0,100,1,124,0,106,0,155,0, 116,1,155,0,124,0,106,2,155,0,100,2,157,5,83,0, 41,3,78,122,21,60,122,105,112,105,109,112,111,114,116,101, @@ -593,7 +593,7 @@ const unsigned char _Py_M__zipimport[] = { 95,105,110,105,116,95,95,46,112,121,99,84,114,67,0,0, 0,70,41,3,122,4,46,112,121,99,84,70,41,3,114,68, 0,0,0,70,70,99,2,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,67,0,0,0,115,20,0,0,0,124, + 0,0,4,0,0,0,3,0,0,0,115,20,0,0,0,124, 0,106,0,124,1,160,1,100,1,161,1,100,2,25,0,23, 0,83,0,41,3,78,218,1,46,233,2,0,0,0,41,2, 114,32,0,0,0,218,10,114,112,97,114,116,105,116,105,111, @@ -601,14 +601,14 @@ const unsigned char _Py_M__zipimport[] = { 0,0,32,32,114,11,0,0,0,114,40,0,0,0,102,1, 0,0,115,2,0,0,0,20,1,114,10,0,0,0,114,40, 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, + 2,0,0,0,3,0,0,0,115,18,0,0,0,124,1,116, 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,114, 91,0,0,0,41,2,114,21,0,0,0,114,29,0,0,0, 41,3,114,33,0,0,0,114,14,0,0,0,90,7,100,105, 114,112,97,116,104,115,3,0,0,0,32,32,32,114,11,0, 0,0,114,41,0,0,0,106,1,0,0,115,4,0,0,0, 8,4,10,2,114,10,0,0,0,114,41,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,67, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, 0,0,0,115,56,0,0,0,116,0,124,0,124,1,131,2, 125,2,116,1,68,0,93,18,92,3,125,3,125,4,125,5, 124,2,124,3,23,0,125,6,124,6,124,0,106,2,118,0, @@ -622,7 +622,7 @@ const unsigned char _Py_M__zipimport[] = { 0,0,0,114,39,0,0,0,115,1,0,0,115,14,0,0, 0,10,1,14,1,8,1,10,1,8,1,2,255,4,2,114, 10,0,0,0,114,39,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,67,0,0,0,115,248, + 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,248, 4,0,0,9,0,116,0,160,1,124,0,161,1,125,1,110, 18,35,0,4,0,116,2,144,2,121,123,1,0,1,0,1, 0,116,3,100,1,124,0,155,2,157,2,124,0,100,2,141, @@ -821,7 +821,7 @@ const unsigned char _Py_M__zipimport[] = { 226,137,164,226,140,160,226,140,161,195,183,226,137,136,194,176, 226,136,153,194,183,226,136,154,226,129,191,194,178,226,150,160, 194,160,99,0,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,67,0,0,0,115,110,0,0,0,116,0,114,11, + 0,0,0,3,0,0,0,115,110,0,0,0,116,0,114,11, 116,1,160,2,100,1,161,1,1,0,116,3,100,2,131,1, 130,1,100,3,97,0,9,0,100,4,100,5,108,4,109,5, 125,0,1,0,110,17,35,0,4,0,116,6,121,54,1,0, @@ -848,7 +848,7 @@ const unsigned char _Py_M__zipimport[] = { 115,24,0,0,0,142,6,21,0,148,1,42,0,149,16,37, 7,165,1,42,0,170,4,46,7,182,1,37,7,114,151,0, 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,9, - 0,0,0,67,0,0,0,115,132,1,0,0,124,1,92,8, + 0,0,0,3,0,0,0,115,132,1,0,0,124,1,92,8, 125,2,125,3,125,4,125,5,125,6,125,7,125,8,125,9, 124,4,100,1,107,0,114,18,116,0,100,2,131,1,130,1, 116,1,160,2,124,0,161,1,53,0,125,10,9,0,124,10, @@ -906,14 +906,14 @@ const unsigned char _Py_M__zipimport[] = { 194,42,3,66,46,0,194,46,11,66,57,7,194,63,1,66, 57,7,195,0,1,66,1,9,195,1,1,47,9,114,60,0, 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,124,0, + 0,0,0,3,0,0,0,115,16,0,0,0,116,0,124,0, 124,1,24,0,131,1,100,1,107,1,83,0,41,2,78,114, 5,0,0,0,41,1,218,3,97,98,115,41,2,90,2,116, 49,90,2,116,50,115,2,0,0,0,32,32,114,11,0,0, 0,218,9,95,101,113,95,109,116,105,109,101,115,2,0,0, 115,2,0,0,0,16,2,114,10,0,0,0,114,154,0,0, 0,99,5,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,67,0,0,0,115,254,0,0,0,124,3,124,2,100, + 0,0,3,0,0,0,115,254,0,0,0,124,3,124,2,100, 1,156,2,125,5,116,0,160,1,124,4,124,3,124,5,161, 3,125,6,124,6,100,2,64,0,100,3,107,3,125,7,124, 7,114,63,124,6,100,4,64,0,100,3,107,3,125,8,116, @@ -967,7 +967,7 @@ const unsigned char _Py_M__zipimport[] = { 1,4,255,2,128,8,4,6,255,4,3,22,3,18,1,2, 255,4,2,8,1,4,255,4,2,18,2,10,1,16,1,4, 1,114,10,0,0,0,114,162,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, 115,28,0,0,0,124,0,160,0,100,1,100,2,161,2,125, 0,124,0,160,0,100,3,100,2,161,2,125,0,124,0,83, 0,41,4,78,115,2,0,0,0,13,10,243,1,0,0,0, @@ -977,7 +977,7 @@ const unsigned char _Py_M__zipimport[] = { 108,105,110,101,95,101,110,100,105,110,103,115,168,2,0,0, 115,6,0,0,0,12,1,12,1,4,1,114,10,0,0,0, 114,166,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,67,0,0,0,115,24,0,0,0,116, + 0,0,6,0,0,0,3,0,0,0,115,24,0,0,0,116, 0,124,1,131,1,125,1,116,1,124,1,124,0,100,1,100, 2,100,3,141,4,83,0,41,4,78,114,80,0,0,0,84, 41,1,90,12,100,111,110,116,95,105,110,104,101,114,105,116, @@ -987,7 +987,7 @@ const unsigned char _Py_M__zipimport[] = { 108,101,95,115,111,117,114,99,101,175,2,0,0,115,4,0, 0,0,8,1,16,1,114,10,0,0,0,114,168,0,0,0, 99,2,0,0,0,0,0,0,0,0,0,0,0,11,0,0, - 0,67,0,0,0,115,68,0,0,0,116,0,160,1,124,0, + 0,3,0,0,0,115,68,0,0,0,116,0,160,1,124,0, 100,1,63,0,100,2,23,0,124,0,100,3,63,0,100,4, 64,0,124,0,100,5,64,0,124,1,100,6,63,0,124,1, 100,3,63,0,100,7,64,0,124,1,100,5,64,0,100,8, @@ -1001,7 +1001,7 @@ const unsigned char _Py_M__zipimport[] = { 105,109,101,181,2,0,0,115,18,0,0,0,4,1,10,1, 10,1,6,1,6,1,10,1,10,1,6,1,6,249,114,10, 0,0,0,114,176,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,10,0,0,0,67,0,0,0,115,112,0, + 0,0,0,0,0,10,0,0,0,3,0,0,0,115,112,0, 0,0,9,0,124,1,100,1,100,0,133,2,25,0,100,2, 118,0,115,11,74,0,130,1,124,1,100,0,100,1,133,2, 25,0,125,1,124,0,106,0,124,1,25,0,125,2,124,2, @@ -1022,7 +1022,7 @@ const unsigned char _Py_M__zipimport[] = { 1,10,1,8,3,8,1,8,1,14,1,2,128,18,1,6, 1,2,128,2,255,115,12,0,0,0,129,39,41,0,169,10, 54,7,183,1,54,7,114,158,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,8,0,0,0,67,0,0,0, + 0,0,0,0,0,0,0,0,8,0,0,0,3,0,0,0, 115,82,0,0,0,124,1,100,1,100,0,133,2,25,0,100, 2,118,0,115,10,74,0,130,1,124,1,100,0,100,1,133, 2,25,0,125,1,9,0,124,0,106,0,124,1,25,0,125, @@ -1037,7 +1037,7 @@ const unsigned char _Py_M__zipimport[] = { 12,1,6,1,2,128,12,2,2,253,115,12,0,0,0,145, 5,23,0,151,7,33,7,168,1,33,7,114,156,0,0,0, 99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,67,0,0,0,115,14,1,0,0,116,0,124,0,124,1, + 0,3,0,0,0,115,14,1,0,0,116,0,124,0,124,1, 131,2,125,2,100,0,125,3,116,1,68,0,93,100,92,3, 125,4,125,5,125,6,124,2,124,4,23,0,125,7,116,2, 160,3,100,1,124,0,106,4,116,5,124,7,100,2,100,3, From webhook-mailer at python.org Wed Jun 23 19:46:34 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Jun 2021 23:46:34 -0000 Subject: [Python-checkins] [3.10] bpo-43988: Add test.support.check_disallow_instantiation() (GH-25757) (GH-26885) Message-ID: https://github.com/python/cpython/commit/0a3452e7cf00c51ab1af0f674b670520b09f0e39 commit: 0a3452e7cf00c51ab1af0f674b670520b09f0e39 branch: 3.10 author: Erlend Egeberg Aasland committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-23T16:46:25-07:00 summary: [3.10] bpo-43988: Add test.support.check_disallow_instantiation() (GH-25757) (GH-26885) (cherry picked from commit 4f725261c6cf23d259e8fdc205e12b76ef4d2d31, fbff5387c3e1f3904420fa5a27738c6c5881305b, and 8cec740820fc875117bfa7b6bdb10202ebeb8fd5) Co-authored-by: Erlend Egeberg Aasland Automerge-Triggered-By: GH:vstinner files: M Doc/library/test.rst M Lib/sqlite3/test/dbapi.py M Lib/test/support/__init__.py M Lib/test/test_array.py M Lib/test/test_curses.py M Lib/test/test_dbm_gnu.py M Lib/test/test_embed.py M Lib/test/test_functools.py M Lib/test/test_hashlib.py M Lib/test/test_hmac.py M Lib/test/test_re.py M Lib/test/test_select.py M Lib/test/test_ssl.py M Lib/test/test_threading.py M Lib/test/test_unicodedata.py M Lib/test/test_zlib.py diff --git a/Doc/library/test.rst b/Doc/library/test.rst index e4f779bd83eb87..7ee96d375a1d04 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -928,8 +928,16 @@ The :mod:`test.support` module defines the following functions: .. versionadded:: 3.10 +.. function:: check_disallow_instantiation(test_case, tp, *args, **kwds) + + Assert that type *tp* cannot be instantiated using *args* and *kwds*. + + .. versionadded:: 3.10 + + The :mod:`test.support` module defines the following classes: + .. class:: SuppressCrashReport() A context manager used to try to prevent crash dialog popups on tests that diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 0716e656a7f26f..a958d4df8bb0c8 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -25,6 +25,7 @@ import sqlite3 as sqlite import sys +from test.support import check_disallow_instantiation from test.support.os_helper import TESTFN, unlink @@ -94,8 +95,7 @@ def test_shared_cache_deprecated(self): def test_disallow_instantiation(self): cx = sqlite.connect(":memory:") - tp = type(cx("select 1")) - self.assertRaises(TypeError, tp) + check_disallow_instantiation(self, type(cx("select 1"))) class ConnectionTests(unittest.TestCase): diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index b9040a9ac507a4..9e5064dbea4831 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -40,6 +40,7 @@ "requires_IEEE_754", "requires_zlib", "anticipate_failure", "load_package_tests", "detect_api_mismatch", "check__all__", "skip_if_buggy_ucrt_strfptime", + "check_disallow_instantiation", # sys "is_jython", "is_android", "check_impl_detail", "unix_shell", "setswitchinterval", @@ -1992,3 +1993,19 @@ def infinite_recursion(max_depth=75): yield finally: sys.setrecursionlimit(original_depth) + + +def check_disallow_instantiation(testcase, tp, *args, **kwds): + """ + Check that given type cannot be instantiated using *args and **kwds. + + See bpo-43916: Add Py_TPFLAGS_DISALLOW_INSTANTIATION type flag. + """ + mod = tp.__module__ + name = tp.__name__ + if mod != 'builtins': + qualname = f"{mod}.{name}" + else: + qualname = f"{name}" + msg = f"cannot create '{re.escape(qualname)}' instances" + testcase.assertRaisesRegex(TypeError, msg, tp, *args, **kwds) diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index b18467fb889d8b..18f78d52467e2b 100644 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -42,9 +42,10 @@ def test_bad_constructor(self): @support.cpython_only def test_disallow_instantiation(self): - # Ensure that the type disallows instantiation (bpo-43916) - tp = type(iter(array.array('I'))) - self.assertRaises(TypeError, tp) + my_array = array.array("I") + support.check_disallow_instantiation( + self, type(iter(my_array)), my_array + ) @support.cpython_only def test_immutable(self): diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 8bf48a6454d691..d3c152c42cf62f 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -6,7 +6,8 @@ import tempfile import unittest -from test.support import requires, verbose, SaveSignals, cpython_only +from test.support import (requires, verbose, SaveSignals, cpython_only, + check_disallow_instantiation) from test.support.import_helper import import_module # Optionally test curses module. This currently requires that the @@ -1052,7 +1053,7 @@ def test_disallow_instantiation(self): # Ensure that the type disallows instantiation (bpo-43916) w = curses.newwin(10, 10) panel = curses.panel.new_panel(w) - self.assertRaises(TypeError, type(panel)) + check_disallow_instantiation(self, type(panel)) @requires_curses_func('is_term_resized') def test_is_term_resized(self): diff --git a/Lib/test/test_dbm_gnu.py b/Lib/test/test_dbm_gnu.py index b3e55728c8e70d..f39b0029373485 100644 --- a/Lib/test/test_dbm_gnu.py +++ b/Lib/test/test_dbm_gnu.py @@ -31,8 +31,7 @@ def tearDown(self): def test_disallow_instantiation(self): # Ensure that the type disallows instantiation (bpo-43916) self.g = gdbm.open(filename, 'c') - tp = type(self.g) - self.assertRaises(TypeError, tp) + support.check_disallow_instantiation(self, type(self.g)) def test_key_methods(self): self.g = gdbm.open(filename, 'c') diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index f2cf4a63add287..479d712da65d94 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -1541,9 +1541,7 @@ def test_methods(self): def test_disallow_instantiation(self): fd = self.get_stdout_fd() printer = self.create_printer(fd) - PyStdPrinter_Type = type(printer) - with self.assertRaises(TypeError): - PyStdPrinter_Type(fd) + support.check_disallow_instantiation(self, type(printer)) if __name__ == "__main__": diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index 3320ab7ec6649d..78a8a5fcc0feaa 100644 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -951,8 +951,9 @@ class TestCmpToKeyC(TestCmpToKey, unittest.TestCase): @support.cpython_only def test_disallow_instantiation(self): # Ensure that the type disallows instantiation (bpo-43916) - tp = type(c_functools.cmp_to_key(None)) - self.assertRaises(TypeError, tp) + support.check_disallow_instantiation( + self, type(c_functools.cmp_to_key(None)) + ) class TestCmpToKeyPy(TestCmpToKey, unittest.TestCase): diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index 76754b6b8e13da..1623bf350e2875 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -915,20 +915,13 @@ def test_disallow_instantiation(self): except ValueError: continue with self.subTest(constructor=constructor): - hash_type = type(h) - self.assertRaises(TypeError, hash_type) + support.check_disallow_instantiation(self, type(h)) @unittest.skipUnless(HASH is not None, 'need _hashlib') - def test_hash_disallow_instanciation(self): + def test_hash_disallow_instantiation(self): # internal types like _hashlib.HASH are not constructable - with self.assertRaisesRegex( - TypeError, "cannot create '_hashlib.HASH' instance" - ): - HASH() - with self.assertRaisesRegex( - TypeError, "cannot create '_hashlib.HASHXOF' instance" - ): - HASHXOF() + support.check_disallow_instantiation(self, HASH) + support.check_disallow_instantiation(self, HASHXOF) def test_readonly_types(self): for algorithm, constructors in self.constructors_to_test.items(): diff --git a/Lib/test/test_hmac.py b/Lib/test/test_hmac.py index 964acd0361e342..7cf99735ca39f0 100644 --- a/Lib/test/test_hmac.py +++ b/Lib/test/test_hmac.py @@ -6,7 +6,7 @@ import unittest.mock import warnings -from test.support import hashlib_helper +from test.support import hashlib_helper, check_disallow_instantiation from _operator import _compare_digest as operator_compare_digest @@ -439,11 +439,7 @@ def test_withmodule(self): @unittest.skipUnless(C_HMAC is not None, 'need _hashlib') def test_internal_types(self): # internal types like _hashlib.C_HMAC are not constructable - with self.assertRaisesRegex( - TypeError, "cannot create '_hashlib.HMAC' instance" - ): - C_HMAC() - + check_disallow_instantiation(self, C_HMAC) with self.assertRaisesRegex(TypeError, "immutable type"): C_HMAC.value = None diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index e1b2c794291848..4231e962b23e8a 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -1,5 +1,6 @@ from test.support import (gc_collect, bigmemtest, _2G, - cpython_only, captured_stdout) + cpython_only, captured_stdout, + check_disallow_instantiation) import locale import re import sre_compile @@ -2218,11 +2219,10 @@ def test_signedness(self): @cpython_only def test_disallow_instantiation(self): # Ensure that the type disallows instantiation (bpo-43916) - self.assertRaises(TypeError, re.Match) - self.assertRaises(TypeError, re.Pattern) + check_disallow_instantiation(self, re.Match) + check_disallow_instantiation(self, re.Pattern) pat = re.compile("") - tp = type(pat.scanner("")) - self.assertRaises(TypeError, tp) + check_disallow_instantiation(self, type(pat.scanner(""))) class ExternalTests(unittest.TestCase): diff --git a/Lib/test/test_select.py b/Lib/test/test_select.py index 957a633f3230e7..cf32cf2f6a6f8b 100644 --- a/Lib/test/test_select.py +++ b/Lib/test/test_select.py @@ -88,12 +88,10 @@ def fileno(self): self.assertEqual(select.select([], a, []), ([], a[:5], [])) def test_disallow_instantiation(self): - tp = type(select.poll()) - self.assertRaises(TypeError, tp) + support.check_disallow_instantiation(self, type(select.poll())) if hasattr(select, 'devpoll'): - tp = type(select.devpoll()) - self.assertRaises(TypeError, tp) + support.check_disallow_instantiation(self, type(select.devpoll())) def tearDownModule(): support.reap_children() diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 06e501e3967849..1a2f0fc6b69fa3 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -358,11 +358,7 @@ def test_ssl_types(self): with self.subTest(ssl_type=ssl_type): with self.assertRaisesRegex(TypeError, "immutable type"): ssl_type.value = None - with self.assertRaisesRegex( - TypeError, - "cannot create '_ssl.Certificate' instances" - ): - _ssl.Certificate() + support.check_disallow_instantiation(self, _ssl.Certificate) def test_private_init(self): with self.assertRaisesRegex(TypeError, "public constructor"): diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index b563797cbd0d39..f648a8b2bc52f5 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -124,8 +124,7 @@ def func(): pass def test_disallow_instantiation(self): # Ensure that the type disallows instantiation (bpo-43916) lock = threading.Lock() - tp = type(lock) - self.assertRaises(TypeError, tp) + test.support.check_disallow_instantiation(self, type(lock)) # Create a bunch of threads, let each do some work, wait until all are # done. diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py index c6bbe3f5ff2b33..213b3cf2529986 100644 --- a/Lib/test/test_unicodedata.py +++ b/Lib/test/test_unicodedata.py @@ -12,7 +12,7 @@ import unicodedata import unittest from test.support import (open_urlresource, requires_resource, script_helper, - cpython_only) + cpython_only, check_disallow_instantiation) class UnicodeMethodsTest(unittest.TestCase): @@ -229,7 +229,7 @@ class UnicodeMiscTest(UnicodeDatabaseTest): @cpython_only def test_disallow_instantiation(self): # Ensure that the type disallows instantiation (bpo-43916) - self.assertRaises(TypeError, unicodedata.UCD) + check_disallow_instantiation(self, unicodedata.UCD) def test_failed_import_during_compiling(self): # Issue 4367 diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py index 694ef6e48757b4..cb0610837baafc 100644 --- a/Lib/test/test_zlib.py +++ b/Lib/test/test_zlib.py @@ -132,10 +132,8 @@ def test_overflow(self): @support.cpython_only def test_disallow_instantiation(self): # Ensure that the type disallows instantiation (bpo-43916) - comp_type = type(zlib.compressobj()) - decomp_type = type(zlib.decompressobj()) - self.assertRaises(TypeError, comp_type) - self.assertRaises(TypeError, decomp_type) + support.check_disallow_instantiation(self, type(zlib.compressobj())) + support.check_disallow_instantiation(self, type(zlib.decompressobj())) class BaseCompressTestCase(object): From webhook-mailer at python.org Thu Jun 24 03:57:31 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Jun 2021 07:57:31 -0000 Subject: [Python-checkins] bpo-43988: Fix test.support.check_disallow_instantiation version added (GH-26889) Message-ID: https://github.com/python/cpython/commit/9049ea51eca081984c8ae37dfeb68b75d624e90d commit: 9049ea51eca081984c8ae37dfeb68b75d624e90d branch: main author: Erlend Egeberg Aasland committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-24T00:57:14-07:00 summary: bpo-43988: Fix test.support.check_disallow_instantiation version added (GH-26889) Automerge-Triggered-By: GH:vstinner files: M Doc/library/test.rst diff --git a/Doc/library/test.rst b/Doc/library/test.rst index eb4f04f96e4f1..7ee96d375a1d0 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -932,7 +932,7 @@ The :mod:`test.support` module defines the following functions: Assert that type *tp* cannot be instantiated using *args* and *kwds*. - .. versionadded:: 3.11 + .. versionadded:: 3.10 The :mod:`test.support` module defines the following classes: From webhook-mailer at python.org Thu Jun 24 07:57:22 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 24 Jun 2021 11:57:22 -0000 Subject: [Python-checkins] bpo-43553: Improve `sqlite3` test coverage (GH-26886) Message-ID: https://github.com/python/cpython/commit/2c1ae09764446beda5248759fb99c859e14f1b25 commit: 2c1ae09764446beda5248759fb99c859e14f1b25 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-24T12:56:56+01:00 summary: bpo-43553: Improve `sqlite3` test coverage (GH-26886) files: M Lib/sqlite3/test/dbapi.py M Lib/sqlite3/test/factory.py M Lib/sqlite3/test/types.py M Lib/sqlite3/test/userfunctions.py diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 7e44cac76f5b3..1a4b44188bd41 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -26,9 +26,8 @@ import threading import unittest -from test.support import check_disallow_instantiation +from test.support import check_disallow_instantiation, threading_helper from test.support.os_helper import TESTFN, unlink -from test.support import threading_helper # Helper for tests using TESTFN @@ -110,6 +109,10 @@ def test_disallow_instantiation(self): cx = sqlite.connect(":memory:") check_disallow_instantiation(self, type(cx("select 1"))) + def test_complete_statement(self): + self.assertFalse(sqlite.complete_statement("select t")) + self.assertTrue(sqlite.complete_statement("create table t(t);")) + class ConnectionTests(unittest.TestCase): @@ -225,6 +228,20 @@ def test_connection_exceptions(self): self.assertTrue(hasattr(self.cx, exc)) self.assertIs(getattr(sqlite, exc), getattr(self.cx, exc)) + def test_interrupt_on_closed_db(self): + cx = sqlite.connect(":memory:") + cx.close() + with self.assertRaises(sqlite.ProgrammingError): + cx.interrupt() + + def test_interrupt(self): + self.assertIsNone(self.cx.interrupt()) + + def test_drop_unused_refs(self): + for n in range(500): + cu = self.cx.execute(f"select {n}") + self.assertEqual(cu.fetchone()[0], n) + class OpenTests(unittest.TestCase): _sql = "create table test(id integer)" @@ -594,6 +611,11 @@ def test_column_count(self): new_count = len(res.description) self.assertEqual(new_count - old_count, 1) + def test_same_query_in_multiple_cursors(self): + cursors = [self.cx.execute("select 1") for _ in range(3)] + for cu in cursors: + self.assertEqual(cu.fetchall(), [(1,)]) + class ThreadTests(unittest.TestCase): def setUp(self): diff --git a/Lib/sqlite3/test/factory.py b/Lib/sqlite3/test/factory.py index 876428497542f..7faa9ac8c1fc2 100644 --- a/Lib/sqlite3/test/factory.py +++ b/Lib/sqlite3/test/factory.py @@ -123,6 +123,8 @@ def test_sqlite_row_index(self): row[-3] with self.assertRaises(IndexError): row[2**1000] + with self.assertRaises(IndexError): + row[complex()] # index must be int or string def test_sqlite_row_index_unicode(self): self.con.row_factory = sqlite.Row diff --git a/Lib/sqlite3/test/types.py b/Lib/sqlite3/test/types.py index 4bb1de80887b8..4f0e4f6d26839 100644 --- a/Lib/sqlite3/test/types.py +++ b/Lib/sqlite3/test/types.py @@ -381,6 +381,43 @@ def test_caster_is_used(self): val = self.cur.fetchone()[0] self.assertEqual(type(val), float) + def test_missing_adapter(self): + with self.assertRaises(sqlite.ProgrammingError): + sqlite.adapt(1.) # No float adapter registered + + def test_missing_protocol(self): + with self.assertRaises(sqlite.ProgrammingError): + sqlite.adapt(1, None) + + def test_defect_proto(self): + class DefectProto(): + def __adapt__(self): + return None + with self.assertRaises(sqlite.ProgrammingError): + sqlite.adapt(1., DefectProto) + + def test_defect_self_adapt(self): + class DefectSelfAdapt(float): + def __conform__(self, _): + return None + with self.assertRaises(sqlite.ProgrammingError): + sqlite.adapt(DefectSelfAdapt(1.)) + + def test_custom_proto(self): + class CustomProto(): + def __adapt__(self): + return "adapted" + self.assertEqual(sqlite.adapt(1., CustomProto), "adapted") + + def test_adapt(self): + val = 42 + self.assertEqual(float(val), sqlite.adapt(val)) + + def test_adapt_alt(self): + alt = "other" + self.assertEqual(alt, sqlite.adapt(1., None, alt)) + + @unittest.skipUnless(zlib, "requires zlib") class BinaryConverterTests(unittest.TestCase): def convert(s): diff --git a/Lib/sqlite3/test/userfunctions.py b/Lib/sqlite3/test/userfunctions.py index 429089072496e..dc900f6486f49 100644 --- a/Lib/sqlite3/test/userfunctions.py +++ b/Lib/sqlite3/test/userfunctions.py @@ -21,11 +21,36 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. +import contextlib +import functools +import io import unittest import unittest.mock import gc import sqlite3 as sqlite +def with_tracebacks(strings): + """Convenience decorator for testing callback tracebacks.""" + strings.append('Traceback') + + def decorator(func): + @functools.wraps(func) + def wrapper(self, *args, **kwargs): + # First, run the test with traceback enabled. + sqlite.enable_callback_tracebacks(True) + buf = io.StringIO() + with contextlib.redirect_stderr(buf): + func(self, *args, **kwargs) + tb = buf.getvalue() + for s in strings: + self.assertIn(s, tb) + + # Then run the test with traceback disabled. + sqlite.enable_callback_tracebacks(False) + func(self, *args, **kwargs) + return wrapper + return decorator + def func_returntext(): return "foo" def func_returnunicode(): @@ -228,6 +253,7 @@ def test_func_return_long_long(self): val = cur.fetchone()[0] self.assertEqual(val, 1<<31) + @with_tracebacks(['func_raiseexception', '5/0', 'ZeroDivisionError']) def test_func_exception(self): cur = self.con.cursor() with self.assertRaises(sqlite.OperationalError) as cm: @@ -387,6 +413,7 @@ def test_aggr_no_finalize(self): val = cur.fetchone()[0] self.assertEqual(str(cm.exception), "user-defined aggregate's 'finalize' method raised error") + @with_tracebacks(['__init__', '5/0', 'ZeroDivisionError']) def test_aggr_exception_in_init(self): cur = self.con.cursor() with self.assertRaises(sqlite.OperationalError) as cm: @@ -394,6 +421,7 @@ def test_aggr_exception_in_init(self): val = cur.fetchone()[0] self.assertEqual(str(cm.exception), "user-defined aggregate's '__init__' method raised error") + @with_tracebacks(['step', '5/0', 'ZeroDivisionError']) def test_aggr_exception_in_step(self): cur = self.con.cursor() with self.assertRaises(sqlite.OperationalError) as cm: @@ -401,6 +429,7 @@ def test_aggr_exception_in_step(self): val = cur.fetchone()[0] self.assertEqual(str(cm.exception), "user-defined aggregate's 'step' method raised error") + @with_tracebacks(['finalize', '5/0', 'ZeroDivisionError']) def test_aggr_exception_in_finalize(self): cur = self.con.cursor() with self.assertRaises(sqlite.OperationalError) as cm: @@ -502,6 +531,14 @@ def authorizer_cb(action, arg1, arg2, dbname, source): raise ValueError return sqlite.SQLITE_OK + @with_tracebacks(['authorizer_cb', 'ValueError']) + def test_table_access(self): + super().test_table_access() + + @with_tracebacks(['authorizer_cb', 'ValueError']) + def test_column_access(self): + super().test_table_access() + class AuthorizerIllegalTypeTests(AuthorizerTests): @staticmethod def authorizer_cb(action, arg1, arg2, dbname, source): From webhook-mailer at python.org Thu Jun 24 08:05:50 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 24 Jun 2021 12:05:50 -0000 Subject: [Python-checkins] bpo-44229: Ignore spurious EPROTOTYPE on macOS in test_ssl (GH-26893) Message-ID: https://github.com/python/cpython/commit/b5a52eef67997246b4235b5407e52a01e822ce56 commit: b5a52eef67997246b4235b5407e52a01e822ce56 branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-24T13:05:42+01:00 summary: bpo-44229: Ignore spurious EPROTOTYPE on macOS in test_ssl (GH-26893) files: M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index cee97a83020b8..11f4c3c2e8e5b 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2443,9 +2443,14 @@ def wrap_conn(self): self.server.conn_errors.append(str(e)) if self.server.chatty: handle_error("\n server: bad connection attempt from " + repr(self.addr) + ":\n") - self.running = False - self.server.stop() - self.close() + + # bpo-44229, bpo-43855, bpo-44237, and bpo-33450: + # Ignore spurious EPROTOTYPE returned by write() on macOS. + # See also http://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ + if e.errno != errno.EPROTOTYPE and sys.platform != "darwin": + self.running = False + self.server.stop() + self.close() return False else: self.server.shared_ciphers.append(self.sslconn.shared_ciphers()) From webhook-mailer at python.org Thu Jun 24 08:09:22 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 24 Jun 2021 12:09:22 -0000 Subject: [Python-checkins] bpo-44297: Add a regression test for line numbers in with statements (GH-26891) Message-ID: https://github.com/python/cpython/commit/0b6b2865187bca7ed7f1f511a02fc8bd13ee38ca commit: 0b6b2865187bca7ed7f1f511a02fc8bd13ee38ca branch: 3.10 author: Mark Shannon committer: pablogsal date: 2021-06-24T13:09:14+01:00 summary: bpo-44297: Add a regression test for line numbers in with statements (GH-26891) files: M Lib/test/test_exceptions.py diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index d444a122af9be..8f689546a6229 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -2160,18 +2160,23 @@ def test_incorrect_constructor(self): class PEP626Tests(unittest.TestCase): - def lineno_after_raise(self, f, line): + def lineno_after_raise(self, f, *expected): try: f() except Exception as ex: t = ex.__traceback__ - while t.tb_next: - t = t.tb_next + else: + self.fail("No exception raised") + lines = [] + t = t.tb_next # Skip this function + while t: frame = t.tb_frame - if line is None: - self.assertEqual(frame.f_lineno, line) - else: - self.assertEqual(frame.f_lineno-frame.f_code.co_firstlineno, line) + lines.append( + None if frame.f_lineno is None else + frame.f_lineno-frame.f_code.co_firstlineno + ) + t = t.tb_next + self.assertEqual(tuple(lines), expected) def test_lineno_after_raise_simple(self): def simple(): @@ -2250,5 +2255,17 @@ def f(): f.__code__ = f.__code__.replace(co_linetable=b'\x04\x80\xff\x80') self.lineno_after_raise(f, None) + def test_lineno_after_raise_in_with_exit(self): + class ExitFails: + def __enter__(self): + return self + def __exit__(self, *args): + raise ValueError + + def after_with(): + with ExitFails(): + 1/0 + self.lineno_after_raise(after_with, 1, 1) + if __name__ == '__main__': unittest.main() From webhook-mailer at python.org Thu Jun 24 08:12:16 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 24 Jun 2021 12:12:16 -0000 Subject: [Python-checkins] bpo-43916: Use test.support.check_disallow_instantiation() in test_tcl (GH-26412) (GH-26888) Message-ID: https://github.com/python/cpython/commit/733587011dbb47c2e461188f0574e1cc5288062a commit: 733587011dbb47c2e461188f0574e1cc5288062a branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2021-06-24T14:12:11+02:00 summary: bpo-43916: Use test.support.check_disallow_instantiation() in test_tcl (GH-26412) (GH-26888) (cherry picked from commit e90e0422182f4ca7faefd19c629f84aebb34e2ee) Co-authored-by: Erlend Egeberg Aasland files: M Lib/test/test_tcl.py diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py index cd3aacf6f8844..e7a60db777820 100644 --- a/Lib/test/test_tcl.py +++ b/Lib/test/test_tcl.py @@ -738,9 +738,9 @@ def check(value): @support.cpython_only def test_new_tcl_obj(self): - self.assertRaises(TypeError, _tkinter.Tcl_Obj) - self.assertRaises(TypeError, _tkinter.TkttType) - self.assertRaises(TypeError, _tkinter.TkappType) + support.check_disallow_instantiation(self, _tkinter.Tcl_Obj) + support.check_disallow_instantiation(self, _tkinter.TkttType) + support.check_disallow_instantiation(self, _tkinter.TkappType) class BigmemTclTest(unittest.TestCase): From webhook-mailer at python.org Thu Jun 24 08:16:11 2021 From: webhook-mailer at python.org (isidentical) Date: Thu, 24 Jun 2021 12:16:11 -0000 Subject: [Python-checkins] bpo-40528: move asdl identifier collection to the new metadata system (GH-26858) Message-ID: https://github.com/python/cpython/commit/6c76df2b86d742cc294beae7f9b6bafabb946ad5 commit: 6c76df2b86d742cc294beae7f9b6bafabb946ad5 branch: main author: Batuhan Taskaya committer: isidentical date: 2021-06-24T15:16:00+03:00 summary: bpo-40528: move asdl identifier collection to the new metadata system (GH-26858) files: M Parser/asdl_c.py diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index 371730a13f057..21e50442b8bb7 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -103,21 +103,9 @@ class EmitVisitor(asdl.VisitorBase): def __init__(self, file, metadata = None): self.file = file - self.identifiers = set() - self.singletons = set() - self.types = set() self._metadata = metadata super(EmitVisitor, self).__init__() - def emit_identifier(self, name): - self.identifiers.add(str(name)) - - def emit_singleton(self, name): - self.singletons.add(str(name)) - - def emit_type(self, name): - self.types.add(str(name)) - def emit(self, s, depth, reflow=True): # XXX reflow long lines? if reflow: @@ -143,6 +131,8 @@ def metadata(self, value): self._metadata = value class MetadataVisitor(asdl.VisitorBase): + ROOT_TYPE = "AST" + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -151,8 +141,16 @@ def __init__(self, *args, **kwargs): # names where all the constructors # belonging to that type lack of any # fields. + # - identifiers: All identifiers used in the AST decclarations + # - singletons: List of all constructors that originates from + # simple sums. + # - types: List of all top level type names + # self.metadata = types.SimpleNamespace( - simple_sums=set() + simple_sums=set(), + identifiers=set(), + singletons=set(), + types={self.ROOT_TYPE}, ) def visitModule(self, mod): @@ -163,9 +161,35 @@ def visitType(self, type): self.visit(type.value, type.name) def visitSum(self, sum, name): - if is_simple(sum): + self.metadata.types.add(name) + + simple_sum = is_simple(sum) + if simple_sum: self.metadata.simple_sums.add(name) + for constructor in sum.types: + if simple_sum: + self.metadata.singletons.add(constructor.name) + self.visitConstructor(constructor) + self.visitFields(sum.attributes) + + def visitConstructor(self, constructor): + self.metadata.types.add(constructor.name) + self.visitFields(constructor.fields) + + def visitProduct(self, product, name): + self.metadata.types.add(name) + self.visitFields(product.attributes) + self.visitFields(product.fields) + + def visitFields(self, fields): + for field in fields: + self.visitField(field) + + def visitField(self, field): + self.metadata.identifiers.add(field.name) + + class TypeDefVisitor(EmitVisitor): def visitModule(self, mod): for dfn in mod.dfns: @@ -683,28 +707,20 @@ def emit_sequence_constructor(self, name, type): class PyTypesDeclareVisitor(PickleVisitor): def visitProduct(self, prod, name): - self.emit_type("%s_type" % name) self.emit("static PyObject* ast2obj_%s(struct ast_state *state, void*);" % name, 0) if prod.attributes: - for a in prod.attributes: - self.emit_identifier(a.name) self.emit("static const char * const %s_attributes[] = {" % name, 0) for a in prod.attributes: self.emit('"%s",' % a.name, 1) self.emit("};", 0) if prod.fields: - for f in prod.fields: - self.emit_identifier(f.name) self.emit("static const char * const %s_fields[]={" % name,0) for f in prod.fields: self.emit('"%s",' % f.name, 1) self.emit("};", 0) def visitSum(self, sum, name): - self.emit_type("%s_type" % name) if sum.attributes: - for a in sum.attributes: - self.emit_identifier(a.name) self.emit("static const char * const %s_attributes[] = {" % name, 0) for a in sum.attributes: self.emit('"%s",' % a.name, 1) @@ -712,16 +728,12 @@ def visitSum(self, sum, name): ptype = "void*" if is_simple(sum): ptype = get_c_type(name) - for t in sum.types: - self.emit_singleton("%s_singleton" % t.name) self.emit("static PyObject* ast2obj_%s(struct ast_state *state, %s);" % (name, ptype), 0) for t in sum.types: self.visitConstructor(t, name) def visitConstructor(self, cons, name): if cons.fields: - for t in cons.fields: - self.emit_identifier(t.name) self.emit("static const char * const %s_fields[]={" % cons.name, 0) for t in cons.fields: self.emit('"%s",' % t.name, 1) @@ -1099,8 +1111,6 @@ def visitProduct(self, prod, name): (name, name, fields, len(prod.fields)), 1) self.emit('%s);' % reflow_c_string(asdl_of(name, prod), 2), 2, reflow=False) self.emit("if (!state->%s_type) return 0;" % name, 1) - self.emit_type("AST_type") - self.emit_type("%s_type" % name) if prod.attributes: self.emit("if (!add_attributes(state, state->%s_type, %s_attributes, %d)) return 0;" % (name, name, len(prod.attributes)), 1) @@ -1113,7 +1123,6 @@ def visitSum(self, sum, name): self.emit('state->%s_type = make_type(state, "%s", state->AST_type, NULL, 0,' % (name, name), 1) self.emit('%s);' % reflow_c_string(asdl_of(name, sum), 2), 2, reflow=False) - self.emit_type("%s_type" % name) self.emit("if (!state->%s_type) return 0;" % name, 1) if sum.attributes: self.emit("if (!add_attributes(state, state->%s_type, %s_attributes, %d)) return 0;" % @@ -1134,7 +1143,6 @@ def visitConstructor(self, cons, name, simple): (cons.name, cons.name, name, fields, len(cons.fields)), 1) self.emit('%s);' % reflow_c_string(asdl_of(cons.name, cons), 2), 2, reflow=False) self.emit("if (!state->%s_type) return 0;" % cons.name, 1) - self.emit_type("%s_type" % cons.name) self.emit_defaults(cons.name, cons.fields, 1) if simple: self.emit("state->%s_singleton = PyType_GenericNew((PyTypeObject *)" @@ -1439,17 +1447,8 @@ def generate_ast_fini(module_state, f): """)) -def generate_module_def(mod, f, internal_h): +def generate_module_def(mod, metadata, f, internal_h): # Gather all the data needed for ModuleSpec - visitor_list = set() - with open(os.devnull, "w") as devnull: - visitor = PyTypesDeclareVisitor(devnull) - visitor.visit(mod) - visitor_list.add(visitor) - visitor = PyTypesVisitor(devnull) - visitor.visit(mod) - visitor_list.add(visitor) - state_strings = { "ast", "_fields", @@ -1458,16 +1457,19 @@ def generate_module_def(mod, f, internal_h): "__dict__", "__module__", "_attributes", + *metadata.identifiers } + module_state = state_strings.copy() - for visitor in visitor_list: - for identifier in visitor.identifiers: - module_state.add(identifier) - state_strings.add(identifier) - for singleton in visitor.singletons: - module_state.add(singleton) - for tp in visitor.types: - module_state.add(tp) + module_state.update( + "%s_singleton" % singleton + for singleton in metadata.singletons + ) + module_state.update( + "%s_type" % type + for type in metadata.types + ) + state_strings = sorted(state_strings) module_state = sorted(module_state) @@ -1583,7 +1585,7 @@ def write_internal_h_footer(mod, f): """), file=f) def write_source(mod, metadata, f, internal_h_file): - generate_module_def(mod, f, internal_h_file) + generate_module_def(mod, metadata, f, internal_h_file) v = ChainOfVisitors( SequenceConstructorVisitor(f), From webhook-mailer at python.org Thu Jun 24 08:25:50 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Jun 2021 12:25:50 -0000 Subject: [Python-checkins] bpo-44229: Ignore spurious EPROTOTYPE on macOS in test_ssl (GH-26893) Message-ID: https://github.com/python/cpython/commit/0796e21fea31fe7b697d84c8d03186817792c458 commit: 0796e21fea31fe7b697d84c8d03186817792c458 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-24T05:25:41-07:00 summary: bpo-44229: Ignore spurious EPROTOTYPE on macOS in test_ssl (GH-26893) (cherry picked from commit b5a52eef67997246b4235b5407e52a01e822ce56) Co-authored-by: Erlend Egeberg Aasland files: M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index c69f0d8bffc0a..f928bcea2d1a5 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2385,9 +2385,14 @@ def wrap_conn(self): self.server.conn_errors.append(str(e)) if self.server.chatty: handle_error("\n server: bad connection attempt from " + repr(self.addr) + ":\n") - self.running = False - self.server.stop() - self.close() + + # bpo-44229, bpo-43855, bpo-44237, and bpo-33450: + # Ignore spurious EPROTOTYPE returned by write() on macOS. + # See also http://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ + if e.errno != errno.EPROTOTYPE and sys.platform != "darwin": + self.running = False + self.server.stop() + self.close() return False else: self.server.shared_ciphers.append(self.sslconn.shared_ciphers()) From webhook-mailer at python.org Thu Jun 24 08:27:44 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Jun 2021 12:27:44 -0000 Subject: [Python-checkins] bpo-44229: Ignore spurious EPROTOTYPE on macOS in test_ssl (GH-26893) Message-ID: https://github.com/python/cpython/commit/b3fac2926b23b4f1342099e591aa3fed7f16876d commit: b3fac2926b23b4f1342099e591aa3fed7f16876d branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-24T05:27:35-07:00 summary: bpo-44229: Ignore spurious EPROTOTYPE on macOS in test_ssl (GH-26893) (cherry picked from commit b5a52eef67997246b4235b5407e52a01e822ce56) Co-authored-by: Erlend Egeberg Aasland files: M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 1a2f0fc6b69fa..a89768f24b2b0 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2443,9 +2443,14 @@ def wrap_conn(self): self.server.conn_errors.append(str(e)) if self.server.chatty: handle_error("\n server: bad connection attempt from " + repr(self.addr) + ":\n") - self.running = False - self.server.stop() - self.close() + + # bpo-44229, bpo-43855, bpo-44237, and bpo-33450: + # Ignore spurious EPROTOTYPE returned by write() on macOS. + # See also http://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ + if e.errno != errno.EPROTOTYPE and sys.platform != "darwin": + self.running = False + self.server.stop() + self.close() return False else: self.server.shared_ciphers.append(self.sslconn.shared_ciphers()) From webhook-mailer at python.org Thu Jun 24 08:57:36 2021 From: webhook-mailer at python.org (encukou) Date: Thu, 24 Jun 2021 12:57:36 -0000 Subject: [Python-checkins] bpo-40939: Remove documentation for `PyParser_*` & add porting notes (GH-26855) Message-ID: https://github.com/python/cpython/commit/29987f72650b7cccee4df216c8297e8484a44e6a commit: 29987f72650b7cccee4df216c8297e8484a44e6a branch: main author: Petr Viktorin committer: encukou date: 2021-06-24T14:57:28+02:00 summary: bpo-40939: Remove documentation for `PyParser_*` & add porting notes (GH-26855) I tried to be relatively thorough and give lots of links. One reason is that this wasn't deprecated very long; also it seems people running into this tend to not be familiar with similar APIs. Co-authored-by: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> files: A Misc/NEWS.d/next/C API/2021-06-22-17-00-06.bpo-40939.CGB0I5.rst M Doc/c-api/veryhigh.rst M Doc/data/refcounts.dat M Doc/faq/extending.rst M Doc/whatsnew/3.10.rst diff --git a/Doc/c-api/veryhigh.rst b/Doc/c-api/veryhigh.rst index 0f760eaa7ad578..3354a2b976f343 100644 --- a/Doc/c-api/veryhigh.rst +++ b/Doc/c-api/veryhigh.rst @@ -185,42 +185,6 @@ the same library that the Python runtime is using. :c:func:`PyMem_RawRealloc`, instead of being allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`. - -.. c:function:: struct _node* PyParser_SimpleParseString(const char *str, int start) - - This is a simplified interface to - :c:func:`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set - to ``NULL`` and *flags* set to ``0``. - - -.. c:function:: struct _node* PyParser_SimpleParseStringFlags( const char *str, int start, int flags) - - This is a simplified interface to - :c:func:`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set - to ``NULL``. - - -.. c:function:: struct _node* PyParser_SimpleParseStringFlagsFilename( const char *str, const char *filename, int start, int flags) - - Parse Python source code from *str* using the start token *start* according to - the *flags* argument. The result can be used to create a code object which can - be evaluated efficiently. This is useful if a code fragment must be evaluated - many times. *filename* is decoded from the :term:`filesystem encoding and - error handler`. - - -.. c:function:: struct _node* PyParser_SimpleParseFile(FILE *fp, const char *filename, int start) - - This is a simplified interface to :c:func:`PyParser_SimpleParseFileFlags` below, - leaving *flags* set to ``0``. - - -.. c:function:: struct _node* PyParser_SimpleParseFileFlags(FILE *fp, const char *filename, int start, int flags) - - Similar to :c:func:`PyParser_SimpleParseStringFlagsFilename`, but the Python - source code is read from *fp* instead of an in-memory string. - - .. c:function:: PyObject* PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals) This is a simplified interface to :c:func:`PyRun_StringFlags` below, leaving diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index f3aacb8ed8ed0d..22dae0c1ef1afd 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -1791,32 +1791,6 @@ PyObject_TypeCheck:int::: PyObject_TypeCheck:PyObject*:o:0: PyObject_TypeCheck:PyTypeObject*:type:0: -PyParser_SimpleParseFile:struct _node*::: -PyParser_SimpleParseFile:FILE*:fp:: -PyParser_SimpleParseFile:const char*:filename:: -PyParser_SimpleParseFile:int:start:: - -PyParser_SimpleParseFileFlags:struct _node*::: -PyParser_SimpleParseFileFlags:FILE*:fp:: -PyParser_SimpleParseFileFlags:const char*:filename:: -PyParser_SimpleParseFileFlags:int:start:: -PyParser_SimpleParseFileFlags:int:flags:: - -PyParser_SimpleParseString:struct _node*::: -PyParser_SimpleParseString:const char*:str:: -PyParser_SimpleParseString:int:start:: - -PyParser_SimpleParseStringFlags:struct _node*::: -PyParser_SimpleParseStringFlags:const char*:str:: -PyParser_SimpleParseStringFlags:int:start:: -PyParser_SimpleParseStringFlags:int:flags:: - -PyParser_SimpleParseStringFlagsFilename:struct _node*::: -PyParser_SimpleParseStringFlagsFilename:const char*:str:: -PyParser_SimpleParseStringFlagsFilename:const char*:filename:: -PyParser_SimpleParseStringFlagsFilename:int:start:: -PyParser_SimpleParseStringFlagsFilename:int:flags:: - PyRun_AnyFile:int::: PyRun_AnyFile:FILE*:fp:: PyRun_AnyFile:const char*:filename:: diff --git a/Doc/faq/extending.rst b/Doc/faq/extending.rst index aecb56eaa4fd2f..3379e41d9de072 100644 --- a/Doc/faq/extending.rst +++ b/Doc/faq/extending.rst @@ -275,39 +275,8 @@ for more hints. However sometimes you have to run the embedded Python interpreter in the same thread as your rest application and you can't allow the -:c:func:`PyRun_InteractiveLoop` to stop while waiting for user input. The one -solution then is to call :c:func:`PyParser_ParseString` and test for ``e.error`` -equal to ``E_EOF``, which means the input is incomplete. Here's a sample code -fragment, untested, inspired by code from Alex Farber:: - - #define PY_SSIZE_T_CLEAN - #include - #include - #include - #include - #include - #include - - int testcomplete(char *code) - /* code should end in \n */ - /* return -1 for error, 0 for incomplete, 1 for complete */ - { - node *n; - perrdetail e; - - n = PyParser_ParseString(code, &_PyParser_Grammar, - Py_file_input, &e); - if (n == NULL) { - if (e.error == E_EOF) - return 0; - return -1; - } - - PyNode_Free(n); - return 1; - } - -Another solution is trying to compile the received string with +:c:func:`PyRun_InteractiveLoop` to stop while waiting for user input. +A solution is trying to compile the received string with :c:func:`Py_CompileString`. If it compiles without errors, try to execute the returned code object by calling :c:func:`PyEval_EvalCode`. Otherwise save the input for later. If the compilation fails, find out if it's an error or just diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 54740628ddeb37..c548ae9347cd79 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1683,9 +1683,9 @@ Removed that were only being used by the old parser, including ``node.h``, ``parser.h``, ``graminit.h`` and ``grammar.h``. -* Removed the Public C API functions :c:func:`PyParser_SimpleParseStringFlags`, - :c:func:`PyParser_SimpleParseStringFlagsFilename`, - :c:func:`PyParser_SimpleParseFileFlags` and :c:func:`PyNode_Compile` +* Removed the Public C API functions ``PyParser_SimpleParseStringFlags``, + ``PyParser_SimpleParseStringFlagsFilename``, + ``PyParser_SimpleParseFileFlags`` and ``PyNode_Compile`` that were deprecated in 3.9 due to the switch to the new PEG parser. * Removed the ``formatter`` module, which was deprecated in Python 3.4. @@ -1799,6 +1799,41 @@ Changes in the Python API also inherits the current builtins. (Contributed by Victor Stinner in :issue:`42990`.) +Changes in the C API +-------------------- + +* The C API functions ``PyParser_SimpleParseStringFlags``, + ``PyParser_SimpleParseStringFlagsFilename``, + ``PyParser_SimpleParseFileFlags``, ``PyNode_Compile`` and the type + used by these functions, ``struct _node``, were removed due to the switch + to the new PEG parser. + + Source should be now be compiled directly to a code object using, for + example, :c:func:`Py_CompileString`. The resulting code object can then be + evaluated using, for example, :c:func:`PyEval_EvalCode`. + + Specifically: + + * A call to ``PyParser_SimpleParseStringFlags`` followed by + ``PyNode_Compile`` can be replaced by calling :c:func:`Py_CompileString`. + + * There is no direct replacement for ``PyParser_SimpleParseFileFlags``. + To compile code from a ``FILE *`` argument, you will need to read + the file in C and pass the resulting buffer to :c:func:`Py_CompileString`. + + * To compile a file given a ``char *`` filename, explicitly open the file, read + it and compile the result. One way to do this is using the :py:mod:`io` + module with :c:func:`PyImport_ImportModule`, :c:func:`PyObject_CallMethod`, + :c:func:`PyBytes_AsString` and :c:func:`Py_CompileString`, + as sketched below. (Declarations and error handling are omitted.) :: + + io_module = Import_ImportModule("io"); + fileobject = PyObject_CallMethod(io_module, "open", "ss", filename, "rb"); + source_bytes_object = PyObject_CallMethod(fileobject, "read", ""); + result = PyObject_CallMethod(fileobject, "close", ""); + source_buf = PyBytes_AsString(source_bytes_object); + code = Py_CompileString(source_buf, filename, Py_file_input); + CPython bytecode changes ======================== diff --git a/Misc/NEWS.d/next/C API/2021-06-22-17-00-06.bpo-40939.CGB0I5.rst b/Misc/NEWS.d/next/C API/2021-06-22-17-00-06.bpo-40939.CGB0I5.rst new file mode 100644 index 00000000000000..2531ac1ba3c12c --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-22-17-00-06.bpo-40939.CGB0I5.rst @@ -0,0 +1 @@ +Removed documentation for the removed ``PyParser_*`` C API. From webhook-mailer at python.org Thu Jun 24 09:01:54 2021 From: webhook-mailer at python.org (nanjekyejoannah) Date: Thu, 24 Jun 2021 13:01:54 -0000 Subject: [Python-checkins] Fix typo in whatsnew 3.10.rst (GH-26854) Message-ID: https://github.com/python/cpython/commit/599c07006a636b0a6904008534118a9ba3daf726 commit: 599c07006a636b0a6904008534118a9ba3daf726 branch: main author: Arnon Yaari committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2021-06-24T10:01:42-03:00 summary: Fix typo in whatsnew 3.10.rst (GH-26854) Thanks for the fix @wiggin15 . files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index c548ae9347cd7..63d1bd02c68b9 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1474,7 +1474,7 @@ Deprecated this release, a deprecation warning is raised if the numeric literal is immediately followed by one of keywords :keyword:`and`, :keyword:`else`, :keyword:`for`, :keyword:`if`, :keyword:`in`, :keyword:`is` and :keyword:`or`. - If future releases it will be changed to syntax warning, and finally to + In future releases it will be changed to syntax warning, and finally to syntax error. (Contributed by Serhiy Storchaka in :issue:`43833`). From webhook-mailer at python.org Thu Jun 24 10:13:00 2021 From: webhook-mailer at python.org (markshannon) Date: Thu, 24 Jun 2021 14:13:00 -0000 Subject: [Python-checkins] Make sure that line number is set correctly for call to __exit__ when handling exception in body of a with statement. (GH-26890) Message-ID: https://github.com/python/cpython/commit/18ba1ff6a4eb284aefb8d157d5e574d8326a395d commit: 18ba1ff6a4eb284aefb8d157d5e574d8326a395d branch: main author: Mark Shannon committer: markshannon date: 2021-06-24T15:12:48+01:00 summary: Make sure that line number is set correctly for call to __exit__ when handling exception in body of a with statement. (GH-26890) files: M Lib/test/test_exceptions.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index d444a122af9be..8f689546a6229 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -2160,18 +2160,23 @@ def test_incorrect_constructor(self): class PEP626Tests(unittest.TestCase): - def lineno_after_raise(self, f, line): + def lineno_after_raise(self, f, *expected): try: f() except Exception as ex: t = ex.__traceback__ - while t.tb_next: - t = t.tb_next + else: + self.fail("No exception raised") + lines = [] + t = t.tb_next # Skip this function + while t: frame = t.tb_frame - if line is None: - self.assertEqual(frame.f_lineno, line) - else: - self.assertEqual(frame.f_lineno-frame.f_code.co_firstlineno, line) + lines.append( + None if frame.f_lineno is None else + frame.f_lineno-frame.f_code.co_firstlineno + ) + t = t.tb_next + self.assertEqual(tuple(lines), expected) def test_lineno_after_raise_simple(self): def simple(): @@ -2250,5 +2255,17 @@ def f(): f.__code__ = f.__code__.replace(co_linetable=b'\x04\x80\xff\x80') self.lineno_after_raise(f, None) + def test_lineno_after_raise_in_with_exit(self): + class ExitFails: + def __enter__(self): + return self + def __exit__(self, *args): + raise ValueError + + def after_with(): + with ExitFails(): + 1/0 + self.lineno_after_raise(after_with, 1, 1) + if __name__ == '__main__': unittest.main() diff --git a/Python/compile.c b/Python/compile.c index 9118d12821353..52d29877a5f0a 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -5053,6 +5053,7 @@ compiler_visit_keyword(struct compiler *c, keyword_ty k) static int compiler_with_except_finish(struct compiler *c, basicblock * cleanup) { + c->u->u_lineno = -1; basicblock *exit; exit = compiler_new_block(c); if (exit == NULL) @@ -5168,7 +5169,6 @@ compiler_async_with(struct compiler *c, stmt_ty s, int pos) /* For exceptional outcome: */ compiler_use_next_block(c, final); - c->u->u_lineno = -1; ADDOP_JUMP(c, SETUP_CLEANUP, cleanup); ADDOP(c, PUSH_EXC_INFO); @@ -5265,7 +5265,6 @@ compiler_with(struct compiler *c, stmt_ty s, int pos) /* For exceptional outcome: */ compiler_use_next_block(c, final); - c->u->u_lineno = -1; ADDOP_JUMP(c, SETUP_CLEANUP, cleanup); ADDOP(c, PUSH_EXC_INFO); diff --git a/Python/importlib.h b/Python/importlib.h index 998d5bdaae0d0..825c5aa312b1c 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -182,1007 +182,1147 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 97,99,113,117,105,114,101,114,32,0,0,0,218,7,114,101, 108,101,97,115,101,169,2,114,34,0,0,0,114,41,0,0, 0,115,2,0,0,0,32,32,114,5,0,0,0,114,44,0, - 0,0,100,0,0,0,115,44,0,0,0,8,6,8,1,2, + 0,0,100,0,0,0,115,46,0,0,0,8,6,8,1,2, 1,2,1,8,1,20,1,6,1,14,1,2,1,10,252,10, - 13,8,248,12,1,12,1,14,1,12,248,22,128,10,10,10, - 1,2,244,2,128,10,14,115,56,0,0,0,137,4,65,32, - 0,141,22,65,10,3,163,5,65,32,0,173,23,65,10,3, - 193,4,6,65,32,0,193,10,4,65,14,11,193,14,1,65, - 32,0,193,15,3,65,14,11,193,18,14,65,32,0,193,32, - 5,65,37,7,122,19,95,77,111,100,117,108,101,76,111,99, - 107,46,97,99,113,117,105,114,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,148, - 0,0,0,116,0,160,1,161,0,125,1,124,0,106,2,53, - 0,1,0,124,0,106,3,124,1,107,3,114,17,116,4,100, - 1,131,1,130,1,124,0,106,5,100,2,107,4,115,24,74, - 0,130,1,124,0,4,0,106,5,100,3,56,0,2,0,95, - 5,124,0,106,5,100,2,107,2,114,54,100,0,124,0,95, - 3,124,0,106,6,114,54,124,0,4,0,106,6,100,3,56, - 0,2,0,95,6,124,0,106,7,160,8,161,0,1,0,100, - 0,4,0,4,0,131,3,1,0,100,0,83,0,35,0,49, - 0,115,66,119,4,37,0,1,0,1,0,1,0,89,0,1, - 0,1,0,100,0,83,0,41,4,78,250,31,99,97,110,110, - 111,116,32,114,101,108,101,97,115,101,32,117,110,45,97,99, - 113,117,105,114,101,100,32,108,111,99,107,114,26,0,0,0, - 114,43,0,0,0,41,9,114,27,0,0,0,114,36,0,0, - 0,114,28,0,0,0,114,30,0,0,0,218,12,82,117,110, - 116,105,109,101,69,114,114,111,114,114,31,0,0,0,114,32, - 0,0,0,114,29,0,0,0,114,45,0,0,0,114,46,0, - 0,0,115,2,0,0,0,32,32,114,5,0,0,0,114,45, - 0,0,0,125,0,0,0,115,28,0,0,0,8,1,8,1, - 10,1,8,1,14,1,14,1,10,1,6,1,6,1,14,1, - 10,1,14,247,22,128,4,0,115,15,0,0,0,135,47,61, - 3,189,4,65,1,11,193,2,3,65,1,11,122,19,95,77, - 111,100,117,108,101,76,111,99,107,46,114,101,108,101,97,115, - 101,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,243,18,0,0,0,100,1,160,0,124, - 0,106,1,116,2,124,0,131,1,161,2,83,0,41,2,78, - 122,23,95,77,111,100,117,108,101,76,111,99,107,40,123,33, - 114,125,41,32,97,116,32,123,125,169,3,218,6,102,111,114, - 109,97,116,114,20,0,0,0,218,2,105,100,169,1,114,34, - 0,0,0,115,1,0,0,0,32,114,5,0,0,0,218,8, - 95,95,114,101,112,114,95,95,138,0,0,0,243,2,0,0, - 0,18,1,114,17,0,0,0,122,20,95,77,111,100,117,108, - 101,76,111,99,107,46,95,95,114,101,112,114,95,95,78,41, - 9,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, - 114,9,0,0,0,114,35,0,0,0,114,42,0,0,0,114, - 44,0,0,0,114,45,0,0,0,114,54,0,0,0,114,23, - 0,0,0,114,17,0,0,0,114,5,0,0,0,114,24,0, - 0,0,65,0,0,0,115,14,0,0,0,8,0,4,1,8, - 5,8,8,8,21,8,25,12,13,114,17,0,0,0,114,24, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,0,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, - 16,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, - 107,122,86,65,32,115,105,109,112,108,101,32,95,77,111,100, - 117,108,101,76,111,99,107,32,101,113,117,105,118,97,108,101, - 110,116,32,102,111,114,32,80,121,116,104,111,110,32,98,117, - 105,108,100,115,32,119,105,116,104,111,117,116,10,32,32,32, - 32,109,117,108,116,105,45,116,104,114,101,97,100,105,110,103, - 32,115,117,112,112,111,114,116,46,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,115,16, - 0,0,0,124,1,124,0,95,0,100,1,124,0,95,1,100, - 0,83,0,114,25,0,0,0,41,2,114,20,0,0,0,114, - 31,0,0,0,114,33,0,0,0,115,2,0,0,0,32,32, - 114,5,0,0,0,114,35,0,0,0,146,0,0,0,243,4, - 0,0,0,6,1,10,1,114,17,0,0,0,122,25,95,68, - 117,109,109,121,77,111,100,117,108,101,76,111,99,107,46,95, - 95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,3,0,0,0,115,18,0,0, - 0,124,0,4,0,106,0,100,1,55,0,2,0,95,0,100, - 2,83,0,41,3,78,114,43,0,0,0,84,41,1,114,31, - 0,0,0,114,53,0,0,0,115,1,0,0,0,32,114,5, - 0,0,0,114,44,0,0,0,150,0,0,0,115,4,0,0, - 0,14,1,4,1,114,17,0,0,0,122,24,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,46,97,99,113, - 117,105,114,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,3,0,0,0,115,36,0,0,0,124,0, - 106,0,100,1,107,2,114,9,116,1,100,2,131,1,130,1, - 124,0,4,0,106,0,100,3,56,0,2,0,95,0,100,0, - 83,0,41,4,78,114,26,0,0,0,114,47,0,0,0,114, - 43,0,0,0,41,2,114,31,0,0,0,114,48,0,0,0, - 114,53,0,0,0,115,1,0,0,0,32,114,5,0,0,0, - 114,45,0,0,0,154,0,0,0,115,6,0,0,0,10,1, - 8,1,18,1,114,17,0,0,0,122,24,95,68,117,109,109, - 121,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, + 13,8,248,12,1,12,1,14,1,20,248,2,128,12,0,10, + 10,10,1,2,244,2,128,10,14,115,56,0,0,0,137,4, + 65,32,0,141,22,65,10,3,163,5,65,32,0,173,23,65, + 10,3,193,4,6,65,32,0,193,10,4,65,14,11,193,14, + 1,65,32,0,193,15,3,65,14,11,193,18,14,65,32,0, + 193,32,5,65,37,7,122,19,95,77,111,100,117,108,101,76, + 111,99,107,46,97,99,113,117,105,114,101,99,1,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,3,0,0,0, + 115,148,0,0,0,116,0,160,1,161,0,125,1,124,0,106, + 2,53,0,1,0,124,0,106,3,124,1,107,3,114,17,116, + 4,100,1,131,1,130,1,124,0,106,5,100,2,107,4,115, + 24,74,0,130,1,124,0,4,0,106,5,100,3,56,0,2, + 0,95,5,124,0,106,5,100,2,107,2,114,54,100,0,124, + 0,95,3,124,0,106,6,114,54,124,0,4,0,106,6,100, + 3,56,0,2,0,95,6,124,0,106,7,160,8,161,0,1, + 0,100,0,4,0,4,0,131,3,1,0,100,0,83,0,35, + 0,49,0,115,66,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,100,0,83,0,41,4,78,250,31,99,97, + 110,110,111,116,32,114,101,108,101,97,115,101,32,117,110,45, + 97,99,113,117,105,114,101,100,32,108,111,99,107,114,26,0, + 0,0,114,43,0,0,0,41,9,114,27,0,0,0,114,36, + 0,0,0,114,28,0,0,0,114,30,0,0,0,218,12,82, + 117,110,116,105,109,101,69,114,114,111,114,114,31,0,0,0, + 114,32,0,0,0,114,29,0,0,0,114,45,0,0,0,114, + 46,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, + 114,45,0,0,0,125,0,0,0,115,28,0,0,0,8,1, + 8,1,10,1,8,1,14,1,14,1,10,1,6,1,6,1, + 14,1,10,1,22,247,2,128,16,0,115,15,0,0,0,135, + 47,61,3,189,4,65,1,11,193,2,3,65,1,11,122,19, + 95,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, 97,115,101,99,1,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,3,0,0,0,114,49,0,0,0,41,2,78, - 122,28,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,40,123,33,114,125,41,32,97,116,32,123,125,114,50, - 0,0,0,114,53,0,0,0,115,1,0,0,0,32,114,5, - 0,0,0,114,54,0,0,0,159,0,0,0,114,55,0,0, - 0,114,17,0,0,0,122,25,95,68,117,109,109,121,77,111, - 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, - 95,78,41,8,114,8,0,0,0,114,7,0,0,0,114,1, - 0,0,0,114,9,0,0,0,114,35,0,0,0,114,44,0, - 0,0,114,45,0,0,0,114,54,0,0,0,114,23,0,0, - 0,114,17,0,0,0,114,5,0,0,0,114,56,0,0,0, - 142,0,0,0,115,12,0,0,0,8,0,4,1,8,3,8, - 4,8,4,12,5,114,17,0,0,0,114,56,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 0,0,0,0,115,36,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,83,0,41,8,218, - 18,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, - 103,101,114,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,115,16,0,0,0,124,1,124, - 0,95,0,100,0,124,0,95,1,100,0,83,0,114,0,0, - 0,0,41,2,218,5,95,110,97,109,101,218,5,95,108,111, - 99,107,114,33,0,0,0,115,2,0,0,0,32,32,114,5, - 0,0,0,114,35,0,0,0,165,0,0,0,114,57,0,0, - 0,114,17,0,0,0,122,27,95,77,111,100,117,108,101,76, - 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,115,26,0,0,0,116,0,124, - 0,106,1,131,1,124,0,95,2,124,0,106,2,160,3,161, - 0,1,0,100,0,83,0,114,0,0,0,0,41,4,218,16, - 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, - 114,59,0,0,0,114,60,0,0,0,114,44,0,0,0,114, - 53,0,0,0,115,1,0,0,0,32,114,5,0,0,0,218, - 9,95,95,101,110,116,101,114,95,95,169,0,0,0,115,4, - 0,0,0,12,1,14,1,114,17,0,0,0,122,28,95,77, - 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, - 46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,15,0,0,0,115, - 14,0,0,0,124,0,106,0,160,1,161,0,1,0,100,0, - 83,0,114,0,0,0,0,41,2,114,60,0,0,0,114,45, - 0,0,0,41,3,114,34,0,0,0,218,4,97,114,103,115, - 90,6,107,119,97,114,103,115,115,3,0,0,0,32,32,32, - 114,5,0,0,0,218,8,95,95,101,120,105,116,95,95,173, - 0,0,0,115,2,0,0,0,14,1,114,17,0,0,0,122, - 27,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, - 103,101,114,46,95,95,101,120,105,116,95,95,78,41,6,114, - 8,0,0,0,114,7,0,0,0,114,1,0,0,0,114,35, - 0,0,0,114,62,0,0,0,114,64,0,0,0,114,23,0, - 0,0,114,17,0,0,0,114,5,0,0,0,114,58,0,0, - 0,163,0,0,0,115,8,0,0,0,8,0,8,2,8,4, - 12,4,114,17,0,0,0,114,58,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0, - 0,115,138,0,0,0,116,0,160,1,161,0,1,0,9,0, - 9,0,116,2,124,0,25,0,131,0,125,1,110,12,35,0, - 4,0,116,3,121,68,1,0,1,0,1,0,100,1,125,1, - 89,0,110,1,37,0,124,1,100,1,117,0,114,55,116,4, - 100,1,117,0,114,37,116,5,124,0,131,1,125,1,110,4, - 116,6,124,0,131,1,125,1,124,0,102,1,100,2,100,3, - 132,1,125,2,116,7,160,8,124,1,124,2,161,2,116,2, - 124,0,60,0,116,0,160,9,161,0,1,0,124,1,83,0, - 35,0,116,0,160,9,161,0,1,0,119,0,37,0,119,0, - 41,4,122,139,71,101,116,32,111,114,32,99,114,101,97,116, - 101,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99, - 107,32,102,111,114,32,97,32,103,105,118,101,110,32,109,111, - 100,117,108,101,32,110,97,109,101,46,10,10,32,32,32,32, - 65,99,113,117,105,114,101,47,114,101,108,101,97,115,101,32, - 105,110,116,101,114,110,97,108,108,121,32,116,104,101,32,103, - 108,111,98,97,108,32,105,109,112,111,114,116,32,108,111,99, - 107,32,116,111,32,112,114,111,116,101,99,116,10,32,32,32, - 32,95,109,111,100,117,108,101,95,108,111,99,107,115,46,78, - 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,19,0,0,0,115,56,0,0,0,116,0,160,1,161,0, - 1,0,9,0,116,2,160,3,124,1,161,1,124,0,117,0, - 114,15,116,2,124,1,61,0,116,0,160,4,161,0,1,0, - 100,0,83,0,35,0,116,0,160,4,161,0,1,0,119,0, - 37,0,114,0,0,0,0,41,5,218,4,95,105,109,112,218, - 12,97,99,113,117,105,114,101,95,108,111,99,107,218,13,95, - 109,111,100,117,108,101,95,108,111,99,107,115,114,39,0,0, - 0,218,12,114,101,108,101,97,115,101,95,108,111,99,107,41, - 2,218,3,114,101,102,114,20,0,0,0,115,2,0,0,0, - 32,32,114,5,0,0,0,218,2,99,98,198,0,0,0,115, - 16,0,0,0,8,1,2,1,14,4,6,1,12,2,2,128, - 10,0,2,128,115,8,0,0,0,133,10,21,0,149,6,27, - 7,122,28,95,103,101,116,95,109,111,100,117,108,101,95,108, - 111,99,107,46,60,108,111,99,97,108,115,62,46,99,98,41, - 10,114,65,0,0,0,114,66,0,0,0,114,67,0,0,0, - 218,8,75,101,121,69,114,114,111,114,114,27,0,0,0,114, - 56,0,0,0,114,24,0,0,0,218,8,95,119,101,97,107, - 114,101,102,114,69,0,0,0,114,68,0,0,0,41,3,114, - 20,0,0,0,114,28,0,0,0,114,70,0,0,0,115,3, - 0,0,0,32,32,32,114,5,0,0,0,114,61,0,0,0, - 179,0,0,0,115,40,0,0,0,8,6,2,1,2,1,12, - 1,2,128,12,1,8,1,2,128,8,2,8,1,10,1,8, - 2,12,2,16,11,8,2,4,2,2,128,10,254,2,128,2, - 234,115,26,0,0,0,134,5,12,0,139,1,61,0,140,9, - 23,7,149,34,61,0,189,6,65,3,7,193,4,1,23,7, - 114,61,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,3,0,0,0,115,56,0,0,0,116, - 0,124,0,131,1,125,1,9,0,124,1,160,1,161,0,1, - 0,110,11,35,0,4,0,116,2,121,27,1,0,1,0,1, - 0,89,0,100,1,83,0,37,0,124,1,160,3,161,0,1, - 0,100,1,83,0,119,0,41,2,122,189,65,99,113,117,105, - 114,101,115,32,116,104,101,110,32,114,101,108,101,97,115,101, - 115,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99, - 107,32,102,111,114,32,97,32,103,105,118,101,110,32,109,111, - 100,117,108,101,32,110,97,109,101,46,10,10,32,32,32,32, - 84,104,105,115,32,105,115,32,117,115,101,100,32,116,111,32, - 101,110,115,117,114,101,32,97,32,109,111,100,117,108,101,32, - 105,115,32,99,111,109,112,108,101,116,101,108,121,32,105,110, - 105,116,105,97,108,105,122,101,100,44,32,105,110,32,116,104, - 101,10,32,32,32,32,101,118,101,110,116,32,105,116,32,105, - 115,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, - 32,98,121,32,97,110,111,116,104,101,114,32,116,104,114,101, - 97,100,46,10,32,32,32,32,78,41,4,114,61,0,0,0, - 114,44,0,0,0,114,22,0,0,0,114,45,0,0,0,41, - 2,114,20,0,0,0,114,28,0,0,0,115,2,0,0,0, - 32,32,114,5,0,0,0,218,19,95,108,111,99,107,95,117, - 110,108,111,99,107,95,109,111,100,117,108,101,216,0,0,0, - 115,18,0,0,0,8,6,2,1,10,1,2,128,12,1,6, - 3,2,128,12,2,2,251,115,12,0,0,0,133,4,10,0, - 138,7,20,7,155,1,20,7,114,73,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,15,0, - 0,0,115,14,0,0,0,124,0,124,1,105,0,124,2,164, - 1,142,1,83,0,41,2,97,46,1,0,0,114,101,109,111, - 118,101,95,105,109,112,111,114,116,108,105,98,95,102,114,97, - 109,101,115,32,105,110,32,105,109,112,111,114,116,46,99,32, - 119,105,108,108,32,97,108,119,97,121,115,32,114,101,109,111, - 118,101,32,115,101,113,117,101,110,99,101,115,10,32,32,32, - 32,111,102,32,105,109,112,111,114,116,108,105,98,32,102,114, - 97,109,101,115,32,116,104,97,116,32,101,110,100,32,119,105, - 116,104,32,97,32,99,97,108,108,32,116,111,32,116,104,105, - 115,32,102,117,110,99,116,105,111,110,10,10,32,32,32,32, - 85,115,101,32,105,116,32,105,110,115,116,101,97,100,32,111, - 102,32,97,32,110,111,114,109,97,108,32,99,97,108,108,32, - 105,110,32,112,108,97,99,101,115,32,119,104,101,114,101,32, - 105,110,99,108,117,100,105,110,103,32,116,104,101,32,105,109, - 112,111,114,116,108,105,98,10,32,32,32,32,102,114,97,109, - 101,115,32,105,110,116,114,111,100,117,99,101,115,32,117,110, - 119,97,110,116,101,100,32,110,111,105,115,101,32,105,110,116, - 111,32,116,104,101,32,116,114,97,99,101,98,97,99,107,32, - 40,101,46,103,46,32,119,104,101,110,32,101,120,101,99,117, - 116,105,110,103,10,32,32,32,32,109,111,100,117,108,101,32, - 99,111,100,101,41,10,32,32,32,32,78,114,23,0,0,0, - 41,3,218,1,102,114,63,0,0,0,90,4,107,119,100,115, - 115,3,0,0,0,32,32,32,114,5,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,233,0,0,0,115,2,0,0, - 0,14,8,114,17,0,0,0,114,75,0,0,0,114,43,0, - 0,0,41,1,218,9,118,101,114,98,111,115,105,116,121,99, - 1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 7,0,0,0,115,58,0,0,0,116,0,106,1,106,2,124, - 1,107,5,114,27,124,0,160,3,100,1,161,1,115,15,100, - 2,124,0,23,0,125,0,116,4,124,0,106,5,124,2,142, - 0,116,0,106,6,100,3,141,2,1,0,100,4,83,0,100, - 4,83,0,41,5,122,61,80,114,105,110,116,32,116,104,101, - 32,109,101,115,115,97,103,101,32,116,111,32,115,116,100,101, - 114,114,32,105,102,32,45,118,47,80,89,84,72,79,78,86, - 69,82,66,79,83,69,32,105,115,32,116,117,114,110,101,100, - 32,111,110,46,41,2,250,1,35,122,7,105,109,112,111,114, - 116,32,122,2,35,32,41,1,90,4,102,105,108,101,78,41, - 7,114,18,0,0,0,218,5,102,108,97,103,115,218,7,118, - 101,114,98,111,115,101,218,10,115,116,97,114,116,115,119,105, - 116,104,218,5,112,114,105,110,116,114,51,0,0,0,218,6, - 115,116,100,101,114,114,41,3,218,7,109,101,115,115,97,103, - 101,114,76,0,0,0,114,63,0,0,0,115,3,0,0,0, - 32,32,32,114,5,0,0,0,218,16,95,118,101,114,98,111, - 115,101,95,109,101,115,115,97,103,101,244,0,0,0,115,10, - 0,0,0,12,2,10,1,8,1,24,1,4,253,114,17,0, - 0,0,114,84,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,3,0,0,0,243,28,0,0, - 0,135,0,136,0,102,1,100,1,100,2,132,8,125,1,116, - 0,124,1,137,0,131,2,1,0,124,1,83,0,41,4,122, - 49,68,101,99,111,114,97,116,111,114,32,116,111,32,118,101, - 114,105,102,121,32,116,104,101,32,110,97,109,101,100,32,109, - 111,100,117,108,101,32,105,115,32,98,117,105,108,116,45,105, - 110,46,99,2,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,19,0,0,0,115,38,0,0,0,124,1,116,0, - 106,1,118,1,114,14,116,2,100,1,160,3,124,1,161,1, - 124,1,100,2,141,2,130,1,137,2,124,0,124,1,131,2, - 83,0,41,3,78,250,29,123,33,114,125,32,105,115,32,110, - 111,116,32,97,32,98,117,105,108,116,45,105,110,32,109,111, - 100,117,108,101,114,19,0,0,0,41,4,114,18,0,0,0, - 218,20,98,117,105,108,116,105,110,95,109,111,100,117,108,101, - 95,110,97,109,101,115,218,11,73,109,112,111,114,116,69,114, - 114,111,114,114,51,0,0,0,169,3,114,34,0,0,0,218, - 8,102,117,108,108,110,97,109,101,218,3,102,120,110,115,3, - 0,0,0,32,32,128,114,5,0,0,0,218,25,95,114,101, + 5,0,0,0,3,0,0,0,243,18,0,0,0,100,1,160, + 0,124,0,106,1,116,2,124,0,131,1,161,2,83,0,41, + 2,78,122,23,95,77,111,100,117,108,101,76,111,99,107,40, + 123,33,114,125,41,32,97,116,32,123,125,169,3,218,6,102, + 111,114,109,97,116,114,20,0,0,0,218,2,105,100,169,1, + 114,34,0,0,0,115,1,0,0,0,32,114,5,0,0,0, + 218,8,95,95,114,101,112,114,95,95,138,0,0,0,243,2, + 0,0,0,18,1,114,17,0,0,0,122,20,95,77,111,100, + 117,108,101,76,111,99,107,46,95,95,114,101,112,114,95,95, + 78,41,9,114,8,0,0,0,114,7,0,0,0,114,1,0, + 0,0,114,9,0,0,0,114,35,0,0,0,114,42,0,0, + 0,114,44,0,0,0,114,45,0,0,0,114,54,0,0,0, + 114,23,0,0,0,114,17,0,0,0,114,5,0,0,0,114, + 24,0,0,0,65,0,0,0,115,14,0,0,0,8,0,4, + 1,8,5,8,8,8,21,8,25,12,13,114,17,0,0,0, + 114,24,0,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,0,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,16,95,68,117,109,109,121,77,111,100,117,108,101,76, + 111,99,107,122,86,65,32,115,105,109,112,108,101,32,95,77, + 111,100,117,108,101,76,111,99,107,32,101,113,117,105,118,97, + 108,101,110,116,32,102,111,114,32,80,121,116,104,111,110,32, + 98,117,105,108,100,115,32,119,105,116,104,111,117,116,10,32, + 32,32,32,109,117,108,116,105,45,116,104,114,101,97,100,105, + 110,103,32,115,117,112,112,111,114,116,46,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 115,16,0,0,0,124,1,124,0,95,0,100,1,124,0,95, + 1,100,0,83,0,114,25,0,0,0,41,2,114,20,0,0, + 0,114,31,0,0,0,114,33,0,0,0,115,2,0,0,0, + 32,32,114,5,0,0,0,114,35,0,0,0,146,0,0,0, + 243,4,0,0,0,6,1,10,1,114,17,0,0,0,122,25, + 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, + 46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,3,0,0,0,115,18, + 0,0,0,124,0,4,0,106,0,100,1,55,0,2,0,95, + 0,100,2,83,0,41,3,78,114,43,0,0,0,84,41,1, + 114,31,0,0,0,114,53,0,0,0,115,1,0,0,0,32, + 114,5,0,0,0,114,44,0,0,0,150,0,0,0,115,4, + 0,0,0,14,1,4,1,114,17,0,0,0,122,24,95,68, + 117,109,109,121,77,111,100,117,108,101,76,111,99,107,46,97, + 99,113,117,105,114,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,115,36,0,0,0, + 124,0,106,0,100,1,107,2,114,9,116,1,100,2,131,1, + 130,1,124,0,4,0,106,0,100,3,56,0,2,0,95,0, + 100,0,83,0,41,4,78,114,26,0,0,0,114,47,0,0, + 0,114,43,0,0,0,41,2,114,31,0,0,0,114,48,0, + 0,0,114,53,0,0,0,115,1,0,0,0,32,114,5,0, + 0,0,114,45,0,0,0,154,0,0,0,115,6,0,0,0, + 10,1,8,1,18,1,114,17,0,0,0,122,24,95,68,117, + 109,109,121,77,111,100,117,108,101,76,111,99,107,46,114,101, + 108,101,97,115,101,99,1,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,3,0,0,0,114,49,0,0,0,41, + 2,78,122,28,95,68,117,109,109,121,77,111,100,117,108,101, + 76,111,99,107,40,123,33,114,125,41,32,97,116,32,123,125, + 114,50,0,0,0,114,53,0,0,0,115,1,0,0,0,32, + 114,5,0,0,0,114,54,0,0,0,159,0,0,0,114,55, + 0,0,0,114,17,0,0,0,122,25,95,68,117,109,109,121, + 77,111,100,117,108,101,76,111,99,107,46,95,95,114,101,112, + 114,95,95,78,41,8,114,8,0,0,0,114,7,0,0,0, + 114,1,0,0,0,114,9,0,0,0,114,35,0,0,0,114, + 44,0,0,0,114,45,0,0,0,114,54,0,0,0,114,23, + 0,0,0,114,17,0,0,0,114,5,0,0,0,114,56,0, + 0,0,142,0,0,0,115,12,0,0,0,8,0,4,1,8, + 3,8,4,8,4,12,5,114,17,0,0,0,114,56,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,0,0,0,0,115,36,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,83,0,41, + 8,218,18,95,77,111,100,117,108,101,76,111,99,107,77,97, + 110,97,103,101,114,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,115,16,0,0,0,124, + 1,124,0,95,0,100,0,124,0,95,1,100,0,83,0,114, + 0,0,0,0,41,2,218,5,95,110,97,109,101,218,5,95, + 108,111,99,107,114,33,0,0,0,115,2,0,0,0,32,32, + 114,5,0,0,0,114,35,0,0,0,165,0,0,0,114,57, + 0,0,0,114,17,0,0,0,122,27,95,77,111,100,117,108, + 101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,105, + 110,105,116,95,95,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,115,26,0,0,0,116, + 0,124,0,106,1,131,1,124,0,95,2,124,0,106,2,160, + 3,161,0,1,0,100,0,83,0,114,0,0,0,0,41,4, + 218,16,95,103,101,116,95,109,111,100,117,108,101,95,108,111, + 99,107,114,59,0,0,0,114,60,0,0,0,114,44,0,0, + 0,114,53,0,0,0,115,1,0,0,0,32,114,5,0,0, + 0,218,9,95,95,101,110,116,101,114,95,95,169,0,0,0, + 115,4,0,0,0,12,1,14,1,114,17,0,0,0,122,28, + 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, + 101,114,46,95,95,101,110,116,101,114,95,95,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,15,0,0, + 0,115,14,0,0,0,124,0,106,0,160,1,161,0,1,0, + 100,0,83,0,114,0,0,0,0,41,2,114,60,0,0,0, + 114,45,0,0,0,41,3,114,34,0,0,0,218,4,97,114, + 103,115,90,6,107,119,97,114,103,115,115,3,0,0,0,32, + 32,32,114,5,0,0,0,218,8,95,95,101,120,105,116,95, + 95,173,0,0,0,115,2,0,0,0,14,1,114,17,0,0, + 0,122,27,95,77,111,100,117,108,101,76,111,99,107,77,97, + 110,97,103,101,114,46,95,95,101,120,105,116,95,95,78,41, + 6,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, + 114,35,0,0,0,114,62,0,0,0,114,64,0,0,0,114, + 23,0,0,0,114,17,0,0,0,114,5,0,0,0,114,58, + 0,0,0,163,0,0,0,115,8,0,0,0,8,0,8,2, + 8,4,12,4,114,17,0,0,0,114,58,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, + 0,0,0,115,138,0,0,0,116,0,160,1,161,0,1,0, + 9,0,9,0,116,2,124,0,25,0,131,0,125,1,110,12, + 35,0,4,0,116,3,121,68,1,0,1,0,1,0,100,1, + 125,1,89,0,110,1,37,0,124,1,100,1,117,0,114,55, + 116,4,100,1,117,0,114,37,116,5,124,0,131,1,125,1, + 110,4,116,6,124,0,131,1,125,1,124,0,102,1,100,2, + 100,3,132,1,125,2,116,7,160,8,124,1,124,2,161,2, + 116,2,124,0,60,0,116,0,160,9,161,0,1,0,124,1, + 83,0,35,0,116,0,160,9,161,0,1,0,119,0,37,0, + 119,0,41,4,122,139,71,101,116,32,111,114,32,99,114,101, + 97,116,101,32,116,104,101,32,109,111,100,117,108,101,32,108, + 111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,32, + 109,111,100,117,108,101,32,110,97,109,101,46,10,10,32,32, + 32,32,65,99,113,117,105,114,101,47,114,101,108,101,97,115, + 101,32,105,110,116,101,114,110,97,108,108,121,32,116,104,101, + 32,103,108,111,98,97,108,32,105,109,112,111,114,116,32,108, + 111,99,107,32,116,111,32,112,114,111,116,101,99,116,10,32, + 32,32,32,95,109,111,100,117,108,101,95,108,111,99,107,115, + 46,78,99,2,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,19,0,0,0,115,56,0,0,0,116,0,160,1, + 161,0,1,0,9,0,116,2,160,3,124,1,161,1,124,0, + 117,0,114,15,116,2,124,1,61,0,116,0,160,4,161,0, + 1,0,100,0,83,0,35,0,116,0,160,4,161,0,1,0, + 119,0,37,0,114,0,0,0,0,41,5,218,4,95,105,109, + 112,218,12,97,99,113,117,105,114,101,95,108,111,99,107,218, + 13,95,109,111,100,117,108,101,95,108,111,99,107,115,114,39, + 0,0,0,218,12,114,101,108,101,97,115,101,95,108,111,99, + 107,41,2,218,3,114,101,102,114,20,0,0,0,115,2,0, + 0,0,32,32,114,5,0,0,0,218,2,99,98,198,0,0, + 0,115,16,0,0,0,8,1,2,1,14,4,6,1,12,2, + 2,128,10,0,2,128,115,8,0,0,0,133,10,21,0,149, + 6,27,7,122,28,95,103,101,116,95,109,111,100,117,108,101, + 95,108,111,99,107,46,60,108,111,99,97,108,115,62,46,99, + 98,41,10,114,65,0,0,0,114,66,0,0,0,114,67,0, + 0,0,218,8,75,101,121,69,114,114,111,114,114,27,0,0, + 0,114,56,0,0,0,114,24,0,0,0,218,8,95,119,101, + 97,107,114,101,102,114,69,0,0,0,114,68,0,0,0,41, + 3,114,20,0,0,0,114,28,0,0,0,114,70,0,0,0, + 115,3,0,0,0,32,32,32,114,5,0,0,0,114,61,0, + 0,0,179,0,0,0,115,40,0,0,0,8,6,2,1,2, + 1,12,1,2,128,12,1,8,1,2,128,8,2,8,1,10, + 1,8,2,12,2,16,11,8,2,4,2,2,128,10,254,2, + 128,2,234,115,26,0,0,0,134,5,12,0,139,1,61,0, + 140,9,23,7,149,34,61,0,189,6,65,3,7,193,4,1, + 23,7,114,61,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,3,0,0,0,115,56,0,0, + 0,116,0,124,0,131,1,125,1,9,0,124,1,160,1,161, + 0,1,0,110,11,35,0,4,0,116,2,121,27,1,0,1, + 0,1,0,89,0,100,1,83,0,37,0,124,1,160,3,161, + 0,1,0,100,1,83,0,119,0,41,2,122,189,65,99,113, + 117,105,114,101,115,32,116,104,101,110,32,114,101,108,101,97, + 115,101,115,32,116,104,101,32,109,111,100,117,108,101,32,108, + 111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,32, + 109,111,100,117,108,101,32,110,97,109,101,46,10,10,32,32, + 32,32,84,104,105,115,32,105,115,32,117,115,101,100,32,116, + 111,32,101,110,115,117,114,101,32,97,32,109,111,100,117,108, + 101,32,105,115,32,99,111,109,112,108,101,116,101,108,121,32, + 105,110,105,116,105,97,108,105,122,101,100,44,32,105,110,32, + 116,104,101,10,32,32,32,32,101,118,101,110,116,32,105,116, + 32,105,115,32,98,101,105,110,103,32,105,109,112,111,114,116, + 101,100,32,98,121,32,97,110,111,116,104,101,114,32,116,104, + 114,101,97,100,46,10,32,32,32,32,78,41,4,114,61,0, + 0,0,114,44,0,0,0,114,22,0,0,0,114,45,0,0, + 0,41,2,114,20,0,0,0,114,28,0,0,0,115,2,0, + 0,0,32,32,114,5,0,0,0,218,19,95,108,111,99,107, + 95,117,110,108,111,99,107,95,109,111,100,117,108,101,216,0, + 0,0,115,18,0,0,0,8,6,2,1,10,1,2,128,12, + 1,6,3,2,128,12,2,2,251,115,12,0,0,0,133,4, + 10,0,138,7,20,7,155,1,20,7,114,73,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 15,0,0,0,115,14,0,0,0,124,0,124,1,105,0,124, + 2,164,1,142,1,83,0,41,2,97,46,1,0,0,114,101, + 109,111,118,101,95,105,109,112,111,114,116,108,105,98,95,102, + 114,97,109,101,115,32,105,110,32,105,109,112,111,114,116,46, + 99,32,119,105,108,108,32,97,108,119,97,121,115,32,114,101, + 109,111,118,101,32,115,101,113,117,101,110,99,101,115,10,32, + 32,32,32,111,102,32,105,109,112,111,114,116,108,105,98,32, + 102,114,97,109,101,115,32,116,104,97,116,32,101,110,100,32, + 119,105,116,104,32,97,32,99,97,108,108,32,116,111,32,116, + 104,105,115,32,102,117,110,99,116,105,111,110,10,10,32,32, + 32,32,85,115,101,32,105,116,32,105,110,115,116,101,97,100, + 32,111,102,32,97,32,110,111,114,109,97,108,32,99,97,108, + 108,32,105,110,32,112,108,97,99,101,115,32,119,104,101,114, + 101,32,105,110,99,108,117,100,105,110,103,32,116,104,101,32, + 105,109,112,111,114,116,108,105,98,10,32,32,32,32,102,114, + 97,109,101,115,32,105,110,116,114,111,100,117,99,101,115,32, + 117,110,119,97,110,116,101,100,32,110,111,105,115,101,32,105, + 110,116,111,32,116,104,101,32,116,114,97,99,101,98,97,99, + 107,32,40,101,46,103,46,32,119,104,101,110,32,101,120,101, + 99,117,116,105,110,103,10,32,32,32,32,109,111,100,117,108, + 101,32,99,111,100,101,41,10,32,32,32,32,78,114,23,0, + 0,0,41,3,218,1,102,114,63,0,0,0,90,4,107,119, + 100,115,115,3,0,0,0,32,32,32,114,5,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,233,0,0,0,115,2, + 0,0,0,14,8,114,17,0,0,0,114,75,0,0,0,114, + 43,0,0,0,41,1,218,9,118,101,114,98,111,115,105,116, + 121,99,1,0,0,0,0,0,0,0,1,0,0,0,4,0, + 0,0,7,0,0,0,115,58,0,0,0,116,0,106,1,106, + 2,124,1,107,5,114,27,124,0,160,3,100,1,161,1,115, + 15,100,2,124,0,23,0,125,0,116,4,124,0,106,5,124, + 2,142,0,116,0,106,6,100,3,141,2,1,0,100,4,83, + 0,100,4,83,0,41,5,122,61,80,114,105,110,116,32,116, + 104,101,32,109,101,115,115,97,103,101,32,116,111,32,115,116, + 100,101,114,114,32,105,102,32,45,118,47,80,89,84,72,79, + 78,86,69,82,66,79,83,69,32,105,115,32,116,117,114,110, + 101,100,32,111,110,46,41,2,250,1,35,122,7,105,109,112, + 111,114,116,32,122,2,35,32,41,1,90,4,102,105,108,101, + 78,41,7,114,18,0,0,0,218,5,102,108,97,103,115,218, + 7,118,101,114,98,111,115,101,218,10,115,116,97,114,116,115, + 119,105,116,104,218,5,112,114,105,110,116,114,51,0,0,0, + 218,6,115,116,100,101,114,114,41,3,218,7,109,101,115,115, + 97,103,101,114,76,0,0,0,114,63,0,0,0,115,3,0, + 0,0,32,32,32,114,5,0,0,0,218,16,95,118,101,114, + 98,111,115,101,95,109,101,115,115,97,103,101,244,0,0,0, + 115,10,0,0,0,12,2,10,1,8,1,24,1,4,253,114, + 17,0,0,0,114,84,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,28, + 0,0,0,135,0,136,0,102,1,100,1,100,2,132,8,125, + 1,116,0,124,1,137,0,131,2,1,0,124,1,83,0,41, + 4,122,49,68,101,99,111,114,97,116,111,114,32,116,111,32, + 118,101,114,105,102,121,32,116,104,101,32,110,97,109,101,100, + 32,109,111,100,117,108,101,32,105,115,32,98,117,105,108,116, + 45,105,110,46,99,2,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,19,0,0,0,115,38,0,0,0,124,1, + 116,0,106,1,118,1,114,14,116,2,100,1,160,3,124,1, + 161,1,124,1,100,2,141,2,130,1,137,2,124,0,124,1, + 131,2,83,0,41,3,78,250,29,123,33,114,125,32,105,115, + 32,110,111,116,32,97,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,114,19,0,0,0,41,4,114,18,0, + 0,0,218,20,98,117,105,108,116,105,110,95,109,111,100,117, + 108,101,95,110,97,109,101,115,218,11,73,109,112,111,114,116, + 69,114,114,111,114,114,51,0,0,0,169,3,114,34,0,0, + 0,218,8,102,117,108,108,110,97,109,101,218,3,102,120,110, + 115,3,0,0,0,32,32,128,114,5,0,0,0,218,25,95, + 114,101,113,117,105,114,101,115,95,98,117,105,108,116,105,110, + 95,119,114,97,112,112,101,114,254,0,0,0,243,10,0,0, + 0,10,1,10,1,2,1,6,255,10,2,114,17,0,0,0, + 122,52,95,114,101,113,117,105,114,101,115,95,98,117,105,108, + 116,105,110,46,60,108,111,99,97,108,115,62,46,95,114,101, 113,117,105,114,101,115,95,98,117,105,108,116,105,110,95,119, - 114,97,112,112,101,114,254,0,0,0,243,10,0,0,0,10, - 1,10,1,2,1,6,255,10,2,114,17,0,0,0,122,52, - 95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,105, - 110,46,60,108,111,99,97,108,115,62,46,95,114,101,113,117, - 105,114,101,115,95,98,117,105,108,116,105,110,95,119,114,97, - 112,112,101,114,78,169,1,114,16,0,0,0,41,2,114,91, - 0,0,0,114,92,0,0,0,115,2,0,0,0,96,32,114, - 5,0,0,0,218,17,95,114,101,113,117,105,114,101,115,95, - 98,117,105,108,116,105,110,252,0,0,0,243,8,0,0,0, - 2,128,12,2,10,5,4,1,114,17,0,0,0,114,95,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,114,85,0,0,0,41,4,122,47, - 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, - 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111, - 100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, - 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, - 2,141,2,130,1,137,2,124,0,124,1,131,2,83,0,169, - 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, - 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, - 19,0,0,0,41,4,114,65,0,0,0,218,9,105,115,95, - 102,114,111,122,101,110,114,88,0,0,0,114,51,0,0,0, - 114,89,0,0,0,115,3,0,0,0,32,32,128,114,5,0, - 0,0,218,24,95,114,101,113,117,105,114,101,115,95,102,114, - 111,122,101,110,95,119,114,97,112,112,101,114,9,1,0,0, - 114,93,0,0,0,114,17,0,0,0,122,50,95,114,101,113, - 117,105,114,101,115,95,102,114,111,122,101,110,46,60,108,111, - 99,97,108,115,62,46,95,114,101,113,117,105,114,101,115,95, - 102,114,111,122,101,110,95,119,114,97,112,112,101,114,78,114, - 94,0,0,0,41,2,114,91,0,0,0,114,99,0,0,0, - 115,2,0,0,0,96,32,114,5,0,0,0,218,16,95,114, - 101,113,117,105,114,101,115,95,102,114,111,122,101,110,7,1, - 0,0,114,96,0,0,0,114,17,0,0,0,114,100,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,115,74,0,0,0,100,1,125,2,116, - 0,160,1,124,2,116,2,161,2,1,0,116,3,124,1,124, - 0,131,2,125,3,124,1,116,4,106,5,118,0,114,33,116, - 4,106,5,124,1,25,0,125,4,116,6,124,3,124,4,131, - 2,1,0,116,4,106,5,124,1,25,0,83,0,116,7,124, - 3,131,1,83,0,41,3,122,130,76,111,97,100,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,117, - 108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,105, - 116,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,46,32,32,85,115,101,32,108,111,97,100,101,114,46,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,122,103,116,104,101, - 32,108,111,97,100,95,109,111,100,117,108,101,40,41,32,109, + 114,97,112,112,101,114,78,169,1,114,16,0,0,0,41,2, + 114,91,0,0,0,114,92,0,0,0,115,2,0,0,0,96, + 32,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, + 115,95,98,117,105,108,116,105,110,252,0,0,0,243,8,0, + 0,0,2,128,12,2,10,5,4,1,114,17,0,0,0,114, + 95,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,3,0,0,0,114,85,0,0,0,41,4, + 122,47,68,101,99,111,114,97,116,111,114,32,116,111,32,118, + 101,114,105,102,121,32,116,104,101,32,110,97,109,101,100,32, + 109,111,100,117,108,101,32,105,115,32,102,114,111,122,101,110, + 46,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,19,0,0,0,115,38,0,0,0,116,0,160,1,124, + 1,161,1,115,14,116,2,100,1,160,3,124,1,161,1,124, + 1,100,2,141,2,130,1,137,2,124,0,124,1,131,2,83, + 0,169,3,78,122,27,123,33,114,125,32,105,115,32,110,111, + 116,32,97,32,102,114,111,122,101,110,32,109,111,100,117,108, + 101,114,19,0,0,0,41,4,114,65,0,0,0,218,9,105, + 115,95,102,114,111,122,101,110,114,88,0,0,0,114,51,0, + 0,0,114,89,0,0,0,115,3,0,0,0,32,32,128,114, + 5,0,0,0,218,24,95,114,101,113,117,105,114,101,115,95, + 102,114,111,122,101,110,95,119,114,97,112,112,101,114,9,1, + 0,0,114,93,0,0,0,114,17,0,0,0,122,50,95,114, + 101,113,117,105,114,101,115,95,102,114,111,122,101,110,46,60, + 108,111,99,97,108,115,62,46,95,114,101,113,117,105,114,101, + 115,95,102,114,111,122,101,110,95,119,114,97,112,112,101,114, + 78,114,94,0,0,0,41,2,114,91,0,0,0,114,99,0, + 0,0,115,2,0,0,0,96,32,114,5,0,0,0,218,16, + 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, + 7,1,0,0,114,96,0,0,0,114,17,0,0,0,114,100, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,3,0,0,0,115,74,0,0,0,100,1,125, + 2,116,0,160,1,124,2,116,2,161,2,1,0,116,3,124, + 1,124,0,131,2,125,3,124,1,116,4,106,5,118,0,114, + 33,116,4,106,5,124,1,25,0,125,4,116,6,124,3,124, + 4,131,2,1,0,116,4,106,5,124,1,25,0,83,0,116, + 7,124,3,131,1,83,0,41,3,122,130,76,111,97,100,32, + 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,117,108,101,32,105,110,116,111,32,115,121,115,46,109,111, + 100,117,108,101,115,32,97,110,100,32,114,101,116,117,114,110, + 32,105,116,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,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,101, - 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, - 116,101,97,100,78,41,8,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,16,115,112, - 101,99,95,102,114,111,109,95,108,111,97,100,101,114,114,18, - 0,0,0,218,7,109,111,100,117,108,101,115,218,5,95,101, - 120,101,99,218,5,95,108,111,97,100,41,5,114,34,0,0, - 0,114,90,0,0,0,218,3,109,115,103,218,4,115,112,101, - 99,218,6,109,111,100,117,108,101,115,5,0,0,0,32,32, - 32,32,32,114,5,0,0,0,218,17,95,108,111,97,100,95, - 109,111,100,117,108,101,95,115,104,105,109,19,1,0,0,115, - 16,0,0,0,4,6,12,2,10,1,10,1,10,1,10,1, - 10,1,8,2,114,17,0,0,0,114,111,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, - 0,0,0,115,194,0,0,0,116,0,124,0,100,1,100,2, - 131,3,125,1,116,0,124,0,100,3,100,2,131,3,4,0, - 125,2,114,18,116,1,124,2,131,1,83,0,116,2,124,1, - 100,4,131,2,114,39,9,0,124,1,160,3,124,0,161,1, - 83,0,35,0,4,0,116,4,121,96,1,0,1,0,1,0, - 89,0,110,1,37,0,9,0,124,0,106,5,125,3,110,12, - 35,0,4,0,116,6,121,95,1,0,1,0,1,0,100,5, - 125,3,89,0,110,1,37,0,9,0,124,0,106,7,125,4, - 110,27,35,0,4,0,116,6,121,94,1,0,1,0,1,0, - 124,1,100,2,117,0,114,79,100,6,160,8,124,3,161,1, - 6,0,89,0,83,0,100,7,160,8,124,3,124,1,161,2, - 6,0,89,0,83,0,37,0,100,8,160,8,124,3,124,4, - 161,2,83,0,119,0,119,0,119,0,41,9,122,44,84,104, - 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 32,111,102,32,77,111,100,117,108,101,84,121,112,101,46,95, - 95,114,101,112,114,95,95,40,41,46,218,10,95,95,108,111, - 97,100,101,114,95,95,78,218,8,95,95,115,112,101,99,95, - 95,218,11,109,111,100,117,108,101,95,114,101,112,114,250,1, - 63,250,13,60,109,111,100,117,108,101,32,123,33,114,125,62, - 250,20,60,109,111,100,117,108,101,32,123,33,114,125,32,40, - 123,33,114,125,41,62,250,23,60,109,111,100,117,108,101,32, - 123,33,114,125,32,102,114,111,109,32,123,33,114,125,62,41, - 9,114,12,0,0,0,218,22,95,109,111,100,117,108,101,95, - 114,101,112,114,95,102,114,111,109,95,115,112,101,99,114,10, - 0,0,0,114,114,0,0,0,218,9,69,120,99,101,112,116, - 105,111,110,114,8,0,0,0,114,2,0,0,0,218,8,95, - 95,102,105,108,101,95,95,114,51,0,0,0,41,5,114,110, - 0,0,0,218,6,108,111,97,100,101,114,114,109,0,0,0, - 114,20,0,0,0,218,8,102,105,108,101,110,97,109,101,115, - 5,0,0,0,32,32,32,32,32,114,5,0,0,0,218,12, - 95,109,111,100,117,108,101,95,114,101,112,114,38,1,0,0, - 115,56,0,0,0,12,2,16,1,8,1,10,1,2,1,10, - 1,2,128,12,1,4,1,2,128,2,2,8,1,2,128,12, - 1,8,1,2,128,2,1,8,1,2,128,12,1,8,1,14, - 1,16,2,2,128,12,2,2,250,2,252,2,251,115,47,0, - 0,0,152,4,29,0,157,7,38,7,168,3,44,0,172,9, - 55,7,185,3,61,0,189,16,65,23,7,193,15,6,65,23, - 7,193,30,1,65,23,7,193,31,1,55,7,193,32,1,38, - 7,114,124,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,0,0,0,0,115,114,0,0,0, - 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,2, - 100,2,100,3,156,3,100,4,100,5,132,2,90,4,100,6, - 100,7,132,0,90,5,100,8,100,9,132,0,90,6,101,7, - 100,10,100,11,132,0,131,1,90,8,101,8,106,9,100,12, - 100,11,132,0,131,1,90,8,101,7,100,13,100,14,132,0, - 131,1,90,10,101,7,100,15,100,16,132,0,131,1,90,11, - 101,11,106,9,100,17,100,16,132,0,131,1,90,11,100,2, - 83,0,41,18,218,10,77,111,100,117,108,101,83,112,101,99, - 97,208,5,0,0,84,104,101,32,115,112,101,99,105,102,105, - 99,97,116,105,111,110,32,102,111,114,32,97,32,109,111,100, - 117,108,101,44,32,117,115,101,100,32,102,111,114,32,108,111, - 97,100,105,110,103,46,10,10,32,32,32,32,65,32,109,111, - 100,117,108,101,39,115,32,115,112,101,99,32,105,115,32,116, - 104,101,32,115,111,117,114,99,101,32,102,111,114,32,105,110, - 102,111,114,109,97,116,105,111,110,32,97,98,111,117,116,32, - 116,104,101,32,109,111,100,117,108,101,46,32,32,70,111,114, - 10,32,32,32,32,100,97,116,97,32,97,115,115,111,99,105, - 97,116,101,100,32,119,105,116,104,32,116,104,101,32,109,111, - 100,117,108,101,44,32,105,110,99,108,117,100,105,110,103,32, - 115,111,117,114,99,101,44,32,117,115,101,32,116,104,101,32, - 115,112,101,99,39,115,10,32,32,32,32,108,111,97,100,101, - 114,46,10,10,32,32,32,32,96,110,97,109,101,96,32,105, - 115,32,116,104,101,32,97,98,115,111,108,117,116,101,32,110, - 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, - 101,46,32,32,96,108,111,97,100,101,114,96,32,105,115,32, - 116,104,101,32,108,111,97,100,101,114,10,32,32,32,32,116, - 111,32,117,115,101,32,119,104,101,110,32,108,111,97,100,105, - 110,103,32,116,104,101,32,109,111,100,117,108,101,46,32,32, - 96,112,97,114,101,110,116,96,32,105,115,32,116,104,101,32, - 110,97,109,101,32,111,102,32,116,104,101,10,32,32,32,32, - 112,97,99,107,97,103,101,32,116,104,101,32,109,111,100,117, - 108,101,32,105,115,32,105,110,46,32,32,84,104,101,32,112, - 97,114,101,110,116,32,105,115,32,100,101,114,105,118,101,100, - 32,102,114,111,109,32,116,104,101,32,110,97,109,101,46,10, - 10,32,32,32,32,96,105,115,95,112,97,99,107,97,103,101, - 96,32,100,101,116,101,114,109,105,110,101,115,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,105,115,32,99,111, - 110,115,105,100,101,114,101,100,32,97,32,112,97,99,107,97, - 103,101,32,111,114,10,32,32,32,32,110,111,116,46,32,32, - 79,110,32,109,111,100,117,108,101,115,32,116,104,105,115,32, - 105,115,32,114,101,102,108,101,99,116,101,100,32,98,121,32, - 116,104,101,32,96,95,95,112,97,116,104,95,95,96,32,97, - 116,116,114,105,98,117,116,101,46,10,10,32,32,32,32,96, - 111,114,105,103,105,110,96,32,105,115,32,116,104,101,32,115, - 112,101,99,105,102,105,99,32,108,111,99,97,116,105,111,110, - 32,117,115,101,100,32,98,121,32,116,104,101,32,108,111,97, - 100,101,114,32,102,114,111,109,32,119,104,105,99,104,32,116, - 111,10,32,32,32,32,108,111,97,100,32,116,104,101,32,109, - 111,100,117,108,101,44,32,105,102,32,116,104,97,116,32,105, - 110,102,111,114,109,97,116,105,111,110,32,105,115,32,97,118, - 97,105,108,97,98,108,101,46,32,32,87,104,101,110,32,102, - 105,108,101,110,97,109,101,32,105,115,10,32,32,32,32,115, - 101,116,44,32,111,114,105,103,105,110,32,119,105,108,108,32, - 109,97,116,99,104,46,10,10,32,32,32,32,96,104,97,115, - 95,108,111,99,97,116,105,111,110,96,32,105,110,100,105,99, - 97,116,101,115,32,116,104,97,116,32,97,32,115,112,101,99, - 39,115,32,34,111,114,105,103,105,110,34,32,114,101,102,108, - 101,99,116,115,32,97,32,108,111,99,97,116,105,111,110,46, - 10,32,32,32,32,87,104,101,110,32,116,104,105,115,32,105, - 115,32,84,114,117,101,44,32,96,95,95,102,105,108,101,95, - 95,96,32,97,116,116,114,105,98,117,116,101,32,111,102,32, - 116,104,101,32,109,111,100,117,108,101,32,105,115,32,115,101, - 116,46,10,10,32,32,32,32,96,99,97,99,104,101,100,96, - 32,105,115,32,116,104,101,32,108,111,99,97,116,105,111,110, - 32,111,102,32,116,104,101,32,99,97,99,104,101,100,32,98, - 121,116,101,99,111,100,101,32,102,105,108,101,44,32,105,102, - 32,97,110,121,46,32,32,73,116,10,32,32,32,32,99,111, - 114,114,101,115,112,111,110,100,115,32,116,111,32,116,104,101, - 32,96,95,95,99,97,99,104,101,100,95,95,96,32,97,116, - 116,114,105,98,117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104, - 101,32,115,101,113,117,101,110,99,101,32,111,102,32,112,97, - 116,104,32,101,110,116,114,105,101,115,32,116,111,10,32,32, - 32,32,115,101,97,114,99,104,32,119,104,101,110,32,105,109, - 112,111,114,116,105,110,103,32,115,117,98,109,111,100,117,108, - 101,115,46,32,32,73,102,32,115,101,116,44,32,105,115,95, - 112,97,99,107,97,103,101,32,115,104,111,117,108,100,32,98, - 101,10,32,32,32,32,84,114,117,101,45,45,97,110,100,32, - 70,97,108,115,101,32,111,116,104,101,114,119,105,115,101,46, - 10,10,32,32,32,32,80,97,99,107,97,103,101,115,32,97, - 114,101,32,115,105,109,112,108,121,32,109,111,100,117,108,101, - 115,32,116,104,97,116,32,40,109,97,121,41,32,104,97,118, - 101,32,115,117,98,109,111,100,117,108,101,115,46,32,32,73, - 102,32,97,32,115,112,101,99,10,32,32,32,32,104,97,115, - 32,97,32,110,111,110,45,78,111,110,101,32,118,97,108,117, - 101,32,105,110,32,96,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, - 96,44,32,116,104,101,32,105,109,112,111,114,116,10,32,32, - 32,32,115,121,115,116,101,109,32,119,105,108,108,32,99,111, - 110,115,105,100,101,114,32,109,111,100,117,108,101,115,32,108, - 111,97,100,101,100,32,102,114,111,109,32,116,104,101,32,115, - 112,101,99,32,97,115,32,112,97,99,107,97,103,101,115,46, - 10,10,32,32,32,32,79,110,108,121,32,102,105,110,100,101, - 114,115,32,40,115,101,101,32,105,109,112,111,114,116,108,105, - 98,46,97,98,99,46,77,101,116,97,80,97,116,104,70,105, - 110,100,101,114,32,97,110,100,10,32,32,32,32,105,109,112, - 111,114,116,108,105,98,46,97,98,99,46,80,97,116,104,69, - 110,116,114,121,70,105,110,100,101,114,41,32,115,104,111,117, - 108,100,32,109,111,100,105,102,121,32,77,111,100,117,108,101, - 83,112,101,99,32,105,110,115,116,97,110,99,101,115,46,10, - 10,32,32,32,32,78,41,3,218,6,111,114,105,103,105,110, - 218,12,108,111,97,100,101,114,95,115,116,97,116,101,218,10, - 105,115,95,112,97,99,107,97,103,101,99,3,0,0,0,0, - 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,115, - 54,0,0,0,124,1,124,0,95,0,124,2,124,0,95,1, - 124,3,124,0,95,2,124,4,124,0,95,3,124,5,114,16, - 103,0,110,1,100,0,124,0,95,4,100,1,124,0,95,5, - 100,0,124,0,95,6,100,0,83,0,41,2,78,70,41,7, - 114,20,0,0,0,114,122,0,0,0,114,126,0,0,0,114, - 127,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, - 218,13,95,115,101,116,95,102,105,108,101,97,116,116,114,218, - 7,95,99,97,99,104,101,100,41,6,114,34,0,0,0,114, - 20,0,0,0,114,122,0,0,0,114,126,0,0,0,114,127, - 0,0,0,114,128,0,0,0,115,6,0,0,0,32,32,32, - 32,32,32,114,5,0,0,0,114,35,0,0,0,101,1,0, - 0,115,14,0,0,0,6,2,6,1,6,1,6,1,14,1, - 6,3,10,1,114,17,0,0,0,122,19,77,111,100,117,108, - 101,83,112,101,99,46,95,95,105,110,105,116,95,95,99,1, - 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3, - 0,0,0,115,102,0,0,0,100,1,160,0,124,0,106,1, - 161,1,100,2,160,0,124,0,106,2,161,1,103,2,125,1, - 124,0,106,3,100,0,117,1,114,26,124,1,160,4,100,3, - 160,0,124,0,106,3,161,1,161,1,1,0,124,0,106,5, - 100,0,117,1,114,40,124,1,160,4,100,4,160,0,124,0, - 106,5,161,1,161,1,1,0,100,5,160,0,124,0,106,6, - 106,7,100,6,160,8,124,1,161,1,161,2,83,0,41,7, - 78,122,9,110,97,109,101,61,123,33,114,125,122,11,108,111, - 97,100,101,114,61,123,33,114,125,122,11,111,114,105,103,105, - 110,61,123,33,114,125,122,29,115,117,98,109,111,100,117,108, + 116,101,100,46,32,32,85,115,101,32,108,111,97,100,101,114, + 46,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,122,103,116, + 104,101,32,108,111,97,100,95,109,111,100,117,108,101,40,41, + 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, + 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, + 80,121,116,104,111,110,32,51,46,49,50,59,32,117,115,101, + 32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,105, + 110,115,116,101,97,100,78,41,8,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,16, + 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, + 114,18,0,0,0,218,7,109,111,100,117,108,101,115,218,5, + 95,101,120,101,99,218,5,95,108,111,97,100,41,5,114,34, + 0,0,0,114,90,0,0,0,218,3,109,115,103,218,4,115, + 112,101,99,218,6,109,111,100,117,108,101,115,5,0,0,0, + 32,32,32,32,32,114,5,0,0,0,218,17,95,108,111,97, + 100,95,109,111,100,117,108,101,95,115,104,105,109,19,1,0, + 0,115,16,0,0,0,4,6,12,2,10,1,10,1,10,1, + 10,1,10,1,8,2,114,17,0,0,0,114,111,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,3,0,0,0,115,194,0,0,0,116,0,124,0,100,1, + 100,2,131,3,125,1,116,0,124,0,100,3,100,2,131,3, + 4,0,125,2,114,18,116,1,124,2,131,1,83,0,116,2, + 124,1,100,4,131,2,114,39,9,0,124,1,160,3,124,0, + 161,1,83,0,35,0,4,0,116,4,121,96,1,0,1,0, + 1,0,89,0,110,1,37,0,9,0,124,0,106,5,125,3, + 110,12,35,0,4,0,116,6,121,95,1,0,1,0,1,0, + 100,5,125,3,89,0,110,1,37,0,9,0,124,0,106,7, + 125,4,110,27,35,0,4,0,116,6,121,94,1,0,1,0, + 1,0,124,1,100,2,117,0,114,79,100,6,160,8,124,3, + 161,1,6,0,89,0,83,0,100,7,160,8,124,3,124,1, + 161,2,6,0,89,0,83,0,37,0,100,8,160,8,124,3, + 124,4,161,2,83,0,119,0,119,0,119,0,41,9,122,44, + 84,104,101,32,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,32,111,102,32,77,111,100,117,108,101,84,121,112,101, + 46,95,95,114,101,112,114,95,95,40,41,46,218,10,95,95, + 108,111,97,100,101,114,95,95,78,218,8,95,95,115,112,101, + 99,95,95,218,11,109,111,100,117,108,101,95,114,101,112,114, + 250,1,63,250,13,60,109,111,100,117,108,101,32,123,33,114, + 125,62,250,20,60,109,111,100,117,108,101,32,123,33,114,125, + 32,40,123,33,114,125,41,62,250,23,60,109,111,100,117,108, + 101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125, + 62,41,9,114,12,0,0,0,218,22,95,109,111,100,117,108, + 101,95,114,101,112,114,95,102,114,111,109,95,115,112,101,99, + 114,10,0,0,0,114,114,0,0,0,218,9,69,120,99,101, + 112,116,105,111,110,114,8,0,0,0,114,2,0,0,0,218, + 8,95,95,102,105,108,101,95,95,114,51,0,0,0,41,5, + 114,110,0,0,0,218,6,108,111,97,100,101,114,114,109,0, + 0,0,114,20,0,0,0,218,8,102,105,108,101,110,97,109, + 101,115,5,0,0,0,32,32,32,32,32,114,5,0,0,0, + 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, + 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, + 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, + 128,12,1,8,1,2,128,2,1,8,1,2,128,12,1,8, + 1,14,1,16,2,2,128,12,2,2,250,2,252,2,251,115, + 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, + 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, + 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, + 1,38,7,114,124,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,0,0,0,0,115,114,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 100,2,100,2,100,3,156,3,100,4,100,5,132,2,90,4, + 100,6,100,7,132,0,90,5,100,8,100,9,132,0,90,6, + 101,7,100,10,100,11,132,0,131,1,90,8,101,8,106,9, + 100,12,100,11,132,0,131,1,90,8,101,7,100,13,100,14, + 132,0,131,1,90,10,101,7,100,15,100,16,132,0,131,1, + 90,11,101,11,106,9,100,17,100,16,132,0,131,1,90,11, + 100,2,83,0,41,18,218,10,77,111,100,117,108,101,83,112, + 101,99,97,208,5,0,0,84,104,101,32,115,112,101,99,105, + 102,105,99,97,116,105,111,110,32,102,111,114,32,97,32,109, + 111,100,117,108,101,44,32,117,115,101,100,32,102,111,114,32, + 108,111,97,100,105,110,103,46,10,10,32,32,32,32,65,32, + 109,111,100,117,108,101,39,115,32,115,112,101,99,32,105,115, + 32,116,104,101,32,115,111,117,114,99,101,32,102,111,114,32, + 105,110,102,111,114,109,97,116,105,111,110,32,97,98,111,117, + 116,32,116,104,101,32,109,111,100,117,108,101,46,32,32,70, + 111,114,10,32,32,32,32,100,97,116,97,32,97,115,115,111, + 99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32, + 109,111,100,117,108,101,44,32,105,110,99,108,117,100,105,110, + 103,32,115,111,117,114,99,101,44,32,117,115,101,32,116,104, + 101,32,115,112,101,99,39,115,10,32,32,32,32,108,111,97, + 100,101,114,46,10,10,32,32,32,32,96,110,97,109,101,96, + 32,105,115,32,116,104,101,32,97,98,115,111,108,117,116,101, + 32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,108,111,97,100,101,114,96,32,105, + 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, + 32,116,111,32,117,115,101,32,119,104,101,110,32,108,111,97, + 100,105,110,103,32,116,104,101,32,109,111,100,117,108,101,46, + 32,32,96,112,97,114,101,110,116,96,32,105,115,32,116,104, + 101,32,110,97,109,101,32,111,102,32,116,104,101,10,32,32, + 32,32,112,97,99,107,97,103,101,32,116,104,101,32,109,111, + 100,117,108,101,32,105,115,32,105,110,46,32,32,84,104,101, + 32,112,97,114,101,110,116,32,105,115,32,100,101,114,105,118, + 101,100,32,102,114,111,109,32,116,104,101,32,110,97,109,101, + 46,10,10,32,32,32,32,96,105,115,95,112,97,99,107,97, + 103,101,96,32,100,101,116,101,114,109,105,110,101,115,32,105, + 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, + 99,111,110,115,105,100,101,114,101,100,32,97,32,112,97,99, + 107,97,103,101,32,111,114,10,32,32,32,32,110,111,116,46, + 32,32,79,110,32,109,111,100,117,108,101,115,32,116,104,105, + 115,32,105,115,32,114,101,102,108,101,99,116,101,100,32,98, + 121,32,116,104,101,32,96,95,95,112,97,116,104,95,95,96, + 32,97,116,116,114,105,98,117,116,101,46,10,10,32,32,32, + 32,96,111,114,105,103,105,110,96,32,105,115,32,116,104,101, + 32,115,112,101,99,105,102,105,99,32,108,111,99,97,116,105, + 111,110,32,117,115,101,100,32,98,121,32,116,104,101,32,108, + 111,97,100,101,114,32,102,114,111,109,32,119,104,105,99,104, + 32,116,111,10,32,32,32,32,108,111,97,100,32,116,104,101, + 32,109,111,100,117,108,101,44,32,105,102,32,116,104,97,116, + 32,105,110,102,111,114,109,97,116,105,111,110,32,105,115,32, + 97,118,97,105,108,97,98,108,101,46,32,32,87,104,101,110, + 32,102,105,108,101,110,97,109,101,32,105,115,10,32,32,32, + 32,115,101,116,44,32,111,114,105,103,105,110,32,119,105,108, + 108,32,109,97,116,99,104,46,10,10,32,32,32,32,96,104, + 97,115,95,108,111,99,97,116,105,111,110,96,32,105,110,100, + 105,99,97,116,101,115,32,116,104,97,116,32,97,32,115,112, + 101,99,39,115,32,34,111,114,105,103,105,110,34,32,114,101, + 102,108,101,99,116,115,32,97,32,108,111,99,97,116,105,111, + 110,46,10,32,32,32,32,87,104,101,110,32,116,104,105,115, + 32,105,115,32,84,114,117,101,44,32,96,95,95,102,105,108, + 101,95,95,96,32,97,116,116,114,105,98,117,116,101,32,111, + 102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, + 115,101,116,46,10,10,32,32,32,32,96,99,97,99,104,101, + 100,96,32,105,115,32,116,104,101,32,108,111,99,97,116,105, + 111,110,32,111,102,32,116,104,101,32,99,97,99,104,101,100, + 32,98,121,116,101,99,111,100,101,32,102,105,108,101,44,32, + 105,102,32,97,110,121,46,32,32,73,116,10,32,32,32,32, + 99,111,114,114,101,115,112,111,110,100,115,32,116,111,32,116, + 104,101,32,96,95,95,99,97,99,104,101,100,95,95,96,32, + 97,116,116,114,105,98,117,116,101,46,10,10,32,32,32,32, + 96,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,96,32,105,115,32, + 116,104,101,32,115,101,113,117,101,110,99,101,32,111,102,32, + 112,97,116,104,32,101,110,116,114,105,101,115,32,116,111,10, + 32,32,32,32,115,101,97,114,99,104,32,119,104,101,110,32, + 105,109,112,111,114,116,105,110,103,32,115,117,98,109,111,100, + 117,108,101,115,46,32,32,73,102,32,115,101,116,44,32,105, + 115,95,112,97,99,107,97,103,101,32,115,104,111,117,108,100, + 32,98,101,10,32,32,32,32,84,114,117,101,45,45,97,110, + 100,32,70,97,108,115,101,32,111,116,104,101,114,119,105,115, + 101,46,10,10,32,32,32,32,80,97,99,107,97,103,101,115, + 32,97,114,101,32,115,105,109,112,108,121,32,109,111,100,117, + 108,101,115,32,116,104,97,116,32,40,109,97,121,41,32,104, + 97,118,101,32,115,117,98,109,111,100,117,108,101,115,46,32, + 32,73,102,32,97,32,115,112,101,99,10,32,32,32,32,104, + 97,115,32,97,32,110,111,110,45,78,111,110,101,32,118,97, + 108,117,101,32,105,110,32,96,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,61,123,125,122,6,123,125,40,123,125,41,122,2,44, - 32,41,9,114,51,0,0,0,114,20,0,0,0,114,122,0, - 0,0,114,126,0,0,0,218,6,97,112,112,101,110,100,114, - 129,0,0,0,218,9,95,95,99,108,97,115,115,95,95,114, - 8,0,0,0,218,4,106,111,105,110,41,2,114,34,0,0, - 0,114,63,0,0,0,115,2,0,0,0,32,32,114,5,0, - 0,0,114,54,0,0,0,113,1,0,0,115,20,0,0,0, - 10,1,10,1,4,255,10,2,18,1,10,1,6,1,8,1, - 4,255,22,2,114,17,0,0,0,122,19,77,111,100,117,108, - 101,83,112,101,99,46,95,95,114,101,112,114,95,95,99,2, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, - 0,0,0,115,104,0,0,0,124,0,106,0,125,2,9,0, - 124,0,106,1,124,1,106,1,107,2,111,38,124,0,106,2, - 124,1,106,2,107,2,111,38,124,0,106,3,124,1,106,3, - 107,2,111,38,124,2,124,1,106,0,107,2,111,38,124,0, - 106,4,124,1,106,4,107,2,111,38,124,0,106,5,124,1, - 106,5,107,2,83,0,35,0,4,0,116,6,121,51,1,0, - 1,0,1,0,116,7,6,0,89,0,83,0,37,0,119,0, - 114,0,0,0,0,41,8,114,129,0,0,0,114,20,0,0, - 0,114,122,0,0,0,114,126,0,0,0,218,6,99,97,99, - 104,101,100,218,12,104,97,115,95,108,111,99,97,116,105,111, - 110,114,2,0,0,0,218,14,78,111,116,73,109,112,108,101, - 109,101,110,116,101,100,41,3,114,34,0,0,0,90,5,111, - 116,104,101,114,90,4,115,109,115,108,115,3,0,0,0,32, - 32,32,114,5,0,0,0,218,6,95,95,101,113,95,95,123, - 1,0,0,115,36,0,0,0,6,1,2,1,12,1,10,1, - 2,255,10,2,2,254,8,3,2,253,10,4,2,252,10,5, - 2,251,2,128,12,6,8,1,2,128,2,255,115,12,0,0, - 0,132,34,39,0,167,9,50,7,179,1,50,7,122,17,77, - 111,100,117,108,101,83,112,101,99,46,95,95,101,113,95,95, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,115,58,0,0,0,124,0,106,0,100,0, - 117,0,114,26,124,0,106,1,100,0,117,1,114,26,124,0, - 106,2,114,26,116,3,100,0,117,0,114,19,116,4,130,1, - 116,3,160,5,124,0,106,1,161,1,124,0,95,0,124,0, - 106,0,83,0,114,0,0,0,0,41,6,114,131,0,0,0, - 114,126,0,0,0,114,130,0,0,0,218,19,95,98,111,111, - 116,115,116,114,97,112,95,101,120,116,101,114,110,97,108,218, - 19,78,111,116,73,109,112,108,101,109,101,110,116,101,100,69, - 114,114,111,114,90,11,95,103,101,116,95,99,97,99,104,101, - 100,114,53,0,0,0,115,1,0,0,0,32,114,5,0,0, - 0,114,135,0,0,0,135,1,0,0,115,12,0,0,0,10, - 2,16,1,8,1,4,1,14,1,6,1,114,17,0,0,0, - 122,17,77,111,100,117,108,101,83,112,101,99,46,99,97,99, - 104,101,100,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,115,10,0,0,0,124,1,124, - 0,95,0,100,0,83,0,114,0,0,0,0,41,1,114,131, - 0,0,0,41,2,114,34,0,0,0,114,135,0,0,0,115, - 2,0,0,0,32,32,114,5,0,0,0,114,135,0,0,0, - 144,1,0,0,115,2,0,0,0,10,2,114,17,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,115,32,0,0,0,124,0,106,0,100,1, - 117,0,114,13,124,0,106,1,160,2,100,2,161,1,100,3, - 25,0,83,0,124,0,106,1,83,0,41,4,122,32,84,104, - 101,32,110,97,109,101,32,111,102,32,116,104,101,32,109,111, - 100,117,108,101,39,115,32,112,97,114,101,110,116,46,78,218, - 1,46,114,26,0,0,0,41,3,114,129,0,0,0,114,20, - 0,0,0,218,10,114,112,97,114,116,105,116,105,111,110,114, - 53,0,0,0,115,1,0,0,0,32,114,5,0,0,0,218, - 6,112,97,114,101,110,116,148,1,0,0,115,6,0,0,0, - 10,3,16,1,6,2,114,17,0,0,0,122,17,77,111,100, - 117,108,101,83,112,101,99,46,112,97,114,101,110,116,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, - 0,0,0,115,6,0,0,0,124,0,106,0,83,0,114,0, - 0,0,0,41,1,114,130,0,0,0,114,53,0,0,0,115, - 1,0,0,0,32,114,5,0,0,0,114,136,0,0,0,156, - 1,0,0,115,2,0,0,0,6,2,114,17,0,0,0,122, - 23,77,111,100,117,108,101,83,112,101,99,46,104,97,115,95, - 108,111,99,97,116,105,111,110,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,3,0,0,0,115,14,0, - 0,0,116,0,124,1,131,1,124,0,95,1,100,0,83,0, - 114,0,0,0,0,41,2,218,4,98,111,111,108,114,130,0, - 0,0,41,2,114,34,0,0,0,218,5,118,97,108,117,101, - 115,2,0,0,0,32,32,114,5,0,0,0,114,136,0,0, - 0,160,1,0,0,115,2,0,0,0,14,2,114,17,0,0, - 0,41,12,114,8,0,0,0,114,7,0,0,0,114,1,0, - 0,0,114,9,0,0,0,114,35,0,0,0,114,54,0,0, - 0,114,138,0,0,0,218,8,112,114,111,112,101,114,116,121, - 114,135,0,0,0,218,6,115,101,116,116,101,114,114,143,0, - 0,0,114,136,0,0,0,114,23,0,0,0,114,17,0,0, - 0,114,5,0,0,0,114,125,0,0,0,64,1,0,0,115, - 34,0,0,0,8,0,4,1,4,36,2,1,12,255,8,12, - 8,10,2,12,10,1,4,8,10,1,2,3,10,1,2,7, - 10,1,4,3,14,1,114,17,0,0,0,114,125,0,0,0, - 169,2,114,126,0,0,0,114,128,0,0,0,99,2,0,0, - 0,0,0,0,0,2,0,0,0,8,0,0,0,3,0,0, - 0,115,152,0,0,0,116,0,124,1,100,1,131,2,114,37, - 116,1,100,2,117,0,114,11,116,2,130,1,116,1,106,3, - 125,4,124,3,100,2,117,0,114,24,124,4,124,0,124,1, - 100,3,141,2,83,0,124,3,114,28,103,0,110,1,100,2, - 125,5,124,4,124,0,124,1,124,5,100,4,141,3,83,0, - 124,3,100,2,117,0,114,67,116,0,124,1,100,5,131,2, - 114,65,9,0,124,1,160,4,124,0,161,1,125,3,110,14, - 35,0,4,0,116,5,121,75,1,0,1,0,1,0,100,2, - 125,3,89,0,110,3,37,0,100,6,125,3,116,6,124,0, - 124,1,124,2,124,3,100,7,141,4,83,0,119,0,41,8, - 122,53,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, - 118,97,114,105,111,117,115,32,108,111,97,100,101,114,32,109, - 101,116,104,111,100,115,46,90,12,103,101,116,95,102,105,108, - 101,110,97,109,101,78,41,1,114,122,0,0,0,41,2,114, - 122,0,0,0,114,129,0,0,0,114,128,0,0,0,70,114, - 148,0,0,0,41,7,114,10,0,0,0,114,139,0,0,0, - 114,140,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,114,128, - 0,0,0,114,88,0,0,0,114,125,0,0,0,41,6,114, - 20,0,0,0,114,122,0,0,0,114,126,0,0,0,114,128, - 0,0,0,114,149,0,0,0,90,6,115,101,97,114,99,104, - 115,6,0,0,0,32,32,32,32,32,32,114,5,0,0,0, - 114,104,0,0,0,165,1,0,0,115,42,0,0,0,10,2, - 8,1,4,1,6,1,8,2,12,1,12,1,6,1,2,1, - 6,255,8,3,10,1,2,1,12,1,2,128,12,1,8,1, - 2,128,4,3,16,2,2,250,115,15,0,0,0,175,5,53, - 0,181,9,65,0,7,193,11,1,65,0,7,114,104,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,3,0,0,0,115,50,1,0,0,9,0,124,0,106, - 0,125,3,110,10,35,0,4,0,116,1,121,152,1,0,1, - 0,1,0,89,0,110,7,37,0,124,3,100,0,117,1,114, - 21,124,3,83,0,124,0,106,2,125,4,124,1,100,0,117, - 0,114,43,9,0,124,0,106,3,125,1,110,10,35,0,4, - 0,116,1,121,151,1,0,1,0,1,0,89,0,110,1,37, - 0,9,0,124,0,106,4,125,5,110,12,35,0,4,0,116, - 1,121,150,1,0,1,0,1,0,100,0,125,5,89,0,110, - 1,37,0,124,2,100,0,117,0,114,87,124,5,100,0,117, - 0,114,85,9,0,124,1,106,5,125,2,110,14,35,0,4, - 0,116,1,121,149,1,0,1,0,1,0,100,0,125,2,89, - 0,110,3,37,0,124,5,125,2,9,0,124,0,106,6,125, - 6,110,12,35,0,4,0,116,1,121,148,1,0,1,0,1, - 0,100,0,125,6,89,0,110,1,37,0,9,0,116,7,124, - 0,106,8,131,1,125,7,110,12,35,0,4,0,116,1,121, - 147,1,0,1,0,1,0,100,0,125,7,89,0,110,1,37, - 0,116,9,124,4,124,1,124,2,100,1,141,3,125,3,124, - 5,100,0,117,0,114,136,100,2,110,1,100,3,124,3,95, - 10,124,6,124,3,95,11,124,7,124,3,95,12,124,3,83, - 0,119,0,119,0,119,0,119,0,119,0,119,0,41,4,78, - 169,1,114,126,0,0,0,70,84,41,13,114,113,0,0,0, - 114,2,0,0,0,114,8,0,0,0,114,112,0,0,0,114, - 121,0,0,0,218,7,95,79,82,73,71,73,78,218,10,95, - 95,99,97,99,104,101,100,95,95,218,4,108,105,115,116,218, - 8,95,95,112,97,116,104,95,95,114,125,0,0,0,114,130, - 0,0,0,114,135,0,0,0,114,129,0,0,0,41,8,114, - 110,0,0,0,114,122,0,0,0,114,126,0,0,0,114,109, - 0,0,0,114,20,0,0,0,90,8,108,111,99,97,116,105, - 111,110,114,135,0,0,0,114,129,0,0,0,115,8,0,0, - 0,32,32,32,32,32,32,32,32,114,5,0,0,0,218,17, - 95,115,112,101,99,95,102,114,111,109,95,109,111,100,117,108, - 101,191,1,0,0,115,108,0,0,0,2,2,8,1,2,128, - 12,1,4,1,2,128,8,2,4,1,6,2,8,1,2,1, - 8,1,2,128,12,1,4,2,2,128,2,1,8,1,2,128, - 12,1,8,1,2,128,8,1,8,1,2,1,8,1,2,128, - 12,1,8,1,2,128,4,2,2,1,8,1,2,128,12,1, - 8,1,2,128,2,1,12,1,2,128,12,1,8,1,2,128, - 14,2,18,1,6,1,6,1,4,1,2,249,2,252,2,250, - 2,250,2,251,2,246,115,93,0,0,0,129,3,5,0,133, - 7,14,7,157,3,33,0,161,7,42,7,172,3,48,0,176, - 9,59,7,193,5,3,65,9,0,193,9,9,65,20,7,193, - 24,3,65,28,0,193,28,9,65,39,7,193,41,5,65,47, - 0,193,47,9,65,58,7,194,19,1,65,58,7,194,20,1, - 65,39,7,194,21,1,65,20,7,194,22,1,59,7,194,23, - 1,42,7,194,24,1,14,7,114,155,0,0,0,70,169,1, - 218,8,111,118,101,114,114,105,100,101,99,2,0,0,0,0, - 0,0,0,1,0,0,0,8,0,0,0,3,0,0,0,115, - 204,1,0,0,124,2,115,10,116,0,124,1,100,1,100,0, - 131,3,100,0,117,0,114,26,9,0,124,0,106,1,124,1, - 95,2,110,10,35,0,4,0,116,3,121,229,1,0,1,0, - 1,0,89,0,110,1,37,0,124,2,115,36,116,0,124,1, - 100,2,100,0,131,3,100,0,117,0,114,87,124,0,106,4, - 125,3,124,3,100,0,117,0,114,72,124,0,106,5,100,0, - 117,1,114,72,116,6,100,0,117,0,114,54,116,7,130,1, - 116,6,106,8,125,4,124,4,160,9,124,4,161,1,125,3, - 124,0,106,5,124,3,95,10,124,3,124,0,95,4,100,0, - 124,1,95,11,9,0,124,3,124,1,95,12,110,10,35,0, - 4,0,116,3,121,228,1,0,1,0,1,0,89,0,110,1, - 37,0,124,2,115,97,116,0,124,1,100,3,100,0,131,3, - 100,0,117,0,114,113,9,0,124,0,106,13,124,1,95,14, - 110,10,35,0,4,0,116,3,121,227,1,0,1,0,1,0, - 89,0,110,1,37,0,9,0,124,0,124,1,95,15,110,10, - 35,0,4,0,116,3,121,226,1,0,1,0,1,0,89,0, - 110,1,37,0,124,2,115,138,116,0,124,1,100,4,100,0, - 131,3,100,0,117,0,114,159,124,0,106,5,100,0,117,1, - 114,159,9,0,124,0,106,5,124,1,95,16,110,10,35,0, - 4,0,116,3,121,225,1,0,1,0,1,0,89,0,110,1, - 37,0,124,0,106,17,114,221,124,2,115,172,116,0,124,1, - 100,5,100,0,131,3,100,0,117,0,114,188,9,0,124,0, - 106,18,124,1,95,11,110,10,35,0,4,0,116,3,121,224, - 1,0,1,0,1,0,89,0,110,1,37,0,124,2,115,198, - 116,0,124,1,100,6,100,0,131,3,100,0,117,0,114,221, - 124,0,106,19,100,0,117,1,114,221,9,0,124,0,106,19, - 124,1,95,20,124,1,83,0,35,0,4,0,116,3,121,223, - 1,0,1,0,1,0,89,0,124,1,83,0,37,0,124,1, - 83,0,119,0,119,0,119,0,119,0,119,0,119,0,119,0, - 41,7,78,114,8,0,0,0,114,112,0,0,0,218,11,95, - 95,112,97,99,107,97,103,101,95,95,114,154,0,0,0,114, - 121,0,0,0,114,152,0,0,0,41,21,114,12,0,0,0, - 114,20,0,0,0,114,8,0,0,0,114,2,0,0,0,114, - 122,0,0,0,114,129,0,0,0,114,139,0,0,0,114,140, - 0,0,0,218,16,95,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,218,7,95,95,110,101,119,95,95,90,5, - 95,112,97,116,104,114,121,0,0,0,114,112,0,0,0,114, - 143,0,0,0,114,158,0,0,0,114,113,0,0,0,114,154, - 0,0,0,114,136,0,0,0,114,126,0,0,0,114,135,0, - 0,0,114,152,0,0,0,41,5,114,109,0,0,0,114,110, - 0,0,0,114,157,0,0,0,114,122,0,0,0,114,159,0, - 0,0,115,5,0,0,0,32,32,32,32,32,114,5,0,0, - 0,218,18,95,105,110,105,116,95,109,111,100,117,108,101,95, - 97,116,116,114,115,236,1,0,0,115,142,0,0,0,20,4, - 2,1,10,1,2,128,12,1,4,1,2,128,20,2,6,1, - 8,1,10,2,8,1,4,1,6,1,10,2,8,1,6,1, - 6,11,2,1,8,1,2,128,12,1,4,1,2,128,20,2, - 2,1,10,1,2,128,12,1,4,1,2,128,2,2,8,1, - 2,128,12,1,4,1,2,128,20,2,10,1,2,1,10,1, - 2,128,12,1,4,1,2,128,6,2,20,1,2,1,10,1, - 2,128,12,1,4,1,2,128,20,2,10,1,2,1,8,1, - 4,3,2,128,12,254,2,1,4,1,2,128,4,0,2,254, - 2,249,2,249,2,249,2,251,2,250,2,228,115,121,0,0, - 0,139,4,16,0,144,7,25,7,193,9,3,65,13,0,193, - 13,7,65,22,7,193,34,4,65,39,0,193,39,7,65,48, - 7,193,50,3,65,54,0,193,54,7,65,63,7,194,16,4, - 66,21,0,194,21,7,66,30,7,194,45,4,66,50,0,194, - 50,7,66,59,7,195,12,4,67,18,0,195,18,7,67,28, - 7,195,31,1,67,28,7,195,32,1,66,59,7,195,33,1, - 66,30,7,195,34,1,65,63,7,195,35,1,65,48,7,195, - 36,1,65,22,7,195,37,1,25,7,114,161,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,115,82,0,0,0,100,1,125,1,116,0,124, - 0,106,1,100,2,131,2,114,15,124,0,106,1,160,2,124, - 0,161,1,125,1,110,10,116,0,124,0,106,1,100,3,131, - 2,114,25,116,3,100,4,131,1,130,1,124,1,100,1,117, - 0,114,34,116,4,124,0,106,5,131,1,125,1,116,6,124, - 0,124,1,131,2,1,0,124,1,83,0,41,5,122,43,67, - 114,101,97,116,101,32,97,32,109,111,100,117,108,101,32,98, - 97,115,101,100,32,111,110,32,116,104,101,32,112,114,111,118, - 105,100,101,100,32,115,112,101,99,46,78,218,13,99,114,101, - 97,116,101,95,109,111,100,117,108,101,218,11,101,120,101,99, - 95,109,111,100,117,108,101,122,66,108,111,97,100,101,114,115, - 32,116,104,97,116,32,100,101,102,105,110,101,32,101,120,101, - 99,95,109,111,100,117,108,101,40,41,32,109,117,115,116,32, - 97,108,115,111,32,100,101,102,105,110,101,32,99,114,101,97, - 116,101,95,109,111,100,117,108,101,40,41,41,7,114,10,0, - 0,0,114,122,0,0,0,114,162,0,0,0,114,88,0,0, - 0,114,21,0,0,0,114,20,0,0,0,114,161,0,0,0, - 169,2,114,109,0,0,0,114,110,0,0,0,115,2,0,0, - 0,32,32,114,5,0,0,0,218,16,109,111,100,117,108,101, - 95,102,114,111,109,95,115,112,101,99,52,2,0,0,115,18, - 0,0,0,4,3,12,1,14,3,12,1,8,1,8,2,10, - 1,10,1,4,1,114,17,0,0,0,114,165,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, - 0,114,7,100,2,110,2,124,0,106,0,125,1,124,0,106, - 1,100,1,117,0,114,32,124,0,106,2,100,1,117,0,114, - 25,100,3,160,3,124,1,161,1,83,0,100,4,160,3,124, - 1,124,0,106,2,161,2,83,0,124,0,106,4,114,42,100, - 5,160,3,124,1,124,0,106,1,161,2,83,0,100,6,160, - 3,124,0,106,0,124,0,106,1,161,2,83,0,41,7,122, - 38,82,101,116,117,114,110,32,116,104,101,32,114,101,112,114, - 32,116,111,32,117,115,101,32,102,111,114,32,116,104,101,32, - 109,111,100,117,108,101,46,78,114,115,0,0,0,114,116,0, - 0,0,114,117,0,0,0,114,118,0,0,0,250,18,60,109, - 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, - 41,5,114,20,0,0,0,114,126,0,0,0,114,122,0,0, - 0,114,51,0,0,0,114,136,0,0,0,41,2,114,109,0, - 0,0,114,20,0,0,0,115,2,0,0,0,32,32,114,5, - 0,0,0,114,119,0,0,0,69,2,0,0,115,16,0,0, - 0,20,3,10,1,10,1,10,1,14,2,6,2,14,1,16, - 2,114,17,0,0,0,114,119,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,10,0,0,0,3,0,0,0, - 115,32,1,0,0,124,0,106,0,125,2,116,1,124,2,131, - 1,53,0,1,0,116,2,106,3,160,4,124,2,161,1,124, - 1,117,1,114,27,100,1,160,5,124,2,161,1,125,3,116, - 6,124,3,124,2,100,2,141,2,130,1,9,0,124,0,106, - 7,100,3,117,0,114,53,124,0,106,8,100,3,117,0,114, - 45,116,6,100,4,124,0,106,0,100,2,141,2,130,1,116, - 9,124,0,124,1,100,5,100,6,141,3,1,0,110,40,116, - 9,124,0,124,1,100,5,100,6,141,3,1,0,116,10,124, - 0,106,7,100,7,131,2,115,87,116,11,124,0,106,7,131, - 1,155,0,100,8,157,2,125,3,116,12,160,13,124,3,116, - 14,161,2,1,0,124,0,106,7,160,15,124,2,161,1,1, - 0,110,6,124,0,106,7,160,16,124,1,161,1,1,0,116, + 110,115,96,44,32,116,104,101,32,105,109,112,111,114,116,10, + 32,32,32,32,115,121,115,116,101,109,32,119,105,108,108,32, + 99,111,110,115,105,100,101,114,32,109,111,100,117,108,101,115, + 32,108,111,97,100,101,100,32,102,114,111,109,32,116,104,101, + 32,115,112,101,99,32,97,115,32,112,97,99,107,97,103,101, + 115,46,10,10,32,32,32,32,79,110,108,121,32,102,105,110, + 100,101,114,115,32,40,115,101,101,32,105,109,112,111,114,116, + 108,105,98,46,97,98,99,46,77,101,116,97,80,97,116,104, + 70,105,110,100,101,114,32,97,110,100,10,32,32,32,32,105, + 109,112,111,114,116,108,105,98,46,97,98,99,46,80,97,116, + 104,69,110,116,114,121,70,105,110,100,101,114,41,32,115,104, + 111,117,108,100,32,109,111,100,105,102,121,32,77,111,100,117, + 108,101,83,112,101,99,32,105,110,115,116,97,110,99,101,115, + 46,10,10,32,32,32,32,78,41,3,218,6,111,114,105,103, + 105,110,218,12,108,111,97,100,101,114,95,115,116,97,116,101, + 218,10,105,115,95,112,97,99,107,97,103,101,99,3,0,0, + 0,0,0,0,0,3,0,0,0,2,0,0,0,3,0,0, + 0,115,54,0,0,0,124,1,124,0,95,0,124,2,124,0, + 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, + 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, + 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, + 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, + 0,114,127,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,218,13,95,115,101,116,95,102,105,108,101,97,116,116, + 114,218,7,95,99,97,99,104,101,100,41,6,114,34,0,0, + 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, + 114,127,0,0,0,114,128,0,0,0,115,6,0,0,0,32, + 32,32,32,32,32,114,5,0,0,0,114,35,0,0,0,101, + 1,0,0,115,14,0,0,0,6,2,6,1,6,1,6,1, + 14,1,6,3,10,1,114,17,0,0,0,122,19,77,111,100, + 117,108,101,83,112,101,99,46,95,95,105,110,105,116,95,95, + 99,1,0,0,0,0,0,0,0,0,0,0,0,6,0,0, + 0,3,0,0,0,115,102,0,0,0,100,1,160,0,124,0, + 106,1,161,1,100,2,160,0,124,0,106,2,161,1,103,2, + 125,1,124,0,106,3,100,0,117,1,114,26,124,1,160,4, + 100,3,160,0,124,0,106,3,161,1,161,1,1,0,124,0, + 106,5,100,0,117,1,114,40,124,1,160,4,100,4,160,0, + 124,0,106,5,161,1,161,1,1,0,100,5,160,0,124,0, + 106,6,106,7,100,6,160,8,124,1,161,1,161,2,83,0, + 41,7,78,122,9,110,97,109,101,61,123,33,114,125,122,11, + 108,111,97,100,101,114,61,123,33,114,125,122,11,111,114,105, + 103,105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,125,41,122, + 2,44,32,41,9,114,51,0,0,0,114,20,0,0,0,114, + 122,0,0,0,114,126,0,0,0,218,6,97,112,112,101,110, + 100,114,129,0,0,0,218,9,95,95,99,108,97,115,115,95, + 95,114,8,0,0,0,218,4,106,111,105,110,41,2,114,34, + 0,0,0,114,63,0,0,0,115,2,0,0,0,32,32,114, + 5,0,0,0,114,54,0,0,0,113,1,0,0,115,20,0, + 0,0,10,1,10,1,4,255,10,2,18,1,10,1,6,1, + 8,1,4,255,22,2,114,17,0,0,0,122,19,77,111,100, + 117,108,101,83,112,101,99,46,95,95,114,101,112,114,95,95, + 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,3,0,0,0,115,104,0,0,0,124,0,106,0,125,2, + 9,0,124,0,106,1,124,1,106,1,107,2,111,38,124,0, + 106,2,124,1,106,2,107,2,111,38,124,0,106,3,124,1, + 106,3,107,2,111,38,124,2,124,1,106,0,107,2,111,38, + 124,0,106,4,124,1,106,4,107,2,111,38,124,0,106,5, + 124,1,106,5,107,2,83,0,35,0,4,0,116,6,121,51, + 1,0,1,0,1,0,116,7,6,0,89,0,83,0,37,0, + 119,0,114,0,0,0,0,41,8,114,129,0,0,0,114,20, + 0,0,0,114,122,0,0,0,114,126,0,0,0,218,6,99, + 97,99,104,101,100,218,12,104,97,115,95,108,111,99,97,116, + 105,111,110,114,2,0,0,0,218,14,78,111,116,73,109,112, + 108,101,109,101,110,116,101,100,41,3,114,34,0,0,0,90, + 5,111,116,104,101,114,90,4,115,109,115,108,115,3,0,0, + 0,32,32,32,114,5,0,0,0,218,6,95,95,101,113,95, + 95,123,1,0,0,115,36,0,0,0,6,1,2,1,12,1, + 10,1,2,255,10,2,2,254,8,3,2,253,10,4,2,252, + 10,5,2,251,2,128,12,6,8,1,2,128,2,255,115,12, + 0,0,0,132,34,39,0,167,9,50,7,179,1,50,7,122, + 17,77,111,100,117,108,101,83,112,101,99,46,95,95,101,113, + 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,115,58,0,0,0,124,0,106,0, + 100,0,117,0,114,26,124,0,106,1,100,0,117,1,114,26, + 124,0,106,2,114,26,116,3,100,0,117,0,114,19,116,4, + 130,1,116,3,160,5,124,0,106,1,161,1,124,0,95,0, + 124,0,106,0,83,0,114,0,0,0,0,41,6,114,131,0, + 0,0,114,126,0,0,0,114,130,0,0,0,218,19,95,98, + 111,111,116,115,116,114,97,112,95,101,120,116,101,114,110,97, + 108,218,19,78,111,116,73,109,112,108,101,109,101,110,116,101, + 100,69,114,114,111,114,90,11,95,103,101,116,95,99,97,99, + 104,101,100,114,53,0,0,0,115,1,0,0,0,32,114,5, + 0,0,0,114,135,0,0,0,135,1,0,0,115,12,0,0, + 0,10,2,16,1,8,1,4,1,14,1,6,1,114,17,0, + 0,0,122,17,77,111,100,117,108,101,83,112,101,99,46,99, + 97,99,104,101,100,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,115,10,0,0,0,124, + 1,124,0,95,0,100,0,83,0,114,0,0,0,0,41,1, + 114,131,0,0,0,41,2,114,34,0,0,0,114,135,0,0, + 0,115,2,0,0,0,32,32,114,5,0,0,0,114,135,0, + 0,0,144,1,0,0,115,2,0,0,0,10,2,114,17,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,115,32,0,0,0,124,0,106,0, + 100,1,117,0,114,13,124,0,106,1,160,2,100,2,161,1, + 100,3,25,0,83,0,124,0,106,1,83,0,41,4,122,32, + 84,104,101,32,110,97,109,101,32,111,102,32,116,104,101,32, + 109,111,100,117,108,101,39,115,32,112,97,114,101,110,116,46, + 78,218,1,46,114,26,0,0,0,41,3,114,129,0,0,0, + 114,20,0,0,0,218,10,114,112,97,114,116,105,116,105,111, + 110,114,53,0,0,0,115,1,0,0,0,32,114,5,0,0, + 0,218,6,112,97,114,101,110,116,148,1,0,0,115,6,0, + 0,0,10,3,16,1,6,2,114,17,0,0,0,122,17,77, + 111,100,117,108,101,83,112,101,99,46,112,97,114,101,110,116, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,115,6,0,0,0,124,0,106,0,83,0, + 114,0,0,0,0,41,1,114,130,0,0,0,114,53,0,0, + 0,115,1,0,0,0,32,114,5,0,0,0,114,136,0,0, + 0,156,1,0,0,115,2,0,0,0,6,2,114,17,0,0, + 0,122,23,77,111,100,117,108,101,83,112,101,99,46,104,97, + 115,95,108,111,99,97,116,105,111,110,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,115, + 14,0,0,0,116,0,124,1,131,1,124,0,95,1,100,0, + 83,0,114,0,0,0,0,41,2,218,4,98,111,111,108,114, + 130,0,0,0,41,2,114,34,0,0,0,218,5,118,97,108, + 117,101,115,2,0,0,0,32,32,114,5,0,0,0,114,136, + 0,0,0,160,1,0,0,115,2,0,0,0,14,2,114,17, + 0,0,0,41,12,114,8,0,0,0,114,7,0,0,0,114, + 1,0,0,0,114,9,0,0,0,114,35,0,0,0,114,54, + 0,0,0,114,138,0,0,0,218,8,112,114,111,112,101,114, + 116,121,114,135,0,0,0,218,6,115,101,116,116,101,114,114, + 143,0,0,0,114,136,0,0,0,114,23,0,0,0,114,17, + 0,0,0,114,5,0,0,0,114,125,0,0,0,64,1,0, + 0,115,34,0,0,0,8,0,4,1,4,36,2,1,12,255, + 8,12,8,10,2,12,10,1,4,8,10,1,2,3,10,1, + 2,7,10,1,4,3,14,1,114,17,0,0,0,114,125,0, + 0,0,169,2,114,126,0,0,0,114,128,0,0,0,99,2, + 0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,3, + 0,0,0,115,152,0,0,0,116,0,124,1,100,1,131,2, + 114,37,116,1,100,2,117,0,114,11,116,2,130,1,116,1, + 106,3,125,4,124,3,100,2,117,0,114,24,124,4,124,0, + 124,1,100,3,141,2,83,0,124,3,114,28,103,0,110,1, + 100,2,125,5,124,4,124,0,124,1,124,5,100,4,141,3, + 83,0,124,3,100,2,117,0,114,67,116,0,124,1,100,5, + 131,2,114,65,9,0,124,1,160,4,124,0,161,1,125,3, + 110,14,35,0,4,0,116,5,121,75,1,0,1,0,1,0, + 100,2,125,3,89,0,110,3,37,0,100,6,125,3,116,6, + 124,0,124,1,124,2,124,3,100,7,141,4,83,0,119,0, + 41,8,122,53,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,118,97,114,105,111,117,115,32,108,111,97,100,101,114, + 32,109,101,116,104,111,100,115,46,90,12,103,101,116,95,102, + 105,108,101,110,97,109,101,78,41,1,114,122,0,0,0,41, + 2,114,122,0,0,0,114,129,0,0,0,114,128,0,0,0, + 70,114,148,0,0,0,41,7,114,10,0,0,0,114,139,0, + 0,0,114,140,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, + 114,128,0,0,0,114,88,0,0,0,114,125,0,0,0,41, + 6,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, + 114,128,0,0,0,114,149,0,0,0,90,6,115,101,97,114, + 99,104,115,6,0,0,0,32,32,32,32,32,32,114,5,0, + 0,0,114,104,0,0,0,165,1,0,0,115,42,0,0,0, + 10,2,8,1,4,1,6,1,8,2,12,1,12,1,6,1, + 2,1,6,255,8,3,10,1,2,1,12,1,2,128,12,1, + 8,1,2,128,4,3,16,2,2,250,115,15,0,0,0,175, + 5,53,0,181,9,65,0,7,193,11,1,65,0,7,114,104, + 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,3,0,0,0,115,50,1,0,0,9,0,124, + 0,106,0,125,3,110,10,35,0,4,0,116,1,121,152,1, + 0,1,0,1,0,89,0,110,7,37,0,124,3,100,0,117, + 1,114,21,124,3,83,0,124,0,106,2,125,4,124,1,100, + 0,117,0,114,43,9,0,124,0,106,3,125,1,110,10,35, + 0,4,0,116,1,121,151,1,0,1,0,1,0,89,0,110, + 1,37,0,9,0,124,0,106,4,125,5,110,12,35,0,4, + 0,116,1,121,150,1,0,1,0,1,0,100,0,125,5,89, + 0,110,1,37,0,124,2,100,0,117,0,114,87,124,5,100, + 0,117,0,114,85,9,0,124,1,106,5,125,2,110,14,35, + 0,4,0,116,1,121,149,1,0,1,0,1,0,100,0,125, + 2,89,0,110,3,37,0,124,5,125,2,9,0,124,0,106, + 6,125,6,110,12,35,0,4,0,116,1,121,148,1,0,1, + 0,1,0,100,0,125,6,89,0,110,1,37,0,9,0,116, + 7,124,0,106,8,131,1,125,7,110,12,35,0,4,0,116, + 1,121,147,1,0,1,0,1,0,100,0,125,7,89,0,110, + 1,37,0,116,9,124,4,124,1,124,2,100,1,141,3,125, + 3,124,5,100,0,117,0,114,136,100,2,110,1,100,3,124, + 3,95,10,124,6,124,3,95,11,124,7,124,3,95,12,124, + 3,83,0,119,0,119,0,119,0,119,0,119,0,119,0,41, + 4,78,169,1,114,126,0,0,0,70,84,41,13,114,113,0, + 0,0,114,2,0,0,0,114,8,0,0,0,114,112,0,0, + 0,114,121,0,0,0,218,7,95,79,82,73,71,73,78,218, + 10,95,95,99,97,99,104,101,100,95,95,218,4,108,105,115, + 116,218,8,95,95,112,97,116,104,95,95,114,125,0,0,0, + 114,130,0,0,0,114,135,0,0,0,114,129,0,0,0,41, + 8,114,110,0,0,0,114,122,0,0,0,114,126,0,0,0, + 114,109,0,0,0,114,20,0,0,0,90,8,108,111,99,97, + 116,105,111,110,114,135,0,0,0,114,129,0,0,0,115,8, + 0,0,0,32,32,32,32,32,32,32,32,114,5,0,0,0, + 218,17,95,115,112,101,99,95,102,114,111,109,95,109,111,100, + 117,108,101,191,1,0,0,115,108,0,0,0,2,2,8,1, + 2,128,12,1,4,1,2,128,8,2,4,1,6,2,8,1, + 2,1,8,1,2,128,12,1,4,2,2,128,2,1,8,1, + 2,128,12,1,8,1,2,128,8,1,8,1,2,1,8,1, + 2,128,12,1,8,1,2,128,4,2,2,1,8,1,2,128, + 12,1,8,1,2,128,2,1,12,1,2,128,12,1,8,1, + 2,128,14,2,18,1,6,1,6,1,4,1,2,249,2,252, + 2,250,2,250,2,251,2,246,115,93,0,0,0,129,3,5, + 0,133,7,14,7,157,3,33,0,161,7,42,7,172,3,48, + 0,176,9,59,7,193,5,3,65,9,0,193,9,9,65,20, + 7,193,24,3,65,28,0,193,28,9,65,39,7,193,41,5, + 65,47,0,193,47,9,65,58,7,194,19,1,65,58,7,194, + 20,1,65,39,7,194,21,1,65,20,7,194,22,1,59,7, + 194,23,1,42,7,194,24,1,14,7,114,155,0,0,0,70, + 169,1,218,8,111,118,101,114,114,105,100,101,99,2,0,0, + 0,0,0,0,0,1,0,0,0,8,0,0,0,3,0,0, + 0,115,204,1,0,0,124,2,115,10,116,0,124,1,100,1, + 100,0,131,3,100,0,117,0,114,26,9,0,124,0,106,1, + 124,1,95,2,110,10,35,0,4,0,116,3,121,229,1,0, + 1,0,1,0,89,0,110,1,37,0,124,2,115,36,116,0, + 124,1,100,2,100,0,131,3,100,0,117,0,114,87,124,0, + 106,4,125,3,124,3,100,0,117,0,114,72,124,0,106,5, + 100,0,117,1,114,72,116,6,100,0,117,0,114,54,116,7, + 130,1,116,6,106,8,125,4,124,4,160,9,124,4,161,1, + 125,3,124,0,106,5,124,3,95,10,124,3,124,0,95,4, + 100,0,124,1,95,11,9,0,124,3,124,1,95,12,110,10, + 35,0,4,0,116,3,121,228,1,0,1,0,1,0,89,0, + 110,1,37,0,124,2,115,97,116,0,124,1,100,3,100,0, + 131,3,100,0,117,0,114,113,9,0,124,0,106,13,124,1, + 95,14,110,10,35,0,4,0,116,3,121,227,1,0,1,0, + 1,0,89,0,110,1,37,0,9,0,124,0,124,1,95,15, + 110,10,35,0,4,0,116,3,121,226,1,0,1,0,1,0, + 89,0,110,1,37,0,124,2,115,138,116,0,124,1,100,4, + 100,0,131,3,100,0,117,0,114,159,124,0,106,5,100,0, + 117,1,114,159,9,0,124,0,106,5,124,1,95,16,110,10, + 35,0,4,0,116,3,121,225,1,0,1,0,1,0,89,0, + 110,1,37,0,124,0,106,17,114,221,124,2,115,172,116,0, + 124,1,100,5,100,0,131,3,100,0,117,0,114,188,9,0, + 124,0,106,18,124,1,95,11,110,10,35,0,4,0,116,3, + 121,224,1,0,1,0,1,0,89,0,110,1,37,0,124,2, + 115,198,116,0,124,1,100,6,100,0,131,3,100,0,117,0, + 114,221,124,0,106,19,100,0,117,1,114,221,9,0,124,0, + 106,19,124,1,95,20,124,1,83,0,35,0,4,0,116,3, + 121,223,1,0,1,0,1,0,89,0,124,1,83,0,37,0, + 124,1,83,0,119,0,119,0,119,0,119,0,119,0,119,0, + 119,0,41,7,78,114,8,0,0,0,114,112,0,0,0,218, + 11,95,95,112,97,99,107,97,103,101,95,95,114,154,0,0, + 0,114,121,0,0,0,114,152,0,0,0,41,21,114,12,0, + 0,0,114,20,0,0,0,114,8,0,0,0,114,2,0,0, + 0,114,122,0,0,0,114,129,0,0,0,114,139,0,0,0, + 114,140,0,0,0,218,16,95,78,97,109,101,115,112,97,99, + 101,76,111,97,100,101,114,218,7,95,95,110,101,119,95,95, + 90,5,95,112,97,116,104,114,121,0,0,0,114,112,0,0, + 0,114,143,0,0,0,114,158,0,0,0,114,113,0,0,0, + 114,154,0,0,0,114,136,0,0,0,114,126,0,0,0,114, + 135,0,0,0,114,152,0,0,0,41,5,114,109,0,0,0, + 114,110,0,0,0,114,157,0,0,0,114,122,0,0,0,114, + 159,0,0,0,115,5,0,0,0,32,32,32,32,32,114,5, + 0,0,0,218,18,95,105,110,105,116,95,109,111,100,117,108, + 101,95,97,116,116,114,115,236,1,0,0,115,142,0,0,0, + 20,4,2,1,10,1,2,128,12,1,4,1,2,128,20,2, + 6,1,8,1,10,2,8,1,4,1,6,1,10,2,8,1, + 6,1,6,11,2,1,8,1,2,128,12,1,4,1,2,128, + 20,2,2,1,10,1,2,128,12,1,4,1,2,128,2,2, + 8,1,2,128,12,1,4,1,2,128,20,2,10,1,2,1, + 10,1,2,128,12,1,4,1,2,128,6,2,20,1,2,1, + 10,1,2,128,12,1,4,1,2,128,20,2,10,1,2,1, + 8,1,4,3,2,128,12,254,2,1,4,1,2,128,4,0, + 2,254,2,249,2,249,2,249,2,251,2,250,2,228,115,121, + 0,0,0,139,4,16,0,144,7,25,7,193,9,3,65,13, + 0,193,13,7,65,22,7,193,34,4,65,39,0,193,39,7, + 65,48,7,193,50,3,65,54,0,193,54,7,65,63,7,194, + 16,4,66,21,0,194,21,7,66,30,7,194,45,4,66,50, + 0,194,50,7,66,59,7,195,12,4,67,18,0,195,18,7, + 67,28,7,195,31,1,67,28,7,195,32,1,66,59,7,195, + 33,1,66,30,7,195,34,1,65,63,7,195,35,1,65,48, + 7,195,36,1,65,22,7,195,37,1,25,7,114,161,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,115,82,0,0,0,100,1,125,1,116, + 0,124,0,106,1,100,2,131,2,114,15,124,0,106,1,160, + 2,124,0,161,1,125,1,110,10,116,0,124,0,106,1,100, + 3,131,2,114,25,116,3,100,4,131,1,130,1,124,1,100, + 1,117,0,114,34,116,4,124,0,106,5,131,1,125,1,116, + 6,124,0,124,1,131,2,1,0,124,1,83,0,41,5,122, + 43,67,114,101,97,116,101,32,97,32,109,111,100,117,108,101, + 32,98,97,115,101,100,32,111,110,32,116,104,101,32,112,114, + 111,118,105,100,101,100,32,115,112,101,99,46,78,218,13,99, + 114,101,97,116,101,95,109,111,100,117,108,101,218,11,101,120, + 101,99,95,109,111,100,117,108,101,122,66,108,111,97,100,101, + 114,115,32,116,104,97,116,32,100,101,102,105,110,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,109,117,115, + 116,32,97,108,115,111,32,100,101,102,105,110,101,32,99,114, + 101,97,116,101,95,109,111,100,117,108,101,40,41,41,7,114, + 10,0,0,0,114,122,0,0,0,114,162,0,0,0,114,88, + 0,0,0,114,21,0,0,0,114,20,0,0,0,114,161,0, + 0,0,169,2,114,109,0,0,0,114,110,0,0,0,115,2, + 0,0,0,32,32,114,5,0,0,0,218,16,109,111,100,117, + 108,101,95,102,114,111,109,95,115,112,101,99,52,2,0,0, + 115,18,0,0,0,4,3,12,1,14,3,12,1,8,1,8, + 2,10,1,10,1,4,1,114,17,0,0,0,114,165,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,115,100,0,0,0,124,0,106,0,100, + 1,117,0,114,7,100,2,110,2,124,0,106,0,125,1,124, + 0,106,1,100,1,117,0,114,32,124,0,106,2,100,1,117, + 0,114,25,100,3,160,3,124,1,161,1,83,0,100,4,160, + 3,124,1,124,0,106,2,161,2,83,0,124,0,106,4,114, + 42,100,5,160,3,124,1,124,0,106,1,161,2,83,0,100, + 6,160,3,124,0,106,0,124,0,106,1,161,2,83,0,41, + 7,122,38,82,101,116,117,114,110,32,116,104,101,32,114,101, + 112,114,32,116,111,32,117,115,101,32,102,111,114,32,116,104, + 101,32,109,111,100,117,108,101,46,78,114,115,0,0,0,114, + 116,0,0,0,114,117,0,0,0,114,118,0,0,0,250,18, + 60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,125, + 41,62,41,5,114,20,0,0,0,114,126,0,0,0,114,122, + 0,0,0,114,51,0,0,0,114,136,0,0,0,41,2,114, + 109,0,0,0,114,20,0,0,0,115,2,0,0,0,32,32, + 114,5,0,0,0,114,119,0,0,0,69,2,0,0,115,16, + 0,0,0,20,3,10,1,10,1,10,1,14,2,6,2,14, + 1,16,2,114,17,0,0,0,114,119,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,10,0,0,0,3,0, + 0,0,115,32,1,0,0,124,0,106,0,125,2,116,1,124, + 2,131,1,53,0,1,0,116,2,106,3,160,4,124,2,161, + 1,124,1,117,1,114,27,100,1,160,5,124,2,161,1,125, + 3,116,6,124,3,124,2,100,2,141,2,130,1,9,0,124, + 0,106,7,100,3,117,0,114,53,124,0,106,8,100,3,117, + 0,114,45,116,6,100,4,124,0,106,0,100,2,141,2,130, + 1,116,9,124,0,124,1,100,5,100,6,141,3,1,0,110, + 40,116,9,124,0,124,1,100,5,100,6,141,3,1,0,116, + 10,124,0,106,7,100,7,131,2,115,87,116,11,124,0,106, + 7,131,1,155,0,100,8,157,2,125,3,116,12,160,13,124, + 3,116,14,161,2,1,0,124,0,106,7,160,15,124,2,161, + 1,1,0,110,6,124,0,106,7,160,16,124,1,161,1,1, + 0,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, + 1,116,2,106,3,124,0,106,0,60,0,110,16,35,0,116, 2,106,3,160,17,124,0,106,0,161,1,125,1,124,1,116, - 2,106,3,124,0,106,0,60,0,110,16,35,0,116,2,106, - 3,160,17,124,0,106,0,161,1,125,1,124,1,116,2,106, - 3,124,0,106,0,60,0,119,0,37,0,9,0,100,3,4, - 0,4,0,131,3,1,0,124,1,83,0,35,0,49,0,115, - 136,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, - 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, - 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, - 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, - 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, - 30,109,111,100,117,108,101,32,123,33,114,125,32,110,111,116, - 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,114, - 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, - 111,97,100,101,114,84,114,156,0,0,0,114,163,0,0,0, - 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, - 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, - 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, - 114,58,0,0,0,114,18,0,0,0,114,105,0,0,0,114, - 39,0,0,0,114,51,0,0,0,114,88,0,0,0,114,122, - 0,0,0,114,129,0,0,0,114,161,0,0,0,114,10,0, + 2,106,3,124,0,106,0,60,0,119,0,37,0,9,0,100, + 3,4,0,4,0,131,3,1,0,124,1,83,0,35,0,49, + 0,115,136,119,4,37,0,1,0,1,0,1,0,89,0,1, + 0,1,0,124,1,83,0,41,9,122,70,69,120,101,99,117, + 116,101,32,116,104,101,32,115,112,101,99,39,115,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, + 110,32,97,110,32,101,120,105,115,116,105,110,103,32,109,111, + 100,117,108,101,39,115,32,110,97,109,101,115,112,97,99,101, + 46,122,30,109,111,100,117,108,101,32,123,33,114,125,32,110, + 111,116,32,105,110,32,115,121,115,46,109,111,100,117,108,101, + 115,114,19,0,0,0,78,250,14,109,105,115,115,105,110,103, + 32,108,111,97,100,101,114,84,114,156,0,0,0,114,163,0, + 0,0,250,55,46,101,120,101,99,95,109,111,100,117,108,101, + 40,41,32,110,111,116,32,102,111,117,110,100,59,32,102,97, + 108,108,105,110,103,32,98,97,99,107,32,116,111,32,108,111, + 97,100,95,109,111,100,117,108,101,40,41,41,18,114,20,0, + 0,0,114,58,0,0,0,114,18,0,0,0,114,105,0,0, + 0,114,39,0,0,0,114,51,0,0,0,114,88,0,0,0, + 114,122,0,0,0,114,129,0,0,0,114,161,0,0,0,114, + 10,0,0,0,114,6,0,0,0,114,101,0,0,0,114,102, + 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, + 110,103,218,11,108,111,97,100,95,109,111,100,117,108,101,114, + 163,0,0,0,218,3,112,111,112,41,4,114,109,0,0,0, + 114,110,0,0,0,114,20,0,0,0,114,108,0,0,0,115, + 4,0,0,0,32,32,32,32,114,5,0,0,0,114,106,0, + 0,0,86,2,0,0,115,54,0,0,0,6,2,10,1,16, + 1,10,1,12,1,2,1,10,1,10,1,14,1,16,2,14, + 2,12,1,16,1,12,2,14,1,12,2,14,4,14,1,2, + 128,14,255,18,1,10,233,4,24,8,232,2,128,12,0,4, + 24,115,41,0,0,0,135,20,66,3,3,156,65,1,65,43, + 2,193,29,14,66,3,3,193,43,15,65,58,9,193,58,1, + 66,3,3,194,3,4,66,7,11,194,8,3,66,7,11,114, + 106,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,3,0,0,0,115,22,1,0,0,9,0, + 124,0,106,0,160,1,124,0,106,2,161,1,1,0,110,25, + 35,0,1,0,1,0,1,0,124,0,106,2,116,3,106,4, + 118,0,114,32,116,3,106,4,160,5,124,0,106,2,161,1, + 125,1,124,1,116,3,106,4,124,0,106,2,60,0,130,0, + 37,0,116,3,106,4,160,5,124,0,106,2,161,1,125,1, + 124,1,116,3,106,4,124,0,106,2,60,0,116,6,124,1, + 100,1,100,0,131,3,100,0,117,0,114,71,9,0,124,0, + 106,0,124,1,95,7,110,10,35,0,4,0,116,8,121,138, + 1,0,1,0,1,0,89,0,110,1,37,0,116,6,124,1, + 100,2,100,0,131,3,100,0,117,0,114,109,9,0,124,1, + 106,9,124,1,95,10,116,11,124,1,100,3,131,2,115,98, + 124,0,106,2,160,12,100,4,161,1,100,5,25,0,124,1, + 95,10,110,10,35,0,4,0,116,8,121,137,1,0,1,0, + 1,0,89,0,110,1,37,0,116,6,124,1,100,6,100,0, + 131,3,100,0,117,0,114,134,9,0,124,0,124,1,95,13, + 124,1,83,0,35,0,4,0,116,8,121,136,1,0,1,0, + 1,0,89,0,124,1,83,0,37,0,124,1,83,0,119,0, + 119,0,119,0,41,7,78,114,112,0,0,0,114,158,0,0, + 0,114,154,0,0,0,114,141,0,0,0,114,26,0,0,0, + 114,113,0,0,0,41,14,114,122,0,0,0,114,170,0,0, + 0,114,20,0,0,0,114,18,0,0,0,114,105,0,0,0, + 114,171,0,0,0,114,12,0,0,0,114,112,0,0,0,114, + 2,0,0,0,114,8,0,0,0,114,158,0,0,0,114,10, + 0,0,0,114,142,0,0,0,114,113,0,0,0,114,164,0, + 0,0,115,2,0,0,0,32,32,114,5,0,0,0,218,25, + 95,108,111,97,100,95,98,97,99,107,119,97,114,100,95,99, + 111,109,112,97,116,105,98,108,101,116,2,0,0,115,80,0, + 0,0,2,3,16,1,2,128,6,1,12,1,14,1,12,1, + 2,1,2,128,14,3,12,1,16,1,2,1,10,1,2,128, + 12,1,4,1,2,128,16,1,2,1,8,4,10,1,18,1, + 4,128,12,1,4,1,2,128,16,1,2,1,6,1,4,3, + 2,128,12,254,2,1,4,1,2,128,4,0,2,254,2,251, + 2,246,115,59,0,0,0,129,7,9,0,137,24,33,7,184, + 4,61,0,189,7,65,6,7,193,16,18,65,35,0,193,35, + 7,65,44,7,193,54,3,65,59,0,193,59,7,66,5,7, + 194,8,1,66,5,7,194,9,1,65,44,7,194,10,1,65, + 6,7,114,172,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,11,0,0,0,3,0,0,0,115,248,0,0, + 0,124,0,106,0,100,0,117,1,114,29,116,1,124,0,106, + 0,100,1,131,2,115,29,116,2,124,0,106,0,131,1,155, + 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, + 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, + 1,125,2,100,3,124,0,95,8,9,0,124,2,116,9,106, + 10,124,0,106,11,60,0,9,0,124,0,106,0,100,0,117, + 0,114,62,124,0,106,12,100,0,117,0,114,61,116,13,100, + 4,124,0,106,11,100,5,141,2,130,1,110,6,124,0,106, + 0,160,14,124,2,161,1,1,0,110,22,35,0,1,0,1, + 0,1,0,9,0,116,9,106,10,124,0,106,11,61,0,130, + 0,35,0,4,0,116,15,121,123,1,0,1,0,1,0,89, + 0,130,0,37,0,37,0,116,9,106,10,160,16,124,0,106, + 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, + 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, + 0,100,7,124,0,95,8,124,2,83,0,35,0,100,7,124, + 0,95,8,119,0,37,0,119,0,41,8,78,114,163,0,0, + 0,114,168,0,0,0,84,114,167,0,0,0,114,19,0,0, + 0,122,18,105,109,112,111,114,116,32,123,33,114,125,32,35, + 32,123,33,114,125,70,41,18,114,122,0,0,0,114,10,0, 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, - 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, - 218,11,108,111,97,100,95,109,111,100,117,108,101,114,163,0, - 0,0,218,3,112,111,112,41,4,114,109,0,0,0,114,110, - 0,0,0,114,20,0,0,0,114,108,0,0,0,115,4,0, - 0,0,32,32,32,32,114,5,0,0,0,114,106,0,0,0, - 86,2,0,0,115,50,0,0,0,6,2,10,1,16,1,10, - 1,12,1,2,1,10,1,10,1,14,1,16,2,14,2,12, - 1,16,1,12,2,14,1,12,2,14,4,14,1,2,128,14, - 255,18,1,10,233,4,24,22,128,4,0,115,41,0,0,0, - 135,20,66,3,3,156,65,1,65,43,2,193,29,14,66,3, - 3,193,43,15,65,58,9,193,58,1,66,3,3,194,3,4, - 66,7,11,194,8,3,66,7,11,114,106,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, - 0,0,0,115,22,1,0,0,9,0,124,0,106,0,160,1, - 124,0,106,2,161,1,1,0,110,25,35,0,1,0,1,0, - 1,0,124,0,106,2,116,3,106,4,118,0,114,32,116,3, - 106,4,160,5,124,0,106,2,161,1,125,1,124,1,116,3, - 106,4,124,0,106,2,60,0,130,0,37,0,116,3,106,4, - 160,5,124,0,106,2,161,1,125,1,124,1,116,3,106,4, - 124,0,106,2,60,0,116,6,124,1,100,1,100,0,131,3, - 100,0,117,0,114,71,9,0,124,0,106,0,124,1,95,7, - 110,10,35,0,4,0,116,8,121,138,1,0,1,0,1,0, - 89,0,110,1,37,0,116,6,124,1,100,2,100,0,131,3, - 100,0,117,0,114,109,9,0,124,1,106,9,124,1,95,10, - 116,11,124,1,100,3,131,2,115,98,124,0,106,2,160,12, - 100,4,161,1,100,5,25,0,124,1,95,10,110,10,35,0, - 4,0,116,8,121,137,1,0,1,0,1,0,89,0,110,1, - 37,0,116,6,124,1,100,6,100,0,131,3,100,0,117,0, - 114,134,9,0,124,0,124,1,95,13,124,1,83,0,35,0, - 4,0,116,8,121,136,1,0,1,0,1,0,89,0,124,1, - 83,0,37,0,124,1,83,0,119,0,119,0,119,0,41,7, - 78,114,112,0,0,0,114,158,0,0,0,114,154,0,0,0, - 114,141,0,0,0,114,26,0,0,0,114,113,0,0,0,41, - 14,114,122,0,0,0,114,170,0,0,0,114,20,0,0,0, - 114,18,0,0,0,114,105,0,0,0,114,171,0,0,0,114, - 12,0,0,0,114,112,0,0,0,114,2,0,0,0,114,8, - 0,0,0,114,158,0,0,0,114,10,0,0,0,114,142,0, - 0,0,114,113,0,0,0,114,164,0,0,0,115,2,0,0, - 0,32,32,114,5,0,0,0,218,25,95,108,111,97,100,95, - 98,97,99,107,119,97,114,100,95,99,111,109,112,97,116,105, - 98,108,101,116,2,0,0,115,80,0,0,0,2,3,16,1, - 2,128,6,1,12,1,14,1,12,1,2,1,2,128,14,3, - 12,1,16,1,2,1,10,1,2,128,12,1,4,1,2,128, - 16,1,2,1,8,4,10,1,18,1,4,128,12,1,4,1, - 2,128,16,1,2,1,6,1,4,3,2,128,12,254,2,1, - 4,1,2,128,4,0,2,254,2,251,2,246,115,59,0,0, - 0,129,7,9,0,137,24,33,7,184,4,61,0,189,7,65, - 6,7,193,16,18,65,35,0,193,35,7,65,44,7,193,54, - 3,65,59,0,193,59,7,66,5,7,194,8,1,66,5,7, - 194,9,1,65,44,7,194,10,1,65,6,7,114,172,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,11,0, - 0,0,3,0,0,0,115,248,0,0,0,124,0,106,0,100, - 0,117,1,114,29,116,1,124,0,106,0,100,1,131,2,115, - 29,116,2,124,0,106,0,131,1,155,0,100,2,157,2,125, - 1,116,3,160,4,124,1,116,5,161,2,1,0,116,6,124, - 0,131,1,83,0,116,7,124,0,131,1,125,2,100,3,124, - 0,95,8,9,0,124,2,116,9,106,10,124,0,106,11,60, - 0,9,0,124,0,106,0,100,0,117,0,114,62,124,0,106, - 12,100,0,117,0,114,61,116,13,100,4,124,0,106,11,100, - 5,141,2,130,1,110,6,124,0,106,0,160,14,124,2,161, - 1,1,0,110,22,35,0,1,0,1,0,1,0,9,0,116, - 9,106,10,124,0,106,11,61,0,130,0,35,0,4,0,116, - 15,121,123,1,0,1,0,1,0,89,0,130,0,37,0,37, - 0,116,9,106,10,160,16,124,0,106,11,161,1,125,2,124, - 2,116,9,106,10,124,0,106,11,60,0,116,17,100,6,124, - 0,106,11,124,0,106,0,131,3,1,0,100,7,124,0,95, - 8,124,2,83,0,35,0,100,7,124,0,95,8,119,0,37, - 0,119,0,41,8,78,114,163,0,0,0,114,168,0,0,0, - 84,114,167,0,0,0,114,19,0,0,0,122,18,105,109,112, - 111,114,116,32,123,33,114,125,32,35,32,123,33,114,125,70, - 41,18,114,122,0,0,0,114,10,0,0,0,114,6,0,0, - 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, - 114,172,0,0,0,114,165,0,0,0,90,13,95,105,110,105, - 116,105,97,108,105,122,105,110,103,114,18,0,0,0,114,105, - 0,0,0,114,20,0,0,0,114,129,0,0,0,114,88,0, - 0,0,114,163,0,0,0,114,71,0,0,0,114,171,0,0, - 0,114,84,0,0,0,41,3,114,109,0,0,0,114,108,0, - 0,0,114,110,0,0,0,115,3,0,0,0,32,32,32,114, - 5,0,0,0,218,14,95,108,111,97,100,95,117,110,108,111, - 99,107,101,100,152,2,0,0,115,66,0,0,0,10,2,12, - 2,16,1,12,2,8,1,8,2,6,5,2,1,12,1,2, - 1,10,1,10,1,14,1,2,255,12,4,4,128,6,1,2, - 1,10,1,2,3,2,128,12,254,2,1,2,1,4,128,14, - 5,12,1,16,1,6,2,4,2,2,128,10,254,2,245,115, - 64,0,0,0,165,6,65,53,0,172,24,65,5,0,193,4, - 1,65,53,0,193,5,4,65,26,7,193,10,5,65,16,6, - 193,15,1,65,26,7,193,16,7,65,25,13,193,23,3,65, - 26,7,193,26,22,65,53,0,193,53,5,65,58,7,193,59, - 1,65,25,13,114,173,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,58, - 0,0,0,116,0,124,0,106,1,131,1,53,0,1,0,116, - 2,124,0,131,1,2,0,100,1,4,0,4,0,131,3,1, - 0,83,0,35,0,49,0,115,21,119,4,37,0,1,0,1, - 0,1,0,89,0,1,0,1,0,100,1,83,0,41,2,122, - 191,82,101,116,117,114,110,32,97,32,110,101,119,32,109,111, - 100,117,108,101,32,111,98,106,101,99,116,44,32,108,111,97, - 100,101,100,32,98,121,32,116,104,101,32,115,112,101,99,39, - 115,32,108,111,97,100,101,114,46,10,10,32,32,32,32,84, - 104,101,32,109,111,100,117,108,101,32,105,115,32,110,111,116, - 32,97,100,100,101,100,32,116,111,32,105,116,115,32,112,97, - 114,101,110,116,46,10,10,32,32,32,32,73,102,32,97,32, - 109,111,100,117,108,101,32,105,115,32,97,108,114,101,97,100, - 121,32,105,110,32,115,121,115,46,109,111,100,117,108,101,115, - 44,32,116,104,97,116,32,101,120,105,115,116,105,110,103,32, - 109,111,100,117,108,101,32,103,101,116,115,10,32,32,32,32, - 99,108,111,98,98,101,114,101,100,46,10,10,32,32,32,32, - 78,41,3,114,58,0,0,0,114,20,0,0,0,114,173,0, - 0,0,169,1,114,109,0,0,0,115,1,0,0,0,32,114, - 5,0,0,0,114,107,0,0,0,197,2,0,0,115,10,0, - 0,0,12,9,6,1,14,255,22,128,4,0,115,12,0,0, - 0,133,4,16,3,144,4,20,11,149,3,20,11,114,107,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,0,0,0,0,115,140,0,0,0,101,0,90,1, - 100,0,90,2,100,1,90,3,100,2,90,4,101,5,100,3, - 100,4,132,0,131,1,90,6,101,7,100,20,100,6,100,7, - 132,1,131,1,90,8,101,7,100,21,100,8,100,9,132,1, - 131,1,90,9,101,5,100,10,100,11,132,0,131,1,90,10, - 101,5,100,12,100,13,132,0,131,1,90,11,101,7,101,12, - 100,14,100,15,132,0,131,1,131,1,90,13,101,7,101,12, - 100,16,100,17,132,0,131,1,131,1,90,14,101,7,101,12, - 100,18,100,19,132,0,131,1,131,1,90,15,101,7,101,16, - 131,1,90,17,100,5,83,0,41,22,218,15,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,122,144,77,101,116, - 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, - 114,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,115,46,10,10,32,32,32,32,65,108,108,32,109,101,116, - 104,111,100,115,32,97,114,101,32,101,105,116,104,101,114,32, - 99,108,97,115,115,32,111,114,32,115,116,97,116,105,99,32, - 109,101,116,104,111,100,115,32,116,111,32,97,118,111,105,100, - 32,116,104,101,32,110,101,101,100,32,116,111,10,32,32,32, - 32,105,110,115,116,97,110,116,105,97,116,101,32,116,104,101, - 32,99,108,97,115,115,46,10,10,32,32,32,32,122,8,98, - 117,105,108,116,45,105,110,99,1,0,0,0,0,0,0,0, - 0,0,0,0,5,0,0,0,3,0,0,0,115,34,0,0, - 0,116,0,160,1,100,1,116,2,161,2,1,0,100,2,124, - 0,106,3,155,2,100,3,116,4,106,5,155,0,100,4,157, - 5,83,0,41,6,250,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,81,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,46,109,111,100,117, + 0,114,169,0,0,0,114,172,0,0,0,114,165,0,0,0, + 90,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114, + 18,0,0,0,114,105,0,0,0,114,20,0,0,0,114,129, + 0,0,0,114,88,0,0,0,114,163,0,0,0,114,71,0, + 0,0,114,171,0,0,0,114,84,0,0,0,41,3,114,109, + 0,0,0,114,108,0,0,0,114,110,0,0,0,115,3,0, + 0,0,32,32,32,114,5,0,0,0,218,14,95,108,111,97, + 100,95,117,110,108,111,99,107,101,100,152,2,0,0,115,66, + 0,0,0,10,2,12,2,16,1,12,2,8,1,8,2,6, + 5,2,1,12,1,2,1,10,1,10,1,14,1,2,255,12, + 4,4,128,6,1,2,1,10,1,2,3,2,128,12,254,2, + 1,2,1,4,128,14,5,12,1,16,1,6,2,4,2,2, + 128,10,254,2,245,115,64,0,0,0,165,6,65,53,0,172, + 24,65,5,0,193,4,1,65,53,0,193,5,4,65,26,7, + 193,10,5,65,16,6,193,15,1,65,26,7,193,16,7,65, + 25,13,193,23,3,65,26,7,193,26,22,65,53,0,193,53, + 5,65,58,7,193,59,1,65,25,13,114,173,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 3,0,0,0,115,58,0,0,0,116,0,124,0,106,1,131, + 1,53,0,1,0,116,2,124,0,131,1,2,0,100,1,4, + 0,4,0,131,3,1,0,83,0,35,0,49,0,115,21,119, + 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,100, + 1,83,0,41,2,122,191,82,101,116,117,114,110,32,97,32, + 110,101,119,32,109,111,100,117,108,101,32,111,98,106,101,99, + 116,44,32,108,111,97,100,101,100,32,98,121,32,116,104,101, + 32,115,112,101,99,39,115,32,108,111,97,100,101,114,46,10, + 10,32,32,32,32,84,104,101,32,109,111,100,117,108,101,32, + 105,115,32,110,111,116,32,97,100,100,101,100,32,116,111,32, + 105,116,115,32,112,97,114,101,110,116,46,10,10,32,32,32, + 32,73,102,32,97,32,109,111,100,117,108,101,32,105,115,32, + 97,108,114,101,97,100,121,32,105,110,32,115,121,115,46,109, + 111,100,117,108,101,115,44,32,116,104,97,116,32,101,120,105, + 115,116,105,110,103,32,109,111,100,117,108,101,32,103,101,116, + 115,10,32,32,32,32,99,108,111,98,98,101,114,101,100,46, + 10,10,32,32,32,32,78,41,3,114,58,0,0,0,114,20, + 0,0,0,114,173,0,0,0,169,1,114,109,0,0,0,115, + 1,0,0,0,32,114,5,0,0,0,114,107,0,0,0,197, + 2,0,0,115,10,0,0,0,12,9,6,1,22,255,2,128, + 16,0,115,12,0,0,0,133,4,16,3,144,4,20,11,149, + 3,20,11,114,107,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,0,0,0,0,115,140,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 90,4,101,5,100,3,100,4,132,0,131,1,90,6,101,7, + 100,20,100,6,100,7,132,1,131,1,90,8,101,7,100,21, + 100,8,100,9,132,1,131,1,90,9,101,5,100,10,100,11, + 132,0,131,1,90,10,101,5,100,12,100,13,132,0,131,1, + 90,11,101,7,101,12,100,14,100,15,132,0,131,1,131,1, + 90,13,101,7,101,12,100,16,100,17,132,0,131,1,131,1, + 90,14,101,7,101,12,100,18,100,19,132,0,131,1,131,1, + 90,15,101,7,101,16,131,1,90,17,100,5,83,0,41,22, + 218,15,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,122,144,77,101,116,97,32,112,97,116,104,32,105,109,112, + 111,114,116,32,102,111,114,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,65, + 108,108,32,109,101,116,104,111,100,115,32,97,114,101,32,101, + 105,116,104,101,114,32,99,108,97,115,115,32,111,114,32,115, + 116,97,116,105,99,32,109,101,116,104,111,100,115,32,116,111, + 32,97,118,111,105,100,32,116,104,101,32,110,101,101,100,32, + 116,111,10,32,32,32,32,105,110,115,116,97,110,116,105,97, + 116,101,32,116,104,101,32,99,108,97,115,115,46,10,10,32, + 32,32,32,122,8,98,117,105,108,116,45,105,110,99,1,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, + 0,0,115,34,0,0,0,116,0,160,1,100,1,116,2,161, + 2,1,0,100,2,124,0,106,3,155,2,100,3,116,4,106, + 5,155,0,100,4,157,5,83,0,41,6,250,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,81,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,46,109,111,100,117,108,101,95,114,101,112,114,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,122,8,60,109,111,100,117,108,101,32,122,2,32, + 40,122,2,41,62,78,41,6,114,101,0,0,0,114,102,0, + 0,0,114,103,0,0,0,114,8,0,0,0,114,175,0,0, + 0,114,151,0,0,0,169,1,114,110,0,0,0,115,1,0, + 0,0,32,114,5,0,0,0,114,114,0,0,0,223,2,0, + 0,115,8,0,0,0,6,7,2,1,4,255,22,2,114,17, + 0,0,0,122,27,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, + 78,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,3,0,0,0,115,42,0,0,0,124,2,100,0,117, + 1,114,6,100,0,83,0,116,0,160,1,124,1,161,1,114, + 19,116,2,124,1,124,0,124,0,106,3,100,1,141,3,83, + 0,100,0,83,0,169,2,78,114,150,0,0,0,41,4,114, + 65,0,0,0,90,10,105,115,95,98,117,105,108,116,105,110, + 114,104,0,0,0,114,151,0,0,0,169,4,218,3,99,108, + 115,114,90,0,0,0,218,4,112,97,116,104,218,6,116,97, + 114,103,101,116,115,4,0,0,0,32,32,32,32,114,5,0, + 0,0,218,9,102,105,110,100,95,115,112,101,99,234,2,0, + 0,115,10,0,0,0,8,2,4,1,10,1,16,1,4,2, + 114,17,0,0,0,122,25,66,117,105,108,116,105,110,73,109, + 112,111,114,116,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,3,0,0,0,115,42,0,0,0,116,0,160,1,100,1, + 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, + 125,3,124,3,100,2,117,1,114,19,124,3,106,4,83,0, + 100,2,83,0,41,3,122,175,70,105,110,100,32,116,104,101, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 46,10,10,32,32,32,32,32,32,32,32,73,102,32,39,112, + 97,116,104,39,32,105,115,32,101,118,101,114,32,115,112,101, + 99,105,102,105,101,100,32,116,104,101,110,32,116,104,101,32, + 115,101,97,114,99,104,32,105,115,32,99,111,110,115,105,100, + 101,114,101,100,32,97,32,102,97,105,108,117,114,101,46,10, + 10,32,32,32,32,32,32,32,32,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,122,106,66,117,105,108,116,105,110, + 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, + 100,117,108,101,40,41,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, + 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, + 121,116,104,111,110,32,51,46,49,50,59,32,117,115,101,32, + 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, + 101,97,100,78,41,5,114,101,0,0,0,114,102,0,0,0, + 114,103,0,0,0,114,183,0,0,0,114,122,0,0,0,41, + 4,114,180,0,0,0,114,90,0,0,0,114,181,0,0,0, + 114,109,0,0,0,115,4,0,0,0,32,32,32,32,114,5, + 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, + 243,2,0,0,115,10,0,0,0,6,9,2,2,4,254,12, + 3,18,1,114,17,0,0,0,122,27,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,109, + 111,100,117,108,101,99,1,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,115,46,0,0,0,124, + 0,106,0,116,1,106,2,118,1,114,17,116,3,100,1,160, + 4,124,0,106,0,161,1,124,0,106,0,100,2,141,2,130, + 1,116,5,116,6,106,7,124,0,131,2,83,0,41,4,122, + 24,67,114,101,97,116,101,32,97,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,114,86,0,0,0,114,19, + 0,0,0,78,41,8,114,20,0,0,0,114,18,0,0,0, + 114,87,0,0,0,114,88,0,0,0,114,51,0,0,0,114, + 75,0,0,0,114,65,0,0,0,90,14,99,114,101,97,116, + 101,95,98,117,105,108,116,105,110,114,174,0,0,0,115,1, + 0,0,0,32,114,5,0,0,0,114,162,0,0,0,2,3, + 0,0,115,10,0,0,0,12,3,12,1,4,1,6,255,12, + 2,114,17,0,0,0,122,29,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,46,99,114,101,97,116,101,95,109, + 111,100,117,108,101,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,115,16,0,0,0,116, + 0,116,1,106,2,124,0,131,2,1,0,100,1,83,0,41, + 2,122,22,69,120,101,99,32,97,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,78,41,3,114,75,0,0, + 0,114,65,0,0,0,90,12,101,120,101,99,95,98,117,105, + 108,116,105,110,114,177,0,0,0,115,1,0,0,0,32,114, + 5,0,0,0,114,163,0,0,0,10,3,0,0,115,2,0, + 0,0,16,3,114,17,0,0,0,122,27,66,117,105,108,116, + 105,110,73,109,112,111,114,116,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,1,0,0,0,3,0,0,0,243,4,0,0,0, + 100,1,83,0,41,2,122,57,82,101,116,117,114,110,32,78, + 111,110,101,32,97,115,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,115,32,100,111,32,110,111,116,32,104, + 97,118,101,32,99,111,100,101,32,111,98,106,101,99,116,115, + 46,78,114,23,0,0,0,169,2,114,180,0,0,0,114,90, + 0,0,0,115,2,0,0,0,32,32,114,5,0,0,0,218, + 8,103,101,116,95,99,111,100,101,15,3,0,0,243,2,0, + 0,0,4,4,114,17,0,0,0,122,24,66,117,105,108,116, + 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,99, + 111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,114,185,0,0,0,41,2,122, + 56,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,117, + 114,99,101,32,99,111,100,101,46,78,114,23,0,0,0,114, + 186,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, + 218,10,103,101,116,95,115,111,117,114,99,101,21,3,0,0, + 114,188,0,0,0,114,17,0,0,0,122,26,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,46,103,101,116,95, + 115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,114,185,0,0,0, + 41,3,122,52,82,101,116,117,114,110,32,70,97,108,115,101, + 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,115,32,97,114,101,32,110,101,118,101,114,32,112, + 97,99,107,97,103,101,115,46,70,78,114,23,0,0,0,114, + 186,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, + 114,128,0,0,0,27,3,0,0,114,188,0,0,0,114,17, + 0,0,0,122,26,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,169, + 2,78,78,114,0,0,0,0,41,18,114,8,0,0,0,114, + 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,151, + 0,0,0,218,12,115,116,97,116,105,99,109,101,116,104,111, + 100,114,114,0,0,0,218,11,99,108,97,115,115,109,101,116, + 104,111,100,114,183,0,0,0,114,184,0,0,0,114,162,0, + 0,0,114,163,0,0,0,114,95,0,0,0,114,187,0,0, + 0,114,189,0,0,0,114,128,0,0,0,114,111,0,0,0, + 114,170,0,0,0,114,23,0,0,0,114,17,0,0,0,114, + 5,0,0,0,114,175,0,0,0,212,2,0,0,115,46,0, + 0,0,8,0,4,2,4,7,2,2,10,1,2,10,12,1, + 2,8,12,1,2,14,10,1,2,7,10,1,2,4,2,1, + 12,1,2,4,2,1,12,1,2,4,2,1,12,1,12,4, + 114,17,0,0,0,114,175,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,115, + 144,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, + 101,7,100,22,100,6,100,7,132,1,131,1,90,8,101,7, + 100,23,100,8,100,9,132,1,131,1,90,9,101,5,100,10, + 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, + 131,1,90,11,101,7,100,14,100,15,132,0,131,1,90,12, + 101,7,101,13,100,16,100,17,132,0,131,1,131,1,90,14, + 101,7,101,13,100,18,100,19,132,0,131,1,131,1,90,15, + 101,7,101,13,100,20,100,21,132,0,131,1,131,1,90,16, + 100,5,83,0,41,24,218,14,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,122,142,77,101,116,97,32,112,97,116, + 104,32,105,109,112,111,114,116,32,102,111,114,32,102,114,111, + 122,101,110,32,109,111,100,117,108,101,115,46,10,10,32,32, + 32,32,65,108,108,32,109,101,116,104,111,100,115,32,97,114, + 101,32,101,105,116,104,101,114,32,99,108,97,115,115,32,111, + 114,32,115,116,97,116,105,99,32,109,101,116,104,111,100,115, + 32,116,111,32,97,118,111,105,100,32,116,104,101,32,110,101, + 101,100,32,116,111,10,32,32,32,32,105,110,115,116,97,110, + 116,105,97,116,101,32,116,104,101,32,99,108,97,115,115,46, + 10,10,32,32,32,32,90,6,102,114,111,122,101,110,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, + 0,0,0,115,28,0,0,0,116,0,160,1,100,1,116,2, + 161,2,1,0,100,2,160,3,124,0,106,4,116,5,106,6, + 161,2,83,0,41,4,114,176,0,0,0,122,80,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,109,111,100,117, 108,101,95,114,101,112,114,40,41,32,105,115,32,100,101,112, 114,101,99,97,116,101,100,32,97,110,100,32,115,108,97,116, 101,100,32,102,111,114,32,114,101,109,111,118,97,108,32,105, - 110,32,80,121,116,104,111,110,32,51,46,49,50,122,8,60, - 109,111,100,117,108,101,32,122,2,32,40,122,2,41,62,78, - 41,6,114,101,0,0,0,114,102,0,0,0,114,103,0,0, - 0,114,8,0,0,0,114,175,0,0,0,114,151,0,0,0, - 169,1,114,110,0,0,0,115,1,0,0,0,32,114,5,0, - 0,0,114,114,0,0,0,223,2,0,0,115,8,0,0,0, - 6,7,2,1,4,255,22,2,114,17,0,0,0,122,27,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,109, - 111,100,117,108,101,95,114,101,112,114,78,99,4,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, - 115,42,0,0,0,124,2,100,0,117,1,114,6,100,0,83, - 0,116,0,160,1,124,1,161,1,114,19,116,2,124,1,124, - 0,124,0,106,3,100,1,141,3,83,0,100,0,83,0,169, - 2,78,114,150,0,0,0,41,4,114,65,0,0,0,90,10, - 105,115,95,98,117,105,108,116,105,110,114,104,0,0,0,114, - 151,0,0,0,169,4,218,3,99,108,115,114,90,0,0,0, - 218,4,112,97,116,104,218,6,116,97,114,103,101,116,115,4, - 0,0,0,32,32,32,32,114,5,0,0,0,218,9,102,105, - 110,100,95,115,112,101,99,234,2,0,0,115,10,0,0,0, - 8,2,4,1,10,1,16,1,4,2,114,17,0,0,0,122, - 25,66,117,105,108,116,105,110,73,109,112,111,114,116,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,3,0,0,0,115, - 42,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, - 124,0,160,3,124,1,124,2,161,2,125,3,124,3,100,2, - 117,1,114,19,124,3,106,4,83,0,100,2,83,0,41,3, - 122,175,70,105,110,100,32,116,104,101,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,46,10,10,32,32,32, - 32,32,32,32,32,73,102,32,39,112,97,116,104,39,32,105, - 115,32,101,118,101,114,32,115,112,101,99,105,102,105,101,100, - 32,116,104,101,110,32,116,104,101,32,115,101,97,114,99,104, - 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, - 32,102,97,105,108,117,114,101,46,10,10,32,32,32,32,32, - 32,32,32,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,122,106,66,117,105,108,116,105,110,73,109,112,111,114,116, + 110,32,80,121,116,104,111,110,32,51,46,49,50,114,166,0, + 0,0,78,41,7,114,101,0,0,0,114,102,0,0,0,114, + 103,0,0,0,114,51,0,0,0,114,8,0,0,0,114,193, + 0,0,0,114,151,0,0,0,41,1,218,1,109,115,1,0, + 0,0,32,114,5,0,0,0,114,114,0,0,0,47,3,0, + 0,115,8,0,0,0,6,7,2,1,4,255,16,2,114,17, + 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,78, + 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,3,0,0,0,115,30,0,0,0,116,0,160,1,124,1, + 161,1,114,13,116,2,124,1,124,0,124,0,106,3,100,1, + 141,3,83,0,100,0,83,0,114,178,0,0,0,41,4,114, + 65,0,0,0,114,98,0,0,0,114,104,0,0,0,114,151, + 0,0,0,114,179,0,0,0,115,4,0,0,0,32,32,32, + 32,114,5,0,0,0,114,183,0,0,0,58,3,0,0,115, + 6,0,0,0,10,2,16,1,4,2,114,17,0,0,0,122, + 24,70,114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,115,30, + 0,0,0,116,0,160,1,100,1,116,2,161,2,1,0,116, + 3,160,4,124,1,161,1,114,13,124,0,83,0,100,2,83, + 0,41,3,122,93,70,105,110,100,32,97,32,102,114,111,122, + 101,110,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,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,122,105,70,114,111,122,101,110,73,109,112,111,114,116, 101,114,46,102,105,110,100,95,109,111,100,117,108,101,40,41, 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, @@ -1190,746 +1330,606 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 51,46,49,50,59,32,117,115,101,32,102,105,110,100,95,115, 112,101,99,40,41,32,105,110,115,116,101,97,100,78,41,5, 114,101,0,0,0,114,102,0,0,0,114,103,0,0,0,114, - 183,0,0,0,114,122,0,0,0,41,4,114,180,0,0,0, - 114,90,0,0,0,114,181,0,0,0,114,109,0,0,0,115, - 4,0,0,0,32,32,32,32,114,5,0,0,0,218,11,102, - 105,110,100,95,109,111,100,117,108,101,243,2,0,0,115,10, - 0,0,0,6,9,2,2,4,254,12,3,18,1,114,17,0, - 0,0,122,27,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,46,0,0,0,124,0,106,0,116,1,106, - 2,118,1,114,17,116,3,100,1,160,4,124,0,106,0,161, - 1,124,0,106,0,100,2,141,2,130,1,116,5,116,6,106, - 7,124,0,131,2,83,0,41,4,122,24,67,114,101,97,116, - 101,32,97,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,114,86,0,0,0,114,19,0,0,0,78,41,8, - 114,20,0,0,0,114,18,0,0,0,114,87,0,0,0,114, - 88,0,0,0,114,51,0,0,0,114,75,0,0,0,114,65, - 0,0,0,90,14,99,114,101,97,116,101,95,98,117,105,108, - 116,105,110,114,174,0,0,0,115,1,0,0,0,32,114,5, - 0,0,0,114,162,0,0,0,2,3,0,0,115,10,0,0, - 0,12,3,12,1,4,1,6,255,12,2,114,17,0,0,0, - 122,29,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 65,0,0,0,114,98,0,0,0,41,3,114,180,0,0,0, + 114,90,0,0,0,114,181,0,0,0,115,3,0,0,0,32, + 32,32,114,5,0,0,0,114,184,0,0,0,65,3,0,0, + 115,8,0,0,0,6,7,2,2,4,254,18,3,114,17,0, + 0,0,122,26,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, + 0,0,0,114,185,0,0,0,41,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,23,0,0,0,114,174,0,0, + 0,115,1,0,0,0,32,114,5,0,0,0,114,162,0,0, + 0,77,3,0,0,115,2,0,0,0,4,0,114,17,0,0, + 0,122,28,70,114,111,122,101,110,73,109,112,111,114,116,101, 114,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,115,16,0,0,0,116,0,116,1,106,2,124, - 0,131,2,1,0,100,1,83,0,41,2,122,22,69,120,101, - 99,32,97,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,78,41,3,114,75,0,0,0,114,65,0,0,0, - 90,12,101,120,101,99,95,98,117,105,108,116,105,110,114,177, - 0,0,0,115,1,0,0,0,32,114,5,0,0,0,114,163, - 0,0,0,10,3,0,0,115,2,0,0,0,16,3,114,17, - 0,0,0,122,27,66,117,105,108,116,105,110,73,109,112,111, - 114,116,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,1,0,0, - 0,3,0,0,0,243,4,0,0,0,100,1,83,0,41,2, - 122,57,82,101,116,117,114,110,32,78,111,110,101,32,97,115, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 115,32,100,111,32,110,111,116,32,104,97,118,101,32,99,111, - 100,101,32,111,98,106,101,99,116,115,46,78,114,23,0,0, - 0,169,2,114,180,0,0,0,114,90,0,0,0,115,2,0, - 0,0,32,32,114,5,0,0,0,218,8,103,101,116,95,99, - 111,100,101,15,3,0,0,243,2,0,0,0,4,4,114,17, - 0,0,0,122,24,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,103,101,116,95,99,111,100,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,114,185,0,0,0,41,2,122,56,82,101,116,117,114, - 110,32,78,111,110,101,32,97,115,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,32,100,111,32,110,111, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 3,0,0,0,115,64,0,0,0,124,0,106,0,106,1,125, + 1,116,2,160,3,124,1,161,1,115,18,116,4,100,1,160, + 5,124,1,161,1,124,1,100,2,141,2,130,1,116,6,116, + 2,106,7,124,1,131,2,125,2,116,8,124,2,124,0,106, + 9,131,2,1,0,100,0,83,0,114,97,0,0,0,41,10, + 114,113,0,0,0,114,20,0,0,0,114,65,0,0,0,114, + 98,0,0,0,114,88,0,0,0,114,51,0,0,0,114,75, + 0,0,0,218,17,103,101,116,95,102,114,111,122,101,110,95, + 111,98,106,101,99,116,218,4,101,120,101,99,114,13,0,0, + 0,41,3,114,110,0,0,0,114,20,0,0,0,218,4,99, + 111,100,101,115,3,0,0,0,32,32,32,114,5,0,0,0, + 114,163,0,0,0,81,3,0,0,115,14,0,0,0,8,2, + 10,1,10,1,2,1,6,255,12,2,16,1,114,17,0,0, + 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,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,3,0,0,0,3,0, + 0,0,115,10,0,0,0,116,0,124,0,124,1,131,2,83, + 0,41,2,122,95,76,111,97,100,32,97,32,102,114,111,122, + 101,110,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,78,41,1,114,111,0,0,0,114,186,0,0, + 0,115,2,0,0,0,32,32,114,5,0,0,0,114,170,0, + 0,0,90,3,0,0,115,2,0,0,0,10,8,114,17,0, + 0,0,122,26,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,108,111,97,100,95,109,111,100,117,108,101,99,2, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, + 0,0,0,243,10,0,0,0,116,0,160,1,124,1,161,1, + 83,0,41,2,122,45,82,101,116,117,114,110,32,116,104,101, + 32,99,111,100,101,32,111,98,106,101,99,116,32,102,111,114, + 32,116,104,101,32,102,114,111,122,101,110,32,109,111,100,117, + 108,101,46,78,41,2,114,65,0,0,0,114,195,0,0,0, + 114,186,0,0,0,115,2,0,0,0,32,32,114,5,0,0, + 0,114,187,0,0,0,100,3,0,0,243,2,0,0,0,10, + 4,114,17,0,0,0,122,23,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,114,185,0,0,0,41,2,122,54,82,101,116, + 117,114,110,32,78,111,110,101,32,97,115,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,115,32,100,111,32,110,111, 116,32,104,97,118,101,32,115,111,117,114,99,101,32,99,111, 100,101,46,78,114,23,0,0,0,114,186,0,0,0,115,2, - 0,0,0,32,32,114,5,0,0,0,218,10,103,101,116,95, - 115,111,117,114,99,101,21,3,0,0,114,188,0,0,0,114, - 17,0,0,0,122,26,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,103,101,116,95,115,111,117,114,99,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,114,185,0,0,0,41,3,122,52,82,101, - 116,117,114,110,32,70,97,108,115,101,32,97,115,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97, - 114,101,32,110,101,118,101,114,32,112,97,99,107,97,103,101, - 115,46,70,78,114,23,0,0,0,114,186,0,0,0,115,2, - 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,27, - 3,0,0,114,188,0,0,0,114,17,0,0,0,122,26,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, - 115,95,112,97,99,107,97,103,101,169,2,78,78,114,0,0, - 0,0,41,18,114,8,0,0,0,114,7,0,0,0,114,1, - 0,0,0,114,9,0,0,0,114,151,0,0,0,218,12,115, - 116,97,116,105,99,109,101,116,104,111,100,114,114,0,0,0, - 218,11,99,108,97,115,115,109,101,116,104,111,100,114,183,0, - 0,0,114,184,0,0,0,114,162,0,0,0,114,163,0,0, - 0,114,95,0,0,0,114,187,0,0,0,114,189,0,0,0, - 114,128,0,0,0,114,111,0,0,0,114,170,0,0,0,114, - 23,0,0,0,114,17,0,0,0,114,5,0,0,0,114,175, - 0,0,0,212,2,0,0,115,46,0,0,0,8,0,4,2, - 4,7,2,2,10,1,2,10,12,1,2,8,12,1,2,14, - 10,1,2,7,10,1,2,4,2,1,12,1,2,4,2,1, - 12,1,2,4,2,1,12,1,12,4,114,17,0,0,0,114, - 175,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,0,0,0,0,115,144,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,90,4,101,5, - 100,3,100,4,132,0,131,1,90,6,101,7,100,22,100,6, - 100,7,132,1,131,1,90,8,101,7,100,23,100,8,100,9, - 132,1,131,1,90,9,101,5,100,10,100,11,132,0,131,1, - 90,10,101,5,100,12,100,13,132,0,131,1,90,11,101,7, - 100,14,100,15,132,0,131,1,90,12,101,7,101,13,100,16, - 100,17,132,0,131,1,131,1,90,14,101,7,101,13,100,18, - 100,19,132,0,131,1,131,1,90,15,101,7,101,13,100,20, - 100,21,132,0,131,1,131,1,90,16,100,5,83,0,41,24, - 218,14,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 122,142,77,101,116,97,32,112,97,116,104,32,105,109,112,111, - 114,116,32,102,111,114,32,102,114,111,122,101,110,32,109,111, - 100,117,108,101,115,46,10,10,32,32,32,32,65,108,108,32, - 109,101,116,104,111,100,115,32,97,114,101,32,101,105,116,104, - 101,114,32,99,108,97,115,115,32,111,114,32,115,116,97,116, - 105,99,32,109,101,116,104,111,100,115,32,116,111,32,97,118, - 111,105,100,32,116,104,101,32,110,101,101,100,32,116,111,10, - 32,32,32,32,105,110,115,116,97,110,116,105,97,116,101,32, - 116,104,101,32,99,108,97,115,115,46,10,10,32,32,32,32, - 90,6,102,114,111,122,101,110,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,3,0,0,0,115,28,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,100,2, - 160,3,124,0,106,4,116,5,106,6,161,2,83,0,41,4, - 114,176,0,0,0,122,80,70,114,111,122,101,110,73,109,112, - 111,114,116,101,114,46,109,111,100,117,108,101,95,114,101,112, - 114,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, - 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, - 111,110,32,51,46,49,50,114,166,0,0,0,78,41,7,114, - 101,0,0,0,114,102,0,0,0,114,103,0,0,0,114,51, - 0,0,0,114,8,0,0,0,114,193,0,0,0,114,151,0, - 0,0,41,1,218,1,109,115,1,0,0,0,32,114,5,0, - 0,0,114,114,0,0,0,47,3,0,0,115,8,0,0,0, - 6,7,2,1,4,255,16,2,114,17,0,0,0,122,26,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,46,109,111, - 100,117,108,101,95,114,101,112,114,78,99,4,0,0,0,0, + 0,0,0,32,32,114,5,0,0,0,114,189,0,0,0,106, + 3,0,0,114,188,0,0,0,114,17,0,0,0,122,25,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,103,101, + 116,95,115,111,117,114,99,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,3,0,0,0,114,198,0, + 0,0,41,2,122,46,82,101,116,117,114,110,32,84,114,117, + 101,32,105,102,32,116,104,101,32,102,114,111,122,101,110,32, + 109,111,100,117,108,101,32,105,115,32,97,32,112,97,99,107, + 97,103,101,46,78,41,2,114,65,0,0,0,90,17,105,115, + 95,102,114,111,122,101,110,95,112,97,99,107,97,103,101,114, + 186,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, + 114,128,0,0,0,112,3,0,0,114,199,0,0,0,114,17, + 0,0,0,122,25,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,105,115,95,112,97,99,107,97,103,101,114,190, + 0,0,0,114,0,0,0,0,41,17,114,8,0,0,0,114, + 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,151, + 0,0,0,114,191,0,0,0,114,114,0,0,0,114,192,0, + 0,0,114,183,0,0,0,114,184,0,0,0,114,162,0,0, + 0,114,163,0,0,0,114,170,0,0,0,114,100,0,0,0, + 114,187,0,0,0,114,189,0,0,0,114,128,0,0,0,114, + 23,0,0,0,114,17,0,0,0,114,5,0,0,0,114,193, + 0,0,0,36,3,0,0,115,48,0,0,0,8,0,4,2, + 4,7,2,2,10,1,2,10,12,1,2,6,12,1,2,11, + 10,1,2,3,10,1,2,8,10,1,2,9,2,1,12,1, + 2,4,2,1,12,1,2,4,2,1,16,1,114,17,0,0, + 0,114,193,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,0,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,83,0, + 41,7,218,18,95,73,109,112,111,114,116,76,111,99,107,67, + 111,110,116,101,120,116,122,36,67,111,110,116,101,120,116,32, + 109,97,110,97,103,101,114,32,102,111,114,32,116,104,101,32, + 105,109,112,111,114,116,32,108,111,99,107,46,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0, + 0,243,12,0,0,0,116,0,160,1,161,0,1,0,100,1, + 83,0,41,2,122,24,65,99,113,117,105,114,101,32,116,104, + 101,32,105,109,112,111,114,116,32,108,111,99,107,46,78,41, + 2,114,65,0,0,0,114,66,0,0,0,114,53,0,0,0, + 115,1,0,0,0,32,114,5,0,0,0,114,62,0,0,0, + 125,3,0,0,243,2,0,0,0,12,2,114,17,0,0,0, + 122,28,95,73,109,112,111,114,116,76,111,99,107,67,111,110, + 116,101,120,116,46,95,95,101,110,116,101,114,95,95,99,4, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, + 0,0,0,114,201,0,0,0,41,2,122,60,82,101,108,101, + 97,115,101,32,116,104,101,32,105,109,112,111,114,116,32,108, + 111,99,107,32,114,101,103,97,114,100,108,101,115,115,32,111, + 102,32,97,110,121,32,114,97,105,115,101,100,32,101,120,99, + 101,112,116,105,111,110,115,46,78,41,2,114,65,0,0,0, + 114,68,0,0,0,41,4,114,34,0,0,0,218,8,101,120, + 99,95,116,121,112,101,218,9,101,120,99,95,118,97,108,117, + 101,218,13,101,120,99,95,116,114,97,99,101,98,97,99,107, + 115,4,0,0,0,32,32,32,32,114,5,0,0,0,114,64, + 0,0,0,129,3,0,0,114,202,0,0,0,114,17,0,0, + 0,122,27,95,73,109,112,111,114,116,76,111,99,107,67,111, + 110,116,101,120,116,46,95,95,101,120,105,116,95,95,78,41, + 6,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, + 114,9,0,0,0,114,62,0,0,0,114,64,0,0,0,114, + 23,0,0,0,114,17,0,0,0,114,5,0,0,0,114,200, + 0,0,0,121,3,0,0,115,8,0,0,0,8,0,4,2, + 8,2,12,4,114,17,0,0,0,114,200,0,0,0,99,3, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3, + 0,0,0,115,64,0,0,0,124,1,160,0,100,1,124,2, + 100,2,24,0,161,2,125,3,116,1,124,3,131,1,124,2, + 107,0,114,18,116,2,100,3,131,1,130,1,124,3,100,4, + 25,0,125,4,124,0,114,30,100,5,160,3,124,4,124,0, + 161,2,83,0,124,4,83,0,41,7,122,50,82,101,115,111, + 108,118,101,32,97,32,114,101,108,97,116,105,118,101,32,109, + 111,100,117,108,101,32,110,97,109,101,32,116,111,32,97,110, + 32,97,98,115,111,108,117,116,101,32,111,110,101,46,114,141, + 0,0,0,114,43,0,0,0,122,50,97,116,116,101,109,112, + 116,101,100,32,114,101,108,97,116,105,118,101,32,105,109,112, + 111,114,116,32,98,101,121,111,110,100,32,116,111,112,45,108, + 101,118,101,108,32,112,97,99,107,97,103,101,114,26,0,0, + 0,250,5,123,125,46,123,125,78,41,4,218,6,114,115,112, + 108,105,116,218,3,108,101,110,114,88,0,0,0,114,51,0, + 0,0,41,5,114,20,0,0,0,218,7,112,97,99,107,97, + 103,101,218,5,108,101,118,101,108,90,4,98,105,116,115,90, + 4,98,97,115,101,115,5,0,0,0,32,32,32,32,32,114, + 5,0,0,0,218,13,95,114,101,115,111,108,118,101,95,110, + 97,109,101,134,3,0,0,115,10,0,0,0,16,2,12,1, + 8,1,8,1,20,1,114,17,0,0,0,114,211,0,0,0, + 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,3,0,0,0,115,60,0,0,0,116,0,124,0,131,1, + 155,0,100,1,157,2,125,3,116,1,160,2,124,3,116,3, + 161,2,1,0,124,0,160,4,124,1,124,2,161,2,125,4, + 124,4,100,0,117,0,114,25,100,0,83,0,116,5,124,1, + 124,4,131,2,83,0,41,2,78,122,53,46,102,105,110,100, + 95,115,112,101,99,40,41,32,110,111,116,32,102,111,117,110, + 100,59,32,102,97,108,108,105,110,103,32,98,97,99,107,32, + 116,111,32,102,105,110,100,95,109,111,100,117,108,101,40,41, + 41,6,114,6,0,0,0,114,101,0,0,0,114,102,0,0, + 0,114,169,0,0,0,114,184,0,0,0,114,104,0,0,0, + 41,5,218,6,102,105,110,100,101,114,114,20,0,0,0,114, + 181,0,0,0,114,108,0,0,0,114,122,0,0,0,115,5, + 0,0,0,32,32,32,32,32,114,5,0,0,0,218,17,95, + 102,105,110,100,95,115,112,101,99,95,108,101,103,97,99,121, + 143,3,0,0,115,12,0,0,0,14,1,12,2,12,1,8, + 1,4,1,10,1,114,17,0,0,0,114,213,0,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, + 3,0,0,0,115,30,1,0,0,116,0,106,1,125,3,124, + 3,100,1,117,0,114,11,116,2,100,2,131,1,130,1,124, + 3,115,19,116,3,160,4,100,3,116,5,161,2,1,0,124, + 0,116,0,106,6,118,0,125,4,124,3,68,0,93,112,125, + 5,116,7,131,0,53,0,1,0,9,0,124,5,106,8,125, + 6,110,27,35,0,4,0,116,9,121,142,1,0,1,0,1, + 0,116,10,124,5,124,0,124,1,131,3,125,7,124,7,100, + 1,117,0,114,61,89,0,100,1,4,0,4,0,131,3,1, + 0,113,26,89,0,110,7,37,0,124,6,124,0,124,1,124, + 2,131,3,125,7,100,1,4,0,4,0,131,3,1,0,110, + 11,35,0,49,0,115,81,119,4,37,0,1,0,1,0,1, + 0,89,0,1,0,1,0,124,7,100,1,117,1,114,138,124, + 4,115,134,124,0,116,0,106,6,118,0,114,134,116,0,106, + 6,124,0,25,0,125,8,9,0,124,8,106,11,125,9,110, + 14,35,0,4,0,116,9,121,141,1,0,1,0,1,0,124, + 7,6,0,89,0,2,0,1,0,83,0,37,0,124,9,100, + 1,117,0,114,130,124,7,2,0,1,0,83,0,124,9,2, + 0,1,0,83,0,124,7,2,0,1,0,83,0,113,26,100, + 1,83,0,119,0,119,0,41,4,122,21,70,105,110,100,32, + 97,32,109,111,100,117,108,101,39,115,32,115,112,101,99,46, + 78,122,53,115,121,115,46,109,101,116,97,95,112,97,116,104, + 32,105,115,32,78,111,110,101,44,32,80,121,116,104,111,110, + 32,105,115,32,108,105,107,101,108,121,32,115,104,117,116,116, + 105,110,103,32,100,111,119,110,122,22,115,121,115,46,109,101, + 116,97,95,112,97,116,104,32,105,115,32,101,109,112,116,121, + 41,12,114,18,0,0,0,218,9,109,101,116,97,95,112,97, + 116,104,114,88,0,0,0,114,101,0,0,0,114,102,0,0, + 0,114,169,0,0,0,114,105,0,0,0,114,200,0,0,0, + 114,183,0,0,0,114,2,0,0,0,114,213,0,0,0,114, + 113,0,0,0,41,10,114,20,0,0,0,114,181,0,0,0, + 114,182,0,0,0,114,214,0,0,0,90,9,105,115,95,114, + 101,108,111,97,100,114,212,0,0,0,114,183,0,0,0,114, + 109,0,0,0,114,110,0,0,0,114,113,0,0,0,115,10, + 0,0,0,32,32,32,32,32,32,32,32,32,32,114,5,0, + 0,0,218,10,95,102,105,110,100,95,115,112,101,99,153,3, + 0,0,115,78,0,0,0,6,2,8,1,8,2,4,3,12, + 1,10,5,8,1,8,1,2,1,8,1,2,128,12,1,12, + 1,8,1,2,1,12,250,4,5,2,128,12,3,20,248,2, + 128,12,0,8,9,14,2,10,1,2,1,8,1,2,128,12, + 1,12,4,2,128,8,2,8,1,8,2,8,2,2,239,4, + 19,2,243,2,244,115,63,0,0,0,159,1,65,12,5,161, + 3,37,4,164,1,65,12,5,165,17,63,11,182,1,65,12, + 5,189,9,65,12,5,193,12,4,65,16,13,193,17,3,65, + 16,13,193,40,3,65,44,2,193,44,9,65,57,9,194,13, + 1,65,57,9,194,14,1,63,11,114,215,0,0,0,99,3, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3, + 0,0,0,115,110,0,0,0,116,0,124,0,116,1,131,2, + 115,14,116,2,100,1,160,3,116,4,124,0,131,1,161,1, + 131,1,130,1,124,2,100,2,107,0,114,22,116,5,100,3, + 131,1,130,1,124,2,100,2,107,4,114,41,116,0,124,1, + 116,1,131,2,115,35,116,2,100,4,131,1,130,1,124,1, + 115,41,116,6,100,5,131,1,130,1,124,0,115,53,124,2, + 100,2,107,2,114,51,116,5,100,6,131,1,130,1,100,7, + 83,0,100,7,83,0,41,8,122,28,86,101,114,105,102,121, + 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34, + 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110, + 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, + 32,110,111,116,32,123,125,114,26,0,0,0,122,18,108,101, + 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, + 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111, + 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110, + 103,122,54,97,116,116,101,109,112,116,101,100,32,114,101,108, + 97,116,105,118,101,32,105,109,112,111,114,116,32,119,105,116, + 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110, + 116,32,112,97,99,107,97,103,101,122,17,69,109,112,116,121, + 32,109,111,100,117,108,101,32,110,97,109,101,78,41,7,218, + 10,105,115,105,110,115,116,97,110,99,101,218,3,115,116,114, + 218,9,84,121,112,101,69,114,114,111,114,114,51,0,0,0, + 114,3,0,0,0,218,10,86,97,108,117,101,69,114,114,111, + 114,114,88,0,0,0,169,3,114,20,0,0,0,114,209,0, + 0,0,114,210,0,0,0,115,3,0,0,0,32,32,32,114, + 5,0,0,0,218,13,95,115,97,110,105,116,121,95,99,104, + 101,99,107,200,3,0,0,115,24,0,0,0,10,2,18,1, + 8,1,8,1,8,1,10,1,8,1,4,1,8,1,12,2, + 8,1,8,255,114,17,0,0,0,114,221,0,0,0,122,16, + 78,111,32,109,111,100,117,108,101,32,110,97,109,101,100,32, + 122,4,123,33,114,125,99,2,0,0,0,0,0,0,0,0, + 0,0,0,8,0,0,0,3,0,0,0,115,20,1,0,0, + 100,0,125,2,124,0,160,0,100,1,161,1,100,2,25,0, + 125,3,124,3,114,64,124,3,116,1,106,2,118,1,114,21, + 116,3,124,1,124,3,131,2,1,0,124,0,116,1,106,2, + 118,0,114,31,116,1,106,2,124,0,25,0,83,0,116,1, + 106,2,124,3,25,0,125,4,9,0,124,4,106,4,125,2, + 110,23,35,0,4,0,116,5,121,137,1,0,1,0,1,0, + 116,6,100,3,23,0,160,7,124,0,124,3,161,2,125,5, + 116,8,124,5,124,0,100,4,141,2,100,0,130,2,37,0, + 116,9,124,0,124,2,131,2,125,6,124,6,100,0,117,0, + 114,82,116,8,116,6,160,7,124,0,161,1,124,0,100,4, + 141,2,130,1,116,10,124,6,131,1,125,7,124,3,114,134, + 116,1,106,2,124,3,25,0,125,4,124,0,160,0,100,1, + 161,1,100,5,25,0,125,8,9,0,116,11,124,4,124,8, + 124,7,131,3,1,0,124,7,83,0,35,0,4,0,116,5, + 121,136,1,0,1,0,1,0,100,6,124,3,155,2,100,7, + 124,8,155,2,157,4,125,5,116,12,160,13,124,5,116,14, + 161,2,1,0,89,0,124,7,83,0,37,0,124,7,83,0, + 119,0,119,0,41,8,78,114,141,0,0,0,114,26,0,0, + 0,122,23,59,32,123,33,114,125,32,105,115,32,110,111,116, + 32,97,32,112,97,99,107,97,103,101,114,19,0,0,0,233, + 2,0,0,0,122,27,67,97,110,110,111,116,32,115,101,116, + 32,97,110,32,97,116,116,114,105,98,117,116,101,32,111,110, + 32,122,18,32,102,111,114,32,99,104,105,108,100,32,109,111, + 100,117,108,101,32,41,15,114,142,0,0,0,114,18,0,0, + 0,114,105,0,0,0,114,75,0,0,0,114,154,0,0,0, + 114,2,0,0,0,218,8,95,69,82,82,95,77,83,71,114, + 51,0,0,0,218,19,77,111,100,117,108,101,78,111,116,70, + 111,117,110,100,69,114,114,111,114,114,215,0,0,0,114,173, + 0,0,0,114,11,0,0,0,114,101,0,0,0,114,102,0, + 0,0,114,169,0,0,0,41,9,114,20,0,0,0,218,7, + 105,109,112,111,114,116,95,114,181,0,0,0,114,143,0,0, + 0,90,13,112,97,114,101,110,116,95,109,111,100,117,108,101, + 114,108,0,0,0,114,109,0,0,0,114,110,0,0,0,90, + 5,99,104,105,108,100,115,9,0,0,0,32,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,23,95,102,105,110,100, + 95,97,110,100,95,108,111,97,100,95,117,110,108,111,99,107, + 101,100,219,3,0,0,115,68,0,0,0,4,1,14,1,4, + 1,10,1,10,1,10,2,10,1,10,1,2,1,8,1,2, + 128,12,1,16,1,14,1,2,128,10,1,8,1,18,1,8, + 2,4,1,10,2,14,1,2,1,12,1,4,4,2,128,12, + 253,16,1,14,1,4,1,2,128,4,0,2,253,2,242,115, + 31,0,0,0,165,3,41,0,169,22,63,7,193,37,6,65, + 45,0,193,45,21,66,5,7,194,8,1,66,5,7,194,9, + 1,63,7,114,226,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,9,0,0,0,3,0,0,0,115,132,0, + 0,0,116,0,124,0,131,1,53,0,1,0,116,1,106,2, + 160,3,124,0,116,4,161,2,125,2,124,2,116,4,117,0, + 114,27,116,5,124,0,124,1,131,2,2,0,100,1,4,0, + 4,0,131,3,1,0,83,0,9,0,100,1,4,0,4,0, + 131,3,1,0,110,11,35,0,49,0,115,39,119,4,37,0, + 1,0,1,0,1,0,89,0,1,0,1,0,124,2,100,1, + 117,0,114,60,100,2,160,6,124,0,161,1,125,3,116,7, + 124,3,124,0,100,3,141,2,130,1,116,8,124,0,131,1, + 1,0,124,2,83,0,41,4,122,25,70,105,110,100,32,97, + 110,100,32,108,111,97,100,32,116,104,101,32,109,111,100,117, + 108,101,46,78,122,40,105,109,112,111,114,116,32,111,102,32, + 123,125,32,104,97,108,116,101,100,59,32,78,111,110,101,32, + 105,110,32,115,121,115,46,109,111,100,117,108,101,115,114,19, + 0,0,0,41,9,114,58,0,0,0,114,18,0,0,0,114, + 105,0,0,0,114,39,0,0,0,218,14,95,78,69,69,68, + 83,95,76,79,65,68,73,78,71,114,226,0,0,0,114,51, + 0,0,0,114,224,0,0,0,114,73,0,0,0,41,4,114, + 20,0,0,0,114,225,0,0,0,114,110,0,0,0,114,83, + 0,0,0,115,4,0,0,0,32,32,32,32,114,5,0,0, + 0,218,14,95,102,105,110,100,95,97,110,100,95,108,111,97, + 100,254,3,0,0,115,32,0,0,0,10,2,14,1,8,1, + 8,1,14,253,2,2,20,254,2,128,12,0,8,5,2,1, + 6,1,2,255,12,2,8,2,4,1,115,12,0,0,0,132, + 16,34,3,162,4,38,11,167,3,38,11,114,228,0,0,0, + 114,26,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,115,42,0,0,0,116, + 0,124,0,124,1,124,2,131,3,1,0,124,2,100,1,107, + 4,114,16,116,1,124,0,124,1,124,2,131,3,125,0,116, + 2,124,0,116,3,131,2,83,0,41,3,97,50,1,0,0, + 73,109,112,111,114,116,32,97,110,100,32,114,101,116,117,114, + 110,32,116,104,101,32,109,111,100,117,108,101,32,98,97,115, + 101,100,32,111,110,32,105,116,115,32,110,97,109,101,44,32, + 116,104,101,32,112,97,99,107,97,103,101,32,116,104,101,32, + 99,97,108,108,32,105,115,10,32,32,32,32,98,101,105,110, + 103,32,109,97,100,101,32,102,114,111,109,44,32,97,110,100, + 32,116,104,101,32,108,101,118,101,108,32,97,100,106,117,115, + 116,109,101,110,116,46,10,10,32,32,32,32,84,104,105,115, + 32,102,117,110,99,116,105,111,110,32,114,101,112,114,101,115, + 101,110,116,115,32,116,104,101,32,103,114,101,97,116,101,115, + 116,32,99,111,109,109,111,110,32,100,101,110,111,109,105,110, + 97,116,111,114,32,111,102,32,102,117,110,99,116,105,111,110, + 97,108,105,116,121,10,32,32,32,32,98,101,116,119,101,101, + 110,32,105,109,112,111,114,116,95,109,111,100,117,108,101,32, + 97,110,100,32,95,95,105,109,112,111,114,116,95,95,46,32, + 84,104,105,115,32,105,110,99,108,117,100,101,115,32,115,101, + 116,116,105,110,103,32,95,95,112,97,99,107,97,103,101,95, + 95,32,105,102,10,32,32,32,32,116,104,101,32,108,111,97, + 100,101,114,32,100,105,100,32,110,111,116,46,10,10,32,32, + 32,32,114,26,0,0,0,78,41,4,114,221,0,0,0,114, + 211,0,0,0,114,228,0,0,0,218,11,95,103,99,100,95, + 105,109,112,111,114,116,114,220,0,0,0,115,3,0,0,0, + 32,32,32,114,5,0,0,0,114,229,0,0,0,14,4,0, + 0,115,8,0,0,0,12,9,8,1,12,1,10,1,114,17, + 0,0,0,114,229,0,0,0,169,1,218,9,114,101,99,117, + 114,115,105,118,101,99,3,0,0,0,0,0,0,0,1,0, + 0,0,9,0,0,0,3,0,0,0,115,216,0,0,0,124, + 1,68,0,93,102,125,4,116,0,124,4,116,1,131,2,115, + 32,124,3,114,17,124,0,106,2,100,1,23,0,125,5,110, + 2,100,2,125,5,116,3,100,3,124,5,155,0,100,4,116, + 4,124,4,131,1,106,2,155,0,157,4,131,1,130,1,124, + 4,100,5,107,2,114,53,124,3,115,52,116,5,124,0,100, + 6,131,2,114,52,116,6,124,0,124,0,106,7,124,2,100, + 7,100,8,141,4,1,0,113,2,116,5,124,0,124,4,131, + 2,115,104,100,9,160,8,124,0,106,2,124,4,161,2,125, + 6,9,0,116,9,124,2,124,6,131,2,1,0,113,2,35, + 0,4,0,116,10,121,107,1,0,125,7,1,0,124,7,106, + 11,124,6,107,2,114,98,116,12,106,13,160,14,124,6,116, + 15,161,2,100,10,117,1,114,98,89,0,100,10,125,7,126, + 7,113,2,130,0,100,10,125,7,126,7,119,1,37,0,113, + 2,124,0,83,0,119,0,41,11,122,238,70,105,103,117,114, + 101,32,111,117,116,32,119,104,97,116,32,95,95,105,109,112, + 111,114,116,95,95,32,115,104,111,117,108,100,32,114,101,116, + 117,114,110,46,10,10,32,32,32,32,84,104,101,32,105,109, + 112,111,114,116,95,32,112,97,114,97,109,101,116,101,114,32, + 105,115,32,97,32,99,97,108,108,97,98,108,101,32,119,104, + 105,99,104,32,116,97,107,101,115,32,116,104,101,32,110,97, + 109,101,32,111,102,32,109,111,100,117,108,101,32,116,111,10, + 32,32,32,32,105,109,112,111,114,116,46,32,73,116,32,105, + 115,32,114,101,113,117,105,114,101,100,32,116,111,32,100,101, + 99,111,117,112,108,101,32,116,104,101,32,102,117,110,99,116, + 105,111,110,32,102,114,111,109,32,97,115,115,117,109,105,110, + 103,32,105,109,112,111,114,116,108,105,98,39,115,10,32,32, + 32,32,105,109,112,111,114,116,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,105,115,32,100,101,115,105,114, + 101,100,46,10,10,32,32,32,32,122,8,46,95,95,97,108, + 108,95,95,122,13,96,96,102,114,111,109,32,108,105,115,116, + 39,39,122,8,73,116,101,109,32,105,110,32,122,18,32,109, + 117,115,116,32,98,101,32,115,116,114,44,32,110,111,116,32, + 250,1,42,218,7,95,95,97,108,108,95,95,84,114,230,0, + 0,0,114,206,0,0,0,78,41,16,114,216,0,0,0,114, + 217,0,0,0,114,8,0,0,0,114,218,0,0,0,114,3, + 0,0,0,114,10,0,0,0,218,16,95,104,97,110,100,108, + 101,95,102,114,111,109,108,105,115,116,114,233,0,0,0,114, + 51,0,0,0,114,75,0,0,0,114,224,0,0,0,114,20, + 0,0,0,114,18,0,0,0,114,105,0,0,0,114,39,0, + 0,0,114,227,0,0,0,41,8,114,110,0,0,0,218,8, + 102,114,111,109,108,105,115,116,114,225,0,0,0,114,231,0, + 0,0,218,1,120,90,5,119,104,101,114,101,90,9,102,114, + 111,109,95,110,97,109,101,90,3,101,120,99,115,8,0,0, + 0,32,32,32,32,32,32,32,32,114,5,0,0,0,114,234, + 0,0,0,29,4,0,0,115,58,0,0,0,8,10,10,1, + 4,1,12,1,4,2,10,1,8,1,8,255,8,2,14,1, + 10,1,2,1,6,255,2,128,10,2,14,1,2,1,12,1, + 2,128,12,1,10,4,16,1,2,255,10,2,2,1,10,128, + 2,245,4,12,2,248,115,36,0,0,0,193,2,5,65,8, + 2,193,8,7,65,39,9,193,15,14,65,35,9,193,34,1, + 65,35,9,193,35,4,65,39,9,193,43,1,65,39,9,114, + 234,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,7,0,0,0,3,0,0,0,115,146,0,0,0,124,0, + 160,0,100,1,161,1,125,1,124,0,160,0,100,2,161,1, + 125,2,124,1,100,3,117,1,114,41,124,2,100,3,117,1, + 114,39,124,1,124,2,106,1,107,3,114,39,116,2,160,3, + 100,4,124,1,155,2,100,5,124,2,106,1,155,2,100,6, + 157,5,116,4,100,7,100,8,166,3,1,0,124,1,83,0, + 124,2,100,3,117,1,114,48,124,2,106,1,83,0,116,2, + 160,3,100,9,116,4,100,7,100,8,166,3,1,0,124,0, + 100,10,25,0,125,1,100,11,124,0,118,1,114,71,124,1, + 160,5,100,12,161,1,100,13,25,0,125,1,124,1,83,0, + 41,14,122,167,67,97,108,99,117,108,97,116,101,32,119,104, + 97,116,32,95,95,112,97,99,107,97,103,101,95,95,32,115, + 104,111,117,108,100,32,98,101,46,10,10,32,32,32,32,95, + 95,112,97,99,107,97,103,101,95,95,32,105,115,32,110,111, + 116,32,103,117,97,114,97,110,116,101,101,100,32,116,111,32, + 98,101,32,100,101,102,105,110,101,100,32,111,114,32,99,111, + 117,108,100,32,98,101,32,115,101,116,32,116,111,32,78,111, + 110,101,10,32,32,32,32,116,111,32,114,101,112,114,101,115, + 101,110,116,32,116,104,97,116,32,105,116,115,32,112,114,111, + 112,101,114,32,118,97,108,117,101,32,105,115,32,117,110,107, + 110,111,119,110,46,10,10,32,32,32,32,114,158,0,0,0, + 114,113,0,0,0,78,122,32,95,95,112,97,99,107,97,103, + 101,95,95,32,33,61,32,95,95,115,112,101,99,95,95,46, + 112,97,114,101,110,116,32,40,122,4,32,33,61,32,250,1, + 41,233,3,0,0,0,41,1,90,10,115,116,97,99,107,108, + 101,118,101,108,122,89,99,97,110,39,116,32,114,101,115,111, + 108,118,101,32,112,97,99,107,97,103,101,32,102,114,111,109, + 32,95,95,115,112,101,99,95,95,32,111,114,32,95,95,112, + 97,99,107,97,103,101,95,95,44,32,102,97,108,108,105,110, + 103,32,98,97,99,107,32,111,110,32,95,95,110,97,109,101, + 95,95,32,97,110,100,32,95,95,112,97,116,104,95,95,114, + 8,0,0,0,114,154,0,0,0,114,141,0,0,0,114,26, + 0,0,0,41,6,114,39,0,0,0,114,143,0,0,0,114, + 101,0,0,0,114,102,0,0,0,114,169,0,0,0,114,142, + 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,209, + 0,0,0,114,109,0,0,0,115,3,0,0,0,32,32,32, + 114,5,0,0,0,218,17,95,99,97,108,99,95,95,95,112, + 97,99,107,97,103,101,95,95,66,4,0,0,115,42,0,0, + 0,10,7,10,1,8,1,18,1,6,1,2,1,4,255,4, + 1,6,255,4,2,6,254,4,3,8,1,6,1,6,2,4, + 2,6,254,8,3,8,1,14,1,4,1,114,17,0,0,0, + 114,240,0,0,0,114,23,0,0,0,99,5,0,0,0,0, 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, - 30,0,0,0,116,0,160,1,124,1,161,1,114,13,116,2, - 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, - 83,0,114,178,0,0,0,41,4,114,65,0,0,0,114,98, - 0,0,0,114,104,0,0,0,114,151,0,0,0,114,179,0, - 0,0,115,4,0,0,0,32,32,32,32,114,5,0,0,0, - 114,183,0,0,0,58,3,0,0,115,6,0,0,0,10,2, - 16,1,4,2,114,17,0,0,0,122,24,70,114,111,122,101, - 110,73,109,112,111,114,116,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,3,0,0,0,115,30,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,116,3,160,4,124,1,161, - 1,114,13,124,0,83,0,100,2,83,0,41,3,122,93,70, - 105,110,100,32,97,32,102,114,111,122,101,110,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,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,122,105,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,40,41,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,32,97,110,100,32,115,108,97, - 116,101,100,32,102,111,114,32,114,101,109,111,118,97,108,32, - 105,110,32,80,121,116,104,111,110,32,51,46,49,50,59,32, - 117,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, - 105,110,115,116,101,97,100,78,41,5,114,101,0,0,0,114, - 102,0,0,0,114,103,0,0,0,114,65,0,0,0,114,98, - 0,0,0,41,3,114,180,0,0,0,114,90,0,0,0,114, - 181,0,0,0,115,3,0,0,0,32,32,32,114,5,0,0, - 0,114,184,0,0,0,65,3,0,0,115,8,0,0,0,6, - 7,2,2,4,254,18,3,114,17,0,0,0,122,26,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,114,185,0, - 0,0,41,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,23,0,0,0,114,174,0,0,0,115,1,0,0,0, - 32,114,5,0,0,0,114,162,0,0,0,77,3,0,0,115, - 2,0,0,0,4,0,114,17,0,0,0,122,28,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,46,99,114,101,97, - 116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,64, - 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, - 1,161,1,115,18,116,4,100,1,160,5,124,1,161,1,124, - 1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131, - 2,125,2,116,8,124,2,124,0,106,9,131,2,1,0,100, - 0,83,0,114,97,0,0,0,41,10,114,113,0,0,0,114, - 20,0,0,0,114,65,0,0,0,114,98,0,0,0,114,88, - 0,0,0,114,51,0,0,0,114,75,0,0,0,218,17,103, - 101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116, - 218,4,101,120,101,99,114,13,0,0,0,41,3,114,110,0, - 0,0,114,20,0,0,0,218,4,99,111,100,101,115,3,0, - 0,0,32,32,32,114,5,0,0,0,114,163,0,0,0,81, - 3,0,0,115,14,0,0,0,8,2,10,1,10,1,2,1, - 6,255,12,2,16,1,114,17,0,0,0,122,26,70,114,111, - 122,101,110,73,109,112,111,114,116,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,3,0,0,0,3,0,0,0,115,10,0,0, - 0,116,0,124,0,124,1,131,2,83,0,41,2,122,95,76, - 111,97,100,32,97,32,102,114,111,122,101,110,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,78,41, - 1,114,111,0,0,0,114,186,0,0,0,115,2,0,0,0, - 32,32,114,5,0,0,0,114,170,0,0,0,90,3,0,0, - 115,2,0,0,0,10,8,114,17,0,0,0,122,26,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,108,111,97, - 100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,243,10,0, - 0,0,116,0,160,1,124,1,161,1,83,0,41,2,122,45, - 82,101,116,117,114,110,32,116,104,101,32,99,111,100,101,32, - 111,98,106,101,99,116,32,102,111,114,32,116,104,101,32,102, - 114,111,122,101,110,32,109,111,100,117,108,101,46,78,41,2, - 114,65,0,0,0,114,195,0,0,0,114,186,0,0,0,115, - 2,0,0,0,32,32,114,5,0,0,0,114,187,0,0,0, - 100,3,0,0,243,2,0,0,0,10,4,114,17,0,0,0, - 122,23,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,103,101,116,95,99,111,100,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,114,185, - 0,0,0,41,2,122,54,82,101,116,117,114,110,32,78,111, - 110,101,32,97,115,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,23, - 0,0,0,114,186,0,0,0,115,2,0,0,0,32,32,114, - 5,0,0,0,114,189,0,0,0,106,3,0,0,114,188,0, - 0,0,114,17,0,0,0,122,25,70,114,111,122,101,110,73, - 109,112,111,114,116,101,114,46,103,101,116,95,115,111,117,114, - 99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,114,198,0,0,0,41,2,122,46, - 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116, - 104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,101, - 32,105,115,32,97,32,112,97,99,107,97,103,101,46,78,41, - 2,114,65,0,0,0,90,17,105,115,95,102,114,111,122,101, - 110,95,112,97,99,107,97,103,101,114,186,0,0,0,115,2, - 0,0,0,32,32,114,5,0,0,0,114,128,0,0,0,112, - 3,0,0,114,199,0,0,0,114,17,0,0,0,122,25,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,46,105,115, - 95,112,97,99,107,97,103,101,114,190,0,0,0,114,0,0, - 0,0,41,17,114,8,0,0,0,114,7,0,0,0,114,1, - 0,0,0,114,9,0,0,0,114,151,0,0,0,114,191,0, - 0,0,114,114,0,0,0,114,192,0,0,0,114,183,0,0, - 0,114,184,0,0,0,114,162,0,0,0,114,163,0,0,0, - 114,170,0,0,0,114,100,0,0,0,114,187,0,0,0,114, - 189,0,0,0,114,128,0,0,0,114,23,0,0,0,114,17, - 0,0,0,114,5,0,0,0,114,193,0,0,0,36,3,0, - 0,115,48,0,0,0,8,0,4,2,4,7,2,2,10,1, - 2,10,12,1,2,6,12,1,2,11,10,1,2,3,10,1, - 2,8,10,1,2,9,2,1,12,1,2,4,2,1,12,1, - 2,4,2,1,16,1,114,17,0,0,0,114,193,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,0,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,83,0,41,7,218,18,95,73, - 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, - 122,36,67,111,110,116,101,120,116,32,109,97,110,97,103,101, - 114,32,102,111,114,32,116,104,101,32,105,109,112,111,114,116, - 32,108,111,99,107,46,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,3,0,0,0,243,12,0,0,0, - 116,0,160,1,161,0,1,0,100,1,83,0,41,2,122,24, - 65,99,113,117,105,114,101,32,116,104,101,32,105,109,112,111, - 114,116,32,108,111,99,107,46,78,41,2,114,65,0,0,0, - 114,66,0,0,0,114,53,0,0,0,115,1,0,0,0,32, - 114,5,0,0,0,114,62,0,0,0,125,3,0,0,243,2, - 0,0,0,12,2,114,17,0,0,0,122,28,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, - 95,101,110,116,101,114,95,95,99,4,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,3,0,0,0,114,201,0, - 0,0,41,2,122,60,82,101,108,101,97,115,101,32,116,104, - 101,32,105,109,112,111,114,116,32,108,111,99,107,32,114,101, - 103,97,114,100,108,101,115,115,32,111,102,32,97,110,121,32, - 114,97,105,115,101,100,32,101,120,99,101,112,116,105,111,110, - 115,46,78,41,2,114,65,0,0,0,114,68,0,0,0,41, - 4,114,34,0,0,0,218,8,101,120,99,95,116,121,112,101, - 218,9,101,120,99,95,118,97,108,117,101,218,13,101,120,99, - 95,116,114,97,99,101,98,97,99,107,115,4,0,0,0,32, - 32,32,32,114,5,0,0,0,114,64,0,0,0,129,3,0, - 0,114,202,0,0,0,114,17,0,0,0,122,27,95,73,109, - 112,111,114,116,76,111,99,107,67,111,110,116,101,120,116,46, - 95,95,101,120,105,116,95,95,78,41,6,114,8,0,0,0, - 114,7,0,0,0,114,1,0,0,0,114,9,0,0,0,114, - 62,0,0,0,114,64,0,0,0,114,23,0,0,0,114,17, - 0,0,0,114,5,0,0,0,114,200,0,0,0,121,3,0, - 0,115,8,0,0,0,8,0,4,2,8,2,12,4,114,17, - 0,0,0,114,200,0,0,0,99,3,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,3,0,0,0,115,64,0, - 0,0,124,1,160,0,100,1,124,2,100,2,24,0,161,2, - 125,3,116,1,124,3,131,1,124,2,107,0,114,18,116,2, - 100,3,131,1,130,1,124,3,100,4,25,0,125,4,124,0, - 114,30,100,5,160,3,124,4,124,0,161,2,83,0,124,4, - 83,0,41,7,122,50,82,101,115,111,108,118,101,32,97,32, - 114,101,108,97,116,105,118,101,32,109,111,100,117,108,101,32, - 110,97,109,101,32,116,111,32,97,110,32,97,98,115,111,108, - 117,116,101,32,111,110,101,46,114,141,0,0,0,114,43,0, - 0,0,122,50,97,116,116,101,109,112,116,101,100,32,114,101, - 108,97,116,105,118,101,32,105,109,112,111,114,116,32,98,101, - 121,111,110,100,32,116,111,112,45,108,101,118,101,108,32,112, - 97,99,107,97,103,101,114,26,0,0,0,250,5,123,125,46, - 123,125,78,41,4,218,6,114,115,112,108,105,116,218,3,108, - 101,110,114,88,0,0,0,114,51,0,0,0,41,5,114,20, - 0,0,0,218,7,112,97,99,107,97,103,101,218,5,108,101, - 118,101,108,90,4,98,105,116,115,90,4,98,97,115,101,115, - 5,0,0,0,32,32,32,32,32,114,5,0,0,0,218,13, - 95,114,101,115,111,108,118,101,95,110,97,109,101,134,3,0, - 0,115,10,0,0,0,16,2,12,1,8,1,8,1,20,1, - 114,17,0,0,0,114,211,0,0,0,99,3,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,115, - 60,0,0,0,116,0,124,0,131,1,155,0,100,1,157,2, - 125,3,116,1,160,2,124,3,116,3,161,2,1,0,124,0, - 160,4,124,1,124,2,161,2,125,4,124,4,100,0,117,0, - 114,25,100,0,83,0,116,5,124,1,124,4,131,2,83,0, - 41,2,78,122,53,46,102,105,110,100,95,115,112,101,99,40, - 41,32,110,111,116,32,102,111,117,110,100,59,32,102,97,108, - 108,105,110,103,32,98,97,99,107,32,116,111,32,102,105,110, - 100,95,109,111,100,117,108,101,40,41,41,6,114,6,0,0, - 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, - 114,184,0,0,0,114,104,0,0,0,41,5,218,6,102,105, - 110,100,101,114,114,20,0,0,0,114,181,0,0,0,114,108, - 0,0,0,114,122,0,0,0,115,5,0,0,0,32,32,32, - 32,32,114,5,0,0,0,218,17,95,102,105,110,100,95,115, - 112,101,99,95,108,101,103,97,99,121,143,3,0,0,115,12, - 0,0,0,14,1,12,2,12,1,8,1,4,1,10,1,114, - 17,0,0,0,114,213,0,0,0,99,3,0,0,0,0,0, - 0,0,0,0,0,0,10,0,0,0,3,0,0,0,115,30, - 1,0,0,116,0,106,1,125,3,124,3,100,1,117,0,114, - 11,116,2,100,2,131,1,130,1,124,3,115,19,116,3,160, - 4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,118, - 0,125,4,124,3,68,0,93,112,125,5,116,7,131,0,53, - 0,1,0,9,0,124,5,106,8,125,6,110,27,35,0,4, - 0,116,9,121,142,1,0,1,0,1,0,116,10,124,5,124, - 0,124,1,131,3,125,7,124,7,100,1,117,0,114,61,89, - 0,100,1,4,0,4,0,131,3,1,0,113,26,89,0,110, - 7,37,0,124,6,124,0,124,1,124,2,131,3,125,7,100, - 1,4,0,4,0,131,3,1,0,110,11,35,0,49,0,115, - 81,119,4,37,0,1,0,1,0,1,0,89,0,1,0,1, - 0,124,7,100,1,117,1,114,138,124,4,115,134,124,0,116, - 0,106,6,118,0,114,134,116,0,106,6,124,0,25,0,125, - 8,9,0,124,8,106,11,125,9,110,14,35,0,4,0,116, - 9,121,141,1,0,1,0,1,0,124,7,6,0,89,0,2, - 0,1,0,83,0,37,0,124,9,100,1,117,0,114,130,124, - 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, - 7,2,0,1,0,83,0,113,26,100,1,83,0,119,0,119, - 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, - 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, - 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, - 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, - 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, - 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, - 104,32,105,115,32,101,109,112,116,121,41,12,114,18,0,0, - 0,218,9,109,101,116,97,95,112,97,116,104,114,88,0,0, - 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, - 114,105,0,0,0,114,200,0,0,0,114,183,0,0,0,114, - 2,0,0,0,114,213,0,0,0,114,113,0,0,0,41,10, - 114,20,0,0,0,114,181,0,0,0,114,182,0,0,0,114, - 214,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, - 212,0,0,0,114,183,0,0,0,114,109,0,0,0,114,110, - 0,0,0,114,113,0,0,0,115,10,0,0,0,32,32,32, - 32,32,32,32,32,32,32,114,5,0,0,0,218,10,95,102, - 105,110,100,95,115,112,101,99,153,3,0,0,115,76,0,0, - 0,6,2,8,1,8,2,4,3,12,1,10,5,8,1,8, - 1,2,1,8,1,2,128,12,1,12,1,8,1,2,1,12, - 250,4,5,2,128,12,3,12,248,22,128,8,9,14,2,10, - 1,2,1,8,1,2,128,12,1,12,4,2,128,8,2,8, - 1,8,2,8,2,2,239,4,19,2,243,2,244,115,63,0, - 0,0,159,1,65,12,5,161,3,37,4,164,1,65,12,5, - 165,17,63,11,182,1,65,12,5,189,9,65,12,5,193,12, - 4,65,16,13,193,17,3,65,16,13,193,40,3,65,44,2, - 193,44,9,65,57,9,194,13,1,65,57,9,194,14,1,63, - 11,114,215,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,3,0,0,0,115,110,0,0,0, - 116,0,124,0,116,1,131,2,115,14,116,2,100,1,160,3, - 116,4,124,0,131,1,161,1,131,1,130,1,124,2,100,2, - 107,0,114,22,116,5,100,3,131,1,130,1,124,2,100,2, - 107,4,114,41,116,0,124,1,116,1,131,2,115,35,116,2, - 100,4,131,1,130,1,124,1,115,41,116,6,100,5,131,1, - 130,1,124,0,115,53,124,2,100,2,107,2,114,51,116,5, - 100,6,131,1,130,1,100,7,83,0,100,7,83,0,41,8, - 122,28,86,101,114,105,102,121,32,97,114,103,117,109,101,110, - 116,115,32,97,114,101,32,34,115,97,110,101,34,46,122,31, - 109,111,100,117,108,101,32,110,97,109,101,32,109,117,115,116, - 32,98,101,32,115,116,114,44,32,110,111,116,32,123,125,114, - 26,0,0,0,122,18,108,101,118,101,108,32,109,117,115,116, - 32,98,101,32,62,61,32,48,122,31,95,95,112,97,99,107, - 97,103,101,95,95,32,110,111,116,32,115,101,116,32,116,111, - 32,97,32,115,116,114,105,110,103,122,54,97,116,116,101,109, - 112,116,101,100,32,114,101,108,97,116,105,118,101,32,105,109, - 112,111,114,116,32,119,105,116,104,32,110,111,32,107,110,111, - 119,110,32,112,97,114,101,110,116,32,112,97,99,107,97,103, - 101,122,17,69,109,112,116,121,32,109,111,100,117,108,101,32, - 110,97,109,101,78,41,7,218,10,105,115,105,110,115,116,97, - 110,99,101,218,3,115,116,114,218,9,84,121,112,101,69,114, - 114,111,114,114,51,0,0,0,114,3,0,0,0,218,10,86, - 97,108,117,101,69,114,114,111,114,114,88,0,0,0,169,3, - 114,20,0,0,0,114,209,0,0,0,114,210,0,0,0,115, - 3,0,0,0,32,32,32,114,5,0,0,0,218,13,95,115, - 97,110,105,116,121,95,99,104,101,99,107,200,3,0,0,115, - 24,0,0,0,10,2,18,1,8,1,8,1,8,1,10,1, - 8,1,4,1,8,1,12,2,8,1,8,255,114,17,0,0, - 0,114,221,0,0,0,122,16,78,111,32,109,111,100,117,108, - 101,32,110,97,109,101,100,32,122,4,123,33,114,125,99,2, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, - 0,0,0,115,20,1,0,0,100,0,125,2,124,0,160,0, - 100,1,161,1,100,2,25,0,125,3,124,3,114,64,124,3, - 116,1,106,2,118,1,114,21,116,3,124,1,124,3,131,2, - 1,0,124,0,116,1,106,2,118,0,114,31,116,1,106,2, - 124,0,25,0,83,0,116,1,106,2,124,3,25,0,125,4, - 9,0,124,4,106,4,125,2,110,23,35,0,4,0,116,5, - 121,137,1,0,1,0,1,0,116,6,100,3,23,0,160,7, - 124,0,124,3,161,2,125,5,116,8,124,5,124,0,100,4, - 141,2,100,0,130,2,37,0,116,9,124,0,124,2,131,2, - 125,6,124,6,100,0,117,0,114,82,116,8,116,6,160,7, - 124,0,161,1,124,0,100,4,141,2,130,1,116,10,124,6, - 131,1,125,7,124,3,114,134,116,1,106,2,124,3,25,0, - 125,4,124,0,160,0,100,1,161,1,100,5,25,0,125,8, - 9,0,116,11,124,4,124,8,124,7,131,3,1,0,124,7, - 83,0,35,0,4,0,116,5,121,136,1,0,1,0,1,0, - 100,6,124,3,155,2,100,7,124,8,155,2,157,4,125,5, - 116,12,160,13,124,5,116,14,161,2,1,0,89,0,124,7, - 83,0,37,0,124,7,83,0,119,0,119,0,41,8,78,114, - 141,0,0,0,114,26,0,0,0,122,23,59,32,123,33,114, - 125,32,105,115,32,110,111,116,32,97,32,112,97,99,107,97, - 103,101,114,19,0,0,0,233,2,0,0,0,122,27,67,97, - 110,110,111,116,32,115,101,116,32,97,110,32,97,116,116,114, - 105,98,117,116,101,32,111,110,32,122,18,32,102,111,114,32, - 99,104,105,108,100,32,109,111,100,117,108,101,32,41,15,114, - 142,0,0,0,114,18,0,0,0,114,105,0,0,0,114,75, - 0,0,0,114,154,0,0,0,114,2,0,0,0,218,8,95, - 69,82,82,95,77,83,71,114,51,0,0,0,218,19,77,111, - 100,117,108,101,78,111,116,70,111,117,110,100,69,114,114,111, - 114,114,215,0,0,0,114,173,0,0,0,114,11,0,0,0, - 114,101,0,0,0,114,102,0,0,0,114,169,0,0,0,41, - 9,114,20,0,0,0,218,7,105,109,112,111,114,116,95,114, - 181,0,0,0,114,143,0,0,0,90,13,112,97,114,101,110, - 116,95,109,111,100,117,108,101,114,108,0,0,0,114,109,0, - 0,0,114,110,0,0,0,90,5,99,104,105,108,100,115,9, - 0,0,0,32,32,32,32,32,32,32,32,32,114,5,0,0, - 0,218,23,95,102,105,110,100,95,97,110,100,95,108,111,97, - 100,95,117,110,108,111,99,107,101,100,219,3,0,0,115,68, - 0,0,0,4,1,14,1,4,1,10,1,10,1,10,2,10, - 1,10,1,2,1,8,1,2,128,12,1,16,1,14,1,2, - 128,10,1,8,1,18,1,8,2,4,1,10,2,14,1,2, - 1,12,1,4,4,2,128,12,253,16,1,14,1,4,1,2, - 128,4,0,2,253,2,242,115,31,0,0,0,165,3,41,0, - 169,22,63,7,193,37,6,65,45,0,193,45,21,66,5,7, - 194,8,1,66,5,7,194,9,1,63,7,114,226,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,3,0,0,0,115,132,0,0,0,116,0,124,0,131,1, - 53,0,1,0,116,1,106,2,160,3,124,0,116,4,161,2, - 125,2,124,2,116,4,117,0,114,27,116,5,124,0,124,1, - 131,2,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 9,0,100,1,4,0,4,0,131,3,1,0,110,11,35,0, - 49,0,115,39,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,124,2,100,1,117,0,114,60,100,2,160,6, - 124,0,161,1,125,3,116,7,124,3,124,0,100,3,141,2, - 130,1,116,8,124,0,131,1,1,0,124,2,83,0,41,4, - 122,25,70,105,110,100,32,97,110,100,32,108,111,97,100,32, - 116,104,101,32,109,111,100,117,108,101,46,78,122,40,105,109, - 112,111,114,116,32,111,102,32,123,125,32,104,97,108,116,101, - 100,59,32,78,111,110,101,32,105,110,32,115,121,115,46,109, - 111,100,117,108,101,115,114,19,0,0,0,41,9,114,58,0, - 0,0,114,18,0,0,0,114,105,0,0,0,114,39,0,0, - 0,218,14,95,78,69,69,68,83,95,76,79,65,68,73,78, - 71,114,226,0,0,0,114,51,0,0,0,114,224,0,0,0, - 114,73,0,0,0,41,4,114,20,0,0,0,114,225,0,0, - 0,114,110,0,0,0,114,83,0,0,0,115,4,0,0,0, - 32,32,32,32,114,5,0,0,0,218,14,95,102,105,110,100, - 95,97,110,100,95,108,111,97,100,254,3,0,0,115,30,0, - 0,0,10,2,14,1,8,1,8,1,14,253,2,2,12,254, - 22,128,8,5,2,1,6,1,2,255,12,2,8,2,4,1, - 115,12,0,0,0,132,16,34,3,162,4,38,11,167,3,38, - 11,114,228,0,0,0,114,26,0,0,0,99,3,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, - 115,42,0,0,0,116,0,124,0,124,1,124,2,131,3,1, - 0,124,2,100,1,107,4,114,16,116,1,124,0,124,1,124, - 2,131,3,125,0,116,2,124,0,116,3,131,2,83,0,41, - 3,97,50,1,0,0,73,109,112,111,114,116,32,97,110,100, - 32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,117, - 108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,32, - 110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,103, - 101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,32, - 32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,111, - 109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,108, - 32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,32, - 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, - 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,103, - 114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,100, - 101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,117, - 110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,32, - 98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,109, - 111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,111, - 114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,117, - 100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,97, - 99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,116, - 104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,111, - 116,46,10,10,32,32,32,32,114,26,0,0,0,78,41,4, - 114,221,0,0,0,114,211,0,0,0,114,228,0,0,0,218, - 11,95,103,99,100,95,105,109,112,111,114,116,114,220,0,0, - 0,115,3,0,0,0,32,32,32,114,5,0,0,0,114,229, - 0,0,0,14,4,0,0,115,8,0,0,0,12,9,8,1, - 12,1,10,1,114,17,0,0,0,114,229,0,0,0,169,1, - 218,9,114,101,99,117,114,115,105,118,101,99,3,0,0,0, - 0,0,0,0,1,0,0,0,9,0,0,0,3,0,0,0, - 115,216,0,0,0,124,1,68,0,93,102,125,4,116,0,124, - 4,116,1,131,2,115,32,124,3,114,17,124,0,106,2,100, - 1,23,0,125,5,110,2,100,2,125,5,116,3,100,3,124, - 5,155,0,100,4,116,4,124,4,131,1,106,2,155,0,157, - 4,131,1,130,1,124,4,100,5,107,2,114,53,124,3,115, - 52,116,5,124,0,100,6,131,2,114,52,116,6,124,0,124, - 0,106,7,124,2,100,7,100,8,141,4,1,0,113,2,116, - 5,124,0,124,4,131,2,115,104,100,9,160,8,124,0,106, - 2,124,4,161,2,125,6,9,0,116,9,124,2,124,6,131, - 2,1,0,113,2,35,0,4,0,116,10,121,107,1,0,125, - 7,1,0,124,7,106,11,124,6,107,2,114,98,116,12,106, - 13,160,14,124,6,116,15,161,2,100,10,117,1,114,98,89, - 0,100,10,125,7,126,7,113,2,130,0,100,10,125,7,126, - 7,119,1,37,0,113,2,124,0,83,0,119,0,41,11,122, - 238,70,105,103,117,114,101,32,111,117,116,32,119,104,97,116, - 32,95,95,105,109,112,111,114,116,95,95,32,115,104,111,117, - 108,100,32,114,101,116,117,114,110,46,10,10,32,32,32,32, - 84,104,101,32,105,109,112,111,114,116,95,32,112,97,114,97, - 109,101,116,101,114,32,105,115,32,97,32,99,97,108,108,97, - 98,108,101,32,119,104,105,99,104,32,116,97,107,101,115,32, - 116,104,101,32,110,97,109,101,32,111,102,32,109,111,100,117, - 108,101,32,116,111,10,32,32,32,32,105,109,112,111,114,116, - 46,32,73,116,32,105,115,32,114,101,113,117,105,114,101,100, - 32,116,111,32,100,101,99,111,117,112,108,101,32,116,104,101, - 32,102,117,110,99,116,105,111,110,32,102,114,111,109,32,97, - 115,115,117,109,105,110,103,32,105,109,112,111,114,116,108,105, - 98,39,115,10,32,32,32,32,105,109,112,111,114,116,32,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,32,105,115, - 32,100,101,115,105,114,101,100,46,10,10,32,32,32,32,122, - 8,46,95,95,97,108,108,95,95,122,13,96,96,102,114,111, - 109,32,108,105,115,116,39,39,122,8,73,116,101,109,32,105, - 110,32,122,18,32,109,117,115,116,32,98,101,32,115,116,114, - 44,32,110,111,116,32,250,1,42,218,7,95,95,97,108,108, - 95,95,84,114,230,0,0,0,114,206,0,0,0,78,41,16, - 114,216,0,0,0,114,217,0,0,0,114,8,0,0,0,114, - 218,0,0,0,114,3,0,0,0,114,10,0,0,0,218,16, - 95,104,97,110,100,108,101,95,102,114,111,109,108,105,115,116, - 114,233,0,0,0,114,51,0,0,0,114,75,0,0,0,114, - 224,0,0,0,114,20,0,0,0,114,18,0,0,0,114,105, - 0,0,0,114,39,0,0,0,114,227,0,0,0,41,8,114, - 110,0,0,0,218,8,102,114,111,109,108,105,115,116,114,225, - 0,0,0,114,231,0,0,0,218,1,120,90,5,119,104,101, - 114,101,90,9,102,114,111,109,95,110,97,109,101,90,3,101, - 120,99,115,8,0,0,0,32,32,32,32,32,32,32,32,114, - 5,0,0,0,114,234,0,0,0,29,4,0,0,115,58,0, - 0,0,8,10,10,1,4,1,12,1,4,2,10,1,8,1, - 8,255,8,2,14,1,10,1,2,1,6,255,2,128,10,2, - 14,1,2,1,12,1,2,128,12,1,10,4,16,1,2,255, - 10,2,2,1,10,128,2,245,4,12,2,248,115,36,0,0, - 0,193,2,5,65,8,2,193,8,7,65,39,9,193,15,14, - 65,35,9,193,34,1,65,35,9,193,35,4,65,39,9,193, - 43,1,65,39,9,114,234,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,7,0,0,0,3,0,0,0,115, - 146,0,0,0,124,0,160,0,100,1,161,1,125,1,124,0, - 160,0,100,2,161,1,125,2,124,1,100,3,117,1,114,41, - 124,2,100,3,117,1,114,39,124,1,124,2,106,1,107,3, - 114,39,116,2,160,3,100,4,124,1,155,2,100,5,124,2, - 106,1,155,2,100,6,157,5,116,4,100,7,100,8,166,3, - 1,0,124,1,83,0,124,2,100,3,117,1,114,48,124,2, - 106,1,83,0,116,2,160,3,100,9,116,4,100,7,100,8, - 166,3,1,0,124,0,100,10,25,0,125,1,100,11,124,0, - 118,1,114,71,124,1,160,5,100,12,161,1,100,13,25,0, - 125,1,124,1,83,0,41,14,122,167,67,97,108,99,117,108, - 97,116,101,32,119,104,97,116,32,95,95,112,97,99,107,97, - 103,101,95,95,32,115,104,111,117,108,100,32,98,101,46,10, - 10,32,32,32,32,95,95,112,97,99,107,97,103,101,95,95, - 32,105,115,32,110,111,116,32,103,117,97,114,97,110,116,101, - 101,100,32,116,111,32,98,101,32,100,101,102,105,110,101,100, - 32,111,114,32,99,111,117,108,100,32,98,101,32,115,101,116, - 32,116,111,32,78,111,110,101,10,32,32,32,32,116,111,32, - 114,101,112,114,101,115,101,110,116,32,116,104,97,116,32,105, - 116,115,32,112,114,111,112,101,114,32,118,97,108,117,101,32, - 105,115,32,117,110,107,110,111,119,110,46,10,10,32,32,32, - 32,114,158,0,0,0,114,113,0,0,0,78,122,32,95,95, - 112,97,99,107,97,103,101,95,95,32,33,61,32,95,95,115, - 112,101,99,95,95,46,112,97,114,101,110,116,32,40,122,4, - 32,33,61,32,250,1,41,233,3,0,0,0,41,1,90,10, - 115,116,97,99,107,108,101,118,101,108,122,89,99,97,110,39, - 116,32,114,101,115,111,108,118,101,32,112,97,99,107,97,103, - 101,32,102,114,111,109,32,95,95,115,112,101,99,95,95,32, - 111,114,32,95,95,112,97,99,107,97,103,101,95,95,44,32, - 102,97,108,108,105,110,103,32,98,97,99,107,32,111,110,32, - 95,95,110,97,109,101,95,95,32,97,110,100,32,95,95,112, - 97,116,104,95,95,114,8,0,0,0,114,154,0,0,0,114, - 141,0,0,0,114,26,0,0,0,41,6,114,39,0,0,0, - 114,143,0,0,0,114,101,0,0,0,114,102,0,0,0,114, - 169,0,0,0,114,142,0,0,0,41,3,218,7,103,108,111, - 98,97,108,115,114,209,0,0,0,114,109,0,0,0,115,3, - 0,0,0,32,32,32,114,5,0,0,0,218,17,95,99,97, - 108,99,95,95,95,112,97,99,107,97,103,101,95,95,66,4, - 0,0,115,42,0,0,0,10,7,10,1,8,1,18,1,6, - 1,2,1,4,255,4,1,6,255,4,2,6,254,4,3,8, - 1,6,1,6,2,4,2,6,254,8,3,8,1,14,1,4, - 1,114,17,0,0,0,114,240,0,0,0,114,23,0,0,0, - 99,5,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,3,0,0,0,115,174,0,0,0,124,4,100,1,107,2, - 114,9,116,0,124,0,131,1,125,5,110,18,124,1,100,2, - 117,1,114,15,124,1,110,1,105,0,125,6,116,1,124,6, - 131,1,125,7,116,0,124,0,124,7,124,4,131,3,125,5, - 124,3,115,74,124,4,100,1,107,2,114,42,116,0,124,0, - 160,2,100,3,161,1,100,1,25,0,131,1,83,0,124,0, - 115,46,124,5,83,0,116,3,124,0,131,1,116,3,124,0, - 160,2,100,3,161,1,100,1,25,0,131,1,24,0,125,8, - 116,4,106,5,124,5,106,6,100,2,116,3,124,5,106,6, - 131,1,124,8,24,0,133,2,25,0,25,0,83,0,116,7, - 124,5,100,4,131,2,114,85,116,8,124,5,124,3,116,0, - 131,3,83,0,124,5,83,0,41,5,97,215,1,0,0,73, - 109,112,111,114,116,32,97,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,84,104,101,32,39,103,108,111,98,97,108, - 115,39,32,97,114,103,117,109,101,110,116,32,105,115,32,117, - 115,101,100,32,116,111,32,105,110,102,101,114,32,119,104,101, - 114,101,32,116,104,101,32,105,109,112,111,114,116,32,105,115, - 32,111,99,99,117,114,114,105,110,103,32,102,114,111,109,10, - 32,32,32,32,116,111,32,104,97,110,100,108,101,32,114,101, - 108,97,116,105,118,101,32,105,109,112,111,114,116,115,46,32, - 84,104,101,32,39,108,111,99,97,108,115,39,32,97,114,103, - 117,109,101,110,116,32,105,115,32,105,103,110,111,114,101,100, - 46,32,84,104,101,10,32,32,32,32,39,102,114,111,109,108, - 105,115,116,39,32,97,114,103,117,109,101,110,116,32,115,112, - 101,99,105,102,105,101,115,32,119,104,97,116,32,115,104,111, - 117,108,100,32,101,120,105,115,116,32,97,115,32,97,116,116, - 114,105,98,117,116,101,115,32,111,110,32,116,104,101,32,109, - 111,100,117,108,101,10,32,32,32,32,98,101,105,110,103,32, - 105,109,112,111,114,116,101,100,32,40,101,46,103,46,32,96, - 96,102,114,111,109,32,109,111,100,117,108,101,32,105,109,112, - 111,114,116,32,60,102,114,111,109,108,105,115,116,62,96,96, - 41,46,32,32,84,104,101,32,39,108,101,118,101,108,39,10, - 32,32,32,32,97,114,103,117,109,101,110,116,32,114,101,112, - 114,101,115,101,110,116,115,32,116,104,101,32,112,97,99,107, - 97,103,101,32,108,111,99,97,116,105,111,110,32,116,111,32, - 105,109,112,111,114,116,32,102,114,111,109,32,105,110,32,97, - 32,114,101,108,97,116,105,118,101,10,32,32,32,32,105,109, - 112,111,114,116,32,40,101,46,103,46,32,96,96,102,114,111, - 109,32,46,46,112,107,103,32,105,109,112,111,114,116,32,109, - 111,100,96,96,32,119,111,117,108,100,32,104,97,118,101,32, - 97,32,39,108,101,118,101,108,39,32,111,102,32,50,41,46, - 10,10,32,32,32,32,114,26,0,0,0,78,114,141,0,0, - 0,114,154,0,0,0,41,9,114,229,0,0,0,114,240,0, - 0,0,218,9,112,97,114,116,105,116,105,111,110,114,208,0, - 0,0,114,18,0,0,0,114,105,0,0,0,114,8,0,0, - 0,114,10,0,0,0,114,234,0,0,0,41,9,114,20,0, - 0,0,114,239,0,0,0,218,6,108,111,99,97,108,115,114, - 235,0,0,0,114,210,0,0,0,114,110,0,0,0,90,8, - 103,108,111,98,97,108,115,95,114,209,0,0,0,90,7,99, - 117,116,95,111,102,102,115,9,0,0,0,32,32,32,32,32, - 32,32,32,32,114,5,0,0,0,218,10,95,95,105,109,112, - 111,114,116,95,95,93,4,0,0,115,30,0,0,0,8,11, - 10,1,16,2,8,1,12,1,4,1,8,3,18,1,4,1, - 4,1,26,4,30,3,10,1,12,1,4,2,114,17,0,0, - 0,114,243,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,115,38,0,0,0, - 116,0,160,1,124,0,161,1,125,1,124,1,100,0,117,0, - 114,15,116,2,100,1,124,0,23,0,131,1,130,1,116,3, - 124,1,131,1,83,0,41,2,78,122,25,110,111,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,32,110,97, - 109,101,100,32,41,4,114,175,0,0,0,114,183,0,0,0, - 114,88,0,0,0,114,173,0,0,0,41,2,114,20,0,0, - 0,114,109,0,0,0,115,2,0,0,0,32,32,114,5,0, - 0,0,218,18,95,98,117,105,108,116,105,110,95,102,114,111, - 109,95,110,97,109,101,130,4,0,0,115,8,0,0,0,10, - 1,8,1,12,1,8,1,114,17,0,0,0,114,244,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,115,166,0,0,0,124,1,97,0,124, - 0,97,1,116,2,116,1,131,1,125,2,116,1,106,3,160, - 4,161,0,68,0,93,36,92,2,125,3,125,4,116,5,124, - 4,124,2,131,2,114,49,124,3,116,1,106,6,118,0,114, - 30,116,7,125,5,110,9,116,0,160,8,124,3,161,1,114, - 38,116,9,125,5,110,1,113,13,116,10,124,4,124,5,131, - 2,125,6,116,11,124,6,124,4,131,2,1,0,113,13,116, - 1,106,3,116,12,25,0,125,7,100,1,68,0,93,23,125, - 8,124,8,116,1,106,3,118,1,114,69,116,13,124,8,131, - 1,125,9,110,5,116,1,106,3,124,8,25,0,125,9,116, - 14,124,7,124,8,124,9,131,3,1,0,113,57,100,2,83, - 0,41,3,122,250,83,101,116,117,112,32,105,109,112,111,114, - 116,108,105,98,32,98,121,32,105,109,112,111,114,116,105,110, - 103,32,110,101,101,100,101,100,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,115,32,97,110,100,32,105,110, - 106,101,99,116,105,110,103,32,116,104,101,109,10,32,32,32, - 32,105,110,116,111,32,116,104,101,32,103,108,111,98,97,108, - 32,110,97,109,101,115,112,97,99,101,46,10,10,32,32,32, - 32,65,115,32,115,121,115,32,105,115,32,110,101,101,100,101, - 100,32,102,111,114,32,115,121,115,46,109,111,100,117,108,101, - 115,32,97,99,99,101,115,115,32,97,110,100,32,95,105,109, - 112,32,105,115,32,110,101,101,100,101,100,32,116,111,32,108, - 111,97,100,32,98,117,105,108,116,45,105,110,10,32,32,32, - 32,109,111,100,117,108,101,115,44,32,116,104,111,115,101,32, - 116,119,111,32,109,111,100,117,108,101,115,32,109,117,115,116, - 32,98,101,32,101,120,112,108,105,99,105,116,108,121,32,112, - 97,115,115,101,100,32,105,110,46,10,10,32,32,32,32,41, - 3,114,27,0,0,0,114,101,0,0,0,114,72,0,0,0, - 78,41,15,114,65,0,0,0,114,18,0,0,0,114,3,0, - 0,0,114,105,0,0,0,218,5,105,116,101,109,115,114,216, - 0,0,0,114,87,0,0,0,114,175,0,0,0,114,98,0, - 0,0,114,193,0,0,0,114,155,0,0,0,114,161,0,0, - 0,114,8,0,0,0,114,244,0,0,0,114,11,0,0,0, - 41,10,218,10,115,121,115,95,109,111,100,117,108,101,218,11, - 95,105,109,112,95,109,111,100,117,108,101,90,11,109,111,100, - 117,108,101,95,116,121,112,101,114,20,0,0,0,114,110,0, - 0,0,114,122,0,0,0,114,109,0,0,0,90,11,115,101, - 108,102,95,109,111,100,117,108,101,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,115,10,0,0,0,32,32,32,32, - 32,32,32,32,32,32,114,5,0,0,0,218,6,95,115,101, - 116,117,112,137,4,0,0,115,40,0,0,0,4,9,4,1, - 8,3,18,1,10,1,10,1,6,1,10,1,6,1,2,2, - 10,1,10,1,2,128,10,3,8,1,10,1,10,1,10,2, - 14,1,4,251,114,17,0,0,0,114,248,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,115,38,0,0,0,116,0,124,0,124,1,131,2, - 1,0,116,1,106,2,160,3,116,4,161,1,1,0,116,1, - 106,2,160,3,116,5,161,1,1,0,100,1,83,0,41,2, - 122,48,73,110,115,116,97,108,108,32,105,109,112,111,114,116, - 101,114,115,32,102,111,114,32,98,117,105,108,116,105,110,32, - 97,110,100,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,115,78,41,6,114,248,0,0,0,114,18,0,0,0,114, - 214,0,0,0,114,132,0,0,0,114,175,0,0,0,114,193, - 0,0,0,41,2,114,246,0,0,0,114,247,0,0,0,115, - 2,0,0,0,32,32,114,5,0,0,0,218,8,95,105,110, - 115,116,97,108,108,172,4,0,0,115,6,0,0,0,10,2, - 12,2,16,1,114,17,0,0,0,114,249,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, - 0,0,0,115,32,0,0,0,100,1,100,2,108,0,125,0, - 124,0,97,1,124,0,160,2,116,3,106,4,116,5,25,0, - 161,1,1,0,100,2,83,0,41,3,122,57,73,110,115,116, - 97,108,108,32,105,109,112,111,114,116,101,114,115,32,116,104, - 97,116,32,114,101,113,117,105,114,101,32,101,120,116,101,114, - 110,97,108,32,102,105,108,101,115,121,115,116,101,109,32,97, - 99,99,101,115,115,114,26,0,0,0,78,41,6,218,26,95, - 102,114,111,122,101,110,95,105,109,112,111,114,116,108,105,98, - 95,101,120,116,101,114,110,97,108,114,139,0,0,0,114,249, - 0,0,0,114,18,0,0,0,114,105,0,0,0,114,8,0, - 0,0,41,1,114,250,0,0,0,115,1,0,0,0,32,114, - 5,0,0,0,218,27,95,105,110,115,116,97,108,108,95,101, - 120,116,101,114,110,97,108,95,105,109,112,111,114,116,101,114, - 115,180,4,0,0,115,6,0,0,0,8,3,4,1,20,1, - 114,17,0,0,0,114,251,0,0,0,114,190,0,0,0,114, - 0,0,0,0,114,25,0,0,0,41,4,78,78,114,23,0, - 0,0,114,26,0,0,0,41,54,114,9,0,0,0,114,6, - 0,0,0,114,27,0,0,0,114,101,0,0,0,114,72,0, - 0,0,114,139,0,0,0,114,16,0,0,0,114,21,0,0, - 0,114,67,0,0,0,114,38,0,0,0,114,48,0,0,0, - 114,22,0,0,0,114,24,0,0,0,114,56,0,0,0,114, - 58,0,0,0,114,61,0,0,0,114,73,0,0,0,114,75, - 0,0,0,114,84,0,0,0,114,95,0,0,0,114,100,0, - 0,0,114,111,0,0,0,114,124,0,0,0,114,125,0,0, - 0,114,104,0,0,0,114,155,0,0,0,114,161,0,0,0, - 114,165,0,0,0,114,119,0,0,0,114,106,0,0,0,114, - 172,0,0,0,114,173,0,0,0,114,107,0,0,0,114,175, - 0,0,0,114,193,0,0,0,114,200,0,0,0,114,211,0, - 0,0,114,213,0,0,0,114,215,0,0,0,114,221,0,0, - 0,90,15,95,69,82,82,95,77,83,71,95,80,82,69,70, - 73,88,114,223,0,0,0,114,226,0,0,0,218,6,111,98, - 106,101,99,116,114,227,0,0,0,114,228,0,0,0,114,229, - 0,0,0,114,234,0,0,0,114,240,0,0,0,114,243,0, - 0,0,114,244,0,0,0,114,248,0,0,0,114,249,0,0, - 0,114,251,0,0,0,114,23,0,0,0,114,17,0,0,0, - 114,5,0,0,0,218,8,60,109,111,100,117,108,101,62,1, - 0,0,0,115,104,0,0,0,4,0,8,22,4,9,4,1, - 4,1,4,3,8,3,8,8,4,8,4,2,16,3,14,4, - 14,77,14,21,8,16,8,37,8,17,14,11,8,8,8,11, - 8,12,8,19,14,26,16,101,10,26,14,45,8,72,8,17, - 8,17,8,30,8,36,8,45,14,15,14,80,14,85,8,13, - 8,9,10,10,8,47,4,16,8,1,8,2,6,32,8,3, - 10,16,14,15,8,37,10,27,8,37,8,7,8,35,12,8, - 114,17,0,0,0, + 174,0,0,0,124,4,100,1,107,2,114,9,116,0,124,0, + 131,1,125,5,110,18,124,1,100,2,117,1,114,15,124,1, + 110,1,105,0,125,6,116,1,124,6,131,1,125,7,116,0, + 124,0,124,7,124,4,131,3,125,5,124,3,115,74,124,4, + 100,1,107,2,114,42,116,0,124,0,160,2,100,3,161,1, + 100,1,25,0,131,1,83,0,124,0,115,46,124,5,83,0, + 116,3,124,0,131,1,116,3,124,0,160,2,100,3,161,1, + 100,1,25,0,131,1,24,0,125,8,116,4,106,5,124,5, + 106,6,100,2,116,3,124,5,106,6,131,1,124,8,24,0, + 133,2,25,0,25,0,83,0,116,7,124,5,100,4,131,2, + 114,85,116,8,124,5,124,3,116,0,131,3,83,0,124,5, + 83,0,41,5,97,215,1,0,0,73,109,112,111,114,116,32, + 97,32,109,111,100,117,108,101,46,10,10,32,32,32,32,84, + 104,101,32,39,103,108,111,98,97,108,115,39,32,97,114,103, + 117,109,101,110,116,32,105,115,32,117,115,101,100,32,116,111, + 32,105,110,102,101,114,32,119,104,101,114,101,32,116,104,101, + 32,105,109,112,111,114,116,32,105,115,32,111,99,99,117,114, + 114,105,110,103,32,102,114,111,109,10,32,32,32,32,116,111, + 32,104,97,110,100,108,101,32,114,101,108,97,116,105,118,101, + 32,105,109,112,111,114,116,115,46,32,84,104,101,32,39,108, + 111,99,97,108,115,39,32,97,114,103,117,109,101,110,116,32, + 105,115,32,105,103,110,111,114,101,100,46,32,84,104,101,10, + 32,32,32,32,39,102,114,111,109,108,105,115,116,39,32,97, + 114,103,117,109,101,110,116,32,115,112,101,99,105,102,105,101, + 115,32,119,104,97,116,32,115,104,111,117,108,100,32,101,120, + 105,115,116,32,97,115,32,97,116,116,114,105,98,117,116,101, + 115,32,111,110,32,116,104,101,32,109,111,100,117,108,101,10, + 32,32,32,32,98,101,105,110,103,32,105,109,112,111,114,116, + 101,100,32,40,101,46,103,46,32,96,96,102,114,111,109,32, + 109,111,100,117,108,101,32,105,109,112,111,114,116,32,60,102, + 114,111,109,108,105,115,116,62,96,96,41,46,32,32,84,104, + 101,32,39,108,101,118,101,108,39,10,32,32,32,32,97,114, + 103,117,109,101,110,116,32,114,101,112,114,101,115,101,110,116, + 115,32,116,104,101,32,112,97,99,107,97,103,101,32,108,111, + 99,97,116,105,111,110,32,116,111,32,105,109,112,111,114,116, + 32,102,114,111,109,32,105,110,32,97,32,114,101,108,97,116, + 105,118,101,10,32,32,32,32,105,109,112,111,114,116,32,40, + 101,46,103,46,32,96,96,102,114,111,109,32,46,46,112,107, + 103,32,105,109,112,111,114,116,32,109,111,100,96,96,32,119, + 111,117,108,100,32,104,97,118,101,32,97,32,39,108,101,118, + 101,108,39,32,111,102,32,50,41,46,10,10,32,32,32,32, + 114,26,0,0,0,78,114,141,0,0,0,114,154,0,0,0, + 41,9,114,229,0,0,0,114,240,0,0,0,218,9,112,97, + 114,116,105,116,105,111,110,114,208,0,0,0,114,18,0,0, + 0,114,105,0,0,0,114,8,0,0,0,114,10,0,0,0, + 114,234,0,0,0,41,9,114,20,0,0,0,114,239,0,0, + 0,218,6,108,111,99,97,108,115,114,235,0,0,0,114,210, + 0,0,0,114,110,0,0,0,90,8,103,108,111,98,97,108, + 115,95,114,209,0,0,0,90,7,99,117,116,95,111,102,102, + 115,9,0,0,0,32,32,32,32,32,32,32,32,32,114,5, + 0,0,0,218,10,95,95,105,109,112,111,114,116,95,95,93, + 4,0,0,115,30,0,0,0,8,11,10,1,16,2,8,1, + 12,1,4,1,8,3,18,1,4,1,4,1,26,4,30,3, + 10,1,12,1,4,2,114,17,0,0,0,114,243,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,3,0,0,0,115,38,0,0,0,116,0,160,1,124,0, + 161,1,125,1,124,1,100,0,117,0,114,15,116,2,100,1, + 124,0,23,0,131,1,130,1,116,3,124,1,131,1,83,0, + 41,2,78,122,25,110,111,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,32,110,97,109,101,100,32,41,4, + 114,175,0,0,0,114,183,0,0,0,114,88,0,0,0,114, + 173,0,0,0,41,2,114,20,0,0,0,114,109,0,0,0, + 115,2,0,0,0,32,32,114,5,0,0,0,218,18,95,98, + 117,105,108,116,105,110,95,102,114,111,109,95,110,97,109,101, + 130,4,0,0,115,8,0,0,0,10,1,8,1,12,1,8, + 1,114,17,0,0,0,114,244,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, + 115,166,0,0,0,124,1,97,0,124,0,97,1,116,2,116, + 1,131,1,125,2,116,1,106,3,160,4,161,0,68,0,93, + 36,92,2,125,3,125,4,116,5,124,4,124,2,131,2,114, + 49,124,3,116,1,106,6,118,0,114,30,116,7,125,5,110, + 9,116,0,160,8,124,3,161,1,114,38,116,9,125,5,110, + 1,113,13,116,10,124,4,124,5,131,2,125,6,116,11,124, + 6,124,4,131,2,1,0,113,13,116,1,106,3,116,12,25, + 0,125,7,100,1,68,0,93,23,125,8,124,8,116,1,106, + 3,118,1,114,69,116,13,124,8,131,1,125,9,110,5,116, + 1,106,3,124,8,25,0,125,9,116,14,124,7,124,8,124, + 9,131,3,1,0,113,57,100,2,83,0,41,3,122,250,83, + 101,116,117,112,32,105,109,112,111,114,116,108,105,98,32,98, + 121,32,105,109,112,111,114,116,105,110,103,32,110,101,101,100, + 101,100,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,115,32,97,110,100,32,105,110,106,101,99,116,105,110, + 103,32,116,104,101,109,10,32,32,32,32,105,110,116,111,32, + 116,104,101,32,103,108,111,98,97,108,32,110,97,109,101,115, + 112,97,99,101,46,10,10,32,32,32,32,65,115,32,115,121, + 115,32,105,115,32,110,101,101,100,101,100,32,102,111,114,32, + 115,121,115,46,109,111,100,117,108,101,115,32,97,99,99,101, + 115,115,32,97,110,100,32,95,105,109,112,32,105,115,32,110, + 101,101,100,101,100,32,116,111,32,108,111,97,100,32,98,117, + 105,108,116,45,105,110,10,32,32,32,32,109,111,100,117,108, + 101,115,44,32,116,104,111,115,101,32,116,119,111,32,109,111, + 100,117,108,101,115,32,109,117,115,116,32,98,101,32,101,120, + 112,108,105,99,105,116,108,121,32,112,97,115,115,101,100,32, + 105,110,46,10,10,32,32,32,32,41,3,114,27,0,0,0, + 114,101,0,0,0,114,72,0,0,0,78,41,15,114,65,0, + 0,0,114,18,0,0,0,114,3,0,0,0,114,105,0,0, + 0,218,5,105,116,101,109,115,114,216,0,0,0,114,87,0, + 0,0,114,175,0,0,0,114,98,0,0,0,114,193,0,0, + 0,114,155,0,0,0,114,161,0,0,0,114,8,0,0,0, + 114,244,0,0,0,114,11,0,0,0,41,10,218,10,115,121, + 115,95,109,111,100,117,108,101,218,11,95,105,109,112,95,109, + 111,100,117,108,101,90,11,109,111,100,117,108,101,95,116,121, + 112,101,114,20,0,0,0,114,110,0,0,0,114,122,0,0, + 0,114,109,0,0,0,90,11,115,101,108,102,95,109,111,100, + 117,108,101,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,115,10,0,0,0,32,32,32,32,32,32,32,32,32,32, + 114,5,0,0,0,218,6,95,115,101,116,117,112,137,4,0, + 0,115,40,0,0,0,4,9,4,1,8,3,18,1,10,1, + 10,1,6,1,10,1,6,1,2,2,10,1,10,1,2,128, + 10,3,8,1,10,1,10,1,10,2,14,1,4,251,114,17, + 0,0,0,114,248,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,3,0,0,0,115,38,0, + 0,0,116,0,124,0,124,1,131,2,1,0,116,1,106,2, + 160,3,116,4,161,1,1,0,116,1,106,2,160,3,116,5, + 161,1,1,0,100,1,83,0,41,2,122,48,73,110,115,116, + 97,108,108,32,105,109,112,111,114,116,101,114,115,32,102,111, + 114,32,98,117,105,108,116,105,110,32,97,110,100,32,102,114, + 111,122,101,110,32,109,111,100,117,108,101,115,78,41,6,114, + 248,0,0,0,114,18,0,0,0,114,214,0,0,0,114,132, + 0,0,0,114,175,0,0,0,114,193,0,0,0,41,2,114, + 246,0,0,0,114,247,0,0,0,115,2,0,0,0,32,32, + 114,5,0,0,0,218,8,95,105,110,115,116,97,108,108,172, + 4,0,0,115,6,0,0,0,10,2,12,2,16,1,114,17, + 0,0,0,114,249,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,32,0, + 0,0,100,1,100,2,108,0,125,0,124,0,97,1,124,0, + 160,2,116,3,106,4,116,5,25,0,161,1,1,0,100,2, + 83,0,41,3,122,57,73,110,115,116,97,108,108,32,105,109, + 112,111,114,116,101,114,115,32,116,104,97,116,32,114,101,113, + 117,105,114,101,32,101,120,116,101,114,110,97,108,32,102,105, + 108,101,115,121,115,116,101,109,32,97,99,99,101,115,115,114, + 26,0,0,0,78,41,6,218,26,95,102,114,111,122,101,110, + 95,105,109,112,111,114,116,108,105,98,95,101,120,116,101,114, + 110,97,108,114,139,0,0,0,114,249,0,0,0,114,18,0, + 0,0,114,105,0,0,0,114,8,0,0,0,41,1,114,250, + 0,0,0,115,1,0,0,0,32,114,5,0,0,0,218,27, + 95,105,110,115,116,97,108,108,95,101,120,116,101,114,110,97, + 108,95,105,109,112,111,114,116,101,114,115,180,4,0,0,115, + 6,0,0,0,8,3,4,1,20,1,114,17,0,0,0,114, + 251,0,0,0,114,190,0,0,0,114,0,0,0,0,114,25, + 0,0,0,41,4,78,78,114,23,0,0,0,114,26,0,0, + 0,41,54,114,9,0,0,0,114,6,0,0,0,114,27,0, + 0,0,114,101,0,0,0,114,72,0,0,0,114,139,0,0, + 0,114,16,0,0,0,114,21,0,0,0,114,67,0,0,0, + 114,38,0,0,0,114,48,0,0,0,114,22,0,0,0,114, + 24,0,0,0,114,56,0,0,0,114,58,0,0,0,114,61, + 0,0,0,114,73,0,0,0,114,75,0,0,0,114,84,0, + 0,0,114,95,0,0,0,114,100,0,0,0,114,111,0,0, + 0,114,124,0,0,0,114,125,0,0,0,114,104,0,0,0, + 114,155,0,0,0,114,161,0,0,0,114,165,0,0,0,114, + 119,0,0,0,114,106,0,0,0,114,172,0,0,0,114,173, + 0,0,0,114,107,0,0,0,114,175,0,0,0,114,193,0, + 0,0,114,200,0,0,0,114,211,0,0,0,114,213,0,0, + 0,114,215,0,0,0,114,221,0,0,0,90,15,95,69,82, + 82,95,77,83,71,95,80,82,69,70,73,88,114,223,0,0, + 0,114,226,0,0,0,218,6,111,98,106,101,99,116,114,227, + 0,0,0,114,228,0,0,0,114,229,0,0,0,114,234,0, + 0,0,114,240,0,0,0,114,243,0,0,0,114,244,0,0, + 0,114,248,0,0,0,114,249,0,0,0,114,251,0,0,0, + 114,23,0,0,0,114,17,0,0,0,114,5,0,0,0,218, + 8,60,109,111,100,117,108,101,62,1,0,0,0,115,104,0, + 0,0,4,0,8,22,4,9,4,1,4,1,4,3,8,3, + 8,8,4,8,4,2,16,3,14,4,14,77,14,21,8,16, + 8,37,8,17,14,11,8,8,8,11,8,12,8,19,14,26, + 16,101,10,26,14,45,8,72,8,17,8,17,8,30,8,36, + 8,45,14,15,14,80,14,85,8,13,8,9,10,10,8,47, + 4,16,8,1,8,2,6,32,8,3,10,16,14,15,8,37, + 10,27,8,37,8,7,8,35,12,8,114,17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 30f731a756f1b..c6da76f39da09 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -354,2456 +354,2456 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,116,109,112,90,2,102,100,218,4,102,105,108,101,115,6, 0,0,0,32,32,32,32,32,32,114,7,0,0,0,218,13, 95,119,114,105,116,101,95,97,116,111,109,105,99,185,0,0, - 0,115,44,0,0,0,16,5,6,1,22,1,4,255,2,2, - 14,3,10,1,12,255,22,128,16,2,2,128,12,1,2,1, - 10,1,2,3,2,128,12,254,2,1,2,1,4,128,2,254, - 2,253,115,69,0,0,0,153,6,62,0,159,6,43,3,165, - 6,62,0,171,4,47,11,175,1,62,0,176,3,47,11,179, - 9,62,0,190,7,65,22,7,193,6,5,65,12,6,193,11, - 1,65,22,7,193,12,7,65,21,13,193,19,3,65,22,7, - 193,23,1,65,21,13,193,24,1,65,22,7,114,95,0,0, - 0,105,129,13,0,0,114,45,0,0,0,114,33,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,119,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,5,0,0,0,3,0,0,0, - 115,80,1,0,0,124,1,100,1,117,1,114,26,116,0,160, - 1,100,2,116,2,161,2,1,0,124,2,100,1,117,1,114, - 20,100,3,125,3,116,3,124,3,131,1,130,1,124,1,114, - 24,100,4,110,1,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,57,116, - 11,100,7,131,1,130,1,100,4,160,12,124,6,114,63,124, - 6,110,1,124,8,124,7,124,9,103,3,161,1,125,10,124, - 2,100,1,117,0,114,86,116,8,106,13,106,14,100,8,107, - 2,114,82,100,4,125,2,110,4,116,8,106,13,106,14,125, - 2,116,15,124,2,131,1,125,2,124,2,100,4,107,3,114, - 112,124,2,160,16,161,0,115,105,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,114,162,116,22,124,4,131, - 1,115,134,116,23,116,4,160,24,161,0,124,4,131,2,125, - 4,124,4,100,5,25,0,100,11,107,2,114,152,124,4,100, - 8,25,0,116,25,118,1,114,152,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,10,0,0,0,114,3,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,11,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,19, - 0,0,0,218,6,102,115,112,97,116,104,114,73,0,0,0, - 218,10,114,112,97,114,116,105,116,105,111,110,114,16,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,17,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, - 89,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,86,0, - 0,0,114,67,0,0,0,114,82,0,0,0,114,51,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,96,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,6,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,115,12,0,0,0,32,32,32,32,32,32,32, - 32,32,32,32,32,114,7,0,0,0,218,17,99,97,99,104, - 101,95,102,114,111,109,95,115,111,117,114,99,101,132,1,0, - 0,115,72,0,0,0,8,18,6,1,2,1,4,255,8,2, - 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,1,8,2,8,1,8,1, - 8,1,14,1,14,1,12,1,10,1,8,9,14,1,24,5, - 12,1,2,4,4,1,8,1,2,1,4,253,12,5,114,9, - 0,0,0,114,121,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,3,0,0,0,115,40,1, - 0,0,116,0,106,1,106,2,100,1,117,0,114,10,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,51,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,51,124,1,116,12,124,4,131,1,100,1,133,2, - 25,0,125,1,100,4,125,3,124,3,115,72,116,6,124,1, - 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,72, - 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,88,116,14,100,8,124,2,155,2,157,2,131,1, - 130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16,0,0, - 0,114,105,0,0,0,114,106,0,0,0,114,107,0,0,0, - 114,19,0,0,0,114,103,0,0,0,114,73,0,0,0,114, - 114,0,0,0,114,50,0,0,0,114,51,0,0,0,114,27, - 0,0,0,114,59,0,0,0,114,4,0,0,0,114,116,0, - 0,0,114,111,0,0,0,218,5,99,111,117,110,116,218,6, - 114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,115,10,0,0,0,32, - 32,32,32,32,32,32,32,32,32,114,7,0,0,0,218,17, - 115,111,117,114,99,101,95,102,114,111,109,95,99,97,99,104, - 101,203,1,0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1,14,1, - 8,1,16,1,10,1,4,1,2,1,8,255,16,2,8,1, - 16,1,14,2,18,1,114,9,0,0,0,114,128,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,3,0,0,0,115,126,0,0,0,116,0,124,0,131,1, - 100,1,107,2,114,8,100,2,83,0,124,0,160,1,100,3, - 161,1,92,3,125,1,125,2,125,3,124,1,114,28,124,3, - 160,2,161,0,100,4,100,5,133,2,25,0,100,6,107,3, - 114,30,124,0,83,0,9,0,116,3,124,0,131,1,125,4, - 110,18,35,0,4,0,116,4,116,5,102,2,121,62,1,0, - 1,0,1,0,124,0,100,2,100,5,133,2,25,0,125,4, - 89,0,110,1,37,0,116,6,124,4,131,1,114,60,124,4, - 83,0,124,0,83,0,119,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,97, - 0,0,0,233,253,255,255,255,233,255,255,255,255,90,2,112, - 121,41,7,114,4,0,0,0,114,104,0,0,0,218,5,108, - 111,119,101,114,114,128,0,0,0,114,107,0,0,0,114,111, - 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,119,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,115,5,0,0,0,32,32, - 32,32,32,114,7,0,0,0,218,15,95,103,101,116,95,115, - 111,117,114,99,101,102,105,108,101,243,1,0,0,115,26,0, - 0,0,12,7,4,1,16,1,24,1,4,1,2,1,10,1, - 2,128,16,1,16,1,2,128,16,1,2,254,115,12,0,0, - 0,159,4,36,0,164,15,53,7,190,1,53,7,114,135,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,3,0,0,0,115,70,0,0,0,124,0,160,0, - 116,1,116,2,131,1,161,1,114,23,9,0,116,3,124,0, - 131,1,83,0,35,0,4,0,116,4,121,34,1,0,1,0, - 1,0,89,0,100,0,83,0,37,0,124,0,160,0,116,1, - 116,5,131,1,161,1,114,32,124,0,83,0,100,0,83,0, - 119,0,114,69,0,0,0,41,6,114,58,0,0,0,218,5, - 116,117,112,108,101,114,127,0,0,0,114,121,0,0,0,114, - 107,0,0,0,114,113,0,0,0,41,1,114,120,0,0,0, - 115,1,0,0,0,32,114,7,0,0,0,218,11,95,103,101, - 116,95,99,97,99,104,101,100,6,2,0,0,115,22,0,0, - 0,14,1,2,1,8,1,2,128,12,1,6,1,2,128,14, - 1,4,1,4,2,2,251,115,12,0,0,0,136,3,12,0, - 140,7,22,7,162,1,22,7,114,137,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,3,0, - 0,0,115,52,0,0,0,9,0,116,0,124,0,131,1,106, - 1,125,1,110,12,35,0,4,0,116,2,121,25,1,0,1, - 0,1,0,100,1,125,1,89,0,110,1,37,0,124,1,100, - 2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,115,2,0,0,0,32, - 32,114,7,0,0,0,218,10,95,99,97,108,99,95,109,111, - 100,101,18,2,0,0,115,18,0,0,0,2,2,12,1,2, - 128,12,1,8,1,2,128,8,3,4,1,2,251,115,12,0, - 0,0,129,5,7,0,135,9,18,7,153,1,18,7,114,139, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,115,54,0,0,0,135,0,100, - 6,136,0,102,1,100,2,100,3,132,9,125,1,116,0,100, - 1,117,1,114,16,116,0,106,1,125,2,110,4,100,4,100, - 5,132,0,125,2,124,2,124,1,137,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,5,0,0,0,31,0,0,0,115,76,0,0,0,124,1, - 100,0,117,0,114,8,124,0,106,0,125,1,110,18,124,0, - 106,0,124,1,107,3,114,26,116,1,100,1,124,0,106,0, - 155,1,100,2,124,1,155,1,157,4,124,1,100,3,141,2, - 130,1,137,4,124,0,124,1,103,2,124,2,162,1,82,0, - 105,0,124,3,164,1,142,1,83,0,41,4,78,122,11,108, - 111,97,100,101,114,32,102,111,114,32,122,15,32,99,97,110, - 110,111,116,32,104,97,110,100,108,101,32,169,1,218,4,110, - 97,109,101,41,2,114,141,0,0,0,218,11,73,109,112,111, - 114,116,69,114,114,111,114,41,5,218,4,115,101,108,102,114, - 141,0,0,0,218,4,97,114,103,115,218,6,107,119,97,114, - 103,115,218,6,109,101,116,104,111,100,115,5,0,0,0,32, - 32,32,32,128,114,7,0,0,0,218,19,95,99,104,101,99, - 107,95,110,97,109,101,95,119,114,97,112,112,101,114,38,2, - 0,0,115,18,0,0,0,8,1,8,1,10,1,4,1,12, - 1,2,255,2,1,6,255,24,2,114,9,0,0,0,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,7,0,0,0,19,0,0,0,115,56,0, - 0,0,100,1,68,0,93,16,125,2,116,0,124,1,124,2, - 131,2,114,18,116,1,124,0,124,2,116,2,124,1,124,2, - 131,2,131,3,1,0,113,2,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,85,0,0,0,115,3,0,0, - 0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,112, - 51,2,0,0,115,10,0,0,0,8,1,10,1,18,1,2, - 128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218,10,95,98,111, - 111,116,115,116,114,97,112,114,157,0,0,0,41,3,114,146, - 0,0,0,114,147,0,0,0,114,157,0,0,0,115,3,0, - 0,0,96,32,32,114,7,0,0,0,218,11,95,99,104,101, - 99,107,95,110,97,109,101,30,2,0,0,115,14,0,0,0, - 2,128,14,8,8,10,8,1,8,2,10,6,4,1,114,9, - 0,0,0,114,159,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,3,0,0,0,115,72,0, - 0,0,116,0,160,1,100,1,116,2,161,2,1,0,124,0, - 160,3,124,1,161,1,92,2,125,2,125,3,124,2,100,2, - 117,0,114,34,116,4,124,3,131,1,114,34,100,3,125,4, - 116,0,160,1,124,4,160,5,124,3,100,4,25,0,161,1, - 116,6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110,100,95, - 109,111,100,117,108,101,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, - 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, - 115,116,101,97,100,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,7,114,99,0,0,0, - 114,100,0,0,0,114,101,0,0,0,218,11,102,105,110,100, - 95,108,111,97,100,101,114,114,4,0,0,0,114,89,0,0, - 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, - 41,5,114,143,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,115,5,0,0,0,32,32,32, - 32,32,114,7,0,0,0,218,17,95,102,105,110,100,95,109, - 111,100,117,108,101,95,115,104,105,109,61,2,0,0,115,16, - 0,0,0,6,7,2,2,4,254,14,6,16,1,4,1,22, - 1,4,1,114,9,0,0,0,114,166,0,0,0,99,3,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,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,32,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,53,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,81,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,32,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,142,0,0,0,114,4,0,0,0,218,8,69,79, - 70,69,114,114,111,114,114,43,0,0,0,41,6,114,42,0, - 0,0,114,141,0,0,0,218,11,101,120,99,95,100,101,116, - 97,105,108,115,90,5,109,97,103,105,99,114,117,0,0,0, - 114,17,0,0,0,115,6,0,0,0,32,32,32,32,32,32, - 114,7,0,0,0,218,13,95,99,108,97,115,115,105,102,121, - 95,112,121,99,81,2,0,0,115,28,0,0,0,12,16,8, - 1,16,1,12,1,16,1,12,1,10,1,12,1,8,1,16, - 1,8,2,16,1,16,1,4,1,114,9,0,0,0,114,175, - 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25,0,131, - 1,124,2,100,3,64,0,107,3,114,58,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,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, + 0,115,46,0,0,0,16,5,6,1,22,1,4,255,2,2, + 14,3,10,1,20,255,2,128,12,0,16,2,2,128,12,1, + 2,1,10,1,2,3,2,128,12,254,2,1,2,1,4,128, + 2,254,2,253,115,69,0,0,0,153,6,62,0,159,6,43, + 3,165,6,62,0,171,4,47,11,175,1,62,0,176,3,47, + 11,179,9,62,0,190,7,65,22,7,193,6,5,65,12,6, + 193,11,1,65,22,7,193,12,7,65,21,13,193,19,3,65, + 22,7,193,23,1,65,21,13,193,24,1,65,22,7,114,95, + 0,0,0,105,129,13,0,0,114,45,0,0,0,114,33,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,119,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,5,0,0,0,3,0, + 0,0,115,80,1,0,0,124,1,100,1,117,1,114,26,116, + 0,160,1,100,2,116,2,161,2,1,0,124,2,100,1,117, + 1,114,20,100,3,125,3,116,3,124,3,131,1,130,1,124, + 1,114,24,100,4,110,1,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, + 57,116,11,100,7,131,1,130,1,100,4,160,12,124,6,114, + 63,124,6,110,1,124,8,124,7,124,9,103,3,161,1,125, + 10,124,2,100,1,117,0,114,86,116,8,106,13,106,14,100, + 8,107,2,114,82,100,4,125,2,110,4,116,8,106,13,106, + 14,125,2,116,15,124,2,131,1,125,2,124,2,100,4,107, + 3,114,112,124,2,160,16,161,0,115,105,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,114,162,116,22,124, + 4,131,1,115,134,116,23,116,4,160,24,161,0,124,4,131, + 2,125,4,124,4,100,5,25,0,100,11,107,2,114,152,124, + 4,100,8,25,0,116,25,118,1,114,152,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,10,0,0,0,114,3, + 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,11,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,19,0,0,0,218,6,102,115,112,97,116,104,114,73,0, + 0,0,218,10,114,112,97,114,116,105,116,105,111,110,114,16, + 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,17,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,89,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, + 86,0,0,0,114,67,0,0,0,114,82,0,0,0,114,51, + 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,96,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,6,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,115,12,0,0,0,32,32,32,32,32, + 32,32,32,32,32,32,32,114,7,0,0,0,218,17,99,97, + 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,132, + 1,0,0,115,72,0,0,0,8,18,6,1,2,1,4,255, + 8,2,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,1,8,2,8,1, + 8,1,8,1,14,1,14,1,12,1,10,1,8,9,14,1, + 24,5,12,1,2,4,4,1,8,1,2,1,4,253,12,5, + 114,9,0,0,0,114,121,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, + 40,1,0,0,116,0,106,1,106,2,100,1,117,0,114,10, + 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,51,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,51,124,1,116,12,124,4,131,1,100,1, + 133,2,25,0,125,1,100,4,125,3,124,3,115,72,116,6, + 124,1,131,1,92,2,125,1,125,5,124,5,116,13,107,3, + 114,72,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,88,116,14,100,8,124,2,155,2,157,2, + 131,1,130,1,124,6,100,9,107,2,114,132,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,112,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,115,132,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,98,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,97,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,122,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,16, + 0,0,0,114,105,0,0,0,114,106,0,0,0,114,107,0, + 0,0,114,19,0,0,0,114,103,0,0,0,114,73,0,0, + 0,114,114,0,0,0,114,50,0,0,0,114,51,0,0,0, + 114,27,0,0,0,114,59,0,0,0,114,4,0,0,0,114, + 116,0,0,0,114,111,0,0,0,218,5,99,111,117,110,116, + 218,6,114,115,112,108,105,116,114,112,0,0,0,114,110,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,118,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,96,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,115,10,0,0, + 0,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, + 218,17,115,111,117,114,99,101,95,102,114,111,109,95,99,97, + 99,104,101,203,1,0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1, + 14,1,8,1,16,1,10,1,4,1,2,1,8,255,16,2, + 8,1,16,1,14,2,18,1,114,9,0,0,0,114,128,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,3,0,0,0,115,126,0,0,0,116,0,124,0, + 131,1,100,1,107,2,114,8,100,2,83,0,124,0,160,1, + 100,3,161,1,92,3,125,1,125,2,125,3,124,1,114,28, + 124,3,160,2,161,0,100,4,100,5,133,2,25,0,100,6, + 107,3,114,30,124,0,83,0,9,0,116,3,124,0,131,1, + 125,4,110,18,35,0,4,0,116,4,116,5,102,2,121,62, + 1,0,1,0,1,0,124,0,100,2,100,5,133,2,25,0, + 125,4,89,0,110,1,37,0,116,6,124,4,131,1,114,60, + 124,4,83,0,124,0,83,0,119,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,97,0,0,0,233,253,255,255,255,233,255,255,255,255,90, + 2,112,121,41,7,114,4,0,0,0,114,104,0,0,0,218, + 5,108,111,119,101,114,114,128,0,0,0,114,107,0,0,0, + 114,111,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,119,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,115,5,0,0,0, + 32,32,32,32,32,114,7,0,0,0,218,15,95,103,101,116, + 95,115,111,117,114,99,101,102,105,108,101,243,1,0,0,115, + 26,0,0,0,12,7,4,1,16,1,24,1,4,1,2,1, + 10,1,2,128,16,1,16,1,2,128,16,1,2,254,115,12, + 0,0,0,159,4,36,0,164,15,53,7,190,1,53,7,114, + 135,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,3,0,0,0,115,70,0,0,0,124,0, + 160,0,116,1,116,2,131,1,161,1,114,23,9,0,116,3, + 124,0,131,1,83,0,35,0,4,0,116,4,121,34,1,0, + 1,0,1,0,89,0,100,0,83,0,37,0,124,0,160,0, + 116,1,116,5,131,1,161,1,114,32,124,0,83,0,100,0, + 83,0,119,0,114,69,0,0,0,41,6,114,58,0,0,0, + 218,5,116,117,112,108,101,114,127,0,0,0,114,121,0,0, + 0,114,107,0,0,0,114,113,0,0,0,41,1,114,120,0, + 0,0,115,1,0,0,0,32,114,7,0,0,0,218,11,95, + 103,101,116,95,99,97,99,104,101,100,6,2,0,0,115,22, + 0,0,0,14,1,2,1,8,1,2,128,12,1,6,1,2, + 128,14,1,4,1,4,2,2,251,115,12,0,0,0,136,3, + 12,0,140,7,22,7,162,1,22,7,114,137,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 3,0,0,0,115,52,0,0,0,9,0,116,0,124,0,131, + 1,106,1,125,1,110,12,35,0,4,0,116,2,121,25,1, + 0,1,0,1,0,100,1,125,1,89,0,110,1,37,0,124, + 1,100,2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,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,115,2,0,0, + 0,32,32,114,7,0,0,0,218,10,95,99,97,108,99,95, + 109,111,100,101,18,2,0,0,115,18,0,0,0,2,2,12, + 1,2,128,12,1,8,1,2,128,8,3,4,1,2,251,115, + 12,0,0,0,129,5,7,0,135,9,18,7,153,1,18,7, + 114,139,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,115,54,0,0,0,135, + 0,100,6,136,0,102,1,100,2,100,3,132,9,125,1,116, + 0,100,1,117,1,114,16,116,0,106,1,125,2,110,4,100, + 4,100,5,132,0,125,2,124,2,124,1,137,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,5,0,0,0,31,0,0,0,115,76,0,0,0, + 124,1,100,0,117,0,114,8,124,0,106,0,125,1,110,18, + 124,0,106,0,124,1,107,3,114,26,116,1,100,1,124,0, + 106,0,155,1,100,2,124,1,155,1,157,4,124,1,100,3, + 141,2,130,1,137,4,124,0,124,1,103,2,124,2,162,1, + 82,0,105,0,124,3,164,1,142,1,83,0,41,4,78,122, + 11,108,111,97,100,101,114,32,102,111,114,32,122,15,32,99, + 97,110,110,111,116,32,104,97,110,100,108,101,32,169,1,218, + 4,110,97,109,101,41,2,114,141,0,0,0,218,11,73,109, + 112,111,114,116,69,114,114,111,114,41,5,218,4,115,101,108, + 102,114,141,0,0,0,218,4,97,114,103,115,218,6,107,119, + 97,114,103,115,218,6,109,101,116,104,111,100,115,5,0,0, + 0,32,32,32,32,128,114,7,0,0,0,218,19,95,99,104, + 101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,114, + 38,2,0,0,115,18,0,0,0,8,1,8,1,10,1,4, + 1,12,1,2,255,2,1,6,255,24,2,114,9,0,0,0, + 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,7,0,0,0,19,0,0,0,115, + 56,0,0,0,100,1,68,0,93,16,125,2,116,0,124,1, + 124,2,131,2,114,18,116,1,124,0,124,2,116,2,124,1, + 124,2,131,2,131,3,1,0,113,2,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,85,0,0,0,115,3, + 0,0,0,32,32,32,114,7,0,0,0,218,5,95,119,114, + 97,112,51,2,0,0,115,10,0,0,0,8,1,10,1,18, + 1,2,128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218,10,95, + 98,111,111,116,115,116,114,97,112,114,157,0,0,0,41,3, + 114,146,0,0,0,114,147,0,0,0,114,157,0,0,0,115, + 3,0,0,0,96,32,32,114,7,0,0,0,218,11,95,99, + 104,101,99,107,95,110,97,109,101,30,2,0,0,115,14,0, + 0,0,2,128,14,8,8,10,8,1,8,2,10,6,4,1, + 114,9,0,0,0,114,159,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,115, + 72,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 124,0,160,3,124,1,161,1,92,2,125,2,125,3,124,2, + 100,2,117,0,114,34,116,4,124,3,131,1,114,34,100,3, + 125,4,116,0,160,1,124,4,160,5,124,3,100,4,25,0, + 161,1,116,6,161,2,1,0,124,2,83,0,41,5,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,122,90,102,105,110, + 100,95,109,111,100,117,108,101,40,41,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,32,97,110,100,32,115,108,97, + 116,101,100,32,102,111,114,32,114,101,109,111,118,97,108,32, + 105,110,32,80,121,116,104,111,110,32,51,46,49,50,59,32, + 117,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, + 105,110,115,116,101,97,100,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,7,114,99,0, + 0,0,114,100,0,0,0,114,101,0,0,0,218,11,102,105, + 110,100,95,108,111,97,100,101,114,114,4,0,0,0,114,89, + 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, + 110,103,41,5,114,143,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,115,5,0,0,0,32, + 32,32,32,32,114,7,0,0,0,218,17,95,102,105,110,100, + 95,109,111,100,117,108,101,95,115,104,105,109,61,2,0,0, + 115,16,0,0,0,6,7,2,2,4,254,14,6,16,1,4, + 1,22,1,4,1,114,9,0,0,0,114,166,0,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 3,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,32,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,53,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,81,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,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,169,0,0,0,233,12,0,0, - 0,114,31,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,167, - 0,0,0,78,114,168,0,0,0,41,4,114,43,0,0,0, - 114,158,0,0,0,114,172,0,0,0,114,142,0,0,0,41, - 6,114,42,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,141,0,0,0,114,174,0,0,0,114,117,0,0,0, - 115,6,0,0,0,32,32,32,32,32,32,114,7,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,114,2,0,0,115,18,0, - 0,0,24,19,10,1,12,1,16,1,8,1,22,1,2,255, - 22,2,8,254,114,9,0,0,0,114,179,0,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, - 0,0,0,115,42,0,0,0,124,0,100,1,100,2,133,2, - 25,0,124,1,107,3,114,19,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,169,0,0, - 0,114,168,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,142,0,0,0,41,4, - 114,42,0,0,0,218,11,115,111,117,114,99,101,95,104,97, - 115,104,114,141,0,0,0,114,174,0,0,0,115,4,0,0, - 0,32,32,32,32,114,7,0,0,0,218,18,95,118,97,108, - 105,100,97,116,101,95,104,97,115,104,95,112,121,99,142,2, - 0,0,115,14,0,0,0,16,17,2,1,8,1,4,255,2, - 2,6,254,4,255,114,9,0,0,0,114,181,0,0,0,99, - 4,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 3,0,0,0,115,76,0,0,0,116,0,160,1,124,0,161, - 1,125,4,116,2,124,4,116,3,131,2,114,28,116,4,160, - 5,100,1,124,2,161,2,1,0,124,3,100,2,117,1,114, - 26,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,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, - 141,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,172,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,142,0,0,0,114,89,0,0,0,41, - 5,114,42,0,0,0,114,141,0,0,0,114,132,0,0,0, - 114,134,0,0,0,218,4,99,111,100,101,115,5,0,0,0, - 32,32,32,32,32,114,7,0,0,0,218,17,95,99,111,109, - 112,105,108,101,95,98,121,116,101,99,111,100,101,166,2,0, - 0,115,18,0,0,0,10,2,10,1,12,1,8,1,12,1, - 4,1,10,2,4,1,6,255,114,9,0,0,0,114,188,0, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,3,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,3,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,78,41,6,218,9,98,121,116,101,97, - 114,114,97,121,114,171,0,0,0,218,6,101,120,116,101,110, - 100,114,37,0,0,0,114,183,0,0,0,218,5,100,117,109, - 112,115,41,4,114,187,0,0,0,218,5,109,116,105,109,101, - 114,178,0,0,0,114,42,0,0,0,115,4,0,0,0,32, - 32,32,32,114,7,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, - 179,2,0,0,115,12,0,0,0,8,2,14,1,14,1,14, - 1,16,1,4,1,114,9,0,0,0,114,193,0,0,0,84, - 99,3,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,3,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,25,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,4,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,3,0,0,0,114,169,0,0,0,78,41, - 7,114,189,0,0,0,114,171,0,0,0,114,190,0,0,0, - 114,37,0,0,0,114,4,0,0,0,114,183,0,0,0,114, - 191,0,0,0,41,5,114,187,0,0,0,114,180,0,0,0, - 90,7,99,104,101,99,107,101,100,114,42,0,0,0,114,17, - 0,0,0,115,5,0,0,0,32,32,32,32,32,114,7,0, - 0,0,218,17,95,99,111,100,101,95,116,111,95,104,97,115, - 104,95,112,121,99,189,2,0,0,115,14,0,0,0,8,2, - 12,1,14,1,16,1,10,1,16,1,4,1,114,9,0,0, - 0,114,194,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,6,0,0,0,3,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,91, - 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,195,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,115,5,0,0,0,32,32,32,32,32,114,7,0,0,0, - 218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,200, - 2,0,0,115,10,0,0,0,8,5,12,1,10,1,12,1, - 20,1,114,9,0,0,0,114,199,0,0,0,169,2,114,163, - 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,8,0,0,0, - 3,0,0,0,115,60,1,0,0,124,1,100,1,117,0,114, - 29,100,2,125,1,116,0,124,2,100,3,131,2,114,28,9, - 0,124,2,160,1,124,0,161,1,125,1,110,39,35,0,4, - 0,116,2,121,157,1,0,1,0,1,0,89,0,110,30,37, - 0,110,28,116,3,160,4,124,1,161,1,125,1,116,5,124, - 1,131,1,115,57,9,0,116,6,116,3,160,7,161,0,124, - 1,131,2,125,1,110,10,35,0,4,0,116,8,121,156,1, - 0,1,0,1,0,89,0,110,1,37,0,116,9,160,10,124, - 0,124,2,124,1,100,4,166,3,125,4,100,5,124,4,95, - 11,124,2,100,1,117,0,114,99,116,12,131,0,68,0,93, - 21,92,2,125,5,125,6,124,1,160,13,116,14,124,6,131, - 1,161,1,114,96,124,5,124,0,124,1,131,2,125,2,124, - 2,124,4,95,15,1,0,113,99,113,75,100,1,83,0,124, - 3,116,16,117,0,114,131,116,0,124,2,100,6,131,2,114, - 130,9,0,124,2,160,17,124,0,161,1,125,7,110,10,35, - 0,4,0,116,2,121,155,1,0,1,0,1,0,89,0,110, - 10,37,0,124,7,114,130,103,0,124,4,95,18,110,3,124, - 3,124,4,95,18,124,4,106,18,103,0,107,2,114,153,124, - 1,114,153,116,19,124,1,131,1,100,7,25,0,125,8,124, - 4,106,18,160,20,124,8,161,1,1,0,124,4,83,0,119, - 0,119,0,119,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, - 21,114,152,0,0,0,114,202,0,0,0,114,142,0,0,0, - 114,19,0,0,0,114,103,0,0,0,114,86,0,0,0,114, - 67,0,0,0,114,82,0,0,0,114,76,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,136,0,0,0,114,163,0,0,0,218,9,95,80,79,80, - 85,76,65,84,69,114,205,0,0,0,114,201,0,0,0,114, - 73,0,0,0,114,61,0,0,0,41,9,114,141,0,0,0, - 90,8,108,111,99,97,116,105,111,110,114,163,0,0,0,114, - 201,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,205,0,0,0,90,7,100,105,114,110,97,109,101, - 115,9,0,0,0,32,32,32,32,32,32,32,32,32,114,7, - 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,217,2,0,0, - 115,96,0,0,0,8,12,4,4,10,1,2,2,12,1,2, - 128,12,1,4,1,2,128,2,251,10,7,8,1,2,1,16, - 1,2,128,12,1,4,1,2,128,16,8,6,1,8,3,14, - 1,14,1,10,1,6,1,4,1,2,253,4,5,8,3,10, - 2,2,1,12,1,2,128,12,1,4,1,2,128,4,2,6, - 1,2,128,6,2,10,1,4,1,12,1,12,1,4,2,2, - 244,2,228,2,249,115,44,0,0,0,140,5,18,0,146,7, - 27,7,167,7,47,0,175,7,56,7,193,45,5,65,51,0, - 193,51,7,65,60,7,194,27,1,65,60,7,194,28,1,56, - 7,194,29,1,27,7,114,212,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, - 115,88,0,0,0,101,0,90,1,100,0,90,2,100,1,90, - 3,100,2,90,4,100,3,90,5,101,6,111,15,100,4,101, - 7,118,0,90,8,101,9,100,5,100,6,132,0,131,1,90, - 10,101,11,100,7,100,8,132,0,131,1,90,12,101,11,100, - 14,100,10,100,11,132,1,131,1,90,13,101,11,100,15,100, - 12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, - 0,0,0,115,52,0,0,0,9,0,116,0,160,1,116,0, - 106,2,124,0,161,2,83,0,35,0,4,0,116,3,121,25, - 1,0,1,0,1,0,116,0,160,1,116,0,106,4,124,0, - 161,2,6,0,89,0,83,0,37,0,119,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, - 114,20,0,0,0,115,1,0,0,0,32,114,7,0,0,0, - 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, - 46,3,0,0,115,14,0,0,0,2,2,14,1,2,128,12, - 1,18,1,2,128,2,255,115,12,0,0,0,129,6,8,0, - 136,14,24,7,153,1,24,7,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,9,0,0,0,3, - 0,0,0,115,136,0,0,0,124,0,106,0,114,7,124,0, - 106,1,125,2,110,3,124,0,106,2,125,2,124,2,160,3, - 124,1,100,1,116,4,106,5,100,0,100,2,133,2,25,0, - 22,0,100,3,166,2,125,3,9,0,124,0,160,6,124,3, - 161,1,53,0,125,4,116,7,160,8,124,4,100,4,161,2, - 125,5,100,0,4,0,4,0,131,3,1,0,110,11,35,0, - 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,124,5,83,0,35,0,4,0,116,9,121,67, - 1,0,1,0,1,0,89,0,100,0,83,0,37,0,119,0, - 41,5,78,122,5,37,100,46,37,100,114,45,0,0,0,41, - 2,114,162,0,0,0,90,11,115,121,115,95,118,101,114,115, - 105,111,110,114,10,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,89,0,0,0,114,16, - 0,0,0,218,12,118,101,114,115,105,111,110,95,105,110,102, - 111,114,215,0,0,0,114,214,0,0,0,90,10,81,117,101, - 114,121,86,97,108,117,101,114,76,0,0,0,41,6,218,3, - 99,108,115,114,162,0,0,0,90,12,114,101,103,105,115,116, - 114,121,95,107,101,121,114,21,0,0,0,90,4,104,107,101, - 121,218,8,102,105,108,101,112,97,116,104,115,6,0,0,0, - 32,32,32,32,32,32,114,7,0,0,0,218,16,95,115,101, - 97,114,99,104,95,114,101,103,105,115,116,114,121,53,3,0, - 0,115,34,0,0,0,6,2,8,1,6,2,6,1,16,1, - 6,255,2,2,12,1,12,1,12,255,22,128,4,4,2,128, - 12,254,6,1,2,128,2,255,115,39,0,0,0,153,5,56, - 0,158,7,43,3,165,6,56,0,171,4,47,11,175,1,56, - 0,176,3,47,11,179,3,56,0,184,7,65,2,7,193,3, - 1,65,2,7,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,3,0, - 0,0,115,122,0,0,0,124,0,160,0,124,1,161,1,125, - 4,124,4,100,0,117,0,114,11,100,0,83,0,9,0,116, - 1,124,4,131,1,1,0,110,11,35,0,4,0,116,2,121, - 60,1,0,1,0,1,0,89,0,100,0,83,0,37,0,116, - 3,131,0,68,0,93,26,92,2,125,5,125,6,124,4,160, - 4,116,5,124,6,131,1,161,1,114,57,116,6,160,7,124, - 1,124,5,124,1,124,4,131,2,124,4,100,1,166,3,125, - 7,124,7,2,0,1,0,83,0,113,31,100,0,83,0,119, - 0,41,2,78,114,203,0,0,0,41,8,114,222,0,0,0, - 114,75,0,0,0,114,76,0,0,0,114,207,0,0,0,114, - 58,0,0,0,114,136,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,220,0,0,0,114,162,0,0,0,114,65,0,0, - 0,218,6,116,97,114,103,101,116,114,221,0,0,0,114,163, - 0,0,0,114,211,0,0,0,114,209,0,0,0,115,8,0, - 0,0,32,32,32,32,32,32,32,32,114,7,0,0,0,218, - 9,102,105,110,100,95,115,112,101,99,68,3,0,0,115,38, - 0,0,0,10,2,8,1,4,1,2,1,10,1,2,128,12, - 1,6,1,2,128,14,1,14,1,6,1,8,1,2,1,6, - 254,8,3,2,252,4,255,2,254,115,12,0,0,0,140,4, - 17,0,145,7,27,7,188,1,27,7,122,31,87,105,110,100, + 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,32,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,142,0,0,0,114,4,0,0,0,218,8, + 69,79,70,69,114,114,111,114,114,43,0,0,0,41,6,114, + 42,0,0,0,114,141,0,0,0,218,11,101,120,99,95,100, + 101,116,97,105,108,115,90,5,109,97,103,105,99,114,117,0, + 0,0,114,17,0,0,0,115,6,0,0,0,32,32,32,32, + 32,32,114,7,0,0,0,218,13,95,99,108,97,115,115,105, + 102,121,95,112,121,99,81,2,0,0,115,28,0,0,0,12, + 16,8,1,16,1,12,1,16,1,12,1,10,1,12,1,8, + 1,16,1,8,2,16,1,16,1,4,1,114,9,0,0,0, + 114,175,0,0,0,99,5,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,115,124,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,31,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,60,116,0,124,0,100,2,100,7,133,2,25, + 0,131,1,124,2,100,3,64,0,107,3,114,58,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,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,169,0,0,0,233,12, + 0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4,114,43,0, + 0,0,114,158,0,0,0,114,172,0,0,0,114,142,0,0, + 0,41,6,114,42,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,141,0,0,0,114,174,0,0,0,114,117,0, + 0,0,115,6,0,0,0,32,32,32,32,32,32,114,7,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,114,2,0,0,115, + 18,0,0,0,24,19,10,1,12,1,16,1,8,1,22,1, + 2,255,22,2,8,254,114,9,0,0,0,114,179,0,0,0, + 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,3,0,0,0,115,42,0,0,0,124,0,100,1,100,2, + 133,2,25,0,124,1,107,3,114,19,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,169, + 0,0,0,114,168,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,142,0,0,0, + 41,4,114,42,0,0,0,218,11,115,111,117,114,99,101,95, + 104,97,115,104,114,141,0,0,0,114,174,0,0,0,115,4, + 0,0,0,32,32,32,32,114,7,0,0,0,218,18,95,118, + 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, + 142,2,0,0,115,14,0,0,0,16,17,2,1,8,1,4, + 255,2,2,6,254,4,255,114,9,0,0,0,114,181,0,0, + 0,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,3,0,0,0,115,76,0,0,0,116,0,160,1,124, + 0,161,1,125,4,116,2,124,4,116,3,131,2,114,28,116, + 4,160,5,100,1,124,2,161,2,1,0,124,3,100,2,117, + 1,114,26,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,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,141,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,172,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,142,0,0,0,114,89,0,0, + 0,41,5,114,42,0,0,0,114,141,0,0,0,114,132,0, + 0,0,114,134,0,0,0,218,4,99,111,100,101,115,5,0, + 0,0,32,32,32,32,32,114,7,0,0,0,218,17,95,99, + 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,166, + 2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,1, + 12,1,4,1,10,2,4,1,6,255,114,9,0,0,0,114, + 188,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,3,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,3,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,78,41,6,218,9,98,121,116, + 101,97,114,114,97,121,114,171,0,0,0,218,6,101,120,116, + 101,110,100,114,37,0,0,0,114,183,0,0,0,218,5,100, + 117,109,112,115,41,4,114,187,0,0,0,218,5,109,116,105, + 109,101,114,178,0,0,0,114,42,0,0,0,115,4,0,0, + 0,32,32,32,32,114,7,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,179,2,0,0,115,12,0,0,0,8,2,14,1,14, + 1,14,1,16,1,4,1,114,9,0,0,0,114,193,0,0, + 0,84,99,3,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,3,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,25,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,4,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,3,0,0,0,114,169,0,0,0, + 78,41,7,114,189,0,0,0,114,171,0,0,0,114,190,0, + 0,0,114,37,0,0,0,114,4,0,0,0,114,183,0,0, + 0,114,191,0,0,0,41,5,114,187,0,0,0,114,180,0, + 0,0,90,7,99,104,101,99,107,101,100,114,42,0,0,0, + 114,17,0,0,0,115,5,0,0,0,32,32,32,32,32,114, + 7,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104, + 97,115,104,95,112,121,99,189,2,0,0,115,14,0,0,0, + 8,2,12,1,14,1,16,1,10,1,16,1,4,1,114,9, + 0,0,0,114,194,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,3,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,91,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,195,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,115,5,0,0,0,32,32,32,32,32,114,7,0, + 0,0,218,13,100,101,99,111,100,101,95,115,111,117,114,99, + 101,200,2,0,0,115,10,0,0,0,8,5,12,1,10,1, + 12,1,20,1,114,9,0,0,0,114,199,0,0,0,169,2, + 114,163,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,8,0, + 0,0,3,0,0,0,115,60,1,0,0,124,1,100,1,117, + 0,114,29,100,2,125,1,116,0,124,2,100,3,131,2,114, + 28,9,0,124,2,160,1,124,0,161,1,125,1,110,39,35, + 0,4,0,116,2,121,157,1,0,1,0,1,0,89,0,110, + 30,37,0,110,28,116,3,160,4,124,1,161,1,125,1,116, + 5,124,1,131,1,115,57,9,0,116,6,116,3,160,7,161, + 0,124,1,131,2,125,1,110,10,35,0,4,0,116,8,121, + 156,1,0,1,0,1,0,89,0,110,1,37,0,116,9,160, + 10,124,0,124,2,124,1,100,4,166,3,125,4,100,5,124, + 4,95,11,124,2,100,1,117,0,114,99,116,12,131,0,68, + 0,93,21,92,2,125,5,125,6,124,1,160,13,116,14,124, + 6,131,1,161,1,114,96,124,5,124,0,124,1,131,2,125, + 2,124,2,124,4,95,15,1,0,113,99,113,75,100,1,83, + 0,124,3,116,16,117,0,114,131,116,0,124,2,100,6,131, + 2,114,130,9,0,124,2,160,17,124,0,161,1,125,7,110, + 10,35,0,4,0,116,2,121,155,1,0,1,0,1,0,89, + 0,110,10,37,0,124,7,114,130,103,0,124,4,95,18,110, + 3,124,3,124,4,95,18,124,4,106,18,103,0,107,2,114, + 153,124,1,114,153,116,19,124,1,131,1,100,7,25,0,125, + 8,124,4,106,18,160,20,124,8,161,1,1,0,124,4,83, + 0,119,0,119,0,119,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,21,114,152,0,0,0,114,202,0,0,0,114,142,0, + 0,0,114,19,0,0,0,114,103,0,0,0,114,86,0,0, + 0,114,67,0,0,0,114,82,0,0,0,114,76,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,136,0,0,0,114,163,0,0,0,218,9,95,80, + 79,80,85,76,65,84,69,114,205,0,0,0,114,201,0,0, + 0,114,73,0,0,0,114,61,0,0,0,41,9,114,141,0, + 0,0,90,8,108,111,99,97,116,105,111,110,114,163,0,0, + 0,114,201,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,205,0,0,0,90,7,100,105,114,110,97, + 109,101,115,9,0,0,0,32,32,32,32,32,32,32,32,32, + 114,7,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,217,2, + 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, + 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, + 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, + 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, + 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, + 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, + 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, + 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, + 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, + 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, + 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, + 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, + 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, + 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, + 15,100,12,100,13,132,1,131,1,90,14,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,122,6,95,100,46,112,121,100, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,3,0,0,0,115,52,0,0,0,9,0,116,0,160,1, + 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, + 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, + 124,0,161,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,115,1,0,0,0,32,114,7,0, + 0,0,218,14,95,111,112,101,110,95,114,101,103,105,115,116, + 114,121,46,3,0,0,115,14,0,0,0,2,2,14,1,2, + 128,12,1,18,1,2,128,2,255,115,12,0,0,0,129,6, + 8,0,136,14,24,7,153,1,24,7,122,36,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,3,0,0,0, - 115,42,0,0,0,116,0,160,1,100,1,116,2,161,2,1, - 0,124,0,160,3,124,1,124,2,161,2,125,3,124,3,100, - 2,117,1,114,19,124,3,106,4,83,0,100,2,83,0,41, - 3,122,106,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,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,122,112,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, - 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, - 169,5,114,99,0,0,0,114,100,0,0,0,114,101,0,0, - 0,114,225,0,0,0,114,163,0,0,0,169,4,114,220,0, - 0,0,114,162,0,0,0,114,65,0,0,0,114,209,0,0, - 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, - 11,102,105,110,100,95,109,111,100,117,108,101,84,3,0,0, - 115,14,0,0,0,6,7,2,2,4,254,12,3,8,1,6, - 1,4,2,114,9,0,0,0,122,33,87,105,110,100,111,119, + 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,9,0,0, + 0,3,0,0,0,115,136,0,0,0,124,0,106,0,114,7, + 124,0,106,1,125,2,110,3,124,0,106,2,125,2,124,2, + 160,3,124,1,100,1,116,4,106,5,100,0,100,2,133,2, + 25,0,22,0,100,3,166,2,125,3,9,0,124,0,160,6, + 124,3,161,1,53,0,125,4,116,7,160,8,124,4,100,4, + 161,2,125,5,100,0,4,0,4,0,131,3,1,0,110,11, + 35,0,49,0,115,48,119,4,37,0,1,0,1,0,1,0, + 89,0,1,0,1,0,124,5,83,0,35,0,4,0,116,9, + 121,67,1,0,1,0,1,0,89,0,100,0,83,0,37,0, + 119,0,41,5,78,122,5,37,100,46,37,100,114,45,0,0, + 0,41,2,114,162,0,0,0,90,11,115,121,115,95,118,101, + 114,115,105,111,110,114,10,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,89,0,0,0, + 114,16,0,0,0,218,12,118,101,114,115,105,111,110,95,105, + 110,102,111,114,215,0,0,0,114,214,0,0,0,90,10,81, + 117,101,114,121,86,97,108,117,101,114,76,0,0,0,41,6, + 218,3,99,108,115,114,162,0,0,0,90,12,114,101,103,105, + 115,116,114,121,95,107,101,121,114,21,0,0,0,90,4,104, + 107,101,121,218,8,102,105,108,101,112,97,116,104,115,6,0, + 0,0,32,32,32,32,32,32,114,7,0,0,0,218,16,95, + 115,101,97,114,99,104,95,114,101,103,105,115,116,114,121,53, + 3,0,0,115,36,0,0,0,6,2,8,1,6,2,6,1, + 16,1,6,255,2,2,12,1,12,1,20,255,2,128,12,0, + 4,4,2,128,12,254,6,1,2,128,2,255,115,39,0,0, + 0,153,5,56,0,158,7,43,3,165,6,56,0,171,4,47, + 11,175,1,56,0,176,3,47,11,179,3,56,0,184,7,65, + 2,7,193,3,1,65,2,7,122,38,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,169,2,78,78,114, - 69,0,0,0,41,15,114,149,0,0,0,114,148,0,0,0, - 114,150,0,0,0,114,151,0,0,0,114,218,0,0,0,114, - 217,0,0,0,218,11,95,77,83,95,87,73,78,68,79,87, - 83,218,18,69,88,84,69,78,83,73,79,78,95,83,85,70, - 70,73,88,69,83,114,216,0,0,0,218,12,115,116,97,116, - 105,99,109,101,116,104,111,100,114,215,0,0,0,218,11,99, - 108,97,115,115,109,101,116,104,111,100,114,222,0,0,0,114, - 225,0,0,0,114,228,0,0,0,114,12,0,0,0,114,9, - 0,0,0,114,7,0,0,0,114,213,0,0,0,34,3,0, - 0,115,30,0,0,0,8,0,4,2,2,3,2,255,2,4, - 2,255,12,3,2,2,10,1,2,6,10,1,2,14,12,1, - 2,15,16,1,114,9,0,0,0,114,213,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, - 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,4,0,0,0,3, - 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,31, - 124,4,100,5,107,3,83,0,41,7,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,3,0,0,0,114,97, - 0,0,0,114,0,0,0,0,114,45,0,0,0,218,8,95, - 95,105,110,105,116,95,95,78,41,4,114,73,0,0,0,114, - 202,0,0,0,114,125,0,0,0,114,104,0,0,0,41,5, - 114,143,0,0,0,114,162,0,0,0,114,120,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,115,5,0,0,0,32,32, - 32,32,32,114,7,0,0,0,114,205,0,0,0,106,3,0, - 0,115,8,0,0,0,18,3,16,1,14,1,16,1,114,9, - 0,0,0,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,1,0,0,0,3,0, - 0,0,114,24,0,0,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,12,0,0,0,169,2,114,143,0, - 0,0,114,209,0,0,0,115,2,0,0,0,32,32,114,7, - 0,0,0,218,13,99,114,101,97,116,101,95,109,111,100,117, - 108,101,114,3,0,0,243,2,0,0,0,4,0,114,9,0, - 0,0,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,5,0,0,0, - 3,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,18,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,142,0,0,0,114,89,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,143,0,0,0,218,6,109,111, - 100,117,108,101,114,187,0,0,0,115,3,0,0,0,32,32, - 32,114,7,0,0,0,218,11,101,120,101,99,95,109,111,100, - 117,108,101,117,3,0,0,115,12,0,0,0,12,2,8,1, - 4,1,8,1,4,255,20,2,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,12,0, - 0,0,116,0,160,1,124,0,124,1,161,2,83,0,41,2, - 122,26,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,78,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,143,0,0,0,114,162, - 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,218, - 11,108,111,97,100,95,109,111,100,117,108,101,125,3,0,0, - 115,2,0,0,0,12,3,114,9,0,0,0,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,205, - 0,0,0,114,238,0,0,0,114,244,0,0,0,114,247,0, - 0,0,114,12,0,0,0,114,9,0,0,0,114,7,0,0, - 0,114,234,0,0,0,101,3,0,0,115,12,0,0,0,8, - 0,4,2,8,3,8,8,8,3,12,8,114,9,0,0,0, - 114,234,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,0,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,1,0,0,0,3,0,0,0,115,4, - 0,0,0,116,0,130,1,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,143,0,0,0,114, - 65,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, - 218,10,112,97,116,104,95,109,116,105,109,101,133,3,0,0, - 115,2,0,0,0,4,6,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,14,0,0,0,100, - 1,124,0,160,0,124,1,161,1,105,1,83,0,41,3,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,192,0,0,0,78,41,1,114,250,0,0,0,114, - 249,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, - 218,10,112,97,116,104,95,115,116,97,116,115,141,3,0,0, - 115,2,0,0,0,14,12,114,9,0,0,0,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,3,0,0,0,115,12,0,0,0,124, - 0,160,0,124,2,124,3,161,2,83,0,41,2,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,78,41,1,218,8,115,101,116,95,100,97,116,97, - 41,4,114,143,0,0,0,114,134,0,0,0,90,10,99,97, - 99,104,101,95,112,97,116,104,114,42,0,0,0,115,4,0, - 0,0,32,32,32,32,114,7,0,0,0,218,15,95,99,97, - 99,104,101,95,98,121,116,101,99,111,100,101,155,3,0,0, - 115,2,0,0,0,12,8,114,9,0,0,0,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,1,0,0,0,3,0,0,0,114, - 24,0,0,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, - 12,0,0,0,41,3,114,143,0,0,0,114,65,0,0,0, - 114,42,0,0,0,115,3,0,0,0,32,32,32,114,7,0, - 0,0,114,252,0,0,0,165,3,0,0,114,239,0,0,0, - 114,9,0,0,0,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,8,0,0,0,3,0,0, - 0,115,70,0,0,0,124,0,160,0,124,1,161,1,125,2, - 9,0,124,0,160,1,124,2,161,1,125,3,116,4,124,3, - 131,1,83,0,35,0,4,0,116,2,121,34,1,0,125,4, - 1,0,116,3,100,1,124,1,100,2,141,2,124,4,130,2, - 100,3,125,4,126,4,119,1,37,0,119,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,140,0, - 0,0,78,41,5,114,202,0,0,0,218,8,103,101,116,95, - 100,97,116,97,114,76,0,0,0,114,142,0,0,0,114,199, - 0,0,0,41,5,114,143,0,0,0,114,162,0,0,0,114, - 65,0,0,0,114,197,0,0,0,218,3,101,120,99,115,5, - 0,0,0,32,32,32,32,32,114,7,0,0,0,218,10,103, - 101,116,95,115,111,117,114,99,101,172,3,0,0,115,26,0, - 0,0,10,2,2,1,10,1,8,4,2,128,12,253,4,1, - 2,1,4,255,2,1,2,255,10,128,2,255,115,20,0,0, - 0,134,5,15,0,143,7,33,7,150,7,29,7,157,4,33, - 7,162,1,33,7,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,130, - 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,9,0,0, - 0,3,0,0,0,115,22,0,0,0,116,0,160,1,116,2, - 124,1,124,2,100,1,100,2,124,3,100,3,166,6,83,0, - 41,5,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,108,0,0, - 0,78,41,3,114,158,0,0,0,114,241,0,0,0,218,7, - 99,111,109,112,105,108,101,41,4,114,143,0,0,0,114,42, - 0,0,0,114,65,0,0,0,114,1,1,0,0,115,4,0, - 0,0,32,32,32,32,114,7,0,0,0,218,14,115,111,117, - 114,99,101,95,116,111,95,99,111,100,101,182,3,0,0,115, - 6,0,0,0,12,5,4,1,6,255,114,9,0,0,0,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,9,0,0,0,3,0,0, - 0,115,28,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,9,0,116,1,124,2,131,1,125,8,110,13, - 35,0,4,0,116,2,144,1,121,13,1,0,1,0,1,0, - 100,1,125,8,89,0,110,147,37,0,9,0,124,0,160,3, - 124,2,161,1,125,9,110,11,35,0,4,0,116,4,144,1, - 121,12,1,0,1,0,1,0,89,0,110,129,37,0,116,5, - 124,9,100,4,25,0,131,1,125,3,9,0,124,0,160,6, - 124,8,161,1,125,10,110,11,35,0,4,0,116,4,144,1, - 121,11,1,0,1,0,1,0,89,0,110,105,37,0,124,1, - 124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0,100,8,107,3, - 125,7,116,9,106,10,100,10,107,3,114,140,124,7,115,122, - 116,9,106,10,100,11,107,2,114,140,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,10, - 116,14,124,10,124,3,124,9,100,12,25,0,124,1,124,11, - 131,5,1,0,110,13,35,0,4,0,116,15,116,16,102,2, - 144,1,121,10,1,0,1,0,1,0,89,0,110,16,37,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,114,189,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,1,115,7, - 124,8,100,1,117,1,144,1,114,7,124,3,100,1,117,1, - 144,1,114,7,124,6,114,233,124,5,100,1,117,0,114,226, - 116,9,160,11,124,4,161,1,125,5,116,23,124,14,124,5, - 124,7,131,3,125,10,110,8,116,24,124,14,124,3,116,25, - 124,4,131,1,131,3,125,10,9,0,124,0,160,26,124,2, - 124,8,124,10,161,3,1,0,124,14,83,0,35,0,4,0, - 116,2,144,1,121,9,1,0,1,0,1,0,89,0,124,14, - 83,0,37,0,124,14,83,0,119,0,119,0,119,0,119,0, - 119,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,192,0,0,0,114,182,0,0, - 0,114,168,0,0,0,114,3,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,141,0,0,0, - 114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114,107,0,0,0, - 114,251,0,0,0,114,76,0,0,0,114,34,0,0,0,114, - 254,0,0,0,114,175,0,0,0,218,10,109,101,109,111,114, - 121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87,95,77,65,71, - 73,67,95,78,85,77,66,69,82,114,181,0,0,0,114,179, - 0,0,0,114,142,0,0,0,114,173,0,0,0,114,158,0, - 0,0,114,172,0,0,0,114,188,0,0,0,114,4,1,0, - 0,114,16,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,194,0,0,0, - 114,193,0,0,0,114,4,0,0,0,114,253,0,0,0,41, - 15,114,143,0,0,0,114,162,0,0,0,114,134,0,0,0, - 114,177,0,0,0,114,197,0,0,0,114,180,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,132,0,0,0,218,2, - 115,116,114,42,0,0,0,114,174,0,0,0,114,17,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,115,15,0,0,0,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,7, - 0,0,0,114,240,0,0,0,190,3,0,0,115,188,0,0, - 0,10,7,4,1,4,1,4,1,4,1,4,1,2,1,10, - 1,2,128,14,1,8,1,2,128,2,2,12,1,2,128,14, - 1,4,1,2,128,12,2,2,1,12,1,2,128,14,1,4, - 1,2,128,2,3,2,1,6,254,2,4,12,1,16,1,12, - 1,4,1,12,1,10,1,2,1,2,255,8,2,2,254,10, - 3,4,1,2,1,2,1,4,254,8,4,2,1,4,255,2, - 128,2,3,2,1,2,1,6,1,2,1,2,1,4,251,4, - 128,18,7,4,1,2,128,8,2,2,1,4,255,6,2,2, - 1,2,1,6,254,8,3,10,1,12,1,12,1,18,1,6, - 1,4,255,4,2,8,1,10,1,14,1,6,2,6,1,4, - 255,2,2,14,1,4,3,2,128,14,254,2,1,4,1,2, - 128,4,0,2,254,2,233,2,225,2,250,2,251,115,80,0, - 0,0,144,4,21,0,149,10,33,7,163,5,41,0,169,8, - 51,7,187,5,65,1,0,193,1,8,65,11,7,193,18,65, - 5,66,24,0,194,24,10,66,36,7,195,50,7,67,59,0, - 195,59,8,68,6,7,196,9,1,68,6,7,196,10,1,66, - 36,7,196,11,1,65,11,7,196,12,1,51,7,196,13,1, - 33,7,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,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,12, - 0,0,0,114,9,0,0,0,114,7,0,0,0,114,248,0, - 0,0,131,3,0,0,115,16,0,0,0,8,0,8,2,8, - 8,8,14,8,10,8,7,14,10,12,8,114,9,0,0,0, - 114,248,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,0,0,0,0,115,94,0,0,0,135, - 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,136,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,136,0,4,0,90,12,83,0,41,16,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,2,0,0,0,3,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,182, - 0,0,0,41,3,114,143,0,0,0,114,162,0,0,0,114, - 65,0,0,0,115,3,0,0,0,32,32,32,114,7,0,0, - 0,114,235,0,0,0,24,4,0,0,115,4,0,0,0,6, - 3,10,1,114,9,0,0,0,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,3,0, - 0,0,243,24,0,0,0,124,0,106,0,124,1,106,0,107, - 2,111,11,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,143,0,0,0,90,5,111, - 116,104,101,114,115,2,0,0,0,32,32,114,7,0,0,0, - 218,6,95,95,101,113,95,95,30,4,0,0,243,6,0,0, - 0,12,1,10,1,2,255,114,9,0,0,0,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,3,0,0,0, - 3,0,0,0,243,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,141,0,0,0,114, - 65,0,0,0,169,1,114,143,0,0,0,115,1,0,0,0, - 32,114,7,0,0,0,218,8,95,95,104,97,115,104,95,95, - 34,4,0,0,243,2,0,0,0,20,1,114,9,0,0,0, - 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,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, - 2,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,41,3,218,5,115,117,112,101, - 114,114,10,1,0,0,114,247,0,0,0,41,3,114,143,0, - 0,0,114,162,0,0,0,114,13,1,0,0,115,3,0,0, - 0,32,32,128,114,7,0,0,0,114,247,0,0,0,37,4, - 0,0,115,2,0,0,0,16,10,114,9,0,0,0,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,1,0,0,0,3,0,0,0,243,6,0,0,0, - 124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246,0,0,0,115, - 2,0,0,0,32,32,114,7,0,0,0,114,202,0,0,0, - 49,4,0,0,243,2,0,0,0,6,3,114,9,0,0,0, - 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,9,0,0,0,3,0,0,0,115,136, - 0,0,0,116,0,124,0,116,1,116,2,102,2,131,2,114, - 38,116,3,160,4,116,5,124,1,131,1,161,1,53,0,125, - 2,124,2,160,6,161,0,2,0,100,1,4,0,4,0,131, - 3,1,0,83,0,35,0,49,0,115,30,119,4,37,0,1, - 0,1,0,1,0,89,0,1,0,1,0,100,1,83,0,116, - 3,160,7,124,1,100,2,161,2,53,0,125,2,124,2,160, - 6,161,0,2,0,100,1,4,0,4,0,131,3,1,0,83, - 0,35,0,49,0,115,60,119,4,37,0,1,0,1,0,1, - 0,89,0,1,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,184,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,91,0,0,0, - 90,9,111,112,101,110,95,99,111,100,101,114,109,0,0,0, - 90,4,114,101,97,100,114,92,0,0,0,41,3,114,143,0, - 0,0,114,65,0,0,0,114,94,0,0,0,115,3,0,0, - 0,32,32,32,114,7,0,0,0,114,254,0,0,0,54,4, - 0,0,115,22,0,0,0,14,2,16,1,6,1,14,255,22, - 128,4,0,14,3,6,1,14,255,22,128,4,0,115,24,0, - 0,0,142,4,25,3,153,4,29,11,158,3,29,11,172,4, - 55,3,183,4,59,11,188,3,59,11,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,115,20,0,0,0,100,1,100,2,108,0,109, - 1,125,2,1,0,124,2,124,0,131,1,83,0,41,3,78, - 114,0,0,0,0,41,1,218,10,70,105,108,101,82,101,97, - 100,101,114,41,2,218,17,105,109,112,111,114,116,108,105,98, - 46,114,101,97,100,101,114,115,114,29,1,0,0,41,3,114, - 143,0,0,0,114,243,0,0,0,114,29,1,0,0,115,3, - 0,0,0,32,32,32,114,7,0,0,0,218,19,103,101,116, - 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, - 63,4,0,0,115,4,0,0,0,12,2,8,1,114,9,0, - 0,0,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,41,13,114,149,0,0,0,114,148,0,0,0,114,150, - 0,0,0,114,151,0,0,0,114,235,0,0,0,114,15,1, - 0,0,114,21,1,0,0,114,159,0,0,0,114,247,0,0, - 0,114,202,0,0,0,114,254,0,0,0,114,31,1,0,0, - 90,13,95,95,99,108,97,115,115,99,101,108,108,95,95,41, - 1,114,13,1,0,0,115,1,0,0,0,64,114,7,0,0, - 0,114,10,1,0,0,19,4,0,0,115,24,0,0,0,10, - 128,4,2,8,3,8,6,8,4,2,3,14,1,2,11,10, - 1,8,4,2,9,18,1,114,9,0,0,0,114,10,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,0,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,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,3,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,192,0,0,0,114,5,1,0,0,78,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,143,0,0,0, - 114,65,0,0,0,114,9,1,0,0,115,3,0,0,0,32, - 32,32,114,7,0,0,0,114,251,0,0,0,73,4,0,0, - 115,4,0,0,0,8,2,14,1,114,9,0,0,0,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,6,0,0,0,3,0,0,0, - 115,24,0,0,0,116,0,124,1,131,1,125,4,124,0,160, - 1,124,2,124,3,124,4,100,1,166,3,83,0,41,2,78, - 169,1,218,5,95,109,111,100,101,41,2,114,139,0,0,0, - 114,252,0,0,0,41,5,114,143,0,0,0,114,134,0,0, - 0,114,132,0,0,0,114,42,0,0,0,114,78,0,0,0, - 115,5,0,0,0,32,32,32,32,32,114,7,0,0,0,114, - 253,0,0,0,78,4,0,0,115,4,0,0,0,8,2,16, - 1,114,9,0,0,0,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,87,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,3,0,0,0,115,250,0,0,0,116,0,124,1, - 131,1,92,2,125,4,125,5,103,0,125,6,124,4,114,31, - 116,1,124,4,131,1,115,31,116,0,124,4,131,1,92,2, - 125,4,125,7,124,6,160,2,124,7,161,1,1,0,124,4, - 114,31,116,1,124,4,131,1,114,14,116,3,124,6,131,1, - 68,0,93,47,125,7,116,4,124,4,124,7,131,2,125,4, - 9,0,116,5,160,6,124,4,161,1,1,0,113,35,35,0, - 4,0,116,7,121,58,1,0,1,0,1,0,89,0,113,35, - 4,0,116,8,121,124,1,0,125,8,1,0,116,9,160,10, - 100,1,124,4,124,8,161,3,1,0,89,0,100,2,125,8, - 126,8,1,0,100,2,83,0,100,2,125,8,126,8,119,1, - 37,0,9,0,116,11,124,1,124,2,124,3,131,3,1,0, - 116,9,160,10,100,3,124,1,161,2,1,0,100,2,83,0, - 35,0,4,0,116,8,121,123,1,0,125,8,1,0,116,9, - 160,10,100,1,124,1,124,8,161,3,1,0,89,0,100,2, - 125,8,126,8,100,2,83,0,100,2,125,8,126,8,119,1, - 37,0,119,0,119,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,73,0,0,0,114,83,0,0,0,114,61,0, - 0,0,218,8,114,101,118,101,114,115,101,100,114,67,0,0, - 0,114,19,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,172,0,0,0,114,95,0, - 0,0,41,9,114,143,0,0,0,114,65,0,0,0,114,42, - 0,0,0,114,35,1,0,0,218,6,112,97,114,101,110,116, - 114,120,0,0,0,114,63,0,0,0,114,68,0,0,0,114, - 255,0,0,0,115,9,0,0,0,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,252,0,0,0,83,4,0,0, - 115,60,0,0,0,12,2,4,1,12,2,12,1,10,1,12, - 254,12,4,10,1,2,1,12,1,2,128,12,1,4,2,12, - 1,6,3,4,1,4,255,14,2,10,128,2,1,12,1,16, - 1,2,128,12,1,8,2,2,1,16,255,10,128,2,254,2, - 247,115,62,0,0,0,171,5,49,2,177,7,65,18,9,186, - 6,65,18,9,193,0,7,65,14,9,193,14,4,65,18,9, - 193,20,12,65,34,0,193,34,7,65,58,7,193,41,7,65, - 54,7,193,54,4,65,58,7,193,59,1,65,58,7,193,60, - 1,65,18,9,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,251,0,0,0,114,253,0,0,0, - 114,252,0,0,0,114,12,0,0,0,114,9,0,0,0,114, - 7,0,0,0,114,32,1,0,0,69,4,0,0,115,10,0, - 0,0,8,0,4,2,8,2,8,5,18,5,114,9,0,0, - 0,114,32,1,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,0,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,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,3,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,182,0,0,0,114,168,0, - 0,0,41,2,114,141,0,0,0,114,132,0,0,0,41,5, - 114,202,0,0,0,114,254,0,0,0,114,175,0,0,0,114, - 188,0,0,0,114,6,1,0,0,41,5,114,143,0,0,0, - 114,162,0,0,0,114,65,0,0,0,114,42,0,0,0,114, - 174,0,0,0,115,5,0,0,0,32,32,32,32,32,114,7, - 0,0,0,114,240,0,0,0,118,4,0,0,115,22,0,0, - 0,10,1,10,1,2,4,2,1,6,254,12,4,2,1,14, - 1,2,1,2,1,6,253,114,9,0,0,0,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,1,0,0,0,3,0,0,0, - 114,24,0,0,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,12,0,0,0,114,246,0,0,0,115,2,0,0,0, - 32,32,114,7,0,0,0,114,0,1,0,0,134,4,0,0, - 114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0,114,12,0,0, - 0,114,9,0,0,0,114,7,0,0,0,114,39,1,0,0, - 114,4,0,0,115,8,0,0,0,8,0,4,2,8,2,12, - 16,114,9,0,0,0,114,39,1,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,0,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,28,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,2,0,0,0,3,0,0,0,115,16,0,0, - 0,124,1,124,0,95,0,124,2,124,0,95,1,100,0,83, - 0,114,69,0,0,0,114,182,0,0,0,41,3,114,143,0, - 0,0,114,141,0,0,0,114,65,0,0,0,115,3,0,0, - 0,32,32,32,114,7,0,0,0,114,235,0,0,0,147,4, - 0,0,115,4,0,0,0,6,1,10,1,114,9,0,0,0, - 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,3, - 0,0,0,114,11,1,0,0,114,69,0,0,0,114,12,1, - 0,0,114,14,1,0,0,115,2,0,0,0,32,32,114,7, - 0,0,0,114,15,1,0,0,151,4,0,0,114,16,1,0, - 0,114,9,0,0,0,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,3, - 0,0,0,3,0,0,0,114,17,1,0,0,114,69,0,0, - 0,114,18,1,0,0,114,20,1,0,0,115,1,0,0,0, - 32,114,7,0,0,0,114,21,1,0,0,155,4,0,0,114, - 22,1,0,0,114,9,0,0,0,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,5,0,0,0,3,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,3,122,40,67,114,101,97,116,101,32, - 97,110,32,117,110,105,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,78,41,7,114,158,0,0, - 0,114,241,0,0,0,114,186,0,0,0,90,14,99,114,101, - 97,116,101,95,100,121,110,97,109,105,99,114,172,0,0,0, - 114,141,0,0,0,114,65,0,0,0,41,3,114,143,0,0, - 0,114,209,0,0,0,114,243,0,0,0,115,3,0,0,0, - 32,32,32,114,7,0,0,0,114,238,0,0,0,158,4,0, - 0,115,14,0,0,0,4,2,6,1,4,255,6,2,8,1, - 4,255,4,2,114,9,0,0,0,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,5,0,0,0,3,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,241, - 0,0,0,114,186,0,0,0,90,12,101,120,101,99,95,100, - 121,110,97,109,105,99,114,172,0,0,0,114,141,0,0,0, - 114,65,0,0,0,169,2,114,143,0,0,0,114,243,0,0, - 0,115,2,0,0,0,32,32,114,7,0,0,0,114,244,0, - 0,0,166,4,0,0,115,8,0,0,0,14,2,6,1,8, - 1,8,255,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,38, - 0,0,0,135,2,116,0,124,0,106,1,131,1,100,1,25, - 0,138,2,116,2,136,2,102,1,100,2,100,3,132,8,116, - 3,68,0,131,1,131,1,83,0,41,5,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,3, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,51,0,0,0,115,28,0,0,0,129,0,124, - 0,93,9,125,1,137,2,100,0,124,1,23,0,107,2,86, - 0,1,0,113,2,100,1,83,0,41,2,114,235,0,0,0, - 78,114,12,0,0,0,41,3,114,5,0,0,0,218,6,115, - 117,102,102,105,120,218,9,102,105,108,101,95,110,97,109,101, - 115,3,0,0,0,32,32,128,114,7,0,0,0,114,8,0, - 0,0,175,4,0,0,115,8,0,0,0,2,128,4,0,2, - 1,20,255,114,9,0,0,0,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,46,60,108,111,99,97,108,115, - 62,46,60,103,101,110,101,120,112,114,62,78,41,4,114,73, - 0,0,0,114,65,0,0,0,218,3,97,110,121,114,231,0, - 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,42, - 1,0,0,115,3,0,0,0,32,32,64,114,7,0,0,0, - 114,205,0,0,0,172,4,0,0,115,10,0,0,0,2,128, - 14,2,12,1,2,1,8,255,114,9,0,0,0,122,30,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,1,0,0,0,3,0, - 0,0,114,24,0,0,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,12,0,0,0, - 114,246,0,0,0,115,2,0,0,0,32,32,114,7,0,0, - 0,114,240,0,0,0,178,4,0,0,114,25,0,0,0,114, - 9,0,0,0,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,1, - 0,0,0,3,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0, - 115,2,0,0,0,32,32,114,7,0,0,0,114,0,1,0, - 0,182,4,0,0,114,25,0,0,0,114,9,0,0,0,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,1,0,0,0, - 3,0,0,0,114,24,1,0,0,114,25,1,0,0,114,74, - 0,0,0,114,246,0,0,0,115,2,0,0,0,32,32,114, - 7,0,0,0,114,202,0,0,0,186,4,0,0,114,26,1, - 0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21,1,0,0,114, - 238,0,0,0,114,244,0,0,0,114,205,0,0,0,114,240, - 0,0,0,114,0,1,0,0,114,159,0,0,0,114,202,0, - 0,0,114,12,0,0,0,114,9,0,0,0,114,7,0,0, - 0,114,28,1,0,0,139,4,0,0,115,24,0,0,0,8, - 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, - 6,8,4,2,4,14,1,114,9,0,0,0,114,28,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,0,0,0,0,115,104,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,100,18,100,19,132,0,90,12,100, - 20,100,21,132,0,90,13,100,22,100,23,132,0,90,14,100, - 24,83,0,41,25,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, - 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,115,36,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,3,124,0,95,5,100,0,83,0,114,69, - 0,0,0,41,6,218,5,95,110,97,109,101,218,5,95,112, - 97,116,104,114,136,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,12,95, - 112,97,116,104,95,102,105,110,100,101,114,169,4,114,143,0, - 0,0,114,141,0,0,0,114,65,0,0,0,90,11,112,97, - 116,104,95,102,105,110,100,101,114,115,4,0,0,0,32,32, - 32,32,114,7,0,0,0,114,235,0,0,0,199,4,0,0, - 115,8,0,0,0,6,1,6,1,14,1,10,1,114,9,0, - 0,0,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,3,0,0,0,3,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,15,100, - 3,83,0,124,1,100,4,102,2,83,0,41,6,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,97,0, - 0,0,114,10,0,0,0,41,2,114,16,0,0,0,114,65, - 0,0,0,90,8,95,95,112,97,116,104,95,95,78,41,2, - 114,45,1,0,0,114,104,0,0,0,41,4,114,143,0,0, - 0,114,38,1,0,0,218,3,100,111,116,90,2,109,101,115, - 4,0,0,0,32,32,32,32,114,7,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,205,4,0,0,115,8,0,0,0,18, - 2,8,1,4,2,8,3,114,9,0,0,0,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,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,52,1,0,0,114,154,0,0,0,114,16,0,0,0, - 218,7,109,111,100,117,108,101,115,41,3,114,143,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,115,3,0,0,0,32,32,32,114,7,0,0, - 0,114,47,1,0,0,215,4,0,0,115,4,0,0,0,12, - 1,16,1,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,80, - 0,0,0,116,0,124,0,160,1,161,0,131,1,125,1,124, - 1,124,0,106,2,107,3,114,37,124,0,160,3,124,0,106, - 4,124,1,161,2,125,2,124,2,100,0,117,1,114,34,124, - 2,106,5,100,0,117,0,114,34,124,2,106,6,114,34,124, - 2,106,6,124,0,95,7,124,1,124,0,95,2,124,0,106, - 7,83,0,114,69,0,0,0,41,8,114,136,0,0,0,114, - 47,1,0,0,114,48,1,0,0,114,49,1,0,0,114,45, - 1,0,0,114,163,0,0,0,114,201,0,0,0,114,46,1, - 0,0,41,3,114,143,0,0,0,90,11,112,97,114,101,110, - 116,95,112,97,116,104,114,209,0,0,0,115,3,0,0,0, - 32,32,32,114,7,0,0,0,218,12,95,114,101,99,97,108, - 99,117,108,97,116,101,219,4,0,0,115,16,0,0,0,12, - 2,10,1,14,1,18,3,6,1,8,1,6,1,6,1,114, - 9,0,0,0,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,3,0, - 0,0,3,0,0,0,243,12,0,0,0,116,0,124,0,160, - 1,161,0,131,1,83,0,114,69,0,0,0,41,2,218,4, - 105,116,101,114,114,54,1,0,0,114,20,1,0,0,115,1, - 0,0,0,32,114,7,0,0,0,218,8,95,95,105,116,101, - 114,95,95,232,4,0,0,243,2,0,0,0,12,1,114,9, - 0,0,0,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,3,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,54,1,0,0,41,2, - 114,143,0,0,0,218,5,105,110,100,101,120,115,2,0,0, - 0,32,32,114,7,0,0,0,218,11,95,95,103,101,116,105, - 116,101,109,95,95,235,4,0,0,114,58,1,0,0,114,9, - 0,0,0,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,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,46, - 1,0,0,41,3,114,143,0,0,0,114,60,1,0,0,114, - 65,0,0,0,115,3,0,0,0,32,32,32,114,7,0,0, - 0,218,11,95,95,115,101,116,105,116,101,109,95,95,238,4, - 0,0,115,2,0,0,0,14,1,114,9,0,0,0,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,3,0,0,0,3,0,0,0,114, - 55,1,0,0,114,69,0,0,0,41,2,114,4,0,0,0, - 114,54,1,0,0,114,20,1,0,0,115,1,0,0,0,32, - 114,7,0,0,0,218,7,95,95,108,101,110,95,95,241,4, - 0,0,114,58,1,0,0,114,9,0,0,0,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,3,0,0,0,3,0,0,0,243,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,89,0,0,0,114,46,1,0,0,114, - 20,1,0,0,115,1,0,0,0,32,114,7,0,0,0,218, - 8,95,95,114,101,112,114,95,95,244,4,0,0,114,58,1, - 0,0,114,9,0,0,0,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,3,0,0, - 0,3,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,143,0,0,0,218,4,105,116,101,109,115,2,0, - 0,0,32,32,114,7,0,0,0,218,12,95,95,99,111,110, - 116,97,105,110,115,95,95,247,4,0,0,114,58,1,0,0, - 114,9,0,0,0,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,3, - 0,0,0,3,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,46,1,0,0,114,61,0,0,0,114,66,1, - 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,61, - 0,0,0,250,4,0,0,243,2,0,0,0,16,1,114,9, - 0,0,0,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,15,114,149,0, - 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, - 0,114,235,0,0,0,114,52,1,0,0,114,47,1,0,0, - 114,54,1,0,0,114,57,1,0,0,114,61,1,0,0,114, - 62,1,0,0,114,63,1,0,0,114,65,1,0,0,114,68, - 1,0,0,114,61,0,0,0,114,12,0,0,0,114,9,0, - 0,0,114,7,0,0,0,114,44,1,0,0,192,4,0,0, - 115,26,0,0,0,8,0,4,1,8,6,8,6,8,10,8, - 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,114, - 9,0,0,0,114,44,1,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,0,0,0,0,115,88, - 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,100,18,132,0,90,12,100,19,83,0,41,20,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, - 3,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,44,1,0,0,114,46,1,0,0,114,50,1,0, - 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,114, - 235,0,0,0,0,5,0,0,115,2,0,0,0,18,1,114, - 9,0,0,0,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, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,24,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,100,2,160,3,124,0,106,4,161,1,83, - 0,41,4,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,82,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,40,41,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, - 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, - 32,80,121,116,104,111,110,32,51,46,49,50,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,78,41,5,114,99,0,0,0,114, - 100,0,0,0,114,101,0,0,0,114,89,0,0,0,114,149, - 0,0,0,41,1,114,243,0,0,0,115,1,0,0,0,32, - 114,7,0,0,0,218,11,109,111,100,117,108,101,95,114,101, - 112,114,3,5,0,0,115,8,0,0,0,6,7,2,1,4, - 255,12,2,114,9,0,0,0,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,1,0,0,0,3,0,0,0,114,24,0,0,0, - 41,2,78,84,114,12,0,0,0,114,246,0,0,0,115,2, - 0,0,0,32,32,114,7,0,0,0,114,205,0,0,0,14, - 5,0,0,243,2,0,0,0,4,1,114,9,0,0,0,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,1,0,0,0,3,0,0, - 0,114,24,0,0,0,41,2,78,114,10,0,0,0,114,12, - 0,0,0,114,246,0,0,0,115,2,0,0,0,32,32,114, - 7,0,0,0,114,0,1,0,0,17,5,0,0,114,72,1, - 0,0,114,9,0,0,0,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,6,0,0,0,3,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,10,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,115,2,0,0,0,32,32, - 114,7,0,0,0,114,240,0,0,0,20,5,0,0,114,69, - 1,0,0,114,9,0,0,0,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, - 1,0,0,0,3,0,0,0,114,24,0,0,0,114,236,0, - 0,0,114,12,0,0,0,114,237,0,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,238,0,0,0,23,5,0, - 0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0,3,0,0,0, - 115,4,0,0,0,100,0,83,0,114,69,0,0,0,114,12, - 0,0,0,114,40,1,0,0,115,2,0,0,0,32,32,114, - 7,0,0,0,114,244,0,0,0,26,5,0,0,114,72,1, - 0,0,114,9,0,0,0,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,4,0,0,0,3,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,3,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,78,41,4,114,158,0,0,0,114, - 172,0,0,0,114,46,1,0,0,114,245,0,0,0,114,246, - 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, - 247,0,0,0,29,5,0,0,115,8,0,0,0,6,7,4, - 1,4,255,12,3,114,9,0,0,0,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,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,3,0,0,0,115,22,0, - 0,0,100,1,100,2,108,0,109,1,125,2,1,0,124,2, - 124,0,106,2,131,1,83,0,41,3,78,114,0,0,0,0, - 41,1,218,15,78,97,109,101,115,112,97,99,101,82,101,97, - 100,101,114,41,3,114,30,1,0,0,114,73,1,0,0,114, - 46,1,0,0,41,3,114,143,0,0,0,114,243,0,0,0, - 114,73,1,0,0,115,3,0,0,0,32,32,32,114,7,0, - 0,0,114,31,1,0,0,41,5,0,0,115,4,0,0,0, - 12,1,10,1,114,9,0,0,0,122,36,95,78,97,109,101, - 115,112,97,99,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,78, - 41,13,114,149,0,0,0,114,148,0,0,0,114,150,0,0, - 0,114,235,0,0,0,114,232,0,0,0,114,71,1,0,0, - 114,205,0,0,0,114,0,1,0,0,114,240,0,0,0,114, - 238,0,0,0,114,244,0,0,0,114,247,0,0,0,114,31, - 1,0,0,114,12,0,0,0,114,9,0,0,0,114,7,0, - 0,0,114,70,1,0,0,255,4,0,0,115,22,0,0,0, - 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, - 8,3,8,3,12,12,114,9,0,0,0,114,70,1,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,0,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,7, - 100,6,100,7,132,0,131,1,90,8,101,7,100,8,100,9, - 132,0,131,1,90,9,101,7,100,19,100,11,100,12,132,1, - 131,1,90,10,101,7,100,20,100,13,100,14,132,1,131,1, - 90,11,101,7,100,19,100,15,100,16,132,1,131,1,90,12, - 101,4,100,17,100,18,132,0,131,1,90,13,100,10,83,0, - 41,21,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,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, - 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, - 161,0,131,1,68,0,93,22,92,2,125,0,125,1,124,1, - 100,1,117,0,114,20,116,1,106,2,124,0,61,0,113,7, - 116,4,124,1,100,2,131,2,114,29,124,1,160,5,161,0, - 1,0,113,7,100,1,83,0,41,3,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,41,6,218, - 4,108,105,115,116,114,16,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,75,1,0,0, - 41,2,114,141,0,0,0,218,6,102,105,110,100,101,114,115, - 2,0,0,0,32,32,114,7,0,0,0,114,75,1,0,0, - 52,5,0,0,115,14,0,0,0,22,4,8,1,10,1,10, - 1,8,1,2,128,4,252,114,9,0,0,0,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,1,0,0,0,0, - 0,0,0,0,0,0,0,9,0,0,0,3,0,0,0,115, - 78,0,0,0,116,0,106,1,100,1,117,1,114,14,116,0, - 106,1,115,14,116,2,160,3,100,2,116,4,161,2,1,0, - 116,0,106,1,68,0,93,18,125,1,9,0,124,1,124,0, - 131,1,2,0,1,0,83,0,35,0,4,0,116,5,121,38, - 1,0,1,0,1,0,89,0,113,17,37,0,100,1,83,0, - 119,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,16,0,0,0,218,10,112,97,116,104,95,104,111,111,107, - 115,114,99,0,0,0,114,100,0,0,0,114,161,0,0,0, - 114,142,0,0,0,41,2,114,65,0,0,0,90,4,104,111, - 111,107,115,2,0,0,0,32,32,114,7,0,0,0,218,11, - 95,112,97,116,104,95,104,111,111,107,115,62,5,0,0,115, - 22,0,0,0,16,3,12,1,10,1,2,1,12,1,2,128, - 12,1,4,1,2,128,4,2,2,253,115,12,0,0,0,148, - 3,26,2,154,7,35,9,166,1,35,9,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, - 8,0,0,0,3,0,0,0,115,104,0,0,0,124,1,100, - 1,107,2,114,21,9,0,116,0,160,1,161,0,125,1,110, - 11,35,0,4,0,116,2,121,51,1,0,1,0,1,0,89, - 0,100,2,83,0,37,0,9,0,116,3,106,4,124,1,25, - 0,125,2,124,2,83,0,35,0,4,0,116,5,121,50,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,124,2,83,0,37, - 0,119,0,119,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,10,0,0,0, - 78,41,7,114,19,0,0,0,114,82,0,0,0,218,17,70, - 105,108,101,78,111,116,70,111,117,110,100,69,114,114,111,114, - 114,16,0,0,0,114,77,1,0,0,218,8,75,101,121,69, - 114,114,111,114,114,81,1,0,0,41,3,114,220,0,0,0, - 114,65,0,0,0,114,79,1,0,0,115,3,0,0,0,32, - 32,32,114,7,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,75,5,0, - 0,115,36,0,0,0,8,8,2,1,10,1,2,128,12,1, - 6,3,2,128,2,1,10,1,4,4,2,128,12,253,10,1, - 12,1,4,1,2,128,2,253,2,250,115,24,0,0,0,133, - 4,10,0,138,7,20,7,150,5,29,0,157,17,49,7,178, - 1,49,7,179,1,20,7,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,4,0,0,0,3,0,0,0,115,138,0, - 0,0,116,0,124,2,100,1,131,2,114,27,116,1,160,2, - 124,2,161,1,155,0,100,2,157,2,125,3,116,3,160,4, - 124,3,116,5,161,2,1,0,124,2,160,6,124,1,161,1, - 92,2,125,4,125,5,110,21,116,1,160,2,124,2,161,1, - 155,0,100,3,157,2,125,3,116,3,160,4,124,3,116,5, - 161,2,1,0,124,2,160,7,124,1,161,1,125,4,103,0, - 125,5,124,4,100,0,117,1,114,58,116,1,160,8,124,1, - 124,4,161,2,83,0,116,1,160,9,124,1,100,0,161,2, - 125,6,124,5,124,6,95,10,124,6,83,0,41,4,78,114, - 160,0,0,0,122,53,46,102,105,110,100,95,115,112,101,99, - 40,41,32,110,111,116,32,102,111,117,110,100,59,32,102,97, - 108,108,105,110,103,32,98,97,99,107,32,116,111,32,102,105, - 110,100,95,108,111,97,100,101,114,40,41,122,53,46,102,105, - 110,100,95,115,112,101,99,40,41,32,110,111,116,32,102,111, - 117,110,100,59,32,102,97,108,108,105,110,103,32,98,97,99, - 107,32,116,111,32,102,105,110,100,95,109,111,100,117,108,101, - 40,41,41,11,114,152,0,0,0,114,158,0,0,0,90,12, - 95,111,98,106,101,99,116,95,110,97,109,101,114,99,0,0, - 0,114,100,0,0,0,114,161,0,0,0,114,160,0,0,0, - 114,228,0,0,0,114,223,0,0,0,114,206,0,0,0,114, - 201,0,0,0,41,7,114,220,0,0,0,114,162,0,0,0, - 114,79,1,0,0,114,165,0,0,0,114,163,0,0,0,114, - 164,0,0,0,114,209,0,0,0,115,7,0,0,0,32,32, - 32,32,32,32,32,114,7,0,0,0,218,16,95,108,101,103, - 97,99,121,95,103,101,116,95,115,112,101,99,97,5,0,0, - 115,26,0,0,0,10,4,16,1,12,2,16,1,16,2,12, - 2,10,1,4,1,8,1,12,1,12,1,6,1,4,1,114, - 9,0,0,0,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,5, - 0,0,0,3,0,0,0,115,166,0,0,0,103,0,125,4, - 124,2,68,0,93,67,125,5,116,0,124,5,116,1,116,2, - 102,2,131,2,115,14,113,4,124,0,160,3,124,5,161,1, - 125,6,124,6,100,1,117,1,114,71,116,4,124,6,100,2, - 131,2,114,35,124,6,160,5,124,1,124,3,161,2,125,7, - 110,6,124,0,160,6,124,1,124,6,161,2,125,7,124,7, - 100,1,117,0,114,46,113,4,124,7,106,7,100,1,117,1, - 114,55,124,7,2,0,1,0,83,0,124,7,106,8,125,8, - 124,8,100,1,117,0,114,66,116,9,100,3,131,1,130,1, - 124,4,160,10,124,8,161,1,1,0,113,4,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,225,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,184,0,0,0,114,109,0,0,0,218,5,98,121, - 116,101,115,114,84,1,0,0,114,152,0,0,0,114,225,0, - 0,0,114,85,1,0,0,114,163,0,0,0,114,201,0,0, - 0,114,142,0,0,0,114,190,0,0,0,114,158,0,0,0, - 114,206,0,0,0,41,9,114,220,0,0,0,114,162,0,0, - 0,114,65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0,114,164,0,0, - 0,115,9,0,0,0,32,32,32,32,32,32,32,32,32,114, - 7,0,0,0,218,9,95,103,101,116,95,115,112,101,99,118, - 5,0,0,115,42,0,0,0,4,5,8,1,14,1,2,1, - 10,1,8,1,10,1,14,1,12,2,8,1,2,1,10,1, - 8,1,6,1,8,1,8,1,10,5,2,128,12,2,6,1, - 4,1,114,9,0,0,0,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,5,0,0,0,3,0, - 0,0,115,94,0,0,0,124,2,100,1,117,0,114,7,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,20,100,1,83,0,124, - 4,106,3,100,1,117,0,114,45,124,4,106,4,125,5,124, - 5,114,43,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,124,4,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,16,0,0,0,114,65, - 0,0,0,114,88,1,0,0,114,163,0,0,0,114,201,0, - 0,0,114,204,0,0,0,114,44,1,0,0,41,6,114,220, - 0,0,0,114,162,0,0,0,114,65,0,0,0,114,224,0, - 0,0,114,209,0,0,0,114,87,1,0,0,115,6,0,0, - 0,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, - 0,150,5,0,0,115,26,0,0,0,8,6,6,1,14,1, - 8,1,4,1,10,1,6,1,4,1,6,3,16,1,4,1, - 4,2,4,2,114,9,0,0,0,122,20,80,97,116,104,70, + 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,3,0,0,0,115,122,0,0,0,124,0,160,0,124, + 1,161,1,125,4,124,4,100,0,117,0,114,11,100,0,83, + 0,9,0,116,1,124,4,131,1,1,0,110,11,35,0,4, + 0,116,2,121,60,1,0,1,0,1,0,89,0,100,0,83, + 0,37,0,116,3,131,0,68,0,93,26,92,2,125,5,125, + 6,124,4,160,4,116,5,124,6,131,1,161,1,114,57,116, + 6,160,7,124,1,124,5,124,1,124,4,131,2,124,4,100, + 1,166,3,125,7,124,7,2,0,1,0,83,0,113,31,100, + 0,83,0,119,0,41,2,78,114,203,0,0,0,41,8,114, + 222,0,0,0,114,75,0,0,0,114,76,0,0,0,114,207, + 0,0,0,114,58,0,0,0,114,136,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,220,0,0,0,114,162,0,0,0, + 114,65,0,0,0,218,6,116,97,114,103,101,116,114,221,0, + 0,0,114,163,0,0,0,114,211,0,0,0,114,209,0,0, + 0,115,8,0,0,0,32,32,32,32,32,32,32,32,114,7, + 0,0,0,218,9,102,105,110,100,95,115,112,101,99,68,3, + 0,0,115,38,0,0,0,10,2,8,1,4,1,2,1,10, + 1,2,128,12,1,6,1,2,128,14,1,14,1,6,1,8, + 1,2,1,6,254,8,3,2,252,4,255,2,254,115,12,0, + 0,0,140,4,17,0,145,7,27,7,188,1,27,7,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, 3,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, - 3,124,3,100,2,117,0,114,18,100,2,83,0,124,3,106, - 4,83,0,41,3,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, + 3,124,3,100,2,117,1,114,19,124,3,106,4,83,0,100, + 2,83,0,41,3,122,106,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,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,122,101,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,78,114,226,0,0,0,114,227, - 0,0,0,115,4,0,0,0,32,32,32,32,114,7,0,0, - 0,114,228,0,0,0,174,5,0,0,115,14,0,0,0,6, - 8,2,2,4,254,12,3,8,1,4,1,6,1,114,9,0, - 0,0,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,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,15,0,0,0,115, - 28,0,0,0,100,1,100,2,108,0,109,1,125,2,1,0, - 124,2,106,2,124,0,105,0,124,1,164,1,142,1,83,0, - 41,4,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,78,41,3,90,18,105,109,112,111,114,116,108,105,98, - 46,109,101,116,97,100,97,116,97,114,89,1,0,0,218,18, - 102,105,110,100,95,100,105,115,116,114,105,98,117,116,105,111, - 110,115,41,3,114,144,0,0,0,114,145,0,0,0,114,89, - 1,0,0,115,3,0,0,0,32,32,32,114,7,0,0,0, - 114,90,1,0,0,190,5,0,0,115,4,0,0,0,12,10, - 16,1,114,9,0,0,0,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,114,69,0,0,0,114,229,0,0,0, - 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,75,1,0,0, - 114,81,1,0,0,114,233,0,0,0,114,84,1,0,0,114, - 85,1,0,0,114,88,1,0,0,114,225,0,0,0,114,228, - 0,0,0,114,90,1,0,0,114,12,0,0,0,114,9,0, - 0,0,114,7,0,0,0,114,74,1,0,0,48,5,0,0, - 115,36,0,0,0,8,0,4,2,2,2,10,1,2,9,10, - 1,2,12,10,1,2,21,10,1,2,20,12,1,2,31,12, - 1,2,23,12,1,2,15,14,1,114,9,0,0,0,114,74, - 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,0,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,122,112,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,40,41,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, + 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, + 121,116,104,111,110,32,51,46,49,50,59,32,117,115,101,32, + 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, + 101,97,100,78,169,5,114,99,0,0,0,114,100,0,0,0, + 114,101,0,0,0,114,225,0,0,0,114,163,0,0,0,169, + 4,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, + 114,209,0,0,0,115,4,0,0,0,32,32,32,32,114,7, + 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, + 84,3,0,0,115,14,0,0,0,6,7,2,2,4,254,12, + 3,8,1,6,1,4,2,114,9,0,0,0,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,169, + 2,78,78,114,69,0,0,0,41,15,114,149,0,0,0,114, + 148,0,0,0,114,150,0,0,0,114,151,0,0,0,114,218, + 0,0,0,114,217,0,0,0,218,11,95,77,83,95,87,73, + 78,68,79,87,83,218,18,69,88,84,69,78,83,73,79,78, + 95,83,85,70,70,73,88,69,83,114,216,0,0,0,218,12, + 115,116,97,116,105,99,109,101,116,104,111,100,114,215,0,0, + 0,218,11,99,108,97,115,115,109,101,116,104,111,100,114,222, + 0,0,0,114,225,0,0,0,114,228,0,0,0,114,12,0, + 0,0,114,9,0,0,0,114,7,0,0,0,114,213,0,0, + 0,34,3,0,0,115,30,0,0,0,8,0,4,2,2,3, + 2,255,2,4,2,255,12,3,2,2,10,1,2,6,10,1, + 2,14,12,1,2,15,16,1,114,9,0,0,0,114,213,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,0,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,4, + 0,0,0,3,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,31,124,4,100,5,107,3,83,0,41,7,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,3,0, + 0,0,114,97,0,0,0,114,0,0,0,0,114,45,0,0, + 0,218,8,95,95,105,110,105,116,95,95,78,41,4,114,73, + 0,0,0,114,202,0,0,0,114,125,0,0,0,114,104,0, + 0,0,41,5,114,143,0,0,0,114,162,0,0,0,114,120, + 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,115,5,0, + 0,0,32,32,32,32,32,114,7,0,0,0,114,205,0,0, + 0,106,3,0,0,115,8,0,0,0,18,3,16,1,14,1, + 16,1,114,9,0,0,0,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,1,0, + 0,0,3,0,0,0,114,24,0,0,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,12,0,0,0,169, + 2,114,143,0,0,0,114,209,0,0,0,115,2,0,0,0, + 32,32,114,7,0,0,0,218,13,99,114,101,97,116,101,95, + 109,111,100,117,108,101,114,3,0,0,243,2,0,0,0,4, + 0,114,9,0,0,0,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, + 5,0,0,0,3,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, + 18,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,142,0,0,0,114,89,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,143,0,0,0, + 218,6,109,111,100,117,108,101,114,187,0,0,0,115,3,0, + 0,0,32,32,32,114,7,0,0,0,218,11,101,120,101,99, + 95,109,111,100,117,108,101,117,3,0,0,115,12,0,0,0, + 12,2,8,1,4,1,8,1,4,255,20,2,114,9,0,0, + 0,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,4,0,0,0,3,0,0, + 0,115,12,0,0,0,116,0,160,1,124,0,124,1,161,2, + 83,0,41,2,122,26,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, + 78,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,143,0, + 0,0,114,162,0,0,0,115,2,0,0,0,32,32,114,7, + 0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101, + 125,3,0,0,115,2,0,0,0,12,3,114,9,0,0,0, + 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,205,0,0,0,114,238,0,0,0,114,244,0,0, + 0,114,247,0,0,0,114,12,0,0,0,114,9,0,0,0, + 114,7,0,0,0,114,234,0,0,0,101,3,0,0,115,12, + 0,0,0,8,0,4,2,8,3,8,8,8,3,12,8,114, + 9,0,0,0,114,234,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,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,1,0,0,0,3,0, + 0,0,115,4,0,0,0,116,0,130,1,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,143, + 0,0,0,114,65,0,0,0,115,2,0,0,0,32,32,114, + 7,0,0,0,218,10,112,97,116,104,95,109,116,105,109,101, + 133,3,0,0,115,2,0,0,0,4,6,114,9,0,0,0, + 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,4,0,0,0,3,0,0,0,115,14, + 0,0,0,100,1,124,0,160,0,124,1,161,1,105,1,83, + 0,41,3,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,192,0,0,0,78,41,1,114,250, + 0,0,0,114,249,0,0,0,115,2,0,0,0,32,32,114, + 7,0,0,0,218,10,112,97,116,104,95,115,116,97,116,115, + 141,3,0,0,115,2,0,0,0,14,12,114,9,0,0,0, + 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,3,0,0,0,115,12, + 0,0,0,124,0,160,0,124,2,124,3,161,2,83,0,41, + 2,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,78,41,1,218,8,115,101,116,95, + 100,97,116,97,41,4,114,143,0,0,0,114,134,0,0,0, + 90,10,99,97,99,104,101,95,112,97,116,104,114,42,0,0, + 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, + 15,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101, + 155,3,0,0,115,2,0,0,0,12,8,114,9,0,0,0, + 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,1,0,0,0,3, + 0,0,0,114,24,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114, + 65,0,0,0,114,42,0,0,0,115,3,0,0,0,32,32, + 32,114,7,0,0,0,114,252,0,0,0,165,3,0,0,114, + 239,0,0,0,114,9,0,0,0,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,8,0,0, + 0,3,0,0,0,115,70,0,0,0,124,0,160,0,124,1, + 161,1,125,2,9,0,124,0,160,1,124,2,161,1,125,3, + 116,4,124,3,131,1,83,0,35,0,4,0,116,2,121,34, + 1,0,125,4,1,0,116,3,100,1,124,1,100,2,141,2, + 124,4,130,2,100,3,125,4,126,4,119,1,37,0,119,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,140,0,0,0,78,41,5,114,202,0,0,0,218,8, + 103,101,116,95,100,97,116,97,114,76,0,0,0,114,142,0, + 0,0,114,199,0,0,0,41,5,114,143,0,0,0,114,162, + 0,0,0,114,65,0,0,0,114,197,0,0,0,218,3,101, + 120,99,115,5,0,0,0,32,32,32,32,32,114,7,0,0, + 0,218,10,103,101,116,95,115,111,117,114,99,101,172,3,0, + 0,115,26,0,0,0,10,2,2,1,10,1,8,4,2,128, + 12,253,4,1,2,1,4,255,2,1,2,255,10,128,2,255, + 115,20,0,0,0,134,5,15,0,143,7,33,7,150,7,29, + 7,157,4,33,7,162,1,33,7,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,130,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,9,0,0,0,3,0,0,0,115,22,0,0,0,116,0, + 160,1,116,2,124,1,124,2,100,1,100,2,124,3,100,3, + 166,6,83,0,41,5,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,108,0,0,0,78,41,3,114,158,0,0,0,114,241,0, + 0,0,218,7,99,111,109,112,105,108,101,41,4,114,143,0, + 0,0,114,42,0,0,0,114,65,0,0,0,114,1,1,0, + 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, + 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,182, + 3,0,0,115,6,0,0,0,12,5,4,1,6,255,114,9, + 0,0,0,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,9,0,0, + 0,3,0,0,0,115,28,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,9,0,116,1,124,2,131,1, + 125,8,110,13,35,0,4,0,116,2,144,1,121,13,1,0, + 1,0,1,0,100,1,125,8,89,0,110,147,37,0,9,0, + 124,0,160,3,124,2,161,1,125,9,110,11,35,0,4,0, + 116,4,144,1,121,12,1,0,1,0,1,0,89,0,110,129, + 37,0,116,5,124,9,100,4,25,0,131,1,125,3,9,0, + 124,0,160,6,124,8,161,1,125,10,110,11,35,0,4,0, + 116,4,144,1,121,11,1,0,1,0,1,0,89,0,110,105, + 37,0,124,1,124,8,100,5,156,2,125,11,9,0,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,114,141,124,12,100,9,64,0, + 100,8,107,3,125,7,116,9,106,10,100,10,107,3,114,140, + 124,7,115,122,116,9,106,10,100,11,107,2,114,140,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,10,116,14,124,10,124,3,124,9,100,12,25,0, + 124,1,124,11,131,5,1,0,110,13,35,0,4,0,116,15, + 116,16,102,2,144,1,121,10,1,0,1,0,1,0,89,0, + 110,16,37,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,114,189,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,1,115,7,124,8,100,1,117,1,144,1,114,7,124,3, + 100,1,117,1,144,1,114,7,124,6,114,233,124,5,100,1, + 117,0,114,226,116,9,160,11,124,4,161,1,125,5,116,23, + 124,14,124,5,124,7,131,3,125,10,110,8,116,24,124,14, + 124,3,116,25,124,4,131,1,131,3,125,10,9,0,124,0, + 160,26,124,2,124,8,124,10,161,3,1,0,124,14,83,0, + 35,0,4,0,116,2,144,1,121,9,1,0,1,0,1,0, + 89,0,124,14,83,0,37,0,124,14,83,0,119,0,119,0, + 119,0,119,0,119,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,192,0,0,0, + 114,182,0,0,0,114,168,0,0,0,114,3,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, + 141,0,0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114, + 107,0,0,0,114,251,0,0,0,114,76,0,0,0,114,34, + 0,0,0,114,254,0,0,0,114,175,0,0,0,218,10,109, + 101,109,111,114,121,118,105,101,119,114,186,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,180,0,0,0,218,17,95,82,65,87, + 95,77,65,71,73,67,95,78,85,77,66,69,82,114,181,0, + 0,0,114,179,0,0,0,114,142,0,0,0,114,173,0,0, + 0,114,158,0,0,0,114,172,0,0,0,114,188,0,0,0, + 114,4,1,0,0,114,16,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, + 194,0,0,0,114,193,0,0,0,114,4,0,0,0,114,253, + 0,0,0,41,15,114,143,0,0,0,114,162,0,0,0,114, + 134,0,0,0,114,177,0,0,0,114,197,0,0,0,114,180, + 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,132,0, + 0,0,218,2,115,116,114,42,0,0,0,114,174,0,0,0, + 114,17,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,115,15, + 0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,114,7,0,0,0,114,240,0,0,0,190,3,0,0, + 115,188,0,0,0,10,7,4,1,4,1,4,1,4,1,4, + 1,2,1,10,1,2,128,14,1,8,1,2,128,2,2,12, + 1,2,128,14,1,4,1,2,128,12,2,2,1,12,1,2, + 128,14,1,4,1,2,128,2,3,2,1,6,254,2,4,12, + 1,16,1,12,1,4,1,12,1,10,1,2,1,2,255,8, + 2,2,254,10,3,4,1,2,1,2,1,4,254,8,4,2, + 1,4,255,2,128,2,3,2,1,2,1,6,1,2,1,2, + 1,4,251,4,128,18,7,4,1,2,128,8,2,2,1,4, + 255,6,2,2,1,2,1,6,254,8,3,10,1,12,1,12, + 1,18,1,6,1,4,255,4,2,8,1,10,1,14,1,6, + 2,6,1,4,255,2,2,14,1,4,3,2,128,14,254,2, + 1,4,1,2,128,4,0,2,254,2,233,2,225,2,250,2, + 251,115,80,0,0,0,144,4,21,0,149,10,33,7,163,5, + 41,0,169,8,51,7,187,5,65,1,0,193,1,8,65,11, + 7,193,18,65,5,66,24,0,194,24,10,66,36,7,195,50, + 7,67,59,0,195,59,8,68,6,7,196,9,1,68,6,7, + 196,10,1,66,36,7,196,11,1,65,11,7,196,12,1,51, + 7,196,13,1,33,7,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, + 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,12,0,0,0,114,9,0,0,0,114,7,0,0, + 0,114,248,0,0,0,131,3,0,0,115,16,0,0,0,8, + 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, + 9,0,0,0,114,248,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,94, + 0,0,0,135,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,136,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,136,0,4,0,90,12,83, + 0,41,16,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,2,0,0,0,3,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,182,0,0,0,41,3,114,143,0,0,0,114,162, + 0,0,0,114,65,0,0,0,115,3,0,0,0,32,32,32, + 114,7,0,0,0,114,235,0,0,0,24,4,0,0,115,4, + 0,0,0,6,3,10,1,114,9,0,0,0,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,3,0,0,0,243,24,0,0,0,124,0,106,0,124, + 1,106,0,107,2,111,11,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,143,0,0, + 0,90,5,111,116,104,101,114,115,2,0,0,0,32,32,114, + 7,0,0,0,218,6,95,95,101,113,95,95,30,4,0,0, + 243,6,0,0,0,12,1,10,1,2,255,114,9,0,0,0, + 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, + 3,0,0,0,3,0,0,0,243,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,141, + 0,0,0,114,65,0,0,0,169,1,114,143,0,0,0,115, + 1,0,0,0,32,114,7,0,0,0,218,8,95,95,104,97, + 115,104,95,95,34,4,0,0,243,2,0,0,0,20,1,114, + 9,0,0,0,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,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,2,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,41,3,218,5, + 115,117,112,101,114,114,10,1,0,0,114,247,0,0,0,41, + 3,114,143,0,0,0,114,162,0,0,0,114,13,1,0,0, + 115,3,0,0,0,32,32,128,114,7,0,0,0,114,247,0, + 0,0,37,4,0,0,115,2,0,0,0,16,10,114,9,0, + 0,0,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,1,0,0,0,3,0,0,0,243, + 6,0,0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246, + 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, + 202,0,0,0,49,4,0,0,243,2,0,0,0,6,3,114, + 9,0,0,0,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,9,0,0,0,3,0, + 0,0,115,136,0,0,0,116,0,124,0,116,1,116,2,102, + 2,131,2,114,38,116,3,160,4,116,5,124,1,131,1,161, + 1,53,0,125,2,124,2,160,6,161,0,2,0,100,1,4, + 0,4,0,131,3,1,0,83,0,35,0,49,0,115,30,119, + 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,100, + 1,83,0,116,3,160,7,124,1,100,2,161,2,53,0,125, + 2,124,2,160,6,161,0,2,0,100,1,4,0,4,0,131, + 3,1,0,83,0,35,0,49,0,115,60,119,4,37,0,1, + 0,1,0,1,0,89,0,1,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,184,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, + 91,0,0,0,90,9,111,112,101,110,95,99,111,100,101,114, + 109,0,0,0,90,4,114,101,97,100,114,92,0,0,0,41, + 3,114,143,0,0,0,114,65,0,0,0,114,94,0,0,0, + 115,3,0,0,0,32,32,32,114,7,0,0,0,114,254,0, + 0,0,54,4,0,0,115,22,0,0,0,14,2,16,1,6, + 1,22,255,2,128,16,0,14,3,6,1,22,255,2,128,16, + 0,115,24,0,0,0,142,4,25,3,153,4,29,11,158,3, + 29,11,172,4,55,3,183,4,59,11,188,3,59,11,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,115,20,0,0,0,100,1,100, + 2,108,0,109,1,125,2,1,0,124,2,124,0,131,1,83, + 0,41,3,78,114,0,0,0,0,41,1,218,10,70,105,108, + 101,82,101,97,100,101,114,41,2,218,17,105,109,112,111,114, + 116,108,105,98,46,114,101,97,100,101,114,115,114,29,1,0, + 0,41,3,114,143,0,0,0,114,243,0,0,0,114,29,1, + 0,0,115,3,0,0,0,32,32,32,114,7,0,0,0,218, + 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, + 97,100,101,114,63,4,0,0,115,4,0,0,0,12,2,8, + 1,114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0, + 0,0,114,150,0,0,0,114,151,0,0,0,114,235,0,0, + 0,114,15,1,0,0,114,21,1,0,0,114,159,0,0,0, + 114,247,0,0,0,114,202,0,0,0,114,254,0,0,0,114, + 31,1,0,0,90,13,95,95,99,108,97,115,115,99,101,108, + 108,95,95,41,1,114,13,1,0,0,115,1,0,0,0,64, + 114,7,0,0,0,114,10,1,0,0,19,4,0,0,115,24, + 0,0,0,10,128,4,2,8,3,8,6,8,4,2,3,14, + 1,2,11,10,1,8,4,2,9,18,1,114,9,0,0,0, + 114,10,1,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,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, - 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, - 6,0,0,0,7,0,0,0,115,114,0,0,0,135,5,103, - 0,125,3,124,2,68,0,93,16,92,2,138,5,125,4,124, - 3,160,0,136,5,102,1,100,1,100,2,132,8,124,4,68, - 0,131,1,161,1,1,0,113,5,124,3,124,0,95,1,124, - 1,112,28,100,3,124,0,95,2,116,3,124,0,106,2,131, - 1,115,44,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,3,0,0,0,51,0, - 0,0,115,24,0,0,0,129,0,124,0,93,7,125,1,124, - 1,137,2,102,2,86,0,1,0,113,2,100,0,83,0,114, - 69,0,0,0,114,12,0,0,0,41,3,114,5,0,0,0, - 114,41,1,0,0,114,163,0,0,0,115,3,0,0,0,32, - 32,128,114,7,0,0,0,114,8,0,0,0,219,5,0,0, - 115,4,0,0,0,2,128,22,0,114,9,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,97,0,0,0,114,130,0,0,0, - 78,41,11,114,190,0,0,0,218,8,95,108,111,97,100,101, - 114,115,114,65,0,0,0,114,86,0,0,0,114,67,0,0, - 0,114,19,0,0,0,114,82,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, - 6,114,143,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,211,0,0,0,114,163,0,0,0,115,6, - 0,0,0,32,32,32,32,32,64,114,7,0,0,0,114,235, - 0,0,0,213,5,0,0,115,22,0,0,0,2,128,4,4, - 12,1,26,1,6,1,10,2,10,1,18,1,6,1,8,1, - 12,1,114,9,0,0,0,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, + 46,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,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,3,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,192,0,0,0,114,5,1, + 0,0,78,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, + 143,0,0,0,114,65,0,0,0,114,9,1,0,0,115,3, + 0,0,0,32,32,32,114,7,0,0,0,114,251,0,0,0, + 73,4,0,0,115,4,0,0,0,8,2,14,1,114,9,0, + 0,0,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,6,0,0,0, + 3,0,0,0,115,24,0,0,0,116,0,124,1,131,1,125, + 4,124,0,160,1,124,2,124,3,124,4,100,1,166,3,83, + 0,41,2,78,169,1,218,5,95,109,111,100,101,41,2,114, + 139,0,0,0,114,252,0,0,0,41,5,114,143,0,0,0, + 114,134,0,0,0,114,132,0,0,0,114,42,0,0,0,114, + 78,0,0,0,115,5,0,0,0,32,32,32,32,32,114,7, + 0,0,0,114,253,0,0,0,78,4,0,0,115,4,0,0, + 0,8,2,16,1,114,9,0,0,0,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,87,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,3,0,0,0,115,250,0,0,0, + 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, + 124,4,114,31,116,1,124,4,131,1,115,31,116,0,124,4, + 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, + 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, + 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, + 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, + 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, + 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, + 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, + 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, + 126,8,119,1,37,0,9,0,116,11,124,1,124,2,124,3, + 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, + 100,2,83,0,35,0,4,0,116,8,121,123,1,0,125,8, + 1,0,116,9,160,10,100,1,124,1,124,8,161,3,1,0, + 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, + 126,8,119,1,37,0,119,0,119,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,73,0,0,0,114,83,0,0, + 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, + 114,67,0,0,0,114,19,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,172,0,0, + 0,114,95,0,0,0,41,9,114,143,0,0,0,114,65,0, + 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, + 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, + 0,0,0,114,255,0,0,0,115,9,0,0,0,32,32,32, + 32,32,32,32,32,32,114,7,0,0,0,114,252,0,0,0, + 83,4,0,0,115,60,0,0,0,12,2,4,1,12,2,12, + 1,10,1,12,254,12,4,10,1,2,1,12,1,2,128,12, + 1,4,2,12,1,6,3,4,1,4,255,14,2,10,128,2, + 1,12,1,16,1,2,128,12,1,8,2,2,1,16,255,10, + 128,2,254,2,247,115,62,0,0,0,171,5,49,2,177,7, + 65,18,9,186,6,65,18,9,193,0,7,65,14,9,193,14, + 4,65,18,9,193,20,12,65,34,0,193,34,7,65,58,7, + 193,41,7,65,54,7,193,54,4,65,58,7,193,59,1,65, + 58,7,193,60,1,65,18,9,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,251,0,0,0,114, + 253,0,0,0,114,252,0,0,0,114,12,0,0,0,114,9, + 0,0,0,114,7,0,0,0,114,32,1,0,0,69,4,0, + 0,115,10,0,0,0,8,0,4,2,8,2,8,5,18,5, + 114,9,0,0,0,114,32,1,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,0,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,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,3,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,182,0,0, + 0,114,168,0,0,0,41,2,114,141,0,0,0,114,132,0, + 0,0,41,5,114,202,0,0,0,114,254,0,0,0,114,175, + 0,0,0,114,188,0,0,0,114,6,1,0,0,41,5,114, + 143,0,0,0,114,162,0,0,0,114,65,0,0,0,114,42, + 0,0,0,114,174,0,0,0,115,5,0,0,0,32,32,32, + 32,32,114,7,0,0,0,114,240,0,0,0,118,4,0,0, + 115,22,0,0,0,10,1,10,1,2,4,2,1,6,254,12, + 4,2,1,14,1,2,1,2,1,6,253,114,9,0,0,0, + 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,1,0,0,0, + 3,0,0,0,114,24,0,0,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,12,0,0,0,114,246,0,0,0,115, + 2,0,0,0,32,32,114,7,0,0,0,114,0,1,0,0, + 134,4,0,0,114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0, + 114,12,0,0,0,114,9,0,0,0,114,7,0,0,0,114, + 39,1,0,0,114,4,0,0,115,8,0,0,0,8,0,4, + 2,8,2,12,16,114,9,0,0,0,114,39,1,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 0,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,28,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,2,0,0,0,3,0,0,0, + 115,16,0,0,0,124,1,124,0,95,0,124,2,124,0,95, + 1,100,0,83,0,114,69,0,0,0,114,182,0,0,0,41, + 3,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, + 115,3,0,0,0,32,32,32,114,7,0,0,0,114,235,0, + 0,0,147,4,0,0,115,4,0,0,0,6,1,10,1,114, + 9,0,0,0,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,3,0,0,0,114,11,1,0,0,114,69,0,0, + 0,114,12,1,0,0,114,14,1,0,0,115,2,0,0,0, + 32,32,114,7,0,0,0,114,15,1,0,0,151,4,0,0, + 114,16,1,0,0,114,9,0,0,0,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,3,0,0,0,3,0,0,0,114,17,1,0,0, + 114,69,0,0,0,114,18,1,0,0,114,20,1,0,0,115, + 1,0,0,0,32,114,7,0,0,0,114,21,1,0,0,155, + 4,0,0,114,22,1,0,0,114,9,0,0,0,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,5,0,0,0,3,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,3,122,40,67,114,101, + 97,116,101,32,97,110,32,117,110,105,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,78,41,7, + 114,158,0,0,0,114,241,0,0,0,114,186,0,0,0,90, + 14,99,114,101,97,116,101,95,100,121,110,97,109,105,99,114, + 172,0,0,0,114,141,0,0,0,114,65,0,0,0,41,3, + 114,143,0,0,0,114,209,0,0,0,114,243,0,0,0,115, + 3,0,0,0,32,32,32,114,7,0,0,0,114,238,0,0, + 0,158,4,0,0,115,14,0,0,0,4,2,6,1,4,255, + 6,2,8,1,4,255,4,2,114,9,0,0,0,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,5,0,0, + 0,3,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,241,0,0,0,114,186,0,0,0,90,12,101,120, + 101,99,95,100,121,110,97,109,105,99,114,172,0,0,0,114, + 141,0,0,0,114,65,0,0,0,169,2,114,143,0,0,0, + 114,243,0,0,0,115,2,0,0,0,32,32,114,7,0,0, + 0,114,244,0,0,0,166,4,0,0,115,8,0,0,0,14, + 2,6,1,8,1,8,255,114,9,0,0,0,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,4,0,0,0,3,0, + 0,0,115,38,0,0,0,135,2,116,0,124,0,106,1,131, + 1,100,1,25,0,138,2,116,2,136,2,102,1,100,2,100, + 3,132,8,116,3,68,0,131,1,131,1,83,0,41,5,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,3,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,51,0,0,0,115,28,0,0, + 0,129,0,124,0,93,9,125,1,137,2,100,0,124,1,23, + 0,107,2,86,0,1,0,113,2,100,1,83,0,41,2,114, + 235,0,0,0,78,114,12,0,0,0,41,3,114,5,0,0, + 0,218,6,115,117,102,102,105,120,218,9,102,105,108,101,95, + 110,97,109,101,115,3,0,0,0,32,32,128,114,7,0,0, + 0,114,8,0,0,0,175,4,0,0,115,8,0,0,0,2, + 128,4,0,2,1,20,255,114,9,0,0,0,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,46,60,108,111, + 99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,78, + 41,4,114,73,0,0,0,114,65,0,0,0,218,3,97,110, + 121,114,231,0,0,0,41,3,114,143,0,0,0,114,162,0, + 0,0,114,42,1,0,0,115,3,0,0,0,32,32,64,114, + 7,0,0,0,114,205,0,0,0,172,4,0,0,115,10,0, + 0,0,2,128,14,2,12,1,2,1,8,255,114,9,0,0, + 0,122,30,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,1,0, + 0,0,3,0,0,0,114,24,0,0,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, + 12,0,0,0,114,246,0,0,0,115,2,0,0,0,32,32, + 114,7,0,0,0,114,240,0,0,0,178,4,0,0,114,25, + 0,0,0,114,9,0,0,0,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,1,0,0,0,3,0,0,0,114,24,0,0,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,12,0,0,0,114, + 246,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, + 114,0,1,0,0,182,4,0,0,114,25,0,0,0,114,9, + 0,0,0,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, + 1,0,0,0,3,0,0,0,114,24,1,0,0,114,25,1, + 0,0,114,74,0,0,0,114,246,0,0,0,115,2,0,0, + 0,32,32,114,7,0,0,0,114,202,0,0,0,186,4,0, + 0,114,26,1,0,0,114,9,0,0,0,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,235,0,0,0,114,15,1,0,0,114,21, + 1,0,0,114,238,0,0,0,114,244,0,0,0,114,205,0, + 0,0,114,240,0,0,0,114,0,1,0,0,114,159,0,0, + 0,114,202,0,0,0,114,12,0,0,0,114,9,0,0,0, + 114,7,0,0,0,114,28,1,0,0,139,4,0,0,115,24, + 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, + 8,8,6,8,6,8,4,2,4,14,1,114,9,0,0,0, + 114,28,1,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,0,0,0,0,115,104,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,100,18,100,19,132, + 0,90,12,100,20,100,21,132,0,90,13,100,22,100,23,132, + 0,90,14,100,24,83,0,41,25,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,99,4,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,3,0,0,0,115,36,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,3,124,0,95,5,100,0, + 83,0,114,69,0,0,0,41,6,218,5,95,110,97,109,101, + 218,5,95,112,97,116,104,114,136,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,12,95,112,97,116,104,95,102,105,110,100,101,114,169, + 4,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, + 90,11,112,97,116,104,95,102,105,110,100,101,114,115,4,0, + 0,0,32,32,32,32,114,7,0,0,0,114,235,0,0,0, + 199,4,0,0,115,8,0,0,0,6,1,6,1,14,1,10, + 1,114,9,0,0,0,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,3,0,0,0, + 3,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,15,100,3,83,0,124,1,100,4,102,2,83,0,41, + 6,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,97,0,0,0,114,10,0,0,0,41,2,114,16,0, + 0,0,114,65,0,0,0,90,8,95,95,112,97,116,104,95, + 95,78,41,2,114,45,1,0,0,114,104,0,0,0,41,4, + 114,143,0,0,0,114,38,1,0,0,218,3,100,111,116,90, + 2,109,101,115,4,0,0,0,32,32,32,32,114,7,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,205,4,0,0,115,8, + 0,0,0,18,2,8,1,4,2,8,3,114,9,0,0,0, + 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,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,52,1,0,0,114,154,0,0,0,114, + 16,0,0,0,218,7,109,111,100,117,108,101,115,41,3,114, + 143,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,115,3,0,0,0,32,32,32, + 114,7,0,0,0,114,47,1,0,0,215,4,0,0,115,4, + 0,0,0,12,1,16,1,114,9,0,0,0,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,4,0,0,0,3,0, + 0,0,115,80,0,0,0,116,0,124,0,160,1,161,0,131, + 1,125,1,124,1,124,0,106,2,107,3,114,37,124,0,160, + 3,124,0,106,4,124,1,161,2,125,2,124,2,100,0,117, + 1,114,34,124,2,106,5,100,0,117,0,114,34,124,2,106, + 6,114,34,124,2,106,6,124,0,95,7,124,1,124,0,95, + 2,124,0,106,7,83,0,114,69,0,0,0,41,8,114,136, + 0,0,0,114,47,1,0,0,114,48,1,0,0,114,49,1, + 0,0,114,45,1,0,0,114,163,0,0,0,114,201,0,0, + 0,114,46,1,0,0,41,3,114,143,0,0,0,90,11,112, + 97,114,101,110,116,95,112,97,116,104,114,209,0,0,0,115, + 3,0,0,0,32,32,32,114,7,0,0,0,218,12,95,114, + 101,99,97,108,99,117,108,97,116,101,219,4,0,0,115,16, + 0,0,0,12,2,10,1,14,1,18,3,6,1,8,1,6, + 1,6,1,114,9,0,0,0,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,3,0,0,0,3,0,0,0,243,12,0,0,0,116, + 0,124,0,160,1,161,0,131,1,83,0,114,69,0,0,0, + 41,2,218,4,105,116,101,114,114,54,1,0,0,114,20,1, + 0,0,115,1,0,0,0,32,114,7,0,0,0,218,8,95, + 95,105,116,101,114,95,95,232,4,0,0,243,2,0,0,0, + 12,1,114,9,0,0,0,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,3,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,54,1, + 0,0,41,2,114,143,0,0,0,218,5,105,110,100,101,120, + 115,2,0,0,0,32,32,114,7,0,0,0,218,11,95,95, + 103,101,116,105,116,101,109,95,95,235,4,0,0,114,58,1, + 0,0,114,9,0,0,0,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,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,46,1,0,0,41,3,114,143,0,0,0,114,60, + 1,0,0,114,65,0,0,0,115,3,0,0,0,32,32,32, + 114,7,0,0,0,218,11,95,95,115,101,116,105,116,101,109, + 95,95,238,4,0,0,115,2,0,0,0,14,1,114,9,0, + 0,0,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,3,0,0,0,3, + 0,0,0,114,55,1,0,0,114,69,0,0,0,41,2,114, + 4,0,0,0,114,54,1,0,0,114,20,1,0,0,115,1, + 0,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, + 95,95,241,4,0,0,114,58,1,0,0,114,9,0,0,0, + 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,3,0,0,0,3,0,0,0,243,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,89,0,0,0,114,46, + 1,0,0,114,20,1,0,0,115,1,0,0,0,32,114,7, + 0,0,0,218,8,95,95,114,101,112,114,95,95,244,4,0, + 0,114,58,1,0,0,114,9,0,0,0,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,3,0,0,0,3,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,143,0,0,0,218,4,105,116,101, + 109,115,2,0,0,0,32,32,114,7,0,0,0,218,12,95, + 95,99,111,110,116,97,105,110,115,95,95,247,4,0,0,114, + 58,1,0,0,114,9,0,0,0,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,3,0,0,0,3,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,46,1,0,0,114,61,0,0, + 0,114,66,1,0,0,115,2,0,0,0,32,32,114,7,0, + 0,0,114,61,0,0,0,250,4,0,0,243,2,0,0,0, + 16,1,114,9,0,0,0,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, + 15,114,149,0,0,0,114,148,0,0,0,114,150,0,0,0, + 114,151,0,0,0,114,235,0,0,0,114,52,1,0,0,114, + 47,1,0,0,114,54,1,0,0,114,57,1,0,0,114,61, + 1,0,0,114,62,1,0,0,114,63,1,0,0,114,65,1, + 0,0,114,68,1,0,0,114,61,0,0,0,114,12,0,0, + 0,114,9,0,0,0,114,7,0,0,0,114,44,1,0,0, + 192,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, + 6,8,10,8,4,8,13,8,3,8,3,8,3,8,3,8, + 3,12,3,114,9,0,0,0,114,44,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0, + 0,0,115,88,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,100,18,132,0,90,12,100,19,83,0,41, + 20,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,3,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,44,1,0,0,114,46,1,0,0, + 114,50,1,0,0,115,4,0,0,0,32,32,32,32,114,7, + 0,0,0,114,235,0,0,0,0,5,0,0,115,2,0,0, + 0,18,1,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,3,0,0,0,115,24,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, + 4,161,1,83,0,41,4,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,82,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,40,41,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, + 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, + 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, + 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,78,41,5,114,99, + 0,0,0,114,100,0,0,0,114,101,0,0,0,114,89,0, + 0,0,114,149,0,0,0,41,1,114,243,0,0,0,115,1, + 0,0,0,32,114,7,0,0,0,218,11,109,111,100,117,108, + 101,95,114,101,112,114,3,5,0,0,115,8,0,0,0,6, + 7,2,1,4,255,12,2,114,9,0,0,0,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,1,0,0,0,3,0,0,0,114, + 24,0,0,0,41,2,78,84,114,12,0,0,0,114,246,0, + 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,205, + 0,0,0,14,5,0,0,243,2,0,0,0,4,1,114,9, + 0,0,0,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,1,0,0, + 0,3,0,0,0,114,24,0,0,0,41,2,78,114,10,0, + 0,0,114,12,0,0,0,114,246,0,0,0,115,2,0,0, + 0,32,32,114,7,0,0,0,114,0,1,0,0,17,5,0, + 0,114,72,1,0,0,114,9,0,0,0,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,6,0,0,0,3,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,10,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,115,2,0, + 0,0,32,32,114,7,0,0,0,114,240,0,0,0,20,5, + 0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,3,0,0,0,114,24,0,0, + 0,114,236,0,0,0,114,12,0,0,0,114,237,0,0,0, + 115,2,0,0,0,32,32,114,7,0,0,0,114,238,0,0, + 0,23,5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0, + 3,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, + 0,0,114,12,0,0,0,114,40,1,0,0,115,2,0,0, + 0,32,32,114,7,0,0,0,114,244,0,0,0,26,5,0, + 0,114,72,1,0,0,114,9,0,0,0,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,4,0,0,0,3,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,3,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,78,41,4,114,158, + 0,0,0,114,172,0,0,0,114,46,1,0,0,114,245,0, + 0,0,114,246,0,0,0,115,2,0,0,0,32,32,114,7, + 0,0,0,114,247,0,0,0,29,5,0,0,115,8,0,0, + 0,6,7,4,1,4,255,12,3,114,9,0,0,0,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,99,2,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,3,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,130,0,0,0,78,41,1,114,93,1,0,0, - 114,20,1,0,0,115,1,0,0,0,32,114,7,0,0,0, - 114,75,1,0,0,229,5,0,0,114,81,0,0,0,114,9, - 0,0,0,122,28,70,105,108,101,70,105,110,100,101,114,46, + 0,115,22,0,0,0,100,1,100,2,108,0,109,1,125,2, + 1,0,124,2,124,0,106,2,131,1,83,0,41,3,78,114, + 0,0,0,0,41,1,218,15,78,97,109,101,115,112,97,99, + 101,82,101,97,100,101,114,41,3,114,30,1,0,0,114,73, + 1,0,0,114,46,1,0,0,41,3,114,143,0,0,0,114, + 243,0,0,0,114,73,1,0,0,115,3,0,0,0,32,32, + 32,114,7,0,0,0,114,31,1,0,0,41,5,0,0,115, + 4,0,0,0,12,1,10,1,114,9,0,0,0,122,36,95, + 78,97,109,101,115,112,97,99,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,78,41,13,114,149,0,0,0,114,148,0,0,0, + 114,150,0,0,0,114,235,0,0,0,114,232,0,0,0,114, + 71,1,0,0,114,205,0,0,0,114,0,1,0,0,114,240, + 0,0,0,114,238,0,0,0,114,244,0,0,0,114,247,0, + 0,0,114,31,1,0,0,114,12,0,0,0,114,9,0,0, + 0,114,7,0,0,0,114,70,1,0,0,255,4,0,0,115, + 22,0,0,0,8,0,8,1,2,3,10,1,8,10,8,3, + 8,3,8,3,8,3,8,3,12,12,114,9,0,0,0,114, + 70,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,0,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,7,100,6,100,7,132,0,131,1,90,8,101,7, + 100,8,100,9,132,0,131,1,90,9,101,7,100,19,100,11, + 100,12,132,1,131,1,90,10,101,7,100,20,100,13,100,14, + 132,1,131,1,90,11,101,7,100,19,100,15,100,16,132,1, + 131,1,90,12,101,4,100,17,100,18,132,0,131,1,90,13, + 100,10,83,0,41,21,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,0,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,3,0,0,0,115,64,0,0,0,116,0,116,1, + 106,2,160,3,161,0,131,1,68,0,93,22,92,2,125,0, + 125,1,124,1,100,1,117,0,114,20,116,1,106,2,124,0, + 61,0,113,7,116,4,124,1,100,2,131,2,114,29,124,1, + 160,5,161,0,1,0,113,7,100,1,83,0,41,3,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,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,115,54,0,0,0,116,0,160,1,100, - 1,116,2,161,2,1,0,124,0,160,3,124,1,161,1,125, - 2,124,2,100,2,117,0,114,19,100,2,103,0,102,2,83, - 0,124,2,106,4,124,2,106,5,112,25,103,0,102,2,83, - 0,41,3,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,122,101,70,105,108,101, - 70,105,110,100,101,114,46,102,105,110,100,95,108,111,97,100, - 101,114,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, - 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, - 100,78,41,6,114,99,0,0,0,114,100,0,0,0,114,101, - 0,0,0,114,225,0,0,0,114,163,0,0,0,114,201,0, - 0,0,41,3,114,143,0,0,0,114,162,0,0,0,114,209, - 0,0,0,115,3,0,0,0,32,32,32,114,7,0,0,0, - 114,160,0,0,0,235,5,0,0,115,14,0,0,0,6,7, - 2,2,4,254,10,3,8,1,8,1,16,1,114,9,0,0, - 0,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,6,0,0,0,3,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,200,0,0,0,41,1,114,212,0,0,0,41,7,114,143, - 0,0,0,114,210,0,0,0,114,162,0,0,0,114,65,0, - 0,0,90,4,115,109,115,108,114,224,0,0,0,114,163,0, - 0,0,115,7,0,0,0,32,32,32,32,32,32,32,114,7, - 0,0,0,114,88,1,0,0,250,5,0,0,115,8,0,0, - 0,10,1,8,1,2,1,6,255,114,9,0,0,0,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,9,0,0,0,3,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,9,0,116,1,124,0,106,2,112,17,116,3,160,4,161, - 0,131,1,106,5,125,5,110,12,35,0,4,0,116,6,121, - 190,1,0,1,0,1,0,100,4,125,5,89,0,110,1,37, - 0,124,5,124,0,106,7,107,3,114,45,124,0,160,8,161, - 0,1,0,124,5,124,0,95,7,116,9,131,0,114,56,124, - 0,106,10,125,6,124,4,160,11,161,0,125,7,110,5,124, - 0,106,12,125,6,124,4,125,7,124,7,124,6,118,0,114, - 108,116,13,124,0,106,2,124,4,131,2,125,8,124,0,106, - 14,68,0,93,29,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,103,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,74,116, - 17,124,8,131,1,125,3,124,0,106,14,68,0,93,55,92, - 2,125,9,125,10,9,0,116,13,124,0,106,2,124,4,124, - 9,23,0,131,2,125,12,110,12,35,0,4,0,116,18,121, - 189,1,0,1,0,1,0,89,0,1,0,100,6,83,0,37, - 0,116,19,160,20,100,7,124,12,100,3,100,8,166,3,1, - 0,124,7,124,9,23,0,124,6,118,0,114,166,116,15,124, - 12,131,1,114,166,124,0,160,16,124,10,124,1,124,12,100, - 6,124,2,161,5,2,0,1,0,83,0,113,111,124,3,114, - 187,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,119,0,119,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,97,0,0,0,114,45,0,0,0,114,130,0,0,0, - 114,235,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,104,0,0,0, - 114,75,0,0,0,114,65,0,0,0,114,19,0,0,0,114, - 82,0,0,0,114,33,1,0,0,114,76,0,0,0,114,93, - 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101, - 114,22,0,0,0,114,96,1,0,0,114,131,0,0,0,114, - 95,1,0,0,114,67,0,0,0,114,92,1,0,0,114,80, - 0,0,0,114,88,1,0,0,114,83,0,0,0,114,111,0, - 0,0,114,158,0,0,0,114,172,0,0,0,114,206,0,0, - 0,114,201,0,0,0,41,14,114,143,0,0,0,114,162,0, - 0,0,114,224,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,192,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,210,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,209,0,0,0, - 115,14,0,0,0,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,114,7,0,0,0,114,225,0,0,0,255,5,0, - 0,115,94,0,0,0,4,5,14,1,2,1,22,1,2,128, - 12,1,8,1,2,128,10,1,8,1,6,1,6,2,6,1, - 10,1,6,2,4,1,8,2,12,1,14,1,8,1,10,1, - 8,1,24,1,2,255,8,5,14,2,2,1,18,1,2,128, - 12,1,8,1,2,128,16,1,12,1,8,1,10,1,4,1, - 8,255,2,128,4,2,12,1,12,1,8,1,4,1,4,1, - 2,244,2,228,115,31,0,0,0,138,10,21,0,149,9,32, - 7,193,52,8,65,61,2,193,61,7,66,8,9,194,61,1, - 66,8,9,194,62,1,32,7,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,10,0,0,0,3, - 0,0,0,115,194,0,0,0,124,0,106,0,125,1,9,0, - 116,1,160,2,124,1,112,11,116,1,160,3,161,0,161,1, - 125,2,110,15,35,0,4,0,116,4,116,5,116,6,102,3, - 121,96,1,0,1,0,1,0,103,0,125,2,89,0,110,1, - 37,0,116,7,106,8,160,9,100,1,161,1,115,41,116,10, - 124,2,131,1,124,0,95,11,110,37,116,10,131,0,125,3, - 124,2,68,0,93,28,125,4,124,4,160,12,100,2,161,1, - 92,3,125,5,125,6,125,7,124,6,114,67,100,3,160,13, - 124,5,124,7,160,14,161,0,161,2,125,8,110,2,124,5, - 125,8,124,3,160,15,124,8,161,1,1,0,113,46,124,3, - 124,0,95,11,116,7,106,8,160,9,116,16,161,1,114,94, - 100,4,100,5,132,0,124,2,68,0,131,1,124,0,95,17, - 100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0,114,88,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,19,0,0,0,115,20,0,0,0,104,0,124,0,93, - 6,125,1,124,1,160,0,161,0,146,2,113,2,83,0,114, - 12,0,0,0,41,1,114,131,0,0,0,41,2,114,5,0, - 0,0,90,2,102,110,115,2,0,0,0,32,32,114,7,0, - 0,0,114,14,0,0,0,79,6,0,0,115,2,0,0,0, - 20,0,114,9,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,19,0,0,0,90, - 7,108,105,115,116,100,105,114,114,82,0,0,0,114,82,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,16,0,0,0,114,26,0,0, - 0,114,27,0,0,0,114,94,1,0,0,114,95,1,0,0, - 114,126,0,0,0,114,89,0,0,0,114,131,0,0,0,218, - 3,97,100,100,114,28,0,0,0,114,96,1,0,0,41,9, - 114,143,0,0,0,114,65,0,0,0,90,8,99,111,110,116, - 101,110,116,115,90,21,108,111,119,101,114,95,115,117,102,102, - 105,120,95,99,111,110,116,101,110,116,115,114,67,1,0,0, - 114,141,0,0,0,114,51,1,0,0,114,41,1,0,0,90, - 8,110,101,119,95,110,97,109,101,115,9,0,0,0,32,32, - 32,32,32,32,32,32,32,114,7,0,0,0,114,98,1,0, - 0,50,6,0,0,115,42,0,0,0,6,2,2,1,20,1, - 2,128,18,1,8,3,2,128,12,3,12,1,6,7,8,1, - 16,1,4,1,18,1,4,2,12,1,6,1,12,1,20,1, - 4,255,2,233,115,13,0,0,0,132,9,14,0,142,12,28, - 7,193,32,1,28,7,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,7, - 0,0,0,115,22,0,0,0,135,0,135,1,136,0,136,1, - 102,2,100,1,100,2,132,8,125,2,124,2,83,0,41,4, - 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, + 115,41,6,218,4,108,105,115,116,114,16,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, + 75,1,0,0,41,2,114,141,0,0,0,218,6,102,105,110, + 100,101,114,115,2,0,0,0,32,32,114,7,0,0,0,114, + 75,1,0,0,52,5,0,0,115,14,0,0,0,22,4,8, + 1,10,1,10,1,8,1,2,128,4,252,114,9,0,0,0, + 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,1, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,3, + 0,0,0,115,78,0,0,0,116,0,106,1,100,1,117,1, + 114,14,116,0,106,1,115,14,116,2,160,3,100,2,116,4, + 161,2,1,0,116,0,106,1,68,0,93,18,125,1,9,0, + 124,1,124,0,131,1,2,0,1,0,83,0,35,0,4,0, + 116,5,121,38,1,0,1,0,1,0,89,0,113,17,37,0, + 100,1,83,0,119,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,16,0,0,0,218,10,112,97,116,104,95, + 104,111,111,107,115,114,99,0,0,0,114,100,0,0,0,114, + 161,0,0,0,114,142,0,0,0,41,2,114,65,0,0,0, + 90,4,104,111,111,107,115,2,0,0,0,32,32,114,7,0, + 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,62, + 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, + 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, + 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,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,8,0,0,0,3,0,0,0,115,104,0,0, + 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, + 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, + 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, + 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, + 5,121,50,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,124, + 2,83,0,37,0,119,0,119,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, + 10,0,0,0,78,41,7,114,19,0,0,0,114,82,0,0, + 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, + 114,114,111,114,114,16,0,0,0,114,77,1,0,0,218,8, + 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, + 220,0,0,0,114,65,0,0,0,114,79,1,0,0,115,3, + 0,0,0,32,32,32,114,7,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,75,5,0,0,115,36,0,0,0,8,8,2,1,10,1, + 2,128,12,1,6,3,2,128,2,1,10,1,4,4,2,128, + 12,253,10,1,12,1,4,1,2,128,2,253,2,250,115,24, + 0,0,0,133,4,10,0,138,7,20,7,150,5,29,0,157, + 17,49,7,178,1,49,7,179,1,20,7,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,4,0,0,0,3,0,0, + 0,115,138,0,0,0,116,0,124,2,100,1,131,2,114,27, + 116,1,160,2,124,2,161,1,155,0,100,2,157,2,125,3, + 116,3,160,4,124,3,116,5,161,2,1,0,124,2,160,6, + 124,1,161,1,92,2,125,4,125,5,110,21,116,1,160,2, + 124,2,161,1,155,0,100,3,157,2,125,3,116,3,160,4, + 124,3,116,5,161,2,1,0,124,2,160,7,124,1,161,1, + 125,4,103,0,125,5,124,4,100,0,117,1,114,58,116,1, + 160,8,124,1,124,4,161,2,83,0,116,1,160,9,124,1, + 100,0,161,2,125,6,124,5,124,6,95,10,124,6,83,0, + 41,4,78,114,160,0,0,0,122,53,46,102,105,110,100,95, + 115,112,101,99,40,41,32,110,111,116,32,102,111,117,110,100, + 59,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116, + 111,32,102,105,110,100,95,108,111,97,100,101,114,40,41,122, + 53,46,102,105,110,100,95,115,112,101,99,40,41,32,110,111, + 116,32,102,111,117,110,100,59,32,102,97,108,108,105,110,103, + 32,98,97,99,107,32,116,111,32,102,105,110,100,95,109,111, + 100,117,108,101,40,41,41,11,114,152,0,0,0,114,158,0, + 0,0,90,12,95,111,98,106,101,99,116,95,110,97,109,101, + 114,99,0,0,0,114,100,0,0,0,114,161,0,0,0,114, + 160,0,0,0,114,228,0,0,0,114,223,0,0,0,114,206, + 0,0,0,114,201,0,0,0,41,7,114,220,0,0,0,114, + 162,0,0,0,114,79,1,0,0,114,165,0,0,0,114,163, + 0,0,0,114,164,0,0,0,114,209,0,0,0,115,7,0, + 0,0,32,32,32,32,32,32,32,114,7,0,0,0,218,16, + 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, + 97,5,0,0,115,26,0,0,0,10,4,16,1,12,2,16, + 1,16,2,12,2,10,1,4,1,8,1,12,1,12,1,6, + 1,4,1,114,9,0,0,0,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,5,0,0,0,3,0,0,0,115,166,0,0,0, + 103,0,125,4,124,2,68,0,93,67,125,5,116,0,124,5, + 116,1,116,2,102,2,131,2,115,14,113,4,124,0,160,3, + 124,5,161,1,125,6,124,6,100,1,117,1,114,71,116,4, + 124,6,100,2,131,2,114,35,124,6,160,5,124,1,124,3, + 161,2,125,7,110,6,124,0,160,6,124,1,124,6,161,2, + 125,7,124,7,100,1,117,0,114,46,113,4,124,7,106,7, + 100,1,117,1,114,55,124,7,2,0,1,0,83,0,124,7, + 106,8,125,8,124,8,100,1,117,0,114,66,116,9,100,3, + 131,1,130,1,124,4,160,10,124,8,161,1,1,0,113,4, + 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,225,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,184,0,0,0,114,109,0,0,0, + 218,5,98,121,116,101,115,114,84,1,0,0,114,152,0,0, + 0,114,225,0,0,0,114,85,1,0,0,114,163,0,0,0, + 114,201,0,0,0,114,142,0,0,0,114,190,0,0,0,114, + 158,0,0,0,114,206,0,0,0,41,9,114,220,0,0,0, + 114,162,0,0,0,114,65,0,0,0,114,224,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,79,1,0,0,114,209,0,0,0, + 114,164,0,0,0,115,9,0,0,0,32,32,32,32,32,32, + 32,32,32,114,7,0,0,0,218,9,95,103,101,116,95,115, + 112,101,99,118,5,0,0,115,42,0,0,0,4,5,8,1, + 14,1,2,1,10,1,8,1,10,1,14,1,12,2,8,1, + 2,1,10,1,8,1,6,1,8,1,8,1,10,5,2,128, + 12,2,6,1,4,1,114,9,0,0,0,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,5,0, + 0,0,3,0,0,0,115,94,0,0,0,124,2,100,1,117, + 0,114,7,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,20,100, + 1,83,0,124,4,106,3,100,1,117,0,114,45,124,4,106, + 4,125,5,124,5,114,43,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,124,4,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,16,0, + 0,0,114,65,0,0,0,114,88,1,0,0,114,163,0,0, + 0,114,201,0,0,0,114,204,0,0,0,114,44,1,0,0, + 41,6,114,220,0,0,0,114,162,0,0,0,114,65,0,0, + 0,114,224,0,0,0,114,209,0,0,0,114,87,1,0,0, + 115,6,0,0,0,32,32,32,32,32,32,114,7,0,0,0, + 114,225,0,0,0,150,5,0,0,115,26,0,0,0,8,6, + 6,1,14,1,8,1,4,1,10,1,6,1,4,1,6,3, + 16,1,4,1,4,2,4,2,114,9,0,0,0,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,3,0,0,0,115,42,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,124, + 2,161,2,125,3,124,3,100,2,117,0,114,18,100,2,83, + 0,124,3,106,4,83,0,41,3,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,122,101,80,97,116,104,70,105,110,100,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,78,114,226,0, + 0,0,114,227,0,0,0,115,4,0,0,0,32,32,32,32, + 114,7,0,0,0,114,228,0,0,0,174,5,0,0,115,14, + 0,0,0,6,8,2,2,4,254,12,3,8,1,4,1,6, + 1,114,9,0,0,0,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,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,15, + 0,0,0,115,28,0,0,0,100,1,100,2,108,0,109,1, + 125,2,1,0,124,2,106,2,124,0,105,0,124,1,164,1, + 142,1,83,0,41,4,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,78,41,3,90,18,105,109,112,111,114, + 116,108,105,98,46,109,101,116,97,100,97,116,97,114,89,1, + 0,0,218,18,102,105,110,100,95,100,105,115,116,114,105,98, + 117,116,105,111,110,115,41,3,114,144,0,0,0,114,145,0, + 0,0,114,89,1,0,0,115,3,0,0,0,32,32,32,114, + 7,0,0,0,114,90,1,0,0,190,5,0,0,115,4,0, + 0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0,0,114, + 229,0,0,0,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, + 75,1,0,0,114,81,1,0,0,114,233,0,0,0,114,84, + 1,0,0,114,85,1,0,0,114,88,1,0,0,114,225,0, + 0,0,114,228,0,0,0,114,90,1,0,0,114,12,0,0, + 0,114,9,0,0,0,114,7,0,0,0,114,74,1,0,0, + 48,5,0,0,115,36,0,0,0,8,0,4,2,2,2,10, + 1,2,9,10,1,2,12,10,1,2,21,10,1,2,20,12, + 1,2,31,12,1,2,23,12,1,2,15,14,1,114,9,0, + 0,0,114,74,1,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,0,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,6,0,0,0,7,0,0,0,115,114,0,0, + 0,135,5,103,0,125,3,124,2,68,0,93,16,92,2,138, + 5,125,4,124,3,160,0,136,5,102,1,100,1,100,2,132, + 8,124,4,68,0,131,1,161,1,1,0,113,5,124,3,124, + 0,95,1,124,1,112,28,100,3,124,0,95,2,116,3,124, + 0,106,2,131,1,115,44,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,3,0, + 0,0,51,0,0,0,115,24,0,0,0,129,0,124,0,93, + 7,125,1,124,1,137,2,102,2,86,0,1,0,113,2,100, + 0,83,0,114,69,0,0,0,114,12,0,0,0,41,3,114, + 5,0,0,0,114,41,1,0,0,114,163,0,0,0,115,3, + 0,0,0,32,32,128,114,7,0,0,0,114,8,0,0,0, + 219,5,0,0,115,4,0,0,0,2,128,22,0,114,9,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,97,0,0,0,114, + 130,0,0,0,78,41,11,114,190,0,0,0,218,8,95,108, + 111,97,100,101,114,115,114,65,0,0,0,114,86,0,0,0, + 114,67,0,0,0,114,19,0,0,0,114,82,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,6,114,143,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,211,0,0,0,114,163,0, + 0,0,115,6,0,0,0,32,32,32,32,32,64,114,7,0, + 0,0,114,235,0,0,0,213,5,0,0,115,22,0,0,0, + 2,128,4,4,12,1,26,1,6,1,10,2,10,1,18,1, + 6,1,8,1,12,1,114,9,0,0,0,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,2,0,0, + 0,3,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,130,0,0,0,78,41,1,114, + 93,1,0,0,114,20,1,0,0,115,1,0,0,0,32,114, + 7,0,0,0,114,75,1,0,0,229,5,0,0,114,81,0, + 0,0,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,54,0,0,0,116, + 0,160,1,100,1,116,2,161,2,1,0,124,0,160,3,124, + 1,161,1,125,2,124,2,100,2,117,0,114,19,100,2,103, + 0,102,2,83,0,124,2,106,4,124,2,106,5,112,25,103, + 0,102,2,83,0,41,3,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,122,101, + 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, + 108,111,97,100,101,114,40,41,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, + 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, + 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, + 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, + 115,116,101,97,100,78,41,6,114,99,0,0,0,114,100,0, + 0,0,114,101,0,0,0,114,225,0,0,0,114,163,0,0, + 0,114,201,0,0,0,41,3,114,143,0,0,0,114,162,0, + 0,0,114,209,0,0,0,115,3,0,0,0,32,32,32,114, + 7,0,0,0,114,160,0,0,0,235,5,0,0,115,14,0, + 0,0,6,7,2,2,4,254,10,3,8,1,8,1,16,1, + 114,9,0,0,0,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,6,0,0,0,3,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,200,0,0,0,41,1,114,212,0,0,0, + 41,7,114,143,0,0,0,114,210,0,0,0,114,162,0,0, + 0,114,65,0,0,0,90,4,115,109,115,108,114,224,0,0, + 0,114,163,0,0,0,115,7,0,0,0,32,32,32,32,32, + 32,32,114,7,0,0,0,114,88,1,0,0,250,5,0,0, + 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, + 0,0,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,9,0,0,0,3,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,9,0,116,1,124,0,106,2,112,17,116, + 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, + 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, + 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, + 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, + 0,114,56,124,0,106,10,125,6,124,4,160,11,161,0,125, + 7,110,5,124,0,106,12,125,6,124,4,125,7,124,7,124, + 6,118,0,114,108,116,13,124,0,106,2,124,4,131,2,125, + 8,124,0,106,14,68,0,93,29,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,103,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,74,116,17,124,8,131,1,125,3,124,0,106,14,68, + 0,93,55,92,2,125,9,125,10,9,0,116,13,124,0,106, + 2,124,4,124,9,23,0,131,2,125,12,110,12,35,0,4, + 0,116,18,121,189,1,0,1,0,1,0,89,0,1,0,100, + 6,83,0,37,0,116,19,160,20,100,7,124,12,100,3,100, + 8,166,3,1,0,124,7,124,9,23,0,124,6,118,0,114, + 166,116,15,124,12,131,1,114,166,124,0,160,16,124,10,124, + 1,124,12,100,6,124,2,161,5,2,0,1,0,83,0,113, + 111,124,3,114,187,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,119,0,119, + 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,97,0,0,0,114,45,0,0,0,114, + 130,0,0,0,114,235,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, + 104,0,0,0,114,75,0,0,0,114,65,0,0,0,114,19, + 0,0,0,114,82,0,0,0,114,33,1,0,0,114,76,0, + 0,0,114,93,1,0,0,218,11,95,102,105,108,108,95,99, + 97,99,104,101,114,22,0,0,0,114,96,1,0,0,114,131, + 0,0,0,114,95,1,0,0,114,67,0,0,0,114,92,1, + 0,0,114,80,0,0,0,114,88,1,0,0,114,83,0,0, + 0,114,111,0,0,0,114,158,0,0,0,114,172,0,0,0, + 114,206,0,0,0,114,201,0,0,0,41,14,114,143,0,0, + 0,114,162,0,0,0,114,224,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,192,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,210,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, + 209,0,0,0,115,14,0,0,0,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, + 0,255,5,0,0,115,94,0,0,0,4,5,14,1,2,1, + 22,1,2,128,12,1,8,1,2,128,10,1,8,1,6,1, + 6,2,6,1,10,1,6,2,4,1,8,2,12,1,14,1, + 8,1,10,1,8,1,24,1,2,255,8,5,14,2,2,1, + 18,1,2,128,12,1,8,1,2,128,16,1,12,1,8,1, + 10,1,4,1,8,255,2,128,4,2,12,1,12,1,8,1, + 4,1,4,1,2,244,2,228,115,31,0,0,0,138,10,21, + 0,149,9,32,7,193,52,8,65,61,2,193,61,7,66,8, + 9,194,61,1,66,8,9,194,62,1,32,7,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,10, + 0,0,0,3,0,0,0,115,194,0,0,0,124,0,106,0, + 125,1,9,0,116,1,160,2,124,1,112,11,116,1,160,3, + 161,0,161,1,125,2,110,15,35,0,4,0,116,4,116,5, + 116,6,102,3,121,96,1,0,1,0,1,0,103,0,125,2, + 89,0,110,1,37,0,116,7,106,8,160,9,100,1,161,1, + 115,41,116,10,124,2,131,1,124,0,95,11,110,37,116,10, + 131,0,125,3,124,2,68,0,93,28,125,4,124,4,160,12, + 100,2,161,1,92,3,125,5,125,6,125,7,124,6,114,67, + 100,3,160,13,124,5,124,7,160,14,161,0,161,2,125,8, + 110,2,124,5,125,8,124,3,160,15,124,8,161,1,1,0, + 113,46,124,3,124,0,95,11,116,7,106,8,160,9,116,16, + 161,1,114,94,100,4,100,5,132,0,124,2,68,0,131,1, + 124,0,95,17,100,6,83,0,100,6,83,0,119,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,15,0,0,0,114,97,0,0,0, + 114,88,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,19,0,0,0,115,20,0,0,0,104, + 0,124,0,93,6,125,1,124,1,160,0,161,0,146,2,113, + 2,83,0,114,12,0,0,0,41,1,114,131,0,0,0,41, + 2,114,5,0,0,0,90,2,102,110,115,2,0,0,0,32, + 32,114,7,0,0,0,114,14,0,0,0,79,6,0,0,115, + 2,0,0,0,20,0,114,9,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,19, + 0,0,0,90,7,108,105,115,116,100,105,114,114,82,0,0, + 0,114,82,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,16,0,0,0, + 114,26,0,0,0,114,27,0,0,0,114,94,1,0,0,114, + 95,1,0,0,114,126,0,0,0,114,89,0,0,0,114,131, + 0,0,0,218,3,97,100,100,114,28,0,0,0,114,96,1, + 0,0,41,9,114,143,0,0,0,114,65,0,0,0,90,8, + 99,111,110,116,101,110,116,115,90,21,108,111,119,101,114,95, + 115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,114, + 67,1,0,0,114,141,0,0,0,114,51,1,0,0,114,41, + 1,0,0,90,8,110,101,119,95,110,97,109,101,115,9,0, + 0,0,32,32,32,32,32,32,32,32,32,114,7,0,0,0, + 114,98,1,0,0,50,6,0,0,115,42,0,0,0,6,2, + 2,1,20,1,2,128,18,1,8,3,2,128,12,3,12,1, + 6,7,8,1,16,1,4,1,18,1,4,2,12,1,6,1, + 12,1,20,1,4,255,2,233,115,13,0,0,0,132,9,14, + 0,142,12,28,7,193,32,1,28,7,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,7,0,0,0,115,22,0,0,0,135,0,135,1, + 136,0,136,1,102,2,100,1,100,2,132,8,125,2,124,2, + 83,0,41,4,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, - 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,4,0,0,0,19,0,0,0,115,36, - 0,0,0,116,0,124,0,131,1,115,10,116,1,100,1,124, - 0,100,2,141,2,130,1,137,1,124,0,103,1,137,2,162, - 1,82,0,142,0,83,0,41,4,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,78,41,2, - 114,83,0,0,0,114,142,0,0,0,41,3,114,65,0,0, - 0,114,220,0,0,0,114,97,1,0,0,115,3,0,0,0, - 32,128,128,114,7,0,0,0,218,24,112,97,116,104,95,104, + 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,4,0,0,0,19,0, + 0,0,115,36,0,0,0,116,0,124,0,131,1,115,10,116, + 1,100,1,124,0,100,2,141,2,130,1,137,1,124,0,103, + 1,137,2,162,1,82,0,142,0,83,0,41,4,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,78,41,2,114,83,0,0,0,114,142,0,0,0,41,3, + 114,65,0,0,0,114,220,0,0,0,114,97,1,0,0,115, + 3,0,0,0,32,128,128,114,7,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,91,6,0,0,115,6,0,0,0,8, + 2,12,1,16,1,114,9,0,0,0,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,91,6,0,0,115,6,0,0,0,8,2,12,1,16, - 1,114,9,0,0,0,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,78,114, - 12,0,0,0,41,3,114,220,0,0,0,114,97,1,0,0, - 114,102,1,0,0,115,3,0,0,0,96,96,32,114,7,0, - 0,0,218,9,112,97,116,104,95,104,111,111,107,81,6,0, - 0,115,6,0,0,0,4,128,14,10,4,6,114,9,0,0, - 0,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,3,0,0,0,3,0,0,0,114,64,1,0, - 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,89,0,0,0,114,65,0, - 0,0,114,20,1,0,0,115,1,0,0,0,32,114,7,0, - 0,0,114,65,1,0,0,99,6,0,0,114,58,1,0,0, - 114,9,0,0,0,122,19,70,105,108,101,70,105,110,100,101, - 114,46,95,95,114,101,112,114,95,95,114,69,0,0,0,41, - 15,114,149,0,0,0,114,148,0,0,0,114,150,0,0,0, - 114,151,0,0,0,114,235,0,0,0,114,75,1,0,0,114, - 166,0,0,0,114,228,0,0,0,114,160,0,0,0,114,88, - 1,0,0,114,225,0,0,0,114,98,1,0,0,114,233,0, - 0,0,114,103,1,0,0,114,65,1,0,0,114,12,0,0, - 0,114,9,0,0,0,114,7,0,0,0,114,91,1,0,0, - 204,5,0,0,115,24,0,0,0,8,0,4,2,8,7,8, - 16,4,4,8,2,8,15,10,5,8,51,2,31,10,1,12, - 17,114,9,0,0,0,114,91,1,0,0,99,4,0,0,0, - 0,0,0,0,0,0,0,0,8,0,0,0,3,0,0,0, - 115,146,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,33,124,5,114, - 18,124,5,106,1,125,4,110,15,124,2,124,3,107,2,114, - 28,116,2,124,1,124,2,131,2,125,4,110,5,116,3,124, - 1,124,2,131,2,125,4,124,5,115,42,116,4,124,1,124, - 2,124,4,100,3,141,3,125,5,9,0,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,100,0,83,0,35, - 0,4,0,116,5,121,72,1,0,1,0,1,0,89,0,100, - 0,83,0,37,0,119,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, - 41,1,114,163,0,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,163,0,0,0,114,39,1,0,0,114,32, - 1,0,0,114,212,0,0,0,218,9,69,120,99,101,112,116, - 105,111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0,0,115,6,0, - 0,0,32,32,32,32,32,32,114,7,0,0,0,218,14,95, - 102,105,120,95,117,112,95,109,111,100,117,108,101,105,6,0, - 0,115,40,0,0,0,10,2,10,1,4,1,4,1,8,1, - 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, - 8,1,12,1,2,128,12,1,6,2,2,128,2,254,115,15, - 0,0,0,171,16,61,0,189,7,65,7,7,193,8,1,65, - 7,7,114,108,1,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,3,0,0,0,115,38,0,0, - 0,116,0,116,1,160,2,161,0,102,2,125,0,116,3,116, - 4,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, - 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, - 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, - 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, - 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, - 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, - 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, - 120,101,115,41,46,10,32,32,32,32,78,41,7,114,28,1, - 0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113,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,115, - 3,0,0,0,32,32,32,114,7,0,0,0,114,207,0,0, - 0,128,6,0,0,115,8,0,0,0,12,5,8,1,8,1, - 10,1,114,9,0,0,0,114,207,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,115,8,0,0,0,124,0,97,0,100,0,83,0,114,69, - 0,0,0,41,1,114,158,0,0,0,41,1,218,17,95,98, - 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,115, - 1,0,0,0,32,114,7,0,0,0,218,21,95,115,101,116, - 95,98,111,111,116,115,116,114,97,112,95,109,111,100,117,108, - 101,139,6,0,0,115,2,0,0,0,8,2,114,9,0,0, - 0,114,111,1,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,3,0,0,0,115,50,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,111,1,0,0,114,207,0,0,0,114,16,0,0, - 0,114,80,1,0,0,114,190,0,0,0,114,91,1,0,0, - 114,103,1,0,0,218,9,109,101,116,97,95,112,97,116,104, - 114,61,0,0,0,114,74,1,0,0,41,2,114,110,1,0, - 0,90,17,115,117,112,112,111,114,116,101,100,95,108,111,97, - 100,101,114,115,115,2,0,0,0,32,32,114,7,0,0,0, - 218,8,95,105,110,115,116,97,108,108,144,6,0,0,115,8, - 0,0,0,8,2,6,1,20,1,16,1,114,9,0,0,0, - 114,113,1,0,0,41,1,114,87,0,0,0,114,69,0,0, - 0,41,3,78,78,78,41,2,114,0,0,0,0,114,0,0, - 0,0,41,1,84,41,85,114,151,0,0,0,114,158,0,0, - 0,114,186,0,0,0,114,91,0,0,0,114,16,0,0,0, - 114,99,0,0,0,114,183,0,0,0,114,26,0,0,0,114, - 230,0,0,0,90,2,110,116,114,19,0,0,0,114,214,0, - 0,0,90,5,112,111,115,105,120,114,51,0,0,0,218,3, - 97,108,108,114,59,0,0,0,114,136,0,0,0,114,57,0, - 0,0,114,62,0,0,0,90,20,95,112,97,116,104,115,101, - 112,115,95,119,105,116,104,95,99,111,108,111,110,114,29,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,28,0,0,0,114,30, - 0,0,0,114,22,0,0,0,114,37,0,0,0,114,43,0, - 0,0,114,46,0,0,0,114,67,0,0,0,114,73,0,0, - 0,114,75,0,0,0,114,79,0,0,0,114,80,0,0,0, - 114,83,0,0,0,114,86,0,0,0,114,95,0,0,0,218, - 4,116,121,112,101,218,8,95,95,99,111,100,101,95,95,114, - 185,0,0,0,114,35,0,0,0,114,171,0,0,0,114,34, - 0,0,0,114,40,0,0,0,114,7,1,0,0,114,116,0, - 0,0,114,112,0,0,0,114,127,0,0,0,114,61,0,0, - 0,114,109,1,0,0,114,231,0,0,0,114,113,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,121,0,0,0,114,128,0,0,0, - 114,135,0,0,0,114,137,0,0,0,114,139,0,0,0,114, - 159,0,0,0,114,166,0,0,0,114,175,0,0,0,114,179, - 0,0,0,114,181,0,0,0,114,188,0,0,0,114,193,0, - 0,0,114,194,0,0,0,114,199,0,0,0,218,6,111,98, - 106,101,99,116,114,208,0,0,0,114,212,0,0,0,114,213, - 0,0,0,114,234,0,0,0,114,248,0,0,0,114,10,1, - 0,0,114,32,1,0,0,114,39,1,0,0,114,28,1,0, - 0,114,44,1,0,0,114,70,1,0,0,114,74,1,0,0, - 114,91,1,0,0,114,108,1,0,0,114,207,0,0,0,114, - 111,1,0,0,114,113,1,0,0,114,12,0,0,0,114,9, - 0,0,0,114,7,0,0,0,218,8,60,109,111,100,117,108, - 101,62,1,0,0,0,115,180,0,0,0,4,0,4,22,8, - 3,8,1,8,1,8,1,8,1,10,3,4,1,8,1,10, - 1,8,2,4,3,10,1,6,2,22,2,8,1,8,1,10, - 1,14,1,4,4,4,1,2,1,2,1,4,255,8,4,6, - 16,8,3,8,5,8,5,4,6,10,1,8,30,8,6,8, - 8,8,10,8,9,8,5,4,7,10,1,8,8,10,5,10, - 22,0,127,16,38,12,1,4,2,4,1,6,2,4,1,10, - 1,8,2,6,2,8,2,16,2,8,71,8,40,8,19,8, - 12,8,12,8,31,8,20,8,33,8,28,10,24,10,13,10, - 10,8,11,6,14,4,3,2,1,12,255,14,73,14,67,16, - 30,0,127,14,17,18,50,18,45,18,25,14,53,14,63,14, - 49,0,127,14,29,0,127,10,30,8,23,8,11,12,5,114, - 9,0,0,0, + 101,114,78,114,12,0,0,0,41,3,114,220,0,0,0,114, + 97,1,0,0,114,102,1,0,0,115,3,0,0,0,96,96, + 32,114,7,0,0,0,218,9,112,97,116,104,95,104,111,111, + 107,81,6,0,0,115,6,0,0,0,4,128,14,10,4,6, + 114,9,0,0,0,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,3,0,0,0,3,0,0,0, + 114,64,1,0,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,89,0,0, + 0,114,65,0,0,0,114,20,1,0,0,115,1,0,0,0, + 32,114,7,0,0,0,114,65,1,0,0,99,6,0,0,114, + 58,1,0,0,114,9,0,0,0,122,19,70,105,108,101,70, + 105,110,100,101,114,46,95,95,114,101,112,114,95,95,114,69, + 0,0,0,41,15,114,149,0,0,0,114,148,0,0,0,114, + 150,0,0,0,114,151,0,0,0,114,235,0,0,0,114,75, + 1,0,0,114,166,0,0,0,114,228,0,0,0,114,160,0, + 0,0,114,88,1,0,0,114,225,0,0,0,114,98,1,0, + 0,114,233,0,0,0,114,103,1,0,0,114,65,1,0,0, + 114,12,0,0,0,114,9,0,0,0,114,7,0,0,0,114, + 91,1,0,0,204,5,0,0,115,24,0,0,0,8,0,4, + 2,8,7,8,16,4,4,8,2,8,15,10,5,8,51,2, + 31,10,1,12,17,114,9,0,0,0,114,91,1,0,0,99, + 4,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 3,0,0,0,115,146,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, + 33,124,5,114,18,124,5,106,1,125,4,110,15,124,2,124, + 3,107,2,114,28,116,2,124,1,124,2,131,2,125,4,110, + 5,116,3,124,1,124,2,131,2,125,4,124,5,115,42,116, + 4,124,1,124,2,124,4,100,3,141,3,125,5,9,0,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,100, + 0,83,0,35,0,4,0,116,5,121,72,1,0,1,0,1, + 0,89,0,100,0,83,0,37,0,119,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,41,1,114,163,0,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,163,0,0,0,114,39,1, + 0,0,114,32,1,0,0,114,212,0,0,0,218,9,69,120, + 99,101,112,116,105,111,110,41,6,90,2,110,115,114,141,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,163,0,0,0,114,209,0,0, + 0,115,6,0,0,0,32,32,32,32,32,32,114,7,0,0, + 0,218,14,95,102,105,120,95,117,112,95,109,111,100,117,108, + 101,105,6,0,0,115,40,0,0,0,10,2,10,1,4,1, + 4,1,8,1,8,1,12,1,10,2,4,1,14,1,2,1, + 8,1,8,1,8,1,12,1,2,128,12,1,6,2,2,128, + 2,254,115,15,0,0,0,171,16,61,0,189,7,65,7,7, + 193,8,1,65,7,7,114,108,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, + 115,38,0,0,0,116,0,116,1,160,2,161,0,102,2,125, + 0,116,3,116,4,102,2,125,1,116,5,116,6,102,2,125, + 2,124,0,124,1,124,2,103,3,83,0,41,2,122,95,82, + 101,116,117,114,110,115,32,97,32,108,105,115,116,32,111,102, + 32,102,105,108,101,45,98,97,115,101,100,32,109,111,100,117, + 108,101,32,108,111,97,100,101,114,115,46,10,10,32,32,32, + 32,69,97,99,104,32,105,116,101,109,32,105,115,32,97,32, + 116,117,112,108,101,32,40,108,111,97,100,101,114,44,32,115, + 117,102,102,105,120,101,115,41,46,10,32,32,32,32,78,41, + 7,114,28,1,0,0,114,186,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,127,0,0,0,114,39,1,0,0,114,113, + 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,115,3,0,0,0,32,32,32,114,7,0,0,0, + 114,207,0,0,0,128,6,0,0,115,8,0,0,0,12,5, + 8,1,8,1,10,1,114,9,0,0,0,114,207,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,115,8,0,0,0,124,0,97,0,100,0, + 83,0,114,69,0,0,0,41,1,114,158,0,0,0,41,1, + 218,17,95,98,111,111,116,115,116,114,97,112,95,109,111,100, + 117,108,101,115,1,0,0,0,32,114,7,0,0,0,218,21, + 95,115,101,116,95,98,111,111,116,115,116,114,97,112,95,109, + 111,100,117,108,101,139,6,0,0,115,2,0,0,0,8,2, + 114,9,0,0,0,114,111,1,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,115, + 50,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,111,1,0,0,114,207,0,0,0, + 114,16,0,0,0,114,80,1,0,0,114,190,0,0,0,114, + 91,1,0,0,114,103,1,0,0,218,9,109,101,116,97,95, + 112,97,116,104,114,61,0,0,0,114,74,1,0,0,41,2, + 114,110,1,0,0,90,17,115,117,112,112,111,114,116,101,100, + 95,108,111,97,100,101,114,115,115,2,0,0,0,32,32,114, + 7,0,0,0,218,8,95,105,110,115,116,97,108,108,144,6, + 0,0,115,8,0,0,0,8,2,6,1,20,1,16,1,114, + 9,0,0,0,114,113,1,0,0,41,1,114,87,0,0,0, + 114,69,0,0,0,41,3,78,78,78,41,2,114,0,0,0, + 0,114,0,0,0,0,41,1,84,41,85,114,151,0,0,0, + 114,158,0,0,0,114,186,0,0,0,114,91,0,0,0,114, + 16,0,0,0,114,99,0,0,0,114,183,0,0,0,114,26, + 0,0,0,114,230,0,0,0,90,2,110,116,114,19,0,0, + 0,114,214,0,0,0,90,5,112,111,115,105,120,114,51,0, + 0,0,218,3,97,108,108,114,59,0,0,0,114,136,0,0, + 0,114,57,0,0,0,114,62,0,0,0,90,20,95,112,97, + 116,104,115,101,112,115,95,119,105,116,104,95,99,111,108,111, + 110,114,29,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,28,0, + 0,0,114,30,0,0,0,114,22,0,0,0,114,37,0,0, + 0,114,43,0,0,0,114,46,0,0,0,114,67,0,0,0, + 114,73,0,0,0,114,75,0,0,0,114,79,0,0,0,114, + 80,0,0,0,114,83,0,0,0,114,86,0,0,0,114,95, + 0,0,0,218,4,116,121,112,101,218,8,95,95,99,111,100, + 101,95,95,114,185,0,0,0,114,35,0,0,0,114,171,0, + 0,0,114,34,0,0,0,114,40,0,0,0,114,7,1,0, + 0,114,116,0,0,0,114,112,0,0,0,114,127,0,0,0, + 114,61,0,0,0,114,109,1,0,0,114,231,0,0,0,114, + 113,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,121,0,0,0,114, + 128,0,0,0,114,135,0,0,0,114,137,0,0,0,114,139, + 0,0,0,114,159,0,0,0,114,166,0,0,0,114,175,0, + 0,0,114,179,0,0,0,114,181,0,0,0,114,188,0,0, + 0,114,193,0,0,0,114,194,0,0,0,114,199,0,0,0, + 218,6,111,98,106,101,99,116,114,208,0,0,0,114,212,0, + 0,0,114,213,0,0,0,114,234,0,0,0,114,248,0,0, + 0,114,10,1,0,0,114,32,1,0,0,114,39,1,0,0, + 114,28,1,0,0,114,44,1,0,0,114,70,1,0,0,114, + 74,1,0,0,114,91,1,0,0,114,108,1,0,0,114,207, + 0,0,0,114,111,1,0,0,114,113,1,0,0,114,12,0, + 0,0,114,9,0,0,0,114,7,0,0,0,218,8,60,109, + 111,100,117,108,101,62,1,0,0,0,115,180,0,0,0,4, + 0,4,22,8,3,8,1,8,1,8,1,8,1,10,3,4, + 1,8,1,10,1,8,2,4,3,10,1,6,2,22,2,8, + 1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4, + 255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8, + 30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8, + 8,10,5,10,22,0,127,16,38,12,1,4,2,4,1,6, + 2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8, + 40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10, + 24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14, + 73,14,67,16,30,0,127,14,17,18,50,18,45,18,25,14, + 53,14,63,14,49,0,127,14,29,0,127,10,30,8,23,8, + 11,12,5,114,9,0,0,0, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index a9608403da3f2..c16880eac0706 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -759,7 +759,7 @@ const unsigned char _Py_M__zipimport[] = { 114,14,0,0,0,218,1,116,115,26,0,0,0,32,32,32, 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, 32,32,32,32,32,32,32,114,11,0,0,0,114,28,0,0, - 0,146,1,0,0,115,16,1,0,0,2,1,12,1,2,128, + 0,146,1,0,0,115,18,1,0,0,2,1,12,1,2,128, 14,1,18,1,2,128,6,2,2,1,14,1,8,1,12,1, 2,128,14,1,18,1,2,128,12,1,18,1,16,1,2,3, 12,1,10,1,2,128,14,1,10,1,2,1,6,255,2,128, @@ -775,334 +775,335 @@ const unsigned char _Py_M__zipimport[] = { 14,1,18,1,2,4,28,1,18,1,2,255,2,128,14,2, 18,1,2,128,10,2,10,2,2,3,12,1,2,128,14,1, 20,1,2,128,12,2,12,1,20,1,8,1,8,1,4,202, - 2,6,12,196,24,128,14,109,4,1,2,247,2,246,2,246, - 2,227,2,227,2,248,2,246,2,248,115,235,0,0,0,129, - 5,7,0,135,17,24,7,155,1,73,31,3,157,16,46,2, - 173,1,73,31,3,174,17,63,9,191,24,73,31,3,193,24, - 10,65,35,2,193,34,1,73,31,3,193,35,17,65,52,9, - 193,52,10,73,31,3,193,63,9,66,9,2,194,8,1,73, - 31,3,194,9,17,66,26,9,194,26,65,54,73,31,3,196, - 17,5,68,23,2,196,22,1,73,31,3,196,23,17,68,40, - 9,196,40,66,24,73,31,3,199,1,5,71,7,2,199,6, - 1,73,31,3,199,7,17,71,24,9,199,24,17,73,31,3, - 199,42,23,72,2,2,200,1,1,73,31,3,200,2,17,72, - 19,9,200,19,11,73,31,3,200,31,5,72,37,2,200,36, - 1,73,31,3,200,37,16,72,55,9,200,53,35,73,31,3, - 201,31,5,73,36,11,201,37,3,73,36,11,201,52,1,72, - 55,9,201,53,1,72,19,9,201,54,1,71,24,9,201,55, - 1,68,40,9,201,56,1,66,26,9,201,57,1,65,52,9, - 201,58,1,63,9,201,59,1,24,7,114,28,0,0,0,117, - 190,1,0,0,0,1,2,3,4,5,6,7,8,9,10,11, - 12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43, - 44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, - 76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91, - 92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, - 108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123, - 124,125,126,127,195,135,195,188,195,169,195,162,195,164,195,160, - 195,165,195,167,195,170,195,171,195,168,195,175,195,174,195,172, - 195,132,195,133,195,137,195,166,195,134,195,180,195,182,195,178, - 195,187,195,185,195,191,195,150,195,156,194,162,194,163,194,165, - 226,130,167,198,146,195,161,195,173,195,179,195,186,195,177,195, - 145,194,170,194,186,194,191,226,140,144,194,172,194,189,194,188, - 194,161,194,171,194,187,226,150,145,226,150,146,226,150,147,226, - 148,130,226,148,164,226,149,161,226,149,162,226,149,150,226,149, - 149,226,149,163,226,149,145,226,149,151,226,149,157,226,149,156, - 226,149,155,226,148,144,226,148,148,226,148,180,226,148,172,226, - 148,156,226,148,128,226,148,188,226,149,158,226,149,159,226,149, - 154,226,149,148,226,149,169,226,149,166,226,149,160,226,149,144, - 226,149,172,226,149,167,226,149,168,226,149,164,226,149,165,226, - 149,153,226,149,152,226,149,146,226,149,147,226,149,171,226,149, - 170,226,148,152,226,148,140,226,150,136,226,150,132,226,150,140, - 226,150,144,226,150,128,206,177,195,159,206,147,207,128,206,163, - 207,131,194,181,207,132,206,166,206,152,206,169,206,180,226,136, - 158,207,134,206,181,226,136,169,226,137,161,194,177,226,137,165, - 226,137,164,226,140,160,226,140,161,195,183,226,137,136,194,176, - 226,136,153,194,183,226,136,154,226,129,191,194,178,226,150,160, - 194,160,99,0,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,3,0,0,0,115,110,0,0,0,116,0,114,11, - 116,1,160,2,100,1,161,1,1,0,116,3,100,2,131,1, - 130,1,100,3,97,0,9,0,100,4,100,5,108,4,109,5, - 125,0,1,0,110,17,35,0,4,0,116,6,121,54,1,0, - 1,0,1,0,116,1,160,2,100,1,161,1,1,0,116,3, - 100,2,131,1,130,1,37,0,9,0,100,6,97,0,110,5, - 35,0,100,6,97,0,119,0,37,0,116,1,160,2,100,7, - 161,1,1,0,124,0,83,0,119,0,41,8,78,122,27,122, - 105,112,105,109,112,111,114,116,58,32,122,108,105,98,32,85, - 78,65,86,65,73,76,65,66,76,69,250,41,99,97,110,39, - 116,32,100,101,99,111,109,112,114,101,115,115,32,100,97,116, - 97,59,32,122,108,105,98,32,110,111,116,32,97,118,97,105, - 108,97,98,108,101,84,114,0,0,0,0,169,1,218,10,100, - 101,99,111,109,112,114,101,115,115,70,122,25,122,105,112,105, - 109,112,111,114,116,58,32,122,108,105,98,32,97,118,97,105, - 108,97,98,108,101,41,7,218,15,95,105,109,112,111,114,116, - 105,110,103,95,122,108,105,98,114,49,0,0,0,114,82,0, - 0,0,114,3,0,0,0,90,4,122,108,105,98,114,148,0, - 0,0,218,9,69,120,99,101,112,116,105,111,110,114,147,0, - 0,0,115,1,0,0,0,32,114,11,0,0,0,218,20,95, - 103,101,116,95,100,101,99,111,109,112,114,101,115,115,95,102, - 117,110,99,48,2,0,0,115,36,0,0,0,4,2,10,3, - 8,1,4,2,2,1,14,1,2,128,12,1,10,1,8,1, - 2,128,2,253,6,5,2,128,8,0,10,2,4,1,2,249, - 115,24,0,0,0,142,6,21,0,148,1,42,0,149,16,37, - 7,165,1,42,0,170,4,46,7,182,1,37,7,114,151,0, - 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,9, - 0,0,0,3,0,0,0,115,132,1,0,0,124,1,92,8, - 125,2,125,3,125,4,125,5,125,6,125,7,125,8,125,9, - 124,4,100,1,107,0,114,18,116,0,100,2,131,1,130,1, - 116,1,160,2,124,0,161,1,53,0,125,10,9,0,124,10, - 160,3,124,6,161,1,1,0,110,17,35,0,4,0,116,4, - 121,193,1,0,1,0,1,0,116,0,100,3,124,0,155,2, - 157,2,124,0,100,4,141,2,130,1,37,0,124,10,160,5, - 100,5,161,1,125,11,116,6,124,11,131,1,100,5,107,3, - 114,63,116,7,100,6,131,1,130,1,124,11,100,0,100,7, - 133,2,25,0,100,8,107,3,114,80,116,0,100,9,124,0, - 155,2,157,2,124,0,100,4,141,2,130,1,116,8,124,11, - 100,10,100,11,133,2,25,0,131,1,125,12,116,8,124,11, - 100,11,100,5,133,2,25,0,131,1,125,13,100,5,124,12, - 23,0,124,13,23,0,125,14,124,6,124,14,55,0,125,6, - 9,0,124,10,160,3,124,6,161,1,1,0,110,17,35,0, - 4,0,116,4,121,192,1,0,1,0,1,0,116,0,100,3, - 124,0,155,2,157,2,124,0,100,4,141,2,130,1,37,0, - 124,10,160,5,124,4,161,1,125,15,116,6,124,15,131,1, - 124,4,107,3,114,145,116,4,100,12,131,1,130,1,9,0, - 100,0,4,0,4,0,131,3,1,0,110,11,35,0,49,0, - 115,157,119,4,37,0,1,0,1,0,1,0,89,0,1,0, - 1,0,124,3,100,1,107,2,114,169,124,15,83,0,9,0, - 116,9,131,0,125,16,110,12,35,0,4,0,116,10,121,191, - 1,0,1,0,1,0,116,0,100,13,131,1,130,1,37,0, - 124,16,124,15,100,14,131,2,83,0,119,0,119,0,119,0, - 41,15,78,114,0,0,0,0,122,18,110,101,103,97,116,105, - 118,101,32,100,97,116,97,32,115,105,122,101,114,99,0,0, - 0,114,13,0,0,0,114,111,0,0,0,114,105,0,0,0, - 114,100,0,0,0,115,4,0,0,0,80,75,3,4,122,23, - 98,97,100,32,108,111,99,97,108,32,102,105,108,101,32,104, - 101,97,100,101,114,58,32,233,26,0,0,0,114,110,0,0, - 0,122,26,122,105,112,105,109,112,111,114,116,58,32,99,97, - 110,39,116,32,114,101,97,100,32,100,97,116,97,114,146,0, - 0,0,105,241,255,255,255,41,11,114,3,0,0,0,114,117, - 0,0,0,114,118,0,0,0,114,119,0,0,0,114,23,0, - 0,0,114,121,0,0,0,114,59,0,0,0,114,126,0,0, - 0,114,1,0,0,0,114,151,0,0,0,114,150,0,0,0, - 41,17,114,30,0,0,0,114,62,0,0,0,90,8,100,97, - 116,97,112,97,116,104,114,137,0,0,0,114,141,0,0,0, - 114,132,0,0,0,114,144,0,0,0,114,138,0,0,0,114, - 139,0,0,0,114,140,0,0,0,114,130,0,0,0,114,131, - 0,0,0,114,142,0,0,0,114,143,0,0,0,114,134,0, - 0,0,90,8,114,97,119,95,100,97,116,97,114,148,0,0, - 0,115,17,0,0,0,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,114,11,0,0,0,114,60,0,0, - 0,69,2,0,0,115,86,0,0,0,20,1,8,1,8,1, - 12,2,2,2,12,1,2,128,12,1,18,1,2,128,10,1, - 12,1,8,1,16,2,18,2,16,2,16,1,12,1,8,1, - 2,1,12,1,2,128,12,1,18,1,2,128,10,1,12,1, - 8,1,2,255,12,233,22,128,8,26,4,2,2,3,8,1, - 2,128,12,1,8,1,2,128,10,1,2,254,2,243,2,240, - 115,88,0,0,0,151,1,66,24,3,153,5,31,2,158,1, - 66,24,3,159,16,47,9,175,59,66,24,3,193,43,5,65, - 49,2,193,48,1,66,24,3,193,49,16,66,1,9,194,1, - 16,66,24,3,194,24,4,66,28,11,194,29,3,66,28,11, - 194,42,3,66,46,0,194,46,11,66,57,7,194,63,1,66, - 57,7,195,0,1,66,1,9,195,1,1,47,9,114,60,0, - 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,115,16,0,0,0,116,0,124,0, - 124,1,24,0,131,1,100,1,107,1,83,0,41,2,78,114, - 5,0,0,0,41,1,218,3,97,98,115,41,2,90,2,116, - 49,90,2,116,50,115,2,0,0,0,32,32,114,11,0,0, - 0,218,9,95,101,113,95,109,116,105,109,101,115,2,0,0, - 115,2,0,0,0,16,2,114,10,0,0,0,114,154,0,0, - 0,99,5,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,3,0,0,0,115,254,0,0,0,124,3,124,2,100, - 1,156,2,125,5,116,0,160,1,124,4,124,3,124,5,161, - 3,125,6,124,6,100,2,64,0,100,3,107,3,125,7,124, - 7,114,63,124,6,100,4,64,0,100,3,107,3,125,8,116, - 2,106,3,100,5,107,3,114,62,124,8,115,38,116,2,106, - 3,100,6,107,2,114,62,116,4,124,0,124,2,131,2,125, - 9,124,9,100,0,117,1,114,62,116,2,160,5,116,0,106, - 6,124,9,161,2,125,10,116,0,160,7,124,4,124,10,124, - 3,124,5,161,4,1,0,110,40,116,8,124,0,124,2,131, - 2,92,2,125,11,125,12,124,11,114,103,116,9,116,10,124, - 4,100,7,100,8,133,2,25,0,131,1,124,11,131,2,114, - 93,116,10,124,4,100,8,100,9,133,2,25,0,131,1,124, - 12,107,3,114,103,116,11,160,12,100,10,124,3,155,2,157, - 2,161,1,1,0,100,0,83,0,116,13,160,14,124,4,100, - 9,100,0,133,2,25,0,161,1,125,13,116,15,124,13,116, - 16,131,2,115,125,116,17,100,11,124,1,155,2,100,12,157, - 3,131,1,130,1,124,13,83,0,41,13,78,41,2,114,48, - 0,0,0,114,14,0,0,0,114,5,0,0,0,114,0,0, - 0,0,114,94,0,0,0,90,5,110,101,118,101,114,90,6, - 97,108,119,97,121,115,114,106,0,0,0,114,101,0,0,0, - 114,102,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,122,16,99, - 111,109,112,105,108,101,100,32,109,111,100,117,108,101,32,122, - 21,32,105,115,32,110,111,116,32,97,32,99,111,100,101,32, - 111,98,106,101,99,116,41,18,114,22,0,0,0,90,13,95, - 99,108,97,115,115,105,102,121,95,112,121,99,218,4,95,105, - 109,112,90,21,99,104,101,99,107,95,104,97,115,104,95,98, - 97,115,101,100,95,112,121,99,115,218,15,95,103,101,116,95, - 112,121,99,95,115,111,117,114,99,101,218,11,115,111,117,114, - 99,101,95,104,97,115,104,90,17,95,82,65,87,95,77,65, - 71,73,67,95,78,85,77,66,69,82,90,18,95,118,97,108, - 105,100,97,116,101,95,104,97,115,104,95,112,121,99,218,29, - 95,103,101,116,95,109,116,105,109,101,95,97,110,100,95,115, - 105,122,101,95,111,102,95,115,111,117,114,99,101,114,154,0, - 0,0,114,2,0,0,0,114,49,0,0,0,114,82,0,0, - 0,218,7,109,97,114,115,104,97,108,90,5,108,111,97,100, - 115,114,16,0,0,0,218,10,95,99,111,100,101,95,116,121, - 112,101,218,9,84,121,112,101,69,114,114,111,114,41,14,114, - 33,0,0,0,114,61,0,0,0,114,70,0,0,0,114,42, - 0,0,0,114,133,0,0,0,90,11,101,120,99,95,100,101, - 116,97,105,108,115,114,136,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,90,12,115,111,117,114,99,101,95,98,121,116, - 101,115,114,157,0,0,0,90,12,115,111,117,114,99,101,95, - 109,116,105,109,101,90,11,115,111,117,114,99,101,95,115,105, - 122,101,114,54,0,0,0,115,14,0,0,0,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,114,11,0,0,0,218, - 15,95,117,110,109,97,114,115,104,97,108,95,99,111,100,101, - 123,2,0,0,115,72,0,0,0,2,2,2,1,6,254,14, - 5,12,2,4,1,12,1,10,1,2,1,2,255,8,1,2, - 255,10,2,8,1,4,1,4,1,2,1,4,254,4,5,8, - 1,4,255,2,128,8,4,6,255,4,3,22,3,18,1,2, - 255,4,2,8,1,4,255,4,2,18,2,10,1,16,1,4, - 1,114,10,0,0,0,114,162,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, - 115,28,0,0,0,124,0,160,0,100,1,100,2,161,2,125, - 0,124,0,160,0,100,3,100,2,161,2,125,0,124,0,83, - 0,41,4,78,115,2,0,0,0,13,10,243,1,0,0,0, - 10,243,1,0,0,0,13,41,1,114,20,0,0,0,41,1, - 218,6,115,111,117,114,99,101,115,1,0,0,0,32,114,11, - 0,0,0,218,23,95,110,111,114,109,97,108,105,122,101,95, - 108,105,110,101,95,101,110,100,105,110,103,115,168,2,0,0, - 115,6,0,0,0,12,1,12,1,4,1,114,10,0,0,0, - 114,166,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,3,0,0,0,115,24,0,0,0,116, - 0,124,1,131,1,125,1,116,1,124,1,124,0,100,1,100, - 2,100,3,141,4,83,0,41,4,78,114,80,0,0,0,84, - 41,1,90,12,100,111,110,116,95,105,110,104,101,114,105,116, - 41,2,114,166,0,0,0,218,7,99,111,109,112,105,108,101, - 41,2,114,61,0,0,0,114,165,0,0,0,115,2,0,0, - 0,32,32,114,11,0,0,0,218,15,95,99,111,109,112,105, - 108,101,95,115,111,117,114,99,101,175,2,0,0,115,4,0, - 0,0,8,1,16,1,114,10,0,0,0,114,168,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,11,0,0, - 0,3,0,0,0,115,68,0,0,0,116,0,160,1,124,0, - 100,1,63,0,100,2,23,0,124,0,100,3,63,0,100,4, - 64,0,124,0,100,5,64,0,124,1,100,6,63,0,124,1, - 100,3,63,0,100,7,64,0,124,1,100,5,64,0,100,8, - 20,0,100,9,100,9,100,9,102,9,161,1,83,0,41,10, - 78,233,9,0,0,0,105,188,7,0,0,233,5,0,0,0, - 233,15,0,0,0,233,31,0,0,0,233,11,0,0,0,233, - 63,0,0,0,114,94,0,0,0,114,15,0,0,0,41,2, - 114,138,0,0,0,90,6,109,107,116,105,109,101,41,2,218, - 1,100,114,145,0,0,0,115,2,0,0,0,32,32,114,11, - 0,0,0,218,14,95,112,97,114,115,101,95,100,111,115,116, - 105,109,101,181,2,0,0,115,18,0,0,0,4,1,10,1, - 10,1,6,1,6,1,10,1,10,1,6,1,6,249,114,10, - 0,0,0,114,176,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,10,0,0,0,3,0,0,0,115,112,0, - 0,0,9,0,124,1,100,1,100,0,133,2,25,0,100,2, - 118,0,115,11,74,0,130,1,124,1,100,0,100,1,133,2, - 25,0,125,1,124,0,106,0,124,1,25,0,125,2,124,2, - 100,3,25,0,125,3,124,2,100,4,25,0,125,4,124,2, - 100,5,25,0,125,5,116,1,124,4,124,3,131,2,124,5, - 102,2,83,0,35,0,4,0,116,2,116,3,116,4,102,3, - 121,55,1,0,1,0,1,0,89,0,100,6,83,0,37,0, - 119,0,41,7,78,114,15,0,0,0,169,2,218,1,99,218, - 1,111,114,170,0,0,0,233,6,0,0,0,233,3,0,0, - 0,41,2,114,0,0,0,0,114,0,0,0,0,41,5,114, - 29,0,0,0,114,176,0,0,0,114,27,0,0,0,218,10, - 73,110,100,101,120,69,114,114,111,114,114,161,0,0,0,41, - 6,114,33,0,0,0,114,14,0,0,0,114,62,0,0,0, - 114,138,0,0,0,114,139,0,0,0,90,17,117,110,99,111, - 109,112,114,101,115,115,101,100,95,115,105,122,101,115,6,0, - 0,0,32,32,32,32,32,32,114,11,0,0,0,114,158,0, - 0,0,194,2,0,0,115,26,0,0,0,2,1,20,2,12, - 1,10,1,8,3,8,1,8,1,14,1,2,128,18,1,6, - 1,2,128,2,255,115,12,0,0,0,129,39,41,0,169,10, - 54,7,183,1,54,7,114,158,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,8,0,0,0,3,0,0,0, - 115,82,0,0,0,124,1,100,1,100,0,133,2,25,0,100, - 2,118,0,115,10,74,0,130,1,124,1,100,0,100,1,133, - 2,25,0,125,1,9,0,124,0,106,0,124,1,25,0,125, - 2,110,11,35,0,4,0,116,1,121,40,1,0,1,0,1, - 0,89,0,100,0,83,0,37,0,116,2,124,0,106,3,124, - 2,131,2,83,0,119,0,41,3,78,114,15,0,0,0,114, - 177,0,0,0,41,4,114,29,0,0,0,114,27,0,0,0, - 114,60,0,0,0,114,30,0,0,0,41,3,114,33,0,0, - 0,114,14,0,0,0,114,62,0,0,0,115,3,0,0,0, - 32,32,32,114,11,0,0,0,114,156,0,0,0,213,2,0, - 0,115,20,0,0,0,20,2,12,1,2,2,12,1,2,128, - 12,1,6,1,2,128,12,2,2,253,115,12,0,0,0,145, - 5,23,0,151,7,33,7,168,1,33,7,114,156,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,3,0,0,0,115,14,1,0,0,116,0,124,0,124,1, - 131,2,125,2,100,0,125,3,116,1,68,0,93,100,92,3, - 125,4,125,5,125,6,124,2,124,4,23,0,125,7,116,2, - 160,3,100,1,124,0,106,4,116,5,124,7,100,2,100,3, - 166,5,1,0,9,0,124,0,106,6,124,7,25,0,125,8, - 110,10,35,0,4,0,116,7,121,134,1,0,1,0,1,0, - 89,0,113,9,37,0,124,8,100,4,25,0,125,9,116,8, - 124,0,106,4,124,8,131,2,125,10,100,0,125,11,124,5, - 114,89,9,0,116,9,124,0,124,9,124,7,124,1,124,10, - 131,5,125,11,110,24,35,0,4,0,116,10,121,133,1,0, - 125,12,1,0,124,12,125,3,89,0,100,0,125,12,126,12, - 110,10,100,0,125,12,126,12,119,1,37,0,116,11,124,9, - 124,10,131,2,125,11,124,11,100,0,117,0,114,99,113,9, - 124,8,100,4,25,0,125,9,124,11,124,6,124,9,102,3, - 2,0,1,0,83,0,124,3,114,124,100,5,124,3,155,0, - 157,2,125,13,116,12,124,13,124,1,100,6,141,2,124,3, - 130,2,116,12,100,7,124,1,155,2,157,2,124,1,100,6, - 141,2,130,1,119,0,119,0,41,8,78,122,13,116,114,121, - 105,110,103,32,123,125,123,125,123,125,114,94,0,0,0,41, - 1,90,9,118,101,114,98,111,115,105,116,121,114,0,0,0, - 0,122,20,109,111,100,117,108,101,32,108,111,97,100,32,102, - 97,105,108,101,100,58,32,114,66,0,0,0,114,65,0,0, - 0,41,13,114,40,0,0,0,114,96,0,0,0,114,49,0, - 0,0,114,82,0,0,0,114,30,0,0,0,114,21,0,0, - 0,114,29,0,0,0,114,27,0,0,0,114,60,0,0,0, - 114,162,0,0,0,114,81,0,0,0,114,168,0,0,0,114, - 3,0,0,0,41,14,114,33,0,0,0,114,42,0,0,0, - 114,14,0,0,0,90,12,105,109,112,111,114,116,95,101,114, - 114,111,114,114,97,0,0,0,114,98,0,0,0,114,55,0, - 0,0,114,70,0,0,0,114,62,0,0,0,114,44,0,0, - 0,114,133,0,0,0,114,54,0,0,0,90,3,101,120,99, - 114,83,0,0,0,115,14,0,0,0,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,114,11,0,0,0,114,52,0, - 0,0,228,2,0,0,115,64,0,0,0,10,1,4,1,14, - 1,8,1,22,1,2,1,12,1,2,128,12,1,4,1,2, - 128,8,2,12,1,4,1,4,1,2,1,18,1,2,128,12, - 1,14,1,10,128,10,2,8,1,2,3,8,1,14,1,4, - 2,10,1,14,1,18,2,2,241,2,247,115,42,0,0,0, - 158,5,36,2,164,7,45,9,189,8,65,6,2,193,6,7, - 65,24,9,193,13,2,65,20,9,193,20,4,65,24,9,194, - 5,1,65,24,9,194,6,1,45,9,114,52,0,0,0,41, - 46,114,92,0,0,0,90,26,95,102,114,111,122,101,110,95, - 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110, - 97,108,114,22,0,0,0,114,1,0,0,0,114,2,0,0, - 0,90,17,95,102,114,111,122,101,110,95,105,109,112,111,114, - 116,108,105,98,114,49,0,0,0,114,155,0,0,0,114,117, - 0,0,0,114,159,0,0,0,114,73,0,0,0,114,138,0, - 0,0,114,36,0,0,0,90,7,95,95,97,108,108,95,95, - 114,21,0,0,0,90,15,112,97,116,104,95,115,101,112,97, - 114,97,116,111,114,115,114,19,0,0,0,114,81,0,0,0, - 114,3,0,0,0,114,26,0,0,0,218,4,116,121,112,101, - 114,76,0,0,0,114,120,0,0,0,114,122,0,0,0,114, - 124,0,0,0,90,13,95,76,111,97,100,101,114,66,97,115, - 105,99,115,114,4,0,0,0,114,96,0,0,0,114,40,0, - 0,0,114,41,0,0,0,114,39,0,0,0,114,28,0,0, - 0,114,129,0,0,0,114,149,0,0,0,114,151,0,0,0, - 114,60,0,0,0,114,154,0,0,0,114,162,0,0,0,218, - 8,95,95,99,111,100,101,95,95,114,160,0,0,0,114,166, - 0,0,0,114,168,0,0,0,114,176,0,0,0,114,158,0, - 0,0,114,156,0,0,0,114,52,0,0,0,114,9,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,90,0,0,0,4,0, - 8,16,16,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,2,6,3,14,1,16,3,4,4,8,2,4,2, - 4,1,4,1,18,2,0,127,0,127,12,50,12,1,2,1, - 2,1,4,252,8,9,8,4,8,9,8,31,2,126,2,254, - 4,29,8,5,8,21,8,46,8,8,10,40,8,5,8,7, - 8,6,8,13,8,19,12,15,114,10,0,0,0, + 2,6,22,196,2,128,12,0,14,109,4,1,2,247,2,246, + 2,246,2,227,2,227,2,248,2,246,2,248,115,235,0,0, + 0,129,5,7,0,135,17,24,7,155,1,73,31,3,157,16, + 46,2,173,1,73,31,3,174,17,63,9,191,24,73,31,3, + 193,24,10,65,35,2,193,34,1,73,31,3,193,35,17,65, + 52,9,193,52,10,73,31,3,193,63,9,66,9,2,194,8, + 1,73,31,3,194,9,17,66,26,9,194,26,65,54,73,31, + 3,196,17,5,68,23,2,196,22,1,73,31,3,196,23,17, + 68,40,9,196,40,66,24,73,31,3,199,1,5,71,7,2, + 199,6,1,73,31,3,199,7,17,71,24,9,199,24,17,73, + 31,3,199,42,23,72,2,2,200,1,1,73,31,3,200,2, + 17,72,19,9,200,19,11,73,31,3,200,31,5,72,37,2, + 200,36,1,73,31,3,200,37,16,72,55,9,200,53,35,73, + 31,3,201,31,5,73,36,11,201,37,3,73,36,11,201,52, + 1,72,55,9,201,53,1,72,19,9,201,54,1,71,24,9, + 201,55,1,68,40,9,201,56,1,66,26,9,201,57,1,65, + 52,9,201,58,1,63,9,201,59,1,24,7,114,28,0,0, + 0,117,190,1,0,0,0,1,2,3,4,5,6,7,8,9, + 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41, + 42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57, + 58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73, + 74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89, + 90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105, + 106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121, + 122,123,124,125,126,127,195,135,195,188,195,169,195,162,195,164, + 195,160,195,165,195,167,195,170,195,171,195,168,195,175,195,174, + 195,172,195,132,195,133,195,137,195,166,195,134,195,180,195,182, + 195,178,195,187,195,185,195,191,195,150,195,156,194,162,194,163, + 194,165,226,130,167,198,146,195,161,195,173,195,179,195,186,195, + 177,195,145,194,170,194,186,194,191,226,140,144,194,172,194,189, + 194,188,194,161,194,171,194,187,226,150,145,226,150,146,226,150, + 147,226,148,130,226,148,164,226,149,161,226,149,162,226,149,150, + 226,149,149,226,149,163,226,149,145,226,149,151,226,149,157,226, + 149,156,226,149,155,226,148,144,226,148,148,226,148,180,226,148, + 172,226,148,156,226,148,128,226,148,188,226,149,158,226,149,159, + 226,149,154,226,149,148,226,149,169,226,149,166,226,149,160,226, + 149,144,226,149,172,226,149,167,226,149,168,226,149,164,226,149, + 165,226,149,153,226,149,152,226,149,146,226,149,147,226,149,171, + 226,149,170,226,148,152,226,148,140,226,150,136,226,150,132,226, + 150,140,226,150,144,226,150,128,206,177,195,159,206,147,207,128, + 206,163,207,131,194,181,207,132,206,166,206,152,206,169,206,180, + 226,136,158,207,134,206,181,226,136,169,226,137,161,194,177,226, + 137,165,226,137,164,226,140,160,226,140,161,195,183,226,137,136, + 194,176,226,136,153,194,183,226,136,154,226,129,191,194,178,226, + 150,160,194,160,99,0,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,3,0,0,0,115,110,0,0,0,116,0, + 114,11,116,1,160,2,100,1,161,1,1,0,116,3,100,2, + 131,1,130,1,100,3,97,0,9,0,100,4,100,5,108,4, + 109,5,125,0,1,0,110,17,35,0,4,0,116,6,121,54, + 1,0,1,0,1,0,116,1,160,2,100,1,161,1,1,0, + 116,3,100,2,131,1,130,1,37,0,9,0,100,6,97,0, + 110,5,35,0,100,6,97,0,119,0,37,0,116,1,160,2, + 100,7,161,1,1,0,124,0,83,0,119,0,41,8,78,122, + 27,122,105,112,105,109,112,111,114,116,58,32,122,108,105,98, + 32,85,78,65,86,65,73,76,65,66,76,69,250,41,99,97, + 110,39,116,32,100,101,99,111,109,112,114,101,115,115,32,100, + 97,116,97,59,32,122,108,105,98,32,110,111,116,32,97,118, + 97,105,108,97,98,108,101,84,114,0,0,0,0,169,1,218, + 10,100,101,99,111,109,112,114,101,115,115,70,122,25,122,105, + 112,105,109,112,111,114,116,58,32,122,108,105,98,32,97,118, + 97,105,108,97,98,108,101,41,7,218,15,95,105,109,112,111, + 114,116,105,110,103,95,122,108,105,98,114,49,0,0,0,114, + 82,0,0,0,114,3,0,0,0,90,4,122,108,105,98,114, + 148,0,0,0,218,9,69,120,99,101,112,116,105,111,110,114, + 147,0,0,0,115,1,0,0,0,32,114,11,0,0,0,218, + 20,95,103,101,116,95,100,101,99,111,109,112,114,101,115,115, + 95,102,117,110,99,48,2,0,0,115,36,0,0,0,4,2, + 10,3,8,1,4,2,2,1,14,1,2,128,12,1,10,1, + 8,1,2,128,2,253,6,5,2,128,8,0,10,2,4,1, + 2,249,115,24,0,0,0,142,6,21,0,148,1,42,0,149, + 16,37,7,165,1,42,0,170,4,46,7,182,1,37,7,114, + 151,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,9,0,0,0,3,0,0,0,115,132,1,0,0,124,1, + 92,8,125,2,125,3,125,4,125,5,125,6,125,7,125,8, + 125,9,124,4,100,1,107,0,114,18,116,0,100,2,131,1, + 130,1,116,1,160,2,124,0,161,1,53,0,125,10,9,0, + 124,10,160,3,124,6,161,1,1,0,110,17,35,0,4,0, + 116,4,121,193,1,0,1,0,1,0,116,0,100,3,124,0, + 155,2,157,2,124,0,100,4,141,2,130,1,37,0,124,10, + 160,5,100,5,161,1,125,11,116,6,124,11,131,1,100,5, + 107,3,114,63,116,7,100,6,131,1,130,1,124,11,100,0, + 100,7,133,2,25,0,100,8,107,3,114,80,116,0,100,9, + 124,0,155,2,157,2,124,0,100,4,141,2,130,1,116,8, + 124,11,100,10,100,11,133,2,25,0,131,1,125,12,116,8, + 124,11,100,11,100,5,133,2,25,0,131,1,125,13,100,5, + 124,12,23,0,124,13,23,0,125,14,124,6,124,14,55,0, + 125,6,9,0,124,10,160,3,124,6,161,1,1,0,110,17, + 35,0,4,0,116,4,121,192,1,0,1,0,1,0,116,0, + 100,3,124,0,155,2,157,2,124,0,100,4,141,2,130,1, + 37,0,124,10,160,5,124,4,161,1,125,15,116,6,124,15, + 131,1,124,4,107,3,114,145,116,4,100,12,131,1,130,1, + 9,0,100,0,4,0,4,0,131,3,1,0,110,11,35,0, + 49,0,115,157,119,4,37,0,1,0,1,0,1,0,89,0, + 1,0,1,0,124,3,100,1,107,2,114,169,124,15,83,0, + 9,0,116,9,131,0,125,16,110,12,35,0,4,0,116,10, + 121,191,1,0,1,0,1,0,116,0,100,13,131,1,130,1, + 37,0,124,16,124,15,100,14,131,2,83,0,119,0,119,0, + 119,0,41,15,78,114,0,0,0,0,122,18,110,101,103,97, + 116,105,118,101,32,100,97,116,97,32,115,105,122,101,114,99, + 0,0,0,114,13,0,0,0,114,111,0,0,0,114,105,0, + 0,0,114,100,0,0,0,115,4,0,0,0,80,75,3,4, + 122,23,98,97,100,32,108,111,99,97,108,32,102,105,108,101, + 32,104,101,97,100,101,114,58,32,233,26,0,0,0,114,110, + 0,0,0,122,26,122,105,112,105,109,112,111,114,116,58,32, + 99,97,110,39,116,32,114,101,97,100,32,100,97,116,97,114, + 146,0,0,0,105,241,255,255,255,41,11,114,3,0,0,0, + 114,117,0,0,0,114,118,0,0,0,114,119,0,0,0,114, + 23,0,0,0,114,121,0,0,0,114,59,0,0,0,114,126, + 0,0,0,114,1,0,0,0,114,151,0,0,0,114,150,0, + 0,0,41,17,114,30,0,0,0,114,62,0,0,0,90,8, + 100,97,116,97,112,97,116,104,114,137,0,0,0,114,141,0, + 0,0,114,132,0,0,0,114,144,0,0,0,114,138,0,0, + 0,114,139,0,0,0,114,140,0,0,0,114,130,0,0,0, + 114,131,0,0,0,114,142,0,0,0,114,143,0,0,0,114, + 134,0,0,0,90,8,114,97,119,95,100,97,116,97,114,148, + 0,0,0,115,17,0,0,0,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,32,32,32,114,11,0,0,0,114,60, + 0,0,0,69,2,0,0,115,88,0,0,0,20,1,8,1, + 8,1,12,2,2,2,12,1,2,128,12,1,18,1,2,128, + 10,1,12,1,8,1,16,2,18,2,16,2,16,1,12,1, + 8,1,2,1,12,1,2,128,12,1,18,1,2,128,10,1, + 12,1,8,1,2,255,20,233,2,128,12,0,8,26,4,2, + 2,3,8,1,2,128,12,1,8,1,2,128,10,1,2,254, + 2,243,2,240,115,88,0,0,0,151,1,66,24,3,153,5, + 31,2,158,1,66,24,3,159,16,47,9,175,59,66,24,3, + 193,43,5,65,49,2,193,48,1,66,24,3,193,49,16,66, + 1,9,194,1,16,66,24,3,194,24,4,66,28,11,194,29, + 3,66,28,11,194,42,3,66,46,0,194,46,11,66,57,7, + 194,63,1,66,57,7,195,0,1,66,1,9,195,1,1,47, + 9,114,60,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,115,16,0,0,0, + 116,0,124,0,124,1,24,0,131,1,100,1,107,1,83,0, + 41,2,78,114,5,0,0,0,41,1,218,3,97,98,115,41, + 2,90,2,116,49,90,2,116,50,115,2,0,0,0,32,32, + 114,11,0,0,0,218,9,95,101,113,95,109,116,105,109,101, + 115,2,0,0,115,2,0,0,0,16,2,114,10,0,0,0, + 114,154,0,0,0,99,5,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,3,0,0,0,115,254,0,0,0,124, + 3,124,2,100,1,156,2,125,5,116,0,160,1,124,4,124, + 3,124,5,161,3,125,6,124,6,100,2,64,0,100,3,107, + 3,125,7,124,7,114,63,124,6,100,4,64,0,100,3,107, + 3,125,8,116,2,106,3,100,5,107,3,114,62,124,8,115, + 38,116,2,106,3,100,6,107,2,114,62,116,4,124,0,124, + 2,131,2,125,9,124,9,100,0,117,1,114,62,116,2,160, + 5,116,0,106,6,124,9,161,2,125,10,116,0,160,7,124, + 4,124,10,124,3,124,5,161,4,1,0,110,40,116,8,124, + 0,124,2,131,2,92,2,125,11,125,12,124,11,114,103,116, + 9,116,10,124,4,100,7,100,8,133,2,25,0,131,1,124, + 11,131,2,114,93,116,10,124,4,100,8,100,9,133,2,25, + 0,131,1,124,12,107,3,114,103,116,11,160,12,100,10,124, + 3,155,2,157,2,161,1,1,0,100,0,83,0,116,13,160, + 14,124,4,100,9,100,0,133,2,25,0,161,1,125,13,116, + 15,124,13,116,16,131,2,115,125,116,17,100,11,124,1,155, + 2,100,12,157,3,131,1,130,1,124,13,83,0,41,13,78, + 41,2,114,48,0,0,0,114,14,0,0,0,114,5,0,0, + 0,114,0,0,0,0,114,94,0,0,0,90,5,110,101,118, + 101,114,90,6,97,108,119,97,121,115,114,106,0,0,0,114, + 101,0,0,0,114,102,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,122,16,99,111,109,112,105,108,101,100,32,109,111,100,117, + 108,101,32,122,21,32,105,115,32,110,111,116,32,97,32,99, + 111,100,101,32,111,98,106,101,99,116,41,18,114,22,0,0, + 0,90,13,95,99,108,97,115,115,105,102,121,95,112,121,99, + 218,4,95,105,109,112,90,21,99,104,101,99,107,95,104,97, + 115,104,95,98,97,115,101,100,95,112,121,99,115,218,15,95, + 103,101,116,95,112,121,99,95,115,111,117,114,99,101,218,11, + 115,111,117,114,99,101,95,104,97,115,104,90,17,95,82,65, + 87,95,77,65,71,73,67,95,78,85,77,66,69,82,90,18, + 95,118,97,108,105,100,97,116,101,95,104,97,115,104,95,112, + 121,99,218,29,95,103,101,116,95,109,116,105,109,101,95,97, + 110,100,95,115,105,122,101,95,111,102,95,115,111,117,114,99, + 101,114,154,0,0,0,114,2,0,0,0,114,49,0,0,0, + 114,82,0,0,0,218,7,109,97,114,115,104,97,108,90,5, + 108,111,97,100,115,114,16,0,0,0,218,10,95,99,111,100, + 101,95,116,121,112,101,218,9,84,121,112,101,69,114,114,111, + 114,41,14,114,33,0,0,0,114,61,0,0,0,114,70,0, + 0,0,114,42,0,0,0,114,133,0,0,0,90,11,101,120, + 99,95,100,101,116,97,105,108,115,114,136,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,90,12,115,111,117,114,99,101, + 95,98,121,116,101,115,114,157,0,0,0,90,12,115,111,117, + 114,99,101,95,109,116,105,109,101,90,11,115,111,117,114,99, + 101,95,115,105,122,101,114,54,0,0,0,115,14,0,0,0, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,11, + 0,0,0,218,15,95,117,110,109,97,114,115,104,97,108,95, + 99,111,100,101,123,2,0,0,115,72,0,0,0,2,2,2, + 1,6,254,14,5,12,2,4,1,12,1,10,1,2,1,2, + 255,8,1,2,255,10,2,8,1,4,1,4,1,2,1,4, + 254,4,5,8,1,4,255,2,128,8,4,6,255,4,3,22, + 3,18,1,2,255,4,2,8,1,4,255,4,2,18,2,10, + 1,16,1,4,1,114,10,0,0,0,114,162,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 3,0,0,0,115,28,0,0,0,124,0,160,0,100,1,100, + 2,161,2,125,0,124,0,160,0,100,3,100,2,161,2,125, + 0,124,0,83,0,41,4,78,115,2,0,0,0,13,10,243, + 1,0,0,0,10,243,1,0,0,0,13,41,1,114,20,0, + 0,0,41,1,218,6,115,111,117,114,99,101,115,1,0,0, + 0,32,114,11,0,0,0,218,23,95,110,111,114,109,97,108, + 105,122,101,95,108,105,110,101,95,101,110,100,105,110,103,115, + 168,2,0,0,115,6,0,0,0,12,1,12,1,4,1,114, + 10,0,0,0,114,166,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,6,0,0,0,3,0,0,0,115,24, + 0,0,0,116,0,124,1,131,1,125,1,116,1,124,1,124, + 0,100,1,100,2,100,3,141,4,83,0,41,4,78,114,80, + 0,0,0,84,41,1,90,12,100,111,110,116,95,105,110,104, + 101,114,105,116,41,2,114,166,0,0,0,218,7,99,111,109, + 112,105,108,101,41,2,114,61,0,0,0,114,165,0,0,0, + 115,2,0,0,0,32,32,114,11,0,0,0,218,15,95,99, + 111,109,112,105,108,101,95,115,111,117,114,99,101,175,2,0, + 0,115,4,0,0,0,8,1,16,1,114,10,0,0,0,114, + 168,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,11,0,0,0,3,0,0,0,115,68,0,0,0,116,0, + 160,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, + 63,0,100,4,64,0,124,0,100,5,64,0,124,1,100,6, + 63,0,124,1,100,3,63,0,100,7,64,0,124,1,100,5, + 64,0,100,8,20,0,100,9,100,9,100,9,102,9,161,1, + 83,0,41,10,78,233,9,0,0,0,105,188,7,0,0,233, + 5,0,0,0,233,15,0,0,0,233,31,0,0,0,233,11, + 0,0,0,233,63,0,0,0,114,94,0,0,0,114,15,0, + 0,0,41,2,114,138,0,0,0,90,6,109,107,116,105,109, + 101,41,2,218,1,100,114,145,0,0,0,115,2,0,0,0, + 32,32,114,11,0,0,0,218,14,95,112,97,114,115,101,95, + 100,111,115,116,105,109,101,181,2,0,0,115,18,0,0,0, + 4,1,10,1,10,1,6,1,6,1,10,1,10,1,6,1, + 6,249,114,10,0,0,0,114,176,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,10,0,0,0,3,0,0, + 0,115,112,0,0,0,9,0,124,1,100,1,100,0,133,2, + 25,0,100,2,118,0,115,11,74,0,130,1,124,1,100,0, + 100,1,133,2,25,0,125,1,124,0,106,0,124,1,25,0, + 125,2,124,2,100,3,25,0,125,3,124,2,100,4,25,0, + 125,4,124,2,100,5,25,0,125,5,116,1,124,4,124,3, + 131,2,124,5,102,2,83,0,35,0,4,0,116,2,116,3, + 116,4,102,3,121,55,1,0,1,0,1,0,89,0,100,6, + 83,0,37,0,119,0,41,7,78,114,15,0,0,0,169,2, + 218,1,99,218,1,111,114,170,0,0,0,233,6,0,0,0, + 233,3,0,0,0,41,2,114,0,0,0,0,114,0,0,0, + 0,41,5,114,29,0,0,0,114,176,0,0,0,114,27,0, + 0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,161, + 0,0,0,41,6,114,33,0,0,0,114,14,0,0,0,114, + 62,0,0,0,114,138,0,0,0,114,139,0,0,0,90,17, + 117,110,99,111,109,112,114,101,115,115,101,100,95,115,105,122, + 101,115,6,0,0,0,32,32,32,32,32,32,114,11,0,0, + 0,114,158,0,0,0,194,2,0,0,115,26,0,0,0,2, + 1,20,2,12,1,10,1,8,3,8,1,8,1,14,1,2, + 128,18,1,6,1,2,128,2,255,115,12,0,0,0,129,39, + 41,0,169,10,54,7,183,1,54,7,114,158,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 3,0,0,0,115,82,0,0,0,124,1,100,1,100,0,133, + 2,25,0,100,2,118,0,115,10,74,0,130,1,124,1,100, + 0,100,1,133,2,25,0,125,1,9,0,124,0,106,0,124, + 1,25,0,125,2,110,11,35,0,4,0,116,1,121,40,1, + 0,1,0,1,0,89,0,100,0,83,0,37,0,116,2,124, + 0,106,3,124,2,131,2,83,0,119,0,41,3,78,114,15, + 0,0,0,114,177,0,0,0,41,4,114,29,0,0,0,114, + 27,0,0,0,114,60,0,0,0,114,30,0,0,0,41,3, + 114,33,0,0,0,114,14,0,0,0,114,62,0,0,0,115, + 3,0,0,0,32,32,32,114,11,0,0,0,114,156,0,0, + 0,213,2,0,0,115,20,0,0,0,20,2,12,1,2,2, + 12,1,2,128,12,1,6,1,2,128,12,2,2,253,115,12, + 0,0,0,145,5,23,0,151,7,33,7,168,1,33,7,114, + 156,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,9,0,0,0,3,0,0,0,115,14,1,0,0,116,0, + 124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,0, + 93,100,92,3,125,4,125,5,125,6,124,2,124,4,23,0, + 125,7,116,2,160,3,100,1,124,0,106,4,116,5,124,7, + 100,2,100,3,166,5,1,0,9,0,124,0,106,6,124,7, + 25,0,125,8,110,10,35,0,4,0,116,7,121,134,1,0, + 1,0,1,0,89,0,113,9,37,0,124,8,100,4,25,0, + 125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,0, + 125,11,124,5,114,89,9,0,116,9,124,0,124,9,124,7, + 124,1,124,10,131,5,125,11,110,24,35,0,4,0,116,10, + 121,133,1,0,125,12,1,0,124,12,125,3,89,0,100,0, + 125,12,126,12,110,10,100,0,125,12,126,12,119,1,37,0, + 116,11,124,9,124,10,131,2,125,11,124,11,100,0,117,0, + 114,99,113,9,124,8,100,4,25,0,125,9,124,11,124,6, + 124,9,102,3,2,0,1,0,83,0,124,3,114,124,100,5, + 124,3,155,0,157,2,125,13,116,12,124,13,124,1,100,6, + 141,2,124,3,130,2,116,12,100,7,124,1,155,2,157,2, + 124,1,100,6,141,2,130,1,119,0,119,0,41,8,78,122, + 13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,94, + 0,0,0,41,1,90,9,118,101,114,98,111,115,105,116,121, + 114,0,0,0,0,122,20,109,111,100,117,108,101,32,108,111, + 97,100,32,102,97,105,108,101,100,58,32,114,66,0,0,0, + 114,65,0,0,0,41,13,114,40,0,0,0,114,96,0,0, + 0,114,49,0,0,0,114,82,0,0,0,114,30,0,0,0, + 114,21,0,0,0,114,29,0,0,0,114,27,0,0,0,114, + 60,0,0,0,114,162,0,0,0,114,81,0,0,0,114,168, + 0,0,0,114,3,0,0,0,41,14,114,33,0,0,0,114, + 42,0,0,0,114,14,0,0,0,90,12,105,109,112,111,114, + 116,95,101,114,114,111,114,114,97,0,0,0,114,98,0,0, + 0,114,55,0,0,0,114,70,0,0,0,114,62,0,0,0, + 114,44,0,0,0,114,133,0,0,0,114,54,0,0,0,90, + 3,101,120,99,114,83,0,0,0,115,14,0,0,0,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,114,11,0,0, + 0,114,52,0,0,0,228,2,0,0,115,64,0,0,0,10, + 1,4,1,14,1,8,1,22,1,2,1,12,1,2,128,12, + 1,4,1,2,128,8,2,12,1,4,1,4,1,2,1,18, + 1,2,128,12,1,14,1,10,128,10,2,8,1,2,3,8, + 1,14,1,4,2,10,1,14,1,18,2,2,241,2,247,115, + 42,0,0,0,158,5,36,2,164,7,45,9,189,8,65,6, + 2,193,6,7,65,24,9,193,13,2,65,20,9,193,20,4, + 65,24,9,194,5,1,65,24,9,194,6,1,45,9,114,52, + 0,0,0,41,46,114,92,0,0,0,90,26,95,102,114,111, + 122,101,110,95,105,109,112,111,114,116,108,105,98,95,101,120, + 116,101,114,110,97,108,114,22,0,0,0,114,1,0,0,0, + 114,2,0,0,0,90,17,95,102,114,111,122,101,110,95,105, + 109,112,111,114,116,108,105,98,114,49,0,0,0,114,155,0, + 0,0,114,117,0,0,0,114,159,0,0,0,114,73,0,0, + 0,114,138,0,0,0,114,36,0,0,0,90,7,95,95,97, + 108,108,95,95,114,21,0,0,0,90,15,112,97,116,104,95, + 115,101,112,97,114,97,116,111,114,115,114,19,0,0,0,114, + 81,0,0,0,114,3,0,0,0,114,26,0,0,0,218,4, + 116,121,112,101,114,76,0,0,0,114,120,0,0,0,114,122, + 0,0,0,114,124,0,0,0,90,13,95,76,111,97,100,101, + 114,66,97,115,105,99,115,114,4,0,0,0,114,96,0,0, + 0,114,40,0,0,0,114,41,0,0,0,114,39,0,0,0, + 114,28,0,0,0,114,129,0,0,0,114,149,0,0,0,114, + 151,0,0,0,114,60,0,0,0,114,154,0,0,0,114,162, + 0,0,0,218,8,95,95,99,111,100,101,95,95,114,160,0, + 0,0,114,166,0,0,0,114,168,0,0,0,114,176,0,0, + 0,114,158,0,0,0,114,156,0,0,0,114,52,0,0,0, + 114,9,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,90,0, + 0,0,4,0,8,16,16,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,2,6,3,14,1,16,3,4,4, + 8,2,4,2,4,1,4,1,18,2,0,127,0,127,12,50, + 12,1,2,1,2,1,4,252,8,9,8,4,8,9,8,31, + 2,126,2,254,4,29,8,5,8,21,8,46,8,8,10,40, + 8,5,8,7,8,6,8,13,8,19,12,15,114,10,0,0, + 0, }; From webhook-mailer at python.org Thu Jun 24 10:34:42 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 24 Jun 2021 14:34:42 -0000 Subject: [Python-checkins] bpo-44229: Ignore spurious EPROTOTYPE on macOS in test_ssl (GH-26893) (GH-26895) Message-ID: https://github.com/python/cpython/commit/71ba16b21cb35923098026117b5e6d823c5f5707 commit: 71ba16b21cb35923098026117b5e6d823c5f5707 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-24T15:34:34+01:00 summary: bpo-44229: Ignore spurious EPROTOTYPE on macOS in test_ssl (GH-26893) (GH-26895) (cherry picked from commit b5a52eef67997246b4235b5407e52a01e822ce56) Co-authored-by: Erlend Egeberg Aasland files: M Lib/test/test_ssl.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 1fa024191893e6..32bb2aa37d320b 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2380,9 +2380,14 @@ def wrap_conn(self): self.server.conn_errors.append(str(e)) if self.server.chatty: handle_error("\n server: bad connection attempt from " + repr(self.addr) + ":\n") - self.running = False - self.server.stop() - self.close() + + # bpo-44229, bpo-43855, bpo-44237, and bpo-33450: + # Ignore spurious EPROTOTYPE returned by write() on macOS. + # See also http://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ + if e.errno != errno.EPROTOTYPE and sys.platform != "darwin": + self.running = False + self.server.stop() + self.close() return False else: self.server.shared_ciphers.append(self.sslconn.shared_ciphers()) From webhook-mailer at python.org Thu Jun 24 10:36:02 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 24 Jun 2021 14:36:02 -0000 Subject: [Python-checkins] bpo-44491: Allow clearing the sqlite3 authoriser callback (GH-26863) Message-ID: https://github.com/python/cpython/commit/b19f45533942e4ad7ddf9d2d94f8b87c6f746bce commit: b19f45533942e4ad7ddf9d2d94f8b87c6f746bce branch: main author: Erlend Egeberg Aasland committer: pablogsal date: 2021-06-24T15:35:57+01:00 summary: bpo-44491: Allow clearing the sqlite3 authoriser callback (GH-26863) files: A Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst M Doc/library/sqlite3.rst M Doc/whatsnew/3.11.rst M Lib/sqlite3/test/dbapi.py M Lib/sqlite3/test/userfunctions.py M Modules/_sqlite/connection.c diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index 4010e1a4daff2..33cb13e9784c3 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -430,6 +430,11 @@ Connection Objects argument and the meaning of the second and third argument depending on the first one. All necessary constants are available in the :mod:`sqlite3` module. + Passing :const:`None` as *authorizer_callback* will disable the authorizer. + + .. versionchanged:: 3.11 + Added support for disabling the authorizer using :const:`None`. + .. method:: set_progress_handler(handler, n) diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 50d91a0adc141..cc88c4166ec1a 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -106,6 +106,14 @@ math Dickinson in :issue:`44339`.) +sqlite3 +------- + +* You can now disable the authorizer by passing :const:`None` to + :meth:`~sqlite3.Connection.set_authorizer`. + (Contributed by Erlend E. Aasland in :issue:`44491`.) + + Removed ======= * :class:`smtpd.MailmanProxy` is now removed as it is unusable without diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 1a4b44188bd41..20cca33e23834 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -652,6 +652,7 @@ def test_check_connection_thread(self): lambda: self.con.rollback(), lambda: self.con.close(), lambda: self.con.set_trace_callback(None), + lambda: self.con.set_authorizer(None), lambda: self.con.create_collation("foo", None), ] for fn in fns: diff --git a/Lib/sqlite3/test/userfunctions.py b/Lib/sqlite3/test/userfunctions.py index dc900f6486f49..1ed090e3d9256 100644 --- a/Lib/sqlite3/test/userfunctions.py +++ b/Lib/sqlite3/test/userfunctions.py @@ -522,6 +522,12 @@ def test_column_access(self): self.con.execute("select c2 from t1") self.assertIn('prohibited', str(cm.exception)) + def test_clear_authorizer(self): + self.con.set_authorizer(None) + self.con.execute("select * from t2") + self.con.execute("select c2 from t1") + + class AuthorizerRaiseExceptionTests(AuthorizerTests): @staticmethod def authorizer_cb(action, arg1, arg2, dbname, source): diff --git a/Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst b/Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst new file mode 100644 index 0000000000000..aa25052df8227 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst @@ -0,0 +1,3 @@ +Allow clearing the :mod:`sqlite3` authorizer callback by passing +:const:``None`` to :meth:`~sqlite3.Connection.set_authorizer`. Patch by +Erlend E. Aasland. diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 3e12679cd14c0..6e7101ade9106 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1053,20 +1053,24 @@ pysqlite_connection_set_authorizer_impl(pysqlite_Connection *self, PyObject *authorizer_cb) /*[clinic end generated code: output=f18ba575d788b35c input=df079724c020d2f2]*/ { - int rc; - if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } - rc = sqlite3_set_authorizer(self->db, _authorizer_callback, (void*)authorizer_cb); + int rc; + if (authorizer_cb == Py_None) { + rc = sqlite3_set_authorizer(self->db, NULL, NULL); + Py_XSETREF(self->function_pinboard_authorizer_cb, NULL); + } + else { + Py_INCREF(authorizer_cb); + Py_XSETREF(self->function_pinboard_authorizer_cb, authorizer_cb); + rc = sqlite3_set_authorizer(self->db, _authorizer_callback, authorizer_cb); + } if (rc != SQLITE_OK) { PyErr_SetString(pysqlite_OperationalError, "Error setting authorizer callback"); Py_XSETREF(self->function_pinboard_authorizer_cb, NULL); return NULL; - } else { - Py_INCREF(authorizer_cb); - Py_XSETREF(self->function_pinboard_authorizer_cb, authorizer_cb); } Py_RETURN_NONE; } From webhook-mailer at python.org Thu Jun 24 11:10:07 2021 From: webhook-mailer at python.org (pablogsal) Date: Thu, 24 Jun 2021 15:10:07 -0000 Subject: [Python-checkins] bpo-44456: Improve the syntax error when mixing keyword and positional patterns (GH-26793) Message-ID: https://github.com/python/cpython/commit/0acc258fe6f0ec200ca2f6f9294adbf52a244802 commit: 0acc258fe6f0ec200ca2f6f9294adbf52a244802 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-24T16:09:57+01:00 summary: bpo-44456: Improve the syntax error when mixing keyword and positional patterns (GH-26793) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-18-22-08-25.bpo-44456.L0Rhko.rst M Grammar/python.gram M Lib/test/test_syntax.py M Parser/parser.c M Parser/pegen.c M Parser/pegen.h diff --git a/Grammar/python.gram b/Grammar/python.gram index 56daca054c8b54..6b2fa6a62c4d20 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -380,6 +380,7 @@ class_pattern[pattern_ty]: CHECK(asdl_expr_seq*, _PyPegen_get_pattern_keys(p, keywords)))), CHECK(asdl_pattern_seq*, _PyPegen_get_patterns(p, keywords)), EXTRA) } + | invalid_class_pattern positional_patterns[asdl_pattern_seq*]: | args[asdl_pattern_seq*]=','.pattern+ { args } keyword_patterns[asdl_seq*]: @@ -978,6 +979,13 @@ invalid_case_block: invalid_as_pattern: | or_pattern 'as' a="_" { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot use '_' as a target") } | or_pattern 'as' !NAME a=expression { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "invalid pattern target") } +invalid_class_pattern: + | name_or_attr '(' a=invalid_class_argument_pattern { RAISE_SYNTAX_ERROR_KNOWN_RANGE( + PyPegen_first_item(a, pattern_ty), + PyPegen_last_item(a, pattern_ty), + "positional patterns follow keyword patterns") } +invalid_class_argument_pattern[asdl_pattern_seq*]: + | [positional_patterns ','] keyword_patterns ',' a=positional_patterns { a } invalid_if_stmt: | 'if' named_expression NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") } | a='if' a=named_expression ':' NEWLINE !INDENT { diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index e0d0445a83d9d6..ad5656bac6b44e 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -1240,6 +1240,30 @@ ... ... Traceback (most recent call last): SyntaxError: invalid pattern target + + >>> match ...: + ... case Foo(z=1, y=2, x): + ... ... + Traceback (most recent call last): + SyntaxError: positional patterns follow keyword patterns + + >>> match ...: + ... case Foo(a, z=1, y=2, x): + ... ... + Traceback (most recent call last): + SyntaxError: positional patterns follow keyword patterns + + >>> match ...: + ... case Foo(z=1, x, y=2): + ... ... + Traceback (most recent call last): + SyntaxError: positional patterns follow keyword patterns + + >>> match ...: + ... case C(a=b, c, d=e, f, g=h, i, j=k, ...): + ... ... + Traceback (most recent call last): + SyntaxError: positional patterns follow keyword patterns """ import re diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-18-22-08-25.bpo-44456.L0Rhko.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-18-22-08-25.bpo-44456.L0Rhko.rst new file mode 100644 index 00000000000000..86a8c03ce561e7 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-18-22-08-25.bpo-44456.L0Rhko.rst @@ -0,0 +1,2 @@ +Improve the syntax error when mixing positional and keyword patterns. Patch +by Pablo Galindo. diff --git a/Parser/parser.c b/Parser/parser.c index e73a2a1937b4c5..fc6adf63784307 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -281,218 +281,221 @@ static char *soft_keywords[] = { #define invalid_match_stmt_type 1207 #define invalid_case_block_type 1208 #define invalid_as_pattern_type 1209 -#define invalid_if_stmt_type 1210 -#define invalid_elif_stmt_type 1211 -#define invalid_else_stmt_type 1212 -#define invalid_while_stmt_type 1213 -#define invalid_for_stmt_type 1214 -#define invalid_def_raw_type 1215 -#define invalid_class_def_raw_type 1216 -#define invalid_double_starred_kvpairs_type 1217 -#define invalid_kvpair_type 1218 -#define _loop0_1_type 1219 -#define _loop0_2_type 1220 -#define _loop0_4_type 1221 -#define _gather_3_type 1222 -#define _loop0_6_type 1223 -#define _gather_5_type 1224 -#define _loop0_8_type 1225 -#define _gather_7_type 1226 -#define _loop0_10_type 1227 -#define _gather_9_type 1228 -#define _loop1_11_type 1229 -#define _loop0_13_type 1230 -#define _gather_12_type 1231 -#define _tmp_14_type 1232 -#define _tmp_15_type 1233 -#define _tmp_16_type 1234 -#define _tmp_17_type 1235 -#define _tmp_18_type 1236 -#define _tmp_19_type 1237 -#define _tmp_20_type 1238 -#define _tmp_21_type 1239 -#define _loop1_22_type 1240 -#define _tmp_23_type 1241 -#define _tmp_24_type 1242 -#define _loop0_26_type 1243 -#define _gather_25_type 1244 -#define _loop0_28_type 1245 -#define _gather_27_type 1246 -#define _tmp_29_type 1247 -#define _tmp_30_type 1248 -#define _loop0_31_type 1249 -#define _loop1_32_type 1250 -#define _loop0_34_type 1251 -#define _gather_33_type 1252 -#define _tmp_35_type 1253 -#define _loop0_37_type 1254 -#define _gather_36_type 1255 -#define _tmp_38_type 1256 -#define _loop0_40_type 1257 -#define _gather_39_type 1258 -#define _loop0_42_type 1259 -#define _gather_41_type 1260 -#define _loop0_44_type 1261 -#define _gather_43_type 1262 -#define _loop0_46_type 1263 -#define _gather_45_type 1264 -#define _tmp_47_type 1265 -#define _loop1_48_type 1266 -#define _tmp_49_type 1267 -#define _loop1_50_type 1268 -#define _loop0_52_type 1269 -#define _gather_51_type 1270 -#define _tmp_53_type 1271 -#define _tmp_54_type 1272 -#define _tmp_55_type 1273 -#define _tmp_56_type 1274 -#define _loop0_58_type 1275 -#define _gather_57_type 1276 -#define _loop0_60_type 1277 -#define _gather_59_type 1278 -#define _tmp_61_type 1279 -#define _loop0_63_type 1280 -#define _gather_62_type 1281 -#define _loop0_65_type 1282 -#define _gather_64_type 1283 -#define _tmp_66_type 1284 -#define _tmp_67_type 1285 -#define _tmp_68_type 1286 -#define _tmp_69_type 1287 -#define _loop0_70_type 1288 -#define _loop0_71_type 1289 -#define _loop0_72_type 1290 -#define _loop1_73_type 1291 -#define _loop0_74_type 1292 -#define _loop1_75_type 1293 -#define _loop1_76_type 1294 -#define _loop1_77_type 1295 -#define _loop0_78_type 1296 -#define _loop1_79_type 1297 -#define _loop0_80_type 1298 -#define _loop1_81_type 1299 -#define _loop0_82_type 1300 -#define _loop1_83_type 1301 -#define _loop1_84_type 1302 -#define _tmp_85_type 1303 -#define _loop1_86_type 1304 -#define _loop0_88_type 1305 -#define _gather_87_type 1306 -#define _loop1_89_type 1307 -#define _loop0_90_type 1308 -#define _loop0_91_type 1309 -#define _loop0_92_type 1310 -#define _loop1_93_type 1311 -#define _loop0_94_type 1312 -#define _loop1_95_type 1313 -#define _loop1_96_type 1314 -#define _loop1_97_type 1315 -#define _loop0_98_type 1316 -#define _loop1_99_type 1317 -#define _loop0_100_type 1318 -#define _loop1_101_type 1319 -#define _loop0_102_type 1320 -#define _loop1_103_type 1321 -#define _loop1_104_type 1322 -#define _loop1_105_type 1323 -#define _loop1_106_type 1324 -#define _tmp_107_type 1325 -#define _loop0_109_type 1326 -#define _gather_108_type 1327 -#define _tmp_110_type 1328 -#define _tmp_111_type 1329 -#define _tmp_112_type 1330 -#define _tmp_113_type 1331 -#define _loop1_114_type 1332 -#define _tmp_115_type 1333 -#define _tmp_116_type 1334 -#define _tmp_117_type 1335 -#define _loop0_119_type 1336 -#define _gather_118_type 1337 -#define _loop1_120_type 1338 -#define _loop0_121_type 1339 -#define _loop0_122_type 1340 -#define _loop0_124_type 1341 -#define _gather_123_type 1342 -#define _tmp_125_type 1343 -#define _loop0_127_type 1344 -#define _gather_126_type 1345 -#define _loop0_129_type 1346 -#define _gather_128_type 1347 -#define _loop0_131_type 1348 -#define _gather_130_type 1349 -#define _loop0_133_type 1350 -#define _gather_132_type 1351 -#define _loop0_134_type 1352 -#define _loop0_136_type 1353 -#define _gather_135_type 1354 -#define _loop1_137_type 1355 -#define _tmp_138_type 1356 -#define _loop0_140_type 1357 -#define _gather_139_type 1358 -#define _tmp_141_type 1359 -#define _tmp_142_type 1360 -#define _tmp_143_type 1361 -#define _tmp_144_type 1362 -#define _tmp_145_type 1363 -#define _tmp_146_type 1364 -#define _loop0_147_type 1365 -#define _loop0_148_type 1366 -#define _loop0_149_type 1367 -#define _tmp_150_type 1368 -#define _tmp_151_type 1369 -#define _tmp_152_type 1370 -#define _tmp_153_type 1371 -#define _loop0_154_type 1372 -#define _loop1_155_type 1373 -#define _loop0_156_type 1374 -#define _loop1_157_type 1375 -#define _tmp_158_type 1376 -#define _tmp_159_type 1377 -#define _tmp_160_type 1378 -#define _loop0_162_type 1379 -#define _gather_161_type 1380 -#define _loop0_164_type 1381 -#define _gather_163_type 1382 -#define _loop0_166_type 1383 -#define _gather_165_type 1384 -#define _loop0_168_type 1385 -#define _gather_167_type 1386 -#define _tmp_169_type 1387 -#define _tmp_170_type 1388 -#define _tmp_171_type 1389 -#define _tmp_172_type 1390 -#define _tmp_173_type 1391 -#define _tmp_174_type 1392 -#define _loop0_176_type 1393 -#define _gather_175_type 1394 -#define _tmp_177_type 1395 -#define _tmp_178_type 1396 -#define _tmp_179_type 1397 -#define _tmp_180_type 1398 -#define _tmp_181_type 1399 -#define _tmp_182_type 1400 -#define _tmp_183_type 1401 -#define _tmp_184_type 1402 -#define _tmp_185_type 1403 -#define _tmp_186_type 1404 -#define _tmp_187_type 1405 -#define _tmp_188_type 1406 -#define _tmp_189_type 1407 -#define _tmp_190_type 1408 -#define _tmp_191_type 1409 -#define _tmp_192_type 1410 -#define _tmp_193_type 1411 -#define _tmp_194_type 1412 -#define _tmp_195_type 1413 -#define _tmp_196_type 1414 -#define _tmp_197_type 1415 -#define _tmp_198_type 1416 -#define _tmp_199_type 1417 -#define _tmp_200_type 1418 -#define _tmp_201_type 1419 -#define _tmp_202_type 1420 -#define _tmp_203_type 1421 +#define invalid_class_pattern_type 1210 +#define invalid_class_argument_pattern_type 1211 +#define invalid_if_stmt_type 1212 +#define invalid_elif_stmt_type 1213 +#define invalid_else_stmt_type 1214 +#define invalid_while_stmt_type 1215 +#define invalid_for_stmt_type 1216 +#define invalid_def_raw_type 1217 +#define invalid_class_def_raw_type 1218 +#define invalid_double_starred_kvpairs_type 1219 +#define invalid_kvpair_type 1220 +#define _loop0_1_type 1221 +#define _loop0_2_type 1222 +#define _loop0_4_type 1223 +#define _gather_3_type 1224 +#define _loop0_6_type 1225 +#define _gather_5_type 1226 +#define _loop0_8_type 1227 +#define _gather_7_type 1228 +#define _loop0_10_type 1229 +#define _gather_9_type 1230 +#define _loop1_11_type 1231 +#define _loop0_13_type 1232 +#define _gather_12_type 1233 +#define _tmp_14_type 1234 +#define _tmp_15_type 1235 +#define _tmp_16_type 1236 +#define _tmp_17_type 1237 +#define _tmp_18_type 1238 +#define _tmp_19_type 1239 +#define _tmp_20_type 1240 +#define _tmp_21_type 1241 +#define _loop1_22_type 1242 +#define _tmp_23_type 1243 +#define _tmp_24_type 1244 +#define _loop0_26_type 1245 +#define _gather_25_type 1246 +#define _loop0_28_type 1247 +#define _gather_27_type 1248 +#define _tmp_29_type 1249 +#define _tmp_30_type 1250 +#define _loop0_31_type 1251 +#define _loop1_32_type 1252 +#define _loop0_34_type 1253 +#define _gather_33_type 1254 +#define _tmp_35_type 1255 +#define _loop0_37_type 1256 +#define _gather_36_type 1257 +#define _tmp_38_type 1258 +#define _loop0_40_type 1259 +#define _gather_39_type 1260 +#define _loop0_42_type 1261 +#define _gather_41_type 1262 +#define _loop0_44_type 1263 +#define _gather_43_type 1264 +#define _loop0_46_type 1265 +#define _gather_45_type 1266 +#define _tmp_47_type 1267 +#define _loop1_48_type 1268 +#define _tmp_49_type 1269 +#define _loop1_50_type 1270 +#define _loop0_52_type 1271 +#define _gather_51_type 1272 +#define _tmp_53_type 1273 +#define _tmp_54_type 1274 +#define _tmp_55_type 1275 +#define _tmp_56_type 1276 +#define _loop0_58_type 1277 +#define _gather_57_type 1278 +#define _loop0_60_type 1279 +#define _gather_59_type 1280 +#define _tmp_61_type 1281 +#define _loop0_63_type 1282 +#define _gather_62_type 1283 +#define _loop0_65_type 1284 +#define _gather_64_type 1285 +#define _tmp_66_type 1286 +#define _tmp_67_type 1287 +#define _tmp_68_type 1288 +#define _tmp_69_type 1289 +#define _loop0_70_type 1290 +#define _loop0_71_type 1291 +#define _loop0_72_type 1292 +#define _loop1_73_type 1293 +#define _loop0_74_type 1294 +#define _loop1_75_type 1295 +#define _loop1_76_type 1296 +#define _loop1_77_type 1297 +#define _loop0_78_type 1298 +#define _loop1_79_type 1299 +#define _loop0_80_type 1300 +#define _loop1_81_type 1301 +#define _loop0_82_type 1302 +#define _loop1_83_type 1303 +#define _loop1_84_type 1304 +#define _tmp_85_type 1305 +#define _loop1_86_type 1306 +#define _loop0_88_type 1307 +#define _gather_87_type 1308 +#define _loop1_89_type 1309 +#define _loop0_90_type 1310 +#define _loop0_91_type 1311 +#define _loop0_92_type 1312 +#define _loop1_93_type 1313 +#define _loop0_94_type 1314 +#define _loop1_95_type 1315 +#define _loop1_96_type 1316 +#define _loop1_97_type 1317 +#define _loop0_98_type 1318 +#define _loop1_99_type 1319 +#define _loop0_100_type 1320 +#define _loop1_101_type 1321 +#define _loop0_102_type 1322 +#define _loop1_103_type 1323 +#define _loop1_104_type 1324 +#define _loop1_105_type 1325 +#define _loop1_106_type 1326 +#define _tmp_107_type 1327 +#define _loop0_109_type 1328 +#define _gather_108_type 1329 +#define _tmp_110_type 1330 +#define _tmp_111_type 1331 +#define _tmp_112_type 1332 +#define _tmp_113_type 1333 +#define _loop1_114_type 1334 +#define _tmp_115_type 1335 +#define _tmp_116_type 1336 +#define _tmp_117_type 1337 +#define _loop0_119_type 1338 +#define _gather_118_type 1339 +#define _loop1_120_type 1340 +#define _loop0_121_type 1341 +#define _loop0_122_type 1342 +#define _loop0_124_type 1343 +#define _gather_123_type 1344 +#define _tmp_125_type 1345 +#define _loop0_127_type 1346 +#define _gather_126_type 1347 +#define _loop0_129_type 1348 +#define _gather_128_type 1349 +#define _loop0_131_type 1350 +#define _gather_130_type 1351 +#define _loop0_133_type 1352 +#define _gather_132_type 1353 +#define _loop0_134_type 1354 +#define _loop0_136_type 1355 +#define _gather_135_type 1356 +#define _loop1_137_type 1357 +#define _tmp_138_type 1358 +#define _loop0_140_type 1359 +#define _gather_139_type 1360 +#define _tmp_141_type 1361 +#define _tmp_142_type 1362 +#define _tmp_143_type 1363 +#define _tmp_144_type 1364 +#define _tmp_145_type 1365 +#define _tmp_146_type 1366 +#define _loop0_147_type 1367 +#define _loop0_148_type 1368 +#define _loop0_149_type 1369 +#define _tmp_150_type 1370 +#define _tmp_151_type 1371 +#define _tmp_152_type 1372 +#define _tmp_153_type 1373 +#define _loop0_154_type 1374 +#define _loop1_155_type 1375 +#define _loop0_156_type 1376 +#define _loop1_157_type 1377 +#define _tmp_158_type 1378 +#define _tmp_159_type 1379 +#define _tmp_160_type 1380 +#define _loop0_162_type 1381 +#define _gather_161_type 1382 +#define _loop0_164_type 1383 +#define _gather_163_type 1384 +#define _loop0_166_type 1385 +#define _gather_165_type 1386 +#define _loop0_168_type 1387 +#define _gather_167_type 1388 +#define _tmp_169_type 1389 +#define _tmp_170_type 1390 +#define _tmp_171_type 1391 +#define _tmp_172_type 1392 +#define _tmp_173_type 1393 +#define _tmp_174_type 1394 +#define _tmp_175_type 1395 +#define _loop0_177_type 1396 +#define _gather_176_type 1397 +#define _tmp_178_type 1398 +#define _tmp_179_type 1399 +#define _tmp_180_type 1400 +#define _tmp_181_type 1401 +#define _tmp_182_type 1402 +#define _tmp_183_type 1403 +#define _tmp_184_type 1404 +#define _tmp_185_type 1405 +#define _tmp_186_type 1406 +#define _tmp_187_type 1407 +#define _tmp_188_type 1408 +#define _tmp_189_type 1409 +#define _tmp_190_type 1410 +#define _tmp_191_type 1411 +#define _tmp_192_type 1412 +#define _tmp_193_type 1413 +#define _tmp_194_type 1414 +#define _tmp_195_type 1415 +#define _tmp_196_type 1416 +#define _tmp_197_type 1417 +#define _tmp_198_type 1418 +#define _tmp_199_type 1419 +#define _tmp_200_type 1420 +#define _tmp_201_type 1421 +#define _tmp_202_type 1422 +#define _tmp_203_type 1423 +#define _tmp_204_type 1424 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -704,6 +707,8 @@ static void *invalid_except_stmt_indent_rule(Parser *p); static void *invalid_match_stmt_rule(Parser *p); static void *invalid_case_block_rule(Parser *p); static void *invalid_as_pattern_rule(Parser *p); +static void *invalid_class_pattern_rule(Parser *p); +static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p); static void *invalid_if_stmt_rule(Parser *p); static void *invalid_elif_stmt_rule(Parser *p); static void *invalid_else_stmt_rule(Parser *p); @@ -887,9 +892,9 @@ static void *_tmp_171_rule(Parser *p); static void *_tmp_172_rule(Parser *p); static void *_tmp_173_rule(Parser *p); static void *_tmp_174_rule(Parser *p); -static asdl_seq *_loop0_176_rule(Parser *p); -static asdl_seq *_gather_175_rule(Parser *p); -static void *_tmp_177_rule(Parser *p); +static void *_tmp_175_rule(Parser *p); +static asdl_seq *_loop0_177_rule(Parser *p); +static asdl_seq *_gather_176_rule(Parser *p); static void *_tmp_178_rule(Parser *p); static void *_tmp_179_rule(Parser *p); static void *_tmp_180_rule(Parser *p); @@ -916,6 +921,7 @@ static void *_tmp_200_rule(Parser *p); static void *_tmp_201_rule(Parser *p); static void *_tmp_202_rule(Parser *p); static void *_tmp_203_rule(Parser *p); +static void *_tmp_204_rule(Parser *p); // file: statements? $ @@ -7803,6 +7809,7 @@ double_star_pattern_rule(Parser *p) // | name_or_attr '(' positional_patterns ','? ')' // | name_or_attr '(' keyword_patterns ','? ')' // | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')' +// | invalid_class_pattern static pattern_ty class_pattern_rule(Parser *p) { @@ -8005,6 +8012,25 @@ class_pattern_rule(Parser *p) D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'")); } + if (p->call_invalid_rules) { // invalid_class_pattern + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern")); + void *invalid_class_pattern_var; + if ( + (invalid_class_pattern_var = invalid_class_pattern_rule(p)) // invalid_class_pattern + ) + { + D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern")); + _res = invalid_class_pattern_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern")); + } _res = NULL; done: D(p->level--); @@ -20310,6 +20336,105 @@ invalid_as_pattern_rule(Parser *p) return _res; } +// invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern +static void * +invalid_class_pattern_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // name_or_attr '(' invalid_class_argument_pattern + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern")); + Token * _literal; + asdl_pattern_seq* a; + expr_ty name_or_attr_var; + if ( + (name_or_attr_var = name_or_attr_rule(p)) // name_or_attr + && + (_literal = _PyPegen_expect_token(p, 7)) // token='(' + && + (a = invalid_class_argument_pattern_rule(p)) // invalid_class_argument_pattern + ) + { + D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern")); + _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + +// invalid_class_argument_pattern: +// | [positional_patterns ','] keyword_patterns ',' positional_patterns +static asdl_pattern_seq* +invalid_class_argument_pattern_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + asdl_pattern_seq* _res = NULL; + int _mark = p->mark; + { // [positional_patterns ','] keyword_patterns ',' positional_patterns + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns")); + Token * _literal; + void *_opt_var; + UNUSED(_opt_var); // Silence compiler warnings + asdl_pattern_seq* a; + asdl_seq* keyword_patterns_var; + if ( + (_opt_var = _tmp_173_rule(p), 1) // [positional_patterns ','] + && + (keyword_patterns_var = keyword_patterns_rule(p)) // keyword_patterns + && + (_literal = _PyPegen_expect_token(p, 12)) // token=',' + && + (a = positional_patterns_rule(p)) // positional_patterns + ) + { + D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns")); + _res = a; + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + // invalid_if_stmt: // | 'if' named_expression NEWLINE // | 'if' named_expression ':' NEWLINE !INDENT @@ -20716,7 +20841,7 @@ invalid_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (_opt_var_2 = _tmp_173_rule(p), 1) // ['->' expression] + (_opt_var_2 = _tmp_174_rule(p), 1) // ['->' expression] && (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20772,7 +20897,7 @@ invalid_class_def_raw_rule(Parser *p) && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_174_rule(p), 1) // ['(' arguments? ')'] + (_opt_var = _tmp_175_rule(p), 1) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20820,11 +20945,11 @@ invalid_double_starred_kvpairs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - asdl_seq * _gather_175_var; + asdl_seq * _gather_176_var; Token * _literal; void *invalid_kvpair_var; if ( - (_gather_175_var = _gather_175_rule(p)) // ','.double_starred_kvpair+ + (_gather_176_var = _gather_176_rule(p)) // ','.double_starred_kvpair+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -20832,7 +20957,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - _res = _PyPegen_dummy_name(p, _gather_175_var, _literal, invalid_kvpair_var); + _res = _PyPegen_dummy_name(p, _gather_176_var, _literal, invalid_kvpair_var); goto done; } p->mark = _mark; @@ -20885,7 +21010,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_177_rule, p) + _PyPegen_lookahead(1, _tmp_178_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -22258,12 +22383,12 @@ _loop1_22_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_178_var; + void *_tmp_179_var; while ( - (_tmp_178_var = _tmp_178_rule(p)) // star_targets '=' + (_tmp_179_var = _tmp_179_rule(p)) // star_targets '=' ) { - _res = _tmp_178_var; + _res = _tmp_179_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22766,12 +22891,12 @@ _loop0_31_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_179_var; + void *_tmp_180_var; while ( - (_tmp_179_var = _tmp_179_rule(p)) // '.' | '...' + (_tmp_180_var = _tmp_180_rule(p)) // '.' | '...' ) { - _res = _tmp_179_var; + _res = _tmp_180_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22832,12 +22957,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_180_var; + void *_tmp_181_var; while ( - (_tmp_180_var = _tmp_180_rule(p)) // '.' | '...' + (_tmp_181_var = _tmp_181_rule(p)) // '.' | '...' ) { - _res = _tmp_180_var; + _res = _tmp_181_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -25948,12 +26073,12 @@ _loop1_84_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_181_var; + void *_tmp_182_var; while ( - (_tmp_181_var = _tmp_181_rule(p)) // '@' named_expression NEWLINE + (_tmp_182_var = _tmp_182_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_181_var; + _res = _tmp_182_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26066,12 +26191,12 @@ _loop1_86_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_182_var; + void *_tmp_183_var; while ( - (_tmp_182_var = _tmp_182_rule(p)) // ',' star_expression + (_tmp_183_var = _tmp_183_rule(p)) // ',' star_expression ) { - _res = _tmp_182_var; + _res = _tmp_183_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26251,12 +26376,12 @@ _loop1_89_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_183_var; + void *_tmp_184_var; while ( - (_tmp_183_var = _tmp_183_rule(p)) // ',' expression + (_tmp_184_var = _tmp_184_rule(p)) // ',' expression ) { - _res = _tmp_183_var; + _res = _tmp_184_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27281,12 +27406,12 @@ _loop1_104_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_184_var; + void *_tmp_185_var; while ( - (_tmp_184_var = _tmp_184_rule(p)) // 'or' conjunction + (_tmp_185_var = _tmp_185_rule(p)) // 'or' conjunction ) { - _res = _tmp_184_var; + _res = _tmp_185_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27352,12 +27477,12 @@ _loop1_105_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_185_var; + void *_tmp_186_var; while ( - (_tmp_185_var = _tmp_185_rule(p)) // 'and' inversion + (_tmp_186_var = _tmp_186_rule(p)) // 'and' inversion ) { - _res = _tmp_185_var; + _res = _tmp_186_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28330,12 +28455,12 @@ _loop0_121_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_186_var; + void *_tmp_187_var; while ( - (_tmp_186_var = _tmp_186_rule(p)) // 'if' disjunction + (_tmp_187_var = _tmp_187_rule(p)) // 'if' disjunction ) { - _res = _tmp_186_var; + _res = _tmp_187_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28396,12 +28521,12 @@ _loop0_122_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_187_var; + void *_tmp_188_var; while ( - (_tmp_187_var = _tmp_187_rule(p)) // 'if' disjunction + (_tmp_188_var = _tmp_188_rule(p)) // 'if' disjunction ) { - _res = _tmp_187_var; + _res = _tmp_188_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28467,7 +28592,7 @@ _loop0_124_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_188_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_189_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' ) { _res = elem; @@ -28531,7 +28656,7 @@ _gather_123_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_188_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_189_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' && (seq = _loop0_124_rule(p)) // _loop0_124 ) @@ -29077,12 +29202,12 @@ _loop0_134_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_189_var; + void *_tmp_190_var; while ( - (_tmp_189_var = _tmp_189_rule(p)) // ',' star_target + (_tmp_190_var = _tmp_190_rule(p)) // ',' star_target ) { - _res = _tmp_189_var; + _res = _tmp_190_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29257,12 +29382,12 @@ _loop1_137_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_190_var; + void *_tmp_191_var; while ( - (_tmp_190_var = _tmp_190_rule(p)) // ',' star_target + (_tmp_191_var = _tmp_191_rule(p)) // ',' star_target ) { - _res = _tmp_190_var; + _res = _tmp_191_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29942,12 +30067,12 @@ _loop0_148_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_191_var; + void *_tmp_192_var; while ( - (_tmp_191_var = _tmp_191_rule(p)) // star_targets '=' + (_tmp_192_var = _tmp_192_rule(p)) // star_targets '=' ) { - _res = _tmp_191_var; + _res = _tmp_192_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30008,12 +30133,12 @@ _loop0_149_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_192_var; + void *_tmp_193_var; while ( - (_tmp_192_var = _tmp_192_rule(p)) // star_targets '=' + (_tmp_193_var = _tmp_193_rule(p)) // star_targets '=' ) { - _res = _tmp_192_var; + _res = _tmp_193_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30597,15 +30722,15 @@ _tmp_158_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_193_var; + void *_tmp_194_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_193_var = _tmp_193_rule(p)) // ')' | '**' + (_tmp_194_var = _tmp_194_rule(p)) // ')' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_193_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_194_var); goto done; } p->mark = _mark; @@ -30655,15 +30780,15 @@ _tmp_159_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_194_var; + void *_tmp_195_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_194_var = _tmp_194_rule(p)) // ':' | '**' + (_tmp_195_var = _tmp_195_rule(p)) // ':' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_194_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_195_var); goto done; } p->mark = _mark; @@ -30782,7 +30907,7 @@ _loop0_162_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_195_rule(p)) // expression ['as' star_target] + (elem = _tmp_196_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -30845,7 +30970,7 @@ _gather_161_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_195_rule(p)) // expression ['as' star_target] + (elem = _tmp_196_rule(p)) // expression ['as' star_target] && (seq = _loop0_162_rule(p)) // _loop0_162 ) @@ -30896,7 +31021,7 @@ _loop0_164_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_196_rule(p)) // expressions ['as' star_target] + (elem = _tmp_197_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -30959,7 +31084,7 @@ _gather_163_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_196_rule(p)) // expressions ['as' star_target] + (elem = _tmp_197_rule(p)) // expressions ['as' star_target] && (seq = _loop0_164_rule(p)) // _loop0_164 ) @@ -31010,7 +31135,7 @@ _loop0_166_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_197_rule(p)) // expression ['as' star_target] + (elem = _tmp_198_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31073,7 +31198,7 @@ _gather_165_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_197_rule(p)) // expression ['as' star_target] + (elem = _tmp_198_rule(p)) // expression ['as' star_target] && (seq = _loop0_166_rule(p)) // _loop0_166 ) @@ -31124,7 +31249,7 @@ _loop0_168_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_198_rule(p)) // expressions ['as' star_target] + (elem = _tmp_199_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31187,7 +31312,7 @@ _gather_167_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_198_rule(p)) // expressions ['as' star_target] + (elem = _tmp_199_rule(p)) // expressions ['as' star_target] && (seq = _loop0_168_rule(p)) // _loop0_168 ) @@ -31378,9 +31503,48 @@ _tmp_172_rule(Parser *p) return _res; } -// _tmp_173: '->' expression +// _tmp_173: positional_patterns ',' static void * _tmp_173_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // positional_patterns ',' + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); + Token * _literal; + asdl_pattern_seq* positional_patterns_var; + if ( + (positional_patterns_var = positional_patterns_rule(p)) // positional_patterns + && + (_literal = _PyPegen_expect_token(p, 12)) // token=',' + ) + { + D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); + _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + +// _tmp_174: '->' expression +static void * +_tmp_174_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31394,7 +31558,7 @@ _tmp_173_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty expression_var; if ( @@ -31403,12 +31567,12 @@ _tmp_173_rule(Parser *p) (expression_var = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = _PyPegen_dummy_name(p, _literal, expression_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -31417,9 +31581,9 @@ _tmp_173_rule(Parser *p) return _res; } -// _tmp_174: '(' arguments? ')' +// _tmp_175: '(' arguments? ')' static void * -_tmp_174_rule(Parser *p) +_tmp_175_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31433,7 +31597,7 @@ _tmp_174_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -31446,12 +31610,12 @@ _tmp_174_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -31460,9 +31624,9 @@ _tmp_174_rule(Parser *p) return _res; } -// _loop0_176: ',' double_starred_kvpair +// _loop0_177: ',' double_starred_kvpair static asdl_seq * -_loop0_176_rule(Parser *p) +_loop0_177_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31486,7 +31650,7 @@ _loop0_176_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -31517,7 +31681,7 @@ _loop0_176_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_176[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31530,14 +31694,14 @@ _loop0_176_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_176_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_177_type, _seq); D(p->level--); return _seq; } -// _gather_175: double_starred_kvpair _loop0_176 +// _gather_176: double_starred_kvpair _loop0_177 static asdl_seq * -_gather_175_rule(Parser *p) +_gather_176_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31546,27 +31710,27 @@ _gather_175_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_176 + { // double_starred_kvpair _loop0_177 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_176")); + D(fprintf(stderr, "%*c> _gather_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_177")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_176_rule(p)) // _loop0_176 + (seq = _loop0_177_rule(p)) // _loop0_177 ) { - D(fprintf(stderr, "%*c+ _gather_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_176")); + D(fprintf(stderr, "%*c+ _gather_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_177")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_175[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_176")); + D(fprintf(stderr, "%*c%s _gather_176[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_177")); } _res = NULL; done: @@ -31574,9 +31738,9 @@ _gather_175_rule(Parser *p) return _res; } -// _tmp_177: '}' | ',' +// _tmp_178: '}' | ',' static void * -_tmp_177_rule(Parser *p) +_tmp_178_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31590,18 +31754,18 @@ _tmp_177_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -31609,18 +31773,18 @@ _tmp_177_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -31629,9 +31793,9 @@ _tmp_177_rule(Parser *p) return _res; } -// _tmp_178: star_targets '=' +// _tmp_179: star_targets '=' static void * -_tmp_178_rule(Parser *p) +_tmp_179_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31645,7 +31809,7 @@ _tmp_178_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -31654,7 +31818,7 @@ _tmp_178_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31664,7 +31828,7 @@ _tmp_178_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -31673,9 +31837,9 @@ _tmp_178_rule(Parser *p) return _res; } -// _tmp_179: '.' | '...' +// _tmp_180: '.' | '...' static void * -_tmp_179_rule(Parser *p) +_tmp_180_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31689,18 +31853,18 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -31708,18 +31872,18 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -31728,9 +31892,9 @@ _tmp_179_rule(Parser *p) return _res; } -// _tmp_180: '.' | '...' +// _tmp_181: '.' | '...' static void * -_tmp_180_rule(Parser *p) +_tmp_181_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31744,18 +31908,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -31763,18 +31927,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -31783,9 +31947,9 @@ _tmp_180_rule(Parser *p) return _res; } -// _tmp_181: '@' named_expression NEWLINE +// _tmp_182: '@' named_expression NEWLINE static void * -_tmp_181_rule(Parser *p) +_tmp_182_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31799,7 +31963,7 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -31811,7 +31975,7 @@ _tmp_181_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31821,7 +31985,7 @@ _tmp_181_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -31830,9 +31994,9 @@ _tmp_181_rule(Parser *p) return _res; } -// _tmp_182: ',' star_expression +// _tmp_183: ',' star_expression static void * -_tmp_182_rule(Parser *p) +_tmp_183_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31846,7 +32010,7 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -31855,7 +32019,7 @@ _tmp_182_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31865,7 +32029,7 @@ _tmp_182_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -31874,9 +32038,9 @@ _tmp_182_rule(Parser *p) return _res; } -// _tmp_183: ',' expression +// _tmp_184: ',' expression static void * -_tmp_183_rule(Parser *p) +_tmp_184_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31890,7 +32054,7 @@ _tmp_183_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -31899,7 +32063,7 @@ _tmp_183_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31909,7 +32073,7 @@ _tmp_183_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -31918,9 +32082,9 @@ _tmp_183_rule(Parser *p) return _res; } -// _tmp_184: 'or' conjunction +// _tmp_185: 'or' conjunction static void * -_tmp_184_rule(Parser *p) +_tmp_185_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31934,7 +32098,7 @@ _tmp_184_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -31943,7 +32107,7 @@ _tmp_184_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31953,7 +32117,7 @@ _tmp_184_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -31962,9 +32126,9 @@ _tmp_184_rule(Parser *p) return _res; } -// _tmp_185: 'and' inversion +// _tmp_186: 'and' inversion static void * -_tmp_185_rule(Parser *p) +_tmp_186_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31978,7 +32142,7 @@ _tmp_185_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -31987,7 +32151,7 @@ _tmp_185_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31997,7 +32161,7 @@ _tmp_185_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -32006,9 +32170,9 @@ _tmp_185_rule(Parser *p) return _res; } -// _tmp_186: 'if' disjunction +// _tmp_187: 'if' disjunction static void * -_tmp_186_rule(Parser *p) +_tmp_187_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32022,7 +32186,7 @@ _tmp_186_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32031,7 +32195,7 @@ _tmp_186_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32041,7 +32205,7 @@ _tmp_186_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32050,9 +32214,9 @@ _tmp_186_rule(Parser *p) return _res; } -// _tmp_187: 'if' disjunction +// _tmp_188: 'if' disjunction static void * -_tmp_187_rule(Parser *p) +_tmp_188_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32066,7 +32230,7 @@ _tmp_187_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32075,7 +32239,7 @@ _tmp_187_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32085,7 +32249,7 @@ _tmp_187_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32094,9 +32258,9 @@ _tmp_187_rule(Parser *p) return _res; } -// _tmp_188: starred_expression | (assigment_expression | expression !':=') !'=' +// _tmp_189: starred_expression | (assigment_expression | expression !':=') !'=' static void * -_tmp_188_rule(Parser *p) +_tmp_189_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32110,18 +32274,18 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // (assigment_expression | expression !':=') !'=' @@ -32129,20 +32293,20 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - void *_tmp_199_var; + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + void *_tmp_200_var; if ( - (_tmp_199_var = _tmp_199_rule(p)) // assigment_expression | expression !':=' + (_tmp_200_var = _tmp_200_rule(p)) // assigment_expression | expression !':=' && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - _res = _tmp_199_var; + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + _res = _tmp_200_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assigment_expression | expression !':=') !'='")); } _res = NULL; @@ -32151,9 +32315,9 @@ _tmp_188_rule(Parser *p) return _res; } -// _tmp_189: ',' star_target +// _tmp_190: ',' star_target static void * -_tmp_189_rule(Parser *p) +_tmp_190_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32167,7 +32331,7 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32176,7 +32340,7 @@ _tmp_189_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32186,7 +32350,7 @@ _tmp_189_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32195,9 +32359,9 @@ _tmp_189_rule(Parser *p) return _res; } -// _tmp_190: ',' star_target +// _tmp_191: ',' star_target static void * -_tmp_190_rule(Parser *p) +_tmp_191_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32211,7 +32375,7 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32220,7 +32384,7 @@ _tmp_190_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32230,7 +32394,7 @@ _tmp_190_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32239,9 +32403,9 @@ _tmp_190_rule(Parser *p) return _res; } -// _tmp_191: star_targets '=' +// _tmp_192: star_targets '=' static void * -_tmp_191_rule(Parser *p) +_tmp_192_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32255,7 +32419,7 @@ _tmp_191_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32264,12 +32428,12 @@ _tmp_191_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32278,9 +32442,9 @@ _tmp_191_rule(Parser *p) return _res; } -// _tmp_192: star_targets '=' +// _tmp_193: star_targets '=' static void * -_tmp_192_rule(Parser *p) +_tmp_193_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32294,7 +32458,7 @@ _tmp_192_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32303,12 +32467,12 @@ _tmp_192_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32317,9 +32481,9 @@ _tmp_192_rule(Parser *p) return _res; } -// _tmp_193: ')' | '**' +// _tmp_194: ')' | '**' static void * -_tmp_193_rule(Parser *p) +_tmp_194_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32333,18 +32497,18 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -32352,18 +32516,18 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32372,9 +32536,9 @@ _tmp_193_rule(Parser *p) return _res; } -// _tmp_194: ':' | '**' +// _tmp_195: ':' | '**' static void * -_tmp_194_rule(Parser *p) +_tmp_195_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32388,18 +32552,18 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -32407,18 +32571,18 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32427,9 +32591,9 @@ _tmp_194_rule(Parser *p) return _res; } -// _tmp_195: expression ['as' star_target] +// _tmp_196: expression ['as' star_target] static void * -_tmp_195_rule(Parser *p) +_tmp_196_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32443,22 +32607,22 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_200_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_201_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32467,9 +32631,9 @@ _tmp_195_rule(Parser *p) return _res; } -// _tmp_196: expressions ['as' star_target] +// _tmp_197: expressions ['as' star_target] static void * -_tmp_196_rule(Parser *p) +_tmp_197_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32483,22 +32647,22 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_201_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32507,9 +32671,9 @@ _tmp_196_rule(Parser *p) return _res; } -// _tmp_197: expression ['as' star_target] +// _tmp_198: expression ['as' star_target] static void * -_tmp_197_rule(Parser *p) +_tmp_198_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32523,22 +32687,22 @@ _tmp_197_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32547,9 +32711,9 @@ _tmp_197_rule(Parser *p) return _res; } -// _tmp_198: expressions ['as' star_target] +// _tmp_199: expressions ['as' star_target] static void * -_tmp_198_rule(Parser *p) +_tmp_199_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32563,22 +32727,22 @@ _tmp_198_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32587,9 +32751,9 @@ _tmp_198_rule(Parser *p) return _res; } -// _tmp_199: assigment_expression | expression !':=' +// _tmp_200: assigment_expression | expression !':=' static void * -_tmp_199_rule(Parser *p) +_tmp_200_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32603,18 +32767,18 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); expr_ty assigment_expression_var; if ( (assigment_expression_var = assigment_expression_rule(p)) // assigment_expression ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); _res = assigment_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assigment_expression")); } { // expression !':=' @@ -32622,7 +32786,7 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression @@ -32630,12 +32794,12 @@ _tmp_199_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; @@ -32644,9 +32808,9 @@ _tmp_199_rule(Parser *p) return _res; } -// _tmp_200: 'as' star_target +// _tmp_201: 'as' star_target static void * -_tmp_200_rule(Parser *p) +_tmp_201_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32660,7 +32824,7 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32669,12 +32833,12 @@ _tmp_200_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32683,9 +32847,9 @@ _tmp_200_rule(Parser *p) return _res; } -// _tmp_201: 'as' star_target +// _tmp_202: 'as' star_target static void * -_tmp_201_rule(Parser *p) +_tmp_202_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32699,7 +32863,7 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32708,12 +32872,12 @@ _tmp_201_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32722,9 +32886,9 @@ _tmp_201_rule(Parser *p) return _res; } -// _tmp_202: 'as' star_target +// _tmp_203: 'as' star_target static void * -_tmp_202_rule(Parser *p) +_tmp_203_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32738,7 +32902,7 @@ _tmp_202_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32747,12 +32911,12 @@ _tmp_202_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32761,9 +32925,9 @@ _tmp_202_rule(Parser *p) return _res; } -// _tmp_203: 'as' star_target +// _tmp_204: 'as' star_target static void * -_tmp_203_rule(Parser *p) +_tmp_204_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32777,7 +32941,7 @@ _tmp_203_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32786,12 +32950,12 @@ _tmp_203_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; diff --git a/Parser/pegen.c b/Parser/pegen.c index 615047c1b6a007..3472d489e067d3 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -1557,6 +1557,13 @@ _PyPegen_seq_last_item(asdl_seq *seq) return asdl_seq_GET_UNTYPED(seq, len - 1); } +void * +_PyPegen_seq_first_item(asdl_seq *seq) +{ + return asdl_seq_GET_UNTYPED(seq, 0); +} + + /* Creates a new name of the form . */ expr_ty _PyPegen_join_names_with_dot(Parser *p, expr_ty first_name, expr_ty second_name) diff --git a/Parser/pegen.h b/Parser/pegen.h index 161a49816d6c03..eac73bba151bca 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -149,6 +149,9 @@ void *_PyPegen_dummy_name(Parser *p, ...); void * _PyPegen_seq_last_item(asdl_seq *seq); #define PyPegen_last_item(seq, type) ((type)_PyPegen_seq_last_item((asdl_seq*)seq)) +void * _PyPegen_seq_first_item(asdl_seq *seq); +#define PyPegen_first_item(seq, type) ((type)_PyPegen_seq_first_item((asdl_seq*)seq)) + #define CURRENT_POS (-5) Py_LOCAL_INLINE(void *) From webhook-mailer at python.org Thu Jun 24 11:34:43 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Jun 2021 15:34:43 -0000 Subject: [Python-checkins] bpo-44456: Improve the syntax error when mixing keyword and positional patterns (GH-26793) Message-ID: https://github.com/python/cpython/commit/11f1a30cdb59f9da0209798d2057f7afacbd9547 commit: 11f1a30cdb59f9da0209798d2057f7afacbd9547 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-24T08:34:28-07:00 summary: bpo-44456: Improve the syntax error when mixing keyword and positional patterns (GH-26793) (cherry picked from commit 0acc258fe6f0ec200ca2f6f9294adbf52a244802) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-18-22-08-25.bpo-44456.L0Rhko.rst M Grammar/python.gram M Lib/test/test_syntax.py M Parser/parser.c M Parser/pegen.c M Parser/pegen.h diff --git a/Grammar/python.gram b/Grammar/python.gram index 56daca054c8b54..6b2fa6a62c4d20 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -380,6 +380,7 @@ class_pattern[pattern_ty]: CHECK(asdl_expr_seq*, _PyPegen_get_pattern_keys(p, keywords)))), CHECK(asdl_pattern_seq*, _PyPegen_get_patterns(p, keywords)), EXTRA) } + | invalid_class_pattern positional_patterns[asdl_pattern_seq*]: | args[asdl_pattern_seq*]=','.pattern+ { args } keyword_patterns[asdl_seq*]: @@ -978,6 +979,13 @@ invalid_case_block: invalid_as_pattern: | or_pattern 'as' a="_" { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot use '_' as a target") } | or_pattern 'as' !NAME a=expression { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "invalid pattern target") } +invalid_class_pattern: + | name_or_attr '(' a=invalid_class_argument_pattern { RAISE_SYNTAX_ERROR_KNOWN_RANGE( + PyPegen_first_item(a, pattern_ty), + PyPegen_last_item(a, pattern_ty), + "positional patterns follow keyword patterns") } +invalid_class_argument_pattern[asdl_pattern_seq*]: + | [positional_patterns ','] keyword_patterns ',' a=positional_patterns { a } invalid_if_stmt: | 'if' named_expression NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") } | a='if' a=named_expression ':' NEWLINE !INDENT { diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index e0d0445a83d9d6..ad5656bac6b44e 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -1240,6 +1240,30 @@ ... ... Traceback (most recent call last): SyntaxError: invalid pattern target + + >>> match ...: + ... case Foo(z=1, y=2, x): + ... ... + Traceback (most recent call last): + SyntaxError: positional patterns follow keyword patterns + + >>> match ...: + ... case Foo(a, z=1, y=2, x): + ... ... + Traceback (most recent call last): + SyntaxError: positional patterns follow keyword patterns + + >>> match ...: + ... case Foo(z=1, x, y=2): + ... ... + Traceback (most recent call last): + SyntaxError: positional patterns follow keyword patterns + + >>> match ...: + ... case C(a=b, c, d=e, f, g=h, i, j=k, ...): + ... ... + Traceback (most recent call last): + SyntaxError: positional patterns follow keyword patterns """ import re diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-18-22-08-25.bpo-44456.L0Rhko.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-18-22-08-25.bpo-44456.L0Rhko.rst new file mode 100644 index 00000000000000..86a8c03ce561e7 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-18-22-08-25.bpo-44456.L0Rhko.rst @@ -0,0 +1,2 @@ +Improve the syntax error when mixing positional and keyword patterns. Patch +by Pablo Galindo. diff --git a/Parser/parser.c b/Parser/parser.c index 0a174788657040..62185ed691d305 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -281,218 +281,221 @@ static char *soft_keywords[] = { #define invalid_match_stmt_type 1207 #define invalid_case_block_type 1208 #define invalid_as_pattern_type 1209 -#define invalid_if_stmt_type 1210 -#define invalid_elif_stmt_type 1211 -#define invalid_else_stmt_type 1212 -#define invalid_while_stmt_type 1213 -#define invalid_for_stmt_type 1214 -#define invalid_def_raw_type 1215 -#define invalid_class_def_raw_type 1216 -#define invalid_double_starred_kvpairs_type 1217 -#define invalid_kvpair_type 1218 -#define _loop0_1_type 1219 -#define _loop0_2_type 1220 -#define _loop0_4_type 1221 -#define _gather_3_type 1222 -#define _loop0_6_type 1223 -#define _gather_5_type 1224 -#define _loop0_8_type 1225 -#define _gather_7_type 1226 -#define _loop0_10_type 1227 -#define _gather_9_type 1228 -#define _loop1_11_type 1229 -#define _loop0_13_type 1230 -#define _gather_12_type 1231 -#define _tmp_14_type 1232 -#define _tmp_15_type 1233 -#define _tmp_16_type 1234 -#define _tmp_17_type 1235 -#define _tmp_18_type 1236 -#define _tmp_19_type 1237 -#define _tmp_20_type 1238 -#define _tmp_21_type 1239 -#define _loop1_22_type 1240 -#define _tmp_23_type 1241 -#define _tmp_24_type 1242 -#define _loop0_26_type 1243 -#define _gather_25_type 1244 -#define _loop0_28_type 1245 -#define _gather_27_type 1246 -#define _tmp_29_type 1247 -#define _tmp_30_type 1248 -#define _loop0_31_type 1249 -#define _loop1_32_type 1250 -#define _loop0_34_type 1251 -#define _gather_33_type 1252 -#define _tmp_35_type 1253 -#define _loop0_37_type 1254 -#define _gather_36_type 1255 -#define _tmp_38_type 1256 -#define _loop0_40_type 1257 -#define _gather_39_type 1258 -#define _loop0_42_type 1259 -#define _gather_41_type 1260 -#define _loop0_44_type 1261 -#define _gather_43_type 1262 -#define _loop0_46_type 1263 -#define _gather_45_type 1264 -#define _tmp_47_type 1265 -#define _loop1_48_type 1266 -#define _tmp_49_type 1267 -#define _loop1_50_type 1268 -#define _loop0_52_type 1269 -#define _gather_51_type 1270 -#define _tmp_53_type 1271 -#define _tmp_54_type 1272 -#define _tmp_55_type 1273 -#define _tmp_56_type 1274 -#define _loop0_58_type 1275 -#define _gather_57_type 1276 -#define _loop0_60_type 1277 -#define _gather_59_type 1278 -#define _tmp_61_type 1279 -#define _loop0_63_type 1280 -#define _gather_62_type 1281 -#define _loop0_65_type 1282 -#define _gather_64_type 1283 -#define _tmp_66_type 1284 -#define _tmp_67_type 1285 -#define _tmp_68_type 1286 -#define _tmp_69_type 1287 -#define _loop0_70_type 1288 -#define _loop0_71_type 1289 -#define _loop0_72_type 1290 -#define _loop1_73_type 1291 -#define _loop0_74_type 1292 -#define _loop1_75_type 1293 -#define _loop1_76_type 1294 -#define _loop1_77_type 1295 -#define _loop0_78_type 1296 -#define _loop1_79_type 1297 -#define _loop0_80_type 1298 -#define _loop1_81_type 1299 -#define _loop0_82_type 1300 -#define _loop1_83_type 1301 -#define _loop1_84_type 1302 -#define _tmp_85_type 1303 -#define _loop1_86_type 1304 -#define _loop0_88_type 1305 -#define _gather_87_type 1306 -#define _loop1_89_type 1307 -#define _loop0_90_type 1308 -#define _loop0_91_type 1309 -#define _loop0_92_type 1310 -#define _loop1_93_type 1311 -#define _loop0_94_type 1312 -#define _loop1_95_type 1313 -#define _loop1_96_type 1314 -#define _loop1_97_type 1315 -#define _loop0_98_type 1316 -#define _loop1_99_type 1317 -#define _loop0_100_type 1318 -#define _loop1_101_type 1319 -#define _loop0_102_type 1320 -#define _loop1_103_type 1321 -#define _loop1_104_type 1322 -#define _loop1_105_type 1323 -#define _loop1_106_type 1324 -#define _tmp_107_type 1325 -#define _loop0_109_type 1326 -#define _gather_108_type 1327 -#define _tmp_110_type 1328 -#define _tmp_111_type 1329 -#define _tmp_112_type 1330 -#define _tmp_113_type 1331 -#define _loop1_114_type 1332 -#define _tmp_115_type 1333 -#define _tmp_116_type 1334 -#define _tmp_117_type 1335 -#define _loop0_119_type 1336 -#define _gather_118_type 1337 -#define _loop1_120_type 1338 -#define _loop0_121_type 1339 -#define _loop0_122_type 1340 -#define _loop0_124_type 1341 -#define _gather_123_type 1342 -#define _tmp_125_type 1343 -#define _loop0_127_type 1344 -#define _gather_126_type 1345 -#define _loop0_129_type 1346 -#define _gather_128_type 1347 -#define _loop0_131_type 1348 -#define _gather_130_type 1349 -#define _loop0_133_type 1350 -#define _gather_132_type 1351 -#define _loop0_134_type 1352 -#define _loop0_136_type 1353 -#define _gather_135_type 1354 -#define _loop1_137_type 1355 -#define _tmp_138_type 1356 -#define _loop0_140_type 1357 -#define _gather_139_type 1358 -#define _tmp_141_type 1359 -#define _tmp_142_type 1360 -#define _tmp_143_type 1361 -#define _tmp_144_type 1362 -#define _tmp_145_type 1363 -#define _tmp_146_type 1364 -#define _loop0_147_type 1365 -#define _loop0_148_type 1366 -#define _loop0_149_type 1367 -#define _tmp_150_type 1368 -#define _tmp_151_type 1369 -#define _tmp_152_type 1370 -#define _tmp_153_type 1371 -#define _loop0_154_type 1372 -#define _loop1_155_type 1373 -#define _loop0_156_type 1374 -#define _loop1_157_type 1375 -#define _tmp_158_type 1376 -#define _tmp_159_type 1377 -#define _tmp_160_type 1378 -#define _loop0_162_type 1379 -#define _gather_161_type 1380 -#define _loop0_164_type 1381 -#define _gather_163_type 1382 -#define _loop0_166_type 1383 -#define _gather_165_type 1384 -#define _loop0_168_type 1385 -#define _gather_167_type 1386 -#define _tmp_169_type 1387 -#define _tmp_170_type 1388 -#define _tmp_171_type 1389 -#define _tmp_172_type 1390 -#define _tmp_173_type 1391 -#define _tmp_174_type 1392 -#define _loop0_176_type 1393 -#define _gather_175_type 1394 -#define _tmp_177_type 1395 -#define _tmp_178_type 1396 -#define _tmp_179_type 1397 -#define _tmp_180_type 1398 -#define _tmp_181_type 1399 -#define _tmp_182_type 1400 -#define _tmp_183_type 1401 -#define _tmp_184_type 1402 -#define _tmp_185_type 1403 -#define _tmp_186_type 1404 -#define _tmp_187_type 1405 -#define _tmp_188_type 1406 -#define _tmp_189_type 1407 -#define _tmp_190_type 1408 -#define _tmp_191_type 1409 -#define _tmp_192_type 1410 -#define _tmp_193_type 1411 -#define _tmp_194_type 1412 -#define _tmp_195_type 1413 -#define _tmp_196_type 1414 -#define _tmp_197_type 1415 -#define _tmp_198_type 1416 -#define _tmp_199_type 1417 -#define _tmp_200_type 1418 -#define _tmp_201_type 1419 -#define _tmp_202_type 1420 -#define _tmp_203_type 1421 +#define invalid_class_pattern_type 1210 +#define invalid_class_argument_pattern_type 1211 +#define invalid_if_stmt_type 1212 +#define invalid_elif_stmt_type 1213 +#define invalid_else_stmt_type 1214 +#define invalid_while_stmt_type 1215 +#define invalid_for_stmt_type 1216 +#define invalid_def_raw_type 1217 +#define invalid_class_def_raw_type 1218 +#define invalid_double_starred_kvpairs_type 1219 +#define invalid_kvpair_type 1220 +#define _loop0_1_type 1221 +#define _loop0_2_type 1222 +#define _loop0_4_type 1223 +#define _gather_3_type 1224 +#define _loop0_6_type 1225 +#define _gather_5_type 1226 +#define _loop0_8_type 1227 +#define _gather_7_type 1228 +#define _loop0_10_type 1229 +#define _gather_9_type 1230 +#define _loop1_11_type 1231 +#define _loop0_13_type 1232 +#define _gather_12_type 1233 +#define _tmp_14_type 1234 +#define _tmp_15_type 1235 +#define _tmp_16_type 1236 +#define _tmp_17_type 1237 +#define _tmp_18_type 1238 +#define _tmp_19_type 1239 +#define _tmp_20_type 1240 +#define _tmp_21_type 1241 +#define _loop1_22_type 1242 +#define _tmp_23_type 1243 +#define _tmp_24_type 1244 +#define _loop0_26_type 1245 +#define _gather_25_type 1246 +#define _loop0_28_type 1247 +#define _gather_27_type 1248 +#define _tmp_29_type 1249 +#define _tmp_30_type 1250 +#define _loop0_31_type 1251 +#define _loop1_32_type 1252 +#define _loop0_34_type 1253 +#define _gather_33_type 1254 +#define _tmp_35_type 1255 +#define _loop0_37_type 1256 +#define _gather_36_type 1257 +#define _tmp_38_type 1258 +#define _loop0_40_type 1259 +#define _gather_39_type 1260 +#define _loop0_42_type 1261 +#define _gather_41_type 1262 +#define _loop0_44_type 1263 +#define _gather_43_type 1264 +#define _loop0_46_type 1265 +#define _gather_45_type 1266 +#define _tmp_47_type 1267 +#define _loop1_48_type 1268 +#define _tmp_49_type 1269 +#define _loop1_50_type 1270 +#define _loop0_52_type 1271 +#define _gather_51_type 1272 +#define _tmp_53_type 1273 +#define _tmp_54_type 1274 +#define _tmp_55_type 1275 +#define _tmp_56_type 1276 +#define _loop0_58_type 1277 +#define _gather_57_type 1278 +#define _loop0_60_type 1279 +#define _gather_59_type 1280 +#define _tmp_61_type 1281 +#define _loop0_63_type 1282 +#define _gather_62_type 1283 +#define _loop0_65_type 1284 +#define _gather_64_type 1285 +#define _tmp_66_type 1286 +#define _tmp_67_type 1287 +#define _tmp_68_type 1288 +#define _tmp_69_type 1289 +#define _loop0_70_type 1290 +#define _loop0_71_type 1291 +#define _loop0_72_type 1292 +#define _loop1_73_type 1293 +#define _loop0_74_type 1294 +#define _loop1_75_type 1295 +#define _loop1_76_type 1296 +#define _loop1_77_type 1297 +#define _loop0_78_type 1298 +#define _loop1_79_type 1299 +#define _loop0_80_type 1300 +#define _loop1_81_type 1301 +#define _loop0_82_type 1302 +#define _loop1_83_type 1303 +#define _loop1_84_type 1304 +#define _tmp_85_type 1305 +#define _loop1_86_type 1306 +#define _loop0_88_type 1307 +#define _gather_87_type 1308 +#define _loop1_89_type 1309 +#define _loop0_90_type 1310 +#define _loop0_91_type 1311 +#define _loop0_92_type 1312 +#define _loop1_93_type 1313 +#define _loop0_94_type 1314 +#define _loop1_95_type 1315 +#define _loop1_96_type 1316 +#define _loop1_97_type 1317 +#define _loop0_98_type 1318 +#define _loop1_99_type 1319 +#define _loop0_100_type 1320 +#define _loop1_101_type 1321 +#define _loop0_102_type 1322 +#define _loop1_103_type 1323 +#define _loop1_104_type 1324 +#define _loop1_105_type 1325 +#define _loop1_106_type 1326 +#define _tmp_107_type 1327 +#define _loop0_109_type 1328 +#define _gather_108_type 1329 +#define _tmp_110_type 1330 +#define _tmp_111_type 1331 +#define _tmp_112_type 1332 +#define _tmp_113_type 1333 +#define _loop1_114_type 1334 +#define _tmp_115_type 1335 +#define _tmp_116_type 1336 +#define _tmp_117_type 1337 +#define _loop0_119_type 1338 +#define _gather_118_type 1339 +#define _loop1_120_type 1340 +#define _loop0_121_type 1341 +#define _loop0_122_type 1342 +#define _loop0_124_type 1343 +#define _gather_123_type 1344 +#define _tmp_125_type 1345 +#define _loop0_127_type 1346 +#define _gather_126_type 1347 +#define _loop0_129_type 1348 +#define _gather_128_type 1349 +#define _loop0_131_type 1350 +#define _gather_130_type 1351 +#define _loop0_133_type 1352 +#define _gather_132_type 1353 +#define _loop0_134_type 1354 +#define _loop0_136_type 1355 +#define _gather_135_type 1356 +#define _loop1_137_type 1357 +#define _tmp_138_type 1358 +#define _loop0_140_type 1359 +#define _gather_139_type 1360 +#define _tmp_141_type 1361 +#define _tmp_142_type 1362 +#define _tmp_143_type 1363 +#define _tmp_144_type 1364 +#define _tmp_145_type 1365 +#define _tmp_146_type 1366 +#define _loop0_147_type 1367 +#define _loop0_148_type 1368 +#define _loop0_149_type 1369 +#define _tmp_150_type 1370 +#define _tmp_151_type 1371 +#define _tmp_152_type 1372 +#define _tmp_153_type 1373 +#define _loop0_154_type 1374 +#define _loop1_155_type 1375 +#define _loop0_156_type 1376 +#define _loop1_157_type 1377 +#define _tmp_158_type 1378 +#define _tmp_159_type 1379 +#define _tmp_160_type 1380 +#define _loop0_162_type 1381 +#define _gather_161_type 1382 +#define _loop0_164_type 1383 +#define _gather_163_type 1384 +#define _loop0_166_type 1385 +#define _gather_165_type 1386 +#define _loop0_168_type 1387 +#define _gather_167_type 1388 +#define _tmp_169_type 1389 +#define _tmp_170_type 1390 +#define _tmp_171_type 1391 +#define _tmp_172_type 1392 +#define _tmp_173_type 1393 +#define _tmp_174_type 1394 +#define _tmp_175_type 1395 +#define _loop0_177_type 1396 +#define _gather_176_type 1397 +#define _tmp_178_type 1398 +#define _tmp_179_type 1399 +#define _tmp_180_type 1400 +#define _tmp_181_type 1401 +#define _tmp_182_type 1402 +#define _tmp_183_type 1403 +#define _tmp_184_type 1404 +#define _tmp_185_type 1405 +#define _tmp_186_type 1406 +#define _tmp_187_type 1407 +#define _tmp_188_type 1408 +#define _tmp_189_type 1409 +#define _tmp_190_type 1410 +#define _tmp_191_type 1411 +#define _tmp_192_type 1412 +#define _tmp_193_type 1413 +#define _tmp_194_type 1414 +#define _tmp_195_type 1415 +#define _tmp_196_type 1416 +#define _tmp_197_type 1417 +#define _tmp_198_type 1418 +#define _tmp_199_type 1419 +#define _tmp_200_type 1420 +#define _tmp_201_type 1421 +#define _tmp_202_type 1422 +#define _tmp_203_type 1423 +#define _tmp_204_type 1424 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -704,6 +707,8 @@ static void *invalid_except_stmt_indent_rule(Parser *p); static void *invalid_match_stmt_rule(Parser *p); static void *invalid_case_block_rule(Parser *p); static void *invalid_as_pattern_rule(Parser *p); +static void *invalid_class_pattern_rule(Parser *p); +static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p); static void *invalid_if_stmt_rule(Parser *p); static void *invalid_elif_stmt_rule(Parser *p); static void *invalid_else_stmt_rule(Parser *p); @@ -887,9 +892,9 @@ static void *_tmp_171_rule(Parser *p); static void *_tmp_172_rule(Parser *p); static void *_tmp_173_rule(Parser *p); static void *_tmp_174_rule(Parser *p); -static asdl_seq *_loop0_176_rule(Parser *p); -static asdl_seq *_gather_175_rule(Parser *p); -static void *_tmp_177_rule(Parser *p); +static void *_tmp_175_rule(Parser *p); +static asdl_seq *_loop0_177_rule(Parser *p); +static asdl_seq *_gather_176_rule(Parser *p); static void *_tmp_178_rule(Parser *p); static void *_tmp_179_rule(Parser *p); static void *_tmp_180_rule(Parser *p); @@ -916,6 +921,7 @@ static void *_tmp_200_rule(Parser *p); static void *_tmp_201_rule(Parser *p); static void *_tmp_202_rule(Parser *p); static void *_tmp_203_rule(Parser *p); +static void *_tmp_204_rule(Parser *p); // file: statements? $ @@ -7803,6 +7809,7 @@ double_star_pattern_rule(Parser *p) // | name_or_attr '(' positional_patterns ','? ')' // | name_or_attr '(' keyword_patterns ','? ')' // | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')' +// | invalid_class_pattern static pattern_ty class_pattern_rule(Parser *p) { @@ -8005,6 +8012,25 @@ class_pattern_rule(Parser *p) D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'")); } + if (p->call_invalid_rules) { // invalid_class_pattern + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern")); + void *invalid_class_pattern_var; + if ( + (invalid_class_pattern_var = invalid_class_pattern_rule(p)) // invalid_class_pattern + ) + { + D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern")); + _res = invalid_class_pattern_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern")); + } _res = NULL; done: D(p->level--); @@ -20310,6 +20336,105 @@ invalid_as_pattern_rule(Parser *p) return _res; } +// invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern +static void * +invalid_class_pattern_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // name_or_attr '(' invalid_class_argument_pattern + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern")); + Token * _literal; + asdl_pattern_seq* a; + expr_ty name_or_attr_var; + if ( + (name_or_attr_var = name_or_attr_rule(p)) // name_or_attr + && + (_literal = _PyPegen_expect_token(p, 7)) // token='(' + && + (a = invalid_class_argument_pattern_rule(p)) // invalid_class_argument_pattern + ) + { + D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern")); + _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + +// invalid_class_argument_pattern: +// | [positional_patterns ','] keyword_patterns ',' positional_patterns +static asdl_pattern_seq* +invalid_class_argument_pattern_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + asdl_pattern_seq* _res = NULL; + int _mark = p->mark; + { // [positional_patterns ','] keyword_patterns ',' positional_patterns + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns")); + Token * _literal; + void *_opt_var; + UNUSED(_opt_var); // Silence compiler warnings + asdl_pattern_seq* a; + asdl_seq* keyword_patterns_var; + if ( + (_opt_var = _tmp_173_rule(p), 1) // [positional_patterns ','] + && + (keyword_patterns_var = keyword_patterns_rule(p)) // keyword_patterns + && + (_literal = _PyPegen_expect_token(p, 12)) // token=',' + && + (a = positional_patterns_rule(p)) // positional_patterns + ) + { + D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns")); + _res = a; + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + // invalid_if_stmt: // | 'if' named_expression NEWLINE // | 'if' named_expression ':' NEWLINE !INDENT @@ -20716,7 +20841,7 @@ invalid_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (_opt_var_2 = _tmp_173_rule(p), 1) // ['->' expression] + (_opt_var_2 = _tmp_174_rule(p), 1) // ['->' expression] && (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20772,7 +20897,7 @@ invalid_class_def_raw_rule(Parser *p) && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_174_rule(p), 1) // ['(' arguments? ')'] + (_opt_var = _tmp_175_rule(p), 1) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20820,11 +20945,11 @@ invalid_double_starred_kvpairs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - asdl_seq * _gather_175_var; + asdl_seq * _gather_176_var; Token * _literal; void *invalid_kvpair_var; if ( - (_gather_175_var = _gather_175_rule(p)) // ','.double_starred_kvpair+ + (_gather_176_var = _gather_176_rule(p)) // ','.double_starred_kvpair+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -20832,7 +20957,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - _res = _PyPegen_dummy_name(p, _gather_175_var, _literal, invalid_kvpair_var); + _res = _PyPegen_dummy_name(p, _gather_176_var, _literal, invalid_kvpair_var); goto done; } p->mark = _mark; @@ -20885,7 +21010,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_177_rule, p) + _PyPegen_lookahead(1, _tmp_178_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -22258,12 +22383,12 @@ _loop1_22_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_178_var; + void *_tmp_179_var; while ( - (_tmp_178_var = _tmp_178_rule(p)) // star_targets '=' + (_tmp_179_var = _tmp_179_rule(p)) // star_targets '=' ) { - _res = _tmp_178_var; + _res = _tmp_179_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22766,12 +22891,12 @@ _loop0_31_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_179_var; + void *_tmp_180_var; while ( - (_tmp_179_var = _tmp_179_rule(p)) // '.' | '...' + (_tmp_180_var = _tmp_180_rule(p)) // '.' | '...' ) { - _res = _tmp_179_var; + _res = _tmp_180_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22832,12 +22957,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_180_var; + void *_tmp_181_var; while ( - (_tmp_180_var = _tmp_180_rule(p)) // '.' | '...' + (_tmp_181_var = _tmp_181_rule(p)) // '.' | '...' ) { - _res = _tmp_180_var; + _res = _tmp_181_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -25948,12 +26073,12 @@ _loop1_84_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_181_var; + void *_tmp_182_var; while ( - (_tmp_181_var = _tmp_181_rule(p)) // '@' named_expression NEWLINE + (_tmp_182_var = _tmp_182_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_181_var; + _res = _tmp_182_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26066,12 +26191,12 @@ _loop1_86_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_182_var; + void *_tmp_183_var; while ( - (_tmp_182_var = _tmp_182_rule(p)) // ',' star_expression + (_tmp_183_var = _tmp_183_rule(p)) // ',' star_expression ) { - _res = _tmp_182_var; + _res = _tmp_183_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26251,12 +26376,12 @@ _loop1_89_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_183_var; + void *_tmp_184_var; while ( - (_tmp_183_var = _tmp_183_rule(p)) // ',' expression + (_tmp_184_var = _tmp_184_rule(p)) // ',' expression ) { - _res = _tmp_183_var; + _res = _tmp_184_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27281,12 +27406,12 @@ _loop1_104_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_184_var; + void *_tmp_185_var; while ( - (_tmp_184_var = _tmp_184_rule(p)) // 'or' conjunction + (_tmp_185_var = _tmp_185_rule(p)) // 'or' conjunction ) { - _res = _tmp_184_var; + _res = _tmp_185_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27352,12 +27477,12 @@ _loop1_105_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_185_var; + void *_tmp_186_var; while ( - (_tmp_185_var = _tmp_185_rule(p)) // 'and' inversion + (_tmp_186_var = _tmp_186_rule(p)) // 'and' inversion ) { - _res = _tmp_185_var; + _res = _tmp_186_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28330,12 +28455,12 @@ _loop0_121_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_186_var; + void *_tmp_187_var; while ( - (_tmp_186_var = _tmp_186_rule(p)) // 'if' disjunction + (_tmp_187_var = _tmp_187_rule(p)) // 'if' disjunction ) { - _res = _tmp_186_var; + _res = _tmp_187_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28396,12 +28521,12 @@ _loop0_122_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_187_var; + void *_tmp_188_var; while ( - (_tmp_187_var = _tmp_187_rule(p)) // 'if' disjunction + (_tmp_188_var = _tmp_188_rule(p)) // 'if' disjunction ) { - _res = _tmp_187_var; + _res = _tmp_188_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28467,7 +28592,7 @@ _loop0_124_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_188_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_189_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' ) { _res = elem; @@ -28531,7 +28656,7 @@ _gather_123_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_188_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' + (elem = _tmp_189_rule(p)) // starred_expression | (assigment_expression | expression !':=') !'=' && (seq = _loop0_124_rule(p)) // _loop0_124 ) @@ -29077,12 +29202,12 @@ _loop0_134_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_189_var; + void *_tmp_190_var; while ( - (_tmp_189_var = _tmp_189_rule(p)) // ',' star_target + (_tmp_190_var = _tmp_190_rule(p)) // ',' star_target ) { - _res = _tmp_189_var; + _res = _tmp_190_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29257,12 +29382,12 @@ _loop1_137_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_190_var; + void *_tmp_191_var; while ( - (_tmp_190_var = _tmp_190_rule(p)) // ',' star_target + (_tmp_191_var = _tmp_191_rule(p)) // ',' star_target ) { - _res = _tmp_190_var; + _res = _tmp_191_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29942,12 +30067,12 @@ _loop0_148_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_191_var; + void *_tmp_192_var; while ( - (_tmp_191_var = _tmp_191_rule(p)) // star_targets '=' + (_tmp_192_var = _tmp_192_rule(p)) // star_targets '=' ) { - _res = _tmp_191_var; + _res = _tmp_192_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30008,12 +30133,12 @@ _loop0_149_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_192_var; + void *_tmp_193_var; while ( - (_tmp_192_var = _tmp_192_rule(p)) // star_targets '=' + (_tmp_193_var = _tmp_193_rule(p)) // star_targets '=' ) { - _res = _tmp_192_var; + _res = _tmp_193_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30597,15 +30722,15 @@ _tmp_158_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_193_var; + void *_tmp_194_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_193_var = _tmp_193_rule(p)) // ')' | '**' + (_tmp_194_var = _tmp_194_rule(p)) // ')' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_193_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_194_var); goto done; } p->mark = _mark; @@ -30655,15 +30780,15 @@ _tmp_159_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_194_var; + void *_tmp_195_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_194_var = _tmp_194_rule(p)) // ':' | '**' + (_tmp_195_var = _tmp_195_rule(p)) // ':' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_194_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_195_var); goto done; } p->mark = _mark; @@ -30782,7 +30907,7 @@ _loop0_162_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_195_rule(p)) // expression ['as' star_target] + (elem = _tmp_196_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -30845,7 +30970,7 @@ _gather_161_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_195_rule(p)) // expression ['as' star_target] + (elem = _tmp_196_rule(p)) // expression ['as' star_target] && (seq = _loop0_162_rule(p)) // _loop0_162 ) @@ -30896,7 +31021,7 @@ _loop0_164_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_196_rule(p)) // expressions ['as' star_target] + (elem = _tmp_197_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -30959,7 +31084,7 @@ _gather_163_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_196_rule(p)) // expressions ['as' star_target] + (elem = _tmp_197_rule(p)) // expressions ['as' star_target] && (seq = _loop0_164_rule(p)) // _loop0_164 ) @@ -31010,7 +31135,7 @@ _loop0_166_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_197_rule(p)) // expression ['as' star_target] + (elem = _tmp_198_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31073,7 +31198,7 @@ _gather_165_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_197_rule(p)) // expression ['as' star_target] + (elem = _tmp_198_rule(p)) // expression ['as' star_target] && (seq = _loop0_166_rule(p)) // _loop0_166 ) @@ -31124,7 +31249,7 @@ _loop0_168_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_198_rule(p)) // expressions ['as' star_target] + (elem = _tmp_199_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31187,7 +31312,7 @@ _gather_167_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_198_rule(p)) // expressions ['as' star_target] + (elem = _tmp_199_rule(p)) // expressions ['as' star_target] && (seq = _loop0_168_rule(p)) // _loop0_168 ) @@ -31378,9 +31503,48 @@ _tmp_172_rule(Parser *p) return _res; } -// _tmp_173: '->' expression +// _tmp_173: positional_patterns ',' static void * _tmp_173_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // positional_patterns ',' + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); + Token * _literal; + asdl_pattern_seq* positional_patterns_var; + if ( + (positional_patterns_var = positional_patterns_rule(p)) // positional_patterns + && + (_literal = _PyPegen_expect_token(p, 12)) // token=',' + ) + { + D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); + _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + +// _tmp_174: '->' expression +static void * +_tmp_174_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31394,7 +31558,7 @@ _tmp_173_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty expression_var; if ( @@ -31403,12 +31567,12 @@ _tmp_173_rule(Parser *p) (expression_var = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = _PyPegen_dummy_name(p, _literal, expression_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -31417,9 +31581,9 @@ _tmp_173_rule(Parser *p) return _res; } -// _tmp_174: '(' arguments? ')' +// _tmp_175: '(' arguments? ')' static void * -_tmp_174_rule(Parser *p) +_tmp_175_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31433,7 +31597,7 @@ _tmp_174_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -31446,12 +31610,12 @@ _tmp_174_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -31460,9 +31624,9 @@ _tmp_174_rule(Parser *p) return _res; } -// _loop0_176: ',' double_starred_kvpair +// _loop0_177: ',' double_starred_kvpair static asdl_seq * -_loop0_176_rule(Parser *p) +_loop0_177_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31486,7 +31650,7 @@ _loop0_176_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -31517,7 +31681,7 @@ _loop0_176_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_176[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31530,14 +31694,14 @@ _loop0_176_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_176_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_177_type, _seq); D(p->level--); return _seq; } -// _gather_175: double_starred_kvpair _loop0_176 +// _gather_176: double_starred_kvpair _loop0_177 static asdl_seq * -_gather_175_rule(Parser *p) +_gather_176_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31546,27 +31710,27 @@ _gather_175_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_176 + { // double_starred_kvpair _loop0_177 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_176")); + D(fprintf(stderr, "%*c> _gather_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_177")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_176_rule(p)) // _loop0_176 + (seq = _loop0_177_rule(p)) // _loop0_177 ) { - D(fprintf(stderr, "%*c+ _gather_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_176")); + D(fprintf(stderr, "%*c+ _gather_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_177")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_175[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_176")); + D(fprintf(stderr, "%*c%s _gather_176[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_177")); } _res = NULL; done: @@ -31574,9 +31738,9 @@ _gather_175_rule(Parser *p) return _res; } -// _tmp_177: '}' | ',' +// _tmp_178: '}' | ',' static void * -_tmp_177_rule(Parser *p) +_tmp_178_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31590,18 +31754,18 @@ _tmp_177_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -31609,18 +31773,18 @@ _tmp_177_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -31629,9 +31793,9 @@ _tmp_177_rule(Parser *p) return _res; } -// _tmp_178: star_targets '=' +// _tmp_179: star_targets '=' static void * -_tmp_178_rule(Parser *p) +_tmp_179_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31645,7 +31809,7 @@ _tmp_178_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -31654,7 +31818,7 @@ _tmp_178_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31664,7 +31828,7 @@ _tmp_178_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -31673,9 +31837,9 @@ _tmp_178_rule(Parser *p) return _res; } -// _tmp_179: '.' | '...' +// _tmp_180: '.' | '...' static void * -_tmp_179_rule(Parser *p) +_tmp_180_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31689,18 +31853,18 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -31708,18 +31872,18 @@ _tmp_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -31728,9 +31892,9 @@ _tmp_179_rule(Parser *p) return _res; } -// _tmp_180: '.' | '...' +// _tmp_181: '.' | '...' static void * -_tmp_180_rule(Parser *p) +_tmp_181_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31744,18 +31908,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -31763,18 +31927,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -31783,9 +31947,9 @@ _tmp_180_rule(Parser *p) return _res; } -// _tmp_181: '@' named_expression NEWLINE +// _tmp_182: '@' named_expression NEWLINE static void * -_tmp_181_rule(Parser *p) +_tmp_182_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31799,7 +31963,7 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -31811,7 +31975,7 @@ _tmp_181_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31821,7 +31985,7 @@ _tmp_181_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -31830,9 +31994,9 @@ _tmp_181_rule(Parser *p) return _res; } -// _tmp_182: ',' star_expression +// _tmp_183: ',' star_expression static void * -_tmp_182_rule(Parser *p) +_tmp_183_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31846,7 +32010,7 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -31855,7 +32019,7 @@ _tmp_182_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31865,7 +32029,7 @@ _tmp_182_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -31874,9 +32038,9 @@ _tmp_182_rule(Parser *p) return _res; } -// _tmp_183: ',' expression +// _tmp_184: ',' expression static void * -_tmp_183_rule(Parser *p) +_tmp_184_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31890,7 +32054,7 @@ _tmp_183_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -31899,7 +32063,7 @@ _tmp_183_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31909,7 +32073,7 @@ _tmp_183_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -31918,9 +32082,9 @@ _tmp_183_rule(Parser *p) return _res; } -// _tmp_184: 'or' conjunction +// _tmp_185: 'or' conjunction static void * -_tmp_184_rule(Parser *p) +_tmp_185_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31934,7 +32098,7 @@ _tmp_184_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -31943,7 +32107,7 @@ _tmp_184_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31953,7 +32117,7 @@ _tmp_184_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -31962,9 +32126,9 @@ _tmp_184_rule(Parser *p) return _res; } -// _tmp_185: 'and' inversion +// _tmp_186: 'and' inversion static void * -_tmp_185_rule(Parser *p) +_tmp_186_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31978,7 +32142,7 @@ _tmp_185_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -31987,7 +32151,7 @@ _tmp_185_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -31997,7 +32161,7 @@ _tmp_185_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -32006,9 +32170,9 @@ _tmp_185_rule(Parser *p) return _res; } -// _tmp_186: 'if' disjunction +// _tmp_187: 'if' disjunction static void * -_tmp_186_rule(Parser *p) +_tmp_187_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32022,7 +32186,7 @@ _tmp_186_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32031,7 +32195,7 @@ _tmp_186_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32041,7 +32205,7 @@ _tmp_186_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32050,9 +32214,9 @@ _tmp_186_rule(Parser *p) return _res; } -// _tmp_187: 'if' disjunction +// _tmp_188: 'if' disjunction static void * -_tmp_187_rule(Parser *p) +_tmp_188_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32066,7 +32230,7 @@ _tmp_187_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( @@ -32075,7 +32239,7 @@ _tmp_187_rule(Parser *p) (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32085,7 +32249,7 @@ _tmp_187_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32094,9 +32258,9 @@ _tmp_187_rule(Parser *p) return _res; } -// _tmp_188: starred_expression | (assigment_expression | expression !':=') !'=' +// _tmp_189: starred_expression | (assigment_expression | expression !':=') !'=' static void * -_tmp_188_rule(Parser *p) +_tmp_189_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32110,18 +32274,18 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // (assigment_expression | expression !':=') !'=' @@ -32129,20 +32293,20 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - void *_tmp_199_var; + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + void *_tmp_200_var; if ( - (_tmp_199_var = _tmp_199_rule(p)) // assigment_expression | expression !':=' + (_tmp_200_var = _tmp_200_rule(p)) // assigment_expression | expression !':=' && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); - _res = _tmp_199_var; + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assigment_expression | expression !':=') !'='")); + _res = _tmp_200_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assigment_expression | expression !':=') !'='")); } _res = NULL; @@ -32151,9 +32315,9 @@ _tmp_188_rule(Parser *p) return _res; } -// _tmp_189: ',' star_target +// _tmp_190: ',' star_target static void * -_tmp_189_rule(Parser *p) +_tmp_190_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32167,7 +32331,7 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32176,7 +32340,7 @@ _tmp_189_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32186,7 +32350,7 @@ _tmp_189_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32195,9 +32359,9 @@ _tmp_189_rule(Parser *p) return _res; } -// _tmp_190: ',' star_target +// _tmp_191: ',' star_target static void * -_tmp_190_rule(Parser *p) +_tmp_191_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32211,7 +32375,7 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32220,7 +32384,7 @@ _tmp_190_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32230,7 +32394,7 @@ _tmp_190_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32239,9 +32403,9 @@ _tmp_190_rule(Parser *p) return _res; } -// _tmp_191: star_targets '=' +// _tmp_192: star_targets '=' static void * -_tmp_191_rule(Parser *p) +_tmp_192_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32255,7 +32419,7 @@ _tmp_191_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32264,12 +32428,12 @@ _tmp_191_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32278,9 +32442,9 @@ _tmp_191_rule(Parser *p) return _res; } -// _tmp_192: star_targets '=' +// _tmp_193: star_targets '=' static void * -_tmp_192_rule(Parser *p) +_tmp_193_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32294,7 +32458,7 @@ _tmp_192_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32303,12 +32467,12 @@ _tmp_192_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32317,9 +32481,9 @@ _tmp_192_rule(Parser *p) return _res; } -// _tmp_193: ')' | '**' +// _tmp_194: ')' | '**' static void * -_tmp_193_rule(Parser *p) +_tmp_194_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32333,18 +32497,18 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -32352,18 +32516,18 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32372,9 +32536,9 @@ _tmp_193_rule(Parser *p) return _res; } -// _tmp_194: ':' | '**' +// _tmp_195: ':' | '**' static void * -_tmp_194_rule(Parser *p) +_tmp_195_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32388,18 +32552,18 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -32407,18 +32571,18 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32427,9 +32591,9 @@ _tmp_194_rule(Parser *p) return _res; } -// _tmp_195: expression ['as' star_target] +// _tmp_196: expression ['as' star_target] static void * -_tmp_195_rule(Parser *p) +_tmp_196_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32443,22 +32607,22 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_200_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_201_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32467,9 +32631,9 @@ _tmp_195_rule(Parser *p) return _res; } -// _tmp_196: expressions ['as' star_target] +// _tmp_197: expressions ['as' star_target] static void * -_tmp_196_rule(Parser *p) +_tmp_197_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32483,22 +32647,22 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_201_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32507,9 +32671,9 @@ _tmp_196_rule(Parser *p) return _res; } -// _tmp_197: expression ['as' star_target] +// _tmp_198: expression ['as' star_target] static void * -_tmp_197_rule(Parser *p) +_tmp_198_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32523,22 +32687,22 @@ _tmp_197_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32547,9 +32711,9 @@ _tmp_197_rule(Parser *p) return _res; } -// _tmp_198: expressions ['as' star_target] +// _tmp_199: expressions ['as' star_target] static void * -_tmp_198_rule(Parser *p) +_tmp_199_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32563,22 +32727,22 @@ _tmp_198_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] + (_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32587,9 +32751,9 @@ _tmp_198_rule(Parser *p) return _res; } -// _tmp_199: assigment_expression | expression !':=' +// _tmp_200: assigment_expression | expression !':=' static void * -_tmp_199_rule(Parser *p) +_tmp_200_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32603,18 +32767,18 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assigment_expression")); expr_ty assigment_expression_var; if ( (assigment_expression_var = assigment_expression_rule(p)) // assigment_expression ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assigment_expression")); _res = assigment_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assigment_expression")); } { // expression !':=' @@ -32622,7 +32786,7 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression @@ -32630,12 +32794,12 @@ _tmp_199_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; @@ -32644,9 +32808,9 @@ _tmp_199_rule(Parser *p) return _res; } -// _tmp_200: 'as' star_target +// _tmp_201: 'as' star_target static void * -_tmp_200_rule(Parser *p) +_tmp_201_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32660,7 +32824,7 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32669,12 +32833,12 @@ _tmp_200_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32683,9 +32847,9 @@ _tmp_200_rule(Parser *p) return _res; } -// _tmp_201: 'as' star_target +// _tmp_202: 'as' star_target static void * -_tmp_201_rule(Parser *p) +_tmp_202_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32699,7 +32863,7 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32708,12 +32872,12 @@ _tmp_201_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32722,9 +32886,9 @@ _tmp_201_rule(Parser *p) return _res; } -// _tmp_202: 'as' star_target +// _tmp_203: 'as' star_target static void * -_tmp_202_rule(Parser *p) +_tmp_203_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32738,7 +32902,7 @@ _tmp_202_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32747,12 +32911,12 @@ _tmp_202_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -32761,9 +32925,9 @@ _tmp_202_rule(Parser *p) return _res; } -// _tmp_203: 'as' star_target +// _tmp_204: 'as' star_target static void * -_tmp_203_rule(Parser *p) +_tmp_204_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32777,7 +32941,7 @@ _tmp_203_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( @@ -32786,12 +32950,12 @@ _tmp_203_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; diff --git a/Parser/pegen.c b/Parser/pegen.c index 615047c1b6a007..3472d489e067d3 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -1557,6 +1557,13 @@ _PyPegen_seq_last_item(asdl_seq *seq) return asdl_seq_GET_UNTYPED(seq, len - 1); } +void * +_PyPegen_seq_first_item(asdl_seq *seq) +{ + return asdl_seq_GET_UNTYPED(seq, 0); +} + + /* Creates a new name of the form . */ expr_ty _PyPegen_join_names_with_dot(Parser *p, expr_ty first_name, expr_ty second_name) diff --git a/Parser/pegen.h b/Parser/pegen.h index 161a49816d6c03..eac73bba151bca 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -149,6 +149,9 @@ void *_PyPegen_dummy_name(Parser *p, ...); void * _PyPegen_seq_last_item(asdl_seq *seq); #define PyPegen_last_item(seq, type) ((type)_PyPegen_seq_last_item((asdl_seq*)seq)) +void * _PyPegen_seq_first_item(asdl_seq *seq); +#define PyPegen_first_item(seq, type) ((type)_PyPegen_seq_first_item((asdl_seq*)seq)) + #define CURRENT_POS (-5) Py_LOCAL_INLINE(void *) From webhook-mailer at python.org Thu Jun 24 12:45:27 2021 From: webhook-mailer at python.org (zooba) Date: Thu, 24 Jun 2021 16:45:27 -0000 Subject: [Python-checkins] bpo-44321: Adds `os.EX_OK` for Windows (GH-26559) Message-ID: https://github.com/python/cpython/commit/19459f8ce63cc7f905e3c1a55d09d4d10d245343 commit: 19459f8ce63cc7f905e3c1a55d09d4d10d245343 branch: main author: Samuel Marks <807580+SamuelMarks at users.noreply.github.com> committer: zooba date: 2021-06-24T17:45:18+01:00 summary: bpo-44321: Adds `os.EX_OK` for Windows (GH-26559) files: M Doc/library/os.rst M Modules/posixmodule.c diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 4b249ed92c358..d3ca8c0476d0c 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -3656,9 +3656,10 @@ written in Python, such as a mail server's external command delivery program. .. data:: EX_OK - Exit code that means no error occurred. + Exit code that means no error occurred. May be taken from the defined value of + ``EXIT_SUCCESS`` on some platforms. Generally has a value of zero. - .. availability:: Unix. + .. availability:: Unix, Windows. .. data:: EX_USAGE diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 25ddc82cb893a..73e7e60fe63ff 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -23,6 +23,10 @@ # include #endif +#if !defined(EX_OK) && defined(EXIT_SUCCESS) +#define EX_OK EXIT_SUCCESS +#endif + #ifdef __VXWORKS__ # include "pycore_bitutils.h" // _Py_popcount32() #endif From webhook-mailer at python.org Thu Jun 24 15:37:50 2021 From: webhook-mailer at python.org (warsaw) Date: Thu, 24 Jun 2021 19:37:50 -0000 Subject: [Python-checkins] bpo-44498: Issue a deprecation warning on asynchat, asyncore and smtpd import (#26882) Message-ID: https://github.com/python/cpython/commit/8488b85c6397fe58f17fc00e047044c959ac0b04 commit: 8488b85c6397fe58f17fc00e047044c959ac0b04 branch: main author: Barry Warsaw committer: warsaw date: 2021-06-24T12:37:26-07:00 summary: bpo-44498: Issue a deprecation warning on asynchat, asyncore and smtpd import (#26882) * Issue a deprecation warning on smtpd import * Also issue DeprecationWarnings for asynchat and asyncore * Fix some tests * test___all__ requires the word 'module' or 'package' in the deprecation warning text, so add those to smtpd, asynchat, and asyncore. * In test_support, use pprint now instead of asyncore as the landmark. * Add What's New * Use ..deprecated:: * Use ..deprecated:: * Update Lib/smtpd.py Co-authored-by: Miro Hron?ok * Update Doc/library/smtpd.rst Co-authored-by: Miro Hron?ok * Import async{hat,ore} after the DeprecationWarning for this module Co-authored-by: Miro Hron?ok files: M Doc/library/smtpd.rst M Doc/whatsnew/3.10.rst M Lib/asynchat.py M Lib/asyncore.py M Lib/smtpd.py M Lib/test/test_support.py diff --git a/Doc/library/smtpd.rst b/Doc/library/smtpd.rst index ae66e7e4596c6..611411ddd295b 100644 --- a/Doc/library/smtpd.rst +++ b/Doc/library/smtpd.rst @@ -13,11 +13,10 @@ This module offers several classes to implement SMTP (email) servers. -.. seealso:: - - The `aiosmtpd `_ package is a recommended - replacement for this module. It is based on :mod:`asyncio` and provides a - more straightforward API. :mod:`smtpd` should be considered deprecated. +.. deprecated:: 3.6 + The `aiosmtpd `_ package is a recommended + replacement for this module. It is based on :mod:`asyncio` and provides a + more straightforward API. Several server implementations are present; one is a generic do-nothing implementation, which can be overridden, while the other two offer diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 63d1bd02c68b9..2a43d2686e3fb 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -883,6 +883,12 @@ The :meth:`~array.array.index` method of :class:`array.array` now has optional *start* and *stop* parameters. (Contributed by Anders Lorentsen and Zackery Spytz in :issue:`31956`.) +asynchat, asyncore, smtpd +------------------------- +These modules have been marked as deprecated in their module documentation +since Python 3.6. An import-time :class:`DeprecationWarning` has now been +added to all three of these modules. + base64 ------ diff --git a/Lib/asynchat.py b/Lib/asynchat.py index f4ba361bd4a3e..de26ffa648ffe 100644 --- a/Lib/asynchat.py +++ b/Lib/asynchat.py @@ -48,6 +48,14 @@ import asyncore from collections import deque +from warnings import warn +warn( + 'The asynchat module is deprecated. ' + 'The recommended replacement is asyncio', + DeprecationWarning, + stacklevel=2) + + class async_chat(asyncore.dispatcher): """This is an abstract class. You must derive from this class, and add diff --git a/Lib/asyncore.py b/Lib/asyncore.py index eeea48888616d..b1eea4bf65211 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -57,6 +57,13 @@ ENOTCONN, ESHUTDOWN, EISCONN, EBADF, ECONNABORTED, EPIPE, EAGAIN, \ errorcode +warnings.warn( + 'The asyncore module is deprecated. ' + 'The recommended replacement is asyncio', + DeprecationWarning, + stacklevel=2) + + _DISCONNECTED = frozenset({ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED, EPIPE, EBADF}) diff --git a/Lib/smtpd.py b/Lib/smtpd.py index d0536023e8401..1cd004fbc6fe5 100755 --- a/Lib/smtpd.py +++ b/Lib/smtpd.py @@ -76,8 +76,6 @@ import getopt import time import socket -import asyncore -import asynchat import collections from warnings import warn from email._header_value_parser import get_addr_spec, get_angle_addr @@ -86,6 +84,19 @@ "SMTPChannel", "SMTPServer", "DebuggingServer", "PureProxy", ] +warn( + 'The smtpd module is deprecated and unmaintained. Please see aiosmtpd ' + '(https://aiosmtpd.readthedocs.io/) for the recommended replacement.', + DeprecationWarning, + stacklevel=2) + + +# These are imported after the above warning so that users get the correct +# deprecation warning. +import asyncore +import asynchat + + program = sys.argv[0] __version__ = 'Python SMTP proxy version 0.3' diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 55d78b733353d..b1d3411a865bb 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -292,8 +292,8 @@ def test_check_syntax_error(self): def test_CleanImport(self): import importlib - with import_helper.CleanImport("asyncore"): - importlib.import_module("asyncore") + with import_helper.CleanImport("pprint"): + importlib.import_module("pprint") def test_DirsOnSysPath(self): with import_helper.DirsOnSysPath('foo', 'bar'): From webhook-mailer at python.org Thu Jun 24 15:58:04 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Jun 2021 19:58:04 -0000 Subject: [Python-checkins] [3.10] bpo-44498: Issue a deprecation warning on asynchat, asyncore and smtpd import (GH-26882) (GH-26904) Message-ID: https://github.com/python/cpython/commit/a80a38ee9a7b2e26dba848793cc298d8435fddd5 commit: a80a38ee9a7b2e26dba848793cc298d8435fddd5 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-24T12:57:55-07:00 summary: [3.10] bpo-44498: Issue a deprecation warning on asynchat, asyncore and smtpd import (GH-26882) (GH-26904) * Issue a deprecation warning on smtpd import * Also issue DeprecationWarnings for asynchat and asyncore * Fix some tests * test___all__ requires the word 'module' or 'package' in the deprecation warning text, so add those to smtpd, asynchat, and asyncore. * In test_support, use pprint now instead of asyncore as the landmark. * Add What's New * Use ..deprecated:: * Use ..deprecated:: * Update Lib/smtpd.py Co-authored-by: Miro Hron?ok * Update Doc/library/smtpd.rst Co-authored-by: Miro Hron?ok * Import async{hat,ore} after the DeprecationWarning for this module Co-authored-by: Miro Hron?ok (cherry picked from commit 8488b85c6397fe58f17fc00e047044c959ac0b04) Co-authored-by: Barry Warsaw Automerge-Triggered-By: GH:warsaw files: M Doc/library/smtpd.rst M Doc/whatsnew/3.10.rst M Lib/asynchat.py M Lib/asyncore.py M Lib/smtpd.py M Lib/test/test_support.py diff --git a/Doc/library/smtpd.rst b/Doc/library/smtpd.rst index d84e74a8ceaaf..803430f1bde17 100644 --- a/Doc/library/smtpd.rst +++ b/Doc/library/smtpd.rst @@ -13,11 +13,10 @@ This module offers several classes to implement SMTP (email) servers. -.. seealso:: - - The `aiosmtpd `_ package is a recommended - replacement for this module. It is based on :mod:`asyncio` and provides a - more straightforward API. :mod:`smtpd` should be considered deprecated. +.. deprecated:: 3.6 + The `aiosmtpd `_ package is a recommended + replacement for this module. It is based on :mod:`asyncio` and provides a + more straightforward API. Several server implementations are present; one is a generic do-nothing implementation, which can be overridden, while the other two offer diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 987d125a0114c..6b6578b4097f3 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -883,6 +883,12 @@ The :meth:`~array.array.index` method of :class:`array.array` now has optional *start* and *stop* parameters. (Contributed by Anders Lorentsen and Zackery Spytz in :issue:`31956`.) +asynchat, asyncore, smtpd +------------------------- +These modules have been marked as deprecated in their module documentation +since Python 3.6. An import-time :class:`DeprecationWarning` has now been +added to all three of these modules. + base64 ------ diff --git a/Lib/asynchat.py b/Lib/asynchat.py index f4ba361bd4a3e..de26ffa648ffe 100644 --- a/Lib/asynchat.py +++ b/Lib/asynchat.py @@ -48,6 +48,14 @@ import asyncore from collections import deque +from warnings import warn +warn( + 'The asynchat module is deprecated. ' + 'The recommended replacement is asyncio', + DeprecationWarning, + stacklevel=2) + + class async_chat(asyncore.dispatcher): """This is an abstract class. You must derive from this class, and add diff --git a/Lib/asyncore.py b/Lib/asyncore.py index eeea48888616d..b1eea4bf65211 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -57,6 +57,13 @@ ENOTCONN, ESHUTDOWN, EISCONN, EBADF, ECONNABORTED, EPIPE, EAGAIN, \ errorcode +warnings.warn( + 'The asyncore module is deprecated. ' + 'The recommended replacement is asyncio', + DeprecationWarning, + stacklevel=2) + + _DISCONNECTED = frozenset({ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED, EPIPE, EBADF}) diff --git a/Lib/smtpd.py b/Lib/smtpd.py index 1e2adc87a2bf2..bc43331251009 100755 --- a/Lib/smtpd.py +++ b/Lib/smtpd.py @@ -83,8 +83,6 @@ import getopt import time import socket -import asyncore -import asynchat import collections from warnings import warn from email._header_value_parser import get_addr_spec, get_angle_addr @@ -94,6 +92,19 @@ "MailmanProxy", ] +warn( + 'The smtpd module is deprecated and unmaintained. Please see aiosmtpd ' + '(https://aiosmtpd.readthedocs.io/) for the recommended replacement.', + DeprecationWarning, + stacklevel=2) + + +# These are imported after the above warning so that users get the correct +# deprecation warning. +import asyncore +import asynchat + + program = sys.argv[0] __version__ = 'Python SMTP proxy version 0.3' diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 55d78b733353d..b1d3411a865bb 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -292,8 +292,8 @@ def test_check_syntax_error(self): def test_CleanImport(self): import importlib - with import_helper.CleanImport("asyncore"): - importlib.import_module("asyncore") + with import_helper.CleanImport("pprint"): + importlib.import_module("pprint") def test_DirsOnSysPath(self): with import_helper.DirsOnSysPath('foo', 'bar'): From webhook-mailer at python.org Thu Jun 24 19:20:49 2021 From: webhook-mailer at python.org (iritkatriel) Date: Thu, 24 Jun 2021 23:20:49 -0000 Subject: [Python-checkins] bpo-44498: suppress DeprecationWarnings for asynchat, asyncore and smtpd in tests (GH-26905) Message-ID: https://github.com/python/cpython/commit/22e7effad571f8e524d2f71ff55bbf2a25306753 commit: 22e7effad571f8e524d2f71ff55bbf2a25306753 branch: main author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-25T00:20:40+01:00 summary: bpo-44498: suppress DeprecationWarnings for asynchat, asyncore and smtpd in tests (GH-26905) files: M Lib/test/test_asynchat.py M Lib/test/test_asyncore.py M Lib/test/test_ftplib.py M Lib/test/test_logging.py M Lib/test/test_os.py M Lib/test/test_poplib.py M Lib/test/test_smtpd.py M Lib/test/test_smtplib.py M Lib/test/test_ssl.py diff --git a/Lib/test/test_asynchat.py b/Lib/test/test_asynchat.py index b32edddc7d550..973ac1f7d97c9 100644 --- a/Lib/test/test_asynchat.py +++ b/Lib/test/test_asynchat.py @@ -4,8 +4,6 @@ from test.support import socket_helper from test.support import threading_helper -import asynchat -import asyncore import errno import socket import sys @@ -14,6 +12,12 @@ import unittest import unittest.mock +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asynchat + import asyncore + HOST = socket_helper.HOST SERVER_QUIT = b'QUIT\n' diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py index 3bd904d1774bc..ecd1e120ecb51 100644 --- a/Lib/test/test_asyncore.py +++ b/Lib/test/test_asyncore.py @@ -1,4 +1,3 @@ -import asyncore import unittest import select import os @@ -19,6 +18,11 @@ if support.PGO: raise unittest.SkipTest("test is not helpful for PGO") +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + HAS_UNIX_SOCKETS = hasattr(socket, 'AF_UNIX') diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py index a48b429ca3802..3492ba44f2103 100644 --- a/Lib/test/test_ftplib.py +++ b/Lib/test/test_ftplib.py @@ -4,8 +4,6 @@ # environment import ftplib -import asyncore -import asynchat import socket import io import errno @@ -24,6 +22,13 @@ from test.support import warnings_helper from test.support.socket_helper import HOST, HOSTv6 +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + import asynchat + + TIMEOUT = support.LOOPBACK_TIMEOUT DEFAULT_ENCODING = 'utf-8' # the dummy data returned by server over the data channel when diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 6d111908e7c39..48ed2eb2fc63b 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -54,13 +54,16 @@ import warnings import weakref -import asyncore from http.server import HTTPServer, BaseHTTPRequestHandler -import smtpd from urllib.parse import urlparse, parse_qs from socketserver import (ThreadingUDPServer, DatagramRequestHandler, ThreadingTCPServer, StreamRequestHandler) +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + import smtpd + try: import win32evtlog, win32evtlogutil, pywintypes except ImportError: diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 8b3d1feb78fe3..684e308ad3a05 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -2,8 +2,6 @@ # does add tests for a few functions which have been determined to be more # portable than they had been thought to be. -import asynchat -import asyncore import codecs import contextlib import decimal @@ -39,6 +37,11 @@ from test.support import warnings_helper from platform import win32_is_iot +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asynchat + import asyncore + try: import resource except ImportError: diff --git a/Lib/test/test_poplib.py b/Lib/test/test_poplib.py index c5ae9f77e4f00..8dd6ea69c0d1a 100644 --- a/Lib/test/test_poplib.py +++ b/Lib/test/test_poplib.py @@ -4,8 +4,6 @@ # a real test suite import poplib -import asyncore -import asynchat import socket import os import errno @@ -17,6 +15,12 @@ from test.support import socket_helper from test.support import threading_helper +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asynchat + import asyncore + HOST = socket_helper.HOST PORT = 0 diff --git a/Lib/test/test_smtpd.py b/Lib/test/test_smtpd.py index 6303192d1b26c..d2e150d535ff6 100644 --- a/Lib/test/test_smtpd.py +++ b/Lib/test/test_smtpd.py @@ -5,8 +5,12 @@ from test.support import warnings_helper import socket import io -import smtpd -import asyncore + +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import smtpd + import asyncore class DummyServer(smtpd.SMTPServer): diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py index f3d33ab0772dd..483d747ee6a49 100644 --- a/Lib/test/test_smtplib.py +++ b/Lib/test/test_smtplib.py @@ -1,4 +1,3 @@ -import asyncore import base64 import email.mime.text from email.message import EmailMessage @@ -7,7 +6,6 @@ import hashlib import hmac import socket -import smtpd import smtplib import io import re @@ -25,6 +23,12 @@ from test.support import threading_helper from unittest.mock import Mock +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + import smtpd + HOST = socket_helper.HOST if sys.platform == 'darwin': diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 11f4c3c2e8e5b..0cd3fb47a969a 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -21,7 +21,6 @@ import urllib.request import threading import traceback -import asyncore import weakref import platform import sysconfig @@ -31,6 +30,11 @@ except ImportError: ctypes = None +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + ssl = import_helper.import_module("ssl") import _ssl From webhook-mailer at python.org Thu Jun 24 19:38:19 2021 From: webhook-mailer at python.org (iritkatriel) Date: Thu, 24 Jun 2021 23:38:19 -0000 Subject: [Python-checkins] bpo-44498: suppress DeprecationWarnings for asynchat, asyncore and smtpd in tests (GH-26905) (GH-26907) Message-ID: https://github.com/python/cpython/commit/8bec9fb92f09d02c24611ebd0a90103a1a414a40 commit: 8bec9fb92f09d02c24611ebd0a90103a1a414a40 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-25T00:38:01+01:00 summary: bpo-44498: suppress DeprecationWarnings for asynchat, asyncore and smtpd in tests (GH-26905) (GH-26907) (cherry picked from commit 22e7effad571f8e524d2f71ff55bbf2a25306753) Co-authored-by: Irit Katriel <1055913+iritkatriel at users.noreply.github.com> files: M Lib/test/test_asynchat.py M Lib/test/test_asyncore.py M Lib/test/test_ftplib.py M Lib/test/test_logging.py M Lib/test/test_os.py M Lib/test/test_poplib.py M Lib/test/test_smtpd.py M Lib/test/test_smtplib.py M Lib/test/test_ssl.py diff --git a/Lib/test/test_asynchat.py b/Lib/test/test_asynchat.py index b32edddc7d550..973ac1f7d97c9 100644 --- a/Lib/test/test_asynchat.py +++ b/Lib/test/test_asynchat.py @@ -4,8 +4,6 @@ from test.support import socket_helper from test.support import threading_helper -import asynchat -import asyncore import errno import socket import sys @@ -14,6 +12,12 @@ import unittest import unittest.mock +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asynchat + import asyncore + HOST = socket_helper.HOST SERVER_QUIT = b'QUIT\n' diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py index 3bd904d1774bc..ecd1e120ecb51 100644 --- a/Lib/test/test_asyncore.py +++ b/Lib/test/test_asyncore.py @@ -1,4 +1,3 @@ -import asyncore import unittest import select import os @@ -19,6 +18,11 @@ if support.PGO: raise unittest.SkipTest("test is not helpful for PGO") +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + HAS_UNIX_SOCKETS = hasattr(socket, 'AF_UNIX') diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py index a48b429ca3802..3492ba44f2103 100644 --- a/Lib/test/test_ftplib.py +++ b/Lib/test/test_ftplib.py @@ -4,8 +4,6 @@ # environment import ftplib -import asyncore -import asynchat import socket import io import errno @@ -24,6 +22,13 @@ from test.support import warnings_helper from test.support.socket_helper import HOST, HOSTv6 +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + import asynchat + + TIMEOUT = support.LOOPBACK_TIMEOUT DEFAULT_ENCODING = 'utf-8' # the dummy data returned by server over the data channel when diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index ee00a32026f65..0cc1fc4d16790 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -54,13 +54,16 @@ import warnings import weakref -import asyncore from http.server import HTTPServer, BaseHTTPRequestHandler -import smtpd from urllib.parse import urlparse, parse_qs from socketserver import (ThreadingUDPServer, DatagramRequestHandler, ThreadingTCPServer, StreamRequestHandler) +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + import smtpd + try: import win32evtlog, win32evtlogutil, pywintypes except ImportError: diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 8b3d1feb78fe3..684e308ad3a05 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -2,8 +2,6 @@ # does add tests for a few functions which have been determined to be more # portable than they had been thought to be. -import asynchat -import asyncore import codecs import contextlib import decimal @@ -39,6 +37,11 @@ from test.support import warnings_helper from platform import win32_is_iot +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asynchat + import asyncore + try: import resource except ImportError: diff --git a/Lib/test/test_poplib.py b/Lib/test/test_poplib.py index c5ae9f77e4f00..8dd6ea69c0d1a 100644 --- a/Lib/test/test_poplib.py +++ b/Lib/test/test_poplib.py @@ -4,8 +4,6 @@ # a real test suite import poplib -import asyncore -import asynchat import socket import os import errno @@ -17,6 +15,12 @@ from test.support import socket_helper from test.support import threading_helper +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asynchat + import asyncore + HOST = socket_helper.HOST PORT = 0 diff --git a/Lib/test/test_smtpd.py b/Lib/test/test_smtpd.py index 6303192d1b26c..d2e150d535ff6 100644 --- a/Lib/test/test_smtpd.py +++ b/Lib/test/test_smtpd.py @@ -5,8 +5,12 @@ from test.support import warnings_helper import socket import io -import smtpd -import asyncore + +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import smtpd + import asyncore class DummyServer(smtpd.SMTPServer): diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py index f3d33ab0772dd..483d747ee6a49 100644 --- a/Lib/test/test_smtplib.py +++ b/Lib/test/test_smtplib.py @@ -1,4 +1,3 @@ -import asyncore import base64 import email.mime.text from email.message import EmailMessage @@ -7,7 +6,6 @@ import hashlib import hmac import socket -import smtpd import smtplib import io import re @@ -25,6 +23,12 @@ from test.support import threading_helper from unittest.mock import Mock +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + import smtpd + HOST = socket_helper.HOST if sys.platform == 'darwin': diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index a89768f24b2b0..fab382f43c7a4 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -21,7 +21,6 @@ import urllib.request import threading import traceback -import asyncore import weakref import platform import sysconfig @@ -31,6 +30,11 @@ except ImportError: ctypes = None +import warnings +with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + import asyncore + ssl = import_helper.import_module("ssl") import _ssl From webhook-mailer at python.org Fri Jun 25 11:21:09 2021 From: webhook-mailer at python.org (brandtbucher) Date: Fri, 25 Jun 2021 15:21:09 -0000 Subject: [Python-checkins] bpo-43977: Properly update the tp_flags of existing subclasses when their parents are registered (GH-26864) Message-ID: https://github.com/python/cpython/commit/ca2009d72a52a98bf43aafa9ad270a4fcfabfc89 commit: ca2009d72a52a98bf43aafa9ad270a4fcfabfc89 branch: main author: Brandt Bucher committer: brandtbucher date: 2021-06-25T08:20:43-07:00 summary: bpo-43977: Properly update the tp_flags of existing subclasses when their parents are registered (GH-26864) files: A Misc/NEWS.d/next/Library/2021-06-22-16-45-48.bpo-43977.bamAGF.rst M Doc/library/dis.rst M Lib/test/test_patma.py M Modules/_abc.c diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index 65fbb00bd6597..645e94a669fd1 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -772,17 +772,20 @@ iterations of the loop. .. opcode:: MATCH_MAPPING - If TOS is an instance of :class:`collections.abc.Mapping`, push ``True`` onto - the stack. Otherwise, push ``False``. + If TOS is an instance of :class:`collections.abc.Mapping` (or, more technically: if + it has the :const:`Py_TPFLAGS_MAPPING` flag set in its + :c:member:`~PyTypeObject.tp_flags`), push ``True`` onto the stack. Otherwise, push + ``False``. .. versionadded:: 3.10 .. opcode:: MATCH_SEQUENCE - If TOS is an instance of :class:`collections.abc.Sequence` and is *not* an - instance of :class:`str`/:class:`bytes`/:class:`bytearray`, push ``True`` - onto the stack. Otherwise, push ``False``. + If TOS is an instance of :class:`collections.abc.Sequence` and is *not* an instance + of :class:`str`/:class:`bytes`/:class:`bytearray` (or, more technically: if it has + the :const:`Py_TPFLAGS_SEQUENCE` flag set in its :c:member:`~PyTypeObject.tp_flags`), + push ``True`` onto the stack. Otherwise, push ``False``. .. versionadded:: 3.10 diff --git a/Lib/test/test_patma.py b/Lib/test/test_patma.py index 91b1f7e2aa4c7..a8889cae1091f 100644 --- a/Lib/test/test_patma.py +++ b/Lib/test/test_patma.py @@ -24,7 +24,43 @@ def test_refleaks(self): class TestInheritance(unittest.TestCase): - def test_multiple_inheritance(self): + @staticmethod + def check_sequence_then_mapping(x): + match x: + case [*_]: + return "seq" + case {}: + return "map" + + @staticmethod + def check_mapping_then_sequence(x): + match x: + case {}: + return "map" + case [*_]: + return "seq" + + def test_multiple_inheritance_mapping(self): + class C: + pass + class M1(collections.UserDict, collections.abc.Sequence): + pass + class M2(C, collections.UserDict, collections.abc.Sequence): + pass + class M3(collections.UserDict, C, list): + pass + class M4(dict, collections.abc.Sequence, C): + pass + self.assertEqual(self.check_sequence_then_mapping(M1()), "map") + self.assertEqual(self.check_sequence_then_mapping(M2()), "map") + self.assertEqual(self.check_sequence_then_mapping(M3()), "map") + self.assertEqual(self.check_sequence_then_mapping(M4()), "map") + self.assertEqual(self.check_mapping_then_sequence(M1()), "map") + self.assertEqual(self.check_mapping_then_sequence(M2()), "map") + self.assertEqual(self.check_mapping_then_sequence(M3()), "map") + self.assertEqual(self.check_mapping_then_sequence(M4()), "map") + + def test_multiple_inheritance_sequence(self): class C: pass class S1(collections.UserList, collections.abc.Mapping): @@ -35,32 +71,60 @@ class S3(list, C, collections.abc.Mapping): pass class S4(collections.UserList, dict, C): pass - class M1(collections.UserDict, collections.abc.Sequence): + self.assertEqual(self.check_sequence_then_mapping(S1()), "seq") + self.assertEqual(self.check_sequence_then_mapping(S2()), "seq") + self.assertEqual(self.check_sequence_then_mapping(S3()), "seq") + self.assertEqual(self.check_sequence_then_mapping(S4()), "seq") + self.assertEqual(self.check_mapping_then_sequence(S1()), "seq") + self.assertEqual(self.check_mapping_then_sequence(S2()), "seq") + self.assertEqual(self.check_mapping_then_sequence(S3()), "seq") + self.assertEqual(self.check_mapping_then_sequence(S4()), "seq") + + def test_late_registration_mapping(self): + class Parent: pass - class M2(C, collections.UserDict, collections.abc.Sequence): + class ChildPre(Parent): pass - class M3(collections.UserDict, C, list): + class GrandchildPre(ChildPre): pass - class M4(dict, collections.abc.Sequence, C): + collections.abc.Mapping.register(Parent) + class ChildPost(Parent): pass - def f(x): - match x: - case []: - return "seq" - case {}: - return "map" - def g(x): - match x: - case {}: - return "map" - case []: - return "seq" - for Seq in (S1, S2, S3, S4): - self.assertEqual(f(Seq()), "seq") - self.assertEqual(g(Seq()), "seq") - for Map in (M1, M2, M3, M4): - self.assertEqual(f(Map()), "map") - self.assertEqual(g(Map()), "map") + class GrandchildPost(ChildPost): + pass + self.assertEqual(self.check_sequence_then_mapping(Parent()), "map") + self.assertEqual(self.check_sequence_then_mapping(ChildPre()), "map") + self.assertEqual(self.check_sequence_then_mapping(GrandchildPre()), "map") + self.assertEqual(self.check_sequence_then_mapping(ChildPost()), "map") + self.assertEqual(self.check_sequence_then_mapping(GrandchildPost()), "map") + self.assertEqual(self.check_mapping_then_sequence(Parent()), "map") + self.assertEqual(self.check_mapping_then_sequence(ChildPre()), "map") + self.assertEqual(self.check_mapping_then_sequence(GrandchildPre()), "map") + self.assertEqual(self.check_mapping_then_sequence(ChildPost()), "map") + self.assertEqual(self.check_mapping_then_sequence(GrandchildPost()), "map") + + def test_late_registration_sequence(self): + class Parent: + pass + class ChildPre(Parent): + pass + class GrandchildPre(ChildPre): + pass + collections.abc.Sequence.register(Parent) + class ChildPost(Parent): + pass + class GrandchildPost(ChildPost): + pass + self.assertEqual(self.check_sequence_then_mapping(Parent()), "seq") + self.assertEqual(self.check_sequence_then_mapping(ChildPre()), "seq") + self.assertEqual(self.check_sequence_then_mapping(GrandchildPre()), "seq") + self.assertEqual(self.check_sequence_then_mapping(ChildPost()), "seq") + self.assertEqual(self.check_sequence_then_mapping(GrandchildPost()), "seq") + self.assertEqual(self.check_mapping_then_sequence(Parent()), "seq") + self.assertEqual(self.check_mapping_then_sequence(ChildPre()), "seq") + self.assertEqual(self.check_mapping_then_sequence(GrandchildPre()), "seq") + self.assertEqual(self.check_mapping_then_sequence(ChildPost()), "seq") + self.assertEqual(self.check_mapping_then_sequence(GrandchildPost()), "seq") class TestPatma(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Library/2021-06-22-16-45-48.bpo-43977.bamAGF.rst b/Misc/NEWS.d/next/Library/2021-06-22-16-45-48.bpo-43977.bamAGF.rst new file mode 100644 index 0000000000000..5f8cb7b7ea729 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-22-16-45-48.bpo-43977.bamAGF.rst @@ -0,0 +1,3 @@ +Set the proper :const:`Py_TPFLAGS_MAPPING` and :const:`Py_TPFLAGS_SEQUENCE` +flags for subclasses created before a parent has been registered as a +:class:`collections.abc.Mapping` or :class:`collections.abc.Sequence`. diff --git a/Modules/_abc.c b/Modules/_abc.c index 7720d4051fe9e..8aa68359039e7 100644 --- a/Modules/_abc.c +++ b/Modules/_abc.c @@ -481,6 +481,32 @@ _abc__abc_init(PyObject *module, PyObject *self) Py_RETURN_NONE; } +static void +set_collection_flag_recursive(PyTypeObject *child, unsigned long flag) +{ + assert(flag == Py_TPFLAGS_MAPPING || flag == Py_TPFLAGS_SEQUENCE); + if (PyType_HasFeature(child, Py_TPFLAGS_IMMUTABLETYPE) || + (child->tp_flags & COLLECTION_FLAGS) == flag) + { + return; + } + child->tp_flags &= ~COLLECTION_FLAGS; + child->tp_flags |= flag; + PyObject *grandchildren = child->tp_subclasses; + if (grandchildren == NULL) { + return; + } + assert(PyDict_CheckExact(grandchildren)); + Py_ssize_t i = 0; + while (PyDict_Next(grandchildren, &i, NULL, &grandchildren)) { + assert(PyWeakref_CheckRef(grandchildren)); + PyObject *grandchild = PyWeakref_GET_OBJECT(grandchildren); + if (PyType_Check(grandchild)) { + set_collection_flag_recursive((PyTypeObject *)grandchild, flag); + } + } +} + /*[clinic input] _abc._abc_register @@ -532,12 +558,11 @@ _abc__abc_register_impl(PyObject *module, PyObject *self, PyObject *subclass) get_abc_state(module)->abc_invalidation_counter++; /* Set Py_TPFLAGS_SEQUENCE or Py_TPFLAGS_MAPPING flag */ - if (PyType_Check(self) && - !PyType_HasFeature((PyTypeObject *)subclass, Py_TPFLAGS_IMMUTABLETYPE) && - ((PyTypeObject *)self)->tp_flags & COLLECTION_FLAGS) - { - ((PyTypeObject *)subclass)->tp_flags &= ~COLLECTION_FLAGS; - ((PyTypeObject *)subclass)->tp_flags |= (((PyTypeObject *)self)->tp_flags & COLLECTION_FLAGS); + if (PyType_Check(self)) { + unsigned long collection_flag = ((PyTypeObject *)self)->tp_flags & COLLECTION_FLAGS; + if (collection_flag) { + set_collection_flag_recursive((PyTypeObject *)subclass, collection_flag); + } } Py_INCREF(subclass); return subclass; From webhook-mailer at python.org Fri Jun 25 11:46:32 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 25 Jun 2021 15:46:32 -0000 Subject: [Python-checkins] bpo-43977: Properly update the tp_flags of existing subclasses when their parents are registered (GH-26864) Message-ID: https://github.com/python/cpython/commit/88970125e7a4917966f711dc7e93cf170977034f commit: 88970125e7a4917966f711dc7e93cf170977034f branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-25T08:46:23-07:00 summary: bpo-43977: Properly update the tp_flags of existing subclasses when their parents are registered (GH-26864) (cherry picked from commit ca2009d72a52a98bf43aafa9ad270a4fcfabfc89) Co-authored-by: Brandt Bucher files: A Misc/NEWS.d/next/Library/2021-06-22-16-45-48.bpo-43977.bamAGF.rst M Doc/library/dis.rst M Lib/test/test_patma.py M Modules/_abc.c diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index 0491a9d4a072b..e7e67daae5254 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -770,17 +770,20 @@ iterations of the loop. .. opcode:: MATCH_MAPPING - If TOS is an instance of :class:`collections.abc.Mapping`, push ``True`` onto - the stack. Otherwise, push ``False``. + If TOS is an instance of :class:`collections.abc.Mapping` (or, more technically: if + it has the :const:`Py_TPFLAGS_MAPPING` flag set in its + :c:member:`~PyTypeObject.tp_flags`), push ``True`` onto the stack. Otherwise, push + ``False``. .. versionadded:: 3.10 .. opcode:: MATCH_SEQUENCE - If TOS is an instance of :class:`collections.abc.Sequence` and is *not* an - instance of :class:`str`/:class:`bytes`/:class:`bytearray`, push ``True`` - onto the stack. Otherwise, push ``False``. + If TOS is an instance of :class:`collections.abc.Sequence` and is *not* an instance + of :class:`str`/:class:`bytes`/:class:`bytearray` (or, more technically: if it has + the :const:`Py_TPFLAGS_SEQUENCE` flag set in its :c:member:`~PyTypeObject.tp_flags`), + push ``True`` onto the stack. Otherwise, push ``False``. .. versionadded:: 3.10 diff --git a/Lib/test/test_patma.py b/Lib/test/test_patma.py index 91b1f7e2aa4c7..a8889cae1091f 100644 --- a/Lib/test/test_patma.py +++ b/Lib/test/test_patma.py @@ -24,7 +24,43 @@ def test_refleaks(self): class TestInheritance(unittest.TestCase): - def test_multiple_inheritance(self): + @staticmethod + def check_sequence_then_mapping(x): + match x: + case [*_]: + return "seq" + case {}: + return "map" + + @staticmethod + def check_mapping_then_sequence(x): + match x: + case {}: + return "map" + case [*_]: + return "seq" + + def test_multiple_inheritance_mapping(self): + class C: + pass + class M1(collections.UserDict, collections.abc.Sequence): + pass + class M2(C, collections.UserDict, collections.abc.Sequence): + pass + class M3(collections.UserDict, C, list): + pass + class M4(dict, collections.abc.Sequence, C): + pass + self.assertEqual(self.check_sequence_then_mapping(M1()), "map") + self.assertEqual(self.check_sequence_then_mapping(M2()), "map") + self.assertEqual(self.check_sequence_then_mapping(M3()), "map") + self.assertEqual(self.check_sequence_then_mapping(M4()), "map") + self.assertEqual(self.check_mapping_then_sequence(M1()), "map") + self.assertEqual(self.check_mapping_then_sequence(M2()), "map") + self.assertEqual(self.check_mapping_then_sequence(M3()), "map") + self.assertEqual(self.check_mapping_then_sequence(M4()), "map") + + def test_multiple_inheritance_sequence(self): class C: pass class S1(collections.UserList, collections.abc.Mapping): @@ -35,32 +71,60 @@ class S3(list, C, collections.abc.Mapping): pass class S4(collections.UserList, dict, C): pass - class M1(collections.UserDict, collections.abc.Sequence): + self.assertEqual(self.check_sequence_then_mapping(S1()), "seq") + self.assertEqual(self.check_sequence_then_mapping(S2()), "seq") + self.assertEqual(self.check_sequence_then_mapping(S3()), "seq") + self.assertEqual(self.check_sequence_then_mapping(S4()), "seq") + self.assertEqual(self.check_mapping_then_sequence(S1()), "seq") + self.assertEqual(self.check_mapping_then_sequence(S2()), "seq") + self.assertEqual(self.check_mapping_then_sequence(S3()), "seq") + self.assertEqual(self.check_mapping_then_sequence(S4()), "seq") + + def test_late_registration_mapping(self): + class Parent: pass - class M2(C, collections.UserDict, collections.abc.Sequence): + class ChildPre(Parent): pass - class M3(collections.UserDict, C, list): + class GrandchildPre(ChildPre): pass - class M4(dict, collections.abc.Sequence, C): + collections.abc.Mapping.register(Parent) + class ChildPost(Parent): pass - def f(x): - match x: - case []: - return "seq" - case {}: - return "map" - def g(x): - match x: - case {}: - return "map" - case []: - return "seq" - for Seq in (S1, S2, S3, S4): - self.assertEqual(f(Seq()), "seq") - self.assertEqual(g(Seq()), "seq") - for Map in (M1, M2, M3, M4): - self.assertEqual(f(Map()), "map") - self.assertEqual(g(Map()), "map") + class GrandchildPost(ChildPost): + pass + self.assertEqual(self.check_sequence_then_mapping(Parent()), "map") + self.assertEqual(self.check_sequence_then_mapping(ChildPre()), "map") + self.assertEqual(self.check_sequence_then_mapping(GrandchildPre()), "map") + self.assertEqual(self.check_sequence_then_mapping(ChildPost()), "map") + self.assertEqual(self.check_sequence_then_mapping(GrandchildPost()), "map") + self.assertEqual(self.check_mapping_then_sequence(Parent()), "map") + self.assertEqual(self.check_mapping_then_sequence(ChildPre()), "map") + self.assertEqual(self.check_mapping_then_sequence(GrandchildPre()), "map") + self.assertEqual(self.check_mapping_then_sequence(ChildPost()), "map") + self.assertEqual(self.check_mapping_then_sequence(GrandchildPost()), "map") + + def test_late_registration_sequence(self): + class Parent: + pass + class ChildPre(Parent): + pass + class GrandchildPre(ChildPre): + pass + collections.abc.Sequence.register(Parent) + class ChildPost(Parent): + pass + class GrandchildPost(ChildPost): + pass + self.assertEqual(self.check_sequence_then_mapping(Parent()), "seq") + self.assertEqual(self.check_sequence_then_mapping(ChildPre()), "seq") + self.assertEqual(self.check_sequence_then_mapping(GrandchildPre()), "seq") + self.assertEqual(self.check_sequence_then_mapping(ChildPost()), "seq") + self.assertEqual(self.check_sequence_then_mapping(GrandchildPost()), "seq") + self.assertEqual(self.check_mapping_then_sequence(Parent()), "seq") + self.assertEqual(self.check_mapping_then_sequence(ChildPre()), "seq") + self.assertEqual(self.check_mapping_then_sequence(GrandchildPre()), "seq") + self.assertEqual(self.check_mapping_then_sequence(ChildPost()), "seq") + self.assertEqual(self.check_mapping_then_sequence(GrandchildPost()), "seq") class TestPatma(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Library/2021-06-22-16-45-48.bpo-43977.bamAGF.rst b/Misc/NEWS.d/next/Library/2021-06-22-16-45-48.bpo-43977.bamAGF.rst new file mode 100644 index 0000000000000..5f8cb7b7ea729 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-22-16-45-48.bpo-43977.bamAGF.rst @@ -0,0 +1,3 @@ +Set the proper :const:`Py_TPFLAGS_MAPPING` and :const:`Py_TPFLAGS_SEQUENCE` +flags for subclasses created before a parent has been registered as a +:class:`collections.abc.Mapping` or :class:`collections.abc.Sequence`. diff --git a/Modules/_abc.c b/Modules/_abc.c index 7720d4051fe9e..8aa68359039e7 100644 --- a/Modules/_abc.c +++ b/Modules/_abc.c @@ -481,6 +481,32 @@ _abc__abc_init(PyObject *module, PyObject *self) Py_RETURN_NONE; } +static void +set_collection_flag_recursive(PyTypeObject *child, unsigned long flag) +{ + assert(flag == Py_TPFLAGS_MAPPING || flag == Py_TPFLAGS_SEQUENCE); + if (PyType_HasFeature(child, Py_TPFLAGS_IMMUTABLETYPE) || + (child->tp_flags & COLLECTION_FLAGS) == flag) + { + return; + } + child->tp_flags &= ~COLLECTION_FLAGS; + child->tp_flags |= flag; + PyObject *grandchildren = child->tp_subclasses; + if (grandchildren == NULL) { + return; + } + assert(PyDict_CheckExact(grandchildren)); + Py_ssize_t i = 0; + while (PyDict_Next(grandchildren, &i, NULL, &grandchildren)) { + assert(PyWeakref_CheckRef(grandchildren)); + PyObject *grandchild = PyWeakref_GET_OBJECT(grandchildren); + if (PyType_Check(grandchild)) { + set_collection_flag_recursive((PyTypeObject *)grandchild, flag); + } + } +} + /*[clinic input] _abc._abc_register @@ -532,12 +558,11 @@ _abc__abc_register_impl(PyObject *module, PyObject *self, PyObject *subclass) get_abc_state(module)->abc_invalidation_counter++; /* Set Py_TPFLAGS_SEQUENCE or Py_TPFLAGS_MAPPING flag */ - if (PyType_Check(self) && - !PyType_HasFeature((PyTypeObject *)subclass, Py_TPFLAGS_IMMUTABLETYPE) && - ((PyTypeObject *)self)->tp_flags & COLLECTION_FLAGS) - { - ((PyTypeObject *)subclass)->tp_flags &= ~COLLECTION_FLAGS; - ((PyTypeObject *)subclass)->tp_flags |= (((PyTypeObject *)self)->tp_flags & COLLECTION_FLAGS); + if (PyType_Check(self)) { + unsigned long collection_flag = ((PyTypeObject *)self)->tp_flags & COLLECTION_FLAGS; + if (collection_flag) { + set_collection_flag_recursive((PyTypeObject *)subclass, collection_flag); + } } Py_INCREF(subclass); return subclass; From webhook-mailer at python.org Sat Jun 26 12:22:52 2021 From: webhook-mailer at python.org (pfmoore) Date: Sat, 26 Jun 2021 16:22:52 -0000 Subject: [Python-checkins] Update vendored pip to 21.1.3 (GH-26912) Message-ID: https://github.com/python/cpython/commit/521ba8892ef367c45bf1647b04a726d3f553637c commit: 521ba8892ef367c45bf1647b04a726d3f553637c branch: main author: St?phane Bidoul committer: pfmoore date: 2021-06-26T17:22:48+01:00 summary: Update vendored pip to 21.1.3 (GH-26912) files: A Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl A Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst D Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl M Lib/ensurepip/__init__.py diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 834fc6bdc64b3..28e12537e9fff 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -11,7 +11,7 @@ __all__ = ["version", "bootstrap"] _PACKAGE_NAMES = ('setuptools', 'pip') _SETUPTOOLS_VERSION = "56.0.0" -_PIP_VERSION = "21.1.1" +_PIP_VERSION = "21.1.3" _PROJECTS = [ ("setuptools", _SETUPTOOLS_VERSION, "py3"), ("pip", _PIP_VERSION, "py3"), diff --git a/Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl b/Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl similarity index 92% rename from Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl rename to Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl index 291cc296fa7b4..d96a40a9291fb 100644 Binary files a/Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl and b/Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl differ diff --git a/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst b/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst new file mode 100644 index 0000000000000..a9822881135ea --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst @@ -0,0 +1 @@ +Update vendored pip to 21.1.3 From webhook-mailer at python.org Sat Jun 26 14:00:17 2021 From: webhook-mailer at python.org (pfmoore) Date: Sat, 26 Jun 2021 18:00:17 -0000 Subject: [Python-checkins] [3.9] Update vendored pip to 21.1.3 (GH-26912). (GH-26915) Message-ID: https://github.com/python/cpython/commit/fe272b7a3ace1542ef3f269763b408fbcb07b869 commit: fe272b7a3ace1542ef3f269763b408fbcb07b869 branch: 3.9 author: St?phane Bidoul committer: pfmoore date: 2021-06-26T18:59:57+01:00 summary: [3.9] Update vendored pip to 21.1.3 (GH-26912). (GH-26915) files: A Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl A Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst D Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl M Lib/ensurepip/__init__.py diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 57e576d1a3503..14a39037e0c77 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -15,7 +15,7 @@ _SETUPTOOLS_VERSION = "56.0.0" -_PIP_VERSION = "21.1.1" +_PIP_VERSION = "21.1.3" _PROJECTS = [ ("setuptools", _SETUPTOOLS_VERSION, "py3"), diff --git a/Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl b/Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl similarity index 92% rename from Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl rename to Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl index 291cc296fa7b4..d96a40a9291fb 100644 Binary files a/Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl and b/Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl differ diff --git a/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst b/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst new file mode 100644 index 0000000000000..a9822881135ea --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst @@ -0,0 +1 @@ +Update vendored pip to 21.1.3 From webhook-mailer at python.org Sat Jun 26 15:58:46 2021 From: webhook-mailer at python.org (pfmoore) Date: Sat, 26 Jun 2021 19:58:46 -0000 Subject: [Python-checkins] [3.10] Update vendored pip to 21.1.3 (GH-26912) (gh-26917) Message-ID: https://github.com/python/cpython/commit/6cd369c48f7dbfe4e2c2035011c575b90ad0e7d5 commit: 6cd369c48f7dbfe4e2c2035011c575b90ad0e7d5 branch: 3.10 author: St?phane Bidoul committer: pfmoore date: 2021-06-26T20:58:39+01:00 summary: [3.10] Update vendored pip to 21.1.3 (GH-26912) (gh-26917) files: A Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl A Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst D Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl M Lib/ensurepip/__init__.py diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 4c606b9f2a89b..45c0981abbddb 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -12,7 +12,7 @@ __all__ = ["version", "bootstrap"] _PACKAGE_NAMES = ('setuptools', 'pip') _SETUPTOOLS_VERSION = "56.0.0" -_PIP_VERSION = "21.1.1" +_PIP_VERSION = "21.1.3" _PROJECTS = [ ("setuptools", _SETUPTOOLS_VERSION, "py3"), ("pip", _PIP_VERSION, "py3"), diff --git a/Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl b/Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl similarity index 92% rename from Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl rename to Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl index 291cc296fa7b4..d96a40a9291fb 100644 Binary files a/Lib/ensurepip/_bundled/pip-21.1.1-py3-none-any.whl and b/Lib/ensurepip/_bundled/pip-21.1.3-py3-none-any.whl differ diff --git a/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst b/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst new file mode 100644 index 0000000000000..a9822881135ea --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst @@ -0,0 +1 @@ +Update vendored pip to 21.1.3 From webhook-mailer at python.org Sat Jun 26 19:31:43 2021 From: webhook-mailer at python.org (gvanrossum) Date: Sat, 26 Jun 2021 23:31:43 -0000 Subject: [Python-checkins] bpo-44468: Never skip base classes in `typing.get_type_hints()`, even with invalid `.__module__`. (GH-26862) Message-ID: https://github.com/python/cpython/commit/7569c0fe91dfcf562dee8c29798ecda74d738aa8 commit: 7569c0fe91dfcf562dee8c29798ecda74d738aa8 branch: main author: will-ca committer: gvanrossum date: 2021-06-26T16:31:32-07:00 summary: bpo-44468: Never skip base classes in `typing.get_type_hints()`, even with invalid `.__module__`. (GH-26862) files: A Misc/NEWS.d/next/Library/2021-06-23-19-02-00.bpo-44468.-klV5-.rst M Lib/test/test_typing.py M Lib/typing.py diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index cb198d6b75fd6..e693883094d5c 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -2277,13 +2277,6 @@ def test_no_isinstance(self): with self.assertRaises(TypeError): issubclass(int, ClassVar) - def test_bad_module(self): - # bpo-41515 - class BadModule: - pass - BadModule.__module__ = 'bad' # Something not in sys.modules - self.assertEqual(get_type_hints(BadModule), {}) - class FinalTests(BaseTestCase): def test_basics(self): @@ -3033,6 +3026,24 @@ class Foo: # This previously raised an error under PEP 563. self.assertEqual(get_type_hints(Foo), {'x': str}) + def test_get_type_hints_bad_module(self): + # bpo-41515 + class BadModule: + pass + BadModule.__module__ = 'bad' # Something not in sys.modules + self.assertNotIn('bad', sys.modules) + self.assertEqual(get_type_hints(BadModule), {}) + + def test_get_type_hints_annotated_bad_module(self): + # See https://bugs.python.org/issue44468 + class BadBase: + foo: tuple + class BadType(BadBase): + bar: list + BadType.__module__ = BadBase.__module__ = 'bad' + self.assertNotIn('bad', sys.modules) + self.assertEqual(get_type_hints(BadType), {'foo': tuple, 'bar': list}) + class GetUtilitiesTestCase(TestCase): def test_get_origin(self): diff --git a/Lib/typing.py b/Lib/typing.py index 00a0df591cbfc..2287f0521a364 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -1701,10 +1701,7 @@ def get_type_hints(obj, globalns=None, localns=None, include_extras=False): hints = {} for base in reversed(obj.__mro__): if globalns is None: - try: - base_globals = sys.modules[base.__module__].__dict__ - except KeyError: - continue + base_globals = getattr(sys.modules.get(base.__module__, None), '__dict__', {}) else: base_globals = globalns ann = base.__dict__.get('__annotations__', {}) diff --git a/Misc/NEWS.d/next/Library/2021-06-23-19-02-00.bpo-44468.-klV5-.rst b/Misc/NEWS.d/next/Library/2021-06-23-19-02-00.bpo-44468.-klV5-.rst new file mode 100644 index 0000000000000..78251c7d55068 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-23-19-02-00.bpo-44468.-klV5-.rst @@ -0,0 +1,2 @@ +:func:`typing.get_type_hints` now finds annotations in classes and base classes +with unexpected ``__module__``. Previously, it skipped those MRO elements. From webhook-mailer at python.org Sat Jun 26 19:52:35 2021 From: webhook-mailer at python.org (miss-islington) Date: Sat, 26 Jun 2021 23:52:35 -0000 Subject: [Python-checkins] [3.10] bpo-44468: Never skip base classes in `typing.get_type_hints()`, even with invalid `.__module__`. (GH-26862) (GH-26920) Message-ID: https://github.com/python/cpython/commit/3df23b5199a4bb237a595cadca6c49d34ab2a56c commit: 3df23b5199a4bb237a595cadca6c49d34ab2a56c branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-26T16:52:28-07:00 summary: [3.10] bpo-44468: Never skip base classes in `typing.get_type_hints()`, even with invalid `.__module__`. (GH-26862) (GH-26920) (cherry picked from commit 7569c0fe91dfcf562dee8c29798ecda74d738aa8) Co-authored-by: will-ca Automerge-Triggered-By: GH:gvanrossum files: A Misc/NEWS.d/next/Library/2021-06-23-19-02-00.bpo-44468.-klV5-.rst M Lib/test/test_typing.py M Lib/typing.py diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 79c5c3a910407..07f809ca301e8 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -2276,13 +2276,6 @@ def test_no_isinstance(self): with self.assertRaises(TypeError): issubclass(int, ClassVar) - def test_bad_module(self): - # bpo-41515 - class BadModule: - pass - BadModule.__module__ = 'bad' # Something not in sys.modules - self.assertEqual(get_type_hints(BadModule), {}) - class FinalTests(BaseTestCase): def test_basics(self): @@ -3032,6 +3025,24 @@ class Foo: # This previously raised an error under PEP 563. self.assertEqual(get_type_hints(Foo), {'x': str}) + def test_get_type_hints_bad_module(self): + # bpo-41515 + class BadModule: + pass + BadModule.__module__ = 'bad' # Something not in sys.modules + self.assertNotIn('bad', sys.modules) + self.assertEqual(get_type_hints(BadModule), {}) + + def test_get_type_hints_annotated_bad_module(self): + # See https://bugs.python.org/issue44468 + class BadBase: + foo: tuple + class BadType(BadBase): + bar: list + BadType.__module__ = BadBase.__module__ = 'bad' + self.assertNotIn('bad', sys.modules) + self.assertEqual(get_type_hints(BadType), {'foo': tuple, 'bar': list}) + class GetUtilitiesTestCase(TestCase): def test_get_origin(self): diff --git a/Lib/typing.py b/Lib/typing.py index 639feeef99e75..9540021e8c0a6 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -1700,10 +1700,7 @@ def get_type_hints(obj, globalns=None, localns=None, include_extras=False): hints = {} for base in reversed(obj.__mro__): if globalns is None: - try: - base_globals = sys.modules[base.__module__].__dict__ - except KeyError: - continue + base_globals = getattr(sys.modules.get(base.__module__, None), '__dict__', {}) else: base_globals = globalns ann = base.__dict__.get('__annotations__', {}) diff --git a/Misc/NEWS.d/next/Library/2021-06-23-19-02-00.bpo-44468.-klV5-.rst b/Misc/NEWS.d/next/Library/2021-06-23-19-02-00.bpo-44468.-klV5-.rst new file mode 100644 index 0000000000000..78251c7d55068 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-23-19-02-00.bpo-44468.-klV5-.rst @@ -0,0 +1,2 @@ +:func:`typing.get_type_hints` now finds annotations in classes and base classes +with unexpected ``__module__``. Previously, it skipped those MRO elements. From webhook-mailer at python.org Sun Jun 27 04:02:13 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 27 Jun 2021 08:02:13 -0000 Subject: [Python-checkins] bpo-44404: tkinter `after` support callable classes (GH-26812) Message-ID: https://github.com/python/cpython/commit/e1f3bd2bb50a76ba15a2f8d561e2c9968ae3a1b2 commit: e1f3bd2bb50a76ba15a2f8d561e2c9968ae3a1b2 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-27T01:02:02-07:00 summary: bpo-44404: tkinter `after` support callable classes (GH-26812) (cherry picked from commit e9c8f784fa13ea3a51df3b72a498a3896ec9e768) Co-authored-by: E-Paine <63801254+E-Paine at users.noreply.github.com> files: A Misc/NEWS.d/next/Library/2021-06-20-19-01-11.bpo-44404.McfrYB.rst M Lib/tkinter/__init__.py M Lib/tkinter/test/test_tkinter/test_misc.py diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index 369004c9d1b3d..2513c972bc77f 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -841,7 +841,11 @@ def callit(): self.deletecommand(name) except TclError: pass - callit.__name__ = func.__name__ + try: + callit.__name__ = func.__name__ + except AttributeError: + # Required for callable classes (bpo-44404) + callit.__name__ = type(func).__name__ name = self._register(callit) return self.tk.call('after', ms, name) diff --git a/Lib/tkinter/test/test_tkinter/test_misc.py b/Lib/tkinter/test/test_tkinter/test_misc.py index d4b7cbd867bc0..ab8f64790dfc0 100644 --- a/Lib/tkinter/test/test_tkinter/test_misc.py +++ b/Lib/tkinter/test/test_tkinter/test_misc.py @@ -1,3 +1,4 @@ +import functools import unittest import tkinter import enum @@ -98,6 +99,12 @@ def callback(start=0, step=1): with self.assertRaises(tkinter.TclError): root.tk.call(script) + # Call with a callable class + count = 0 + timer1 = root.after(0, functools.partial(callback, 42, 11)) + root.update() # Process all pending events. + self.assertEqual(count, 53) + def test_after_idle(self): root = self.root diff --git a/Misc/NEWS.d/next/Library/2021-06-20-19-01-11.bpo-44404.McfrYB.rst b/Misc/NEWS.d/next/Library/2021-06-20-19-01-11.bpo-44404.McfrYB.rst new file mode 100644 index 0000000000000..ff6ca1bfa7242 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-20-19-01-11.bpo-44404.McfrYB.rst @@ -0,0 +1 @@ +:mod:`tkinter`'s ``after()`` method now supports callables without the ``__name__`` attribute. From webhook-mailer at python.org Sun Jun 27 07:28:50 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sun, 27 Jun 2021 11:28:50 -0000 Subject: [Python-checkins] [3.9] bpo-44482: Fix very unlikely resource leak in glob in non-CPython implementations (GH-26843). (GH-26916) Message-ID: https://github.com/python/cpython/commit/4861fdaf25f246eb9ee4e8161c15dad26efe895d commit: 4861fdaf25f246eb9ee4e8161c15dad26efe895d branch: 3.9 author: Serhiy Storchaka committer: serhiy-storchaka date: 2021-06-27T14:28:24+03:00 summary: [3.9] bpo-44482: Fix very unlikely resource leak in glob in non-CPython implementations (GH-26843). (GH-26916) (cherry picked from commit 5c7940257e1f611e7284fd504887bd29a63d0a94) files: A Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst M Lib/glob.py diff --git a/Lib/glob.py b/Lib/glob.py index 0dd2f8be66109..1237061130951 100644 --- a/Lib/glob.py +++ b/Lib/glob.py @@ -1,5 +1,6 @@ """Filename globbing utility.""" +import contextlib import os import re import fnmatch @@ -79,7 +80,7 @@ def _iglob(pathname, recursive, dironly): # takes a literal basename (so it only has to check for its existence). def _glob1(dirname, pattern, dironly): - names = list(_iterdir(dirname, dironly)) + names = _listdir(dirname, dironly) if not _ishidden(pattern): names = (x for x in names if not _ishidden(x)) return fnmatch.filter(names, pattern) @@ -130,9 +131,13 @@ def _iterdir(dirname, dironly): except OSError: return +def _listdir(dirname, dironly): + with contextlib.closing(_iterdir(dirname, dironly)) as it: + return list(it) + # Recursively yields relative pathnames inside a literal directory. def _rlistdir(dirname, dironly): - names = list(_iterdir(dirname, dironly)) + names = _listdir(dirname, dironly) for x in names: if not _ishidden(x): yield x diff --git a/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst b/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst new file mode 100644 index 0000000000000..d05fe908e3eba --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst @@ -0,0 +1,2 @@ +Fix very unlikely resource leak in :mod:`glob` in alternate Python +implementations. From webhook-mailer at python.org Sun Jun 27 08:05:16 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sun, 27 Jun 2021 12:05:16 -0000 Subject: [Python-checkins] bpo-44110: Improve string's __getitem__ error message (GH-26042) Message-ID: https://github.com/python/cpython/commit/ed1076428cca3c8dc7d075c16a575aa390e25fb8 commit: ed1076428cca3c8dc7d075c16a575aa390e25fb8 branch: main author: Miguel Brito <5544985+miguendes at users.noreply.github.com> committer: serhiy-storchaka date: 2021-06-27T15:04:57+03:00 summary: bpo-44110: Improve string's __getitem__ error message (GH-26042) files: A Misc/NEWS.d/next/Core and Builtins/2021-05-11-21-52-44.bpo-44110.VqbAsB.rst M Lib/test/string_tests.py M Lib/test/test_userstring.py M Objects/unicodeobject.c diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py index 840d7bb7550f7..089701c983a14 100644 --- a/Lib/test/string_tests.py +++ b/Lib/test/string_tests.py @@ -80,12 +80,14 @@ class subtype(self.__class__.type2test): self.assertIsNot(obj, realresult) # check that obj.method(*args) raises exc - def checkraises(self, exc, obj, methodname, *args): + def checkraises(self, exc, obj, methodname, *args, expected_msg=None): obj = self.fixtype(obj) args = self.fixtype(args) with self.assertRaises(exc) as cm: getattr(obj, methodname)(*args) self.assertNotEqual(str(cm.exception), '') + if expected_msg is not None: + self.assertEqual(str(cm.exception), expected_msg) # call obj.method(*args) without any checks def checkcall(self, obj, methodname, *args): @@ -1195,6 +1197,10 @@ def test_subscript(self): self.checkraises(TypeError, 'abc', '__getitem__', 'def') + for idx_type in ('def', object()): + expected_msg = "string indices must be integers, not '{}'".format(type(idx_type).__name__) + self.checkraises(TypeError, 'abc', '__getitem__', idx_type, expected_msg=expected_msg) + def test_slice(self): self.checkequal('abc', 'abc', '__getitem__', slice(0, 1000)) self.checkequal('abc', 'abc', '__getitem__', slice(0, 3)) diff --git a/Lib/test/test_userstring.py b/Lib/test/test_userstring.py index 4d1d8b6b6fe2d..51b4f6041e49b 100644 --- a/Lib/test/test_userstring.py +++ b/Lib/test/test_userstring.py @@ -27,12 +27,14 @@ def checkequal(self, result, object, methodname, *args, **kwargs): realresult ) - def checkraises(self, exc, obj, methodname, *args): + def checkraises(self, exc, obj, methodname, *args, expected_msg=None): obj = self.fixtype(obj) # we don't fix the arguments, because UserString can't cope with it with self.assertRaises(exc) as cm: getattr(obj, methodname)(*args) self.assertNotEqual(str(cm.exception), '') + if expected_msg is not None: + self.assertEqual(str(cm.exception), expected_msg) def checkcall(self, object, methodname, *args): object = self.fixtype(object) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-11-21-52-44.bpo-44110.VqbAsB.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-11-21-52-44.bpo-44110.VqbAsB.rst new file mode 100644 index 0000000000000..3b82e425ab4a7 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-05-11-21-52-44.bpo-44110.VqbAsB.rst @@ -0,0 +1 @@ +Improve :func:`str.__getitem__` error message diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index c316cafdc7ffc..3e6b70bf4b6f5 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -14279,7 +14279,8 @@ unicode_subscript(PyObject* self, PyObject* item) assert(_PyUnicode_CheckConsistency(result, 1)); return result; } else { - PyErr_SetString(PyExc_TypeError, "string indices must be integers"); + PyErr_Format(PyExc_TypeError, "string indices must be integers, not '%.200s'", + Py_TYPE(item)->tp_name); return NULL; } } From webhook-mailer at python.org Sun Jun 27 08:19:23 2021 From: webhook-mailer at python.org (markshannon) Date: Sun, 27 Jun 2021 12:19:23 -0000 Subject: [Python-checkins] Add missing arg to DICT_MERGE opcode (GH-26859) Message-ID: https://github.com/python/cpython/commit/6dd69f45f57e5a79828981039cfa141e0507709f commit: 6dd69f45f57e5a79828981039cfa141e0507709f branch: main author: andrei kulakov committer: markshannon date: 2021-06-27T13:19:14+01:00 summary: Add missing arg to DICT_MERGE opcode (GH-26859) files: M Doc/library/dis.rst diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index 645e94a669fd1..21747069b3a19 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -936,7 +936,7 @@ All of the following opcodes use their arguments. .. versionadded:: 3.9 -.. opcode:: DICT_MERGE +.. opcode:: DICT_MERGE (i) Like :opcode:`DICT_UPDATE` but raises an exception for duplicate keys. From webhook-mailer at python.org Sun Jun 27 09:49:12 2021 From: webhook-mailer at python.org (JulienPalard) Date: Sun, 27 Jun 2021 13:49:12 -0000 Subject: [Python-checkins] FIX rst issue in NEWS.d (GH-26923) Message-ID: https://github.com/python/cpython/commit/9eea201b7c39a69afa2a7978dde40266104154f5 commit: 9eea201b7c39a69afa2a7978dde40266104154f5 branch: main author: Julien Palard committer: JulienPalard date: 2021-06-27T15:48:51+02:00 summary: FIX rst issue in NEWS.d (GH-26923) files: M Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst diff --git a/Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst b/Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst index aa25052df8227..ebe54484187ab 100644 --- a/Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst +++ b/Misc/NEWS.d/next/Library/2021-06-23-01-33-01.bpo-44491.tiOlr5.rst @@ -1,3 +1,3 @@ Allow clearing the :mod:`sqlite3` authorizer callback by passing -:const:``None`` to :meth:`~sqlite3.Connection.set_authorizer`. Patch by +:const:`None` to :meth:`~sqlite3.Connection.set_authorizer`. Patch by Erlend E. Aasland. From webhook-mailer at python.org Sun Jun 27 10:58:41 2021 From: webhook-mailer at python.org (isidentical) Date: Sun, 27 Jun 2021 14:58:41 -0000 Subject: [Python-checkins] bpo-40528: fix is_simple(sum)s behavior for attributes (GH-26918) Message-ID: https://github.com/python/cpython/commit/107a2c59c91b3911bdd6dfdb83271c588c506a5a commit: 107a2c59c91b3911bdd6dfdb83271c588c506a5a branch: main author: Batuhan Taskaya committer: isidentical date: 2021-06-27T17:58:32+03:00 summary: bpo-40528: fix is_simple(sum)s behavior for attributes (GH-26918) This is something I noticed while (now discontinued) experimenting with the idea of annotating operators with location information. Unfortunately without this addition, adding any `attributes` to stuff like `unaryop` doesn't change anything since the code assumes they are singletons and caches all instances. This patch fixes this assumption with including the attributes as well as constructor fields. files: M Parser/asdl_c.py diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index 21e50442b8bb7..5f0b89bba4489 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -71,16 +71,20 @@ def reflow_lines(s, depth): def reflow_c_string(s, depth): return '"%s"' % s.replace('\n', '\\n"\n%s"' % (' ' * depth * TABSIZE)) -def is_simple(sum): +def is_simple(sum_type): """Return True if a sum is a simple. - A sum is simple if its types have no fields, e.g. + A sum is simple if it's types have no fields and itself + doesn't have any attributes. Instances of these types are + cached at C level, and they act like singletons when propagating + parser generated nodes into Python level, e.g. unaryop = Invert | Not | UAdd | USub """ - for t in sum.types: - if t.fields: - return False - return True + + return not ( + sum_type.attributes or + any(constructor.fields for constructor in sum_type.types) + ) def asdl_of(name, obj): if isinstance(obj, asdl.Product) or isinstance(obj, asdl.Constructor): From webhook-mailer at python.org Sun Jun 27 14:02:50 2021 From: webhook-mailer at python.org (taleinat) Date: Sun, 27 Jun 2021 18:02:50 -0000 Subject: [Python-checkins] Clarify the order of a stacked `abstractmethod` (GH-26892) Message-ID: https://github.com/python/cpython/commit/74d60eab558bffdf5ca8ea2f5305e19b36bdb9a8 commit: 74d60eab558bffdf5ca8ea2f5305e19b36bdb9a8 branch: main author: Ram Rachum committer: taleinat <532281+taleinat at users.noreply.github.com> date: 2021-06-27T21:02:23+03:00 summary: Clarify the order of a stacked `abstractmethod` (GH-26892) Co-authored-by: Tal Einat <532281+taleinat at users.noreply.github.com> files: M Lib/abc.py diff --git a/Lib/abc.py b/Lib/abc.py index 276ef9a2cd485..3c552cebb4226 100644 --- a/Lib/abc.py +++ b/Lib/abc.py @@ -28,7 +28,14 @@ def my_abstract_method(self, ...): class abstractclassmethod(classmethod): """A decorator indicating abstract classmethods. - Deprecated, use 'classmethod' with 'abstractmethod' instead. + Deprecated, use 'classmethod' with 'abstractmethod' instead: + + class C(ABC): + @classmethod + @abstractmethod + def my_abstract_classmethod(cls, ...): + ... + """ __isabstractmethod__ = True @@ -41,7 +48,14 @@ def __init__(self, callable): class abstractstaticmethod(staticmethod): """A decorator indicating abstract staticmethods. - Deprecated, use 'staticmethod' with 'abstractmethod' instead. + Deprecated, use 'staticmethod' with 'abstractmethod' instead: + + class C(ABC): + @staticmethod + @abstractmethod + def my_abstract_staticmethod(...): + ... + """ __isabstractmethod__ = True @@ -54,7 +68,14 @@ def __init__(self, callable): class abstractproperty(property): """A decorator indicating abstract properties. - Deprecated, use 'property' with 'abstractmethod' instead. + Deprecated, use 'property' with 'abstractmethod' instead: + + class C(ABC): + @property + @abstractmethod + def my_abstract_property(self): + ... + """ __isabstractmethod__ = True From webhook-mailer at python.org Sun Jun 27 14:51:09 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 27 Jun 2021 18:51:09 -0000 Subject: [Python-checkins] Clarify the order of a stacked `abstractmethod` (GH-26892) Message-ID: https://github.com/python/cpython/commit/b2a5dcd8a0fe1e7bf4fd09ea7f08fc3ea4f71bc5 commit: b2a5dcd8a0fe1e7bf4fd09ea7f08fc3ea4f71bc5 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-27T11:50:45-07:00 summary: Clarify the order of a stacked `abstractmethod` (GH-26892) Co-authored-by: Tal Einat <532281+taleinat at users.noreply.github.com> (cherry picked from commit 74d60eab558bffdf5ca8ea2f5305e19b36bdb9a8) Co-authored-by: Ram Rachum files: M Lib/abc.py diff --git a/Lib/abc.py b/Lib/abc.py index 431b64040a66e..9de128e236219 100644 --- a/Lib/abc.py +++ b/Lib/abc.py @@ -28,7 +28,14 @@ def my_abstract_method(self, ...): class abstractclassmethod(classmethod): """A decorator indicating abstract classmethods. - Deprecated, use 'classmethod' with 'abstractmethod' instead. + Deprecated, use 'classmethod' with 'abstractmethod' instead: + + class C(ABC): + @classmethod + @abstractmethod + def my_abstract_classmethod(cls, ...): + ... + """ __isabstractmethod__ = True @@ -41,7 +48,14 @@ def __init__(self, callable): class abstractstaticmethod(staticmethod): """A decorator indicating abstract staticmethods. - Deprecated, use 'staticmethod' with 'abstractmethod' instead. + Deprecated, use 'staticmethod' with 'abstractmethod' instead: + + class C(ABC): + @staticmethod + @abstractmethod + def my_abstract_staticmethod(...): + ... + """ __isabstractmethod__ = True @@ -54,7 +68,14 @@ def __init__(self, callable): class abstractproperty(property): """A decorator indicating abstract properties. - Deprecated, use 'property' with 'abstractmethod' instead. + Deprecated, use 'property' with 'abstractmethod' instead: + + class C(ABC): + @property + @abstractmethod + def my_abstract_property(self): + ... + """ __isabstractmethod__ = True From webhook-mailer at python.org Sun Jun 27 14:51:09 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 27 Jun 2021 18:51:09 -0000 Subject: [Python-checkins] Clarify the order of a stacked `abstractmethod` (GH-26892) Message-ID: https://github.com/python/cpython/commit/c95cdf2dae185b1241c0b1e07635dc632267e37e commit: c95cdf2dae185b1241c0b1e07635dc632267e37e branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-27T11:50:38-07:00 summary: Clarify the order of a stacked `abstractmethod` (GH-26892) Co-authored-by: Tal Einat <532281+taleinat at users.noreply.github.com> (cherry picked from commit 74d60eab558bffdf5ca8ea2f5305e19b36bdb9a8) Co-authored-by: Ram Rachum files: M Lib/abc.py diff --git a/Lib/abc.py b/Lib/abc.py index 276ef9a2cd485..3c552cebb4226 100644 --- a/Lib/abc.py +++ b/Lib/abc.py @@ -28,7 +28,14 @@ def my_abstract_method(self, ...): class abstractclassmethod(classmethod): """A decorator indicating abstract classmethods. - Deprecated, use 'classmethod' with 'abstractmethod' instead. + Deprecated, use 'classmethod' with 'abstractmethod' instead: + + class C(ABC): + @classmethod + @abstractmethod + def my_abstract_classmethod(cls, ...): + ... + """ __isabstractmethod__ = True @@ -41,7 +48,14 @@ def __init__(self, callable): class abstractstaticmethod(staticmethod): """A decorator indicating abstract staticmethods. - Deprecated, use 'staticmethod' with 'abstractmethod' instead. + Deprecated, use 'staticmethod' with 'abstractmethod' instead: + + class C(ABC): + @staticmethod + @abstractmethod + def my_abstract_staticmethod(...): + ... + """ __isabstractmethod__ = True @@ -54,7 +68,14 @@ def __init__(self, callable): class abstractproperty(property): """A decorator indicating abstract properties. - Deprecated, use 'property' with 'abstractmethod' instead. + Deprecated, use 'property' with 'abstractmethod' instead: + + class C(ABC): + @property + @abstractmethod + def my_abstract_property(self): + ... + """ __isabstractmethod__ = True From webhook-mailer at python.org Sun Jun 27 15:27:56 2021 From: webhook-mailer at python.org (iritkatriel) Date: Sun, 27 Jun 2021 19:27:56 -0000 Subject: [Python-checkins] bpo-40620: Clarify tutorial controlflow.rst ``range`` examples (GH-26919) Message-ID: https://github.com/python/cpython/commit/2f49c9debc2efe010c757be3bdbd6493f1ebc5f6 commit: 2f49c9debc2efe010c757be3bdbd6493f1ebc5f6 branch: main author: jdevries3133 <58614260+jdevries3133 at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-27T20:27:20+01:00 summary: bpo-40620: Clarify tutorial controlflow.rst ``range`` examples (GH-26919) files: A Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst M Doc/tutorial/controlflow.rst diff --git a/Doc/tutorial/controlflow.rst b/Doc/tutorial/controlflow.rst index ee2c3e5b5853c..494a79568c6a4 100644 --- a/Doc/tutorial/controlflow.rst +++ b/Doc/tutorial/controlflow.rst @@ -110,14 +110,14 @@ The given end point is never part of the generated sequence; ``range(10)`` gener is possible to let the range start at another number, or to specify a different increment (even negative; sometimes this is called the 'step'):: - range(5, 10) - 5, 6, 7, 8, 9 + >>> list(range(5, 10)) + [5, 6, 7, 8, 9] - range(0, 10, 3) - 0, 3, 6, 9 + >>> list(range(0, 10, 3)) + [0, 3, 6, 9] - range(-10, -100, -30) - -10, -40, -70 + >>> list(range(-10, -100, -30)) + [-10, -40, -70] To iterate over the indices of a sequence, you can combine :func:`range` and :func:`len` as follows:: @@ -137,7 +137,7 @@ function, see :ref:`tut-loopidioms`. A strange thing happens if you just print a range:: - >>> print(range(10)) + >>> range(10) range(0, 10) In many ways the object returned by :func:`range` behaves as if it is a list, @@ -155,13 +155,7 @@ that takes an iterable is :func:`sum`:: 6 Later we will see more functions that return iterables and take iterables as -arguments. Lastly, maybe you are curious about how to get a list from a range. -Here is the solution:: - - >>> list(range(4)) - [0, 1, 2, 3] - -In chapter :ref:`tut-structures`, we will discuss in more detail about +arguments. In chapter :ref:`tut-structures`, we will discuss in more detail about :func:`list`. .. _tut-break: diff --git a/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst b/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst new file mode 100644 index 0000000000000..52b451b492640 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst @@ -0,0 +1,2 @@ +Convert examples in tutorial controlflow.rst section 4.3 to be interpreter-demo +style. From webhook-mailer at python.org Sun Jun 27 15:51:45 2021 From: webhook-mailer at python.org (iritkatriel) Date: Sun, 27 Jun 2021 19:51:45 -0000 Subject: [Python-checkins] bpo-40620: Clarify tutorial controlflow.rst ``range`` examples (GH-26919) (GH-26927) Message-ID: https://github.com/python/cpython/commit/aeb63392e74976b4289b38f32f1d6e7ff2e0a712 commit: aeb63392e74976b4289b38f32f1d6e7ff2e0a712 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-27T20:51:16+01:00 summary: bpo-40620: Clarify tutorial controlflow.rst ``range`` examples (GH-26919) (GH-26927) (cherry picked from commit 2f49c9debc2efe010c757be3bdbd6493f1ebc5f6) Co-authored-by: jdevries3133 <58614260+jdevries3133 at users.noreply.github.com> files: A Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst M Doc/tutorial/controlflow.rst diff --git a/Doc/tutorial/controlflow.rst b/Doc/tutorial/controlflow.rst index ee2c3e5b5853c..494a79568c6a4 100644 --- a/Doc/tutorial/controlflow.rst +++ b/Doc/tutorial/controlflow.rst @@ -110,14 +110,14 @@ The given end point is never part of the generated sequence; ``range(10)`` gener is possible to let the range start at another number, or to specify a different increment (even negative; sometimes this is called the 'step'):: - range(5, 10) - 5, 6, 7, 8, 9 + >>> list(range(5, 10)) + [5, 6, 7, 8, 9] - range(0, 10, 3) - 0, 3, 6, 9 + >>> list(range(0, 10, 3)) + [0, 3, 6, 9] - range(-10, -100, -30) - -10, -40, -70 + >>> list(range(-10, -100, -30)) + [-10, -40, -70] To iterate over the indices of a sequence, you can combine :func:`range` and :func:`len` as follows:: @@ -137,7 +137,7 @@ function, see :ref:`tut-loopidioms`. A strange thing happens if you just print a range:: - >>> print(range(10)) + >>> range(10) range(0, 10) In many ways the object returned by :func:`range` behaves as if it is a list, @@ -155,13 +155,7 @@ that takes an iterable is :func:`sum`:: 6 Later we will see more functions that return iterables and take iterables as -arguments. Lastly, maybe you are curious about how to get a list from a range. -Here is the solution:: - - >>> list(range(4)) - [0, 1, 2, 3] - -In chapter :ref:`tut-structures`, we will discuss in more detail about +arguments. In chapter :ref:`tut-structures`, we will discuss in more detail about :func:`list`. .. _tut-break: diff --git a/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst b/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst new file mode 100644 index 0000000000000..52b451b492640 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst @@ -0,0 +1,2 @@ +Convert examples in tutorial controlflow.rst section 4.3 to be interpreter-demo +style. From webhook-mailer at python.org Sun Jun 27 15:52:36 2021 From: webhook-mailer at python.org (iritkatriel) Date: Sun, 27 Jun 2021 19:52:36 -0000 Subject: [Python-checkins] bpo-40620: Clarify tutorial controlflow.rst ``range`` examples (GH-26919) (GH-26928) Message-ID: https://github.com/python/cpython/commit/1acd1e63850d179383fcb638dcefee4c66b3ca4e commit: 1acd1e63850d179383fcb638dcefee4c66b3ca4e branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-27T20:52:32+01:00 summary: bpo-40620: Clarify tutorial controlflow.rst ``range`` examples (GH-26919) (GH-26928) (cherry picked from commit 2f49c9debc2efe010c757be3bdbd6493f1ebc5f6) Co-authored-by: jdevries3133 <58614260+jdevries3133 at users.noreply.github.com> files: A Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst M Doc/tutorial/controlflow.rst diff --git a/Doc/tutorial/controlflow.rst b/Doc/tutorial/controlflow.rst index 44417134a92ad..129ab21cc48ce 100644 --- a/Doc/tutorial/controlflow.rst +++ b/Doc/tutorial/controlflow.rst @@ -104,14 +104,14 @@ The given end point is never part of the generated sequence; ``range(10)`` gener is possible to let the range start at another number, or to specify a different increment (even negative; sometimes this is called the 'step'):: - range(5, 10) - 5, 6, 7, 8, 9 + >>> list(range(5, 10)) + [5, 6, 7, 8, 9] - range(0, 10, 3) - 0, 3, 6, 9 + >>> list(range(0, 10, 3)) + [0, 3, 6, 9] - range(-10, -100, -30) - -10, -40, -70 + >>> list(range(-10, -100, -30)) + [-10, -40, -70] To iterate over the indices of a sequence, you can combine :func:`range` and :func:`len` as follows:: @@ -131,7 +131,7 @@ function, see :ref:`tut-loopidioms`. A strange thing happens if you just print a range:: - >>> print(range(10)) + >>> range(10) range(0, 10) In many ways the object returned by :func:`range` behaves as if it is a list, @@ -149,13 +149,7 @@ that takes an iterable is :func:`sum`:: 6 Later we will see more functions that return iterables and take iterables as -arguments. Lastly, maybe you are curious about how to get a list from a range. -Here is the solution:: - - >>> list(range(4)) - [0, 1, 2, 3] - -In chapter :ref:`tut-structures`, we will discuss in more detail about +arguments. In chapter :ref:`tut-structures`, we will discuss in more detail about :func:`list`. .. _tut-break: diff --git a/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst b/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst new file mode 100644 index 0000000000000..52b451b492640 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst @@ -0,0 +1,2 @@ +Convert examples in tutorial controlflow.rst section 4.3 to be interpreter-demo +style. From webhook-mailer at python.org Sun Jun 27 17:59:31 2021 From: webhook-mailer at python.org (jaraco) Date: Sun, 27 Jun 2021 21:59:31 -0000 Subject: [Python-checkins] bpo-44464: Remove special exclusion for flake8 in the deprecation warnings. (#26807) Message-ID: https://github.com/python/cpython/commit/efe7d08d178a7c09bcca994f2068b019c8633d83 commit: efe7d08d178a7c09bcca994f2068b019c8633d83 branch: main author: Jason R. Coombs committer: jaraco date: 2021-06-27T17:59:18-04:00 summary: bpo-44464: Remove special exclusion for flake8 in the deprecation warnings. (#26807) Sync with importlib_metadata 4.6. files: A Misc/NEWS.d/next/Library/2021-06-19-21-52-27.bpo-44464.U2oa-a.rst M Doc/whatsnew/3.10.rst M Lib/importlib/metadata/__init__.py diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 2a43d2686e3fb..81481327b43e9 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1084,7 +1084,7 @@ and will be incorrect in some rare cases, including some ``_``-s in importlib.metadata ------------------ -Feature parity with ``importlib_metadata`` 4.4 +Feature parity with ``importlib_metadata`` 4.6 (`history `_). :ref:`importlib.metadata entry points ` diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py index d2116cfe6f7d6..f5172eefc1841 100644 --- a/Lib/importlib/metadata/__init__.py +++ b/Lib/importlib/metadata/__init__.py @@ -362,14 +362,6 @@ def _parse_groups(text): ) -def flake8_bypass(func): - # defer inspect import as performance optimization. - import inspect - - is_flake8 = any('flake8' in str(frame.filename) for frame in inspect.stack()[:5]) - return func if not is_flake8 else lambda: None - - class Deprecated: """ Compatibility add-in for mapping to indicate that @@ -405,7 +397,7 @@ def __getitem__(self, name): return super().__getitem__(name) def get(self, name, default=None): - flake8_bypass(self._warn)() + self._warn() return super().get(name, default) def __iter__(self): diff --git a/Misc/NEWS.d/next/Library/2021-06-19-21-52-27.bpo-44464.U2oa-a.rst b/Misc/NEWS.d/next/Library/2021-06-19-21-52-27.bpo-44464.U2oa-a.rst new file mode 100644 index 0000000000000..6b1c10783d569 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-19-21-52-27.bpo-44464.U2oa-a.rst @@ -0,0 +1,2 @@ +Remove exception for flake8 in deprecated importlib.metadata interfaces. +Sync with importlib_metadata 4.6. From webhook-mailer at python.org Sun Jun 27 18:05:31 2021 From: webhook-mailer at python.org (jaraco) Date: Sun, 27 Jun 2021 22:05:31 -0000 Subject: [Python-checkins] [3.9] bpo-37741: make importlib.metadata docs discoverable through a module directive. (GH-25415) (GH-26500) Message-ID: https://github.com/python/cpython/commit/17b916737bd05a11ec24341990c4d8dbfee8f94b commit: 17b916737bd05a11ec24341990c4d8dbfee8f94b branch: 3.9 author: Jason R. Coombs committer: jaraco date: 2021-06-27T18:05:27-04:00 summary: [3.9] bpo-37741: make importlib.metadata docs discoverable through a module directive. (GH-25415) (GH-26500) Automerge-Triggered-By: GH:jaraco. (cherry picked from commit 23acadcc1c75eb74b2459304af70d97a35001b34) Co-authored-by: Jason R. Coombs files: M Doc/library/importlib.metadata.rst diff --git a/Doc/library/importlib.metadata.rst b/Doc/library/importlib.metadata.rst index ff3b7f162f962..9bf34047ddaec 100644 --- a/Doc/library/importlib.metadata.rst +++ b/Doc/library/importlib.metadata.rst @@ -7,6 +7,8 @@ .. module:: importlib.metadata :synopsis: The implementation of the importlib metadata. +**Source code:** :source:`Lib/importlib/metadata.py` + .. versionadded:: 3.8 .. note:: From webhook-mailer at python.org Sun Jun 27 18:19:40 2021 From: webhook-mailer at python.org (jaraco) Date: Sun, 27 Jun 2021 22:19:40 -0000 Subject: [Python-checkins] bpo-44464: Remove special exclusion for flake8 in the deprecation warnings. (GH-26807) (GH-26929) Message-ID: https://github.com/python/cpython/commit/f4b31cdbc043449f3df7d291da67bcb3736be0db commit: f4b31cdbc043449f3df7d291da67bcb3736be0db branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: jaraco date: 2021-06-27T18:19:24-04:00 summary: bpo-44464: Remove special exclusion for flake8 in the deprecation warnings. (GH-26807) (GH-26929) Sync with importlib_metadata 4.6. (cherry picked from commit efe7d08d178a7c09bcca994f2068b019c8633d83) Co-authored-by: Jason R. Coombs Co-authored-by: Jason R. Coombs files: A Misc/NEWS.d/next/Library/2021-06-19-21-52-27.bpo-44464.U2oa-a.rst M Doc/whatsnew/3.10.rst M Lib/importlib/metadata/__init__.py diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 6b6578b4097f3..7ed80fb903efd 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1084,7 +1084,7 @@ and will be incorrect in some rare cases, including some ``_``-s in importlib.metadata ------------------ -Feature parity with ``importlib_metadata`` 4.4 +Feature parity with ``importlib_metadata`` 4.6 (`history `_). :ref:`importlib.metadata entry points ` diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py index d2116cfe6f7d6..f5172eefc1841 100644 --- a/Lib/importlib/metadata/__init__.py +++ b/Lib/importlib/metadata/__init__.py @@ -362,14 +362,6 @@ def _parse_groups(text): ) -def flake8_bypass(func): - # defer inspect import as performance optimization. - import inspect - - is_flake8 = any('flake8' in str(frame.filename) for frame in inspect.stack()[:5]) - return func if not is_flake8 else lambda: None - - class Deprecated: """ Compatibility add-in for mapping to indicate that @@ -405,7 +397,7 @@ def __getitem__(self, name): return super().__getitem__(name) def get(self, name, default=None): - flake8_bypass(self._warn)() + self._warn() return super().get(name, default) def __iter__(self): diff --git a/Misc/NEWS.d/next/Library/2021-06-19-21-52-27.bpo-44464.U2oa-a.rst b/Misc/NEWS.d/next/Library/2021-06-19-21-52-27.bpo-44464.U2oa-a.rst new file mode 100644 index 0000000000000..6b1c10783d569 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-19-21-52-27.bpo-44464.U2oa-a.rst @@ -0,0 +1,2 @@ +Remove exception for flake8 in deprecated importlib.metadata interfaces. +Sync with importlib_metadata 4.6. From webhook-mailer at python.org Mon Jun 28 05:36:21 2021 From: webhook-mailer at python.org (encukou) Date: Mon, 28 Jun 2021 09:36:21 -0000 Subject: [Python-checkins] bpo-40939: Remove documentation for `PyParser_*` & add porting notes (GH-26855) (GH-26898) Message-ID: https://github.com/python/cpython/commit/dc10264eb880ed63fcf42c17057f3f5d879a0a0c commit: dc10264eb880ed63fcf42c17057f3f5d879a0a0c branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: encukou date: 2021-06-28T11:35:52+02:00 summary: bpo-40939: Remove documentation for `PyParser_*` & add porting notes (GH-26855) (GH-26898) I tried to be relatively thorough and give lots of links. One reason is that this wasn't deprecated very long; also it seems people running into this tend to not be familiar with similar APIs. (cherry picked from commit 29987f72650b7cccee4df216c8297e8484a44e6a) Co-authored-by: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> Co-authored-by: Petr Viktorin files: A Misc/NEWS.d/next/C API/2021-06-22-17-00-06.bpo-40939.CGB0I5.rst M Doc/c-api/veryhigh.rst M Doc/data/refcounts.dat M Doc/faq/extending.rst M Doc/whatsnew/3.10.rst diff --git a/Doc/c-api/veryhigh.rst b/Doc/c-api/veryhigh.rst index 0f760eaa7ad578..3354a2b976f343 100644 --- a/Doc/c-api/veryhigh.rst +++ b/Doc/c-api/veryhigh.rst @@ -185,42 +185,6 @@ the same library that the Python runtime is using. :c:func:`PyMem_RawRealloc`, instead of being allocated by :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`. - -.. c:function:: struct _node* PyParser_SimpleParseString(const char *str, int start) - - This is a simplified interface to - :c:func:`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set - to ``NULL`` and *flags* set to ``0``. - - -.. c:function:: struct _node* PyParser_SimpleParseStringFlags( const char *str, int start, int flags) - - This is a simplified interface to - :c:func:`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set - to ``NULL``. - - -.. c:function:: struct _node* PyParser_SimpleParseStringFlagsFilename( const char *str, const char *filename, int start, int flags) - - Parse Python source code from *str* using the start token *start* according to - the *flags* argument. The result can be used to create a code object which can - be evaluated efficiently. This is useful if a code fragment must be evaluated - many times. *filename* is decoded from the :term:`filesystem encoding and - error handler`. - - -.. c:function:: struct _node* PyParser_SimpleParseFile(FILE *fp, const char *filename, int start) - - This is a simplified interface to :c:func:`PyParser_SimpleParseFileFlags` below, - leaving *flags* set to ``0``. - - -.. c:function:: struct _node* PyParser_SimpleParseFileFlags(FILE *fp, const char *filename, int start, int flags) - - Similar to :c:func:`PyParser_SimpleParseStringFlagsFilename`, but the Python - source code is read from *fp* instead of an in-memory string. - - .. c:function:: PyObject* PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals) This is a simplified interface to :c:func:`PyRun_StringFlags` below, leaving diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat index 505f1203dd1bdd..29cd89efc6fbf7 100644 --- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -1791,32 +1791,6 @@ PyObject_TypeCheck:int::: PyObject_TypeCheck:PyObject*:o:0: PyObject_TypeCheck:PyTypeObject*:type:0: -PyParser_SimpleParseFile:struct _node*::: -PyParser_SimpleParseFile:FILE*:fp:: -PyParser_SimpleParseFile:const char*:filename:: -PyParser_SimpleParseFile:int:start:: - -PyParser_SimpleParseFileFlags:struct _node*::: -PyParser_SimpleParseFileFlags:FILE*:fp:: -PyParser_SimpleParseFileFlags:const char*:filename:: -PyParser_SimpleParseFileFlags:int:start:: -PyParser_SimpleParseFileFlags:int:flags:: - -PyParser_SimpleParseString:struct _node*::: -PyParser_SimpleParseString:const char*:str:: -PyParser_SimpleParseString:int:start:: - -PyParser_SimpleParseStringFlags:struct _node*::: -PyParser_SimpleParseStringFlags:const char*:str:: -PyParser_SimpleParseStringFlags:int:start:: -PyParser_SimpleParseStringFlags:int:flags:: - -PyParser_SimpleParseStringFlagsFilename:struct _node*::: -PyParser_SimpleParseStringFlagsFilename:const char*:str:: -PyParser_SimpleParseStringFlagsFilename:const char*:filename:: -PyParser_SimpleParseStringFlagsFilename:int:start:: -PyParser_SimpleParseStringFlagsFilename:int:flags:: - PyRun_AnyFile:int::: PyRun_AnyFile:FILE*:fp:: PyRun_AnyFile:const char*:filename:: diff --git a/Doc/faq/extending.rst b/Doc/faq/extending.rst index aecb56eaa4fd2f..3379e41d9de072 100644 --- a/Doc/faq/extending.rst +++ b/Doc/faq/extending.rst @@ -275,39 +275,8 @@ for more hints. However sometimes you have to run the embedded Python interpreter in the same thread as your rest application and you can't allow the -:c:func:`PyRun_InteractiveLoop` to stop while waiting for user input. The one -solution then is to call :c:func:`PyParser_ParseString` and test for ``e.error`` -equal to ``E_EOF``, which means the input is incomplete. Here's a sample code -fragment, untested, inspired by code from Alex Farber:: - - #define PY_SSIZE_T_CLEAN - #include - #include - #include - #include - #include - #include - - int testcomplete(char *code) - /* code should end in \n */ - /* return -1 for error, 0 for incomplete, 1 for complete */ - { - node *n; - perrdetail e; - - n = PyParser_ParseString(code, &_PyParser_Grammar, - Py_file_input, &e); - if (n == NULL) { - if (e.error == E_EOF) - return 0; - return -1; - } - - PyNode_Free(n); - return 1; - } - -Another solution is trying to compile the received string with +:c:func:`PyRun_InteractiveLoop` to stop while waiting for user input. +A solution is trying to compile the received string with :c:func:`Py_CompileString`. If it compiles without errors, try to execute the returned code object by calling :c:func:`PyEval_EvalCode`. Otherwise save the input for later. If the compilation fails, find out if it's an error or just diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 7ed80fb903efd1..5e510d8f6ed3ae 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1696,9 +1696,9 @@ Removed that were only being used by the old parser, including ``node.h``, ``parser.h``, ``graminit.h`` and ``grammar.h``. -* Removed the Public C API functions :c:func:`PyParser_SimpleParseStringFlags`, - :c:func:`PyParser_SimpleParseStringFlagsFilename`, - :c:func:`PyParser_SimpleParseFileFlags` and :c:func:`PyNode_Compile` +* Removed the Public C API functions ``PyParser_SimpleParseStringFlags``, + ``PyParser_SimpleParseStringFlagsFilename``, + ``PyParser_SimpleParseFileFlags`` and ``PyNode_Compile`` that were deprecated in 3.9 due to the switch to the new PEG parser. * Removed the ``formatter`` module, which was deprecated in Python 3.4. @@ -1812,6 +1812,41 @@ Changes in the Python API also inherits the current builtins. (Contributed by Victor Stinner in :issue:`42990`.) +Changes in the C API +-------------------- + +* The C API functions ``PyParser_SimpleParseStringFlags``, + ``PyParser_SimpleParseStringFlagsFilename``, + ``PyParser_SimpleParseFileFlags``, ``PyNode_Compile`` and the type + used by these functions, ``struct _node``, were removed due to the switch + to the new PEG parser. + + Source should be now be compiled directly to a code object using, for + example, :c:func:`Py_CompileString`. The resulting code object can then be + evaluated using, for example, :c:func:`PyEval_EvalCode`. + + Specifically: + + * A call to ``PyParser_SimpleParseStringFlags`` followed by + ``PyNode_Compile`` can be replaced by calling :c:func:`Py_CompileString`. + + * There is no direct replacement for ``PyParser_SimpleParseFileFlags``. + To compile code from a ``FILE *`` argument, you will need to read + the file in C and pass the resulting buffer to :c:func:`Py_CompileString`. + + * To compile a file given a ``char *`` filename, explicitly open the file, read + it and compile the result. One way to do this is using the :py:mod:`io` + module with :c:func:`PyImport_ImportModule`, :c:func:`PyObject_CallMethod`, + :c:func:`PyBytes_AsString` and :c:func:`Py_CompileString`, + as sketched below. (Declarations and error handling are omitted.) :: + + io_module = Import_ImportModule("io"); + fileobject = PyObject_CallMethod(io_module, "open", "ss", filename, "rb"); + source_bytes_object = PyObject_CallMethod(fileobject, "read", ""); + result = PyObject_CallMethod(fileobject, "close", ""); + source_buf = PyBytes_AsString(source_bytes_object); + code = Py_CompileString(source_buf, filename, Py_file_input); + CPython bytecode changes ======================== diff --git a/Misc/NEWS.d/next/C API/2021-06-22-17-00-06.bpo-40939.CGB0I5.rst b/Misc/NEWS.d/next/C API/2021-06-22-17-00-06.bpo-40939.CGB0I5.rst new file mode 100644 index 00000000000000..2531ac1ba3c12c --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-06-22-17-00-06.bpo-40939.CGB0I5.rst @@ -0,0 +1 @@ +Removed documentation for the removed ``PyParser_*`` C API. From webhook-mailer at python.org Mon Jun 28 06:05:35 2021 From: webhook-mailer at python.org (ambv) Date: Mon, 28 Jun 2021 10:05:35 -0000 Subject: [Python-checkins] [3.8] bpo-43882 - Mention urllib.parse changes in Whats new section. (#26277) Message-ID: https://github.com/python/cpython/commit/634da2de88af06eb8c6ebdb90d8c00005847063d commit: 634da2de88af06eb8c6ebdb90d8c00005847063d branch: 3.8 author: Senthil Kumaran committer: ambv date: 2021-06-28T12:05:21+02:00 summary: [3.8] bpo-43882 - Mention urllib.parse changes in Whats new section. (#26277) files: M Doc/whatsnew/3.8.rst diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index 6c30ac183b67fd..109a06e92efb7d 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -2294,4 +2294,16 @@ for and build on the oldest version in the range. with fixes by FX Coudert and Eli Rykoff, and backported to 3.8 by Maxime B?langer and Ned Deily) +Notable changes in Python 3.8.10 +================================ + +urllib.parse +------------ + +The presence of newline or tab characters in parts of a URL allows for some +forms of attacks. Following the WHATWG specification that updates :rfc:`3986`, +ASCII newline ``\n``, ``\r`` and tab ``\t`` characters are stripped from the +URL by the parser in :mod:`urllib.parse` preventing such attacks. The removal +characters are controlled by a new module level variable +``urllib.parse._UNSAFE_URL_BYTES_TO_REMOVE``. (See :issue:`43882`) From webhook-mailer at python.org Mon Jun 28 06:13:42 2021 From: webhook-mailer at python.org (ambv) Date: Mon, 28 Jun 2021 10:13:42 -0000 Subject: [Python-checkins] Python 3.9.6 Message-ID: https://github.com/python/cpython/commit/db3ff76da19004f266b62e98a81bdfd322861436 commit: db3ff76da19004f266b62e98a81bdfd322861436 branch: 3.9 author: ?ukasz Langa committer: ambv date: 2021-06-28T10:26:18+02:00 summary: Python 3.9.6 files: A Misc/NEWS.d/3.9.6.rst D Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst D Misc/NEWS.d/next/C API/2021-05-04-15-13-31.bpo-42083.ekXnbR.rst D Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst D Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst D Misc/NEWS.d/next/Core and Builtins/2021-01-13-19-34-41.bpo-28146.AZBBkH.rst D Misc/NEWS.d/next/Core and Builtins/2021-05-10-22-30-12.bpo-44070.5bBtKx.rst D Misc/NEWS.d/next/Core and Builtins/2021-05-12-14-26-16.bpo-44114.p-WfAE.rst D Misc/NEWS.d/next/Core and Builtins/2021-05-18-11-27-02.bpo-44168.mgB-rt.rst D Misc/NEWS.d/next/Core and Builtins/2021-05-27-17-34-29.bpo-43667.ND9jP3.rst D Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst D Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst D Misc/NEWS.d/next/Documentation/2021-05-07-12-27-09.bpo-43558.UGhA8R.rst D Misc/NEWS.d/next/Documentation/2021-05-08-09-48-05.bpo-44072.fb2x5I.rst D Misc/NEWS.d/next/Documentation/2021-05-17-20-03-47.bpo-41963.eUz9_o.rst D Misc/NEWS.d/next/Documentation/2021-05-23-09-11-28.bpo-44195.1bqkOs.rst D Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst D Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst D Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst D Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst D Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst D Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst D Misc/NEWS.d/next/IDLE/2021-05-27-18-22-46.bpo-41611.jOKpfc.rst D Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst D Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst D Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst D Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst D Misc/NEWS.d/next/Library/2021-02-22-22-54-40.bpo-43295.h_ffu7.rst D Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst D Misc/NEWS.d/next/Library/2021-03-29-00-23-30.bpo-43650.v01tic.rst D Misc/NEWS.d/next/Library/2021-03-30-08-39-08.bpo-43666.m72tlH.rst D Misc/NEWS.d/next/Library/2021-04-12-00-00-00.bpo-43776.p14y7a.rst D Misc/NEWS.d/next/Library/2021-04-29-00-48-00.bpo-28528.JLAVWj.rst D Misc/NEWS.d/next/Library/2021-04-30-16-58-24.bpo-43972.Y2r9lg.rst D Misc/NEWS.d/next/Library/2021-05-02-13-54-25.bpo-38352.N9MlhV.rst D Misc/NEWS.d/next/Library/2021-05-03-10-07-43.bpo-44018.VDyW8f.rst D Misc/NEWS.d/next/Library/2021-05-05-11-44-49.bpo-36515.uOSa3q.rst D Misc/NEWS.d/next/Library/2021-05-07-08-39-23.bpo-44061.MvElG6.rst D Misc/NEWS.d/next/Library/2021-05-13-19-07-28.bpo-37788.adeFcf.rst D Misc/NEWS.d/next/Library/2021-05-16-00-00-38.bpo-44145.ko5SJ7.rst D Misc/NEWS.d/next/Library/2021-05-29-01-05-43.bpo-44254.f06xDm.rst D Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst D Misc/NEWS.d/next/Library/2021-06-10-21-04-14.bpo-44342.nNH5jA.rst D Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst D Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst D Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst D Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst D Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst D Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst D Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst D Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst D Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst D Misc/NEWS.d/next/Tools-Demos/2021-05-08-13-57-00.bpo-44074.F09kCK.rst D Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst D Misc/NEWS.d/next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst D Misc/NEWS.d/next/macOS/2021-06-02-19-21-13.bpo-43568.viomLm.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 40b75a655ee2d7..19e2aaea638c09 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 9 -#define PY_MICRO_VERSION 5 +#define PY_MICRO_VERSION 6 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.9.5+" +#define PY_VERSION "3.9.6" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index b38d2a18809443..8b8544972e528c 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Mon May 3 16:52:46 2021 +# Autogenerated by Sphinx on Mon Jun 28 10:13:28 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -5321,19 +5321,19 @@ 'complex\n' 'types. For integers, when binary, octal, or hexadecimal ' 'output is\n' - 'used, this option adds the prefix respective "\'0b\'", ' - '"\'0o\'", or "\'0x\'"\n' - 'to the output value. For float and complex the alternate ' - 'form causes\n' - 'the result of the conversion to always contain a ' - 'decimal-point\n' - 'character, even if no digits follow it. Normally, a ' - 'decimal-point\n' - 'character appears in the result of these conversions only ' - 'if a digit\n' - 'follows it. In addition, for "\'g\'" and "\'G\'" ' - 'conversions, trailing\n' - 'zeros are not removed from the result.\n' + 'used, this option adds the respective prefix "\'0b\'", ' + '"\'0o\'", "\'0x\'",\n' + 'or "\'0X\'" to the output value. For float and complex the ' + 'alternate\n' + 'form causes the result of the conversion to always contain ' + 'a decimal-\n' + 'point character, even if no digits follow it. Normally, a ' + 'decimal-\n' + 'point character appears in the result of these conversions ' + 'only if a\n' + 'digit follows it. In addition, for "\'g\'" and "\'G\'" ' + 'conversions,\n' + 'trailing zeros are not removed from the result.\n' '\n' 'The "\',\'" option signals the use of a comma for a ' 'thousands separator.\n' @@ -5446,8 +5446,12 @@ '+-----------+------------------------------------------------------------+\n' ' | "\'X\'" | Hex format. Outputs the number in base ' '16, using upper- |\n' - ' | | case letters for the digits above ' - '9. |\n' + ' | | case letters for the digits above 9. In ' + 'case "\'#\'" is |\n' + ' | | specified, the prefix "\'0x\'" will be ' + 'upper-cased to "\'0X\'" |\n' + ' | | as ' + 'well. |\n' ' ' '+-----------+------------------------------------------------------------+\n' ' | "\'n\'" | Number. This is the same as "\'d\'", ' @@ -6283,7 +6287,7 @@ ' | "from" relative_module "import" "(" ' 'identifier ["as" identifier]\n' ' ("," identifier ["as" identifier])* [","] ")"\n' - ' | "from" module "import" "*"\n' + ' | "from" relative_module "import" "*"\n' ' module ::= (identifier ".")* identifier\n' ' relative_module ::= "."* module | "."+\n' '\n' diff --git a/Misc/NEWS.d/3.9.6.rst b/Misc/NEWS.d/3.9.6.rst new file mode 100644 index 00000000000000..357e9096229344 --- /dev/null +++ b/Misc/NEWS.d/3.9.6.rst @@ -0,0 +1,557 @@ +.. bpo: 44022 +.. date: 2021-05-05-17-37-04 +.. nonce: bS3XJ9 +.. release date: 2021-06-28 +.. section: Security + +mod:`http.client` now avoids infinitely reading potential HTTP headers after +a ``100 Continue`` status response from the server. + +.. + +.. bpo: 44409 +.. date: 2021-06-13-23-12-18 +.. nonce: eW4LS- +.. section: Core and Builtins + +Fix error location information for tokenizer errors raised on initialization +of the tokenizer. Patch by Pablo Galindo. + +.. + +.. bpo: 43667 +.. date: 2021-05-27-17-34-29 +.. nonce: ND9jP3 +.. section: Core and Builtins + +Improve Unicode support in non-UTF locales on Oracle Solaris. This issue +does not affect other Solaris systems. + +.. + +.. bpo: 44168 +.. date: 2021-05-18-11-27-02 +.. nonce: mgB-rt +.. section: Core and Builtins + +Fix error message in the parser involving keyword arguments with invalid +expressions. Patch by Pablo Galindo + +.. + +.. bpo: 44114 +.. date: 2021-05-12-14-26-16 +.. nonce: p-WfAE +.. section: Core and Builtins + +Fix incorrect dictkeys_reversed and dictitems_reversed function signatures +in C code, which broke webassembly builds. + +.. + +.. bpo: 44070 +.. date: 2021-05-10-22-30-12 +.. nonce: 5bBtKx +.. section: Core and Builtins + +No longer eagerly makes import filenames absolute, except for extension +modules, which was introduced in 3.9.5. + +.. + +.. bpo: 28146 +.. date: 2021-01-13-19-34-41 +.. nonce: AZBBkH +.. section: Core and Builtins + +Fix a confusing error message in :func:`str.format`. + +.. + +.. bpo: 11105 +.. date: 2020-06-02-13-21-14 +.. nonce: wceryW +.. section: Core and Builtins + +When compiling :class:`ast.AST` objects with recursive references through +:func:`compile`, the interpreter doesn't crash anymore instead it raises a +:exc:`RecursionError`. + +.. + +.. bpo: 44516 +.. date: 2021-06-26-12-27-14 +.. nonce: BVyX_y +.. section: Library + +Update vendored pip to 21.1.3 + +.. + +.. bpo: 44482 +.. date: 2021-06-22-08-43-04 +.. nonce: U9GznK +.. section: Library + +Fix very unlikely resource leak in :mod:`glob` in alternate Python +implementations. + +.. + +.. bpo: 44439 +.. date: 2021-06-17-15-01-51 +.. nonce: 1S7QhT +.. section: Library + +Fix in :meth:`bz2.BZ2File.write` / :meth:`lzma.LZMAFile.write` methods, when +the input data is an object that supports the buffer protocol, the file +length may be wrong. + +.. + +.. bpo: 44434 +.. date: 2021-06-16-16-52-14 +.. nonce: SQS4Pg +.. section: Library + +_thread.start_new_thread() no longer calls PyThread_exit_thread() explicitly +at the thread exit, the call was redundant. On Linux with the glibc, +pthread_exit() aborts the whole process if dlopen() fails to open +libgcc_s.so file (ex: EMFILE error). Patch by Victor Stinner. + +.. + +.. bpo: 44422 +.. date: 2021-06-14-23-28-17 +.. nonce: BlWOgv +.. section: Library + +The :func:`threading.enumerate` function now uses a reentrant lock to +prevent a hang on reentrant call. Patch by Victor Stinner. + +.. + +.. bpo: 44395 +.. date: 2021-06-12-10-08-14 +.. nonce: PcW6Sx +.. section: Library + +Fix :meth:`~email.message.MIMEPart.as_string` to pass unixfrom properly. +Patch by Dong-hee Na. + +.. + +.. bpo: 44342 +.. date: 2021-06-10-21-04-14 +.. nonce: nNH5jA +.. section: Library + +[Enum] Be more robust in searching for pickle support before making an enum +class unpicklable. + +.. + +.. bpo: 44356 +.. date: 2021-06-10-08-35-38 +.. nonce: 6oDFhO +.. section: Library + +[Enum] Allow multiple data-type mixins if they are all the same. + +.. + +.. bpo: 44254 +.. date: 2021-05-29-01-05-43 +.. nonce: f06xDm +.. section: Library + +On Mac, give turtledemo button text a color that works on both light or dark +background. Programmers cannot control the latter. + +.. + +.. bpo: 44145 +.. date: 2021-05-16-00-00-38 +.. nonce: ko5SJ7 +.. section: Library + +:mod:`hmac` computations were not releasing the GIL while calling the +OpenSSL ``HMAC_Update`` C API (a new feature in 3.9). This unintentionally +prevented parallel computation as other :mod:`hashlib` algorithms support. + +.. + +.. bpo: 37788 +.. date: 2021-05-13-19-07-28 +.. nonce: adeFcf +.. section: Library + +Fix a reference leak when a Thread object is never joined. + +.. + +.. bpo: 44061 +.. date: 2021-05-07-08-39-23 +.. nonce: MvElG6 +.. section: Library + +Fix regression in previous release when calling :func:`pkgutil.iter_modules` +with a list of :class:`pathlib.Path` objects + +.. + +.. bpo: 36515 +.. date: 2021-05-05-11-44-49 +.. nonce: uOSa3q +.. section: Library + +The :mod:`hashlib` module no longer does unaligned memory accesses when +compiled for ARM platforms. + +.. + +.. bpo: 44018 +.. date: 2021-05-03-10-07-43 +.. nonce: VDyW8f +.. section: Library + +random.seed() no longer mutates bytearray inputs. + +.. + +.. bpo: 38352 +.. date: 2021-05-02-13-54-25 +.. nonce: N9MlhV +.. section: Library + +Add ``IO``, ``BinaryIO``, ``TextIO``, ``Match``, and ``Pattern`` to +``typing.__all__``. Patch by Jelle Zijlstra. + +.. + +.. bpo: 43972 +.. date: 2021-04-30-16-58-24 +.. nonce: Y2r9lg +.. section: Library + +When :class:`http.server.SimpleHTTPRequestHandler` sends a ``301 (Moved +Permanently)`` for a directory path not ending with `/`, add a +``Content-Length: 0`` header. This improves the behavior for certain +clients. + +.. + +.. bpo: 28528 +.. date: 2021-04-29-00-48-00 +.. nonce: JLAVWj +.. section: Library + +Fix a bug in :mod:`pdb` where :meth:`~pdb.Pdb.checkline` raises +:exc:`AttributeError` if it is called after :meth:`~pdb.Pdb.reset`. + +.. + +.. bpo: 43776 +.. date: 2021-04-12-00-00-00 +.. nonce: p14y7a +.. section: Library + +When :class:`subprocess.Popen` args are provided as a string or as +:class:`pathlib.Path`, the Popen instance repr now shows the right thing. + +.. + +.. bpo: 43666 +.. date: 2021-03-30-08-39-08 +.. nonce: m72tlH +.. section: Library + +AIX: `Lib/_aix_support.get_platform()` may fail in an AIX WPAR. The fileset +bos.rte appears to have a builddate in both LPAR and WPAR so this fileset is +queried rather than bos.mp64. To prevent a similiar situation (no builddate +in ODM) a value (9988) sufficient for completing a build is provided. Patch +by M Felt. + +.. + +.. bpo: 43650 +.. date: 2021-03-29-00-23-30 +.. nonce: v01tic +.. section: Library + +Fix :exc:`MemoryError` in :func:`shutil.unpack_archive` which fails inside +:func:`shutil._unpack_zipfile` on large files. Patch by Igor Bolshakov. + +.. + +.. bpo: 43318 +.. date: 2021-02-25-08-32-06 +.. nonce: bZJw6V +.. section: Library + +Fix a bug where :mod:`pdb` does not always echo cleared breakpoints. + +.. + +.. bpo: 43295 +.. date: 2021-02-22-22-54-40 +.. nonce: h_ffu7 +.. section: Library + +:meth:`datetime.datetime.strptime` now raises ``ValueError`` instead of +``IndexError`` when matching ``'z'`` with the ``%z`` format specifier. + +.. + +.. bpo: 37022 +.. date: 2020-01-25-12-58-20 +.. nonce: FUZI25 +.. section: Library + +:mod:`pdb` now displays exceptions from ``repr()`` with its ``p`` and ``pp`` +commands. + +.. + +.. bpo: 40620 +.. date: 2021-06-26-17-41-06 +.. nonce: PAYDrB +.. section: Documentation + +Convert examples in tutorial controlflow.rst section 4.3 to be +interpreter-demo style. + +.. + +.. bpo: 13814 +.. date: 2021-06-21-15-46-32 +.. nonce: LDcslu +.. section: Documentation + +In the Design FAQ, answer "Why don't generators support the with statement?" + +.. + +.. bpo: 44392 +.. date: 2021-06-16-18-09-49 +.. nonce: 6RF1Sc +.. section: Documentation + +Added a new section in the C API documentation for types used in type +hinting. Documented ``Py_GenericAlias`` and ``Py_GenericAliasType``. + +.. + +.. bpo: 38291 +.. date: 2021-06-14-09-20-37 +.. nonce: VMYa_Q +.. section: Documentation + +Mark ``typing.io`` and ``typing.re`` as deprecated since Python 3.8 in the +documentation. They were never properly supported by type checkers. + +.. + +.. bpo: 44322 +.. date: 2021-06-06-14-12-00 +.. nonce: K0PHfE +.. section: Documentation + +Document that SyntaxError args have a details tuple and that details are +adjusted for errors in f-string field replacement expressions. + +.. + +.. bpo: 44195 +.. date: 2021-05-23-09-11-28 +.. nonce: 1bqkOs +.. section: Documentation + +Corrected references to ``TraversableResources`` in docs. There is no +``TraversableReader``. + +.. + +.. bpo: 41963 +.. date: 2021-05-17-20-03-47 +.. nonce: eUz9_o +.. section: Documentation + +Document that ``ConfigParser`` strips off comments when reading +configuration files. + +.. + +.. bpo: 44072 +.. date: 2021-05-08-09-48-05 +.. nonce: fb2x5I +.. section: Documentation + +Correct where in the numeric ABC hierarchy ``**`` support is added, i.e., in +numbers.Complex, not numbers.Integral. + +.. + +.. bpo: 43558 +.. date: 2021-05-07-12-27-09 +.. nonce: UGhA8R +.. section: Documentation + +Add the remark to :mod:`dataclasses` documentation that the :meth:`__init__` +of any base class has to be called in :meth:`__post_init__`, along with a +code example. + +.. + +.. bpo: 41621 +.. date: 2020-08-24-13-35-04 +.. nonce: nqaw9G +.. section: Documentation + +Document that :class:`collections.defaultdict` parameter ``default_factory`` +defaults to None and is positional-only. + +.. + +.. bpo: 44287 +.. date: 2021-06-21-17-53-41 +.. nonce: YON57s +.. section: Tests + +Fix asyncio test_popen() of test_windows_utils by using a longer timeout. +Use military grade battle-tested :data:`test.support.SHORT_TIMEOUT` timeout +rather than a hardcoded timeout of 10 seconds: it's 30 seconds by default, +but it is made longer on slow buildbots. Patch by Victor Stinner. + +.. + +.. bpo: 44363 +.. date: 2021-06-10-11-19-43 +.. nonce: -K9jD0 +.. section: Tests + +Account for address sanitizer in test_capi. test_capi now passes when run +GCC address sanitizer. + +.. + +.. bpo: 44381 +.. date: 2021-06-10-18-08-44 +.. nonce: Xpc1iX +.. section: Build + +The Windows build now accepts :envvar:`EnableControlFlowGuard` set to +``guard`` to enable CFG. + +.. + +.. bpo: 41299 +.. date: 2021-06-06-16-36-13 +.. nonce: Rg-vb_ +.. section: Windows + +Fix 16ms jitter when using timeouts in :mod:`threading`, such as with +:meth:`threading.Lock.acquire` or :meth:`threading.Condition.wait`. + +.. + +.. bpo: 43568 +.. date: 2021-06-02-19-21-13 +.. nonce: viomLm +.. section: macOS + +Relax unnecessarily restrictive MACOSX_DEPLOYMENT_TARGET check when building +extension modules for macOS. Patch by Joshua Root. + +.. + +.. bpo: 43109 +.. date: 2021-05-24-21-15-41 +.. nonce: npKJ9c +.. section: macOS + +Allow --with-lto configure option to work with Apple-supplied Xcode or +Command Line Tools. + +.. + +.. bpo: 40128 +.. date: 2021-06-11-17-43-39 +.. nonce: 7vDN3U +.. section: IDLE + +Mostly fix completions on macOS when not using tcl/tk 8.6.11 (as with 3.9). +The added update_idletask call should be harmless and possibly helpful +otherwise. + +.. + +.. bpo: 33962 +.. date: 2021-06-10-00-50-02 +.. nonce: ikAUNg +.. section: IDLE + +Move the indent space setting from the Font tab to the new Windows tab. +Patch by Mark Roseman and Terry Jan Reedy. + +.. + +.. bpo: 40468 +.. date: 2021-06-08-03-04-51 +.. nonce: tUCGUb +.. section: IDLE + +Split the settings dialog General tab into Windows and Shell/ED tabs. Move +help sources, which extend the Help menu, to the Extensions tab. Make space +for new options and shorten the dialog. The latter makes the dialog better +fit small screens. + +.. + +.. bpo: 41611 +.. date: 2021-05-27-18-22-46 +.. nonce: jOKpfc +.. section: IDLE + +Avoid uncaught exceptions in ``AutoCompleteWindow.winconfig_event()``. + +.. + +.. bpo: 41611 +.. date: 2021-05-27-13-39-43 +.. nonce: liNQqj +.. section: IDLE + +Fix IDLE sometimes freezing upon tab-completion on macOS. + +.. + +.. bpo: 44074 +.. date: 2021-05-08-13-57-00 +.. nonce: F09kCK +.. section: Tools/Demos + +Make patchcheck automatically detect the correct base branch name +(previously it was hardcoded to 'master') + +.. + +.. bpo: 44441 +.. date: 2021-06-23-12-12-04 +.. nonce: 3p14JB +.. section: C API + +:c:func:`Py_RunMain` now resets :c:data:`PyImport_Inittab` to its initial +value at exit. It must be possible to call :c:func:`PyImport_AppendInittab` +or :c:func:`PyImport_ExtendInittab` at each Python initialization. Patch by +Victor Stinner. + +.. + +.. bpo: 42083 +.. date: 2021-05-04-15-13-31 +.. nonce: ekXnbR +.. section: C API + +Fix crash in :c:func:`PyStructSequence_NewType` when passed ``NULL`` in the +documentation string slot. diff --git a/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst b/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst deleted file mode 100644 index 002112c4b55674..00000000000000 --- a/Misc/NEWS.d/next/Build/2021-06-10-18-08-44.bpo-44381.Xpc1iX.rst +++ /dev/null @@ -1,2 +0,0 @@ -The Windows build now accepts :envvar:`EnableControlFlowGuard` set to -``guard`` to enable CFG. diff --git a/Misc/NEWS.d/next/C API/2021-05-04-15-13-31.bpo-42083.ekXnbR.rst b/Misc/NEWS.d/next/C API/2021-05-04-15-13-31.bpo-42083.ekXnbR.rst deleted file mode 100644 index e83bab9c29599a..00000000000000 --- a/Misc/NEWS.d/next/C API/2021-05-04-15-13-31.bpo-42083.ekXnbR.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix crash in :c:func:`PyStructSequence_NewType` when passed ``NULL`` in the -documentation string slot. diff --git a/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst b/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst deleted file mode 100644 index 80c4282c18ea64..00000000000000 --- a/Misc/NEWS.d/next/C API/2021-06-23-12-12-04.bpo-44441.3p14JB.rst +++ /dev/null @@ -1,4 +0,0 @@ -:c:func:`Py_RunMain` now resets :c:data:`PyImport_Inittab` to its initial value -at exit. It must be possible to call :c:func:`PyImport_AppendInittab` or -:c:func:`PyImport_ExtendInittab` at each Python initialization. -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst b/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst deleted file mode 100644 index 8891936cd88716..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-06-02-13-21-14.bpo-11105.wceryW.rst +++ /dev/null @@ -1,3 +0,0 @@ -When compiling :class:`ast.AST` objects with recursive references -through :func:`compile`, the interpreter doesn't crash anymore instead -it raises a :exc:`RecursionError`. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-01-13-19-34-41.bpo-28146.AZBBkH.rst b/Misc/NEWS.d/next/Core and Builtins/2021-01-13-19-34-41.bpo-28146.AZBBkH.rst deleted file mode 100644 index e6198819389532..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-01-13-19-34-41.bpo-28146.AZBBkH.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a confusing error message in :func:`str.format`. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-10-22-30-12.bpo-44070.5bBtKx.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-10-22-30-12.bpo-44070.5bBtKx.rst deleted file mode 100644 index 46bea40031135b..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-05-10-22-30-12.bpo-44070.5bBtKx.rst +++ /dev/null @@ -1,2 +0,0 @@ -No longer eagerly makes import filenames absolute, except for extension -modules, which was introduced in 3.9.5. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-12-14-26-16.bpo-44114.p-WfAE.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-12-14-26-16.bpo-44114.p-WfAE.rst deleted file mode 100644 index c50b1594cae356..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-05-12-14-26-16.bpo-44114.p-WfAE.rst +++ /dev/null @@ -1 +0,0 @@ -Fix incorrect dictkeys_reversed and dictitems_reversed function signatures in C code, which broke webassembly builds. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-18-11-27-02.bpo-44168.mgB-rt.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-18-11-27-02.bpo-44168.mgB-rt.rst deleted file mode 100644 index ace01e49b508a2..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-05-18-11-27-02.bpo-44168.mgB-rt.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix error message in the parser involving keyword arguments with invalid -expressions. Patch by Pablo Galindo diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-27-17-34-29.bpo-43667.ND9jP3.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-27-17-34-29.bpo-43667.ND9jP3.rst deleted file mode 100644 index 53130cce7180a7..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-05-27-17-34-29.bpo-43667.ND9jP3.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve Unicode support in non-UTF locales on Oracle Solaris. This issue -does not affect other Solaris systems. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst deleted file mode 100644 index 0f204ed812b27a..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-06-13-23-12-18.bpo-44409.eW4LS-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix error location information for tokenizer errors raised on initialization -of the tokenizer. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst b/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst deleted file mode 100644 index bd193d9163073a..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-08-24-13-35-04.bpo-41621.nqaw9G.rst +++ /dev/null @@ -1 +0,0 @@ -Document that :class:`collections.defaultdict` parameter ``default_factory`` defaults to None and is positional-only. diff --git a/Misc/NEWS.d/next/Documentation/2021-05-07-12-27-09.bpo-43558.UGhA8R.rst b/Misc/NEWS.d/next/Documentation/2021-05-07-12-27-09.bpo-43558.UGhA8R.rst deleted file mode 100644 index b0ecb171ef7314..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-05-07-12-27-09.bpo-43558.UGhA8R.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add the remark to :mod:`dataclasses` documentation that the :meth:`__init__` of any base class -has to be called in :meth:`__post_init__`, along with a code example. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Documentation/2021-05-08-09-48-05.bpo-44072.fb2x5I.rst b/Misc/NEWS.d/next/Documentation/2021-05-08-09-48-05.bpo-44072.fb2x5I.rst deleted file mode 100644 index a5b0c95d85e66e..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-05-08-09-48-05.bpo-44072.fb2x5I.rst +++ /dev/null @@ -1,2 +0,0 @@ -Correct where in the numeric ABC hierarchy ``**`` support is added, i.e., in -numbers.Complex, not numbers.Integral. diff --git a/Misc/NEWS.d/next/Documentation/2021-05-17-20-03-47.bpo-41963.eUz9_o.rst b/Misc/NEWS.d/next/Documentation/2021-05-17-20-03-47.bpo-41963.eUz9_o.rst deleted file mode 100644 index b9fe722fa3a795..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-05-17-20-03-47.bpo-41963.eUz9_o.rst +++ /dev/null @@ -1 +0,0 @@ -Document that ``ConfigParser`` strips off comments when reading configuration files. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Documentation/2021-05-23-09-11-28.bpo-44195.1bqkOs.rst b/Misc/NEWS.d/next/Documentation/2021-05-23-09-11-28.bpo-44195.1bqkOs.rst deleted file mode 100644 index 5f165f166a377f..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-05-23-09-11-28.bpo-44195.1bqkOs.rst +++ /dev/null @@ -1,2 +0,0 @@ -Corrected references to ``TraversableResources`` in docs. There is no -``TraversableReader``. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst b/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst deleted file mode 100644 index 48dd7e6d97662d..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-06-06-14-12-00.bpo-44322.K0PHfE.rst +++ /dev/null @@ -1,2 +0,0 @@ -Document that SyntaxError args have a details tuple and that details are -adjusted for errors in f-string field replacement expressions. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst b/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst deleted file mode 100644 index 23ce35eb176d9d..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-06-14-09-20-37.bpo-38291.VMYa_Q.rst +++ /dev/null @@ -1,2 +0,0 @@ -Mark ``typing.io`` and ``typing.re`` as deprecated since Python 3.8 in the -documentation. They were never properly supported by type checkers. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst b/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst deleted file mode 100644 index ac197f22929d14..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-06-16-18-09-49.bpo-44392.6RF1Sc.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added a new section in the C API documentation for types used in type -hinting. Documented ``Py_GenericAlias`` and ``Py_GenericAliasType``. diff --git a/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst b/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst deleted file mode 100644 index db0c6d6524beeb..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-06-21-15-46-32.bpo-13814.LDcslu.rst +++ /dev/null @@ -1 +0,0 @@ -In the Design FAQ, answer "Why don't generators support the with statement?" diff --git a/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst b/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst deleted file mode 100644 index 52b451b492640e..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-06-26-17-41-06.bpo-40620.PAYDrB.rst +++ /dev/null @@ -1,2 +0,0 @@ -Convert examples in tutorial controlflow.rst section 4.3 to be interpreter-demo -style. diff --git a/Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst b/Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst deleted file mode 100644 index 27d778bbe41009..00000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-05-27-13-39-43.bpo-41611.liNQqj.rst +++ /dev/null @@ -1 +0,0 @@ -Fix IDLE sometimes freezing upon tab-completion on macOS. diff --git a/Misc/NEWS.d/next/IDLE/2021-05-27-18-22-46.bpo-41611.jOKpfc.rst b/Misc/NEWS.d/next/IDLE/2021-05-27-18-22-46.bpo-41611.jOKpfc.rst deleted file mode 100644 index a80c9f7c5a73b6..00000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-05-27-18-22-46.bpo-41611.jOKpfc.rst +++ /dev/null @@ -1 +0,0 @@ -Avoid uncaught exceptions in ``AutoCompleteWindow.winconfig_event()``. diff --git a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst b/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst deleted file mode 100644 index 526036ccf841ee..00000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-06-08-03-04-51.bpo-40468.tUCGUb.rst +++ /dev/null @@ -1,4 +0,0 @@ -Split the settings dialog General tab into Windows and Shell/ED tabs. -Move help sources, which extend the Help menu, to the Extensions tab. -Make space for new options and shorten the dialog. -The latter makes the dialog better fit small screens. diff --git a/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst b/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst deleted file mode 100644 index b15fa8f184792a..00000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-06-10-00-50-02.bpo-33962.ikAUNg.rst +++ /dev/null @@ -1,2 +0,0 @@ -Move the indent space setting from the Font tab to the new Windows tab. -Patch by Mark Roseman and Terry Jan Reedy. diff --git a/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst b/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst deleted file mode 100644 index dafbe2cd5c3a8f..00000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-06-11-17-43-39.bpo-40128.7vDN3U.rst +++ /dev/null @@ -1,3 +0,0 @@ -Mostly fix completions on macOS when not using tcl/tk 8.6.11 (as with 3.9). -The added update_idletask call should be harmless and possibly helpful -otherwise. diff --git a/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst b/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst deleted file mode 100644 index 7b923b3aa6e444..00000000000000 --- a/Misc/NEWS.d/next/Library/2020-01-25-12-58-20.bpo-37022.FUZI25.rst +++ /dev/null @@ -1 +0,0 @@ -:mod:`pdb` now displays exceptions from ``repr()`` with its ``p`` and ``pp`` commands. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2021-02-22-22-54-40.bpo-43295.h_ffu7.rst b/Misc/NEWS.d/next/Library/2021-02-22-22-54-40.bpo-43295.h_ffu7.rst deleted file mode 100644 index ac9a5c96c9cedd..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-22-22-54-40.bpo-43295.h_ffu7.rst +++ /dev/null @@ -1,2 +0,0 @@ -:meth:`datetime.datetime.strptime` now raises ``ValueError`` instead of -``IndexError`` when matching ``'z'`` with the ``%z`` format specifier. diff --git a/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst b/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst deleted file mode 100644 index c2c9c8776fd86d..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-25-08-32-06.bpo-43318.bZJw6V.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a bug where :mod:`pdb` does not always echo cleared breakpoints. diff --git a/Misc/NEWS.d/next/Library/2021-03-29-00-23-30.bpo-43650.v01tic.rst b/Misc/NEWS.d/next/Library/2021-03-29-00-23-30.bpo-43650.v01tic.rst deleted file mode 100644 index a2ea4a4800a738..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-29-00-23-30.bpo-43650.v01tic.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix :exc:`MemoryError` in :func:`shutil.unpack_archive` which fails inside -:func:`shutil._unpack_zipfile` on large files. Patch by Igor Bolshakov. diff --git a/Misc/NEWS.d/next/Library/2021-03-30-08-39-08.bpo-43666.m72tlH.rst b/Misc/NEWS.d/next/Library/2021-03-30-08-39-08.bpo-43666.m72tlH.rst deleted file mode 100644 index 6a3432191d61ba..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-30-08-39-08.bpo-43666.m72tlH.rst +++ /dev/null @@ -1,6 +0,0 @@ -AIX: `Lib/_aix_support.get_platform()` may fail in an AIX WPAR. -The fileset bos.rte appears to have a builddate in both LPAR and WPAR -so this fileset is queried rather than bos.mp64. -To prevent a similiar situation (no builddate in ODM) a value (9988) -sufficient for completing a build is provided. -Patch by M Felt. diff --git a/Misc/NEWS.d/next/Library/2021-04-12-00-00-00.bpo-43776.p14y7a.rst b/Misc/NEWS.d/next/Library/2021-04-12-00-00-00.bpo-43776.p14y7a.rst deleted file mode 100644 index 51bc791f10d31a..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-04-12-00-00-00.bpo-43776.p14y7a.rst +++ /dev/null @@ -1 +0,0 @@ -When :class:`subprocess.Popen` args are provided as a string or as :class:`pathlib.Path`, the Popen instance repr now shows the right thing. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2021-04-29-00-48-00.bpo-28528.JLAVWj.rst b/Misc/NEWS.d/next/Library/2021-04-29-00-48-00.bpo-28528.JLAVWj.rst deleted file mode 100644 index 97731ad882e032..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-04-29-00-48-00.bpo-28528.JLAVWj.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a bug in :mod:`pdb` where :meth:`~pdb.Pdb.checkline` raises -:exc:`AttributeError` if it is called after :meth:`~pdb.Pdb.reset`. diff --git a/Misc/NEWS.d/next/Library/2021-04-30-16-58-24.bpo-43972.Y2r9lg.rst b/Misc/NEWS.d/next/Library/2021-04-30-16-58-24.bpo-43972.Y2r9lg.rst deleted file mode 100644 index 3d67b885bab105..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-04-30-16-58-24.bpo-43972.Y2r9lg.rst +++ /dev/null @@ -1,3 +0,0 @@ -When :class:`http.server.SimpleHTTPRequestHandler` sends a -``301 (Moved Permanently)`` for a directory path not ending with `/`, add a -``Content-Length: 0`` header. This improves the behavior for certain clients. diff --git a/Misc/NEWS.d/next/Library/2021-05-02-13-54-25.bpo-38352.N9MlhV.rst b/Misc/NEWS.d/next/Library/2021-05-02-13-54-25.bpo-38352.N9MlhV.rst deleted file mode 100644 index bf8fe758f35702..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-02-13-54-25.bpo-38352.N9MlhV.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add ``IO``, ``BinaryIO``, ``TextIO``, ``Match``, and ``Pattern`` to -``typing.__all__``. Patch by Jelle Zijlstra. diff --git a/Misc/NEWS.d/next/Library/2021-05-03-10-07-43.bpo-44018.VDyW8f.rst b/Misc/NEWS.d/next/Library/2021-05-03-10-07-43.bpo-44018.VDyW8f.rst deleted file mode 100644 index 87c7d83a7f35c5..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-03-10-07-43.bpo-44018.VDyW8f.rst +++ /dev/null @@ -1 +0,0 @@ -random.seed() no longer mutates bytearray inputs. diff --git a/Misc/NEWS.d/next/Library/2021-05-05-11-44-49.bpo-36515.uOSa3q.rst b/Misc/NEWS.d/next/Library/2021-05-05-11-44-49.bpo-36515.uOSa3q.rst deleted file mode 100644 index dd24474c2fde7e..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-05-11-44-49.bpo-36515.uOSa3q.rst +++ /dev/null @@ -1,2 +0,0 @@ -The :mod:`hashlib` module no longer does unaligned memory accesses when -compiled for ARM platforms. diff --git a/Misc/NEWS.d/next/Library/2021-05-07-08-39-23.bpo-44061.MvElG6.rst b/Misc/NEWS.d/next/Library/2021-05-07-08-39-23.bpo-44061.MvElG6.rst deleted file mode 100644 index e41f285fae9491..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-07-08-39-23.bpo-44061.MvElG6.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix regression in previous release when calling :func:`pkgutil.iter_modules` -with a list of :class:`pathlib.Path` objects diff --git a/Misc/NEWS.d/next/Library/2021-05-13-19-07-28.bpo-37788.adeFcf.rst b/Misc/NEWS.d/next/Library/2021-05-13-19-07-28.bpo-37788.adeFcf.rst deleted file mode 100644 index 0c33923e992452..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-13-19-07-28.bpo-37788.adeFcf.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a reference leak when a Thread object is never joined. diff --git a/Misc/NEWS.d/next/Library/2021-05-16-00-00-38.bpo-44145.ko5SJ7.rst b/Misc/NEWS.d/next/Library/2021-05-16-00-00-38.bpo-44145.ko5SJ7.rst deleted file mode 100644 index 40222185d50678..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-16-00-00-38.bpo-44145.ko5SJ7.rst +++ /dev/null @@ -1,3 +0,0 @@ -:mod:`hmac` computations were not releasing the GIL while calling the -OpenSSL ``HMAC_Update`` C API (a new feature in 3.9). This unintentionally -prevented parallel computation as other :mod:`hashlib` algorithms support. diff --git a/Misc/NEWS.d/next/Library/2021-05-29-01-05-43.bpo-44254.f06xDm.rst b/Misc/NEWS.d/next/Library/2021-05-29-01-05-43.bpo-44254.f06xDm.rst deleted file mode 100644 index 7438d5ce044b87..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-29-01-05-43.bpo-44254.f06xDm.rst +++ /dev/null @@ -1,2 +0,0 @@ -On Mac, give turtledemo button text a color that works on both light -or dark background. Programmers cannot control the latter. diff --git a/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst b/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst deleted file mode 100644 index 954a803fe25c18..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-10-08-35-38.bpo-44356.6oDFhO.rst +++ /dev/null @@ -1 +0,0 @@ -[Enum] Allow multiple data-type mixins if they are all the same. diff --git a/Misc/NEWS.d/next/Library/2021-06-10-21-04-14.bpo-44342.nNH5jA.rst b/Misc/NEWS.d/next/Library/2021-06-10-21-04-14.bpo-44342.nNH5jA.rst deleted file mode 100644 index 9cd4685a13e6b0..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-10-21-04-14.bpo-44342.nNH5jA.rst +++ /dev/null @@ -1,2 +0,0 @@ -[Enum] Be more robust in searching for pickle support before making an enum -class unpicklable. diff --git a/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst b/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst deleted file mode 100644 index 6172eec0a9bd3d..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-12-10-08-14.bpo-44395.PcW6Sx.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix :meth:`~email.message.MIMEPart.as_string` to pass unixfrom properly. -Patch by Dong-hee Na. diff --git a/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst b/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst deleted file mode 100644 index 09bace01fc7794..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-14-23-28-17.bpo-44422.BlWOgv.rst +++ /dev/null @@ -1,3 +0,0 @@ -The :func:`threading.enumerate` function now uses a reentrant lock to -prevent a hang on reentrant call. -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst b/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst deleted file mode 100644 index 37b5b57ce65693..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-16-16-52-14.bpo-44434.SQS4Pg.rst +++ /dev/null @@ -1,4 +0,0 @@ -_thread.start_new_thread() no longer calls PyThread_exit_thread() explicitly -at the thread exit, the call was redundant. On Linux with the glibc, -pthread_exit() aborts the whole process if dlopen() fails to open -libgcc_s.so file (ex: EMFILE error). Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst b/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst deleted file mode 100644 index 27396683700a83..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-17-15-01-51.bpo-44439.1S7QhT.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix in :meth:`bz2.BZ2File.write` / :meth:`lzma.LZMAFile.write` methods, when -the input data is an object that supports the buffer protocol, the file length -may be wrong. diff --git a/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst b/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst deleted file mode 100644 index d05fe908e3eba3..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-22-08-43-04.bpo-44482.U9GznK.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix very unlikely resource leak in :mod:`glob` in alternate Python -implementations. diff --git a/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst b/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst deleted file mode 100644 index a9822881135ea7..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-06-26-12-27-14.bpo-44516.BVyX_y.rst +++ /dev/null @@ -1 +0,0 @@ -Update vendored pip to 21.1.3 diff --git a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst b/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst deleted file mode 100644 index cf6b63e3961558..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst +++ /dev/null @@ -1,2 +0,0 @@ -mod:`http.client` now avoids infinitely reading potential HTTP headers after a -``100 Continue`` status response from the server. diff --git a/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst b/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst deleted file mode 100644 index 28468cbd2b682b..00000000000000 --- a/Misc/NEWS.d/next/Tests/2021-06-10-11-19-43.bpo-44363.-K9jD0.rst +++ /dev/null @@ -1,2 +0,0 @@ -Account for address sanitizer in test_capi. test_capi now passes when run -GCC address sanitizer. diff --git a/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst b/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst deleted file mode 100644 index 66b3afe139aa8d..00000000000000 --- a/Misc/NEWS.d/next/Tests/2021-06-21-17-53-41.bpo-44287.YON57s.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix asyncio test_popen() of test_windows_utils by using a longer timeout. -Use military grade battle-tested :data:`test.support.SHORT_TIMEOUT` timeout -rather than a hardcoded timeout of 10 seconds: it's 30 seconds by default, but -it is made longer on slow buildbots. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Tools-Demos/2021-05-08-13-57-00.bpo-44074.F09kCK.rst b/Misc/NEWS.d/next/Tools-Demos/2021-05-08-13-57-00.bpo-44074.F09kCK.rst deleted file mode 100644 index 8bccb080a54186..00000000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2021-05-08-13-57-00.bpo-44074.F09kCK.rst +++ /dev/null @@ -1 +0,0 @@ -Make patchcheck automatically detect the correct base branch name (previously it was hardcoded to 'master') \ No newline at end of file diff --git a/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst b/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst deleted file mode 100644 index 71f700ffa1553e..00000000000000 --- a/Misc/NEWS.d/next/Windows/2021-06-06-16-36-13.bpo-41299.Rg-vb_.rst +++ /dev/null @@ -1 +0,0 @@ -Fix 16ms jitter when using timeouts in :mod:`threading`, such as with :meth:`threading.Lock.acquire` or :meth:`threading.Condition.wait`. diff --git a/Misc/NEWS.d/next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst b/Misc/NEWS.d/next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst deleted file mode 100644 index bb4d24fa95513f..00000000000000 --- a/Misc/NEWS.d/next/macOS/2021-05-24-21-15-41.bpo-43109.npKJ9c.rst +++ /dev/null @@ -1,2 +0,0 @@ -Allow --with-lto configure option to work with Apple-supplied Xcode or -Command Line Tools. diff --git a/Misc/NEWS.d/next/macOS/2021-06-02-19-21-13.bpo-43568.viomLm.rst b/Misc/NEWS.d/next/macOS/2021-06-02-19-21-13.bpo-43568.viomLm.rst deleted file mode 100644 index 57757ba1ed0509..00000000000000 --- a/Misc/NEWS.d/next/macOS/2021-06-02-19-21-13.bpo-43568.viomLm.rst +++ /dev/null @@ -1,2 +0,0 @@ -Relax unnecessarily restrictive MACOSX_DEPLOYMENT_TARGET check when building -extension modules for macOS. Patch by Joshua Root. diff --git a/README.rst b/README.rst index f8e4757a15cd07..cb5bbd2776810e 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.9.5 +This is Python version 3.9.6 ============================ .. image:: https://travis-ci.org/python/cpython.svg?branch=3.9 From webhook-mailer at python.org Mon Jun 28 06:16:02 2021 From: webhook-mailer at python.org (ambv) Date: Mon, 28 Jun 2021 10:16:02 -0000 Subject: [Python-checkins] Python 3.8.11 Message-ID: https://github.com/python/cpython/commit/c3ffbbdf3d5645ee07c22649f2028f9dffc762ba commit: c3ffbbdf3d5645ee07c22649f2028f9dffc762ba branch: 3.8 author: ?ukasz Langa committer: ambv date: 2021-06-28T12:08:34+02:00 summary: Python 3.8.11 files: A Misc/NEWS.d/3.8.11.rst D Misc/NEWS.d/next/Core and Builtins/2021-05-10-22-30-12.bpo-44070.5bBtKx.rst D Misc/NEWS.d/next/Library/2021-05-07-08-39-23.bpo-44061.MvElG6.rst D Misc/NEWS.d/next/Security/2021-01-09-17-07-36.bpo-42800._dtZvW.rst D Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst D Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index c2b779538a4329..d6fd94d98499a7 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 8 -#define PY_MICRO_VERSION 10 +#define PY_MICRO_VERSION 11 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.8.10+" +#define PY_VERSION "3.8.11" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index e3dc1c5b5ec33d..119e5111bd68c2 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Mon May 3 11:26:22 2021 +# Autogenerated by Sphinx on Mon Jun 28 12:07:21 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -1358,6 +1358,10 @@ 'through their "__code__" attribute. See also the ' '"code" module.\n' '\n' + 'Accessing "__code__" raises an auditing event ' + '"object.__getattr__"\n' + 'with arguments "obj" and ""__code__"".\n' + '\n' 'A code object can be executed or evaluated by passing ' 'it (instead of a\n' 'source string) to the "exec()" or "eval()" built-in ' @@ -12233,6 +12237,10 @@ ' gives the precise instruction (this is an index into the\n' ' bytecode string of the code object).\n' '\n' + ' Accessing "f_code" raises an auditing event ' + '"object.__getattr__"\n' + ' with arguments "obj" and ""f_code"".\n' + '\n' ' Special writable attributes: "f_trace", if not "None", is a\n' ' function called for various events during code execution ' '(this\n' @@ -12316,6 +12324,9 @@ ' the exception occurred in a "try" statement with no matching\n' ' except clause or with a finally clause.\n' '\n' + ' Accessing "tb_frame" raises an auditing event\n' + ' "object.__getattr__" with arguments "obj" and ""tb_frame"".\n' + '\n' ' Special writable attribute: "tb_next" is the next level in ' 'the\n' ' stack trace (towards the frame where the exception occurred), ' diff --git a/Misc/NEWS.d/3.8.11.rst b/Misc/NEWS.d/3.8.11.rst new file mode 100644 index 00000000000000..7a9ee05efb9217 --- /dev/null +++ b/Misc/NEWS.d/3.8.11.rst @@ -0,0 +1,52 @@ +.. bpo: 44022 +.. date: 2021-05-05-17-37-04 +.. nonce: bS3XJ9 +.. release date: 2021-06-28 +.. section: Security + +mod:`http.client` now avoids infinitely reading potential HTTP headers after +a ``100 Continue`` status response from the server. + +.. + +.. bpo: 43882 +.. date: 2021-04-25-07-46-37 +.. nonce: Jpwx85 +.. section: Security + +The presence of newline or tab characters in parts of a URL could allow some +forms of attacks. + +Following the controlling specification for URLs defined by WHATWG +:func:`urllib.parse` now removes ASCII newlines and tabs from URLs, +preventing such attacks. + +.. + +.. bpo: 42800 +.. date: 2021-01-09-17-07-36 +.. nonce: _dtZvW +.. section: Security + +Audit hooks are now fired for frame.f_code, traceback.tb_frame, and +generator code/frame attribute access. + +.. + +.. bpo: 44070 +.. date: 2021-05-10-22-30-12 +.. nonce: 5bBtKx +.. section: Core and Builtins + +No longer eagerly makes import filenames absolute, except for extension +modules, which was introduced in 3.8.10. + +.. + +.. bpo: 44061 +.. date: 2021-05-07-08-39-23 +.. nonce: MvElG6 +.. section: Library + +Fix regression in previous release when calling :func:`pkgutil.iter_modules` +with a list of :class:`pathlib.Path` objects diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-05-10-22-30-12.bpo-44070.5bBtKx.rst b/Misc/NEWS.d/next/Core and Builtins/2021-05-10-22-30-12.bpo-44070.5bBtKx.rst deleted file mode 100644 index 6f7f307bda0770..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-05-10-22-30-12.bpo-44070.5bBtKx.rst +++ /dev/null @@ -1,2 +0,0 @@ -No longer eagerly makes import filenames absolute, except for extension -modules, which was introduced in 3.8.10. diff --git a/Misc/NEWS.d/next/Library/2021-05-07-08-39-23.bpo-44061.MvElG6.rst b/Misc/NEWS.d/next/Library/2021-05-07-08-39-23.bpo-44061.MvElG6.rst deleted file mode 100644 index e41f285fae9491..00000000000000 --- a/Misc/NEWS.d/next/Library/2021-05-07-08-39-23.bpo-44061.MvElG6.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix regression in previous release when calling :func:`pkgutil.iter_modules` -with a list of :class:`pathlib.Path` objects diff --git a/Misc/NEWS.d/next/Security/2021-01-09-17-07-36.bpo-42800._dtZvW.rst b/Misc/NEWS.d/next/Security/2021-01-09-17-07-36.bpo-42800._dtZvW.rst deleted file mode 100644 index d01c0c3073a503..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-01-09-17-07-36.bpo-42800._dtZvW.rst +++ /dev/null @@ -1 +0,0 @@ -Audit hooks are now fired for frame.f_code, traceback.tb_frame, and generator code/frame attribute access. diff --git a/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst b/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst deleted file mode 100644 index a326d079dff4a4..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst +++ /dev/null @@ -1,6 +0,0 @@ -The presence of newline or tab characters in parts of a URL could allow -some forms of attacks. - -Following the controlling specification for URLs defined by WHATWG -:func:`urllib.parse` now removes ASCII newlines and tabs from URLs, -preventing such attacks. diff --git a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst b/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst deleted file mode 100644 index cf6b63e3961558..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst +++ /dev/null @@ -1,2 +0,0 @@ -mod:`http.client` now avoids infinitely reading potential HTTP headers after a -``100 Continue`` status response from the server. diff --git a/README.rst b/README.rst index 49eb70f71c128e..7910dc74746c81 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.8.10 +This is Python version 3.8.11 ============================= .. image:: https://travis-ci.org/python/cpython.svg?branch=3.8 From webhook-mailer at python.org Mon Jun 28 14:36:56 2021 From: webhook-mailer at python.org (ned-deily) Date: Mon, 28 Jun 2021 18:36:56 -0000 Subject: [Python-checkins] 3.7.11 Message-ID: https://github.com/python/cpython/commit/9da28d2b3429d1bb30e082e4c9cb544d81fdae20 commit: 9da28d2b3429d1bb30e082e4c9cb544d81fdae20 branch: 3.7 author: Ned Deily committer: ned-deily date: 2021-06-28T12:51:36-04:00 summary: 3.7.11 files: A Misc/NEWS.d/3.7.11.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst D Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst D Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst D Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst D Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst D Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst D Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 308ef0af100d1f..bc0b97aef21f55 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 7 -#define PY_MICRO_VERSION 10 +#define PY_MICRO_VERSION 11 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.7.10+" +#define PY_VERSION "3.7.11" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index 98c9efd942b4e3..108e492ee75f8d 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Mon Feb 15 20:10:03 2021 +# Autogenerated by Sphinx on Mon Jun 28 12:37:39 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -5118,7 +5118,7 @@ 'character that can be any character and defaults to a space ' 'if\n' 'omitted. It is not possible to use a literal curly brace ' - '(?"{"? or\n' + '(?"{"? or\n' '?"}"?) as the *fill* character in a formatted string ' 'literal or when\n' 'using the "str.format()" method. However, it is possible ' @@ -6742,7 +6742,7 @@ '\n' 'Note that numeric literals do not include a sign; a phrase like ' '"-1"\n' - 'is actually an expression composed of the unary operator ?"-"? ' + 'is actually an expression composed of the unary operator ?"-"? ' 'and the\n' 'literal "1".\n', 'numeric-types': 'Emulating numeric types\n' diff --git a/Misc/NEWS.d/3.7.11.rst b/Misc/NEWS.d/3.7.11.rst new file mode 100644 index 00000000000000..be63cd164ae3a2 --- /dev/null +++ b/Misc/NEWS.d/3.7.11.rst @@ -0,0 +1,84 @@ +.. bpo: 44022 +.. date: 2021-05-05-17-37-04 +.. nonce: bS3XJ9 +.. release date: 2021-06-28 +.. section: Security + +mod:`http.client` now avoids infinitely reading potential HTTP headers after +a ``100 Continue`` status response from the server. + +.. + +.. bpo: 43882 +.. date: 2021-04-25-07-46-37 +.. nonce: Jpwx85 +.. section: Security + +The presence of newline or tab characters in parts of a URL could allow some +forms of attacks. + +Following the controlling specification for URLs defined by WHATWG +:func:`urllib.parse` now removes ASCII newlines and tabs from URLs, +preventing such attacks. + +.. + +.. bpo: 42988 +.. date: 2021-03-24-14-16-56 +.. nonce: P2aNco +.. section: Security + +CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module +which could be abused to read arbitrary files on the disk (directory +traversal vulnerability). Moreover, even source code of Python modules can +contain sensitive data like passwords. Vulnerability reported by David +Schw?rer. + +.. + +.. bpo: 43285 +.. date: 2021-03-13-03-48-14 +.. nonce: g-Hah3 +.. section: Security + +:mod:`ftplib` no longer trusts the IP address value returned from the server +in response to the PASV command by default. This prevents a malicious FTP +server from using the response to probe IPv4 address and port combinations +on the client network. + +Code that requires the former vulnerable behavior may set a +``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP` +instances to ``True`` to re-enable it. + +.. + +.. bpo: 43075 +.. date: 2021-01-31-05-28-14 +.. nonce: DoAXqO +.. section: Security + +Fix Regular Expression Denial of Service (ReDoS) vulnerability in +:class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable +regex has quadratic worst-case complexity and it allows cause a denial of +service when identifying crafted invalid RFCs. This ReDoS issue is on the +client side and needs remote attackers to control the HTTP server. + +.. + +.. bpo: 43660 +.. date: 2021-03-29-19-50-34 +.. nonce: scTgag +.. section: Core and Builtins + +Fix crash that happens when replacing ``sys.stderr`` with a callable that +can remove the object while an exception is being printed. Patch by Pablo +Galindo. + +.. + +.. bpo: 41561 +.. date: 2021-03-18-10-34-42 +.. nonce: pDg4w- +.. section: Tests + +Add workaround for Ubuntu's custom OpenSSL security level policy. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst deleted file mode 100644 index 98419501d9e7b8..00000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix crash that happens when replacing ``sys.stderr`` with a callable that -can remove the object while an exception is being printed. Patch by Pablo -Galindo. diff --git a/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst b/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst deleted file mode 100644 index 1c9f727e965fb8..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst +++ /dev/null @@ -1 +0,0 @@ -Fix Regular Expression Denial of Service (ReDoS) vulnerability in :class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server. diff --git a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst b/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst deleted file mode 100644 index 8312b7e885441d..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst +++ /dev/null @@ -1,8 +0,0 @@ -:mod:`ftplib` no longer trusts the IP address value returned from the server -in response to the PASV command by default. This prevents a malicious FTP -server from using the response to probe IPv4 address and port combinations -on the client network. - -Code that requires the former vulnerable behavior may set a -``trust_server_pasv_ipv4_address`` attribute on their -:class:`ftplib.FTP` instances to ``True`` to re-enable it. diff --git a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst b/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst deleted file mode 100644 index 4b42dd05305a83..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst +++ /dev/null @@ -1,4 +0,0 @@ -CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module which -could be abused to read arbitrary files on the disk (directory traversal -vulnerability). Moreover, even source code of Python modules can contain -sensitive data like passwords. Vulnerability reported by David Schw?rer. diff --git a/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst b/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst deleted file mode 100644 index a326d079dff4a4..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst +++ /dev/null @@ -1,6 +0,0 @@ -The presence of newline or tab characters in parts of a URL could allow -some forms of attacks. - -Following the controlling specification for URLs defined by WHATWG -:func:`urllib.parse` now removes ASCII newlines and tabs from URLs, -preventing such attacks. diff --git a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst b/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst deleted file mode 100644 index cf6b63e3961558..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst +++ /dev/null @@ -1,2 +0,0 @@ -mod:`http.client` now avoids infinitely reading potential HTTP headers after a -``100 Continue`` status response from the server. diff --git a/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst b/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst deleted file mode 100644 index 214350729bff6c..00000000000000 --- a/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst +++ /dev/null @@ -1 +0,0 @@ -Add workaround for Ubuntu's custom OpenSSL security level policy. diff --git a/README.rst b/README.rst index 05f56a9f0644e9..6797764b78061a 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ -This is Python version 3.7.10+ -============================== +This is Python version 3.7.11 +============================= .. image:: https://travis-ci.org/python/cpython.svg?branch=3.7 :alt: CPython build status on Travis CI From webhook-mailer at python.org Mon Jun 28 14:53:41 2021 From: webhook-mailer at python.org (ned-deily) Date: Mon, 28 Jun 2021 18:53:41 -0000 Subject: [Python-checkins] 3.6.14 Message-ID: https://github.com/python/cpython/commit/9a0099d1bf14bce417370aae6d55527417cda354 commit: 9a0099d1bf14bce417370aae6d55527417cda354 branch: 3.6 author: Ned Deily committer: ned-deily date: 2021-06-28T12:52:10-04:00 summary: 3.6.14 files: A Misc/NEWS.d/3.6.14.rst D Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst D Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst D Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst D Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst D Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index ea7fe7fb6f2bcc..1cf35ebc09679e 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 6 -#define PY_MICRO_VERSION 13 +#define PY_MICRO_VERSION 14 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.6.13+" +#define PY_VERSION "3.6.14" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index b34cbbc2dc6053..9c57887111a140 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Mon Feb 15 20:10:09 2021 +# Autogenerated by Sphinx on Mon Jun 28 12:38:05 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -4863,7 +4863,7 @@ 'character that can be any character and defaults to a space ' 'if\n' 'omitted. It is not possible to use a literal curly brace ' - '(?"{"? or\n' + '(?"{"? or\n' '?"}"?) as the *fill* character in a formatted string ' 'literal or when\n' 'using the "str.format()" method. However, it is possible ' @@ -6455,7 +6455,7 @@ '\n' 'Note that numeric literals do not include a sign; a phrase like ' '"-1"\n' - 'is actually an expression composed of the unary operator ?"-"? ' + 'is actually an expression composed of the unary operator ?"-"? ' 'and the\n' 'literal "1".\n', 'numeric-types': 'Emulating numeric types\n' diff --git a/Misc/NEWS.d/3.6.14.rst b/Misc/NEWS.d/3.6.14.rst new file mode 100644 index 00000000000000..3569f7189a3889 --- /dev/null +++ b/Misc/NEWS.d/3.6.14.rst @@ -0,0 +1,64 @@ +.. bpo: 44022 +.. date: 2021-05-05-17-37-04 +.. nonce: bS3XJ9 +.. release date: 2021-06-28 +.. section: Security + +mod:`http.client` now avoids infinitely reading potential HTTP headers after +a ``100 Continue`` status response from the server. + +.. + +.. bpo: 43882 +.. date: 2021-04-25-07-46-37 +.. nonce: Jpwx85 +.. section: Security + +The presence of newline or tab characters in parts of a URL could allow some +forms of attacks. + +Following the controlling specification for URLs defined by WHATWG +:func:`urllib.parse` now removes ASCII newlines and tabs from URLs, +preventing such attacks. + +.. + +.. bpo: 42988 +.. date: 2021-03-24-14-16-56 +.. nonce: P2aNco +.. section: Security + +CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module +which could be abused to read arbitrary files on the disk (directory +traversal vulnerability). Moreover, even source code of Python modules can +contain sensitive data like passwords. Vulnerability reported by David +Schw?rer. + +.. + +.. bpo: 43285 +.. date: 2021-03-13-03-48-14 +.. nonce: g-Hah3 +.. section: Security + +:mod:`ftplib` no longer trusts the IP address value returned from the server +in response to the PASV command by default. This prevents a malicious FTP +server from using the response to probe IPv4 address and port combinations +on the client network. + +Code that requires the former vulnerable behavior may set a +``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP` +instances to ``True`` to re-enable it. + +.. + +.. bpo: 43075 +.. date: 2021-01-31-05-28-14 +.. nonce: DoAXqO +.. section: Security + +Fix Regular Expression Denial of Service (ReDoS) vulnerability in +:class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable +regex has quadratic worst-case complexity and it allows cause a denial of +service when identifying crafted invalid RFCs. This ReDoS issue is on the +client side and needs remote attackers to control the HTTP server. diff --git a/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst b/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst deleted file mode 100644 index 1c9f727e965fb8..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst +++ /dev/null @@ -1 +0,0 @@ -Fix Regular Expression Denial of Service (ReDoS) vulnerability in :class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server. diff --git a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst b/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst deleted file mode 100644 index 8312b7e885441d..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst +++ /dev/null @@ -1,8 +0,0 @@ -:mod:`ftplib` no longer trusts the IP address value returned from the server -in response to the PASV command by default. This prevents a malicious FTP -server from using the response to probe IPv4 address and port combinations -on the client network. - -Code that requires the former vulnerable behavior may set a -``trust_server_pasv_ipv4_address`` attribute on their -:class:`ftplib.FTP` instances to ``True`` to re-enable it. diff --git a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst b/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst deleted file mode 100644 index 4b42dd05305a83..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst +++ /dev/null @@ -1,4 +0,0 @@ -CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module which -could be abused to read arbitrary files on the disk (directory traversal -vulnerability). Moreover, even source code of Python modules can contain -sensitive data like passwords. Vulnerability reported by David Schw?rer. diff --git a/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst b/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst deleted file mode 100644 index a326d079dff4a4..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst +++ /dev/null @@ -1,6 +0,0 @@ -The presence of newline or tab characters in parts of a URL could allow -some forms of attacks. - -Following the controlling specification for URLs defined by WHATWG -:func:`urllib.parse` now removes ASCII newlines and tabs from URLs, -preventing such attacks. diff --git a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst b/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst deleted file mode 100644 index cf6b63e3961558..00000000000000 --- a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst +++ /dev/null @@ -1,2 +0,0 @@ -mod:`http.client` now avoids infinitely reading potential HTTP headers after a -``100 Continue`` status response from the server. diff --git a/README.rst b/README.rst index 2a6ec33095dddb..08bd859e3a8db8 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ -This is Python version 3.6.13+ -============================== +This is Python version 3.6.14 +============================= .. image:: https://travis-ci.org/python/cpython.svg?branch=3.6 :alt: CPython build status on Travis CI From webhook-mailer at python.org Mon Jun 28 18:02:29 2021 From: webhook-mailer at python.org (iritkatriel) Date: Mon, 28 Jun 2021 22:02:29 -0000 Subject: [Python-checkins] [doc] Fix typo in what's new in 3.10 (GH-26911) Message-ID: https://github.com/python/cpython/commit/dcb1caef5bd8e90e1ecb4c07d7114e51b49fe37a commit: dcb1caef5bd8e90e1ecb4c07d7114e51b49fe37a branch: main author: Rodrigo Gir?o Serr?o committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-28T23:02:18+01:00 summary: [doc] Fix typo in what's new in 3.10 (GH-26911) The `try` statement was missing a colon and therefore was not exemplifying the correct `SyntaxError`. files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 81481327b43e9b..cd3db5550a6bf4 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -278,7 +278,7 @@ have been incorporated. Some of the most notable ones are as follows: .. code-block:: python - >>> try + >>> try: ... x = 2 ... something = 3 File "", line 3 From webhook-mailer at python.org Mon Jun 28 20:03:43 2021 From: webhook-mailer at python.org (vstinner) Date: Tue, 29 Jun 2021 00:03:43 -0000 Subject: [Python-checkins] bpo-44434: Remove useless calls to PyThread_exit_thread() (GH-26943) Message-ID: https://github.com/python/cpython/commit/48e3a1d95aee013974121fcafe19816c0e9a41da commit: 48e3a1d95aee013974121fcafe19816c0e9a41da branch: main author: Victor Stinner committer: vstinner date: 2021-06-29T02:03:30+02:00 summary: bpo-44434: Remove useless calls to PyThread_exit_thread() (GH-26943) Remove useless calls to PyThread_exit_thread() in two unit tests of _testcapi and _testembed modules. Co-authored-by: Alexey Izbyshev files: M Modules/_testcapimodule.c M Programs/_testembed.c diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index b983deeac6aafb..7ac0e84d2efb0d 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -4300,8 +4300,6 @@ temporary_c_thread(void *data) PyGILState_Release(state); PyThread_release_lock(test_c_thread->exit_event); - - PyThread_exit_thread(); } static PyObject * diff --git a/Programs/_testembed.c b/Programs/_testembed.c index d963cb3dc7e20e..64a8714db02f3c 100644 --- a/Programs/_testembed.c +++ b/Programs/_testembed.c @@ -269,8 +269,6 @@ static void bpo20891_thread(void *lockp) PyGILState_Release(state); PyThread_release_lock(lock); - - PyThread_exit_thread(); } static int test_bpo20891(void) From webhook-mailer at python.org Tue Jun 29 04:27:28 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Tue, 29 Jun 2021 08:27:28 -0000 Subject: [Python-checkins] bpo-12022: Change error type for bad objects in "with" and "async with" (GH-26809) Message-ID: https://github.com/python/cpython/commit/20a88004bae8ead66a205a125e1fe979376fc3ea commit: 20a88004bae8ead66a205a125e1fe979376fc3ea branch: main author: Serhiy Storchaka committer: serhiy-storchaka date: 2021-06-29T11:27:04+03:00 summary: bpo-12022: Change error type for bad objects in "with" and "async with" (GH-26809) A TypeError is now raised instead of an AttributeError in "with" and "async with" statements for objects which do not support the context manager or asynchronous context manager protocols correspondingly. files: A Misc/NEWS.d/next/Core and Builtins/2021-06-20-10-53-21.bpo-12022.SW240M.rst M Doc/whatsnew/3.11.rst M Lib/test/test_contextlib.py M Lib/test/test_coroutines.py M Lib/test/test_with.py M Python/ceval.c diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index cc88c4166ec1a..be1423b9f44b3 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -76,6 +76,12 @@ Other Language Changes ====================== +* A :exc:`TypeError` is now raised instead of an :exc:`AttributeError` in + :keyword:`with` and :keyword:`async with` statements for objects which do not + support the :term:`context manager` or :term:`asynchronous context manager` + protocols correspondingly. + (Contributed by Serhiy Storchaka in :issue:`12022`.) + New Modules =========== diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py index 453ef6c9f0832..dbc3f5fbe2b27 100644 --- a/Lib/test/test_contextlib.py +++ b/Lib/test/test_contextlib.py @@ -491,7 +491,7 @@ def __unter__(self): def __exit__(self, *exc): pass - with self.assertRaises(AttributeError): + with self.assertRaisesRegex(TypeError, 'the context manager'): with mycontext(): pass @@ -503,7 +503,7 @@ def __enter__(self): def __uxit__(self, *exc): pass - with self.assertRaises(AttributeError): + with self.assertRaisesRegex(TypeError, 'the context manager.*__exit__'): with mycontext(): pass diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index a6a199e323c5f..9b83244b5006d 100644 --- a/Lib/test/test_coroutines.py +++ b/Lib/test/test_coroutines.py @@ -1212,7 +1212,7 @@ async def foo(): async with CM(): body_executed = True - with self.assertRaisesRegex(AttributeError, '__aexit__'): + with self.assertRaisesRegex(TypeError, 'asynchronous context manager.*__aexit__'): run_async(foo()) self.assertIs(body_executed, False) @@ -1228,7 +1228,7 @@ async def foo(): async with CM(): body_executed = True - with self.assertRaisesRegex(AttributeError, '__aenter__'): + with self.assertRaisesRegex(TypeError, 'asynchronous context manager'): run_async(foo()) self.assertIs(body_executed, False) @@ -1243,7 +1243,7 @@ async def foo(): async with CM(): body_executed = True - with self.assertRaisesRegex(AttributeError, '__aenter__'): + with self.assertRaisesRegex(TypeError, 'asynchronous context manager'): run_async(foo()) self.assertIs(body_executed, False) diff --git a/Lib/test/test_with.py b/Lib/test/test_with.py index f21bf65fed849..07522bda6a558 100644 --- a/Lib/test/test_with.py +++ b/Lib/test/test_with.py @@ -117,7 +117,7 @@ def __exit__(self, type, value, traceback): def fooLacksEnter(): foo = LacksEnter() with foo: pass - self.assertRaisesRegex(AttributeError, '__enter__', fooLacksEnter) + self.assertRaisesRegex(TypeError, 'the context manager', fooLacksEnter) def testEnterAttributeError2(self): class LacksEnterAndExit(object): @@ -126,7 +126,7 @@ class LacksEnterAndExit(object): def fooLacksEnterAndExit(): foo = LacksEnterAndExit() with foo: pass - self.assertRaisesRegex(AttributeError, '__enter__', fooLacksEnterAndExit) + self.assertRaisesRegex(TypeError, 'the context manager', fooLacksEnterAndExit) def testExitAttributeError(self): class LacksExit(object): @@ -136,7 +136,7 @@ def __enter__(self): def fooLacksExit(): foo = LacksExit() with foo: pass - self.assertRaisesRegex(AttributeError, '__exit__', fooLacksExit) + self.assertRaisesRegex(TypeError, 'the context manager.*__exit__', fooLacksExit) def assertRaisesSyntaxError(self, codestr): def shouldRaiseSyntaxError(s): diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-20-10-53-21.bpo-12022.SW240M.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-20-10-53-21.bpo-12022.SW240M.rst new file mode 100644 index 0000000000000..98c42283169d8 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-20-10-53-21.bpo-12022.SW240M.rst @@ -0,0 +1,4 @@ +A :exc:`TypeError` is now raised instead of an :exc:`AttributeError` in +:keyword:`with` and :keyword:`async with` statements for objects which do +not support the :term:`context manager` or :term:`asynchronous context +manager` protocols correspondingly. diff --git a/Python/ceval.c b/Python/ceval.c index 3f961f60c081c..2ae36b3d28edd 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -82,7 +82,6 @@ static void format_exc_check_arg(PyThreadState *, PyObject *, const char *, PyOb static void format_exc_unbound(PyThreadState *tstate, PyCodeObject *co, int oparg); static PyObject * unicode_concatenate(PyThreadState *, PyObject *, PyObject *, PyFrameObject *, const _Py_CODEUNIT *); -static PyObject * special_lookup(PyThreadState *, PyObject *, _Py_Identifier *); static int check_args_iterable(PyThreadState *, PyObject *func, PyObject *vararg); static void format_kwargs_error(PyThreadState *, PyObject *func, PyObject *kwargs); static void format_awaitable_error(PyThreadState *, PyTypeObject *, int, int); @@ -3844,13 +3843,26 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) _Py_IDENTIFIER(__aenter__); _Py_IDENTIFIER(__aexit__); PyObject *mgr = TOP(); - PyObject *enter = special_lookup(tstate, mgr, &PyId___aenter__); PyObject *res; + PyObject *enter = _PyObject_LookupSpecial(mgr, &PyId___aenter__); if (enter == NULL) { + if (!_PyErr_Occurred(tstate)) { + _PyErr_Format(tstate, PyExc_TypeError, + "'%.200s' object does not support the " + "asynchronous context manager protocol", + Py_TYPE(mgr)->tp_name); + } goto error; } - PyObject *exit = special_lookup(tstate, mgr, &PyId___aexit__); + PyObject *exit = _PyObject_LookupSpecial(mgr, &PyId___aexit__); if (exit == NULL) { + if (!_PyErr_Occurred(tstate)) { + _PyErr_Format(tstate, PyExc_TypeError, + "'%.200s' object does not support the " + "asynchronous context manager protocol " + "(missed __aexit__ method)", + Py_TYPE(mgr)->tp_name); + } Py_DECREF(enter); goto error; } @@ -3869,13 +3881,26 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) _Py_IDENTIFIER(__enter__); _Py_IDENTIFIER(__exit__); PyObject *mgr = TOP(); - PyObject *enter = special_lookup(tstate, mgr, &PyId___enter__); PyObject *res; + PyObject *enter = _PyObject_LookupSpecial(mgr, &PyId___enter__); if (enter == NULL) { + if (!_PyErr_Occurred(tstate)) { + _PyErr_Format(tstate, PyExc_TypeError, + "'%.200s' object does not support the " + "context manager protocol", + Py_TYPE(mgr)->tp_name); + } goto error; } - PyObject *exit = special_lookup(tstate, mgr, &PyId___exit__); + PyObject *exit = _PyObject_LookupSpecial(mgr, &PyId___exit__); if (exit == NULL) { + if (!_PyErr_Occurred(tstate)) { + _PyErr_Format(tstate, PyExc_TypeError, + "'%.200s' object does not support the " + "context manager protocol " + "(missed __exit__ method)", + Py_TYPE(mgr)->tp_name); + } Py_DECREF(enter); goto error; } @@ -5110,19 +5135,6 @@ PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals, } -static PyObject * -special_lookup(PyThreadState *tstate, PyObject *o, _Py_Identifier *id) -{ - PyObject *res; - res = _PyObject_LookupSpecial(o, id); - if (res == NULL && !_PyErr_Occurred(tstate)) { - _PyErr_SetObject(tstate, PyExc_AttributeError, _PyUnicode_FromId(id)); - return NULL; - } - return res; -} - - /* Logic for the raise statement (too complicated for inlining). This *consumes* a reference count to each of its arguments. */ static int From webhook-mailer at python.org Tue Jun 29 04:28:24 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Tue, 29 Jun 2021 08:28:24 -0000 Subject: [Python-checkins] bpo-44471: Change error type for bad objects in ExitStack.enter_context() (GH-26820) Message-ID: https://github.com/python/cpython/commit/6cb145d23f5cf69b6d7414877d142747cd3d134c commit: 6cb145d23f5cf69b6d7414877d142747cd3d134c branch: main author: Serhiy Storchaka committer: serhiy-storchaka date: 2021-06-29T11:28:15+03:00 summary: bpo-44471: Change error type for bad objects in ExitStack.enter_context() (GH-26820) A TypeError is now raised instead of an AttributeError in ExitStack.enter_context() and AsyncExitStack.enter_async_context() for objects which do not support the context manager or asynchronous context manager protocols correspondingly. files: A Misc/NEWS.d/next/Library/2021-06-21-10-46-58.bpo-44471.2QjXv_.rst M Doc/library/contextlib.rst M Doc/whatsnew/3.11.rst M Lib/contextlib.py M Lib/test/test_contextlib.py M Lib/test/test_contextlib_async.py diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index c9065be32e638..7ac3856819593 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -515,6 +515,10 @@ Functions and classes provided: These context managers may suppress exceptions just as they normally would if used directly as part of a :keyword:`with` statement. + ... versionchanged:: 3.11 + Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* + is not a context manager. + .. method:: push(exit) Adds a context manager's :meth:`__exit__` method to the callback stack. @@ -585,6 +589,10 @@ Functions and classes provided: Similar to :meth:`enter_context` but expects an asynchronous context manager. + ... versionchanged:: 3.11 + Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* + is not an asynchronous context manager. + .. method:: push_async_exit(exit) Similar to :meth:`push` but expects either an asynchronous context manager diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index be1423b9f44b3..0ee4d29227a50 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -75,6 +75,12 @@ New Features Other Language Changes ====================== +A :exc:`TypeError` is now raised instead of an :exc:`AttributeError` in +:meth:`contextlib.ExitStack.enter_context` and +:meth:`contextlib.AsyncExitStack.enter_async_context` for objects which do not +support the :term:`context manager` or :term:`asynchronous context manager` +protocols correspondingly. +(Contributed by Serhiy Storchaka in :issue:`44471`.) * A :exc:`TypeError` is now raised instead of an :exc:`AttributeError` in :keyword:`with` and :keyword:`async with` statements for objects which do not diff --git a/Lib/contextlib.py b/Lib/contextlib.py index 1a8ef6122c8d4..004d1037b78a4 100644 --- a/Lib/contextlib.py +++ b/Lib/contextlib.py @@ -473,9 +473,14 @@ def enter_context(self, cm): """ # We look up the special methods on the type to match the with # statement. - _cm_type = type(cm) - _exit = _cm_type.__exit__ - result = _cm_type.__enter__(cm) + cls = type(cm) + try: + _enter = cls.__enter__ + _exit = cls.__exit__ + except AttributeError: + raise TypeError(f"'{cls.__module__}.{cls.__qualname__}' object does " + f"not support the context manager protocol") from None + result = _enter(cm) self._push_cm_exit(cm, _exit) return result @@ -600,9 +605,15 @@ async def enter_async_context(self, cm): If successful, also pushes its __aexit__ method as a callback and returns the result of the __aenter__ method. """ - _cm_type = type(cm) - _exit = _cm_type.__aexit__ - result = await _cm_type.__aenter__(cm) + cls = type(cm) + try: + _enter = cls.__aenter__ + _exit = cls.__aexit__ + except AttributeError: + raise TypeError(f"'{cls.__module__}.{cls.__qualname__}' object does " + f"not support the asynchronous context manager protocol" + ) from None + result = await _enter(cm) self._push_async_cm_exit(cm, _exit) return result diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py index dbc3f5fbe2b27..9c27866cd661c 100644 --- a/Lib/test/test_contextlib.py +++ b/Lib/test/test_contextlib.py @@ -661,6 +661,25 @@ def _exit(): result.append(2) self.assertEqual(result, [1, 2, 3, 4]) + def test_enter_context_errors(self): + class LacksEnterAndExit: + pass + class LacksEnter: + def __exit__(self, *exc_info): + pass + class LacksExit: + def __enter__(self): + pass + + with self.exit_stack() as stack: + with self.assertRaisesRegex(TypeError, 'the context manager'): + stack.enter_context(LacksEnterAndExit()) + with self.assertRaisesRegex(TypeError, 'the context manager'): + stack.enter_context(LacksEnter()) + with self.assertRaisesRegex(TypeError, 'the context manager'): + stack.enter_context(LacksExit()) + self.assertFalse(stack._exit_callbacks) + def test_close(self): result = [] with self.exit_stack() as stack: @@ -886,9 +905,11 @@ def test_excessive_nesting(self): def test_instance_bypass(self): class Example(object): pass cm = Example() + cm.__enter__ = object() cm.__exit__ = object() stack = self.exit_stack() - self.assertRaises(AttributeError, stack.enter_context, cm) + with self.assertRaisesRegex(TypeError, 'the context manager'): + stack.enter_context(cm) stack.push(cm) self.assertIs(stack._exit_callbacks[-1][1], cm) diff --git a/Lib/test/test_contextlib_async.py b/Lib/test/test_contextlib_async.py index cbc82dfd8f8d0..7904abff7d1aa 100644 --- a/Lib/test/test_contextlib_async.py +++ b/Lib/test/test_contextlib_async.py @@ -483,7 +483,7 @@ async def __aexit__(self, *exc_details): 1/0 @_async_test - async def test_async_enter_context(self): + async def test_enter_async_context(self): class TestCM(object): async def __aenter__(self): result.append(1) @@ -504,6 +504,26 @@ async def _exit(): self.assertEqual(result, [1, 2, 3, 4]) + @_async_test + async def test_enter_async_context_errors(self): + class LacksEnterAndExit: + pass + class LacksEnter: + async def __aexit__(self, *exc_info): + pass + class LacksExit: + async def __aenter__(self): + pass + + async with self.exit_stack() as stack: + with self.assertRaisesRegex(TypeError, 'asynchronous context manager'): + await stack.enter_async_context(LacksEnterAndExit()) + with self.assertRaisesRegex(TypeError, 'asynchronous context manager'): + await stack.enter_async_context(LacksEnter()) + with self.assertRaisesRegex(TypeError, 'asynchronous context manager'): + await stack.enter_async_context(LacksExit()) + self.assertFalse(stack._exit_callbacks) + @_async_test async def test_async_exit_exception_chaining(self): # Ensure exception chaining matches the reference behaviour @@ -536,6 +556,18 @@ async def suppress_exc(*exc_details): self.assertIsInstance(inner_exc, ValueError) self.assertIsInstance(inner_exc.__context__, ZeroDivisionError) + @_async_test + async def test_instance_bypass_async(self): + class Example(object): pass + cm = Example() + cm.__aenter__ = object() + cm.__aexit__ = object() + stack = self.exit_stack() + with self.assertRaisesRegex(TypeError, 'asynchronous context manager'): + await stack.enter_async_context(cm) + stack.push_async_exit(cm) + self.assertIs(stack._exit_callbacks[-1][1], cm) + class TestAsyncNullcontext(unittest.TestCase): @_async_test diff --git a/Misc/NEWS.d/next/Library/2021-06-21-10-46-58.bpo-44471.2QjXv_.rst b/Misc/NEWS.d/next/Library/2021-06-21-10-46-58.bpo-44471.2QjXv_.rst new file mode 100644 index 0000000000000..0675ef3262a09 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-21-10-46-58.bpo-44471.2QjXv_.rst @@ -0,0 +1,5 @@ +A :exc:`TypeError` is now raised instead of an :exc:`AttributeError` in +:meth:`contextlib.ExitStack.enter_context` and +:meth:`contextlib.AsyncExitStack.enter_async_context` for objects which do +not support the :term:`context manager` or :term:`asynchronous context +manager` protocols correspondingly. From webhook-mailer at python.org Tue Jun 29 06:54:36 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 29 Jun 2021 10:54:36 -0000 Subject: [Python-checkins] bpo-42588: Update the docs for the TopologicalSorter.static_order() method (GH-26834) Message-ID: https://github.com/python/cpython/commit/0d7f7975d55eff7e3dfcebd14e765fc6cd7d3e40 commit: 0d7f7975d55eff7e3dfcebd14e765fc6cd7d3e40 branch: main author: andrei kulakov committer: pablogsal date: 2021-06-29T11:54:28+01:00 summary: bpo-42588: Update the docs for the TopologicalSorter.static_order() method (GH-26834) files: M Doc/library/graphlib.rst diff --git a/Doc/library/graphlib.rst b/Doc/library/graphlib.rst index 0faca2186b268..2bc80da4ead2a 100644 --- a/Doc/library/graphlib.rst +++ b/Doc/library/graphlib.rst @@ -154,9 +154,10 @@ .. method:: static_order() - Returns an iterable of nodes in a topological order. Using this method - does not require to call :meth:`TopologicalSorter.prepare` or - :meth:`TopologicalSorter.done`. This method is equivalent to:: + Returns an iterator object which will iterate over nodes in a topological + order. When using this method, :meth:`~TopologicalSorter.prepare` and + :meth:`~TopologicalSorter.done` should not be called. This method is + equivalent to:: def static_order(self): self.prepare() @@ -206,4 +207,4 @@ The :mod:`graphlib` module defines the following exception classes: The detected cycle can be accessed via the second element in the :attr:`~CycleError.args` attribute of the exception instance and consists in a list of nodes, such that each node is, in the graph, an immediate predecessor of the next node in the list. In the reported list, - the first and the last node will be the same, to make it clear that it is cyclic. \ No newline at end of file + the first and the last node will be the same, to make it clear that it is cyclic. From webhook-mailer at python.org Tue Jun 29 07:12:28 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 29 Jun 2021 11:12:28 -0000 Subject: [Python-checkins] [doc] Fix typo in what's new in 3.10 (GH-26911) (GH-26940) Message-ID: https://github.com/python/cpython/commit/a6acd1ab08cf684d63beb290e246699dce54b539 commit: a6acd1ab08cf684d63beb290e246699dce54b539 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-29T12:12:23+01:00 summary: [doc] Fix typo in what's new in 3.10 (GH-26911) (GH-26940) The `try` statement was missing a colon and therefore was not exemplifying the correct `SyntaxError`. (cherry picked from commit dcb1caef5bd8e90e1ecb4c07d7114e51b49fe37a) Co-authored-by: Rodrigo Gir?o Serr?o files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 5e510d8f6ed3a..7ac627ba19b0e 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -278,7 +278,7 @@ have been incorporated. Some of the most notable ones are as follows: .. code-block:: python - >>> try + >>> try: ... x = 2 ... something = 3 File "", line 3 From webhook-mailer at python.org Tue Jun 29 07:14:56 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 29 Jun 2021 11:14:56 -0000 Subject: [Python-checkins] bpo-42588: Update the docs for the TopologicalSorter.static_order() method (GH-26834) Message-ID: https://github.com/python/cpython/commit/d9fc4c3deb617beb1d0bbfdb4efc905a4192ff0a commit: d9fc4c3deb617beb1d0bbfdb4efc905a4192ff0a branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-29T04:14:52-07:00 summary: bpo-42588: Update the docs for the TopologicalSorter.static_order() method (GH-26834) (cherry picked from commit 0d7f7975d55eff7e3dfcebd14e765fc6cd7d3e40) Co-authored-by: andrei kulakov files: M Doc/library/graphlib.rst diff --git a/Doc/library/graphlib.rst b/Doc/library/graphlib.rst index 0faca2186b268..2bc80da4ead2a 100644 --- a/Doc/library/graphlib.rst +++ b/Doc/library/graphlib.rst @@ -154,9 +154,10 @@ .. method:: static_order() - Returns an iterable of nodes in a topological order. Using this method - does not require to call :meth:`TopologicalSorter.prepare` or - :meth:`TopologicalSorter.done`. This method is equivalent to:: + Returns an iterator object which will iterate over nodes in a topological + order. When using this method, :meth:`~TopologicalSorter.prepare` and + :meth:`~TopologicalSorter.done` should not be called. This method is + equivalent to:: def static_order(self): self.prepare() @@ -206,4 +207,4 @@ The :mod:`graphlib` module defines the following exception classes: The detected cycle can be accessed via the second element in the :attr:`~CycleError.args` attribute of the exception instance and consists in a list of nodes, such that each node is, in the graph, an immediate predecessor of the next node in the list. In the reported list, - the first and the last node will be the same, to make it clear that it is cyclic. \ No newline at end of file + the first and the last node will be the same, to make it clear that it is cyclic. From webhook-mailer at python.org Tue Jun 29 07:16:57 2021 From: webhook-mailer at python.org (JulienPalard) Date: Tue, 29 Jun 2021 11:16:57 -0000 Subject: [Python-checkins] Doc: Remove trailing whitespaces. (GH-26953) Message-ID: https://github.com/python/cpython/commit/50148cacfaa79d199b71fec89c2dbe7efbae41ca commit: 50148cacfaa79d199b71fec89c2dbe7efbae41ca branch: main author: Julien Palard committer: JulienPalard date: 2021-06-29T13:16:53+02:00 summary: Doc: Remove trailing whitespaces. (GH-26953) files: M Doc/whatsnew/3.11.rst diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 0ee4d29227a50..8e3d5f31754c8 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -76,15 +76,15 @@ Other Language Changes ====================== A :exc:`TypeError` is now raised instead of an :exc:`AttributeError` in -:meth:`contextlib.ExitStack.enter_context` and +:meth:`contextlib.ExitStack.enter_context` and :meth:`contextlib.AsyncExitStack.enter_async_context` for objects which do not support the :term:`context manager` or :term:`asynchronous context manager` protocols correspondingly. (Contributed by Serhiy Storchaka in :issue:`44471`.) -* A :exc:`TypeError` is now raised instead of an :exc:`AttributeError` in +* A :exc:`TypeError` is now raised instead of an :exc:`AttributeError` in :keyword:`with` and :keyword:`async with` statements for objects which do not - support the :term:`context manager` or :term:`asynchronous context manager` + support the :term:`context manager` or :term:`asynchronous context manager` protocols correspondingly. (Contributed by Serhiy Storchaka in :issue:`12022`.) From webhook-mailer at python.org Tue Jun 29 10:19:14 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 29 Jun 2021 14:19:14 -0000 Subject: [Python-checkins] bpo-42588: Update the docs for the TopologicalSorter.static_order() method (GH-26834) (GH-26952) Message-ID: https://github.com/python/cpython/commit/3ba65cdcefcec7866be482138a5ea8aafbd07e59 commit: 3ba65cdcefcec7866be482138a5ea8aafbd07e59 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-29T15:19:05+01:00 summary: bpo-42588: Update the docs for the TopologicalSorter.static_order() method (GH-26834) (GH-26952) (cherry picked from commit 0d7f7975d55eff7e3dfcebd14e765fc6cd7d3e40) Co-authored-by: andrei kulakov Co-authored-by: andrei kulakov files: M Doc/library/graphlib.rst diff --git a/Doc/library/graphlib.rst b/Doc/library/graphlib.rst index 0faca2186b268..2bc80da4ead2a 100644 --- a/Doc/library/graphlib.rst +++ b/Doc/library/graphlib.rst @@ -154,9 +154,10 @@ .. method:: static_order() - Returns an iterable of nodes in a topological order. Using this method - does not require to call :meth:`TopologicalSorter.prepare` or - :meth:`TopologicalSorter.done`. This method is equivalent to:: + Returns an iterator object which will iterate over nodes in a topological + order. When using this method, :meth:`~TopologicalSorter.prepare` and + :meth:`~TopologicalSorter.done` should not be called. This method is + equivalent to:: def static_order(self): self.prepare() @@ -206,4 +207,4 @@ The :mod:`graphlib` module defines the following exception classes: The detected cycle can be accessed via the second element in the :attr:`~CycleError.args` attribute of the exception instance and consists in a list of nodes, such that each node is, in the graph, an immediate predecessor of the next node in the list. In the reported list, - the first and the last node will be the same, to make it clear that it is cyclic. \ No newline at end of file + the first and the last node will be the same, to make it clear that it is cyclic. From webhook-mailer at python.org Tue Jun 29 10:39:39 2021 From: webhook-mailer at python.org (vstinner) Date: Tue, 29 Jun 2021 14:39:39 -0000 Subject: [Python-checkins] bpo-44531: Fix type_repr() if tp_name is NULL (GH-26948) Message-ID: https://github.com/python/cpython/commit/823460daa9fab3d0cf00ec553d1e35635ef73d40 commit: 823460daa9fab3d0cf00ec553d1e35635ef73d40 branch: main author: Victor Stinner committer: vstinner date: 2021-06-29T16:39:29+02:00 summary: bpo-44531: Fix type_repr() if tp_name is NULL (GH-26948) Allow to call type_repr() on a type which is not fully initialized yet. This fix helps debugging crashes occurring early at Python initialization. files: M Objects/typeobject.c diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 3c766e9230e2b..8ee4e813ee521 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1065,6 +1065,12 @@ static PyGetSetDef type_getsets[] = { static PyObject * type_repr(PyTypeObject *type) { + if (type->tp_name == NULL) { + // type_repr() called before the type is fully initialized + // by PyType_Ready(). + return PyUnicode_FromFormat("", type); + } + PyObject *mod, *name, *rtn; mod = type_module(type, NULL); From webhook-mailer at python.org Tue Jun 29 13:28:13 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 29 Jun 2021 17:28:13 -0000 Subject: [Python-checkins] bpo-38062: [doc] clarify that atexit uses equality comparisons internally. (GH-26935) Message-ID: https://github.com/python/cpython/commit/12803c59d54ff1a45a5b08cef82652ef199b3b07 commit: 12803c59d54ff1a45a5b08cef82652ef199b3b07 branch: main author: Jack DeVries <58614260+jdevries3133 at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-29T18:28:03+01:00 summary: bpo-38062: [doc] clarify that atexit uses equality comparisons internally. (GH-26935) files: A Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst M Doc/library/atexit.rst diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index e6fa33ac3eaa3..f7f038107d11f 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -48,11 +48,12 @@ internal error is detected, or when :func:`os._exit` is called. .. function:: unregister(func) - Remove *func* from the list of functions to be run at interpreter - shutdown. After calling :func:`unregister`, *func* is guaranteed not to be - called when the interpreter shuts down, even if it was registered more than - once. :func:`unregister` silently does nothing if *func* was not previously - registered. + Remove *func* from the list of functions to be run at interpreter shutdown. + :func:`unregister` silently does nothing if *func* was not previously + registered. If *func* has been registered more than once, every occurrence + of that function in the :mod:`atexit` call stack will be removed. Equality + comparisons (``==``) are used internally during unregistration, so function + references do not need to have matching identities. .. seealso:: diff --git a/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst b/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst new file mode 100644 index 0000000000000..1d90096e20bfa --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst @@ -0,0 +1 @@ +Clarify that atexit uses equality comparisons internally. From webhook-mailer at python.org Tue Jun 29 13:52:57 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 29 Jun 2021 17:52:57 -0000 Subject: [Python-checkins] bpo-38062: [doc] clarify that atexit uses equality comparisons internally. (GH-26935) (GH-26956) Message-ID: https://github.com/python/cpython/commit/08aa26e4355da6f916da0c97d00774800ee0fc46 commit: 08aa26e4355da6f916da0c97d00774800ee0fc46 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-29T18:52:27+01:00 summary: bpo-38062: [doc] clarify that atexit uses equality comparisons internally. (GH-26935) (GH-26956) (cherry picked from commit 12803c59d54ff1a45a5b08cef82652ef199b3b07) Co-authored-by: Jack DeVries <58614260+jdevries3133 at users.noreply.github.com> files: A Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst M Doc/library/atexit.rst diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index e6fa33ac3eaa3..f7f038107d11f 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -48,11 +48,12 @@ internal error is detected, or when :func:`os._exit` is called. .. function:: unregister(func) - Remove *func* from the list of functions to be run at interpreter - shutdown. After calling :func:`unregister`, *func* is guaranteed not to be - called when the interpreter shuts down, even if it was registered more than - once. :func:`unregister` silently does nothing if *func* was not previously - registered. + Remove *func* from the list of functions to be run at interpreter shutdown. + :func:`unregister` silently does nothing if *func* was not previously + registered. If *func* has been registered more than once, every occurrence + of that function in the :mod:`atexit` call stack will be removed. Equality + comparisons (``==``) are used internally during unregistration, so function + references do not need to have matching identities. .. seealso:: diff --git a/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst b/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst new file mode 100644 index 0000000000000..1d90096e20bfa --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst @@ -0,0 +1 @@ +Clarify that atexit uses equality comparisons internally. From webhook-mailer at python.org Tue Jun 29 13:53:11 2021 From: webhook-mailer at python.org (iritkatriel) Date: Tue, 29 Jun 2021 17:53:11 -0000 Subject: [Python-checkins] bpo-38062: [doc] clarify that atexit uses equality comparisons internally. (GH-26935) (GH-26957) Message-ID: https://github.com/python/cpython/commit/02859df10591789c72eb185a4f7dd9cc1ea8dcbb commit: 02859df10591789c72eb185a4f7dd9cc1ea8dcbb branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com> date: 2021-06-29T18:53:07+01:00 summary: bpo-38062: [doc] clarify that atexit uses equality comparisons internally. (GH-26935) (GH-26957) (cherry picked from commit 12803c59d54ff1a45a5b08cef82652ef199b3b07) Co-authored-by: Jack DeVries <58614260+jdevries3133 at users.noreply.github.com> files: A Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst M Doc/library/atexit.rst diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index e6fa33ac3eaa3..f7f038107d11f 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -48,11 +48,12 @@ internal error is detected, or when :func:`os._exit` is called. .. function:: unregister(func) - Remove *func* from the list of functions to be run at interpreter - shutdown. After calling :func:`unregister`, *func* is guaranteed not to be - called when the interpreter shuts down, even if it was registered more than - once. :func:`unregister` silently does nothing if *func* was not previously - registered. + Remove *func* from the list of functions to be run at interpreter shutdown. + :func:`unregister` silently does nothing if *func* was not previously + registered. If *func* has been registered more than once, every occurrence + of that function in the :mod:`atexit` call stack will be removed. Equality + comparisons (``==``) are used internally during unregistration, so function + references do not need to have matching identities. .. seealso:: diff --git a/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst b/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst new file mode 100644 index 0000000000000..1d90096e20bfa --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2021-06-28-12-13-48.bpo-38062.9Ehp9O.rst @@ -0,0 +1 @@ +Clarify that atexit uses equality comparisons internally. From webhook-mailer at python.org Tue Jun 29 18:58:56 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 29 Jun 2021 22:58:56 -0000 Subject: [Python-checkins] bpo-44523: Remove the pass-through for hash() in weakref proxy objects (GH-26950) Message-ID: https://github.com/python/cpython/commit/e2fea101fd5517f33371b04432842b971021c3bf commit: e2fea101fd5517f33371b04432842b971021c3bf branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-29T23:58:45+01:00 summary: bpo-44523: Remove the pass-through for hash() in weakref proxy objects (GH-26950) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst M Lib/test/test_weakref.py M Objects/weakrefobject.c diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 56a42f055d0b54..dd5a781ed59d8b 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -422,14 +422,20 @@ def __reversed__(self): self.assertEqual("".join(reversed(weakref.proxy(obj))), "cba") def test_proxy_hash(self): - cool_hash = 299_792_458 - class MyObj: def __hash__(self): - return cool_hash + return 42 + + obj = MyObj() + with self.assertRaises(TypeError): + hash(weakref.proxy(obj)) + + class MyObj: + __hash__ = None obj = MyObj() - self.assertEqual(hash(weakref.proxy(obj)), cool_hash) + with self.assertRaises(TypeError): + hash(weakref.proxy(obj)) def test_getweakrefcount(self): o = C() diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst new file mode 100644 index 00000000000000..aa51a7478583b1 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst @@ -0,0 +1,3 @@ +Remove the pass-through for :func:`hash` of :class:`weakref.proxy` objects +to prevent unintended consequences when the original referred object +dies while the proxy is part of a hashable object. Patch by Pablo Galindo. diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c index 313e8abab5a25f..c36d2395cc8c53 100644 --- a/Objects/weakrefobject.c +++ b/Objects/weakrefobject.c @@ -732,21 +732,6 @@ static PyMappingMethods proxy_as_mapping = { }; -static Py_hash_t -proxy_hash(PyObject *self) -{ - PyWeakReference *proxy = (PyWeakReference *)self; - if (!proxy_checkref(proxy)) { - return -1; - } - PyObject *obj = PyWeakref_GET_OBJECT(proxy); - Py_INCREF(obj); - Py_hash_t res = PyObject_Hash(obj); - Py_DECREF(obj); - return res; -} - - PyTypeObject _PyWeakref_ProxyType = { PyVarObject_HEAD_INIT(&PyType_Type, 0) @@ -763,7 +748,8 @@ _PyWeakref_ProxyType = { &proxy_as_number, /* tp_as_number */ &proxy_as_sequence, /* tp_as_sequence */ &proxy_as_mapping, /* tp_as_mapping */ - proxy_hash, /* tp_hash */ +// Notice that tp_hash is intentionally omitted as proxies are "mutable" (when the reference dies). + 0, /* tp_hash */ 0, /* tp_call */ proxy_str, /* tp_str */ proxy_getattr, /* tp_getattro */ From webhook-mailer at python.org Tue Jun 29 19:19:31 2021 From: webhook-mailer at python.org (miss-islington) Date: Tue, 29 Jun 2021 23:19:31 -0000 Subject: [Python-checkins] bpo-44523: Remove the pass-through for hash() in weakref proxy objects (GH-26950) Message-ID: https://github.com/python/cpython/commit/2df13e1211cf420bf6557df02e694bf1653a0ebe commit: 2df13e1211cf420bf6557df02e694bf1653a0ebe branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-29T16:19:06-07:00 summary: bpo-44523: Remove the pass-through for hash() in weakref proxy objects (GH-26950) (cherry picked from commit e2fea101fd5517f33371b04432842b971021c3bf) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst M Lib/test/test_weakref.py M Objects/weakrefobject.c diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 56a42f055d0b54..dd5a781ed59d8b 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -422,14 +422,20 @@ def __reversed__(self): self.assertEqual("".join(reversed(weakref.proxy(obj))), "cba") def test_proxy_hash(self): - cool_hash = 299_792_458 - class MyObj: def __hash__(self): - return cool_hash + return 42 + + obj = MyObj() + with self.assertRaises(TypeError): + hash(weakref.proxy(obj)) + + class MyObj: + __hash__ = None obj = MyObj() - self.assertEqual(hash(weakref.proxy(obj)), cool_hash) + with self.assertRaises(TypeError): + hash(weakref.proxy(obj)) def test_getweakrefcount(self): o = C() diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst new file mode 100644 index 00000000000000..aa51a7478583b1 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst @@ -0,0 +1,3 @@ +Remove the pass-through for :func:`hash` of :class:`weakref.proxy` objects +to prevent unintended consequences when the original referred object +dies while the proxy is part of a hashable object. Patch by Pablo Galindo. diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c index 313e8abab5a25f..c36d2395cc8c53 100644 --- a/Objects/weakrefobject.c +++ b/Objects/weakrefobject.c @@ -732,21 +732,6 @@ static PyMappingMethods proxy_as_mapping = { }; -static Py_hash_t -proxy_hash(PyObject *self) -{ - PyWeakReference *proxy = (PyWeakReference *)self; - if (!proxy_checkref(proxy)) { - return -1; - } - PyObject *obj = PyWeakref_GET_OBJECT(proxy); - Py_INCREF(obj); - Py_hash_t res = PyObject_Hash(obj); - Py_DECREF(obj); - return res; -} - - PyTypeObject _PyWeakref_ProxyType = { PyVarObject_HEAD_INIT(&PyType_Type, 0) @@ -763,7 +748,8 @@ _PyWeakref_ProxyType = { &proxy_as_number, /* tp_as_number */ &proxy_as_sequence, /* tp_as_sequence */ &proxy_as_mapping, /* tp_as_mapping */ - proxy_hash, /* tp_hash */ +// Notice that tp_hash is intentionally omitted as proxies are "mutable" (when the reference dies). + 0, /* tp_hash */ 0, /* tp_call */ proxy_str, /* tp_str */ proxy_getattr, /* tp_getattro */ From webhook-mailer at python.org Tue Jun 29 19:19:36 2021 From: webhook-mailer at python.org (pablogsal) Date: Tue, 29 Jun 2021 23:19:36 -0000 Subject: [Python-checkins] bpo-44523: Remove the pass-through for hash() in weakref proxy objects (GH-26950) (GH-26960) Message-ID: https://github.com/python/cpython/commit/f790bc8084d3dfd723889740f9129ac8fcb2fa02 commit: f790bc8084d3dfd723889740f9129ac8fcb2fa02 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2021-06-30T00:19:32+01:00 summary: bpo-44523: Remove the pass-through for hash() in weakref proxy objects (GH-26950) (GH-26960) (cherry picked from commit e2fea101fd5517f33371b04432842b971021c3bf) Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst M Lib/test/test_weakref.py M Objects/weakrefobject.c diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 56a42f055d0b54..dd5a781ed59d8b 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -422,14 +422,20 @@ def __reversed__(self): self.assertEqual("".join(reversed(weakref.proxy(obj))), "cba") def test_proxy_hash(self): - cool_hash = 299_792_458 - class MyObj: def __hash__(self): - return cool_hash + return 42 + + obj = MyObj() + with self.assertRaises(TypeError): + hash(weakref.proxy(obj)) + + class MyObj: + __hash__ = None obj = MyObj() - self.assertEqual(hash(weakref.proxy(obj)), cool_hash) + with self.assertRaises(TypeError): + hash(weakref.proxy(obj)) def test_getweakrefcount(self): o = C() diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst new file mode 100644 index 00000000000000..aa51a7478583b1 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-29-11-49-29.bpo-44523.67-ZIP.rst @@ -0,0 +1,3 @@ +Remove the pass-through for :func:`hash` of :class:`weakref.proxy` objects +to prevent unintended consequences when the original referred object +dies while the proxy is part of a hashable object. Patch by Pablo Galindo. diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c index 313e8abab5a25f..c36d2395cc8c53 100644 --- a/Objects/weakrefobject.c +++ b/Objects/weakrefobject.c @@ -732,21 +732,6 @@ static PyMappingMethods proxy_as_mapping = { }; -static Py_hash_t -proxy_hash(PyObject *self) -{ - PyWeakReference *proxy = (PyWeakReference *)self; - if (!proxy_checkref(proxy)) { - return -1; - } - PyObject *obj = PyWeakref_GET_OBJECT(proxy); - Py_INCREF(obj); - Py_hash_t res = PyObject_Hash(obj); - Py_DECREF(obj); - return res; -} - - PyTypeObject _PyWeakref_ProxyType = { PyVarObject_HEAD_INIT(&PyType_Type, 0) @@ -763,7 +748,8 @@ _PyWeakref_ProxyType = { &proxy_as_number, /* tp_as_number */ &proxy_as_sequence, /* tp_as_sequence */ &proxy_as_mapping, /* tp_as_mapping */ - proxy_hash, /* tp_hash */ +// Notice that tp_hash is intentionally omitted as proxies are "mutable" (when the reference dies). + 0, /* tp_hash */ 0, /* tp_call */ proxy_str, /* tp_str */ proxy_getattr, /* tp_getattro */ From webhook-mailer at python.org Wed Jun 30 02:19:37 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Wed, 30 Jun 2021 06:19:37 -0000 Subject: [Python-checkins] bpo-43232: Remove previously deprecated methods on TransportSocket (GH-24538) Message-ID: https://github.com/python/cpython/commit/1d08d85cbe49c0748a8ee03aec31f89ab8e81496 commit: 1d08d85cbe49c0748a8ee03aec31f89ab8e81496 branch: main author: Illia Volochii committer: serhiy-storchaka date: 2021-06-30T09:19:09+03:00 summary: bpo-43232: Remove previously deprecated methods on TransportSocket (GH-24538) files: A Misc/NEWS.d/next/Library/2021-02-15-21-17-46.bpo-43232.awc4yZ.rst M Lib/asyncio/trsock.py diff --git a/Lib/asyncio/trsock.py b/Lib/asyncio/trsock.py index e9ebcc32614259..c1f20473b32030 100644 --- a/Lib/asyncio/trsock.py +++ b/Lib/asyncio/trsock.py @@ -1,5 +1,4 @@ import socket -import warnings class TransportSocket: @@ -16,13 +15,6 @@ class TransportSocket: def __init__(self, sock: socket.socket): self._sock = sock - def _na(self, what): - warnings.warn( - f"Using {what} on sockets returned from get_extra_info('socket') " - f"will be prohibited in asyncio 3.9. Please report your use case " - f"to bugs.python.org.", - DeprecationWarning, source=self) - @property def family(self): return self._sock.family @@ -90,98 +82,6 @@ def getsockname(self): def getsockbyname(self): return self._sock.getsockbyname() - def accept(self): - self._na('accept() method') - return self._sock.accept() - - def connect(self, *args, **kwargs): - self._na('connect() method') - return self._sock.connect(*args, **kwargs) - - def connect_ex(self, *args, **kwargs): - self._na('connect_ex() method') - return self._sock.connect_ex(*args, **kwargs) - - def bind(self, *args, **kwargs): - self._na('bind() method') - return self._sock.bind(*args, **kwargs) - - def ioctl(self, *args, **kwargs): - self._na('ioctl() method') - return self._sock.ioctl(*args, **kwargs) - - def listen(self, *args, **kwargs): - self._na('listen() method') - return self._sock.listen(*args, **kwargs) - - def makefile(self): - self._na('makefile() method') - return self._sock.makefile() - - def sendfile(self, *args, **kwargs): - self._na('sendfile() method') - return self._sock.sendfile(*args, **kwargs) - - def close(self): - self._na('close() method') - return self._sock.close() - - def detach(self): - self._na('detach() method') - return self._sock.detach() - - def sendmsg_afalg(self, *args, **kwargs): - self._na('sendmsg_afalg() method') - return self._sock.sendmsg_afalg(*args, **kwargs) - - def sendmsg(self, *args, **kwargs): - self._na('sendmsg() method') - return self._sock.sendmsg(*args, **kwargs) - - def sendto(self, *args, **kwargs): - self._na('sendto() method') - return self._sock.sendto(*args, **kwargs) - - def send(self, *args, **kwargs): - self._na('send() method') - return self._sock.send(*args, **kwargs) - - def sendall(self, *args, **kwargs): - self._na('sendall() method') - return self._sock.sendall(*args, **kwargs) - - def set_inheritable(self, *args, **kwargs): - self._na('set_inheritable() method') - return self._sock.set_inheritable(*args, **kwargs) - - def share(self, process_id): - self._na('share() method') - return self._sock.share(process_id) - - def recv_into(self, *args, **kwargs): - self._na('recv_into() method') - return self._sock.recv_into(*args, **kwargs) - - def recvfrom_into(self, *args, **kwargs): - self._na('recvfrom_into() method') - return self._sock.recvfrom_into(*args, **kwargs) - - def recvmsg_into(self, *args, **kwargs): - self._na('recvmsg_into() method') - return self._sock.recvmsg_into(*args, **kwargs) - - def recvmsg(self, *args, **kwargs): - self._na('recvmsg() method') - return self._sock.recvmsg(*args, **kwargs) - - def recvfrom(self, *args, **kwargs): - self._na('recvfrom() method') - return self._sock.recvfrom(*args, **kwargs) - - def recv(self, *args, **kwargs): - self._na('recv() method') - return self._sock.recv(*args, **kwargs) - def settimeout(self, value): if value == 0: return @@ -196,11 +96,3 @@ def setblocking(self, flag): return raise ValueError( 'setblocking(): transport sockets cannot be blocking') - - def __enter__(self): - self._na('context manager protocol') - return self._sock.__enter__() - - def __exit__(self, *err): - self._na('context manager protocol') - return self._sock.__exit__(*err) diff --git a/Misc/NEWS.d/next/Library/2021-02-15-21-17-46.bpo-43232.awc4yZ.rst b/Misc/NEWS.d/next/Library/2021-02-15-21-17-46.bpo-43232.awc4yZ.rst new file mode 100644 index 00000000000000..a527a7ba95657f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-02-15-21-17-46.bpo-43232.awc4yZ.rst @@ -0,0 +1,2 @@ +Prohibit previously deprecated potentially disruptive operations on +:class:`asyncio.trsock.TransportSocket`. Patch by Illia Volochii. From webhook-mailer at python.org Wed Jun 30 05:31:36 2021 From: webhook-mailer at python.org (JulienPalard) Date: Wed, 30 Jun 2021 09:31:36 -0000 Subject: [Python-checkins] Doc: fix a rst tag. (GH-26965) Message-ID: https://github.com/python/cpython/commit/86eeeb425936ba67d79f32bfbd5c5f8002819438 commit: 86eeeb425936ba67d79f32bfbd5c5f8002819438 branch: main author: Julien Palard committer: JulienPalard date: 2021-06-30T11:31:04+02:00 summary: Doc: fix a rst tag. (GH-26965) files: M Doc/library/contextlib.rst diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index 7ac3856819593..38f619a66d6d8 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -515,9 +515,9 @@ Functions and classes provided: These context managers may suppress exceptions just as they normally would if used directly as part of a :keyword:`with` statement. - ... versionchanged:: 3.11 - Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* - is not a context manager. + .. versionchanged:: 3.11 + Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* + is not a context manager. .. method:: push(exit) @@ -589,9 +589,9 @@ Functions and classes provided: Similar to :meth:`enter_context` but expects an asynchronous context manager. - ... versionchanged:: 3.11 - Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* - is not an asynchronous context manager. + .. versionchanged:: 3.11 + Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* + is not an asynchronous context manager. .. method:: push_async_exit(exit) From webhook-mailer at python.org Wed Jun 30 12:22:08 2021 From: webhook-mailer at python.org (zooba) Date: Wed, 30 Jun 2021 16:22:08 -0000 Subject: [Python-checkins] bpo-41180: Replace marshal code.__new__ audit event with marshal.load[s] and marshal.dumps (GH-26961) Message-ID: https://github.com/python/cpython/commit/139de04518bd98a975b7c98ab8a38e570dc585e4 commit: 139de04518bd98a975b7c98ab8a38e570dc585e4 branch: main author: Steve Dower committer: zooba date: 2021-06-30T17:21:37+01:00 summary: bpo-41180: Replace marshal code.__new__ audit event with marshal.load[s] and marshal.dumps (GH-26961) files: A Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst M Doc/library/marshal.rst M Lib/test/audit-tests.py M Lib/test/test_audit.py M Python/marshal.c diff --git a/Doc/library/marshal.rst b/Doc/library/marshal.rst index d65afc20041133..458c0d53a225ef 100644 --- a/Doc/library/marshal.rst +++ b/Doc/library/marshal.rst @@ -66,6 +66,8 @@ The module defines these functions: The *version* argument indicates the data format that ``dump`` should use (see below). + .. audit-event:: marshal.dumps value,version marshal.dump + .. function:: load(file) @@ -74,6 +76,8 @@ The module defines these functions: format), raise :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. The file must be a readable :term:`binary file`. + .. audit-event:: marshal.loads bytes marshal.load + .. note:: If an object containing an unsupported type was marshalled with :func:`dump`, @@ -89,6 +93,8 @@ The module defines these functions: The *version* argument indicates the data format that ``dumps`` should use (see below). + .. audit-event:: marshal.dumps value,version marshal.dump + .. function:: loads(bytes) @@ -96,6 +102,8 @@ The module defines these functions: :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. Extra bytes in the input are ignored. + .. audit-event:: marshal.loads bytes marshal.load + In addition, the following constants are defined: diff --git a/Lib/test/audit-tests.py b/Lib/test/audit-tests.py index 7a7de637c38823..ccec9fedc4460d 100644 --- a/Lib/test/audit-tests.py +++ b/Lib/test/audit-tests.py @@ -6,6 +6,7 @@ """ import contextlib +import os import sys @@ -106,6 +107,32 @@ def test_block_add_hook_baseexception(): pass +def test_marshal(): + import marshal + o = ("a", "b", "c", 1, 2, 3) + payload = marshal.dumps(o) + + with TestHook() as hook: + assertEqual(o, marshal.loads(marshal.dumps(o))) + + try: + with open("test-marshal.bin", "wb") as f: + marshal.dump(o, f) + with open("test-marshal.bin", "rb") as f: + assertEqual(o, marshal.load(f)) + finally: + os.unlink("test-marshal.bin") + + actual = [(a[0], a[1]) for e, a in hook.seen if e == "marshal.dumps"] + assertSequenceEqual(actual, [(o, marshal.version)] * 2) + + actual = [a[0] for e, a in hook.seen if e == "marshal.loads"] + assertSequenceEqual(actual, [payload]) + + actual = [e for e, a in hook.seen if e == "marshal.load"] + assertSequenceEqual(actual, ["marshal.load"]) + + def test_pickle(): import pickle diff --git a/Lib/test/test_audit.py b/Lib/test/test_audit.py index 25ff34bb11298a..c5ce26323b5f9e 100644 --- a/Lib/test/test_audit.py +++ b/Lib/test/test_audit.py @@ -54,6 +54,11 @@ def test_block_add_hook(self): def test_block_add_hook_baseexception(self): self.do_test("test_block_add_hook_baseexception") + def test_marshal(self): + import_helper.import_module("marshal") + + self.do_test("test_marshal") + def test_pickle(self): import_helper.import_module("pickle") diff --git a/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst b/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst new file mode 100644 index 00000000000000..88b70c7cea2610 --- /dev/null +++ b/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst @@ -0,0 +1,5 @@ +Add auditing events to the :mod:`marshal` module, and stop raising +``code.__init__`` events for every unmarshalled code object. Directly +instantiated code objects will continue to raise an event, and audit event +handlers should inspect or collect the raw marshal data. This reduces a +significant performance overhead when loading from ``.pyc`` files. diff --git a/Python/marshal.c b/Python/marshal.c index d6504a8b8c18ff..182dee7966aa87 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -596,14 +596,18 @@ PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version) { char buf[BUFSIZ]; WFILE wf; + if (PySys_Audit("marshal.dumps", "Oi", x, version) < 0) { + return; /* caller must check PyErr_Occurred() */ + } memset(&wf, 0, sizeof(wf)); wf.fp = fp; wf.ptr = wf.buf = buf; wf.end = wf.ptr + sizeof(buf); wf.error = WFERR_OK; wf.version = version; - if (w_init_refs(&wf, version)) - return; /* caller mush check PyErr_Occurred() */ + if (w_init_refs(&wf, version)) { + return; /* caller must check PyErr_Occurred() */ + } w_object(x, &wf); w_clear_refs(&wf); w_flush(&wf); @@ -1368,12 +1372,6 @@ r_object(RFILE *p) goto code_error; Py_ssize_t nlocalsplus = PyTuple_GET_SIZE(localsplusnames); - if (PySys_Audit("code.__new__", "OOOiiiiii", - code, filename, name, argcount, posonlyargcount, - kwonlyargcount, nlocalsplus, stacksize, - flags) < 0) { - goto code_error; - } struct _PyCodeConstructor con = { .filename = filename, @@ -1460,6 +1458,15 @@ read_object(RFILE *p) fprintf(stderr, "XXX readobject called with exception set\n"); return NULL; } + if (p->ptr && p->end) { + if (PySys_Audit("marshal.loads", "y#", p->ptr, (Py_ssize_t)(p->end - p->ptr)) < 0) { + return NULL; + } + } else if (p->fp || p->readable) { + if (PySys_Audit("marshal.load", NULL) < 0) { + return NULL; + } + } v = r_object(p); if (v == NULL && !PyErr_Occurred()) PyErr_SetString(PyExc_TypeError, "NULL object in marshal data for object"); @@ -1556,7 +1563,7 @@ PyMarshal_ReadObjectFromFile(FILE *fp) rf.refs = PyList_New(0); if (rf.refs == NULL) return NULL; - result = r_object(&rf); + result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) PyMem_Free(rf.buf); @@ -1577,7 +1584,7 @@ PyMarshal_ReadObjectFromString(const char *str, Py_ssize_t len) rf.refs = PyList_New(0); if (rf.refs == NULL) return NULL; - result = r_object(&rf); + result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) PyMem_Free(rf.buf); @@ -1589,6 +1596,9 @@ PyMarshal_WriteObjectToString(PyObject *x, int version) { WFILE wf; + if (PySys_Audit("marshal.dumps", "Oi", x, version) < 0) { + return NULL; + } memset(&wf, 0, sizeof(wf)); wf.str = PyBytes_FromStringAndSize((char *)NULL, 50); if (wf.str == NULL) From webhook-mailer at python.org Wed Jun 30 13:52:33 2021 From: webhook-mailer at python.org (zooba) Date: Wed, 30 Jun 2021 17:52:33 -0000 Subject: [Python-checkins] bpo-41180: Replace marshal code.__new__ audit event with marshal.load[s] and marshal.dumps (GH-26970) Message-ID: https://github.com/python/cpython/commit/a5764d3d96341441d3f70fb5c96a82610a3f4842 commit: a5764d3d96341441d3f70fb5c96a82610a3f4842 branch: 3.10 author: Steve Dower committer: zooba date: 2021-06-30T18:52:25+01:00 summary: bpo-41180: Replace marshal code.__new__ audit event with marshal.load[s] and marshal.dumps (GH-26970) files: A Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst M Doc/library/marshal.rst M Lib/test/audit-tests.py M Lib/test/test_audit.py M Python/marshal.c diff --git a/Doc/library/marshal.rst b/Doc/library/marshal.rst index d65afc20041133..24f9dc1689da4a 100644 --- a/Doc/library/marshal.rst +++ b/Doc/library/marshal.rst @@ -66,6 +66,8 @@ The module defines these functions: The *version* argument indicates the data format that ``dump`` should use (see below). + .. audit-event:: marshal.dumps value,version marshal.dump + .. function:: load(file) @@ -74,11 +76,18 @@ The module defines these functions: format), raise :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. The file must be a readable :term:`binary file`. + .. audit-event:: marshal.load "" marshal.load + .. note:: If an object containing an unsupported type was marshalled with :func:`dump`, :func:`load` will substitute ``None`` for the unmarshallable type. + .. versionchanged:: 3.10 + + This call used to raise a ``code.__new__`` audit event for each code object. Now + it raises a single ``marshal.load`` event for the entire load operation. + .. function:: dumps(value[, version]) @@ -89,6 +98,8 @@ The module defines these functions: The *version* argument indicates the data format that ``dumps`` should use (see below). + .. audit-event:: marshal.dumps value,version marshal.dump + .. function:: loads(bytes) @@ -96,6 +107,13 @@ The module defines these functions: :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. Extra bytes in the input are ignored. + .. audit-event:: marshal.loads bytes marshal.load + + .. versionchanged:: 3.10 + + This call used to raise a ``code.__new__`` audit event for each code object. Now + it raises a single ``marshal.loads`` event for the entire load operation. + In addition, the following constants are defined: diff --git a/Lib/test/audit-tests.py b/Lib/test/audit-tests.py index 7a7de637c38823..ccec9fedc4460d 100644 --- a/Lib/test/audit-tests.py +++ b/Lib/test/audit-tests.py @@ -6,6 +6,7 @@ """ import contextlib +import os import sys @@ -106,6 +107,32 @@ def test_block_add_hook_baseexception(): pass +def test_marshal(): + import marshal + o = ("a", "b", "c", 1, 2, 3) + payload = marshal.dumps(o) + + with TestHook() as hook: + assertEqual(o, marshal.loads(marshal.dumps(o))) + + try: + with open("test-marshal.bin", "wb") as f: + marshal.dump(o, f) + with open("test-marshal.bin", "rb") as f: + assertEqual(o, marshal.load(f)) + finally: + os.unlink("test-marshal.bin") + + actual = [(a[0], a[1]) for e, a in hook.seen if e == "marshal.dumps"] + assertSequenceEqual(actual, [(o, marshal.version)] * 2) + + actual = [a[0] for e, a in hook.seen if e == "marshal.loads"] + assertSequenceEqual(actual, [payload]) + + actual = [e for e, a in hook.seen if e == "marshal.load"] + assertSequenceEqual(actual, ["marshal.load"]) + + def test_pickle(): import pickle diff --git a/Lib/test/test_audit.py b/Lib/test/test_audit.py index 25ff34bb11298a..c5ce26323b5f9e 100644 --- a/Lib/test/test_audit.py +++ b/Lib/test/test_audit.py @@ -54,6 +54,11 @@ def test_block_add_hook(self): def test_block_add_hook_baseexception(self): self.do_test("test_block_add_hook_baseexception") + def test_marshal(self): + import_helper.import_module("marshal") + + self.do_test("test_marshal") + def test_pickle(self): import_helper.import_module("pickle") diff --git a/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst b/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst new file mode 100644 index 00000000000000..88b70c7cea2610 --- /dev/null +++ b/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst @@ -0,0 +1,5 @@ +Add auditing events to the :mod:`marshal` module, and stop raising +``code.__init__`` events for every unmarshalled code object. Directly +instantiated code objects will continue to raise an event, and audit event +handlers should inspect or collect the raw marshal data. This reduces a +significant performance overhead when loading from ``.pyc`` files. diff --git a/Python/marshal.c b/Python/marshal.c index fa4ec9eb605f05..41252406060def 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -596,14 +596,18 @@ PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version) { char buf[BUFSIZ]; WFILE wf; + if (PySys_Audit("marshal.dumps", "Oi", x, version) < 0) { + return; /* caller must check PyErr_Occurred() */ + } memset(&wf, 0, sizeof(wf)); wf.fp = fp; wf.ptr = wf.buf = buf; wf.end = wf.ptr + sizeof(buf); wf.error = WFERR_OK; wf.version = version; - if (w_init_refs(&wf, version)) - return; /* caller mush check PyErr_Occurred() */ + if (w_init_refs(&wf, version)) { + return; /* caller must check PyErr_Occurred() */ + } w_object(x, &wf); w_clear_refs(&wf); w_flush(&wf); @@ -1371,12 +1375,6 @@ r_object(RFILE *p) if (linetable == NULL) goto code_error; - if (PySys_Audit("code.__new__", "OOOiiiiii", - code, filename, name, argcount, posonlyargcount, - kwonlyargcount, nlocals, stacksize, flags) < 0) { - goto code_error; - } - v = (PyObject *) PyCode_NewWithPosOnlyArgs( argcount, posonlyargcount, kwonlyargcount, nlocals, stacksize, flags, @@ -1435,6 +1433,15 @@ read_object(RFILE *p) fprintf(stderr, "XXX readobject called with exception set\n"); return NULL; } + if (p->ptr && p->end) { + if (PySys_Audit("marshal.loads", "y#", p->ptr, (Py_ssize_t)(p->end - p->ptr)) < 0) { + return NULL; + } + } else if (p->fp || p->readable) { + if (PySys_Audit("marshal.load", NULL) < 0) { + return NULL; + } + } v = r_object(p); if (v == NULL && !PyErr_Occurred()) PyErr_SetString(PyExc_TypeError, "NULL object in marshal data for object"); @@ -1531,7 +1538,7 @@ PyMarshal_ReadObjectFromFile(FILE *fp) rf.refs = PyList_New(0); if (rf.refs == NULL) return NULL; - result = r_object(&rf); + result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) PyMem_Free(rf.buf); @@ -1552,7 +1559,7 @@ PyMarshal_ReadObjectFromString(const char *str, Py_ssize_t len) rf.refs = PyList_New(0); if (rf.refs == NULL) return NULL; - result = r_object(&rf); + result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) PyMem_Free(rf.buf); @@ -1564,6 +1571,9 @@ PyMarshal_WriteObjectToString(PyObject *x, int version) { WFILE wf; + if (PySys_Audit("marshal.dumps", "Oi", x, version) < 0) { + return NULL; + } memset(&wf, 0, sizeof(wf)); wf.str = PyBytes_FromStringAndSize((char *)NULL, 50); if (wf.str == NULL) From webhook-mailer at python.org Wed Jun 30 13:52:43 2021 From: webhook-mailer at python.org (zooba) Date: Wed, 30 Jun 2021 17:52:43 -0000 Subject: [Python-checkins] bpo-41180: Replace marshal code.__new__ audit event with marshal.load[s] and marshal.dumps (GH-26971) Message-ID: https://github.com/python/cpython/commit/863e3d5c7e037b24b8294b041ed7686b522973d8 commit: 863e3d5c7e037b24b8294b041ed7686b522973d8 branch: 3.9 author: Steve Dower committer: zooba date: 2021-06-30T18:52:39+01:00 summary: bpo-41180: Replace marshal code.__new__ audit event with marshal.load[s] and marshal.dumps (GH-26971) files: A Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst M Doc/library/marshal.rst M Lib/test/audit-tests.py M Lib/test/test_audit.py M Python/marshal.c diff --git a/Doc/library/marshal.rst b/Doc/library/marshal.rst index d65afc20041133..b38ba54b3c3bc6 100644 --- a/Doc/library/marshal.rst +++ b/Doc/library/marshal.rst @@ -66,6 +66,8 @@ The module defines these functions: The *version* argument indicates the data format that ``dump`` should use (see below). + .. audit-event:: marshal.dumps value,version marshal.dump + .. function:: load(file) @@ -74,11 +76,18 @@ The module defines these functions: format), raise :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. The file must be a readable :term:`binary file`. + .. audit-event:: marshal.load "" marshal.load + .. note:: If an object containing an unsupported type was marshalled with :func:`dump`, :func:`load` will substitute ``None`` for the unmarshallable type. + .. versionchanged:: 3.9.7 + + This call used to raise a ``code.__new__`` audit event for each code object. Now + it raises a single ``marshal.load`` event for the entire load operation. + .. function:: dumps(value[, version]) @@ -89,6 +98,8 @@ The module defines these functions: The *version* argument indicates the data format that ``dumps`` should use (see below). + .. audit-event:: marshal.dumps value,version marshal.dump + .. function:: loads(bytes) @@ -96,6 +107,13 @@ The module defines these functions: :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. Extra bytes in the input are ignored. + .. audit-event:: marshal.loads bytes marshal.load + + .. versionchanged:: 3.9.7 + + This call used to raise a ``code.__new__`` audit event for each code object. Now + it raises a single ``marshal.loads`` event for the entire load operation. + In addition, the following constants are defined: diff --git a/Lib/test/audit-tests.py b/Lib/test/audit-tests.py index 8e66594e52429b..95216bcc48253c 100644 --- a/Lib/test/audit-tests.py +++ b/Lib/test/audit-tests.py @@ -6,6 +6,7 @@ """ import contextlib +import os import sys @@ -106,6 +107,32 @@ def test_block_add_hook_baseexception(): pass +def test_marshal(): + import marshal + o = ("a", "b", "c", 1, 2, 3) + payload = marshal.dumps(o) + + with TestHook() as hook: + assertEqual(o, marshal.loads(marshal.dumps(o))) + + try: + with open("test-marshal.bin", "wb") as f: + marshal.dump(o, f) + with open("test-marshal.bin", "rb") as f: + assertEqual(o, marshal.load(f)) + finally: + os.unlink("test-marshal.bin") + + actual = [(a[0], a[1]) for e, a in hook.seen if e == "marshal.dumps"] + assertSequenceEqual(actual, [(o, marshal.version)] * 2) + + actual = [a[0] for e, a in hook.seen if e == "marshal.loads"] + assertSequenceEqual(actual, [payload]) + + actual = [e for e, a in hook.seen if e == "marshal.load"] + assertSequenceEqual(actual, ["marshal.load"]) + + def test_pickle(): import pickle diff --git a/Lib/test/test_audit.py b/Lib/test/test_audit.py index a9ac6fee446f87..387a31229a2f16 100644 --- a/Lib/test/test_audit.py +++ b/Lib/test/test_audit.py @@ -51,6 +51,11 @@ def test_block_add_hook(self): def test_block_add_hook_baseexception(self): self.do_test("test_block_add_hook_baseexception") + def test_marshal(self): + support.import_module("marshal") + + self.do_test("test_marshal") + def test_pickle(self): support.import_module("pickle") diff --git a/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst b/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst new file mode 100644 index 00000000000000..88b70c7cea2610 --- /dev/null +++ b/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst @@ -0,0 +1,5 @@ +Add auditing events to the :mod:`marshal` module, and stop raising +``code.__init__`` events for every unmarshalled code object. Directly +instantiated code objects will continue to raise an event, and audit event +handlers should inspect or collect the raw marshal data. This reduces a +significant performance overhead when loading from ``.pyc`` files. diff --git a/Python/marshal.c b/Python/marshal.c index c4538bd373a82e..baafa3ecfbf1de 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -596,14 +596,18 @@ PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version) { char buf[BUFSIZ]; WFILE wf; + if (PySys_Audit("marshal.dumps", "Oi", x, version) < 0) { + return; /* caller must check PyErr_Occurred() */ + } memset(&wf, 0, sizeof(wf)); wf.fp = fp; wf.ptr = wf.buf = buf; wf.end = wf.ptr + sizeof(buf); wf.error = WFERR_OK; wf.version = version; - if (w_init_refs(&wf, version)) - return; /* caller mush check PyErr_Occurred() */ + if (w_init_refs(&wf, version)) { + return; /* caller must check PyErr_Occurred() */ + } w_object(x, &wf); w_clear_refs(&wf); w_flush(&wf); @@ -1371,12 +1375,6 @@ r_object(RFILE *p) if (lnotab == NULL) goto code_error; - if (PySys_Audit("code.__new__", "OOOiiiiii", - code, filename, name, argcount, posonlyargcount, - kwonlyargcount, nlocals, stacksize, flags) < 0) { - goto code_error; - } - v = (PyObject *) PyCode_NewWithPosOnlyArgs( argcount, posonlyargcount, kwonlyargcount, nlocals, stacksize, flags, @@ -1435,6 +1433,15 @@ read_object(RFILE *p) fprintf(stderr, "XXX readobject called with exception set\n"); return NULL; } + if (p->ptr && p->end) { + if (PySys_Audit("marshal.loads", "y#", p->ptr, (Py_ssize_t)(p->end - p->ptr)) < 0) { + return NULL; + } + } else if (p->fp || p->readable) { + if (PySys_Audit("marshal.load", NULL) < 0) { + return NULL; + } + } v = r_object(p); if (v == NULL && !PyErr_Occurred()) PyErr_SetString(PyExc_TypeError, "NULL object in marshal data for object"); @@ -1531,7 +1538,7 @@ PyMarshal_ReadObjectFromFile(FILE *fp) rf.refs = PyList_New(0); if (rf.refs == NULL) return NULL; - result = r_object(&rf); + result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) PyMem_FREE(rf.buf); @@ -1552,7 +1559,7 @@ PyMarshal_ReadObjectFromString(const char *str, Py_ssize_t len) rf.refs = PyList_New(0); if (rf.refs == NULL) return NULL; - result = r_object(&rf); + result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) PyMem_FREE(rf.buf); @@ -1564,6 +1571,9 @@ PyMarshal_WriteObjectToString(PyObject *x, int version) { WFILE wf; + if (PySys_Audit("marshal.dumps", "Oi", x, version) < 0) { + return NULL; + } memset(&wf, 0, sizeof(wf)); wf.str = PyBytes_FromStringAndSize((char *)NULL, 50); if (wf.str == NULL) From webhook-mailer at python.org Wed Jun 30 13:53:17 2021 From: webhook-mailer at python.org (zooba) Date: Wed, 30 Jun 2021 17:53:17 -0000 Subject: [Python-checkins] bpo-41180: Fixes documentation to specify correct event name and add versionchanged (GH-26972) Message-ID: https://github.com/python/cpython/commit/95919b0d2744adb87acf696ae1de905cf02a95a6 commit: 95919b0d2744adb87acf696ae1de905cf02a95a6 branch: main author: Steve Dower committer: zooba date: 2021-06-30T18:53:13+01:00 summary: bpo-41180: Fixes documentation to specify correct event name and add versionchanged (GH-26972) files: M Doc/library/marshal.rst diff --git a/Doc/library/marshal.rst b/Doc/library/marshal.rst index 458c0d53a225e..24f9dc1689da4 100644 --- a/Doc/library/marshal.rst +++ b/Doc/library/marshal.rst @@ -76,13 +76,18 @@ The module defines these functions: format), raise :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. The file must be a readable :term:`binary file`. - .. audit-event:: marshal.loads bytes marshal.load + .. audit-event:: marshal.load "" marshal.load .. note:: If an object containing an unsupported type was marshalled with :func:`dump`, :func:`load` will substitute ``None`` for the unmarshallable type. + .. versionchanged:: 3.10 + + This call used to raise a ``code.__new__`` audit event for each code object. Now + it raises a single ``marshal.load`` event for the entire load operation. + .. function:: dumps(value[, version]) @@ -104,6 +109,11 @@ The module defines these functions: .. audit-event:: marshal.loads bytes marshal.load + .. versionchanged:: 3.10 + + This call used to raise a ``code.__new__`` audit event for each code object. Now + it raises a single ``marshal.loads`` event for the entire load operation. + In addition, the following constants are defined: From webhook-mailer at python.org Wed Jun 30 15:06:21 2021 From: webhook-mailer at python.org (zooba) Date: Wed, 30 Jun 2021 19:06:21 -0000 Subject: [Python-checkins] bpo-44535: Enable building with Visual Studio 2022 on Windows (GH-26962) Message-ID: https://github.com/python/cpython/commit/d3a95c1b6eacbbbd92c294744e7ed41932f3f63e commit: d3a95c1b6eacbbbd92c294744e7ed41932f3f63e branch: main author: Steve Dower committer: zooba date: 2021-06-30T20:06:06+01:00 summary: bpo-44535: Enable building with Visual Studio 2022 on Windows (GH-26962) files: A Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst M PCbuild/python.props diff --git a/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst b/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst new file mode 100644 index 00000000000000..e06d0d304852f3 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst @@ -0,0 +1 @@ +Enable building using a Visual Studio 2022 install on Windows. diff --git a/PCbuild/python.props b/PCbuild/python.props index 4a56d50b8b7655..60625101b47287 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -11,6 +11,7 @@ We set BasePlatformToolset for ICC's benefit, it's otherwise ignored. --> + v142 v142 v141 v140 From webhook-mailer at python.org Wed Jun 30 15:24:51 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 30 Jun 2021 19:24:51 -0000 Subject: [Python-checkins] bpo-44535: Enable building with Visual Studio 2022 on Windows (GH-26962) Message-ID: https://github.com/python/cpython/commit/6843a3b9300eb80c2bf5dac7dd363dae9e6f000d commit: 6843a3b9300eb80c2bf5dac7dd363dae9e6f000d branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-30T12:24:42-07:00 summary: bpo-44535: Enable building with Visual Studio 2022 on Windows (GH-26962) (cherry picked from commit d3a95c1b6eacbbbd92c294744e7ed41932f3f63e) Co-authored-by: Steve Dower files: A Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst M PCbuild/python.props diff --git a/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst b/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst new file mode 100644 index 00000000000000..e06d0d304852f3 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst @@ -0,0 +1 @@ +Enable building using a Visual Studio 2022 install on Windows. diff --git a/PCbuild/python.props b/PCbuild/python.props index 4a56d50b8b7655..60625101b47287 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -11,6 +11,7 @@ We set BasePlatformToolset for ICC's benefit, it's otherwise ignored. --> + v142 v142 v141 v140 From webhook-mailer at python.org Wed Jun 30 15:31:13 2021 From: webhook-mailer at python.org (miss-islington) Date: Wed, 30 Jun 2021 19:31:13 -0000 Subject: [Python-checkins] bpo-44535: Enable building with Visual Studio 2022 on Windows (GH-26962) Message-ID: https://github.com/python/cpython/commit/67e394562d67cbcd0ac8114e5439494e7645b8f5 commit: 67e394562d67cbcd0ac8114e5439494e7645b8f5 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-30T12:31:04-07:00 summary: bpo-44535: Enable building with Visual Studio 2022 on Windows (GH-26962) (cherry picked from commit d3a95c1b6eacbbbd92c294744e7ed41932f3f63e) Co-authored-by: Steve Dower files: A Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst M PCbuild/python.props diff --git a/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst b/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst new file mode 100644 index 00000000000000..e06d0d304852f3 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst @@ -0,0 +1 @@ +Enable building using a Visual Studio 2022 install on Windows. diff --git a/PCbuild/python.props b/PCbuild/python.props index 419d5ebe84c2d1..acbf4e005ec5ba 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -11,6 +11,7 @@ We set BasePlatformToolset for ICC's benefit, it's otherwise ignored. --> + v142 v142 v141 v140 From webhook-mailer at python.org Wed Jun 30 16:56:23 2021 From: webhook-mailer at python.org (pablogsal) Date: Wed, 30 Jun 2021 20:56:23 -0000 Subject: [Python-checkins] Fix compiler errors for unused variables in marshal.c (GH-26977) Message-ID: https://github.com/python/cpython/commit/66c53b48e1f5c841d9f48e51ce7bf1a74b75b629 commit: 66c53b48e1f5c841d9f48e51ce7bf1a74b75b629 branch: main author: Pablo Galindo committer: pablogsal date: 2021-06-30T21:55:57+01:00 summary: Fix compiler errors for unused variables in marshal.c (GH-26977) files: M Python/marshal.c diff --git a/Python/marshal.c b/Python/marshal.c index 182dee7966aa8..6c08189cca29b 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -1371,8 +1371,6 @@ r_object(RFILE *p) if (exceptiontable == NULL) goto code_error; - Py_ssize_t nlocalsplus = PyTuple_GET_SIZE(localsplusnames); - struct _PyCodeConstructor con = { .filename = filename, .name = name, From webhook-mailer at python.org Wed Jun 30 18:54:00 2021 From: webhook-mailer at python.org (markshannon) Date: Wed, 30 Jun 2021 22:54:00 -0000 Subject: [Python-checkins] bpo-44313: generate LOAD_ATTR/CALL_FUNCTION for top-level imported objects (GH-26677) Message-ID: https://github.com/python/cpython/commit/1b28187a0e3e914ee48de8032cbba0a965dd5563 commit: 1b28187a0e3e914ee48de8032cbba0a965dd5563 branch: main author: Batuhan Taskaya committer: markshannon date: 2021-06-30T23:53:36+01:00 summary: bpo-44313: generate LOAD_ATTR/CALL_FUNCTION for top-level imported objects (GH-26677) files: A Misc/NEWS.d/next/Core and Builtins/2021-06-10-16-10-39.bpo-44313.34RjI8.rst M Include/internal/pycore_symtable.h M Lib/importlib/_bootstrap_external.py M Lib/test/test_compile.py M Programs/test_frozenmain.h M Python/compile.c M Python/importlib_external.h M Python/importlib_zipimport.h M Python/symtable.c diff --git a/Include/internal/pycore_symtable.h b/Include/internal/pycore_symtable.h index f3505f8949be4b..4c1b7d3519ccf9 100644 --- a/Include/internal/pycore_symtable.h +++ b/Include/internal/pycore_symtable.h @@ -72,6 +72,7 @@ extern PyTypeObject PySTEntry_Type; #define PySTEntry_Check(op) Py_IS_TYPE(op, &PySTEntry_Type) +extern long _PyST_GetSymbol(PySTEntryObject *, PyObject *); extern int _PyST_GetScope(PySTEntryObject *, PyObject *); extern struct symtable* _PySymtable_Build( diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 21ac22d9464ee6..c8b8ece5f57aea 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -360,6 +360,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3455 (add MAKE_CELL bpo-43693) # Python 3.11a1 3456 (interleave cell args bpo-43693) # Python 3.11a1 3457 (Change localsplus to a bytes object bpo-43693) +# Python 3.11a1 3458 (imported objects now don't use LOAD_METHOD/CALL_METHOD) # # MAGIC must change whenever the bytecode emitted by the compiler may no diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 6dc1c383f8f2c9..7de607ca4c7898 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -6,6 +6,7 @@ import _ast import tempfile import types +import textwrap from test import support from test.support import script_helper from test.support.os_helper import FakePath @@ -791,6 +792,41 @@ def or_false(x): self.assertIn('LOAD_', opcodes[0].opname) self.assertEqual('RETURN_VALUE', opcodes[1].opname) + def test_imported_load_method(self): + sources = [ + """\ + import os + def foo(): + return os.uname() + """, + """\ + import os as operating_system + def foo(): + return operating_system.uname() + """, + """\ + from os import path + def foo(x): + return path.join(x) + """, + """\ + from os import path as os_path + def foo(x): + return os_path.join(x) + """ + ] + for source in sources: + namespace = {} + exec(textwrap.dedent(source), namespace) + func = namespace['foo'] + with self.subTest(func=func.__name__): + opcodes = list(dis.get_instructions(func)) + instructions = [opcode.opname for opcode in opcodes] + self.assertNotIn('LOAD_METHOD', instructions) + self.assertNotIn('CALL_METHOD', instructions) + self.assertIn('LOAD_ATTR', instructions) + self.assertIn('CALL_FUNCTION', instructions) + def test_lineno_procedure_call(self): def call(): ( diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-10-16-10-39.bpo-44313.34RjI8.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-10-16-10-39.bpo-44313.34RjI8.rst new file mode 100644 index 00000000000000..e48d4a471f802f --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-10-16-10-39.bpo-44313.34RjI8.rst @@ -0,0 +1,4 @@ +Directly imported objects and modules (through import and from import +statements) don't generate ``LOAD_METHOD``/``CALL_METHOD`` for directly +accessed objects on their namespace. They now use the regular +``LOAD_ATTR``/``CALL_FUNCTION``. diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index 519b91526d157b..10b13503b8e66a 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -4,7 +4,7 @@ unsigned char M_test_frozenmain[] = { 0,0,0,0,0,115,86,0,0,0,100,0,100,1,108,0, 90,0,100,0,100,1,108,1,90,1,101,2,100,2,131,1, 1,0,101,2,100,3,101,0,106,3,131,2,1,0,101,1, - 160,4,161,0,100,4,25,0,90,5,100,5,68,0,93,14, + 106,4,131,0,100,4,25,0,90,5,100,5,68,0,93,14, 90,6,101,2,100,6,101,6,155,0,100,7,101,5,101,6, 25,0,155,0,157,4,131,1,1,0,113,26,100,1,83,0, 41,8,233,0,0,0,0,78,122,18,70,114,111,122,101,110, diff --git a/Python/compile.c b/Python/compile.c index 52d29877a5f0ad..99e500f746185d 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -4278,6 +4278,23 @@ check_index(struct compiler *c, expr_ty e, expr_ty s) } } +static int +is_import_originated(struct compiler *c, expr_ty e) +{ + /* Check whether the global scope has an import named + e, if it is a Name object. For not traversing all the + scope stack every time this function is called, it will + only check the global scope to determine whether something + is imported or not. */ + + if (e->kind != Name_kind) { + return 0; + } + + long flags = _PyST_GetSymbol(c->c_st->st_top, e->v.Name.id); + return flags & DEF_IMPORT; +} + // Return 1 if the method call was optimized, -1 if not, and 0 on error. static int maybe_optimize_method_call(struct compiler *c, expr_ty e) @@ -4291,6 +4308,12 @@ maybe_optimize_method_call(struct compiler *c, expr_ty e) if (meth->kind != Attribute_kind || meth->v.Attribute.ctx != Load) { return -1; } + + /* Check that the base object is not something that is imported */ + if (is_import_originated(c, meth->v.Attribute.value)) { + return -1; + } + /* Check that there aren't too many arguments */ argsl = asdl_seq_LEN(args); kwdsl = asdl_seq_LEN(kwds); diff --git a/Python/importlib_external.h b/Python/importlib_external.h index c6da76f39da093..f0d4138a0803e7 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -25,7 +25,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 90,38,100,40,160,39,100,41,100,42,161,2,100,43,23,0, 90,40,101,41,160,42,101,40,100,42,161,2,90,43,100,44, 90,44,100,45,90,45,100,46,103,1,90,46,101,8,114,192, - 101,46,160,47,100,47,161,1,1,0,101,2,160,48,161,0, + 101,46,160,47,100,47,161,1,1,0,101,2,106,48,131,0, 90,49,100,48,103,1,90,50,101,50,4,0,90,51,90,52, 100,113,100,1,100,49,156,1,100,50,100,51,132,3,90,53, 100,52,100,53,132,0,90,54,100,54,100,55,132,0,90,55, @@ -249,8 +249,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, 1,114,9,0,0,0,114,73,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 115,10,0,0,0,116,0,160,1,124,0,161,1,83,0,41, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 115,10,0,0,0,116,0,106,1,124,0,131,1,83,0,41, 2,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, @@ -290,7 +290,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,243,2,0,0,0,10,2,114,9,0,0,0,114,80,0, 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, 0,0,0,3,0,0,0,115,22,0,0,0,124,0,115,6, - 116,0,160,1,161,0,125,0,116,2,124,0,100,1,131,2, + 116,0,106,1,131,0,125,0,116,2,124,0,100,1,131,2, 83,0,41,3,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,78,41,3,114,19,0,0, @@ -300,7 +300,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 6,0,0,0,4,2,8,1,10,1,114,9,0,0,0,114, 83,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, 0,4,0,0,0,3,0,0,0,115,62,0,0,0,124,0, - 115,4,100,1,83,0,116,0,160,1,124,0,161,1,100,2, + 115,4,100,1,83,0,116,0,106,1,124,0,131,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,30,124,1,160,4,100,6,161,1, 112,30,124,1,160,5,100,4,161,1,83,0,41,8,250,30, @@ -322,15 +322,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,9,0,0,0,233,182,1,0,0,99,3,0,0, 0,0,0,0,0,0,0,0,0,11,0,0,0,3,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, + 131,1,161,2,125,3,116,2,106,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,9,0,116,7,160,8,124,4,100,3, - 161,2,53,0,125,5,124,5,160,9,124,1,161,1,1,0, + 64,0,131,3,125,4,9,0,116,7,106,8,124,4,100,3, + 131,2,53,0,125,5,124,5,160,9,124,1,161,1,1,0, 100,4,4,0,4,0,131,3,1,0,110,11,35,0,49,0, 115,48,119,4,37,0,1,0,1,0,1,0,89,0,1,0, - 1,0,116,2,160,10,124,3,124,0,161,2,1,0,100,4, + 1,0,116,2,106,10,124,3,124,0,131,2,1,0,100,4, 83,0,35,0,4,0,116,11,121,88,1,0,1,0,1,0, - 9,0,116,2,160,12,124,3,161,1,1,0,130,0,35,0, + 9,0,116,2,106,12,124,3,131,1,1,0,130,0,35,0, 4,0,116,11,121,87,1,0,1,0,1,0,89,0,130,0, 37,0,37,0,119,0,119,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, @@ -369,10 +369,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,5,0,0,0,3,0, 0,0,115,80,1,0,0,124,1,100,1,117,1,114,26,116, - 0,160,1,100,2,116,2,161,2,1,0,124,2,100,1,117, + 0,106,1,100,2,116,2,131,2,1,0,124,2,100,1,117, 1,114,20,100,3,125,3,116,3,124,3,131,1,130,1,124, - 1,114,24,100,4,110,1,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, + 1,114,24,100,4,110,1,100,5,125,2,116,4,106,5,124, + 0,131,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, 57,116,11,100,7,131,1,130,1,100,4,160,12,124,6,114, @@ -384,7 +384,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,114,162,116,22,124, - 4,131,1,115,134,116,23,116,4,160,24,161,0,124,4,131, + 4,131,1,115,134,116,23,116,4,106,24,131,0,124,4,131, 2,125,4,124,4,100,5,25,0,100,11,107,2,114,152,124, 4,100,8,25,0,116,25,118,1,114,152,124,4,100,12,100, 1,133,2,25,0,125,4,116,23,116,8,106,21,124,4,160, @@ -476,7 +476,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,115,116,95,102,105,108,101,110,97,109,101,218,8,102,105, 108,101,110,97,109,101,115,12,0,0,0,32,32,32,32,32, 32,32,32,32,32,32,32,114,7,0,0,0,218,17,99,97, - 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,132, + 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,133, 1,0,0,115,72,0,0,0,8,18,6,1,2,1,4,255, 8,2,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,1,8,2,8,1, @@ -485,7 +485,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,9,0,0,0,114,121,0,0,0,99,1,0,0,0,0, 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, 40,1,0,0,116,0,106,1,106,2,100,1,117,0,114,10, - 116,3,100,2,131,1,130,1,116,4,160,5,124,0,161,1, + 116,3,100,2,131,1,130,1,116,4,106,5,124,0,131,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,51,116,0,106,7, 160,8,116,9,161,1,125,4,124,1,160,10,124,4,116,11, @@ -558,7 +558,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,115,101,95,102,105,108,101,110,97,109,101,115,10,0,0, 0,32,32,32,32,32,32,32,32,32,32,114,7,0,0,0, 218,17,115,111,117,114,99,101,95,102,114,111,109,95,99,97, - 99,104,101,203,1,0,0,115,60,0,0,0,12,9,8,1, + 99,104,101,204,1,0,0,115,60,0,0,0,12,9,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,1,8,255,10,2,8,1, 14,1,8,1,16,1,10,1,4,1,2,1,8,255,16,2, @@ -593,7 +593,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,115,5,0,0,0, 32,32,32,32,32,114,7,0,0,0,218,15,95,103,101,116, - 95,115,111,117,114,99,101,102,105,108,101,243,1,0,0,115, + 95,115,111,117,114,99,101,102,105,108,101,244,1,0,0,115, 26,0,0,0,12,7,4,1,16,1,24,1,4,1,2,1, 10,1,2,128,16,1,16,1,2,128,16,1,2,254,115,12, 0,0,0,159,4,36,0,164,15,53,7,190,1,53,7,114, @@ -607,7 +607,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 218,5,116,117,112,108,101,114,127,0,0,0,114,121,0,0, 0,114,107,0,0,0,114,113,0,0,0,41,1,114,120,0, 0,0,115,1,0,0,0,32,114,7,0,0,0,218,11,95, - 103,101,116,95,99,97,99,104,101,100,6,2,0,0,115,22, + 103,101,116,95,99,97,99,104,101,100,7,2,0,0,115,22, 0,0,0,14,1,2,1,8,1,2,128,12,1,6,1,2, 128,14,1,4,1,4,2,2,251,115,12,0,0,0,136,3, 12,0,140,7,22,7,162,1,22,7,114,137,0,0,0,99, @@ -623,7 +623,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,115,2,0,0, 0,32,32,114,7,0,0,0,218,10,95,99,97,108,99,95, - 109,111,100,101,18,2,0,0,115,18,0,0,0,2,2,12, + 109,111,100,101,19,2,0,0,115,18,0,0,0,2,2,12, 1,2,128,12,1,8,1,2,128,8,3,4,1,2,251,115, 12,0,0,0,129,5,7,0,135,9,18,7,153,1,18,7, 114,139,0,0,0,99,1,0,0,0,0,0,0,0,0,0, @@ -662,7 +662,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,114,103,115,218,6,109,101,116,104,111,100,115,5,0,0, 0,32,32,32,32,128,114,7,0,0,0,218,19,95,99,104, 101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,114, - 38,2,0,0,115,18,0,0,0,8,1,8,1,10,1,4, + 39,2,0,0,115,18,0,0,0,8,1,8,1,10,1,4, 1,12,1,2,255,2,1,6,255,24,2,114,9,0,0,0, 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, @@ -680,22 +680,22 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,85,0,0,0,115,3, 0,0,0,32,32,32,114,7,0,0,0,218,5,95,119,114, - 97,112,51,2,0,0,115,10,0,0,0,8,1,10,1,18, + 97,112,52,2,0,0,115,10,0,0,0,8,1,10,1,18, 1,2,128,18,1,114,9,0,0,0,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,114,69,0,0,0,41,2,218,10,95, 98,111,111,116,115,116,114,97,112,114,157,0,0,0,41,3, 114,146,0,0,0,114,147,0,0,0,114,157,0,0,0,115, 3,0,0,0,96,32,32,114,7,0,0,0,218,11,95,99, - 104,101,99,107,95,110,97,109,101,30,2,0,0,115,14,0, + 104,101,99,107,95,110,97,109,101,31,2,0,0,115,14,0, 0,0,2,128,14,8,8,10,8,1,8,2,10,6,4,1, 114,9,0,0,0,114,159,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,115, - 72,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, + 72,0,0,0,116,0,106,1,100,1,116,2,131,2,1,0, 124,0,160,3,124,1,161,1,92,2,125,2,125,3,124,2, 100,2,117,0,114,34,116,4,124,3,131,1,114,34,100,3, - 125,4,116,0,160,1,124,4,160,5,124,3,100,4,25,0, - 161,1,116,6,161,2,1,0,124,2,83,0,41,5,122,155, + 125,4,116,0,106,1,124,4,160,5,124,3,100,4,25,0, + 161,1,116,6,131,2,1,0,124,2,83,0,41,5,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, @@ -722,7 +722,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,115,5,0,0,0,32, 32,32,32,32,114,7,0,0,0,218,17,95,102,105,110,100, - 95,109,111,100,117,108,101,95,115,104,105,109,61,2,0,0, + 95,109,111,100,117,108,101,95,115,104,105,109,62,2,0,0, 115,16,0,0,0,6,7,2,2,4,254,14,6,16,1,4, 1,22,1,4,1,114,9,0,0,0,114,166,0,0,0,99, 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, @@ -790,7 +790,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,116,97,105,108,115,90,5,109,97,103,105,99,114,117,0, 0,0,114,17,0,0,0,115,6,0,0,0,32,32,32,32, 32,32,114,7,0,0,0,218,13,95,99,108,97,115,115,105, - 102,121,95,112,121,99,81,2,0,0,115,28,0,0,0,12, + 102,121,95,112,121,99,82,2,0,0,115,28,0,0,0,12, 16,8,1,16,1,12,1,16,1,12,1,10,1,12,1,8, 1,16,1,8,2,16,1,16,1,4,1,114,9,0,0,0, 114,175,0,0,0,99,5,0,0,0,0,0,0,0,0,0, @@ -845,7 +845,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,122,101,114,141,0,0,0,114,174,0,0,0,114,117,0, 0,0,115,6,0,0,0,32,32,32,32,32,32,114,7,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,114,2,0,0,115, + 109,101,115,116,97,109,112,95,112,121,99,115,2,0,0,115, 18,0,0,0,24,19,10,1,12,1,16,1,8,1,22,1, 2,255,22,2,8,254,114,9,0,0,0,114,179,0,0,0, 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, @@ -892,13 +892,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,97,115,104,114,141,0,0,0,114,174,0,0,0,115,4, 0,0,0,32,32,32,32,114,7,0,0,0,218,18,95,118, 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, - 142,2,0,0,115,14,0,0,0,16,17,2,1,8,1,4, + 143,2,0,0,115,14,0,0,0,16,17,2,1,8,1,4, 255,2,2,6,254,4,255,114,9,0,0,0,114,181,0,0, 0,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,115,76,0,0,0,116,0,160,1,124, - 0,161,1,125,4,116,2,124,4,116,3,131,2,114,28,116, + 0,0,3,0,0,0,115,76,0,0,0,116,0,106,1,124, + 0,131,1,125,4,116,2,124,4,116,3,131,2,114,28,116, 4,160,5,100,1,124,2,161,2,1,0,124,3,100,2,117, - 1,114,26,116,6,160,7,124,4,124,3,161,2,1,0,124, + 1,114,26,116,6,106,7,124,4,124,3,131,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,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, @@ -915,15 +915,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,5,114,42,0,0,0,114,141,0,0,0,114,132,0, 0,0,114,134,0,0,0,218,4,99,111,100,101,115,5,0, 0,0,32,32,32,32,32,114,7,0,0,0,218,17,95,99, - 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,166, + 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,167, 2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,1, 12,1,4,1,10,2,4,1,6,255,114,9,0,0,0,114, 188,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,3,0,0,0,115,70,0,0,0,116,0, + 0,4,0,0,0,3,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,160,2,116,4,106,5,124,0,131,1,161,1,1,0, 124,3,83,0,41,3,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, @@ -934,15 +934,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 109,101,114,178,0,0,0,114,42,0,0,0,115,4,0,0, 0,32,32,32,32,114,7,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,179,2,0,0,115,12,0,0,0,8,2,14,1,14, + 121,99,180,2,0,0,115,12,0,0,0,8,2,14,1,14, 1,14,1,16,1,4,1,114,9,0,0,0,114,193,0,0, - 0,84,99,3,0,0,0,0,0,0,0,0,0,0,0,5, + 0,84,99,3,0,0,0,0,0,0,0,0,0,0,0,4, 0,0,0,3,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,25,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,4,122,38, + 160,2,124,1,161,1,1,0,124,3,160,2,116,5,106,6, + 124,0,131,1,161,1,1,0,124,3,83,0,41,4,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,3,0,0,0,114,169,0,0,0, @@ -952,13 +952,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,90,7,99,104,101,99,107,101,100,114,42,0,0,0, 114,17,0,0,0,115,5,0,0,0,32,32,32,32,32,114, 7,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104, - 97,115,104,95,112,121,99,189,2,0,0,115,14,0,0,0, + 97,115,104,95,112,121,99,190,2,0,0,115,14,0,0,0, 8,2,12,1,14,1,16,1,10,1,16,1,4,1,114,9, 0,0,0,114,194,0,0,0,99,1,0,0,0,0,0,0, 0,0,0,0,0,6,0,0,0,3,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, + 0,0,100,1,100,2,108,0,125,1,116,1,106,2,124,0, + 131,1,106,3,125,2,124,1,160,4,124,2,161,1,125,3, + 116,1,106,5,100,2,100,3,131,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, @@ -980,7 +980,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,103,90,15,110,101,119,108,105,110,101,95,100,101,99,111, 100,101,114,115,5,0,0,0,32,32,32,32,32,114,7,0, 0,0,218,13,100,101,99,111,100,101,95,115,111,117,114,99, - 101,200,2,0,0,115,10,0,0,0,8,5,12,1,10,1, + 101,201,2,0,0,115,10,0,0,0,8,5,12,1,10,1, 12,1,20,1,114,9,0,0,0,114,199,0,0,0,169,2, 114,163,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, @@ -989,8 +989,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,29,100,2,125,1,116,0,124,2,100,3,131,2,114, 28,9,0,124,2,160,1,124,0,161,1,125,1,110,39,35, 0,4,0,116,2,121,157,1,0,1,0,1,0,89,0,110, - 30,37,0,110,28,116,3,160,4,124,1,161,1,125,1,116, - 5,124,1,131,1,115,57,9,0,116,6,116,3,160,7,161, + 30,37,0,110,28,116,3,106,4,124,1,131,1,125,1,116, + 5,124,1,131,1,115,57,9,0,116,6,116,3,106,7,131, 0,124,1,131,2,125,1,110,10,35,0,4,0,116,8,121, 156,1,0,1,0,1,0,89,0,110,1,37,0,116,9,160, 10,124,0,124,2,124,1,100,4,166,3,125,4,100,5,124, @@ -1045,7 +1045,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,120,101,115,114,205,0,0,0,90,7,100,105,114,110,97, 109,101,115,9,0,0,0,32,32,32,32,32,32,32,32,32, 114,7,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,217,2, + 95,102,105,108,101,95,108,111,99,97,116,105,111,110,218,2, 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, @@ -1078,17 +1078,17 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 77,111,100,117,108,101,115,92,123,102,117,108,108,110,97,109, 101,125,92,68,101,98,117,103,122,6,95,100,46,112,121,100, 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,3,0,0,0,115,52,0,0,0,9,0,116,0,160,1, - 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, - 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, - 124,0,161,2,6,0,89,0,83,0,37,0,119,0,114,69, + 0,3,0,0,0,115,52,0,0,0,9,0,116,0,106,1, + 116,0,106,2,124,0,131,2,83,0,35,0,4,0,116,3, + 121,25,1,0,1,0,1,0,116,0,106,1,116,0,106,4, + 124,0,131,2,6,0,89,0,83,0,37,0,119,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,114,20,0,0,0,115,1,0,0,0,32,114,7,0, 0,0,218,14,95,111,112,101,110,95,114,101,103,105,115,116, - 114,121,46,3,0,0,115,14,0,0,0,2,2,14,1,2, + 114,121,47,3,0,0,115,14,0,0,0,2,2,14,1,2, 128,12,1,18,1,2,128,2,255,115,12,0,0,0,129,6, 8,0,136,14,24,7,153,1,24,7,122,36,87,105,110,100, 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101, @@ -1098,8 +1098,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,0,106,1,125,2,110,3,124,0,106,2,125,2,124,2, 160,3,124,1,100,1,116,4,106,5,100,0,100,2,133,2, 25,0,22,0,100,3,166,2,125,3,9,0,124,0,160,6, - 124,3,161,1,53,0,125,4,116,7,160,8,124,4,100,4, - 161,2,125,5,100,0,4,0,4,0,131,3,1,0,110,11, + 124,3,161,1,53,0,125,4,116,7,106,8,124,4,100,4, + 131,2,125,5,100,0,4,0,4,0,131,3,1,0,110,11, 35,0,49,0,115,48,119,4,37,0,1,0,1,0,1,0, 89,0,1,0,1,0,124,5,83,0,35,0,4,0,116,9, 121,67,1,0,1,0,1,0,89,0,100,0,83,0,37,0, @@ -1116,7 +1116,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,116,114,121,95,107,101,121,114,21,0,0,0,90,4,104, 107,101,121,218,8,102,105,108,101,112,97,116,104,115,6,0, 0,0,32,32,32,32,32,32,114,7,0,0,0,218,16,95, - 115,101,97,114,99,104,95,114,101,103,105,115,116,114,121,53, + 115,101,97,114,99,104,95,114,101,103,105,115,116,114,121,54, 3,0,0,115,36,0,0,0,6,2,8,1,6,2,6,1, 16,1,6,255,2,2,12,1,12,1,20,255,2,128,12,0, 4,4,2,128,12,254,6,1,2,128,2,255,115,39,0,0, @@ -1142,7 +1142,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,65,0,0,0,218,6,116,97,114,103,101,116,114,221,0, 0,0,114,163,0,0,0,114,211,0,0,0,114,209,0,0, 0,115,8,0,0,0,32,32,32,32,32,32,32,32,114,7, - 0,0,0,218,9,102,105,110,100,95,115,112,101,99,68,3, + 0,0,0,218,9,102,105,110,100,95,115,112,101,99,69,3, 0,0,115,38,0,0,0,10,2,8,1,4,1,2,1,10, 1,2,128,12,1,6,1,2,128,14,1,14,1,6,1,8, 1,2,1,6,254,8,3,2,252,4,255,2,254,115,12,0, @@ -1150,8 +1150,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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, - 3,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, + 3,0,0,0,115,42,0,0,0,116,0,106,1,100,1,116, + 2,131,2,1,0,124,0,160,3,124,1,124,2,161,2,125, 3,124,3,100,2,117,1,114,19,124,3,106,4,83,0,100, 2,83,0,41,3,122,106,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, @@ -1172,7 +1172,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, 114,209,0,0,0,115,4,0,0,0,32,32,32,32,114,7, 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, - 84,3,0,0,115,14,0,0,0,6,7,2,2,4,254,12, + 85,3,0,0,115,14,0,0,0,6,7,2,2,4,254,12, 3,8,1,6,1,4,2,114,9,0,0,0,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,169, @@ -1185,7 +1185,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,218,11,99,108,97,115,115,109,101,116,104,111,100,114,222, 0,0,0,114,225,0,0,0,114,228,0,0,0,114,12,0, 0,0,114,9,0,0,0,114,7,0,0,0,114,213,0,0, - 0,34,3,0,0,115,30,0,0,0,8,0,4,2,2,3, + 0,35,3,0,0,115,30,0,0,0,8,0,4,2,2,3, 2,255,2,4,2,255,12,3,2,2,10,1,2,6,10,1, 2,14,12,1,2,15,16,1,114,9,0,0,0,114,213,0, 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2, @@ -1221,7 +1221,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,115,5,0, 0,0,32,32,32,32,32,114,7,0,0,0,114,205,0,0, - 0,106,3,0,0,115,8,0,0,0,18,3,16,1,14,1, + 0,107,3,0,0,115,8,0,0,0,18,3,16,1,14,1, 16,1,114,9,0,0,0,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,1,0, @@ -1231,7 +1231,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,114,101,97,116,105,111,110,46,78,114,12,0,0,0,169, 2,114,143,0,0,0,114,209,0,0,0,115,2,0,0,0, 32,32,114,7,0,0,0,218,13,99,114,101,97,116,101,95, - 109,111,100,117,108,101,114,3,0,0,243,2,0,0,0,4, + 109,111,100,117,108,101,115,3,0,0,243,2,0,0,0,4, 0,114,9,0,0,0,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, @@ -1251,7 +1251,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,120,101,99,114,155,0,0,0,41,3,114,143,0,0,0, 218,6,109,111,100,117,108,101,114,187,0,0,0,115,3,0, 0,0,32,32,32,114,7,0,0,0,218,11,101,120,101,99, - 95,109,111,100,117,108,101,117,3,0,0,115,12,0,0,0, + 95,109,111,100,117,108,101,118,3,0,0,115,12,0,0,0, 12,2,8,1,4,1,8,1,4,255,20,2,114,9,0,0, 0,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, @@ -1263,13 +1263,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 109,111,100,117,108,101,95,115,104,105,109,169,2,114,143,0, 0,0,114,162,0,0,0,115,2,0,0,0,32,32,114,7, 0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101, - 125,3,0,0,115,2,0,0,0,12,3,114,9,0,0,0, + 126,3,0,0,115,2,0,0,0,12,3,114,9,0,0,0, 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,205,0,0,0,114,238,0,0,0,114,244,0,0, 0,114,247,0,0,0,114,12,0,0,0,114,9,0,0,0, - 114,7,0,0,0,114,234,0,0,0,101,3,0,0,115,12, + 114,7,0,0,0,114,234,0,0,0,102,3,0,0,115,12, 0,0,0,8,0,4,2,8,3,8,8,8,3,12,8,114, 9,0,0,0,114,234,0,0,0,99,0,0,0,0,0,0, 0,0,0,0,0,0,3,0,0,0,0,0,0,0,115,74, @@ -1294,7 +1294,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,32,78,41,1,114,76,0,0,0,169,2,114,143, 0,0,0,114,65,0,0,0,115,2,0,0,0,32,32,114, 7,0,0,0,218,10,112,97,116,104,95,109,116,105,109,101, - 133,3,0,0,115,2,0,0,0,4,6,114,9,0,0,0, + 134,3,0,0,115,2,0,0,0,4,6,114,9,0,0,0, 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,4,0,0,0,3,0,0,0,115,14, @@ -1328,7 +1328,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,32,32,32,114,192,0,0,0,78,41,1,114,250, 0,0,0,114,249,0,0,0,115,2,0,0,0,32,32,114, 7,0,0,0,218,10,112,97,116,104,95,115,116,97,116,115, - 141,3,0,0,115,2,0,0,0,14,12,114,9,0,0,0, + 142,3,0,0,115,2,0,0,0,14,12,114,9,0,0,0, 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,3,0,0,0,115,12, @@ -1352,7 +1352,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 90,10,99,97,99,104,101,95,112,97,116,104,114,42,0,0, 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, 15,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101, - 155,3,0,0,115,2,0,0,0,12,8,114,9,0,0,0, + 156,3,0,0,115,2,0,0,0,12,8,114,9,0,0,0, 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,1,0,0,0,3, @@ -1368,7 +1368,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,101,32,102,105,108,101,115,46,10,32,32,32,32,32,32, 32,32,78,114,12,0,0,0,41,3,114,143,0,0,0,114, 65,0,0,0,114,42,0,0,0,115,3,0,0,0,32,32, - 32,114,7,0,0,0,114,252,0,0,0,165,3,0,0,114, + 32,114,7,0,0,0,114,252,0,0,0,166,3,0,0,114, 239,0,0,0,114,9,0,0,0,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,8,0,0, @@ -1388,7 +1388,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,199,0,0,0,41,5,114,143,0,0,0,114,162, 0,0,0,114,65,0,0,0,114,197,0,0,0,218,3,101, 120,99,115,5,0,0,0,32,32,32,32,32,114,7,0,0, - 0,218,10,103,101,116,95,115,111,117,114,99,101,172,3,0, + 0,218,10,103,101,116,95,115,111,117,114,99,101,173,3,0, 0,115,26,0,0,0,10,2,2,1,10,1,8,4,2,128, 12,253,4,1,2,1,4,255,2,1,2,255,10,128,2,255, 115,20,0,0,0,134,5,15,0,143,7,33,7,150,7,29, @@ -1412,7 +1412,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,218,7,99,111,109,112,105,108,101,41,4,114,143,0, 0,0,114,42,0,0,0,114,65,0,0,0,114,1,1,0, 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, - 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,182, + 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,183, 3,0,0,115,6,0,0,0,12,5,4,1,6,255,114,9, 0,0,0,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, @@ -1433,8 +1433,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,8,107,3,125,6,124,6,114,141,124,12,100,9,64,0, 100,8,107,3,125,7,116,9,106,10,100,10,107,3,114,140, 124,7,115,122,116,9,106,10,100,11,107,2,114,140,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, + 160,6,124,2,161,1,125,4,116,9,106,11,116,12,124,4, + 131,2,125,5,116,13,124,10,124,5,124,1,124,11,131,4, 1,0,110,10,116,14,124,10,124,3,124,9,100,12,25,0, 124,1,124,11,131,5,1,0,110,13,35,0,4,0,116,15, 116,16,102,2,144,1,121,10,1,0,1,0,1,0,89,0, @@ -1445,7 +1445,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,17,160,18,100,15,124,2,161,2,1,0,116,21,106,22, 144,1,115,7,124,8,100,1,117,1,144,1,114,7,124,3, 100,1,117,1,144,1,114,7,124,6,114,233,124,5,100,1, - 117,0,114,226,116,9,160,11,124,4,161,1,125,5,116,23, + 117,0,114,226,116,9,106,11,124,4,131,1,125,5,116,23, 124,14,124,5,124,7,131,3,125,10,110,8,116,24,124,14, 124,3,116,25,124,4,131,1,131,3,125,10,9,0,124,0, 160,26,124,2,124,8,124,10,161,3,1,0,124,14,83,0, @@ -1490,7 +1490,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,17,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,115,15, 0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,240,0,0,0,190,3,0,0, + 32,32,114,7,0,0,0,114,240,0,0,0,191,3,0,0, 115,188,0,0,0,10,7,4,1,4,1,4,1,4,1,4, 1,2,1,10,1,2,128,14,1,8,1,2,128,2,2,12, 1,2,128,14,1,4,1,2,128,12,2,2,1,12,1,2, @@ -1514,7 +1514,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,12,0,0,0,114,9,0,0,0,114,7,0,0, - 0,114,248,0,0,0,131,3,0,0,115,16,0,0,0,8, + 0,114,248,0,0,0,132,3,0,0,115,16,0,0,0,8, 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, 9,0,0,0,114,248,0,0,0,99,0,0,0,0,0,0, 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,94, @@ -1541,7 +1541,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,10,32,32,32,32,32,32,32,32,102,105,110,100,101,114, 46,78,114,182,0,0,0,41,3,114,143,0,0,0,114,162, 0,0,0,114,65,0,0,0,115,3,0,0,0,32,32,32, - 114,7,0,0,0,114,235,0,0,0,24,4,0,0,115,4, + 114,7,0,0,0,114,235,0,0,0,25,4,0,0,115,4, 0,0,0,6,3,10,1,114,9,0,0,0,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, @@ -1550,7 +1550,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,143,0,0, 0,90,5,111,116,104,101,114,115,2,0,0,0,32,32,114, - 7,0,0,0,218,6,95,95,101,113,95,95,30,4,0,0, + 7,0,0,0,218,6,95,95,101,113,95,95,31,4,0,0, 243,6,0,0,0,12,1,10,1,2,255,114,9,0,0,0, 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, @@ -1559,7 +1559,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,69,0,0,0,169,3,218,4,104,97,115,104,114,141, 0,0,0,114,65,0,0,0,169,1,114,143,0,0,0,115, 1,0,0,0,32,114,7,0,0,0,218,8,95,95,104,97, - 115,104,95,95,34,4,0,0,243,2,0,0,0,20,1,114, + 115,104,95,95,35,4,0,0,243,2,0,0,0,20,1,114, 9,0,0,0,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,3,0,0,0,3,0,0,0,115,16, @@ -1574,7 +1574,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,117,112,101,114,114,10,1,0,0,114,247,0,0,0,41, 3,114,143,0,0,0,114,162,0,0,0,114,13,1,0,0, 115,3,0,0,0,32,32,128,114,7,0,0,0,114,247,0, - 0,0,37,4,0,0,115,2,0,0,0,16,10,114,9,0, + 0,0,38,4,0,0,115,2,0,0,0,16,10,114,9,0, 0,0,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,1,0,0,0,3,0,0,0,243, @@ -1584,16 +1584,16 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,97,115,32,102,111,117,110,100,32,98,121,32,116,104,101, 32,102,105,110,100,101,114,46,78,114,74,0,0,0,114,246, 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, - 202,0,0,0,49,4,0,0,243,2,0,0,0,6,3,114, + 202,0,0,0,50,4,0,0,243,2,0,0,0,6,3,114, 9,0,0,0,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,9,0,0,0,3,0, 0,0,115,136,0,0,0,116,0,124,0,116,1,116,2,102, - 2,131,2,114,38,116,3,160,4,116,5,124,1,131,1,161, + 2,131,2,114,38,116,3,106,4,116,5,124,1,131,1,131, 1,53,0,125,2,124,2,160,6,161,0,2,0,100,1,4, 0,4,0,131,3,1,0,83,0,35,0,49,0,115,30,119, 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,100, - 1,83,0,116,3,160,7,124,1,100,2,161,2,53,0,125, + 1,83,0,116,3,106,7,124,1,100,2,131,2,53,0,125, 2,124,2,160,6,161,0,2,0,100,1,4,0,4,0,131, 3,1,0,83,0,35,0,49,0,115,60,119,4,37,0,1, 0,1,0,1,0,89,0,1,0,1,0,100,1,83,0,41, @@ -1606,7 +1606,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 109,0,0,0,90,4,114,101,97,100,114,92,0,0,0,41, 3,114,143,0,0,0,114,65,0,0,0,114,94,0,0,0, 115,3,0,0,0,32,32,32,114,7,0,0,0,114,254,0, - 0,0,54,4,0,0,115,22,0,0,0,14,2,16,1,6, + 0,0,55,4,0,0,115,22,0,0,0,14,2,16,1,6, 1,22,255,2,128,16,0,14,3,6,1,22,255,2,128,16, 0,115,24,0,0,0,142,4,25,3,153,4,29,11,158,3, 29,11,172,4,55,3,183,4,59,11,188,3,59,11,122,19, @@ -1620,7 +1620,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,3,114,143,0,0,0,114,243,0,0,0,114,29,1, 0,0,115,3,0,0,0,32,32,32,114,7,0,0,0,218, 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, - 97,100,101,114,63,4,0,0,115,4,0,0,0,12,2,8, + 97,100,101,114,64,4,0,0,115,4,0,0,0,12,2,8, 1,114,9,0,0,0,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,41,13,114,149,0,0,0,114,148,0, @@ -1629,7 +1629,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,247,0,0,0,114,202,0,0,0,114,254,0,0,0,114, 31,1,0,0,90,13,95,95,99,108,97,115,115,99,101,108, 108,95,95,41,1,114,13,1,0,0,115,1,0,0,0,64, - 114,7,0,0,0,114,10,1,0,0,19,4,0,0,115,24, + 114,7,0,0,0,114,10,1,0,0,20,4,0,0,115,24, 0,0,0,10,128,4,2,8,3,8,6,8,4,2,3,14, 1,2,11,10,1,8,4,2,9,18,1,114,9,0,0,0, 114,10,1,0,0,99,0,0,0,0,0,0,0,0,0,0, @@ -1652,7 +1652,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,105,109,101,90,7,115,116,95,115,105,122,101,41,3,114, 143,0,0,0,114,65,0,0,0,114,9,1,0,0,115,3, 0,0,0,32,32,32,114,7,0,0,0,114,251,0,0,0, - 73,4,0,0,115,4,0,0,0,8,2,14,1,114,9,0, + 74,4,0,0,115,4,0,0,0,8,2,14,1,114,9,0, 0,0,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,6,0,0,0, @@ -1662,7 +1662,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 139,0,0,0,114,252,0,0,0,41,5,114,143,0,0,0, 114,134,0,0,0,114,132,0,0,0,114,42,0,0,0,114, 78,0,0,0,115,5,0,0,0,32,32,32,32,32,114,7, - 0,0,0,114,253,0,0,0,78,4,0,0,115,4,0,0, + 0,0,0,114,253,0,0,0,79,4,0,0,115,4,0,0, 0,8,2,16,1,114,9,0,0,0,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,87,0,0, @@ -1673,7 +1673,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, - 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, + 131,2,125,4,9,0,116,5,106,6,124,4,131,1,1,0, 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, @@ -1698,7 +1698,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, 0,0,0,114,255,0,0,0,115,9,0,0,0,32,32,32, 32,32,32,32,32,32,114,7,0,0,0,114,252,0,0,0, - 83,4,0,0,115,60,0,0,0,12,2,4,1,12,2,12, + 84,4,0,0,115,60,0,0,0,12,2,4,1,12,2,12, 1,10,1,12,254,12,4,10,1,2,1,12,1,2,128,12, 1,4,2,12,1,6,3,4,1,4,255,14,2,10,128,2, 1,12,1,16,1,2,128,12,1,8,2,2,1,16,255,10, @@ -1711,7 +1711,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,251,0,0,0,114, 253,0,0,0,114,252,0,0,0,114,12,0,0,0,114,9, - 0,0,0,114,7,0,0,0,114,32,1,0,0,69,4,0, + 0,0,0,114,7,0,0,0,114,32,1,0,0,70,4,0, 0,115,10,0,0,0,8,0,4,2,8,2,8,5,18,5, 114,9,0,0,0,114,32,1,0,0,99,0,0,0,0,0, 0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,115, @@ -1733,7 +1733,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,188,0,0,0,114,6,1,0,0,41,5,114, 143,0,0,0,114,162,0,0,0,114,65,0,0,0,114,42, 0,0,0,114,174,0,0,0,115,5,0,0,0,32,32,32, - 32,32,114,7,0,0,0,114,240,0,0,0,118,4,0,0, + 32,32,114,7,0,0,0,114,240,0,0,0,119,4,0,0, 115,22,0,0,0,10,1,10,1,2,4,2,1,6,254,12, 4,2,1,14,1,2,1,2,1,6,253,114,9,0,0,0, 122,29,83,111,117,114,99,101,108,101,115,115,70,105,108,101, @@ -1744,13 +1744,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,32,105,115,32,110,111,32,115,111,117,114,99,101,32,99, 111,100,101,46,78,114,12,0,0,0,114,246,0,0,0,115, 2,0,0,0,32,32,114,7,0,0,0,114,0,1,0,0, - 134,4,0,0,114,25,0,0,0,114,9,0,0,0,122,31, + 135,4,0,0,114,25,0,0,0,114,9,0,0,0,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,240,0,0,0,114,0,1,0,0, 114,12,0,0,0,114,9,0,0,0,114,7,0,0,0,114, - 39,1,0,0,114,4,0,0,115,8,0,0,0,8,0,4, + 39,1,0,0,115,4,0,0,115,8,0,0,0,8,0,4, 2,8,2,12,16,114,9,0,0,0,114,39,1,0,0,99, 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, 0,0,0,0,115,92,0,0,0,101,0,90,1,100,0,90, @@ -1771,19 +1771,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,100,0,83,0,114,69,0,0,0,114,182,0,0,0,41, 3,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, 115,3,0,0,0,32,32,32,114,7,0,0,0,114,235,0, - 0,0,147,4,0,0,115,4,0,0,0,6,1,10,1,114, + 0,0,148,4,0,0,115,4,0,0,0,6,1,10,1,114, 9,0,0,0,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,3,0,0,0,114,11,1,0,0,114,69,0,0, 0,114,12,1,0,0,114,14,1,0,0,115,2,0,0,0, - 32,32,114,7,0,0,0,114,15,1,0,0,151,4,0,0, + 32,32,114,7,0,0,0,114,15,1,0,0,152,4,0,0, 114,16,1,0,0,114,9,0,0,0,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,3,0,0,0,3,0,0,0,114,17,1,0,0, 114,69,0,0,0,114,18,1,0,0,114,20,1,0,0,115, - 1,0,0,0,32,114,7,0,0,0,114,21,1,0,0,155, + 1,0,0,0,32,114,7,0,0,0,114,21,1,0,0,156, 4,0,0,114,22,1,0,0,114,9,0,0,0,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, @@ -1801,7 +1801,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 172,0,0,0,114,141,0,0,0,114,65,0,0,0,41,3, 114,143,0,0,0,114,209,0,0,0,114,243,0,0,0,115, 3,0,0,0,32,32,32,114,7,0,0,0,114,238,0,0, - 0,158,4,0,0,115,14,0,0,0,4,2,6,1,4,255, + 0,159,4,0,0,115,14,0,0,0,4,2,6,1,4,255, 6,2,8,1,4,255,4,2,114,9,0,0,0,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, @@ -1818,7 +1818,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,99,95,100,121,110,97,109,105,99,114,172,0,0,0,114, 141,0,0,0,114,65,0,0,0,169,2,114,143,0,0,0, 114,243,0,0,0,115,2,0,0,0,32,32,114,7,0,0, - 0,114,244,0,0,0,166,4,0,0,115,8,0,0,0,14, + 0,114,244,0,0,0,167,4,0,0,115,8,0,0,0,14, 2,6,1,8,1,8,255,114,9,0,0,0,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, @@ -1836,7 +1836,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 235,0,0,0,78,114,12,0,0,0,41,3,114,5,0,0, 0,218,6,115,117,102,102,105,120,218,9,102,105,108,101,95, 110,97,109,101,115,3,0,0,0,32,32,128,114,7,0,0, - 0,114,8,0,0,0,175,4,0,0,115,8,0,0,0,2, + 0,114,8,0,0,0,176,4,0,0,115,8,0,0,0,2, 128,4,0,2,1,20,255,114,9,0,0,0,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,46,60,108,111, @@ -1844,7 +1844,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,4,114,73,0,0,0,114,65,0,0,0,218,3,97,110, 121,114,231,0,0,0,41,3,114,143,0,0,0,114,162,0, 0,0,114,42,1,0,0,115,3,0,0,0,32,32,64,114, - 7,0,0,0,114,205,0,0,0,172,4,0,0,115,10,0, + 7,0,0,0,114,205,0,0,0,173,4,0,0,115,10,0, 0,0,2,128,14,2,12,1,2,1,8,255,114,9,0,0, 0,122,30,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, @@ -1855,7 +1855,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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, 12,0,0,0,114,246,0,0,0,115,2,0,0,0,32,32, - 114,7,0,0,0,114,240,0,0,0,178,4,0,0,114,25, + 114,7,0,0,0,114,240,0,0,0,179,4,0,0,114,25, 0,0,0,114,9,0,0,0,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, @@ -1865,13 +1865,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,12,0,0,0,114, 246,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, - 114,0,1,0,0,182,4,0,0,114,25,0,0,0,114,9, + 114,0,1,0,0,183,4,0,0,114,25,0,0,0,114,9, 0,0,0,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, 1,0,0,0,3,0,0,0,114,24,1,0,0,114,25,1, 0,0,114,74,0,0,0,114,246,0,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,202,0,0,0,186,4,0, + 0,32,32,114,7,0,0,0,114,202,0,0,0,187,4,0, 0,114,26,1,0,0,114,9,0,0,0,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, @@ -1880,7 +1880,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,114,238,0,0,0,114,244,0,0,0,114,205,0, 0,0,114,240,0,0,0,114,0,1,0,0,114,159,0,0, 0,114,202,0,0,0,114,12,0,0,0,114,9,0,0,0, - 114,7,0,0,0,114,28,1,0,0,139,4,0,0,115,24, + 114,7,0,0,0,114,28,1,0,0,140,4,0,0,115,24, 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, 8,8,6,8,6,8,4,2,4,14,1,114,9,0,0,0, 114,28,1,0,0,99,0,0,0,0,0,0,0,0,0,0, @@ -1923,7 +1923,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, 90,11,112,97,116,104,95,102,105,110,100,101,114,115,4,0, 0,0,32,32,32,32,114,7,0,0,0,114,235,0,0,0, - 199,4,0,0,115,8,0,0,0,6,1,6,1,14,1,10, + 200,4,0,0,115,8,0,0,0,6,1,6,1,14,1,10, 1,114,9,0,0,0,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,3,0,0,0, @@ -1940,7 +1940,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,143,0,0,0,114,38,1,0,0,218,3,100,111,116,90, 2,109,101,115,4,0,0,0,32,32,32,32,114,7,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,205,4,0,0,115,8, + 112,97,116,104,95,110,97,109,101,115,206,4,0,0,115,8, 0,0,0,18,2,8,1,4,2,8,3,114,9,0,0,0, 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, @@ -1953,7 +1953,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 143,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,115,3,0,0,0,32,32,32, - 114,7,0,0,0,114,47,1,0,0,215,4,0,0,115,4, + 114,7,0,0,0,114,47,1,0,0,216,4,0,0,115,4, 0,0,0,12,1,16,1,114,9,0,0,0,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, @@ -1969,7 +1969,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,46,1,0,0,41,3,114,143,0,0,0,90,11,112, 97,114,101,110,116,95,112,97,116,104,114,209,0,0,0,115, 3,0,0,0,32,32,32,114,7,0,0,0,218,12,95,114, - 101,99,97,108,99,117,108,97,116,101,219,4,0,0,115,16, + 101,99,97,108,99,117,108,97,116,101,220,4,0,0,115,16, 0,0,0,12,2,10,1,14,1,18,3,6,1,8,1,6, 1,6,1,114,9,0,0,0,122,27,95,78,97,109,101,115, 112,97,99,101,80,97,116,104,46,95,114,101,99,97,108,99, @@ -1978,7 +1978,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,124,0,160,1,161,0,131,1,83,0,114,69,0,0,0, 41,2,218,4,105,116,101,114,114,54,1,0,0,114,20,1, 0,0,115,1,0,0,0,32,114,7,0,0,0,218,8,95, - 95,105,116,101,114,95,95,232,4,0,0,243,2,0,0,0, + 95,105,116,101,114,95,95,233,4,0,0,243,2,0,0,0, 12,1,114,9,0,0,0,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, @@ -1986,7 +1986,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,1,25,0,83,0,114,69,0,0,0,169,1,114,54,1, 0,0,41,2,114,143,0,0,0,218,5,105,110,100,101,120, 115,2,0,0,0,32,32,114,7,0,0,0,218,11,95,95, - 103,101,116,105,116,101,109,95,95,235,4,0,0,114,58,1, + 103,101,116,105,116,101,109,95,95,236,4,0,0,114,58,1, 0,0,114,9,0,0,0,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, @@ -1995,14 +1995,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,1,114,46,1,0,0,41,3,114,143,0,0,0,114,60, 1,0,0,114,65,0,0,0,115,3,0,0,0,32,32,32, 114,7,0,0,0,218,11,95,95,115,101,116,105,116,101,109, - 95,95,238,4,0,0,115,2,0,0,0,14,1,114,9,0, + 95,95,239,4,0,0,115,2,0,0,0,14,1,114,9,0, 0,0,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,3,0,0,0,3, 0,0,0,114,55,1,0,0,114,69,0,0,0,41,2,114, 4,0,0,0,114,54,1,0,0,114,20,1,0,0,115,1, 0,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, - 95,95,241,4,0,0,114,58,1,0,0,114,9,0,0,0, + 95,95,242,4,0,0,114,58,1,0,0,114,9,0,0,0, 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,3,0,0,0,3,0,0,0,243,12,0, @@ -2010,7 +2010,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,89,0,0,0,114,46, 1,0,0,114,20,1,0,0,115,1,0,0,0,32,114,7, - 0,0,0,218,8,95,95,114,101,112,114,95,95,244,4,0, + 0,0,0,218,8,95,95,114,101,112,114,95,95,245,4,0, 0,114,58,1,0,0,114,9,0,0,0,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, @@ -2018,7 +2018,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,0,160,0,161,0,118,0,83,0,114,69,0,0,0,114, 59,1,0,0,169,2,114,143,0,0,0,218,4,105,116,101, 109,115,2,0,0,0,32,32,114,7,0,0,0,218,12,95, - 95,99,111,110,116,97,105,110,115,95,95,247,4,0,0,114, + 95,99,111,110,116,97,105,110,115,95,95,248,4,0,0,114, 58,1,0,0,114,9,0,0,0,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, @@ -2026,7 +2026,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,0,106,0,160,1,124,1,161,1,1,0,100,0,83,0, 114,69,0,0,0,41,2,114,46,1,0,0,114,61,0,0, 0,114,66,1,0,0,115,2,0,0,0,32,32,114,7,0, - 0,0,114,61,0,0,0,250,4,0,0,243,2,0,0,0, + 0,0,114,61,0,0,0,251,4,0,0,243,2,0,0,0, 16,1,114,9,0,0,0,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, 15,114,149,0,0,0,114,148,0,0,0,114,150,0,0,0, @@ -2035,7 +2035,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,114,62,1,0,0,114,63,1,0,0,114,65,1, 0,0,114,68,1,0,0,114,61,0,0,0,114,12,0,0, 0,114,9,0,0,0,114,7,0,0,0,114,44,1,0,0, - 192,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, + 193,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, 6,8,10,8,4,8,13,8,3,8,3,8,3,8,3,8, 3,12,3,114,9,0,0,0,114,44,1,0,0,99,0,0, 0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0, @@ -2051,12 +2051,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,124,2,124,3,131,3,124,0,95,1,100,0,83,0,114, 69,0,0,0,41,2,114,44,1,0,0,114,46,1,0,0, 114,50,1,0,0,115,4,0,0,0,32,32,32,32,114,7, - 0,0,0,114,235,0,0,0,0,5,0,0,115,2,0,0, + 0,0,0,114,235,0,0,0,1,5,0,0,115,2,0,0, 0,18,1,114,9,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,115,24,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, + 3,0,0,0,3,0,0,0,115,24,0,0,0,116,0,106, + 1,100,1,116,2,131,2,1,0,100,2,160,3,124,0,106, 4,161,1,83,0,41,4,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, @@ -2075,20 +2075,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,100,0,0,0,114,101,0,0,0,114,89,0, 0,0,114,149,0,0,0,41,1,114,243,0,0,0,115,1, 0,0,0,32,114,7,0,0,0,218,11,109,111,100,117,108, - 101,95,114,101,112,114,3,5,0,0,115,8,0,0,0,6, + 101,95,114,101,112,114,4,5,0,0,115,8,0,0,0,6, 7,2,1,4,255,12,2,114,9,0,0,0,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,1,0,0,0,3,0,0,0,114, 24,0,0,0,41,2,78,84,114,12,0,0,0,114,246,0, 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,205, - 0,0,0,14,5,0,0,243,2,0,0,0,4,1,114,9, + 0,0,0,15,5,0,0,243,2,0,0,0,4,1,114,9, 0,0,0,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,1,0,0, 0,3,0,0,0,114,24,0,0,0,41,2,78,114,10,0, 0,0,114,12,0,0,0,114,246,0,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,0,1,0,0,17,5,0, + 0,32,32,114,7,0,0,0,114,0,1,0,0,18,5,0, 0,114,72,1,0,0,114,9,0,0,0,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, @@ -2097,20 +2097,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 83,0,41,6,78,114,10,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,115,2,0, - 0,0,32,32,114,7,0,0,0,114,240,0,0,0,20,5, + 0,0,32,32,114,7,0,0,0,114,240,0,0,0,21,5, 0,0,114,69,1,0,0,114,9,0,0,0,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,1,0,0,0,3,0,0,0,114,24,0,0, 0,114,236,0,0,0,114,12,0,0,0,114,237,0,0,0, 115,2,0,0,0,32,32,114,7,0,0,0,114,238,0,0, - 0,23,5,0,0,114,239,0,0,0,114,9,0,0,0,122, + 0,24,5,0,0,114,239,0,0,0,114,9,0,0,0,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,1,0,0,0, 3,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, 0,0,114,12,0,0,0,114,40,1,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,244,0,0,0,26,5,0, + 0,32,32,114,7,0,0,0,114,244,0,0,0,27,5,0, 0,114,72,1,0,0,114,9,0,0,0,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, @@ -2128,7 +2128,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,32,112,97,116,104,32,123,33,114,125,78,41,4,114,158, 0,0,0,114,172,0,0,0,114,46,1,0,0,114,245,0, 0,0,114,246,0,0,0,115,2,0,0,0,32,32,114,7, - 0,0,0,114,247,0,0,0,29,5,0,0,115,8,0,0, + 0,0,0,114,247,0,0,0,30,5,0,0,115,8,0,0, 0,6,7,4,1,4,255,12,3,114,9,0,0,0,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,99,2,0,0, @@ -2139,7 +2139,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,82,101,97,100,101,114,41,3,114,30,1,0,0,114,73, 1,0,0,114,46,1,0,0,41,3,114,143,0,0,0,114, 243,0,0,0,114,73,1,0,0,115,3,0,0,0,32,32, - 32,114,7,0,0,0,114,31,1,0,0,41,5,0,0,115, + 32,114,7,0,0,0,114,31,1,0,0,42,5,0,0,115, 4,0,0,0,12,1,10,1,114,9,0,0,0,122,36,95, 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46, 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, @@ -2148,7 +2148,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 71,1,0,0,114,205,0,0,0,114,0,1,0,0,114,240, 0,0,0,114,238,0,0,0,114,244,0,0,0,114,247,0, 0,0,114,31,1,0,0,114,12,0,0,0,114,9,0,0, - 0,114,7,0,0,0,114,70,1,0,0,255,4,0,0,115, + 0,114,7,0,0,0,114,70,1,0,0,0,5,0,0,115, 22,0,0,0,8,0,8,1,2,3,10,1,8,10,8,3, 8,3,8,3,8,3,8,3,12,12,114,9,0,0,0,114, 70,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, @@ -2185,14 +2185,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,104,101,218,5,105,116,101,109,115,114,152,0,0,0,114, 75,1,0,0,41,2,114,141,0,0,0,218,6,102,105,110, 100,101,114,115,2,0,0,0,32,32,114,7,0,0,0,114, - 75,1,0,0,52,5,0,0,115,14,0,0,0,22,4,8, + 75,1,0,0,53,5,0,0,115,14,0,0,0,22,4,8, 1,10,1,10,1,8,1,2,128,4,252,114,9,0,0,0, 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,1, 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,3, 0,0,0,115,78,0,0,0,116,0,106,1,100,1,117,1, - 114,14,116,0,106,1,115,14,116,2,160,3,100,2,116,4, - 161,2,1,0,116,0,106,1,68,0,93,18,125,1,9,0, + 114,14,116,0,106,1,115,14,116,2,106,3,100,2,116,4, + 131,2,1,0,116,0,106,1,68,0,93,18,125,1,9,0, 124,1,124,0,131,1,2,0,1,0,83,0,35,0,4,0, 116,5,121,38,1,0,1,0,1,0,89,0,113,17,37,0, 100,1,83,0,119,0,41,3,122,46,83,101,97,114,99,104, @@ -2204,14 +2204,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,111,111,107,115,114,99,0,0,0,114,100,0,0,0,114, 161,0,0,0,114,142,0,0,0,41,2,114,65,0,0,0, 90,4,104,111,111,107,115,2,0,0,0,32,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,62, + 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,63, 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,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,8,0,0,0,3,0,0,0,115,104,0,0, - 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, + 0,124,1,100,1,107,2,114,21,9,0,116,0,106,1,131, 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, @@ -2238,7 +2238,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 220,0,0,0,114,65,0,0,0,114,79,1,0,0,115,3, 0,0,0,32,32,32,114,7,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,75,5,0,0,115,36,0,0,0,8,8,2,1,10,1, + 101,76,5,0,0,115,36,0,0,0,8,8,2,1,10,1, 2,128,12,1,6,3,2,128,2,1,10,1,4,4,2,128, 12,253,10,1,12,1,4,1,2,128,2,253,2,250,115,24, 0,0,0,133,4,10,0,138,7,20,7,150,5,29,0,157, @@ -2248,10 +2248,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, 0,115,138,0,0,0,116,0,124,2,100,1,131,2,114,27, 116,1,160,2,124,2,161,1,155,0,100,2,157,2,125,3, - 116,3,160,4,124,3,116,5,161,2,1,0,124,2,160,6, + 116,3,106,4,124,3,116,5,131,2,1,0,124,2,160,6, 124,1,161,1,92,2,125,4,125,5,110,21,116,1,160,2, - 124,2,161,1,155,0,100,3,157,2,125,3,116,3,160,4, - 124,3,116,5,161,2,1,0,124,2,160,7,124,1,161,1, + 124,2,161,1,155,0,100,3,157,2,125,3,116,3,106,4, + 124,3,116,5,131,2,1,0,124,2,160,7,124,1,161,1, 125,4,103,0,125,5,124,4,100,0,117,1,114,58,116,1, 160,8,124,1,124,4,161,2,83,0,116,1,160,9,124,1, 100,0,161,2,125,6,124,5,124,6,95,10,124,6,83,0, @@ -2271,7 +2271,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,164,0,0,0,114,209,0,0,0,115,7,0, 0,0,32,32,32,32,32,32,32,114,7,0,0,0,218,16, 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, - 97,5,0,0,115,26,0,0,0,10,4,16,1,12,2,16, + 98,5,0,0,115,26,0,0,0,10,4,16,1,12,2,16, 1,16,2,12,2,10,1,4,1,8,1,12,1,12,1,6, 1,4,1,114,9,0,0,0,122,27,80,97,116,104,70,105, 110,100,101,114,46,95,108,101,103,97,99,121,95,103,101,116, @@ -2303,7 +2303,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,101,110,116,114,121,114,79,1,0,0,114,209,0,0,0, 114,164,0,0,0,115,9,0,0,0,32,32,32,32,32,32, 32,32,32,114,7,0,0,0,218,9,95,103,101,116,95,115, - 112,101,99,118,5,0,0,115,42,0,0,0,4,5,8,1, + 112,101,99,119,5,0,0,115,42,0,0,0,4,5,8,1, 14,1,2,1,10,1,8,1,10,1,14,1,12,2,8,1, 2,1,10,1,8,1,6,1,8,1,8,1,10,5,2,128, 12,2,6,1,4,1,114,9,0,0,0,122,20,80,97,116, @@ -2330,13 +2330,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,6,114,220,0,0,0,114,162,0,0,0,114,65,0,0, 0,114,224,0,0,0,114,209,0,0,0,114,87,1,0,0, 115,6,0,0,0,32,32,32,32,32,32,114,7,0,0,0, - 114,225,0,0,0,150,5,0,0,115,26,0,0,0,8,6, + 114,225,0,0,0,151,5,0,0,115,26,0,0,0,8,6, 6,1,14,1,8,1,4,1,10,1,6,1,4,1,6,3, 16,1,4,1,4,2,4,2,114,9,0,0,0,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,3,0,0,0,115,42,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,124, + 4,0,0,0,3,0,0,0,115,42,0,0,0,116,0,106, + 1,100,1,116,2,131,2,1,0,124,0,160,3,124,1,124, 2,161,2,125,3,124,3,100,2,117,0,114,18,100,2,83, 0,124,3,106,4,83,0,41,3,122,170,102,105,110,100,32, 116,104,101,32,109,111,100,117,108,101,32,111,110,32,115,121, @@ -2357,7 +2357,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, 101,99,40,41,32,105,110,115,116,101,97,100,78,114,226,0, 0,0,114,227,0,0,0,115,4,0,0,0,32,32,32,32, - 114,7,0,0,0,114,228,0,0,0,174,5,0,0,115,14, + 114,7,0,0,0,114,228,0,0,0,175,5,0,0,115,14, 0,0,0,6,8,2,2,4,254,12,3,8,1,4,1,6, 1,114,9,0,0,0,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,0, @@ -2389,7 +2389,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,218,18,102,105,110,100,95,100,105,115,116,114,105,98, 117,116,105,111,110,115,41,3,114,144,0,0,0,114,145,0, 0,0,114,89,1,0,0,115,3,0,0,0,32,32,32,114, - 7,0,0,0,114,90,1,0,0,190,5,0,0,115,4,0, + 7,0,0,0,114,90,1,0,0,191,5,0,0,115,4,0, 0,0,12,10,16,1,114,9,0,0,0,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,114,69,0,0,0,114, @@ -2399,7 +2399,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,114,85,1,0,0,114,88,1,0,0,114,225,0, 0,0,114,228,0,0,0,114,90,1,0,0,114,12,0,0, 0,114,9,0,0,0,114,7,0,0,0,114,74,1,0,0, - 48,5,0,0,115,36,0,0,0,8,0,4,2,2,2,10, + 49,5,0,0,115,36,0,0,0,8,0,4,2,2,2,10, 1,2,9,10,1,2,12,10,1,2,21,10,1,2,20,12, 1,2,31,12,1,2,23,12,1,2,15,14,1,114,9,0, 0,0,114,74,1,0,0,99,0,0,0,0,0,0,0,0, @@ -2427,7 +2427,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,125,4,124,3,160,0,136,5,102,1,100,1,100,2,132, 8,124,4,68,0,131,1,161,1,1,0,113,5,124,3,124, 0,95,1,124,1,112,28,100,3,124,0,95,2,116,3,124, - 0,106,2,131,1,115,44,116,4,116,5,160,6,161,0,124, + 0,106,2,131,1,115,44,116,4,116,5,106,6,131,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, @@ -2446,7 +2446,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,83,0,114,69,0,0,0,114,12,0,0,0,41,3,114, 5,0,0,0,114,41,1,0,0,114,163,0,0,0,115,3, 0,0,0,32,32,128,114,7,0,0,0,114,8,0,0,0, - 219,5,0,0,115,4,0,0,0,2,128,22,0,114,9,0, + 220,5,0,0,115,4,0,0,0,2,128,22,0,114,9,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,97,0,0,0,114, @@ -2460,7 +2460,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,211,0,0,0,114,163,0, 0,0,115,6,0,0,0,32,32,32,32,32,64,114,7,0, - 0,0,114,235,0,0,0,213,5,0,0,115,22,0,0,0, + 0,0,114,235,0,0,0,214,5,0,0,115,22,0,0,0, 2,128,4,4,12,1,26,1,6,1,10,2,10,1,18,1, 6,1,8,1,12,1,114,9,0,0,0,122,19,70,105,108, 101,70,105,110,100,101,114,46,95,95,105,110,105,116,95,95, @@ -2470,12 +2470,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,101,32,116,104,101,32,100,105,114,101,99,116,111,114,121, 32,109,116,105,109,101,46,114,130,0,0,0,78,41,1,114, 93,1,0,0,114,20,1,0,0,115,1,0,0,0,32,114, - 7,0,0,0,114,75,1,0,0,229,5,0,0,114,81,0, + 7,0,0,0,114,75,1,0,0,230,5,0,0,114,81,0, 0,0,114,9,0,0,0,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,4,0,0,0,3,0,0,0,115,54,0,0,0,116, - 0,160,1,100,1,116,2,161,2,1,0,124,0,160,3,124, + 0,0,3,0,0,0,3,0,0,0,115,54,0,0,0,116, + 0,106,1,100,1,116,2,131,2,1,0,124,0,160,3,124, 1,161,1,125,2,124,2,100,2,117,0,114,19,100,2,103, 0,102,2,83,0,124,2,106,4,124,2,106,5,112,25,103, 0,102,2,83,0,41,3,122,197,84,114,121,32,116,111,32, @@ -2501,7 +2501,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,101,0,0,0,114,225,0,0,0,114,163,0,0, 0,114,201,0,0,0,41,3,114,143,0,0,0,114,162,0, 0,0,114,209,0,0,0,115,3,0,0,0,32,32,32,114, - 7,0,0,0,114,160,0,0,0,235,5,0,0,115,14,0, + 7,0,0,0,114,160,0,0,0,236,5,0,0,115,14,0, 0,0,6,7,2,2,4,254,10,3,8,1,8,1,16,1, 114,9,0,0,0,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, @@ -2512,14 +2512,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,7,114,143,0,0,0,114,210,0,0,0,114,162,0,0, 0,114,65,0,0,0,90,4,115,109,115,108,114,224,0,0, 0,114,163,0,0,0,115,7,0,0,0,32,32,32,32,32, - 32,32,114,7,0,0,0,114,88,1,0,0,250,5,0,0, + 32,32,114,7,0,0,0,114,88,1,0,0,251,5,0,0, 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, 0,0,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,9,0,0,0,3,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,9,0,116,1,124,0,106,2,112,17,116, - 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, + 3,106,4,131,0,131,1,106,5,125,5,110,12,35,0,4, 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, @@ -2570,7 +2570,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,97,109,101,90,9,102,117,108,108,95,112,97,116,104,114, 209,0,0,0,115,14,0,0,0,32,32,32,32,32,32,32, 32,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, - 0,255,5,0,0,115,94,0,0,0,4,5,14,1,2,1, + 0,0,6,0,0,115,94,0,0,0,4,5,14,1,2,1, 22,1,2,128,12,1,8,1,2,128,10,1,8,1,6,1, 6,2,6,1,10,1,6,2,4,1,8,2,12,1,14,1, 8,1,10,1,8,1,24,1,2,255,8,5,14,2,2,1, @@ -2582,8 +2582,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,10, 0,0,0,3,0,0,0,115,194,0,0,0,124,0,106,0, - 125,1,9,0,116,1,160,2,124,1,112,11,116,1,160,3, - 161,0,161,1,125,2,110,15,35,0,4,0,116,4,116,5, + 125,1,9,0,116,1,106,2,124,1,112,11,116,1,106,3, + 131,0,131,1,125,2,110,15,35,0,4,0,116,4,116,5, 116,6,102,3,121,96,1,0,1,0,1,0,103,0,125,2, 89,0,110,1,37,0,116,7,106,8,160,9,100,1,161,1, 115,41,116,10,124,2,131,1,124,0,95,11,110,37,116,10, @@ -2604,7 +2604,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,124,0,93,6,125,1,124,1,160,0,161,0,146,2,113, 2,83,0,114,12,0,0,0,41,1,114,131,0,0,0,41, 2,114,5,0,0,0,90,2,102,110,115,2,0,0,0,32, - 32,114,7,0,0,0,114,14,0,0,0,79,6,0,0,115, + 32,114,7,0,0,0,114,14,0,0,0,80,6,0,0,115, 2,0,0,0,20,0,114,9,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, @@ -2622,7 +2622,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 67,1,0,0,114,141,0,0,0,114,51,1,0,0,114,41, 1,0,0,90,8,110,101,119,95,110,97,109,101,115,9,0, 0,0,32,32,32,32,32,32,32,32,32,114,7,0,0,0, - 114,98,1,0,0,50,6,0,0,115,42,0,0,0,6,2, + 114,98,1,0,0,51,6,0,0,115,42,0,0,0,6,2, 2,1,20,1,2,128,18,1,8,3,2,128,12,3,12,1, 6,7,8,1,16,1,4,1,18,1,4,2,12,1,6,1, 12,1,20,1,4,255,2,233,115,13,0,0,0,132,9,14, @@ -2662,7 +2662,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,65,0,0,0,114,220,0,0,0,114,97,1,0,0,115, 3,0,0,0,32,128,128,114,7,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,91,6,0,0,115,6,0,0,0,8, + 70,105,110,100,101,114,92,6,0,0,115,6,0,0,0,8, 2,12,1,16,1,114,9,0,0,0,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, @@ -2670,14 +2670,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,114,78,114,12,0,0,0,41,3,114,220,0,0,0,114, 97,1,0,0,114,102,1,0,0,115,3,0,0,0,96,96, 32,114,7,0,0,0,218,9,112,97,116,104,95,104,111,111, - 107,81,6,0,0,115,6,0,0,0,4,128,14,10,4,6, + 107,82,6,0,0,115,6,0,0,0,4,128,14,10,4,6, 114,9,0,0,0,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,3,0,0,0,3,0,0,0, 114,64,1,0,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,89,0,0, 0,114,65,0,0,0,114,20,1,0,0,115,1,0,0,0, - 32,114,7,0,0,0,114,65,1,0,0,99,6,0,0,114, + 32,114,7,0,0,0,114,65,1,0,0,100,6,0,0,114, 58,1,0,0,114,9,0,0,0,122,19,70,105,108,101,70, 105,110,100,101,114,46,95,95,114,101,112,114,95,95,114,69, 0,0,0,41,15,114,149,0,0,0,114,148,0,0,0,114, @@ -2686,7 +2686,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,88,1,0,0,114,225,0,0,0,114,98,1,0, 0,114,233,0,0,0,114,103,1,0,0,114,65,1,0,0, 114,12,0,0,0,114,9,0,0,0,114,7,0,0,0,114, - 91,1,0,0,204,5,0,0,115,24,0,0,0,8,0,4, + 91,1,0,0,205,5,0,0,115,24,0,0,0,8,0,4, 2,8,7,8,16,4,4,8,2,8,15,10,5,8,51,2, 31,10,1,12,17,114,9,0,0,0,114,91,1,0,0,99, 4,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, @@ -2710,13 +2710,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,116,104,110,97,109,101,114,163,0,0,0,114,209,0,0, 0,115,6,0,0,0,32,32,32,32,32,32,114,7,0,0, 0,218,14,95,102,105,120,95,117,112,95,109,111,100,117,108, - 101,105,6,0,0,115,40,0,0,0,10,2,10,1,4,1, + 101,106,6,0,0,115,40,0,0,0,10,2,10,1,4,1, 4,1,8,1,8,1,12,1,10,2,4,1,14,1,2,1, 8,1,8,1,8,1,12,1,2,128,12,1,6,2,2,128, 2,254,115,15,0,0,0,171,16,61,0,189,7,65,7,7, 193,8,1,65,7,7,114,108,1,0,0,99,0,0,0,0, 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 115,38,0,0,0,116,0,116,1,160,2,161,0,102,2,125, + 115,38,0,0,0,116,0,116,1,106,2,131,0,102,2,125, 0,116,3,116,4,102,2,125,1,116,5,116,6,102,2,125, 2,124,0,124,1,124,2,103,3,83,0,41,2,122,95,82, 101,116,117,114,110,115,32,97,32,108,105,115,116,32,111,102, @@ -2731,7 +2731,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,115,3,0,0,0,32,32,32,114,7,0,0,0, - 114,207,0,0,0,128,6,0,0,115,8,0,0,0,12,5, + 114,207,0,0,0,129,6,0,0,115,8,0,0,0,12,5, 8,1,8,1,10,1,114,9,0,0,0,114,207,0,0,0, 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, 0,3,0,0,0,115,8,0,0,0,124,0,97,0,100,0, @@ -2739,7 +2739,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 218,17,95,98,111,111,116,115,116,114,97,112,95,109,111,100, 117,108,101,115,1,0,0,0,32,114,7,0,0,0,218,21, 95,115,101,116,95,98,111,111,116,115,116,114,97,112,95,109, - 111,100,117,108,101,139,6,0,0,115,2,0,0,0,8,2, + 111,100,117,108,101,140,6,0,0,115,2,0,0,0,8,2, 114,9,0,0,0,114,111,1,0,0,99,1,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,115, 50,0,0,0,116,0,124,0,131,1,1,0,116,1,131,0, @@ -2754,7 +2754,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 112,97,116,104,114,61,0,0,0,114,74,1,0,0,41,2, 114,110,1,0,0,90,17,115,117,112,112,111,114,116,101,100, 95,108,111,97,100,101,114,115,115,2,0,0,0,32,32,114, - 7,0,0,0,218,8,95,105,110,115,116,97,108,108,144,6, + 7,0,0,0,218,8,95,105,110,115,116,97,108,108,145,6, 0,0,115,8,0,0,0,8,2,6,1,20,1,16,1,114, 9,0,0,0,114,113,1,0,0,41,1,114,87,0,0,0, 114,69,0,0,0,41,3,78,78,78,41,2,114,0,0,0, @@ -2799,7 +2799,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4, 255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8, 30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8, - 8,10,5,10,22,0,127,16,38,12,1,4,2,4,1,6, + 8,10,5,10,22,0,127,16,39,12,1,4,2,4,1,6, 2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8, 40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10, 24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14, diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index c16880eac07065..c2d973f967e1e0 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -122,9 +122,9 @@ const unsigned char _Py_M__zipimport[] = { 2,125,2,124,2,160,3,124,1,161,1,125,1,124,1,115, 22,116,4,100,2,124,1,100,3,141,2,130,1,116,5,114, 30,124,1,160,6,116,5,116,7,161,2,125,1,103,0,125, - 3,9,0,9,0,116,8,160,9,124,1,161,1,125,4,110, + 3,9,0,9,0,116,8,106,9,124,1,131,1,125,4,110, 36,35,0,4,0,116,10,116,11,102,2,121,147,1,0,1, - 0,1,0,116,8,160,12,124,1,161,1,92,2,125,5,125, + 0,1,0,116,8,106,12,124,1,131,1,92,2,125,5,125, 6,124,5,124,1,107,2,114,66,116,4,100,5,124,1,100, 3,141,2,130,1,124,5,125,1,124,3,160,13,124,6,161, 1,1,0,89,0,110,15,37,0,124,4,106,14,100,6,64, @@ -172,7 +172,7 @@ const unsigned char _Py_M__zipimport[] = { 105,112,105,109,112,111,114,116,101,114,46,95,95,105,110,105, 116,95,95,78,99,3,0,0,0,0,0,0,0,0,0,0, 0,4,0,0,0,3,0,0,0,115,90,0,0,0,116,0, - 160,1,100,1,116,2,161,2,1,0,116,3,124,0,124,1, + 106,1,100,1,116,2,131,2,1,0,116,3,124,0,124,1, 131,2,125,3,124,3,100,2,117,1,114,19,124,0,103,0, 102,2,83,0,116,4,124,0,124,1,131,2,125,4,116,5, 124,0,124,4,131,2,114,41,100,2,124,0,106,6,155,0, @@ -234,8 +234,8 @@ const unsigned char _Py_M__zipimport[] = { 2,114,10,0,0,0,122,23,122,105,112,105,109,112,111,114, 116,101,114,46,102,105,110,100,95,108,111,97,100,101,114,99, 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,28,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,100, + 3,0,0,0,115,28,0,0,0,116,0,106,1,100,1,116, + 2,131,2,1,0,124,0,160,3,124,1,124,2,161,2,100, 2,25,0,83,0,41,4,97,203,1,0,0,102,105,110,100, 95,109,111,100,117,108,101,40,102,117,108,108,110,97,109,101, 44,32,112,97,116,104,61,78,111,110,101,41,32,45,62,32, @@ -280,13 +280,13 @@ const unsigned char _Py_M__zipimport[] = { 11,2,2,4,254,16,3,114,10,0,0,0,122,23,122,105, 112,105,109,112,111,114,116,101,114,46,102,105,110,100,95,109, 111,100,117,108,101,99,3,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,3,0,0,0,115,108,0,0,0,116, + 0,0,5,0,0,0,3,0,0,0,115,108,0,0,0,116, 0,124,0,124,1,131,2,125,3,124,3,100,1,117,1,114, - 17,116,1,160,2,124,1,124,0,124,3,100,2,166,3,83, + 17,116,1,106,2,124,1,124,0,124,3,100,2,141,3,83, 0,116,3,124,0,124,1,131,2,125,4,116,4,124,0,124, 4,131,2,114,52,124,0,106,5,155,0,116,6,155,0,124, - 4,155,0,157,3,125,5,116,1,160,7,124,1,100,1,100, - 3,100,4,166,3,125,6,124,6,106,8,160,9,124,5,161, + 4,155,0,157,3,125,5,116,1,106,7,124,1,100,1,100, + 3,100,4,141,3,125,6,124,6,106,8,160,9,124,5,161, 1,1,0,124,6,83,0,100,1,83,0,41,5,122,107,67, 114,101,97,116,101,32,97,32,77,111,100,117,108,101,83,112, 101,99,32,102,111,114,32,116,104,101,32,115,112,101,99,105, @@ -387,8 +387,8 @@ const unsigned char _Py_M__zipimport[] = { 0,3,0,0,0,115,128,0,0,0,116,0,124,0,124,1, 131,2,125,2,124,2,100,1,117,0,114,18,116,1,100,2, 124,1,155,2,157,2,124,1,100,3,141,2,130,1,116,2, - 124,0,124,1,131,2,125,3,124,2,114,32,116,3,160,4, - 124,3,100,4,161,2,125,4,110,5,124,3,155,0,100,5, + 124,0,124,1,131,2,125,3,124,2,114,32,116,3,106,4, + 124,3,100,4,131,2,125,4,110,5,124,3,155,0,100,5, 157,2,125,4,9,0,124,0,106,5,124,4,25,0,125,5, 110,11,35,0,4,0,116,6,121,63,1,0,1,0,1,0, 89,0,100,1,83,0,37,0,116,7,124,0,106,8,124,5, @@ -447,22 +447,22 @@ const unsigned char _Py_M__zipimport[] = { 0,0,122,22,122,105,112,105,109,112,111,114,116,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,8,0,0,0,3,0,0,0,115, - 0,1,0,0,100,1,125,2,116,0,160,1,124,2,116,2, - 161,2,1,0,116,3,124,0,124,1,131,2,92,3,125,3, + 0,1,0,0,100,1,125,2,116,0,106,1,124,2,116,2, + 131,2,1,0,116,3,124,0,124,1,131,2,92,3,125,3, 125,4,125,5,116,4,106,5,160,6,124,1,161,1,125,6, 124,6,100,2,117,0,115,31,116,7,124,6,116,8,131,2, 115,40,116,8,124,1,131,1,125,6,124,6,116,4,106,5, 124,1,60,0,124,0,124,6,95,9,9,0,124,4,114,62, - 116,10,124,0,124,1,131,2,125,7,116,11,160,12,124,0, - 106,13,124,7,161,2,125,8,124,8,103,1,124,6,95,14, + 116,10,124,0,124,1,131,2,125,7,116,11,106,12,124,0, + 106,13,124,7,131,2,125,8,124,8,103,1,124,6,95,14, 116,15,124,6,100,3,131,2,115,70,116,16,124,6,95,16, - 116,11,160,17,124,6,106,18,124,1,124,5,161,3,1,0, + 116,11,106,17,124,6,106,18,124,1,124,5,131,3,1,0, 116,19,124,3,124,6,106,18,131,2,1,0,110,10,35,0, 1,0,1,0,1,0,116,4,106,5,124,1,61,0,130,0, 37,0,9,0,116,4,106,5,124,1,25,0,125,6,110,16, 35,0,4,0,116,20,121,127,1,0,1,0,1,0,116,21, 100,4,124,1,155,2,100,5,157,3,131,1,130,1,37,0, - 116,22,160,23,100,6,124,1,124,5,161,3,1,0,124,6, + 116,22,106,23,100,6,124,1,124,5,131,3,1,0,124,6, 83,0,119,0,41,7,97,64,1,0,0,108,111,97,100,95, 109,111,100,117,108,101,40,102,117,108,108,110,97,109,101,41, 32,45,62,32,109,111,100,117,108,101,46,10,10,32,32,32, @@ -623,7 +623,7 @@ const unsigned char _Py_M__zipimport[] = { 0,10,1,14,1,8,1,10,1,8,1,2,255,4,2,114, 10,0,0,0,114,39,0,0,0,99,1,0,0,0,0,0, 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,248, - 4,0,0,9,0,116,0,160,1,124,0,161,1,125,1,110, + 4,0,0,9,0,116,0,106,1,124,0,131,1,125,1,110, 18,35,0,4,0,116,2,144,2,121,123,1,0,1,0,1, 0,116,3,100,1,124,0,155,2,157,2,124,0,100,2,141, 2,130,1,37,0,124,1,53,0,1,0,9,0,124,1,160, @@ -695,13 +695,13 @@ const unsigned char _Py_M__zipimport[] = { 0,116,17,144,2,121,116,1,0,1,0,1,0,124,23,160, 16,100,31,161,1,160,18,116,19,161,1,125,23,89,0,110, 1,37,0,124,23,160,20,100,32,116,21,161,2,125,23,116, - 22,160,23,124,0,124,23,161,2,125,24,124,24,124,14,124, + 22,106,23,124,0,124,23,131,2,125,24,124,24,124,14,124, 18,124,4,124,22,124,15,124,16,124,17,102,8,125,25,124, 25,124,11,124,23,60,0,124,12,100,33,55,0,125,12,144, 1,113,42,9,0,100,0,4,0,4,0,131,3,1,0,110, 12,35,0,49,0,144,2,115,101,119,4,37,0,1,0,1, - 0,1,0,89,0,1,0,1,0,116,24,160,25,100,34,124, - 12,124,0,161,3,1,0,124,11,83,0,119,0,119,0,119, + 0,1,0,89,0,1,0,1,0,116,24,106,25,100,34,124, + 12,124,0,131,3,1,0,124,11,83,0,119,0,119,0,119, 0,119,0,119,0,119,0,119,0,119,0,41,35,78,122,21, 99,97,110,39,116,32,111,112,101,110,32,90,105,112,32,102, 105,108,101,58,32,114,13,0,0,0,114,94,0,0,0,250, @@ -822,13 +822,13 @@ const unsigned char _Py_M__zipimport[] = { 194,176,226,136,153,194,183,226,136,154,226,129,191,194,178,226, 150,160,194,160,99,0,0,0,0,0,0,0,0,0,0,0, 0,8,0,0,0,3,0,0,0,115,110,0,0,0,116,0, - 114,11,116,1,160,2,100,1,161,1,1,0,116,3,100,2, + 114,11,116,1,106,2,100,1,131,1,1,0,116,3,100,2, 131,1,130,1,100,3,97,0,9,0,100,4,100,5,108,4, 109,5,125,0,1,0,110,17,35,0,4,0,116,6,121,54, - 1,0,1,0,1,0,116,1,160,2,100,1,161,1,1,0, + 1,0,1,0,1,0,116,1,106,2,100,1,131,1,1,0, 116,3,100,2,131,1,130,1,37,0,9,0,100,6,97,0, - 110,5,35,0,100,6,97,0,119,0,37,0,116,1,160,2, - 100,7,161,1,1,0,124,0,83,0,119,0,41,8,78,122, + 110,5,35,0,100,6,97,0,119,0,37,0,116,1,106,2, + 100,7,131,1,1,0,124,0,83,0,119,0,41,8,78,122, 27,122,105,112,105,109,112,111,114,116,58,32,122,108,105,98, 32,85,78,65,86,65,73,76,65,66,76,69,250,41,99,97, 110,39,116,32,100,101,99,111,109,112,114,101,115,115,32,100, @@ -851,7 +851,7 @@ const unsigned char _Py_M__zipimport[] = { 0,9,0,0,0,3,0,0,0,115,132,1,0,0,124,1, 92,8,125,2,125,3,125,4,125,5,125,6,125,7,125,8, 125,9,124,4,100,1,107,0,114,18,116,0,100,2,131,1, - 130,1,116,1,160,2,124,0,161,1,53,0,125,10,9,0, + 130,1,116,1,106,2,124,0,131,1,53,0,125,10,9,0, 124,10,160,3,124,6,161,1,1,0,110,17,35,0,4,0, 116,4,121,193,1,0,1,0,1,0,116,0,100,3,124,0, 155,2,157,2,124,0,100,4,141,2,130,1,37,0,124,10, @@ -913,21 +913,21 @@ const unsigned char _Py_M__zipimport[] = { 114,11,0,0,0,218,9,95,101,113,95,109,116,105,109,101, 115,2,0,0,115,2,0,0,0,16,2,114,10,0,0,0, 114,154,0,0,0,99,5,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,3,0,0,0,115,254,0,0,0,124, - 3,124,2,100,1,156,2,125,5,116,0,160,1,124,4,124, - 3,124,5,161,3,125,6,124,6,100,2,64,0,100,3,107, + 0,0,5,0,0,0,3,0,0,0,115,254,0,0,0,124, + 3,124,2,100,1,156,2,125,5,116,0,106,1,124,4,124, + 3,124,5,131,3,125,6,124,6,100,2,64,0,100,3,107, 3,125,7,124,7,114,63,124,6,100,4,64,0,100,3,107, 3,125,8,116,2,106,3,100,5,107,3,114,62,124,8,115, 38,116,2,106,3,100,6,107,2,114,62,116,4,124,0,124, - 2,131,2,125,9,124,9,100,0,117,1,114,62,116,2,160, - 5,116,0,106,6,124,9,161,2,125,10,116,0,160,7,124, - 4,124,10,124,3,124,5,161,4,1,0,110,40,116,8,124, + 2,131,2,125,9,124,9,100,0,117,1,114,62,116,2,106, + 5,116,0,106,6,124,9,131,2,125,10,116,0,106,7,124, + 4,124,10,124,3,124,5,131,4,1,0,110,40,116,8,124, 0,124,2,131,2,92,2,125,11,125,12,124,11,114,103,116, 9,116,10,124,4,100,7,100,8,133,2,25,0,131,1,124, 11,131,2,114,93,116,10,124,4,100,8,100,9,133,2,25, - 0,131,1,124,12,107,3,114,103,116,11,160,12,100,10,124, - 3,155,2,157,2,161,1,1,0,100,0,83,0,116,13,160, - 14,124,4,100,9,100,0,133,2,25,0,161,1,125,13,116, + 0,131,1,124,12,107,3,114,103,116,11,106,12,100,10,124, + 3,155,2,157,2,131,1,1,0,100,0,83,0,116,13,106, + 14,124,4,100,9,100,0,133,2,25,0,131,1,125,13,116, 15,124,13,116,16,131,2,115,125,116,17,100,11,124,1,155, 2,100,12,157,3,131,1,130,1,124,13,83,0,41,13,78, 41,2,114,48,0,0,0,114,14,0,0,0,114,5,0,0, @@ -987,11 +987,11 @@ const unsigned char _Py_M__zipimport[] = { 111,109,112,105,108,101,95,115,111,117,114,99,101,175,2,0, 0,115,4,0,0,0,8,1,16,1,114,10,0,0,0,114, 168,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,11,0,0,0,3,0,0,0,115,68,0,0,0,116,0, - 160,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, + 0,10,0,0,0,3,0,0,0,115,68,0,0,0,116,0, + 106,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, 63,0,100,4,64,0,124,0,100,5,64,0,124,1,100,6, 63,0,124,1,100,3,63,0,100,7,64,0,124,1,100,5, - 64,0,100,8,20,0,100,9,100,9,100,9,102,9,161,1, + 64,0,100,8,20,0,100,9,100,9,100,9,102,9,131,1, 83,0,41,10,78,233,9,0,0,0,105,188,7,0,0,233, 5,0,0,0,233,15,0,0,0,233,31,0,0,0,233,11, 0,0,0,233,63,0,0,0,114,94,0,0,0,114,15,0, @@ -1040,8 +1040,8 @@ const unsigned char _Py_M__zipimport[] = { 0,9,0,0,0,3,0,0,0,115,14,1,0,0,116,0, 124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,0, 93,100,92,3,125,4,125,5,125,6,124,2,124,4,23,0, - 125,7,116,2,160,3,100,1,124,0,106,4,116,5,124,7, - 100,2,100,3,166,5,1,0,9,0,124,0,106,6,124,7, + 125,7,116,2,106,3,100,1,124,0,106,4,116,5,124,7, + 100,2,100,3,141,5,1,0,9,0,124,0,106,6,124,7, 25,0,125,8,110,10,35,0,4,0,116,7,121,134,1,0, 1,0,1,0,89,0,113,9,37,0,124,8,100,4,25,0, 125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,0, diff --git a/Python/symtable.c b/Python/symtable.c index 62bd1e2ec48f8a..4508464ef13f24 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -391,7 +391,7 @@ PySymtable_Lookup(struct symtable *st, void *key) return (PySTEntryObject *)v; } -static long +long _PyST_GetSymbol(PySTEntryObject *ste, PyObject *name) { PyObject *v = PyDict_GetItemWithError(ste->ste_symbols, name); From webhook-mailer at python.org Wed Jun 30 20:30:53 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 01 Jul 2021 00:30:53 -0000 Subject: [Python-checkins] bpo-44531: Add _PyType_AllocNoTrack() function (GH-26947) Message-ID: https://github.com/python/cpython/commit/818628c2da99ba0376313971816d472c65c9a9fc commit: 818628c2da99ba0376313971816d472c65c9a9fc branch: main author: Victor Stinner committer: vstinner date: 2021-07-01T02:30:46+02:00 summary: bpo-44531: Add _PyType_AllocNoTrack() function (GH-26947) Add an internal _PyType_AllocNoTrack() function to allocate an object without tracking it in the GC. Modify dict_new() to use _PyType_AllocNoTrack(): dict subclasses are now only tracked once all PyDictObject members are initialized. Calling _PyObject_GC_UNTRACK() is no longer needed for the dict type. Similar change in tuple_subtype_new() for tuple subclasses. Replace tuple_gc_track() with _PyObject_GC_TRACK(). files: M Include/internal/pycore_object.h M Objects/dictobject.c M Objects/tupleobject.c M Objects/typeobject.c diff --git a/Include/internal/pycore_object.h b/Include/internal/pycore_object.h index 9dfc8c62babad..4091f5178eed1 100644 --- a/Include/internal/pycore_object.h +++ b/Include/internal/pycore_object.h @@ -178,6 +178,8 @@ extern int _Py_CheckSlotResult( // See also the Py_TPFLAGS_READY flag. #define _PyType_IsReady(type) ((type)->tp_dict != NULL) +extern PyObject* _PyType_AllocNoTrack(PyTypeObject *type, Py_ssize_t nitems); + #ifdef __cplusplus } #endif diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 3a1dbc994b44b..7f1d38dd5f43f 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -3324,19 +3324,16 @@ static PyNumberMethods dict_as_number = { static PyObject * dict_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - PyObject *self; - PyDictObject *d; + assert(type != NULL); + assert(type->tp_alloc != NULL); + // dict subclasses must implement the GC protocol + assert(_PyType_IS_GC(type)); - assert(type != NULL && type->tp_alloc != NULL); - self = type->tp_alloc(type, 0); - if (self == NULL) + PyObject *self = type->tp_alloc(type, 0); + if (self == NULL) { return NULL; - d = (PyDictObject *)self; - - /* The object has been implicitly tracked by tp_alloc */ - if (type == &PyDict_Type) { - _PyObject_GC_UNTRACK(d); } + PyDictObject *d = (PyDictObject *)self; d->ma_used = 0; d->ma_version_tag = DICT_NEXT_VERSION(); @@ -3344,6 +3341,17 @@ dict_new(PyTypeObject *type, PyObject *args, PyObject *kwds) d->ma_keys = Py_EMPTY_KEYS; d->ma_values = empty_values; ASSERT_CONSISTENT(d); + + if (type != &PyDict_Type) { + // Don't track if a subclass tp_alloc is PyType_GenericAlloc() + if (!_PyObject_GC_IS_TRACKED(d)) { + _PyObject_GC_TRACK(d); + } + } + else { + // _PyType_AllocNoTrack() does not track the created object + assert(!_PyObject_GC_IS_TRACKED(d)); + } return self; } @@ -3441,7 +3449,7 @@ PyTypeObject PyDict_Type = { 0, /* tp_descr_set */ 0, /* tp_dictoffset */ dict_init, /* tp_init */ - PyType_GenericAlloc, /* tp_alloc */ + _PyType_AllocNoTrack, /* tp_alloc */ dict_new, /* tp_new */ PyObject_GC_Del, /* tp_free */ .tp_vectorcall = dict_vectorcall, diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c index 6b1ab740121e8..b7fd421196dda 100644 --- a/Objects/tupleobject.c +++ b/Objects/tupleobject.c @@ -25,13 +25,6 @@ get_tuple_state(void) #endif -static inline void -tuple_gc_track(PyTupleObject *op) -{ - _PyObject_GC_TRACK(op); -} - - /* Print summary info about the state of the optimized allocator */ void _PyTuple_DebugMallocStats(FILE *out) @@ -48,10 +41,12 @@ _PyTuple_DebugMallocStats(FILE *out) #endif } -/* Allocate an uninitialized tuple object. Before making it public following +/* Allocate an uninitialized tuple object. Before making it public, following steps must be done: - - initialize its items - - call tuple_gc_track() on it + + - Initialize its items. + - Call _PyObject_GC_TRACK() on it. + Because the empty tuple is always reused and it's already tracked by GC, this function must not be called with size == 0 (unless from PyTuple_New() which wraps this function). @@ -161,7 +156,7 @@ PyTuple_New(Py_ssize_t size) for (Py_ssize_t i = 0; i < size; i++) { op->ob_item[i] = NULL; } - tuple_gc_track(op); + _PyObject_GC_TRACK(op); return (PyObject *) op; } @@ -257,7 +252,7 @@ PyTuple_Pack(Py_ssize_t n, ...) items[i] = o; } va_end(vargs); - tuple_gc_track(result); + _PyObject_GC_TRACK(result); return (PyObject *)result; } @@ -473,7 +468,7 @@ _PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) Py_INCREF(item); dst[i] = item; } - tuple_gc_track(tuple); + _PyObject_GC_TRACK(tuple); return (PyObject *)tuple; } @@ -551,7 +546,7 @@ tupleconcat(PyTupleObject *a, PyObject *bb) Py_INCREF(v); dest[i] = v; } - tuple_gc_track(np); + _PyObject_GC_TRACK(np); return (PyObject *)np; } @@ -588,7 +583,7 @@ tuplerepeat(PyTupleObject *a, Py_ssize_t n) p++; } } - tuple_gc_track(np); + _PyObject_GC_TRACK(np); return (PyObject *) np; } @@ -783,6 +778,9 @@ tuple_subtype_new(PyTypeObject *type, PyObject *iterable) Py_ssize_t i, n; assert(PyType_IsSubtype(type, &PyTuple_Type)); + // tuple subclasses must implement the GC protocol + assert(_PyType_IS_GC(type)); + tmp = tuple_new_impl(&PyTuple_Type, iterable); if (tmp == NULL) return NULL; @@ -798,6 +796,11 @@ tuple_subtype_new(PyTypeObject *type, PyObject *iterable) PyTuple_SET_ITEM(newobj, i, item); } Py_DECREF(tmp); + + // Don't track if a subclass tp_alloc is PyType_GenericAlloc() + if (!_PyObject_GC_IS_TRACKED(newobj)) { + _PyObject_GC_TRACK(newobj); + } return newobj; } @@ -857,7 +860,7 @@ tuplesubscript(PyTupleObject* self, PyObject* item) dest[i] = it; } - tuple_gc_track(result); + _PyObject_GC_TRACK(result); return (PyObject *)result; } } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 8ee4e813ee521..116ac14cbc2a6 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1164,7 +1164,7 @@ type_call(PyTypeObject *type, PyObject *args, PyObject *kwds) } PyObject * -PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) +_PyType_AllocNoTrack(PyTypeObject *type, Py_ssize_t nitems) { PyObject *obj; const size_t size = _PyObject_VAR_SIZE(type, nitems+1); @@ -1189,6 +1189,16 @@ PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) else { _PyObject_InitVar((PyVarObject *)obj, type, nitems); } + return obj; +} + +PyObject * +PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) +{ + PyObject *obj = _PyType_AllocNoTrack(type, nitems); + if (obj == NULL) { + return NULL; + } if (_PyType_IS_GC(type)) { _PyObject_GC_TRACK(obj); From webhook-mailer at python.org Wed Jun 30 20:35:19 2021 From: webhook-mailer at python.org (corona10) Date: Thu, 01 Jul 2021 00:35:19 -0000 Subject: [Python-checkins] bpo-43425: Update _osx_support not to use distutils.log (GH-26968) Message-ID: https://github.com/python/cpython/commit/c8979f780e4b7d6db5693cb26a2956cc785abb48 commit: c8979f780e4b7d6db5693cb26a2956cc785abb48 branch: main author: Dong-hee Na committer: corona10 date: 2021-07-01T09:35:10+09:00 summary: bpo-43425: Update _osx_support not to use distutils.log (GH-26968) files: M Lib/_osx_support.py diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py index b7145ee069fa3..326b36d611631 100644 --- a/Lib/_osx_support.py +++ b/Lib/_osx_support.py @@ -428,10 +428,9 @@ def compiler_fixup(compiler_so, cc_args): break if sysroot and not os.path.isdir(sysroot): - from distutils import log - log.warn("Compiling with an SDK that doesn't seem to exist: %s", - sysroot) - log.warn("Please check your Xcode installation") + sys.stderr.write(f"Compiling with an SDK that doesn't seem to exist: {sysroot}\n") + sys.stderr.write("Please check your Xcode installation\n") + sys.stderr.flush() return compiler_so From webhook-mailer at python.org Wed Jun 30 21:12:06 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 01 Jul 2021 01:12:06 -0000 Subject: [Python-checkins] bpo-43770: Cleanup _PyObject_GetMethod() (GH-26946) Message-ID: https://github.com/python/cpython/commit/dd3adc013b21ec1338bb5fea2e2c04a4fc650306 commit: dd3adc013b21ec1338bb5fea2e2c04a4fc650306 branch: main author: Victor Stinner committer: vstinner date: 2021-07-01T03:11:59+02:00 summary: bpo-43770: Cleanup _PyObject_GetMethod() (GH-26946) _PyObject_GetMethod() now uses _PyType_IsReady() to decide if PyType_Ready() must be called or not, rather than testing if tp->tp_dict is NULL. Move also variable declarations closer to where they are used, and use Py_NewRef(). files: M Objects/object.c diff --git a/Objects/object.c b/Objects/object.c index c87a83f225f14..8a854c7391ef9 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1124,25 +1124,24 @@ _PyObject_NextNotImplemented(PyObject *self) int _PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { - PyTypeObject *tp = Py_TYPE(obj); - PyObject *descr; - descrgetfunc f = NULL; - PyObject **dictptr, *dict; - PyObject *attr; int meth_found = 0; assert(*method == NULL); - if (Py_TYPE(obj)->tp_getattro != PyObject_GenericGetAttr - || !PyUnicode_Check(name)) { - *method = PyObject_GetAttr(obj, name); - return 0; + PyTypeObject *tp = Py_TYPE(obj); + if (!_PyType_IsReady(tp)) { + if (PyType_Ready(tp) < 0) { + return 0; + } } - if (tp->tp_dict == NULL && PyType_Ready(tp) < 0) + if (tp->tp_getattro != PyObject_GenericGetAttr || !PyUnicode_Check(name)) { + *method = PyObject_GetAttr(obj, name); return 0; + } - descr = _PyType_Lookup(tp, name); + PyObject *descr = _PyType_Lookup(tp, name); + descrgetfunc f = NULL; if (descr != NULL) { Py_INCREF(descr); if (_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) { @@ -1157,23 +1156,22 @@ _PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) } } - dictptr = _PyObject_GetDictPtr(obj); + PyObject **dictptr = _PyObject_GetDictPtr(obj); + PyObject *dict; if (dictptr != NULL && (dict = *dictptr) != NULL) { Py_INCREF(dict); - attr = PyDict_GetItemWithError(dict, name); + PyObject *attr = PyDict_GetItemWithError(dict, name); if (attr != NULL) { - Py_INCREF(attr); - *method = attr; + *method = Py_NewRef(attr); Py_DECREF(dict); Py_XDECREF(descr); return 0; } - else { - Py_DECREF(dict); - if (PyErr_Occurred()) { - Py_XDECREF(descr); - return 0; - } + Py_DECREF(dict); + + if (PyErr_Occurred()) { + Py_XDECREF(descr); + return 0; } } From webhook-mailer at python.org Wed Jun 30 21:20:32 2021 From: webhook-mailer at python.org (miss-islington) Date: Thu, 01 Jul 2021 01:20:32 -0000 Subject: [Python-checkins] bpo-43425: Update _osx_support not to use distutils.log (GH-26968) Message-ID: https://github.com/python/cpython/commit/94a4136c8eba349dc7eebe561ddaedbd0a89eb91 commit: 94a4136c8eba349dc7eebe561ddaedbd0a89eb91 branch: 3.10 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-06-30T18:20:24-07:00 summary: bpo-43425: Update _osx_support not to use distutils.log (GH-26968) (cherry picked from commit c8979f780e4b7d6db5693cb26a2956cc785abb48) Co-authored-by: Dong-hee Na files: M Lib/_osx_support.py diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py index b7145ee069fa3..326b36d611631 100644 --- a/Lib/_osx_support.py +++ b/Lib/_osx_support.py @@ -428,10 +428,9 @@ def compiler_fixup(compiler_so, cc_args): break if sysroot and not os.path.isdir(sysroot): - from distutils import log - log.warn("Compiling with an SDK that doesn't seem to exist: %s", - sysroot) - log.warn("Please check your Xcode installation") + sys.stderr.write(f"Compiling with an SDK that doesn't seem to exist: {sysroot}\n") + sys.stderr.write("Please check your Xcode installation\n") + sys.stderr.flush() return compiler_so