diff options
Diffstat (limited to 'Python')
35 files changed, 5979 insertions, 6418 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c index d78657c..49d19da 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -271,6 +271,10 @@ static PyTypeObject *Bytes_type; static char *Bytes_fields[]={ "s", }; +static PyTypeObject *NameConstant_type; +static char *NameConstant_fields[]={ + "value", +}; static PyTypeObject *Ellipsis_type; static PyTypeObject *Attribute_type; _Py_IDENTIFIER(attr); @@ -408,24 +412,24 @@ static char *ExceptHandler_fields[]={ static PyTypeObject *arguments_type; static PyObject* ast2obj_arguments(void*); _Py_IDENTIFIER(vararg); -_Py_IDENTIFIER(varargannotation); _Py_IDENTIFIER(kwonlyargs); +_Py_IDENTIFIER(kw_defaults); _Py_IDENTIFIER(kwarg); -_Py_IDENTIFIER(kwargannotation); _Py_IDENTIFIER(defaults); -_Py_IDENTIFIER(kw_defaults); static char *arguments_fields[]={ "args", "vararg", - "varargannotation", "kwonlyargs", + "kw_defaults", "kwarg", - "kwargannotation", "defaults", - "kw_defaults", }; static PyTypeObject *arg_type; static PyObject* ast2obj_arg(void*); +static char *arg_attributes[] = { + "lineno", + "col_offset", +}; _Py_IDENTIFIER(arg); _Py_IDENTIFIER(annotation); static char *arg_fields[]={ @@ -673,6 +677,7 @@ static PyObject* ast2obj_object(void *o) Py_INCREF((PyObject*)o); return (PyObject*)o; } +#define ast2obj_singleton ast2obj_object #define ast2obj_identifier ast2obj_object #define ast2obj_string ast2obj_object #define ast2obj_bytes ast2obj_object @@ -684,6 +689,17 @@ static PyObject* ast2obj_int(long b) /* Conversion Python -> AST */ +static int obj2ast_singleton(PyObject *obj, PyObject** out, PyArena* arena) +{ + if (obj != Py_None && obj != Py_True && obj != Py_False) { + PyErr_SetString(PyExc_ValueError, + "AST singleton must be True, False, or None"); + return 1; + } + *out = obj; + return 0; +} + static int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena) { if (obj == Py_None) @@ -754,6 +770,19 @@ static int add_ast_fields(void) return 0; } +static int exists_not_none(PyObject *obj, _Py_Identifier *id) +{ + int isnone; + PyObject *attr = _PyObject_GetAttrId(obj, id); + if (!attr) { + PyErr_Clear(); + return 0; + } + isnone = attr == Py_None; + Py_DECREF(attr); + return !isnone; +} + static int init_types(void) { @@ -858,6 +887,9 @@ static int init_types(void) if (!Str_type) return 0; Bytes_type = make_type("Bytes", expr_type, Bytes_fields, 1); if (!Bytes_type) return 0; + NameConstant_type = make_type("NameConstant", expr_type, + NameConstant_fields, 1); + if (!NameConstant_type) return 0; Ellipsis_type = make_type("Ellipsis", expr_type, NULL, 0); if (!Ellipsis_type) return 0; Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3); @@ -1035,6 +1067,7 @@ static int init_types(void) comprehension_type = make_type("comprehension", &AST_type, comprehension_fields, 3); if (!comprehension_type) return 0; + if (!add_attributes(comprehension_type, NULL, 0)) return 0; excepthandler_type = make_type("excepthandler", &AST_type, NULL, 0); if (!excepthandler_type) return 0; if (!add_attributes(excepthandler_type, excepthandler_attributes, 2)) @@ -1042,16 +1075,21 @@ static int init_types(void) ExceptHandler_type = make_type("ExceptHandler", excepthandler_type, ExceptHandler_fields, 3); if (!ExceptHandler_type) return 0; - arguments_type = make_type("arguments", &AST_type, arguments_fields, 8); + arguments_type = make_type("arguments", &AST_type, arguments_fields, 6); if (!arguments_type) return 0; + if (!add_attributes(arguments_type, NULL, 0)) return 0; arg_type = make_type("arg", &AST_type, arg_fields, 2); if (!arg_type) return 0; + if (!add_attributes(arg_type, arg_attributes, 2)) return 0; keyword_type = make_type("keyword", &AST_type, keyword_fields, 2); if (!keyword_type) return 0; + if (!add_attributes(keyword_type, NULL, 0)) return 0; alias_type = make_type("alias", &AST_type, alias_fields, 2); if (!alias_type) return 0; + if (!add_attributes(alias_type, NULL, 0)) return 0; withitem_type = make_type("withitem", &AST_type, withitem_fields, 2); if (!withitem_type) return 0; + if (!add_attributes(withitem_type, NULL, 0)) return 0; initialized = 1; return 1; } @@ -1919,6 +1957,25 @@ Bytes(bytes s, int lineno, int col_offset, PyArena *arena) } expr_ty +NameConstant(singleton value, int lineno, int col_offset, PyArena *arena) +{ + expr_ty p; + if (!value) { + PyErr_SetString(PyExc_ValueError, + "field value is required for NameConstant"); + return NULL; + } + p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = NameConstant_kind; + p->v.NameConstant.value = value; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + +expr_ty Ellipsis(int lineno, int col_offset, PyArena *arena) { expr_ty p; @@ -2173,9 +2230,8 @@ ExceptHandler(expr_ty type, identifier name, asdl_seq * body, int lineno, int } arguments_ty -arguments(asdl_seq * args, identifier vararg, expr_ty varargannotation, - asdl_seq * kwonlyargs, identifier kwarg, expr_ty kwargannotation, - asdl_seq * defaults, asdl_seq * kw_defaults, PyArena *arena) +arguments(asdl_seq * args, arg_ty vararg, asdl_seq * kwonlyargs, asdl_seq * + kw_defaults, arg_ty kwarg, asdl_seq * defaults, PyArena *arena) { arguments_ty p; p = (arguments_ty)PyArena_Malloc(arena, sizeof(*p)); @@ -2183,12 +2239,10 @@ arguments(asdl_seq * args, identifier vararg, expr_ty varargannotation, return NULL; p->args = args; p->vararg = vararg; - p->varargannotation = varargannotation; p->kwonlyargs = kwonlyargs; + p->kw_defaults = kw_defaults; p->kwarg = kwarg; - p->kwargannotation = kwargannotation; p->defaults = defaults; - p->kw_defaults = kw_defaults; return p; } @@ -2939,6 +2993,15 @@ ast2obj_expr(void* _o) goto failed; Py_DECREF(value); break; + case NameConstant_kind: + result = PyType_GenericNew(NameConstant_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_singleton(o->v.NameConstant.value); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + goto failed; + Py_DECREF(value); + break; case Ellipsis_kind: result = PyType_GenericNew(Ellipsis_type, NULL, NULL); if (!result) goto failed; @@ -3357,29 +3420,24 @@ ast2obj_arguments(void* _o) if (_PyObject_SetAttrId(result, &PyId_args, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_identifier(o->vararg); + value = ast2obj_arg(o->vararg); if (!value) goto failed; if (_PyObject_SetAttrId(result, &PyId_vararg, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(o->varargannotation); - if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_varargannotation, value) == -1) - goto failed; - Py_DECREF(value); value = ast2obj_list(o->kwonlyargs, ast2obj_arg); if (!value) goto failed; if (_PyObject_SetAttrId(result, &PyId_kwonlyargs, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_identifier(o->kwarg); + value = ast2obj_list(o->kw_defaults, ast2obj_expr); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_kwarg, value) == -1) + if (_PyObject_SetAttrId(result, &PyId_kw_defaults, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_expr(o->kwargannotation); + value = ast2obj_arg(o->kwarg); if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_kwargannotation, value) == -1) + if (_PyObject_SetAttrId(result, &PyId_kwarg, value) == -1) goto failed; Py_DECREF(value); value = ast2obj_list(o->defaults, ast2obj_expr); @@ -3387,11 +3445,6 @@ ast2obj_arguments(void* _o) if (_PyObject_SetAttrId(result, &PyId_defaults, value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(o->kw_defaults, ast2obj_expr); - if (!value) goto failed; - if (_PyObject_SetAttrId(result, &PyId_kw_defaults, value) == -1) - goto failed; - Py_DECREF(value); return result; failed: Py_XDECREF(value); @@ -3421,6 +3474,16 @@ ast2obj_arg(void* _o) if (_PyObject_SetAttrId(result, &PyId_annotation, value) == -1) goto failed; Py_DECREF(value); + value = ast2obj_int(o->lineno); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_lineno, value) < 0) + goto failed; + Py_DECREF(value); + value = ast2obj_int(o->col_offset); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_col_offset, value) < 0) + goto failed; + Py_DECREF(value); return result; failed: Py_XDECREF(value); @@ -3777,7 +3840,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from FunctionDef"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_returns)) { + if (exists_not_none(obj, &PyId_returns)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_returns); if (tmp == NULL) goto failed; @@ -3864,7 +3927,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from ClassDef"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_starargs)) { + if (exists_not_none(obj, &PyId_starargs)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_starargs); if (tmp == NULL) goto failed; @@ -3874,7 +3937,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } else { starargs = NULL; } - if (_PyObject_HasAttrId(obj, &PyId_kwargs)) { + if (exists_not_none(obj, &PyId_kwargs)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_kwargs); if (tmp == NULL) goto failed; @@ -3944,7 +4007,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (isinstance) { expr_ty value; - if (_PyObject_HasAttrId(obj, &PyId_value)) { + if (exists_not_none(obj, &PyId_value)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_value); if (tmp == NULL) goto failed; @@ -4382,7 +4445,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) expr_ty exc; expr_ty cause; - if (_PyObject_HasAttrId(obj, &PyId_exc)) { + if (exists_not_none(obj, &PyId_exc)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_exc); if (tmp == NULL) goto failed; @@ -4392,7 +4455,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) } else { exc = NULL; } - if (_PyObject_HasAttrId(obj, &PyId_cause)) { + if (exists_not_none(obj, &PyId_cause)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_cause); if (tmp == NULL) goto failed; @@ -4536,7 +4599,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from Assert"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_msg)) { + if (exists_not_none(obj, &PyId_msg)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_msg); if (tmp == NULL) goto failed; @@ -4594,7 +4657,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) asdl_seq* names; int level; - if (_PyObject_HasAttrId(obj, &PyId_module)) { + if (exists_not_none(obj, &PyId_module)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_module); if (tmp == NULL) goto failed; @@ -4628,7 +4691,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from ImportFrom"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_level)) { + if (exists_not_none(obj, &PyId_level)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_level); if (tmp == NULL) goto failed; @@ -5315,7 +5378,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (isinstance) { expr_ty value; - if (_PyObject_HasAttrId(obj, &PyId_value)) { + if (exists_not_none(obj, &PyId_value)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_value); if (tmp == NULL) goto failed; @@ -5493,7 +5556,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from Call"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_starargs)) { + if (exists_not_none(obj, &PyId_starargs)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_starargs); if (tmp == NULL) goto failed; @@ -5503,7 +5566,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) } else { starargs = NULL; } - if (_PyObject_HasAttrId(obj, &PyId_kwargs)) { + if (exists_not_none(obj, &PyId_kwargs)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_kwargs); if (tmp == NULL) goto failed; @@ -5584,6 +5647,28 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)NameConstant_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + singleton value; + + if (_PyObject_HasAttrId(obj, &PyId_value)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_value); + if (tmp == NULL) goto failed; + res = obj2ast_singleton(tmp, &value, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from NameConstant"); + return 1; + } + *out = NameConstant(value, lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type); if (isinstance == -1) { return 1; @@ -5933,7 +6018,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) expr_ty upper; expr_ty step; - if (_PyObject_HasAttrId(obj, &PyId_lower)) { + if (exists_not_none(obj, &PyId_lower)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_lower); if (tmp == NULL) goto failed; @@ -5943,7 +6028,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) } else { lower = NULL; } - if (_PyObject_HasAttrId(obj, &PyId_upper)) { + if (exists_not_none(obj, &PyId_upper)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_upper); if (tmp == NULL) goto failed; @@ -5953,7 +6038,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena) } else { upper = NULL; } - if (_PyObject_HasAttrId(obj, &PyId_step)) { + if (exists_not_none(obj, &PyId_step)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_step); if (tmp == NULL) goto failed; @@ -6400,7 +6485,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) identifier name; asdl_seq* body; - if (_PyObject_HasAttrId(obj, &PyId_type)) { + if (exists_not_none(obj, &PyId_type)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_type); if (tmp == NULL) goto failed; @@ -6410,7 +6495,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena) } else { type = NULL; } - if (_PyObject_HasAttrId(obj, &PyId_name)) { + if (exists_not_none(obj, &PyId_name)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_name); if (tmp == NULL) goto failed; @@ -6460,13 +6545,11 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) { PyObject* tmp = NULL; asdl_seq* args; - identifier vararg; - expr_ty varargannotation; + arg_ty vararg; asdl_seq* kwonlyargs; - identifier kwarg; - expr_ty kwargannotation; - asdl_seq* defaults; asdl_seq* kw_defaults; + arg_ty kwarg; + asdl_seq* defaults; if (_PyObject_HasAttrId(obj, &PyId_args)) { int res; @@ -6492,26 +6575,16 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from arguments"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_vararg)) { + if (exists_not_none(obj, &PyId_vararg)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_vararg); if (tmp == NULL) goto failed; - res = obj2ast_identifier(tmp, &vararg, arena); + res = obj2ast_arg(tmp, &vararg, arena); if (res != 0) goto failed; Py_CLEAR(tmp); } else { vararg = NULL; } - if (_PyObject_HasAttrId(obj, &PyId_varargannotation)) { - int res; - tmp = _PyObject_GetAttrId(obj, &PyId_varargannotation); - if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &varargannotation, arena); - if (res != 0) goto failed; - Py_CLEAR(tmp); - } else { - varargannotation = NULL; - } if (_PyObject_HasAttrId(obj, &PyId_kwonlyargs)) { int res; Py_ssize_t len; @@ -6536,25 +6609,39 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"kwonlyargs\" missing from arguments"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_kwarg)) { + if (_PyObject_HasAttrId(obj, &PyId_kw_defaults)) { int res; - tmp = _PyObject_GetAttrId(obj, &PyId_kwarg); + Py_ssize_t len; + Py_ssize_t i; + tmp = _PyObject_GetAttrId(obj, &PyId_kw_defaults); if (tmp == NULL) goto failed; - res = obj2ast_identifier(tmp, &kwarg, arena); - if (res != 0) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + kw_defaults = asdl_seq_new(len, arena); + if (kw_defaults == NULL) goto failed; + for (i = 0; i < len; i++) { + expr_ty value; + res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(kw_defaults, i, value); + } Py_CLEAR(tmp); } else { - kwarg = NULL; + PyErr_SetString(PyExc_TypeError, "required field \"kw_defaults\" missing from arguments"); + return 1; } - if (_PyObject_HasAttrId(obj, &PyId_kwargannotation)) { + if (exists_not_none(obj, &PyId_kwarg)) { int res; - tmp = _PyObject_GetAttrId(obj, &PyId_kwargannotation); + tmp = _PyObject_GetAttrId(obj, &PyId_kwarg); if (tmp == NULL) goto failed; - res = obj2ast_expr(tmp, &kwargannotation, arena); + res = obj2ast_arg(tmp, &kwarg, arena); if (res != 0) goto failed; Py_CLEAR(tmp); } else { - kwargannotation = NULL; + kwarg = NULL; } if (_PyObject_HasAttrId(obj, &PyId_defaults)) { int res; @@ -6580,32 +6667,8 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"defaults\" missing from arguments"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_kw_defaults)) { - int res; - Py_ssize_t len; - Py_ssize_t i; - tmp = _PyObject_GetAttrId(obj, &PyId_kw_defaults); - if (tmp == NULL) goto failed; - if (!PyList_Check(tmp)) { - PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name); - goto failed; - } - len = PyList_GET_SIZE(tmp); - kw_defaults = asdl_seq_new(len, arena); - if (kw_defaults == NULL) goto failed; - for (i = 0; i < len; i++) { - expr_ty value; - res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(kw_defaults, i, value); - } - Py_CLEAR(tmp); - } else { - PyErr_SetString(PyExc_TypeError, "required field \"kw_defaults\" missing from arguments"); - return 1; - } - *out = arguments(args, vararg, varargannotation, kwonlyargs, kwarg, - kwargannotation, defaults, kw_defaults, arena); + *out = arguments(args, vararg, kwonlyargs, kw_defaults, kwarg, defaults, + arena); return 0; failed: Py_XDECREF(tmp); @@ -6630,7 +6693,7 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from arg"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_annotation)) { + if (exists_not_none(obj, &PyId_annotation)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_annotation); if (tmp == NULL) goto failed; @@ -6701,7 +6764,7 @@ obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from alias"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_asname)) { + if (exists_not_none(obj, &PyId_asname)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_asname); if (tmp == NULL) goto failed; @@ -6736,7 +6799,7 @@ obj2ast_withitem(PyObject* obj, withitem_ty* out, PyArena* arena) PyErr_SetString(PyExc_TypeError, "required field \"context_expr\" missing from withitem"); return 1; } - if (_PyObject_HasAttrId(obj, &PyId_optional_vars)) { + if (exists_not_none(obj, &PyId_optional_vars)) { int res; tmp = _PyObject_GetAttrId(obj, &PyId_optional_vars); if (tmp == NULL) goto failed; @@ -6766,7 +6829,7 @@ PyInit__ast(void) if (!m) return NULL; d = PyModule_GetDict(m); if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return NULL; - if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0) + if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0) return NULL; if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return NULL; if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) return @@ -6846,6 +6909,8 @@ PyInit__ast(void) if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return NULL; if (PyDict_SetItemString(d, "Bytes", (PyObject*)Bytes_type) < 0) return NULL; + if (PyDict_SetItemString(d, "NameConstant", (PyObject*)NameConstant_type) < + 0) return NULL; if (PyDict_SetItemString(d, "Ellipsis", (PyObject*)Ellipsis_type) < 0) return NULL; if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) < 0) @@ -6945,7 +7010,8 @@ PyInit__ast(void) PyObject* PyAST_mod2obj(mod_ty t) { - init_types(); + if (!init_types()) + return NULL; return ast2obj_mod(t); } @@ -6959,7 +7025,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) int isinstance; assert(0 <= mode && mode <= 2); - init_types(); + if (!init_types()) + return NULL; isinstance = PyObject_IsInstance(ast, req_type[mode]); if (isinstance == -1) @@ -6977,7 +7044,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode) int PyAST_Check(PyObject* obj) { - init_types(); + if (!init_types()) + return -1; return PyObject_IsInstance(obj, (PyObject*)&AST_type); } diff --git a/Python/_warnings.c b/Python/_warnings.c index f33e477..f93ede2 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -283,9 +283,9 @@ show_warning(PyObject *filename, int lineno, PyObject *text, PyObject PyFile_WriteString(source_line_str, f_stderr); PyFile_WriteString("\n", f_stderr); } - else - if (_Py_DisplaySourceLine(f_stderr, filename, lineno, 2) < 0) - return; + else { + _Py_DisplaySourceLine(f_stderr, filename, lineno, 2); + } PyErr_Clear(); } @@ -800,8 +800,8 @@ PyErr_WarnExplicit(PyObject *category, const char *text, goto exit; if (module_str != NULL) { module = PyUnicode_FromString(module_str); - if (module == NULL) - goto exit; + if (module == NULL) + goto exit; } if (category == NULL) @@ -820,6 +820,49 @@ PyErr_WarnExplicit(PyObject *category, const char *text, return ret; } +int +PyErr_WarnExplicitFormat(PyObject *category, + const char *filename_str, int lineno, + const char *module_str, PyObject *registry, + const char *format, ...) +{ + PyObject *message; + PyObject *module = NULL; + PyObject *filename = PyUnicode_DecodeFSDefault(filename_str); + int ret = -1; + va_list vargs; + + if (filename == NULL) + goto exit; + if (module_str != NULL) { + module = PyUnicode_FromString(module_str); + if (module == NULL) + goto exit; + } + +#ifdef HAVE_STDARG_PROTOTYPES + va_start(vargs, format); +#else + va_start(vargs); +#endif + message = PyUnicode_FromFormatV(format, vargs); + if (message != NULL) { + PyObject *res; + res = warn_explicit(category, message, filename, lineno, + module, registry, NULL); + Py_DECREF(message); + if (res != NULL) { + Py_DECREF(res); + ret = 0; + } + } + va_end(vargs); +exit: + Py_XDECREF(module); + Py_XDECREF(filename); + return ret; +} + PyDoc_STRVAR(warn_doc, "Issue a warning, or maybe ignore it or raise an exception."); diff --git a/Python/ast.c b/Python/ast.c index 9a0b064..a72ba20 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -109,22 +109,14 @@ validate_arguments(arguments_ty args) { if (!validate_args(args->args)) return 0; - if (args->varargannotation) { - if (!args->vararg) { - PyErr_SetString(PyExc_ValueError, "varargannotation but no vararg on arguments"); - return 0; - } - if (!validate_expr(args->varargannotation, Load)) + if (args->vararg && args->vararg->annotation + && !validate_expr(args->vararg->annotation, Load)) { return 0; } if (!validate_args(args->kwonlyargs)) return 0; - if (args->kwargannotation) { - if (!args->kwarg) { - PyErr_SetString(PyExc_ValueError, "kwargannotation but no kwarg on arguments"); - return 0; - } - if (!validate_expr(args->kwargannotation, Load)) + if (args->kwarg && args->kwarg->annotation + && !validate_expr(args->kwarg->annotation, Load)) { return 0; } if (asdl_seq_LEN(args->defaults) > asdl_seq_LEN(args->args)) { @@ -282,6 +274,7 @@ validate_expr(expr_ty exp, expr_context_ty ctx) return validate_exprs(exp->v.Tuple.elts, ctx, 0); /* These last cases don't have any checking. */ case Name_kind: + case NameConstant_kind: case Ellipsis_kind: return 1; default: @@ -567,7 +560,10 @@ new_identifier(const char *n, struct compiling *c) id = id2; } PyUnicode_InternInPlace(&id); - PyArena_AddPyObject(c->c_arena, id); + if (PyArena_AddPyObject(c->c_arena, id) < 0) { + Py_DECREF(id); + return NULL; + } return id; } @@ -903,7 +899,7 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n) break; case Name_kind: if (ctx == Store) { - if (forbidden_name(c, e->v.Name.id, n, 1)) + if (forbidden_name(c, e->v.Name.id, n, 0)) return 0; /* forbidden_name() calls ast_error() */ } e->v.Name.ctx = ctx; @@ -955,6 +951,9 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n) case Bytes_kind: expr_name = "literal"; break; + case NameConstant_kind: + expr_name = "keyword"; + break; case Ellipsis_kind: expr_name = "Ellipsis"; break; @@ -1119,6 +1118,7 @@ ast_for_arg(struct compiling *c, const node *n) identifier name; expr_ty annotation = NULL; node *ch; + arg_ty tmp; assert(TYPE(n) == tfpdef || TYPE(n) == vfpdef); ch = CHILD(n, 0); @@ -1134,7 +1134,13 @@ ast_for_arg(struct compiling *c, const node *n) return NULL; } - return arg(name, annotation, c->c_arena); + tmp = arg(name, annotation, c->c_arena); + if (!tmp) + return NULL; + + tmp->lineno = LINENO(n); + tmp->col_offset = n->n_col_offset; + return tmp; } /* returns -1 if failed to handle keyword only arguments @@ -1230,15 +1236,13 @@ ast_for_arguments(struct compiling *c, const node *n) int i, j, k, nposargs = 0, nkwonlyargs = 0; int nposdefaults = 0, found_default = 0; asdl_seq *posargs, *posdefaults, *kwonlyargs, *kwdefaults; - identifier vararg = NULL, kwarg = NULL; + arg_ty vararg = NULL, kwarg = NULL; arg_ty arg; - expr_ty varargannotation = NULL, kwargannotation = NULL; node *ch; if (TYPE(n) == parameters) { if (NCH(n) == 2) /* () as argument list */ - return arguments(NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, c->c_arena); + return arguments(NULL, NULL, NULL, NULL, NULL, NULL, c->c_arena); n = CHILD(n, 1); } assert(TYPE(n) == typedargslist || TYPE(n) == varargslist); @@ -1344,17 +1348,10 @@ ast_for_arguments(struct compiling *c, const node *n) i = res; /* res has new position to process */ } else { - vararg = NEW_IDENTIFIER(CHILD(ch, 0)); + vararg = ast_for_arg(c, ch); if (!vararg) return NULL; - if (forbidden_name(c, vararg, CHILD(ch, 0), 0)) - return NULL; - if (NCH(ch) > 1) { - /* there is an annotation on the vararg */ - varargannotation = ast_for_expr(c, CHILD(ch, 2)); - if (!varargannotation) - return NULL; - } + i += 3; if (i < NCH(n) && (TYPE(CHILD(n, i)) == tfpdef || TYPE(CHILD(n, i)) == vfpdef)) { @@ -1369,17 +1366,9 @@ ast_for_arguments(struct compiling *c, const node *n) case DOUBLESTAR: ch = CHILD(n, i+1); /* tfpdef */ assert(TYPE(ch) == tfpdef || TYPE(ch) == vfpdef); - kwarg = NEW_IDENTIFIER(CHILD(ch, 0)); + kwarg = ast_for_arg(c, ch); if (!kwarg) return NULL; - if (NCH(ch) > 1) { - /* there is an annotation on the kwarg */ - kwargannotation = ast_for_expr(c, CHILD(ch, 2)); - if (!kwargannotation) - return NULL; - } - if (forbidden_name(c, kwarg, CHILD(ch, 0), 0)) - return NULL; i += 3; break; default: @@ -1389,8 +1378,7 @@ ast_for_arguments(struct compiling *c, const node *n) return NULL; } } - return arguments(posargs, vararg, varargannotation, kwonlyargs, kwarg, - kwargannotation, posdefaults, kwdefaults, c->c_arena); + return arguments(posargs, vararg, kwonlyargs, kwdefaults, kwarg, posdefaults, c->c_arena); } static expr_ty @@ -1555,8 +1543,7 @@ ast_for_lambdef(struct compiling *c, const node *n) expr_ty expression; if (NCH(n) == 3) { - args = arguments(NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, c->c_arena); + args = arguments(NULL, NULL, NULL, NULL, NULL, NULL, c->c_arena); if (!args) return NULL; expression = ast_for_expr(c, CHILD(n, 2)); @@ -1819,11 +1806,21 @@ ast_for_atom(struct compiling *c, const node *n) switch (TYPE(ch)) { case NAME: { - /* All names start in Load context, but may later be - changed. */ - PyObject *name = NEW_IDENTIFIER(ch); + PyObject *name; + const char *s = STR(ch); + size_t len = strlen(s); + if (len >= 4 && len <= 5) { + if (!strcmp(s, "None")) + return NameConstant(Py_None, LINENO(n), n->n_col_offset, c->c_arena); + if (!strcmp(s, "True")) + return NameConstant(Py_True, LINENO(n), n->n_col_offset, c->c_arena); + if (!strcmp(s, "False")) + return NameConstant(Py_False, LINENO(n), n->n_col_offset, c->c_arena); + } + name = new_identifier(s, c); if (!name) return NULL; + /* All names start in Load context, but may later be changed. */ return Name(name, Load, LINENO(n), n->n_col_offset, c->c_arena); } case STRING: { @@ -1848,12 +1845,15 @@ ast_for_atom(struct compiling *c, const node *n) } ast_error(c, n, buf); Py_DECREF(type); - Py_DECREF(value); + Py_XDECREF(value); Py_XDECREF(tback); } return NULL; } - PyArena_AddPyObject(c->c_arena, str); + if (PyArena_AddPyObject(c->c_arena, str) < 0) { + Py_DECREF(str); + return NULL; + } if (bytesmode) return Bytes(str, LINENO(n), n->n_col_offset, c->c_arena); else @@ -1864,7 +1864,10 @@ ast_for_atom(struct compiling *c, const node *n) if (!pynum) return NULL; - PyArena_AddPyObject(c->c_arena, pynum); + if (PyArena_AddPyObject(c->c_arena, pynum) < 0) { + Py_DECREF(pynum); + return NULL; + } return Num(pynum, LINENO(n), n->n_col_offset, c->c_arena); } case ELLIPSIS: /* Ellipsis */ @@ -2093,15 +2096,22 @@ ast_for_trailer(struct compiling *c, const node *n, expr_ty left_expr) if (NCH(n) == 2) return Call(left_expr, NULL, NULL, NULL, NULL, LINENO(n), n->n_col_offset, c->c_arena); - else - return ast_for_call(c, CHILD(n, 1), left_expr); + else { + expr_ty tmp = ast_for_call(c, CHILD(n, 1), left_expr); + if (!tmp) + return NULL; + + tmp->lineno = LINENO(n); + tmp->col_offset = n->n_col_offset; + return tmp; + } } else if (TYPE(CHILD(n, 0)) == DOT ) { PyObject *attr_id = NEW_IDENTIFIER(CHILD(n, 1)); if (!attr_id) return NULL; return Attribute(left_expr, attr_id, Load, - LINENO(n), n->n_col_offset, c->c_arena); + LINENO(CHILD(n, 1)), CHILD(n, 1)->n_col_offset, c->c_arena); } else { REQ(CHILD(n, 0), LSQB); @@ -2202,8 +2212,6 @@ ast_for_power(struct compiling *c, const node *n) tmp = ast_for_trailer(c, ch, e); if (!tmp) return NULL; - tmp->lineno = e->lineno; - tmp->col_offset = e->col_offset; e = tmp; } if (TYPE(CHILD(n, NCH(n) - 1)) == factor) { @@ -2846,13 +2854,19 @@ alias_for_import_name(struct compiling *c, const node *n, int store) return NULL; str = uni; PyUnicode_InternInPlace(&str); - PyArena_AddPyObject(c->c_arena, str); + if (PyArena_AddPyObject(c->c_arena, str) < 0) { + Py_DECREF(str); + return NULL; + } return alias(str, NULL, c->c_arena); } break; case STAR: str = PyUnicode_InternFromString("*"); - PyArena_AddPyObject(c->c_arena, str); + if (PyArena_AddPyObject(c->c_arena, str) < 0) { + Py_DECREF(str); + return NULL; + } return alias(str, NULL, c->c_arena); default: PyErr_Format(PyExc_SystemError, diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index b07ee8e..fb3abae 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -57,6 +57,11 @@ builtin___build_class__(PyObject *self, PyObject *args, PyObject *kwds) return NULL; } func = PyTuple_GET_ITEM(args, 0); /* Better be callable */ + if (!PyFunction_Check(func)) { + PyErr_SetString(PyExc_TypeError, + "__build__class__: func must be a function"); + return NULL; + } name = PyTuple_GET_ITEM(args, 1); if (!PyUnicode_Check(name)) { PyErr_SetString(PyExc_TypeError, @@ -155,7 +160,9 @@ builtin___build_class__(PyObject *self, PyObject *args, PyObject *kwds) Py_DECREF(bases); return NULL; } - cell = PyObject_CallFunctionObjArgs(func, ns, NULL); + cell = PyEval_EvalCodeEx(PyFunction_GET_CODE(func), PyFunction_GET_GLOBALS(func), ns, + NULL, 0, NULL, 0, NULL, 0, NULL, + PyFunction_GET_CLOSURE(func)); if (cell != NULL) { PyObject *margs; margs = PyTuple_Pack(3, name, bases, ns); @@ -659,7 +666,7 @@ builtin_compile(PyObject *self, PyObject *args, PyObject *kwds) goto finally; } - str = source_as_string(cmd, "compile", "string, bytes, AST or code", &cf); + str = source_as_string(cmd, "compile", "string, bytes or AST", &cf); if (str == NULL) goto error; @@ -1322,26 +1329,35 @@ static PyObject * min_max(PyObject *args, PyObject *kwds, int op) { PyObject *v, *it, *item, *val, *maxitem, *maxval, *keyfunc=NULL; + PyObject *emptytuple, *defaultval = NULL; + static char *kwlist[] = {"key", "default", NULL}; const char *name = op == Py_LT ? "min" : "max"; + const int positional = PyTuple_Size(args) > 1; + int ret; - if (PyTuple_Size(args) > 1) + if (positional) v = args; else if (!PyArg_UnpackTuple(args, (char *)name, 1, 1, &v)) return NULL; - if (kwds != NULL && PyDict_Check(kwds) && PyDict_Size(kwds)) { - keyfunc = PyDict_GetItemString(kwds, "key"); - if (PyDict_Size(kwds)!=1 || keyfunc == NULL) { - PyErr_Format(PyExc_TypeError, - "%s() got an unexpected keyword argument", name); - return NULL; - } - Py_INCREF(keyfunc); + emptytuple = PyTuple_New(0); + if (emptytuple == NULL) + return NULL; + ret = PyArg_ParseTupleAndKeywords(emptytuple, kwds, "|$OO", kwlist, + &keyfunc, &defaultval); + Py_DECREF(emptytuple); + if (!ret) + return NULL; + + if (positional && defaultval != NULL) { + PyErr_Format(PyExc_TypeError, + "Cannot specify a default for %s() with multiple " + "positional arguments", name); + return NULL; } it = PyObject_GetIter(v); if (it == NULL) { - Py_XDECREF(keyfunc); return NULL; } @@ -1385,14 +1401,18 @@ min_max(PyObject *args, PyObject *kwds, int op) if (PyErr_Occurred()) goto Fail_it; if (maxval == NULL) { - PyErr_Format(PyExc_ValueError, - "%s() arg is an empty sequence", name); assert(maxitem == NULL); + if (defaultval != NULL) { + Py_INCREF(defaultval); + maxitem = defaultval; + } else { + PyErr_Format(PyExc_ValueError, + "%s() arg is an empty sequence", name); + } } else Py_DECREF(maxval); Py_DECREF(it); - Py_XDECREF(keyfunc); return maxitem; Fail_it_item_and_val: @@ -1403,7 +1423,6 @@ Fail_it: Py_XDECREF(maxval); Py_XDECREF(maxitem); Py_DECREF(it); - Py_XDECREF(keyfunc); return NULL; } @@ -1531,6 +1550,11 @@ builtin_print(PyObject *self, PyObject *args, PyObject *kwds) return NULL; if (file == NULL || file == Py_None) { file = PySys_GetObject("stdout"); + if (file == NULL) { + PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout"); + return NULL; + } + /* sys.stdout may be None when FILE* stdout isn't connected */ if (file == Py_None) Py_RETURN_NONE; @@ -1810,10 +1834,10 @@ For most object types, eval(repr(object)) == object."); static PyObject * builtin_round(PyObject *self, PyObject *args, PyObject *kwds) { - static PyObject *round_str = NULL; PyObject *ndigits = NULL; static char *kwlist[] = {"number", "ndigits", 0}; - PyObject *number, *round; + PyObject *number, *round, *result; + _Py_IDENTIFIER(__round__); if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:round", kwlist, &number, &ndigits)) @@ -1824,24 +1848,21 @@ builtin_round(PyObject *self, PyObject *args, PyObject *kwds) return NULL; } - if (round_str == NULL) { - round_str = PyUnicode_InternFromString("__round__"); - if (round_str == NULL) - return NULL; - } - - round = _PyType_Lookup(Py_TYPE(number), round_str); + round = _PyObject_LookupSpecial(number, &PyId___round__); if (round == NULL) { - PyErr_Format(PyExc_TypeError, - "type %.100s doesn't define __round__ method", - Py_TYPE(number)->tp_name); + if (!PyErr_Occurred()) + PyErr_Format(PyExc_TypeError, + "type %.100s doesn't define __round__ method", + Py_TYPE(number)->tp_name); return NULL; } if (ndigits == NULL) - return PyObject_CallFunction(round, "O", number); + result = PyObject_CallFunctionObjArgs(round, NULL); else - return PyObject_CallFunction(round, "OO", number, ndigits); + result = PyObject_CallFunctionObjArgs(round, ndigits, NULL); + Py_DECREF(round); + return result; } PyDoc_STRVAR(round_doc, @@ -2413,6 +2434,12 @@ PyObject * _PyBuiltin_Init(void) { PyObject *mod, *dict, *debug; + + if (PyType_Ready(&PyFilter_Type) < 0 || + PyType_Ready(&PyMap_Type) < 0 || + PyType_Ready(&PyZip_Type) < 0) + return NULL; + mod = PyModule_Create(&builtinsmodule); if (mod == NULL) return NULL; diff --git a/Python/ceval.c b/Python/ceval.c index d28ae2b..837b7c1 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -142,8 +142,6 @@ static PyObject * special_lookup(PyObject *, _Py_Identifier *); #define NAME_ERROR_MSG \ "name '%.200s' is not defined" -#define GLOBAL_NAME_ERROR_MSG \ - "global name '%.200s' is not defined" #define UNBOUNDLOCAL_ERROR_MSG \ "local variable '%.200s' referenced before assignment" #define UNBOUNDFREE_ERROR_MSG \ @@ -364,29 +362,28 @@ PyEval_ReleaseThread(PyThreadState *tstate) drop_gil(tstate); } -/* This function is called from PyOS_AfterFork to ensure that newly - created child processes don't hold locks referring to threads which - are not running in the child process. (This could also be done using - pthread_atfork mechanism, at least for the pthreads implementation.) */ +/* This function is called from PyOS_AfterFork to destroy all threads which are + * not running in the child process, and clear internal locks which might be + * held by those threads. (This could also be done using pthread_atfork + * mechanism, at least for the pthreads implementation.) */ void PyEval_ReInitThreads(void) { _Py_IDENTIFIER(_after_fork); PyObject *threading, *result; - PyThreadState *tstate = PyThreadState_GET(); + PyThreadState *current_tstate = PyThreadState_GET(); if (!gil_created()) return; recreate_gil(); pending_lock = PyThread_allocate_lock(); - take_gil(tstate); + take_gil(current_tstate); main_thread = PyThread_get_thread_ident(); /* Update the threading module with the new state. */ - tstate = PyThreadState_GET(); - threading = PyMapping_GetItemString(tstate->interp->modules, + threading = PyMapping_GetItemString(current_tstate->interp->modules, "threading"); if (threading == NULL) { /* threading not imported */ @@ -399,6 +396,9 @@ PyEval_ReInitThreads(void) else Py_DECREF(result); Py_DECREF(threading); + + /* Destroy all threads except the current one */ + _PyThreadState_DeleteExcept(current_tstate); } #else @@ -742,7 +742,6 @@ _Py_CheckRecursiveCall(char *where) enum why_code { WHY_NOT = 0x0001, /* No error */ WHY_EXCEPTION = 0x0002, /* Exception occurred */ - WHY_RERAISE = 0x0004, /* Exception re-raised by 'finally' */ WHY_RETURN = 0x0008, /* 'return' statement */ WHY_BREAK = 0x0010, /* 'break' statement */ WHY_CONTINUE = 0x0020, /* 'continue' statement */ @@ -753,7 +752,7 @@ enum why_code { static void save_exc_state(PyThreadState *, PyFrameObject *); static void swap_exc_state(PyThreadState *, PyFrameObject *); static void restore_and_clear_exc_state(PyThreadState *, PyFrameObject *); -static enum why_code do_raise(PyObject *, PyObject *); +static int do_raise(PyObject *, PyObject *); static int unpack_iterable(PyObject *, int, int, PyObject **); /* Records whether tracing is on for any thread. Counts the number of @@ -798,12 +797,6 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) register int opcode; /* Current opcode */ register int oparg; /* Current opcode argument, if any */ register enum why_code why; /* Reason for block stack unwind */ - register int err; /* Error status -- nonzero if error */ - register PyObject *x; /* Result object -- NULL if error */ - register PyObject *v; /* Temporary objects popped off stack */ - register PyObject *w; - register PyObject *u; - register PyObject *t; register PyObject **fastlocals, **freevars; PyObject *retval = NULL; /* Return value */ PyThreadState *tstate = PyThreadState_GET(); @@ -1206,14 +1199,16 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) #endif why = WHY_NOT; - err = 0; - x = Py_None; /* Not a reference, just anything non-NULL */ - w = NULL; - if (throwflag) { /* support for generator.throw() */ - why = WHY_EXCEPTION; - goto on_error; - } + if (throwflag) /* support for generator.throw() */ + goto error; + +#ifdef Py_DEBUG + /* PyEval_EvalFrameEx() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller looses its exception */ + assert(!PyErr_Occurred()); +#endif for (;;) { #ifdef WITH_TSC @@ -1235,6 +1230,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) #endif assert(stack_pointer >= f->f_valuestack); /* else underflow */ assert(STACK_LEVEL() <= co->co_stacksize); /* else overflow */ + assert(!PyErr_Occurred()); /* Do periodic things. Doing this every time through the loop would add too much overhead, so we do it @@ -1255,10 +1251,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) ticked = 1; #endif if (_Py_atomic_load_relaxed(&pendingcalls_to_do)) { - if (Py_MakePendingCalls() < 0) { - why = WHY_EXCEPTION; - goto on_error; - } + if (Py_MakePendingCalls() < 0) + goto error; } #ifdef WITH_THREAD if (_Py_atomic_load_relaxed(&gil_drop_request)) { @@ -1276,13 +1270,12 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) #endif /* Check for asynchronous exceptions. */ if (tstate->async_exc != NULL) { - x = tstate->async_exc; + PyObject *exc = tstate->async_exc; tstate->async_exc = NULL; UNSIGNAL_ASYNC_EXC(); - PyErr_SetNone(x); - Py_DECREF(x); - why = WHY_EXCEPTION; - goto on_error; + PyErr_SetNone(exc); + Py_DECREF(exc); + goto error; } } @@ -1293,6 +1286,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) if (_Py_TracingPossible && tstate->c_tracefunc != NULL && !tstate->tracing) { + int err; /* see maybe_call_line_trace for expository comments */ f->f_stacktop = stack_pointer; @@ -1307,10 +1301,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) stack_pointer = f->f_stacktop; f->f_stacktop = NULL; } - if (err) { + if (err) /* trace function raised an exception */ - goto on_error; - } + goto error; } /* Extract opcode and argument */ @@ -1357,87 +1350,99 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) TARGET(NOP) FAST_DISPATCH(); - TARGET(LOAD_FAST) - x = GETLOCAL(oparg); - if (x != NULL) { - Py_INCREF(x); - PUSH(x); - FAST_DISPATCH(); + TARGET(LOAD_FAST) { + PyObject *value = GETLOCAL(oparg); + if (value == NULL) { + format_exc_check_arg(PyExc_UnboundLocalError, + UNBOUNDLOCAL_ERROR_MSG, + PyTuple_GetItem(co->co_varnames, oparg)); + goto error; } - format_exc_check_arg(PyExc_UnboundLocalError, - UNBOUNDLOCAL_ERROR_MSG, - PyTuple_GetItem(co->co_varnames, oparg)); - break; + Py_INCREF(value); + PUSH(value); + FAST_DISPATCH(); + } - TARGET(LOAD_CONST) - x = GETITEM(consts, oparg); - Py_INCREF(x); - PUSH(x); + TARGET(LOAD_CONST) { + PyObject *value = GETITEM(consts, oparg); + Py_INCREF(value); + PUSH(value); FAST_DISPATCH(); + } PREDICTED_WITH_ARG(STORE_FAST); - TARGET(STORE_FAST) - v = POP(); - SETLOCAL(oparg, v); + TARGET(STORE_FAST) { + PyObject *value = POP(); + SETLOCAL(oparg, value); FAST_DISPATCH(); + } - TARGET(POP_TOP) - v = POP(); - Py_DECREF(v); + TARGET(POP_TOP) { + PyObject *value = POP(); + Py_DECREF(value); FAST_DISPATCH(); + } - TARGET(ROT_TWO) - v = TOP(); - w = SECOND(); - SET_TOP(w); - SET_SECOND(v); + TARGET(ROT_TWO) { + PyObject *top = TOP(); + PyObject *second = SECOND(); + SET_TOP(second); + SET_SECOND(top); FAST_DISPATCH(); + } - TARGET(ROT_THREE) - v = TOP(); - w = SECOND(); - x = THIRD(); - SET_TOP(w); - SET_SECOND(x); - SET_THIRD(v); + TARGET(ROT_THREE) { + PyObject *top = TOP(); + PyObject *second = SECOND(); + PyObject *third = THIRD(); + SET_TOP(second); + SET_SECOND(third); + SET_THIRD(top); FAST_DISPATCH(); + } - TARGET(DUP_TOP) - v = TOP(); - Py_INCREF(v); - PUSH(v); + TARGET(DUP_TOP) { + PyObject *top = TOP(); + Py_INCREF(top); + PUSH(top); FAST_DISPATCH(); + } - TARGET(DUP_TOP_TWO) - x = TOP(); - Py_INCREF(x); - w = SECOND(); - Py_INCREF(w); + TARGET(DUP_TOP_TWO) { + PyObject *top = TOP(); + PyObject *second = SECOND(); + Py_INCREF(top); + Py_INCREF(second); STACKADJ(2); - SET_TOP(x); - SET_SECOND(w); + SET_TOP(top); + SET_SECOND(second); FAST_DISPATCH(); + } - TARGET(UNARY_POSITIVE) - v = TOP(); - x = PyNumber_Positive(v); - Py_DECREF(v); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(UNARY_POSITIVE) { + PyObject *value = TOP(); + PyObject *res = PyNumber_Positive(value); + Py_DECREF(value); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(UNARY_NEGATIVE) - v = TOP(); - x = PyNumber_Negative(v); - Py_DECREF(v); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(UNARY_NEGATIVE) { + PyObject *value = TOP(); + PyObject *res = PyNumber_Negative(value); + Py_DECREF(value); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(UNARY_NOT) - v = TOP(); - err = PyObject_IsTrue(v); - Py_DECREF(v); + TARGET(UNARY_NOT) { + PyObject *value = TOP(); + int err = PyObject_IsTrue(value); + Py_DECREF(value); if (err == 0) { Py_INCREF(Py_True); SET_TOP(Py_True); @@ -1450,416 +1455,460 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) DISPATCH(); } STACKADJ(-1); - break; + goto error; + } - TARGET(UNARY_INVERT) - v = TOP(); - x = PyNumber_Invert(v); - Py_DECREF(v); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(UNARY_INVERT) { + PyObject *value = TOP(); + PyObject *res = PyNumber_Invert(value); + Py_DECREF(value); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_POWER) - w = POP(); - v = TOP(); - x = PyNumber_Power(v, w, Py_None); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_POWER) { + PyObject *exp = POP(); + PyObject *base = TOP(); + PyObject *res = PyNumber_Power(base, exp, Py_None); + Py_DECREF(base); + Py_DECREF(exp); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_MULTIPLY) - w = POP(); - v = TOP(); - x = PyNumber_Multiply(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_MULTIPLY) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_Multiply(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_TRUE_DIVIDE) - w = POP(); - v = TOP(); - x = PyNumber_TrueDivide(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_TRUE_DIVIDE) { + PyObject *divisor = POP(); + PyObject *dividend = TOP(); + PyObject *quotient = PyNumber_TrueDivide(dividend, divisor); + Py_DECREF(dividend); + Py_DECREF(divisor); + SET_TOP(quotient); + if (quotient == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_FLOOR_DIVIDE) - w = POP(); - v = TOP(); - x = PyNumber_FloorDivide(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_FLOOR_DIVIDE) { + PyObject *divisor = POP(); + PyObject *dividend = TOP(); + PyObject *quotient = PyNumber_FloorDivide(dividend, divisor); + Py_DECREF(dividend); + Py_DECREF(divisor); + SET_TOP(quotient); + if (quotient == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_MODULO) - w = POP(); - v = TOP(); - if (PyUnicode_CheckExact(v)) - x = PyUnicode_Format(v, w); - else - x = PyNumber_Remainder(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_MODULO) { + PyObject *divisor = POP(); + PyObject *dividend = TOP(); + PyObject *res = PyUnicode_CheckExact(dividend) ? + PyUnicode_Format(dividend, divisor) : + PyNumber_Remainder(dividend, divisor); + Py_DECREF(divisor); + Py_DECREF(dividend); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_ADD) - w = POP(); - v = TOP(); - if (PyUnicode_CheckExact(v) && - PyUnicode_CheckExact(w)) { - x = unicode_concatenate(v, w, f, next_instr); + TARGET(BINARY_ADD) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *sum; + if (PyUnicode_CheckExact(left) && + PyUnicode_CheckExact(right)) { + sum = unicode_concatenate(left, right, f, next_instr); /* unicode_concatenate consumed the ref to v */ - goto skip_decref_vx; } else { - x = PyNumber_Add(v, w); + sum = PyNumber_Add(left, right); + Py_DECREF(left); } - Py_DECREF(v); - skip_decref_vx: - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; - - TARGET(BINARY_SUBTRACT) - w = POP(); - v = TOP(); - x = PyNumber_Subtract(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; - - TARGET(BINARY_SUBSCR) - w = POP(); - v = TOP(); - x = PyObject_GetItem(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + Py_DECREF(right); + SET_TOP(sum); + if (sum == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_LSHIFT) - w = POP(); - v = TOP(); - x = PyNumber_Lshift(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_SUBTRACT) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *diff = PyNumber_Subtract(left, right); + Py_DECREF(right); + Py_DECREF(left); + SET_TOP(diff); + if (diff == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_RSHIFT) - w = POP(); - v = TOP(); - x = PyNumber_Rshift(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_SUBSCR) { + PyObject *sub = POP(); + PyObject *container = TOP(); + PyObject *res = PyObject_GetItem(container, sub); + Py_DECREF(container); + Py_DECREF(sub); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_AND) - w = POP(); - v = TOP(); - x = PyNumber_And(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_LSHIFT) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_Lshift(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_XOR) - w = POP(); - v = TOP(); - x = PyNumber_Xor(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_RSHIFT) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_Rshift(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(BINARY_OR) - w = POP(); - v = TOP(); - x = PyNumber_Or(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BINARY_AND) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_And(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(LIST_APPEND) - w = POP(); - v = PEEK(oparg); - err = PyList_Append(v, w); - Py_DECREF(w); - if (err == 0) { - PREDICT(JUMP_ABSOLUTE); - DISPATCH(); - } - break; + TARGET(BINARY_XOR) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_Xor(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(SET_ADD) - w = POP(); - v = stack_pointer[-oparg]; - err = PySet_Add(v, w); - Py_DECREF(w); - if (err == 0) { - PREDICT(JUMP_ABSOLUTE); - DISPATCH(); - } - break; + TARGET(BINARY_OR) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_Or(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_POWER) - w = POP(); - v = TOP(); - x = PyNumber_InPlacePower(v, w, Py_None); + TARGET(LIST_APPEND) { + PyObject *v = POP(); + PyObject *list = PEEK(oparg); + int err; + err = PyList_Append(list, v); Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + if (err != 0) + goto error; + PREDICT(JUMP_ABSOLUTE); + DISPATCH(); + } - TARGET(INPLACE_MULTIPLY) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceMultiply(v, w); + TARGET(SET_ADD) { + PyObject *v = POP(); + PyObject *set = stack_pointer[-oparg]; + int err; + err = PySet_Add(set, v); Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + if (err != 0) + goto error; + PREDICT(JUMP_ABSOLUTE); + DISPATCH(); + } - TARGET(INPLACE_TRUE_DIVIDE) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceTrueDivide(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_POWER) { + PyObject *exp = POP(); + PyObject *base = TOP(); + PyObject *res = PyNumber_InPlacePower(base, exp, Py_None); + Py_DECREF(base); + Py_DECREF(exp); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_FLOOR_DIVIDE) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceFloorDivide(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_MULTIPLY) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_InPlaceMultiply(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_MODULO) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceRemainder(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_TRUE_DIVIDE) { + PyObject *divisor = POP(); + PyObject *dividend = TOP(); + PyObject *quotient = PyNumber_InPlaceTrueDivide(dividend, divisor); + Py_DECREF(dividend); + Py_DECREF(divisor); + SET_TOP(quotient); + if (quotient == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_ADD) - w = POP(); - v = TOP(); - if (PyUnicode_CheckExact(v) && - PyUnicode_CheckExact(w)) { - x = unicode_concatenate(v, w, f, next_instr); + TARGET(INPLACE_FLOOR_DIVIDE) { + PyObject *divisor = POP(); + PyObject *dividend = TOP(); + PyObject *quotient = PyNumber_InPlaceFloorDivide(dividend, divisor); + Py_DECREF(dividend); + Py_DECREF(divisor); + SET_TOP(quotient); + if (quotient == NULL) + goto error; + DISPATCH(); + } + + TARGET(INPLACE_MODULO) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *mod = PyNumber_InPlaceRemainder(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(mod); + if (mod == NULL) + goto error; + DISPATCH(); + } + + TARGET(INPLACE_ADD) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *sum; + if (PyUnicode_CheckExact(left) && PyUnicode_CheckExact(right)) { + sum = unicode_concatenate(left, right, f, next_instr); /* unicode_concatenate consumed the ref to v */ - goto skip_decref_v; } else { - x = PyNumber_InPlaceAdd(v, w); + sum = PyNumber_InPlaceAdd(left, right); + Py_DECREF(left); } - Py_DECREF(v); - skip_decref_v: - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + Py_DECREF(right); + SET_TOP(sum); + if (sum == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_SUBTRACT) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceSubtract(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_SUBTRACT) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *diff = PyNumber_InPlaceSubtract(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(diff); + if (diff == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_LSHIFT) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceLshift(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_LSHIFT) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_InPlaceLshift(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_RSHIFT) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceRshift(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_RSHIFT) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_InPlaceRshift(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_AND) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceAnd(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_AND) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_InPlaceAnd(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_XOR) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceXor(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_XOR) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_InPlaceXor(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(INPLACE_OR) - w = POP(); - v = TOP(); - x = PyNumber_InPlaceOr(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(INPLACE_OR) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_InPlaceOr(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(STORE_SUBSCR) - w = TOP(); - v = SECOND(); - u = THIRD(); + TARGET(STORE_SUBSCR) { + PyObject *sub = TOP(); + PyObject *container = SECOND(); + PyObject *v = THIRD(); + int err; STACKADJ(-3); /* v[w] = u */ - err = PyObject_SetItem(v, w, u); - Py_DECREF(u); + err = PyObject_SetItem(container, sub, v); Py_DECREF(v); - Py_DECREF(w); - if (err == 0) DISPATCH(); - break; + Py_DECREF(container); + Py_DECREF(sub); + if (err != 0) + goto error; + DISPATCH(); + } - TARGET(DELETE_SUBSCR) - w = TOP(); - v = SECOND(); + TARGET(DELETE_SUBSCR) { + PyObject *sub = TOP(); + PyObject *container = SECOND(); + int err; STACKADJ(-2); /* del v[w] */ - err = PyObject_DelItem(v, w); - Py_DECREF(v); - Py_DECREF(w); - if (err == 0) DISPATCH(); - break; + err = PyObject_DelItem(container, sub); + Py_DECREF(container); + Py_DECREF(sub); + if (err != 0) + goto error; + DISPATCH(); + } - TARGET(PRINT_EXPR) - v = POP(); - w = PySys_GetObject("displayhook"); - if (w == NULL) { + TARGET(PRINT_EXPR) { + PyObject *value = POP(); + PyObject *hook = PySys_GetObject("displayhook"); + PyObject *res; + if (hook == NULL) { PyErr_SetString(PyExc_RuntimeError, "lost sys.displayhook"); - err = -1; - x = NULL; - } - if (err == 0) { - x = PyTuple_Pack(1, v); - if (x == NULL) - err = -1; + Py_DECREF(value); + goto error; } - if (err == 0) { - w = PyEval_CallObject(w, x); - Py_XDECREF(w); - if (w == NULL) - err = -1; - } - Py_DECREF(v); - Py_XDECREF(x); - break; + res = PyObject_CallFunctionObjArgs(hook, value, NULL); + Py_DECREF(value); + if (res == NULL) + goto error; + Py_DECREF(res); + DISPATCH(); + } #ifdef CASE_TOO_BIG default: switch (opcode) { #endif - TARGET(RAISE_VARARGS) - v = w = NULL; + TARGET(RAISE_VARARGS) { + PyObject *cause = NULL, *exc = NULL; switch (oparg) { case 2: - v = POP(); /* cause */ + cause = POP(); /* cause */ case 1: - w = POP(); /* exc */ + exc = POP(); /* exc */ case 0: /* Fallthrough */ - why = do_raise(w, v); + if (do_raise(exc, cause)) { + why = WHY_EXCEPTION; + goto fast_block_end; + } break; default: PyErr_SetString(PyExc_SystemError, "bad RAISE_VARARGS oparg"); - why = WHY_EXCEPTION; break; } - break; - - TARGET(STORE_LOCALS) - x = POP(); - v = f->f_locals; - Py_XDECREF(v); - f->f_locals = x; - DISPATCH(); + goto error; + } - TARGET(RETURN_VALUE) + TARGET(RETURN_VALUE) { retval = POP(); why = WHY_RETURN; goto fast_block_end; + } - TARGET(YIELD_FROM) - u = POP(); - x = TOP(); - /* send u to x */ - if (PyGen_CheckExact(x)) { - retval = _PyGen_Send((PyGenObject *)x, u); + TARGET(YIELD_FROM) { + PyObject *v = POP(); + PyObject *reciever = TOP(); + int err; + if (PyGen_CheckExact(reciever)) { + retval = _PyGen_Send((PyGenObject *)reciever, v); } else { _Py_IDENTIFIER(send); - if (u == Py_None) - retval = Py_TYPE(x)->tp_iternext(x); + if (v == Py_None) + retval = Py_TYPE(reciever)->tp_iternext(reciever); else - retval = _PyObject_CallMethodId(x, &PyId_send, "O", u); + retval = _PyObject_CallMethodId(reciever, &PyId_send, "O", v); } - Py_DECREF(u); - if (!retval) { + Py_DECREF(v); + if (retval == NULL) { PyObject *val; - x = POP(); /* Remove iter from stack */ - Py_DECREF(x); err = _PyGen_FetchStopIterationValue(&val); - if (err < 0) { - x = NULL; - break; - } - x = val; - PUSH(x); - continue; + if (err < 0) + goto error; + Py_DECREF(reciever); + SET_TOP(val); + DISPATCH(); } /* x remains on stack, retval is value to be yielded */ f->f_stacktop = stack_pointer; @@ -1867,39 +1916,38 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) /* and repeat... */ f->f_lasti--; goto fast_yield; + } - TARGET(YIELD_VALUE) + TARGET(YIELD_VALUE) { retval = POP(); f->f_stacktop = stack_pointer; why = WHY_YIELD; goto fast_yield; + } - TARGET(POP_EXCEPT) - { - PyTryBlock *b = PyFrame_BlockPop(f); - if (b->b_type != EXCEPT_HANDLER) { - PyErr_SetString(PyExc_SystemError, - "popped block is not an except handler"); - why = WHY_EXCEPTION; - break; - } - UNWIND_EXCEPT_HANDLER(b); + TARGET(POP_EXCEPT) { + PyTryBlock *b = PyFrame_BlockPop(f); + if (b->b_type != EXCEPT_HANDLER) { + PyErr_SetString(PyExc_SystemError, + "popped block is not an except handler"); + goto error; } + UNWIND_EXCEPT_HANDLER(b); DISPATCH(); + } - TARGET(POP_BLOCK) - { - PyTryBlock *b = PyFrame_BlockPop(f); - UNWIND_BLOCK(b); - } + TARGET(POP_BLOCK) { + PyTryBlock *b = PyFrame_BlockPop(f); + UNWIND_BLOCK(b); DISPATCH(); + } PREDICTED(END_FINALLY); - TARGET(END_FINALLY) - v = POP(); - if (PyLong_Check(v)) { - why = (enum why_code) PyLong_AS_LONG(v); - assert(why != WHY_YIELD); + TARGET(END_FINALLY) { + PyObject *status = POP(); + if (PyLong_Check(status)) { + why = (enum why_code) PyLong_AS_LONG(status); + assert(why != WHY_YIELD && why != WHY_EXCEPTION); if (why == WHY_RETURN || why == WHY_CONTINUE) retval = POP(); @@ -1912,248 +1960,280 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) assert(b->b_type == EXCEPT_HANDLER); UNWIND_EXCEPT_HANDLER(b); why = WHY_NOT; + Py_DECREF(status); + DISPATCH(); } + Py_DECREF(status); + goto fast_block_end; } - else if (PyExceptionClass_Check(v)) { - w = POP(); - u = POP(); - PyErr_Restore(v, w, u); - why = WHY_RERAISE; - break; + else if (PyExceptionClass_Check(status)) { + PyObject *exc = POP(); + PyObject *tb = POP(); + PyErr_Restore(status, exc, tb); + why = WHY_EXCEPTION; + goto fast_block_end; } - else if (v != Py_None) { + else if (status != Py_None) { PyErr_SetString(PyExc_SystemError, "'finally' pops bad exception"); - why = WHY_EXCEPTION; + Py_DECREF(status); + goto error; } - Py_DECREF(v); - break; + Py_DECREF(status); + DISPATCH(); + } - TARGET(LOAD_BUILD_CLASS) - { + TARGET(LOAD_BUILD_CLASS) { _Py_IDENTIFIER(__build_class__); + PyObject *bc; if (PyDict_CheckExact(f->f_builtins)) { - x = _PyDict_GetItemId(f->f_builtins, &PyId___build_class__); - if (x == NULL) { + bc = _PyDict_GetItemId(f->f_builtins, &PyId___build_class__); + if (bc == NULL) { PyErr_SetString(PyExc_NameError, "__build_class__ not found"); - break; + goto error; } - Py_INCREF(x); + Py_INCREF(bc); } else { PyObject *build_class_str = _PyUnicode_FromId(&PyId___build_class__); if (build_class_str == NULL) break; - x = PyObject_GetItem(f->f_builtins, build_class_str); - if (x == NULL) { + bc = PyObject_GetItem(f->f_builtins, build_class_str); + if (bc == NULL) { if (PyErr_ExceptionMatches(PyExc_KeyError)) PyErr_SetString(PyExc_NameError, "__build_class__ not found"); - break; + goto error; } } - PUSH(x); - break; + PUSH(bc); + DISPATCH(); } - TARGET(STORE_NAME) - w = GETITEM(names, oparg); - v = POP(); - if ((x = f->f_locals) != NULL) { - if (PyDict_CheckExact(x)) - err = PyDict_SetItem(x, w, v); - else - err = PyObject_SetItem(x, w, v); + TARGET(STORE_NAME) { + PyObject *name = GETITEM(names, oparg); + PyObject *v = POP(); + PyObject *ns = f->f_locals; + int err; + if (ns == NULL) { + PyErr_Format(PyExc_SystemError, + "no locals found when storing %R", name); Py_DECREF(v); - if (err == 0) DISPATCH(); - break; + goto error; } - PyErr_Format(PyExc_SystemError, - "no locals found when storing %R", w); - break; + if (PyDict_CheckExact(ns)) + err = PyDict_SetItem(ns, name, v); + else + err = PyObject_SetItem(ns, name, v); + Py_DECREF(v); + if (err != 0) + goto error; + DISPATCH(); + } - TARGET(DELETE_NAME) - w = GETITEM(names, oparg); - if ((x = f->f_locals) != NULL) { - if ((err = PyObject_DelItem(x, w)) != 0) - format_exc_check_arg(PyExc_NameError, - NAME_ERROR_MSG, - w); - break; + TARGET(DELETE_NAME) { + PyObject *name = GETITEM(names, oparg); + PyObject *ns = f->f_locals; + int err; + if (ns == NULL) { + PyErr_Format(PyExc_SystemError, + "no locals when deleting %R", name); + goto error; } - PyErr_Format(PyExc_SystemError, - "no locals when deleting %R", w); - break; + err = PyObject_DelItem(ns, name); + if (err != 0) { + format_exc_check_arg(PyExc_NameError, + NAME_ERROR_MSG, + name); + goto error; + } + DISPATCH(); + } PREDICTED_WITH_ARG(UNPACK_SEQUENCE); - TARGET(UNPACK_SEQUENCE) - v = POP(); - if (PyTuple_CheckExact(v) && - PyTuple_GET_SIZE(v) == oparg) { - PyObject **items = \ - ((PyTupleObject *)v)->ob_item; + TARGET(UNPACK_SEQUENCE) { + PyObject *seq = POP(), *item, **items; + if (PyTuple_CheckExact(seq) && + PyTuple_GET_SIZE(seq) == oparg) { + items = ((PyTupleObject *)seq)->ob_item; while (oparg--) { - w = items[oparg]; - Py_INCREF(w); - PUSH(w); + item = items[oparg]; + Py_INCREF(item); + PUSH(item); } - Py_DECREF(v); - DISPATCH(); - } else if (PyList_CheckExact(v) && - PyList_GET_SIZE(v) == oparg) { - PyObject **items = \ - ((PyListObject *)v)->ob_item; + } else if (PyList_CheckExact(seq) && + PyList_GET_SIZE(seq) == oparg) { + items = ((PyListObject *)seq)->ob_item; while (oparg--) { - w = items[oparg]; - Py_INCREF(w); - PUSH(w); + item = items[oparg]; + Py_INCREF(item); + PUSH(item); } - } else if (unpack_iterable(v, oparg, -1, + } else if (unpack_iterable(seq, oparg, -1, stack_pointer + oparg)) { STACKADJ(oparg); } else { /* unpack_iterable() raised an exception */ - why = WHY_EXCEPTION; + Py_DECREF(seq); + goto error; } - Py_DECREF(v); - break; + Py_DECREF(seq); + DISPATCH(); + } - TARGET(UNPACK_EX) - { + TARGET(UNPACK_EX) { int totalargs = 1 + (oparg & 0xFF) + (oparg >> 8); - v = POP(); + PyObject *seq = POP(); - if (unpack_iterable(v, oparg & 0xFF, oparg >> 8, + if (unpack_iterable(seq, oparg & 0xFF, oparg >> 8, stack_pointer + totalargs)) { stack_pointer += totalargs; } else { - why = WHY_EXCEPTION; + Py_DECREF(seq); + goto error; } - Py_DECREF(v); - break; + Py_DECREF(seq); + DISPATCH(); } - TARGET(STORE_ATTR) - w = GETITEM(names, oparg); - v = TOP(); - u = SECOND(); + TARGET(STORE_ATTR) { + PyObject *name = GETITEM(names, oparg); + PyObject *owner = TOP(); + PyObject *v = SECOND(); + int err; STACKADJ(-2); - err = PyObject_SetAttr(v, w, u); /* v.w = u */ + err = PyObject_SetAttr(owner, name, v); Py_DECREF(v); - Py_DECREF(u); - if (err == 0) DISPATCH(); - break; + Py_DECREF(owner); + if (err != 0) + goto error; + DISPATCH(); + } - TARGET(DELETE_ATTR) - w = GETITEM(names, oparg); - v = POP(); - err = PyObject_SetAttr(v, w, (PyObject *)NULL); - /* del v.w */ - Py_DECREF(v); - break; + TARGET(DELETE_ATTR) { + PyObject *name = GETITEM(names, oparg); + PyObject *owner = POP(); + int err; + err = PyObject_SetAttr(owner, name, (PyObject *)NULL); + Py_DECREF(owner); + if (err != 0) + goto error; + DISPATCH(); + } - TARGET(STORE_GLOBAL) - w = GETITEM(names, oparg); - v = POP(); - err = PyDict_SetItem(f->f_globals, w, v); + TARGET(STORE_GLOBAL) { + PyObject *name = GETITEM(names, oparg); + PyObject *v = POP(); + int err; + err = PyDict_SetItem(f->f_globals, name, v); Py_DECREF(v); - if (err == 0) DISPATCH(); - break; + if (err != 0) + goto error; + DISPATCH(); + } - TARGET(DELETE_GLOBAL) - w = GETITEM(names, oparg); - if ((err = PyDict_DelItem(f->f_globals, w)) != 0) + TARGET(DELETE_GLOBAL) { + PyObject *name = GETITEM(names, oparg); + int err; + err = PyDict_DelItem(f->f_globals, name); + if (err != 0) { format_exc_check_arg( - PyExc_NameError, GLOBAL_NAME_ERROR_MSG, w); - break; + PyExc_NameError, NAME_ERROR_MSG, name); + goto error; + } + DISPATCH(); + } - TARGET(LOAD_NAME) - w = GETITEM(names, oparg); - if ((v = f->f_locals) == NULL) { + TARGET(LOAD_NAME) { + PyObject *name = GETITEM(names, oparg); + PyObject *locals = f->f_locals; + PyObject *v; + if (locals == NULL) { PyErr_Format(PyExc_SystemError, - "no locals when loading %R", w); - why = WHY_EXCEPTION; - break; + "no locals when loading %R", name); + goto error; } - if (PyDict_CheckExact(v)) { - x = PyDict_GetItem(v, w); - Py_XINCREF(x); + if (PyDict_CheckExact(locals)) { + v = PyDict_GetItem(locals, name); + Py_XINCREF(v); } else { - x = PyObject_GetItem(v, w); - if (x == NULL && PyErr_Occurred()) { - if (!PyErr_ExceptionMatches( - PyExc_KeyError)) - break; + v = PyObject_GetItem(locals, name); + if (v == NULL && PyErr_Occurred()) { + if (!PyErr_ExceptionMatches(PyExc_KeyError)) + goto error; PyErr_Clear(); } } - if (x == NULL) { - x = PyDict_GetItem(f->f_globals, w); - Py_XINCREF(x); - if (x == NULL) { + if (v == NULL) { + v = PyDict_GetItem(f->f_globals, name); + Py_XINCREF(v); + if (v == NULL) { if (PyDict_CheckExact(f->f_builtins)) { - x = PyDict_GetItem(f->f_builtins, w); - if (x == NULL) { + v = PyDict_GetItem(f->f_builtins, name); + if (v == NULL) { format_exc_check_arg( PyExc_NameError, - NAME_ERROR_MSG, w); - break; + NAME_ERROR_MSG, name); + goto error; } - Py_INCREF(x); + Py_INCREF(v); } else { - x = PyObject_GetItem(f->f_builtins, w); - if (x == NULL) { + v = PyObject_GetItem(f->f_builtins, name); + if (v == NULL) { if (PyErr_ExceptionMatches(PyExc_KeyError)) format_exc_check_arg( PyExc_NameError, - NAME_ERROR_MSG, w); - break; + NAME_ERROR_MSG, name); + goto error; } } } } - PUSH(x); + PUSH(v); DISPATCH(); + } - TARGET(LOAD_GLOBAL) - w = GETITEM(names, oparg); + TARGET(LOAD_GLOBAL) { + PyObject *name = GETITEM(names, oparg); + PyObject *v; if (PyDict_CheckExact(f->f_globals) && PyDict_CheckExact(f->f_builtins)) { - x = _PyDict_LoadGlobal((PyDictObject *)f->f_globals, + v = _PyDict_LoadGlobal((PyDictObject *)f->f_globals, (PyDictObject *)f->f_builtins, - w); - if (x == NULL) { + name); + if (v == NULL) { if (!PyErr_Occurred()) format_exc_check_arg(PyExc_NameError, - GLOBAL_NAME_ERROR_MSG, w); - break; + NAME_ERROR_MSG, name); + goto error; } - Py_INCREF(x); + Py_INCREF(v); } else { /* Slow-path if globals or builtins is not a dict */ - x = PyObject_GetItem(f->f_globals, w); - if (x == NULL) { - x = PyObject_GetItem(f->f_builtins, w); - if (x == NULL) { + v = PyObject_GetItem(f->f_globals, name); + if (v == NULL) { + v = PyObject_GetItem(f->f_builtins, name); + if (v == NULL) { if (PyErr_ExceptionMatches(PyExc_KeyError)) format_exc_check_arg( PyExc_NameError, - GLOBAL_NAME_ERROR_MSG, w); - break; + NAME_ERROR_MSG, name); + goto error; } } } - PUSH(x); + PUSH(v); DISPATCH(); + } - TARGET(DELETE_FAST) - x = GETLOCAL(oparg); - if (x != NULL) { + TARGET(DELETE_FAST) { + PyObject *v = GETLOCAL(oparg); + if (v != NULL) { SETLOCAL(oparg, NULL); DISPATCH(); } @@ -2162,252 +2242,310 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) UNBOUNDLOCAL_ERROR_MSG, PyTuple_GetItem(co->co_varnames, oparg) ); - break; + goto error; + } - TARGET(DELETE_DEREF) - x = freevars[oparg]; - if (PyCell_GET(x) != NULL) { - PyCell_Set(x, NULL); + TARGET(DELETE_DEREF) { + PyObject *cell = freevars[oparg]; + if (PyCell_GET(cell) != NULL) { + PyCell_Set(cell, NULL); DISPATCH(); } - err = -1; format_exc_unbound(co, oparg); - break; + goto error; + } - TARGET(LOAD_CLOSURE) - x = freevars[oparg]; - Py_INCREF(x); - PUSH(x); - if (x != NULL) DISPATCH(); - break; + TARGET(LOAD_CLOSURE) { + PyObject *cell = freevars[oparg]; + Py_INCREF(cell); + PUSH(cell); + DISPATCH(); + } - TARGET(LOAD_DEREF) - x = freevars[oparg]; - w = PyCell_Get(x); - if (w != NULL) { - PUSH(w); - DISPATCH(); + TARGET(LOAD_CLASSDEREF) { + PyObject *name, *value, *locals = f->f_locals; + Py_ssize_t idx; + assert(locals); + assert(oparg >= PyTuple_GET_SIZE(co->co_cellvars)); + idx = oparg - PyTuple_GET_SIZE(co->co_cellvars); + assert(idx >= 0 && idx < PyTuple_GET_SIZE(co->co_freevars)); + name = PyTuple_GET_ITEM(co->co_freevars, idx); + if (PyDict_CheckExact(locals)) { + value = PyDict_GetItem(locals, name); + Py_XINCREF(value); } - err = -1; - format_exc_unbound(co, oparg); - break; + else { + value = PyObject_GetItem(locals, name); + if (value == NULL && PyErr_Occurred()) { + if (!PyErr_ExceptionMatches(PyExc_KeyError)) + goto error; + PyErr_Clear(); + } + } + if (!value) { + PyObject *cell = freevars[oparg]; + value = PyCell_GET(cell); + if (value == NULL) { + format_exc_unbound(co, oparg); + goto error; + } + Py_INCREF(value); + } + PUSH(value); + DISPATCH(); + } - TARGET(STORE_DEREF) - w = POP(); - x = freevars[oparg]; - PyCell_Set(x, w); - Py_DECREF(w); + TARGET(LOAD_DEREF) { + PyObject *cell = freevars[oparg]; + PyObject *value = PyCell_GET(cell); + if (value == NULL) { + format_exc_unbound(co, oparg); + goto error; + } + Py_INCREF(value); + PUSH(value); DISPATCH(); + } - TARGET(BUILD_TUPLE) - x = PyTuple_New(oparg); - if (x != NULL) { - for (; --oparg >= 0;) { - w = POP(); - PyTuple_SET_ITEM(x, oparg, w); - } - PUSH(x); - DISPATCH(); + TARGET(STORE_DEREF) { + PyObject *v = POP(); + PyObject *cell = freevars[oparg]; + PyCell_Set(cell, v); + Py_DECREF(v); + DISPATCH(); + } + + TARGET(BUILD_TUPLE) { + PyObject *tup = PyTuple_New(oparg); + if (tup == NULL) + goto error; + while (--oparg >= 0) { + PyObject *item = POP(); + PyTuple_SET_ITEM(tup, oparg, item); } - break; + PUSH(tup); + DISPATCH(); + } - TARGET(BUILD_LIST) - x = PyList_New(oparg); - if (x != NULL) { - for (; --oparg >= 0;) { - w = POP(); - PyList_SET_ITEM(x, oparg, w); - } - PUSH(x); - DISPATCH(); + TARGET(BUILD_LIST) { + PyObject *list = PyList_New(oparg); + if (list == NULL) + goto error; + while (--oparg >= 0) { + PyObject *item = POP(); + PyList_SET_ITEM(list, oparg, item); } - break; + PUSH(list); + DISPATCH(); + } - TARGET(BUILD_SET) - x = PySet_New(NULL); - if (x != NULL) { - for (; --oparg >= 0;) { - w = POP(); - if (err == 0) - err = PySet_Add(x, w); - Py_DECREF(w); - } - if (err != 0) { - Py_DECREF(x); - break; - } - PUSH(x); - DISPATCH(); + TARGET(BUILD_SET) { + PyObject *set = PySet_New(NULL); + int err = 0; + if (set == NULL) + goto error; + while (--oparg >= 0) { + PyObject *item = POP(); + if (err == 0) + err = PySet_Add(set, item); + Py_DECREF(item); } - break; + if (err != 0) { + Py_DECREF(set); + goto error; + } + PUSH(set); + DISPATCH(); + } - TARGET(BUILD_MAP) - x = _PyDict_NewPresized((Py_ssize_t)oparg); - PUSH(x); - if (x != NULL) DISPATCH(); - break; + TARGET(BUILD_MAP) { + PyObject *map = _PyDict_NewPresized((Py_ssize_t)oparg); + if (map == NULL) + goto error; + PUSH(map); + DISPATCH(); + } - TARGET(STORE_MAP) - w = TOP(); /* key */ - u = SECOND(); /* value */ - v = THIRD(); /* dict */ + TARGET(STORE_MAP) { + PyObject *key = TOP(); + PyObject *value = SECOND(); + PyObject *map = THIRD(); + int err; STACKADJ(-2); - assert (PyDict_CheckExact(v)); - err = PyDict_SetItem(v, w, u); /* v[w] = u */ - Py_DECREF(u); - Py_DECREF(w); - if (err == 0) DISPATCH(); - break; + assert(PyDict_CheckExact(map)); + err = PyDict_SetItem(map, key, value); + Py_DECREF(value); + Py_DECREF(key); + if (err != 0) + goto error; + DISPATCH(); + } - TARGET(MAP_ADD) - w = TOP(); /* key */ - u = SECOND(); /* value */ + TARGET(MAP_ADD) { + PyObject *key = TOP(); + PyObject *value = SECOND(); + PyObject *map; + int err; STACKADJ(-2); - v = stack_pointer[-oparg]; /* dict */ - assert (PyDict_CheckExact(v)); - err = PyDict_SetItem(v, w, u); /* v[w] = u */ - Py_DECREF(u); - Py_DECREF(w); - if (err == 0) { - PREDICT(JUMP_ABSOLUTE); - DISPATCH(); - } - break; + map = stack_pointer[-oparg]; /* dict */ + assert(PyDict_CheckExact(map)); + err = PyDict_SetItem(map, key, value); /* v[w] = u */ + Py_DECREF(value); + Py_DECREF(key); + if (err != 0) + goto error; + PREDICT(JUMP_ABSOLUTE); + DISPATCH(); + } - TARGET(LOAD_ATTR) - w = GETITEM(names, oparg); - v = TOP(); - x = PyObject_GetAttr(v, w); - Py_DECREF(v); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + TARGET(LOAD_ATTR) { + PyObject *name = GETITEM(names, oparg); + PyObject *owner = TOP(); + PyObject *res = PyObject_GetAttr(owner, name); + Py_DECREF(owner); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(COMPARE_OP) - w = POP(); - v = TOP(); - x = cmp_outcome(oparg, v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x == NULL) break; + TARGET(COMPARE_OP) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = cmp_outcome(oparg, left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; PREDICT(POP_JUMP_IF_FALSE); PREDICT(POP_JUMP_IF_TRUE); DISPATCH(); + } - TARGET(IMPORT_NAME) - { + TARGET(IMPORT_NAME) { _Py_IDENTIFIER(__import__); - w = GETITEM(names, oparg); - x = _PyDict_GetItemId(f->f_builtins, &PyId___import__); - if (x == NULL) { + PyObject *name = GETITEM(names, oparg); + PyObject *func = _PyDict_GetItemId(f->f_builtins, &PyId___import__); + PyObject *from, *level, *args, *res; + if (func == NULL) { PyErr_SetString(PyExc_ImportError, "__import__ not found"); - break; + goto error; } - Py_INCREF(x); - v = POP(); - u = TOP(); - if (PyLong_AsLong(u) != -1 || PyErr_Occurred()) - w = PyTuple_Pack(5, - w, + Py_INCREF(func); + from = POP(); + level = TOP(); + if (PyLong_AsLong(level) != -1 || PyErr_Occurred()) + args = PyTuple_Pack(5, + name, f->f_globals, f->f_locals == NULL ? Py_None : f->f_locals, - v, - u); + from, + level); else - w = PyTuple_Pack(4, - w, + args = PyTuple_Pack(4, + name, f->f_globals, f->f_locals == NULL ? Py_None : f->f_locals, - v); - Py_DECREF(v); - Py_DECREF(u); - if (w == NULL) { - u = POP(); - Py_DECREF(x); - x = NULL; - break; + from); + Py_DECREF(level); + Py_DECREF(from); + if (args == NULL) { + Py_DECREF(func); + STACKADJ(-1); + goto error; } READ_TIMESTAMP(intr0); - v = x; - x = PyEval_CallObject(v, w); - Py_DECREF(v); + res = PyEval_CallObject(func, args); READ_TIMESTAMP(intr1); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + Py_DECREF(args); + Py_DECREF(func); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); } - TARGET(IMPORT_STAR) - v = POP(); + TARGET(IMPORT_STAR) { + PyObject *from = POP(), *locals; + int err; PyFrame_FastToLocals(f); - if ((x = f->f_locals) == NULL) { + locals = f->f_locals; + if (locals == NULL) { PyErr_SetString(PyExc_SystemError, "no locals found during 'import *'"); - break; + goto error; } READ_TIMESTAMP(intr0); - err = import_all_from(x, v); + err = import_all_from(locals, from); READ_TIMESTAMP(intr1); PyFrame_LocalsToFast(f, 0); - Py_DECREF(v); - if (err == 0) DISPATCH(); - break; + Py_DECREF(from); + if (err != 0) + goto error; + DISPATCH(); + } - TARGET(IMPORT_FROM) - w = GETITEM(names, oparg); - v = TOP(); + TARGET(IMPORT_FROM) { + PyObject *name = GETITEM(names, oparg); + PyObject *from = TOP(); + PyObject *res; READ_TIMESTAMP(intr0); - x = import_from(v, w); + res = import_from(from, name); READ_TIMESTAMP(intr1); - PUSH(x); - if (x != NULL) DISPATCH(); - break; + PUSH(res); + if (res == NULL) + goto error; + DISPATCH(); + } - TARGET(JUMP_FORWARD) + TARGET(JUMP_FORWARD) { JUMPBY(oparg); FAST_DISPATCH(); + } PREDICTED_WITH_ARG(POP_JUMP_IF_FALSE); - TARGET(POP_JUMP_IF_FALSE) - w = POP(); - if (w == Py_True) { - Py_DECREF(w); + TARGET(POP_JUMP_IF_FALSE) { + PyObject *cond = POP(); + int err; + if (cond == Py_True) { + Py_DECREF(cond); FAST_DISPATCH(); } - if (w == Py_False) { - Py_DECREF(w); + if (cond == Py_False) { + Py_DECREF(cond); JUMPTO(oparg); FAST_DISPATCH(); } - err = PyObject_IsTrue(w); - Py_DECREF(w); + err = PyObject_IsTrue(cond); + Py_DECREF(cond); if (err > 0) err = 0; else if (err == 0) JUMPTO(oparg); else - break; + goto error; DISPATCH(); + } PREDICTED_WITH_ARG(POP_JUMP_IF_TRUE); - TARGET(POP_JUMP_IF_TRUE) - w = POP(); - if (w == Py_False) { - Py_DECREF(w); + TARGET(POP_JUMP_IF_TRUE) { + PyObject *cond = POP(); + int err; + if (cond == Py_False) { + Py_DECREF(cond); FAST_DISPATCH(); } - if (w == Py_True) { - Py_DECREF(w); + if (cond == Py_True) { + Py_DECREF(cond); JUMPTO(oparg); FAST_DISPATCH(); } - err = PyObject_IsTrue(w); - Py_DECREF(w); + err = PyObject_IsTrue(cond); + Py_DECREF(cond); if (err > 0) { err = 0; JUMPTO(oparg); @@ -2415,58 +2553,63 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) else if (err == 0) ; else - break; + goto error; DISPATCH(); + } - TARGET(JUMP_IF_FALSE_OR_POP) - w = TOP(); - if (w == Py_True) { + TARGET(JUMP_IF_FALSE_OR_POP) { + PyObject *cond = TOP(); + int err; + if (cond == Py_True) { STACKADJ(-1); - Py_DECREF(w); + Py_DECREF(cond); FAST_DISPATCH(); } - if (w == Py_False) { + if (cond == Py_False) { JUMPTO(oparg); FAST_DISPATCH(); } - err = PyObject_IsTrue(w); + err = PyObject_IsTrue(cond); if (err > 0) { STACKADJ(-1); - Py_DECREF(w); + Py_DECREF(cond); err = 0; } else if (err == 0) JUMPTO(oparg); else - break; + goto error; DISPATCH(); + } - TARGET(JUMP_IF_TRUE_OR_POP) - w = TOP(); - if (w == Py_False) { + TARGET(JUMP_IF_TRUE_OR_POP) { + PyObject *cond = TOP(); + int err; + if (cond == Py_False) { STACKADJ(-1); - Py_DECREF(w); + Py_DECREF(cond); FAST_DISPATCH(); } - if (w == Py_True) { + if (cond == Py_True) { JUMPTO(oparg); FAST_DISPATCH(); } - err = PyObject_IsTrue(w); + err = PyObject_IsTrue(cond); if (err > 0) { err = 0; JUMPTO(oparg); } else if (err == 0) { STACKADJ(-1); - Py_DECREF(w); + Py_DECREF(cond); } else - break; + goto error; DISPATCH(); + } PREDICTED_WITH_ARG(JUMP_ABSOLUTE); - TARGET(JUMP_ABSOLUTE) + TARGET(JUMP_ABSOLUTE) { JUMPTO(oparg); #if FAST_LOOPS /* Enabling this path speeds-up all while and for-loops by bypassing @@ -2480,60 +2623,60 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) #else DISPATCH(); #endif + } - TARGET(GET_ITER) + TARGET(GET_ITER) { /* before: [obj]; after [getiter(obj)] */ - v = TOP(); - x = PyObject_GetIter(v); - Py_DECREF(v); - if (x != NULL) { - SET_TOP(x); - PREDICT(FOR_ITER); - DISPATCH(); - } - STACKADJ(-1); - break; + PyObject *iterable = TOP(); + PyObject *iter = PyObject_GetIter(iterable); + Py_DECREF(iterable); + SET_TOP(iter); + if (iter == NULL) + goto error; + PREDICT(FOR_ITER); + DISPATCH(); + } PREDICTED_WITH_ARG(FOR_ITER); - TARGET(FOR_ITER) + TARGET(FOR_ITER) { /* before: [iter]; after: [iter, iter()] *or* [] */ - v = TOP(); - x = (*v->ob_type->tp_iternext)(v); - if (x != NULL) { - PUSH(x); + PyObject *iter = TOP(); + PyObject *next = (*iter->ob_type->tp_iternext)(iter); + if (next != NULL) { + PUSH(next); PREDICT(STORE_FAST); PREDICT(UNPACK_SEQUENCE); DISPATCH(); } if (PyErr_Occurred()) { - if (!PyErr_ExceptionMatches( - PyExc_StopIteration)) - break; + if (!PyErr_ExceptionMatches(PyExc_StopIteration)) + goto error; PyErr_Clear(); } /* iterator ended normally */ - x = v = POP(); - Py_DECREF(v); + STACKADJ(-1); + Py_DECREF(iter); JUMPBY(oparg); DISPATCH(); + } - TARGET(BREAK_LOOP) + TARGET(BREAK_LOOP) { why = WHY_BREAK; goto fast_block_end; + } - TARGET(CONTINUE_LOOP) + TARGET(CONTINUE_LOOP) { retval = PyLong_FromLong(oparg); - if (!retval) { - x = NULL; - break; - } + if (retval == NULL) + goto error; why = WHY_CONTINUE; goto fast_block_end; + } TARGET_WITH_IMPL(SETUP_LOOP, _setup_finally) TARGET_WITH_IMPL(SETUP_EXCEPT, _setup_finally) TARGET(SETUP_FINALLY) - _setup_finally: + _setup_finally: { /* NOTE: If you add any new block-setup opcodes that are not try/except/finally handlers, you may need to update the PyGen_NeedsFinalizing() function. @@ -2542,37 +2685,35 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) PyFrame_BlockSetup(f, opcode, INSTR_OFFSET() + oparg, STACK_LEVEL()); DISPATCH(); + } - TARGET(SETUP_WITH) - { + TARGET(SETUP_WITH) { _Py_IDENTIFIER(__exit__); _Py_IDENTIFIER(__enter__); - w = TOP(); - x = special_lookup(w, &PyId___exit__); - if (!x) - break; - SET_TOP(x); - u = special_lookup(w, &PyId___enter__); - Py_DECREF(w); - if (!u) { - x = NULL; - break; - } - x = PyObject_CallFunctionObjArgs(u, NULL); - Py_DECREF(u); - if (!x) - break; + PyObject *mgr = TOP(); + PyObject *exit = special_lookup(mgr, &PyId___exit__), *enter; + PyObject *res; + if (exit == NULL) + goto error; + SET_TOP(exit); + enter = special_lookup(mgr, &PyId___enter__); + Py_DECREF(mgr); + if (enter == NULL) + goto error; + res = PyObject_CallFunctionObjArgs(enter, NULL); + Py_DECREF(enter); + if (res == NULL) + goto error; /* Setup the finally block before pushing the result of __enter__ on the stack. */ PyFrame_BlockSetup(f, SETUP_FINALLY, INSTR_OFFSET() + oparg, STACK_LEVEL()); - PUSH(x); + PUSH(res); DISPATCH(); } - TARGET(WITH_CLEANUP) - { + TARGET(WITH_CLEANUP) { /* At the top of the stack are 1-3 values indicating how/why we entered the finally clause: - TOP = None @@ -2599,42 +2740,42 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) */ PyObject *exit_func; - u = TOP(); - if (u == Py_None) { + PyObject *exc = TOP(), *val = Py_None, *tb = Py_None, *res; + int err; + if (exc == Py_None) { (void)POP(); exit_func = TOP(); - SET_TOP(u); - v = w = Py_None; + SET_TOP(exc); } - else if (PyLong_Check(u)) { - (void)POP(); - switch(PyLong_AsLong(u)) { + else if (PyLong_Check(exc)) { + STACKADJ(-1); + switch (PyLong_AsLong(exc)) { case WHY_RETURN: case WHY_CONTINUE: /* Retval in TOP. */ exit_func = SECOND(); SET_SECOND(TOP()); - SET_TOP(u); + SET_TOP(exc); break; default: exit_func = TOP(); - SET_TOP(u); + SET_TOP(exc); break; } - u = v = w = Py_None; + exc = Py_None; } else { - PyObject *tp, *exc, *tb; + PyObject *tp2, *exc2, *tb2; PyTryBlock *block; - v = SECOND(); - w = THIRD(); - tp = FOURTH(); - exc = PEEK(5); - tb = PEEK(6); + val = SECOND(); + tb = THIRD(); + tp2 = FOURTH(); + exc2 = PEEK(5); + tb2 = PEEK(6); exit_func = PEEK(7); - SET_VALUE(7, tb); - SET_VALUE(6, exc); - SET_VALUE(5, tp); + SET_VALUE(7, tb2); + SET_VALUE(6, exc2); + SET_VALUE(5, tp2); /* UNWIND_EXCEPT_HANDLER will pop this off. */ SET_FOURTH(NULL); /* We just shifted the stack down, so we have @@ -2645,56 +2786,53 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) block->b_level--; } /* XXX Not the fastest way to call it... */ - x = PyObject_CallFunctionObjArgs(exit_func, u, v, w, - NULL); + res = PyObject_CallFunctionObjArgs(exit_func, exc, val, tb, NULL); Py_DECREF(exit_func); - if (x == NULL) - break; /* Go to error exit */ + if (res == NULL) + goto error; - if (u != Py_None) - err = PyObject_IsTrue(x); + if (exc != Py_None) + err = PyObject_IsTrue(res); else err = 0; - Py_DECREF(x); + Py_DECREF(res); if (err < 0) - break; /* Go to error exit */ + goto error; else if (err > 0) { err = 0; /* There was an exception and a True return */ PUSH(PyLong_FromLong((long) WHY_SILENCED)); } PREDICT(END_FINALLY); - break; + DISPATCH(); } - TARGET(CALL_FUNCTION) - { - PyObject **sp; + TARGET(CALL_FUNCTION) { + PyObject **sp, *res; PCALL(PCALL_ALL); sp = stack_pointer; #ifdef WITH_TSC - x = call_function(&sp, oparg, &intr0, &intr1); + res = call_function(&sp, oparg, &intr0, &intr1); #else - x = call_function(&sp, oparg); + res = call_function(&sp, oparg); #endif stack_pointer = sp; - PUSH(x); - if (x != NULL) - DISPATCH(); - break; + PUSH(res); + if (res == NULL) + goto error; + DISPATCH(); } TARGET_WITH_IMPL(CALL_FUNCTION_VAR, _call_function_var_kw) TARGET_WITH_IMPL(CALL_FUNCTION_KW, _call_function_var_kw) TARGET(CALL_FUNCTION_VAR_KW) - _call_function_var_kw: - { + _call_function_var_kw: { int na = oparg & 0xff; int nk = (oparg>>8) & 0xff; int flags = (opcode - CALL_FUNCTION) & 3; int n = na + 2 * nk; - PyObject **pfunc, *func, **sp; + PyObject **pfunc, *func, **sp, *res; PCALL(PCALL_ALL); if (flags & CALL_FLAG_VAR) n++; @@ -2717,137 +2855,156 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) Py_INCREF(func); sp = stack_pointer; READ_TIMESTAMP(intr0); - x = ext_do_call(func, &sp, flags, na, nk); + res = ext_do_call(func, &sp, flags, na, nk); READ_TIMESTAMP(intr1); stack_pointer = sp; Py_DECREF(func); while (stack_pointer > pfunc) { - w = POP(); - Py_DECREF(w); + PyObject *o = POP(); + Py_DECREF(o); } - PUSH(x); - if (x != NULL) - DISPATCH(); - break; + PUSH(res); + if (res == NULL) + goto error; + DISPATCH(); } TARGET_WITH_IMPL(MAKE_CLOSURE, _make_function) TARGET(MAKE_FUNCTION) - _make_function: - { + _make_function: { int posdefaults = oparg & 0xff; int kwdefaults = (oparg>>8) & 0xff; int num_annotations = (oparg >> 16) & 0x7fff; - w = POP(); /* qualname */ - v = POP(); /* code object */ - x = PyFunction_NewWithQualName(v, f->f_globals, w); - Py_DECREF(v); - Py_DECREF(w); + PyObject *qualname = POP(); /* qualname */ + PyObject *code = POP(); /* code object */ + PyObject *func = PyFunction_NewWithQualName(code, f->f_globals, qualname); + Py_DECREF(code); + Py_DECREF(qualname); - if (x != NULL && opcode == MAKE_CLOSURE) { - v = POP(); - if (PyFunction_SetClosure(x, v) != 0) { + if (func == NULL) + goto error; + + if (opcode == MAKE_CLOSURE) { + PyObject *closure = POP(); + if (PyFunction_SetClosure(func, closure) != 0) { /* Can't happen unless bytecode is corrupt. */ - why = WHY_EXCEPTION; + Py_DECREF(func); + Py_DECREF(closure); + goto error; } - Py_DECREF(v); + Py_DECREF(closure); } - if (x != NULL && num_annotations > 0) { + if (num_annotations > 0) { Py_ssize_t name_ix; - u = POP(); /* names of args with annotations */ - v = PyDict_New(); - if (v == NULL) { - Py_DECREF(x); - x = NULL; - break; + PyObject *names = POP(); /* names of args with annotations */ + PyObject *anns = PyDict_New(); + if (anns == NULL) { + Py_DECREF(func); + goto error; } - name_ix = PyTuple_Size(u); + name_ix = PyTuple_Size(names); assert(num_annotations == name_ix+1); while (name_ix > 0) { + PyObject *name, *value; + int err; --name_ix; - t = PyTuple_GET_ITEM(u, name_ix); - w = POP(); - /* XXX(nnorwitz): check for errors */ - PyDict_SetItem(v, t, w); - Py_DECREF(w); + name = PyTuple_GET_ITEM(names, name_ix); + value = POP(); + err = PyDict_SetItem(anns, name, value); + Py_DECREF(value); + if (err != 0) { + Py_DECREF(anns); + Py_DECREF(func); + goto error; + } } - if (PyFunction_SetAnnotations(x, v) != 0) { + if (PyFunction_SetAnnotations(func, anns) != 0) { /* Can't happen unless PyFunction_SetAnnotations changes. */ - why = WHY_EXCEPTION; + Py_DECREF(anns); + Py_DECREF(func); + goto error; } - Py_DECREF(v); - Py_DECREF(u); + Py_DECREF(anns); + Py_DECREF(names); } /* XXX Maybe this should be a separate opcode? */ - if (x != NULL && posdefaults > 0) { - v = PyTuple_New(posdefaults); - if (v == NULL) { - Py_DECREF(x); - x = NULL; - break; + if (kwdefaults > 0) { + PyObject *defs = PyDict_New(); + if (defs == NULL) { + Py_DECREF(func); + goto error; } - while (--posdefaults >= 0) { - w = POP(); - PyTuple_SET_ITEM(v, posdefaults, w); + while (--kwdefaults >= 0) { + PyObject *v = POP(); /* default value */ + PyObject *key = POP(); /* kw only arg name */ + int err = PyDict_SetItem(defs, key, v); + Py_DECREF(v); + Py_DECREF(key); + if (err != 0) { + Py_DECREF(defs); + Py_DECREF(func); + goto error; + } } - if (PyFunction_SetDefaults(x, v) != 0) { + if (PyFunction_SetKwDefaults(func, defs) != 0) { /* Can't happen unless - PyFunction_SetDefaults changes. */ - why = WHY_EXCEPTION; + PyFunction_SetKwDefaults changes. */ + Py_DECREF(func); + Py_DECREF(defs); + goto error; } - Py_DECREF(v); + Py_DECREF(defs); } - if (x != NULL && kwdefaults > 0) { - v = PyDict_New(); - if (v == NULL) { - Py_DECREF(x); - x = NULL; - break; + if (posdefaults > 0) { + PyObject *defs = PyTuple_New(posdefaults); + if (defs == NULL) { + Py_DECREF(func); + goto error; } - while (--kwdefaults >= 0) { - w = POP(); /* default value */ - u = POP(); /* kw only arg name */ - /* XXX(nnorwitz): check for errors */ - PyDict_SetItem(v, u, w); - Py_DECREF(w); - Py_DECREF(u); - } - if (PyFunction_SetKwDefaults(x, v) != 0) { + while (--posdefaults >= 0) + PyTuple_SET_ITEM(defs, posdefaults, POP()); + if (PyFunction_SetDefaults(func, defs) != 0) { /* Can't happen unless - PyFunction_SetKwDefaults changes. */ - why = WHY_EXCEPTION; + PyFunction_SetDefaults changes. */ + Py_DECREF(defs); + Py_DECREF(func); + goto error; } - Py_DECREF(v); + Py_DECREF(defs); } - PUSH(x); - break; + PUSH(func); + DISPATCH(); } - TARGET(BUILD_SLICE) + TARGET(BUILD_SLICE) { + PyObject *start, *stop, *step, *slice; if (oparg == 3) - w = POP(); + step = POP(); else - w = NULL; - v = POP(); - u = TOP(); - x = PySlice_New(u, v, w); - Py_DECREF(u); - Py_DECREF(v); - Py_XDECREF(w); - SET_TOP(x); - if (x != NULL) DISPATCH(); - break; + step = NULL; + stop = POP(); + start = TOP(); + slice = PySlice_New(start, stop, step); + Py_DECREF(start); + Py_DECREF(stop); + Py_XDECREF(step); + SET_TOP(slice); + if (slice == NULL) + goto error; + DISPATCH(); + } - TARGET(EXTENDED_ARG) + TARGET(EXTENDED_ARG) { opcode = NEXTOP(); oparg = oparg<<16 | NEXTARG(); goto dispatch_opcode; + } #if USE_COMPUTED_GOTOS _unknown_opcode: @@ -2858,8 +3015,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) PyFrame_GetLineNumber(f), opcode); PyErr_SetString(PyExc_SystemError, "unknown opcode"); - why = WHY_EXCEPTION; - break; + goto error; #ifdef CASE_TOO_BIG } @@ -2867,71 +3023,35 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) } /* switch */ - on_error: + /* This should never be reached. Every opcode should end with DISPATCH() + or goto error. */ + assert(0); +error: READ_TIMESTAMP(inst1); - /* Quickly continue if no error occurred */ - - if (why == WHY_NOT) { - if (err == 0 && x != NULL) { -#ifdef CHECKEXC - /* This check is expensive! */ - if (PyErr_Occurred()) - fprintf(stderr, - "XXX undetected error\n"); - else { -#endif - READ_TIMESTAMP(loop1); - continue; /* Normal, fast path */ -#ifdef CHECKEXC - } -#endif - } - why = WHY_EXCEPTION; - x = Py_None; - err = 0; - } - - /* Double-check exception status */ + assert(why == WHY_NOT); + why = WHY_EXCEPTION; - if (why == WHY_EXCEPTION || why == WHY_RERAISE) { - if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_SystemError, - "error return without exception set"); - why = WHY_EXCEPTION; - } - } -#ifdef CHECKEXC - else { - /* This check is expensive! */ - if (PyErr_Occurred()) { - char buf[128]; - sprintf(buf, "Stack unwind with exception " - "set and why=%d", why); - Py_FatalError(buf); - } - } + /* Double-check exception status. */ +#ifdef NDEBUG + if (!PyErr_Occurred()) + PyErr_SetString(PyExc_SystemError, + "error return without exception set"); +#else + assert(PyErr_Occurred()); #endif - /* Log traceback info if this is a real exception */ - - if (why == WHY_EXCEPTION) { - PyTraceBack_Here(f); + /* Log traceback info. */ + PyTraceBack_Here(f); - if (tstate->c_tracefunc != NULL) - call_exc_trace(tstate->c_tracefunc, - tstate->c_traceobj, f); - } - - /* For the rest, treat WHY_RERAISE as WHY_EXCEPTION */ + if (tstate->c_tracefunc != NULL) + call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, f); - if (why == WHY_RERAISE) - why = WHY_EXCEPTION; +fast_block_end: + assert(why != WHY_NOT); /* Unwind stacks if a (pseudo) exception occurred */ - -fast_block_end: while (why != WHY_NOT && f->f_iblock > 0) { /* Peek at the current block. */ PyTryBlock *b = &f->f_blockstack[f->f_iblock - 1]; @@ -2978,7 +3098,10 @@ fast_block_end: Python main loop. */ PyErr_NormalizeException( &exc, &val, &tb); - PyException_SetTraceback(val, tb); + if (tb != NULL) + PyException_SetTraceback(val, tb); + else + PyException_SetTraceback(val, Py_None); Py_INCREF(exc); tstate->exc_type = exc; Py_INCREF(val); @@ -3010,18 +3133,23 @@ fast_block_end: break; READ_TIMESTAMP(loop1); + assert(!PyErr_Occurred()); + } /* main loop */ assert(why != WHY_YIELD); /* Pop remaining stack entries. */ while (!EMPTY()) { - v = POP(); - Py_XDECREF(v); + PyObject *o = POP(); + Py_XDECREF(o); } if (why != WHY_RETURN) retval = NULL; + assert((retval != NULL && !PyErr_Occurred()) + || (retval == NULL && PyErr_Occurred())); + fast_yield: if (co->co_flags & CO_GENERATOR && (why == WHY_YIELD || why == WHY_RETURN)) { /* The purpose of this block is to put aside the generator's exception @@ -3522,7 +3650,7 @@ restore_and_clear_exc_state(PyThreadState *tstate, PyFrameObject *f) /* Logic for the raise statement (too complicated for inlining). This *consumes* a reference count to each of its arguments. */ -static enum why_code +static int do_raise(PyObject *exc, PyObject *cause) { PyObject *type = NULL, *value = NULL; @@ -3537,13 +3665,13 @@ do_raise(PyObject *exc, PyObject *cause) if (type == Py_None) { PyErr_SetString(PyExc_RuntimeError, "No active exception to reraise"); - return WHY_EXCEPTION; - } + return 0; + } Py_XINCREF(type); Py_XINCREF(value); Py_XINCREF(tb); PyErr_Restore(type, value, tb); - return WHY_RERAISE; + return 1; } /* We support the following forms of raise: @@ -3606,13 +3734,13 @@ do_raise(PyObject *exc, PyObject *cause) /* PyErr_SetObject incref's its arguments */ Py_XDECREF(value); Py_XDECREF(type); - return WHY_EXCEPTION; + return 0; raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(cause); - return WHY_EXCEPTION; + return 0; } /* Iterate v argcnt times and store the results on the stack (via decreasing @@ -3711,7 +3839,7 @@ prtrace(PyObject *v, char *str) static void call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f) { - PyObject *type, *value, *traceback, *arg; + PyObject *type, *value, *traceback, *orig_traceback, *arg; int err; PyErr_Fetch(&type, &value, &traceback); if (value == NULL) { @@ -3719,6 +3847,11 @@ call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f) Py_INCREF(value); } PyErr_NormalizeException(&type, &value, &traceback); + orig_traceback = traceback; + if (traceback == NULL) { + Py_INCREF(Py_None); + traceback = Py_None; + } arg = PyTuple_Pack(3, type, value, traceback); if (arg == NULL) { PyErr_Restore(type, value, traceback); @@ -3727,11 +3860,11 @@ call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f) err = call_trace(func, self, f, PyTrace_EXCEPTION, arg); Py_DECREF(arg); if (err == 0) - PyErr_Restore(type, value, traceback); + PyErr_Restore(type, value, orig_traceback); else { Py_XDECREF(type); Py_XDECREF(value); - Py_XDECREF(traceback); + Py_XDECREF(orig_traceback); } } @@ -3926,6 +4059,13 @@ PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; +#ifdef Py_DEBUG + /* PyEval_CallObjectWithKeywords() must not be called with an exception + set, because it may clear it (directly or indirectly) + and so the caller looses its exception */ + assert(!PyErr_Occurred()); +#endif + if (arg == NULL) { arg = PyTuple_New(0); if (arg == NULL) @@ -3948,6 +4088,9 @@ PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw) result = PyObject_Call(func, arg, kw); Py_DECREF(arg); + + assert((result != NULL && !PyErr_Occurred()) + || (result == NULL && PyErr_Occurred())); return result; } @@ -4065,10 +4208,15 @@ call_function(PyObject ***pp_stack, int oparg else { PyObject *callargs; callargs = load_args(pp_stack, na); - READ_TIMESTAMP(*pintr0); - C_TRACE(x, PyCFunction_Call(func,callargs,NULL)); - READ_TIMESTAMP(*pintr1); - Py_XDECREF(callargs); + if (callargs != NULL) { + READ_TIMESTAMP(*pintr0); + C_TRACE(x, PyCFunction_Call(func,callargs,NULL)); + READ_TIMESTAMP(*pintr1); + Py_XDECREF(callargs); + } + else { + x = NULL; + } } } else { if (PyMethod_Check(func) && PyMethod_GET_SELF(func) != NULL) { @@ -4093,6 +4241,8 @@ call_function(PyObject ***pp_stack, int oparg READ_TIMESTAMP(*pintr1); Py_DECREF(func); } + assert((x != NULL && !PyErr_Occurred()) + || (x == NULL && PyErr_Occurred())); /* Clear the stack of the function object. Also removes the arguments in case they weren't consumed already @@ -4103,6 +4253,9 @@ call_function(PyObject ***pp_stack, int oparg Py_DECREF(w); PCALL(PCALL_POP); } + + assert((x != NULL && !PyErr_Occurred()) + || (x == NULL && PyErr_Occurred())); return x; } @@ -4386,6 +4539,8 @@ ext_call_fail: Py_XDECREF(callargs); Py_XDECREF(kwdict); Py_XDECREF(stararg); + assert((result != NULL && !PyErr_Occurred()) + || (result == NULL && PyErr_Occurred())); return result; } @@ -4482,7 +4637,7 @@ import_from(PyObject *v, PyObject *name) x = PyObject_GetAttr(v, name); if (x == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, "cannot import name %S", name); + PyErr_Format(PyExc_ImportError, "cannot import name %R", name); } return x; } diff --git a/Python/codecs.c b/Python/codecs.c index fd67d1b..899f0aa 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -65,7 +65,7 @@ PyObject *normalizestring(const char *string) p = PyMem_Malloc(len + 1); if (p == NULL) - return NULL; + return PyErr_NoMemory(); for (i = 0; i < len; i++) { register char ch = string[i]; if (ch == ' ') @@ -761,7 +761,7 @@ PyCodec_SurrogatePassErrors(PyObject *exc) for (i = start; i < end; i++) { /* object is guaranteed to be "ready" */ Py_UCS4 ch = PyUnicode_READ_CHAR(object, i); - if (ch < 0xd800 || ch > 0xdfff) { + if (!Py_UNICODE_IS_SURROGATE(ch)) { /* Not a surrogate, fail with original exception */ PyErr_SetObject(PyExceptionInstance_Class(exc), exc); Py_DECREF(res); @@ -797,7 +797,7 @@ PyCodec_SurrogatePassErrors(PyObject *exc) (p[2] & 0xc0) == 0x80) { /* it's a three-byte code */ ch = ((p[0] & 0x0f) << 12) + ((p[1] & 0x3f) << 6) + (p[2] & 0x3f); - if (ch < 0xd800 || ch > 0xdfff) + if (!Py_UNICODE_IS_SURROGATE(ch)) /* it's not a surrogate - fail */ ch = 0; } @@ -1026,7 +1026,7 @@ static int _PyCodecRegistry_Init(void) if (interp->codec_error_registry) { for (i = 0; i < Py_ARRAY_LENGTH(methods); ++i) { - PyObject *func = PyCFunction_New(&methods[i].def, NULL); + PyObject *func = PyCFunction_NewEx(&methods[i].def, NULL, NULL); int res; if (!func) Py_FatalError("can't initialize codec error registry"); diff --git a/Python/compile.c b/Python/compile.c index dd4262c..d11e3ab 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -535,6 +535,37 @@ compiler_enter_scope(struct compiler *c, identifier name, compiler_unit_free(u); return 0; } + if (u->u_ste->ste_needs_class_closure) { + /* Cook up a implicit __class__ cell. */ + _Py_IDENTIFIER(__class__); + PyObject *tuple, *name, *zero; + int res; + assert(u->u_scope_type == COMPILER_SCOPE_CLASS); + assert(PyDict_Size(u->u_cellvars) == 0); + name = _PyUnicode_FromId(&PyId___class__); + if (!name) { + compiler_unit_free(u); + return 0; + } + tuple = PyTuple_Pack(2, name, Py_TYPE(name)); + if (!tuple) { + compiler_unit_free(u); + return 0; + } + zero = PyLong_FromLong(0); + if (!zero) { + Py_DECREF(tuple); + compiler_unit_free(u); + return 0; + } + res = PyDict_SetItem(u->u_cellvars, tuple, zero); + Py_DECREF(tuple); + Py_DECREF(zero); + if (res < 0) { + compiler_unit_free(u); + return 0; + } + } u->u_freevars = dictbytype(u->u_ste->ste_symbols, FREE, DEF_FREE_CLASS, PyDict_Size(u->u_cellvars)); @@ -862,8 +893,6 @@ opcode_stack_effect(int opcode, int oparg) return 7; case WITH_CLEANUP: return -1; /* XXX Sometimes more */ - case STORE_LOCALS: - return -1; case RETURN_VALUE: return -1; case IMPORT_STAR: @@ -970,6 +999,7 @@ opcode_stack_effect(int opcode, int oparg) case LOAD_CLOSURE: return 1; case LOAD_DEREF: + case LOAD_CLASSDEREF: return 1; case STORE_DEREF: return -1; @@ -1330,7 +1360,11 @@ compiler_mod(struct compiler *c, mod_ty mod) static int get_ref_type(struct compiler *c, PyObject *name) { - int scope = PyST_GetScope(c->u->u_ste, name); + int scope; + if (c->u->u_scope_type == COMPILER_SCOPE_CLASS && + !PyUnicode_CompareWithASCIIString(name, "__class__")) + return CELL; + scope = PyST_GetScope(c->u->u_ste, name); if (scope == 0) { char buf[350]; PyOS_snprintf(buf, sizeof(buf), @@ -1501,15 +1535,15 @@ compiler_visit_annotations(struct compiler *c, arguments_ty args, if (compiler_visit_argannotations(c, args->args, names)) goto error; - if (args->varargannotation && - compiler_visit_argannotation(c, args->vararg, - args->varargannotation, names)) + if (args->vararg && args->vararg->annotation && + compiler_visit_argannotation(c, args->vararg->arg, + args->vararg->annotation, names)) goto error; if (compiler_visit_argannotations(c, args->kwonlyargs, names)) goto error; - if (args->kwargannotation && - compiler_visit_argannotation(c, args->kwarg, - args->kwargannotation, names)) + if (args->kwarg && args->kwarg->annotation && + compiler_visit_argannotation(c, args->kwarg->arg, + args->kwarg->annotation, names)) goto error; if (!return_str) { @@ -1568,6 +1602,8 @@ compiler_function(struct compiler *c, stmt_ty s) if (!compiler_decorators(c, decos)) return 0; + if (args->defaults) + VISIT_SEQ(c, expr, args->defaults); if (args->kwonlyargs) { int res = compiler_visit_kwonlydefaults(c, args->kwonlyargs, args->kw_defaults); @@ -1575,8 +1611,6 @@ compiler_function(struct compiler *c, stmt_ty s) return 0; kw_default_count = res; } - if (args->defaults) - VISIT_SEQ(c, expr, args->defaults); num_annotations = compiler_visit_annotations(c, args, returns); if (num_annotations < 0) return 0; @@ -1661,12 +1695,6 @@ compiler_class(struct compiler *c, stmt_ty s) Py_INCREF(s->v.ClassDef.name); Py_XDECREF(c->u->u_private); c->u->u_private = s->v.ClassDef.name; - /* force it to have one mandatory argument */ - c->u->u_argcount = 1; - /* load the first argument (__locals__) ... */ - ADDOP_I(c, LOAD_FAST, 0); - /* ... and store it into f_locals */ - ADDOP_IN_SCOPE(c, STORE_LOCALS); /* load (global) __name__ ... */ str = PyUnicode_InternFromString("__name__"); if (!str || !compiler_nameop(c, str, Load)) { @@ -1703,24 +1731,24 @@ compiler_class(struct compiler *c, stmt_ty s) compiler_exit_scope(c); return 0; } - /* return the (empty) __class__ cell */ - str = PyUnicode_InternFromString("__class__"); - if (str == NULL) { - compiler_exit_scope(c); - return 0; - } - i = compiler_lookup_arg(c->u->u_cellvars, str); - Py_DECREF(str); - if (i == -1) { - /* This happens when nobody references the cell */ - PyErr_Clear(); - /* Return None */ - ADDOP_O(c, LOAD_CONST, Py_None, consts); - } - else { + if (c->u->u_ste->ste_needs_class_closure) { + /* return the (empty) __class__ cell */ + str = PyUnicode_InternFromString("__class__"); + if (str == NULL) { + compiler_exit_scope(c); + return 0; + } + i = compiler_lookup_arg(c->u->u_cellvars, str); + Py_DECREF(str); + assert(i == 0); /* Return the cell where to store __class__ */ ADDOP_I(c, LOAD_CLOSURE, i); } + else { + assert(PyDict_Size(c->u->u_cellvars) == 0); + /* This happens when nobody references the cell. Return None. */ + ADDOP_O(c, LOAD_CONST, Py_None, consts); + } ADDOP_IN_SCOPE(c, RETURN_VALUE); /* create the code object */ co = assemble(c, 1); @@ -1797,14 +1825,14 @@ compiler_lambda(struct compiler *c, expr_ty e) return 0; } + if (args->defaults) + VISIT_SEQ(c, expr, args->defaults); if (args->kwonlyargs) { int res = compiler_visit_kwonlydefaults(c, args->kwonlyargs, args->kw_defaults); if (res < 0) return 0; kw_default_count = res; } - if (args->defaults) - VISIT_SEQ(c, expr, args->defaults); if (!compiler_enter_scope(c, name, COMPILER_SCOPE_FUNCTION, (void *)e, e->lineno)) return 0; @@ -2288,8 +2316,11 @@ compiler_import(struct compiler *c, stmt_ty s) identifier tmp = alias->name; Py_ssize_t dot = PyUnicode_FindChar( alias->name, '.', 0, PyUnicode_GET_LENGTH(alias->name), 1); - if (dot != -1) + if (dot != -1) { tmp = PyUnicode_Substring(alias->name, 0, dot); + if (tmp == NULL) + return 0; + } r = compiler_nameop(c, tmp, Store); if (dot != -1) { Py_DECREF(tmp); @@ -2638,6 +2669,10 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx) if (!mangled) return 0; + assert(PyUnicode_CompareWithASCIIString(name, "None") && + PyUnicode_CompareWithASCIIString(name, "True") && + PyUnicode_CompareWithASCIIString(name, "False")); + op = 0; optype = OP_NAME; scope = PyST_GetScope(c->u->u_ste, mangled); @@ -2673,7 +2708,9 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx) switch (optype) { case OP_DEREF: switch (ctx) { - case Load: op = LOAD_DEREF; break; + case Load: + op = (c->u->u_ste->ste_type == ClassBlock) ? LOAD_CLASSDEREF : LOAD_DEREF; + break; case Store: op = STORE_DEREF; break; case AugLoad: case AugStore: @@ -3197,12 +3234,18 @@ expr_constant(struct compiler *c, expr_ty e) case Name_kind: /* optimize away names that can't be reassigned */ id = PyUnicode_AsUTF8(e->v.Name.id); - if (strcmp(id, "True") == 0) return 1; - if (strcmp(id, "False") == 0) return 0; - if (strcmp(id, "None") == 0) return 0; - if (strcmp(id, "__debug__") == 0) - return ! c->c_optimize; - /* fall through */ + if (id && strcmp(id, "__debug__") == 0) + return !c->c_optimize; + return -1; + case NameConstant_kind: { + PyObject *o = e->v.NameConstant.value; + if (o == Py_None) + return 0; + else if (o == Py_True) + return 1; + else if (o == Py_False) + return 0; + } default: return -1; } @@ -3378,6 +3421,9 @@ compiler_visit_expr(struct compiler *c, expr_ty e) case Ellipsis_kind: ADDOP_O(c, LOAD_CONST, Py_Ellipsis, consts); break; + case NameConstant_kind: + ADDOP_O(c, LOAD_CONST, e->v.NameConstant.value, consts); + break; /* The following exprs can be assignment targets. */ case Attribute_kind: if (e->v.Attribute.ctx != AugStore) @@ -4060,9 +4106,8 @@ compute_code_flags(struct compiler *c) { PySTEntryObject *ste = c->u->u_ste; int flags = 0, n; - if (ste->ste_type != ModuleBlock) - flags |= CO_NEWLOCALS; if (ste->ste_type == FunctionBlock) { + flags |= CO_NEWLOCALS; if (!ste->ste_unoptimized) flags |= CO_OPTIMIZED; if (ste->ste_nested) diff --git a/Python/condvar.h b/Python/condvar.h index bbb40ba..e022dc7 100644 --- a/Python/condvar.h +++ b/Python/condvar.h @@ -241,7 +241,7 @@ _PyCOND_WAIT_MS(PyCOND_T *cv, PyMUTEX_T *cs, DWORD ms) * but we are safe because we are using a semaphore wich has an internal * count. */ - wait = WaitForSingleObject(cv->sem, ms); + wait = WaitForSingleObjectEx(cv->sem, ms, FALSE); PyMUTEX_LOCK(cs); if (wait != WAIT_OBJECT_0) --cv->waiting; diff --git a/Python/dynload_os2.c b/Python/dynload_os2.c deleted file mode 100644 index 0e1b907..0000000 --- a/Python/dynload_os2.c +++ /dev/null @@ -1,42 +0,0 @@ - -/* Support for dynamic loading of extension modules */ - -#define INCL_DOSERRORS -#define INCL_DOSMODULEMGR -#include <os2.h> - -#include "Python.h" -#include "importdl.h" - - -const char *_PyImport_DynLoadFiletab[] = {".pyd", ".dll", NULL}; - -dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname, - const char *pathname, FILE *fp) -{ - dl_funcptr p; - APIRET rc; - HMODULE hDLL; - char failreason[256]; - char funcname[258]; - - rc = DosLoadModule(failreason, - sizeof(failreason), - pathname, - &hDLL); - - if (rc != NO_ERROR) { - char errBuf[256]; - PyOS_snprintf(errBuf, sizeof(errBuf), - "DLL load failed, rc = %d: %.200s", - rc, failreason); - PyErr_SetString(PyExc_ImportError, errBuf); - return NULL; - } - - PyOS_snprintf(funcname, sizeof(funcname), "PyInit_%.200s", shortname); - rc = DosQueryProcAddr(hDLL, 0L, funcname, &p); - if (rc != NO_ERROR) - p = NULL; /* Signify Failure to Acquire Entrypoint */ - return p; -} diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index 75544ed..888fbfc 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -18,10 +18,6 @@ #ifdef HAVE_DLFCN_H #include <dlfcn.h> -#else -#if defined(PYOS_OS2) && defined(PYCC_GCC) -#include "dlfcn.h" -#endif #endif #if (defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__) @@ -40,10 +36,6 @@ const char *_PyImport_DynLoadFiletab[] = { #ifdef __CYGWIN__ ".dll", #else /* !__CYGWIN__ */ -#if defined(PYOS_OS2) && defined(PYCC_GCC) - ".pyd", - ".dll", -#else /* !(defined(PYOS_OS2) && defined(PYCC_GCC)) */ #ifdef __VMS ".exe", ".EXE", @@ -52,7 +44,6 @@ const char *_PyImport_DynLoadFiletab[] = { ".abi" PYTHON_ABI_STRING ".so", ".so", #endif /* __VMS */ -#endif /* defined(PYOS_OS2) && defined(PYCC_GCC) */ #endif /* __CYGWIN__ */ NULL, }; @@ -114,9 +105,7 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname, } } -#if !(defined(PYOS_OS2) && defined(PYCC_GCC)) dlopenflags = PyThreadState_GET()->interp->dlopenflags; -#endif #ifdef __VMS /* VMS currently don't allow a pathname, use a logical name instead */ @@ -132,19 +121,30 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname, handle = dlopen(pathname, dlopenflags); if (handle == NULL) { - PyObject *mod_name = NULL; - PyObject *path = NULL; - PyObject *error_ob = NULL; + PyObject *mod_name; + PyObject *path; + PyObject *error_ob; const char *error = dlerror(); if (error == NULL) error = "unknown dlopen() error"; error_ob = PyUnicode_FromString(error); - path = PyUnicode_FromString(pathname); + if (error_ob == NULL) + return NULL; mod_name = PyUnicode_FromString(shortname); + if (mod_name == NULL) { + Py_DECREF(error_ob); + return NULL; + } + path = PyUnicode_FromString(pathname); + if (path == NULL) { + Py_DECREF(error_ob); + Py_DECREF(mod_name); + return NULL; + } PyErr_SetImportError(error_ob, mod_name, path); - Py_XDECREF(error_ob); - Py_XDECREF(path); - Py_XDECREF(mod_name); + Py_DECREF(error_ob); + Py_DECREF(mod_name); + Py_DECREF(path); return NULL; } if (fp != NULL && nhandles < 128) diff --git a/Python/errors.c b/Python/errors.c index 626b16e..8c0c018 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -71,6 +71,11 @@ PyErr_SetObject(PyObject *exception, PyObject *value) if (value == NULL || !PyExceptionInstance_Check(value)) { /* We must normalize the value right now */ PyObject *args, *fixed_value; +#ifdef Py_DEBUG + /* in debug mode, PyEval_EvalFrameEx() fails with an assertion + error if an exception is set when it is called */ + PyErr_Clear(); +#endif if (value == NULL || value == Py_None) args = PyTuple_New(0); else if (PyTuple_Check(value)) { @@ -227,12 +232,21 @@ PyErr_NormalizeException(PyObject **exc, PyObject **val, PyObject **tb) value will be an instance. */ if (PyExceptionClass_Check(type)) { + int is_subclass; + if (inclass) { + is_subclass = PyObject_IsSubclass(inclass, type); + if (is_subclass < 0) + goto finally; + } + else + is_subclass = 0; + /* if the value was not an instance, or is not an instance whose class is (or is derived from) type, then use the value as an argument to instantiation of the type class. */ - if (!inclass || !PyObject_IsSubclass(inclass, type)) { + if (!inclass || !is_subclass) { PyObject *args, *res; if (value == Py_None) @@ -366,6 +380,12 @@ PyErr_BadArgument(void) PyObject * PyErr_NoMemory(void) { + if (Py_TYPE(PyExc_MemoryError) == NULL) { + /* PyErr_NoMemory() has been called before PyExc_MemoryError has been + initialized by _PyExc_Init() */ + Py_FatalError("Out of memory and PyExc_MemoryError is not " + "initialized yet"); + } PyErr_SetNone(PyExc_MemoryError); return NULL; } @@ -588,7 +608,7 @@ PyObject *PyErr_SetExcFromWindowsErr(PyObject *exc, int ierr) PyObject *PyErr_SetFromWindowsErr(int ierr) { - return PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError, + return PyErr_SetExcFromWindowsErrWithFilename(PyExc_OSError, ierr, NULL); } PyObject *PyErr_SetFromWindowsErrWithFilename( @@ -597,7 +617,7 @@ PyObject *PyErr_SetFromWindowsErrWithFilename( { PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL; PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject( - PyExc_WindowsError, + PyExc_OSError, ierr, name); Py_XDECREF(name); return result; @@ -611,7 +631,7 @@ PyObject *PyErr_SetFromWindowsErrWithUnicodeFilename( PyUnicode_FromUnicode(filename, wcslen(filename)) : NULL; PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject( - PyExc_WindowsError, + PyExc_OSError, ierr, name); Py_XDECREF(name); return result; @@ -646,8 +666,11 @@ PyErr_SetImportError(PyObject *msg, PyObject *name, PyObject *path) Py_INCREF(msg); PyTuple_SET_ITEM(args, 0, msg); - PyDict_SetItemString(kwargs, "name", name); - PyDict_SetItemString(kwargs, "path", path); + + if (PyDict_SetItemString(kwargs, "name", name) < 0) + return NULL; + if (PyDict_SetItemString(kwargs, "path", path) < 0) + return NULL; error = PyObject_Call(PyExc_ImportError, args, kwargs); if (error != NULL) { @@ -675,6 +698,7 @@ _PyErr_BadInternalCall(const char *filename, int lineno) void PyErr_BadInternalCall(void) { + assert(0 && "bad argument to internal function"); PyErr_Format(PyExc_SystemError, "bad argument to internal function"); } @@ -694,6 +718,12 @@ PyErr_Format(PyObject *exception, const char *format, ...) va_start(vargs); #endif +#ifdef Py_DEBUG + /* in debug mode, PyEval_EvalFrameEx() fails with an assertion error + if an exception is set when it is called */ + PyErr_Clear(); +#endif + string = PyUnicode_FromFormatV(format, vargs); PyErr_SetObject(exception, string); Py_XDECREF(string); @@ -798,7 +828,12 @@ PyErr_WriteUnraisable(PyObject *obj) PyErr_Fetch(&t, &v, &tb); f = PySys_GetObject("stderr"); if (f != NULL && f != Py_None) { - PyFile_WriteString("Exception ", f); + if (obj) { + PyFile_WriteString("Exception ignored in: ", f); + PyFile_WriteObject(obj, f, 0); + PyFile_WriteString("\n", f); + } + PyTraceBack_Print(tb, f); if (t) { PyObject* moduleName; char* className; @@ -828,15 +863,11 @@ PyErr_WriteUnraisable(PyObject *obj) PyFile_WriteString(className, f); if (v && v != Py_None) { PyFile_WriteString(": ", f); - PyFile_WriteObject(v, f, 0); + PyFile_WriteObject(v, f, Py_PRINT_RAW); } + PyFile_WriteString("\n", f); Py_XDECREF(moduleName); } - if (obj) { - PyFile_WriteString(" in ", f); - PyFile_WriteObject(obj, f, 0); - } - PyFile_WriteString(" ignored\n", f); PyErr_Clear(); /* Just in case */ } Py_XDECREF(t); diff --git a/Python/fileutils.c b/Python/fileutils.c index b7c42e8..6983855 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -16,13 +16,13 @@ extern wchar_t* _Py_DecodeUTF8_surrogateescape(const char *s, Py_ssize_t size); PyObject * _Py_device_encoding(int fd) { -#if defined(MS_WINDOWS) || defined(MS_WIN64) +#if defined(MS_WINDOWS) UINT cp; #endif if (!_PyVerify_fd(fd) || !isatty(fd)) { Py_RETURN_NONE; } -#if defined(MS_WINDOWS) || defined(MS_WIN64) +#if defined(MS_WINDOWS) if (fd == 0) cp = GetConsoleCP(); else if (fd == 1 || fd == 2) @@ -60,7 +60,7 @@ extern int _Py_normalize_encoding(const char *, char *, size_t); workaround is also enabled on error, for example if getting the locale failed. - Values of locale_is_ascii: + Values of force_ascii: 1: the workaround is used: _Py_wchar2char() uses encode_ascii_surrogateescape() and _Py_char2wchar() uses @@ -201,7 +201,7 @@ decode_ascii_surrogateescape(const char *arg, size_t *size) unsigned char *in; wchar_t *out; - res = PyMem_Malloc((strlen(arg)+1)*sizeof(wchar_t)); + res = PyMem_RawMalloc((strlen(arg)+1)*sizeof(wchar_t)); if (!res) return NULL; @@ -229,7 +229,7 @@ decode_ascii_surrogateescape(const char *arg, size_t *size) Use _Py_wchar2char() to encode the character string back to a byte string. Return a pointer to a newly allocated wide character string (use - PyMem_Free() to free the memory) and write the number of written wide + PyMem_RawFree() to free the memory) and write the number of written wide characters excluding the null character into *size if size is not NULL, or NULL on error (decoding or memory allocation error). If size is not NULL, *size is set to (size_t)-1 on memory error and (size_t)-2 on decoding @@ -254,9 +254,9 @@ _Py_char2wchar(const char* arg, size_t *size) wchar_t *res; size_t argsize; size_t count; +#ifdef HAVE_MBRTOWC unsigned char *in; wchar_t *out; -#ifdef HAVE_MBRTOWC mbstate_t mbs; #endif @@ -283,7 +283,7 @@ _Py_char2wchar(const char* arg, size_t *size) argsize = mbstowcs(NULL, arg, 0); #endif if (argsize != (size_t)-1) { - res = (wchar_t *)PyMem_Malloc((argsize+1)*sizeof(wchar_t)); + res = (wchar_t *)PyMem_RawMalloc((argsize+1)*sizeof(wchar_t)); if (!res) goto oom; count = mbstowcs(res, arg, argsize+1); @@ -292,7 +292,7 @@ _Py_char2wchar(const char* arg, size_t *size) /* Only use the result if it contains no surrogate characters. */ for (tmp = res; *tmp != 0 && - (*tmp < 0xd800 || *tmp > 0xdfff); tmp++) + !Py_UNICODE_IS_SURROGATE(*tmp); tmp++) ; if (*tmp == 0) { if (size != NULL) @@ -300,7 +300,7 @@ _Py_char2wchar(const char* arg, size_t *size) return res; } } - PyMem_Free(res); + PyMem_RawFree(res); } /* Conversion failed. Fall back to escaping with surrogateescape. */ #ifdef HAVE_MBRTOWC @@ -309,7 +309,7 @@ _Py_char2wchar(const char* arg, size_t *size) /* Overallocate; as multi-byte characters are in the argument, the actual output could use less memory. */ argsize = strlen(arg) + 1; - res = (wchar_t*)PyMem_Malloc(argsize*sizeof(wchar_t)); + res = (wchar_t*)PyMem_RawMalloc(argsize*sizeof(wchar_t)); if (!res) goto oom; in = (unsigned char*)arg; @@ -325,7 +325,7 @@ _Py_char2wchar(const char* arg, size_t *size) since we provide everything that we have - unless there is a bug in the C library, or I misunderstood how mbrtowc works. */ - PyMem_Free(res); + PyMem_RawFree(res); if (size != NULL) *size = (size_t)-2; return NULL; @@ -338,7 +338,7 @@ _Py_char2wchar(const char* arg, size_t *size) memset(&mbs, 0, sizeof mbs); continue; } - if (*out >= 0xd800 && *out <= 0xdfff) { + if (Py_UNICODE_IS_SURROGATE(*out)) { /* Surrogate character. Escape the original byte sequence with surrogateescape. */ argsize -= converted; @@ -648,12 +648,12 @@ _Py_wreadlink(const wchar_t *path, wchar_t *buf, size_t bufsiz) return -1; } if (bufsiz <= r1) { - PyMem_Free(wbuf); + PyMem_RawFree(wbuf); errno = EINVAL; return -1; } wcsncpy(buf, wbuf, bufsiz); - PyMem_Free(wbuf); + PyMem_RawFree(wbuf); return (int)r1; } #endif @@ -689,12 +689,12 @@ _Py_wrealpath(const wchar_t *path, return NULL; } if (resolved_path_size <= r) { - PyMem_Free(wresolved_path); + PyMem_RawFree(wresolved_path); errno = EINVAL; return NULL; } wcsncpy(resolved_path, wresolved_path, resolved_path_size); - PyMem_Free(wresolved_path); + PyMem_RawFree(wresolved_path); return resolved_path; } #endif @@ -707,7 +707,8 @@ wchar_t* _Py_wgetcwd(wchar_t *buf, size_t size) { #ifdef MS_WINDOWS - return _wgetcwd(buf, size); + int isize = (int)Py_MIN(size, INT_MAX); + return _wgetcwd(buf, isize); #else char fname[PATH_MAX]; wchar_t *wname; @@ -719,11 +720,11 @@ _Py_wgetcwd(wchar_t *buf, size_t size) if (wname == NULL) return NULL; if (size <= len) { - PyMem_Free(wname); + PyMem_RawFree(wname); return NULL; } wcsncpy(buf, wname, size); - PyMem_Free(wname); + PyMem_RawFree(wname); return buf; #endif } diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c index 2fe446a..9b5aff5 100644 --- a/Python/formatter_unicode.c +++ b/Python/formatter_unicode.c @@ -315,7 +315,7 @@ calc_padding(Py_ssize_t nchars, Py_ssize_t width, Py_UCS4 align, /* Do the padding, and return a pointer to where the caller-supplied content goes. */ -static Py_ssize_t +static int fill_padding(_PyUnicodeWriter *writer, Py_ssize_t nchars, Py_UCS4 fill_char, Py_ssize_t n_lpadding, @@ -556,7 +556,7 @@ fill_number(_PyUnicodeWriter *writer, const NumberFieldWidths *spec, { /* Used to keep track of digits, decimal, and remainder. */ Py_ssize_t d_pos = d_start; - const enum PyUnicode_Kind kind = writer->kind; + const unsigned int kind = writer->kind; const void *data = writer->data; Py_ssize_t r; @@ -757,7 +757,8 @@ format_string_internal(PyObject *value, const InternalFormatSpec *format, goto done; } - if (format->width == -1 && format->precision == -1) { + if ((format->width == -1 || format->width <= len) + && (format->precision == -1 || format->precision >= len)) { /* Fast path */ return _PyUnicodeWriter_WriteStr(writer, value); } @@ -770,9 +771,13 @@ format_string_internal(PyObject *value, const InternalFormatSpec *format, calc_padding(len, format->width, format->align, &lpad, &rpad, &total); - maxchar = _PyUnicode_FindMaxChar(value, 0, len); + maxchar = writer->maxchar; if (lpad != 0 || rpad != 0) maxchar = Py_MAX(maxchar, format->fill_char); + if (PyUnicode_MAX_CHAR_VALUE(value) > maxchar) { + Py_UCS4 valmaxchar = _PyUnicode_FindMaxChar(value, 0, len); + maxchar = Py_MAX(maxchar, valmaxchar); + } /* allocate the resulting string */ if (_PyUnicodeWriter_Prepare(writer, total, maxchar) == -1) @@ -977,8 +982,7 @@ format_float_internal(PyObject *value, Py_ssize_t n_total; int has_decimal; double val; - Py_ssize_t precision; - Py_ssize_t default_precision = 6; + int precision, default_precision = 6; Py_UCS4 type = format->type; int add_pct = 0; Py_ssize_t index; @@ -1133,8 +1137,7 @@ format_complex_internal(PyObject *value, Py_ssize_t n_im_total; int re_has_decimal; int im_has_decimal; - int precision; - Py_ssize_t default_precision = 6; + int precision, default_precision = 6; Py_UCS4 type = format->type; Py_ssize_t i_re; Py_ssize_t i_im; diff --git a/Python/frozen.c b/Python/frozen.c index 25fdc17..9bc662b 100644 --- a/Python/frozen.c +++ b/Python/frozen.c @@ -28,7 +28,7 @@ static unsigned char M___hello__[] = { #define SIZE (int)sizeof(M___hello__) -static struct _frozen _PyImport_FrozenModules[] = { +static const struct _frozen _PyImport_FrozenModules[] = { /* importlib */ {"_frozen_importlib", _Py_M__importlib, (int)sizeof(_Py_M__importlib)}, /* Test module */ @@ -42,4 +42,4 @@ static struct _frozen _PyImport_FrozenModules[] = { /* Embedding apps may change this pointer to point to their favorite collection of frozen modules: */ -struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules; +const struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules; diff --git a/Python/future.c b/Python/future.c index d24ae41..8097814 100644 --- a/Python/future.c +++ b/Python/future.c @@ -58,11 +58,15 @@ future_check_features(PyFutureFeatures *ff, stmt_ty s, const char *filename) static int future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename) { - int i, found_docstring = 0, done = 0, prev_line = 0; + int i, done = 0, prev_line = 0; + stmt_ty first; if (!(mod->kind == Module_kind || mod->kind == Interactive_kind)) return 1; + if (asdl_seq_LEN(mod->v.Module.body) == 0) + return 1; + /* A subsequent pass will detect future imports that don't appear at the beginning of the file. There's one case, however, that is easier to handle here: A series of imports @@ -71,8 +75,13 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename) but is preceded by a regular import. */ + i = 0; + first = (stmt_ty)asdl_seq_GET(mod->v.Module.body, i); + if (first->kind == Expr_kind && first->v.Expr.value->kind == Str_kind) + i++; - for (i = 0; i < asdl_seq_LEN(mod->v.Module.body); i++) { + + for (; i < asdl_seq_LEN(mod->v.Module.body); i++) { stmt_ty s = (stmt_ty)asdl_seq_GET(mod->v.Module.body, i); if (done && s->lineno > prev_line) @@ -99,18 +108,13 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename) return 0; ff->ff_lineno = s->lineno; } - else + else { done = 1; + } } - else if (s->kind == Expr_kind && !found_docstring) { - expr_ty e = s->v.Expr.value; - if (e->kind != Str_kind) - done = 1; - else - found_docstring = 1; - } - else + else { done = 1; + } } return 1; } diff --git a/Python/getargs.c b/Python/getargs.c index ae931b9..2c2628f 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -46,14 +46,16 @@ typedef struct { } freelistentry_t; typedef struct { - int first_available; freelistentry_t *entries; + int first_available; + int entries_malloced; } freelist_t; +#define STATIC_FREELIST_ENTRIES 8 /* Forward */ static int vgetargs1(PyObject *, const char *, va_list *, int); -static void seterror(int, const char *, int *, const char *, const char *); +static void seterror(Py_ssize_t, const char *, int *, const char *, const char *); static char *convertitem(PyObject *, const char **, va_list *, int, int *, char *, size_t, freelist_t *); static char *converttuple(PyObject *, const char **, va_list *, int, @@ -187,7 +189,8 @@ cleanreturn(int retval, freelist_t *freelist) freelist->entries[index].item); } } - PyMem_FREE(freelist->entries); + if (freelist->entries_malloced) + PyMem_FREE(freelist->entries); return retval; } @@ -197,6 +200,8 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags) { char msgbuf[256]; int levels[32]; + freelistentry_t static_entries[STATIC_FREELIST_ENTRIES]; + freelist_t freelist = {static_entries, 0, 0}; const char *fname = NULL; const char *message = NULL; int min = -1; @@ -206,7 +211,6 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags) const char *formatsave = format; Py_ssize_t i, len; char *msg; - freelist_t freelist = {0, NULL}; int compat = flags & FLAG_COMPAT; assert(compat || (args != (PyObject*)NULL)); @@ -240,15 +244,15 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags) message = format; endfmt = 1; break; + case '|': + if (level == 0) + min = max; + break; default: if (level == 0) { - if (c == 'O') - max++; - else if (Py_ISALPHA(Py_CHARMASK(c))) { + if (Py_ISALPHA(Py_CHARMASK(c))) if (c != 'e') /* skip encoded */ max++; - } else if (c == '|') - min = max; } break; } @@ -262,10 +266,13 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags) format = formatsave; - freelist.entries = PyMem_NEW(freelistentry_t, max); - if (freelist.entries == NULL) { - PyErr_NoMemory(); - return 0; + if (max > STATIC_FREELIST_ENTRIES) { + freelist.entries = PyMem_NEW(freelistentry_t, max); + if (freelist.entries == NULL) { + PyErr_NoMemory(); + return 0; + } + freelist.entries_malloced = 1; } if (compat) { @@ -350,7 +357,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags) static void -seterror(int iarg, const char *msg, int *levels, const char *fname, +seterror(Py_ssize_t iarg, const char *msg, int *levels, const char *fname, const char *message) { char buf[512]; @@ -366,7 +373,7 @@ seterror(int iarg, const char *msg, int *levels, const char *fname, } if (iarg != 0) { PyOS_snprintf(p, sizeof(buf) - (p - buf), - "argument %d", iarg); + "argument %" PY_FORMAT_SIZE_T "d", iarg); i = 0; p += strlen(p); while (levels[i] > 0 && i < 32 && (int)(p-buf) < 220) { @@ -563,7 +570,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, "size does not fit in an int"); \ return converterr("", arg, msgbuf, bufsize); \ } \ - *q=s; \ + *q = (int)s; \ } #define BUFFER_LEN ((flags & FLAG_SIZE_T) ? *q2:*q) #define RETURN_ERR_OCCURRED return msgbuf @@ -1421,7 +1428,8 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format, int max = INT_MAX; int i, len, nargs, nkeywords; PyObject *current_arg; - freelist_t freelist = {0, NULL}; + freelistentry_t static_entries[STATIC_FREELIST_ENTRIES]; + freelist_t freelist = {static_entries, 0, 0}; assert(args != NULL && PyTuple_Check(args)); assert(keywords == NULL || PyDict_Check(keywords)); @@ -1445,10 +1453,13 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format, for (len=0; kwlist[len]; len++) continue; - freelist.entries = PyMem_NEW(freelistentry_t, len); - if (freelist.entries == NULL) { - PyErr_NoMemory(); - return 0; + if (len > STATIC_FREELIST_ENTRIES) { + freelist.entries = PyMem_NEW(freelistentry_t, len); + if (freelist.entries == NULL) { + PyErr_NoMemory(); + return 0; + } + freelist.entries_malloced = 1; } nargs = PyTuple_GET_SIZE(args); @@ -1574,20 +1585,16 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format, Py_ssize_t pos = 0; while (PyDict_Next(keywords, &pos, &key, &value)) { int match = 0; - char *ks; if (!PyUnicode_Check(key)) { PyErr_SetString(PyExc_TypeError, "keywords must be strings"); return cleanreturn(0, &freelist); } /* check that _PyUnicode_AsString() result is not NULL */ - ks = _PyUnicode_AsString(key); - if (ks != NULL) { - for (i = 0; i < len; i++) { - if (!strcmp(ks, kwlist[i])) { - match = 1; - break; - } + for (i = 0; i < len; i++) { + if (!PyUnicode_CompareWithASCIIString(key, kwlist[i])) { + match = 1; + break; } } if (!match) { diff --git a/Python/import.c b/Python/import.c index e91cef8..c6222ec 100644 --- a/Python/import.c +++ b/Python/import.c @@ -19,14 +19,6 @@ extern "C" { #endif -#ifdef MS_WINDOWS -/* for stat.st_mode */ -typedef unsigned short mode_t; -/* for _mkdir */ -#include <direct.h> -#endif - - #define CACHEDIR "__pycache__" /* See _PyImport_FixupExtensionObject() below */ @@ -93,8 +85,10 @@ _PyImportZip_Init(void) int err = 0; path_hooks = PySys_GetObject("path_hooks"); - if (path_hooks == NULL) + if (path_hooks == NULL) { + PyErr_SetString(PyExc_RuntimeError, "unable to get sys.path_hooks"); goto error; + } if (Py_VerboseFlag) PySys_WriteStderr("# installing zipimport hook\n"); @@ -204,8 +198,11 @@ _PyImport_ReInitLock(void) if (import_lock_level > 1) { /* Forked as a side effect of import */ long me = PyThread_get_thread_ident(); - PyThread_acquire_lock(import_lock, 0); - /* XXX: can the previous line fail? */ + /* The following could fail if the lock is already held, but forking as + a side-effect of an import is a) rare, b) nuts, and c) difficult to + do thanks to the lock only being held when doing individual module + locks per import. */ + PyThread_acquire_lock(import_lock, NOWAIT_LOCK); import_lock_thread = me; import_lock_level--; } else { @@ -292,6 +289,30 @@ static char* sys_files[] = { NULL }; +static int +is_essential_module(PyObject *name) +{ + Py_ssize_t name_len; + char *name_str = PyUnicode_AsUTF8AndSize(name, &name_len); + + if (name_str == NULL) { + PyErr_Clear(); + return 0; + } + if (strcmp(name_str, "builtins") == 0) + return 1; + if (strcmp(name_str, "sys") == 0) + return 1; + /* These are all needed for stderr to still function */ + if (strcmp(name_str, "codecs") == 0) + return 1; + if (strcmp(name_str, "_codecs") == 0) + return 1; + if (strncmp(name_str, "encodings.", 10) == 0) + return 1; + return 0; +} + /* Un-initialize things, as good as we can */ @@ -371,9 +392,7 @@ PyImport_Cleanup(void) if (value->ob_refcnt != 1) continue; if (PyUnicode_Check(key) && PyModule_Check(value)) { - if (PyUnicode_CompareWithASCIIString(key, "builtins") == 0) - continue; - if (PyUnicode_CompareWithASCIIString(key, "sys") == 0) + if (is_essential_module(key)) continue; if (Py_VerboseFlag) PySys_FormatStderr( @@ -389,9 +408,7 @@ PyImport_Cleanup(void) pos = 0; while (PyDict_Next(modules, &pos, &key, &value)) { if (PyUnicode_Check(key) && PyModule_Check(value)) { - if (PyUnicode_CompareWithASCIIString(key, "builtins") == 0) - continue; - if (PyUnicode_CompareWithASCIIString(key, "sys") == 0) + if (is_essential_module(key)) continue; if (Py_VerboseFlag) PySys_FormatStderr("# cleanup[2] %U\n", key); @@ -400,24 +417,28 @@ PyImport_Cleanup(void) } } - /* Next, delete sys and builtins (in that order) */ - value = PyDict_GetItemString(modules, "sys"); - if (value != NULL && PyModule_Check(value)) { - if (Py_VerboseFlag) - PySys_WriteStderr("# cleanup sys\n"); - _PyModule_Clear(value); - PyDict_SetItemString(modules, "sys", Py_None); - } - value = PyDict_GetItemString(modules, "builtins"); - if (value != NULL && PyModule_Check(value)) { - if (Py_VerboseFlag) - PySys_WriteStderr("# cleanup builtins\n"); - _PyModule_Clear(value); - PyDict_SetItemString(modules, "builtins", Py_None); + /* Collect garbage remaining after deleting the modules. Mostly + reference cycles created by classes. */ + PyGC_Collect(); + + /* Dump GC stats before it's too late, since it uses the warnings + machinery. */ + _PyGC_DumpShutdownStats(); + + /* Next, delete all remaining modules */ + pos = 0; + while (PyDict_Next(modules, &pos, &key, &value)) { + if (PyUnicode_Check(key) && PyModule_Check(value)) { + if (Py_VerboseFlag) + PySys_FormatStderr("# cleanup[3] %U\n", key); + _PyModule_Clear(value); + PyDict_SetItem(modules, key, Py_None); + } } /* Finally, clear and delete the modules directory */ PyDict_Clear(modules); + _PyGC_CollectNoFail(); interp->modules = NULL; Py_DECREF(modules); } @@ -451,12 +472,12 @@ PyImport_GetMagicTag(void) /* Magic for extension modules (built-in as well as dynamically loaded). To prevent initializing an extension module more than - once, we keep a static dictionary 'extensions' keyed by module name - (for built-in modules) or by filename (for dynamically loaded - modules), containing these modules. A copy of the module's - dictionary is stored by calling _PyImport_FixupExtensionObject() - immediately after the module initialization function succeeds. A - copy can be retrieved from there by calling + once, we keep a static dictionary 'extensions' keyed by the tuple + (module name, module name) (for built-in modules) or by + (filename, module name) (for dynamically loaded modules), containing these + modules. A copy of the module's dictionary is stored by calling + _PyImport_FixupExtensionObject() immediately after the module initialization + function succeeds. A copy can be retrieved from there by calling _PyImport_FindExtensionObject(). Modules which do support multiple initialization set their m_size @@ -469,8 +490,9 @@ int _PyImport_FixupExtensionObject(PyObject *mod, PyObject *name, PyObject *filename) { - PyObject *modules, *dict; + PyObject *modules, *dict, *key; struct PyModuleDef *def; + int res; if (extensions == NULL) { extensions = PyDict_New(); if (extensions == NULL) @@ -507,7 +529,13 @@ _PyImport_FixupExtensionObject(PyObject *mod, PyObject *name, if (def->m_base.m_copy == NULL) return -1; } - PyDict_SetItem(extensions, filename, (PyObject*)def); + key = PyTuple_Pack(2, filename, name); + if (key == NULL) + return -1; + res = PyDict_SetItem(extensions, key, (PyObject *)def); + Py_DECREF(key); + if (res < 0) + return -1; return 0; } @@ -527,11 +555,15 @@ _PyImport_FixupBuiltin(PyObject *mod, char *name) PyObject * _PyImport_FindExtensionObject(PyObject *name, PyObject *filename) { - PyObject *mod, *mdict; + PyObject *mod, *mdict, *key; PyModuleDef* def; if (extensions == NULL) return NULL; - def = (PyModuleDef*)PyDict_GetItem(extensions, filename); + key = PyTuple_Pack(2, filename, name); + if (key == NULL) + return NULL; + def = (PyModuleDef *)PyDict_GetItem(extensions, key); + Py_DECREF(key); if (def == NULL) return NULL; if (def->m_size == -1) { @@ -693,7 +725,7 @@ PyImport_ExecCodeModuleWithPathnames(char *name, PyObject *co, char *pathname, "no interpreter!"); } - pathobj = _PyObject_CallMethodObjIdArgs(interp->importlib, + pathobj = _PyObject_CallMethodIdObjArgs(interp->importlib, &PyId__get_sourcefile, cpathobj, NULL); if (pathobj == NULL) @@ -835,7 +867,7 @@ imp_fix_co_filename(PyObject *self, PyObject *args) /* Forward */ -static struct _frozen * find_frozen(PyObject *); +static const struct _frozen * find_frozen(PyObject *); /* Helper to test for built-in module */ @@ -917,11 +949,11 @@ PyAPI_FUNC(PyObject *) PyImport_GetImporter(PyObject *path) { PyObject *importer=NULL, *path_importer_cache=NULL, *path_hooks=NULL; - if ((path_importer_cache = PySys_GetObject("path_importer_cache"))) { - if ((path_hooks = PySys_GetObject("path_hooks"))) { - importer = get_path_importer(path_importer_cache, - path_hooks, path); - } + path_importer_cache = PySys_GetObject("path_importer_cache"); + path_hooks = PySys_GetObject("path_hooks"); + if (path_importer_cache != NULL && path_hooks != NULL) { + importer = get_path_importer(path_importer_cache, + path_hooks, path); } Py_XINCREF(importer); /* get_path_importer returns a borrowed reference */ return importer; @@ -972,10 +1004,10 @@ init_builtin(PyObject *name) /* Frozen modules */ -static struct _frozen * +static const struct _frozen * find_frozen(PyObject *name) { - struct _frozen *p; + const struct _frozen *p; if (name == NULL) return NULL; @@ -992,7 +1024,7 @@ find_frozen(PyObject *name) static PyObject * get_frozen_object(PyObject *name) { - struct _frozen *p = find_frozen(name); + const struct _frozen *p = find_frozen(name); int size; if (p == NULL) { @@ -1016,7 +1048,7 @@ get_frozen_object(PyObject *name) static PyObject * is_frozen_package(PyObject *name) { - struct _frozen *p = find_frozen(name); + const struct _frozen *p = find_frozen(name); int size; if (p == NULL) { @@ -1043,7 +1075,7 @@ is_frozen_package(PyObject *name) int PyImport_ImportFrozenModuleObject(PyObject *name) { - struct _frozen *p; + const struct _frozen *p; PyObject *co, *m, *path; int ispackage; int size; @@ -1072,19 +1104,17 @@ PyImport_ImportFrozenModuleObject(PyObject *name) goto err_return; } if (ispackage) { - /* Set __path__ to the package name */ + /* Set __path__ to the empty list */ PyObject *d, *l; int err; m = PyImport_AddModuleObject(name); if (m == NULL) goto err_return; d = PyModule_GetDict(m); - l = PyList_New(1); + l = PyList_New(0); if (l == NULL) { goto err_return; } - Py_INCREF(name); - PyList_SET_ITEM(l, 0, name); err = PyDict_SetItemString(d, "__path__", l); Py_DECREF(l); if (err != 0) @@ -1430,7 +1460,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, } if (initializing > 0) { /* _bootstrap._lock_unlock_module() releases the import lock */ - value = _PyObject_CallMethodObjIdArgs(interp->importlib, + value = _PyObject_CallMethodIdObjArgs(interp->importlib, &PyId__lock_unlock_module, abs_name, NULL); if (value == NULL) @@ -1448,7 +1478,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, } else { /* _bootstrap._find_and_load() releases the import lock */ - mod = _PyObject_CallMethodObjIdArgs(interp->importlib, + mod = _PyObject_CallMethodIdObjArgs(interp->importlib, &PyId__find_and_load, abs_name, builtins_import, NULL); if (mod == NULL) { @@ -1517,7 +1547,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, } } else { - final_mod = _PyObject_CallMethodObjIdArgs(interp->importlib, + final_mod = _PyObject_CallMethodIdObjArgs(interp->importlib, &PyId__handle_fromlist, mod, fromlist, builtins_import, NULL); @@ -1771,7 +1801,7 @@ static PyObject * imp_is_frozen(PyObject *self, PyObject *args) { PyObject *name; - struct _frozen *p; + const struct _frozen *p; if (!PyArg_ParseTuple(args, "U:is_frozen", &name)) return NULL; p = find_frozen(name); diff --git a/Python/importdl.c b/Python/importdl.c index 0ea954c..b60f1c7 100644 --- a/Python/importdl.c +++ b/Python/importdl.c @@ -77,6 +77,8 @@ _PyImport_LoadDynamicModule(PyObject *name, PyObject *path, FILE *fp) PyObject *msg = PyUnicode_FromFormat("dynamic module does not define " "init function (PyInit_%s)", shortname); + if (msg == NULL) + goto error; PyErr_SetImportError(msg, name, path); Py_DECREF(msg); goto error; diff --git a/Python/importdl.h b/Python/importdl.h index 6b9cf75..6a51a91 100644 --- a/Python/importdl.h +++ b/Python/importdl.h @@ -18,13 +18,8 @@ extern PyObject *_PyImport_LoadDynamicModule(PyObject *name, PyObject *pathname, #include <windows.h> typedef FARPROC dl_funcptr; #else -#if defined(PYOS_OS2) && !defined(PYCC_GCC) -#include <os2def.h> -typedef int (* APIENTRY dl_funcptr)(); -#else typedef void (*dl_funcptr)(void); #endif -#endif #ifdef __cplusplus diff --git a/Python/importlib.h b/Python/importlib.h index 8f8c6c6..51aae7e 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1,8 +1,8 @@ /* Auto-generated by Modules/_freeze_importlib.c */ -unsigned char _Py_M__importlib[] = { +const unsigned char _Py_M__importlib[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,64,0,0,0,115,206,3,0,0,100,0,0,90,0,0, - 100,131,0,90,1,0,100,4,0,100,5,0,132,0,0,90, + 0,64,0,0,0,115,72,4,0,0,100,0,0,90,0,0, + 100,145,0,90,1,0,100,4,0,100,5,0,132,0,0,90, 2,0,100,6,0,100,7,0,132,0,0,90,3,0,100,8, 0,100,9,0,132,0,0,90,4,0,100,10,0,100,11,0, 132,0,0,90,5,0,100,12,0,100,13,0,132,0,0,90, @@ -11,416 +11,350 @@ unsigned char _Py_M__importlib[] = { 132,0,0,90,9,0,100,20,0,100,21,0,100,22,0,132, 1,0,90,10,0,100,23,0,100,24,0,132,0,0,90,11, 0,101,12,0,101,11,0,106,13,0,131,1,0,90,14,0, - 100,25,0,100,26,0,132,0,0,90,15,0,105,0,0,90, - 16,0,105,0,0,90,17,0,71,100,27,0,100,28,0,132, - 0,0,100,28,0,101,18,0,131,3,0,90,19,0,71,100, - 29,0,100,30,0,132,0,0,100,30,0,131,2,0,90,20, - 0,71,100,31,0,100,32,0,132,0,0,100,32,0,131,2, + 105,0,0,90,15,0,105,0,0,90,16,0,71,100,25,0, + 100,26,0,132,0,0,100,26,0,101,17,0,131,3,0,90, + 18,0,71,100,27,0,100,28,0,132,0,0,100,28,0,131, + 2,0,90,19,0,71,100,29,0,100,30,0,132,0,0,100, + 30,0,131,2,0,90,20,0,100,31,0,100,32,0,132,0, 0,90,21,0,100,33,0,100,34,0,132,0,0,90,22,0, - 100,35,0,100,36,0,132,0,0,90,23,0,100,37,0,100, - 38,0,132,0,0,90,24,0,100,39,0,101,25,0,100,40, - 0,131,1,0,100,41,0,62,66,101,25,0,100,42,0,131, - 1,0,100,43,0,62,66,90,26,0,101,27,0,100,44,0, - 100,45,0,132,0,0,101,28,0,100,46,0,100,47,0,100, - 48,0,131,3,0,68,131,1,0,131,1,0,90,29,0,100, - 49,0,90,30,0,100,50,0,103,1,0,90,31,0,100,51, - 0,103,1,0,90,32,0,100,52,0,103,1,0,90,33,0, - 100,130,0,100,53,0,100,54,0,132,1,0,90,35,0,100, - 55,0,100,56,0,132,0,0,90,36,0,100,57,0,100,58, - 0,132,0,0,90,37,0,100,59,0,100,60,0,100,61,0, - 100,62,0,132,0,1,90,38,0,100,63,0,100,64,0,132, - 0,0,90,39,0,100,65,0,100,66,0,132,0,0,90,40, - 0,100,67,0,100,68,0,132,0,0,90,41,0,100,69,0, - 100,70,0,132,0,0,90,42,0,100,71,0,100,72,0,132, - 0,0,90,43,0,100,73,0,100,74,0,132,0,0,90,44, - 0,100,75,0,100,76,0,132,0,0,90,45,0,71,100,77, - 0,100,78,0,132,0,0,100,78,0,131,2,0,90,46,0, - 71,100,79,0,100,80,0,132,0,0,100,80,0,131,2,0, - 90,47,0,71,100,81,0,100,82,0,132,0,0,100,82,0, - 131,2,0,90,48,0,71,100,83,0,100,84,0,132,0,0, - 100,84,0,131,2,0,90,49,0,71,100,85,0,100,86,0, - 132,0,0,100,86,0,101,49,0,131,3,0,90,50,0,71, - 100,87,0,100,88,0,132,0,0,100,88,0,131,2,0,90, - 51,0,71,100,89,0,100,90,0,132,0,0,100,90,0,101, - 51,0,101,50,0,131,4,0,90,52,0,71,100,91,0,100, - 92,0,132,0,0,100,92,0,101,51,0,101,49,0,131,4, - 0,90,53,0,103,0,0,90,54,0,71,100,93,0,100,94, - 0,132,0,0,100,94,0,131,2,0,90,55,0,71,100,95, - 0,100,96,0,132,0,0,100,96,0,131,2,0,90,56,0, - 71,100,97,0,100,98,0,132,0,0,100,98,0,131,2,0, - 90,57,0,71,100,99,0,100,100,0,132,0,0,100,100,0, - 131,2,0,90,58,0,71,100,101,0,100,102,0,132,0,0, - 100,102,0,131,2,0,90,59,0,71,100,103,0,100,104,0, - 132,0,0,100,104,0,131,2,0,90,60,0,100,105,0,100, - 106,0,132,0,0,90,61,0,100,107,0,100,108,0,132,0, - 0,90,62,0,100,109,0,100,110,0,132,0,0,90,63,0, - 100,111,0,90,64,0,100,112,0,100,113,0,132,0,0,90, - 65,0,100,114,0,100,115,0,132,0,0,90,66,0,100,130, - 0,100,46,0,100,116,0,100,117,0,132,2,0,90,67,0, - 100,118,0,100,119,0,132,0,0,90,68,0,100,120,0,100, - 121,0,132,0,0,90,69,0,100,122,0,100,123,0,132,0, - 0,90,70,0,100,130,0,100,130,0,102,0,0,100,46,0, - 100,124,0,100,125,0,132,4,0,90,71,0,100,126,0,100, - 127,0,132,0,0,90,72,0,100,128,0,100,129,0,132,0, - 0,90,73,0,100,130,0,83,40,132,0,0,0,117,83,1, - 0,0,67,111,114,101,32,105,109,112,108,101,109,101,110,116, + 100,35,0,100,36,0,132,0,0,90,23,0,100,37,0,106, + 24,0,100,38,0,100,39,0,131,2,0,100,40,0,23,90, + 25,0,101,26,0,106,27,0,101,25,0,100,39,0,131,2, + 0,90,28,0,100,41,0,90,29,0,100,42,0,103,1,0, + 90,30,0,100,43,0,103,1,0,90,31,0,100,44,0,103, + 1,0,90,32,0,100,45,0,100,46,0,100,47,0,132,1, + 0,90,33,0,100,48,0,100,49,0,132,0,0,90,34,0, + 100,50,0,100,51,0,132,0,0,90,35,0,100,52,0,100, + 53,0,132,0,0,90,36,0,100,54,0,100,55,0,100,56, + 0,100,57,0,132,0,1,90,37,0,71,100,58,0,100,59, + 0,132,0,0,100,59,0,131,2,0,90,38,0,71,100,60, + 0,100,61,0,132,0,0,100,61,0,101,38,0,131,3,0, + 90,39,0,100,62,0,100,63,0,100,64,0,100,65,0,132, + 0,1,90,40,0,100,66,0,100,67,0,132,0,0,90,41, + 0,100,68,0,100,69,0,132,0,0,90,42,0,100,70,0, + 100,71,0,132,0,0,90,43,0,100,72,0,100,73,0,132, + 0,0,90,44,0,100,74,0,100,75,0,132,0,0,90,45, + 0,100,76,0,100,77,0,132,0,0,90,46,0,100,78,0, + 100,79,0,132,0,0,90,47,0,100,80,0,100,81,0,132, + 0,0,90,48,0,100,45,0,100,45,0,100,45,0,100,82, + 0,100,83,0,132,3,0,90,49,0,100,45,0,100,45,0, + 100,45,0,100,84,0,100,85,0,132,3,0,90,50,0,100, + 86,0,100,86,0,100,87,0,100,88,0,132,2,0,90,51, + 0,100,89,0,100,90,0,132,0,0,90,52,0,71,100,91, + 0,100,92,0,132,0,0,100,92,0,131,2,0,90,53,0, + 71,100,93,0,100,94,0,132,0,0,100,94,0,131,2,0, + 90,54,0,71,100,95,0,100,96,0,132,0,0,100,96,0, + 131,2,0,90,55,0,71,100,97,0,100,98,0,132,0,0, + 100,98,0,131,2,0,90,56,0,71,100,99,0,100,100,0, + 132,0,0,100,100,0,101,56,0,131,3,0,90,57,0,71, + 100,101,0,100,102,0,132,0,0,100,102,0,131,2,0,90, + 58,0,71,100,103,0,100,104,0,132,0,0,100,104,0,101, + 58,0,101,57,0,131,4,0,90,59,0,71,100,105,0,100, + 106,0,132,0,0,100,106,0,101,58,0,101,56,0,131,4, + 0,90,60,0,103,0,0,90,61,0,71,100,107,0,100,108, + 0,132,0,0,100,108,0,131,2,0,90,62,0,71,100,109, + 0,100,110,0,132,0,0,100,110,0,131,2,0,90,63,0, + 71,100,111,0,100,112,0,132,0,0,100,112,0,131,2,0, + 90,64,0,71,100,113,0,100,114,0,132,0,0,100,114,0, + 131,2,0,90,65,0,71,100,115,0,100,116,0,132,0,0, + 100,116,0,131,2,0,90,66,0,71,100,117,0,100,118,0, + 132,0,0,100,118,0,131,2,0,90,67,0,100,119,0,100, + 120,0,132,0,0,90,68,0,100,121,0,100,122,0,132,0, + 0,90,69,0,100,123,0,100,124,0,132,0,0,90,70,0, + 100,125,0,90,71,0,101,71,0,100,126,0,23,90,72,0, + 100,127,0,100,128,0,132,0,0,90,73,0,100,129,0,100, + 130,0,132,0,0,90,74,0,100,45,0,100,86,0,100,131, + 0,100,132,0,132,2,0,90,75,0,100,133,0,100,134,0, + 132,0,0,90,76,0,100,135,0,100,136,0,132,0,0,90, + 77,0,100,137,0,100,138,0,132,0,0,90,78,0,100,45, + 0,100,45,0,102,0,0,100,86,0,100,139,0,100,140,0, + 132,4,0,90,79,0,100,141,0,100,142,0,132,0,0,90, + 80,0,100,143,0,100,144,0,132,0,0,90,81,0,100,45, + 0,83,40,146,0,0,0,117,83,1,0,0,67,111,114,101, + 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32, + 111,102,32,105,109,112,111,114,116,46,10,10,84,104,105,115, + 32,109,111,100,117,108,101,32,105,115,32,78,79,84,32,109, + 101,97,110,116,32,116,111,32,98,101,32,100,105,114,101,99, + 116,108,121,32,105,109,112,111,114,116,101,100,33,32,73,116, + 32,104,97,115,32,98,101,101,110,32,100,101,115,105,103,110, + 101,100,32,115,117,99,104,10,116,104,97,116,32,105,116,32, + 99,97,110,32,98,101,32,98,111,111,116,115,116,114,97,112, + 112,101,100,32,105,110,116,111,32,80,121,116,104,111,110,32, + 97,115,32,116,104,101,32,105,109,112,108,101,109,101,110,116, 97,116,105,111,110,32,111,102,32,105,109,112,111,114,116,46, - 10,10,84,104,105,115,32,109,111,100,117,108,101,32,105,115, - 32,78,79,84,32,109,101,97,110,116,32,116,111,32,98,101, - 32,100,105,114,101,99,116,108,121,32,105,109,112,111,114,116, - 101,100,33,32,73,116,32,104,97,115,32,98,101,101,110,32, - 100,101,115,105,103,110,101,100,32,115,117,99,104,10,116,104, - 97,116,32,105,116,32,99,97,110,32,98,101,32,98,111,111, - 116,115,116,114,97,112,112,101,100,32,105,110,116,111,32,80, - 121,116,104,111,110,32,97,115,32,116,104,101,32,105,109,112, - 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,105, - 109,112,111,114,116,46,32,65,115,10,115,117,99,104,32,105, - 116,32,114,101,113,117,105,114,101,115,32,116,104,101,32,105, - 110,106,101,99,116,105,111,110,32,111,102,32,115,112,101,99, - 105,102,105,99,32,109,111,100,117,108,101,115,32,97,110,100, - 32,97,116,116,114,105,98,117,116,101,115,32,105,110,32,111, - 114,100,101,114,32,116,111,10,119,111,114,107,46,32,79,110, - 101,32,115,104,111,117,108,100,32,117,115,101,32,105,109,112, - 111,114,116,108,105,98,32,97,115,32,116,104,101,32,112,117, - 98,108,105,99,45,102,97,99,105,110,103,32,118,101,114,115, - 105,111,110,32,111,102,32,116,104,105,115,32,109,111,100,117, - 108,101,46,10,10,117,3,0,0,0,119,105,110,117,6,0, - 0,0,99,121,103,119,105,110,117,6,0,0,0,100,97,114, - 119,105,110,99,0,0,0,0,0,0,0,0,1,0,0,0, - 2,0,0,0,67,0,0,0,115,49,0,0,0,116,0,0, - 106,1,0,106,2,0,116,3,0,131,1,0,114,33,0,100, - 1,0,100,2,0,132,0,0,125,0,0,110,12,0,100,3, - 0,100,2,0,132,0,0,125,0,0,124,0,0,83,40,4, - 0,0,0,78,99,0,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,83,0,0,0,115,13,0,0,0,100,1, - 0,116,0,0,106,1,0,107,6,0,83,40,2,0,0,0, - 117,53,0,0,0,84,114,117,101,32,105,102,32,102,105,108, - 101,110,97,109,101,115,32,109,117,115,116,32,98,101,32,99, - 104,101,99,107,101,100,32,99,97,115,101,45,105,110,115,101, - 110,115,105,116,105,118,101,108,121,46,115,12,0,0,0,80, - 89,84,72,79,78,67,65,83,69,79,75,40,2,0,0,0, - 117,3,0,0,0,95,111,115,117,7,0,0,0,101,110,118, - 105,114,111,110,40,0,0,0,0,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,11,0,0,0,95,114,101,108,97,120, - 95,99,97,115,101,34,0,0,0,115,2,0,0,0,0,2, - 117,37,0,0,0,95,109,97,107,101,95,114,101,108,97,120, - 95,99,97,115,101,46,60,108,111,99,97,108,115,62,46,95, - 114,101,108,97,120,95,99,97,115,101,99,0,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,83,0,0,0,115, - 4,0,0,0,100,1,0,83,40,2,0,0,0,117,53,0, - 0,0,84,114,117,101,32,105,102,32,102,105,108,101,110,97, - 109,101,115,32,109,117,115,116,32,98,101,32,99,104,101,99, - 107,101,100,32,99,97,115,101,45,105,110,115,101,110,115,105, - 116,105,118,101,108,121,46,70,40,1,0,0,0,117,5,0, - 0,0,70,97,108,115,101,40,0,0,0,0,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,11,0,0,0,95,114,101, - 108,97,120,95,99,97,115,101,38,0,0,0,115,2,0,0, - 0,0,2,40,4,0,0,0,117,3,0,0,0,115,121,115, - 117,8,0,0,0,112,108,97,116,102,111,114,109,117,10,0, - 0,0,115,116,97,114,116,115,119,105,116,104,117,27,0,0, - 0,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,40,1,0,0, - 0,117,11,0,0,0,95,114,101,108,97,120,95,99,97,115, - 101,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,16,0, + 32,65,115,10,115,117,99,104,32,105,116,32,114,101,113,117, + 105,114,101,115,32,116,104,101,32,105,110,106,101,99,116,105, + 111,110,32,111,102,32,115,112,101,99,105,102,105,99,32,109, + 111,100,117,108,101,115,32,97,110,100,32,97,116,116,114,105, + 98,117,116,101,115,32,105,110,32,111,114,100,101,114,32,116, + 111,10,119,111,114,107,46,32,79,110,101,32,115,104,111,117, + 108,100,32,117,115,101,32,105,109,112,111,114,116,108,105,98, + 32,97,115,32,116,104,101,32,112,117,98,108,105,99,45,102, + 97,99,105,110,103,32,118,101,114,115,105,111,110,32,111,102, + 32,116,104,105,115,32,109,111,100,117,108,101,46,10,10,244, + 3,0,0,0,119,105,110,244,6,0,0,0,99,121,103,119, + 105,110,244,6,0,0,0,100,97,114,119,105,110,99,0,0, + 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0, + 0,0,115,49,0,0,0,116,0,0,106,1,0,106,2,0, + 116,3,0,131,1,0,114,33,0,100,1,0,100,2,0,132, + 0,0,125,0,0,110,12,0,100,3,0,100,2,0,132,0, + 0,125,0,0,124,0,0,83,40,4,0,0,0,78,99,0, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,83, + 0,0,0,115,13,0,0,0,100,1,0,116,0,0,106,1, + 0,107,6,0,83,40,2,0,0,0,117,53,0,0,0,84, + 114,117,101,32,105,102,32,102,105,108,101,110,97,109,101,115, + 32,109,117,115,116,32,98,101,32,99,104,101,99,107,101,100, + 32,99,97,115,101,45,105,110,115,101,110,115,105,116,105,118, + 101,108,121,46,115,12,0,0,0,80,89,84,72,79,78,67, + 65,83,69,79,75,40,2,0,0,0,244,3,0,0,0,95, + 111,115,116,7,0,0,0,101,110,118,105,114,111,110,168,0, + 0,0,0,114,4,0,0,0,114,4,0,0,0,245,29,0, + 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, + 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,244, + 11,0,0,0,95,114,101,108,97,120,95,99,97,115,101,30, + 0,0,0,115,2,0,0,0,0,2,117,37,0,0,0,95, + 109,97,107,101,95,114,101,108,97,120,95,99,97,115,101,46, + 60,108,111,99,97,108,115,62,46,95,114,101,108,97,120,95, + 99,97,115,101,99,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,83,0,0,0,115,4,0,0,0,100,1, + 0,83,40,2,0,0,0,117,53,0,0,0,84,114,117,101, + 32,105,102,32,102,105,108,101,110,97,109,101,115,32,109,117, + 115,116,32,98,101,32,99,104,101,99,107,101,100,32,99,97, + 115,101,45,105,110,115,101,110,115,105,116,105,118,101,108,121, + 46,70,114,4,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,6,0,0,0, + 34,0,0,0,115,2,0,0,0,0,2,40,4,0,0,0, + 244,3,0,0,0,115,121,115,244,8,0,0,0,112,108,97, + 116,102,111,114,109,244,10,0,0,0,115,116,97,114,116,115, + 119,105,116,104,244,27,0,0,0,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,40,1,0,0,0,114,6,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,244,16,0, 0,0,95,109,97,107,101,95,114,101,108,97,120,95,99,97, - 115,101,32,0,0,0,115,8,0,0,0,0,1,18,1,15, - 4,12,3,117,16,0,0,0,95,109,97,107,101,95,114,101, - 108,97,120,95,99,97,115,101,99,1,0,0,0,0,0,0, - 0,2,0,0,0,3,0,0,0,67,0,0,0,115,108,0, - 0,0,116,0,0,124,0,0,131,1,0,125,0,0,103,0, - 0,125,1,0,124,1,0,106,1,0,124,0,0,100,1,0, - 64,131,1,0,1,124,1,0,106,1,0,124,0,0,100,2, - 0,63,100,1,0,64,131,1,0,1,124,1,0,106,1,0, - 124,0,0,100,3,0,63,100,1,0,64,131,1,0,1,124, - 1,0,106,1,0,124,0,0,100,4,0,63,100,1,0,64, - 131,1,0,1,116,2,0,124,1,0,131,1,0,83,40,5, - 0,0,0,117,111,0,0,0,67,111,110,118,101,114,116,32, - 97,32,51,50,45,98,105,116,32,105,110,116,101,103,101,114, - 32,116,111,32,108,105,116,116,108,101,45,101,110,100,105,97, - 110,46,10,10,32,32,32,32,88,88,88,32,84,101,109,112, - 111,114,97,114,121,32,117,110,116,105,108,32,109,97,114,115, - 104,97,108,39,115,32,108,111,110,103,32,102,117,110,99,116, - 105,111,110,115,32,97,114,101,32,101,120,112,111,115,101,100, - 46,10,10,32,32,32,32,105,255,0,0,0,105,8,0,0, - 0,105,16,0,0,0,105,24,0,0,0,40,3,0,0,0, - 117,3,0,0,0,105,110,116,117,6,0,0,0,97,112,112, - 101,110,100,117,9,0,0,0,98,121,116,101,97,114,114,97, - 121,40,2,0,0,0,117,1,0,0,0,120,117,9,0,0, - 0,105,110,116,95,98,121,116,101,115,40,0,0,0,0,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,7,0,0,0,95,119,95,108,111, - 110,103,45,0,0,0,115,14,0,0,0,0,6,12,1,6, - 1,17,1,21,1,21,1,21,1,117,7,0,0,0,95,119, - 95,108,111,110,103,99,1,0,0,0,0,0,0,0,2,0, - 0,0,3,0,0,0,67,0,0,0,115,68,0,0,0,124, - 0,0,100,1,0,25,125,1,0,124,1,0,124,0,0,100, - 2,0,25,100,3,0,62,79,125,1,0,124,1,0,124,0, - 0,100,4,0,25,100,5,0,62,79,125,1,0,124,1,0, - 124,0,0,100,6,0,25,100,7,0,62,79,125,1,0,124, - 1,0,83,40,8,0,0,0,117,115,0,0,0,67,111,110, - 118,101,114,116,32,52,32,98,121,116,101,115,32,105,110,32, - 108,105,116,116,108,101,45,101,110,100,105,97,110,32,116,111, - 32,97,110,32,105,110,116,101,103,101,114,46,10,10,32,32, - 32,32,88,88,88,32,84,101,109,112,111,114,97,114,121,32, - 117,110,116,105,108,32,109,97,114,115,104,97,108,39,115,32, - 108,111,110,103,32,102,117,110,99,116,105,111,110,32,97,114, - 101,32,101,120,112,111,115,101,100,46,10,10,32,32,32,32, - 105,0,0,0,0,105,1,0,0,0,105,8,0,0,0,105, - 2,0,0,0,105,16,0,0,0,105,3,0,0,0,105,24, - 0,0,0,40,0,0,0,0,40,2,0,0,0,117,9,0, - 0,0,105,110,116,95,98,121,116,101,115,117,1,0,0,0, - 120,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,7,0, - 0,0,95,114,95,108,111,110,103,61,0,0,0,115,10,0, - 0,0,0,6,10,1,18,1,18,1,18,1,117,7,0,0, - 0,95,114,95,108,111,110,103,99,0,0,0,0,0,0,0, - 0,3,0,0,0,4,0,0,0,71,0,0,0,115,103,0, - 0,0,103,0,0,125,1,0,120,71,0,124,0,0,68,93, - 63,0,125,2,0,124,2,0,115,31,0,113,13,0,110,0, - 0,124,1,0,106,0,0,124,2,0,131,1,0,1,124,2, - 0,100,4,0,25,116,1,0,107,7,0,114,13,0,124,1, - 0,106,0,0,116,2,0,131,1,0,1,113,13,0,113,13, - 0,87,100,2,0,106,3,0,124,1,0,100,3,0,100,5, - 0,133,2,0,25,131,1,0,83,40,6,0,0,0,117,31, - 0,0,0,82,101,112,108,97,99,101,109,101,110,116,32,102, - 111,114,32,111,115,46,112,97,116,104,46,106,111,105,110,40, - 41,46,105,1,0,0,0,117,0,0,0,0,78,105,255,255, - 255,255,105,255,255,255,255,40,4,0,0,0,117,6,0,0, - 0,97,112,112,101,110,100,117,15,0,0,0,112,97,116,104, - 95,115,101,112,97,114,97,116,111,114,115,117,8,0,0,0, - 112,97,116,104,95,115,101,112,117,4,0,0,0,106,111,105, - 110,40,3,0,0,0,117,10,0,0,0,112,97,116,104,95, - 112,97,114,116,115,117,9,0,0,0,110,101,119,95,112,97, - 114,116,115,117,4,0,0,0,112,97,114,116,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,10,0,0,0,95,112,97, - 116,104,95,106,111,105,110,74,0,0,0,115,16,0,0,0, - 0,2,6,1,13,1,6,1,6,1,13,1,16,1,20,1, - 117,10,0,0,0,95,112,97,116,104,95,106,111,105,110,99, - 1,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0, - 67,0,0,0,115,85,0,0,0,120,48,0,116,0,0,124, - 0,0,131,1,0,68,93,28,0,125,1,0,124,1,0,116, - 1,0,107,6,0,114,13,0,124,1,0,125,2,0,80,113, - 13,0,113,13,0,87,116,2,0,125,2,0,124,0,0,106, - 3,0,124,2,0,131,1,0,92,3,0,125,3,0,125,4, - 0,125,5,0,124,3,0,124,5,0,102,2,0,83,40,1, - 0,0,0,117,32,0,0,0,82,101,112,108,97,99,101,109, + 115,101,28,0,0,0,115,8,0,0,0,0,1,18,1,15, + 4,12,3,114,11,0,0,0,99,1,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,26,0, + 0,0,116,0,0,124,0,0,131,1,0,100,1,0,64,106, + 1,0,100,2,0,100,3,0,131,2,0,83,40,4,0,0, + 0,117,42,0,0,0,67,111,110,118,101,114,116,32,97,32, + 51,50,45,98,105,116,32,105,110,116,101,103,101,114,32,116, + 111,32,108,105,116,116,108,101,45,101,110,100,105,97,110,46, + 108,3,0,0,0,255,127,255,127,3,0,233,4,0,0,0, + 244,6,0,0,0,108,105,116,116,108,101,40,2,0,0,0, + 244,3,0,0,0,105,110,116,244,8,0,0,0,116,111,95, + 98,121,116,101,115,40,1,0,0,0,244,1,0,0,0,120, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,244, + 7,0,0,0,95,119,95,108,111,110,103,40,0,0,0,115, + 2,0,0,0,0,2,114,17,0,0,0,99,1,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,0,106,1,0,124,0,0,100,1, + 0,131,2,0,83,40,2,0,0,0,117,47,0,0,0,67, + 111,110,118,101,114,116,32,52,32,98,121,116,101,115,32,105, + 110,32,108,105,116,116,108,101,45,101,110,100,105,97,110,32, + 116,111,32,97,110,32,105,110,116,101,103,101,114,46,114,13, + 0,0,0,40,2,0,0,0,114,14,0,0,0,244,10,0, + 0,0,102,114,111,109,95,98,121,116,101,115,40,1,0,0, + 0,116,9,0,0,0,105,110,116,95,98,121,116,101,115,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,244,7, + 0,0,0,95,114,95,108,111,110,103,45,0,0,0,115,2, + 0,0,0,0,2,114,19,0,0,0,99,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,71,0,0,0,115, + 26,0,0,0,116,0,0,106,1,0,100,1,0,100,2,0, + 132,0,0,124,0,0,68,131,1,0,131,1,0,83,40,3, + 0,0,0,117,31,0,0,0,82,101,112,108,97,99,101,109, 101,110,116,32,102,111,114,32,111,115,46,112,97,116,104,46, - 115,112,108,105,116,40,41,46,40,4,0,0,0,117,8,0, - 0,0,114,101,118,101,114,115,101,100,117,15,0,0,0,112, - 97,116,104,95,115,101,112,97,114,97,116,111,114,115,117,8, - 0,0,0,112,97,116,104,95,115,101,112,117,10,0,0,0, - 114,112,97,114,116,105,116,105,111,110,40,6,0,0,0,117, - 4,0,0,0,112,97,116,104,117,1,0,0,0,120,117,3, - 0,0,0,115,101,112,117,5,0,0,0,102,114,111,110,116, - 117,1,0,0,0,95,117,4,0,0,0,116,97,105,108,40, - 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, - 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, - 95,98,111,111,116,115,116,114,97,112,62,117,11,0,0,0, - 95,112,97,116,104,95,115,112,108,105,116,86,0,0,0,115, - 14,0,0,0,0,2,19,1,12,1,6,1,8,2,6,1, - 24,1,117,11,0,0,0,95,112,97,116,104,95,115,112,108, - 105,116,99,2,0,0,0,0,0,0,0,3,0,0,0,11, - 0,0,0,67,0,0,0,115,61,0,0,0,121,19,0,116, - 0,0,106,1,0,124,0,0,131,1,0,125,2,0,87,110, - 22,0,4,116,2,0,107,10,0,114,43,0,1,1,1,100, - 2,0,83,89,110,1,0,88,124,2,0,106,4,0,100,1, - 0,64,124,1,0,107,2,0,83,40,3,0,0,0,117,49, - 0,0,0,84,101,115,116,32,119,104,101,116,104,101,114,32, - 116,104,101,32,112,97,116,104,32,105,115,32,116,104,101,32, - 115,112,101,99,105,102,105,101,100,32,109,111,100,101,32,116, - 121,112,101,46,105,0,240,0,0,70,40,5,0,0,0,117, - 3,0,0,0,95,111,115,117,4,0,0,0,115,116,97,116, - 117,7,0,0,0,79,83,69,114,114,111,114,117,5,0,0, - 0,70,97,108,115,101,117,7,0,0,0,115,116,95,109,111, - 100,101,40,3,0,0,0,117,4,0,0,0,112,97,116,104, - 117,4,0,0,0,109,111,100,101,117,9,0,0,0,115,116, - 97,116,95,105,110,102,111,40,0,0,0,0,40,0,0,0, - 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, - 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, - 97,112,62,117,18,0,0,0,95,112,97,116,104,95,105,115, - 95,109,111,100,101,95,116,121,112,101,98,0,0,0,115,10, - 0,0,0,0,2,3,1,19,1,13,1,9,1,117,18,0, - 0,0,95,112,97,116,104,95,105,115,95,109,111,100,101,95, - 116,121,112,101,99,1,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,13,0,0,0,116,0, - 0,124,0,0,100,1,0,131,2,0,83,40,2,0,0,0, - 117,31,0,0,0,82,101,112,108,97,99,101,109,101,110,116, - 32,102,111,114,32,111,115,46,112,97,116,104,46,105,115,102, - 105,108,101,46,105,0,128,0,0,40,1,0,0,0,117,18, - 0,0,0,95,112,97,116,104,95,105,115,95,109,111,100,101, - 95,116,121,112,101,40,1,0,0,0,117,4,0,0,0,112, - 97,116,104,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 12,0,0,0,95,112,97,116,104,95,105,115,102,105,108,101, - 108,0,0,0,115,2,0,0,0,0,2,117,12,0,0,0, - 95,112,97,116,104,95,105,115,102,105,108,101,99,1,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,34,0,0,0,124,0,0,115,21,0,116,0,0,106, - 1,0,131,0,0,125,0,0,110,0,0,116,2,0,124,0, - 0,100,1,0,131,2,0,83,40,2,0,0,0,117,30,0, - 0,0,82,101,112,108,97,99,101,109,101,110,116,32,102,111, - 114,32,111,115,46,112,97,116,104,46,105,115,100,105,114,46, - 105,0,64,0,0,40,3,0,0,0,117,3,0,0,0,95, - 111,115,117,6,0,0,0,103,101,116,99,119,100,117,18,0, - 0,0,95,112,97,116,104,95,105,115,95,109,111,100,101,95, - 116,121,112,101,40,1,0,0,0,117,4,0,0,0,112,97, - 116,104,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,11, - 0,0,0,95,112,97,116,104,95,105,115,100,105,114,114,0, - 0,0,115,6,0,0,0,0,2,6,1,15,1,117,11,0, - 0,0,95,112,97,116,104,95,105,115,100,105,114,105,182,1, - 0,0,99,3,0,0,0,0,0,0,0,6,0,0,0,17, - 0,0,0,67,0,0,0,115,192,0,0,0,100,1,0,106, - 0,0,124,0,0,116,1,0,124,0,0,131,1,0,131,2, - 0,125,3,0,116,2,0,106,3,0,124,3,0,116,2,0, - 106,4,0,116,2,0,106,5,0,66,116,2,0,106,6,0, - 66,124,2,0,100,2,0,64,131,3,0,125,4,0,121,60, - 0,116,7,0,106,8,0,124,4,0,100,3,0,131,2,0, - 143,20,0,125,5,0,124,5,0,106,9,0,124,1,0,131, - 1,0,1,87,100,4,0,81,88,116,2,0,106,10,0,124, - 3,0,124,0,0,131,2,0,1,87,110,59,0,4,116,11, - 0,107,10,0,114,187,0,1,1,1,121,17,0,116,2,0, - 106,12,0,124,3,0,131,1,0,1,87,110,18,0,4,116, - 11,0,107,10,0,114,179,0,1,1,1,89,110,1,0,88, - 130,0,0,89,110,1,0,88,100,4,0,83,40,5,0,0, - 0,117,162,0,0,0,66,101,115,116,45,101,102,102,111,114, - 116,32,102,117,110,99,116,105,111,110,32,116,111,32,119,114, - 105,116,101,32,100,97,116,97,32,116,111,32,97,32,112,97, - 116,104,32,97,116,111,109,105,99,97,108,108,121,46,10,32, - 32,32,32,66,101,32,112,114,101,112,97,114,101,100,32,116, - 111,32,104,97,110,100,108,101,32,97,32,70,105,108,101,69, - 120,105,115,116,115,69,114,114,111,114,32,105,102,32,99,111, - 110,99,117,114,114,101,110,116,32,119,114,105,116,105,110,103, - 32,111,102,32,116,104,101,10,32,32,32,32,116,101,109,112, - 111,114,97,114,121,32,102,105,108,101,32,105,115,32,97,116, - 116,101,109,112,116,101,100,46,117,5,0,0,0,123,125,46, - 123,125,105,182,1,0,0,117,2,0,0,0,119,98,78,40, - 13,0,0,0,117,6,0,0,0,102,111,114,109,97,116,117, - 2,0,0,0,105,100,117,3,0,0,0,95,111,115,117,4, - 0,0,0,111,112,101,110,117,6,0,0,0,79,95,69,88, - 67,76,117,7,0,0,0,79,95,67,82,69,65,84,117,8, - 0,0,0,79,95,87,82,79,78,76,89,117,3,0,0,0, - 95,105,111,117,6,0,0,0,70,105,108,101,73,79,117,5, - 0,0,0,119,114,105,116,101,117,7,0,0,0,114,101,112, - 108,97,99,101,117,7,0,0,0,79,83,69,114,114,111,114, - 117,6,0,0,0,117,110,108,105,110,107,40,6,0,0,0, - 117,4,0,0,0,112,97,116,104,117,4,0,0,0,100,97, - 116,97,117,4,0,0,0,109,111,100,101,117,8,0,0,0, - 112,97,116,104,95,116,109,112,117,2,0,0,0,102,100,117, - 4,0,0,0,102,105,108,101,40,0,0,0,0,40,0,0, - 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, - 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, - 114,97,112,62,117,13,0,0,0,95,119,114,105,116,101,95, - 97,116,111,109,105,99,121,0,0,0,115,26,0,0,0,0, - 5,24,1,9,1,33,1,3,3,21,1,19,1,20,1,13, - 1,3,1,17,1,13,1,5,1,117,13,0,0,0,95,119, - 114,105,116,101,95,97,116,111,109,105,99,99,2,0,0,0, - 0,0,0,0,3,0,0,0,7,0,0,0,67,0,0,0, - 115,95,0,0,0,120,69,0,100,1,0,100,2,0,100,3, - 0,100,4,0,103,4,0,68,93,49,0,125,2,0,116,0, - 0,124,1,0,124,2,0,131,2,0,114,19,0,116,1,0, - 124,0,0,124,2,0,116,2,0,124,1,0,124,2,0,131, - 2,0,131,3,0,1,113,19,0,113,19,0,87,124,0,0, - 106,3,0,106,4,0,124,1,0,106,3,0,131,1,0,1, - 100,5,0,83,40,6,0,0,0,117,47,0,0,0,83,105, - 109,112,108,101,32,115,117,98,115,116,105,116,117,116,101,32, - 102,111,114,32,102,117,110,99,116,111,111,108,115,46,117,112, - 100,97,116,101,95,119,114,97,112,112,101,114,46,117,10,0, - 0,0,95,95,109,111,100,117,108,101,95,95,117,8,0,0, - 0,95,95,110,97,109,101,95,95,117,12,0,0,0,95,95, - 113,117,97,108,110,97,109,101,95,95,117,7,0,0,0,95, - 95,100,111,99,95,95,78,40,5,0,0,0,117,7,0,0, - 0,104,97,115,97,116,116,114,117,7,0,0,0,115,101,116, - 97,116,116,114,117,7,0,0,0,103,101,116,97,116,116,114, - 117,8,0,0,0,95,95,100,105,99,116,95,95,117,6,0, - 0,0,117,112,100,97,116,101,40,3,0,0,0,117,3,0, - 0,0,110,101,119,117,3,0,0,0,111,108,100,117,7,0, - 0,0,114,101,112,108,97,99,101,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,5,0,0,0,95,119,114,97,112,143, - 0,0,0,115,8,0,0,0,0,2,25,1,15,1,32,1, - 117,5,0,0,0,95,119,114,97,112,99,1,0,0,0,0, - 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115, - 16,0,0,0,116,0,0,116,1,0,131,1,0,124,0,0, - 131,1,0,83,40,1,0,0,0,117,75,0,0,0,67,114, - 101,97,116,101,32,97,32,110,101,119,32,109,111,100,117,108, - 101,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,101,110,116,101,114,101, - 100,32,105,110,116,111,32,115,121,115,46,109,111,100,117,108, - 101,115,46,10,10,32,32,32,32,40,2,0,0,0,117,4, - 0,0,0,116,121,112,101,117,3,0,0,0,95,105,111,40, - 1,0,0,0,117,4,0,0,0,110,97,109,101,40,0,0, - 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, - 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, - 111,111,116,115,116,114,97,112,62,117,10,0,0,0,110,101, - 119,95,109,111,100,117,108,101,154,0,0,0,115,2,0,0, - 0,0,6,117,10,0,0,0,110,101,119,95,109,111,100,117, - 108,101,99,1,0,0,0,0,0,0,0,1,0,0,0,1, - 0,0,0,66,0,0,0,115,20,0,0,0,124,0,0,69, - 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,83, - 40,2,0,0,0,117,14,0,0,0,95,68,101,97,100,108, - 111,99,107,69,114,114,111,114,78,40,3,0,0,0,117,8, - 0,0,0,95,95,110,97,109,101,95,95,117,10,0,0,0, - 95,95,109,111,100,117,108,101,95,95,117,12,0,0,0,95, - 95,113,117,97,108,110,97,109,101,95,95,40,1,0,0,0, - 117,10,0,0,0,95,95,108,111,99,97,108,115,95,95,40, - 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, - 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, - 95,98,111,111,116,115,116,114,97,112,62,117,14,0,0,0, - 95,68,101,97,100,108,111,99,107,69,114,114,111,114,171,0, - 0,0,115,2,0,0,0,16,1,117,14,0,0,0,95,68, - 101,97,100,108,111,99,107,69,114,114,111,114,99,1,0,0, - 0,0,0,0,0,1,0,0,0,2,0,0,0,66,0,0, - 0,115,86,0,0,0,124,0,0,69,101,0,0,90,1,0, - 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, - 3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,0, - 0,90,5,0,100,6,0,100,7,0,132,0,0,90,6,0, - 100,8,0,100,9,0,132,0,0,90,7,0,100,10,0,100, - 11,0,132,0,0,90,8,0,100,12,0,83,40,13,0,0, - 0,117,11,0,0,0,95,77,111,100,117,108,101,76,111,99, - 107,117,169,0,0,0,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,2,0,0,0,2,0,0,0, - 67,0,0,0,115,70,0,0,0,116,0,0,106,1,0,131, - 0,0,124,0,0,95,2,0,116,0,0,106,1,0,131,0, - 0,124,0,0,95,3,0,124,1,0,124,0,0,95,4,0, - 100,0,0,124,0,0,95,6,0,100,1,0,124,0,0,95, - 7,0,100,1,0,124,0,0,95,8,0,100,0,0,83,40, - 2,0,0,0,78,105,0,0,0,0,40,9,0,0,0,117, - 7,0,0,0,95,116,104,114,101,97,100,117,13,0,0,0, - 97,108,108,111,99,97,116,101,95,108,111,99,107,117,4,0, - 0,0,108,111,99,107,117,6,0,0,0,119,97,107,101,117, - 112,117,4,0,0,0,110,97,109,101,117,4,0,0,0,78, - 111,110,101,117,5,0,0,0,111,119,110,101,114,117,5,0, - 0,0,99,111,117,110,116,117,7,0,0,0,119,97,105,116, - 101,114,115,40,2,0,0,0,117,4,0,0,0,115,101,108, - 102,117,4,0,0,0,110,97,109,101,40,0,0,0,0,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,8,0,0,0,95,95,105,110,105, - 116,95,95,181,0,0,0,115,12,0,0,0,0,1,15,1, + 106,111,105,110,40,41,46,99,1,0,0,0,0,0,0,0, + 2,0,0,0,4,0,0,0,83,0,0,0,115,37,0,0, + 0,103,0,0,124,0,0,93,27,0,125,1,0,124,1,0, + 114,6,0,124,1,0,106,0,0,116,1,0,131,1,0,145, + 2,0,113,6,0,83,114,4,0,0,0,40,2,0,0,0, + 244,6,0,0,0,114,115,116,114,105,112,244,15,0,0,0, + 112,97,116,104,95,115,101,112,97,114,97,116,111,114,115,40, + 2,0,0,0,244,2,0,0,0,46,48,244,4,0,0,0, + 112,97,114,116,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,245,10,0,0,0,60,108,105,115,116,99,111,109, + 112,62,52,0,0,0,115,2,0,0,0,9,1,117,30,0, + 0,0,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, + 40,2,0,0,0,244,8,0,0,0,112,97,116,104,95,115, + 101,112,244,4,0,0,0,106,111,105,110,40,1,0,0,0, + 244,10,0,0,0,112,97,116,104,95,112,97,114,116,115,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,244,10, + 0,0,0,95,112,97,116,104,95,106,111,105,110,50,0,0, + 0,115,4,0,0,0,0,2,15,1,114,28,0,0,0,99, + 1,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0, + 67,0,0,0,115,134,0,0,0,116,0,0,116,1,0,131, + 1,0,100,1,0,107,2,0,114,52,0,124,0,0,106,2, + 0,116,3,0,131,1,0,92,3,0,125,1,0,125,2,0, + 125,3,0,124,1,0,124,3,0,102,2,0,83,120,69,0, + 116,4,0,124,0,0,131,1,0,68,93,55,0,125,4,0, + 124,4,0,116,1,0,107,6,0,114,65,0,124,0,0,106, + 5,0,124,4,0,100,2,0,100,1,0,131,1,1,92,2, + 0,125,1,0,125,3,0,124,1,0,124,3,0,102,2,0, + 83,113,65,0,87,100,3,0,124,0,0,102,2,0,83,40, + 4,0,0,0,117,32,0,0,0,82,101,112,108,97,99,101, + 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, + 46,115,112,108,105,116,40,41,46,233,1,0,0,0,116,8, + 0,0,0,109,97,120,115,112,108,105,116,244,0,0,0,0, + 40,6,0,0,0,244,3,0,0,0,108,101,110,114,21,0, + 0,0,244,10,0,0,0,114,112,97,114,116,105,116,105,111, + 110,114,25,0,0,0,244,8,0,0,0,114,101,118,101,114, + 115,101,100,244,6,0,0,0,114,115,112,108,105,116,40,5, + 0,0,0,244,4,0,0,0,112,97,116,104,116,5,0,0, + 0,102,114,111,110,116,244,1,0,0,0,95,244,4,0,0, + 0,116,97,105,108,114,16,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,244,11,0,0,0,95,112, + 97,116,104,95,115,112,108,105,116,56,0,0,0,115,16,0, + 0,0,0,2,18,1,24,1,10,1,19,1,12,1,27,1, + 14,1,114,38,0,0,0,99,2,0,0,0,0,0,0,0, + 3,0,0,0,11,0,0,0,67,0,0,0,115,61,0,0, + 0,121,19,0,116,0,0,106,1,0,124,0,0,131,1,0, + 125,2,0,87,110,22,0,4,116,2,0,107,10,0,114,43, + 0,1,1,1,100,1,0,83,89,110,1,0,88,124,2,0, + 106,3,0,100,2,0,64,124,1,0,107,2,0,83,40,3, + 0,0,0,117,49,0,0,0,84,101,115,116,32,119,104,101, + 116,104,101,114,32,116,104,101,32,112,97,116,104,32,105,115, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, + 111,100,101,32,116,121,112,101,46,70,105,0,240,0,0,40, + 4,0,0,0,114,3,0,0,0,244,4,0,0,0,115,116, + 97,116,244,7,0,0,0,79,83,69,114,114,111,114,244,7, + 0,0,0,115,116,95,109,111,100,101,40,3,0,0,0,114, + 35,0,0,0,244,4,0,0,0,109,111,100,101,116,9,0, + 0,0,115,116,97,116,95,105,110,102,111,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,244,18,0,0,0,95, + 112,97,116,104,95,105,115,95,109,111,100,101,95,116,121,112, + 101,68,0,0,0,115,10,0,0,0,0,2,3,1,19,1, + 13,1,9,1,114,43,0,0,0,99,1,0,0,0,0,0, + 0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,13, + 0,0,0,116,0,0,124,0,0,100,1,0,131,2,0,83, + 40,2,0,0,0,117,31,0,0,0,82,101,112,108,97,99, + 101,109,101,110,116,32,102,111,114,32,111,115,46,112,97,116, + 104,46,105,115,102,105,108,101,46,105,0,128,0,0,40,1, + 0,0,0,114,43,0,0,0,40,1,0,0,0,114,35,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,244,12,0,0,0,95,112,97,116,104,95,105,115,102,105, + 108,101,78,0,0,0,115,2,0,0,0,0,2,114,44,0, + 0,0,99,1,0,0,0,0,0,0,0,1,0,0,0,3, + 0,0,0,67,0,0,0,115,34,0,0,0,124,0,0,115, + 21,0,116,0,0,106,1,0,131,0,0,125,0,0,110,0, + 0,116,2,0,124,0,0,100,1,0,131,2,0,83,40,2, + 0,0,0,117,30,0,0,0,82,101,112,108,97,99,101,109, + 101,110,116,32,102,111,114,32,111,115,46,112,97,116,104,46, + 105,115,100,105,114,46,105,0,64,0,0,40,3,0,0,0, + 114,3,0,0,0,116,6,0,0,0,103,101,116,99,119,100, + 114,43,0,0,0,40,1,0,0,0,114,35,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,244,11, + 0,0,0,95,112,97,116,104,95,105,115,100,105,114,84,0, + 0,0,115,6,0,0,0,0,2,6,1,15,1,114,45,0, + 0,0,105,182,1,0,0,99,3,0,0,0,0,0,0,0, + 6,0,0,0,17,0,0,0,67,0,0,0,115,192,0,0, + 0,100,1,0,106,0,0,124,0,0,116,1,0,124,0,0, + 131,1,0,131,2,0,125,3,0,116,2,0,106,3,0,124, + 3,0,116,2,0,106,4,0,116,2,0,106,5,0,66,116, + 2,0,106,6,0,66,124,2,0,100,2,0,64,131,3,0, + 125,4,0,121,60,0,116,7,0,106,8,0,124,4,0,100, + 3,0,131,2,0,143,20,0,125,5,0,124,5,0,106,9, + 0,124,1,0,131,1,0,1,87,100,4,0,81,88,116,2, + 0,106,10,0,124,3,0,124,0,0,131,2,0,1,87,110, + 59,0,4,116,11,0,107,10,0,114,187,0,1,1,1,121, + 17,0,116,2,0,106,12,0,124,3,0,131,1,0,1,87, + 110,18,0,4,116,11,0,107,10,0,114,179,0,1,1,1, + 89,110,1,0,88,130,0,0,89,110,1,0,88,100,4,0, + 83,40,5,0,0,0,117,162,0,0,0,66,101,115,116,45, + 101,102,102,111,114,116,32,102,117,110,99,116,105,111,110,32, + 116,111,32,119,114,105,116,101,32,100,97,116,97,32,116,111, + 32,97,32,112,97,116,104,32,97,116,111,109,105,99,97,108, + 108,121,46,10,32,32,32,32,66,101,32,112,114,101,112,97, + 114,101,100,32,116,111,32,104,97,110,100,108,101,32,97,32, + 70,105,108,101,69,120,105,115,116,115,69,114,114,111,114,32, + 105,102,32,99,111,110,99,117,114,114,101,110,116,32,119,114, + 105,116,105,110,103,32,111,102,32,116,104,101,10,32,32,32, + 32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32, + 105,115,32,97,116,116,101,109,112,116,101,100,46,117,5,0, + 0,0,123,125,46,123,125,105,182,1,0,0,116,2,0,0, + 0,119,98,78,40,13,0,0,0,244,6,0,0,0,102,111, + 114,109,97,116,244,2,0,0,0,105,100,114,3,0,0,0, + 116,4,0,0,0,111,112,101,110,116,6,0,0,0,79,95, + 69,88,67,76,116,7,0,0,0,79,95,67,82,69,65,84, + 116,8,0,0,0,79,95,87,82,79,78,76,89,244,3,0, + 0,0,95,105,111,244,6,0,0,0,70,105,108,101,73,79, + 244,5,0,0,0,119,114,105,116,101,244,7,0,0,0,114, + 101,112,108,97,99,101,114,40,0,0,0,116,6,0,0,0, + 117,110,108,105,110,107,40,6,0,0,0,114,35,0,0,0, + 244,4,0,0,0,100,97,116,97,114,42,0,0,0,116,8, + 0,0,0,112,97,116,104,95,116,109,112,116,2,0,0,0, + 102,100,244,4,0,0,0,102,105,108,101,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,244,13,0,0,0,95, + 119,114,105,116,101,95,97,116,111,109,105,99,91,0,0,0, + 115,26,0,0,0,0,5,24,1,9,1,33,1,3,3,21, + 1,19,1,20,1,13,1,3,1,17,1,13,1,5,1,114, + 54,0,0,0,99,2,0,0,0,0,0,0,0,3,0,0, + 0,7,0,0,0,67,0,0,0,115,95,0,0,0,120,69, + 0,100,1,0,100,2,0,100,3,0,100,4,0,103,4,0, + 68,93,49,0,125,2,0,116,0,0,124,1,0,124,2,0, + 131,2,0,114,19,0,116,1,0,124,0,0,124,2,0,116, + 2,0,124,1,0,124,2,0,131,2,0,131,3,0,1,113, + 19,0,113,19,0,87,124,0,0,106,3,0,106,4,0,124, + 1,0,106,3,0,131,1,0,1,100,5,0,83,40,6,0, + 0,0,117,47,0,0,0,83,105,109,112,108,101,32,115,117, + 98,115,116,105,116,117,116,101,32,102,111,114,32,102,117,110, + 99,116,111,111,108,115,46,117,112,100,97,116,101,95,119,114, + 97,112,112,101,114,46,244,10,0,0,0,95,95,109,111,100, + 117,108,101,95,95,244,8,0,0,0,95,95,110,97,109,101, + 95,95,244,12,0,0,0,95,95,113,117,97,108,110,97,109, + 101,95,95,244,7,0,0,0,95,95,100,111,99,95,95,78, + 40,5,0,0,0,244,7,0,0,0,104,97,115,97,116,116, + 114,244,7,0,0,0,115,101,116,97,116,116,114,244,7,0, + 0,0,103,101,116,97,116,116,114,244,8,0,0,0,95,95, + 100,105,99,116,95,95,244,6,0,0,0,117,112,100,97,116, + 101,40,3,0,0,0,116,3,0,0,0,110,101,119,116,3, + 0,0,0,111,108,100,114,51,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,244,5,0,0,0,95, + 119,114,97,112,113,0,0,0,115,8,0,0,0,0,2,25, + 1,15,1,32,1,114,64,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, + 16,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, + 100,1,0,83,40,2,0,0,0,244,14,0,0,0,95,68, + 101,97,100,108,111,99,107,69,114,114,111,114,78,40,3,0, + 0,0,114,56,0,0,0,114,55,0,0,0,114,57,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,65,0,0,0,132,0,0,0,115,2, + 0,0,0,12,1,114,65,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, + 82,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, + 100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,90, + 4,0,100,4,0,100,5,0,132,0,0,90,5,0,100,6, + 0,100,7,0,132,0,0,90,6,0,100,8,0,100,9,0, + 132,0,0,90,7,0,100,10,0,100,11,0,132,0,0,90, + 8,0,100,12,0,83,40,13,0,0,0,244,11,0,0,0, + 95,77,111,100,117,108,101,76,111,99,107,117,169,0,0,0, + 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,2,0,0,0,2,0,0,0,67,0,0,0,115,70, + 0,0,0,116,0,0,106,1,0,131,0,0,124,0,0,95, + 2,0,116,0,0,106,1,0,131,0,0,124,0,0,95,3, + 0,124,1,0,124,0,0,95,4,0,100,0,0,124,0,0, + 95,5,0,100,1,0,124,0,0,95,6,0,100,1,0,124, + 0,0,95,7,0,100,0,0,83,40,2,0,0,0,78,233, + 0,0,0,0,40,8,0,0,0,244,7,0,0,0,95,116, + 104,114,101,97,100,116,13,0,0,0,97,108,108,111,99,97, + 116,101,95,108,111,99,107,244,4,0,0,0,108,111,99,107, + 244,6,0,0,0,119,97,107,101,117,112,244,4,0,0,0, + 110,97,109,101,244,5,0,0,0,111,119,110,101,114,244,5, + 0,0,0,99,111,117,110,116,244,7,0,0,0,119,97,105, + 116,101,114,115,40,2,0,0,0,244,4,0,0,0,115,101, + 108,102,114,71,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,244,8,0,0,0,95,95,105,110,105, + 116,95,95,142,0,0,0,115,12,0,0,0,0,1,15,1, 15,1,9,1,9,1,9,1,117,20,0,0,0,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,4,0,0,0,2,0, @@ -430,1182 +364,1232 @@ unsigned char _Py_M__importlib[] = { 3,0,124,3,0,100,0,0,107,8,0,114,55,0,100,1, 0,83,124,3,0,106,2,0,125,2,0,124,2,0,124,1, 0,107,2,0,114,24,0,100,2,0,83,113,24,0,100,0, - 0,83,40,3,0,0,0,78,70,84,40,8,0,0,0,117, - 7,0,0,0,95,116,104,114,101,97,100,117,9,0,0,0, - 103,101,116,95,105,100,101,110,116,117,5,0,0,0,111,119, - 110,101,114,117,12,0,0,0,95,98,108,111,99,107,105,110, - 103,95,111,110,117,3,0,0,0,103,101,116,117,4,0,0, - 0,78,111,110,101,117,5,0,0,0,70,97,108,115,101,117, - 4,0,0,0,84,114,117,101,40,4,0,0,0,117,4,0, - 0,0,115,101,108,102,117,2,0,0,0,109,101,117,3,0, - 0,0,116,105,100,117,4,0,0,0,108,111,99,107,40,0, - 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, - 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, - 98,111,111,116,115,116,114,97,112,62,117,12,0,0,0,104, - 97,115,95,100,101,97,100,108,111,99,107,189,0,0,0,115, - 18,0,0,0,0,2,12,1,9,1,3,1,15,1,12,1, - 4,1,9,1,12,1,117,24,0,0,0,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,2,0,0,0, - 17,0,0,0,67,0,0,0,115,214,0,0,0,116,0,0, - 106,1,0,131,0,0,125,1,0,124,0,0,116,2,0,124, - 1,0,60,122,177,0,120,170,0,124,0,0,106,3,0,143, - 130,0,1,124,0,0,106,4,0,100,1,0,107,2,0,115, - 68,0,124,0,0,106,5,0,124,1,0,107,2,0,114,96, - 0,124,1,0,124,0,0,95,5,0,124,0,0,4,106,4, - 0,100,2,0,55,2,95,4,0,100,5,0,83,124,0,0, - 106,7,0,131,0,0,114,127,0,116,8,0,100,3,0,124, - 0,0,22,131,1,0,130,1,0,110,0,0,124,0,0,106, - 9,0,106,10,0,100,6,0,131,1,0,114,163,0,124,0, - 0,4,106,12,0,100,2,0,55,2,95,12,0,110,0,0, - 87,100,4,0,81,88,124,0,0,106,9,0,106,10,0,131, - 0,0,1,124,0,0,106,9,0,106,13,0,131,0,0,1, - 113,28,0,87,100,4,0,116,2,0,124,1,0,61,88,100, - 4,0,83,40,7,0,0,0,117,185,0,0,0,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,105,0,0,0,0,105,1,0,0,0, - 117,23,0,0,0,100,101,97,100,108,111,99,107,32,100,101, - 116,101,99,116,101,100,32,98,121,32,37,114,78,84,70,40, - 14,0,0,0,117,7,0,0,0,95,116,104,114,101,97,100, - 117,9,0,0,0,103,101,116,95,105,100,101,110,116,117,12, - 0,0,0,95,98,108,111,99,107,105,110,103,95,111,110,117, - 4,0,0,0,108,111,99,107,117,5,0,0,0,99,111,117, - 110,116,117,5,0,0,0,111,119,110,101,114,117,4,0,0, - 0,84,114,117,101,117,12,0,0,0,104,97,115,95,100,101, - 97,100,108,111,99,107,117,14,0,0,0,95,68,101,97,100, - 108,111,99,107,69,114,114,111,114,117,6,0,0,0,119,97, - 107,101,117,112,117,7,0,0,0,97,99,113,117,105,114,101, - 117,5,0,0,0,70,97,108,115,101,117,7,0,0,0,119, - 97,105,116,101,114,115,117,7,0,0,0,114,101,108,101,97, - 115,101,40,2,0,0,0,117,4,0,0,0,115,101,108,102, - 117,3,0,0,0,116,105,100,40,0,0,0,0,40,0,0, - 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, - 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, - 114,97,112,62,117,7,0,0,0,97,99,113,117,105,114,101, - 201,0,0,0,115,32,0,0,0,0,6,12,1,10,1,3, - 1,3,1,10,1,30,1,9,1,15,1,4,1,12,1,19, - 1,18,1,24,2,13,1,20,2,117,19,0,0,0,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,2,0,0,0,10,0, - 0,0,67,0,0,0,115,165,0,0,0,116,0,0,106,1, - 0,131,0,0,125,1,0,124,0,0,106,2,0,143,138,0, - 1,124,0,0,106,3,0,124,1,0,107,3,0,114,52,0, - 116,4,0,100,1,0,131,1,0,130,1,0,110,0,0,124, - 0,0,106,5,0,100,2,0,107,4,0,115,73,0,116,6, - 0,130,1,0,124,0,0,4,106,5,0,100,3,0,56,2, - 95,5,0,124,0,0,106,5,0,100,2,0,107,2,0,114, - 155,0,100,0,0,124,0,0,95,3,0,124,0,0,106,8, - 0,114,155,0,124,0,0,4,106,8,0,100,3,0,56,2, - 95,8,0,124,0,0,106,9,0,106,10,0,131,0,0,1, - 113,155,0,110,0,0,87,100,0,0,81,88,100,0,0,83, - 40,4,0,0,0,78,117,31,0,0,0,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,105,0,0,0,0,105, - 1,0,0,0,40,11,0,0,0,117,7,0,0,0,95,116, - 104,114,101,97,100,117,9,0,0,0,103,101,116,95,105,100, - 101,110,116,117,4,0,0,0,108,111,99,107,117,5,0,0, - 0,111,119,110,101,114,117,12,0,0,0,82,117,110,116,105, - 109,101,69,114,114,111,114,117,5,0,0,0,99,111,117,110, - 116,117,14,0,0,0,65,115,115,101,114,116,105,111,110,69, - 114,114,111,114,117,4,0,0,0,78,111,110,101,117,7,0, - 0,0,119,97,105,116,101,114,115,117,6,0,0,0,119,97, - 107,101,117,112,117,7,0,0,0,114,101,108,101,97,115,101, - 40,2,0,0,0,117,4,0,0,0,115,101,108,102,117,3, - 0,0,0,116,105,100,40,0,0,0,0,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,7,0,0,0,114,101,108,101,97,115,101,226,0, - 0,0,115,22,0,0,0,0,1,12,1,10,1,15,1,15, - 1,21,1,15,1,15,1,9,1,9,1,15,1,117,19,0, - 0,0,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,1,0, - 0,0,4,0,0,0,67,0,0,0,115,23,0,0,0,100, - 1,0,124,0,0,106,0,0,116,1,0,124,0,0,131,1, - 0,102,2,0,22,83,40,2,0,0,0,78,117,21,0,0, - 0,95,77,111,100,117,108,101,76,111,99,107,40,37,114,41, - 32,97,116,32,37,100,40,2,0,0,0,117,4,0,0,0, - 110,97,109,101,117,2,0,0,0,105,100,40,1,0,0,0, - 117,4,0,0,0,115,101,108,102,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,8,0,0,0,95,95,114,101,112,114, - 95,95,239,0,0,0,115,2,0,0,0,0,1,117,20,0, + 0,83,40,3,0,0,0,78,70,84,40,5,0,0,0,114, + 68,0,0,0,244,9,0,0,0,103,101,116,95,105,100,101, + 110,116,114,72,0,0,0,244,12,0,0,0,95,98,108,111, + 99,107,105,110,103,95,111,110,244,3,0,0,0,103,101,116, + 40,4,0,0,0,114,75,0,0,0,244,2,0,0,0,109, + 101,244,3,0,0,0,116,105,100,114,69,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,244,12,0, + 0,0,104,97,115,95,100,101,97,100,108,111,99,107,150,0, + 0,0,115,18,0,0,0,0,2,12,1,9,1,3,1,15, + 1,12,1,4,1,9,1,12,1,117,24,0,0,0,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,2, + 0,0,0,17,0,0,0,67,0,0,0,115,214,0,0,0, + 116,0,0,106,1,0,131,0,0,125,1,0,124,0,0,116, + 2,0,124,1,0,60,122,177,0,120,170,0,124,0,0,106, + 3,0,143,130,0,1,124,0,0,106,4,0,100,1,0,107, + 2,0,115,68,0,124,0,0,106,5,0,124,1,0,107,2, + 0,114,96,0,124,1,0,124,0,0,95,5,0,124,0,0, + 4,106,4,0,100,2,0,55,2,95,4,0,100,3,0,83, + 124,0,0,106,6,0,131,0,0,114,127,0,116,7,0,100, + 4,0,124,0,0,22,131,1,0,130,1,0,110,0,0,124, + 0,0,106,8,0,106,9,0,100,5,0,131,1,0,114,163, + 0,124,0,0,4,106,10,0,100,2,0,55,2,95,10,0, + 110,0,0,87,100,6,0,81,88,124,0,0,106,8,0,106, + 9,0,131,0,0,1,124,0,0,106,8,0,106,11,0,131, + 0,0,1,113,28,0,87,100,6,0,116,2,0,124,1,0, + 61,88,100,6,0,83,40,7,0,0,0,117,185,0,0,0, + 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,114,67,0,0,0,114,29, + 0,0,0,84,117,23,0,0,0,100,101,97,100,108,111,99, + 107,32,100,101,116,101,99,116,101,100,32,98,121,32,37,114, + 70,78,40,12,0,0,0,114,68,0,0,0,114,77,0,0, + 0,114,78,0,0,0,114,69,0,0,0,114,73,0,0,0, + 114,72,0,0,0,114,82,0,0,0,114,65,0,0,0,114, + 70,0,0,0,244,7,0,0,0,97,99,113,117,105,114,101, + 114,74,0,0,0,244,7,0,0,0,114,101,108,101,97,115, + 101,40,2,0,0,0,114,75,0,0,0,114,81,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 83,0,0,0,162,0,0,0,115,32,0,0,0,0,6,12, + 1,10,1,3,1,3,1,10,1,30,1,9,1,15,1,4, + 1,12,1,19,1,18,1,24,2,13,1,20,2,117,19,0, + 0,0,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,2,0, + 0,0,10,0,0,0,67,0,0,0,115,165,0,0,0,116, + 0,0,106,1,0,131,0,0,125,1,0,124,0,0,106,2, + 0,143,138,0,1,124,0,0,106,3,0,124,1,0,107,3, + 0,114,52,0,116,4,0,100,1,0,131,1,0,130,1,0, + 110,0,0,124,0,0,106,5,0,100,2,0,107,4,0,115, + 73,0,116,6,0,130,1,0,124,0,0,4,106,5,0,100, + 3,0,56,2,95,5,0,124,0,0,106,5,0,100,2,0, + 107,2,0,114,155,0,100,0,0,124,0,0,95,3,0,124, + 0,0,106,7,0,114,155,0,124,0,0,4,106,7,0,100, + 3,0,56,2,95,7,0,124,0,0,106,8,0,106,9,0, + 131,0,0,1,113,155,0,110,0,0,87,100,0,0,81,88, + 100,0,0,83,40,4,0,0,0,78,117,31,0,0,0,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,67, + 0,0,0,114,29,0,0,0,40,10,0,0,0,114,68,0, + 0,0,114,77,0,0,0,114,69,0,0,0,114,72,0,0, + 0,244,12,0,0,0,82,117,110,116,105,109,101,69,114,114, + 111,114,114,73,0,0,0,244,14,0,0,0,65,115,115,101, + 114,116,105,111,110,69,114,114,111,114,114,74,0,0,0,114, + 70,0,0,0,114,84,0,0,0,40,2,0,0,0,114,75, + 0,0,0,114,81,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,84,0,0,0,187,0,0,0, + 115,22,0,0,0,0,1,12,1,10,1,15,1,15,1,21, + 1,15,1,15,1,9,1,9,1,15,1,117,19,0,0,0, + 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,1,0,0,0, + 4,0,0,0,67,0,0,0,115,25,0,0,0,100,1,0, + 106,0,0,124,0,0,106,1,0,116,2,0,124,0,0,131, + 1,0,131,2,0,83,40,2,0,0,0,78,117,23,0,0, + 0,95,77,111,100,117,108,101,76,111,99,107,40,123,33,114, + 125,41,32,97,116,32,123,125,40,3,0,0,0,114,46,0, + 0,0,114,71,0,0,0,114,47,0,0,0,40,1,0,0, + 0,114,75,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,244,8,0,0,0,95,95,114,101,112,114, + 95,95,200,0,0,0,115,2,0,0,0,0,1,117,20,0, 0,0,95,77,111,100,117,108,101,76,111,99,107,46,95,95, - 114,101,112,114,95,95,78,40,9,0,0,0,117,8,0,0, - 0,95,95,110,97,109,101,95,95,117,10,0,0,0,95,95, - 109,111,100,117,108,101,95,95,117,12,0,0,0,95,95,113, - 117,97,108,110,97,109,101,95,95,117,7,0,0,0,95,95, - 100,111,99,95,95,117,8,0,0,0,95,95,105,110,105,116, - 95,95,117,12,0,0,0,104,97,115,95,100,101,97,100,108, - 111,99,107,117,7,0,0,0,97,99,113,117,105,114,101,117, - 7,0,0,0,114,101,108,101,97,115,101,117,8,0,0,0, - 95,95,114,101,112,114,95,95,40,1,0,0,0,117,10,0, - 0,0,95,95,108,111,99,97,108,115,95,95,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,11,0,0,0,95,77,111, - 100,117,108,101,76,111,99,107,175,0,0,0,115,12,0,0, - 0,16,4,6,2,12,8,12,12,12,25,12,13,117,11,0, - 0,0,95,77,111,100,117,108,101,76,111,99,107,99,1,0, - 0,0,0,0,0,0,1,0,0,0,2,0,0,0,66,0, - 0,0,115,74,0,0,0,124,0,0,69,101,0,0,90,1, - 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0, - 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132, - 0,0,90,5,0,100,6,0,100,7,0,132,0,0,90,6, - 0,100,8,0,100,9,0,132,0,0,90,7,0,100,10,0, - 83,40,11,0,0,0,117,16,0,0,0,95,68,117,109,109, - 121,77,111,100,117,108,101,76,111,99,107,117,86,0,0,0, - 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,2, - 0,0,0,2,0,0,0,67,0,0,0,115,22,0,0,0, - 124,1,0,124,0,0,95,0,0,100,1,0,124,0,0,95, - 1,0,100,0,0,83,40,2,0,0,0,78,105,0,0,0, - 0,40,2,0,0,0,117,4,0,0,0,110,97,109,101,117, - 5,0,0,0,99,111,117,110,116,40,2,0,0,0,117,4, - 0,0,0,115,101,108,102,117,4,0,0,0,110,97,109,101, - 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,8,0,0, - 0,95,95,105,110,105,116,95,95,247,0,0,0,115,4,0, - 0,0,0,1,9,1,117,25,0,0,0,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,1,0,0, - 0,3,0,0,0,67,0,0,0,115,19,0,0,0,124,0, - 0,4,106,0,0,100,1,0,55,2,95,0,0,100,2,0, - 83,40,3,0,0,0,78,105,1,0,0,0,84,40,2,0, - 0,0,117,5,0,0,0,99,111,117,110,116,117,4,0,0, - 0,84,114,117,101,40,1,0,0,0,117,4,0,0,0,115, - 101,108,102,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 7,0,0,0,97,99,113,117,105,114,101,251,0,0,0,115, - 4,0,0,0,0,1,15,1,117,24,0,0,0,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,1,0, - 0,0,3,0,0,0,67,0,0,0,115,49,0,0,0,124, - 0,0,106,0,0,100,1,0,107,2,0,114,30,0,116,1, - 0,100,2,0,131,1,0,130,1,0,110,0,0,124,0,0, - 4,106,0,0,100,3,0,56,2,95,0,0,100,0,0,83, - 40,4,0,0,0,78,105,0,0,0,0,117,31,0,0,0, - 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,105, - 1,0,0,0,40,2,0,0,0,117,5,0,0,0,99,111, - 117,110,116,117,12,0,0,0,82,117,110,116,105,109,101,69, - 114,114,111,114,40,1,0,0,0,117,4,0,0,0,115,101, - 108,102,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,7, - 0,0,0,114,101,108,101,97,115,101,255,0,0,0,115,6, - 0,0,0,0,1,15,1,15,1,117,24,0,0,0,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,1, - 0,0,0,4,0,0,0,67,0,0,0,115,23,0,0,0, - 100,1,0,124,0,0,106,0,0,116,1,0,124,0,0,131, - 1,0,102,2,0,22,83,40,2,0,0,0,78,117,26,0, - 0,0,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,40,37,114,41,32,97,116,32,37,100,40,2,0,0, - 0,117,4,0,0,0,110,97,109,101,117,2,0,0,0,105, - 100,40,1,0,0,0,117,4,0,0,0,115,101,108,102,40, - 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, - 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, - 95,98,111,111,116,115,116,114,97,112,62,117,8,0,0,0, - 95,95,114,101,112,114,95,95,4,1,0,0,115,2,0,0, + 114,101,112,114,95,95,78,40,9,0,0,0,114,56,0,0, + 0,114,55,0,0,0,114,57,0,0,0,114,58,0,0,0, + 114,76,0,0,0,114,82,0,0,0,114,83,0,0,0,114, + 84,0,0,0,114,87,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,66,0, + 0,0,136,0,0,0,115,12,0,0,0,12,4,6,2,12, + 8,12,12,12,25,12,13,114,66,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,70,0,0,0,101,0,0,90,1,0,100,0,0,90, + 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0, + 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0, + 100,6,0,100,7,0,132,0,0,90,6,0,100,8,0,100, + 9,0,132,0,0,90,7,0,100,10,0,83,40,11,0,0, + 0,244,16,0,0,0,95,68,117,109,109,121,77,111,100,117, + 108,101,76,111,99,107,117,86,0,0,0,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,2,0,0,0,2,0, + 0,0,67,0,0,0,115,22,0,0,0,124,1,0,124,0, + 0,95,0,0,100,1,0,124,0,0,95,1,0,100,0,0, + 83,40,2,0,0,0,78,114,67,0,0,0,40,2,0,0, + 0,114,71,0,0,0,114,73,0,0,0,40,2,0,0,0, + 114,75,0,0,0,114,71,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,76,0,0,0,208,0, + 0,0,115,4,0,0,0,0,1,9,1,117,25,0,0,0, + 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,1,0,0,0,3,0,0,0,67,0,0,0,115,19, + 0,0,0,124,0,0,4,106,0,0,100,1,0,55,2,95, + 0,0,100,2,0,83,40,3,0,0,0,78,114,29,0,0, + 0,84,40,1,0,0,0,114,73,0,0,0,40,1,0,0, + 0,114,75,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,83,0,0,0,212,0,0,0,115,4, + 0,0,0,0,1,15,1,117,24,0,0,0,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,1,0,0, + 0,3,0,0,0,67,0,0,0,115,49,0,0,0,124,0, + 0,106,0,0,100,1,0,107,2,0,114,30,0,116,1,0, + 100,2,0,131,1,0,130,1,0,110,0,0,124,0,0,4, + 106,0,0,100,3,0,56,2,95,0,0,100,0,0,83,40, + 4,0,0,0,78,114,67,0,0,0,117,31,0,0,0,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,29, + 0,0,0,40,2,0,0,0,114,73,0,0,0,114,85,0, + 0,0,40,1,0,0,0,114,75,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,84,0,0,0, + 216,0,0,0,115,6,0,0,0,0,1,15,1,15,1,117, + 24,0,0,0,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,1,0,0,0,4,0,0,0,67,0,0, + 0,115,25,0,0,0,100,1,0,106,0,0,124,0,0,106, + 1,0,116,2,0,124,0,0,131,1,0,131,2,0,83,40, + 2,0,0,0,78,117,28,0,0,0,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,40,3,0,0,0,114,46,0,0,0, + 114,71,0,0,0,114,47,0,0,0,40,1,0,0,0,114, + 75,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,87,0,0,0,221,0,0,0,115,2,0,0, 0,0,1,117,25,0,0,0,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,40,8,0,0,0,117,8,0,0,0,95,95,110,97, - 109,101,95,95,117,10,0,0,0,95,95,109,111,100,117,108, - 101,95,95,117,12,0,0,0,95,95,113,117,97,108,110,97, - 109,101,95,95,117,7,0,0,0,95,95,100,111,99,95,95, - 117,8,0,0,0,95,95,105,110,105,116,95,95,117,7,0, - 0,0,97,99,113,117,105,114,101,117,7,0,0,0,114,101, - 108,101,97,115,101,117,8,0,0,0,95,95,114,101,112,114, - 95,95,40,1,0,0,0,117,10,0,0,0,95,95,108,111, - 99,97,108,115,95,95,40,0,0,0,0,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,16,0,0,0,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,243,0,0,0,115,10,0,0,0, - 16,2,6,2,12,4,12,4,12,5,117,16,0,0,0,95, - 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,99, - 1,0,0,0,0,0,0,0,3,0,0,0,11,0,0,0, - 3,0,0,0,115,142,0,0,0,100,3,0,125,1,0,121, - 17,0,116,1,0,136,0,0,25,131,0,0,125,1,0,87, - 110,18,0,4,116,2,0,107,10,0,114,43,0,1,1,1, - 89,110,1,0,88,124,1,0,100,3,0,107,8,0,114,138, - 0,116,3,0,100,3,0,107,8,0,114,83,0,116,4,0, - 136,0,0,131,1,0,125,1,0,110,12,0,116,5,0,136, - 0,0,131,1,0,125,1,0,135,0,0,102,1,0,100,1, - 0,100,2,0,134,0,0,125,2,0,116,6,0,106,7,0, - 124,1,0,124,2,0,131,2,0,116,1,0,136,0,0,60, - 110,0,0,124,1,0,83,40,4,0,0,0,117,109,0,0, - 0,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,83,104,111, - 117,108,100,32,111,110,108,121,32,98,101,32,99,97,108,108, - 101,100,32,119,105,116,104,32,116,104,101,32,105,109,112,111, - 114,116,32,108,111,99,107,32,116,97,107,101,110,46,99,1, - 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,19, - 0,0,0,115,11,0,0,0,116,0,0,136,0,0,61,100, - 0,0,83,40,1,0,0,0,78,40,1,0,0,0,117,13, - 0,0,0,95,109,111,100,117,108,101,95,108,111,99,107,115, - 40,1,0,0,0,117,1,0,0,0,95,40,1,0,0,0, - 117,4,0,0,0,110,97,109,101,40,0,0,0,0,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,2,0,0,0,99,98,24,1,0,0,115,2,0,0,0, + 95,78,40,8,0,0,0,114,56,0,0,0,114,55,0,0, + 0,114,57,0,0,0,114,58,0,0,0,114,76,0,0,0, + 114,83,0,0,0,114,84,0,0,0,114,87,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,88,0,0,0,204,0,0,0,115,10,0,0, + 0,12,2,6,2,12,4,12,4,12,5,114,88,0,0,0, + 99,1,0,0,0,0,0,0,0,3,0,0,0,11,0,0, + 0,3,0,0,0,115,142,0,0,0,100,1,0,125,1,0, + 121,17,0,116,0,0,136,0,0,25,131,0,0,125,1,0, + 87,110,18,0,4,116,1,0,107,10,0,114,43,0,1,1, + 1,89,110,1,0,88,124,1,0,100,1,0,107,8,0,114, + 138,0,116,2,0,100,1,0,107,8,0,114,83,0,116,3, + 0,136,0,0,131,1,0,125,1,0,110,12,0,116,4,0, + 136,0,0,131,1,0,125,1,0,135,0,0,102,1,0,100, + 2,0,100,3,0,134,0,0,125,2,0,116,5,0,106,6, + 0,124,1,0,124,2,0,131,2,0,116,0,0,136,0,0, + 60,110,0,0,124,1,0,83,40,4,0,0,0,117,109,0, + 0,0,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,83,104, + 111,117,108,100,32,111,110,108,121,32,98,101,32,99,97,108, + 108,101,100,32,119,105,116,104,32,116,104,101,32,105,109,112, + 111,114,116,32,108,111,99,107,32,116,97,107,101,110,46,78, + 99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0, + 0,19,0,0,0,115,11,0,0,0,116,0,0,136,0,0, + 61,100,0,0,83,40,1,0,0,0,78,40,1,0,0,0, + 244,13,0,0,0,95,109,111,100,117,108,101,95,108,111,99, + 107,115,40,1,0,0,0,114,36,0,0,0,40,1,0,0, + 0,114,71,0,0,0,114,4,0,0,0,114,5,0,0,0, + 244,2,0,0,0,99,98,241,0,0,0,115,2,0,0,0, 0,1,117,28,0,0,0,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,78,40,8,0,0,0,117,4,0,0,0,78,111, - 110,101,117,13,0,0,0,95,109,111,100,117,108,101,95,108, - 111,99,107,115,117,8,0,0,0,75,101,121,69,114,114,111, - 114,117,7,0,0,0,95,116,104,114,101,97,100,117,16,0, - 0,0,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,117,11,0,0,0,95,77,111,100,117,108,101,76,111, - 99,107,117,8,0,0,0,95,119,101,97,107,114,101,102,117, - 3,0,0,0,114,101,102,40,3,0,0,0,117,4,0,0, - 0,110,97,109,101,117,4,0,0,0,108,111,99,107,117,2, - 0,0,0,99,98,40,0,0,0,0,40,1,0,0,0,117, - 4,0,0,0,110,97,109,101,117,29,0,0,0,60,102,114, - 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, - 98,111,111,116,115,116,114,97,112,62,117,16,0,0,0,95, - 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,10, - 1,0,0,115,24,0,0,0,0,4,6,1,3,1,17,1, - 13,1,5,1,12,1,12,1,15,2,12,1,18,2,25,1, - 117,16,0,0,0,95,103,101,116,95,109,111,100,117,108,101, - 95,108,111,99,107,99,1,0,0,0,0,0,0,0,2,0, - 0,0,11,0,0,0,67,0,0,0,115,71,0,0,0,116, - 0,0,124,0,0,131,1,0,125,1,0,116,1,0,106,2, - 0,131,0,0,1,121,14,0,124,1,0,106,3,0,131,0, - 0,1,87,110,18,0,4,116,4,0,107,10,0,114,56,0, - 1,1,1,89,110,11,0,88,124,1,0,106,5,0,131,0, - 0,1,100,1,0,83,40,2,0,0,0,117,21,1,0,0, - 82,101,108,101,97,115,101,32,116,104,101,32,103,108,111,98, - 97,108,32,105,109,112,111,114,116,32,108,111,99,107,44,32, - 97,110,100,32,97,99,113,117,105,114,101,115,32,116,104,101, - 110,32,114,101,108,101,97,115,101,32,116,104,101,10,32,32, - 32,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,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,10, - 32,32,32,32,83,104,111,117,108,100,32,111,110,108,121,32, - 98,101,32,99,97,108,108,101,100,32,119,105,116,104,32,116, - 104,101,32,105,109,112,111,114,116,32,108,111,99,107,32,116, - 97,107,101,110,46,78,40,6,0,0,0,117,16,0,0,0, - 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, - 117,4,0,0,0,95,105,109,112,117,12,0,0,0,114,101, - 108,101,97,115,101,95,108,111,99,107,117,7,0,0,0,97, - 99,113,117,105,114,101,117,14,0,0,0,95,68,101,97,100, - 108,111,99,107,69,114,114,111,114,117,7,0,0,0,114,101, - 108,101,97,115,101,40,2,0,0,0,117,4,0,0,0,110, - 97,109,101,117,4,0,0,0,108,111,99,107,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,19,0,0,0,95,108,111, - 99,107,95,117,110,108,111,99,107,95,109,111,100,117,108,101, - 29,1,0,0,115,14,0,0,0,0,7,12,1,10,1,3, - 1,14,1,13,3,5,2,117,19,0,0,0,95,108,111,99, - 107,95,117,110,108,111,99,107,95,109,111,100,117,108,101,99, - 1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 79,0,0,0,115,13,0,0,0,124,0,0,124,1,0,124, - 2,0,142,0,0,83,40,1,0,0,0,117,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,40,0, - 0,0,0,40,3,0,0,0,117,1,0,0,0,102,117,4, - 0,0,0,97,114,103,115,117,4,0,0,0,107,119,100,115, - 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,25,0,0, - 0,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,49,1,0,0,115,2, - 0,0,0,0,8,117,25,0,0,0,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,105,158,12,0,0,117,1,0,0,0,13,105,16, - 0,0,0,117,1,0,0,0,10,105,24,0,0,0,99,1, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,99, - 0,0,0,115,29,0,0,0,124,0,0,93,19,0,125,1, - 0,116,0,0,124,1,0,63,100,0,0,64,86,1,113,3, - 0,100,1,0,83,40,2,0,0,0,105,255,0,0,0,78, - 40,1,0,0,0,117,17,0,0,0,95,82,65,87,95,77, - 65,71,73,67,95,78,85,77,66,69,82,40,2,0,0,0, - 117,2,0,0,0,46,48,117,1,0,0,0,110,40,0,0, - 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, - 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, - 111,111,116,115,116,114,97,112,62,117,9,0,0,0,60,103, - 101,110,101,120,112,114,62,150,1,0,0,115,2,0,0,0, - 6,0,117,9,0,0,0,60,103,101,110,101,120,112,114,62, - 105,0,0,0,0,105,25,0,0,0,105,8,0,0,0,117, - 11,0,0,0,95,95,112,121,99,97,99,104,101,95,95,117, - 3,0,0,0,46,112,121,117,4,0,0,0,46,112,121,99, - 117,4,0,0,0,46,112,121,111,99,2,0,0,0,0,0, - 0,0,11,0,0,0,6,0,0,0,67,0,0,0,115,180, - 0,0,0,124,1,0,100,5,0,107,8,0,114,25,0,116, - 1,0,106,2,0,106,3,0,12,110,3,0,124,1,0,125, - 2,0,124,2,0,114,46,0,116,4,0,125,3,0,110,6, - 0,116,5,0,125,3,0,116,6,0,124,0,0,131,1,0, - 92,2,0,125,4,0,125,5,0,124,5,0,106,7,0,100, - 1,0,131,1,0,92,3,0,125,6,0,125,7,0,125,8, - 0,116,1,0,106,8,0,106,9,0,125,9,0,124,9,0, - 100,5,0,107,8,0,114,133,0,116,10,0,100,2,0,131, - 1,0,130,1,0,110,0,0,100,3,0,106,11,0,124,6, - 0,124,7,0,124,9,0,124,3,0,100,4,0,25,103,4, - 0,131,1,0,125,10,0,116,12,0,124,4,0,116,13,0, - 124,10,0,131,3,0,83,40,6,0,0,0,117,244,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,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,47,46,112,121,111,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,47,46,112,121, - 111,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,32,32,84,104,101,32,101,120,116,101,110,115,105, - 111,110,10,32,32,32,32,119,105,108,108,32,98,101,32,46, - 112,121,99,32,117,110,108,101,115,115,32,115,121,115,46,102, - 108,97,103,115,46,111,112,116,105,109,105,122,101,32,105,115, - 32,110,111,110,45,122,101,114,111,44,32,116,104,101,110,32, - 105,116,32,119,105,108,108,32,98,101,32,46,112,121,111,46, - 10,10,32,32,32,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,32,116,104,101,110,32,105,116,32,109,117,115, - 116,32,98,101,32,97,32,98,111,111,108,101,97,110,32,97, - 110,100,32,105,115,32,117,115,101,100,32,105,110,10,32,32, - 32,32,112,108,97,99,101,32,111,102,32,115,121,115,46,102, - 108,97,103,115,46,111,112,116,105,109,105,122,101,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,117,1,0,0,0,46,117,36,0,0,0, - 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,117,0,0,0,0,105,0,0,0,0,78,40, - 14,0,0,0,117,4,0,0,0,78,111,110,101,117,3,0, - 0,0,115,121,115,117,5,0,0,0,102,108,97,103,115,117, - 8,0,0,0,111,112,116,105,109,105,122,101,117,23,0,0, - 0,68,69,66,85,71,95,66,89,84,69,67,79,68,69,95, - 83,85,70,70,73,88,69,83,117,27,0,0,0,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,117,11,0,0,0,95,112,97, - 116,104,95,115,112,108,105,116,117,9,0,0,0,112,97,114, - 116,105,116,105,111,110,117,14,0,0,0,105,109,112,108,101, - 109,101,110,116,97,116,105,111,110,117,9,0,0,0,99,97, - 99,104,101,95,116,97,103,117,19,0,0,0,78,111,116,73, - 109,112,108,101,109,101,110,116,101,100,69,114,114,111,114,117, - 4,0,0,0,106,111,105,110,117,10,0,0,0,95,112,97, - 116,104,95,106,111,105,110,117,8,0,0,0,95,80,89,67, - 65,67,72,69,40,11,0,0,0,117,4,0,0,0,112,97, - 116,104,117,14,0,0,0,100,101,98,117,103,95,111,118,101, - 114,114,105,100,101,117,5,0,0,0,100,101,98,117,103,117, - 8,0,0,0,115,117,102,102,105,120,101,115,117,4,0,0, - 0,104,101,97,100,117,4,0,0,0,116,97,105,108,117,13, + 46,99,98,40,7,0,0,0,114,89,0,0,0,244,8,0, + 0,0,75,101,121,69,114,114,111,114,114,68,0,0,0,114, + 88,0,0,0,114,66,0,0,0,244,8,0,0,0,95,119, + 101,97,107,114,101,102,116,3,0,0,0,114,101,102,40,3, + 0,0,0,114,71,0,0,0,114,69,0,0,0,114,90,0, + 0,0,114,4,0,0,0,40,1,0,0,0,114,71,0,0, + 0,114,5,0,0,0,244,16,0,0,0,95,103,101,116,95, + 109,111,100,117,108,101,95,108,111,99,107,227,0,0,0,115, + 24,0,0,0,0,4,6,1,3,1,17,1,13,1,5,1, + 12,1,12,1,15,2,12,1,18,2,25,1,114,93,0,0, + 0,99,1,0,0,0,0,0,0,0,2,0,0,0,11,0, + 0,0,67,0,0,0,115,71,0,0,0,116,0,0,124,0, + 0,131,1,0,125,1,0,116,1,0,106,2,0,131,0,0, + 1,121,14,0,124,1,0,106,3,0,131,0,0,1,87,110, + 18,0,4,116,4,0,107,10,0,114,56,0,1,1,1,89, + 110,11,0,88,124,1,0,106,5,0,131,0,0,1,100,1, + 0,83,40,2,0,0,0,117,21,1,0,0,82,101,108,101, + 97,115,101,32,116,104,101,32,103,108,111,98,97,108,32,105, + 109,112,111,114,116,32,108,111,99,107,44,32,97,110,100,32, + 97,99,113,117,105,114,101,115,32,116,104,101,110,32,114,101, + 108,101,97,115,101,32,116,104,101,10,32,32,32,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,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,10,32,32,32,32, + 83,104,111,117,108,100,32,111,110,108,121,32,98,101,32,99, + 97,108,108,101,100,32,119,105,116,104,32,116,104,101,32,105, + 109,112,111,114,116,32,108,111,99,107,32,116,97,107,101,110, + 46,78,40,6,0,0,0,114,93,0,0,0,244,4,0,0, + 0,95,105,109,112,244,12,0,0,0,114,101,108,101,97,115, + 101,95,108,111,99,107,114,83,0,0,0,114,65,0,0,0, + 114,84,0,0,0,40,2,0,0,0,114,71,0,0,0,114, + 69,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,244,19,0,0,0,95,108,111,99,107,95,117,110, + 108,111,99,107,95,109,111,100,117,108,101,246,0,0,0,115, + 14,0,0,0,0,7,12,1,10,1,3,1,14,1,13,3, + 5,2,114,96,0,0,0,99,1,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,79,0,0,0,115,13,0,0, + 0,124,0,0,124,1,0,124,2,0,142,0,0,83,40,1, + 0,0,0,117,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,114,4,0,0,0,40,3,0,0,0, + 244,1,0,0,0,102,244,4,0,0,0,97,114,103,115,116, + 4,0,0,0,107,119,100,115,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,244,25,0,0,0,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,10,1,0,0,115,2,0,0,0,0,8, + 114,99,0,0,0,105,208,12,0,0,233,2,0,0,0,114, + 13,0,0,0,115,2,0,0,0,13,10,116,11,0,0,0, + 95,95,112,121,99,97,99,104,101,95,95,117,3,0,0,0, + 46,112,121,117,4,0,0,0,46,112,121,99,117,4,0,0, + 0,46,112,121,111,78,99,2,0,0,0,0,0,0,0,11, + 0,0,0,6,0,0,0,67,0,0,0,115,180,0,0,0, + 124,1,0,100,1,0,107,8,0,114,25,0,116,0,0,106, + 1,0,106,2,0,12,110,3,0,124,1,0,125,2,0,124, + 2,0,114,46,0,116,3,0,125,3,0,110,6,0,116,4, + 0,125,3,0,116,5,0,124,0,0,131,1,0,92,2,0, + 125,4,0,125,5,0,124,5,0,106,6,0,100,2,0,131, + 1,0,92,3,0,125,6,0,125,7,0,125,8,0,116,0, + 0,106,7,0,106,8,0,125,9,0,124,9,0,100,1,0, + 107,8,0,114,133,0,116,9,0,100,3,0,131,1,0,130, + 1,0,110,0,0,100,4,0,106,10,0,124,6,0,124,7, + 0,124,9,0,124,3,0,100,5,0,25,103,4,0,131,1, + 0,125,10,0,116,11,0,124,4,0,116,12,0,124,10,0, + 131,3,0,83,40,6,0,0,0,117,244,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,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,47,46,112,121,111,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,47,46,112,121,111,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, + 32,32,84,104,101,32,101,120,116,101,110,115,105,111,110,10, + 32,32,32,32,119,105,108,108,32,98,101,32,46,112,121,99, + 32,117,110,108,101,115,115,32,115,121,115,46,102,108,97,103, + 115,46,111,112,116,105,109,105,122,101,32,105,115,32,110,111, + 110,45,122,101,114,111,44,32,116,104,101,110,32,105,116,32, + 119,105,108,108,32,98,101,32,46,112,121,111,46,10,10,32, + 32,32,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,32,116,104,101,110,32,105,116,32,109,117,115,116,32,98, + 101,32,97,32,98,111,111,108,101,97,110,32,97,110,100,32, + 105,115,32,117,115,101,100,32,105,110,10,32,32,32,32,112, + 108,97,99,101,32,111,102,32,115,121,115,46,102,108,97,103, + 115,46,111,112,116,105,109,105,122,101,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,244,1,0,0,0,46,117,36,0,0,0,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,30,0,0,0,114,67,0,0,0,40,13,0,0, + 0,114,7,0,0,0,244,5,0,0,0,102,108,97,103,115, + 244,8,0,0,0,111,112,116,105,109,105,122,101,244,23,0, + 0,0,68,69,66,85,71,95,66,89,84,69,67,79,68,69, + 95,83,85,70,70,73,88,69,83,244,27,0,0,0,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,38,0,0,0,244,9, + 0,0,0,112,97,114,116,105,116,105,111,110,244,14,0,0, + 0,105,109,112,108,101,109,101,110,116,97,116,105,111,110,244, + 9,0,0,0,99,97,99,104,101,95,116,97,103,244,19,0, + 0,0,78,111,116,73,109,112,108,101,109,101,110,116,101,100, + 69,114,114,111,114,114,26,0,0,0,114,28,0,0,0,244, + 8,0,0,0,95,80,89,67,65,67,72,69,40,11,0,0, + 0,114,35,0,0,0,116,14,0,0,0,100,101,98,117,103, + 95,111,118,101,114,114,105,100,101,244,5,0,0,0,100,101, + 98,117,103,244,8,0,0,0,115,117,102,102,105,120,101,115, + 244,4,0,0,0,104,101,97,100,114,37,0,0,0,244,13, 0,0,0,98,97,115,101,95,102,105,108,101,110,97,109,101, - 117,3,0,0,0,115,101,112,117,1,0,0,0,95,117,3, - 0,0,0,116,97,103,117,8,0,0,0,102,105,108,101,110, - 97,109,101,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 17,0,0,0,99,97,99,104,101,95,102,114,111,109,95,115, - 111,117,114,99,101,159,1,0,0,115,22,0,0,0,0,13, - 31,1,6,1,9,2,6,1,18,1,24,1,12,1,12,1, - 15,1,31,1,117,17,0,0,0,99,97,99,104,101,95,102, - 114,111,109,95,115,111,117,114,99,101,99,1,0,0,0,0, - 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115, - 193,0,0,0,116,0,0,106,1,0,106,2,0,100,7,0, - 107,8,0,114,33,0,116,4,0,100,1,0,131,1,0,130, - 1,0,110,0,0,116,5,0,124,0,0,131,1,0,92,2, - 0,125,1,0,125,2,0,116,5,0,124,1,0,131,1,0, - 92,2,0,125,1,0,125,3,0,124,3,0,116,6,0,107, - 3,0,114,108,0,116,7,0,100,2,0,106,8,0,116,6, - 0,124,0,0,131,2,0,131,1,0,130,1,0,110,0,0, - 124,2,0,106,9,0,100,3,0,131,1,0,100,4,0,107, - 3,0,114,153,0,116,7,0,100,5,0,106,8,0,124,2, - 0,131,1,0,131,1,0,130,1,0,110,0,0,124,2,0, - 106,10,0,100,3,0,131,1,0,100,6,0,25,125,4,0, - 116,11,0,124,1,0,124,4,0,116,12,0,100,6,0,25, - 23,131,2,0,83,40,8,0,0,0,117,121,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,47,46,112,121,111,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,47,46,112,121,111,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,47,46,112,121,111,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,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,117,36,0,0,0,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,117,37,0,0,0,123,125,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,123,33,114,125,117,1,0,0,0, - 46,105,2,0,0,0,117,28,0,0,0,101,120,112,101,99, - 116,101,100,32,111,110,108,121,32,50,32,100,111,116,115,32, - 105,110,32,123,33,114,125,105,0,0,0,0,78,40,13,0, - 0,0,117,3,0,0,0,115,121,115,117,14,0,0,0,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,117,9,0, - 0,0,99,97,99,104,101,95,116,97,103,117,4,0,0,0, - 78,111,110,101,117,19,0,0,0,78,111,116,73,109,112,108, - 101,109,101,110,116,101,100,69,114,114,111,114,117,11,0,0, - 0,95,112,97,116,104,95,115,112,108,105,116,117,8,0,0, - 0,95,80,89,67,65,67,72,69,117,10,0,0,0,86,97, - 108,117,101,69,114,114,111,114,117,6,0,0,0,102,111,114, - 109,97,116,117,5,0,0,0,99,111,117,110,116,117,9,0, - 0,0,112,97,114,116,105,116,105,111,110,117,10,0,0,0, - 95,112,97,116,104,95,106,111,105,110,117,15,0,0,0,83, - 79,85,82,67,69,95,83,85,70,70,73,88,69,83,40,5, - 0,0,0,117,4,0,0,0,112,97,116,104,117,4,0,0, - 0,104,101,97,100,117,16,0,0,0,112,121,99,97,99,104, - 101,95,102,105,108,101,110,97,109,101,117,7,0,0,0,112, - 121,99,97,99,104,101,117,13,0,0,0,98,97,115,101,95, - 102,105,108,101,110,97,109,101,40,0,0,0,0,40,0,0, - 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, - 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, - 114,97,112,62,117,17,0,0,0,115,111,117,114,99,101,95, - 102,114,111,109,95,99,97,99,104,101,186,1,0,0,115,24, - 0,0,0,0,9,18,1,15,1,18,1,18,1,12,1,9, - 1,18,1,21,1,9,1,15,1,19,1,117,17,0,0,0, + 244,3,0,0,0,115,101,112,114,36,0,0,0,116,3,0, + 0,0,116,97,103,244,8,0,0,0,102,105,108,101,110,97, + 109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,244,17,0,0,0,99,97,99,104,101,95,102,114,111,109, + 95,115,111,117,114,99,101,131,1,0,0,115,22,0,0,0, + 0,13,31,1,6,1,9,2,6,1,18,1,24,1,12,1, + 12,1,15,1,31,1,114,117,0,0,0,99,1,0,0,0, + 0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,0, + 115,193,0,0,0,116,0,0,106,1,0,106,2,0,100,1, + 0,107,8,0,114,33,0,116,3,0,100,2,0,131,1,0, + 130,1,0,110,0,0,116,4,0,124,0,0,131,1,0,92, + 2,0,125,1,0,125,2,0,116,4,0,124,1,0,131,1, + 0,92,2,0,125,1,0,125,3,0,124,3,0,116,5,0, + 107,3,0,114,108,0,116,6,0,100,3,0,106,7,0,116, + 5,0,124,0,0,131,2,0,131,1,0,130,1,0,110,0, + 0,124,2,0,106,8,0,100,4,0,131,1,0,100,5,0, + 107,3,0,114,153,0,116,6,0,100,6,0,106,7,0,124, + 2,0,131,1,0,131,1,0,130,1,0,110,0,0,124,2, + 0,106,9,0,100,4,0,131,1,0,100,7,0,25,125,4, + 0,116,10,0,124,1,0,124,4,0,116,11,0,100,7,0, + 25,23,131,2,0,83,40,8,0,0,0,117,121,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,47,46,112,121,111,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,47,46,112,121,111,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,47,46,112,121,111, + 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, + 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,117,36,0,0,0,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,117,37,0,0,0,123,125,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,123,33,114,125,114,101,0, + 0,0,114,100,0,0,0,117,28,0,0,0,101,120,112,101, + 99,116,101,100,32,111,110,108,121,32,50,32,100,111,116,115, + 32,105,110,32,123,33,114,125,114,67,0,0,0,40,12,0, + 0,0,114,7,0,0,0,114,107,0,0,0,114,108,0,0, + 0,114,109,0,0,0,114,38,0,0,0,114,110,0,0,0, + 244,10,0,0,0,86,97,108,117,101,69,114,114,111,114,114, + 46,0,0,0,114,73,0,0,0,114,106,0,0,0,114,28, + 0,0,0,244,15,0,0,0,83,79,85,82,67,69,95,83, + 85,70,70,73,88,69,83,40,5,0,0,0,114,35,0,0, + 0,114,113,0,0,0,116,16,0,0,0,112,121,99,97,99, + 104,101,95,102,105,108,101,110,97,109,101,116,7,0,0,0, + 112,121,99,97,99,104,101,114,114,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,244,17,0,0,0, 115,111,117,114,99,101,95,102,114,111,109,95,99,97,99,104, - 101,99,1,0,0,0,0,0,0,0,5,0,0,0,13,0, - 0,0,67,0,0,0,115,164,0,0,0,116,0,0,124,0, - 0,131,1,0,100,1,0,107,2,0,114,22,0,100,6,0, - 83,124,0,0,106,2,0,100,2,0,131,1,0,92,3,0, - 125,1,0,125,2,0,125,3,0,124,1,0,12,115,81,0, - 124,3,0,106,3,0,131,0,0,100,7,0,100,8,0,133, - 2,0,25,100,5,0,107,3,0,114,85,0,124,0,0,83, - 121,16,0,116,4,0,124,0,0,131,1,0,125,4,0,87, - 110,40,0,4,116,5,0,116,6,0,102,2,0,107,10,0, - 114,143,0,1,1,1,124,0,0,100,6,0,100,9,0,133, - 2,0,25,125,4,0,89,110,1,0,88,116,7,0,124,4, - 0,131,1,0,114,160,0,124,4,0,83,124,0,0,83,40, - 10,0,0,0,117,188,0,0,0,67,111,110,118,101,114,116, + 101,158,1,0,0,115,24,0,0,0,0,9,18,1,15,1, + 18,1,18,1,12,1,3,1,24,1,21,1,3,1,21,1, + 19,1,114,120,0,0,0,99,1,0,0,0,0,0,0,0, + 5,0,0,0,13,0,0,0,67,0,0,0,115,164,0,0, + 0,116,0,0,124,0,0,131,1,0,100,1,0,107,2,0, + 114,22,0,100,2,0,83,124,0,0,106,1,0,100,3,0, + 131,1,0,92,3,0,125,1,0,125,2,0,125,3,0,124, + 1,0,12,115,81,0,124,3,0,106,2,0,131,0,0,100, + 7,0,100,8,0,133,2,0,25,100,6,0,107,3,0,114, + 85,0,124,0,0,83,121,16,0,116,3,0,124,0,0,131, + 1,0,125,4,0,87,110,40,0,4,116,4,0,116,5,0, + 102,2,0,107,10,0,114,143,0,1,1,1,124,0,0,100, + 2,0,100,9,0,133,2,0,25,125,4,0,89,110,1,0, + 88,116,6,0,124,4,0,131,1,0,114,160,0,124,4,0, + 83,124,0,0,83,40,10,0,0,0,117,188,0,0,0,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,67,0,0,0, + 78,114,101,0,0,0,233,3,0,0,0,114,29,0,0,0, + 116,2,0,0,0,112,121,233,253,255,255,255,233,255,255,255, + 255,114,123,0,0,0,40,7,0,0,0,114,31,0,0,0, + 114,32,0,0,0,244,5,0,0,0,108,111,119,101,114,114, + 120,0,0,0,114,109,0,0,0,114,118,0,0,0,114,44, + 0,0,0,40,5,0,0,0,244,13,0,0,0,98,121,116, + 101,99,111,100,101,95,112,97,116,104,116,4,0,0,0,114, + 101,115,116,114,36,0,0,0,116,9,0,0,0,101,120,116, + 101,110,115,105,111,110,244,11,0,0,0,115,111,117,114,99, + 101,95,112,97,116,104,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,244,15,0,0,0,95,103,101,116,95,115, + 111,117,114,99,101,102,105,108,101,181,1,0,0,115,20,0, + 0,0,0,7,18,1,4,1,24,1,35,1,4,1,3,1, + 16,1,19,1,21,1,114,127,0,0,0,99,1,0,0,0, + 0,0,0,0,2,0,0,0,11,0,0,0,67,0,0,0, + 115,63,0,0,0,121,22,0,116,0,0,106,1,0,124,0, + 0,131,1,0,106,2,0,125,1,0,87,110,24,0,4,116, + 3,0,107,10,0,114,48,0,1,1,1,100,1,0,125,1, + 0,89,110,1,0,88,124,1,0,100,2,0,79,125,1,0, + 124,1,0,83,40,3,0,0,0,117,51,0,0,0,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, - 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,105,0,0,0,0,117,1,0,0,0,46, - 105,3,0,0,0,105,1,0,0,0,117,2,0,0,0,112, - 121,78,105,253,255,255,255,105,255,255,255,255,105,255,255,255, - 255,40,8,0,0,0,117,3,0,0,0,108,101,110,117,4, - 0,0,0,78,111,110,101,117,10,0,0,0,114,112,97,114, - 116,105,116,105,111,110,117,5,0,0,0,108,111,119,101,114, - 117,17,0,0,0,115,111,117,114,99,101,95,102,114,111,109, - 95,99,97,99,104,101,117,19,0,0,0,78,111,116,73,109, - 112,108,101,109,101,110,116,101,100,69,114,114,111,114,117,10, - 0,0,0,86,97,108,117,101,69,114,114,111,114,117,12,0, - 0,0,95,112,97,116,104,95,105,115,102,105,108,101,40,5, - 0,0,0,117,13,0,0,0,98,121,116,101,99,111,100,101, - 95,112,97,116,104,117,4,0,0,0,114,101,115,116,117,1, - 0,0,0,95,117,9,0,0,0,101,120,116,101,110,115,105, - 111,110,117,11,0,0,0,115,111,117,114,99,101,95,112,97, - 116,104,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,15, - 0,0,0,95,103,101,116,95,115,111,117,114,99,101,102,105, - 108,101,209,1,0,0,115,20,0,0,0,0,7,18,1,4, - 1,24,1,35,1,4,1,3,1,16,1,19,1,21,1,117, - 15,0,0,0,95,103,101,116,95,115,111,117,114,99,101,102, - 105,108,101,117,9,0,0,0,118,101,114,98,111,115,105,116, - 121,105,1,0,0,0,99,1,0,0,0,1,0,0,0,3, - 0,0,0,4,0,0,0,71,0,0,0,115,81,0,0,0, - 116,0,0,106,1,0,106,2,0,124,1,0,107,5,0,114, - 77,0,124,0,0,106,3,0,100,6,0,131,1,0,115,46, - 0,100,3,0,124,0,0,23,125,0,0,110,0,0,116,4, - 0,124,0,0,106,5,0,124,2,0,140,0,0,100,4,0, - 116,0,0,106,6,0,131,1,1,1,110,0,0,100,5,0, - 83,40,7,0,0,0,117,61,0,0,0,80,114,105,110,116, - 32,116,104,101,32,109,101,115,115,97,103,101,32,116,111,32, - 115,116,100,101,114,114,32,105,102,32,45,118,47,80,89,84, - 72,79,78,86,69,82,66,79,83,69,32,105,115,32,116,117, - 114,110,101,100,32,111,110,46,117,1,0,0,0,35,117,7, - 0,0,0,105,109,112,111,114,116,32,117,2,0,0,0,35, - 32,117,4,0,0,0,102,105,108,101,78,40,2,0,0,0, - 117,1,0,0,0,35,117,7,0,0,0,105,109,112,111,114, - 116,32,40,7,0,0,0,117,3,0,0,0,115,121,115,117, - 5,0,0,0,102,108,97,103,115,117,7,0,0,0,118,101, - 114,98,111,115,101,117,10,0,0,0,115,116,97,114,116,115, - 119,105,116,104,117,5,0,0,0,112,114,105,110,116,117,6, - 0,0,0,102,111,114,109,97,116,117,6,0,0,0,115,116, - 100,101,114,114,40,3,0,0,0,117,7,0,0,0,109,101, - 115,115,97,103,101,117,9,0,0,0,118,101,114,98,111,115, - 105,116,121,117,4,0,0,0,97,114,103,115,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,16,0,0,0,95,118,101, - 114,98,111,115,101,95,109,101,115,115,97,103,101,228,1,0, - 0,115,8,0,0,0,0,2,18,1,15,1,13,1,117,16, - 0,0,0,95,118,101,114,98,111,115,101,95,109,101,115,115, - 97,103,101,99,1,0,0,0,0,0,0,0,2,0,0,0, - 3,0,0,0,3,0,0,0,115,35,0,0,0,135,0,0, - 102,1,0,100,1,0,100,2,0,134,0,0,125,1,0,116, - 0,0,124,1,0,136,0,0,131,2,0,1,124,1,0,83, - 40,3,0,0,0,117,39,0,0,0,83,101,116,32,95,95, - 112,97,99,107,97,103,101,95,95,32,111,110,32,116,104,101, - 32,114,101,116,117,114,110,101,100,32,109,111,100,117,108,101, - 46,99,0,0,0,0,0,0,0,0,3,0,0,0,4,0, - 0,0,31,0,0,0,115,101,0,0,0,136,0,0,124,0, - 0,124,1,0,142,0,0,125,2,0,116,0,0,124,2,0, - 100,1,0,100,0,0,131,3,0,100,0,0,107,8,0,114, - 97,0,124,2,0,106,2,0,124,2,0,95,3,0,116,4, - 0,124,2,0,100,2,0,131,2,0,115,97,0,124,2,0, - 106,3,0,106,5,0,100,3,0,131,1,0,100,4,0,25, - 124,2,0,95,3,0,113,97,0,110,0,0,124,2,0,83, - 40,5,0,0,0,78,117,11,0,0,0,95,95,112,97,99, - 107,97,103,101,95,95,117,8,0,0,0,95,95,112,97,116, - 104,95,95,117,1,0,0,0,46,105,0,0,0,0,40,6, - 0,0,0,117,7,0,0,0,103,101,116,97,116,116,114,117, - 4,0,0,0,78,111,110,101,117,8,0,0,0,95,95,110, - 97,109,101,95,95,117,11,0,0,0,95,95,112,97,99,107, - 97,103,101,95,95,117,7,0,0,0,104,97,115,97,116,116, - 114,117,10,0,0,0,114,112,97,114,116,105,116,105,111,110, - 40,3,0,0,0,117,4,0,0,0,97,114,103,115,117,6, - 0,0,0,107,119,97,114,103,115,117,6,0,0,0,109,111, - 100,117,108,101,40,1,0,0,0,117,3,0,0,0,102,120, - 110,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,19,0,0,0,115,101,116, - 95,112,97,99,107,97,103,101,95,119,114,97,112,112,101,114, - 238,1,0,0,115,12,0,0,0,0,1,15,1,24,1,12, - 1,15,1,31,1,117,40,0,0,0,115,101,116,95,112,97, - 99,107,97,103,101,46,60,108,111,99,97,108,115,62,46,115, - 101,116,95,112,97,99,107,97,103,101,95,119,114,97,112,112, - 101,114,40,1,0,0,0,117,5,0,0,0,95,119,114,97, - 112,40,2,0,0,0,117,3,0,0,0,102,120,110,117,19, - 0,0,0,115,101,116,95,112,97,99,107,97,103,101,95,119, - 114,97,112,112,101,114,40,0,0,0,0,40,1,0,0,0, - 117,3,0,0,0,102,120,110,117,29,0,0,0,60,102,114, - 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, - 98,111,111,116,115,116,114,97,112,62,117,11,0,0,0,115, - 101,116,95,112,97,99,107,97,103,101,236,1,0,0,115,6, - 0,0,0,0,2,18,7,13,1,117,11,0,0,0,115,101, - 116,95,112,97,99,107,97,103,101,99,1,0,0,0,0,0, - 0,0,2,0,0,0,3,0,0,0,3,0,0,0,115,35, - 0,0,0,135,0,0,102,1,0,100,1,0,100,2,0,134, - 0,0,125,1,0,116,0,0,124,1,0,136,0,0,131,2, - 0,1,124,1,0,83,40,3,0,0,0,117,38,0,0,0, - 83,101,116,32,95,95,108,111,97,100,101,114,95,95,32,111, - 110,32,116,104,101,32,114,101,116,117,114,110,101,100,32,109, - 111,100,117,108,101,46,99,1,0,0,0,0,0,0,0,4, - 0,0,0,4,0,0,0,31,0,0,0,115,49,0,0,0, - 136,0,0,124,0,0,124,1,0,124,2,0,142,1,0,125, - 3,0,116,0,0,124,3,0,100,1,0,131,2,0,115,45, - 0,124,0,0,124,3,0,95,1,0,110,0,0,124,3,0, - 83,40,2,0,0,0,78,117,10,0,0,0,95,95,108,111, - 97,100,101,114,95,95,40,2,0,0,0,117,7,0,0,0, - 104,97,115,97,116,116,114,117,10,0,0,0,95,95,108,111, - 97,100,101,114,95,95,40,4,0,0,0,117,4,0,0,0, - 115,101,108,102,117,4,0,0,0,97,114,103,115,117,6,0, - 0,0,107,119,97,114,103,115,117,6,0,0,0,109,111,100, - 117,108,101,40,1,0,0,0,117,3,0,0,0,102,120,110, - 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, - 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, - 116,115,116,114,97,112,62,117,18,0,0,0,115,101,116,95, - 108,111,97,100,101,114,95,119,114,97,112,112,101,114,251,1, - 0,0,115,8,0,0,0,0,1,18,1,15,1,12,1,117, - 38,0,0,0,115,101,116,95,108,111,97,100,101,114,46,60, - 108,111,99,97,108,115,62,46,115,101,116,95,108,111,97,100, - 101,114,95,119,114,97,112,112,101,114,40,1,0,0,0,117, - 5,0,0,0,95,119,114,97,112,40,2,0,0,0,117,3, - 0,0,0,102,120,110,117,18,0,0,0,115,101,116,95,108, - 111,97,100,101,114,95,119,114,97,112,112,101,114,40,0,0, - 0,0,40,1,0,0,0,117,3,0,0,0,102,120,110,117, - 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, - 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, - 62,117,10,0,0,0,115,101,116,95,108,111,97,100,101,114, - 249,1,0,0,115,6,0,0,0,0,2,18,5,13,1,117, - 10,0,0,0,115,101,116,95,108,111,97,100,101,114,99,1, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,3, - 0,0,0,115,35,0,0,0,135,0,0,102,1,0,100,1, - 0,100,2,0,134,0,0,125,1,0,116,0,0,124,1,0, - 136,0,0,131,2,0,1,124,1,0,83,40,3,0,0,0, - 117,42,3,0,0,68,101,99,111,114,97,116,111,114,32,116, - 111,32,104,97,110,100,108,101,32,115,101,108,101,99,116,105, - 110,103,32,116,104,101,32,112,114,111,112,101,114,32,109,111, - 100,117,108,101,32,102,111,114,32,108,111,97,100,101,114,115, - 46,10,10,32,32,32,32,84,104,101,32,100,101,99,111,114, - 97,116,101,100,32,102,117,110,99,116,105,111,110,32,105,115, - 32,112,97,115,115,101,100,32,116,104,101,32,109,111,100,117, - 108,101,32,116,111,32,117,115,101,32,105,110,115,116,101,97, - 100,32,111,102,32,116,104,101,32,109,111,100,117,108,101,10, - 32,32,32,32,110,97,109,101,46,32,84,104,101,32,109,111, - 100,117,108,101,32,112,97,115,115,101,100,32,105,110,32,116, - 111,32,116,104,101,32,102,117,110,99,116,105,111,110,32,105, - 115,32,101,105,116,104,101,114,32,102,114,111,109,32,115,121, - 115,46,109,111,100,117,108,101,115,32,105,102,10,32,32,32, - 32,105,116,32,97,108,114,101,97,100,121,32,101,120,105,115, - 116,115,32,111,114,32,105,115,32,97,32,110,101,119,32,109, - 111,100,117,108,101,46,32,73,102,32,116,104,101,32,109,111, - 100,117,108,101,32,105,115,32,110,101,119,44,32,116,104,101, - 110,32,95,95,110,97,109,101,95,95,10,32,32,32,32,105, - 115,32,115,101,116,32,116,104,101,32,102,105,114,115,116,32, - 97,114,103,117,109,101,110,116,32,116,111,32,116,104,101,32, - 109,101,116,104,111,100,44,32,95,95,108,111,97,100,101,114, - 95,95,32,105,115,32,115,101,116,32,116,111,32,115,101,108, - 102,44,32,97,110,100,10,32,32,32,32,95,95,112,97,99, - 107,97,103,101,95,95,32,105,115,32,115,101,116,32,97,99, - 99,111,114,100,105,110,103,108,121,32,40,105,102,32,115,101, - 108,102,46,105,115,95,112,97,99,107,97,103,101,40,41,32, - 105,115,32,100,101,102,105,110,101,100,41,32,119,105,108,108, - 32,98,101,32,115,101,116,10,32,32,32,32,98,101,102,111, - 114,101,32,105,116,32,105,115,32,112,97,115,115,101,100,32, - 116,111,32,116,104,101,32,100,101,99,111,114,97,116,101,100, - 32,102,117,110,99,116,105,111,110,32,40,105,102,32,115,101, - 108,102,46,105,115,95,112,97,99,107,97,103,101,40,41,32, - 100,111,101,115,10,32,32,32,32,110,111,116,32,119,111,114, - 107,32,102,111,114,32,116,104,101,32,109,111,100,117,108,101, - 32,105,116,32,119,105,108,108,32,98,101,32,115,101,116,32, - 112,111,115,116,45,108,111,97,100,41,46,10,10,32,32,32, - 32,73,102,32,97,110,32,101,120,99,101,112,116,105,111,110, - 32,105,115,32,114,97,105,115,101,100,32,97,110,100,32,116, - 104,101,32,100,101,99,111,114,97,116,111,114,32,99,114,101, - 97,116,101,100,32,116,104,101,32,109,111,100,117,108,101,32, - 105,116,32,105,115,10,32,32,32,32,115,117,98,115,101,113, - 117,101,110,116,108,121,32,114,101,109,111,118,101,100,32,102, - 114,111,109,32,115,121,115,46,109,111,100,117,108,101,115,46, - 10,10,32,32,32,32,84,104,101,32,100,101,99,111,114,97, - 116,111,114,32,97,115,115,117,109,101,115,32,116,104,97,116, - 32,116,104,101,32,100,101,99,111,114,97,116,101,100,32,102, - 117,110,99,116,105,111,110,32,116,97,107,101,115,32,116,104, - 101,32,109,111,100,117,108,101,32,110,97,109,101,32,97,115, - 10,32,32,32,32,116,104,101,32,115,101,99,111,110,100,32, - 97,114,103,117,109,101,110,116,46,10,10,32,32,32,32,99, - 2,0,0,0,0,0,0,0,7,0,0,0,25,0,0,0, - 31,0,0,0,115,254,0,0,0,116,0,0,106,1,0,106, - 2,0,124,1,0,131,1,0,125,4,0,124,4,0,100,0, - 0,107,9,0,125,5,0,124,5,0,115,168,0,116,4,0, - 124,1,0,131,1,0,125,4,0,100,3,0,124,4,0,95, - 6,0,124,4,0,116,0,0,106,1,0,124,1,0,60,124, - 0,0,124,4,0,95,7,0,121,19,0,124,0,0,106,8, - 0,124,1,0,131,1,0,125,6,0,87,110,24,0,4,116, - 9,0,116,10,0,102,2,0,107,10,0,114,124,0,1,1, - 1,89,113,177,0,88,124,6,0,114,143,0,124,1,0,124, - 4,0,95,11,0,113,177,0,124,1,0,106,12,0,100,1, - 0,131,1,0,100,2,0,25,124,4,0,95,11,0,110,9, - 0,100,3,0,124,4,0,95,6,0,122,60,0,121,23,0, - 136,0,0,124,0,0,124,4,0,124,2,0,124,3,0,142, - 2,0,83,87,110,30,0,1,1,1,124,5,0,115,228,0, - 116,0,0,106,1,0,124,1,0,61,110,0,0,130,0,0, - 89,110,1,0,88,87,100,0,0,100,4,0,124,4,0,95, - 6,0,88,100,0,0,83,40,5,0,0,0,78,117,1,0, - 0,0,46,105,0,0,0,0,84,70,40,14,0,0,0,117, - 3,0,0,0,115,121,115,117,7,0,0,0,109,111,100,117, - 108,101,115,117,3,0,0,0,103,101,116,117,4,0,0,0, - 78,111,110,101,117,10,0,0,0,110,101,119,95,109,111,100, - 117,108,101,117,4,0,0,0,84,114,117,101,117,16,0,0, - 0,95,95,105,110,105,116,105,97,108,105,122,105,110,103,95, - 95,117,10,0,0,0,95,95,108,111,97,100,101,114,95,95, - 117,10,0,0,0,105,115,95,112,97,99,107,97,103,101,117, - 11,0,0,0,73,109,112,111,114,116,69,114,114,111,114,117, - 14,0,0,0,65,116,116,114,105,98,117,116,101,69,114,114, - 111,114,117,11,0,0,0,95,95,112,97,99,107,97,103,101, - 95,95,117,10,0,0,0,114,112,97,114,116,105,116,105,111, - 110,117,5,0,0,0,70,97,108,115,101,40,7,0,0,0, - 117,4,0,0,0,115,101,108,102,117,8,0,0,0,102,117, - 108,108,110,97,109,101,117,4,0,0,0,97,114,103,115,117, - 6,0,0,0,107,119,97,114,103,115,117,6,0,0,0,109, - 111,100,117,108,101,117,9,0,0,0,105,115,95,114,101,108, - 111,97,100,117,10,0,0,0,105,115,95,112,97,99,107,97, - 103,101,40,1,0,0,0,117,3,0,0,0,102,120,110,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,25,0,0,0,109,111,100,117,108, - 101,95,102,111,114,95,108,111,97,100,101,114,95,119,114,97, - 112,112,101,114,22,2,0,0,115,44,0,0,0,0,1,18, - 1,12,1,6,4,12,3,9,1,13,1,9,1,3,1,19, - 1,19,1,5,2,6,1,12,2,25,2,9,1,6,2,23, - 1,3,1,6,1,13,1,12,2,117,52,0,0,0,109,111, - 100,117,108,101,95,102,111,114,95,108,111,97,100,101,114,46, - 60,108,111,99,97,108,115,62,46,109,111,100,117,108,101,95, - 102,111,114,95,108,111,97,100,101,114,95,119,114,97,112,112, - 101,114,40,1,0,0,0,117,5,0,0,0,95,119,114,97, - 112,40,2,0,0,0,117,3,0,0,0,102,120,110,117,25, - 0,0,0,109,111,100,117,108,101,95,102,111,114,95,108,111, - 97,100,101,114,95,119,114,97,112,112,101,114,40,0,0,0, - 0,40,1,0,0,0,117,3,0,0,0,102,120,110,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,17,0,0,0,109,111,100,117,108,101,95,102,111,114,95, - 108,111,97,100,101,114,4,2,0,0,115,6,0,0,0,0, - 18,18,33,13,1,117,17,0,0,0,109,111,100,117,108,101, - 95,102,111,114,95,108,111,97,100,101,114,99,1,0,0,0, - 0,0,0,0,2,0,0,0,4,0,0,0,3,0,0,0, - 115,38,0,0,0,100,3,0,135,0,0,102,1,0,100,1, - 0,100,2,0,134,1,0,125,1,0,116,1,0,124,1,0, - 136,0,0,131,2,0,1,124,1,0,83,40,4,0,0,0, - 117,252,0,0,0,68,101,99,111,114,97,116,111,114,32,116, - 111,32,118,101,114,105,102,121,32,116,104,97,116,32,116,104, - 101,32,109,111,100,117,108,101,32,98,101,105,110,103,32,114, - 101,113,117,101,115,116,101,100,32,109,97,116,99,104,101,115, - 32,116,104,101,32,111,110,101,32,116,104,101,10,32,32,32, - 32,108,111,97,100,101,114,32,99,97,110,32,104,97,110,100, - 108,101,46,10,10,32,32,32,32,84,104,101,32,102,105,114, - 115,116,32,97,114,103,117,109,101,110,116,32,40,115,101,108, - 102,41,32,109,117,115,116,32,100,101,102,105,110,101,32,95, - 110,97,109,101,32,119,104,105,99,104,32,116,104,101,32,115, - 101,99,111,110,100,32,97,114,103,117,109,101,110,116,32,105, - 115,10,32,32,32,32,99,111,109,112,97,114,101,100,32,97, - 103,97,105,110,115,116,46,32,73,102,32,116,104,101,32,99, - 111,109,112,97,114,105,115,111,110,32,102,97,105,108,115,32, - 116,104,101,110,32,73,109,112,111,114,116,69,114,114,111,114, - 32,105,115,32,114,97,105,115,101,100,46,10,10,32,32,32, - 32,99,2,0,0,0,0,0,0,0,4,0,0,0,5,0, - 0,0,31,0,0,0,115,83,0,0,0,124,1,0,100,0, - 0,107,8,0,114,24,0,124,0,0,106,1,0,125,1,0, - 110,40,0,124,0,0,106,1,0,124,1,0,107,3,0,114, - 64,0,116,2,0,100,1,0,124,1,0,22,100,2,0,124, - 1,0,131,1,1,130,1,0,110,0,0,136,0,0,124,0, - 0,124,1,0,124,2,0,124,3,0,142,2,0,83,40,3, - 0,0,0,78,117,23,0,0,0,108,111,97,100,101,114,32, - 99,97,110,110,111,116,32,104,97,110,100,108,101,32,37,115, - 117,4,0,0,0,110,97,109,101,40,3,0,0,0,117,4, - 0,0,0,78,111,110,101,117,4,0,0,0,110,97,109,101, - 117,11,0,0,0,73,109,112,111,114,116,69,114,114,111,114, - 40,4,0,0,0,117,4,0,0,0,115,101,108,102,117,4, - 0,0,0,110,97,109,101,117,4,0,0,0,97,114,103,115, - 117,6,0,0,0,107,119,97,114,103,115,40,1,0,0,0, - 117,6,0,0,0,109,101,116,104,111,100,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,19,0,0,0,95,99,104,101,99,107,95,110,97, - 109,101,95,119,114,97,112,112,101,114,67,2,0,0,115,10, - 0,0,0,0,1,12,1,12,1,15,1,25,1,117,40,0, - 0,0,95,99,104,101,99,107,95,110,97,109,101,46,60,108, - 111,99,97,108,115,62,46,95,99,104,101,99,107,95,110,97, - 109,101,95,119,114,97,112,112,101,114,78,40,2,0,0,0, - 117,4,0,0,0,78,111,110,101,117,5,0,0,0,95,119, - 114,97,112,40,2,0,0,0,117,6,0,0,0,109,101,116, - 104,111,100,117,19,0,0,0,95,99,104,101,99,107,95,110, - 97,109,101,95,119,114,97,112,112,101,114,40,0,0,0,0, - 40,1,0,0,0,117,6,0,0,0,109,101,116,104,111,100, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,11,0,0,0,95,99,104,101,99,107,95,110,97, - 109,101,59,2,0,0,115,6,0,0,0,0,8,21,6,13, - 1,117,11,0,0,0,95,99,104,101,99,107,95,110,97,109, - 101,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0, - 0,0,3,0,0,0,115,35,0,0,0,135,0,0,102,1, - 0,100,1,0,100,2,0,134,0,0,125,1,0,116,0,0, - 124,1,0,136,0,0,131,2,0,1,124,1,0,83,40,3, - 0,0,0,117,49,0,0,0,68,101,99,111,114,97,116,111, - 114,32,116,111,32,118,101,114,105,102,121,32,116,104,101,32, - 110,97,109,101,100,32,109,111,100,117,108,101,32,105,115,32, - 98,117,105,108,116,45,105,110,46,99,2,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,19,0,0,0,115,58, - 0,0,0,124,1,0,116,0,0,106,1,0,107,7,0,114, - 45,0,116,2,0,100,1,0,106,3,0,124,1,0,131,1, - 0,100,2,0,124,1,0,131,1,1,130,1,0,110,0,0, - 136,0,0,124,0,0,124,1,0,131,2,0,83,40,3,0, - 0,0,78,117,27,0,0,0,123,125,32,105,115,32,110,111, - 116,32,97,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,117,4,0,0,0,110,97,109,101,40,4,0,0, - 0,117,3,0,0,0,115,121,115,117,20,0,0,0,98,117, - 105,108,116,105,110,95,109,111,100,117,108,101,95,110,97,109, - 101,115,117,11,0,0,0,73,109,112,111,114,116,69,114,114, - 111,114,117,6,0,0,0,102,111,114,109,97,116,40,2,0, - 0,0,117,4,0,0,0,115,101,108,102,117,8,0,0,0, - 102,117,108,108,110,97,109,101,40,1,0,0,0,117,3,0, - 0,0,102,120,110,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,25,0,0, - 0,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, - 105,110,95,119,114,97,112,112,101,114,79,2,0,0,115,8, - 0,0,0,0,1,15,1,18,1,12,1,117,52,0,0,0, + 46,105,182,1,0,0,233,128,0,0,0,40,4,0,0,0, + 114,3,0,0,0,114,39,0,0,0,114,41,0,0,0,114, + 40,0,0,0,40,2,0,0,0,114,35,0,0,0,114,42, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,244,10,0,0,0,95,99,97,108,99,95,109,111,100, + 101,200,1,0,0,115,12,0,0,0,0,2,3,1,22,1, + 13,1,11,3,10,1,114,129,0,0,0,244,9,0,0,0, + 118,101,114,98,111,115,105,116,121,114,29,0,0,0,99,1, + 0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,71, + 0,0,0,115,81,0,0,0,116,0,0,106,1,0,106,2, + 0,124,1,0,107,5,0,114,77,0,124,0,0,106,3,0, + 100,6,0,131,1,0,115,46,0,100,3,0,124,0,0,23, + 125,0,0,110,0,0,116,4,0,124,0,0,106,5,0,124, + 2,0,140,0,0,100,4,0,116,0,0,106,6,0,131,1, + 1,1,110,0,0,100,5,0,83,40,7,0,0,0,117,61, + 0,0,0,80,114,105,110,116,32,116,104,101,32,109,101,115, + 115,97,103,101,32,116,111,32,115,116,100,101,114,114,32,105, + 102,32,45,118,47,80,89,84,72,79,78,86,69,82,66,79, + 83,69,32,105,115,32,116,117,114,110,101,100,32,111,110,46, + 245,1,0,0,0,35,245,7,0,0,0,105,109,112,111,114, + 116,32,117,2,0,0,0,35,32,114,53,0,0,0,78,40, + 2,0,0,0,114,131,0,0,0,114,132,0,0,0,40,7, + 0,0,0,114,7,0,0,0,114,102,0,0,0,244,7,0, + 0,0,118,101,114,98,111,115,101,114,9,0,0,0,244,5, + 0,0,0,112,114,105,110,116,114,46,0,0,0,244,6,0, + 0,0,115,116,100,101,114,114,40,3,0,0,0,244,7,0, + 0,0,109,101,115,115,97,103,101,114,130,0,0,0,114,98, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,244,16,0,0,0,95,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,212,1,0,0,115,8,0,0,0, + 0,2,18,1,15,1,13,1,114,137,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,52,0,0,0,101,0,0,90,1,0,100,0,0, + 90,2,0,100,1,0,100,2,0,132,0,0,90,3,0,100, + 3,0,100,4,0,132,0,0,90,4,0,100,5,0,100,6, + 0,132,0,0,90,5,0,100,7,0,83,40,8,0,0,0, + 244,13,0,0,0,95,77,97,110,97,103,101,82,101,108,111, + 97,100,99,2,0,0,0,0,0,0,0,2,0,0,0,2, + 0,0,0,67,0,0,0,115,13,0,0,0,124,1,0,124, + 0,0,95,0,0,100,0,0,83,40,1,0,0,0,78,40, + 1,0,0,0,244,5,0,0,0,95,110,97,109,101,40,2, + 0,0,0,114,75,0,0,0,114,71,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,76,0,0, + 0,222,1,0,0,115,2,0,0,0,0,1,117,22,0,0, + 0,95,77,97,110,97,103,101,82,101,108,111,97,100,46,95, + 95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,0, + 1,0,0,0,2,0,0,0,67,0,0,0,115,25,0,0, + 0,124,0,0,106,0,0,116,1,0,106,2,0,107,6,0, + 124,0,0,95,3,0,100,0,0,83,40,1,0,0,0,78, + 40,4,0,0,0,114,139,0,0,0,114,7,0,0,0,244, + 7,0,0,0,109,111,100,117,108,101,115,244,10,0,0,0, + 95,105,115,95,114,101,108,111,97,100,40,1,0,0,0,114, + 75,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,244,9,0,0,0,95,95,101,110,116,101,114,95, + 95,225,1,0,0,115,2,0,0,0,0,1,117,23,0,0, + 0,95,77,97,110,97,103,101,82,101,108,111,97,100,46,95, + 95,101,110,116,101,114,95,95,99,1,0,0,0,0,0,0, + 0,2,0,0,0,12,0,0,0,71,0,0,0,115,80,0, + 0,0,116,0,0,100,1,0,100,2,0,132,0,0,124,1, + 0,68,131,1,0,131,1,0,114,76,0,124,0,0,106,1, + 0,12,114,76,0,121,17,0,116,2,0,106,3,0,124,0, + 0,106,4,0,61,87,113,76,0,4,116,5,0,107,10,0, + 114,72,0,1,1,1,89,113,76,0,88,110,0,0,100,0, + 0,83,40,3,0,0,0,78,99,1,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,115,0,0,0,115,27,0, + 0,0,124,0,0,93,17,0,125,1,0,124,1,0,100,0, + 0,107,9,0,86,1,113,3,0,100,0,0,83,40,1,0, + 0,0,78,114,4,0,0,0,40,2,0,0,0,114,22,0, + 0,0,116,3,0,0,0,97,114,103,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,245,9,0,0,0,60,103, + 101,110,101,120,112,114,62,229,1,0,0,115,2,0,0,0, + 6,0,117,41,0,0,0,95,77,97,110,97,103,101,82,101, + 108,111,97,100,46,95,95,101,120,105,116,95,95,46,60,108, + 111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,62, + 40,6,0,0,0,244,3,0,0,0,97,110,121,114,141,0, + 0,0,114,7,0,0,0,114,140,0,0,0,114,139,0,0, + 0,114,91,0,0,0,40,2,0,0,0,114,75,0,0,0, + 114,98,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,244,8,0,0,0,95,95,101,120,105,116,95, + 95,228,1,0,0,115,10,0,0,0,0,1,35,1,3,1, + 17,1,13,1,117,22,0,0,0,95,77,97,110,97,103,101, + 82,101,108,111,97,100,46,95,95,101,120,105,116,95,95,78, + 40,6,0,0,0,114,56,0,0,0,114,55,0,0,0,114, + 57,0,0,0,114,76,0,0,0,114,142,0,0,0,114,145, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,138,0,0,0,220,1,0,0, + 115,6,0,0,0,12,2,12,3,12,3,114,138,0,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,0,0,0,0,115,82,0,0,0,101,0,0,90,1,0, + 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, + 3,0,135,0,0,102,1,0,100,4,0,100,5,0,134,0, + 1,90,4,0,135,0,0,102,1,0,100,6,0,100,7,0, + 134,0,0,90,5,0,135,0,0,102,1,0,100,8,0,100, + 9,0,134,0,0,90,6,0,135,0,0,83,40,10,0,0, + 0,244,14,0,0,0,95,77,111,100,117,108,101,77,97,110, + 97,103,101,114,117,122,0,0,0,67,111,110,116,101,120,116, + 32,109,97,110,97,103,101,114,32,119,104,105,99,104,32,114, + 101,116,117,114,110,115,32,116,104,101,32,109,111,100,117,108, + 101,32,116,111,32,98,101,32,108,111,97,100,101,100,46,10, + 10,32,32,32,32,68,111,101,115,32,116,104,101,32,112,114, + 111,112,101,114,32,117,110,108,111,97,100,105,110,103,32,102, + 114,111,109,32,115,121,115,46,109,111,100,117,108,101,115,32, + 117,112,111,110,32,102,97,105,108,117,114,101,46,10,10,32, + 32,32,32,244,10,0,0,0,114,101,115,101,116,95,110,97, + 109,101,84,99,2,0,0,0,1,0,0,0,3,0,0,0, + 2,0,0,0,3,0,0,0,115,29,0,0,0,116,0,0, + 131,0,0,106,1,0,124,1,0,131,1,0,1,124,2,0, + 124,0,0,95,2,0,100,1,0,83,40,2,0,0,0,117, + 183,0,0,0,80,114,101,112,97,114,101,32,116,104,101,32, + 99,111,110,116,101,120,116,32,109,97,110,97,103,101,114,46, + 10,10,32,32,32,32,32,32,32,32,84,104,101,32,114,101, + 115,101,116,95,110,97,109,101,32,97,114,103,117,109,101,110, + 116,32,115,112,101,99,105,102,105,101,115,32,119,104,101,116, + 104,101,114,32,116,111,32,117,110,99,111,110,100,105,116,105, + 111,110,97,108,108,121,32,114,101,115,101,116,10,32,32,32, + 32,32,32,32,32,116,104,101,32,95,95,110,97,109,101,95, + 95,32,97,116,116,114,105,98,117,116,101,32,105,102,32,116, + 104,101,32,109,111,100,117,108,101,32,105,115,32,102,111,117, + 110,100,32,116,111,32,98,101,32,97,32,114,101,108,111,97, + 100,46,10,32,32,32,32,32,32,32,32,78,40,3,0,0, + 0,244,5,0,0,0,115,117,112,101,114,114,76,0,0,0, + 244,11,0,0,0,95,114,101,115,101,116,95,110,97,109,101, + 40,3,0,0,0,114,75,0,0,0,114,71,0,0,0,114, + 147,0,0,0,40,1,0,0,0,244,9,0,0,0,95,95, + 99,108,97,115,115,95,95,114,4,0,0,0,114,5,0,0, + 0,114,76,0,0,0,245,1,0,0,115,4,0,0,0,0, + 6,16,1,117,23,0,0,0,95,77,111,100,117,108,101,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,1,0,0,0,11,0,0,0, + 3,0,0,0,115,163,0,0,0,116,0,0,131,0,0,106, + 1,0,131,0,0,1,116,2,0,106,3,0,106,4,0,124, + 0,0,106,5,0,131,1,0,124,0,0,95,6,0,124,0, + 0,106,7,0,115,104,0,116,8,0,116,9,0,131,1,0, + 124,0,0,106,5,0,131,1,0,124,0,0,95,6,0,100, + 1,0,124,0,0,106,6,0,95,10,0,124,0,0,106,6, + 0,116,2,0,106,3,0,124,0,0,106,5,0,60,110,52, + 0,124,0,0,106,11,0,114,156,0,121,19,0,124,0,0, + 106,5,0,124,0,0,106,6,0,95,12,0,87,113,156,0, + 4,116,13,0,107,10,0,114,152,0,1,1,1,89,113,156, + 0,88,110,0,0,124,0,0,106,6,0,83,40,2,0,0, + 0,78,84,40,14,0,0,0,114,148,0,0,0,114,142,0, + 0,0,114,7,0,0,0,114,140,0,0,0,114,79,0,0, + 0,114,139,0,0,0,244,7,0,0,0,95,109,111,100,117, + 108,101,114,141,0,0,0,244,4,0,0,0,116,121,112,101, + 114,48,0,0,0,244,16,0,0,0,95,95,105,110,105,116, + 105,97,108,105,122,105,110,103,95,95,114,149,0,0,0,114, + 56,0,0,0,244,14,0,0,0,65,116,116,114,105,98,117, + 116,101,69,114,114,111,114,40,1,0,0,0,114,75,0,0, + 0,40,1,0,0,0,114,150,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,142,0,0,0,254,1,0,0,115,24, + 0,0,0,0,1,13,1,24,1,9,4,24,3,12,1,22, + 1,9,1,3,1,19,1,13,1,8,1,117,24,0,0,0, + 95,77,111,100,117,108,101,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,2,0,0,0,2,0,0,0,7,0,0,0,115,38,0, + 0,0,100,1,0,124,0,0,106,0,0,95,1,0,124,0, + 0,96,0,0,116,2,0,131,0,0,106,3,0,124,1,0, + 140,0,0,1,100,0,0,83,40,2,0,0,0,78,70,40, + 4,0,0,0,114,151,0,0,0,114,153,0,0,0,114,148, + 0,0,0,114,145,0,0,0,40,2,0,0,0,114,75,0, + 0,0,114,98,0,0,0,40,1,0,0,0,114,150,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,145,0,0,0, + 17,2,0,0,115,6,0,0,0,0,1,12,1,6,1,117, + 23,0,0,0,95,77,111,100,117,108,101,77,97,110,97,103, + 101,114,46,95,95,101,120,105,116,95,95,40,7,0,0,0, + 114,56,0,0,0,114,55,0,0,0,114,57,0,0,0,114, + 58,0,0,0,114,76,0,0,0,114,142,0,0,0,114,145, + 0,0,0,114,4,0,0,0,114,4,0,0,0,40,1,0, + 0,0,114,150,0,0,0,114,5,0,0,0,114,146,0,0, + 0,237,1,0,0,115,8,0,0,0,12,6,6,2,24,9, + 18,19,114,146,0,0,0,114,147,0,0,0,84,99,1,0, + 0,0,1,0,0,0,2,0,0,0,4,0,0,0,67,0, + 0,0,115,16,0,0,0,116,0,0,124,0,0,100,1,0, + 124,1,0,131,1,1,83,40,2,0,0,0,117,138,0,0, + 0,82,101,116,117,114,110,32,97,32,99,111,110,116,101,120, + 116,32,109,97,110,97,103,101,114,32,119,104,105,99,104,32, + 112,114,111,118,105,100,101,115,32,116,104,101,32,109,111,100, + 117,108,101,32,111,98,106,101,99,116,32,116,111,32,108,111, + 97,100,46,10,10,32,32,32,32,73,102,32,114,101,115,101, + 116,95,110,97,109,101,32,105,115,32,116,114,117,101,44,32, + 114,101,115,101,116,32,116,104,101,32,109,111,100,117,108,101, + 39,115,32,95,95,110,97,109,101,95,95,32,116,111,32,39, + 110,97,109,101,39,46,10,32,32,32,32,114,147,0,0,0, + 40,1,0,0,0,114,146,0,0,0,40,2,0,0,0,114, + 71,0,0,0,114,147,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,244,14,0,0,0,109,111,100, + 117,108,101,95,116,111,95,108,111,97,100,23,2,0,0,115, + 2,0,0,0,0,6,114,155,0,0,0,99,2,0,0,0, + 0,0,0,0,4,0,0,0,11,0,0,0,67,0,0,0, + 115,102,0,0,0,124,1,0,106,0,0,125,2,0,121,19, + 0,124,0,0,106,1,0,124,2,0,131,1,0,125,3,0, + 87,110,18,0,4,116,2,0,107,10,0,114,48,0,1,1, + 1,89,110,50,0,88,124,3,0,114,76,0,124,2,0,124, + 1,0,95,3,0,103,0,0,124,1,0,95,4,0,110,22, + 0,124,2,0,106,5,0,100,1,0,131,1,0,100,2,0, + 25,124,1,0,95,3,0,100,3,0,83,40,4,0,0,0, + 117,68,0,0,0,83,101,116,32,95,95,112,97,99,107,97, + 103,101,95,95,32,97,110,100,32,95,95,112,97,116,104,95, + 95,32,98,97,115,101,100,32,111,110,32,119,104,97,116,32, + 108,111,97,100,101,114,46,105,115,95,112,97,99,107,97,103, + 101,40,41,32,115,97,121,115,46,114,101,0,0,0,114,67, + 0,0,0,78,40,6,0,0,0,114,56,0,0,0,244,10, + 0,0,0,105,115,95,112,97,99,107,97,103,101,244,11,0, + 0,0,73,109,112,111,114,116,69,114,114,111,114,244,11,0, + 0,0,95,95,112,97,99,107,97,103,101,95,95,244,8,0, + 0,0,95,95,112,97,116,104,95,95,114,32,0,0,0,40, + 4,0,0,0,244,6,0,0,0,108,111,97,100,101,114,244, + 6,0,0,0,109,111,100,117,108,101,114,71,0,0,0,114, + 156,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,244,19,0,0,0,95,105,110,105,116,95,112,97, + 99,107,97,103,101,95,97,116,116,114,115,32,2,0,0,115, + 18,0,0,0,0,2,9,1,3,1,19,1,13,1,5,2, + 6,1,9,1,12,2,114,162,0,0,0,99,2,0,0,0, + 0,0,0,0,2,0,0,0,11,0,0,0,67,0,0,0, + 115,100,0,0,0,121,25,0,124,0,0,106,0,0,124,1, + 0,106,1,0,131,1,0,124,1,0,95,2,0,87,110,18, + 0,4,116,3,0,107,10,0,114,45,0,1,1,1,89,110, + 51,0,88,124,1,0,106,1,0,124,1,0,106,4,0,107, + 2,0,114,96,0,124,1,0,106,5,0,106,6,0,116,7, + 0,124,1,0,106,2,0,131,1,0,100,1,0,25,131,1, + 0,1,110,0,0,100,2,0,83,40,3,0,0,0,117,57, + 0,0,0,83,101,116,32,95,95,102,105,108,101,95,95,32, + 97,110,100,32,95,95,112,97,116,104,95,95,32,98,97,115, + 101,100,32,111,110,32,108,111,97,100,101,114,46,103,101,116, + 95,102,105,108,101,110,97,109,101,40,41,46,114,67,0,0, + 0,78,40,8,0,0,0,244,12,0,0,0,103,101,116,95, + 102,105,108,101,110,97,109,101,114,56,0,0,0,244,8,0, + 0,0,95,95,102,105,108,101,95,95,114,157,0,0,0,114, + 158,0,0,0,114,159,0,0,0,244,6,0,0,0,97,112, + 112,101,110,100,114,38,0,0,0,40,2,0,0,0,114,160, + 0,0,0,114,161,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,244,16,0,0,0,95,105,110,105, + 116,95,102,105,108,101,95,97,116,116,114,115,47,2,0,0, + 115,12,0,0,0,0,2,3,1,25,1,13,1,5,2,18, + 1,114,166,0,0,0,99,1,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,3,0,0,0,115,35,0,0,0, + 135,0,0,102,1,0,100,1,0,100,2,0,134,0,0,125, + 1,0,116,0,0,124,1,0,136,0,0,131,2,0,1,124, + 1,0,83,40,3,0,0,0,117,39,0,0,0,83,101,116, + 32,95,95,112,97,99,107,97,103,101,95,95,32,111,110,32, + 116,104,101,32,114,101,116,117,114,110,101,100,32,109,111,100, + 117,108,101,46,99,0,0,0,0,0,0,0,0,3,0,0, + 0,4,0,0,0,31,0,0,0,115,101,0,0,0,136,0, + 0,124,0,0,124,1,0,142,0,0,125,2,0,116,0,0, + 124,2,0,100,1,0,100,0,0,131,3,0,100,0,0,107, + 8,0,114,97,0,124,2,0,106,1,0,124,2,0,95,2, + 0,116,3,0,124,2,0,100,2,0,131,2,0,115,97,0, + 124,2,0,106,2,0,106,4,0,100,3,0,131,1,0,100, + 4,0,25,124,2,0,95,2,0,113,97,0,110,0,0,124, + 2,0,83,40,5,0,0,0,78,114,158,0,0,0,114,159, + 0,0,0,114,101,0,0,0,114,67,0,0,0,40,5,0, + 0,0,114,61,0,0,0,114,56,0,0,0,114,158,0,0, + 0,114,59,0,0,0,114,32,0,0,0,40,3,0,0,0, + 114,98,0,0,0,244,6,0,0,0,107,119,97,114,103,115, + 114,161,0,0,0,40,1,0,0,0,244,3,0,0,0,102, + 120,110,114,4,0,0,0,114,5,0,0,0,244,19,0,0, + 0,115,101,116,95,112,97,99,107,97,103,101,95,119,114,97, + 112,112,101,114,60,2,0,0,115,12,0,0,0,0,1,15, + 1,24,1,12,1,15,1,31,1,117,40,0,0,0,115,101, + 116,95,112,97,99,107,97,103,101,46,60,108,111,99,97,108, + 115,62,46,115,101,116,95,112,97,99,107,97,103,101,95,119, + 114,97,112,112,101,114,40,1,0,0,0,114,64,0,0,0, + 40,2,0,0,0,114,168,0,0,0,114,169,0,0,0,114, + 4,0,0,0,40,1,0,0,0,114,168,0,0,0,114,5, + 0,0,0,244,11,0,0,0,115,101,116,95,112,97,99,107, + 97,103,101,58,2,0,0,115,6,0,0,0,0,2,18,7, + 13,1,114,170,0,0,0,99,1,0,0,0,0,0,0,0, + 2,0,0,0,3,0,0,0,3,0,0,0,115,35,0,0, + 0,135,0,0,102,1,0,100,1,0,100,2,0,134,0,0, + 125,1,0,116,0,0,124,1,0,136,0,0,131,2,0,1, + 124,1,0,83,40,3,0,0,0,117,38,0,0,0,83,101, + 116,32,95,95,108,111,97,100,101,114,95,95,32,111,110,32, + 116,104,101,32,114,101,116,117,114,110,101,100,32,109,111,100, + 117,108,101,46,99,1,0,0,0,0,0,0,0,4,0,0, + 0,4,0,0,0,31,0,0,0,115,58,0,0,0,136,0, + 0,124,0,0,124,1,0,124,2,0,142,1,0,125,3,0, + 116,0,0,124,3,0,100,1,0,100,0,0,131,3,0,100, + 0,0,107,8,0,114,54,0,124,0,0,124,3,0,95,1, + 0,110,0,0,124,3,0,83,40,2,0,0,0,78,244,10, + 0,0,0,95,95,108,111,97,100,101,114,95,95,40,2,0, + 0,0,114,61,0,0,0,114,171,0,0,0,40,4,0,0, + 0,114,75,0,0,0,114,98,0,0,0,114,167,0,0,0, + 114,161,0,0,0,40,1,0,0,0,114,168,0,0,0,114, + 4,0,0,0,114,5,0,0,0,244,18,0,0,0,115,101, + 116,95,108,111,97,100,101,114,95,119,114,97,112,112,101,114, + 73,2,0,0,115,8,0,0,0,0,1,18,1,24,1,12, + 1,117,38,0,0,0,115,101,116,95,108,111,97,100,101,114, + 46,60,108,111,99,97,108,115,62,46,115,101,116,95,108,111, + 97,100,101,114,95,119,114,97,112,112,101,114,40,1,0,0, + 0,114,64,0,0,0,40,2,0,0,0,114,168,0,0,0, + 114,172,0,0,0,114,4,0,0,0,40,1,0,0,0,114, + 168,0,0,0,114,5,0,0,0,244,10,0,0,0,115,101, + 116,95,108,111,97,100,101,114,71,2,0,0,115,6,0,0, + 0,0,2,18,5,13,1,114,173,0,0,0,99,1,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,3,0,0, + 0,115,38,0,0,0,100,1,0,135,0,0,102,1,0,100, + 2,0,100,3,0,134,1,0,125,1,0,116,0,0,124,1, + 0,136,0,0,131,2,0,1,124,1,0,83,40,4,0,0, + 0,117,252,0,0,0,68,101,99,111,114,97,116,111,114,32, + 116,111,32,118,101,114,105,102,121,32,116,104,97,116,32,116, + 104,101,32,109,111,100,117,108,101,32,98,101,105,110,103,32, + 114,101,113,117,101,115,116,101,100,32,109,97,116,99,104,101, + 115,32,116,104,101,32,111,110,101,32,116,104,101,10,32,32, + 32,32,108,111,97,100,101,114,32,99,97,110,32,104,97,110, + 100,108,101,46,10,10,32,32,32,32,84,104,101,32,102,105, + 114,115,116,32,97,114,103,117,109,101,110,116,32,40,115,101, + 108,102,41,32,109,117,115,116,32,100,101,102,105,110,101,32, + 95,110,97,109,101,32,119,104,105,99,104,32,116,104,101,32, + 115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32, + 105,115,10,32,32,32,32,99,111,109,112,97,114,101,100,32, + 97,103,97,105,110,115,116,46,32,73,102,32,116,104,101,32, + 99,111,109,112,97,114,105,115,111,110,32,102,97,105,108,115, + 32,116,104,101,110,32,73,109,112,111,114,116,69,114,114,111, + 114,32,105,115,32,114,97,105,115,101,100,46,10,10,32,32, + 32,32,78,99,2,0,0,0,0,0,0,0,4,0,0,0, + 5,0,0,0,31,0,0,0,115,83,0,0,0,124,1,0, + 100,0,0,107,8,0,114,24,0,124,0,0,106,0,0,125, + 1,0,110,40,0,124,0,0,106,0,0,124,1,0,107,3, + 0,114,64,0,116,1,0,100,1,0,124,1,0,22,100,2, + 0,124,1,0,131,1,1,130,1,0,110,0,0,136,0,0, + 124,0,0,124,1,0,124,2,0,124,3,0,142,2,0,83, + 40,3,0,0,0,78,117,23,0,0,0,108,111,97,100,101, + 114,32,99,97,110,110,111,116,32,104,97,110,100,108,101,32, + 37,115,114,71,0,0,0,40,2,0,0,0,114,71,0,0, + 0,114,157,0,0,0,40,4,0,0,0,114,75,0,0,0, + 114,71,0,0,0,114,98,0,0,0,114,167,0,0,0,40, + 1,0,0,0,244,6,0,0,0,109,101,116,104,111,100,114, + 4,0,0,0,114,5,0,0,0,244,19,0,0,0,95,99, + 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, + 114,90,2,0,0,115,10,0,0,0,0,1,12,1,12,1, + 15,1,25,1,117,40,0,0,0,95,99,104,101,99,107,95, + 110,97,109,101,46,60,108,111,99,97,108,115,62,46,95,99, + 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, + 114,40,1,0,0,0,114,64,0,0,0,40,2,0,0,0, + 114,174,0,0,0,114,175,0,0,0,114,4,0,0,0,40, + 1,0,0,0,114,174,0,0,0,114,5,0,0,0,244,11, + 0,0,0,95,99,104,101,99,107,95,110,97,109,101,82,2, + 0,0,115,6,0,0,0,0,8,21,6,13,1,114,176,0, + 0,0,99,1,0,0,0,0,0,0,0,2,0,0,0,3, + 0,0,0,3,0,0,0,115,35,0,0,0,135,0,0,102, + 1,0,100,1,0,100,2,0,134,0,0,125,1,0,116,0, + 0,124,1,0,136,0,0,131,2,0,1,124,1,0,83,40, + 3,0,0,0,117,49,0,0,0,68,101,99,111,114,97,116, + 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, + 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, + 32,98,117,105,108,116,45,105,110,46,99,2,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,19,0,0,0,115, + 58,0,0,0,124,1,0,116,0,0,106,1,0,107,7,0, + 114,45,0,116,2,0,100,1,0,106,3,0,124,1,0,131, + 1,0,100,2,0,124,1,0,131,1,1,130,1,0,110,0, + 0,136,0,0,124,0,0,124,1,0,131,2,0,83,40,3, + 0,0,0,78,117,27,0,0,0,123,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,71,0,0,0,40,4,0,0,0,114,7, + 0,0,0,244,20,0,0,0,98,117,105,108,116,105,110,95, + 109,111,100,117,108,101,95,110,97,109,101,115,114,157,0,0, + 0,114,46,0,0,0,40,2,0,0,0,114,75,0,0,0, + 244,8,0,0,0,102,117,108,108,110,97,109,101,40,1,0, + 0,0,114,168,0,0,0,114,4,0,0,0,114,5,0,0, + 0,244,25,0,0,0,95,114,101,113,117,105,114,101,115,95, + 98,117,105,108,116,105,110,95,119,114,97,112,112,101,114,102, + 2,0,0,115,8,0,0,0,0,1,15,1,18,1,12,1, + 117,52,0,0,0,95,114,101,113,117,105,114,101,115,95,98, + 117,105,108,116,105,110,46,60,108,111,99,97,108,115,62,46, 95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,105, - 110,46,60,108,111,99,97,108,115,62,46,95,114,101,113,117, - 105,114,101,115,95,98,117,105,108,116,105,110,95,119,114,97, - 112,112,101,114,40,1,0,0,0,117,5,0,0,0,95,119, - 114,97,112,40,2,0,0,0,117,3,0,0,0,102,120,110, - 117,25,0,0,0,95,114,101,113,117,105,114,101,115,95,98, - 117,105,108,116,105,110,95,119,114,97,112,112,101,114,40,0, - 0,0,0,40,1,0,0,0,117,3,0,0,0,102,120,110, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,17,0,0,0,95,114,101,113,117,105,114,101,115, - 95,98,117,105,108,116,105,110,77,2,0,0,115,6,0,0, - 0,0,2,18,5,13,1,117,17,0,0,0,95,114,101,113, - 117,105,114,101,115,95,98,117,105,108,116,105,110,99,1,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,3,0, - 0,0,115,35,0,0,0,135,0,0,102,1,0,100,1,0, - 100,2,0,134,0,0,125,1,0,116,0,0,124,1,0,136, - 0,0,131,2,0,1,124,1,0,83,40,3,0,0,0,117, - 47,0,0,0,68,101,99,111,114,97,116,111,114,32,116,111, - 32,118,101,114,105,102,121,32,116,104,101,32,110,97,109,101, - 100,32,109,111,100,117,108,101,32,105,115,32,102,114,111,122, - 101,110,46,99,2,0,0,0,0,0,0,0,2,0,0,0, - 4,0,0,0,19,0,0,0,115,58,0,0,0,116,0,0, - 106,1,0,124,1,0,131,1,0,115,45,0,116,2,0,100, - 1,0,106,3,0,124,1,0,131,1,0,100,2,0,124,1, - 0,131,1,1,130,1,0,110,0,0,136,0,0,124,0,0, - 124,1,0,131,2,0,83,40,3,0,0,0,78,117,25,0, - 0,0,123,125,32,105,115,32,110,111,116,32,97,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,117,4,0,0,0, - 110,97,109,101,40,4,0,0,0,117,4,0,0,0,95,105, - 109,112,117,9,0,0,0,105,115,95,102,114,111,122,101,110, - 117,11,0,0,0,73,109,112,111,114,116,69,114,114,111,114, - 117,6,0,0,0,102,111,114,109,97,116,40,2,0,0,0, - 117,4,0,0,0,115,101,108,102,117,8,0,0,0,102,117, - 108,108,110,97,109,101,40,1,0,0,0,117,3,0,0,0, - 102,120,110,40,0,0,0,0,117,29,0,0,0,60,102,114, - 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, - 98,111,111,116,115,116,114,97,112,62,117,24,0,0,0,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, - 119,114,97,112,112,101,114,90,2,0,0,115,8,0,0,0, - 0,1,15,1,18,1,12,1,117,50,0,0,0,95,114,101, - 113,117,105,114,101,115,95,102,114,111,122,101,110,46,60,108, - 111,99,97,108,115,62,46,95,114,101,113,117,105,114,101,115, - 95,102,114,111,122,101,110,95,119,114,97,112,112,101,114,40, - 1,0,0,0,117,5,0,0,0,95,119,114,97,112,40,2, - 0,0,0,117,3,0,0,0,102,120,110,117,24,0,0,0, - 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, - 95,119,114,97,112,112,101,114,40,0,0,0,0,40,1,0, - 0,0,117,3,0,0,0,102,120,110,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,16,0,0, - 0,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, - 110,88,2,0,0,115,6,0,0,0,0,2,18,5,13,1, - 117,16,0,0,0,95,114,101,113,117,105,114,101,115,95,102, - 114,111,122,101,110,99,2,0,0,0,0,0,0,0,5,0, - 0,0,5,0,0,0,67,0,0,0,115,87,0,0,0,124, - 0,0,106,0,0,124,1,0,131,1,0,92,2,0,125,2, - 0,125,3,0,124,2,0,100,3,0,107,8,0,114,83,0, - 116,2,0,124,3,0,131,1,0,114,83,0,100,1,0,125, - 4,0,116,3,0,106,4,0,124,4,0,106,5,0,124,3, - 0,100,2,0,25,131,1,0,116,6,0,131,2,0,1,110, - 0,0,124,2,0,83,40,4,0,0,0,117,86,0,0,0, - 84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,111, - 97,100,101,114,32,102,111,114,32,116,104,101,32,115,112,101, - 99,105,102,105,101,100,32,109,111,100,117,108,101,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,117,44,0,0,0,78,111,116,32,105, - 109,112,111,114,116,105,110,103,32,100,105,114,101,99,116,111, - 114,121,32,123,125,58,32,109,105,115,115,105,110,103,32,95, - 95,105,110,105,116,95,95,105,0,0,0,0,78,40,7,0, - 0,0,117,11,0,0,0,102,105,110,100,95,108,111,97,100, - 101,114,117,4,0,0,0,78,111,110,101,117,3,0,0,0, - 108,101,110,117,9,0,0,0,95,119,97,114,110,105,110,103, - 115,117,4,0,0,0,119,97,114,110,117,6,0,0,0,102, - 111,114,109,97,116,117,13,0,0,0,73,109,112,111,114,116, - 87,97,114,110,105,110,103,40,5,0,0,0,117,4,0,0, - 0,115,101,108,102,117,8,0,0,0,102,117,108,108,110,97, - 109,101,117,6,0,0,0,108,111,97,100,101,114,117,8,0, - 0,0,112,111,114,116,105,111,110,115,117,3,0,0,0,109, - 115,103,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,17, - 0,0,0,95,102,105,110,100,95,109,111,100,117,108,101,95, - 115,104,105,109,99,2,0,0,115,10,0,0,0,0,6,21, - 1,24,1,6,1,32,1,117,17,0,0,0,95,102,105,110, - 100,95,109,111,100,117,108,101,95,115,104,105,109,99,1,0, - 0,0,0,0,0,0,1,0,0,0,6,0,0,0,66,0, - 0,0,115,173,0,0,0,124,0,0,69,101,0,0,90,1, - 0,100,0,0,90,2,0,100,1,0,90,3,0,101,4,0, - 100,2,0,100,3,0,132,0,0,131,1,0,90,5,0,101, - 4,0,100,14,0,100,4,0,100,5,0,132,1,0,131,1, - 0,90,7,0,101,4,0,101,8,0,101,9,0,101,10,0, - 100,6,0,100,7,0,132,0,0,131,1,0,131,1,0,131, - 1,0,131,1,0,90,11,0,101,4,0,101,10,0,100,8, - 0,100,9,0,132,0,0,131,1,0,131,1,0,90,12,0, - 101,4,0,101,10,0,100,10,0,100,11,0,132,0,0,131, - 1,0,131,1,0,90,13,0,101,4,0,101,10,0,100,12, - 0,100,13,0,132,0,0,131,1,0,131,1,0,90,14,0, - 100,14,0,83,40,15,0,0,0,117,15,0,0,0,66,117, - 105,108,116,105,110,73,109,112,111,114,116,101,114,117,144,0, - 0,0,77,101,116,97,32,112,97,116,104,32,105,109,112,111, - 114,116,32,102,111,114,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,115,46,10,10,32,32,32,32,65,108, - 108,32,109,101,116,104,111,100,115,32,97,114,101,32,101,105, - 116,104,101,114,32,99,108,97,115,115,32,111,114,32,115,116, - 97,116,105,99,32,109,101,116,104,111,100,115,32,116,111,32, - 97,118,111,105,100,32,116,104,101,32,110,101,101,100,32,116, - 111,10,32,32,32,32,105,110,115,116,97,110,116,105,97,116, - 101,32,116,104,101,32,99,108,97,115,115,46,10,10,32,32, - 32,32,99,2,0,0,0,0,0,0,0,2,0,0,0,2, - 0,0,0,67,0,0,0,115,16,0,0,0,100,1,0,106, - 0,0,124,1,0,106,1,0,131,1,0,83,40,2,0,0, - 0,78,117,24,0,0,0,60,109,111,100,117,108,101,32,39, - 123,125,39,32,40,98,117,105,108,116,45,105,110,41,62,40, - 2,0,0,0,117,6,0,0,0,102,111,114,109,97,116,117, - 8,0,0,0,95,95,110,97,109,101,95,95,40,2,0,0, - 0,117,3,0,0,0,99,108,115,117,6,0,0,0,109,111, - 100,117,108,101,40,0,0,0,0,40,0,0,0,0,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,11,0,0,0,109,111,100,117,108,101,95,114,101,112,114, - 125,2,0,0,115,2,0,0,0,0,2,117,27,0,0,0, - 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,99,3,0,0,0, - 0,0,0,0,3,0,0,0,2,0,0,0,67,0,0,0, - 115,39,0,0,0,124,2,0,100,1,0,107,9,0,114,16, - 0,100,1,0,83,116,1,0,106,2,0,124,1,0,131,1, - 0,114,35,0,124,0,0,83,100,1,0,83,40,2,0,0, - 0,117,113,0,0,0,70,105,110,100,32,116,104,101,32,98, - 117,105,108,116,45,105,110,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,32,32,32,32,73,102,32,39,112,97,116, - 104,39,32,105,115,32,101,118,101,114,32,115,112,101,99,105, - 102,105,101,100,32,116,104,101,110,32,116,104,101,32,115,101, - 97,114,99,104,32,105,115,32,99,111,110,115,105,100,101,114, - 101,100,32,97,32,102,97,105,108,117,114,101,46,10,10,32, - 32,32,32,32,32,32,32,78,40,3,0,0,0,117,4,0, - 0,0,78,111,110,101,117,4,0,0,0,95,105,109,112,117, - 10,0,0,0,105,115,95,98,117,105,108,116,105,110,40,3, - 0,0,0,117,3,0,0,0,99,108,115,117,8,0,0,0, - 102,117,108,108,110,97,109,101,117,4,0,0,0,112,97,116, - 104,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,11,0, - 0,0,102,105,110,100,95,109,111,100,117,108,101,129,2,0, - 0,115,6,0,0,0,0,7,12,1,4,1,117,27,0,0, - 0,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,3,0,0,0,9,0,0,0,67,0,0, - 0,115,88,0,0,0,124,1,0,116,0,0,106,1,0,107, - 6,0,125,2,0,121,20,0,116,2,0,116,3,0,106,4, - 0,124,1,0,131,2,0,83,87,110,46,0,1,1,1,124, - 2,0,12,114,76,0,124,1,0,116,0,0,106,1,0,107, - 6,0,114,76,0,116,0,0,106,1,0,124,1,0,61,110, - 0,0,130,0,0,89,110,1,0,88,100,1,0,83,40,2, - 0,0,0,117,23,0,0,0,76,111,97,100,32,97,32,98, - 117,105,108,116,45,105,110,32,109,111,100,117,108,101,46,78, - 40,5,0,0,0,117,3,0,0,0,115,121,115,117,7,0, - 0,0,109,111,100,117,108,101,115,117,25,0,0,0,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,117,4,0,0,0,95,105,109,112, - 117,12,0,0,0,105,110,105,116,95,98,117,105,108,116,105, - 110,40,3,0,0,0,117,3,0,0,0,99,108,115,117,8, - 0,0,0,102,117,108,108,110,97,109,101,117,9,0,0,0, - 105,115,95,114,101,108,111,97,100,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,11,0,0,0,108,111,97,100,95,109, - 111,100,117,108,101,140,2,0,0,115,14,0,0,0,0,6, - 15,1,3,1,20,1,3,1,22,1,13,1,117,27,0,0, + 110,95,119,114,97,112,112,101,114,40,1,0,0,0,114,64, + 0,0,0,40,2,0,0,0,114,168,0,0,0,114,179,0, + 0,0,114,4,0,0,0,40,1,0,0,0,114,168,0,0, + 0,114,5,0,0,0,244,17,0,0,0,95,114,101,113,117, + 105,114,101,115,95,98,117,105,108,116,105,110,100,2,0,0, + 115,6,0,0,0,0,2,18,5,13,1,114,180,0,0,0, + 99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,0, + 0,3,0,0,0,115,35,0,0,0,135,0,0,102,1,0, + 100,1,0,100,2,0,134,0,0,125,1,0,116,0,0,124, + 1,0,136,0,0,131,2,0,1,124,1,0,83,40,3,0, + 0,0,117,47,0,0,0,68,101,99,111,114,97,116,111,114, + 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, + 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,102, + 114,111,122,101,110,46,99,2,0,0,0,0,0,0,0,2, + 0,0,0,4,0,0,0,19,0,0,0,115,58,0,0,0, + 116,0,0,106,1,0,124,1,0,131,1,0,115,45,0,116, + 2,0,100,1,0,106,3,0,124,1,0,131,1,0,100,2, + 0,124,1,0,131,1,1,130,1,0,110,0,0,136,0,0, + 124,0,0,124,1,0,131,2,0,83,40,3,0,0,0,78, + 117,25,0,0,0,123,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,71, + 0,0,0,40,4,0,0,0,114,94,0,0,0,244,9,0, + 0,0,105,115,95,102,114,111,122,101,110,114,157,0,0,0, + 114,46,0,0,0,40,2,0,0,0,114,75,0,0,0,114, + 178,0,0,0,40,1,0,0,0,114,168,0,0,0,114,4, + 0,0,0,114,5,0,0,0,244,24,0,0,0,95,114,101, + 113,117,105,114,101,115,95,102,114,111,122,101,110,95,119,114, + 97,112,112,101,114,113,2,0,0,115,8,0,0,0,0,1, + 15,1,18,1,12,1,117,50,0,0,0,95,114,101,113,117, + 105,114,101,115,95,102,114,111,122,101,110,46,60,108,111,99, + 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,102, + 114,111,122,101,110,95,119,114,97,112,112,101,114,40,1,0, + 0,0,114,64,0,0,0,40,2,0,0,0,114,168,0,0, + 0,114,182,0,0,0,114,4,0,0,0,40,1,0,0,0, + 114,168,0,0,0,114,5,0,0,0,244,16,0,0,0,95, + 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,111, + 2,0,0,115,6,0,0,0,0,2,18,5,13,1,114,183, + 0,0,0,99,2,0,0,0,0,0,0,0,5,0,0,0, + 5,0,0,0,67,0,0,0,115,87,0,0,0,124,0,0, + 106,0,0,124,1,0,131,1,0,92,2,0,125,2,0,125, + 3,0,124,2,0,100,1,0,107,8,0,114,83,0,116,1, + 0,124,3,0,131,1,0,114,83,0,100,2,0,125,4,0, + 116,2,0,106,3,0,124,4,0,106,4,0,124,3,0,100, + 3,0,25,131,1,0,116,5,0,131,2,0,1,110,0,0, + 124,2,0,83,40,4,0,0,0,117,86,0,0,0,84,114, + 121,32,116,111,32,102,105,110,100,32,97,32,108,111,97,100, + 101,114,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,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,78,117,44,0,0,0,78,111,116,32,105,109, + 112,111,114,116,105,110,103,32,100,105,114,101,99,116,111,114, + 121,32,123,125,58,32,109,105,115,115,105,110,103,32,95,95, + 105,110,105,116,95,95,114,67,0,0,0,40,6,0,0,0, + 244,11,0,0,0,102,105,110,100,95,108,111,97,100,101,114, + 114,31,0,0,0,244,9,0,0,0,95,119,97,114,110,105, + 110,103,115,244,4,0,0,0,119,97,114,110,114,46,0,0, + 0,244,13,0,0,0,73,109,112,111,114,116,87,97,114,110, + 105,110,103,40,5,0,0,0,114,75,0,0,0,114,178,0, + 0,0,114,160,0,0,0,244,8,0,0,0,112,111,114,116, + 105,111,110,115,244,3,0,0,0,109,115,103,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,244,17,0,0,0, + 95,102,105,110,100,95,109,111,100,117,108,101,95,115,104,105, + 109,122,2,0,0,115,10,0,0,0,0,6,21,1,24,1, + 6,1,32,1,114,190,0,0,0,99,4,0,0,0,0,0, + 0,0,11,0,0,0,19,0,0,0,67,0,0,0,115,243, + 1,0,0,105,0,0,125,4,0,124,2,0,100,1,0,107, + 9,0,114,31,0,124,2,0,124,4,0,100,2,0,60,110, + 6,0,100,3,0,125,2,0,124,3,0,100,1,0,107,9, + 0,114,62,0,124,3,0,124,4,0,100,4,0,60,110,0, + 0,124,0,0,100,1,0,100,5,0,133,2,0,25,125,5, + 0,124,0,0,100,5,0,100,6,0,133,2,0,25,125,6, + 0,124,0,0,100,6,0,100,7,0,133,2,0,25,125,7, + 0,124,5,0,116,0,0,107,3,0,114,168,0,100,8,0, + 106,1,0,124,2,0,124,5,0,131,2,0,125,8,0,116, + 2,0,124,8,0,131,1,0,1,116,3,0,124,8,0,124, + 4,0,141,1,0,130,1,0,110,116,0,116,4,0,124,6, + 0,131,1,0,100,5,0,107,3,0,114,226,0,100,9,0, + 106,1,0,124,2,0,131,1,0,125,8,0,116,2,0,124, + 8,0,131,1,0,1,116,5,0,124,8,0,131,1,0,130, + 1,0,110,58,0,116,4,0,124,7,0,131,1,0,100,5, + 0,107,3,0,114,28,1,100,10,0,106,1,0,124,2,0, + 131,1,0,125,8,0,116,2,0,124,8,0,131,1,0,1, + 116,5,0,124,8,0,131,1,0,130,1,0,110,0,0,124, + 1,0,100,1,0,107,9,0,114,229,1,121,20,0,116,6, + 0,124,1,0,100,11,0,25,131,1,0,125,9,0,87,110, + 18,0,4,116,7,0,107,10,0,114,80,1,1,1,1,89, + 110,62,0,88,116,8,0,124,6,0,131,1,0,124,9,0, + 107,3,0,114,142,1,100,12,0,106,1,0,124,2,0,131, + 1,0,125,8,0,116,2,0,124,8,0,131,1,0,1,116, + 3,0,124,8,0,124,4,0,141,1,0,130,1,0,110,0, + 0,121,18,0,124,1,0,100,13,0,25,100,14,0,64,125, + 10,0,87,110,18,0,4,116,7,0,107,10,0,114,180,1, + 1,1,1,89,113,229,1,88,116,8,0,124,7,0,131,1, + 0,124,10,0,107,3,0,114,229,1,116,3,0,100,12,0, + 106,1,0,124,2,0,131,1,0,124,4,0,141,1,0,130, + 1,0,113,229,1,110,0,0,124,0,0,100,7,0,100,1, + 0,133,2,0,25,83,40,15,0,0,0,117,122,1,0,0, + 86,97,108,105,100,97,116,101,32,116,104,101,32,104,101,97, + 100,101,114,32,111,102,32,116,104,101,32,112,97,115,115,101, + 100,45,105,110,32,98,121,116,101,99,111,100,101,32,97,103, + 97,105,110,115,116,32,115,111,117,114,99,101,95,115,116,97, + 116,115,32,40,105,102,10,32,32,32,32,103,105,118,101,110, + 41,32,97,110,100,32,114,101,116,117,114,110,105,110,103,32, + 116,104,101,32,98,121,116,101,99,111,100,101,32,116,104,97, + 116,32,99,97,110,32,98,101,32,99,111,109,112,105,108,101, + 100,32,98,121,32,99,111,109,112,105,108,101,40,41,46,10, + 10,32,32,32,32,65,108,108,32,111,116,104,101,114,32,97, + 114,103,117,109,101,110,116,115,32,97,114,101,32,117,115,101, + 100,32,116,111,32,101,110,104,97,110,99,101,32,101,114,114, + 111,114,32,114,101,112,111,114,116,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,116, + 104,101,32,98,121,116,101,99,111,100,101,32,105,115,10,32, + 32,32,32,102,111,117,110,100,32,116,111,32,98,101,32,115, + 116,97,108,101,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,10,32,32,32,32,116,114,117,110,99,97, + 116,101,100,46,10,10,32,32,32,32,78,114,71,0,0,0, + 117,10,0,0,0,60,98,121,116,101,99,111,100,101,62,114, + 35,0,0,0,114,12,0,0,0,233,8,0,0,0,233,12, + 0,0,0,117,30,0,0,0,98,97,100,32,109,97,103,105, + 99,32,110,117,109,98,101,114,32,105,110,32,123,33,114,125, + 58,32,123,33,114,125,117,43,0,0,0,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,116,105,109,101,115,116,97,109,112,32,105, + 110,32,123,33,114,125,117,48,0,0,0,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,115,105,122,101,32,111,102,32,115,111,117, + 114,99,101,32,105,110,32,123,33,114,125,244,5,0,0,0, + 109,116,105,109,101,117,26,0,0,0,98,121,116,101,99,111, + 100,101,32,105,115,32,115,116,97,108,101,32,102,111,114,32, + 123,33,114,125,244,4,0,0,0,115,105,122,101,108,3,0, + 0,0,255,127,255,127,3,0,40,9,0,0,0,244,12,0, + 0,0,77,65,71,73,67,95,78,85,77,66,69,82,114,46, + 0,0,0,114,137,0,0,0,114,157,0,0,0,114,31,0, + 0,0,244,8,0,0,0,69,79,70,69,114,114,111,114,114, + 14,0,0,0,114,91,0,0,0,114,19,0,0,0,40,11, + 0,0,0,114,52,0,0,0,244,12,0,0,0,115,111,117, + 114,99,101,95,115,116,97,116,115,114,71,0,0,0,114,35, + 0,0,0,116,11,0,0,0,101,120,99,95,100,101,116,97, + 105,108,115,116,5,0,0,0,109,97,103,105,99,116,13,0, + 0,0,114,97,119,95,116,105,109,101,115,116,97,109,112,116, + 8,0,0,0,114,97,119,95,115,105,122,101,114,136,0,0, + 0,244,12,0,0,0,115,111,117,114,99,101,95,109,116,105, + 109,101,244,11,0,0,0,115,111,117,114,99,101,95,115,105, + 122,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,244,25,0,0,0,95,118,97,108,105,100,97,116,101,95, + 98,121,116,101,99,111,100,101,95,104,101,97,100,101,114,135, + 2,0,0,115,76,0,0,0,0,11,6,1,12,1,13,3, + 6,1,12,1,13,1,16,1,16,1,16,1,12,1,18,1, + 10,1,18,1,18,1,15,1,10,1,15,1,18,1,15,1, + 10,1,15,1,12,1,3,1,20,1,13,1,5,2,18,1, + 15,1,10,1,18,1,3,1,18,1,13,1,5,2,18,1, + 15,1,15,1,114,200,0,0,0,99,4,0,0,0,0,0, + 0,0,5,0,0,0,6,0,0,0,67,0,0,0,115,115, + 0,0,0,116,0,0,106,1,0,124,0,0,131,1,0,125, + 4,0,116,2,0,124,4,0,116,3,0,131,2,0,114,78, + 0,116,4,0,100,1,0,124,2,0,131,2,0,1,124,3, + 0,100,2,0,107,9,0,114,74,0,116,5,0,106,6,0, + 124,4,0,124,3,0,131,2,0,1,110,0,0,124,4,0, + 83,116,7,0,100,3,0,106,8,0,124,2,0,131,1,0, + 100,4,0,124,1,0,100,5,0,124,2,0,131,1,2,130, + 1,0,100,2,0,83,40,6,0,0,0,117,60,0,0,0, + 67,111,109,112,105,108,101,32,98,121,116,101,99,111,100,101, + 32,97,115,32,114,101,116,117,114,110,101,100,32,98,121,32, + 95,118,97,108,105,100,97,116,101,95,98,121,116,101,99,111, + 100,101,95,104,101,97,100,101,114,40,41,46,117,21,0,0, + 0,99,111,100,101,32,111,98,106,101,99,116,32,102,114,111, + 109,32,123,33,114,125,78,117,23,0,0,0,78,111,110,45, + 99,111,100,101,32,111,98,106,101,99,116,32,105,110,32,123, + 33,114,125,114,71,0,0,0,114,35,0,0,0,40,9,0, + 0,0,244,7,0,0,0,109,97,114,115,104,97,108,116,5, + 0,0,0,108,111,97,100,115,244,10,0,0,0,105,115,105, + 110,115,116,97,110,99,101,244,10,0,0,0,95,99,111,100, + 101,95,116,121,112,101,114,137,0,0,0,114,94,0,0,0, + 116,16,0,0,0,95,102,105,120,95,99,111,95,102,105,108, + 101,110,97,109,101,114,157,0,0,0,114,46,0,0,0,40, + 5,0,0,0,114,52,0,0,0,114,71,0,0,0,114,125, + 0,0,0,114,126,0,0,0,244,4,0,0,0,99,111,100, + 101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 244,17,0,0,0,95,99,111,109,112,105,108,101,95,98,121, + 116,101,99,111,100,101,190,2,0,0,115,16,0,0,0,0, + 2,15,1,15,1,13,1,12,1,19,1,4,2,18,1,114, + 205,0,0,0,114,67,0,0,0,99,3,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,76, + 0,0,0,116,0,0,116,1,0,131,1,0,125,3,0,124, + 3,0,106,2,0,116,3,0,124,1,0,131,1,0,131,1, + 0,1,124,3,0,106,2,0,116,3,0,124,2,0,131,1, + 0,131,1,0,1,124,3,0,106,2,0,116,4,0,106,5, + 0,124,0,0,131,1,0,131,1,0,1,124,3,0,83,40, + 1,0,0,0,117,80,0,0,0,67,111,109,112,105,108,101, + 32,97,32,99,111,100,101,32,111,98,106,101,99,116,32,105, + 110,116,111,32,98,121,116,101,99,111,100,101,32,102,111,114, + 32,119,114,105,116,105,110,103,32,111,117,116,32,116,111,32, + 97,32,98,121,116,101,45,99,111,109,112,105,108,101,100,10, + 32,32,32,32,102,105,108,101,46,40,6,0,0,0,244,9, + 0,0,0,98,121,116,101,97,114,114,97,121,114,195,0,0, + 0,244,6,0,0,0,101,120,116,101,110,100,114,17,0,0, + 0,114,201,0,0,0,116,5,0,0,0,100,117,109,112,115, + 40,4,0,0,0,114,204,0,0,0,114,193,0,0,0,114, + 199,0,0,0,114,52,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,244,17,0,0,0,95,99,111, + 100,101,95,116,111,95,98,121,116,101,99,111,100,101,202,2, + 0,0,115,10,0,0,0,0,3,12,1,19,1,19,1,22, + 1,114,208,0,0,0,99,1,0,0,0,0,0,0,0,5, + 0,0,0,4,0,0,0,67,0,0,0,115,89,0,0,0, + 100,1,0,100,2,0,108,0,0,125,1,0,116,1,0,106, + 2,0,124,0,0,131,1,0,106,3,0,125,2,0,124,1, + 0,106,4,0,124,2,0,131,1,0,125,3,0,116,1,0, + 106,5,0,100,2,0,100,3,0,131,2,0,125,4,0,124, + 4,0,106,6,0,124,0,0,106,6,0,124,3,0,100,1, + 0,25,131,1,0,131,1,0,83,40,4,0,0,0,117,121, + 0,0,0,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,67,0,0, + 0,78,84,40,7,0,0,0,244,8,0,0,0,116,111,107, + 101,110,105,122,101,114,48,0,0,0,116,7,0,0,0,66, + 121,116,101,115,73,79,116,8,0,0,0,114,101,97,100,108, + 105,110,101,116,15,0,0,0,100,101,116,101,99,116,95,101, + 110,99,111,100,105,110,103,116,25,0,0,0,73,110,99,114, + 101,109,101,110,116,97,108,78,101,119,108,105,110,101,68,101, + 99,111,100,101,114,244,6,0,0,0,100,101,99,111,100,101, + 40,5,0,0,0,244,12,0,0,0,115,111,117,114,99,101, + 95,98,121,116,101,115,114,209,0,0,0,116,21,0,0,0, + 115,111,117,114,99,101,95,98,121,116,101,115,95,114,101,97, + 100,108,105,110,101,244,8,0,0,0,101,110,99,111,100,105, + 110,103,116,15,0,0,0,110,101,119,108,105,110,101,95,100, + 101,99,111,100,101,114,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,244,13,0,0,0,100,101,99,111,100,101, + 95,115,111,117,114,99,101,212,2,0,0,115,10,0,0,0, + 0,5,12,1,18,1,15,1,18,1,114,213,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, + 64,0,0,0,115,169,0,0,0,101,0,0,90,1,0,100, + 0,0,90,2,0,100,1,0,90,3,0,101,4,0,100,2, + 0,100,3,0,132,0,0,131,1,0,90,5,0,101,4,0, + 100,4,0,100,5,0,100,6,0,132,1,0,131,1,0,90, + 6,0,101,4,0,101,7,0,101,8,0,101,9,0,100,7, + 0,100,8,0,132,0,0,131,1,0,131,1,0,131,1,0, + 131,1,0,90,10,0,101,4,0,101,9,0,100,9,0,100, + 10,0,132,0,0,131,1,0,131,1,0,90,11,0,101,4, + 0,101,9,0,100,11,0,100,12,0,132,0,0,131,1,0, + 131,1,0,90,12,0,101,4,0,101,9,0,100,13,0,100, + 14,0,132,0,0,131,1,0,131,1,0,90,13,0,100,4, + 0,83,40,15,0,0,0,244,15,0,0,0,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,117,144,0,0,0, + 77,101,116,97,32,112,97,116,104,32,105,109,112,111,114,116, + 32,102,111,114,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,115,46,10,10,32,32,32,32,65,108,108,32, + 109,101,116,104,111,100,115,32,97,114,101,32,101,105,116,104, + 101,114,32,99,108,97,115,115,32,111,114,32,115,116,97,116, + 105,99,32,109,101,116,104,111,100,115,32,116,111,32,97,118, + 111,105,100,32,116,104,101,32,110,101,101,100,32,116,111,10, + 32,32,32,32,105,110,115,116,97,110,116,105,97,116,101,32, + 116,104,101,32,99,108,97,115,115,46,10,10,32,32,32,32, + 99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0, + 0,67,0,0,0,115,16,0,0,0,100,1,0,106,0,0, + 124,1,0,106,1,0,131,1,0,83,40,2,0,0,0,78, + 117,24,0,0,0,60,109,111,100,117,108,101,32,123,33,114, + 125,32,40,98,117,105,108,116,45,105,110,41,62,40,2,0, + 0,0,114,46,0,0,0,114,56,0,0,0,40,2,0,0, + 0,244,3,0,0,0,99,108,115,114,161,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,244,11,0, + 0,0,109,111,100,117,108,101,95,114,101,112,114,235,2,0, + 0,115,2,0,0,0,0,2,117,27,0,0,0,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,3,0,0,0,0,0, + 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,39, + 0,0,0,124,2,0,100,1,0,107,9,0,114,16,0,100, + 1,0,83,116,0,0,106,1,0,124,1,0,131,1,0,114, + 35,0,124,0,0,83,100,1,0,83,40,2,0,0,0,117, + 113,0,0,0,70,105,110,100,32,116,104,101,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,32,32,32,32,73,102,32,39,112,97,116,104,39, + 32,105,115,32,101,118,101,114,32,115,112,101,99,105,102,105, + 101,100,32,116,104,101,110,32,116,104,101,32,115,101,97,114, + 99,104,32,105,115,32,99,111,110,115,105,100,101,114,101,100, + 32,97,32,102,97,105,108,117,114,101,46,10,10,32,32,32, + 32,32,32,32,32,78,40,2,0,0,0,114,94,0,0,0, + 116,10,0,0,0,105,115,95,98,117,105,108,116,105,110,40, + 3,0,0,0,114,215,0,0,0,114,178,0,0,0,114,35, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,244,11,0,0,0,102,105,110,100,95,109,111,100,117, + 108,101,239,2,0,0,115,6,0,0,0,0,7,12,1,4, + 1,117,27,0,0,0,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,10,0, + 0,0,67,0,0,0,115,39,0,0,0,116,0,0,124,1, + 0,131,1,0,143,21,0,1,116,1,0,116,2,0,106,3, + 0,124,1,0,131,2,0,83,87,100,1,0,81,88,100,1, + 0,83,40,2,0,0,0,117,23,0,0,0,76,111,97,100, + 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,46,78,40,4,0,0,0,114,138,0,0,0,114,99, + 0,0,0,114,94,0,0,0,116,12,0,0,0,105,110,105, + 116,95,98,117,105,108,116,105,110,40,2,0,0,0,114,215, + 0,0,0,114,178,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,244,11,0,0,0,108,111,97,100, + 95,109,111,100,117,108,101,250,2,0,0,115,4,0,0,0, + 0,6,13,1,117,27,0,0,0,66,117,105,108,116,105,110, + 73,109,112,111,114,116,101,114,46,108,111,97,100,95,109,111, + 100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,0, + 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, + 0,83,40,2,0,0,0,117,57,0,0,0,82,101,116,117, + 114,110,32,78,111,110,101,32,97,115,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,115,32,100,111,32,110, + 111,116,32,104,97,118,101,32,99,111,100,101,32,111,98,106, + 101,99,116,115,46,78,114,4,0,0,0,40,2,0,0,0, + 114,215,0,0,0,114,178,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,244,8,0,0,0,103,101, + 116,95,99,111,100,101,3,3,0,0,115,2,0,0,0,0, + 4,117,24,0,0,0,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,103,101,116,95,99,111,100,101,99,2, + 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, + 0,0,0,115,4,0,0,0,100,1,0,83,40,2,0,0, + 0,117,56,0,0,0,82,101,116,117,114,110,32,78,111,110, + 101,32,97,115,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,115,32,100,111,32,110,111,116,32,104,97,118, + 101,32,115,111,117,114,99,101,32,99,111,100,101,46,78,114, + 4,0,0,0,40,2,0,0,0,114,215,0,0,0,114,178, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,244,10,0,0,0,103,101,116,95,115,111,117,114,99, + 101,9,3,0,0,115,2,0,0,0,0,4,117,26,0,0, 0,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,108,111,97,100,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, - 0,115,4,0,0,0,100,1,0,83,40,2,0,0,0,117, - 57,0,0,0,82,101,116,117,114,110,32,78,111,110,101,32, + 46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0, + 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, + 115,4,0,0,0,100,1,0,83,40,2,0,0,0,117,52, + 0,0,0,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,100,111,32,110,111,116,32,104,97,118,101,32, - 99,111,100,101,32,111,98,106,101,99,116,115,46,78,40,1, - 0,0,0,117,4,0,0,0,78,111,110,101,40,2,0,0, - 0,117,3,0,0,0,99,108,115,117,8,0,0,0,102,117, - 108,108,110,97,109,101,40,0,0,0,0,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,8,0,0,0,103,101,116,95,99,111,100,101,154, - 2,0,0,115,2,0,0,0,0,4,117,24,0,0,0,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, - 0,100,1,0,83,40,2,0,0,0,117,56,0,0,0,82, - 101,116,117,114,110,32,78,111,110,101,32,97,115,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,100, - 111,32,110,111,116,32,104,97,118,101,32,115,111,117,114,99, - 101,32,99,111,100,101,46,78,40,1,0,0,0,117,4,0, - 0,0,78,111,110,101,40,2,0,0,0,117,3,0,0,0, - 99,108,115,117,8,0,0,0,102,117,108,108,110,97,109,101, - 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,10,0,0, - 0,103,101,116,95,115,111,117,114,99,101,160,2,0,0,115, - 2,0,0,0,0,4,117,26,0,0,0,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,46,103,101,116,95,115, - 111,117,114,99,101,99,2,0,0,0,0,0,0,0,2,0, - 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100, - 1,0,83,40,2,0,0,0,117,52,0,0,0,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,40,1,0,0,0,117,5,0,0,0,70,97,108,115, - 101,40,2,0,0,0,117,3,0,0,0,99,108,115,117,8, - 0,0,0,102,117,108,108,110,97,109,101,40,0,0,0,0, - 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, - 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, - 116,115,116,114,97,112,62,117,10,0,0,0,105,115,95,112, - 97,99,107,97,103,101,166,2,0,0,115,2,0,0,0,0, - 4,117,26,0,0,0,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,105,115,95,112,97,99,107,97,103,101, - 78,40,15,0,0,0,117,8,0,0,0,95,95,110,97,109, - 101,95,95,117,10,0,0,0,95,95,109,111,100,117,108,101, - 95,95,117,12,0,0,0,95,95,113,117,97,108,110,97,109, - 101,95,95,117,7,0,0,0,95,95,100,111,99,95,95,117, - 11,0,0,0,99,108,97,115,115,109,101,116,104,111,100,117, - 11,0,0,0,109,111,100,117,108,101,95,114,101,112,114,117, - 4,0,0,0,78,111,110,101,117,11,0,0,0,102,105,110, - 100,95,109,111,100,117,108,101,117,11,0,0,0,115,101,116, - 95,112,97,99,107,97,103,101,117,10,0,0,0,115,101,116, - 95,108,111,97,100,101,114,117,17,0,0,0,95,114,101,113, - 117,105,114,101,115,95,98,117,105,108,116,105,110,117,11,0, - 0,0,108,111,97,100,95,109,111,100,117,108,101,117,8,0, - 0,0,103,101,116,95,99,111,100,101,117,10,0,0,0,103, - 101,116,95,115,111,117,114,99,101,117,10,0,0,0,105,115, - 95,112,97,99,107,97,103,101,40,1,0,0,0,117,10,0, - 0,0,95,95,108,111,99,97,108,115,95,95,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,15,0,0,0,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,116,2,0,0, - 115,28,0,0,0,16,7,6,2,18,4,3,1,18,10,3, - 1,3,1,3,1,27,11,3,1,21,5,3,1,21,5,3, - 1,117,15,0,0,0,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,99,1,0,0,0,0,0,0,0,1,0, - 0,0,6,0,0,0,66,0,0,0,115,173,0,0,0,124, - 0,0,69,101,0,0,90,1,0,100,0,0,90,2,0,100, - 1,0,90,3,0,101,4,0,100,2,0,100,3,0,132,0, - 0,131,1,0,90,5,0,101,4,0,100,14,0,100,4,0, - 100,5,0,132,1,0,131,1,0,90,7,0,101,4,0,101, - 8,0,101,9,0,101,10,0,100,6,0,100,7,0,132,0, - 0,131,1,0,131,1,0,131,1,0,131,1,0,90,11,0, - 101,4,0,101,10,0,100,8,0,100,9,0,132,0,0,131, - 1,0,131,1,0,90,12,0,101,4,0,101,10,0,100,10, - 0,100,11,0,132,0,0,131,1,0,131,1,0,90,13,0, - 101,4,0,101,10,0,100,12,0,100,13,0,132,0,0,131, - 1,0,131,1,0,90,14,0,100,14,0,83,40,15,0,0, - 0,117,14,0,0,0,70,114,111,122,101,110,73,109,112,111, - 114,116,101,114,117,142,0,0,0,77,101,116,97,32,112,97, - 116,104,32,105,109,112,111,114,116,32,102,111,114,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,115,46,10,10,32, - 32,32,32,65,108,108,32,109,101,116,104,111,100,115,32,97, - 114,101,32,101,105,116,104,101,114,32,99,108,97,115,115,32, - 111,114,32,115,116,97,116,105,99,32,109,101,116,104,111,100, - 115,32,116,111,32,97,118,111,105,100,32,116,104,101,32,110, - 101,101,100,32,116,111,10,32,32,32,32,105,110,115,116,97, - 110,116,105,97,116,101,32,116,104,101,32,99,108,97,115,115, - 46,10,10,32,32,32,32,99,2,0,0,0,0,0,0,0, - 2,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,100,1,0,106,0,0,124,1,0,106,1,0,131,1,0, - 83,40,2,0,0,0,78,117,22,0,0,0,60,109,111,100, - 117,108,101,32,39,123,125,39,32,40,102,114,111,122,101,110, - 41,62,40,2,0,0,0,117,6,0,0,0,102,111,114,109, - 97,116,117,8,0,0,0,95,95,110,97,109,101,95,95,40, - 2,0,0,0,117,3,0,0,0,99,108,115,117,1,0,0, - 0,109,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,11, - 0,0,0,109,111,100,117,108,101,95,114,101,112,114,182,2, - 0,0,115,2,0,0,0,0,2,117,26,0,0,0,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,99,3,0,0,0,0,0,0, - 0,3,0,0,0,2,0,0,0,67,0,0,0,115,23,0, - 0,0,116,0,0,106,1,0,124,1,0,131,1,0,114,19, - 0,124,0,0,83,100,1,0,83,40,2,0,0,0,117,21, - 0,0,0,70,105,110,100,32,97,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,46,78,40,3,0,0,0,117,4, - 0,0,0,95,105,109,112,117,9,0,0,0,105,115,95,102, - 114,111,122,101,110,117,4,0,0,0,78,111,110,101,40,3, - 0,0,0,117,3,0,0,0,99,108,115,117,8,0,0,0, - 102,117,108,108,110,97,109,101,117,4,0,0,0,112,97,116, - 104,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,11,0, - 0,0,102,105,110,100,95,109,111,100,117,108,101,186,2,0, - 0,115,2,0,0,0,0,3,117,26,0,0,0,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,46,102,105,110,100, - 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, - 4,0,0,0,9,0,0,0,67,0,0,0,115,100,0,0, - 0,124,1,0,116,0,0,106,1,0,107,6,0,125,2,0, - 121,32,0,116,2,0,116,3,0,106,4,0,124,1,0,131, - 2,0,125,3,0,124,3,0,96,5,0,124,3,0,83,87, - 110,46,0,1,1,1,124,2,0,12,114,88,0,124,1,0, - 116,0,0,106,1,0,107,6,0,114,88,0,116,0,0,106, - 1,0,124,1,0,61,110,0,0,130,0,0,89,110,1,0, - 88,100,1,0,83,40,2,0,0,0,117,21,0,0,0,76, - 111,97,100,32,97,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,46,78,40,6,0,0,0,117,3,0,0,0,115, - 121,115,117,7,0,0,0,109,111,100,117,108,101,115,117,25, - 0,0,0,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,117,4,0,0, - 0,95,105,109,112,117,11,0,0,0,105,110,105,116,95,102, - 114,111,122,101,110,117,8,0,0,0,95,95,102,105,108,101, - 95,95,40,4,0,0,0,117,3,0,0,0,99,108,115,117, - 8,0,0,0,102,117,108,108,110,97,109,101,117,9,0,0, - 0,105,115,95,114,101,108,111,97,100,117,1,0,0,0,109, - 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,11,0,0, - 0,108,111,97,100,95,109,111,100,117,108,101,191,2,0,0, - 115,18,0,0,0,0,6,15,1,3,1,18,2,6,1,8, - 1,3,1,22,1,13,1,117,26,0,0,0,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,108,111,97,100,95, - 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,2, - 0,0,0,2,0,0,0,67,0,0,0,115,13,0,0,0, - 116,0,0,106,1,0,124,1,0,131,1,0,83,40,1,0, - 0,0,117,45,0,0,0,82,101,116,117,114,110,32,116,104, - 101,32,99,111,100,101,32,111,98,106,101,99,116,32,102,111, - 114,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,46,40,2,0,0,0,117,4,0,0,0,95,105, - 109,112,117,17,0,0,0,103,101,116,95,102,114,111,122,101, - 110,95,111,98,106,101,99,116,40,2,0,0,0,117,3,0, - 0,0,99,108,115,117,8,0,0,0,102,117,108,108,110,97, - 109,101,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,8, - 0,0,0,103,101,116,95,99,111,100,101,208,2,0,0,115, + 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, + 99,107,97,103,101,115,46,70,114,4,0,0,0,40,2,0, + 0,0,114,215,0,0,0,114,178,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,156,0,0,0, + 15,3,0,0,115,2,0,0,0,0,4,117,26,0,0,0, + 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46, + 105,115,95,112,97,99,107,97,103,101,40,14,0,0,0,114, + 56,0,0,0,114,55,0,0,0,114,57,0,0,0,114,58, + 0,0,0,244,11,0,0,0,99,108,97,115,115,109,101,116, + 104,111,100,114,216,0,0,0,114,217,0,0,0,114,170,0, + 0,0,114,173,0,0,0,114,180,0,0,0,114,218,0,0, + 0,114,219,0,0,0,114,220,0,0,0,114,156,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,214,0,0,0,226,2,0,0,115,28,0, + 0,0,12,7,6,2,18,4,3,1,18,10,3,1,3,1, + 3,1,27,6,3,1,21,5,3,1,21,5,3,1,114,214, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 6,0,0,0,64,0,0,0,115,169,0,0,0,101,0,0, + 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,101, + 4,0,100,2,0,100,3,0,132,0,0,131,1,0,90,5, + 0,101,4,0,100,4,0,100,5,0,100,6,0,132,1,0, + 131,1,0,90,6,0,101,4,0,101,7,0,101,8,0,101, + 9,0,100,7,0,100,8,0,132,0,0,131,1,0,131,1, + 0,131,1,0,131,1,0,90,10,0,101,4,0,101,9,0, + 100,9,0,100,10,0,132,0,0,131,1,0,131,1,0,90, + 11,0,101,4,0,101,9,0,100,11,0,100,12,0,132,0, + 0,131,1,0,131,1,0,90,12,0,101,4,0,101,9,0, + 100,13,0,100,14,0,132,0,0,131,1,0,131,1,0,90, + 13,0,100,4,0,83,40,15,0,0,0,244,14,0,0,0, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,117,142, + 0,0,0,77,101,116,97,32,112,97,116,104,32,105,109,112, + 111,114,116,32,102,111,114,32,102,114,111,122,101,110,32,109, + 111,100,117,108,101,115,46,10,10,32,32,32,32,65,108,108, + 32,109,101,116,104,111,100,115,32,97,114,101,32,101,105,116, + 104,101,114,32,99,108,97,115,115,32,111,114,32,115,116,97, + 116,105,99,32,109,101,116,104,111,100,115,32,116,111,32,97, + 118,111,105,100,32,116,104,101,32,110,101,101,100,32,116,111, + 10,32,32,32,32,105,110,115,116,97,110,116,105,97,116,101, + 32,116,104,101,32,99,108,97,115,115,46,10,10,32,32,32, + 32,99,2,0,0,0,0,0,0,0,2,0,0,0,2,0, + 0,0,67,0,0,0,115,16,0,0,0,100,1,0,106,0, + 0,124,1,0,106,1,0,131,1,0,83,40,2,0,0,0, + 78,117,22,0,0,0,60,109,111,100,117,108,101,32,123,33, + 114,125,32,40,102,114,111,122,101,110,41,62,40,2,0,0, + 0,114,46,0,0,0,114,56,0,0,0,40,2,0,0,0, + 114,215,0,0,0,244,1,0,0,0,109,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,216,0,0,0,31, + 3,0,0,115,2,0,0,0,0,2,117,26,0,0,0,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,3,0,0,0,0, + 0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115, + 23,0,0,0,116,0,0,106,1,0,124,1,0,131,1,0, + 114,19,0,124,0,0,83,100,1,0,83,40,2,0,0,0, + 117,21,0,0,0,70,105,110,100,32,97,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,46,78,40,2,0,0,0, + 114,94,0,0,0,114,181,0,0,0,40,3,0,0,0,114, + 215,0,0,0,114,178,0,0,0,114,35,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,217,0, + 0,0,35,3,0,0,115,2,0,0,0,0,3,117,26,0, + 0,0,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,3,0,0,0,10,0,0,0,67,0,0, + 0,115,51,0,0,0,116,0,0,124,1,0,131,1,0,143, + 33,0,1,116,1,0,116,2,0,106,3,0,124,1,0,131, + 2,0,125,2,0,124,2,0,96,4,0,124,2,0,83,87, + 100,1,0,81,88,100,1,0,83,40,2,0,0,0,117,21, + 0,0,0,76,111,97,100,32,97,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,46,78,40,5,0,0,0,114,138, + 0,0,0,114,99,0,0,0,114,94,0,0,0,116,11,0, + 0,0,105,110,105,116,95,102,114,111,122,101,110,114,164,0, + 0,0,40,3,0,0,0,114,215,0,0,0,114,178,0,0, + 0,114,223,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,218,0,0,0,40,3,0,0,115,8, + 0,0,0,0,6,13,1,18,2,6,1,117,26,0,0,0, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,108, + 111,97,100,95,109,111,100,117,108,101,99,2,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, + 13,0,0,0,116,0,0,106,1,0,124,1,0,131,1,0, + 83,40,1,0,0,0,117,45,0,0,0,82,101,116,117,114, + 110,32,116,104,101,32,99,111,100,101,32,111,98,106,101,99, + 116,32,102,111,114,32,116,104,101,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,46,40,2,0,0,0,114,94,0, + 0,0,116,17,0,0,0,103,101,116,95,102,114,111,122,101, + 110,95,111,98,106,101,99,116,40,2,0,0,0,114,215,0, + 0,0,114,178,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,219,0,0,0,52,3,0,0,115, 2,0,0,0,0,4,117,23,0,0,0,70,114,111,122,101, 110,73,109,112,111,114,116,101,114,46,103,101,116,95,99,111, 100,101,99,2,0,0,0,0,0,0,0,2,0,0,0,1, @@ -1614,454 +1598,308 @@ unsigned char _Py_M__importlib[] = { 32,78,111,110,101,32,97,115,32,102,114,111,122,101,110,32, 109,111,100,117,108,101,115,32,100,111,32,110,111,116,32,104, 97,118,101,32,115,111,117,114,99,101,32,99,111,100,101,46, - 78,40,1,0,0,0,117,4,0,0,0,78,111,110,101,40, - 2,0,0,0,117,3,0,0,0,99,108,115,117,8,0,0, - 0,102,117,108,108,110,97,109,101,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,10,0,0,0,103,101,116,95,115,111, - 117,114,99,101,214,2,0,0,115,2,0,0,0,0,4,117, + 78,114,4,0,0,0,40,2,0,0,0,114,215,0,0,0, + 114,178,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,220,0,0,0,58,3,0,0,115,2,0, + 0,0,0,4,117,25,0,0,0,70,114,111,122,101,110,73, + 109,112,111,114,116,101,114,46,103,101,116,95,115,111,117,114, + 99,101,99,2,0,0,0,0,0,0,0,2,0,0,0,2, + 0,0,0,67,0,0,0,115,13,0,0,0,116,0,0,106, + 1,0,124,1,0,131,1,0,83,40,1,0,0,0,117,46, + 0,0,0,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,40,2,0,0,0,114,94,0,0,0,116,17,0,0,0, + 105,115,95,102,114,111,122,101,110,95,112,97,99,107,97,103, + 101,40,2,0,0,0,114,215,0,0,0,114,178,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 156,0,0,0,64,3,0,0,115,2,0,0,0,0,4,117, 25,0,0,0,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, - 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, - 0,0,115,13,0,0,0,116,0,0,106,1,0,124,1,0, - 131,1,0,83,40,1,0,0,0,117,46,0,0,0,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,40,2,0,0, - 0,117,4,0,0,0,95,105,109,112,117,17,0,0,0,105, - 115,95,102,114,111,122,101,110,95,112,97,99,107,97,103,101, - 40,2,0,0,0,117,3,0,0,0,99,108,115,117,8,0, - 0,0,102,117,108,108,110,97,109,101,40,0,0,0,0,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,10,0,0,0,105,115,95,112,97, - 99,107,97,103,101,220,2,0,0,115,2,0,0,0,0,4, - 117,25,0,0,0,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,105,115,95,112,97,99,107,97,103,101,78,40, - 15,0,0,0,117,8,0,0,0,95,95,110,97,109,101,95, - 95,117,10,0,0,0,95,95,109,111,100,117,108,101,95,95, - 117,12,0,0,0,95,95,113,117,97,108,110,97,109,101,95, - 95,117,7,0,0,0,95,95,100,111,99,95,95,117,11,0, - 0,0,99,108,97,115,115,109,101,116,104,111,100,117,11,0, - 0,0,109,111,100,117,108,101,95,114,101,112,114,117,4,0, - 0,0,78,111,110,101,117,11,0,0,0,102,105,110,100,95, - 109,111,100,117,108,101,117,11,0,0,0,115,101,116,95,112, - 97,99,107,97,103,101,117,10,0,0,0,115,101,116,95,108, - 111,97,100,101,114,117,16,0,0,0,95,114,101,113,117,105, - 114,101,115,95,102,114,111,122,101,110,117,11,0,0,0,108, - 111,97,100,95,109,111,100,117,108,101,117,8,0,0,0,103, - 101,116,95,99,111,100,101,117,10,0,0,0,103,101,116,95, - 115,111,117,114,99,101,117,10,0,0,0,105,115,95,112,97, - 99,107,97,103,101,40,1,0,0,0,117,10,0,0,0,95, - 95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,14,0,0,0,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,173,2,0,0,115,28,0,0, - 0,16,7,6,2,18,4,3,1,18,4,3,1,3,1,3, - 1,27,14,3,1,21,5,3,1,21,5,3,1,117,14,0, - 0,0,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 99,1,0,0,0,0,0,0,0,1,0,0,0,4,0,0, - 0,66,0,0,0,115,101,0,0,0,124,0,0,69,101,0, - 0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,0, - 100,2,0,90,4,0,100,3,0,90,5,0,100,11,0,90, - 7,0,101,8,0,100,4,0,100,5,0,132,0,0,131,1, - 0,90,9,0,101,8,0,100,6,0,100,7,0,132,0,0, - 131,1,0,90,10,0,101,8,0,100,10,0,100,8,0,100, - 9,0,132,1,0,131,1,0,90,12,0,100,10,0,83,40, - 12,0,0,0,117,21,0,0,0,87,105,110,100,111,119,115, - 82,101,103,105,115,116,114,121,70,105,110,100,101,114,117,67, - 0,0,0,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,10,32,32,32,32,117,59,0,0,0,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,117,65,0,0,0,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,99,2,0,0, - 0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,0, - 0,115,67,0,0,0,121,23,0,116,0,0,106,1,0,116, - 0,0,106,2,0,124,1,0,131,2,0,83,87,110,37,0, - 4,116,3,0,107,10,0,114,62,0,1,1,1,116,0,0, - 106,1,0,116,0,0,106,4,0,124,1,0,131,2,0,83, - 89,110,1,0,88,100,0,0,83,40,1,0,0,0,78,40, - 5,0,0,0,117,7,0,0,0,95,119,105,110,114,101,103, - 117,7,0,0,0,79,112,101,110,75,101,121,117,17,0,0, - 0,72,75,69,89,95,67,85,82,82,69,78,84,95,85,83, - 69,82,117,12,0,0,0,87,105,110,100,111,119,115,69,114, - 114,111,114,117,18,0,0,0,72,75,69,89,95,76,79,67, - 65,76,95,77,65,67,72,73,78,69,40,2,0,0,0,117, - 3,0,0,0,99,108,115,117,3,0,0,0,107,101,121,40, - 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, - 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, - 95,98,111,111,116,115,116,114,97,112,62,117,14,0,0,0, - 95,111,112,101,110,95,114,101,103,105,115,116,114,121,240,2, - 0,0,115,8,0,0,0,0,2,3,1,23,1,13,1,117, - 36,0,0,0,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,6,0,0,0,16,0,0,0,67,0,0,0,115,142,0, - 0,0,124,0,0,106,0,0,114,21,0,124,0,0,106,1, - 0,125,2,0,110,9,0,124,0,0,106,2,0,125,2,0, - 124,2,0,106,3,0,100,1,0,124,1,0,100,2,0,116, - 4,0,106,5,0,100,0,0,100,3,0,133,2,0,25,131, - 0,2,125,3,0,121,46,0,124,0,0,106,6,0,124,3, - 0,131,1,0,143,25,0,125,4,0,116,7,0,106,8,0, - 124,4,0,100,4,0,131,2,0,125,5,0,87,100,0,0, - 81,88,87,110,22,0,4,116,9,0,107,10,0,114,137,0, - 1,1,1,100,0,0,83,89,110,1,0,88,124,5,0,83, - 40,5,0,0,0,78,117,8,0,0,0,102,117,108,108,110, - 97,109,101,117,11,0,0,0,115,121,115,95,118,101,114,115, - 105,111,110,105,3,0,0,0,117,0,0,0,0,40,11,0, - 0,0,117,11,0,0,0,68,69,66,85,71,95,66,85,73, - 76,68,117,18,0,0,0,82,69,71,73,83,84,82,89,95, - 75,69,89,95,68,69,66,85,71,117,12,0,0,0,82,69, - 71,73,83,84,82,89,95,75,69,89,117,6,0,0,0,102, - 111,114,109,97,116,117,3,0,0,0,115,121,115,117,7,0, - 0,0,118,101,114,115,105,111,110,117,14,0,0,0,95,111, - 112,101,110,95,114,101,103,105,115,116,114,121,117,7,0,0, - 0,95,119,105,110,114,101,103,117,10,0,0,0,81,117,101, - 114,121,86,97,108,117,101,117,12,0,0,0,87,105,110,100, - 111,119,115,69,114,114,111,114,117,4,0,0,0,78,111,110, - 101,40,6,0,0,0,117,3,0,0,0,99,108,115,117,8, - 0,0,0,102,117,108,108,110,97,109,101,117,12,0,0,0, - 114,101,103,105,115,116,114,121,95,107,101,121,117,3,0,0, - 0,107,101,121,117,4,0,0,0,104,107,101,121,117,8,0, - 0,0,102,105,108,101,112,97,116,104,40,0,0,0,0,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,16,0,0,0,95,115,101,97,114, - 99,104,95,114,101,103,105,115,116,114,121,247,2,0,0,115, - 22,0,0,0,0,2,9,1,12,2,9,1,15,1,22,1, - 3,1,18,1,28,1,13,1,9,1,117,38,0,0,0,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,99,3,0,0,0,0,0,0,0,7,0, - 0,0,12,0,0,0,67,0,0,0,115,140,0,0,0,124, - 0,0,106,0,0,124,1,0,131,1,0,125,3,0,124,3, - 0,100,1,0,107,8,0,114,31,0,100,1,0,83,121,17, - 0,116,2,0,106,3,0,124,3,0,131,1,0,1,87,110, - 22,0,4,116,4,0,107,10,0,114,72,0,1,1,1,100, - 1,0,83,89,110,1,0,88,120,60,0,116,5,0,131,0, - 0,68,93,49,0,92,3,0,125,4,0,125,5,0,125,6, - 0,124,3,0,106,6,0,116,7,0,124,5,0,131,1,0, - 131,1,0,114,83,0,124,4,0,124,1,0,124,3,0,131, - 2,0,83,113,83,0,87,100,1,0,83,40,2,0,0,0, - 117,34,0,0,0,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,78,40,8,0,0,0,117,16,0, - 0,0,95,115,101,97,114,99,104,95,114,101,103,105,115,116, - 114,121,117,4,0,0,0,78,111,110,101,117,3,0,0,0, - 95,111,115,117,4,0,0,0,115,116,97,116,117,7,0,0, - 0,79,83,69,114,114,111,114,117,27,0,0,0,95,103,101, + 101,114,46,105,115,95,112,97,99,107,97,103,101,40,14,0, + 0,0,114,56,0,0,0,114,55,0,0,0,114,57,0,0, + 0,114,58,0,0,0,114,221,0,0,0,114,216,0,0,0, + 114,217,0,0,0,114,170,0,0,0,114,173,0,0,0,114, + 183,0,0,0,114,218,0,0,0,114,219,0,0,0,114,220, + 0,0,0,114,156,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,222,0,0, + 0,22,3,0,0,115,28,0,0,0,12,7,6,2,18,4, + 3,1,18,4,3,1,3,1,3,1,27,9,3,1,21,5, + 3,1,21,5,3,1,114,222,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,97,0,0,0,101,0,0,90,1,0,100,0,0,90,2, + 0,100,1,0,90,3,0,100,2,0,90,4,0,100,3,0, + 90,5,0,100,4,0,90,6,0,101,7,0,100,5,0,100, + 6,0,132,0,0,131,1,0,90,8,0,101,7,0,100,7, + 0,100,8,0,132,0,0,131,1,0,90,9,0,101,7,0, + 100,9,0,100,10,0,100,11,0,132,1,0,131,1,0,90, + 10,0,100,9,0,83,40,12,0,0,0,244,21,0,0,0, + 87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70, + 105,110,100,101,114,117,67,0,0,0,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,10,32,32,32,32,117,59,0, + 0,0,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,117,65,0, + 0,0,83,111,102,116,119,97,114,101,92,80,121,116,104,111, + 110,92,80,121,116,104,111,110,67,111,114,101,92,123,115,121, + 115,95,118,101,114,115,105,111,110,125,92,77,111,100,117,108, + 101,115,92,123,102,117,108,108,110,97,109,101,125,92,68,101, + 98,117,103,70,99,2,0,0,0,0,0,0,0,2,0,0, + 0,11,0,0,0,67,0,0,0,115,67,0,0,0,121,23, + 0,116,0,0,106,1,0,116,0,0,106,2,0,124,1,0, + 131,2,0,83,87,110,37,0,4,116,3,0,107,10,0,114, + 62,0,1,1,1,116,0,0,106,1,0,116,0,0,106,4, + 0,124,1,0,131,2,0,83,89,110,1,0,88,100,0,0, + 83,40,1,0,0,0,78,40,5,0,0,0,244,7,0,0, + 0,95,119,105,110,114,101,103,116,7,0,0,0,79,112,101, + 110,75,101,121,116,17,0,0,0,72,75,69,89,95,67,85, + 82,82,69,78,84,95,85,83,69,82,114,40,0,0,0,116, + 18,0,0,0,72,75,69,89,95,76,79,67,65,76,95,77, + 65,67,72,73,78,69,40,2,0,0,0,114,215,0,0,0, + 244,3,0,0,0,107,101,121,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,244,14,0,0,0,95,111,112,101, + 110,95,114,101,103,105,115,116,114,121,84,3,0,0,115,8, + 0,0,0,0,2,3,1,23,1,13,1,117,36,0,0,0, + 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,6,0,0, + 0,16,0,0,0,67,0,0,0,115,142,0,0,0,124,0, + 0,106,0,0,114,21,0,124,0,0,106,1,0,125,2,0, + 110,9,0,124,0,0,106,2,0,125,2,0,124,2,0,106, + 3,0,100,1,0,124,1,0,100,2,0,116,4,0,106,5, + 0,100,0,0,100,3,0,133,2,0,25,131,0,2,125,3, + 0,121,46,0,124,0,0,106,6,0,124,3,0,131,1,0, + 143,25,0,125,4,0,116,7,0,106,8,0,124,4,0,100, + 4,0,131,2,0,125,5,0,87,100,0,0,81,88,87,110, + 22,0,4,116,9,0,107,10,0,114,137,0,1,1,1,100, + 0,0,83,89,110,1,0,88,124,5,0,83,40,5,0,0, + 0,78,114,178,0,0,0,116,11,0,0,0,115,121,115,95, + 118,101,114,115,105,111,110,114,121,0,0,0,114,30,0,0, + 0,40,10,0,0,0,244,11,0,0,0,68,69,66,85,71, + 95,66,85,73,76,68,244,18,0,0,0,82,69,71,73,83, + 84,82,89,95,75,69,89,95,68,69,66,85,71,244,12,0, + 0,0,82,69,71,73,83,84,82,89,95,75,69,89,114,46, + 0,0,0,114,7,0,0,0,244,7,0,0,0,118,101,114, + 115,105,111,110,114,227,0,0,0,114,225,0,0,0,116,10, + 0,0,0,81,117,101,114,121,86,97,108,117,101,114,40,0, + 0,0,40,6,0,0,0,114,215,0,0,0,114,178,0,0, + 0,116,12,0,0,0,114,101,103,105,115,116,114,121,95,107, + 101,121,114,226,0,0,0,116,4,0,0,0,104,107,101,121, + 244,8,0,0,0,102,105,108,101,112,97,116,104,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,244,16,0,0, + 0,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114, + 121,91,3,0,0,115,22,0,0,0,0,2,9,1,12,2, + 9,1,15,1,22,1,3,1,18,1,28,1,13,1,9,1, + 117,38,0,0,0,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,3,0,0, + 0,0,0,0,0,7,0,0,0,12,0,0,0,67,0,0, + 0,115,140,0,0,0,124,0,0,106,0,0,124,1,0,131, + 1,0,125,3,0,124,3,0,100,1,0,107,8,0,114,31, + 0,100,1,0,83,121,17,0,116,1,0,106,2,0,124,3, + 0,131,1,0,1,87,110,22,0,4,116,3,0,107,10,0, + 114,72,0,1,1,1,100,1,0,83,89,110,1,0,88,120, + 60,0,116,4,0,131,0,0,68,93,49,0,92,3,0,125, + 4,0,125,5,0,125,6,0,124,3,0,106,5,0,116,6, + 0,124,5,0,131,1,0,131,1,0,114,83,0,124,4,0, + 124,1,0,124,3,0,131,2,0,83,113,83,0,87,100,1, + 0,83,40,2,0,0,0,117,34,0,0,0,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,78,40, + 7,0,0,0,114,233,0,0,0,114,3,0,0,0,114,39, + 0,0,0,114,40,0,0,0,244,27,0,0,0,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,117,8,0,0,0,101,110,100, - 115,119,105,116,104,117,5,0,0,0,116,117,112,108,101,40, - 7,0,0,0,117,3,0,0,0,99,108,115,117,8,0,0, - 0,102,117,108,108,110,97,109,101,117,4,0,0,0,112,97, - 116,104,117,8,0,0,0,102,105,108,101,112,97,116,104,117, - 6,0,0,0,108,111,97,100,101,114,117,8,0,0,0,115, - 117,102,102,105,120,101,115,117,1,0,0,0,95,40,0,0, - 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, - 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, - 111,111,116,115,116,114,97,112,62,117,11,0,0,0,102,105, - 110,100,95,109,111,100,117,108,101,6,3,0,0,115,20,0, - 0,0,0,3,15,1,12,1,4,1,3,1,17,1,13,1, - 9,1,25,1,21,1,117,33,0,0,0,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,78,70,40,13, - 0,0,0,117,8,0,0,0,95,95,110,97,109,101,95,95, - 117,10,0,0,0,95,95,109,111,100,117,108,101,95,95,117, - 12,0,0,0,95,95,113,117,97,108,110,97,109,101,95,95, - 117,7,0,0,0,95,95,100,111,99,95,95,117,12,0,0, - 0,82,69,71,73,83,84,82,89,95,75,69,89,117,18,0, - 0,0,82,69,71,73,83,84,82,89,95,75,69,89,95,68, - 69,66,85,71,117,5,0,0,0,70,97,108,115,101,117,11, - 0,0,0,68,69,66,85,71,95,66,85,73,76,68,117,11, - 0,0,0,99,108,97,115,115,109,101,116,104,111,100,117,14, - 0,0,0,95,111,112,101,110,95,114,101,103,105,115,116,114, - 121,117,16,0,0,0,95,115,101,97,114,99,104,95,114,101, - 103,105,115,116,114,121,117,4,0,0,0,78,111,110,101,117, - 11,0,0,0,102,105,110,100,95,109,111,100,117,108,101,40, - 1,0,0,0,117,10,0,0,0,95,95,108,111,99,97,108, - 115,95,95,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 21,0,0,0,87,105,110,100,111,119,115,82,101,103,105,115, - 116,114,121,70,105,110,100,101,114,227,2,0,0,115,16,0, - 0,0,16,3,6,3,6,3,6,2,6,2,18,7,18,15, - 3,1,117,21,0,0,0,87,105,110,100,111,119,115,82,101, - 103,105,115,116,114,121,70,105,110,100,101,114,99,1,0,0, - 0,0,0,0,0,1,0,0,0,5,0,0,0,66,0,0, - 0,115,74,0,0,0,124,0,0,69,101,0,0,90,1,0, - 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, - 3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,0, - 0,90,5,0,101,6,0,100,6,0,100,10,0,100,7,0, - 100,8,0,132,0,1,131,1,0,90,8,0,100,9,0,83, - 40,11,0,0,0,117,13,0,0,0,95,76,111,97,100,101, - 114,66,97,115,105,99,115,117,83,0,0,0,66,97,115,101, - 32,99,108,97,115,115,32,111,102,32,99,111,109,109,111,110, - 32,99,111,100,101,32,110,101,101,100,101,100,32,98,121,32, - 98,111,116,104,32,83,111,117,114,99,101,76,111,97,100,101, - 114,32,97,110,100,10,32,32,32,32,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,5,0,0,0,3,0,0,0, - 67,0,0,0,115,88,0,0,0,116,0,0,124,0,0,106, - 1,0,124,1,0,131,1,0,131,1,0,100,1,0,25,125, - 2,0,124,2,0,106,2,0,100,2,0,100,1,0,131,2, - 0,100,3,0,25,125,3,0,124,1,0,106,3,0,100,2, - 0,131,1,0,100,4,0,25,125,4,0,124,3,0,100,5, - 0,107,2,0,111,87,0,124,4,0,100,5,0,107,3,0, - 83,40,6,0,0,0,117,141,0,0,0,67,111,110,99,114, - 101,116,101,32,105,109,112,108,101,109,101,110,116,97,116,105, - 111,110,32,111,102,32,73,110,115,112,101,99,116,76,111,97, - 100,101,114,46,105,115,95,112,97,99,107,97,103,101,32,98, - 121,32,99,104,101,99,107,105,110,103,32,105,102,10,32,32, - 32,32,32,32,32,32,116,104,101,32,112,97,116,104,32,114, - 101,116,117,114,110,101,100,32,98,121,32,103,101,116,95,102, - 105,108,101,110,97,109,101,32,104,97,115,32,97,32,102,105, - 108,101,110,97,109,101,32,111,102,32,39,95,95,105,110,105, - 116,95,95,46,112,121,39,46,105,1,0,0,0,117,1,0, - 0,0,46,105,0,0,0,0,105,2,0,0,0,117,8,0, - 0,0,95,95,105,110,105,116,95,95,40,4,0,0,0,117, - 11,0,0,0,95,112,97,116,104,95,115,112,108,105,116,117, - 12,0,0,0,103,101,116,95,102,105,108,101,110,97,109,101, - 117,6,0,0,0,114,115,112,108,105,116,117,10,0,0,0, - 114,112,97,114,116,105,116,105,111,110,40,5,0,0,0,117, - 4,0,0,0,115,101,108,102,117,8,0,0,0,102,117,108, - 108,110,97,109,101,117,8,0,0,0,102,105,108,101,110,97, - 109,101,117,13,0,0,0,102,105,108,101,110,97,109,101,95, - 98,97,115,101,117,9,0,0,0,116,97,105,108,95,110,97, - 109,101,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,10, - 0,0,0,105,115,95,112,97,99,107,97,103,101,26,3,0, - 0,115,8,0,0,0,0,3,25,1,22,1,19,1,117,24, - 0,0,0,95,76,111,97,100,101,114,66,97,115,105,99,115, - 46,105,115,95,112,97,99,107,97,103,101,99,5,0,0,0, - 0,0,0,0,12,0,0,0,22,0,0,0,67,0,0,0, - 115,208,1,0,0,124,2,0,100,1,0,100,2,0,133,2, - 0,25,125,5,0,124,2,0,100,2,0,100,3,0,133,2, - 0,25,125,6,0,124,2,0,100,3,0,100,4,0,133,2, - 0,25,125,7,0,124,5,0,116,0,0,107,3,0,114,115, - 0,100,5,0,106,1,0,124,1,0,124,5,0,131,2,0, - 125,8,0,116,2,0,124,8,0,131,1,0,1,116,3,0, - 124,8,0,100,6,0,124,1,0,100,7,0,124,3,0,131, - 1,2,130,1,0,110,116,0,116,4,0,124,6,0,131,1, - 0,100,2,0,107,3,0,114,173,0,100,8,0,106,1,0, - 124,1,0,131,1,0,125,9,0,116,2,0,124,9,0,131, - 1,0,1,116,5,0,124,9,0,131,1,0,130,1,0,110, - 58,0,116,4,0,124,7,0,131,1,0,100,2,0,107,3, - 0,114,231,0,100,9,0,106,1,0,124,1,0,131,1,0, - 125,9,0,116,2,0,124,9,0,131,1,0,1,116,5,0, - 124,9,0,131,1,0,130,1,0,110,0,0,124,4,0,100, - 1,0,107,9,0,114,194,1,121,20,0,116,7,0,124,4, - 0,100,10,0,25,131,1,0,125,10,0,87,110,18,0,4, - 116,8,0,107,10,0,114,27,1,1,1,1,89,110,71,0, - 88,116,9,0,124,6,0,131,1,0,124,10,0,107,3,0, - 114,98,1,100,11,0,106,1,0,124,1,0,131,1,0,125, - 9,0,116,2,0,124,9,0,131,1,0,1,116,3,0,124, - 9,0,100,6,0,124,1,0,100,7,0,124,3,0,131,1, - 2,130,1,0,110,0,0,121,18,0,124,4,0,100,12,0, - 25,100,13,0,64,125,11,0,87,110,18,0,4,116,8,0, - 107,10,0,114,136,1,1,1,1,89,113,194,1,88,116,9, - 0,124,7,0,131,1,0,124,11,0,107,3,0,114,194,1, - 116,3,0,100,11,0,106,1,0,124,1,0,131,1,0,100, - 6,0,124,1,0,100,7,0,124,3,0,131,1,2,130,1, - 0,113,194,1,110,0,0,124,2,0,100,4,0,100,1,0, - 133,2,0,25,83,40,14,0,0,0,117,193,0,0,0,82, - 101,116,117,114,110,32,116,104,101,32,109,97,114,115,104,97, - 108,108,101,100,32,98,121,116,101,115,32,102,114,111,109,32, - 98,121,116,101,99,111,100,101,44,32,118,101,114,105,102,121, - 105,110,103,32,116,104,101,32,109,97,103,105,99,10,32,32, - 32,32,32,32,32,32,110,117,109,98,101,114,44,32,116,105, - 109,101,115,116,97,109,112,32,97,110,100,32,115,111,117,114, - 99,101,32,115,105,122,101,32,97,108,111,110,103,32,116,104, - 101,32,119,97,121,46,10,10,32,32,32,32,32,32,32,32, - 73,102,32,115,111,117,114,99,101,95,115,116,97,116,115,32, - 105,115,32,78,111,110,101,32,116,104,101,110,32,115,107,105, - 112,32,116,104,101,32,116,105,109,101,115,116,97,109,112,32, - 99,104,101,99,107,46,10,10,32,32,32,32,32,32,32,32, - 78,105,4,0,0,0,105,8,0,0,0,105,12,0,0,0, - 117,30,0,0,0,98,97,100,32,109,97,103,105,99,32,110, - 117,109,98,101,114,32,105,110,32,123,33,114,125,58,32,123, - 33,114,125,117,4,0,0,0,110,97,109,101,117,4,0,0, - 0,112,97,116,104,117,19,0,0,0,98,97,100,32,116,105, - 109,101,115,116,97,109,112,32,105,110,32,123,125,117,14,0, - 0,0,98,97,100,32,115,105,122,101,32,105,110,32,123,125, - 117,5,0,0,0,109,116,105,109,101,117,24,0,0,0,98, - 121,116,101,99,111,100,101,32,105,115,32,115,116,97,108,101, - 32,102,111,114,32,123,125,117,4,0,0,0,115,105,122,101, - 108,3,0,0,0,255,127,255,127,3,0,40,10,0,0,0, - 117,12,0,0,0,95,77,65,71,73,67,95,66,89,84,69, - 83,117,6,0,0,0,102,111,114,109,97,116,117,16,0,0, - 0,95,118,101,114,98,111,115,101,95,109,101,115,115,97,103, - 101,117,11,0,0,0,73,109,112,111,114,116,69,114,114,111, - 114,117,3,0,0,0,108,101,110,117,8,0,0,0,69,79, - 70,69,114,114,111,114,117,4,0,0,0,78,111,110,101,117, - 3,0,0,0,105,110,116,117,8,0,0,0,75,101,121,69, - 114,114,111,114,117,7,0,0,0,95,114,95,108,111,110,103, - 40,12,0,0,0,117,4,0,0,0,115,101,108,102,117,8, - 0,0,0,102,117,108,108,110,97,109,101,117,4,0,0,0, - 100,97,116,97,117,13,0,0,0,98,121,116,101,99,111,100, - 101,95,112,97,116,104,117,12,0,0,0,115,111,117,114,99, - 101,95,115,116,97,116,115,117,5,0,0,0,109,97,103,105, - 99,117,13,0,0,0,114,97,119,95,116,105,109,101,115,116, - 97,109,112,117,8,0,0,0,114,97,119,95,115,105,122,101, - 117,3,0,0,0,109,115,103,117,7,0,0,0,109,101,115, - 115,97,103,101,117,12,0,0,0,115,111,117,114,99,101,95, - 109,116,105,109,101,117,11,0,0,0,115,111,117,114,99,101, - 95,115,105,122,101,40,0,0,0,0,40,0,0,0,0,117, - 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, - 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, - 62,117,20,0,0,0,95,98,121,116,101,115,95,102,114,111, - 109,95,98,121,116,101,99,111,100,101,34,3,0,0,115,68, - 0,0,0,0,7,16,1,16,1,16,1,12,1,18,1,10, - 1,27,1,18,1,15,1,10,1,15,1,18,1,15,1,10, - 1,15,1,12,1,3,1,20,1,13,1,5,2,18,1,15, - 1,10,1,15,1,12,1,3,1,18,1,13,1,5,2,18, - 1,3,1,15,1,21,3,117,34,0,0,0,95,76,111,97, - 100,101,114,66,97,115,105,99,115,46,95,98,121,116,101,115, - 95,102,114,111,109,95,98,121,116,101,99,111,100,101,117,10, - 0,0,0,115,111,117,114,99,101,108,101,115,115,99,2,0, - 0,0,1,0,0,0,5,0,0,0,12,0,0,0,67,0, - 0,0,115,227,0,0,0,124,1,0,106,0,0,125,3,0, - 124,0,0,106,1,0,124,3,0,131,1,0,125,4,0,124, - 0,0,106,2,0,124,3,0,131,1,0,124,1,0,95,3, - 0,124,2,0,115,106,0,121,22,0,116,4,0,124,1,0, - 106,3,0,131,1,0,124,1,0,95,5,0,87,113,118,0, - 4,116,6,0,107,10,0,114,102,0,1,1,1,124,1,0, - 106,3,0,124,1,0,95,5,0,89,113,118,0,88,110,12, - 0,124,1,0,106,3,0,124,1,0,95,5,0,124,3,0, - 124,1,0,95,7,0,124,0,0,106,8,0,124,3,0,131, - 1,0,114,170,0,116,9,0,124,1,0,106,3,0,131,1, - 0,100,1,0,25,103,1,0,124,1,0,95,10,0,110,25, - 0,124,1,0,106,7,0,106,11,0,100,2,0,131,1,0, - 100,1,0,25,124,1,0,95,7,0,124,0,0,124,1,0, - 95,12,0,116,13,0,116,14,0,124,4,0,124,1,0,106, - 15,0,131,3,0,1,124,1,0,83,40,3,0,0,0,117, - 82,0,0,0,72,101,108,112,101,114,32,102,111,114,32,108, - 111,97,100,95,109,111,100,117,108,101,32,97,98,108,101,32, - 116,111,32,104,97,110,100,108,101,32,101,105,116,104,101,114, - 32,115,111,117,114,99,101,32,111,114,32,115,111,117,114,99, - 101,108,101,115,115,10,32,32,32,32,32,32,32,32,108,111, - 97,100,105,110,103,46,105,0,0,0,0,117,1,0,0,0, - 46,40,16,0,0,0,117,8,0,0,0,95,95,110,97,109, - 101,95,95,117,8,0,0,0,103,101,116,95,99,111,100,101, - 117,12,0,0,0,103,101,116,95,102,105,108,101,110,97,109, - 101,117,8,0,0,0,95,95,102,105,108,101,95,95,117,17, - 0,0,0,99,97,99,104,101,95,102,114,111,109,95,115,111, - 117,114,99,101,117,10,0,0,0,95,95,99,97,99,104,101, - 100,95,95,117,19,0,0,0,78,111,116,73,109,112,108,101, - 109,101,110,116,101,100,69,114,114,111,114,117,11,0,0,0, - 95,95,112,97,99,107,97,103,101,95,95,117,10,0,0,0, - 105,115,95,112,97,99,107,97,103,101,117,11,0,0,0,95, - 112,97,116,104,95,115,112,108,105,116,117,8,0,0,0,95, - 95,112,97,116,104,95,95,117,10,0,0,0,114,112,97,114, - 116,105,116,105,111,110,117,10,0,0,0,95,95,108,111,97, - 100,101,114,95,95,117,25,0,0,0,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,117,4,0,0,0,101,120,101,99,117,8,0,0, - 0,95,95,100,105,99,116,95,95,40,5,0,0,0,117,4, - 0,0,0,115,101,108,102,117,6,0,0,0,109,111,100,117, - 108,101,117,10,0,0,0,115,111,117,114,99,101,108,101,115, - 115,117,4,0,0,0,110,97,109,101,117,11,0,0,0,99, - 111,100,101,95,111,98,106,101,99,116,40,0,0,0,0,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,12,0,0,0,95,108,111,97,100, - 95,109,111,100,117,108,101,80,3,0,0,115,32,0,0,0, - 0,4,9,1,15,1,18,1,6,1,3,1,22,1,13,1, - 20,2,12,1,9,1,15,1,28,2,25,1,9,1,19,1, - 117,26,0,0,0,95,76,111,97,100,101,114,66,97,115,105, - 99,115,46,95,108,111,97,100,95,109,111,100,117,108,101,78, - 70,40,9,0,0,0,117,8,0,0,0,95,95,110,97,109, - 101,95,95,117,10,0,0,0,95,95,109,111,100,117,108,101, - 95,95,117,12,0,0,0,95,95,113,117,97,108,110,97,109, - 101,95,95,117,7,0,0,0,95,95,100,111,99,95,95,117, - 10,0,0,0,105,115,95,112,97,99,107,97,103,101,117,20, - 0,0,0,95,98,121,116,101,115,95,102,114,111,109,95,98, - 121,116,101,99,111,100,101,117,17,0,0,0,109,111,100,117, - 108,101,95,102,111,114,95,108,111,97,100,101,114,117,5,0, - 0,0,70,97,108,115,101,117,12,0,0,0,95,108,111,97, - 100,95,109,111,100,117,108,101,40,1,0,0,0,117,10,0, - 0,0,95,95,108,111,99,97,108,115,95,95,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,13,0,0,0,95,76,111, - 97,100,101,114,66,97,115,105,99,115,21,3,0,0,115,10, - 0,0,0,16,3,6,2,12,8,12,46,6,1,117,13,0, - 0,0,95,76,111,97,100,101,114,66,97,115,105,99,115,99, - 1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, - 66,0,0,0,115,104,0,0,0,124,0,0,69,101,0,0, - 90,1,0,100,0,0,90,2,0,100,1,0,100,2,0,132, - 0,0,90,3,0,100,3,0,100,4,0,132,0,0,90,4, - 0,100,5,0,100,6,0,132,0,0,90,5,0,100,7,0, - 100,8,0,132,0,0,90,6,0,100,9,0,100,10,0,132, - 0,0,90,7,0,100,11,0,100,12,0,132,0,0,90,8, - 0,100,13,0,100,14,0,132,0,0,90,9,0,100,15,0, - 83,40,16,0,0,0,117,12,0,0,0,83,111,117,114,99, - 101,76,111,97,100,101,114,99,2,0,0,0,0,0,0,0, - 2,0,0,0,1,0,0,0,67,0,0,0,115,10,0,0, - 0,116,0,0,130,1,0,100,1,0,83,40,2,0,0,0, - 117,121,0,0,0,79,112,116,105,111,110,97,108,32,109,101, - 116,104,111,100,32,116,104,97,116,32,114,101,116,117,114,110, - 115,32,116,104,101,32,109,111,100,105,102,105,99,97,116,105, - 111,110,32,116,105,109,101,32,40,97,110,32,105,110,116,41, - 32,102,111,114,32,116,104,101,10,32,32,32,32,32,32,32, - 32,115,112,101,99,105,102,105,101,100,32,112,97,116,104,44, - 32,119,104,101,114,101,32,112,97,116,104,32,105,115,32,97, - 32,115,116,114,46,10,32,32,32,32,32,32,32,32,78,40, - 1,0,0,0,117,19,0,0,0,78,111,116,73,109,112,108, - 101,109,101,110,116,101,100,69,114,114,111,114,40,2,0,0, - 0,117,4,0,0,0,115,101,108,102,117,4,0,0,0,112, - 97,116,104,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 10,0,0,0,112,97,116,104,95,109,116,105,109,101,106,3, - 0,0,115,2,0,0,0,0,4,117,23,0,0,0,83,111, - 117,114,99,101,76,111,97,100,101,114,46,112,97,116,104,95, - 109,116,105,109,101,99,2,0,0,0,0,0,0,0,2,0, - 0,0,3,0,0,0,67,0,0,0,115,20,0,0,0,105, - 1,0,124,0,0,106,0,0,124,1,0,131,1,0,100,1, - 0,54,83,40,2,0,0,0,117,114,1,0,0,79,112,116, - 105,111,110,97,108,32,109,101,116,104,111,100,32,114,101,116, - 117,114,110,105,110,103,32,97,32,109,101,116,97,100,97,116, - 97,32,100,105,99,116,32,102,111,114,32,116,104,101,32,115, - 112,101,99,105,102,105,101,100,32,112,97,116,104,10,32,32, - 32,32,32,32,32,32,116,111,32,98,121,32,116,104,101,32, - 112,97,116,104,32,40,115,116,114,41,46,10,32,32,32,32, - 32,32,32,32,80,111,115,115,105,98,108,101,32,107,101,121, - 115,58,10,32,32,32,32,32,32,32,32,45,32,39,109,116, - 105,109,101,39,32,40,109,97,110,100,97,116,111,114,121,41, - 32,105,115,32,116,104,101,32,110,117,109,101,114,105,99,32, - 116,105,109,101,115,116,97,109,112,32,111,102,32,108,97,115, - 116,32,115,111,117,114,99,101,10,32,32,32,32,32,32,32, - 32,32,32,99,111,100,101,32,109,111,100,105,102,105,99,97, - 116,105,111,110,59,10,32,32,32,32,32,32,32,32,45,32, - 39,115,105,122,101,39,32,40,111,112,116,105,111,110,97,108, - 41,32,105,115,32,116,104,101,32,115,105,122,101,32,105,110, - 32,98,121,116,101,115,32,111,102,32,116,104,101,32,115,111, - 117,114,99,101,32,99,111,100,101,46,10,10,32,32,32,32, - 32,32,32,32,73,109,112,108,101,109,101,110,116,105,110,103, - 32,116,104,105,115,32,109,101,116,104,111,100,32,97,108,108, - 111,119,115,32,116,104,101,32,108,111,97,100,101,114,32,116, - 111,32,114,101,97,100,32,98,121,116,101,99,111,100,101,32, - 102,105,108,101,115,46,10,32,32,32,32,32,32,32,32,117, - 5,0,0,0,109,116,105,109,101,40,1,0,0,0,117,10, - 0,0,0,112,97,116,104,95,109,116,105,109,101,40,2,0, - 0,0,117,4,0,0,0,115,101,108,102,117,4,0,0,0, - 112,97,116,104,40,0,0,0,0,40,0,0,0,0,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,10,0,0,0,112,97,116,104,95,115,116,97,116,115,112, - 3,0,0,115,2,0,0,0,0,10,117,23,0,0,0,83, + 95,108,111,97,100,101,114,115,244,8,0,0,0,101,110,100, + 115,119,105,116,104,244,5,0,0,0,116,117,112,108,101,40, + 7,0,0,0,114,215,0,0,0,114,178,0,0,0,114,35, + 0,0,0,114,232,0,0,0,114,160,0,0,0,114,112,0, + 0,0,114,36,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,217,0,0,0,106,3,0,0,115, + 20,0,0,0,0,3,15,1,12,1,4,1,3,1,17,1, + 13,1,9,1,25,1,21,1,117,33,0,0,0,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,11, + 0,0,0,114,56,0,0,0,114,55,0,0,0,114,57,0, + 0,0,114,58,0,0,0,114,230,0,0,0,114,229,0,0, + 0,114,228,0,0,0,114,221,0,0,0,114,227,0,0,0, + 114,233,0,0,0,114,217,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,224, + 0,0,0,71,3,0,0,115,16,0,0,0,12,3,6,3, + 6,3,6,2,6,2,18,7,18,15,3,1,114,224,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,58,0,0,0,101,0,0,90,1, + 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0, + 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132, + 0,0,90,5,0,100,6,0,100,7,0,132,0,0,90,6, + 0,100,8,0,83,40,9,0,0,0,244,13,0,0,0,95, + 76,111,97,100,101,114,66,97,115,105,99,115,117,83,0,0, + 0,66,97,115,101,32,99,108,97,115,115,32,111,102,32,99, + 111,109,109,111,110,32,99,111,100,101,32,110,101,101,100,101, + 100,32,98,121,32,98,111,116,104,32,83,111,117,114,99,101, + 76,111,97,100,101,114,32,97,110,100,10,32,32,32,32,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,5,0,0, + 0,3,0,0,0,67,0,0,0,115,88,0,0,0,116,0, + 0,124,0,0,106,1,0,124,1,0,131,1,0,131,1,0, + 100,1,0,25,125,2,0,124,2,0,106,2,0,100,2,0, + 100,1,0,131,2,0,100,3,0,25,125,3,0,124,1,0, + 106,3,0,100,2,0,131,1,0,100,4,0,25,125,4,0, + 124,3,0,100,5,0,107,2,0,111,87,0,124,4,0,100, + 5,0,107,3,0,83,40,6,0,0,0,117,141,0,0,0, + 67,111,110,99,114,101,116,101,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,111,102,32,73,110,115,112,101, + 99,116,76,111,97,100,101,114,46,105,115,95,112,97,99,107, + 97,103,101,32,98,121,32,99,104,101,99,107,105,110,103,32, + 105,102,10,32,32,32,32,32,32,32,32,116,104,101,32,112, + 97,116,104,32,114,101,116,117,114,110,101,100,32,98,121,32, + 103,101,116,95,102,105,108,101,110,97,109,101,32,104,97,115, + 32,97,32,102,105,108,101,110,97,109,101,32,111,102,32,39, + 95,95,105,110,105,116,95,95,46,112,121,39,46,114,29,0, + 0,0,114,101,0,0,0,114,67,0,0,0,114,100,0,0, + 0,114,76,0,0,0,40,4,0,0,0,114,38,0,0,0, + 114,163,0,0,0,114,34,0,0,0,114,32,0,0,0,40, + 5,0,0,0,114,75,0,0,0,114,178,0,0,0,114,116, + 0,0,0,116,13,0,0,0,102,105,108,101,110,97,109,101, + 95,98,97,115,101,116,9,0,0,0,116,97,105,108,95,110, + 97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,156,0,0,0,126,3,0,0,115,8,0,0,0, + 0,3,25,1,22,1,19,1,117,24,0,0,0,95,76,111, + 97,100,101,114,66,97,115,105,99,115,46,105,115,95,112,97, + 99,107,97,103,101,99,2,0,0,0,0,0,0,0,2,0, + 0,0,11,0,0,0,67,0,0,0,115,100,0,0,0,124, + 0,0,124,1,0,95,0,0,116,1,0,124,0,0,124,1, + 0,131,2,0,1,116,2,0,124,0,0,124,1,0,131,2, + 0,1,116,3,0,124,1,0,100,1,0,131,2,0,114,96, + 0,121,22,0,116,4,0,124,1,0,106,5,0,131,1,0, + 124,1,0,95,6,0,87,113,96,0,4,116,7,0,107,10, + 0,114,92,0,1,1,1,89,113,96,0,88,110,0,0,100, + 2,0,83,40,3,0,0,0,117,2,1,0,0,83,101,116, + 32,118,97,114,105,111,117,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,46,10,10,32,32,32,32,32,32,32,32,69,120,101,99, + 117,116,105,111,110,76,111,97,100,101,114,46,105,110,105,116, + 95,109,111,100,117,108,101,95,97,116,116,114,115,40,41,32, + 105,115,32,117,115,101,100,32,116,111,32,115,101,116,32,95, + 95,108,111,97,100,101,114,95,95,44,10,32,32,32,32,32, + 32,32,32,95,95,112,97,99,107,97,103,101,95,95,44,32, + 95,95,102,105,108,101,95,95,44,32,97,110,100,32,111,112, + 116,105,111,110,97,108,108,121,32,95,95,112,97,116,104,95, + 95,46,32,84,104,101,32,95,95,99,97,99,104,101,100,95, + 95,32,97,116,116,114,105,98,117,116,101,10,32,32,32,32, + 32,32,32,32,105,115,32,115,101,116,32,117,115,105,110,103, + 32,105,109,112,46,99,97,99,104,101,95,102,114,111,109,95, + 115,111,117,114,99,101,40,41,32,97,110,100,32,95,95,102, + 105,108,101,95,95,46,10,32,32,32,32,32,32,32,32,114, + 164,0,0,0,78,40,8,0,0,0,114,171,0,0,0,114, + 162,0,0,0,114,166,0,0,0,114,59,0,0,0,114,117, + 0,0,0,114,164,0,0,0,244,10,0,0,0,95,95,99, + 97,99,104,101,100,95,95,114,109,0,0,0,40,2,0,0, + 0,114,75,0,0,0,114,161,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,244,17,0,0,0,105, + 110,105,116,95,109,111,100,117,108,101,95,97,116,116,114,115, + 134,3,0,0,115,16,0,0,0,0,7,9,1,13,1,13, + 1,15,1,3,1,22,1,13,1,117,31,0,0,0,95,76, + 111,97,100,101,114,66,97,115,105,99,115,46,105,110,105,116, + 95,109,111,100,117,108,101,95,97,116,116,114,115,99,2,0, + 0,0,0,0,0,0,4,0,0,0,11,0,0,0,67,0, + 0,0,115,112,0,0,0,116,0,0,124,1,0,131,1,0, + 143,94,0,125,2,0,124,0,0,106,1,0,124,2,0,131, + 1,0,1,124,0,0,106,2,0,124,1,0,131,1,0,125, + 3,0,124,3,0,100,1,0,107,8,0,114,79,0,116,3, + 0,100,2,0,106,4,0,124,1,0,131,1,0,131,1,0, + 130,1,0,110,0,0,116,5,0,116,6,0,124,3,0,124, + 2,0,106,7,0,131,3,0,1,124,2,0,83,87,100,1, + 0,81,88,100,1,0,83,40,3,0,0,0,117,57,0,0, + 0,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,78,117,52,0,0,0, + 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,40,8,0,0,0,114,155,0,0,0,114,239, + 0,0,0,114,219,0,0,0,114,157,0,0,0,114,46,0, + 0,0,114,99,0,0,0,244,4,0,0,0,101,120,101,99, + 114,62,0,0,0,40,4,0,0,0,114,75,0,0,0,114, + 178,0,0,0,114,161,0,0,0,114,204,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,218,0, + 0,0,150,3,0,0,115,16,0,0,0,0,2,15,1,13, + 1,15,1,12,1,3,1,21,1,19,1,117,25,0,0,0, + 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,40,7,0,0,0,114, + 56,0,0,0,114,55,0,0,0,114,57,0,0,0,114,58, + 0,0,0,114,156,0,0,0,114,239,0,0,0,114,218,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,237,0,0,0,121,3,0,0,115, + 8,0,0,0,12,3,6,2,12,8,12,16,114,237,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,106,0,0,0,101,0,0,90,1, + 0,100,0,0,90,2,0,100,1,0,100,2,0,132,0,0, + 90,3,0,100,3,0,100,4,0,132,0,0,90,4,0,100, + 5,0,100,6,0,132,0,0,90,5,0,100,7,0,100,8, + 0,132,0,0,90,6,0,100,9,0,100,10,0,132,0,0, + 90,7,0,100,11,0,100,18,0,100,13,0,100,14,0,132, + 0,1,90,8,0,100,15,0,100,16,0,132,0,0,90,9, + 0,100,17,0,83,40,19,0,0,0,244,12,0,0,0,83, + 111,117,114,99,101,76,111,97,100,101,114,99,2,0,0,0, + 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, + 115,10,0,0,0,116,0,0,130,1,0,100,1,0,83,40, + 2,0,0,0,117,178,0,0,0,79,112,116,105,111,110,97, + 108,32,109,101,116,104,111,100,32,116,104,97,116,32,114,101, + 116,117,114,110,115,32,116,104,101,32,109,111,100,105,102,105, + 99,97,116,105,111,110,32,116,105,109,101,32,40,97,110,32, + 105,110,116,41,32,102,111,114,32,116,104,101,10,32,32,32, + 32,32,32,32,32,115,112,101,99,105,102,105,101,100,32,112, + 97,116,104,44,32,119,104,101,114,101,32,112,97,116,104,32, + 105,115,32,97,32,115,116,114,46,10,10,32,32,32,32,32, + 32,32,32,82,97,105,115,101,115,32,73,79,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,40,1,0,0, + 0,244,7,0,0,0,73,79,69,114,114,111,114,40,2,0, + 0,0,114,75,0,0,0,114,35,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,244,10,0,0,0, + 112,97,116,104,95,109,116,105,109,101,164,3,0,0,115,2, + 0,0,0,0,6,117,23,0,0,0,83,111,117,114,99,101, + 76,111,97,100,101,114,46,112,97,116,104,95,109,116,105,109, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,115,20,0,0,0,105,1,0,124,0, + 0,106,0,0,124,1,0,131,1,0,100,1,0,54,83,40, + 2,0,0,0,117,170,1,0,0,79,112,116,105,111,110,97, + 108,32,109,101,116,104,111,100,32,114,101,116,117,114,110,105, + 110,103,32,97,32,109,101,116,97,100,97,116,97,32,100,105, + 99,116,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,32,112,97,116,104,10,32,32,32,32,32,32, + 32,32,116,111,32,98,121,32,116,104,101,32,112,97,116,104, + 32,40,115,116,114,41,46,10,32,32,32,32,32,32,32,32, + 80,111,115,115,105,98,108,101,32,107,101,121,115,58,10,32, + 32,32,32,32,32,32,32,45,32,39,109,116,105,109,101,39, + 32,40,109,97,110,100,97,116,111,114,121,41,32,105,115,32, + 116,104,101,32,110,117,109,101,114,105,99,32,116,105,109,101, + 115,116,97,109,112,32,111,102,32,108,97,115,116,32,115,111, + 117,114,99,101,10,32,32,32,32,32,32,32,32,32,32,99, + 111,100,101,32,109,111,100,105,102,105,99,97,116,105,111,110, + 59,10,32,32,32,32,32,32,32,32,45,32,39,115,105,122, + 101,39,32,40,111,112,116,105,111,110,97,108,41,32,105,115, + 32,116,104,101,32,115,105,122,101,32,105,110,32,98,121,116, + 101,115,32,111,102,32,116,104,101,32,115,111,117,114,99,101, + 32,99,111,100,101,46,10,10,32,32,32,32,32,32,32,32, + 73,109,112,108,101,109,101,110,116,105,110,103,32,116,104,105, + 115,32,109,101,116,104,111,100,32,97,108,108,111,119,115,32, + 116,104,101,32,108,111,97,100,101,114,32,116,111,32,114,101, + 97,100,32,98,121,116,101,99,111,100,101,32,102,105,108,101, + 115,46,10,32,32,32,32,32,32,32,32,82,97,105,115,101, + 115,32,73,79,69,114,114,111,114,32,119,104,101,110,32,116, + 104,101,32,112,97,116,104,32,99,97,110,110,111,116,32,98, + 101,32,104,97,110,100,108,101,100,46,10,32,32,32,32,32, + 32,32,32,114,193,0,0,0,40,1,0,0,0,114,243,0, + 0,0,40,2,0,0,0,114,75,0,0,0,114,35,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 244,10,0,0,0,112,97,116,104,95,115,116,97,116,115,172, + 3,0,0,115,2,0,0,0,0,11,117,23,0,0,0,83, 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104, 95,115,116,97,116,115,99,4,0,0,0,0,0,0,0,4, 0,0,0,3,0,0,0,67,0,0,0,115,16,0,0,0, @@ -2081,266 +1919,161 @@ unsigned char _Py_M__importlib[] = { 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,40,1, - 0,0,0,117,8,0,0,0,115,101,116,95,100,97,116,97, - 40,4,0,0,0,117,4,0,0,0,115,101,108,102,117,11, - 0,0,0,115,111,117,114,99,101,95,112,97,116,104,117,10, - 0,0,0,99,97,99,104,101,95,112,97,116,104,117,4,0, - 0,0,100,97,116,97,40,0,0,0,0,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,15,0,0,0,95,99,97,99,104,101,95,98,121, - 116,101,99,111,100,101,124,3,0,0,115,2,0,0,0,0, + 0,0,0,244,8,0,0,0,115,101,116,95,100,97,116,97, + 40,4,0,0,0,114,75,0,0,0,114,126,0,0,0,116, + 10,0,0,0,99,97,99,104,101,95,112,97,116,104,114,52, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,244,15,0,0,0,95,99,97,99,104,101,95,98,121, + 116,101,99,111,100,101,185,3,0,0,115,2,0,0,0,0, 8,117,28,0,0,0,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,3,0,0,0,1, - 0,0,0,67,0,0,0,115,10,0,0,0,116,0,0,130, - 1,0,100,1,0,83,40,2,0,0,0,117,151,0,0,0, - 79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32, - 119,104,105,99,104,32,119,114,105,116,101,115,32,100,97,116, - 97,32,40,98,121,116,101,115,41,32,116,111,32,97,32,102, - 105,108,101,32,112,97,116,104,32,40,97,32,115,116,114,41, - 46,10,10,32,32,32,32,32,32,32,32,73,109,112,108,101, - 109,101,110,116,105,110,103,32,116,104,105,115,32,109,101,116, - 104,111,100,32,97,108,108,111,119,115,32,102,111,114,32,116, - 104,101,32,119,114,105,116,105,110,103,32,111,102,32,98,121, - 116,101,99,111,100,101,32,102,105,108,101,115,46,10,10,32, - 32,32,32,32,32,32,32,78,40,1,0,0,0,117,19,0, - 0,0,78,111,116,73,109,112,108,101,109,101,110,116,101,100, - 69,114,114,111,114,40,3,0,0,0,117,4,0,0,0,115, - 101,108,102,117,4,0,0,0,112,97,116,104,117,4,0,0, - 0,100,97,116,97,40,0,0,0,0,40,0,0,0,0,117, - 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, - 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, - 62,117,8,0,0,0,115,101,116,95,100,97,116,97,134,3, - 0,0,115,2,0,0,0,0,6,117,21,0,0,0,83,111, - 117,114,99,101,76,111,97,100,101,114,46,115,101,116,95,100, - 97,116,97,99,2,0,0,0,0,0,0,0,9,0,0,0, - 44,0,0,0,67,0,0,0,115,62,1,0,0,100,1,0, - 100,2,0,108,0,0,125,2,0,124,0,0,106,1,0,124, - 1,0,131,1,0,125,3,0,121,19,0,124,0,0,106,2, - 0,124,3,0,131,1,0,125,4,0,87,110,58,0,4,116, - 3,0,107,10,0,114,106,0,1,125,5,0,1,122,26,0, - 116,4,0,100,3,0,100,4,0,124,1,0,131,1,1,124, - 5,0,130,2,0,87,89,100,2,0,100,2,0,125,5,0, - 126,5,0,88,110,1,0,88,116,5,0,106,6,0,124,4, - 0,131,1,0,106,7,0,125,6,0,121,19,0,124,2,0, - 106,8,0,124,6,0,131,1,0,125,7,0,87,110,58,0, - 4,116,9,0,107,10,0,114,204,0,1,125,5,0,1,122, - 26,0,116,4,0,100,5,0,100,4,0,124,1,0,131,1, - 1,124,5,0,130,2,0,87,89,100,2,0,100,2,0,125, - 5,0,126,5,0,88,110,1,0,88,116,5,0,106,10,0, - 100,2,0,100,7,0,131,2,0,125,8,0,121,30,0,124, - 8,0,106,13,0,124,4,0,106,13,0,124,7,0,100,1, - 0,25,131,1,0,131,1,0,83,87,110,58,0,4,116,14, - 0,107,10,0,114,57,1,1,125,5,0,1,122,26,0,116, - 4,0,100,6,0,100,4,0,124,1,0,131,1,1,124,5, - 0,130,2,0,87,89,100,2,0,100,2,0,125,5,0,126, - 5,0,88,110,1,0,88,100,2,0,83,40,8,0,0,0, - 117,52,0,0,0,67,111,110,99,114,101,116,101,32,105,109, - 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32, - 73,110,115,112,101,99,116,76,111,97,100,101,114,46,103,101, - 116,95,115,111,117,114,99,101,46,105,0,0,0,0,78,117, - 39,0,0,0,115,111,117,114,99,101,32,110,111,116,32,97, - 118,97,105,108,97,98,108,101,32,116,104,114,111,117,103,104, - 32,103,101,116,95,100,97,116,97,40,41,117,4,0,0,0, - 110,97,109,101,117,25,0,0,0,70,97,105,108,101,100,32, - 116,111,32,100,101,116,101,99,116,32,101,110,99,111,100,105, - 110,103,117,28,0,0,0,70,97,105,108,101,100,32,116,111, - 32,100,101,99,111,100,101,32,115,111,117,114,99,101,32,102, - 105,108,101,84,40,15,0,0,0,117,8,0,0,0,116,111, - 107,101,110,105,122,101,117,12,0,0,0,103,101,116,95,102, - 105,108,101,110,97,109,101,117,8,0,0,0,103,101,116,95, - 100,97,116,97,117,7,0,0,0,73,79,69,114,114,111,114, - 117,11,0,0,0,73,109,112,111,114,116,69,114,114,111,114, - 117,3,0,0,0,95,105,111,117,7,0,0,0,66,121,116, - 101,115,73,79,117,8,0,0,0,114,101,97,100,108,105,110, - 101,117,15,0,0,0,100,101,116,101,99,116,95,101,110,99, - 111,100,105,110,103,117,11,0,0,0,83,121,110,116,97,120, - 69,114,114,111,114,117,25,0,0,0,73,110,99,114,101,109, - 101,110,116,97,108,78,101,119,108,105,110,101,68,101,99,111, - 100,101,114,117,4,0,0,0,78,111,110,101,117,4,0,0, - 0,84,114,117,101,117,6,0,0,0,100,101,99,111,100,101, - 117,18,0,0,0,85,110,105,99,111,100,101,68,101,99,111, - 100,101,69,114,114,111,114,40,9,0,0,0,117,4,0,0, - 0,115,101,108,102,117,8,0,0,0,102,117,108,108,110,97, - 109,101,117,8,0,0,0,116,111,107,101,110,105,122,101,117, - 4,0,0,0,112,97,116,104,117,12,0,0,0,115,111,117, - 114,99,101,95,98,121,116,101,115,117,3,0,0,0,101,120, - 99,117,10,0,0,0,114,101,97,100,115,111,117,114,99,101, - 117,8,0,0,0,101,110,99,111,100,105,110,103,117,15,0, - 0,0,110,101,119,108,105,110,101,95,100,101,99,111,100,101, - 114,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,10,0, - 0,0,103,101,116,95,115,111,117,114,99,101,143,3,0,0, - 115,38,0,0,0,0,2,12,1,15,1,3,1,19,1,18, - 1,9,1,31,1,18,1,3,1,19,1,18,1,9,1,31, - 1,18,1,3,1,30,1,18,1,9,1,117,23,0,0,0, - 83,111,117,114,99,101,76,111,97,100,101,114,46,103,101,116, - 95,115,111,117,114,99,101,99,2,0,0,0,0,0,0,0, - 12,0,0,0,45,0,0,0,67,0,0,0,115,52,2,0, - 0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,0, - 100,10,0,125,3,0,121,16,0,116,2,0,124,2,0,131, - 1,0,125,4,0,87,110,24,0,4,116,3,0,107,10,0, - 114,63,0,1,1,1,100,10,0,125,4,0,89,110,14,1, - 88,121,19,0,124,0,0,106,4,0,124,2,0,131,1,0, - 125,5,0,87,110,18,0,4,116,3,0,107,10,0,114,103, - 0,1,1,1,89,110,230,0,88,116,5,0,124,5,0,100, - 1,0,25,131,1,0,125,3,0,121,19,0,124,0,0,106, - 6,0,124,4,0,131,1,0,125,6,0,87,110,18,0,4, - 116,7,0,107,10,0,114,159,0,1,1,1,89,110,174,0, - 88,121,28,0,124,0,0,106,8,0,124,1,0,124,6,0, - 124,4,0,124,5,0,131,4,0,125,7,0,87,110,24,0, - 4,116,9,0,116,10,0,102,2,0,107,10,0,114,214,0, - 1,1,1,89,110,119,0,88,116,11,0,100,2,0,124,4, - 0,124,2,0,131,3,0,1,116,12,0,106,13,0,124,7, - 0,131,1,0,125,8,0,116,14,0,124,8,0,116,15,0, - 131,2,0,114,38,1,116,16,0,106,17,0,124,8,0,124, - 2,0,131,2,0,1,116,11,0,100,3,0,124,4,0,131, - 2,0,1,124,8,0,83,100,4,0,125,9,0,116,9,0, - 124,9,0,106,18,0,124,4,0,131,1,0,100,5,0,124, - 1,0,100,6,0,124,4,0,131,1,2,130,1,0,124,0, - 0,106,6,0,124,2,0,131,1,0,125,10,0,116,19,0, - 116,20,0,124,10,0,124,2,0,100,7,0,100,8,0,100, - 11,0,131,4,1,125,11,0,116,11,0,100,3,0,124,2, - 0,131,2,0,1,116,22,0,106,23,0,12,114,48,2,124, - 4,0,100,10,0,107,9,0,114,48,2,124,3,0,100,10, - 0,107,9,0,114,48,2,116,24,0,116,25,0,131,1,0, - 125,6,0,124,6,0,106,26,0,116,27,0,124,3,0,131, - 1,0,131,1,0,1,124,6,0,106,26,0,116,27,0,116, - 28,0,124,10,0,131,1,0,131,1,0,131,1,0,1,124, - 6,0,106,26,0,116,12,0,106,29,0,124,11,0,131,1, - 0,131,1,0,1,121,36,0,124,0,0,106,30,0,124,2, - 0,124,4,0,124,6,0,131,3,0,1,116,11,0,100,9, - 0,124,4,0,131,2,0,1,87,113,48,2,4,116,3,0, - 107,10,0,114,44,2,1,1,1,89,113,48,2,88,110,0, - 0,124,11,0,83,40,12,0,0,0,117,190,0,0,0,67, - 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, - 116,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, - 46,10,10,32,32,32,32,32,32,32,32,82,101,97,100,105, - 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,114, - 101,113,117,105,114,101,115,32,112,97,116,104,95,115,116,97, - 116,115,32,116,111,32,98,101,32,105,109,112,108,101,109,101, - 110,116,101,100,46,32,84,111,32,119,114,105,116,101,10,32, - 32,32,32,32,32,32,32,98,121,116,101,99,111,100,101,44, - 32,115,101,116,95,100,97,116,97,32,109,117,115,116,32,97, - 108,115,111,32,98,101,32,105,109,112,108,101,109,101,110,116, - 101,100,46,10,10,32,32,32,32,32,32,32,32,117,5,0, - 0,0,109,116,105,109,101,117,13,0,0,0,123,125,32,109, - 97,116,99,104,101,115,32,123,125,117,19,0,0,0,99,111, - 100,101,32,111,98,106,101,99,116,32,102,114,111,109,32,123, - 125,117,21,0,0,0,78,111,110,45,99,111,100,101,32,111, - 98,106,101,99,116,32,105,110,32,123,125,117,4,0,0,0, - 110,97,109,101,117,4,0,0,0,112,97,116,104,117,4,0, - 0,0,101,120,101,99,117,12,0,0,0,100,111,110,116,95, - 105,110,104,101,114,105,116,117,10,0,0,0,119,114,111,116, - 101,32,123,33,114,125,78,84,40,31,0,0,0,117,12,0, - 0,0,103,101,116,95,102,105,108,101,110,97,109,101,117,4, - 0,0,0,78,111,110,101,117,17,0,0,0,99,97,99,104, - 101,95,102,114,111,109,95,115,111,117,114,99,101,117,19,0, - 0,0,78,111,116,73,109,112,108,101,109,101,110,116,101,100, - 69,114,114,111,114,117,10,0,0,0,112,97,116,104,95,115, - 116,97,116,115,117,3,0,0,0,105,110,116,117,8,0,0, - 0,103,101,116,95,100,97,116,97,117,7,0,0,0,73,79, - 69,114,114,111,114,117,20,0,0,0,95,98,121,116,101,115, - 95,102,114,111,109,95,98,121,116,101,99,111,100,101,117,11, - 0,0,0,73,109,112,111,114,116,69,114,114,111,114,117,8, - 0,0,0,69,79,70,69,114,114,111,114,117,16,0,0,0, - 95,118,101,114,98,111,115,101,95,109,101,115,115,97,103,101, - 117,7,0,0,0,109,97,114,115,104,97,108,117,5,0,0, - 0,108,111,97,100,115,117,10,0,0,0,105,115,105,110,115, - 116,97,110,99,101,117,10,0,0,0,95,99,111,100,101,95, - 116,121,112,101,117,4,0,0,0,95,105,109,112,117,16,0, - 0,0,95,102,105,120,95,99,111,95,102,105,108,101,110,97, - 109,101,117,6,0,0,0,102,111,114,109,97,116,117,25,0, - 0,0,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,117,7,0,0,0, - 99,111,109,112,105,108,101,117,4,0,0,0,84,114,117,101, - 117,3,0,0,0,115,121,115,117,19,0,0,0,100,111,110, - 116,95,119,114,105,116,101,95,98,121,116,101,99,111,100,101, - 117,9,0,0,0,98,121,116,101,97,114,114,97,121,117,12, - 0,0,0,95,77,65,71,73,67,95,66,89,84,69,83,117, - 6,0,0,0,101,120,116,101,110,100,117,7,0,0,0,95, - 119,95,108,111,110,103,117,3,0,0,0,108,101,110,117,5, - 0,0,0,100,117,109,112,115,117,15,0,0,0,95,99,97, - 99,104,101,95,98,121,116,101,99,111,100,101,40,12,0,0, - 0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,102, - 117,108,108,110,97,109,101,117,11,0,0,0,115,111,117,114, - 99,101,95,112,97,116,104,117,12,0,0,0,115,111,117,114, - 99,101,95,109,116,105,109,101,117,13,0,0,0,98,121,116, - 101,99,111,100,101,95,112,97,116,104,117,2,0,0,0,115, - 116,117,4,0,0,0,100,97,116,97,117,10,0,0,0,98, - 121,116,101,115,95,100,97,116,97,117,5,0,0,0,102,111, - 117,110,100,117,3,0,0,0,109,115,103,117,12,0,0,0, - 115,111,117,114,99,101,95,98,121,116,101,115,117,11,0,0, - 0,99,111,100,101,95,111,98,106,101,99,116,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,8,0,0,0,103,101,116, - 95,99,111,100,101,165,3,0,0,115,98,0,0,0,0,7, - 15,1,6,1,3,1,16,1,13,1,11,2,3,1,19,1, - 13,1,5,2,16,1,3,1,19,1,13,1,5,2,3,1, - 12,1,3,1,13,1,19,1,5,2,9,1,7,1,15,1, - 15,1,16,1,6,1,7,1,4,2,6,1,18,1,15,1, - 15,1,6,1,12,1,9,1,13,1,22,1,12,1,12,1, - 19,1,25,1,22,1,3,1,19,1,17,1,13,1,8,1, - 117,21,0,0,0,83,111,117,114,99,101,76,111,97,100,101, - 114,46,103,101,116,95,99,111,100,101,99,2,0,0,0,0, - 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, - 13,0,0,0,124,0,0,106,0,0,124,1,0,131,1,0, - 83,40,1,0,0,0,117,0,1,0,0,67,111,110,99,114, - 101,116,101,32,105,109,112,108,101,109,101,110,116,97,116,105, - 111,110,32,111,102,32,76,111,97,100,101,114,46,108,111,97, - 100,95,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,82,101,113,117,105,114,101,115,32,69,120,101,99, - 117,116,105,111,110,76,111,97,100,101,114,46,103,101,116,95, - 102,105,108,101,110,97,109,101,32,97,110,100,32,82,101,115, - 111,117,114,99,101,76,111,97,100,101,114,46,103,101,116,95, - 100,97,116,97,32,116,111,32,98,101,10,32,32,32,32,32, - 32,32,32,105,109,112,108,101,109,101,110,116,101,100,32,116, - 111,32,108,111,97,100,32,115,111,117,114,99,101,32,99,111, - 100,101,46,32,85,115,101,32,111,102,32,98,121,116,101,99, - 111,100,101,32,105,115,32,100,105,99,116,97,116,101,100,32, - 98,121,32,119,104,101,116,104,101,114,10,32,32,32,32,32, - 32,32,32,103,101,116,95,99,111,100,101,32,117,115,101,115, - 47,119,114,105,116,101,115,32,98,121,116,101,99,111,100,101, - 46,10,10,32,32,32,32,32,32,32,32,40,1,0,0,0, - 117,12,0,0,0,95,108,111,97,100,95,109,111,100,117,108, - 101,40,2,0,0,0,117,4,0,0,0,115,101,108,102,117, - 8,0,0,0,102,117,108,108,110,97,109,101,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,11,0,0,0,108,111,97, - 100,95,109,111,100,117,108,101,227,3,0,0,115,2,0,0, - 0,0,8,117,24,0,0,0,83,111,117,114,99,101,76,111, - 97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,101, - 78,40,10,0,0,0,117,8,0,0,0,95,95,110,97,109, - 101,95,95,117,10,0,0,0,95,95,109,111,100,117,108,101, - 95,95,117,12,0,0,0,95,95,113,117,97,108,110,97,109, - 101,95,95,117,10,0,0,0,112,97,116,104,95,109,116,105, - 109,101,117,10,0,0,0,112,97,116,104,95,115,116,97,116, - 115,117,15,0,0,0,95,99,97,99,104,101,95,98,121,116, - 101,99,111,100,101,117,8,0,0,0,115,101,116,95,100,97, - 116,97,117,10,0,0,0,103,101,116,95,115,111,117,114,99, - 101,117,8,0,0,0,103,101,116,95,99,111,100,101,117,11, - 0,0,0,108,111,97,100,95,109,111,100,117,108,101,40,1, - 0,0,0,117,10,0,0,0,95,95,108,111,99,97,108,115, - 95,95,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,12, - 0,0,0,83,111,117,114,99,101,76,111,97,100,101,114,104, - 3,0,0,115,14,0,0,0,16,2,12,6,12,12,12,10, - 12,9,12,22,12,62,117,12,0,0,0,83,111,117,114,99, - 101,76,111,97,100,101,114,99,1,0,0,0,0,0,0,0, - 1,0,0,0,4,0,0,0,2,0,0,0,115,92,0,0, - 0,124,0,0,69,101,0,0,90,1,0,100,0,0,90,2, + 0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,83, + 40,2,0,0,0,117,150,0,0,0,79,112,116,105,111,110, + 97,108,32,109,101,116,104,111,100,32,119,104,105,99,104,32, + 119,114,105,116,101,115,32,100,97,116,97,32,40,98,121,116, + 101,115,41,32,116,111,32,97,32,102,105,108,101,32,112,97, + 116,104,32,40,97,32,115,116,114,41,46,10,10,32,32,32, + 32,32,32,32,32,73,109,112,108,101,109,101,110,116,105,110, + 103,32,116,104,105,115,32,109,101,116,104,111,100,32,97,108, + 108,111,119,115,32,102,111,114,32,116,104,101,32,119,114,105, + 116,105,110,103,32,111,102,32,98,121,116,101,99,111,100,101, + 32,102,105,108,101,115,46,10,32,32,32,32,32,32,32,32, + 78,114,4,0,0,0,40,3,0,0,0,114,75,0,0,0, + 114,35,0,0,0,114,52,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,245,0,0,0,195,3, + 0,0,115,0,0,0,0,117,21,0,0,0,83,111,117,114, + 99,101,76,111,97,100,101,114,46,115,101,116,95,100,97,116, + 97,99,2,0,0,0,0,0,0,0,5,0,0,0,16,0, + 0,0,67,0,0,0,115,105,0,0,0,124,0,0,106,0, + 0,124,1,0,131,1,0,125,2,0,121,19,0,124,0,0, + 106,1,0,124,2,0,131,1,0,125,3,0,87,110,58,0, + 4,116,2,0,107,10,0,114,94,0,1,125,4,0,1,122, + 26,0,116,3,0,100,1,0,100,2,0,124,1,0,131,1, + 1,124,4,0,130,2,0,87,89,100,3,0,100,3,0,125, + 4,0,126,4,0,88,110,1,0,88,116,4,0,124,3,0, + 131,1,0,83,40,4,0,0,0,117,52,0,0,0,67,111, + 110,99,114,101,116,101,32,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,32,111,102,32,73,110,115,112,101,99,116, + 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, + 101,46,117,39,0,0,0,115,111,117,114,99,101,32,110,111, + 116,32,97,118,97,105,108,97,98,108,101,32,116,104,114,111, + 117,103,104,32,103,101,116,95,100,97,116,97,40,41,114,71, + 0,0,0,78,40,5,0,0,0,114,163,0,0,0,244,8, + 0,0,0,103,101,116,95,100,97,116,97,114,40,0,0,0, + 114,157,0,0,0,114,213,0,0,0,40,5,0,0,0,114, + 75,0,0,0,114,178,0,0,0,114,35,0,0,0,114,211, + 0,0,0,244,3,0,0,0,101,120,99,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,220,0,0,0,202, + 3,0,0,115,14,0,0,0,0,2,15,1,3,1,19,1, + 18,1,9,1,31,1,117,23,0,0,0,83,111,117,114,99, + 101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114, + 99,101,244,9,0,0,0,95,111,112,116,105,109,105,122,101, + 114,29,0,0,0,99,3,0,0,0,1,0,0,0,4,0, + 0,0,9,0,0,0,67,0,0,0,115,31,0,0,0,116, + 0,0,116,1,0,124,1,0,124,2,0,100,1,0,100,2, + 0,100,3,0,100,4,0,124,3,0,131,4,2,83,40,5, + 0,0,0,117,130,0,0,0,82,101,116,117,114,110,32,116, + 104,101,32,99,111,100,101,32,111,98,106,101,99,116,32,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,240,0,0,0,244, + 12,0,0,0,100,111,110,116,95,105,110,104,101,114,105,116, + 84,114,103,0,0,0,40,2,0,0,0,114,99,0,0,0, + 244,7,0,0,0,99,111,109,112,105,108,101,40,4,0,0, + 0,114,75,0,0,0,114,52,0,0,0,114,35,0,0,0, + 114,249,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,244,14,0,0,0,115,111,117,114,99,101,95, + 116,111,95,99,111,100,101,212,3,0,0,115,4,0,0,0, + 0,5,18,1,117,27,0,0,0,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,10,0,0, + 0,45,0,0,0,67,0,0,0,115,177,1,0,0,124,0, + 0,106,0,0,124,1,0,131,1,0,125,2,0,100,1,0, + 125,3,0,121,16,0,116,1,0,124,2,0,131,1,0,125, + 4,0,87,110,24,0,4,116,2,0,107,10,0,114,63,0, + 1,1,1,100,1,0,125,4,0,89,110,202,0,88,121,19, + 0,124,0,0,106,3,0,124,2,0,131,1,0,125,5,0, + 87,110,18,0,4,116,4,0,107,10,0,114,103,0,1,1, + 1,89,110,162,0,88,116,5,0,124,5,0,100,2,0,25, + 131,1,0,125,3,0,121,19,0,124,0,0,106,6,0,124, + 4,0,131,1,0,125,6,0,87,110,18,0,4,116,7,0, + 107,10,0,114,159,0,1,1,1,89,110,106,0,88,121,34, + 0,116,8,0,124,6,0,100,3,0,124,5,0,100,4,0, + 124,1,0,100,5,0,124,4,0,131,1,3,125,7,0,87, + 110,24,0,4,116,9,0,116,10,0,102,2,0,107,10,0, + 114,220,0,1,1,1,89,110,45,0,88,116,11,0,100,6, + 0,124,4,0,124,2,0,131,3,0,1,116,12,0,124,7, + 0,100,4,0,124,1,0,100,7,0,124,4,0,100,8,0, + 124,2,0,131,1,3,83,124,0,0,106,6,0,124,2,0, + 131,1,0,125,8,0,124,0,0,106,13,0,124,8,0,124, + 2,0,131,2,0,125,9,0,116,11,0,100,9,0,124,2, + 0,131,2,0,1,116,14,0,106,15,0,12,114,173,1,124, + 4,0,100,1,0,107,9,0,114,173,1,124,3,0,100,1, + 0,107,9,0,114,173,1,116,16,0,124,9,0,124,3,0, + 116,17,0,124,8,0,131,1,0,131,3,0,125,6,0,121, + 36,0,124,0,0,106,18,0,124,2,0,124,4,0,124,6, + 0,131,3,0,1,116,11,0,100,10,0,124,4,0,131,2, + 0,1,87,113,173,1,4,116,2,0,107,10,0,114,169,1, + 1,1,1,89,113,173,1,88,110,0,0,124,9,0,83,40, + 11,0,0,0,117,190,0,0,0,67,111,110,99,114,101,116, + 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, + 32,111,102,32,73,110,115,112,101,99,116,76,111,97,100,101, + 114,46,103,101,116,95,99,111,100,101,46,10,10,32,32,32, + 32,32,32,32,32,82,101,97,100,105,110,103,32,111,102,32, + 98,121,116,101,99,111,100,101,32,114,101,113,117,105,114,101, + 115,32,112,97,116,104,95,115,116,97,116,115,32,116,111,32, + 98,101,32,105,109,112,108,101,109,101,110,116,101,100,46,32, + 84,111,32,119,114,105,116,101,10,32,32,32,32,32,32,32, + 32,98,121,116,101,99,111,100,101,44,32,115,101,116,95,100, + 97,116,97,32,109,117,115,116,32,97,108,115,111,32,98,101, + 32,105,109,112,108,101,109,101,110,116,101,100,46,10,10,32, + 32,32,32,32,32,32,32,78,114,193,0,0,0,114,197,0, + 0,0,114,71,0,0,0,114,35,0,0,0,117,13,0,0, + 0,123,125,32,109,97,116,99,104,101,115,32,123,125,114,125, + 0,0,0,114,126,0,0,0,117,19,0,0,0,99,111,100, + 101,32,111,98,106,101,99,116,32,102,114,111,109,32,123,125, + 117,10,0,0,0,119,114,111,116,101,32,123,33,114,125,40, + 19,0,0,0,114,163,0,0,0,114,117,0,0,0,114,109, + 0,0,0,114,244,0,0,0,114,242,0,0,0,114,14,0, + 0,0,114,247,0,0,0,114,40,0,0,0,114,200,0,0, + 0,114,157,0,0,0,114,196,0,0,0,114,137,0,0,0, + 114,205,0,0,0,114,252,0,0,0,114,7,0,0,0,244, + 19,0,0,0,100,111,110,116,95,119,114,105,116,101,95,98, + 121,116,101,99,111,100,101,114,208,0,0,0,114,31,0,0, + 0,114,246,0,0,0,40,10,0,0,0,114,75,0,0,0, + 114,178,0,0,0,114,126,0,0,0,114,198,0,0,0,114, + 125,0,0,0,244,2,0,0,0,115,116,114,52,0,0,0, + 244,10,0,0,0,98,121,116,101,115,95,100,97,116,97,114, + 211,0,0,0,116,11,0,0,0,99,111,100,101,95,111,98, + 106,101,99,116,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,219,0,0,0,220,3,0,0,115,78,0,0, + 0,0,7,15,1,6,1,3,1,16,1,13,1,11,2,3, + 1,19,1,13,1,5,2,16,1,3,1,19,1,13,1,5, + 2,3,1,9,1,12,1,13,1,19,1,5,2,9,1,7, + 1,15,1,6,1,7,1,15,1,18,1,13,1,22,1,12, + 1,9,1,15,1,3,1,19,1,17,1,13,1,8,1,117, + 21,0,0,0,83,111,117,114,99,101,76,111,97,100,101,114, + 46,103,101,116,95,99,111,100,101,78,114,123,0,0,0,40, + 10,0,0,0,114,56,0,0,0,114,55,0,0,0,114,57, + 0,0,0,114,243,0,0,0,114,244,0,0,0,114,246,0, + 0,0,114,245,0,0,0,114,220,0,0,0,114,252,0,0, + 0,114,219,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,241,0,0,0,162, + 3,0,0,115,14,0,0,0,12,2,12,8,12,13,12,10, + 12,7,12,10,18,8,114,241,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,0,90,1,0,100,0,0,90,2, 0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,0, 90,4,0,101,5,0,135,0,0,102,1,0,100,4,0,100, 5,0,134,0,0,131,1,0,90,6,0,101,5,0,100,6, 0,100,7,0,132,0,0,131,1,0,90,7,0,100,8,0, 100,9,0,132,0,0,90,8,0,135,0,0,83,40,10,0, - 0,0,117,10,0,0,0,70,105,108,101,76,111,97,100,101, + 0,0,244,10,0,0,0,70,105,108,101,76,111,97,100,101, 114,117,103,0,0,0,66,97,115,101,32,102,105,108,101,32, 108,111,97,100,101,114,32,99,108,97,115,115,32,119,104,105, 99,104,32,105,109,112,108,101,109,101,110,116,115,32,116,104, @@ -2356,304 +2089,204 @@ unsigned char _Py_M__importlib[] = { 32,116,104,101,32,112,97,116,104,32,116,111,32,116,104,101, 32,102,105,108,101,32,102,111,117,110,100,32,98,121,32,116, 104,101,10,32,32,32,32,32,32,32,32,102,105,110,100,101, - 114,46,78,40,2,0,0,0,117,4,0,0,0,110,97,109, - 101,117,4,0,0,0,112,97,116,104,40,3,0,0,0,117, - 4,0,0,0,115,101,108,102,117,8,0,0,0,102,117,108, - 108,110,97,109,101,117,4,0,0,0,112,97,116,104,40,0, - 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, - 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, - 98,111,111,116,115,116,114,97,112,62,117,8,0,0,0,95, - 95,105,110,105,116,95,95,243,3,0,0,115,4,0,0,0, - 0,3,9,1,117,19,0,0,0,70,105,108,101,76,111,97, - 100,101,114,46,95,95,105,110,105,116,95,95,99,2,0,0, - 0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0, - 0,115,22,0,0,0,116,0,0,116,1,0,124,0,0,131, - 2,0,106,2,0,124,1,0,131,1,0,83,40,1,0,0, - 0,117,26,0,0,0,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, - 40,3,0,0,0,117,5,0,0,0,115,117,112,101,114,117, - 10,0,0,0,70,105,108,101,76,111,97,100,101,114,117,11, - 0,0,0,108,111,97,100,95,109,111,100,117,108,101,40,2, - 0,0,0,117,4,0,0,0,115,101,108,102,117,8,0,0, - 0,102,117,108,108,110,97,109,101,40,1,0,0,0,117,9, - 0,0,0,95,95,99,108,97,115,115,95,95,40,0,0,0, - 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, - 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, - 97,112,62,117,11,0,0,0,108,111,97,100,95,109,111,100, - 117,108,101,249,3,0,0,115,2,0,0,0,0,5,117,22, - 0,0,0,70,105,108,101,76,111,97,100,101,114,46,108,111, - 97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,0, - 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,7, - 0,0,0,124,0,0,106,0,0,83,40,1,0,0,0,117, - 58,0,0,0,82,101,116,117,114,110,32,116,104,101,32,112, - 97,116,104,32,116,111,32,116,104,101,32,115,111,117,114,99, - 101,32,102,105,108,101,32,97,115,32,102,111,117,110,100,32, - 98,121,32,116,104,101,32,102,105,110,100,101,114,46,40,1, - 0,0,0,117,4,0,0,0,112,97,116,104,40,2,0,0, - 0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,102, - 117,108,108,110,97,109,101,40,0,0,0,0,40,0,0,0, - 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, - 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, - 97,112,62,117,12,0,0,0,103,101,116,95,102,105,108,101, - 110,97,109,101,0,4,0,0,115,2,0,0,0,0,3,117, - 23,0,0,0,70,105,108,101,76,111,97,100,101,114,46,103, - 101,116,95,102,105,108,101,110,97,109,101,99,2,0,0,0, - 0,0,0,0,3,0,0,0,8,0,0,0,67,0,0,0, - 115,41,0,0,0,116,0,0,106,1,0,124,1,0,100,1, - 0,131,2,0,143,17,0,125,2,0,124,2,0,106,2,0, - 131,0,0,83,87,100,2,0,81,88,100,2,0,83,40,3, - 0,0,0,117,39,0,0,0,82,101,116,117,114,110,32,116, - 104,101,32,100,97,116,97,32,102,114,111,109,32,112,97,116, - 104,32,97,115,32,114,97,119,32,98,121,116,101,115,46,117, - 1,0,0,0,114,78,40,3,0,0,0,117,3,0,0,0, - 95,105,111,117,6,0,0,0,70,105,108,101,73,79,117,4, - 0,0,0,114,101,97,100,40,3,0,0,0,117,4,0,0, - 0,115,101,108,102,117,4,0,0,0,112,97,116,104,117,4, - 0,0,0,102,105,108,101,40,0,0,0,0,40,0,0,0, - 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, - 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, - 97,112,62,117,8,0,0,0,103,101,116,95,100,97,116,97, - 5,4,0,0,115,4,0,0,0,0,2,21,1,117,19,0, - 0,0,70,105,108,101,76,111,97,100,101,114,46,103,101,116, - 95,100,97,116,97,40,9,0,0,0,117,8,0,0,0,95, - 95,110,97,109,101,95,95,117,10,0,0,0,95,95,109,111, - 100,117,108,101,95,95,117,12,0,0,0,95,95,113,117,97, - 108,110,97,109,101,95,95,117,7,0,0,0,95,95,100,111, - 99,95,95,117,8,0,0,0,95,95,105,110,105,116,95,95, - 117,11,0,0,0,95,99,104,101,99,107,95,110,97,109,101, - 117,11,0,0,0,108,111,97,100,95,109,111,100,117,108,101, - 117,12,0,0,0,103,101,116,95,102,105,108,101,110,97,109, - 101,117,8,0,0,0,103,101,116,95,100,97,116,97,40,1, - 0,0,0,117,10,0,0,0,95,95,108,111,99,97,108,115, - 95,95,40,0,0,0,0,40,1,0,0,0,117,9,0,0, - 0,95,95,99,108,97,115,115,95,95,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,10,0,0, - 0,70,105,108,101,76,111,97,100,101,114,238,3,0,0,115, - 10,0,0,0,16,3,6,2,12,6,24,7,18,5,117,10, - 0,0,0,70,105,108,101,76,111,97,100,101,114,99,1,0, - 0,0,0,0,0,0,1,0,0,0,4,0,0,0,66,0, - 0,0,115,68,0,0,0,124,0,0,69,101,0,0,90,1, - 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0, - 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132, - 0,0,90,5,0,100,6,0,100,7,0,100,8,0,100,9, - 0,132,0,1,90,6,0,100,10,0,83,40,11,0,0,0, - 117,16,0,0,0,83,111,117,114,99,101,70,105,108,101,76, - 111,97,100,101,114,117,62,0,0,0,67,111,110,99,114,101, - 116,101,32,105,109,112,108,101,109,101,110,116,97,116,105,111, - 110,32,111,102,32,83,111,117,114,99,101,76,111,97,100,101, - 114,32,117,115,105,110,103,32,116,104,101,32,102,105,108,101, - 32,115,121,115,116,101,109,46,99,2,0,0,0,0,0,0, - 0,3,0,0,0,3,0,0,0,67,0,0,0,115,39,0, - 0,0,116,0,0,106,1,0,124,1,0,131,1,0,125,2, - 0,105,2,0,124,2,0,106,2,0,100,1,0,54,124,2, - 0,106,3,0,100,2,0,54,83,40,3,0,0,0,117,33, - 0,0,0,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,117,5,0,0,0,109,116,105,109,101,117,4, - 0,0,0,115,105,122,101,40,4,0,0,0,117,3,0,0, - 0,95,111,115,117,4,0,0,0,115,116,97,116,117,8,0, - 0,0,115,116,95,109,116,105,109,101,117,7,0,0,0,115, - 116,95,115,105,122,101,40,3,0,0,0,117,4,0,0,0, - 115,101,108,102,117,4,0,0,0,112,97,116,104,117,2,0, - 0,0,115,116,40,0,0,0,0,40,0,0,0,0,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,10,0,0,0,112,97,116,104,95,115,116,97,116,115,15, - 4,0,0,115,4,0,0,0,0,2,15,1,117,27,0,0, - 0,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,5,0,0,0,13,0,0,0,67,0,0, - 0,115,81,0,0,0,121,22,0,116,0,0,106,1,0,124, - 1,0,131,1,0,106,2,0,125,4,0,87,110,24,0,4, - 116,3,0,107,10,0,114,48,0,1,1,1,100,1,0,125, - 4,0,89,110,1,0,88,124,4,0,100,2,0,79,125,4, - 0,124,0,0,106,4,0,124,2,0,124,3,0,100,3,0, - 124,4,0,131,2,1,83,40,4,0,0,0,78,105,182,1, - 0,0,105,128,0,0,0,117,5,0,0,0,95,109,111,100, - 101,40,5,0,0,0,117,3,0,0,0,95,111,115,117,4, - 0,0,0,115,116,97,116,117,7,0,0,0,115,116,95,109, - 111,100,101,117,7,0,0,0,79,83,69,114,114,111,114,117, - 8,0,0,0,115,101,116,95,100,97,116,97,40,5,0,0, - 0,117,4,0,0,0,115,101,108,102,117,11,0,0,0,115, - 111,117,114,99,101,95,112,97,116,104,117,13,0,0,0,98, - 121,116,101,99,111,100,101,95,112,97,116,104,117,4,0,0, - 0,100,97,116,97,117,4,0,0,0,109,111,100,101,40,0, - 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, - 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, - 98,111,111,116,115,116,114,97,112,62,117,15,0,0,0,95, - 99,97,99,104,101,95,98,121,116,101,99,111,100,101,20,4, - 0,0,115,12,0,0,0,0,2,3,1,22,1,13,1,11, - 3,10,1,117,32,0,0,0,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,117,5,0,0,0,95,109,111, - 100,101,105,182,1,0,0,99,3,0,0,0,1,0,0,0, - 9,0,0,0,18,0,0,0,67,0,0,0,115,53,1,0, - 0,116,0,0,124,1,0,131,1,0,92,2,0,125,4,0, - 125,5,0,103,0,0,125,6,0,120,54,0,124,4,0,114, - 80,0,116,1,0,124,4,0,131,1,0,12,114,80,0,116, - 0,0,124,4,0,131,1,0,92,2,0,125,4,0,125,7, - 0,124,6,0,106,2,0,124,7,0,131,1,0,1,113,27, - 0,87,120,132,0,116,3,0,124,6,0,131,1,0,68,93, - 118,0,125,7,0,116,4,0,124,4,0,124,7,0,131,2, - 0,125,4,0,121,17,0,116,5,0,106,6,0,124,4,0, - 131,1,0,1,87,113,94,0,4,116,7,0,107,10,0,114, - 155,0,1,1,1,119,94,0,89,113,94,0,4,116,8,0, - 107,10,0,114,211,0,1,125,8,0,1,122,25,0,116,9, - 0,100,1,0,124,4,0,124,8,0,131,3,0,1,100,2, - 0,83,87,89,100,2,0,100,2,0,125,8,0,126,8,0, - 88,113,94,0,88,113,94,0,87,121,33,0,116,10,0,124, - 1,0,124,2,0,124,3,0,131,3,0,1,116,9,0,100, - 3,0,124,1,0,131,2,0,1,87,110,53,0,4,116,8, - 0,107,10,0,114,48,1,1,125,8,0,1,122,21,0,116, - 9,0,100,1,0,124,1,0,124,8,0,131,3,0,1,87, - 89,100,2,0,100,2,0,125,8,0,126,8,0,88,110,1, - 0,88,100,2,0,83,40,4,0,0,0,117,27,0,0,0, - 87,114,105,116,101,32,98,121,116,101,115,32,100,97,116,97, - 32,116,111,32,97,32,102,105,108,101,46,117,27,0,0,0, - 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,117,12,0,0, - 0,99,114,101,97,116,101,100,32,123,33,114,125,40,11,0, - 0,0,117,11,0,0,0,95,112,97,116,104,95,115,112,108, - 105,116,117,11,0,0,0,95,112,97,116,104,95,105,115,100, - 105,114,117,6,0,0,0,97,112,112,101,110,100,117,8,0, - 0,0,114,101,118,101,114,115,101,100,117,10,0,0,0,95, - 112,97,116,104,95,106,111,105,110,117,3,0,0,0,95,111, - 115,117,5,0,0,0,109,107,100,105,114,117,15,0,0,0, - 70,105,108,101,69,120,105,115,116,115,69,114,114,111,114,117, - 7,0,0,0,79,83,69,114,114,111,114,117,16,0,0,0, - 95,118,101,114,98,111,115,101,95,109,101,115,115,97,103,101, - 117,13,0,0,0,95,119,114,105,116,101,95,97,116,111,109, - 105,99,40,9,0,0,0,117,4,0,0,0,115,101,108,102, - 117,4,0,0,0,112,97,116,104,117,4,0,0,0,100,97, - 116,97,117,5,0,0,0,95,109,111,100,101,117,6,0,0, - 0,112,97,114,101,110,116,117,8,0,0,0,102,105,108,101, - 110,97,109,101,117,10,0,0,0,112,97,116,104,95,112,97, - 114,116,115,117,4,0,0,0,112,97,114,116,117,3,0,0, - 0,101,120,99,40,0,0,0,0,40,0,0,0,0,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,8,0,0,0,115,101,116,95,100,97,116,97,31,4,0, - 0,115,38,0,0,0,0,2,18,1,6,2,22,1,18,1, - 17,2,19,1,15,1,3,1,17,1,13,2,7,1,18,3, - 16,1,27,1,3,1,16,1,17,1,18,2,117,25,0,0, - 0,83,111,117,114,99,101,70,105,108,101,76,111,97,100,101, - 114,46,115,101,116,95,100,97,116,97,78,40,7,0,0,0, - 117,8,0,0,0,95,95,110,97,109,101,95,95,117,10,0, - 0,0,95,95,109,111,100,117,108,101,95,95,117,12,0,0, - 0,95,95,113,117,97,108,110,97,109,101,95,95,117,7,0, - 0,0,95,95,100,111,99,95,95,117,10,0,0,0,112,97, - 116,104,95,115,116,97,116,115,117,15,0,0,0,95,99,97, - 99,104,101,95,98,121,116,101,99,111,100,101,117,8,0,0, - 0,115,101,116,95,100,97,116,97,40,1,0,0,0,117,10, - 0,0,0,95,95,108,111,99,97,108,115,95,95,40,0,0, - 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, - 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, - 111,111,116,115,116,114,97,112,62,117,16,0,0,0,83,111, - 117,114,99,101,70,105,108,101,76,111,97,100,101,114,11,4, - 0,0,115,8,0,0,0,16,2,6,2,12,5,12,11,117, - 16,0,0,0,83,111,117,114,99,101,70,105,108,101,76,111, - 97,100,101,114,99,1,0,0,0,0,0,0,0,1,0,0, - 0,2,0,0,0,66,0,0,0,115,62,0,0,0,124,0, - 0,69,101,0,0,90,1,0,100,0,0,90,2,0,100,1, - 0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,0, - 100,4,0,100,5,0,132,0,0,90,5,0,100,6,0,100, - 7,0,132,0,0,90,6,0,100,8,0,83,40,9,0,0, - 0,117,20,0,0,0,83,111,117,114,99,101,108,101,115,115, - 70,105,108,101,76,111,97,100,101,114,117,45,0,0,0,76, - 111,97,100,101,114,32,119,104,105,99,104,32,104,97,110,100, - 108,101,115,32,115,111,117,114,99,101,108,101,115,115,32,102, - 105,108,101,32,105,109,112,111,114,116,115,46,99,2,0,0, - 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, - 0,115,19,0,0,0,124,0,0,106,0,0,124,1,0,100, - 1,0,100,2,0,131,1,1,83,40,3,0,0,0,78,117, - 10,0,0,0,115,111,117,114,99,101,108,101,115,115,84,40, - 2,0,0,0,117,12,0,0,0,95,108,111,97,100,95,109, - 111,100,117,108,101,117,4,0,0,0,84,114,117,101,40,2, - 0,0,0,117,4,0,0,0,115,101,108,102,117,8,0,0, - 0,102,117,108,108,110,97,109,101,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,11,0,0,0,108,111,97,100,95,109, - 111,100,117,108,101,64,4,0,0,115,2,0,0,0,0,1, - 117,32,0,0,0,83,111,117,114,99,101,108,101,115,115,70, + 114,46,78,40,2,0,0,0,114,71,0,0,0,114,35,0, + 0,0,40,3,0,0,0,114,75,0,0,0,114,178,0,0, + 0,114,35,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,76,0,0,0,21,4,0,0,115,4, + 0,0,0,0,3,9,1,117,19,0,0,0,70,105,108,101, + 76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,99, + 2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 3,0,0,0,115,22,0,0,0,116,0,0,116,1,0,124, + 0,0,131,2,0,106,2,0,124,1,0,131,1,0,83,40, + 1,0,0,0,117,26,0,0,0,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,40,3,0,0,0,114,148,0,0,0,114,0,1, + 0,0,114,218,0,0,0,40,2,0,0,0,114,75,0,0, + 0,114,178,0,0,0,40,1,0,0,0,114,150,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,218,0,0,0,27, + 4,0,0,115,2,0,0,0,0,5,117,22,0,0,0,70, 105,108,101,76,111,97,100,101,114,46,108,111,97,100,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,6,0, - 0,0,6,0,0,0,67,0,0,0,115,138,0,0,0,124, - 0,0,106,0,0,124,1,0,131,1,0,125,2,0,124,0, - 0,106,1,0,124,2,0,131,1,0,125,3,0,124,0,0, - 106,2,0,124,1,0,124,3,0,124,2,0,100,0,0,131, - 4,0,125,4,0,116,4,0,106,5,0,124,4,0,131,1, - 0,125,5,0,116,6,0,124,5,0,116,7,0,131,2,0, - 114,101,0,116,8,0,100,1,0,124,2,0,131,2,0,1, - 124,5,0,83,116,9,0,100,2,0,106,10,0,124,2,0, - 131,1,0,100,3,0,124,1,0,100,4,0,124,2,0,131, - 1,2,130,1,0,100,0,0,83,40,5,0,0,0,78,117, - 21,0,0,0,99,111,100,101,32,111,98,106,101,99,116,32, - 102,114,111,109,32,123,33,114,125,117,21,0,0,0,78,111, - 110,45,99,111,100,101,32,111,98,106,101,99,116,32,105,110, - 32,123,125,117,4,0,0,0,110,97,109,101,117,4,0,0, - 0,112,97,116,104,40,11,0,0,0,117,12,0,0,0,103, - 101,116,95,102,105,108,101,110,97,109,101,117,8,0,0,0, - 103,101,116,95,100,97,116,97,117,20,0,0,0,95,98,121, - 116,101,115,95,102,114,111,109,95,98,121,116,101,99,111,100, - 101,117,4,0,0,0,78,111,110,101,117,7,0,0,0,109, - 97,114,115,104,97,108,117,5,0,0,0,108,111,97,100,115, - 117,10,0,0,0,105,115,105,110,115,116,97,110,99,101,117, - 10,0,0,0,95,99,111,100,101,95,116,121,112,101,117,16, - 0,0,0,95,118,101,114,98,111,115,101,95,109,101,115,115, - 97,103,101,117,11,0,0,0,73,109,112,111,114,116,69,114, - 114,111,114,117,6,0,0,0,102,111,114,109,97,116,40,6, - 0,0,0,117,4,0,0,0,115,101,108,102,117,8,0,0, - 0,102,117,108,108,110,97,109,101,117,4,0,0,0,112,97, - 116,104,117,4,0,0,0,100,97,116,97,117,10,0,0,0, - 98,121,116,101,115,95,100,97,116,97,117,5,0,0,0,102, - 111,117,110,100,40,0,0,0,0,40,0,0,0,0,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,8,0,0,0,103,101,116,95,99,111,100,101,67,4,0, - 0,115,18,0,0,0,0,1,15,1,15,1,24,1,15,1, - 15,1,13,1,4,2,18,1,117,29,0,0,0,83,111,117, - 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101, - 114,46,103,101,116,95,99,111,100,101,99,2,0,0,0,0, - 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115, - 4,0,0,0,100,1,0,83,40,2,0,0,0,117,39,0, - 0,0,82,101,116,117,114,110,32,78,111,110,101,32,97,115, - 32,116,104,101,114,101,32,105,115,32,110,111,32,115,111,117, - 114,99,101,32,99,111,100,101,46,78,40,1,0,0,0,117, - 4,0,0,0,78,111,110,101,40,2,0,0,0,117,4,0, - 0,0,115,101,108,102,117,8,0,0,0,102,117,108,108,110, - 97,109,101,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 10,0,0,0,103,101,116,95,115,111,117,114,99,101,79,4, - 0,0,115,2,0,0,0,0,2,117,31,0,0,0,83,111, - 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100, - 101,114,46,103,101,116,95,115,111,117,114,99,101,78,40,7, - 0,0,0,117,8,0,0,0,95,95,110,97,109,101,95,95, - 117,10,0,0,0,95,95,109,111,100,117,108,101,95,95,117, - 12,0,0,0,95,95,113,117,97,108,110,97,109,101,95,95, - 117,7,0,0,0,95,95,100,111,99,95,95,117,11,0,0, - 0,108,111,97,100,95,109,111,100,117,108,101,117,8,0,0, - 0,103,101,116,95,99,111,100,101,117,10,0,0,0,103,101, - 116,95,115,111,117,114,99,101,40,1,0,0,0,117,10,0, - 0,0,95,95,108,111,99,97,108,115,95,95,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,20,0,0,0,83,111,117, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,2,0, + 0,0,1,0,0,0,67,0,0,0,115,7,0,0,0,124, + 0,0,106,0,0,83,40,1,0,0,0,117,58,0,0,0, + 82,101,116,117,114,110,32,116,104,101,32,112,97,116,104,32, + 116,111,32,116,104,101,32,115,111,117,114,99,101,32,102,105, + 108,101,32,97,115,32,102,111,117,110,100,32,98,121,32,116, + 104,101,32,102,105,110,100,101,114,46,40,1,0,0,0,114, + 35,0,0,0,40,2,0,0,0,114,75,0,0,0,114,178, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,163,0,0,0,34,4,0,0,115,2,0,0,0, + 0,3,117,23,0,0,0,70,105,108,101,76,111,97,100,101, + 114,46,103,101,116,95,102,105,108,101,110,97,109,101,99,2, + 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, + 0,0,0,115,41,0,0,0,116,0,0,106,1,0,124,1, + 0,100,1,0,131,2,0,143,17,0,125,2,0,124,2,0, + 106,2,0,131,0,0,83,87,100,2,0,81,88,100,2,0, + 83,40,3,0,0,0,117,39,0,0,0,82,101,116,117,114, + 110,32,116,104,101,32,100,97,116,97,32,102,114,111,109,32, + 112,97,116,104,32,97,115,32,114,97,119,32,98,121,116,101, + 115,46,244,1,0,0,0,114,78,40,3,0,0,0,114,48, + 0,0,0,114,49,0,0,0,116,4,0,0,0,114,101,97, + 100,40,3,0,0,0,114,75,0,0,0,114,35,0,0,0, + 114,53,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,247,0,0,0,39,4,0,0,115,4,0, + 0,0,0,2,21,1,117,19,0,0,0,70,105,108,101,76, + 111,97,100,101,114,46,103,101,116,95,100,97,116,97,40,9, + 0,0,0,114,56,0,0,0,114,55,0,0,0,114,57,0, + 0,0,114,58,0,0,0,114,76,0,0,0,114,176,0,0, + 0,114,218,0,0,0,114,163,0,0,0,114,247,0,0,0, + 114,4,0,0,0,114,4,0,0,0,40,1,0,0,0,114, + 150,0,0,0,114,5,0,0,0,114,0,1,0,0,16,4, + 0,0,115,10,0,0,0,12,3,6,2,12,6,24,7,18, + 5,114,0,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,64,0,0,0, + 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, + 3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4, + 0,100,5,0,132,0,0,90,5,0,100,6,0,100,7,0, + 100,8,0,100,9,0,132,0,1,90,6,0,100,10,0,83, + 40,11,0,0,0,244,16,0,0,0,83,111,117,114,99,101, + 70,105,108,101,76,111,97,100,101,114,117,62,0,0,0,67, + 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,111,102,32,83,111,117,114,99,101, + 76,111,97,100,101,114,32,117,115,105,110,103,32,116,104,101, + 32,102,105,108,101,32,115,121,115,116,101,109,46,99,2,0, + 0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, + 0,0,115,39,0,0,0,116,0,0,106,1,0,124,1,0, + 131,1,0,125,2,0,105,2,0,124,2,0,106,2,0,100, + 1,0,54,124,2,0,106,3,0,100,2,0,54,83,40,3, + 0,0,0,117,33,0,0,0,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,114,193,0,0,0,114,194, + 0,0,0,40,4,0,0,0,114,3,0,0,0,114,39,0, + 0,0,244,8,0,0,0,115,116,95,109,116,105,109,101,116, + 7,0,0,0,115,116,95,115,105,122,101,40,3,0,0,0, + 114,75,0,0,0,114,35,0,0,0,114,254,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,244, + 0,0,0,49,4,0,0,115,4,0,0,0,0,2,15,1, + 117,27,0,0,0,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,5,0,0,0,5,0,0, + 0,67,0,0,0,115,34,0,0,0,116,0,0,124,1,0, + 131,1,0,125,4,0,124,0,0,106,1,0,124,2,0,124, + 3,0,100,1,0,124,4,0,131,2,1,83,40,2,0,0, + 0,78,244,5,0,0,0,95,109,111,100,101,40,2,0,0, + 0,114,129,0,0,0,114,245,0,0,0,40,5,0,0,0, + 114,75,0,0,0,114,126,0,0,0,114,125,0,0,0,114, + 52,0,0,0,114,42,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,246,0,0,0,54,4,0, + 0,115,4,0,0,0,0,2,12,1,117,32,0,0,0,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, + 4,1,0,0,105,182,1,0,0,99,3,0,0,0,1,0, + 0,0,9,0,0,0,18,0,0,0,67,0,0,0,115,53, + 1,0,0,116,0,0,124,1,0,131,1,0,92,2,0,125, + 4,0,125,5,0,103,0,0,125,6,0,120,54,0,124,4, + 0,114,80,0,116,1,0,124,4,0,131,1,0,12,114,80, + 0,116,0,0,124,4,0,131,1,0,92,2,0,125,4,0, + 125,7,0,124,6,0,106,2,0,124,7,0,131,1,0,1, + 113,27,0,87,120,132,0,116,3,0,124,6,0,131,1,0, + 68,93,118,0,125,7,0,116,4,0,124,4,0,124,7,0, + 131,2,0,125,4,0,121,17,0,116,5,0,106,6,0,124, + 4,0,131,1,0,1,87,113,94,0,4,116,7,0,107,10, + 0,114,155,0,1,1,1,119,94,0,89,113,94,0,4,116, + 8,0,107,10,0,114,211,0,1,125,8,0,1,122,25,0, + 116,9,0,100,1,0,124,4,0,124,8,0,131,3,0,1, + 100,2,0,83,87,89,100,2,0,100,2,0,125,8,0,126, + 8,0,88,113,94,0,88,113,94,0,87,121,33,0,116,10, + 0,124,1,0,124,2,0,124,3,0,131,3,0,1,116,9, + 0,100,3,0,124,1,0,131,2,0,1,87,110,53,0,4, + 116,8,0,107,10,0,114,48,1,1,125,8,0,1,122,21, + 0,116,9,0,100,1,0,124,1,0,124,8,0,131,3,0, + 1,87,89,100,2,0,100,2,0,125,8,0,126,8,0,88, + 110,1,0,88,100,2,0,83,40,4,0,0,0,117,27,0, + 0,0,87,114,105,116,101,32,98,121,116,101,115,32,100,97, + 116,97,32,116,111,32,97,32,102,105,108,101,46,117,27,0, + 0,0,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,117,12, + 0,0,0,99,114,101,97,116,101,100,32,123,33,114,125,40, + 11,0,0,0,114,38,0,0,0,114,45,0,0,0,114,165, + 0,0,0,114,33,0,0,0,114,28,0,0,0,114,3,0, + 0,0,116,5,0,0,0,109,107,100,105,114,244,15,0,0, + 0,70,105,108,101,69,120,105,115,116,115,69,114,114,111,114, + 114,40,0,0,0,114,137,0,0,0,114,54,0,0,0,40, + 9,0,0,0,114,75,0,0,0,114,35,0,0,0,114,52, + 0,0,0,114,4,1,0,0,244,6,0,0,0,112,97,114, + 101,110,116,114,116,0,0,0,114,27,0,0,0,114,23,0, + 0,0,114,248,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,245,0,0,0,59,4,0,0,115, + 38,0,0,0,0,2,18,1,6,2,22,1,18,1,17,2, + 19,1,15,1,3,1,17,1,13,2,7,1,18,3,16,1, + 27,1,3,1,16,1,17,1,18,2,117,25,0,0,0,83, + 111,117,114,99,101,70,105,108,101,76,111,97,100,101,114,46, + 115,101,116,95,100,97,116,97,78,40,7,0,0,0,114,56, + 0,0,0,114,55,0,0,0,114,57,0,0,0,114,58,0, + 0,0,114,244,0,0,0,114,246,0,0,0,114,245,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,2,1,0,0,45,4,0,0,115,8, + 0,0,0,12,2,6,2,12,5,12,5,114,2,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,64,0,0,0,101,0,0,90,1,0, + 100,0,0,90,2,0,100,1,0,90,3,0,135,0,0,102, + 1,0,100,2,0,100,3,0,134,0,0,90,4,0,100,4, + 0,100,5,0,132,0,0,90,5,0,100,6,0,100,7,0, + 132,0,0,90,6,0,135,0,0,83,40,8,0,0,0,244, + 20,0,0,0,83,111,117,114,99,101,108,101,115,115,70,105, + 108,101,76,111,97,100,101,114,117,45,0,0,0,76,111,97, + 100,101,114,32,119,104,105,99,104,32,104,97,110,100,108,101, + 115,32,115,111,117,114,99,101,108,101,115,115,32,102,105,108, + 101,32,105,109,112,111,114,116,115,46,99,2,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,115, + 32,0,0,0,116,0,0,131,0,0,106,1,0,124,1,0, + 131,1,0,1,124,1,0,106,2,0,124,1,0,95,3,0, + 100,0,0,83,40,1,0,0,0,78,40,4,0,0,0,114, + 148,0,0,0,114,239,0,0,0,114,164,0,0,0,114,238, + 0,0,0,40,2,0,0,0,114,75,0,0,0,114,161,0, + 0,0,40,1,0,0,0,114,150,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,239,0,0,0,92,4,0,0,115, + 4,0,0,0,0,1,16,1,117,38,0,0,0,83,111,117, 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101, - 114,60,4,0,0,115,8,0,0,0,16,2,6,2,12,3, - 12,12,117,20,0,0,0,83,111,117,114,99,101,108,101,115, - 115,70,105,108,101,76,111,97,100,101,114,99,1,0,0,0, - 0,0,0,0,1,0,0,0,5,0,0,0,66,0,0,0, - 115,104,0,0,0,124,0,0,69,101,0,0,90,1,0,100, + 114,46,105,110,105,116,95,109,111,100,117,108,101,95,97,116, + 116,114,115,99,2,0,0,0,0,0,0,0,5,0,0,0, + 6,0,0,0,67,0,0,0,115,76,0,0,0,124,0,0, + 106,0,0,124,1,0,131,1,0,125,2,0,124,0,0,106, + 1,0,124,2,0,131,1,0,125,3,0,116,2,0,124,3, + 0,100,1,0,124,1,0,100,2,0,124,2,0,131,1,2, + 125,4,0,116,3,0,124,4,0,100,1,0,124,1,0,100, + 3,0,124,2,0,131,1,2,83,40,4,0,0,0,78,114, + 71,0,0,0,114,35,0,0,0,114,125,0,0,0,40,4, + 0,0,0,114,163,0,0,0,114,247,0,0,0,114,200,0, + 0,0,114,205,0,0,0,40,5,0,0,0,114,75,0,0, + 0,114,178,0,0,0,114,35,0,0,0,114,52,0,0,0, + 114,255,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,219,0,0,0,96,4,0,0,115,8,0, + 0,0,0,1,15,1,15,1,24,1,117,29,0,0,0,83, + 111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,97, + 100,101,114,46,103,101,116,95,99,111,100,101,99,2,0,0, + 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, + 0,115,4,0,0,0,100,1,0,83,40,2,0,0,0,117, + 39,0,0,0,82,101,116,117,114,110,32,78,111,110,101,32, + 97,115,32,116,104,101,114,101,32,105,115,32,110,111,32,115, + 111,117,114,99,101,32,99,111,100,101,46,78,114,4,0,0, + 0,40,2,0,0,0,114,75,0,0,0,114,178,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 220,0,0,0,102,4,0,0,115,2,0,0,0,0,2,117, + 31,0,0,0,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,40,7,0,0,0,114,56,0,0,0,114,55,0, + 0,0,114,57,0,0,0,114,58,0,0,0,114,239,0,0, + 0,114,219,0,0,0,114,220,0,0,0,114,4,0,0,0, + 114,4,0,0,0,40,1,0,0,0,114,150,0,0,0,114, + 5,0,0,0,114,7,1,0,0,88,4,0,0,115,8,0, + 0,0,12,2,6,2,18,4,12,6,114,7,1,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 64,0,0,0,115,100,0,0,0,101,0,0,90,1,0,100, 0,0,90,2,0,100,1,0,90,3,0,100,2,0,100,3, 0,132,0,0,90,4,0,101,5,0,101,6,0,101,7,0, 100,4,0,100,5,0,132,0,0,131,1,0,131,1,0,131, 1,0,90,8,0,100,6,0,100,7,0,132,0,0,90,9, 0,100,8,0,100,9,0,132,0,0,90,10,0,100,10,0, 100,11,0,132,0,0,90,11,0,100,12,0,83,40,13,0, - 0,0,117,19,0,0,0,69,120,116,101,110,115,105,111,110, + 0,0,244,19,0,0,0,69,120,116,101,110,115,105,111,110, 70,105,108,101,76,111,97,100,101,114,117,93,0,0,0,76, 111,97,100,101,114,32,102,111,114,32,101,120,116,101,110,115, 105,111,110,32,109,111,100,117,108,101,115,46,10,10,32,32, @@ -2664,106 +2297,76 @@ unsigned char _Py_M__importlib[] = { 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, 0,115,22,0,0,0,124,1,0,124,0,0,95,0,0,124, 2,0,124,0,0,95,1,0,100,0,0,83,40,1,0,0, - 0,78,40,2,0,0,0,117,4,0,0,0,110,97,109,101, - 117,4,0,0,0,112,97,116,104,40,3,0,0,0,117,4, - 0,0,0,115,101,108,102,117,4,0,0,0,110,97,109,101, - 117,4,0,0,0,112,97,116,104,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,8,0,0,0,95,95,105,110,105,116, - 95,95,96,4,0,0,115,4,0,0,0,0,1,9,1,117, - 28,0,0,0,69,120,116,101,110,115,105,111,110,70,105,108, - 101,76,111,97,100,101,114,46,95,95,105,110,105,116,95,95, - 99,2,0,0,0,0,0,0,0,4,0,0,0,10,0,0, - 0,67,0,0,0,115,175,0,0,0,124,1,0,116,0,0, - 106,1,0,107,6,0,125,2,0,121,107,0,116,2,0,116, - 3,0,106,4,0,124,1,0,124,0,0,106,5,0,131,3, - 0,125,3,0,116,6,0,100,1,0,124,0,0,106,5,0, - 131,2,0,1,124,0,0,106,7,0,124,1,0,131,1,0, - 114,117,0,116,8,0,124,3,0,100,2,0,131,2,0,12, - 114,117,0,116,9,0,124,0,0,106,5,0,131,1,0,100, - 3,0,25,103,1,0,124,3,0,95,10,0,110,0,0,124, - 3,0,83,87,110,46,0,1,1,1,124,2,0,12,114,163, - 0,124,1,0,116,0,0,106,1,0,107,6,0,114,163,0, - 116,0,0,106,1,0,124,1,0,61,110,0,0,130,0,0, - 89,110,1,0,88,100,4,0,83,40,5,0,0,0,117,25, - 0,0,0,76,111,97,100,32,97,110,32,101,120,116,101,110, - 115,105,111,110,32,109,111,100,117,108,101,46,117,33,0,0, - 0,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108, - 101,32,108,111,97,100,101,100,32,102,114,111,109,32,123,33, - 114,125,117,8,0,0,0,95,95,112,97,116,104,95,95,105, - 0,0,0,0,78,40,11,0,0,0,117,3,0,0,0,115, - 121,115,117,7,0,0,0,109,111,100,117,108,101,115,117,25, - 0,0,0,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,117,4,0,0, - 0,95,105,109,112,117,12,0,0,0,108,111,97,100,95,100, - 121,110,97,109,105,99,117,4,0,0,0,112,97,116,104,117, - 16,0,0,0,95,118,101,114,98,111,115,101,95,109,101,115, - 115,97,103,101,117,10,0,0,0,105,115,95,112,97,99,107, - 97,103,101,117,7,0,0,0,104,97,115,97,116,116,114,117, - 11,0,0,0,95,112,97,116,104,95,115,112,108,105,116,117, - 8,0,0,0,95,95,112,97,116,104,95,95,40,4,0,0, - 0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,102, - 117,108,108,110,97,109,101,117,9,0,0,0,105,115,95,114, - 101,108,111,97,100,117,6,0,0,0,109,111,100,117,108,101, - 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,11,0,0, - 0,108,111,97,100,95,109,111,100,117,108,101,100,4,0,0, - 115,24,0,0,0,0,5,15,1,3,1,9,1,15,1,16, - 1,31,1,28,1,8,1,3,1,22,1,13,1,117,31,0, - 0,0,69,120,116,101,110,115,105,111,110,70,105,108,101,76, - 111,97,100,101,114,46,108,111,97,100,95,109,111,100,117,108, - 101,99,2,0,0,0,0,0,0,0,2,0,0,0,4,0, - 0,0,3,0,0,0,115,48,0,0,0,116,0,0,124,0, - 0,106,1,0,131,1,0,100,1,0,25,137,0,0,116,2, - 0,135,0,0,102,1,0,100,2,0,100,3,0,134,0,0, - 116,3,0,68,131,1,0,131,1,0,83,40,4,0,0,0, - 117,49,0,0,0,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,105,1,0,0,0,99,1,0,0,0, - 0,0,0,0,2,0,0,0,4,0,0,0,51,0,0,0, - 115,31,0,0,0,124,0,0,93,21,0,125,1,0,136,0, - 0,100,0,0,124,1,0,23,107,2,0,86,1,113,3,0, - 100,1,0,83,40,2,0,0,0,117,8,0,0,0,95,95, - 105,110,105,116,95,95,78,40,0,0,0,0,40,2,0,0, - 0,117,2,0,0,0,46,48,117,6,0,0,0,115,117,102, - 102,105,120,40,1,0,0,0,117,9,0,0,0,102,105,108, - 101,95,110,97,109,101,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,9,0, - 0,0,60,103,101,110,101,120,112,114,62,121,4,0,0,115, - 2,0,0,0,6,1,117,49,0,0,0,69,120,116,101,110, + 0,78,40,2,0,0,0,114,71,0,0,0,114,35,0,0, + 0,40,3,0,0,0,114,75,0,0,0,114,71,0,0,0, + 114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,76,0,0,0,119,4,0,0,115,4,0, + 0,0,0,1,9,1,117,28,0,0,0,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, + 3,0,0,0,11,0,0,0,67,0,0,0,115,126,0,0, + 0,116,0,0,124,1,0,131,1,0,143,108,0,1,116,1, + 0,116,2,0,106,3,0,124,1,0,124,0,0,106,4,0, + 131,3,0,125,2,0,116,5,0,100,1,0,124,0,0,106, + 4,0,131,2,0,1,124,0,0,106,6,0,124,1,0,131, + 1,0,114,112,0,116,7,0,124,2,0,100,2,0,131,2, + 0,12,114,112,0,116,8,0,124,0,0,106,4,0,131,1, + 0,100,3,0,25,103,1,0,124,2,0,95,9,0,110,0, + 0,124,2,0,83,87,100,4,0,81,88,100,4,0,83,40, + 5,0,0,0,117,25,0,0,0,76,111,97,100,32,97,110, + 32,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108, + 101,46,117,33,0,0,0,101,120,116,101,110,115,105,111,110, + 32,109,111,100,117,108,101,32,108,111,97,100,101,100,32,102, + 114,111,109,32,123,33,114,125,114,159,0,0,0,114,67,0, + 0,0,78,40,10,0,0,0,114,138,0,0,0,114,99,0, + 0,0,114,94,0,0,0,116,12,0,0,0,108,111,97,100, + 95,100,121,110,97,109,105,99,114,35,0,0,0,114,137,0, + 0,0,114,156,0,0,0,114,59,0,0,0,114,38,0,0, + 0,114,159,0,0,0,40,3,0,0,0,114,75,0,0,0, + 114,178,0,0,0,114,161,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,218,0,0,0,123,4, + 0,0,115,14,0,0,0,0,5,13,1,9,1,15,1,16, + 1,31,1,28,1,117,31,0,0,0,69,120,116,101,110,115, + 105,111,110,70,105,108,101,76,111,97,100,101,114,46,108,111, + 97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,3,0,0,0,115,48, + 0,0,0,116,0,0,124,0,0,106,1,0,131,1,0,100, + 1,0,25,137,0,0,116,2,0,135,0,0,102,1,0,100, + 2,0,100,3,0,134,0,0,116,3,0,68,131,1,0,131, + 1,0,83,40,4,0,0,0,117,49,0,0,0,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,29, + 0,0,0,99,1,0,0,0,0,0,0,0,2,0,0,0, + 4,0,0,0,51,0,0,0,115,31,0,0,0,124,0,0, + 93,21,0,125,1,0,136,0,0,100,0,0,124,1,0,23, + 107,2,0,86,1,113,3,0,100,1,0,83,40,2,0,0, + 0,114,76,0,0,0,78,114,4,0,0,0,40,2,0,0, + 0,114,22,0,0,0,244,6,0,0,0,115,117,102,102,105, + 120,40,1,0,0,0,244,9,0,0,0,102,105,108,101,95, + 110,97,109,101,114,4,0,0,0,114,5,0,0,0,114,143, + 0,0,0,139,4,0,0,115,2,0,0,0,6,1,117,49, + 0,0,0,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,40,4,0,0,0,114,38,0,0,0,114,35, + 0,0,0,114,144,0,0,0,244,18,0,0,0,69,88,84, + 69,78,83,73,79,78,95,83,85,70,70,73,88,69,83,40, + 2,0,0,0,114,75,0,0,0,114,178,0,0,0,114,4, + 0,0,0,40,1,0,0,0,114,10,1,0,0,114,5,0, + 0,0,114,156,0,0,0,136,4,0,0,115,6,0,0,0, + 0,2,19,1,18,1,117,30,0,0,0,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,40,4,0,0, - 0,117,11,0,0,0,95,112,97,116,104,95,115,112,108,105, - 116,117,4,0,0,0,112,97,116,104,117,3,0,0,0,97, - 110,121,117,18,0,0,0,69,88,84,69,78,83,73,79,78, - 95,83,85,70,70,73,88,69,83,40,2,0,0,0,117,4, - 0,0,0,115,101,108,102,117,8,0,0,0,102,117,108,108, - 110,97,109,101,40,0,0,0,0,40,1,0,0,0,117,9, - 0,0,0,102,105,108,101,95,110,97,109,101,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,10, - 0,0,0,105,115,95,112,97,99,107,97,103,101,118,4,0, - 0,115,6,0,0,0,0,2,19,1,18,1,117,30,0,0, - 0,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, - 97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,99, - 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,1,0,83,40,2,0, - 0,0,117,63,0,0,0,82,101,116,117,114,110,32,78,111, - 110,101,32,97,115,32,97,110,32,101,120,116,101,110,115,105, - 111,110,32,109,111,100,117,108,101,32,99,97,110,110,111,116, - 32,99,114,101,97,116,101,32,97,32,99,111,100,101,32,111, - 98,106,101,99,116,46,78,40,1,0,0,0,117,4,0,0, - 0,78,111,110,101,40,2,0,0,0,117,4,0,0,0,115, - 101,108,102,117,8,0,0,0,102,117,108,108,110,97,109,101, - 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,8,0,0, - 0,103,101,116,95,99,111,100,101,124,4,0,0,115,2,0, + 115,95,112,97,99,107,97,103,101,99,2,0,0,0,0,0, + 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,4, + 0,0,0,100,1,0,83,40,2,0,0,0,117,63,0,0, + 0,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 97,110,32,101,120,116,101,110,115,105,111,110,32,109,111,100, + 117,108,101,32,99,97,110,110,111,116,32,99,114,101,97,116, + 101,32,97,32,99,111,100,101,32,111,98,106,101,99,116,46, + 78,114,4,0,0,0,40,2,0,0,0,114,75,0,0,0, + 114,178,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,219,0,0,0,142,4,0,0,115,2,0, 0,0,0,2,117,28,0,0,0,69,120,116,101,110,115,105, 111,110,70,105,108,101,76,111,97,100,101,114,46,103,101,116, 95,99,111,100,101,99,2,0,0,0,0,0,0,0,2,0, @@ -2772,1661 +2375,1277 @@ unsigned char _Py_M__importlib[] = { 117,114,110,32,78,111,110,101,32,97,115,32,101,120,116,101, 110,115,105,111,110,32,109,111,100,117,108,101,115,32,104,97, 118,101,32,110,111,32,115,111,117,114,99,101,32,99,111,100, - 101,46,78,40,1,0,0,0,117,4,0,0,0,78,111,110, - 101,40,2,0,0,0,117,4,0,0,0,115,101,108,102,117, - 8,0,0,0,102,117,108,108,110,97,109,101,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,10,0,0,0,103,101,116, - 95,115,111,117,114,99,101,128,4,0,0,115,2,0,0,0, - 0,2,117,30,0,0,0,69,120,116,101,110,115,105,111,110, - 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,115, - 111,117,114,99,101,78,40,12,0,0,0,117,8,0,0,0, - 95,95,110,97,109,101,95,95,117,10,0,0,0,95,95,109, - 111,100,117,108,101,95,95,117,12,0,0,0,95,95,113,117, - 97,108,110,97,109,101,95,95,117,7,0,0,0,95,95,100, - 111,99,95,95,117,8,0,0,0,95,95,105,110,105,116,95, - 95,117,11,0,0,0,95,99,104,101,99,107,95,110,97,109, - 101,117,11,0,0,0,115,101,116,95,112,97,99,107,97,103, - 101,117,10,0,0,0,115,101,116,95,108,111,97,100,101,114, - 117,11,0,0,0,108,111,97,100,95,109,111,100,117,108,101, - 117,10,0,0,0,105,115,95,112,97,99,107,97,103,101,117, - 8,0,0,0,103,101,116,95,99,111,100,101,117,10,0,0, - 0,103,101,116,95,115,111,117,114,99,101,40,1,0,0,0, - 117,10,0,0,0,95,95,108,111,99,97,108,115,95,95,40, - 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, - 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, - 95,98,111,111,116,115,116,114,97,112,62,117,19,0,0,0, - 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, - 100,101,114,88,4,0,0,115,16,0,0,0,16,6,6,2, - 12,4,3,1,3,1,24,16,12,6,12,4,117,19,0,0, - 0,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, - 97,100,101,114,99,1,0,0,0,0,0,0,0,1,0,0, - 0,2,0,0,0,66,0,0,0,115,134,0,0,0,124,0, - 0,69,101,0,0,90,1,0,100,0,0,90,2,0,100,1, - 0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,0, - 100,4,0,100,5,0,132,0,0,90,5,0,100,6,0,100, - 7,0,132,0,0,90,6,0,100,8,0,100,9,0,132,0, - 0,90,7,0,100,10,0,100,11,0,132,0,0,90,8,0, - 100,12,0,100,13,0,132,0,0,90,9,0,100,14,0,100, - 15,0,132,0,0,90,10,0,100,16,0,100,17,0,132,0, - 0,90,11,0,100,18,0,100,19,0,132,0,0,90,12,0, - 100,20,0,83,40,21,0,0,0,117,14,0,0,0,95,78, - 97,109,101,115,112,97,99,101,80,97,116,104,117,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, - 4,0,0,0,2,0,0,0,67,0,0,0,115,52,0,0, - 0,124,1,0,124,0,0,95,0,0,124,2,0,124,0,0, - 95,1,0,116,2,0,124,0,0,106,3,0,131,0,0,131, - 1,0,124,0,0,95,4,0,124,3,0,124,0,0,95,5, - 0,100,0,0,83,40,1,0,0,0,78,40,6,0,0,0, - 117,5,0,0,0,95,110,97,109,101,117,5,0,0,0,95, - 112,97,116,104,117,5,0,0,0,116,117,112,108,101,117,16, + 101,46,78,114,4,0,0,0,40,2,0,0,0,114,75,0, + 0,0,114,178,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,220,0,0,0,146,4,0,0,115, + 2,0,0,0,0,2,117,30,0,0,0,69,120,116,101,110, + 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,103, + 101,116,95,115,111,117,114,99,101,78,40,12,0,0,0,114, + 56,0,0,0,114,55,0,0,0,114,57,0,0,0,114,58, + 0,0,0,114,76,0,0,0,114,176,0,0,0,114,170,0, + 0,0,114,173,0,0,0,114,218,0,0,0,114,156,0,0, + 0,114,219,0,0,0,114,220,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 8,1,0,0,111,4,0,0,115,16,0,0,0,12,6,6, + 2,12,4,3,1,3,1,24,11,12,6,12,4,114,8,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,130,0,0,0,101,0,0,90, + 1,0,100,0,0,90,2,0,100,1,0,90,3,0,100,2, + 0,100,3,0,132,0,0,90,4,0,100,4,0,100,5,0, + 132,0,0,90,5,0,100,6,0,100,7,0,132,0,0,90, + 6,0,100,8,0,100,9,0,132,0,0,90,7,0,100,10, + 0,100,11,0,132,0,0,90,8,0,100,12,0,100,13,0, + 132,0,0,90,9,0,100,14,0,100,15,0,132,0,0,90, + 10,0,100,16,0,100,17,0,132,0,0,90,11,0,100,18, + 0,100,19,0,132,0,0,90,12,0,100,20,0,83,40,21, + 0,0,0,244,14,0,0,0,95,78,97,109,101,115,112,97, + 99,101,80,97,116,104,117,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,4,0,0,0,2,0, + 0,0,67,0,0,0,115,52,0,0,0,124,1,0,124,0, + 0,95,0,0,124,2,0,124,0,0,95,1,0,116,2,0, + 124,0,0,106,3,0,131,0,0,131,1,0,124,0,0,95, + 4,0,124,3,0,124,0,0,95,5,0,100,0,0,83,40, + 1,0,0,0,78,40,6,0,0,0,114,139,0,0,0,244, + 5,0,0,0,95,112,97,116,104,114,236,0,0,0,244,16, 0,0,0,95,103,101,116,95,112,97,114,101,110,116,95,112, - 97,116,104,117,17,0,0,0,95,108,97,115,116,95,112,97, - 114,101,110,116,95,112,97,116,104,117,12,0,0,0,95,112, - 97,116,104,95,102,105,110,100,101,114,40,4,0,0,0,117, - 4,0,0,0,115,101,108,102,117,4,0,0,0,110,97,109, - 101,117,4,0,0,0,112,97,116,104,117,11,0,0,0,112, - 97,116,104,95,102,105,110,100,101,114,40,0,0,0,0,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,8,0,0,0,95,95,105,110,105, - 116,95,95,140,4,0,0,115,8,0,0,0,0,1,9,1, - 9,1,21,1,117,23,0,0,0,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,4,0,0,0,3,0,0, - 0,67,0,0,0,115,53,0,0,0,124,0,0,106,0,0, - 106,1,0,100,1,0,131,1,0,92,3,0,125,1,0,125, - 2,0,125,3,0,124,2,0,100,2,0,107,2,0,114,43, - 0,100,6,0,83,124,1,0,100,5,0,102,2,0,83,40, - 7,0,0,0,117,62,0,0,0,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,117,1,0,0,0,46,117,0,0, - 0,0,117,3,0,0,0,115,121,115,117,4,0,0,0,112, - 97,116,104,117,8,0,0,0,95,95,112,97,116,104,95,95, - 40,2,0,0,0,117,3,0,0,0,115,121,115,117,4,0, - 0,0,112,97,116,104,40,2,0,0,0,117,5,0,0,0, - 95,110,97,109,101,117,10,0,0,0,114,112,97,114,116,105, - 116,105,111,110,40,4,0,0,0,117,4,0,0,0,115,101, - 108,102,117,6,0,0,0,112,97,114,101,110,116,117,3,0, - 0,0,100,111,116,117,2,0,0,0,109,101,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,23,0,0,0,95,102,105, - 110,100,95,112,97,114,101,110,116,95,112,97,116,104,95,110, - 97,109,101,115,146,4,0,0,115,8,0,0,0,0,2,27, - 1,12,2,4,3,117,38,0,0,0,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,3,0,0,0,3,0,0, - 0,67,0,0,0,115,38,0,0,0,124,0,0,106,0,0, - 131,0,0,92,2,0,125,1,0,125,2,0,116,1,0,116, - 2,0,106,3,0,124,1,0,25,124,2,0,131,2,0,83, - 40,1,0,0,0,78,40,4,0,0,0,117,23,0,0,0, + 97,116,104,244,17,0,0,0,95,108,97,115,116,95,112,97, + 114,101,110,116,95,112,97,116,104,244,12,0,0,0,95,112, + 97,116,104,95,102,105,110,100,101,114,40,4,0,0,0,114, + 75,0,0,0,114,71,0,0,0,114,35,0,0,0,244,11, + 0,0,0,112,97,116,104,95,102,105,110,100,101,114,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,76,0, + 0,0,158,4,0,0,115,8,0,0,0,0,1,9,1,9, + 1,21,1,117,23,0,0,0,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,4,0,0,0,3,0,0,0, + 67,0,0,0,115,53,0,0,0,124,0,0,106,0,0,106, + 1,0,100,1,0,131,1,0,92,3,0,125,1,0,125,2, + 0,125,3,0,124,2,0,100,2,0,107,2,0,114,43,0, + 100,6,0,83,124,1,0,100,5,0,102,2,0,83,40,7, + 0,0,0,117,62,0,0,0,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,101,0,0,0,114,30,0,0,0, + 114,7,0,0,0,114,35,0,0,0,114,159,0,0,0,40, + 2,0,0,0,117,3,0,0,0,115,121,115,117,4,0,0, + 0,112,97,116,104,40,2,0,0,0,114,139,0,0,0,114, + 32,0,0,0,40,4,0,0,0,114,75,0,0,0,114,6, + 1,0,0,244,3,0,0,0,100,111,116,114,80,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,244, + 23,0,0,0,95,102,105,110,100,95,112,97,114,101,110,116, + 95,112,97,116,104,95,110,97,109,101,115,164,4,0,0,115, + 8,0,0,0,0,2,27,1,12,2,4,3,117,38,0,0, + 0,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,117,7,0,0,0,103,101,116,97, - 116,116,114,117,3,0,0,0,115,121,115,117,7,0,0,0, - 109,111,100,117,108,101,115,40,3,0,0,0,117,4,0,0, - 0,115,101,108,102,117,18,0,0,0,112,97,114,101,110,116, - 95,109,111,100,117,108,101,95,110,97,109,101,117,14,0,0, - 0,112,97,116,104,95,97,116,116,114,95,110,97,109,101,40, - 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, - 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, - 95,98,111,111,116,115,116,114,97,112,62,117,16,0,0,0, - 95,103,101,116,95,112,97,114,101,110,116,95,112,97,116,104, - 156,4,0,0,115,4,0,0,0,0,1,18,1,117,31,0, - 0,0,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,4,0,0,0,3,0, - 0,0,67,0,0,0,115,103,0,0,0,116,0,0,124,0, - 0,106,1,0,131,0,0,131,1,0,125,1,0,124,1,0, - 124,0,0,106,2,0,107,3,0,114,96,0,124,0,0,106, - 3,0,124,0,0,106,4,0,124,1,0,131,2,0,92,2, - 0,125,2,0,125,3,0,124,2,0,100,0,0,107,8,0, - 114,84,0,124,3,0,124,0,0,95,6,0,110,0,0,124, - 1,0,124,0,0,95,2,0,110,0,0,124,0,0,106,6, - 0,83,40,1,0,0,0,78,40,7,0,0,0,117,5,0, - 0,0,116,117,112,108,101,117,16,0,0,0,95,103,101,116, - 95,112,97,114,101,110,116,95,112,97,116,104,117,17,0,0, - 0,95,108,97,115,116,95,112,97,114,101,110,116,95,112,97, - 116,104,117,12,0,0,0,95,112,97,116,104,95,102,105,110, - 100,101,114,117,5,0,0,0,95,110,97,109,101,117,4,0, - 0,0,78,111,110,101,117,5,0,0,0,95,112,97,116,104, - 40,4,0,0,0,117,4,0,0,0,115,101,108,102,117,11, - 0,0,0,112,97,114,101,110,116,95,112,97,116,104,117,6, - 0,0,0,108,111,97,100,101,114,117,8,0,0,0,110,101, - 119,95,112,97,116,104,40,0,0,0,0,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,12,0,0,0,95,114,101,99,97,108,99,117,108, - 97,116,101,160,4,0,0,115,14,0,0,0,0,2,18,1, - 15,1,27,3,12,1,12,1,12,1,117,27,0,0,0,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,1,0,0,0,2,0,0,0,67,0,0,0,115, - 16,0,0,0,116,0,0,124,0,0,106,1,0,131,0,0, - 131,1,0,83,40,1,0,0,0,78,40,2,0,0,0,117, - 4,0,0,0,105,116,101,114,117,12,0,0,0,95,114,101, - 99,97,108,99,117,108,97,116,101,40,1,0,0,0,117,4, - 0,0,0,115,101,108,102,40,0,0,0,0,40,0,0,0, - 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, - 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, - 97,112,62,117,8,0,0,0,95,95,105,116,101,114,95,95, - 172,4,0,0,115,2,0,0,0,0,1,117,23,0,0,0, + 104,95,110,97,109,101,115,99,1,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,67,0,0,0,115,38,0,0, + 0,124,0,0,106,0,0,131,0,0,92,2,0,125,1,0, + 125,2,0,116,1,0,116,2,0,106,3,0,124,1,0,25, + 124,2,0,131,2,0,83,40,1,0,0,0,78,40,4,0, + 0,0,114,19,1,0,0,114,61,0,0,0,114,7,0,0, + 0,114,140,0,0,0,40,3,0,0,0,114,75,0,0,0, + 116,18,0,0,0,112,97,114,101,110,116,95,109,111,100,117, + 108,101,95,110,97,109,101,116,14,0,0,0,112,97,116,104, + 95,97,116,116,114,95,110,97,109,101,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,14,1,0,0,174,4, + 0,0,115,4,0,0,0,0,1,18,1,117,31,0,0,0, 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, - 95,105,116,101,114,95,95,99,1,0,0,0,0,0,0,0, - 1,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,116,0,0,124,0,0,106,1,0,131,0,0,131,1,0, - 83,40,1,0,0,0,78,40,2,0,0,0,117,3,0,0, - 0,108,101,110,117,12,0,0,0,95,114,101,99,97,108,99, - 117,108,97,116,101,40,1,0,0,0,117,4,0,0,0,115, - 101,108,102,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 7,0,0,0,95,95,108,101,110,95,95,175,4,0,0,115, - 2,0,0,0,0,1,117,22,0,0,0,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,1,0,0,0,2,0, - 0,0,67,0,0,0,115,16,0,0,0,100,1,0,106,0, - 0,124,0,0,106,1,0,131,1,0,83,40,2,0,0,0, - 78,117,20,0,0,0,95,78,97,109,101,115,112,97,99,101, - 80,97,116,104,40,123,33,114,125,41,40,2,0,0,0,117, - 6,0,0,0,102,111,114,109,97,116,117,5,0,0,0,95, - 112,97,116,104,40,1,0,0,0,117,4,0,0,0,115,101, - 108,102,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,8, - 0,0,0,95,95,114,101,112,114,95,95,178,4,0,0,115, - 2,0,0,0,0,1,117,23,0,0,0,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,114,101,112,114, + 103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,99, + 1,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, + 67,0,0,0,115,103,0,0,0,116,0,0,124,0,0,106, + 1,0,131,0,0,131,1,0,125,1,0,124,1,0,124,0, + 0,106,2,0,107,3,0,114,96,0,124,0,0,106,3,0, + 124,0,0,106,4,0,124,1,0,131,2,0,92,2,0,125, + 2,0,125,3,0,124,2,0,100,0,0,107,8,0,114,84, + 0,124,3,0,124,0,0,95,5,0,110,0,0,124,1,0, + 124,0,0,95,2,0,110,0,0,124,0,0,106,5,0,83, + 40,1,0,0,0,78,40,6,0,0,0,114,236,0,0,0, + 114,14,1,0,0,114,15,1,0,0,114,16,1,0,0,114, + 139,0,0,0,114,13,1,0,0,40,4,0,0,0,114,75, + 0,0,0,116,11,0,0,0,112,97,114,101,110,116,95,112, + 97,116,104,114,160,0,0,0,116,8,0,0,0,110,101,119, + 95,112,97,116,104,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,244,12,0,0,0,95,114,101,99,97,108,99, + 117,108,97,116,101,178,4,0,0,115,14,0,0,0,0,2, + 18,1,15,1,27,3,12,1,12,1,12,1,117,27,0,0, + 0,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,1,0,0,0,2,0,0,0,67,0,0, + 0,115,16,0,0,0,116,0,0,124,0,0,106,1,0,131, + 0,0,131,1,0,83,40,1,0,0,0,78,40,2,0,0, + 0,244,4,0,0,0,105,116,101,114,114,20,1,0,0,40, + 1,0,0,0,114,75,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,244,8,0,0,0,95,95,105, + 116,101,114,95,95,190,4,0,0,115,2,0,0,0,0,1, + 117,23,0,0,0,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,46,95,95,105,116,101,114,95,95,99,1,0,0, + 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0, + 0,115,16,0,0,0,116,0,0,124,0,0,106,1,0,131, + 0,0,131,1,0,83,40,1,0,0,0,78,40,2,0,0, + 0,114,31,0,0,0,114,20,1,0,0,40,1,0,0,0, + 114,75,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,244,7,0,0,0,95,95,108,101,110,95,95, + 193,4,0,0,115,2,0,0,0,0,1,117,22,0,0,0, + 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,1, + 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, + 100,1,0,106,0,0,124,0,0,106,1,0,131,1,0,83, + 40,2,0,0,0,78,117,20,0,0,0,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,40,123,33,114,125,41,40, + 2,0,0,0,114,46,0,0,0,114,13,1,0,0,40,1, + 0,0,0,114,75,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,87,0,0,0,196,4,0,0, + 115,2,0,0,0,0,1,117,23,0,0,0,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,2,0,0,0, + 2,0,0,0,67,0,0,0,115,16,0,0,0,124,1,0, + 124,0,0,106,0,0,131,0,0,107,6,0,83,40,1,0, + 0,0,78,40,1,0,0,0,114,20,1,0,0,40,2,0, + 0,0,114,75,0,0,0,244,4,0,0,0,105,116,101,109, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,244, + 12,0,0,0,95,95,99,111,110,116,97,105,110,115,95,95, + 199,4,0,0,115,2,0,0,0,0,1,117,27,0,0,0, + 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,2,0,0,0,2,0,0,0,67,0,0,0, + 115,20,0,0,0,124,0,0,106,0,0,106,1,0,124,1, + 0,131,1,0,1,100,0,0,83,40,1,0,0,0,78,40, + 2,0,0,0,114,13,1,0,0,114,165,0,0,0,40,2, + 0,0,0,114,75,0,0,0,114,24,1,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,165,0,0, + 0,202,4,0,0,115,2,0,0,0,0,1,117,21,0,0, + 0,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, + 97,112,112,101,110,100,78,40,13,0,0,0,114,56,0,0, + 0,114,55,0,0,0,114,57,0,0,0,114,58,0,0,0, + 114,76,0,0,0,114,19,1,0,0,114,14,1,0,0,114, + 20,1,0,0,114,22,1,0,0,114,23,1,0,0,114,87, + 0,0,0,114,25,1,0,0,114,165,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,12,1,0,0,151,4,0,0,115,20,0,0,0,12, + 5,6,2,12,6,12,10,12,4,12,12,12,3,12,3,12, + 3,12,3,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,106,0, + 0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,1, + 0,100,2,0,132,0,0,90,3,0,101,4,0,100,3,0, + 100,4,0,132,0,0,131,1,0,90,5,0,100,5,0,100, + 6,0,132,0,0,90,6,0,100,7,0,100,8,0,132,0, + 0,90,7,0,100,9,0,100,10,0,132,0,0,90,8,0, + 100,11,0,100,12,0,132,0,0,90,9,0,100,13,0,100, + 14,0,132,0,0,90,10,0,100,15,0,83,40,16,0,0, + 0,244,15,0,0,0,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,99,4,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,67,0,0,0,115,25,0,0,0,116, + 0,0,124,1,0,124,2,0,124,3,0,131,3,0,124,0, + 0,95,1,0,100,0,0,83,40,1,0,0,0,78,40,2, + 0,0,0,114,12,1,0,0,114,13,1,0,0,40,4,0, + 0,0,114,75,0,0,0,114,71,0,0,0,114,35,0,0, + 0,114,17,1,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,76,0,0,0,207,4,0,0,115,2, + 0,0,0,0,1,117,24,0,0,0,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,95,95,105,110,105,116, 95,95,99,2,0,0,0,0,0,0,0,2,0,0,0,2, - 0,0,0,67,0,0,0,115,16,0,0,0,124,1,0,124, - 0,0,106,0,0,131,0,0,107,6,0,83,40,1,0,0, - 0,78,40,1,0,0,0,117,12,0,0,0,95,114,101,99, - 97,108,99,117,108,97,116,101,40,2,0,0,0,117,4,0, - 0,0,115,101,108,102,117,4,0,0,0,105,116,101,109,40, - 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, - 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, - 95,98,111,111,116,115,116,114,97,112,62,117,12,0,0,0, - 95,95,99,111,110,116,97,105,110,115,95,95,181,4,0,0, - 115,2,0,0,0,0,1,117,27,0,0,0,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, - 2,0,0,0,2,0,0,0,67,0,0,0,115,20,0,0, - 0,124,0,0,106,0,0,106,1,0,124,1,0,131,1,0, - 1,100,0,0,83,40,1,0,0,0,78,40,2,0,0,0, - 117,5,0,0,0,95,112,97,116,104,117,6,0,0,0,97, - 112,112,101,110,100,40,2,0,0,0,117,4,0,0,0,115, - 101,108,102,117,4,0,0,0,105,116,101,109,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,6,0,0,0,97,112,112, - 101,110,100,184,4,0,0,115,2,0,0,0,0,1,117,21, - 0,0,0,95,78,97,109,101,115,112,97,99,101,80,97,116, - 104,46,97,112,112,101,110,100,78,40,13,0,0,0,117,8, - 0,0,0,95,95,110,97,109,101,95,95,117,10,0,0,0, - 95,95,109,111,100,117,108,101,95,95,117,12,0,0,0,95, - 95,113,117,97,108,110,97,109,101,95,95,117,7,0,0,0, - 95,95,100,111,99,95,95,117,8,0,0,0,95,95,105,110, - 105,116,95,95,117,23,0,0,0,95,102,105,110,100,95,112, - 97,114,101,110,116,95,112,97,116,104,95,110,97,109,101,115, - 117,16,0,0,0,95,103,101,116,95,112,97,114,101,110,116, - 95,112,97,116,104,117,12,0,0,0,95,114,101,99,97,108, - 99,117,108,97,116,101,117,8,0,0,0,95,95,105,116,101, - 114,95,95,117,7,0,0,0,95,95,108,101,110,95,95,117, - 8,0,0,0,95,95,114,101,112,114,95,95,117,12,0,0, - 0,95,95,99,111,110,116,97,105,110,115,95,95,117,6,0, - 0,0,97,112,112,101,110,100,40,1,0,0,0,117,10,0, - 0,0,95,95,108,111,99,97,108,115,95,95,40,0,0,0, - 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, - 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, - 111,116,115,116,114,97,112,62,117,14,0,0,0,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,133,4,0,0,115, - 20,0,0,0,16,5,6,2,12,6,12,10,12,4,12,12, - 12,3,12,3,12,3,12,3,117,14,0,0,0,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,99,1,0,0,0, - 0,0,0,0,1,0,0,0,3,0,0,0,66,0,0,0, - 115,68,0,0,0,124,0,0,69,101,0,0,90,1,0,100, - 0,0,90,2,0,100,1,0,100,2,0,132,0,0,90,3, - 0,101,4,0,100,3,0,100,4,0,132,0,0,131,1,0, - 90,5,0,101,6,0,100,5,0,100,6,0,132,0,0,131, - 1,0,90,7,0,100,7,0,83,40,8,0,0,0,117,15, - 0,0,0,78,97,109,101,115,112,97,99,101,76,111,97,100, - 101,114,99,4,0,0,0,0,0,0,0,4,0,0,0,4, - 0,0,0,67,0,0,0,115,25,0,0,0,116,0,0,124, - 1,0,124,2,0,124,3,0,131,3,0,124,0,0,95,1, - 0,100,0,0,83,40,1,0,0,0,78,40,2,0,0,0, - 117,14,0,0,0,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,117,5,0,0,0,95,112,97,116,104,40,4,0, - 0,0,117,4,0,0,0,115,101,108,102,117,4,0,0,0, - 110,97,109,101,117,4,0,0,0,112,97,116,104,117,11,0, - 0,0,112,97,116,104,95,102,105,110,100,101,114,40,0,0, - 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, - 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, - 111,111,116,115,116,114,97,112,62,117,8,0,0,0,95,95, - 105,110,105,116,95,95,189,4,0,0,115,2,0,0,0,0, - 1,117,24,0,0,0,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,46,95,95,105,110,105,116,95,95,99,2, - 0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,67, - 0,0,0,115,16,0,0,0,100,1,0,106,0,0,124,1, - 0,106,1,0,131,1,0,83,40,2,0,0,0,78,117,25, - 0,0,0,60,109,111,100,117,108,101,32,39,123,125,39,32, - 40,110,97,109,101,115,112,97,99,101,41,62,40,2,0,0, - 0,117,6,0,0,0,102,111,114,109,97,116,117,8,0,0, - 0,95,95,110,97,109,101,95,95,40,2,0,0,0,117,3, - 0,0,0,99,108,115,117,6,0,0,0,109,111,100,117,108, - 101,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,11,0, - 0,0,109,111,100,117,108,101,95,114,101,112,114,192,4,0, - 0,115,2,0,0,0,0,2,117,27,0,0,0,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,2,0,0,0,3,0,0,0,67,0,0,0,115,32,0, - 0,0,116,0,0,100,1,0,124,0,0,106,1,0,131,2, - 0,1,124,0,0,106,1,0,124,1,0,95,2,0,124,1, - 0,83,40,2,0,0,0,117,24,0,0,0,76,111,97,100, - 32,97,32,110,97,109,101,115,112,97,99,101,32,109,111,100, - 117,108,101,46,117,38,0,0,0,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,40, - 3,0,0,0,117,16,0,0,0,95,118,101,114,98,111,115, - 101,95,109,101,115,115,97,103,101,117,5,0,0,0,95,112, - 97,116,104,117,8,0,0,0,95,95,112,97,116,104,95,95, - 40,2,0,0,0,117,4,0,0,0,115,101,108,102,117,6, - 0,0,0,109,111,100,117,108,101,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,11,0,0,0,108,111,97,100,95,109, - 111,100,117,108,101,196,4,0,0,115,6,0,0,0,0,3, - 16,1,12,1,117,27,0,0,0,78,97,109,101,115,112,97, - 99,101,76,111,97,100,101,114,46,108,111,97,100,95,109,111, - 100,117,108,101,78,40,8,0,0,0,117,8,0,0,0,95, - 95,110,97,109,101,95,95,117,10,0,0,0,95,95,109,111, - 100,117,108,101,95,95,117,12,0,0,0,95,95,113,117,97, - 108,110,97,109,101,95,95,117,8,0,0,0,95,95,105,110, - 105,116,95,95,117,11,0,0,0,99,108,97,115,115,109,101, - 116,104,111,100,117,11,0,0,0,109,111,100,117,108,101,95, - 114,101,112,114,117,17,0,0,0,109,111,100,117,108,101,95, - 102,111,114,95,108,111,97,100,101,114,117,11,0,0,0,108, - 111,97,100,95,109,111,100,117,108,101,40,1,0,0,0,117, - 10,0,0,0,95,95,108,111,99,97,108,115,95,95,40,0, - 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, - 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, - 98,111,111,116,115,116,114,97,112,62,117,15,0,0,0,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,188,4, - 0,0,115,6,0,0,0,16,1,12,3,18,4,117,15,0, + 0,0,0,67,0,0,0,115,16,0,0,0,100,1,0,106, + 0,0,124,1,0,106,1,0,131,1,0,83,40,2,0,0, + 0,78,117,25,0,0,0,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, + 40,2,0,0,0,114,46,0,0,0,114,56,0,0,0,40, + 2,0,0,0,114,215,0,0,0,114,161,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,216,0, + 0,0,210,4,0,0,115,2,0,0,0,0,2,117,27,0, 0,0,78,97,109,101,115,112,97,99,101,76,111,97,100,101, - 114,99,1,0,0,0,0,0,0,0,1,0,0,0,4,0, - 0,0,66,0,0,0,115,119,0,0,0,124,0,0,69,101, - 0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,3, - 0,101,4,0,100,2,0,100,3,0,132,0,0,131,1,0, - 90,5,0,101,4,0,100,4,0,100,5,0,132,0,0,131, - 1,0,90,6,0,101,4,0,100,6,0,100,7,0,132,0, - 0,131,1,0,90,7,0,101,4,0,100,8,0,100,9,0, - 132,0,0,131,1,0,90,8,0,101,4,0,100,12,0,100, - 10,0,100,11,0,132,1,0,131,1,0,90,10,0,100,12, - 0,83,40,13,0,0,0,117,10,0,0,0,80,97,116,104, - 70,105,110,100,101,114,117,62,0,0,0,77,101,116,97,32, - 112,97,116,104,32,102,105,110,100,101,114,32,102,111,114,32, - 115,121,115,46,112,97,116,104,32,97,110,100,32,112,97,99, - 107,97,103,101,32,95,95,112,97,116,104,95,95,32,97,116, - 116,114,105,98,117,116,101,115,46,99,1,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,58, - 0,0,0,120,51,0,116,0,0,106,1,0,106,2,0,131, - 0,0,68,93,34,0,125,1,0,116,3,0,124,1,0,100, - 1,0,131,2,0,114,16,0,124,1,0,106,4,0,131,0, - 0,1,113,16,0,113,16,0,87,100,2,0,83,40,3,0, - 0,0,117,125,0,0,0,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,117,17,0,0,0,105,110,118,97,108,105,100, - 97,116,101,95,99,97,99,104,101,115,78,40,5,0,0,0, - 117,3,0,0,0,115,121,115,117,19,0,0,0,112,97,116, - 104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,101, - 117,6,0,0,0,118,97,108,117,101,115,117,7,0,0,0, - 104,97,115,97,116,116,114,117,17,0,0,0,105,110,118,97, - 108,105,100,97,116,101,95,99,97,99,104,101,115,40,2,0, - 0,0,117,3,0,0,0,99,108,115,117,6,0,0,0,102, - 105,110,100,101,114,40,0,0,0,0,40,0,0,0,0,117, - 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, - 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, - 62,117,17,0,0,0,105,110,118,97,108,105,100,97,116,101, - 95,99,97,99,104,101,115,210,4,0,0,115,6,0,0,0, - 0,4,22,1,15,1,117,28,0,0,0,80,97,116,104,70, - 105,110,100,101,114,46,105,110,118,97,108,105,100,97,116,101, - 95,99,97,99,104,101,115,99,2,0,0,0,0,0,0,0, - 3,0,0,0,12,0,0,0,67,0,0,0,115,94,0,0, - 0,116,0,0,106,1,0,115,28,0,116,2,0,106,3,0, - 100,1,0,116,4,0,131,2,0,1,110,0,0,120,59,0, - 116,0,0,106,1,0,68,93,44,0,125,2,0,121,14,0, - 124,2,0,124,1,0,131,1,0,83,87,113,38,0,4,116, - 5,0,107,10,0,114,81,0,1,1,1,119,38,0,89,113, - 38,0,88,113,38,0,87,100,2,0,83,100,2,0,83,40, - 3,0,0,0,117,113,0,0,0,83,101,97,114,99,104,32, - 115,101,113,117,101,110,99,101,32,111,102,32,104,111,111,107, - 115,32,102,111,114,32,97,32,102,105,110,100,101,114,32,102, - 111,114,32,39,112,97,116,104,39,46,10,10,32,32,32,32, - 32,32,32,32,73,102,32,39,104,111,111,107,115,39,32,105, - 115,32,102,97,108,115,101,32,116,104,101,110,32,117,115,101, - 32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,46, - 10,10,32,32,32,32,32,32,32,32,117,23,0,0,0,115, - 121,115,46,112,97,116,104,95,104,111,111,107,115,32,105,115, - 32,101,109,112,116,121,78,40,7,0,0,0,117,3,0,0, - 0,115,121,115,117,10,0,0,0,112,97,116,104,95,104,111, - 111,107,115,117,9,0,0,0,95,119,97,114,110,105,110,103, - 115,117,4,0,0,0,119,97,114,110,117,13,0,0,0,73, - 109,112,111,114,116,87,97,114,110,105,110,103,117,11,0,0, - 0,73,109,112,111,114,116,69,114,114,111,114,117,4,0,0, - 0,78,111,110,101,40,3,0,0,0,117,3,0,0,0,99, - 108,115,117,4,0,0,0,112,97,116,104,117,4,0,0,0, - 104,111,111,107,40,0,0,0,0,40,0,0,0,0,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,11,0,0,0,95,112,97,116,104,95,104,111,111,107,115, - 218,4,0,0,115,16,0,0,0,0,7,9,1,19,1,16, - 1,3,1,14,1,13,1,12,2,117,22,0,0,0,80,97, - 116,104,70,105,110,100,101,114,46,95,112,97,116,104,95,104, - 111,111,107,115,99,2,0,0,0,0,0,0,0,3,0,0, - 0,11,0,0,0,67,0,0,0,115,91,0,0,0,124,1, - 0,100,1,0,107,2,0,114,21,0,100,2,0,125,1,0, - 110,0,0,121,17,0,116,0,0,106,1,0,124,1,0,25, - 125,2,0,87,110,46,0,4,116,2,0,107,10,0,114,86, - 0,1,1,1,124,0,0,106,3,0,124,1,0,131,1,0, - 125,2,0,124,2,0,116,0,0,106,1,0,124,1,0,60, - 89,110,1,0,88,124,2,0,83,40,3,0,0,0,117,210, - 0,0,0,71,101,116,32,116,104,101,32,102,105,110,100,101, - 114,32,102,111,114,32,116,104,101,32,112,97,116,104,32,101, - 110,116,114,121,32,102,114,111,109,32,115,121,115,46,112,97, + 114,46,109,111,100,117,108,101,95,114,101,112,114,99,2,0, + 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, + 0,0,115,4,0,0,0,100,1,0,83,40,2,0,0,0, + 78,84,114,4,0,0,0,40,2,0,0,0,114,75,0,0, + 0,114,178,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,156,0,0,0,214,4,0,0,115,2, + 0,0,0,0,1,117,26,0,0,0,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,2,0,0, + 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, + 0,83,40,2,0,0,0,78,114,30,0,0,0,114,4,0, + 0,0,40,2,0,0,0,114,75,0,0,0,114,178,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,220,0,0,0,217,4,0,0,115,2,0,0,0,0,1, + 117,26,0,0,0,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,2,0,0,0,6,0,0,0, + 67,0,0,0,115,22,0,0,0,116,0,0,100,1,0,100, + 2,0,100,3,0,100,4,0,100,5,0,131,3,1,83,40, + 6,0,0,0,78,114,30,0,0,0,117,8,0,0,0,60, + 115,116,114,105,110,103,62,114,240,0,0,0,114,250,0,0, + 0,84,40,1,0,0,0,114,251,0,0,0,40,2,0,0, + 0,114,75,0,0,0,114,178,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,219,0,0,0,220, + 4,0,0,115,2,0,0,0,0,1,117,24,0,0,0,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, + 2,0,0,0,2,0,0,0,67,0,0,0,115,25,0,0, + 0,124,0,0,124,1,0,95,0,0,124,1,0,106,1,0, + 124,1,0,95,2,0,100,0,0,83,40,1,0,0,0,78, + 40,3,0,0,0,114,171,0,0,0,114,56,0,0,0,114, + 158,0,0,0,40,2,0,0,0,114,75,0,0,0,114,161, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,239,0,0,0,223,4,0,0,115,4,0,0,0, + 0,1,9,1,117,33,0,0,0,78,97,109,101,115,112,97, + 99,101,76,111,97,100,101,114,46,105,110,105,116,95,109,111, + 100,117,108,101,95,97,116,116,114,115,99,2,0,0,0,0, + 0,0,0,3,0,0,0,9,0,0,0,67,0,0,0,115, + 70,0,0,0,116,0,0,100,1,0,124,0,0,106,1,0, + 131,2,0,1,116,2,0,124,1,0,131,1,0,143,36,0, + 125,2,0,124,0,0,106,3,0,124,2,0,131,1,0,1, + 124,0,0,106,1,0,124,2,0,95,4,0,124,2,0,83, + 87,100,2,0,81,88,100,2,0,83,40,3,0,0,0,117, + 24,0,0,0,76,111,97,100,32,97,32,110,97,109,101,115, + 112,97,99,101,32,109,111,100,117,108,101,46,117,38,0,0, + 0,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,40,5,0,0,0,114,137,0, + 0,0,114,13,1,0,0,114,155,0,0,0,114,239,0,0, + 0,114,159,0,0,0,40,3,0,0,0,114,75,0,0,0, + 114,178,0,0,0,114,161,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,218,0,0,0,227,4, + 0,0,115,10,0,0,0,0,2,16,1,15,1,13,1,12, + 1,117,27,0,0,0,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,46,108,111,97,100,95,109,111,100,117,108, + 101,78,40,11,0,0,0,114,56,0,0,0,114,55,0,0, + 0,114,57,0,0,0,114,76,0,0,0,114,221,0,0,0, + 114,216,0,0,0,114,156,0,0,0,114,220,0,0,0,114, + 219,0,0,0,114,239,0,0,0,114,218,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,26,1,0,0,206,4,0,0,115,14,0,0,0, + 12,1,12,3,18,4,12,3,12,3,12,3,12,4,114,26, + 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,115,0,0,0,101,0,0, + 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,101, + 4,0,100,2,0,100,3,0,132,0,0,131,1,0,90,5, + 0,101,4,0,100,4,0,100,5,0,132,0,0,131,1,0, + 90,6,0,101,4,0,100,6,0,100,7,0,132,0,0,131, + 1,0,90,7,0,101,4,0,100,8,0,100,9,0,132,0, + 0,131,1,0,90,8,0,101,4,0,100,10,0,100,11,0, + 100,12,0,132,1,0,131,1,0,90,9,0,100,10,0,83, + 40,13,0,0,0,244,10,0,0,0,80,97,116,104,70,105, + 110,100,101,114,117,62,0,0,0,77,101,116,97,32,112,97, + 116,104,32,102,105,110,100,101,114,32,102,111,114,32,115,121, + 115,46,112,97,116,104,32,97,110,100,32,112,97,99,107,97, + 103,101,32,95,95,112,97,116,104,95,95,32,97,116,116,114, + 105,98,117,116,101,115,46,99,1,0,0,0,0,0,0,0, + 2,0,0,0,4,0,0,0,67,0,0,0,115,58,0,0, + 0,120,51,0,116,0,0,106,1,0,106,2,0,131,0,0, + 68,93,34,0,125,1,0,116,3,0,124,1,0,100,1,0, + 131,2,0,114,16,0,124,1,0,106,4,0,131,0,0,1, + 113,16,0,113,16,0,87,100,2,0,83,40,3,0,0,0, + 117,125,0,0,0,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,244,17,0,0,0,105,110,118,97,108,105,100,97,116, + 101,95,99,97,99,104,101,115,78,40,5,0,0,0,114,7, + 0,0,0,244,19,0,0,0,112,97,116,104,95,105,109,112, + 111,114,116,101,114,95,99,97,99,104,101,244,6,0,0,0, + 118,97,108,117,101,115,114,59,0,0,0,114,28,1,0,0, + 40,2,0,0,0,114,215,0,0,0,244,6,0,0,0,102, + 105,110,100,101,114,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,28,1,0,0,242,4,0,0,115,6,0, + 0,0,0,4,22,1,15,1,117,28,0,0,0,80,97,116, + 104,70,105,110,100,101,114,46,105,110,118,97,108,105,100,97, + 116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,0, + 0,0,3,0,0,0,12,0,0,0,67,0,0,0,115,94, + 0,0,0,116,0,0,106,1,0,115,28,0,116,2,0,106, + 3,0,100,1,0,116,4,0,131,2,0,1,110,0,0,120, + 59,0,116,0,0,106,1,0,68,93,44,0,125,2,0,121, + 14,0,124,2,0,124,1,0,131,1,0,83,87,113,38,0, + 4,116,5,0,107,10,0,114,81,0,1,1,1,119,38,0, + 89,113,38,0,88,113,38,0,87,100,2,0,83,100,2,0, + 83,40,3,0,0,0,117,113,0,0,0,83,101,97,114,99, + 104,32,115,101,113,117,101,110,99,101,32,111,102,32,104,111, + 111,107,115,32,102,111,114,32,97,32,102,105,110,100,101,114, + 32,102,111,114,32,39,112,97,116,104,39,46,10,10,32,32, + 32,32,32,32,32,32,73,102,32,39,104,111,111,107,115,39, + 32,105,115,32,102,97,108,115,101,32,116,104,101,110,32,117, + 115,101,32,115,121,115,46,112,97,116,104,95,104,111,111,107, + 115,46,10,10,32,32,32,32,32,32,32,32,117,23,0,0, + 0,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, + 105,115,32,101,109,112,116,121,78,40,6,0,0,0,114,7, + 0,0,0,244,10,0,0,0,112,97,116,104,95,104,111,111, + 107,115,114,185,0,0,0,114,186,0,0,0,114,187,0,0, + 0,114,157,0,0,0,40,3,0,0,0,114,215,0,0,0, + 114,35,0,0,0,116,4,0,0,0,104,111,111,107,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,244,11,0, + 0,0,95,112,97,116,104,95,104,111,111,107,115,250,4,0, + 0,115,16,0,0,0,0,7,9,1,19,1,16,1,3,1, + 14,1,13,1,12,2,117,22,0,0,0,80,97,116,104,70, + 105,110,100,101,114,46,95,112,97,116,104,95,104,111,111,107, + 115,99,2,0,0,0,0,0,0,0,3,0,0,0,11,0, + 0,0,67,0,0,0,115,91,0,0,0,124,1,0,100,1, + 0,107,2,0,114,21,0,100,2,0,125,1,0,110,0,0, + 121,17,0,116,0,0,106,1,0,124,1,0,25,125,2,0, + 87,110,46,0,4,116,2,0,107,10,0,114,86,0,1,1, + 1,124,0,0,106,3,0,124,1,0,131,1,0,125,2,0, + 124,2,0,116,0,0,106,1,0,124,1,0,60,89,110,1, + 0,88,124,2,0,83,40,3,0,0,0,117,210,0,0,0, + 71,101,116,32,116,104,101,32,102,105,110,100,101,114,32,102, + 111,114,32,116,104,101,32,112,97,116,104,32,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,30,0,0,0,114,101,0,0,0,40,4,0,0, + 0,114,7,0,0,0,114,29,1,0,0,114,91,0,0,0, + 114,33,1,0,0,40,3,0,0,0,114,215,0,0,0,114, + 35,0,0,0,114,31,1,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,244,20,0,0,0,95,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,117,0,0,0,0,117,1,0,0,0,46, - 40,4,0,0,0,117,3,0,0,0,115,121,115,117,19,0, - 0,0,112,97,116,104,95,105,109,112,111,114,116,101,114,95, - 99,97,99,104,101,117,8,0,0,0,75,101,121,69,114,114, - 111,114,117,11,0,0,0,95,112,97,116,104,95,104,111,111, - 107,115,40,3,0,0,0,117,3,0,0,0,99,108,115,117, - 4,0,0,0,112,97,116,104,117,6,0,0,0,102,105,110, - 100,101,114,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 20,0,0,0,95,112,97,116,104,95,105,109,112,111,114,116, - 101,114,95,99,97,99,104,101,235,4,0,0,115,16,0,0, - 0,0,8,12,1,9,1,3,1,17,1,13,1,15,1,18, - 1,117,31,0,0,0,80,97,116,104,70,105,110,100,101,114, - 46,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95, - 99,97,99,104,101,99,3,0,0,0,0,0,0,0,8,0, - 0,0,5,0,0,0,67,0,0,0,115,189,0,0,0,103, - 0,0,125,3,0,120,176,0,124,2,0,68,93,158,0,125, - 4,0,116,0,0,124,4,0,116,1,0,116,2,0,102,2, - 0,131,2,0,115,46,0,113,13,0,110,0,0,124,0,0, - 106,3,0,124,4,0,131,1,0,125,5,0,124,5,0,100, - 2,0,107,9,0,114,13,0,116,5,0,124,5,0,100,1, - 0,131,2,0,114,112,0,124,5,0,106,6,0,124,1,0, - 131,1,0,92,2,0,125,6,0,125,7,0,110,21,0,124, - 5,0,106,7,0,124,1,0,131,1,0,125,6,0,103,0, - 0,125,7,0,124,6,0,100,2,0,107,9,0,114,155,0, - 124,6,0,124,3,0,102,2,0,83,124,3,0,106,8,0, - 124,7,0,131,1,0,1,113,13,0,113,13,0,87,100,2, - 0,124,3,0,102,2,0,83,100,2,0,83,40,3,0,0, - 0,117,63,0,0,0,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,117,11,0,0,0,102,105,110,100,95,108, - 111,97,100,101,114,78,40,9,0,0,0,117,10,0,0,0, - 105,115,105,110,115,116,97,110,99,101,117,3,0,0,0,115, - 116,114,117,5,0,0,0,98,121,116,101,115,117,20,0,0, - 0,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95, - 99,97,99,104,101,117,4,0,0,0,78,111,110,101,117,7, - 0,0,0,104,97,115,97,116,116,114,117,11,0,0,0,102, - 105,110,100,95,108,111,97,100,101,114,117,11,0,0,0,102, - 105,110,100,95,109,111,100,117,108,101,117,6,0,0,0,101, - 120,116,101,110,100,40,8,0,0,0,117,3,0,0,0,99, - 108,115,117,8,0,0,0,102,117,108,108,110,97,109,101,117, - 4,0,0,0,112,97,116,104,117,14,0,0,0,110,97,109, - 101,115,112,97,99,101,95,112,97,116,104,117,5,0,0,0, - 101,110,116,114,121,117,6,0,0,0,102,105,110,100,101,114, - 117,6,0,0,0,108,111,97,100,101,114,117,8,0,0,0, - 112,111,114,116,105,111,110,115,40,0,0,0,0,40,0,0, - 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, - 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, - 114,97,112,62,117,11,0,0,0,95,103,101,116,95,108,111, - 97,100,101,114,252,4,0,0,115,28,0,0,0,0,5,6, - 1,13,1,21,1,6,1,15,1,12,1,15,1,24,2,15, - 1,6,1,12,2,10,5,20,2,117,22,0,0,0,80,97, - 116,104,70,105,110,100,101,114,46,95,103,101,116,95,108,111, - 97,100,101,114,99,3,0,0,0,0,0,0,0,5,0,0, - 0,4,0,0,0,67,0,0,0,115,97,0,0,0,124,2, - 0,100,1,0,107,8,0,114,24,0,116,1,0,106,2,0, - 125,2,0,110,0,0,124,0,0,106,3,0,124,1,0,124, - 2,0,131,2,0,92,2,0,125,3,0,125,4,0,124,3, - 0,100,1,0,107,9,0,114,64,0,124,3,0,83,124,4, - 0,114,89,0,116,4,0,124,1,0,124,4,0,124,0,0, - 106,3,0,131,3,0,83,100,1,0,83,100,1,0,83,40, - 2,0,0,0,117,98,0,0,0,70,105,110,100,32,116,104, - 101,32,109,111,100,117,108,101,32,111,110,32,115,121,115,46, - 112,97,116,104,32,111,114,32,39,112,97,116,104,39,32,98, - 97,115,101,100,32,111,110,32,115,121,115,46,112,97,116,104, - 95,104,111,111,107,115,32,97,110,100,10,32,32,32,32,32, - 32,32,32,115,121,115,46,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,46,78,40,5,0,0, - 0,117,4,0,0,0,78,111,110,101,117,3,0,0,0,115, - 121,115,117,4,0,0,0,112,97,116,104,117,11,0,0,0, - 95,103,101,116,95,108,111,97,100,101,114,117,15,0,0,0, - 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,40, - 5,0,0,0,117,3,0,0,0,99,108,115,117,8,0,0, - 0,102,117,108,108,110,97,109,101,117,4,0,0,0,112,97, - 116,104,117,6,0,0,0,108,111,97,100,101,114,117,14,0, + 101,11,5,0,0,115,16,0,0,0,0,8,12,1,9,1, + 3,1,17,1,13,1,15,1,18,1,117,31,0,0,0,80, + 97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95, + 105,109,112,111,114,116,101,114,95,99,97,99,104,101,99,3, + 0,0,0,0,0,0,0,8,0,0,0,5,0,0,0,67, + 0,0,0,115,189,0,0,0,103,0,0,125,3,0,120,176, + 0,124,2,0,68,93,158,0,125,4,0,116,0,0,124,4, + 0,116,1,0,116,2,0,102,2,0,131,2,0,115,46,0, + 113,13,0,110,0,0,124,0,0,106,3,0,124,4,0,131, + 1,0,125,5,0,124,5,0,100,1,0,107,9,0,114,13, + 0,116,4,0,124,5,0,100,2,0,131,2,0,114,112,0, + 124,5,0,106,5,0,124,1,0,131,1,0,92,2,0,125, + 6,0,125,7,0,110,21,0,124,5,0,106,6,0,124,1, + 0,131,1,0,125,6,0,103,0,0,125,7,0,124,6,0, + 100,1,0,107,9,0,114,155,0,124,6,0,124,3,0,102, + 2,0,83,124,3,0,106,7,0,124,7,0,131,1,0,1, + 113,13,0,113,13,0,87,100,1,0,124,3,0,102,2,0, + 83,100,1,0,83,40,3,0,0,0,117,63,0,0,0,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, + 184,0,0,0,40,8,0,0,0,114,202,0,0,0,244,3, + 0,0,0,115,116,114,244,5,0,0,0,98,121,116,101,115, + 114,34,1,0,0,114,59,0,0,0,114,184,0,0,0,114, + 217,0,0,0,114,207,0,0,0,40,8,0,0,0,114,215, + 0,0,0,114,178,0,0,0,114,35,0,0,0,244,14,0, 0,0,110,97,109,101,115,112,97,99,101,95,112,97,116,104, - 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,11,0,0, - 0,102,105,110,100,95,109,111,100,117,108,101,23,5,0,0, + 116,5,0,0,0,101,110,116,114,121,114,31,1,0,0,114, + 160,0,0,0,114,188,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,244,11,0,0,0,95,103,101, + 116,95,108,111,97,100,101,114,28,5,0,0,115,28,0,0, + 0,0,5,6,1,13,1,21,1,6,1,15,1,12,1,15, + 1,24,2,15,1,6,1,12,2,10,5,20,2,117,22,0, + 0,0,80,97,116,104,70,105,110,100,101,114,46,95,103,101, + 116,95,108,111,97,100,101,114,78,99,3,0,0,0,0,0, + 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,97, + 0,0,0,124,2,0,100,1,0,107,8,0,114,24,0,116, + 0,0,106,1,0,125,2,0,110,0,0,124,0,0,106,2, + 0,124,1,0,124,2,0,131,2,0,92,2,0,125,3,0, + 125,4,0,124,3,0,100,1,0,107,9,0,114,64,0,124, + 3,0,83,124,4,0,114,89,0,116,3,0,124,1,0,124, + 4,0,124,0,0,106,2,0,131,3,0,83,100,1,0,83, + 100,1,0,83,40,2,0,0,0,117,98,0,0,0,70,105, + 110,100,32,116,104,101,32,109,111,100,117,108,101,32,111,110, + 32,115,121,115,46,112,97,116,104,32,111,114,32,39,112,97, + 116,104,39,32,98,97,115,101,100,32,111,110,32,115,121,115, + 46,112,97,116,104,95,104,111,111,107,115,32,97,110,100,10, + 32,32,32,32,32,32,32,32,115,121,115,46,112,97,116,104, + 95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,46, + 78,40,4,0,0,0,114,7,0,0,0,114,35,0,0,0, + 114,38,1,0,0,114,26,1,0,0,40,5,0,0,0,114, + 215,0,0,0,114,178,0,0,0,114,35,0,0,0,114,160, + 0,0,0,114,37,1,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,217,0,0,0,55,5,0,0, 115,16,0,0,0,0,4,12,1,12,1,24,1,12,1,4, 2,6,3,19,2,117,22,0,0,0,80,97,116,104,70,105, 110,100,101,114,46,102,105,110,100,95,109,111,100,117,108,101, - 78,40,11,0,0,0,117,8,0,0,0,95,95,110,97,109, - 101,95,95,117,10,0,0,0,95,95,109,111,100,117,108,101, - 95,95,117,12,0,0,0,95,95,113,117,97,108,110,97,109, - 101,95,95,117,7,0,0,0,95,95,100,111,99,95,95,117, - 11,0,0,0,99,108,97,115,115,109,101,116,104,111,100,117, - 17,0,0,0,105,110,118,97,108,105,100,97,116,101,95,99, - 97,99,104,101,115,117,11,0,0,0,95,112,97,116,104,95, - 104,111,111,107,115,117,20,0,0,0,95,112,97,116,104,95, - 105,109,112,111,114,116,101,114,95,99,97,99,104,101,117,11, - 0,0,0,95,103,101,116,95,108,111,97,100,101,114,117,4, - 0,0,0,78,111,110,101,117,11,0,0,0,102,105,110,100, - 95,109,111,100,117,108,101,40,1,0,0,0,117,10,0,0, - 0,95,95,108,111,99,97,108,115,95,95,40,0,0,0,0, - 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, - 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, - 116,115,116,114,97,112,62,117,10,0,0,0,80,97,116,104, - 70,105,110,100,101,114,206,4,0,0,115,14,0,0,0,16, - 2,6,2,18,8,18,17,18,17,18,27,3,1,117,10,0, - 0,0,80,97,116,104,70,105,110,100,101,114,99,1,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,66,0,0, - 0,115,110,0,0,0,124,0,0,69,101,0,0,90,1,0, - 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, - 3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,0, - 0,90,5,0,101,6,0,90,7,0,100,6,0,100,7,0, - 132,0,0,90,8,0,100,8,0,100,9,0,132,0,0,90, - 9,0,101,10,0,100,10,0,100,11,0,132,0,0,131,1, - 0,90,11,0,100,12,0,100,13,0,132,0,0,90,12,0, - 100,14,0,83,40,15,0,0,0,117,10,0,0,0,70,105, - 108,101,70,105,110,100,101,114,117,172,0,0,0,70,105,108, - 101,45,98,97,115,101,100,32,102,105,110,100,101,114,46,10, - 10,32,32,32,32,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,5,0,0,0,5,0,0,0,7,0,0,0,115,122, - 0,0,0,103,0,0,125,3,0,120,52,0,124,2,0,68, - 93,44,0,92,2,0,137,0,0,125,4,0,124,3,0,106, - 0,0,135,0,0,102,1,0,100,1,0,100,2,0,134,0, - 0,124,4,0,68,131,1,0,131,1,0,1,113,13,0,87, - 124,3,0,124,0,0,95,1,0,124,1,0,112,79,0,100, - 3,0,124,0,0,95,2,0,100,6,0,124,0,0,95,3, - 0,116,4,0,131,0,0,124,0,0,95,5,0,116,4,0, - 131,0,0,124,0,0,95,6,0,100,5,0,83,40,7,0, - 0,0,117,154,0,0,0,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,2,0,0,0,3,0, - 0,0,51,0,0,0,115,27,0,0,0,124,0,0,93,17, - 0,125,1,0,124,1,0,136,0,0,102,2,0,86,1,113, - 3,0,100,0,0,83,40,1,0,0,0,78,40,0,0,0, - 0,40,2,0,0,0,117,2,0,0,0,46,48,117,6,0, - 0,0,115,117,102,102,105,120,40,1,0,0,0,117,6,0, - 0,0,108,111,97,100,101,114,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 9,0,0,0,60,103,101,110,101,120,112,114,62,56,5,0, - 0,115,2,0,0,0,6,0,117,38,0,0,0,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,117,1,0,0,0,46,105,1,0,0,0,78,105, - 255,255,255,255,40,7,0,0,0,117,6,0,0,0,101,120, - 116,101,110,100,117,8,0,0,0,95,108,111,97,100,101,114, - 115,117,4,0,0,0,112,97,116,104,117,11,0,0,0,95, - 112,97,116,104,95,109,116,105,109,101,117,3,0,0,0,115, - 101,116,117,11,0,0,0,95,112,97,116,104,95,99,97,99, - 104,101,117,19,0,0,0,95,114,101,108,97,120,101,100,95, - 112,97,116,104,95,99,97,99,104,101,40,5,0,0,0,117, - 4,0,0,0,115,101,108,102,117,4,0,0,0,112,97,116, - 104,117,14,0,0,0,108,111,97,100,101,114,95,100,101,116, - 97,105,108,115,117,7,0,0,0,108,111,97,100,101,114,115, - 117,8,0,0,0,115,117,102,102,105,120,101,115,40,0,0, - 0,0,40,1,0,0,0,117,6,0,0,0,108,111,97,100, - 101,114,117,29,0,0,0,60,102,114,111,122,101,110,32,105, - 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, - 114,97,112,62,117,8,0,0,0,95,95,105,110,105,116,95, - 95,50,5,0,0,115,16,0,0,0,0,4,6,1,19,1, - 36,1,9,2,15,1,9,1,12,1,117,19,0,0,0,70, - 105,108,101,70,105,110,100,101,114,46,95,95,105,110,105,116, - 95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,2, - 0,0,0,67,0,0,0,115,13,0,0,0,100,3,0,124, - 0,0,95,0,0,100,2,0,83,40,4,0,0,0,117,31, - 0,0,0,73,110,118,97,108,105,100,97,116,101,32,116,104, - 101,32,100,105,114,101,99,116,111,114,121,32,109,116,105,109, - 101,46,105,1,0,0,0,78,105,255,255,255,255,40,1,0, - 0,0,117,11,0,0,0,95,112,97,116,104,95,109,116,105, - 109,101,40,1,0,0,0,117,4,0,0,0,115,101,108,102, - 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, - 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, - 46,95,98,111,111,116,115,116,114,97,112,62,117,17,0,0, - 0,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, - 101,115,64,5,0,0,115,2,0,0,0,0,2,117,28,0, - 0,0,70,105,108,101,70,105,110,100,101,114,46,105,110,118, - 97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,2, - 0,0,0,0,0,0,0,12,0,0,0,13,0,0,0,67, - 0,0,0,115,216,1,0,0,100,8,0,125,2,0,124,1, - 0,106,1,0,100,1,0,131,1,0,100,2,0,25,125,3, - 0,121,25,0,116,2,0,106,3,0,124,0,0,106,4,0, - 131,1,0,106,5,0,125,4,0,87,110,24,0,4,116,6, - 0,107,10,0,114,76,0,1,1,1,100,9,0,125,4,0, - 89,110,1,0,88,124,4,0,124,0,0,106,7,0,107,3, - 0,114,114,0,124,0,0,106,8,0,131,0,0,1,124,4, - 0,124,0,0,95,7,0,110,0,0,116,9,0,131,0,0, - 114,147,0,124,0,0,106,10,0,125,5,0,124,3,0,106, - 11,0,131,0,0,125,6,0,110,15,0,124,0,0,106,12, - 0,125,5,0,124,3,0,125,6,0,124,6,0,124,5,0, - 107,6,0,114,45,1,116,13,0,124,0,0,106,4,0,124, - 3,0,131,2,0,125,7,0,116,14,0,124,7,0,131,1, - 0,114,45,1,120,91,0,124,0,0,106,15,0,68,93,71, - 0,92,2,0,125,8,0,125,9,0,100,4,0,124,8,0, - 23,125,10,0,116,13,0,124,7,0,124,10,0,131,2,0, - 125,11,0,116,16,0,124,11,0,131,1,0,114,214,0,124, - 9,0,124,1,0,124,11,0,131,2,0,124,7,0,103,1, - 0,102,2,0,83,113,214,0,87,100,10,0,125,2,0,113, - 45,1,110,0,0,120,120,0,124,0,0,106,15,0,68,93, - 109,0,92,2,0,125,8,0,125,9,0,116,13,0,124,0, - 0,106,4,0,124,3,0,124,8,0,23,131,2,0,125,11, - 0,116,18,0,100,5,0,106,19,0,124,11,0,131,1,0, - 100,6,0,100,2,0,131,1,1,1,124,6,0,124,8,0, - 23,124,5,0,107,6,0,114,55,1,116,16,0,124,11,0, - 131,1,0,114,164,1,124,9,0,124,1,0,124,11,0,131, - 2,0,103,0,0,102,2,0,83,113,55,1,113,55,1,87, - 124,2,0,114,206,1,116,18,0,100,7,0,106,19,0,124, - 7,0,131,1,0,131,1,0,1,100,11,0,124,7,0,103, - 1,0,102,2,0,83,100,11,0,103,0,0,102,2,0,83, - 40,12,0,0,0,117,125,0,0,0,84,114,121,32,116,111, - 32,102,105,110,100,32,97,32,108,111,97,100,101,114,32,102, - 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 32,109,111,100,117,108,101,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,117,1,0,0,0,46,105,2,0, - 0,0,105,1,0,0,0,117,8,0,0,0,95,95,105,110, - 105,116,95,95,117,9,0,0,0,116,114,121,105,110,103,32, - 123,125,117,9,0,0,0,118,101,114,98,111,115,105,116,121, - 117,25,0,0,0,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,70,105, - 255,255,255,255,84,78,40,21,0,0,0,117,5,0,0,0, - 70,97,108,115,101,117,10,0,0,0,114,112,97,114,116,105, - 116,105,111,110,117,3,0,0,0,95,111,115,117,4,0,0, - 0,115,116,97,116,117,4,0,0,0,112,97,116,104,117,8, - 0,0,0,115,116,95,109,116,105,109,101,117,7,0,0,0, - 79,83,69,114,114,111,114,117,11,0,0,0,95,112,97,116, - 104,95,109,116,105,109,101,117,11,0,0,0,95,102,105,108, - 108,95,99,97,99,104,101,117,11,0,0,0,95,114,101,108, - 97,120,95,99,97,115,101,117,19,0,0,0,95,114,101,108, - 97,120,101,100,95,112,97,116,104,95,99,97,99,104,101,117, - 5,0,0,0,108,111,119,101,114,117,11,0,0,0,95,112, - 97,116,104,95,99,97,99,104,101,117,10,0,0,0,95,112, - 97,116,104,95,106,111,105,110,117,11,0,0,0,95,112,97, - 116,104,95,105,115,100,105,114,117,8,0,0,0,95,108,111, - 97,100,101,114,115,117,12,0,0,0,95,112,97,116,104,95, - 105,115,102,105,108,101,117,4,0,0,0,84,114,117,101,117, - 16,0,0,0,95,118,101,114,98,111,115,101,95,109,101,115, - 115,97,103,101,117,6,0,0,0,102,111,114,109,97,116,117, - 4,0,0,0,78,111,110,101,40,12,0,0,0,117,4,0, - 0,0,115,101,108,102,117,8,0,0,0,102,117,108,108,110, - 97,109,101,117,12,0,0,0,105,115,95,110,97,109,101,115, - 112,97,99,101,117,11,0,0,0,116,97,105,108,95,109,111, - 100,117,108,101,117,5,0,0,0,109,116,105,109,101,117,5, - 0,0,0,99,97,99,104,101,117,12,0,0,0,99,97,99, - 104,101,95,109,111,100,117,108,101,117,9,0,0,0,98,97, - 115,101,95,112,97,116,104,117,6,0,0,0,115,117,102,102, - 105,120,117,6,0,0,0,108,111,97,100,101,114,117,13,0, - 0,0,105,110,105,116,95,102,105,108,101,110,97,109,101,117, - 9,0,0,0,102,117,108,108,95,112,97,116,104,40,0,0, - 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, - 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, - 111,111,116,115,116,114,97,112,62,117,11,0,0,0,102,105, - 110,100,95,108,111,97,100,101,114,70,5,0,0,115,66,0, - 0,0,0,3,6,1,19,1,3,1,25,1,13,1,11,1, - 15,1,10,1,12,2,9,1,9,1,15,2,9,1,6,2, - 12,1,18,1,12,1,22,1,10,1,15,1,12,1,26,4, - 12,2,22,1,22,1,25,1,16,1,12,1,26,1,6,1, - 19,1,13,1,117,22,0,0,0,70,105,108,101,70,105,110, - 100,101,114,46,102,105,110,100,95,108,111,97,100,101,114,99, - 1,0,0,0,0,0,0,0,9,0,0,0,13,0,0,0, - 67,0,0,0,115,8,1,0,0,124,0,0,106,0,0,125, - 1,0,121,19,0,116,1,0,106,2,0,124,1,0,131,1, - 0,125,2,0,87,110,33,0,4,116,3,0,116,4,0,116, - 5,0,102,3,0,107,10,0,114,63,0,1,1,1,103,0, - 0,125,2,0,89,110,1,0,88,116,6,0,106,7,0,106, - 8,0,100,1,0,131,1,0,115,100,0,116,9,0,124,2, - 0,131,1,0,124,0,0,95,10,0,110,111,0,116,9,0, - 131,0,0,125,3,0,120,90,0,124,2,0,68,93,82,0, - 125,4,0,124,4,0,106,11,0,100,2,0,131,1,0,92, - 3,0,125,5,0,125,6,0,125,7,0,124,6,0,114,179, - 0,100,3,0,106,12,0,124,5,0,124,7,0,106,13,0, - 131,0,0,131,2,0,125,8,0,110,6,0,124,5,0,125, - 8,0,124,3,0,106,14,0,124,8,0,131,1,0,1,113, - 116,0,87,124,3,0,124,0,0,95,10,0,116,6,0,106, - 7,0,106,8,0,116,15,0,131,1,0,114,4,1,116,9, - 0,100,4,0,100,5,0,132,0,0,124,2,0,68,131,1, - 0,131,1,0,124,0,0,95,16,0,110,0,0,100,6,0, + 40,10,0,0,0,114,56,0,0,0,114,55,0,0,0,114, + 57,0,0,0,114,58,0,0,0,114,221,0,0,0,114,28, + 1,0,0,114,33,1,0,0,114,34,1,0,0,114,38,1, + 0,0,114,217,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,27,1,0,0, + 238,4,0,0,115,14,0,0,0,12,2,6,2,18,8,18, + 17,18,17,18,27,3,1,114,27,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,106,0,0,0,101,0,0,90,1,0,100,0,0,90, + 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0, + 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0, + 101,6,0,90,7,0,100,6,0,100,7,0,132,0,0,90, + 8,0,100,8,0,100,9,0,132,0,0,90,9,0,101,10, + 0,100,10,0,100,11,0,132,0,0,131,1,0,90,11,0, + 100,12,0,100,13,0,132,0,0,90,12,0,100,14,0,83, + 40,15,0,0,0,244,10,0,0,0,70,105,108,101,70,105, + 110,100,101,114,117,172,0,0,0,70,105,108,101,45,98,97, + 115,101,100,32,102,105,110,100,101,114,46,10,10,32,32,32, + 32,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,5,0, + 0,0,5,0,0,0,7,0,0,0,115,122,0,0,0,103, + 0,0,125,3,0,120,52,0,124,2,0,68,93,44,0,92, + 2,0,137,0,0,125,4,0,124,3,0,106,0,0,135,0, + 0,102,1,0,100,1,0,100,2,0,134,0,0,124,4,0, + 68,131,1,0,131,1,0,1,113,13,0,87,124,3,0,124, + 0,0,95,1,0,124,1,0,112,79,0,100,3,0,124,0, + 0,95,2,0,100,6,0,124,0,0,95,3,0,116,4,0, + 131,0,0,124,0,0,95,5,0,116,4,0,131,0,0,124, + 0,0,95,6,0,100,5,0,83,40,7,0,0,0,117,154, + 0,0,0,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,2,0,0,0,3,0,0,0,51,0, + 0,0,115,27,0,0,0,124,0,0,93,17,0,125,1,0, + 124,1,0,136,0,0,102,2,0,86,1,113,3,0,100,0, + 0,83,40,1,0,0,0,78,114,4,0,0,0,40,2,0, + 0,0,114,22,0,0,0,114,9,1,0,0,40,1,0,0, + 0,114,160,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,143,0,0,0,88,5,0,0,115,2,0,0,0,6,0, + 117,38,0,0,0,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,101,0,0,0, + 114,29,0,0,0,78,114,123,0,0,0,40,7,0,0,0, + 114,207,0,0,0,244,8,0,0,0,95,108,111,97,100,101, + 114,115,114,35,0,0,0,244,11,0,0,0,95,112,97,116, + 104,95,109,116,105,109,101,244,3,0,0,0,115,101,116,244, + 11,0,0,0,95,112,97,116,104,95,99,97,99,104,101,244, + 19,0,0,0,95,114,101,108,97,120,101,100,95,112,97,116, + 104,95,99,97,99,104,101,40,5,0,0,0,114,75,0,0, + 0,114,35,0,0,0,244,14,0,0,0,108,111,97,100,101, + 114,95,100,101,116,97,105,108,115,116,7,0,0,0,108,111, + 97,100,101,114,115,114,112,0,0,0,114,4,0,0,0,40, + 1,0,0,0,114,160,0,0,0,114,5,0,0,0,114,76, + 0,0,0,82,5,0,0,115,16,0,0,0,0,4,6,1, + 19,1,36,1,9,2,15,1,9,1,12,1,117,19,0,0, + 0,70,105,108,101,70,105,110,100,101,114,46,95,95,105,110, + 105,116,95,95,99,1,0,0,0,0,0,0,0,1,0,0, + 0,2,0,0,0,67,0,0,0,115,13,0,0,0,100,3, + 0,124,0,0,95,0,0,100,2,0,83,40,4,0,0,0, + 117,31,0,0,0,73,110,118,97,108,105,100,97,116,101,32, + 116,104,101,32,100,105,114,101,99,116,111,114,121,32,109,116, + 105,109,101,46,114,29,0,0,0,78,114,123,0,0,0,40, + 1,0,0,0,114,41,1,0,0,40,1,0,0,0,114,75, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,28,1,0,0,96,5,0,0,115,2,0,0,0, + 0,2,117,28,0,0,0,70,105,108,101,70,105,110,100,101, + 114,46,105,110,118,97,108,105,100,97,116,101,95,99,97,99, + 104,101,115,99,2,0,0,0,0,0,0,0,12,0,0,0, + 13,0,0,0,67,0,0,0,115,216,1,0,0,100,1,0, + 125,2,0,124,1,0,106,0,0,100,2,0,131,1,0,100, + 3,0,25,125,3,0,121,25,0,116,1,0,106,2,0,124, + 0,0,106,3,0,131,1,0,106,4,0,125,4,0,87,110, + 24,0,4,116,5,0,107,10,0,114,76,0,1,1,1,100, + 11,0,125,4,0,89,110,1,0,88,124,4,0,124,0,0, + 106,6,0,107,3,0,114,114,0,124,0,0,106,7,0,131, + 0,0,1,124,4,0,124,0,0,95,6,0,110,0,0,116, + 8,0,131,0,0,114,147,0,124,0,0,106,9,0,125,5, + 0,124,3,0,106,10,0,131,0,0,125,6,0,110,15,0, + 124,0,0,106,11,0,125,5,0,124,3,0,125,6,0,124, + 6,0,124,5,0,107,6,0,114,45,1,116,12,0,124,0, + 0,106,3,0,124,3,0,131,2,0,125,7,0,116,13,0, + 124,7,0,131,1,0,114,45,1,120,91,0,124,0,0,106, + 14,0,68,93,71,0,92,2,0,125,8,0,125,9,0,100, + 5,0,124,8,0,23,125,10,0,116,12,0,124,7,0,124, + 10,0,131,2,0,125,11,0,116,15,0,124,11,0,131,1, + 0,114,214,0,124,9,0,124,1,0,124,11,0,131,2,0, + 124,7,0,103,1,0,102,2,0,83,113,214,0,87,100,6, + 0,125,2,0,113,45,1,110,0,0,120,120,0,124,0,0, + 106,14,0,68,93,109,0,92,2,0,125,8,0,125,9,0, + 116,12,0,124,0,0,106,3,0,124,3,0,124,8,0,23, + 131,2,0,125,11,0,116,16,0,100,7,0,106,17,0,124, + 11,0,131,1,0,100,8,0,100,3,0,131,1,1,1,124, + 6,0,124,8,0,23,124,5,0,107,6,0,114,55,1,116, + 15,0,124,11,0,131,1,0,114,164,1,124,9,0,124,1, + 0,124,11,0,131,2,0,103,0,0,102,2,0,83,113,55, + 1,113,55,1,87,124,2,0,114,206,1,116,16,0,100,9, + 0,106,17,0,124,7,0,131,1,0,131,1,0,1,100,10, + 0,124,7,0,103,1,0,102,2,0,83,100,10,0,103,0, + 0,102,2,0,83,40,12,0,0,0,117,125,0,0,0,84, + 114,121,32,116,111,32,102,105,110,100,32,97,32,108,111,97, + 100,101,114,32,102,111,114,32,116,104,101,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,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,70,114,101,0, + 0,0,114,100,0,0,0,114,29,0,0,0,114,76,0,0, + 0,84,117,9,0,0,0,116,114,121,105,110,103,32,123,125, + 114,130,0,0,0,117,25,0,0,0,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,78,114,123,0,0,0,40,18,0,0,0,114,32, + 0,0,0,114,3,0,0,0,114,39,0,0,0,114,35,0, + 0,0,114,3,1,0,0,114,40,0,0,0,114,41,1,0, + 0,244,11,0,0,0,95,102,105,108,108,95,99,97,99,104, + 101,114,6,0,0,0,114,44,1,0,0,114,124,0,0,0, + 114,43,1,0,0,114,28,0,0,0,114,45,0,0,0,114, + 40,1,0,0,114,44,0,0,0,114,137,0,0,0,114,46, + 0,0,0,40,12,0,0,0,114,75,0,0,0,114,178,0, + 0,0,116,12,0,0,0,105,115,95,110,97,109,101,115,112, + 97,99,101,116,11,0,0,0,116,97,105,108,95,109,111,100, + 117,108,101,114,193,0,0,0,116,5,0,0,0,99,97,99, + 104,101,116,12,0,0,0,99,97,99,104,101,95,109,111,100, + 117,108,101,116,9,0,0,0,98,97,115,101,95,112,97,116, + 104,114,9,1,0,0,114,160,0,0,0,116,13,0,0,0, + 105,110,105,116,95,102,105,108,101,110,97,109,101,116,9,0, + 0,0,102,117,108,108,95,112,97,116,104,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,184,0,0,0,102, + 5,0,0,115,66,0,0,0,0,3,6,1,19,1,3,1, + 25,1,13,1,11,1,15,1,10,1,12,2,9,1,9,1, + 15,2,9,1,6,2,12,1,18,1,12,1,22,1,10,1, + 15,1,12,1,26,4,12,2,22,1,22,1,25,1,16,1, + 12,1,26,1,6,1,19,1,13,1,117,22,0,0,0,70, + 105,108,101,70,105,110,100,101,114,46,102,105,110,100,95,108, + 111,97,100,101,114,99,1,0,0,0,0,0,0,0,9,0, + 0,0,13,0,0,0,67,0,0,0,115,2,1,0,0,124, + 0,0,106,0,0,125,1,0,121,19,0,116,1,0,106,2, + 0,124,1,0,131,1,0,125,2,0,87,110,33,0,4,116, + 3,0,116,4,0,116,5,0,102,3,0,107,10,0,114,63, + 0,1,1,1,103,0,0,125,2,0,89,110,1,0,88,116, + 6,0,106,7,0,106,8,0,100,1,0,131,1,0,115,100, + 0,116,9,0,124,2,0,131,1,0,124,0,0,95,10,0, + 110,111,0,116,9,0,131,0,0,125,3,0,120,90,0,124, + 2,0,68,93,82,0,125,4,0,124,4,0,106,11,0,100, + 2,0,131,1,0,92,3,0,125,5,0,125,6,0,125,7, + 0,124,6,0,114,179,0,100,3,0,106,12,0,124,5,0, + 124,7,0,106,13,0,131,0,0,131,2,0,125,8,0,110, + 6,0,124,5,0,125,8,0,124,3,0,106,14,0,124,8, + 0,131,1,0,1,113,116,0,87,124,3,0,124,0,0,95, + 10,0,116,6,0,106,7,0,106,8,0,116,15,0,131,1, + 0,114,254,0,100,4,0,100,5,0,132,0,0,124,2,0, + 68,131,1,0,124,0,0,95,16,0,110,0,0,100,6,0, 83,40,7,0,0,0,117,68,0,0,0,70,105,108,108,32, 116,104,101,32,99,97,99,104,101,32,111,102,32,112,111,116, 101,110,116,105,97,108,32,109,111,100,117,108,101,115,32,97, 110,100,32,112,97,99,107,97,103,101,115,32,102,111,114,32, - 116,104,105,115,32,100,105,114,101,99,116,111,114,121,46,117, - 3,0,0,0,119,105,110,117,1,0,0,0,46,117,5,0, - 0,0,123,125,46,123,125,99,1,0,0,0,0,0,0,0, - 2,0,0,0,2,0,0,0,115,0,0,0,115,27,0,0, - 0,124,0,0,93,17,0,125,1,0,124,1,0,106,0,0, - 131,0,0,86,1,113,3,0,100,0,0,83,40,1,0,0, - 0,78,40,1,0,0,0,117,5,0,0,0,108,111,119,101, - 114,40,2,0,0,0,117,2,0,0,0,46,48,117,2,0, - 0,0,102,110,40,0,0,0,0,40,0,0,0,0,117,29, - 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, - 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, - 117,9,0,0,0,60,103,101,110,101,120,112,114,62,143,5, - 0,0,115,2,0,0,0,6,0,117,41,0,0,0,70,105, - 108,101,70,105,110,100,101,114,46,95,102,105,108,108,95,99, - 97,99,104,101,46,60,108,111,99,97,108,115,62,46,60,103, - 101,110,101,120,112,114,62,78,40,17,0,0,0,117,4,0, - 0,0,112,97,116,104,117,3,0,0,0,95,111,115,117,7, - 0,0,0,108,105,115,116,100,105,114,117,17,0,0,0,70, - 105,108,101,78,111,116,70,111,117,110,100,69,114,114,111,114, - 117,15,0,0,0,80,101,114,109,105,115,115,105,111,110,69, - 114,114,111,114,117,18,0,0,0,78,111,116,65,68,105,114, - 101,99,116,111,114,121,69,114,114,111,114,117,3,0,0,0, - 115,121,115,117,8,0,0,0,112,108,97,116,102,111,114,109, - 117,10,0,0,0,115,116,97,114,116,115,119,105,116,104,117, - 3,0,0,0,115,101,116,117,11,0,0,0,95,112,97,116, - 104,95,99,97,99,104,101,117,9,0,0,0,112,97,114,116, - 105,116,105,111,110,117,6,0,0,0,102,111,114,109,97,116, - 117,5,0,0,0,108,111,119,101,114,117,3,0,0,0,97, - 100,100,117,27,0,0,0,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,117,19,0,0,0,95,114,101,108,97,120,101,100,95, - 112,97,116,104,95,99,97,99,104,101,40,9,0,0,0,117, - 4,0,0,0,115,101,108,102,117,4,0,0,0,112,97,116, - 104,117,8,0,0,0,99,111,110,116,101,110,116,115,117,21, - 0,0,0,108,111,119,101,114,95,115,117,102,102,105,120,95, - 99,111,110,116,101,110,116,115,117,4,0,0,0,105,116,101, - 109,117,4,0,0,0,110,97,109,101,117,3,0,0,0,100, - 111,116,117,6,0,0,0,115,117,102,102,105,120,117,8,0, - 0,0,110,101,119,95,110,97,109,101,40,0,0,0,0,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,11,0,0,0,95,102,105,108,108, - 95,99,97,99,104,101,114,5,0,0,115,34,0,0,0,0, - 2,9,1,3,1,19,1,22,3,11,3,18,1,18,7,9, - 1,13,1,24,1,6,1,27,2,6,1,17,1,9,1,18, - 1,117,22,0,0,0,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,3,0,0,0,3,0,0,0,7,0,0, - 0,115,25,0,0,0,135,0,0,135,1,0,102,2,0,100, - 1,0,100,2,0,134,0,0,125,2,0,124,2,0,83,40, - 3,0,0,0,117,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,1,0,0,0,4,0,0,0,19,0, - 0,0,115,46,0,0,0,116,0,0,124,0,0,131,1,0, - 115,33,0,116,1,0,100,1,0,100,2,0,124,0,0,131, - 1,1,130,1,0,110,0,0,136,0,0,124,0,0,136,1, - 0,140,1,0,83,40,3,0,0,0,117,45,0,0,0,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,117,30,0,0, - 0,111,110,108,121,32,100,105,114,101,99,116,111,114,105,101, - 115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,117, - 4,0,0,0,112,97,116,104,40,2,0,0,0,117,11,0, - 0,0,95,112,97,116,104,95,105,115,100,105,114,117,11,0, - 0,0,73,109,112,111,114,116,69,114,114,111,114,40,1,0, - 0,0,117,4,0,0,0,112,97,116,104,40,2,0,0,0, - 117,3,0,0,0,99,108,115,117,14,0,0,0,108,111,97, - 100,101,114,95,100,101,116,97,105,108,115,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,24,0,0,0,112,97,116,104,95,104,111,111,107, - 95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,155, - 5,0,0,115,6,0,0,0,0,2,12,1,21,1,117,54, - 0,0,0,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,40,0,0,0,0,40,3, - 0,0,0,117,3,0,0,0,99,108,115,117,14,0,0,0, - 108,111,97,100,101,114,95,100,101,116,97,105,108,115,117,24, - 0,0,0,112,97,116,104,95,104,111,111,107,95,102,111,114, - 95,70,105,108,101,70,105,110,100,101,114,40,0,0,0,0, - 40,2,0,0,0,117,3,0,0,0,99,108,115,117,14,0, - 0,0,108,111,97,100,101,114,95,100,101,116,97,105,108,115, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,9,0,0,0,112,97,116,104,95,104,111,111,107, - 145,5,0,0,115,4,0,0,0,0,10,21,6,117,20,0, + 116,104,105,115,32,100,105,114,101,99,116,111,114,121,46,114, + 0,0,0,0,114,101,0,0,0,117,5,0,0,0,123,125, + 46,123,125,99,1,0,0,0,0,0,0,0,2,0,0,0, + 3,0,0,0,83,0,0,0,115,28,0,0,0,104,0,0, + 124,0,0,93,18,0,125,1,0,124,1,0,106,0,0,131, + 0,0,146,2,0,113,6,0,83,114,4,0,0,0,40,1, + 0,0,0,114,124,0,0,0,40,2,0,0,0,114,22,0, + 0,0,116,2,0,0,0,102,110,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,245,9,0,0,0,60,115,101, + 116,99,111,109,112,62,175,5,0,0,115,2,0,0,0,9, + 0,117,41,0,0,0,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, + 40,17,0,0,0,114,35,0,0,0,114,3,0,0,0,116, + 7,0,0,0,108,105,115,116,100,105,114,244,17,0,0,0, + 70,105,108,101,78,111,116,70,111,117,110,100,69,114,114,111, + 114,244,15,0,0,0,80,101,114,109,105,115,115,105,111,110, + 69,114,114,111,114,244,18,0,0,0,78,111,116,65,68,105, + 114,101,99,116,111,114,121,69,114,114,111,114,114,7,0,0, + 0,114,8,0,0,0,114,9,0,0,0,114,42,1,0,0, + 114,43,1,0,0,114,106,0,0,0,114,46,0,0,0,114, + 124,0,0,0,244,3,0,0,0,97,100,100,114,10,0,0, + 0,114,44,1,0,0,40,9,0,0,0,114,75,0,0,0, + 114,35,0,0,0,116,8,0,0,0,99,111,110,116,101,110, + 116,115,116,21,0,0,0,108,111,119,101,114,95,115,117,102, + 102,105,120,95,99,111,110,116,101,110,116,115,114,24,1,0, + 0,114,71,0,0,0,114,18,1,0,0,114,9,1,0,0, + 116,8,0,0,0,110,101,119,95,110,97,109,101,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,46,1,0, + 0,146,5,0,0,115,34,0,0,0,0,2,9,1,3,1, + 19,1,22,3,11,3,18,1,18,7,9,1,13,1,24,1, + 6,1,27,2,6,1,17,1,9,1,18,1,117,22,0,0, + 0,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, + 3,0,0,0,3,0,0,0,7,0,0,0,115,25,0,0, + 0,135,0,0,135,1,0,102,2,0,100,1,0,100,2,0, + 134,0,0,125,2,0,124,2,0,83,40,3,0,0,0,117, + 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,1,0,0,0,4,0,0,0,19,0,0,0,115,46,0, + 0,0,116,0,0,124,0,0,131,1,0,115,33,0,116,1, + 0,100,1,0,100,2,0,124,0,0,131,1,1,130,1,0, + 110,0,0,136,0,0,124,0,0,136,1,0,140,1,0,83, + 40,3,0,0,0,117,45,0,0,0,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,117,30,0,0,0,111,110,108,121, + 32,100,105,114,101,99,116,111,114,105,101,115,32,97,114,101, + 32,115,117,112,112,111,114,116,101,100,114,35,0,0,0,40, + 2,0,0,0,114,45,0,0,0,114,157,0,0,0,40,1, + 0,0,0,114,35,0,0,0,40,2,0,0,0,114,215,0, + 0,0,114,45,1,0,0,114,4,0,0,0,114,5,0,0, + 0,244,24,0,0,0,112,97,116,104,95,104,111,111,107,95, + 102,111,114,95,70,105,108,101,70,105,110,100,101,114,187,5, + 0,0,115,6,0,0,0,0,2,12,1,21,1,117,54,0, 0,0,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,1, - 0,0,0,2,0,0,0,67,0,0,0,115,14,0,0,0, - 100,1,0,124,0,0,106,0,0,102,1,0,22,83,40,2, - 0,0,0,78,117,14,0,0,0,70,105,108,101,70,105,110, - 100,101,114,40,37,114,41,40,1,0,0,0,117,4,0,0, - 0,112,97,116,104,40,1,0,0,0,117,4,0,0,0,115, - 101,108,102,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 8,0,0,0,95,95,114,101,112,114,95,95,163,5,0,0, - 115,2,0,0,0,0,1,117,19,0,0,0,70,105,108,101, - 70,105,110,100,101,114,46,95,95,114,101,112,114,95,95,78, - 40,13,0,0,0,117,8,0,0,0,95,95,110,97,109,101, - 95,95,117,10,0,0,0,95,95,109,111,100,117,108,101,95, - 95,117,12,0,0,0,95,95,113,117,97,108,110,97,109,101, - 95,95,117,7,0,0,0,95,95,100,111,99,95,95,117,8, - 0,0,0,95,95,105,110,105,116,95,95,117,17,0,0,0, - 105,110,118,97,108,105,100,97,116,101,95,99,97,99,104,101, - 115,117,17,0,0,0,95,102,105,110,100,95,109,111,100,117, - 108,101,95,115,104,105,109,117,11,0,0,0,102,105,110,100, - 95,109,111,100,117,108,101,117,11,0,0,0,102,105,110,100, - 95,108,111,97,100,101,114,117,11,0,0,0,95,102,105,108, - 108,95,99,97,99,104,101,117,11,0,0,0,99,108,97,115, - 115,109,101,116,104,111,100,117,9,0,0,0,112,97,116,104, - 95,104,111,111,107,117,8,0,0,0,95,95,114,101,112,114, - 95,95,40,1,0,0,0,117,10,0,0,0,95,95,108,111, - 99,97,108,115,95,95,40,0,0,0,0,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,10,0,0,0,70,105,108,101,70,105,110,100,101, - 114,41,5,0,0,115,16,0,0,0,16,7,6,2,12,14, - 12,4,6,2,12,44,12,31,18,18,117,10,0,0,0,70, - 105,108,101,70,105,110,100,101,114,99,1,0,0,0,0,0, - 0,0,1,0,0,0,2,0,0,0,66,0,0,0,115,50, - 0,0,0,124,0,0,69,101,0,0,90,1,0,100,0,0, - 90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,132, - 0,0,90,4,0,100,4,0,100,5,0,132,0,0,90,5, - 0,100,6,0,83,40,7,0,0,0,117,18,0,0,0,95, - 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, - 116,117,36,0,0,0,67,111,110,116,101,120,116,32,109,97, - 110,97,103,101,114,32,102,111,114,32,116,104,101,32,105,109, - 112,111,114,116,32,108,111,99,107,46,99,1,0,0,0,0, - 0,0,0,1,0,0,0,1,0,0,0,67,0,0,0,115, - 14,0,0,0,116,0,0,106,1,0,131,0,0,1,100,1, - 0,83,40,2,0,0,0,117,24,0,0,0,65,99,113,117, - 105,114,101,32,116,104,101,32,105,109,112,111,114,116,32,108, - 111,99,107,46,78,40,2,0,0,0,117,4,0,0,0,95, - 105,109,112,117,12,0,0,0,97,99,113,117,105,114,101,95, - 108,111,99,107,40,1,0,0,0,117,4,0,0,0,115,101, - 108,102,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,9, - 0,0,0,95,95,101,110,116,101,114,95,95,173,5,0,0, - 115,2,0,0,0,0,2,117,28,0,0,0,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, - 95,101,110,116,101,114,95,95,99,4,0,0,0,0,0,0, - 0,4,0,0,0,1,0,0,0,67,0,0,0,115,14,0, - 0,0,116,0,0,106,1,0,131,0,0,1,100,1,0,83, - 40,2,0,0,0,117,60,0,0,0,82,101,108,101,97,115, - 101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, - 107,32,114,101,103,97,114,100,108,101,115,115,32,111,102,32, - 97,110,121,32,114,97,105,115,101,100,32,101,120,99,101,112, - 116,105,111,110,115,46,78,40,2,0,0,0,117,4,0,0, - 0,95,105,109,112,117,12,0,0,0,114,101,108,101,97,115, - 101,95,108,111,99,107,40,4,0,0,0,117,4,0,0,0, - 115,101,108,102,117,8,0,0,0,101,120,99,95,116,121,112, - 101,117,9,0,0,0,101,120,99,95,118,97,108,117,101,117, - 13,0,0,0,101,120,99,95,116,114,97,99,101,98,97,99, - 107,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,8,0, - 0,0,95,95,101,120,105,116,95,95,177,5,0,0,115,2, - 0,0,0,0,2,117,27,0,0,0,95,73,109,112,111,114, - 116,76,111,99,107,67,111,110,116,101,120,116,46,95,95,101, - 120,105,116,95,95,78,40,6,0,0,0,117,8,0,0,0, - 95,95,110,97,109,101,95,95,117,10,0,0,0,95,95,109, - 111,100,117,108,101,95,95,117,12,0,0,0,95,95,113,117, - 97,108,110,97,109,101,95,95,117,7,0,0,0,95,95,100, - 111,99,95,95,117,9,0,0,0,95,95,101,110,116,101,114, - 95,95,117,8,0,0,0,95,95,101,120,105,116,95,95,40, - 1,0,0,0,117,10,0,0,0,95,95,108,111,99,97,108, - 115,95,95,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 18,0,0,0,95,73,109,112,111,114,116,76,111,99,107,67, - 111,110,116,101,120,116,169,5,0,0,115,6,0,0,0,16, - 2,6,2,12,4,117,18,0,0,0,95,73,109,112,111,114, - 116,76,111,99,107,67,111,110,116,101,120,116,99,3,0,0, - 0,0,0,0,0,5,0,0,0,4,0,0,0,67,0,0, - 0,115,91,0,0,0,124,1,0,106,0,0,100,1,0,124, - 2,0,100,2,0,24,131,2,0,125,3,0,116,1,0,124, - 3,0,131,1,0,124,2,0,107,0,0,114,55,0,116,2, - 0,100,3,0,131,1,0,130,1,0,110,0,0,124,3,0, - 100,4,0,25,125,4,0,124,0,0,114,87,0,100,5,0, - 106,3,0,124,4,0,124,0,0,131,2,0,83,124,4,0, - 83,40,6,0,0,0,117,50,0,0,0,82,101,115,111,108, - 118,101,32,97,32,114,101,108,97,116,105,118,101,32,109,111, - 100,117,108,101,32,110,97,109,101,32,116,111,32,97,110,32, - 97,98,115,111,108,117,116,101,32,111,110,101,46,117,1,0, - 0,0,46,105,1,0,0,0,117,50,0,0,0,97,116,116, - 101,109,112,116,101,100,32,114,101,108,97,116,105,118,101,32, - 105,109,112,111,114,116,32,98,101,121,111,110,100,32,116,111, - 112,45,108,101,118,101,108,32,112,97,99,107,97,103,101,105, - 0,0,0,0,117,5,0,0,0,123,125,46,123,125,40,4, - 0,0,0,117,6,0,0,0,114,115,112,108,105,116,117,3, - 0,0,0,108,101,110,117,10,0,0,0,86,97,108,117,101, - 69,114,114,111,114,117,6,0,0,0,102,111,114,109,97,116, - 40,5,0,0,0,117,4,0,0,0,110,97,109,101,117,7, - 0,0,0,112,97,99,107,97,103,101,117,5,0,0,0,108, - 101,118,101,108,117,4,0,0,0,98,105,116,115,117,4,0, - 0,0,98,97,115,101,40,0,0,0,0,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,13,0,0,0,95,114,101,115,111,108,118,101,95, - 110,97,109,101,182,5,0,0,115,10,0,0,0,0,2,22, - 1,18,1,15,1,10,1,117,13,0,0,0,95,114,101,115, - 111,108,118,101,95,110,97,109,101,99,2,0,0,0,0,0, - 0,0,4,0,0,0,11,0,0,0,67,0,0,0,115,138, - 0,0,0,116,0,0,106,1,0,115,28,0,116,2,0,106, - 3,0,100,1,0,116,4,0,131,2,0,1,110,0,0,120, - 103,0,116,0,0,106,1,0,68,93,88,0,125,2,0,116, - 5,0,131,0,0,143,23,0,1,124,2,0,106,6,0,124, - 0,0,124,1,0,131,2,0,125,3,0,87,100,2,0,81, - 88,124,3,0,100,2,0,107,9,0,114,38,0,124,0,0, - 116,0,0,106,8,0,107,7,0,114,109,0,124,3,0,83, - 116,0,0,106,8,0,124,0,0,25,106,9,0,83,113,38, - 0,113,38,0,87,100,2,0,83,100,2,0,83,40,3,0, - 0,0,117,23,0,0,0,70,105,110,100,32,97,32,109,111, - 100,117,108,101,39,115,32,108,111,97,100,101,114,46,117,22, - 0,0,0,115,121,115,46,109,101,116,97,95,112,97,116,104, - 32,105,115,32,101,109,112,116,121,78,40,10,0,0,0,117, - 3,0,0,0,115,121,115,117,9,0,0,0,109,101,116,97, - 95,112,97,116,104,117,9,0,0,0,95,119,97,114,110,105, - 110,103,115,117,4,0,0,0,119,97,114,110,117,13,0,0, - 0,73,109,112,111,114,116,87,97,114,110,105,110,103,117,18, + 104,95,104,111,111,107,46,60,108,111,99,97,108,115,62,46, + 112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,105, + 108,101,70,105,110,100,101,114,114,4,0,0,0,40,3,0, + 0,0,114,215,0,0,0,114,45,1,0,0,114,52,1,0, + 0,114,4,0,0,0,40,2,0,0,0,114,215,0,0,0, + 114,45,1,0,0,114,5,0,0,0,244,9,0,0,0,112, + 97,116,104,95,104,111,111,107,177,5,0,0,115,4,0,0, + 0,0,10,21,6,117,20,0,0,0,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,1,0,0,0,2,0,0,0,67, + 0,0,0,115,16,0,0,0,100,1,0,106,0,0,124,0, + 0,106,1,0,131,1,0,83,40,2,0,0,0,78,117,16, + 0,0,0,70,105,108,101,70,105,110,100,101,114,40,123,33, + 114,125,41,40,2,0,0,0,114,46,0,0,0,114,35,0, + 0,0,40,1,0,0,0,114,75,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,87,0,0,0, + 195,5,0,0,115,2,0,0,0,0,1,117,19,0,0,0, + 70,105,108,101,70,105,110,100,101,114,46,95,95,114,101,112, + 114,95,95,78,40,13,0,0,0,114,56,0,0,0,114,55, + 0,0,0,114,57,0,0,0,114,58,0,0,0,114,76,0, + 0,0,114,28,1,0,0,114,190,0,0,0,114,217,0,0, + 0,114,184,0,0,0,114,46,1,0,0,114,221,0,0,0, + 114,53,1,0,0,114,87,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,39, + 1,0,0,73,5,0,0,115,16,0,0,0,12,7,6,2, + 12,14,12,4,6,2,12,44,12,31,18,18,114,39,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,46,0,0,0,101,0,0,90,1, + 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0, + 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132, + 0,0,90,5,0,100,6,0,83,40,7,0,0,0,244,18, 0,0,0,95,73,109,112,111,114,116,76,111,99,107,67,111, - 110,116,101,120,116,117,11,0,0,0,102,105,110,100,95,109, - 111,100,117,108,101,117,4,0,0,0,78,111,110,101,117,7, - 0,0,0,109,111,100,117,108,101,115,117,10,0,0,0,95, - 95,108,111,97,100,101,114,95,95,40,4,0,0,0,117,4, - 0,0,0,110,97,109,101,117,4,0,0,0,112,97,116,104, - 117,6,0,0,0,102,105,110,100,101,114,117,6,0,0,0, - 108,111,97,100,101,114,40,0,0,0,0,40,0,0,0,0, - 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, - 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, - 112,62,117,12,0,0,0,95,102,105,110,100,95,109,111,100, - 117,108,101,191,5,0,0,115,20,0,0,0,0,2,9,1, - 19,1,16,1,10,1,24,1,12,2,15,1,4,2,21,2, - 117,12,0,0,0,95,102,105,110,100,95,109,111,100,117,108, - 101,99,3,0,0,0,0,0,0,0,4,0,0,0,4,0, - 0,0,67,0,0,0,115,194,0,0,0,116,0,0,124,0, - 0,116,1,0,131,2,0,115,45,0,116,2,0,100,1,0, - 106,3,0,116,4,0,124,0,0,131,1,0,131,1,0,131, - 1,0,130,1,0,110,0,0,124,2,0,100,2,0,107,0, - 0,114,72,0,116,5,0,100,3,0,131,1,0,130,1,0, - 110,0,0,124,1,0,114,156,0,116,0,0,124,1,0,116, - 1,0,131,2,0,115,108,0,116,2,0,100,4,0,131,1, - 0,130,1,0,113,156,0,124,1,0,116,6,0,106,7,0, - 107,7,0,114,156,0,100,5,0,125,3,0,116,8,0,124, - 3,0,106,3,0,124,1,0,131,1,0,131,1,0,130,1, - 0,113,156,0,110,0,0,124,0,0,12,114,190,0,124,2, - 0,100,2,0,107,2,0,114,190,0,116,5,0,100,6,0, - 131,1,0,130,1,0,110,0,0,100,7,0,83,40,8,0, - 0,0,117,28,0,0,0,86,101,114,105,102,121,32,97,114, - 103,117,109,101,110,116,115,32,97,114,101,32,34,115,97,110, - 101,34,46,117,31,0,0,0,109,111,100,117,108,101,32,110, - 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, - 32,110,111,116,32,123,125,105,0,0,0,0,117,18,0,0, - 0,108,101,118,101,108,32,109,117,115,116,32,98,101,32,62, - 61,32,48,117,31,0,0,0,95,95,112,97,99,107,97,103, - 101,95,95,32,110,111,116,32,115,101,116,32,116,111,32,97, - 32,115,116,114,105,110,103,117,61,0,0,0,80,97,114,101, - 110,116,32,109,111,100,117,108,101,32,123,33,114,125,32,110, - 111,116,32,108,111,97,100,101,100,44,32,99,97,110,110,111, - 116,32,112,101,114,102,111,114,109,32,114,101,108,97,116,105, - 118,101,32,105,109,112,111,114,116,117,17,0,0,0,69,109, - 112,116,121,32,109,111,100,117,108,101,32,110,97,109,101,78, - 40,9,0,0,0,117,10,0,0,0,105,115,105,110,115,116, - 97,110,99,101,117,3,0,0,0,115,116,114,117,9,0,0, - 0,84,121,112,101,69,114,114,111,114,117,6,0,0,0,102, - 111,114,109,97,116,117,4,0,0,0,116,121,112,101,117,10, - 0,0,0,86,97,108,117,101,69,114,114,111,114,117,3,0, - 0,0,115,121,115,117,7,0,0,0,109,111,100,117,108,101, - 115,117,11,0,0,0,83,121,115,116,101,109,69,114,114,111, - 114,40,4,0,0,0,117,4,0,0,0,110,97,109,101,117, - 7,0,0,0,112,97,99,107,97,103,101,117,5,0,0,0, - 108,101,118,101,108,117,3,0,0,0,109,115,103,40,0,0, - 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, - 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, - 111,111,116,115,116,114,97,112,62,117,13,0,0,0,95,115, - 97,110,105,116,121,95,99,104,101,99,107,208,5,0,0,115, - 24,0,0,0,0,2,15,1,30,1,12,1,15,1,6,1, - 15,1,15,1,15,1,6,2,27,1,19,1,117,13,0,0, - 0,95,115,97,110,105,116,121,95,99,104,101,99,107,117,20, - 0,0,0,78,111,32,109,111,100,117,108,101,32,110,97,109, - 101,100,32,123,33,114,125,99,2,0,0,0,0,0,0,0, - 9,0,0,0,27,0,0,0,67,0,0,0,115,12,2,0, - 0,100,0,0,125,2,0,124,0,0,106,1,0,100,1,0, - 131,1,0,100,2,0,25,125,3,0,124,3,0,114,178,0, - 124,3,0,116,2,0,106,3,0,107,7,0,114,62,0,116, - 4,0,124,1,0,124,3,0,131,2,0,1,110,0,0,124, - 0,0,116,2,0,106,3,0,107,6,0,114,88,0,116,2, - 0,106,3,0,124,0,0,25,83,116,2,0,106,3,0,124, - 3,0,25,125,4,0,121,13,0,124,4,0,106,5,0,125, - 2,0,87,113,178,0,4,116,6,0,107,10,0,114,174,0, - 1,1,1,116,7,0,100,3,0,23,106,8,0,124,0,0, - 124,3,0,131,2,0,125,5,0,116,9,0,124,5,0,100, - 4,0,124,0,0,131,1,1,130,1,0,89,113,178,0,88, - 110,0,0,116,10,0,124,0,0,124,2,0,131,2,0,125, - 6,0,124,6,0,100,0,0,107,8,0,114,250,0,116,9, - 0,116,7,0,106,8,0,124,0,0,131,1,0,100,4,0, - 124,0,0,131,1,1,125,7,0,100,10,0,124,7,0,95, - 12,0,124,7,0,130,1,0,110,47,0,124,0,0,116,2, - 0,106,3,0,107,7,0,114,41,1,124,6,0,106,13,0, - 124,0,0,131,1,0,1,116,14,0,100,5,0,124,0,0, - 124,6,0,131,3,0,1,110,0,0,116,2,0,106,3,0, - 124,0,0,25,125,8,0,124,3,0,114,105,1,116,2,0, - 106,3,0,124,3,0,25,125,4,0,116,15,0,124,4,0, - 124,0,0,106,1,0,100,1,0,131,1,0,100,6,0,25, - 124,8,0,131,3,0,1,110,0,0,116,16,0,124,8,0, - 100,7,0,100,0,0,131,3,0,100,0,0,107,8,0,114, - 212,1,121,59,0,124,8,0,106,17,0,124,8,0,95,18, - 0,116,19,0,124,8,0,100,8,0,131,2,0,115,187,1, - 124,8,0,106,18,0,106,1,0,100,1,0,131,1,0,100, - 2,0,25,124,8,0,95,18,0,110,0,0,87,113,212,1, - 4,116,6,0,107,10,0,114,208,1,1,1,1,89,113,212, - 1,88,110,0,0,116,19,0,124,8,0,100,9,0,131,2, - 0,115,8,2,121,13,0,124,6,0,124,8,0,95,20,0, - 87,113,8,2,4,116,6,0,107,10,0,114,4,2,1,1, - 1,89,113,8,2,88,110,0,0,124,8,0,83,40,11,0, - 0,0,78,117,1,0,0,0,46,105,0,0,0,0,117,21, - 0,0,0,59,32,123,125,32,105,115,32,110,111,116,32,97, - 32,112,97,99,107,97,103,101,117,4,0,0,0,110,97,109, - 101,117,18,0,0,0,105,109,112,111,114,116,32,123,33,114, - 125,32,35,32,123,33,114,125,105,2,0,0,0,117,11,0, - 0,0,95,95,112,97,99,107,97,103,101,95,95,117,8,0, - 0,0,95,95,112,97,116,104,95,95,117,10,0,0,0,95, - 95,108,111,97,100,101,114,95,95,84,40,21,0,0,0,117, - 4,0,0,0,78,111,110,101,117,10,0,0,0,114,112,97, - 114,116,105,116,105,111,110,117,3,0,0,0,115,121,115,117, - 7,0,0,0,109,111,100,117,108,101,115,117,25,0,0,0, - 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,117,8,0,0,0,95,95, - 112,97,116,104,95,95,117,14,0,0,0,65,116,116,114,105, - 98,117,116,101,69,114,114,111,114,117,8,0,0,0,95,69, - 82,82,95,77,83,71,117,6,0,0,0,102,111,114,109,97, - 116,117,11,0,0,0,73,109,112,111,114,116,69,114,114,111, - 114,117,12,0,0,0,95,102,105,110,100,95,109,111,100,117, - 108,101,117,4,0,0,0,84,114,117,101,117,10,0,0,0, - 95,110,111,116,95,102,111,117,110,100,117,11,0,0,0,108, - 111,97,100,95,109,111,100,117,108,101,117,16,0,0,0,95, - 118,101,114,98,111,115,101,95,109,101,115,115,97,103,101,117, - 7,0,0,0,115,101,116,97,116,116,114,117,7,0,0,0, - 103,101,116,97,116,116,114,117,8,0,0,0,95,95,110,97, - 109,101,95,95,117,11,0,0,0,95,95,112,97,99,107,97, - 103,101,95,95,117,7,0,0,0,104,97,115,97,116,116,114, - 117,10,0,0,0,95,95,108,111,97,100,101,114,95,95,40, - 9,0,0,0,117,4,0,0,0,110,97,109,101,117,7,0, - 0,0,105,109,112,111,114,116,95,117,4,0,0,0,112,97, - 116,104,117,6,0,0,0,112,97,114,101,110,116,117,13,0, - 0,0,112,97,114,101,110,116,95,109,111,100,117,108,101,117, - 3,0,0,0,109,115,103,117,6,0,0,0,108,111,97,100, - 101,114,117,3,0,0,0,101,120,99,117,6,0,0,0,109, - 111,100,117,108,101,40,0,0,0,0,40,0,0,0,0,117, - 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, - 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, - 62,117,23,0,0,0,95,102,105,110,100,95,97,110,100,95, - 108,111,97,100,95,117,110,108,111,99,107,101,100,227,5,0, - 0,115,76,0,0,0,0,1,6,1,19,1,6,1,15,1, - 16,2,15,1,11,2,13,1,3,1,13,1,13,1,22,1, - 26,1,15,1,12,1,27,3,9,1,9,1,15,2,13,1, - 19,2,13,1,6,2,13,1,32,2,24,1,3,1,12,1, - 15,1,32,1,13,1,8,2,15,1,3,1,13,1,13,1, - 8,1,117,23,0,0,0,95,102,105,110,100,95,97,110,100, - 95,108,111,97,100,95,117,110,108,111,99,107,101,100,99,2, - 0,0,0,0,0,0,0,3,0,0,0,18,0,0,0,67, - 0,0,0,115,75,0,0,0,122,16,0,116,0,0,124,0, - 0,131,1,0,125,2,0,87,100,1,0,116,1,0,106,2, - 0,131,0,0,1,88,124,2,0,106,3,0,131,0,0,1, - 122,17,0,116,4,0,124,0,0,124,1,0,131,2,0,83, - 87,100,1,0,124,2,0,106,5,0,131,0,0,1,88,100, - 1,0,83,40,2,0,0,0,117,54,0,0,0,70,105,110, - 100,32,97,110,100,32,108,111,97,100,32,116,104,101,32,109, - 111,100,117,108,101,44,32,97,110,100,32,114,101,108,101,97, - 115,101,32,116,104,101,32,105,109,112,111,114,116,32,108,111, - 99,107,46,78,40,6,0,0,0,117,16,0,0,0,95,103, - 101,116,95,109,111,100,117,108,101,95,108,111,99,107,117,4, - 0,0,0,95,105,109,112,117,12,0,0,0,114,101,108,101, - 97,115,101,95,108,111,99,107,117,7,0,0,0,97,99,113, - 117,105,114,101,117,23,0,0,0,95,102,105,110,100,95,97, - 110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,100, - 117,7,0,0,0,114,101,108,101,97,115,101,40,3,0,0, - 0,117,4,0,0,0,110,97,109,101,117,7,0,0,0,105, - 109,112,111,114,116,95,117,4,0,0,0,108,111,99,107,40, - 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, - 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, - 95,98,111,111,116,115,116,114,97,112,62,117,14,0,0,0, - 95,102,105,110,100,95,97,110,100,95,108,111,97,100,21,6, - 0,0,115,14,0,0,0,0,2,3,1,16,2,11,1,10, - 1,3,1,17,2,117,14,0,0,0,95,102,105,110,100,95, - 97,110,100,95,108,111,97,100,99,3,0,0,0,0,0,0, - 0,5,0,0,0,4,0,0,0,67,0,0,0,115,172,0, - 0,0,116,0,0,124,0,0,124,1,0,124,2,0,131,3, - 0,1,124,2,0,100,1,0,107,4,0,114,49,0,116,1, - 0,124,0,0,124,1,0,124,2,0,131,3,0,125,0,0, - 110,0,0,116,2,0,106,3,0,131,0,0,1,124,0,0, - 116,4,0,106,5,0,107,7,0,114,87,0,116,6,0,124, - 0,0,116,7,0,131,2,0,83,116,4,0,106,5,0,124, - 0,0,25,125,3,0,124,3,0,100,4,0,107,8,0,114, - 158,0,116,2,0,106,9,0,131,0,0,1,100,2,0,106, - 10,0,124,0,0,131,1,0,125,4,0,116,11,0,124,4, - 0,100,3,0,124,0,0,131,1,1,130,1,0,110,0,0, - 116,12,0,124,0,0,131,1,0,1,124,3,0,83,40,5, - 0,0,0,117,50,1,0,0,73,109,112,111,114,116,32,97, - 110,100,32,114,101,116,117,114,110,32,116,104,101,32,109,111, - 100,117,108,101,32,98,97,115,101,100,32,111,110,32,105,116, - 115,32,110,97,109,101,44,32,116,104,101,32,112,97,99,107, - 97,103,101,32,116,104,101,32,99,97,108,108,32,105,115,10, - 32,32,32,32,98,101,105,110,103,32,109,97,100,101,32,102, - 114,111,109,44,32,97,110,100,32,116,104,101,32,108,101,118, - 101,108,32,97,100,106,117,115,116,109,101,110,116,46,10,10, - 32,32,32,32,84,104,105,115,32,102,117,110,99,116,105,111, - 110,32,114,101,112,114,101,115,101,110,116,115,32,116,104,101, - 32,103,114,101,97,116,101,115,116,32,99,111,109,109,111,110, - 32,100,101,110,111,109,105,110,97,116,111,114,32,111,102,32, - 102,117,110,99,116,105,111,110,97,108,105,116,121,10,32,32, - 32,32,98,101,116,119,101,101,110,32,105,109,112,111,114,116, - 95,109,111,100,117,108,101,32,97,110,100,32,95,95,105,109, - 112,111,114,116,95,95,46,32,84,104,105,115,32,105,110,99, - 108,117,100,101,115,32,115,101,116,116,105,110,103,32,95,95, - 112,97,99,107,97,103,101,95,95,32,105,102,10,32,32,32, - 32,116,104,101,32,108,111,97,100,101,114,32,100,105,100,32, - 110,111,116,46,10,10,32,32,32,32,105,0,0,0,0,117, - 40,0,0,0,105,109,112,111,114,116,32,111,102,32,123,125, - 32,104,97,108,116,101,100,59,32,78,111,110,101,32,105,110, - 32,115,121,115,46,109,111,100,117,108,101,115,117,4,0,0, - 0,110,97,109,101,78,40,13,0,0,0,117,13,0,0,0, - 95,115,97,110,105,116,121,95,99,104,101,99,107,117,13,0, - 0,0,95,114,101,115,111,108,118,101,95,110,97,109,101,117, - 4,0,0,0,95,105,109,112,117,12,0,0,0,97,99,113, - 117,105,114,101,95,108,111,99,107,117,3,0,0,0,115,121, - 115,117,7,0,0,0,109,111,100,117,108,101,115,117,14,0, - 0,0,95,102,105,110,100,95,97,110,100,95,108,111,97,100, - 117,11,0,0,0,95,103,99,100,95,105,109,112,111,114,116, - 117,4,0,0,0,78,111,110,101,117,12,0,0,0,114,101, - 108,101,97,115,101,95,108,111,99,107,117,6,0,0,0,102, - 111,114,109,97,116,117,11,0,0,0,73,109,112,111,114,116, - 69,114,114,111,114,117,19,0,0,0,95,108,111,99,107,95, - 117,110,108,111,99,107,95,109,111,100,117,108,101,40,5,0, - 0,0,117,4,0,0,0,110,97,109,101,117,7,0,0,0, - 112,97,99,107,97,103,101,117,5,0,0,0,108,101,118,101, - 108,117,6,0,0,0,109,111,100,117,108,101,117,7,0,0, - 0,109,101,115,115,97,103,101,40,0,0,0,0,40,0,0, - 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, - 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, - 114,97,112,62,117,11,0,0,0,95,103,99,100,95,105,109, - 112,111,114,116,34,6,0,0,115,28,0,0,0,0,9,16, - 1,12,1,21,1,10,1,15,1,13,1,13,1,12,1,10, - 1,6,1,9,1,21,1,10,1,117,11,0,0,0,95,103, - 99,100,95,105,109,112,111,114,116,99,3,0,0,0,0,0, - 0,0,6,0,0,0,17,0,0,0,67,0,0,0,115,254, - 0,0,0,116,0,0,124,0,0,100,1,0,131,2,0,114, - 250,0,100,2,0,124,1,0,107,6,0,114,89,0,116,1, - 0,124,1,0,131,1,0,125,1,0,124,1,0,106,2,0, - 100,2,0,131,1,0,1,116,0,0,124,0,0,100,3,0, - 131,2,0,114,89,0,124,1,0,106,3,0,124,0,0,106, - 4,0,131,1,0,1,113,89,0,110,0,0,120,158,0,124, - 1,0,68,93,147,0,125,3,0,116,0,0,124,0,0,124, - 3,0,131,2,0,115,96,0,100,4,0,106,5,0,124,0, - 0,106,6,0,124,3,0,131,2,0,125,4,0,121,17,0, - 116,7,0,124,2,0,124,4,0,131,2,0,1,87,113,243, - 0,4,116,8,0,107,10,0,114,239,0,1,125,5,0,1, - 122,50,0,116,9,0,124,5,0,100,5,0,100,7,0,131, - 3,0,114,218,0,124,5,0,106,11,0,124,4,0,107,2, - 0,114,218,0,119,96,0,113,218,0,110,0,0,130,0,0, - 87,89,100,6,0,100,6,0,125,5,0,126,5,0,88,113, - 243,0,88,113,96,0,113,96,0,87,110,0,0,124,0,0, - 83,40,8,0,0,0,117,238,0,0,0,70,105,103,117,114, - 101,32,111,117,116,32,119,104,97,116,32,95,95,105,109,112, - 111,114,116,95,95,32,115,104,111,117,108,100,32,114,101,116, - 117,114,110,46,10,10,32,32,32,32,84,104,101,32,105,109, - 112,111,114,116,95,32,112,97,114,97,109,101,116,101,114,32, - 105,115,32,97,32,99,97,108,108,97,98,108,101,32,119,104, - 105,99,104,32,116,97,107,101,115,32,116,104,101,32,110,97, - 109,101,32,111,102,32,109,111,100,117,108,101,32,116,111,10, - 32,32,32,32,105,109,112,111,114,116,46,32,73,116,32,105, - 115,32,114,101,113,117,105,114,101,100,32,116,111,32,100,101, - 99,111,117,112,108,101,32,116,104,101,32,102,117,110,99,116, - 105,111,110,32,102,114,111,109,32,97,115,115,117,109,105,110, - 103,32,105,109,112,111,114,116,108,105,98,39,115,10,32,32, - 32,32,105,109,112,111,114,116,32,105,109,112,108,101,109,101, - 110,116,97,116,105,111,110,32,105,115,32,100,101,115,105,114, - 101,100,46,10,10,32,32,32,32,117,8,0,0,0,95,95, - 112,97,116,104,95,95,117,1,0,0,0,42,117,7,0,0, - 0,95,95,97,108,108,95,95,117,5,0,0,0,123,125,46, - 123,125,117,10,0,0,0,95,110,111,116,95,102,111,117,110, - 100,78,70,40,12,0,0,0,117,7,0,0,0,104,97,115, - 97,116,116,114,117,4,0,0,0,108,105,115,116,117,6,0, - 0,0,114,101,109,111,118,101,117,6,0,0,0,101,120,116, - 101,110,100,117,7,0,0,0,95,95,97,108,108,95,95,117, - 6,0,0,0,102,111,114,109,97,116,117,8,0,0,0,95, - 95,110,97,109,101,95,95,117,25,0,0,0,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,117,11,0,0,0,73,109,112,111,114,116, - 69,114,114,111,114,117,7,0,0,0,103,101,116,97,116,116, - 114,117,5,0,0,0,70,97,108,115,101,117,4,0,0,0, - 110,97,109,101,40,6,0,0,0,117,6,0,0,0,109,111, - 100,117,108,101,117,8,0,0,0,102,114,111,109,108,105,115, - 116,117,7,0,0,0,105,109,112,111,114,116,95,117,1,0, - 0,0,120,117,9,0,0,0,102,114,111,109,95,110,97,109, - 101,117,3,0,0,0,101,120,99,40,0,0,0,0,40,0, - 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, - 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, - 116,114,97,112,62,117,16,0,0,0,95,104,97,110,100,108, - 101,95,102,114,111,109,108,105,115,116,58,6,0,0,115,34, - 0,0,0,0,10,15,1,12,1,12,1,13,1,15,1,22, - 1,13,1,15,1,21,1,3,1,17,1,18,6,18,1,15, - 1,9,1,32,1,117,16,0,0,0,95,104,97,110,100,108, - 101,95,102,114,111,109,108,105,115,116,99,1,0,0,0,0, - 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, - 78,0,0,0,124,0,0,106,0,0,100,1,0,131,1,0, - 125,1,0,124,1,0,100,6,0,107,8,0,114,74,0,124, - 0,0,100,2,0,25,125,1,0,100,3,0,124,0,0,107, - 7,0,114,74,0,124,1,0,106,2,0,100,4,0,131,1, - 0,100,5,0,25,125,1,0,113,74,0,110,0,0,124,1, - 0,83,40,7,0,0,0,117,167,0,0,0,67,97,108,99, - 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, - 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, - 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, - 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, - 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, - 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, - 101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,116, - 111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,116, - 32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,117, - 101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,32, - 32,32,32,117,11,0,0,0,95,95,112,97,99,107,97,103, - 101,95,95,117,8,0,0,0,95,95,110,97,109,101,95,95, - 117,8,0,0,0,95,95,112,97,116,104,95,95,117,1,0, - 0,0,46,105,0,0,0,0,78,40,3,0,0,0,117,3, - 0,0,0,103,101,116,117,4,0,0,0,78,111,110,101,117, - 10,0,0,0,114,112,97,114,116,105,116,105,111,110,40,2, - 0,0,0,117,7,0,0,0,103,108,111,98,97,108,115,117, - 7,0,0,0,112,97,99,107,97,103,101,40,0,0,0,0, - 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, - 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, - 116,115,116,114,97,112,62,117,17,0,0,0,95,99,97,108, - 99,95,95,95,112,97,99,107,97,103,101,95,95,92,6,0, - 0,115,12,0,0,0,0,7,15,1,12,1,10,1,12,1, - 25,1,117,17,0,0,0,95,99,97,108,99,95,95,95,112, - 97,99,107,97,103,101,95,95,99,0,0,0,0,0,0,0, - 0,3,0,0,0,3,0,0,0,67,0,0,0,115,55,0, - 0,0,116,0,0,116,1,0,106,2,0,131,0,0,102,2, - 0,125,0,0,116,3,0,116,4,0,102,2,0,125,1,0, - 116,5,0,116,6,0,102,2,0,125,2,0,124,0,0,124, - 1,0,124,2,0,103,3,0,83,40,1,0,0,0,117,111, - 0,0,0,82,101,116,117,114,110,115,32,97,32,108,105,115, - 116,32,111,102,32,102,105,108,101,45,98,97,115,101,100,32, - 109,111,100,117,108,101,32,108,111,97,100,101,114,115,46,10, - 10,32,32,32,32,69,97,99,104,32,105,116,101,109,32,105, - 115,32,97,32,116,117,112,108,101,32,40,108,111,97,100,101, - 114,44,32,115,117,102,102,105,120,101,115,44,32,97,108,108, - 111,119,95,112,97,99,107,97,103,101,115,41,46,10,32,32, - 32,32,40,7,0,0,0,117,19,0,0,0,69,120,116,101, - 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,117, - 4,0,0,0,95,105,109,112,117,18,0,0,0,101,120,116, - 101,110,115,105,111,110,95,115,117,102,102,105,120,101,115,117, - 16,0,0,0,83,111,117,114,99,101,70,105,108,101,76,111, - 97,100,101,114,117,15,0,0,0,83,79,85,82,67,69,95, - 83,85,70,70,73,88,69,83,117,20,0,0,0,83,111,117, - 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101, - 114,117,17,0,0,0,66,89,84,69,67,79,68,69,95,83, - 85,70,70,73,88,69,83,40,3,0,0,0,117,10,0,0, - 0,101,120,116,101,110,115,105,111,110,115,117,6,0,0,0, - 115,111,117,114,99,101,117,8,0,0,0,98,121,116,101,99, - 111,100,101,40,0,0,0,0,40,0,0,0,0,117,29,0, - 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, - 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, - 27,0,0,0,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,107, - 6,0,0,115,8,0,0,0,0,5,18,1,12,1,12,1, - 117,27,0,0,0,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, - 99,5,0,0,0,0,0,0,0,9,0,0,0,5,0,0, - 0,67,0,0,0,115,227,0,0,0,124,4,0,100,1,0, - 107,2,0,114,27,0,116,0,0,124,0,0,131,1,0,125, - 5,0,110,54,0,124,1,0,100,3,0,107,9,0,114,45, - 0,124,1,0,110,3,0,105,0,0,125,6,0,116,2,0, - 124,6,0,131,1,0,125,7,0,116,0,0,124,0,0,124, - 7,0,124,4,0,131,3,0,125,5,0,124,3,0,115,207, - 0,124,4,0,100,1,0,107,2,0,114,122,0,116,0,0, - 124,0,0,106,3,0,100,2,0,131,1,0,100,1,0,25, - 131,1,0,83,124,0,0,115,132,0,124,5,0,83,116,4, - 0,124,0,0,131,1,0,116,4,0,124,0,0,106,3,0, - 100,2,0,131,1,0,100,1,0,25,131,1,0,24,125,8, - 0,116,5,0,106,6,0,124,5,0,106,7,0,100,3,0, - 116,4,0,124,5,0,106,7,0,131,1,0,124,8,0,24, - 133,2,0,25,25,83,110,16,0,116,8,0,124,5,0,124, - 3,0,116,0,0,131,3,0,83,100,3,0,83,40,4,0, - 0,0,117,214,1,0,0,73,109,112,111,114,116,32,97,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,84,104,101, - 32,39,103,108,111,98,97,108,115,39,32,97,114,103,117,109, - 101,110,116,32,105,115,32,117,115,101,100,32,116,111,32,105, - 110,102,101,114,32,119,104,101,114,101,32,116,104,101,32,105, - 109,112,111,114,116,32,105,115,32,111,99,99,117,114,105,110, - 103,32,102,114,111,109,10,32,32,32,32,116,111,32,104,97, - 110,100,108,101,32,114,101,108,97,116,105,118,101,32,105,109, - 112,111,114,116,115,46,32,84,104,101,32,39,108,111,99,97, - 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 105,103,110,111,114,101,100,46,32,84,104,101,10,32,32,32, - 32,39,102,114,111,109,108,105,115,116,39,32,97,114,103,117, - 109,101,110,116,32,115,112,101,99,105,102,105,101,115,32,119, - 104,97,116,32,115,104,111,117,108,100,32,101,120,105,115,116, - 32,97,115,32,97,116,116,114,105,98,117,116,101,115,32,111, - 110,32,116,104,101,32,109,111,100,117,108,101,10,32,32,32, - 32,98,101,105,110,103,32,105,109,112,111,114,116,101,100,32, - 40,101,46,103,46,32,96,96,102,114,111,109,32,109,111,100, - 117,108,101,32,105,109,112,111,114,116,32,60,102,114,111,109, - 108,105,115,116,62,96,96,41,46,32,32,84,104,101,32,39, - 108,101,118,101,108,39,10,32,32,32,32,97,114,103,117,109, - 101,110,116,32,114,101,112,114,101,115,101,110,116,115,32,116, - 104,101,32,112,97,99,107,97,103,101,32,108,111,99,97,116, - 105,111,110,32,116,111,32,105,109,112,111,114,116,32,102,114, - 111,109,32,105,110,32,97,32,114,101,108,97,116,105,118,101, - 10,32,32,32,32,105,109,112,111,114,116,32,40,101,46,103, - 46,32,96,96,102,114,111,109,32,46,46,112,107,103,32,105, - 109,112,111,114,116,32,109,111,100,96,96,32,119,111,117,108, - 100,32,104,97,118,101,32,97,32,39,108,101,118,101,108,39, - 32,111,102,32,50,41,46,10,10,32,32,32,32,105,0,0, - 0,0,117,1,0,0,0,46,78,40,9,0,0,0,117,11, - 0,0,0,95,103,99,100,95,105,109,112,111,114,116,117,4, - 0,0,0,78,111,110,101,117,17,0,0,0,95,99,97,108, - 99,95,95,95,112,97,99,107,97,103,101,95,95,117,9,0, - 0,0,112,97,114,116,105,116,105,111,110,117,3,0,0,0, - 108,101,110,117,3,0,0,0,115,121,115,117,7,0,0,0, - 109,111,100,117,108,101,115,117,8,0,0,0,95,95,110,97, - 109,101,95,95,117,16,0,0,0,95,104,97,110,100,108,101, - 95,102,114,111,109,108,105,115,116,40,9,0,0,0,117,4, - 0,0,0,110,97,109,101,117,7,0,0,0,103,108,111,98, - 97,108,115,117,6,0,0,0,108,111,99,97,108,115,117,8, - 0,0,0,102,114,111,109,108,105,115,116,117,5,0,0,0, - 108,101,118,101,108,117,6,0,0,0,109,111,100,117,108,101, - 117,8,0,0,0,103,108,111,98,97,108,115,95,117,7,0, - 0,0,112,97,99,107,97,103,101,117,7,0,0,0,99,117, - 116,95,111,102,102,40,0,0,0,0,40,0,0,0,0,117, - 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, - 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, - 62,117,10,0,0,0,95,95,105,109,112,111,114,116,95,95, - 118,6,0,0,115,26,0,0,0,0,11,12,1,15,2,24, - 1,12,1,18,1,6,3,12,1,23,1,6,1,4,4,35, - 3,40,2,117,10,0,0,0,95,95,105,109,112,111,114,116, - 95,95,99,2,0,0,0,0,0,0,0,16,0,0,0,13, - 0,0,0,67,0,0,0,115,24,3,0,0,124,1,0,97, - 0,0,124,0,0,97,1,0,116,1,0,106,2,0,106,3, - 0,114,33,0,116,4,0,97,5,0,110,6,0,116,6,0, - 97,5,0,116,7,0,116,1,0,131,1,0,125,2,0,120, - 119,0,116,1,0,106,8,0,106,9,0,131,0,0,68,93, - 102,0,92,2,0,125,3,0,125,4,0,116,10,0,124,4, - 0,124,2,0,131,2,0,114,67,0,116,11,0,124,4,0, - 100,1,0,131,2,0,115,169,0,124,3,0,116,1,0,106, - 12,0,107,6,0,114,136,0,116,13,0,124,4,0,95,14, - 0,113,166,0,116,0,0,106,15,0,124,3,0,131,1,0, - 114,166,0,116,16,0,124,4,0,95,14,0,113,166,0,113, - 169,0,113,67,0,113,67,0,87,116,1,0,106,8,0,116, - 17,0,25,125,5,0,120,76,0,100,28,0,68,93,68,0, - 125,6,0,124,6,0,116,1,0,106,8,0,107,7,0,114, - 232,0,116,13,0,106,18,0,124,6,0,131,1,0,125,7, - 0,110,13,0,116,1,0,106,8,0,124,6,0,25,125,7, - 0,116,19,0,124,5,0,124,6,0,124,7,0,131,3,0, - 1,113,193,0,87,100,6,0,100,7,0,103,1,0,102,2, - 0,100,8,0,100,9,0,100,7,0,103,2,0,102,2,0, - 100,10,0,100,9,0,100,7,0,103,2,0,102,2,0,102, - 3,0,125,8,0,120,189,0,124,8,0,68,93,169,0,92, - 2,0,125,9,0,125,10,0,116,20,0,100,11,0,100,12, - 0,132,0,0,124,10,0,68,131,1,0,131,1,0,115,107, - 1,116,21,0,130,1,0,124,10,0,100,13,0,25,125,11, - 0,124,9,0,116,1,0,106,8,0,107,6,0,114,149,1, - 116,1,0,106,8,0,124,9,0,25,125,12,0,80,113,64, - 1,121,60,0,116,13,0,106,18,0,124,9,0,131,1,0, - 125,12,0,124,9,0,100,10,0,107,2,0,114,207,1,100, - 14,0,116,1,0,106,22,0,107,6,0,114,207,1,124,10, - 0,100,15,0,25,125,11,0,110,0,0,80,87,113,64,1, - 4,116,23,0,107,10,0,114,232,1,1,1,1,119,64,1, - 89,113,64,1,88,113,64,1,87,116,23,0,100,16,0,131, - 1,0,130,1,0,121,19,0,116,13,0,106,18,0,100,17, - 0,131,1,0,125,13,0,87,110,24,0,4,116,23,0,107, - 10,0,114,38,2,1,1,1,100,27,0,125,13,0,89,110, - 1,0,88,116,13,0,106,18,0,100,18,0,131,1,0,125, - 14,0,124,9,0,100,8,0,107,2,0,114,100,2,116,13, - 0,106,18,0,100,19,0,131,1,0,125,15,0,116,19,0, - 124,5,0,100,20,0,124,15,0,131,3,0,1,110,0,0, - 116,19,0,124,5,0,100,21,0,124,12,0,131,3,0,1, - 116,19,0,124,5,0,100,17,0,124,13,0,131,3,0,1, - 116,19,0,124,5,0,100,18,0,124,14,0,131,3,0,1, - 116,19,0,124,5,0,100,22,0,124,11,0,131,3,0,1, - 116,19,0,124,5,0,100,23,0,116,25,0,124,10,0,131, - 1,0,131,3,0,1,116,19,0,124,5,0,100,24,0,116, - 26,0,131,0,0,131,3,0,1,116,27,0,106,28,0,116, - 0,0,106,29,0,131,0,0,131,1,0,1,124,9,0,100, - 8,0,107,2,0,114,20,3,116,30,0,106,31,0,100,25, - 0,131,1,0,1,100,26,0,116,27,0,107,6,0,114,20, - 3,100,29,0,116,33,0,95,34,0,113,20,3,110,0,0, - 100,27,0,83,40,30,0,0,0,117,250,0,0,0,83,101, - 116,117,112,32,105,109,112,111,114,116,108,105,98,32,98,121, - 32,105,109,112,111,114,116,105,110,103,32,110,101,101,100,101, - 100,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,115,32,97,110,100,32,105,110,106,101,99,116,105,110,103, - 32,116,104,101,109,10,32,32,32,32,105,110,116,111,32,116, - 104,101,32,103,108,111,98,97,108,32,110,97,109,101,115,112, - 97,99,101,46,10,10,32,32,32,32,65,115,32,115,121,115, - 32,105,115,32,110,101,101,100,101,100,32,102,111,114,32,115, - 121,115,46,109,111,100,117,108,101,115,32,97,99,99,101,115, - 115,32,97,110,100,32,95,105,109,112,32,105,115,32,110,101, - 101,100,101,100,32,116,111,32,108,111,97,100,32,98,117,105, - 108,116,45,105,110,10,32,32,32,32,109,111,100,117,108,101, - 115,44,32,116,104,111,115,101,32,116,119,111,32,109,111,100, - 117,108,101,115,32,109,117,115,116,32,98,101,32,101,120,112, - 108,105,99,105,116,108,121,32,112,97,115,115,101,100,32,105, - 110,46,10,10,32,32,32,32,117,10,0,0,0,95,95,108, - 111,97,100,101,114,95,95,117,3,0,0,0,95,105,111,117, - 9,0,0,0,95,119,97,114,110,105,110,103,115,117,8,0, - 0,0,98,117,105,108,116,105,110,115,117,7,0,0,0,109, - 97,114,115,104,97,108,117,5,0,0,0,112,111,115,105,120, - 117,1,0,0,0,47,117,2,0,0,0,110,116,117,1,0, - 0,0,92,117,3,0,0,0,111,115,50,99,1,0,0,0, - 0,0,0,0,2,0,0,0,3,0,0,0,115,0,0,0, - 115,33,0,0,0,124,0,0,93,23,0,125,1,0,116,0, - 0,124,1,0,131,1,0,100,0,0,107,2,0,86,1,113, - 3,0,100,1,0,83,40,2,0,0,0,105,1,0,0,0, - 78,40,1,0,0,0,117,3,0,0,0,108,101,110,40,2, - 0,0,0,117,2,0,0,0,46,48,117,3,0,0,0,115, - 101,112,40,0,0,0,0,40,0,0,0,0,117,29,0,0, - 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,9, - 0,0,0,60,103,101,110,101,120,112,114,62,191,6,0,0, - 115,2,0,0,0,6,0,117,25,0,0,0,95,115,101,116, - 117,112,46,60,108,111,99,97,108,115,62,46,60,103,101,110, - 101,120,112,114,62,105,0,0,0,0,117,7,0,0,0,69, - 77,88,32,71,67,67,105,1,0,0,0,117,30,0,0,0, + 110,116,101,120,116,117,36,0,0,0,67,111,110,116,101,120, + 116,32,109,97,110,97,103,101,114,32,102,111,114,32,116,104, + 101,32,105,109,112,111,114,116,32,108,111,99,107,46,99,1, + 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,67, + 0,0,0,115,14,0,0,0,116,0,0,106,1,0,131,0, + 0,1,100,1,0,83,40,2,0,0,0,117,24,0,0,0, + 65,99,113,117,105,114,101,32,116,104,101,32,105,109,112,111, + 114,116,32,108,111,99,107,46,78,40,2,0,0,0,114,94, + 0,0,0,244,12,0,0,0,97,99,113,117,105,114,101,95, + 108,111,99,107,40,1,0,0,0,114,75,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,142,0, + 0,0,205,5,0,0,115,2,0,0,0,0,2,117,28,0, + 0,0,95,73,109,112,111,114,116,76,111,99,107,67,111,110, + 116,101,120,116,46,95,95,101,110,116,101,114,95,95,99,4, + 0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,67, + 0,0,0,115,14,0,0,0,116,0,0,106,1,0,131,0, + 0,1,100,1,0,83,40,2,0,0,0,117,60,0,0,0, + 82,101,108,101,97,115,101,32,116,104,101,32,105,109,112,111, + 114,116,32,108,111,99,107,32,114,101,103,97,114,100,108,101, + 115,115,32,111,102,32,97,110,121,32,114,97,105,115,101,100, + 32,101,120,99,101,112,116,105,111,110,115,46,78,40,2,0, + 0,0,114,94,0,0,0,114,95,0,0,0,40,4,0,0, + 0,114,75,0,0,0,116,8,0,0,0,101,120,99,95,116, + 121,112,101,116,9,0,0,0,101,120,99,95,118,97,108,117, + 101,116,13,0,0,0,101,120,99,95,116,114,97,99,101,98, + 97,99,107,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,145,0,0,0,209,5,0,0,115,2,0,0,0, + 0,2,117,27,0,0,0,95,73,109,112,111,114,116,76,111, + 99,107,67,111,110,116,101,120,116,46,95,95,101,120,105,116, + 95,95,78,40,6,0,0,0,114,56,0,0,0,114,55,0, + 0,0,114,57,0,0,0,114,58,0,0,0,114,142,0,0, + 0,114,145,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,54,1,0,0,201, + 5,0,0,115,6,0,0,0,12,2,6,2,12,4,114,54, + 1,0,0,99,3,0,0,0,0,0,0,0,5,0,0,0, + 4,0,0,0,67,0,0,0,115,91,0,0,0,124,1,0, + 106,0,0,100,1,0,124,2,0,100,2,0,24,131,2,0, + 125,3,0,116,1,0,124,3,0,131,1,0,124,2,0,107, + 0,0,114,55,0,116,2,0,100,3,0,131,1,0,130,1, + 0,110,0,0,124,3,0,100,4,0,25,125,4,0,124,0, + 0,114,87,0,100,5,0,106,3,0,124,4,0,124,0,0, + 131,2,0,83,124,4,0,83,40,6,0,0,0,117,50,0, + 0,0,82,101,115,111,108,118,101,32,97,32,114,101,108,97, + 116,105,118,101,32,109,111,100,117,108,101,32,110,97,109,101, + 32,116,111,32,97,110,32,97,98,115,111,108,117,116,101,32, + 111,110,101,46,114,101,0,0,0,114,29,0,0,0,117,50, + 0,0,0,97,116,116,101,109,112,116,101,100,32,114,101,108, + 97,116,105,118,101,32,105,109,112,111,114,116,32,98,101,121, + 111,110,100,32,116,111,112,45,108,101,118,101,108,32,112,97, + 99,107,97,103,101,114,67,0,0,0,117,5,0,0,0,123, + 125,46,123,125,40,4,0,0,0,114,34,0,0,0,114,31, + 0,0,0,114,118,0,0,0,114,46,0,0,0,40,5,0, + 0,0,114,71,0,0,0,244,7,0,0,0,112,97,99,107, + 97,103,101,244,5,0,0,0,108,101,118,101,108,116,4,0, + 0,0,98,105,116,115,116,4,0,0,0,98,97,115,101,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,244,13, + 0,0,0,95,114,101,115,111,108,118,101,95,110,97,109,101, + 214,5,0,0,115,10,0,0,0,0,2,22,1,18,1,15, + 1,10,1,114,58,1,0,0,99,2,0,0,0,0,0,0, + 0,4,0,0,0,11,0,0,0,67,0,0,0,115,138,0, + 0,0,116,0,0,106,1,0,115,28,0,116,2,0,106,3, + 0,100,1,0,116,4,0,131,2,0,1,110,0,0,120,103, + 0,116,0,0,106,1,0,68,93,88,0,125,2,0,116,5, + 0,131,0,0,143,23,0,1,124,2,0,106,6,0,124,0, + 0,124,1,0,131,2,0,125,3,0,87,100,2,0,81,88, + 124,3,0,100,2,0,107,9,0,114,38,0,124,0,0,116, + 0,0,106,7,0,107,7,0,114,109,0,124,3,0,83,116, + 0,0,106,7,0,124,0,0,25,106,8,0,83,113,38,0, + 113,38,0,87,100,2,0,83,100,2,0,83,40,3,0,0, + 0,117,23,0,0,0,70,105,110,100,32,97,32,109,111,100, + 117,108,101,39,115,32,108,111,97,100,101,114,46,117,22,0, + 0,0,115,121,115,46,109,101,116,97,95,112,97,116,104,32, + 105,115,32,101,109,112,116,121,78,40,9,0,0,0,114,7, + 0,0,0,244,9,0,0,0,109,101,116,97,95,112,97,116, + 104,114,185,0,0,0,114,186,0,0,0,114,187,0,0,0, + 114,54,1,0,0,114,217,0,0,0,114,140,0,0,0,114, + 171,0,0,0,40,4,0,0,0,114,71,0,0,0,114,35, + 0,0,0,114,31,1,0,0,114,160,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,244,12,0,0, + 0,95,102,105,110,100,95,109,111,100,117,108,101,223,5,0, + 0,115,20,0,0,0,0,2,9,1,19,1,16,1,10,1, + 24,1,12,2,15,1,4,2,21,2,114,60,1,0,0,99, + 3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, + 67,0,0,0,115,194,0,0,0,116,0,0,124,0,0,116, + 1,0,131,2,0,115,45,0,116,2,0,100,1,0,106,3, + 0,116,4,0,124,0,0,131,1,0,131,1,0,131,1,0, + 130,1,0,110,0,0,124,2,0,100,2,0,107,0,0,114, + 72,0,116,5,0,100,3,0,131,1,0,130,1,0,110,0, + 0,124,1,0,114,156,0,116,0,0,124,1,0,116,1,0, + 131,2,0,115,108,0,116,2,0,100,4,0,131,1,0,130, + 1,0,113,156,0,124,1,0,116,6,0,106,7,0,107,7, + 0,114,156,0,100,5,0,125,3,0,116,8,0,124,3,0, + 106,3,0,124,1,0,131,1,0,131,1,0,130,1,0,113, + 156,0,110,0,0,124,0,0,12,114,190,0,124,2,0,100, + 2,0,107,2,0,114,190,0,116,5,0,100,6,0,131,1, + 0,130,1,0,110,0,0,100,7,0,83,40,8,0,0,0, + 117,28,0,0,0,86,101,114,105,102,121,32,97,114,103,117, + 109,101,110,116,115,32,97,114,101,32,34,115,97,110,101,34, + 46,117,31,0,0,0,109,111,100,117,108,101,32,110,97,109, + 101,32,109,117,115,116,32,98,101,32,115,116,114,44,32,110, + 111,116,32,123,125,114,67,0,0,0,117,18,0,0,0,108, + 101,118,101,108,32,109,117,115,116,32,98,101,32,62,61,32, + 48,117,31,0,0,0,95,95,112,97,99,107,97,103,101,95, + 95,32,110,111,116,32,115,101,116,32,116,111,32,97,32,115, + 116,114,105,110,103,117,61,0,0,0,80,97,114,101,110,116, + 32,109,111,100,117,108,101,32,123,33,114,125,32,110,111,116, + 32,108,111,97,100,101,100,44,32,99,97,110,110,111,116,32, + 112,101,114,102,111,114,109,32,114,101,108,97,116,105,118,101, + 32,105,109,112,111,114,116,117,17,0,0,0,69,109,112,116, + 121,32,109,111,100,117,108,101,32,110,97,109,101,78,40,9, + 0,0,0,114,202,0,0,0,114,35,1,0,0,244,9,0, + 0,0,84,121,112,101,69,114,114,111,114,114,46,0,0,0, + 114,152,0,0,0,114,118,0,0,0,114,7,0,0,0,114, + 140,0,0,0,244,11,0,0,0,83,121,115,116,101,109,69, + 114,114,111,114,40,4,0,0,0,114,71,0,0,0,114,56, + 1,0,0,114,57,1,0,0,114,189,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,244,13,0,0, + 0,95,115,97,110,105,116,121,95,99,104,101,99,107,240,5, + 0,0,115,24,0,0,0,0,2,15,1,30,1,12,1,15, + 1,6,1,15,1,15,1,15,1,6,2,27,1,19,1,114, + 63,1,0,0,117,16,0,0,0,78,111,32,109,111,100,117, + 108,101,32,110,97,109,101,100,32,117,4,0,0,0,123,33, + 114,125,99,2,0,0,0,0,0,0,0,8,0,0,0,27, + 0,0,0,67,0,0,0,115,6,2,0,0,100,0,0,125, + 2,0,124,0,0,106,0,0,100,1,0,131,1,0,100,2, + 0,25,125,3,0,124,3,0,114,178,0,124,3,0,116,1, + 0,106,2,0,107,7,0,114,62,0,116,3,0,124,1,0, + 124,3,0,131,2,0,1,110,0,0,124,0,0,116,1,0, + 106,2,0,107,6,0,114,88,0,116,1,0,106,2,0,124, + 0,0,25,83,116,1,0,106,2,0,124,3,0,25,125,4, + 0,121,13,0,124,4,0,106,4,0,125,2,0,87,113,178, + 0,4,116,5,0,107,10,0,114,174,0,1,1,1,116,6, + 0,100,3,0,23,106,7,0,124,0,0,124,3,0,131,2, + 0,125,5,0,116,8,0,124,5,0,100,4,0,124,0,0, + 131,1,1,130,1,0,89,113,178,0,88,110,0,0,116,9, + 0,124,0,0,124,2,0,131,2,0,125,6,0,124,6,0, + 100,0,0,107,8,0,114,235,0,116,8,0,116,6,0,106, + 7,0,124,0,0,131,1,0,100,4,0,124,0,0,131,1, + 1,130,1,0,110,47,0,124,0,0,116,1,0,106,2,0, + 107,7,0,114,26,1,124,6,0,106,10,0,124,0,0,131, + 1,0,1,116,11,0,100,5,0,124,0,0,124,6,0,131, + 3,0,1,110,0,0,116,1,0,106,2,0,124,0,0,25, + 125,7,0,124,3,0,114,90,1,116,1,0,106,2,0,124, + 3,0,25,125,4,0,116,12,0,124,4,0,124,0,0,106, + 0,0,100,1,0,131,1,0,100,6,0,25,124,7,0,131, + 3,0,1,110,0,0,116,13,0,124,7,0,100,7,0,100, + 0,0,131,3,0,100,0,0,107,8,0,114,197,1,121,59, + 0,124,7,0,106,14,0,124,7,0,95,15,0,116,16,0, + 124,7,0,100,8,0,131,2,0,115,172,1,124,7,0,106, + 15,0,106,0,0,100,1,0,131,1,0,100,2,0,25,124, + 7,0,95,15,0,110,0,0,87,113,197,1,4,116,5,0, + 107,10,0,114,193,1,1,1,1,89,113,197,1,88,110,0, + 0,116,13,0,124,7,0,100,9,0,100,0,0,131,3,0, + 100,0,0,107,8,0,114,2,2,121,13,0,124,6,0,124, + 7,0,95,17,0,87,113,2,2,4,116,5,0,107,10,0, + 114,254,1,1,1,1,89,113,2,2,88,110,0,0,124,7, + 0,83,40,10,0,0,0,78,114,101,0,0,0,114,67,0, + 0,0,117,21,0,0,0,59,32,123,125,32,105,115,32,110, + 111,116,32,97,32,112,97,99,107,97,103,101,114,71,0,0, + 0,117,18,0,0,0,105,109,112,111,114,116,32,123,33,114, + 125,32,35,32,123,33,114,125,114,100,0,0,0,114,158,0, + 0,0,114,159,0,0,0,114,171,0,0,0,40,18,0,0, + 0,114,32,0,0,0,114,7,0,0,0,114,140,0,0,0, + 114,99,0,0,0,114,159,0,0,0,114,154,0,0,0,244, + 8,0,0,0,95,69,82,82,95,77,83,71,114,46,0,0, + 0,114,157,0,0,0,114,60,1,0,0,114,218,0,0,0, + 114,137,0,0,0,114,60,0,0,0,114,61,0,0,0,114, + 56,0,0,0,114,158,0,0,0,114,59,0,0,0,114,171, + 0,0,0,40,8,0,0,0,114,71,0,0,0,244,7,0, + 0,0,105,109,112,111,114,116,95,114,35,0,0,0,114,6, + 1,0,0,116,13,0,0,0,112,97,114,101,110,116,95,109, + 111,100,117,108,101,114,189,0,0,0,114,160,0,0,0,114, + 161,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,244,23,0,0,0,95,102,105,110,100,95,97,110, + 100,95,108,111,97,100,95,117,110,108,111,99,107,101,100,4, + 6,0,0,115,72,0,0,0,0,1,6,1,19,1,6,1, + 15,1,16,2,15,1,11,2,13,1,3,1,13,1,13,1, + 22,1,26,1,15,1,12,1,30,1,15,2,13,1,19,2, + 13,1,6,2,13,1,32,2,24,1,3,1,12,1,15,1, + 32,1,13,1,8,2,24,1,3,1,13,1,13,1,8,1, + 114,66,1,0,0,99,2,0,0,0,0,0,0,0,3,0, + 0,0,18,0,0,0,67,0,0,0,115,75,0,0,0,122, + 16,0,116,0,0,124,0,0,131,1,0,125,2,0,87,100, + 1,0,116,1,0,106,2,0,131,0,0,1,88,124,2,0, + 106,3,0,131,0,0,1,122,17,0,116,4,0,124,0,0, + 124,1,0,131,2,0,83,87,100,1,0,124,2,0,106,5, + 0,131,0,0,1,88,100,1,0,83,40,2,0,0,0,117, + 54,0,0,0,70,105,110,100,32,97,110,100,32,108,111,97, + 100,32,116,104,101,32,109,111,100,117,108,101,44,32,97,110, + 100,32,114,101,108,101,97,115,101,32,116,104,101,32,105,109, + 112,111,114,116,32,108,111,99,107,46,78,40,6,0,0,0, + 114,93,0,0,0,114,94,0,0,0,114,95,0,0,0,114, + 83,0,0,0,114,66,1,0,0,114,84,0,0,0,40,3, + 0,0,0,114,71,0,0,0,114,65,1,0,0,114,69,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,244,14,0,0,0,95,102,105,110,100,95,97,110,100,95, + 108,111,97,100,50,6,0,0,115,14,0,0,0,0,2,3, + 1,16,2,11,1,10,1,3,1,17,2,114,67,1,0,0, + 99,3,0,0,0,0,0,0,0,5,0,0,0,4,0,0, + 0,67,0,0,0,115,172,0,0,0,116,0,0,124,0,0, + 124,1,0,124,2,0,131,3,0,1,124,2,0,100,1,0, + 107,4,0,114,49,0,116,1,0,124,0,0,124,1,0,124, + 2,0,131,3,0,125,0,0,110,0,0,116,2,0,106,3, + 0,131,0,0,1,124,0,0,116,4,0,106,5,0,107,7, + 0,114,87,0,116,6,0,124,0,0,116,7,0,131,2,0, + 83,116,4,0,106,5,0,124,0,0,25,125,3,0,124,3, + 0,100,2,0,107,8,0,114,158,0,116,2,0,106,8,0, + 131,0,0,1,100,3,0,106,9,0,124,0,0,131,1,0, + 125,4,0,116,10,0,124,4,0,100,4,0,124,0,0,131, + 1,1,130,1,0,110,0,0,116,11,0,124,0,0,131,1, + 0,1,124,3,0,83,40,5,0,0,0,117,50,1,0,0, + 73,109,112,111,114,116,32,97,110,100,32,114,101,116,117,114, + 110,32,116,104,101,32,109,111,100,117,108,101,32,98,97,115, + 101,100,32,111,110,32,105,116,115,32,110,97,109,101,44,32, + 116,104,101,32,112,97,99,107,97,103,101,32,116,104,101,32, + 99,97,108,108,32,105,115,10,32,32,32,32,98,101,105,110, + 103,32,109,97,100,101,32,102,114,111,109,44,32,97,110,100, + 32,116,104,101,32,108,101,118,101,108,32,97,100,106,117,115, + 116,109,101,110,116,46,10,10,32,32,32,32,84,104,105,115, + 32,102,117,110,99,116,105,111,110,32,114,101,112,114,101,115, + 101,110,116,115,32,116,104,101,32,103,114,101,97,116,101,115, + 116,32,99,111,109,109,111,110,32,100,101,110,111,109,105,110, + 97,116,111,114,32,111,102,32,102,117,110,99,116,105,111,110, + 97,108,105,116,121,10,32,32,32,32,98,101,116,119,101,101, + 110,32,105,109,112,111,114,116,95,109,111,100,117,108,101,32, + 97,110,100,32,95,95,105,109,112,111,114,116,95,95,46,32, + 84,104,105,115,32,105,110,99,108,117,100,101,115,32,115,101, + 116,116,105,110,103,32,95,95,112,97,99,107,97,103,101,95, + 95,32,105,102,10,32,32,32,32,116,104,101,32,108,111,97, + 100,101,114,32,100,105,100,32,110,111,116,46,10,10,32,32, + 32,32,114,67,0,0,0,78,117,40,0,0,0,105,109,112, + 111,114,116,32,111,102,32,123,125,32,104,97,108,116,101,100, + 59,32,78,111,110,101,32,105,110,32,115,121,115,46,109,111, + 100,117,108,101,115,114,71,0,0,0,40,12,0,0,0,114, + 63,1,0,0,114,58,1,0,0,114,94,0,0,0,114,55, + 1,0,0,114,7,0,0,0,114,140,0,0,0,114,67,1, + 0,0,244,11,0,0,0,95,103,99,100,95,105,109,112,111, + 114,116,114,95,0,0,0,114,46,0,0,0,114,157,0,0, + 0,114,96,0,0,0,40,5,0,0,0,114,71,0,0,0, + 114,56,1,0,0,114,57,1,0,0,114,161,0,0,0,114, + 136,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,68,1,0,0,63,6,0,0,115,26,0,0, + 0,0,9,16,1,12,1,21,1,10,1,15,1,13,1,13, + 1,12,1,10,2,15,1,21,1,10,1,114,68,1,0,0, + 99,3,0,0,0,0,0,0,0,6,0,0,0,17,0,0, + 0,67,0,0,0,115,1,1,0,0,116,0,0,124,0,0, + 100,1,0,131,2,0,114,253,0,100,2,0,124,1,0,107, + 6,0,114,89,0,116,1,0,124,1,0,131,1,0,125,1, + 0,124,1,0,106,2,0,100,2,0,131,1,0,1,116,0, + 0,124,0,0,100,3,0,131,2,0,114,89,0,124,1,0, + 106,3,0,124,0,0,106,4,0,131,1,0,1,113,89,0, + 110,0,0,120,161,0,124,1,0,68,93,150,0,125,3,0, + 116,0,0,124,0,0,124,3,0,131,2,0,115,96,0,100, + 4,0,106,5,0,124,0,0,106,6,0,124,3,0,131,2, + 0,125,4,0,121,17,0,116,7,0,124,2,0,124,4,0, + 131,2,0,1,87,113,246,0,4,116,8,0,107,10,0,114, + 242,0,1,125,5,0,1,122,53,0,116,9,0,124,5,0, + 131,1,0,106,10,0,116,11,0,131,1,0,114,221,0,124, + 5,0,106,12,0,124,4,0,107,2,0,114,221,0,119,96, + 0,113,221,0,110,0,0,130,0,0,87,89,100,5,0,100, + 5,0,125,5,0,126,5,0,88,113,246,0,88,113,96,0, + 113,96,0,87,110,0,0,124,0,0,83,40,6,0,0,0, + 117,238,0,0,0,70,105,103,117,114,101,32,111,117,116,32, + 119,104,97,116,32,95,95,105,109,112,111,114,116,95,95,32, + 115,104,111,117,108,100,32,114,101,116,117,114,110,46,10,10, + 32,32,32,32,84,104,101,32,105,109,112,111,114,116,95,32, + 112,97,114,97,109,101,116,101,114,32,105,115,32,97,32,99, + 97,108,108,97,98,108,101,32,119,104,105,99,104,32,116,97, + 107,101,115,32,116,104,101,32,110,97,109,101,32,111,102,32, + 109,111,100,117,108,101,32,116,111,10,32,32,32,32,105,109, + 112,111,114,116,46,32,73,116,32,105,115,32,114,101,113,117, + 105,114,101,100,32,116,111,32,100,101,99,111,117,112,108,101, + 32,116,104,101,32,102,117,110,99,116,105,111,110,32,102,114, + 111,109,32,97,115,115,117,109,105,110,103,32,105,109,112,111, + 114,116,108,105,98,39,115,10,32,32,32,32,105,109,112,111, + 114,116,32,105,109,112,108,101,109,101,110,116,97,116,105,111, + 110,32,105,115,32,100,101,115,105,114,101,100,46,10,10,32, + 32,32,32,114,159,0,0,0,245,1,0,0,0,42,244,7, + 0,0,0,95,95,97,108,108,95,95,117,5,0,0,0,123, + 125,46,123,125,78,40,13,0,0,0,114,59,0,0,0,244, + 4,0,0,0,108,105,115,116,244,6,0,0,0,114,101,109, + 111,118,101,114,207,0,0,0,114,70,1,0,0,114,46,0, + 0,0,114,56,0,0,0,114,99,0,0,0,114,157,0,0, + 0,114,35,1,0,0,114,9,0,0,0,244,15,0,0,0, + 95,69,82,82,95,77,83,71,95,80,82,69,70,73,88,114, + 71,0,0,0,40,6,0,0,0,114,161,0,0,0,244,8, + 0,0,0,102,114,111,109,108,105,115,116,114,65,1,0,0, + 114,16,0,0,0,116,9,0,0,0,102,114,111,109,95,110, + 97,109,101,114,248,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,244,16,0,0,0,95,104,97,110, + 100,108,101,95,102,114,111,109,108,105,115,116,87,6,0,0, + 115,34,0,0,0,0,10,15,1,12,1,12,1,13,1,15, + 1,22,1,13,1,15,1,21,1,3,1,17,1,18,4,21, + 1,15,1,9,1,32,1,114,75,1,0,0,99,1,0,0, + 0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0, + 0,115,78,0,0,0,124,0,0,106,0,0,100,1,0,131, + 1,0,125,1,0,124,1,0,100,2,0,107,8,0,114,74, + 0,124,0,0,100,3,0,25,125,1,0,100,4,0,124,0, + 0,107,7,0,114,74,0,124,1,0,106,1,0,100,5,0, + 131,1,0,100,6,0,25,125,1,0,113,74,0,110,0,0, + 124,1,0,83,40,7,0,0,0,117,167,0,0,0,67,97, + 108,99,117,108,97,116,101,32,119,104,97,116,32,95,95,112, + 97,99,107,97,103,101,95,95,32,115,104,111,117,108,100,32, + 98,101,46,10,10,32,32,32,32,95,95,112,97,99,107,97, + 103,101,95,95,32,105,115,32,110,111,116,32,103,117,97,114, + 97,110,116,101,101,100,32,116,111,32,98,101,32,100,101,102, + 105,110,101,100,32,111,114,32,99,111,117,108,100,32,98,101, + 32,115,101,116,32,116,111,32,78,111,110,101,10,32,32,32, + 32,116,111,32,114,101,112,114,101,115,101,110,116,32,116,104, + 97,116,32,105,116,115,32,112,114,111,112,101,114,32,118,97, + 108,117,101,32,105,115,32,117,110,107,110,111,119,110,46,10, + 10,32,32,32,32,114,158,0,0,0,78,114,56,0,0,0, + 114,159,0,0,0,114,101,0,0,0,114,67,0,0,0,40, + 2,0,0,0,114,79,0,0,0,114,32,0,0,0,40,2, + 0,0,0,244,7,0,0,0,103,108,111,98,97,108,115,114, + 56,1,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,244,17,0,0,0,95,99,97,108,99,95,95,95, + 112,97,99,107,97,103,101,95,95,119,6,0,0,115,12,0, + 0,0,0,7,15,1,12,1,10,1,12,1,25,1,114,77, + 1,0,0,99,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,67,0,0,0,115,55,0,0,0,116,0,0, + 116,1,0,106,2,0,131,0,0,102,2,0,125,0,0,116, + 3,0,116,4,0,102,2,0,125,1,0,116,5,0,116,6, + 0,102,2,0,125,2,0,124,0,0,124,1,0,124,2,0, + 103,3,0,83,40,1,0,0,0,117,111,0,0,0,82,101, + 116,117,114,110,115,32,97,32,108,105,115,116,32,111,102,32, + 102,105,108,101,45,98,97,115,101,100,32,109,111,100,117,108, + 101,32,108,111,97,100,101,114,115,46,10,10,32,32,32,32, + 69,97,99,104,32,105,116,101,109,32,105,115,32,97,32,116, + 117,112,108,101,32,40,108,111,97,100,101,114,44,32,115,117, + 102,102,105,120,101,115,44,32,97,108,108,111,119,95,112,97, + 99,107,97,103,101,115,41,46,10,32,32,32,32,40,7,0, + 0,0,114,8,1,0,0,114,94,0,0,0,244,18,0,0, + 0,101,120,116,101,110,115,105,111,110,95,115,117,102,102,105, + 120,101,115,114,2,1,0,0,114,119,0,0,0,114,7,1, + 0,0,244,17,0,0,0,66,89,84,69,67,79,68,69,95, + 83,85,70,70,73,88,69,83,40,3,0,0,0,116,10,0, + 0,0,101,120,116,101,110,115,105,111,110,115,116,6,0,0, + 0,115,111,117,114,99,101,116,8,0,0,0,98,121,116,101, + 99,111,100,101,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,234,0,0,0,134,6,0,0,115,8,0,0, + 0,0,5,18,1,12,1,12,1,114,234,0,0,0,99,5, + 0,0,0,0,0,0,0,9,0,0,0,5,0,0,0,67, + 0,0,0,115,227,0,0,0,124,4,0,100,1,0,107,2, + 0,114,27,0,116,0,0,124,0,0,131,1,0,125,5,0, + 110,54,0,124,1,0,100,2,0,107,9,0,114,45,0,124, + 1,0,110,3,0,105,0,0,125,6,0,116,1,0,124,6, + 0,131,1,0,125,7,0,116,0,0,124,0,0,124,7,0, + 124,4,0,131,3,0,125,5,0,124,3,0,115,207,0,124, + 4,0,100,1,0,107,2,0,114,122,0,116,0,0,124,0, + 0,106,2,0,100,3,0,131,1,0,100,1,0,25,131,1, + 0,83,124,0,0,115,132,0,124,5,0,83,116,3,0,124, + 0,0,131,1,0,116,3,0,124,0,0,106,2,0,100,3, + 0,131,1,0,100,1,0,25,131,1,0,24,125,8,0,116, + 4,0,106,5,0,124,5,0,106,6,0,100,2,0,116,3, + 0,124,5,0,106,6,0,131,1,0,124,8,0,24,133,2, + 0,25,25,83,110,16,0,116,7,0,124,5,0,124,3,0, + 116,0,0,131,3,0,83,100,2,0,83,40,4,0,0,0, + 117,214,1,0,0,73,109,112,111,114,116,32,97,32,109,111, + 100,117,108,101,46,10,10,32,32,32,32,84,104,101,32,39, + 103,108,111,98,97,108,115,39,32,97,114,103,117,109,101,110, + 116,32,105,115,32,117,115,101,100,32,116,111,32,105,110,102, + 101,114,32,119,104,101,114,101,32,116,104,101,32,105,109,112, + 111,114,116,32,105,115,32,111,99,99,117,114,105,110,103,32, + 102,114,111,109,10,32,32,32,32,116,111,32,104,97,110,100, + 108,101,32,114,101,108,97,116,105,118,101,32,105,109,112,111, + 114,116,115,46,32,84,104,101,32,39,108,111,99,97,108,115, + 39,32,97,114,103,117,109,101,110,116,32,105,115,32,105,103, + 110,111,114,101,100,46,32,84,104,101,10,32,32,32,32,39, + 102,114,111,109,108,105,115,116,39,32,97,114,103,117,109,101, + 110,116,32,115,112,101,99,105,102,105,101,115,32,119,104,97, + 116,32,115,104,111,117,108,100,32,101,120,105,115,116,32,97, + 115,32,97,116,116,114,105,98,117,116,101,115,32,111,110,32, + 116,104,101,32,109,111,100,117,108,101,10,32,32,32,32,98, + 101,105,110,103,32,105,109,112,111,114,116,101,100,32,40,101, + 46,103,46,32,96,96,102,114,111,109,32,109,111,100,117,108, + 101,32,105,109,112,111,114,116,32,60,102,114,111,109,108,105, + 115,116,62,96,96,41,46,32,32,84,104,101,32,39,108,101, + 118,101,108,39,10,32,32,32,32,97,114,103,117,109,101,110, + 116,32,114,101,112,114,101,115,101,110,116,115,32,116,104,101, + 32,112,97,99,107,97,103,101,32,108,111,99,97,116,105,111, + 110,32,116,111,32,105,109,112,111,114,116,32,102,114,111,109, + 32,105,110,32,97,32,114,101,108,97,116,105,118,101,10,32, + 32,32,32,105,109,112,111,114,116,32,40,101,46,103,46,32, + 96,96,102,114,111,109,32,46,46,112,107,103,32,105,109,112, + 111,114,116,32,109,111,100,96,96,32,119,111,117,108,100,32, + 104,97,118,101,32,97,32,39,108,101,118,101,108,39,32,111, + 102,32,50,41,46,10,10,32,32,32,32,114,67,0,0,0, + 78,114,101,0,0,0,40,8,0,0,0,114,68,1,0,0, + 114,77,1,0,0,114,106,0,0,0,114,31,0,0,0,114, + 7,0,0,0,114,140,0,0,0,114,56,0,0,0,114,75, + 1,0,0,40,9,0,0,0,114,71,0,0,0,114,76,1, + 0,0,244,6,0,0,0,108,111,99,97,108,115,114,74,1, + 0,0,114,57,1,0,0,114,161,0,0,0,116,8,0,0, + 0,103,108,111,98,97,108,115,95,114,56,1,0,0,116,7, + 0,0,0,99,117,116,95,111,102,102,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,244,10,0,0,0,95,95, + 105,109,112,111,114,116,95,95,145,6,0,0,115,26,0,0, + 0,0,11,12,1,15,2,24,1,12,1,18,1,6,3,12, + 1,23,1,6,1,4,4,35,3,40,2,114,81,1,0,0, + 99,2,0,0,0,0,0,0,0,16,0,0,0,13,0,0, + 0,67,0,0,0,115,237,2,0,0,124,1,0,97,0,0, + 124,0,0,97,1,0,116,1,0,106,2,0,106,3,0,114, + 33,0,116,4,0,97,5,0,110,6,0,116,6,0,97,5, + 0,116,7,0,116,1,0,131,1,0,125,2,0,120,128,0, + 116,1,0,106,8,0,106,9,0,131,0,0,68,93,111,0, + 92,2,0,125,3,0,125,4,0,116,10,0,124,4,0,124, + 2,0,131,2,0,114,67,0,116,11,0,124,4,0,100,1, + 0,100,2,0,131,3,0,100,2,0,107,8,0,114,178,0, + 124,3,0,116,1,0,106,12,0,107,6,0,114,145,0,116, + 13,0,124,4,0,95,14,0,113,175,0,116,0,0,106,15, + 0,124,3,0,131,1,0,114,175,0,116,16,0,124,4,0, + 95,14,0,113,175,0,113,178,0,113,67,0,113,67,0,87, + 116,1,0,106,8,0,116,17,0,25,125,5,0,120,76,0, + 100,27,0,68,93,68,0,125,6,0,124,6,0,116,1,0, + 106,8,0,107,7,0,114,241,0,116,13,0,106,18,0,124, + 6,0,131,1,0,125,7,0,110,13,0,116,1,0,106,8, + 0,124,6,0,25,125,7,0,116,19,0,124,5,0,124,6, + 0,124,7,0,131,3,0,1,113,202,0,87,100,7,0,100, + 8,0,103,1,0,102,2,0,100,9,0,100,10,0,100,8, + 0,103,2,0,102,2,0,102,2,0,125,8,0,120,149,0, + 124,8,0,68,93,129,0,92,2,0,125,9,0,125,10,0, + 116,20,0,100,11,0,100,12,0,132,0,0,124,10,0,68, + 131,1,0,131,1,0,115,101,1,116,21,0,130,1,0,124, + 10,0,100,13,0,25,125,11,0,124,9,0,116,1,0,106, + 8,0,107,6,0,114,143,1,116,1,0,106,8,0,124,9, + 0,25,125,12,0,80,113,58,1,121,20,0,116,13,0,106, + 18,0,124,9,0,131,1,0,125,12,0,80,87,113,58,1, + 4,116,22,0,107,10,0,114,186,1,1,1,1,119,58,1, + 89,113,58,1,88,113,58,1,87,116,22,0,100,14,0,131, + 1,0,130,1,0,121,19,0,116,13,0,106,18,0,100,15, + 0,131,1,0,125,13,0,87,110,24,0,4,116,22,0,107, + 10,0,114,248,1,1,1,1,100,2,0,125,13,0,89,110, + 1,0,88,116,13,0,106,18,0,100,16,0,131,1,0,125, + 14,0,124,9,0,100,9,0,107,2,0,114,54,2,116,13, + 0,106,18,0,100,17,0,131,1,0,125,15,0,116,19,0, + 124,5,0,100,18,0,124,15,0,131,3,0,1,110,0,0, + 116,19,0,124,5,0,100,19,0,124,12,0,131,3,0,1, + 116,19,0,124,5,0,100,15,0,124,13,0,131,3,0,1, + 116,19,0,124,5,0,100,16,0,124,14,0,131,3,0,1, + 116,19,0,124,5,0,100,20,0,124,11,0,131,3,0,1, + 116,19,0,124,5,0,100,21,0,100,22,0,106,23,0,124, + 10,0,131,1,0,131,3,0,1,116,19,0,124,5,0,100, + 23,0,116,24,0,131,0,0,131,3,0,1,116,25,0,106, + 26,0,116,0,0,106,27,0,131,0,0,131,1,0,1,124, + 9,0,100,9,0,107,2,0,114,233,2,116,28,0,106,29, + 0,100,24,0,131,1,0,1,100,25,0,116,25,0,107,6, + 0,114,233,2,100,26,0,116,30,0,95,31,0,113,233,2, + 110,0,0,100,2,0,83,40,28,0,0,0,117,250,0,0, + 0,83,101,116,117,112,32,105,109,112,111,114,116,108,105,98, + 32,98,121,32,105,109,112,111,114,116,105,110,103,32,110,101, + 101,100,101,100,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,115,32,97,110,100,32,105,110,106,101,99,116, + 105,110,103,32,116,104,101,109,10,32,32,32,32,105,110,116, + 111,32,116,104,101,32,103,108,111,98,97,108,32,110,97,109, + 101,115,112,97,99,101,46,10,10,32,32,32,32,65,115,32, + 115,121,115,32,105,115,32,110,101,101,100,101,100,32,102,111, + 114,32,115,121,115,46,109,111,100,117,108,101,115,32,97,99, + 99,101,115,115,32,97,110,100,32,95,105,109,112,32,105,115, + 32,110,101,101,100,101,100,32,116,111,32,108,111,97,100,32, + 98,117,105,108,116,45,105,110,10,32,32,32,32,109,111,100, + 117,108,101,115,44,32,116,104,111,115,101,32,116,119,111,32, + 109,111,100,117,108,101,115,32,109,117,115,116,32,98,101,32, + 101,120,112,108,105,99,105,116,108,121,32,112,97,115,115,101, + 100,32,105,110,46,10,10,32,32,32,32,114,171,0,0,0, + 78,114,48,0,0,0,114,185,0,0,0,244,8,0,0,0, + 98,117,105,108,116,105,110,115,114,201,0,0,0,116,5,0, + 0,0,112,111,115,105,120,245,1,0,0,0,47,244,2,0, + 0,0,110,116,245,1,0,0,0,92,99,1,0,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,115,0,0,0,115, + 33,0,0,0,124,0,0,93,23,0,125,1,0,116,0,0, + 124,1,0,131,1,0,100,0,0,107,2,0,86,1,113,3, + 0,100,1,0,83,40,2,0,0,0,114,29,0,0,0,78, + 40,1,0,0,0,114,31,0,0,0,40,2,0,0,0,114, + 22,0,0,0,114,115,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,143,0,0,0,218,6,0, + 0,115,2,0,0,0,6,0,117,25,0,0,0,95,115,101, + 116,117,112,46,60,108,111,99,97,108,115,62,46,60,103,101, + 110,101,120,112,114,62,114,67,0,0,0,117,30,0,0,0, 105,109,112,111,114,116,108,105,98,32,114,101,113,117,105,114, - 101,115,32,112,111,115,105,120,32,111,114,32,110,116,117,7, - 0,0,0,95,116,104,114,101,97,100,117,8,0,0,0,95, - 119,101,97,107,114,101,102,117,6,0,0,0,119,105,110,114, - 101,103,117,7,0,0,0,95,119,105,110,114,101,103,117,3, - 0,0,0,95,111,115,117,8,0,0,0,112,97,116,104,95, - 115,101,112,117,15,0,0,0,112,97,116,104,95,115,101,112, - 97,114,97,116,111,114,115,117,11,0,0,0,95,114,101,108, - 97,120,95,99,97,115,101,117,4,0,0,0,46,112,121,119, - 117,6,0,0,0,95,100,46,112,121,100,78,40,4,0,0, - 0,117,3,0,0,0,95,105,111,117,9,0,0,0,95,119, - 97,114,110,105,110,103,115,117,8,0,0,0,98,117,105,108, - 116,105,110,115,117,7,0,0,0,109,97,114,115,104,97,108, - 84,40,35,0,0,0,117,4,0,0,0,95,105,109,112,117, - 3,0,0,0,115,121,115,117,5,0,0,0,102,108,97,103, - 115,117,8,0,0,0,111,112,116,105,109,105,122,101,117,27, - 0,0,0,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,117,17, - 0,0,0,66,89,84,69,67,79,68,69,95,83,85,70,70, - 73,88,69,83,117,23,0,0,0,68,69,66,85,71,95,66, - 89,84,69,67,79,68,69,95,83,85,70,70,73,88,69,83, - 117,4,0,0,0,116,121,112,101,117,7,0,0,0,109,111, - 100,117,108,101,115,117,5,0,0,0,105,116,101,109,115,117, - 10,0,0,0,105,115,105,110,115,116,97,110,99,101,117,7, - 0,0,0,104,97,115,97,116,116,114,117,20,0,0,0,98, - 117,105,108,116,105,110,95,109,111,100,117,108,101,95,110,97, - 109,101,115,117,15,0,0,0,66,117,105,108,116,105,110,73, - 109,112,111,114,116,101,114,117,10,0,0,0,95,95,108,111, - 97,100,101,114,95,95,117,9,0,0,0,105,115,95,102,114, - 111,122,101,110,117,14,0,0,0,70,114,111,122,101,110,73, - 109,112,111,114,116,101,114,117,8,0,0,0,95,95,110,97, - 109,101,95,95,117,11,0,0,0,108,111,97,100,95,109,111, - 100,117,108,101,117,7,0,0,0,115,101,116,97,116,116,114, - 117,3,0,0,0,97,108,108,117,14,0,0,0,65,115,115, - 101,114,116,105,111,110,69,114,114,111,114,117,7,0,0,0, - 118,101,114,115,105,111,110,117,11,0,0,0,73,109,112,111, - 114,116,69,114,114,111,114,117,4,0,0,0,78,111,110,101, - 117,3,0,0,0,115,101,116,117,16,0,0,0,95,109,97, - 107,101,95,114,101,108,97,120,95,99,97,115,101,117,18,0, - 0,0,69,88,84,69,78,83,73,79,78,95,83,85,70,70, - 73,88,69,83,117,6,0,0,0,101,120,116,101,110,100,117, - 18,0,0,0,101,120,116,101,110,115,105,111,110,95,115,117, - 102,102,105,120,101,115,117,15,0,0,0,83,79,85,82,67, - 69,95,83,85,70,70,73,88,69,83,117,6,0,0,0,97, - 112,112,101,110,100,117,4,0,0,0,84,114,117,101,117,21, - 0,0,0,87,105,110,100,111,119,115,82,101,103,105,115,116, - 114,121,70,105,110,100,101,114,117,11,0,0,0,68,69,66, - 85,71,95,66,85,73,76,68,40,16,0,0,0,117,10,0, - 0,0,115,121,115,95,109,111,100,117,108,101,117,11,0,0, - 0,95,105,109,112,95,109,111,100,117,108,101,117,11,0,0, - 0,109,111,100,117,108,101,95,116,121,112,101,117,4,0,0, - 0,110,97,109,101,117,6,0,0,0,109,111,100,117,108,101, - 117,11,0,0,0,115,101,108,102,95,109,111,100,117,108,101, - 117,12,0,0,0,98,117,105,108,116,105,110,95,110,97,109, - 101,117,14,0,0,0,98,117,105,108,116,105,110,95,109,111, - 100,117,108,101,117,10,0,0,0,111,115,95,100,101,116,97, - 105,108,115,117,10,0,0,0,98,117,105,108,116,105,110,95, - 111,115,117,15,0,0,0,112,97,116,104,95,115,101,112,97, - 114,97,116,111,114,115,117,8,0,0,0,112,97,116,104,95, - 115,101,112,117,9,0,0,0,111,115,95,109,111,100,117,108, - 101,117,13,0,0,0,116,104,114,101,97,100,95,109,111,100, - 117,108,101,117,14,0,0,0,119,101,97,107,114,101,102,95, - 109,111,100,117,108,101,117,13,0,0,0,119,105,110,114,101, - 103,95,109,111,100,117,108,101,40,0,0,0,0,40,0,0, - 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, - 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, - 114,97,112,62,117,6,0,0,0,95,115,101,116,117,112,154, - 6,0,0,115,106,0,0,0,0,9,6,1,6,2,12,1, - 9,2,6,2,12,1,28,1,15,1,15,1,15,1,12,1, - 15,1,22,2,13,1,13,1,15,1,18,2,13,1,20,2, - 48,1,19,2,31,1,10,1,15,1,13,1,4,2,3,1, - 15,2,27,1,13,1,5,1,13,1,12,2,12,2,3,1, - 19,1,13,2,11,1,15,2,12,1,15,1,19,2,16,1, - 16,1,16,1,16,1,22,2,19,1,19,1,12,1,13,1, - 12,1,117,6,0,0,0,95,115,101,116,117,112,99,2,0, - 0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, - 0,0,115,136,0,0,0,116,0,0,124,0,0,124,1,0, - 131,2,0,1,116,1,0,131,0,0,125,2,0,116,2,0, - 106,3,0,106,4,0,116,5,0,106,6,0,124,2,0,140, - 0,0,103,1,0,131,1,0,1,116,2,0,106,7,0,106, - 8,0,116,9,0,131,1,0,1,116,2,0,106,7,0,106, - 8,0,116,10,0,131,1,0,1,116,11,0,106,12,0,100, - 1,0,107,2,0,114,116,0,116,2,0,106,7,0,106,8, - 0,116,13,0,131,1,0,1,110,0,0,116,2,0,106,7, - 0,106,8,0,116,14,0,131,1,0,1,100,2,0,83,40, - 3,0,0,0,117,50,0,0,0,73,110,115,116,97,108,108, - 32,105,109,112,111,114,116,108,105,98,32,97,115,32,116,104, - 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 32,111,102,32,105,109,112,111,114,116,46,117,2,0,0,0, - 110,116,78,40,15,0,0,0,117,6,0,0,0,95,115,101, - 116,117,112,117,27,0,0,0,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,117,3,0,0,0,115,121,115,117,10,0,0,0, - 112,97,116,104,95,104,111,111,107,115,117,6,0,0,0,101, - 120,116,101,110,100,117,10,0,0,0,70,105,108,101,70,105, - 110,100,101,114,117,9,0,0,0,112,97,116,104,95,104,111, - 111,107,117,9,0,0,0,109,101,116,97,95,112,97,116,104, - 117,6,0,0,0,97,112,112,101,110,100,117,15,0,0,0, - 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,117, - 14,0,0,0,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,117,3,0,0,0,95,111,115,117,8,0,0,0,95, - 95,110,97,109,101,95,95,117,21,0,0,0,87,105,110,100, - 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101, - 114,117,10,0,0,0,80,97,116,104,70,105,110,100,101,114, - 40,3,0,0,0,117,10,0,0,0,115,121,115,95,109,111, - 100,117,108,101,117,11,0,0,0,95,105,109,112,95,109,111, - 100,117,108,101,117,17,0,0,0,115,117,112,112,111,114,116, - 101,100,95,108,111,97,100,101,114,115,40,0,0,0,0,40, - 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,62,117,8,0,0,0,95,105,110,115,116, - 97,108,108,233,6,0,0,115,16,0,0,0,0,2,13,1, - 9,1,28,1,16,1,16,1,15,1,19,1,117,8,0,0, - 0,95,105,110,115,116,97,108,108,78,40,3,0,0,0,117, - 3,0,0,0,119,105,110,117,6,0,0,0,99,121,103,119, - 105,110,117,6,0,0,0,100,97,114,119,105,110,40,74,0, - 0,0,117,7,0,0,0,95,95,100,111,99,95,95,117,27, - 0,0,0,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,117,16, - 0,0,0,95,109,97,107,101,95,114,101,108,97,120,95,99, - 97,115,101,117,7,0,0,0,95,119,95,108,111,110,103,117, - 7,0,0,0,95,114,95,108,111,110,103,117,10,0,0,0, - 95,112,97,116,104,95,106,111,105,110,117,11,0,0,0,95, - 112,97,116,104,95,115,112,108,105,116,117,18,0,0,0,95, - 112,97,116,104,95,105,115,95,109,111,100,101,95,116,121,112, - 101,117,12,0,0,0,95,112,97,116,104,95,105,115,102,105, - 108,101,117,11,0,0,0,95,112,97,116,104,95,105,115,100, - 105,114,117,13,0,0,0,95,119,114,105,116,101,95,97,116, - 111,109,105,99,117,5,0,0,0,95,119,114,97,112,117,4, - 0,0,0,116,121,112,101,117,8,0,0,0,95,95,99,111, - 100,101,95,95,117,10,0,0,0,95,99,111,100,101,95,116, - 121,112,101,117,10,0,0,0,110,101,119,95,109,111,100,117, - 108,101,117,13,0,0,0,95,109,111,100,117,108,101,95,108, - 111,99,107,115,117,12,0,0,0,95,98,108,111,99,107,105, - 110,103,95,111,110,117,12,0,0,0,82,117,110,116,105,109, - 101,69,114,114,111,114,117,14,0,0,0,95,68,101,97,100, - 108,111,99,107,69,114,114,111,114,117,11,0,0,0,95,77, - 111,100,117,108,101,76,111,99,107,117,16,0,0,0,95,68, - 117,109,109,121,77,111,100,117,108,101,76,111,99,107,117,16, - 0,0,0,95,103,101,116,95,109,111,100,117,108,101,95,108, - 111,99,107,117,19,0,0,0,95,108,111,99,107,95,117,110, - 108,111,99,107,95,109,111,100,117,108,101,117,25,0,0,0, - 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,117,3,0,0,0,111,114, - 100,117,17,0,0,0,95,82,65,87,95,77,65,71,73,67, - 95,78,85,77,66,69,82,117,5,0,0,0,98,121,116,101, - 115,117,5,0,0,0,114,97,110,103,101,117,12,0,0,0, - 95,77,65,71,73,67,95,66,89,84,69,83,117,8,0,0, - 0,95,80,89,67,65,67,72,69,117,15,0,0,0,83,79, - 85,82,67,69,95,83,85,70,70,73,88,69,83,117,23,0, - 0,0,68,69,66,85,71,95,66,89,84,69,67,79,68,69, - 95,83,85,70,70,73,88,69,83,117,27,0,0,0,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,117,4,0,0,0,78,111, - 110,101,117,17,0,0,0,99,97,99,104,101,95,102,114,111, - 109,95,115,111,117,114,99,101,117,17,0,0,0,115,111,117, - 114,99,101,95,102,114,111,109,95,99,97,99,104,101,117,15, - 0,0,0,95,103,101,116,95,115,111,117,114,99,101,102,105, - 108,101,117,16,0,0,0,95,118,101,114,98,111,115,101,95, - 109,101,115,115,97,103,101,117,11,0,0,0,115,101,116,95, - 112,97,99,107,97,103,101,117,10,0,0,0,115,101,116,95, - 108,111,97,100,101,114,117,17,0,0,0,109,111,100,117,108, - 101,95,102,111,114,95,108,111,97,100,101,114,117,11,0,0, - 0,95,99,104,101,99,107,95,110,97,109,101,117,17,0,0, - 0,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, - 105,110,117,16,0,0,0,95,114,101,113,117,105,114,101,115, - 95,102,114,111,122,101,110,117,17,0,0,0,95,102,105,110, - 100,95,109,111,100,117,108,101,95,115,104,105,109,117,15,0, - 0,0,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,117,14,0,0,0,70,114,111,122,101,110,73,109,112,111, - 114,116,101,114,117,21,0,0,0,87,105,110,100,111,119,115, - 82,101,103,105,115,116,114,121,70,105,110,100,101,114,117,13, - 0,0,0,95,76,111,97,100,101,114,66,97,115,105,99,115, - 117,12,0,0,0,83,111,117,114,99,101,76,111,97,100,101, - 114,117,10,0,0,0,70,105,108,101,76,111,97,100,101,114, - 117,16,0,0,0,83,111,117,114,99,101,70,105,108,101,76, - 111,97,100,101,114,117,20,0,0,0,83,111,117,114,99,101, - 108,101,115,115,70,105,108,101,76,111,97,100,101,114,117,18, - 0,0,0,69,88,84,69,78,83,73,79,78,95,83,85,70, - 70,73,88,69,83,117,19,0,0,0,69,120,116,101,110,115, - 105,111,110,70,105,108,101,76,111,97,100,101,114,117,14,0, - 0,0,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 117,15,0,0,0,78,97,109,101,115,112,97,99,101,76,111, - 97,100,101,114,117,10,0,0,0,80,97,116,104,70,105,110, - 100,101,114,117,10,0,0,0,70,105,108,101,70,105,110,100, - 101,114,117,18,0,0,0,95,73,109,112,111,114,116,76,111, - 99,107,67,111,110,116,101,120,116,117,13,0,0,0,95,114, - 101,115,111,108,118,101,95,110,97,109,101,117,12,0,0,0, - 95,102,105,110,100,95,109,111,100,117,108,101,117,13,0,0, - 0,95,115,97,110,105,116,121,95,99,104,101,99,107,117,8, - 0,0,0,95,69,82,82,95,77,83,71,117,23,0,0,0, - 95,102,105,110,100,95,97,110,100,95,108,111,97,100,95,117, - 110,108,111,99,107,101,100,117,14,0,0,0,95,102,105,110, - 100,95,97,110,100,95,108,111,97,100,117,11,0,0,0,95, - 103,99,100,95,105,109,112,111,114,116,117,16,0,0,0,95, - 104,97,110,100,108,101,95,102,114,111,109,108,105,115,116,117, - 17,0,0,0,95,99,97,108,99,95,95,95,112,97,99,107, - 97,103,101,95,95,117,27,0,0,0,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,117,10,0,0,0,95,95,105,109,112,111, - 114,116,95,95,117,6,0,0,0,95,115,101,116,117,112,117, - 8,0,0,0,95,105,110,115,116,97,108,108,40,0,0,0, - 0,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, - 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, - 98,46,95,98,111,111,116,115,116,114,97,112,62,117,8,0, - 0,0,60,109,111,100,117,108,101,62,8,0,0,0,115,132, - 0,0,0,6,21,6,3,12,13,12,16,12,13,12,12,12, - 12,12,10,12,6,12,7,15,22,12,8,15,3,12,12,6, - 2,6,3,22,4,19,68,19,23,12,19,12,20,12,100,34, - 1,37,2,6,2,9,2,9,1,9,2,15,27,12,23,12, - 19,18,8,12,13,12,11,12,55,12,18,12,11,12,11,12, - 17,19,57,19,54,19,50,19,83,22,134,19,29,25,49,25, - 25,6,3,19,45,19,55,19,18,19,91,19,128,19,13,12, - 9,12,17,12,17,6,2,12,50,12,13,18,24,12,34,12, - 15,12,11,24,36,12,79, + 101,115,32,112,111,115,105,120,32,111,114,32,110,116,114,68, + 0,0,0,114,92,0,0,0,116,6,0,0,0,119,105,110, + 114,101,103,114,225,0,0,0,114,3,0,0,0,114,25,0, + 0,0,114,21,0,0,0,114,30,0,0,0,114,6,0,0, + 0,117,4,0,0,0,46,112,121,119,117,6,0,0,0,95, + 100,46,112,121,100,84,40,4,0,0,0,117,3,0,0,0, + 95,105,111,117,9,0,0,0,95,119,97,114,110,105,110,103, + 115,117,8,0,0,0,98,117,105,108,116,105,110,115,117,7, + 0,0,0,109,97,114,115,104,97,108,40,32,0,0,0,114, + 94,0,0,0,114,7,0,0,0,114,102,0,0,0,114,103, + 0,0,0,114,105,0,0,0,114,79,1,0,0,114,104,0, + 0,0,114,152,0,0,0,114,140,0,0,0,244,5,0,0, + 0,105,116,101,109,115,114,202,0,0,0,114,61,0,0,0, + 114,177,0,0,0,114,214,0,0,0,114,171,0,0,0,114, + 181,0,0,0,114,222,0,0,0,114,56,0,0,0,114,218, + 0,0,0,114,60,0,0,0,244,3,0,0,0,97,108,108, + 114,86,0,0,0,114,157,0,0,0,114,26,0,0,0,114, + 11,0,0,0,114,11,1,0,0,114,207,0,0,0,114,78, + 1,0,0,114,119,0,0,0,114,165,0,0,0,114,224,0, + 0,0,114,228,0,0,0,40,16,0,0,0,244,10,0,0, + 0,115,121,115,95,109,111,100,117,108,101,244,11,0,0,0, + 95,105,109,112,95,109,111,100,117,108,101,116,11,0,0,0, + 109,111,100,117,108,101,95,116,121,112,101,114,71,0,0,0, + 114,161,0,0,0,116,11,0,0,0,115,101,108,102,95,109, + 111,100,117,108,101,116,12,0,0,0,98,117,105,108,116,105, + 110,95,110,97,109,101,116,14,0,0,0,98,117,105,108,116, + 105,110,95,109,111,100,117,108,101,116,10,0,0,0,111,115, + 95,100,101,116,97,105,108,115,116,10,0,0,0,98,117,105, + 108,116,105,110,95,111,115,114,21,0,0,0,114,25,0,0, + 0,116,9,0,0,0,111,115,95,109,111,100,117,108,101,116, + 13,0,0,0,116,104,114,101,97,100,95,109,111,100,117,108, + 101,116,14,0,0,0,119,101,97,107,114,101,102,95,109,111, + 100,117,108,101,116,13,0,0,0,119,105,110,114,101,103,95, + 109,111,100,117,108,101,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,244,6,0,0,0,95,115,101,116,117,112, + 181,6,0,0,115,102,0,0,0,0,9,6,1,6,2,12, + 1,9,2,6,2,12,1,28,1,15,1,24,1,15,1,12, + 1,15,1,22,2,13,1,13,1,15,1,18,2,13,1,20, + 2,33,1,19,2,31,1,10,1,15,1,13,1,4,2,3, + 1,15,1,5,1,13,1,12,2,12,2,3,1,19,1,13, + 2,11,1,15,2,12,1,15,1,19,2,16,1,16,1,16, + 1,16,1,25,2,19,1,19,1,12,1,13,1,12,1,114, + 90,1,0,0,99,2,0,0,0,0,0,0,0,3,0,0, + 0,3,0,0,0,67,0,0,0,115,136,0,0,0,116,0, + 0,124,0,0,124,1,0,131,2,0,1,116,1,0,131,0, + 0,125,2,0,116,2,0,106,3,0,106,4,0,116,5,0, + 106,6,0,124,2,0,140,0,0,103,1,0,131,1,0,1, + 116,2,0,106,7,0,106,8,0,116,9,0,131,1,0,1, + 116,2,0,106,7,0,106,8,0,116,10,0,131,1,0,1, + 116,11,0,106,12,0,100,1,0,107,2,0,114,116,0,116, + 2,0,106,7,0,106,8,0,116,13,0,131,1,0,1,110, + 0,0,116,2,0,106,7,0,106,8,0,116,14,0,131,1, + 0,1,100,2,0,83,40,3,0,0,0,117,50,0,0,0, + 73,110,115,116,97,108,108,32,105,109,112,111,114,116,108,105, + 98,32,97,115,32,116,104,101,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,111,102,32,105,109,112,111,114, + 116,46,114,84,1,0,0,78,40,15,0,0,0,114,90,1, + 0,0,114,234,0,0,0,114,7,0,0,0,114,32,1,0, + 0,114,207,0,0,0,114,39,1,0,0,114,53,1,0,0, + 114,59,1,0,0,114,165,0,0,0,114,214,0,0,0,114, + 222,0,0,0,114,3,0,0,0,114,56,0,0,0,114,224, + 0,0,0,114,27,1,0,0,40,3,0,0,0,114,88,1, + 0,0,114,89,1,0,0,116,17,0,0,0,115,117,112,112, + 111,114,116,101,100,95,108,111,97,100,101,114,115,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,244,8,0,0, + 0,95,105,110,115,116,97,108,108,1,7,0,0,115,16,0, + 0,0,0,2,13,1,9,1,28,1,16,1,16,1,15,1, + 19,1,114,91,1,0,0,40,3,0,0,0,117,3,0,0, + 0,119,105,110,114,1,0,0,0,114,2,0,0,0,40,82, + 0,0,0,114,58,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,17,0,0,0,114,19,0,0,0,114,28,0,0, + 0,114,38,0,0,0,114,43,0,0,0,114,44,0,0,0, + 114,45,0,0,0,114,54,0,0,0,114,64,0,0,0,114, + 152,0,0,0,244,8,0,0,0,95,95,99,111,100,101,95, + 95,114,203,0,0,0,114,89,0,0,0,114,78,0,0,0, + 114,85,0,0,0,114,65,0,0,0,114,66,0,0,0,114, + 88,0,0,0,114,93,0,0,0,114,96,0,0,0,114,99, + 0,0,0,114,15,0,0,0,114,195,0,0,0,114,14,0, + 0,0,114,18,0,0,0,116,17,0,0,0,95,82,65,87, + 95,77,65,71,73,67,95,78,85,77,66,69,82,114,110,0, + 0,0,114,119,0,0,0,114,104,0,0,0,114,105,0,0, + 0,114,117,0,0,0,114,120,0,0,0,114,127,0,0,0, + 114,129,0,0,0,114,137,0,0,0,114,138,0,0,0,114, + 146,0,0,0,114,155,0,0,0,114,162,0,0,0,114,166, + 0,0,0,114,170,0,0,0,114,173,0,0,0,114,176,0, + 0,0,114,180,0,0,0,114,183,0,0,0,114,190,0,0, + 0,114,200,0,0,0,114,205,0,0,0,114,208,0,0,0, + 114,213,0,0,0,114,214,0,0,0,114,222,0,0,0,114, + 224,0,0,0,114,237,0,0,0,114,241,0,0,0,114,0, + 1,0,0,114,2,1,0,0,114,7,1,0,0,114,11,1, + 0,0,114,8,1,0,0,114,12,1,0,0,114,26,1,0, + 0,114,27,1,0,0,114,39,1,0,0,114,54,1,0,0, + 114,58,1,0,0,114,60,1,0,0,114,63,1,0,0,114, + 73,1,0,0,114,64,1,0,0,114,66,1,0,0,114,67, + 1,0,0,114,68,1,0,0,114,75,1,0,0,114,77,1, + 0,0,114,234,0,0,0,114,81,1,0,0,114,90,1,0, + 0,114,91,1,0,0,114,4,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,244,8,0,0,0,60, + 109,111,100,117,108,101,62,8,0,0,0,115,150,0,0,0, + 6,17,6,3,12,12,12,5,12,5,12,6,12,12,12,10, + 12,6,12,7,15,22,12,8,15,6,6,2,6,3,22,4, + 19,68,19,23,12,19,12,20,12,111,22,1,18,2,6,2, + 9,2,9,1,9,2,15,27,12,23,12,19,12,12,18,8, + 19,17,22,42,18,9,12,15,12,11,12,13,12,11,12,18, + 12,11,12,11,12,13,21,55,21,12,18,10,12,14,19,52, + 19,49,19,50,19,41,22,110,19,29,25,43,25,20,6,3, + 19,40,19,55,19,32,19,91,19,128,19,13,12,9,12,17, + 12,17,6,1,10,2,12,46,12,13,18,24,12,32,12,15, + 12,11,24,36,12,76, }; diff --git a/Python/marshal.c b/Python/marshal.c index a0e527f..1997e19 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -1,8 +1,10 @@ /* Write Python objects to files and read them back. - This is intended for writing and reading compiled Python code only; - a true persistent storage facility would be much harder, since - it would have to take circular links and sharing into account. */ + This is primarily intended for writing and reading compiled Python code, + even though dicts, lists, sets and frozensets, not commonly seen in + code objects, are supported. + Version 3 of this protocol properly supports circular links + and sharing. */ #define PY_SSIZE_T_CLEAN @@ -31,16 +33,14 @@ #define TYPE_STOPITER 'S' #define TYPE_ELLIPSIS '.' #define TYPE_INT 'i' -/* TYPE_INT64 is deprecated. It is not - generated anymore, and support for reading it - will be removed in Python 3.4. */ -#define TYPE_INT64 'I' #define TYPE_FLOAT 'f' #define TYPE_BINARY_FLOAT 'g' #define TYPE_COMPLEX 'x' #define TYPE_BINARY_COMPLEX 'y' #define TYPE_LONG 'l' #define TYPE_STRING 's' +#define TYPE_INTERNED 't' +#define TYPE_REF 'r' #define TYPE_TUPLE '(' #define TYPE_LIST '[' #define TYPE_DICT '{' @@ -49,6 +49,7 @@ #define TYPE_UNKNOWN '?' #define TYPE_SET '<' #define TYPE_FROZENSET '>' +#define FLAG_REF '\x80' /* with a type, add obj to index */ #define WFERR_OK 0 #define WFERR_UNMARSHALLABLE 1 @@ -65,6 +66,7 @@ typedef struct { PyObject *current_filename; char *ptr; char *end; + PyObject *refs; /* dict on marshal, list on unmarshal */ int version; } WFILE; @@ -158,13 +160,17 @@ w_pstring(const char *s, Py_ssize_t n, WFILE *p) #endif #define PyLong_MARSHAL_RATIO (PyLong_SHIFT / PyLong_MARSHAL_SHIFT) +#define W_TYPE(t, p) do { \ + w_byte((t) | flag, (p)); \ +} while(0) + static void -w_PyLong(const PyLongObject *ob, WFILE *p) +w_PyLong(const PyLongObject *ob, char flag, WFILE *p) { Py_ssize_t i, j, n, l; digit d; - w_byte(TYPE_LONG, p); + W_TYPE(TYPE_LONG, p); if (Py_SIZE(ob) == 0) { w_long((long)0, p); return; @@ -201,10 +207,64 @@ w_PyLong(const PyLongObject *ob, WFILE *p) } while (d != 0); } +static int +w_ref(PyObject *v, char *flag, WFILE *p) +{ + PyObject *id; + PyObject *idx; + + if (p->version < 3 || p->refs == NULL) + return 0; /* not writing object references */ + + /* if it has only one reference, it definitely isn't shared */ + if (Py_REFCNT(v) == 1) + return 0; + + id = PyLong_FromVoidPtr((void*)v); + if (id == NULL) + goto err; + idx = PyDict_GetItem(p->refs, id); + if (idx != NULL) { + /* write the reference index to the stream */ + long w = PyLong_AsLong(idx); + Py_DECREF(id); + if (w == -1 && PyErr_Occurred()) { + goto err; + } + /* we don't store "long" indices in the dict */ + assert(0 <= w && w <= 0x7fffffff); + w_byte(TYPE_REF, p); + w_long(w, p); + return 1; + } else { + int ok; + Py_ssize_t s = PyDict_Size(p->refs); + /* we don't support long indices */ + if (s >= 0x7fffffff) { + PyErr_SetString(PyExc_ValueError, "too many objects"); + goto err; + } + idx = PyLong_FromSsize_t(s); + ok = idx && PyDict_SetItem(p->refs, id, idx) == 0; + Py_DECREF(id); + Py_XDECREF(idx); + if (!ok) + goto err; + *flag |= FLAG_REF; + return 0; + } +err: + p->error = WFERR_UNMARSHALLABLE; + return 1; +} + +static void +w_complex_object(PyObject *v, char flag, WFILE *p); + static void w_object(PyObject *v, WFILE *p) { - Py_ssize_t i, n; + char flag = '\0'; p->depth++; @@ -229,24 +289,35 @@ w_object(PyObject *v, WFILE *p) else if (v == Py_True) { w_byte(TYPE_TRUE, p); } - else if (PyLong_CheckExact(v)) { + else if (!w_ref(v, &flag, p)) + w_complex_object(v, flag, p); + + p->depth--; +} + +static void +w_complex_object(PyObject *v, char flag, WFILE *p) +{ + Py_ssize_t i, n; + + if (PyLong_CheckExact(v)) { long x = PyLong_AsLong(v); if ((x == -1) && PyErr_Occurred()) { PyLongObject *ob = (PyLongObject *)v; PyErr_Clear(); - w_PyLong(ob, p); + w_PyLong(ob, flag, p); } else { #if SIZEOF_LONG > 4 long y = Py_ARITHMETIC_RIGHT_SHIFT(long, x, 31); if (y && y != -1) { /* Too large for TYPE_INT */ - w_PyLong((PyLongObject*)v, p); + w_PyLong((PyLongObject*)v, flag, p); } else #endif { - w_byte(TYPE_INT, p); + W_TYPE(TYPE_INT, p); w_long(x, p); } } @@ -259,7 +330,7 @@ w_object(PyObject *v, WFILE *p) p->error = WFERR_UNMARSHALLABLE; return; } - w_byte(TYPE_BINARY_FLOAT, p); + W_TYPE(TYPE_BINARY_FLOAT, p); w_string((char*)buf, 8, p); } else { @@ -270,7 +341,7 @@ w_object(PyObject *v, WFILE *p) return; } n = strlen(buf); - w_byte(TYPE_FLOAT, p); + W_TYPE(TYPE_FLOAT, p); w_byte((int)n, p); w_string(buf, n, p); PyMem_Free(buf); @@ -284,7 +355,7 @@ w_object(PyObject *v, WFILE *p) p->error = WFERR_UNMARSHALLABLE; return; } - w_byte(TYPE_BINARY_COMPLEX, p); + W_TYPE(TYPE_BINARY_COMPLEX, p); w_string((char*)buf, 8, p); if (_PyFloat_Pack8(PyComplex_ImagAsDouble(v), buf, 1) < 0) { @@ -295,7 +366,7 @@ w_object(PyObject *v, WFILE *p) } else { char *buf; - w_byte(TYPE_COMPLEX, p); + W_TYPE(TYPE_COMPLEX, p); buf = PyOS_double_to_string(PyComplex_RealAsDouble(v), 'g', 17, 0, NULL); if (!buf) { @@ -319,7 +390,7 @@ w_object(PyObject *v, WFILE *p) } } else if (PyBytes_CheckExact(v)) { - w_byte(TYPE_STRING, p); + W_TYPE(TYPE_STRING, p); w_pstring(PyBytes_AS_STRING(v), PyBytes_GET_SIZE(v), p); } else if (PyUnicode_CheckExact(v)) { @@ -330,12 +401,15 @@ w_object(PyObject *v, WFILE *p) p->error = WFERR_UNMARSHALLABLE; return; } - w_byte(TYPE_UNICODE, p); + if (p->version >= 3 && PyUnicode_CHECK_INTERNED(v)) + W_TYPE(TYPE_INTERNED, p); + else + W_TYPE(TYPE_UNICODE, p); w_pstring(PyBytes_AS_STRING(utf8), PyBytes_GET_SIZE(utf8), p); Py_DECREF(utf8); } else if (PyTuple_CheckExact(v)) { - w_byte(TYPE_TUPLE, p); + W_TYPE(TYPE_TUPLE, p); n = PyTuple_Size(v); W_SIZE(n, p); for (i = 0; i < n; i++) { @@ -343,7 +417,7 @@ w_object(PyObject *v, WFILE *p) } } else if (PyList_CheckExact(v)) { - w_byte(TYPE_LIST, p); + W_TYPE(TYPE_LIST, p); n = PyList_GET_SIZE(v); W_SIZE(n, p); for (i = 0; i < n; i++) { @@ -353,7 +427,7 @@ w_object(PyObject *v, WFILE *p) else if (PyDict_CheckExact(v)) { Py_ssize_t pos; PyObject *key, *value; - w_byte(TYPE_DICT, p); + W_TYPE(TYPE_DICT, p); /* This one is NULL object terminated! */ pos = 0; while (PyDict_Next(v, &pos, &key, &value)) { @@ -366,9 +440,9 @@ w_object(PyObject *v, WFILE *p) PyObject *value, *it; if (PyObject_TypeCheck(v, &PySet_Type)) - w_byte(TYPE_SET, p); + W_TYPE(TYPE_SET, p); else - w_byte(TYPE_FROZENSET, p); + W_TYPE(TYPE_FROZENSET, p); n = PyObject_Size(v); if (n == -1) { p->depth--; @@ -395,7 +469,7 @@ w_object(PyObject *v, WFILE *p) } else if (PyCode_Check(v)) { PyCodeObject *co = (PyCodeObject *)v; - w_byte(TYPE_CODE, p); + W_TYPE(TYPE_CODE, p); w_long(co->co_argcount, p); w_long(co->co_kwonlyargcount, p); w_long(co->co_nlocals, p); @@ -421,15 +495,14 @@ w_object(PyObject *v, WFILE *p) p->error = WFERR_UNMARSHALLABLE; return; } - w_byte(TYPE_STRING, p); + W_TYPE(TYPE_STRING, p); w_pstring(view.buf, view.len, p); PyBuffer_Release(&view); } else { - w_byte(TYPE_UNKNOWN, p); + W_TYPE(TYPE_UNKNOWN, p); p->error = WFERR_UNMARSHALLABLE; } - p->depth--; } /* version currently has no effect for writing longs. */ @@ -440,6 +513,7 @@ PyMarshal_WriteLongToFile(long x, FILE *fp, int version) wf.fp = fp; wf.error = WFERR_OK; wf.depth = 0; + wf.refs = NULL; wf.version = version; w_long(x, &wf); } @@ -451,8 +525,14 @@ PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version) wf.fp = fp; wf.error = WFERR_OK; wf.depth = 0; + if (version >= 3) { + if ((wf.refs = PyDict_New()) == NULL) + return; /* caller mush check PyErr_Occurred() */ + } else + wf.refs = NULL; wf.version = version; w_object(x, &wf); + Py_XDECREF(wf.refs); } typedef WFILE RFILE; /* Same struct with different invariants */ @@ -488,7 +568,7 @@ r_string(char *s, Py_ssize_t n, RFILE *p) data->ob_type->tp_name); } else { - read = PyBytes_GET_SIZE(data); + read = (int)PyBytes_GET_SIZE(data); if (read > 0) { if (read > n) { PyErr_Format(PyExc_ValueError, @@ -562,42 +642,6 @@ r_long(RFILE *p) return x; } -/* r_long64 deals with the TYPE_INT64 code. On a machine with - sizeof(long) > 4, it returns a Python int object, else a Python long - object. Note that w_long64 writes out TYPE_INT if 32 bits is enough, - so there's no inefficiency here in returning a PyLong on 32-bit boxes - for everything written via TYPE_INT64 (i.e., if an int is written via - TYPE_INT64, it *needs* more than 32 bits). -*/ -static PyObject * -r_long64(RFILE *p) -{ - PyObject *result = NULL; - long lo4 = r_long(p); - long hi4 = r_long(p); - - if (!PyErr_Occurred()) { -#if SIZEOF_LONG > 4 - long x = (hi4 << 32) | (lo4 & 0xFFFFFFFFL); - result = PyLong_FromLong(x); -#else - unsigned char buf[8]; - int one = 1; - int is_little_endian = (int)*(char*)&one; - if (is_little_endian) { - memcpy(buf, &lo4, 4); - memcpy(buf+4, &hi4, 4); - } - else { - memcpy(buf, &hi4, 4); - memcpy(buf+4, &lo4, 4); - } - result = _PyLong_FromByteArray(buf, 8, is_little_endian, 1); -#endif - } - return result; -} - static PyObject * r_PyLong(RFILE *p) { @@ -667,6 +711,62 @@ r_PyLong(RFILE *p) return NULL; } +/* allocate the reflist index for a new object. Return -1 on failure */ +static Py_ssize_t +r_ref_reserve(int flag, RFILE *p) +{ + if (flag) { /* currently only FLAG_REF is defined */ + Py_ssize_t idx = PyList_Size(p->refs); + if (idx < 0) + return -1; + if (idx >= 0x7ffffffe) { + PyErr_SetString(PyExc_ValueError, "bad marshal data (index list too large)"); + return -1; + } + if (PyList_Append(p->refs, Py_None) < 0) + return -1; + return idx; + } else + return 0; +} + +/* insert the new object 'o' to the reflist at previously + * allocated index 'idx'. + * 'o' can be NULL, in which case nothing is done. + * if 'o' was non-NULL, and the function succeeds, 'o' is returned. + * if 'o' was non-NULL, and the function fails, 'o' is released and + * NULL returned. This simplifies error checking at the call site since + * a single test for NULL for the function result is enough. + */ +static PyObject * +r_ref_insert(PyObject *o, Py_ssize_t idx, int flag, RFILE *p) +{ + if (o != NULL && flag) { /* currently only FLAG_REF is defined */ + if (PyList_SetItem(p->refs, idx, o) < 0) { + Py_DECREF(o); /* release the new object */ + return NULL; + } else { + Py_INCREF(o); /* a reference for the list */ + } + } + return o; +} + +/* combination of both above, used when an object can be + * created whenever it is seen in the file, as opposed to + * after having loaded its sub-objects. + */ +static PyObject * +r_ref(PyObject *o, int flag, RFILE *p) +{ + if (o != NULL && flag) { /* currently only FLAG_REF is defined */ + if (PyList_Append(p->refs, o) < 0) { + Py_DECREF(o); /* release the new object */ + return NULL; + } + } + return o; +} static PyObject * r_object(RFILE *p) @@ -674,10 +774,18 @@ r_object(RFILE *p) /* NULL is a valid return value, it does not necessarily means that an exception is set. */ PyObject *v, *v2; + Py_ssize_t idx = 0; long i, n; - int type = r_byte(p); + int type, code = r_byte(p); + int flag; PyObject *retval; + if (code == EOF) { + PyErr_SetString(PyExc_EOFError, + "EOF read where object expected"); + return NULL; + } + p->depth++; if (p->depth > MAX_MARSHAL_STACK_DEPTH) { @@ -686,13 +794,15 @@ r_object(RFILE *p) return NULL; } - switch (type) { + flag = code & FLAG_REF; + type = code & ~FLAG_REF; - case EOF: - PyErr_SetString(PyExc_EOFError, - "EOF read where object expected"); - retval = NULL; - break; +#define R_REF(O) do{\ + if (flag) \ + O = r_ref(O, flag, p);\ +} while (0) + + switch (type) { case TYPE_NULL: retval = NULL; @@ -726,14 +836,12 @@ r_object(RFILE *p) case TYPE_INT: n = r_long(p); retval = PyErr_Occurred() ? NULL : PyLong_FromLong(n); - break; - - case TYPE_INT64: - retval = r_long64(p); + R_REF(retval); break; case TYPE_LONG: retval = r_PyLong(p); + R_REF(retval); break; case TYPE_FLOAT: @@ -754,6 +862,7 @@ r_object(RFILE *p) if (dx == -1.0 && PyErr_Occurred()) break; retval = PyFloat_FromDouble(dx); + R_REF(retval); break; } @@ -771,6 +880,7 @@ r_object(RFILE *p) break; } retval = PyFloat_FromDouble(x); + R_REF(retval); break; } @@ -804,6 +914,7 @@ r_object(RFILE *p) if (c.imag == -1.0 && PyErr_Occurred()) break; retval = PyComplex_FromCComplex(c); + R_REF(retval); break; } @@ -830,6 +941,7 @@ r_object(RFILE *p) break; } retval = PyComplex_FromCComplex(c); + R_REF(retval); break; } @@ -855,9 +967,11 @@ r_object(RFILE *p) break; } retval = v; + R_REF(retval); break; case TYPE_UNICODE: + case TYPE_INTERNED: { char *buffer; @@ -871,19 +985,31 @@ r_object(RFILE *p) retval = NULL; break; } - buffer = PyMem_NEW(char, n); - if (buffer == NULL) { - retval = PyErr_NoMemory(); - break; - } - if (r_string(buffer, n, p) != n) { + if (n != 0) { + buffer = PyMem_NEW(char, n); + if (buffer == NULL) { + retval = PyErr_NoMemory(); + break; + } + if (r_string(buffer, n, p) != n) { + PyMem_DEL(buffer); + retval = NULL; + break; + } + v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass"); PyMem_DEL(buffer); + } + else { + v = PyUnicode_New(0, 0); + } + if (v == NULL) { retval = NULL; break; } - v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass"); - PyMem_DEL(buffer); + if (type == TYPE_INTERNED) + PyUnicode_InternInPlace(&v); retval = v; + R_REF(retval); break; } @@ -899,6 +1025,7 @@ r_object(RFILE *p) break; } v = PyTuple_New(n); + R_REF(v); if (v == NULL) { retval = NULL; break; @@ -930,6 +1057,7 @@ r_object(RFILE *p) break; } v = PyList_New(n); + R_REF(v); if (v == NULL) { retval = NULL; break; @@ -951,6 +1079,7 @@ r_object(RFILE *p) case TYPE_DICT: v = PyDict_New(); + R_REF(v); if (v == NULL) { retval = NULL; break; @@ -986,6 +1115,16 @@ r_object(RFILE *p) break; } v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL); + if (type == TYPE_SET) { + R_REF(v); + } else { + /* must use delayed registration of frozensets because they must + * be init with a refcount of 1 + */ + idx = r_ref_reserve(flag, p); + if (idx < 0) + Py_CLEAR(v); /* signal error */ + } if (v == NULL) { retval = NULL; break; @@ -1008,6 +1147,8 @@ r_object(RFILE *p) } Py_DECREF(v2); } + if (type != TYPE_SET) + v = r_ref_insert(v, idx, flag, p); retval = v; break; @@ -1029,6 +1170,12 @@ r_object(RFILE *p) int firstlineno; PyObject *lnotab = NULL; + idx = r_ref_reserve(flag, p); + if (idx < 0) { + retval = NULL; + break; + } + v = NULL; /* XXX ignore long->int overflows for now */ @@ -1094,6 +1241,7 @@ r_object(RFILE *p) code, consts, names, varnames, freevars, cellvars, filename, name, firstlineno, lnotab); + v = r_ref_insert(v, idx, flag, p); code_error: Py_XDECREF(code); @@ -1109,6 +1257,23 @@ r_object(RFILE *p) retval = v; break; + case TYPE_REF: + n = r_long(p); + if (n < 0 || n >= PyList_GET_SIZE(p->refs)) { + PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)"); + retval = NULL; + break; + } + v = PyList_GET_ITEM(p->refs, n); + if (v == Py_None) { + PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)"); + retval = NULL; + break; + } + Py_INCREF(v); + retval = v; + break; + default: /* Bogus data got written, which isn't ideal. This will let you keep working and recover. */ @@ -1214,7 +1379,11 @@ PyMarshal_ReadObjectFromFile(FILE *fp) rf.current_filename = NULL; rf.depth = 0; rf.ptr = rf.end = NULL; + rf.refs = PyList_New(0); + if (rf.refs == NULL) + return NULL; result = r_object(&rf); + Py_DECREF(rf.refs); return result; } @@ -1229,7 +1398,11 @@ PyMarshal_ReadObjectFromString(char *str, Py_ssize_t len) rf.ptr = str; rf.end = str + len; rf.depth = 0; + rf.refs = PyList_New(0); + if (rf.refs == NULL) + return NULL; result = r_object(&rf); + Py_DECREF(rf.refs); return result; } @@ -1248,7 +1421,13 @@ PyMarshal_WriteObjectToString(PyObject *x, int version) wf.error = WFERR_OK; wf.depth = 0; wf.version = version; + if (version >= 3) { + if ((wf.refs = PyDict_New()) == NULL) + return NULL; + } else + wf.refs = NULL; w_object(x, &wf); + Py_XDECREF(wf.refs); if (wf.str != NULL) { char *base = PyBytes_AS_STRING((PyBytesObject *)wf.str); if (wf.ptr - base > PY_SSIZE_T_MAX) { @@ -1320,6 +1499,8 @@ marshal_load(PyObject *self, PyObject *f) * Make a call to the read method, but read zero bytes. * This is to ensure that the object passed in at least * has a read method which returns bytes. + * This can be removed if we guarantee good error handling + * for r_string() */ data = _PyObject_CallMethodId(f, &PyId_read, "i", 0); if (data == NULL) @@ -1335,7 +1516,11 @@ marshal_load(PyObject *self, PyObject *f) rf.fp = NULL; rf.readable = f; rf.current_filename = NULL; - result = read_object(&rf); + if ((rf.refs = PyList_New(0)) != NULL) { + result = read_object(&rf); + Py_DECREF(rf.refs); + } else + result = NULL; } Py_DECREF(data); return result; @@ -1392,8 +1577,11 @@ marshal_loads(PyObject *self, PyObject *args) rf.ptr = s; rf.end = s + n; rf.depth = 0; + if ((rf.refs = PyList_New(0)) == NULL) + return NULL; result = read_object(&rf); PyBuffer_Release(&p); + Py_DECREF(rf.refs); return result; } @@ -1433,6 +1621,7 @@ Variables:\n\ version -- indicates the format that the module uses. Version 0 is the\n\ historical format, version 1 shares interned strings and version 2\n\ uses a binary format for floating point numbers.\n\ + Version 3 shares common object references (New in version 3.4).\n\ \n\ Functions:\n\ \n\ diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 2d6bcda..f90a17a 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -68,7 +68,7 @@ static void *opcode_targets[256] = { &&TARGET_BINARY_OR, &&TARGET_INPLACE_POWER, &&TARGET_GET_ITER, - &&TARGET_STORE_LOCALS, + &&_unknown_opcode, &&TARGET_PRINT_EXPR, &&TARGET_LOAD_BUILD_CLASS, &&TARGET_YIELD_FROM, @@ -147,7 +147,7 @@ static void *opcode_targets[256] = { &&TARGET_LIST_APPEND, &&TARGET_SET_ADD, &&TARGET_MAP_ADD, - &&_unknown_opcode, + &&TARGET_LOAD_CLASSDEREF, &&_unknown_opcode, &&_unknown_opcode, &&_unknown_opcode, diff --git a/Python/peephole.c b/Python/peephole.c index 5d53677..a49790a 100644 --- a/Python/peephole.c +++ b/Python/peephole.c @@ -327,37 +327,6 @@ markblocks(unsigned char *code, Py_ssize_t len) return blocks; } -/* Helper to replace LOAD_NAME None/True/False with LOAD_CONST - Returns: 0 if no change, 1 if change, -1 if error */ -static int -load_global(unsigned char *codestr, Py_ssize_t i, char *name, PyObject *consts) -{ - Py_ssize_t j; - PyObject *obj; - if (name == NULL) - return 0; - if (strcmp(name, "None") == 0) - obj = Py_None; - else if (strcmp(name, "True") == 0) - obj = Py_True; - else if (strcmp(name, "False") == 0) - obj = Py_False; - else - return 0; - for (j = 0; j < PyList_GET_SIZE(consts); j++) { - if (PyList_GET_ITEM(consts, j) == obj) - break; - } - if (j == PyList_GET_SIZE(consts)) { - if (PyList_Append(consts, obj) < 0) - return -1; - } - assert(PyList_GET_ITEM(consts, j) == obj); - codestr[i] = LOAD_CONST; - SETARG(codestr, i, j); - return 1; -} - /* Perform basic peephole optimizations to components of a code object. The consts object should still be in list form to allow new constants to be appended. @@ -392,7 +361,6 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, Py_ssize_t const_stack_size = 0; int in_consts = 0; /* whether we are in a LOAD_CONST sequence */ unsigned int *blocks = NULL; - char *name; /* Bail out if an exception is set */ if (PyErr_Occurred()) @@ -413,8 +381,10 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, /* Make a modifiable copy of the code string */ codestr = (unsigned char *)PyMem_Malloc(codelen); - if (codestr == NULL) + if (codestr == NULL) { + PyErr_NoMemory(); goto exitError; + } codestr = (unsigned char *)memcpy(codestr, PyBytes_AS_STRING(code), codelen); @@ -428,8 +398,10 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, /* Mapping to new jump targets after NOPs are removed */ addrmap = (int *)PyMem_Malloc(codelen * sizeof(int)); - if (addrmap == NULL) + if (addrmap == NULL) { + PyErr_NoMemory(); goto exitError; + } blocks = markblocks(codestr, codelen); if (blocks == NULL) @@ -475,20 +447,6 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, codestr[i+3] = NOP; break; - /* Replace LOAD_GLOBAL/LOAD_NAME None/True/False - with LOAD_CONST None/True/False */ - case LOAD_NAME: - case LOAD_GLOBAL: - j = GETARG(codestr, i); - name = _PyUnicode_AsString(PyTuple_GET_ITEM(names, j)); - h = load_global(codestr, i, name, consts); - if (h < 0) - goto exitError; - else if (h == 0) - continue; - CONST_STACK_PUSH_OP(i); - break; - /* Skip over LOAD_CONST trueconst POP_JUMP_IF_FALSE xx. This improves "while 1" performance. */ diff --git a/Python/pyarena.c b/Python/pyarena.c index 02a31d8..103603f 100644 --- a/Python/pyarena.c +++ b/Python/pyarena.c @@ -77,7 +77,7 @@ block_new(size_t size) { /* Allocate header and block as one unit. ab_mem points just past header. */ - block *b = (block *)malloc(sizeof(block) + size); + block *b = (block *)PyMem_Malloc(sizeof(block) + size); if (!b) return NULL; b->ab_size = size; @@ -92,7 +92,7 @@ static void block_free(block *b) { while (b) { block *next = b->ab_next; - free(b); + PyMem_Free(b); b = next; } } @@ -127,20 +127,20 @@ block_alloc(block *b, size_t size) PyArena * PyArena_New() { - PyArena* arena = (PyArena *)malloc(sizeof(PyArena)); + PyArena* arena = (PyArena *)PyMem_Malloc(sizeof(PyArena)); if (!arena) return (PyArena*)PyErr_NoMemory(); arena->a_head = block_new(DEFAULT_BLOCK_SIZE); arena->a_cur = arena->a_head; if (!arena->a_head) { - free((void *)arena); + PyMem_Free((void *)arena); return (PyArena*)PyErr_NoMemory(); } arena->a_objects = PyList_New(0); if (!arena->a_objects) { block_free(arena->a_head); - free((void *)arena); + PyMem_Free((void *)arena); return (PyArena*)PyErr_NoMemory(); } #if defined(Py_DEBUG) @@ -173,7 +173,7 @@ PyArena_Free(PyArena *arena) */ Py_DECREF(arena->a_objects); - free(arena); + PyMem_Free(arena); } void * diff --git a/Python/pystate.c b/Python/pystate.c index 772aa53..40606bf 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -6,11 +6,11 @@ /* -------------------------------------------------------------------------- CAUTION -Always use malloc() and free() directly in this file. A number of these -functions are advertised as safe to call when the GIL isn't held, and in -a debug build Python redirects (e.g.) PyMem_NEW (etc) to Python's debugging -obmalloc functions. Those aren't thread-safe (they rely on the GIL to avoid -the expense of doing their own locking). +Always use PyMem_RawMalloc() and PyMem_RawFree() directly in this file. A +number of these functions are advertised as safe to call when the GIL isn't +held, and in a debug build Python redirects (e.g.) PyMem_NEW (etc) to Python's +debugging obmalloc functions. Those aren't thread-safe (they rely on the GIL +to avoid the expense of doing their own locking). -------------------------------------------------------------------------- */ #ifdef HAVE_DLOPEN @@ -60,7 +60,7 @@ PyInterpreterState * PyInterpreterState_New(void) { PyInterpreterState *interp = (PyInterpreterState *) - malloc(sizeof(PyInterpreterState)); + PyMem_RawMalloc(sizeof(PyInterpreterState)); if (interp != NULL) { HEAD_INIT(); @@ -148,7 +148,7 @@ PyInterpreterState_Delete(PyInterpreterState *interp) Py_FatalError("PyInterpreterState_Delete: remaining threads"); *p = interp->next; HEAD_UNLOCK(); - free(interp); + PyMem_RawFree(interp); #ifdef WITH_THREAD if (interp_head == NULL && head_mutex != NULL) { PyThread_free_lock(head_mutex); @@ -168,7 +168,7 @@ threadstate_getframe(PyThreadState *self) static PyThreadState * new_threadstate(PyInterpreterState *interp, int init) { - PyThreadState *tstate = (PyThreadState *)malloc(sizeof(PyThreadState)); + PyThreadState *tstate = (PyThreadState *)PyMem_RawMalloc(sizeof(PyThreadState)); if (_PyThreadState_GetFrame == NULL) _PyThreadState_GetFrame = threadstate_getframe; @@ -213,7 +213,10 @@ new_threadstate(PyInterpreterState *interp, int init) _PyThreadState_Init(tstate); HEAD_LOCK(); + tstate->prev = NULL; tstate->next = interp->tstate_head; + if (tstate->next) + tstate->next->prev = tstate; interp->tstate_head = tstate; HEAD_UNLOCK(); } @@ -349,37 +352,20 @@ static void tstate_delete_common(PyThreadState *tstate) { PyInterpreterState *interp; - PyThreadState **p; - PyThreadState *prev_p = NULL; if (tstate == NULL) Py_FatalError("PyThreadState_Delete: NULL tstate"); interp = tstate->interp; if (interp == NULL) Py_FatalError("PyThreadState_Delete: NULL interp"); HEAD_LOCK(); - for (p = &interp->tstate_head; ; p = &(*p)->next) { - if (*p == NULL) - Py_FatalError( - "PyThreadState_Delete: invalid tstate"); - if (*p == tstate) - break; - /* Sanity check. These states should never happen but if - * they do we must abort. Otherwise we'll end up spinning in - * in a tight loop with the lock held. A similar check is done - * in thread.c find_key(). */ - if (*p == prev_p) - Py_FatalError( - "PyThreadState_Delete: small circular list(!)" - " and tstate not found."); - prev_p = *p; - if ((*p)->next == interp->tstate_head) - Py_FatalError( - "PyThreadState_Delete: circular list(!) and" - " tstate not found."); - } - *p = tstate->next; + if (tstate->prev) + tstate->prev->next = tstate->next; + else + interp->tstate_head = tstate->next; + if (tstate->next) + tstate->next->prev = tstate->prev; HEAD_UNLOCK(); - free(tstate); + PyMem_RawFree(tstate); } @@ -414,6 +400,43 @@ PyThreadState_DeleteCurrent() #endif /* WITH_THREAD */ +/* + * Delete all thread states except the one passed as argument. + * Note that, if there is a current thread state, it *must* be the one + * passed as argument. Also, this won't touch any other interpreters + * than the current one, since we don't know which thread state should + * be kept in those other interpreteres. + */ +void +_PyThreadState_DeleteExcept(PyThreadState *tstate) +{ + PyInterpreterState *interp = tstate->interp; + PyThreadState *p, *next, *garbage; + HEAD_LOCK(); + /* Remove all thread states, except tstate, from the linked list of + thread states. This will allow calling PyThreadState_Clear() + without holding the lock. */ + garbage = interp->tstate_head; + if (garbage == tstate) + garbage = tstate->next; + if (tstate->prev) + tstate->prev->next = tstate->next; + if (tstate->next) + tstate->next->prev = tstate->prev; + tstate->prev = tstate->next = NULL; + interp->tstate_head = tstate; + HEAD_UNLOCK(); + /* Clear and deallocate all stale thread states. Even if this + executes Python code, we should be safe since it executes + in the current thread, not one of the stale threads. */ + for (p = garbage; p; p = next) { + next = p->next; + PyThreadState_Clear(p); + PyMem_RawFree(p); + } +} + + PyThreadState * PyThreadState_Get(void) { @@ -697,6 +720,15 @@ PyGILState_GetThisThreadState(void) return (PyThreadState *)PyThread_get_key_value(autoTLSkey); } +int +PyGILState_Check(void) +{ + /* can't use PyThreadState_Get() since it will assert that it has the GIL */ + PyThreadState *tstate = (PyThreadState*)_Py_atomic_load_relaxed( + &_PyThreadState_Current); + return tstate && (tstate == PyGILState_GetThisThreadState()); +} + PyGILState_STATE PyGILState_Ensure(void) { diff --git a/Python/pystrtod.c b/Python/pystrtod.c index 4ab8f08..f8d3b35 100644 --- a/Python/pystrtod.c +++ b/Python/pystrtod.c @@ -923,7 +923,7 @@ static char *uc_float_strings[] = { static char * format_float_short(double d, char format_code, - int mode, Py_ssize_t precision, + int mode, int precision, int always_add_sign, int add_dot_0_if_integer, int use_alt_formatting, char **float_strings, int *type) { @@ -1059,7 +1059,7 @@ format_float_short(double d, char format_code, /* if using an exponent, reset decimal point position to 1 and adjust exponent accordingly.*/ if (use_exp) { - exp = decpt - 1; + exp = (int)decpt - 1; decpt = 1; } /* ensure vdigits_start < decpt <= vdigits_end, or vdigits_start < diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 9ef653b..18c2baa 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -35,12 +35,30 @@ #define PATH_MAX MAXPATHLEN #endif +#ifdef Py_REF_DEBUG +static +void _print_total_refs(void) { + PyObject *xoptions, *key, *value; + xoptions = PySys_GetXOptions(); + if (xoptions == NULL) + return; + key = PyUnicode_FromString("showrefcount"); + if (key == NULL) + return; + value = PyDict_GetItem(xoptions, key); + Py_DECREF(key); + if (value == Py_True) + fprintf(stderr, + "[%" PY_FORMAT_SIZE_T "d refs, " + "%" PY_FORMAT_SIZE_T "d blocks]\n", + _Py_GetRefTotal(), _Py_GetAllocatedBlocks()); +} +#endif + #ifndef Py_REF_DEBUG #define PRINT_TOTAL_REFS() #else /* Py_REF_DEBUG */ -#define PRINT_TOTAL_REFS() fprintf(stderr, \ - "[%" PY_FORMAT_SIZE_T "d refs]\n", \ - _Py_GetRefTotal()) +#define PRINT_TOTAL_REFS() _print_total_refs() #endif #ifdef __cplusplus @@ -68,6 +86,7 @@ static void call_py_exitfuncs(void); static void wait_for_thread_shutdown(void); static void call_ll_exitfuncs(void); extern int _PyUnicode_Init(void); +extern int _PyStructSequence_Init(void); extern void _PyUnicode_Fini(void); extern int _PyLong_Init(void); extern void PyLong_Fini(void); @@ -156,7 +175,7 @@ get_codec_name(const char *encoding) name_utf8 = _PyUnicode_AsString(name); if (name_utf8 == NULL) goto error; - name_str = strdup(name_utf8); + name_str = _PyMem_RawStrdup(name_utf8); Py_DECREF(name); if (name_str == NULL) { PyErr_NoMemory(); @@ -309,7 +328,8 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib) if (!PyByteArray_Init()) Py_FatalError("Py_Initialize: can't init bytearray"); - _PyFloat_Init(); + if (!_PyFloat_Init()) + Py_FatalError("Py_Initialize: can't init float"); interp->modules = PyDict_New(); if (interp->modules == NULL) @@ -318,6 +338,8 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib) /* Init Unicode implementation; relies on the codec registry */ if (_PyUnicode_Init() < 0) Py_FatalError("Py_Initialize: can't initialize unicode"); + if (_PyStructSequence_Init() < 0) + Py_FatalError("Py_Initialize: can't initialize structseq"); bimod = _PyBuiltin_Init(); if (bimod == NULL) @@ -526,10 +548,6 @@ Py_Finalize(void) while (PyGC_Collect() > 0) /* nothing */; #endif - /* We run this while most interpreter state is still alive, so that - debug information can be printed out */ - _PyGC_Fini(); - /* Destroy all modules */ PyImport_Cleanup(); @@ -592,11 +610,6 @@ Py_Finalize(void) _PyExc_Fini(); - /* Cleanup auto-thread-state */ -#ifdef WITH_THREAD - _PyGILState_Fini(); -#endif /* WITH_THREAD */ - /* Sundry finalizers */ PyMethod_Fini(); PyFrame_Fini(); @@ -610,17 +623,14 @@ Py_Finalize(void) PyFloat_Fini(); PyDict_Fini(); PySlice_Fini(); + _PyGC_Fini(); /* Cleanup Unicode implementation */ _PyUnicode_Fini(); - /* Delete current thread. After this, many C API calls become crashy. */ - PyThreadState_Swap(NULL); - PyInterpreterState_Delete(interp); - /* reset file system default encoding */ if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding) { - free((char*)Py_FileSystemDefaultEncoding); + PyMem_RawFree((char*)Py_FileSystemDefaultEncoding); Py_FileSystemDefaultEncoding = NULL; } @@ -632,6 +642,15 @@ Py_Finalize(void) PyGrammar_RemoveAccelerators(&_PyParser_Grammar); + /* Cleanup auto-thread-state */ +#ifdef WITH_THREAD + _PyGILState_Fini(); +#endif /* WITH_THREAD */ + + /* Delete current thread. After this, many C API calls become crashy. */ + PyThreadState_Swap(NULL); + PyInterpreterState_Delete(interp); + #ifdef Py_TRACE_REFS /* Display addresses (& refcnts) of all objects still alive. * An address can be used to find the repr of the object, printed @@ -827,7 +846,7 @@ Py_GetPythonHome(void) static void initmain(PyInterpreterState *interp) { - PyObject *m, *d; + PyObject *m, *d, *loader; m = PyImport_AddModule("__main__"); if (m == NULL) Py_FatalError("can't create __main__ module"); @@ -848,7 +867,8 @@ initmain(PyInterpreterState *interp) * be set if __main__ gets further initialized later in the startup * process. */ - if (PyDict_GetItemString(d, "__loader__") == NULL) { + loader = PyDict_GetItemString(d, "__loader__"); + if (loader == NULL || loader == Py_None) { PyObject *loader = PyObject_GetAttrString(interp->importlib, "BuiltinImporter"); if (loader == NULL) { @@ -898,6 +918,7 @@ initsite(void) PyObject *m; m = PyImport_ImportModule("site"); if (m == NULL) { + fprintf(stderr, "Failed to import the site module\n"); PyErr_Print(); Py_Finalize(); exit(1); @@ -1065,7 +1086,11 @@ initstdio(void) encoding = Py_GETENV("PYTHONIOENCODING"); errors = NULL; if (encoding) { - encoding = strdup(encoding); + encoding = _PyMem_Strdup(encoding); + if (encoding == NULL) { + PyErr_NoMemory(); + goto error; + } errors = strchr(encoding, ':'); if (errors) { *errors = '\0'; @@ -1124,18 +1149,24 @@ initstdio(void) when import.c tries to write to stderr in verbose mode. */ encoding_attr = PyObject_GetAttrString(std, "encoding"); if (encoding_attr != NULL) { - const char * encoding; - encoding = _PyUnicode_AsString(encoding_attr); - if (encoding != NULL) { - PyObject *codec_info = _PyCodec_Lookup(encoding); + const char * std_encoding; + std_encoding = _PyUnicode_AsString(encoding_attr); + if (std_encoding != NULL) { + PyObject *codec_info = _PyCodec_Lookup(std_encoding); Py_XDECREF(codec_info); } Py_DECREF(encoding_attr); } PyErr_Clear(); /* Not a fatal error if codec isn't available */ - PySys_SetObject("__stderr__", std); - PySys_SetObject("stderr", std); + if (PySys_SetObject("__stderr__", std) < 0) { + Py_DECREF(std); + goto error; + } + if (PySys_SetObject("stderr", std) < 0) { + Py_DECREF(std); + goto error; + } Py_DECREF(std); #endif @@ -1144,8 +1175,7 @@ initstdio(void) status = -1; } - if (encoding) - free(encoding); + PyMem_Free(encoding); Py_XDECREF(bimod); Py_XDECREF(iomod); return status; @@ -2459,6 +2489,9 @@ initsigs(void) PyOS_setsig(SIGXFSZ, SIG_IGN); #endif PyOS_InitInterrupts(); /* May imply initsignal() */ + if (PyErr_Occurred()) { + Py_FatalError("Py_Initialize: can't import signal"); + } } diff --git a/Python/random.c b/Python/random.c index 53518c2..1ad4c3d 100644 --- a/Python/random.c +++ b/Python/random.c @@ -12,13 +12,6 @@ static int _Py_HashSecret_Initialized = 0; #endif #ifdef MS_WINDOWS -typedef BOOL (WINAPI *CRYPTACQUIRECONTEXTA)(HCRYPTPROV *phProv,\ - LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType,\ - DWORD dwFlags ); -typedef BOOL (WINAPI *CRYPTGENRANDOM)(HCRYPTPROV hProv, DWORD dwLen,\ - BYTE *pbBuffer ); - -static CRYPTGENRANDOM pCryptGenRandom = NULL; /* This handle is never explicitly released. Instead, the operating system will release it when the process terminates. */ static HCRYPTPROV hCryptProv = 0; @@ -26,29 +19,9 @@ static HCRYPTPROV hCryptProv = 0; static int win32_urandom_init(int raise) { - HINSTANCE hAdvAPI32 = NULL; - CRYPTACQUIRECONTEXTA pCryptAcquireContext = NULL; - - /* Obtain handle to the DLL containing CryptoAPI. This should not fail. */ - hAdvAPI32 = GetModuleHandle("advapi32.dll"); - if(hAdvAPI32 == NULL) - goto error; - - /* Obtain pointers to the CryptoAPI functions. This will fail on some early - versions of Win95. */ - pCryptAcquireContext = (CRYPTACQUIRECONTEXTA)GetProcAddress( - hAdvAPI32, "CryptAcquireContextA"); - if (pCryptAcquireContext == NULL) - goto error; - - pCryptGenRandom = (CRYPTGENRANDOM)GetProcAddress(hAdvAPI32, - "CryptGenRandom"); - if (pCryptGenRandom == NULL) - goto error; - /* Acquire context */ - if (! pCryptAcquireContext(&hCryptProv, NULL, NULL, - PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) + if (!CryptAcquireContext(&hCryptProv, NULL, NULL, + PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) goto error; return 0; @@ -77,7 +50,7 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) while (size > 0) { chunk = size > INT_MAX ? INT_MAX : size; - if (!pCryptGenRandom(hCryptProv, chunk, buffer)) + if (!CryptGenRandom(hCryptProv, chunk, buffer)) { /* CryptGenRandom() failed */ if (raise) diff --git a/Python/symtable.c b/Python/symtable.c index 48495f7..183bf69 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -37,24 +37,14 @@ ste_new(struct symtable *st, identifier name, _Py_block_ty block, ste->ste_table = st; ste->ste_id = k; /* ste owns reference to k */ - ste->ste_name = name; Py_INCREF(name); + ste->ste_name = name; ste->ste_symbols = NULL; ste->ste_varnames = NULL; ste->ste_children = NULL; - ste->ste_symbols = PyDict_New(); - if (ste->ste_symbols == NULL) - goto fail; - - ste->ste_varnames = PyList_New(0); - if (ste->ste_varnames == NULL) - goto fail; - - ste->ste_children = PyList_New(0); - if (ste->ste_children == NULL) - goto fail; + ste->ste_directives = NULL; ste->ste_type = block; ste->ste_unoptimized = 0; @@ -75,6 +65,15 @@ ste_new(struct symtable *st, identifier name, _Py_block_ty block, ste->ste_child_free = 0; ste->ste_generator = 0; ste->ste_returns_value = 0; + ste->ste_needs_class_closure = 0; + + ste->ste_symbols = PyDict_New(); + ste->ste_varnames = PyList_New(0); + ste->ste_children = PyList_New(0); + if (ste->ste_symbols == NULL + || ste->ste_varnames == NULL + || ste->ste_children == NULL) + goto fail; if (PyDict_SetItem(st->st_blocks, ste->ste_id, (PyObject *)ste) < 0) goto fail; @@ -102,6 +101,7 @@ ste_dealloc(PySTEntryObject *ste) Py_XDECREF(ste->ste_symbols); Py_XDECREF(ste->ste_varnames); Py_XDECREF(ste->ste_children); + Py_XDECREF(ste->ste_directives); PyObject_Del(ste); } @@ -188,7 +188,7 @@ static int symtable_visit_withitem(struct symtable *st, withitem_ty item); static identifier top = NULL, lambda = NULL, genexpr = NULL, listcomp = NULL, setcomp = NULL, dictcomp = NULL, - __class__ = NULL, __locals__ = NULL; + __class__ = NULL; #define GET_IDENTIFIER(VAR) \ ((VAR) ? (VAR) : ((VAR) = PyUnicode_InternFromString(# VAR))) @@ -342,6 +342,24 @@ PyST_GetScope(PySTEntryObject *ste, PyObject *name) return (PyLong_AS_LONG(v) >> SCOPE_OFFSET) & SCOPE_MASK; } +static int +error_at_directive(PySTEntryObject *ste, PyObject *name) +{ + Py_ssize_t i; + PyObject *data; + assert(ste->ste_directives); + for (i = 0; ; i++) { + data = PyList_GET_ITEM(ste->ste_directives, i); + assert(PyTuple_CheckExact(data)); + if (PyTuple_GET_ITEM(data, 0) == name) + break; + } + PyErr_SyntaxLocationEx(ste->ste_table->st_filename, + PyLong_AsLong(PyTuple_GET_ITEM(data, 1)), + PyLong_AsLong(PyTuple_GET_ITEM(data, 2))); + return 0; +} + /* Analyze raw symbol information to determine scope of each name. @@ -416,16 +434,13 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags, PyErr_Format(PyExc_SyntaxError, "name '%U' is parameter and global", name); - PyErr_SyntaxLocationEx(ste->ste_table->st_filename, - ste->ste_lineno, ste->ste_col_offset); - - return 0; + return error_at_directive(ste, name); } if (flags & DEF_NONLOCAL) { PyErr_Format(PyExc_SyntaxError, "name '%U' is nonlocal and global", name); - return 0; + return error_at_directive(ste, name); } SET_SCOPE(scopes, name, GLOBAL_EXPLICIT); if (PySet_Add(global, name) < 0) @@ -439,19 +454,19 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags, PyErr_Format(PyExc_SyntaxError, "name '%U' is parameter and nonlocal", name); - return 0; + return error_at_directive(ste, name); } if (!bound) { PyErr_Format(PyExc_SyntaxError, "nonlocal declaration not allowed at module level"); - return 0; + return error_at_directive(ste, name); } if (!PySet_Contains(bound, name)) { PyErr_Format(PyExc_SyntaxError, "no binding for nonlocal '%U' found", name); - return 0; + return error_at_directive(ste, name); } SET_SCOPE(scopes, name, FREE); ste->ste_free = 1; @@ -496,13 +511,10 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags, Note that the current block's free variables are included in free. That's safe because no name can be free and local in the same scope. - - The 'restricted' argument may be set to a string to restrict the analysis - to the one variable whose name equals that string (e.g. "__class__"). */ static int -analyze_cells(PyObject *scopes, PyObject *free, const char *restricted) +analyze_cells(PyObject *scopes, PyObject *free) { PyObject *name, *v, *v_cell; int success = 0; @@ -519,9 +531,6 @@ analyze_cells(PyObject *scopes, PyObject *free, const char *restricted) continue; if (!PySet_Contains(free, name)) continue; - if (restricted != NULL && - PyUnicode_CompareWithASCIIString(name, restricted)) - continue; /* Replace LOCAL with CELL for this name, and remove from free. It is safe to replace the value of name in the dict, because it will not cause a resize. @@ -537,6 +546,20 @@ analyze_cells(PyObject *scopes, PyObject *free, const char *restricted) return success; } +static int +drop_class_free(PySTEntryObject *ste, PyObject *free) +{ + int res; + if (!GET_IDENTIFIER(__class__)) + return 0; + res = PySet_Discard(free, __class__); + if (res < 0) + return 0; + if (res) + ste->ste_needs_class_closure = 1; + return 1; +} + /* Check for illegal statements in unoptimized namespaces */ static int check_unoptimized(const PySTEntryObject* ste) { @@ -767,7 +790,6 @@ analyze_block(PySTEntryObject *ste, PyObject *bound, PyObject *free, /* Special-case __class__ */ if (!GET_IDENTIFIER(__class__)) goto error; - assert(PySet_Contains(local, __class__) == 1); if (PySet_Add(newbound, __class__) < 0) goto error; } @@ -800,11 +822,9 @@ analyze_block(PySTEntryObject *ste, PyObject *bound, PyObject *free, Py_DECREF(temp); /* Check if any local variables must be converted to cell variables */ - if (ste->ste_type == FunctionBlock && !analyze_cells(scopes, newfree, - NULL)) + if (ste->ste_type == FunctionBlock && !analyze_cells(scopes, newfree)) goto error; - else if (ste->ste_type == ClassBlock && !analyze_cells(scopes, newfree, - "__class__")) + else if (ste->ste_type == ClassBlock && !drop_class_free(ste, newfree)) goto error; /* Records the results of the analysis in the symbol table entry */ if (!update_symbols(ste->ste_symbols, scopes, bound, newfree, @@ -1098,6 +1118,25 @@ symtable_new_tmpname(struct symtable *st) static int +symtable_record_directive(struct symtable *st, identifier name, stmt_ty s) +{ + PyObject *data; + int res; + if (!st->st_cur->ste_directives) { + st->st_cur->ste_directives = PyList_New(0); + if (!st->st_cur->ste_directives) + return 0; + } + data = Py_BuildValue("(Oii)", name, s->lineno, s->col_offset); + if (!data) + return 0; + res = PyList_Append(st->st_cur->ste_directives, data); + Py_DECREF(data); + return res == 0; +} + + +static int symtable_visit_stmt(struct symtable *st, stmt_ty s) { if (++st->recursion_depth > st->recursion_limit) { @@ -1142,13 +1181,6 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s) if (!symtable_enter_block(st, s->v.ClassDef.name, ClassBlock, (void *)s, s->lineno, s->col_offset)) VISIT_QUIT(st, 0); - if (!GET_IDENTIFIER(__class__) || - !symtable_add_def(st, __class__, DEF_LOCAL) || - !GET_IDENTIFIER(__locals__) || - !symtable_add_def(st, __locals__, DEF_PARAM)) { - symtable_exit_block(st, s); - VISIT_QUIT(st, 0); - } tmp = st->st_private; st->st_private = s->v.ClassDef.name; VISIT_SEQ(st, stmt, s->v.ClassDef.body); @@ -1236,14 +1268,7 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s) asdl_seq *seq = s->v.Global.names; for (i = 0; i < asdl_seq_LEN(seq); i++) { identifier name = (identifier)asdl_seq_GET(seq, i); - long cur; - if (st->st_cur->ste_type == ClassBlock && - !PyUnicode_CompareWithASCIIString(name, "__class__")) { - PyErr_SetString(PyExc_SyntaxError, "cannot make __class__ global"); - PyErr_SyntaxLocationEx(st->st_filename, s->lineno, s->col_offset); - return 0; - } - cur = symtable_lookup(st, name); + long cur = symtable_lookup(st, name); if (cur < 0) VISIT_QUIT(st, 0); if (cur & (DEF_LOCAL | USE)) { @@ -1264,6 +1289,8 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s) } if (!symtable_add_def(st, name, DEF_GLOBAL)) VISIT_QUIT(st, 0); + if (!symtable_record_directive(st, name, s)) + VISIT_QUIT(st, 0); } break; } @@ -1293,6 +1320,8 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s) } if (!symtable_add_def(st, name, DEF_NONLOCAL)) VISIT_QUIT(st, 0); + if (!symtable_record_directive(st, name, s)) + VISIT_QUIT(st, 0); } break; } @@ -1403,6 +1432,7 @@ symtable_visit_expr(struct symtable *st, expr_ty e) case Str_kind: case Bytes_kind: case Ellipsis_kind: + case NameConstant_kind: /* Nothing to do here. */ break; /* The following exprs can be assignment targets. */ @@ -1495,10 +1525,10 @@ symtable_visit_annotations(struct symtable *st, stmt_ty s) if (a->args && !symtable_visit_argannotations(st, a->args)) return 0; - if (a->varargannotation) - VISIT(st, expr, a->varargannotation); - if (a->kwargannotation) - VISIT(st, expr, a->kwargannotation); + if (a->vararg && a->vararg->annotation) + VISIT(st, expr, a->vararg->annotation); + if (a->kwarg && a->kwarg->annotation) + VISIT(st, expr, a->kwarg->annotation); if (a->kwonlyargs && !symtable_visit_argannotations(st, a->kwonlyargs)) return 0; if (s->v.FunctionDef.returns) @@ -1517,12 +1547,12 @@ symtable_visit_arguments(struct symtable *st, arguments_ty a) if (a->kwonlyargs && !symtable_visit_params(st, a->kwonlyargs)) return 0; if (a->vararg) { - if (!symtable_add_def(st, a->vararg, DEF_PARAM)) + if (!symtable_add_def(st, a->vararg->arg, DEF_PARAM)) return 0; st->st_cur->ste_varargs = 1; } if (a->kwarg) { - if (!symtable_add_def(st, a->kwarg, DEF_PARAM)) + if (!symtable_add_def(st, a->kwarg->arg, DEF_PARAM)) return 0; st->st_cur->ste_varkeywords = 1; } diff --git a/Python/sysmodule.c b/Python/sysmodule.c index edd6649..754bcfe 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -774,7 +774,7 @@ Set the flags used by the interpreter for dlopen calls, such as when the\n\ interpreter loads extension modules. Among other things, this will enable\n\ a lazy resolving of symbols when importing a module, if called as\n\ sys.setdlopenflags(0). To share symbols across extension modules, call as\n\ -sys.setdlopenflags(ctypes.RTLD_GLOBAL). Symbolic names for the flag modules\n\ +sys.setdlopenflags(os.RTLD_GLOBAL). Symbolic names for the flag modules\n\ can be found in the os module (RTLD_xxx constants, e.g. os.RTLD_LAZY)."); static PyObject * @@ -790,7 +790,7 @@ PyDoc_STRVAR(getdlopenflags_doc, "getdlopenflags() -> int\n\ \n\ Return the current value of the flags that are used for dlopen calls.\n\ -The flag constants are defined in the ctypes and DLFCN modules."); +The flag constants are defined in the os module."); #endif /* HAVE_DLOPEN */ @@ -894,6 +894,19 @@ one higher than you might expect, because it includes the (temporary)\n\ reference as an argument to getrefcount()." ); +static PyObject * +sys_getallocatedblocks(PyObject *self) +{ + return PyLong_FromSsize_t(_Py_GetAllocatedBlocks()); +} + +PyDoc_STRVAR(getallocatedblocks_doc, +"getallocatedblocks() -> integer\n\ +\n\ +Return the number of memory blocks currently allocated, regardless of their\n\ +size." +); + #ifdef COUNT_ALLOCS static PyObject * sys_getcounts(PyObject *self) @@ -1062,6 +1075,8 @@ static PyMethodDef sys_methods[] = { {"getdlopenflags", (PyCFunction)sys_getdlopenflags, METH_NOARGS, getdlopenflags_doc}, #endif + {"getallocatedblocks", (PyCFunction)sys_getallocatedblocks, METH_NOARGS, + getallocatedblocks_doc}, #ifdef COUNT_ALLOCS {"getcounts", (PyCFunction)sys_getcounts, METH_NOARGS}, #endif @@ -1349,9 +1364,6 @@ static PyStructSequence_Field flags_fields[] = { {"no_site", "-S"}, {"ignore_environment", "-E"}, {"verbose", "-v"}, -#ifdef RISCOS - {"riscos_wimp", "???"}, -#endif /* {"unbuffered", "-u"}, */ /* {"skip_first", "-x"}, */ {"bytes_warning", "-b"}, @@ -1364,11 +1376,7 @@ static PyStructSequence_Desc flags_desc = { "sys.flags", /* name */ flags__doc__, /* doc */ flags_fields, /* fields */ -#ifdef RISCOS - 13 -#else 12 -#endif }; static PyObject* @@ -1393,9 +1401,6 @@ make_flags(void) SetFlag(Py_NoSiteFlag); SetFlag(Py_IgnoreEnvironmentFlag); SetFlag(Py_VerboseFlag); -#ifdef RISCOS - SetFlag(Py_RISCOSWimpFlag); -#endif /* SetFlag(saw_unbuffered_flag); */ /* SetFlag(skipfirstline); */ SetFlag(Py_BytesWarningFlag); @@ -1560,18 +1565,24 @@ static struct PyModuleDef sysmodule = { PyObject * _PySys_Init(void) { - PyObject *m, *v, *sysdict, *version_info; - char *s; + PyObject *m, *sysdict, *version_info; m = PyModule_Create(&sysmodule); if (m == NULL) return NULL; sysdict = PyModule_GetDict(m); -#define SET_SYS_FROM_STRING(key, value) \ - v = value; \ - if (v != NULL) \ - PyDict_SetItemString(sysdict, key, v); \ - Py_XDECREF(v) +#define SET_SYS_FROM_STRING(key, value) \ + do { \ + int res; \ + PyObject *v = (value); \ + if (v == NULL) \ + return NULL; \ + res = PyDict_SetItemString(sysdict, key, v); \ + if (res < 0) { \ + Py_DECREF(v); \ + return NULL; \ + } \ + } while (0) /* Check that stdin is not a directory Using shell redirection, you can redirect stdin to a directory, @@ -1593,10 +1604,10 @@ _PySys_Init(void) /* stdin/stdout/stderr are now set by pythonrun.c */ - PyDict_SetItemString(sysdict, "__displayhook__", - PyDict_GetItemString(sysdict, "displayhook")); - PyDict_SetItemString(sysdict, "__excepthook__", - PyDict_GetItemString(sysdict, "excepthook")); + SET_SYS_FROM_STRING("__displayhook__", + PyDict_GetItemString(sysdict, "displayhook")); + SET_SYS_FROM_STRING("__excepthook__", + PyDict_GetItemString(sysdict, "excepthook")); SET_SYS_FROM_STRING("version", PyUnicode_FromString(Py_GetVersion())); SET_SYS_FROM_STRING("hexversion", @@ -1630,28 +1641,24 @@ _PySys_Init(void) SET_SYS_FROM_STRING("int_info", PyLong_GetInfo()); /* initialize hash_info */ - if (Hash_InfoType.tp_name == 0) - PyStructSequence_InitType(&Hash_InfoType, &hash_info_desc); + if (Hash_InfoType.tp_name == NULL) { + if (PyStructSequence_InitType2(&Hash_InfoType, &hash_info_desc) < 0) + return NULL; + } SET_SYS_FROM_STRING("hash_info", get_hash_info()); SET_SYS_FROM_STRING("maxunicode", PyLong_FromLong(0x10FFFF)); SET_SYS_FROM_STRING("builtin_module_names", list_builtin_module_names()); - { - /* Assumes that longs are at least 2 bytes long. - Should be safe! */ - unsigned long number = 1; - char *value; - - s = (char *) &number; - if (s[0] == 0) - value = "big"; - else - value = "little"; - SET_SYS_FROM_STRING("byteorder", - PyUnicode_FromString(value)); - } +#if PY_BIG_ENDIAN + SET_SYS_FROM_STRING("byteorder", + PyUnicode_FromString("big")); +#else + SET_SYS_FROM_STRING("byteorder", + PyUnicode_FromString("little")); +#endif + #ifdef MS_COREDLL SET_SYS_FROM_STRING("dllhandle", PyLong_FromVoidPtr(PyWin_DLLhModule)); @@ -1664,22 +1671,22 @@ _PySys_Init(void) #endif if (warnoptions == NULL) { warnoptions = PyList_New(0); + if (warnoptions == NULL) + return NULL; } else { Py_INCREF(warnoptions); } - if (warnoptions != NULL) { - PyDict_SetItemString(sysdict, "warnoptions", warnoptions); - } + SET_SYS_FROM_STRING("warnoptions", warnoptions); - v = get_xoptions(); - if (v != NULL) { - PyDict_SetItemString(sysdict, "_xoptions", v); - } + SET_SYS_FROM_STRING("_xoptions", get_xoptions()); /* version_info */ - if (VersionInfoType.tp_name == 0) - PyStructSequence_InitType(&VersionInfoType, &version_info_desc); + if (VersionInfoType.tp_name == NULL) { + if (PyStructSequence_InitType2(&VersionInfoType, + &version_info_desc) < 0) + return NULL; + } version_info = make_version_info(); SET_SYS_FROM_STRING("version_info", version_info); /* prevent user from creating new instances */ @@ -1690,8 +1697,10 @@ _PySys_Init(void) SET_SYS_FROM_STRING("implementation", make_impl_info(version_info)); /* flags */ - if (FlagsType.tp_name == 0) - PyStructSequence_InitType(&FlagsType, &flags_desc); + if (FlagsType.tp_name == 0) { + if (PyStructSequence_InitType2(&FlagsType, &flags_desc) < 0) + return NULL; + } SET_SYS_FROM_STRING("flags", make_flags()); /* prevent user from creating new instances */ FlagsType.tp_init = NULL; @@ -1701,7 +1710,9 @@ _PySys_Init(void) #if defined(MS_WINDOWS) /* getwindowsversion */ if (WindowsVersionType.tp_name == 0) - PyStructSequence_InitType(&WindowsVersionType, &windows_version_desc); + if (PyStructSequence_InitType2(&WindowsVersionType, + &windows_version_desc) < 0) + return NULL; /* prevent user from creating new instances */ WindowsVersionType.tp_init = NULL; WindowsVersionType.tp_new = NULL; diff --git a/Python/thread.c b/Python/thread.c index e55d342..8540942 100644 --- a/Python/thread.c +++ b/Python/thread.c @@ -91,10 +91,6 @@ static size_t _pythread_stacksize = 0; #include "thread_nt.h" #endif -#ifdef OS2_THREADS -#define PYTHREAD_NAME "os2" -#include "thread_os2.h" -#endif /* #ifdef FOOBAR_THREADS @@ -235,7 +231,7 @@ find_key(int key, void *value) assert(p == NULL); goto Done; } - p = (struct key *)malloc(sizeof(struct key)); + p = (struct key *)PyMem_RawMalloc(sizeof(struct key)); if (p != NULL) { p->id = id; p->key = key; @@ -274,7 +270,7 @@ PyThread_delete_key(int key) while ((p = *q) != NULL) { if (p->key == key) { *q = p->next; - free((void *)p); + PyMem_RawFree((void *)p); /* NB This does *not* free p->value! */ } else @@ -328,7 +324,7 @@ PyThread_delete_key_value(int key) while ((p = *q) != NULL) { if (p->key == key && p->id == id) { *q = p->next; - free((void *)p); + PyMem_RawFree((void *)p); /* NB This does *not* free p->value! */ break; } @@ -361,7 +357,7 @@ PyThread_ReInitTLS(void) while ((p = *q) != NULL) { if (p->id != id) { *q = p->next; - free((void *)p); + PyMem_RawFree((void *)p); /* NB This does *not* free p->value! */ } else @@ -403,8 +399,10 @@ PyThread_GetInfo(void) int len; #endif - if (ThreadInfoType.tp_name == 0) - PyStructSequence_InitType(&ThreadInfoType, &threadinfo_desc); + if (ThreadInfoType.tp_name == 0) { + if (PyStructSequence_InitType2(&ThreadInfoType, &threadinfo_desc) < 0) + return NULL; + } threadinfo = PyStructSequence_New(&ThreadInfoType); if (threadinfo == NULL) diff --git a/Python/thread_nt.h b/Python/thread_nt.h index 938bf1e..ab5a081 100644 --- a/Python/thread_nt.h +++ b/Python/thread_nt.h @@ -34,7 +34,7 @@ typedef NRMUTEX *PNRMUTEX; PNRMUTEX AllocNonRecursiveMutex() { - PNRMUTEX m = (PNRMUTEX)malloc(sizeof(NRMUTEX)); + PNRMUTEX m = (PNRMUTEX)PyMem_RawMalloc(sizeof(NRMUTEX)); if (!m) return NULL; if (PyCOND_INIT(&m->cv)) @@ -46,7 +46,7 @@ AllocNonRecursiveMutex() m->locked = 0; return m; fail: - free(m); + PyMem_RawFree(m); return NULL; } @@ -56,7 +56,7 @@ FreeNonRecursiveMutex(PNRMUTEX mutex) if (mutex) { PyCOND_FINI(&mutex->cv); PyMUTEX_FINI(&mutex->cs); - free(mutex); + PyMem_RawFree(mutex); } } @@ -107,7 +107,7 @@ LeaveNonRecursiveMutex(PNRMUTEX mutex) result = PyCOND_SIGNAL(&mutex->cv); result &= PyMUTEX_UNLOCK(&mutex->cs); return result; -} +} #else /* if ! _PY_USE_CV_LOCKS */ @@ -130,7 +130,7 @@ FreeNonRecursiveMutex(PNRMUTEX mutex) DWORD EnterNonRecursiveMutex(PNRMUTEX mutex, DWORD milliseconds) { - return WaitForSingleObject(mutex, milliseconds); + return WaitForSingleObjectEx(mutex, milliseconds, FALSE); } BOOL diff --git a/Python/thread_os2.h b/Python/thread_os2.h deleted file mode 100644 index 1b264b5..0000000 --- a/Python/thread_os2.h +++ /dev/null @@ -1,267 +0,0 @@ -/* This code implemented by cvale@netcom.com */ - -#define INCL_DOSPROCESS -#define INCL_DOSSEMAPHORES -#include "os2.h" -#include "limits.h" - -#include "process.h" - -#if defined(PYCC_GCC) -#include <sys/builtin.h> -#include <sys/fmutex.h> -#else -long PyThread_get_thread_ident(void); -#endif - -/* default thread stack size of 64kB */ -#if !defined(THREAD_STACK_SIZE) -#define THREAD_STACK_SIZE 0x10000 -#endif - -#define OS2_STACKSIZE(x) (x ? x : THREAD_STACK_SIZE) - -/* - * Initialization of the C package, should not be needed. - */ -static void -PyThread__init_thread(void) -{ -} - -/* - * Thread support. - */ -long -PyThread_start_new_thread(void (*func)(void *), void *arg) -{ - int thread_id; - - thread_id = _beginthread(func, - NULL, - OS2_STACKSIZE(_pythread_stacksize), - arg); - - if (thread_id == -1) { - dprintf(("_beginthread failed. return %ld\n", errno)); - } - - return thread_id; -} - -long -PyThread_get_thread_ident(void) -{ -#if !defined(PYCC_GCC) - PPIB pib; - PTIB tib; -#endif - - if (!initialized) - PyThread_init_thread(); - -#if defined(PYCC_GCC) - return _gettid(); -#else - DosGetInfoBlocks(&tib, &pib); - return tib->tib_ptib2->tib2_ultid; -#endif -} - -void -PyThread_exit_thread(void) -{ - dprintf(("%ld: PyThread_exit_thread called\n", - PyThread_get_thread_ident())); - if (!initialized) - exit(0); - _endthread(); -} - -/* - * Lock support. This is implemented with an event semaphore and critical - * sections to make it behave more like a posix mutex than its OS/2 - * counterparts. - */ - -typedef struct os2_lock_t { - int is_set; - HEV changed; -} *type_os2_lock; - -PyThread_type_lock -PyThread_allocate_lock(void) -{ -#if defined(PYCC_GCC) - _fmutex *sem = malloc(sizeof(_fmutex)); - if (!initialized) - PyThread_init_thread(); - dprintf(("%ld: PyThread_allocate_lock() -> %lx\n", - PyThread_get_thread_ident(), - (long)sem)); - if (_fmutex_create(sem, 0)) { - free(sem); - sem = NULL; - } - return (PyThread_type_lock)sem; -#else - APIRET rc; - type_os2_lock lock = (type_os2_lock)malloc(sizeof(struct os2_lock_t)); - - dprintf(("PyThread_allocate_lock called\n")); - if (!initialized) - PyThread_init_thread(); - - lock->is_set = 0; - - DosCreateEventSem(NULL, &lock->changed, 0, 0); - - dprintf(("%ld: PyThread_allocate_lock() -> %p\n", - PyThread_get_thread_ident(), - lock->changed)); - - return (PyThread_type_lock)lock; -#endif -} - -void -PyThread_free_lock(PyThread_type_lock aLock) -{ -#if !defined(PYCC_GCC) - type_os2_lock lock = (type_os2_lock)aLock; -#endif - - dprintf(("%ld: PyThread_free_lock(%p) called\n", - PyThread_get_thread_ident(),aLock)); - -#if defined(PYCC_GCC) - if (aLock) { - _fmutex_close((_fmutex *)aLock); - free((_fmutex *)aLock); - } -#else - DosCloseEventSem(lock->changed); - free(aLock); -#endif -} - -/* - * Return 1 on success if the lock was acquired - * - * and 0 if the lock was not acquired. - */ -int -PyThread_acquire_lock(PyThread_type_lock aLock, int waitflag) -{ -#if !defined(PYCC_GCC) - int done = 0; - ULONG count; - PID pid = 0; - TID tid = 0; - type_os2_lock lock = (type_os2_lock)aLock; -#endif - - dprintf(("%ld: PyThread_acquire_lock(%p, %d) called\n", - PyThread_get_thread_ident(), - aLock, - waitflag)); - -#if defined(PYCC_GCC) - /* always successful if the lock doesn't exist */ - if (aLock && - _fmutex_request((_fmutex *)aLock, waitflag ? 0 : _FMR_NOWAIT)) - return 0; -#else - while (!done) { - /* if the lock is currently set, we have to wait for - * the state to change - */ - if (lock->is_set) { - if (!waitflag) - return 0; - DosWaitEventSem(lock->changed, SEM_INDEFINITE_WAIT); - } - - /* enter a critical section and try to get the semaphore. If - * it is still locked, we will try again. - */ - if (DosEnterCritSec()) - return 0; - - if (!lock->is_set) { - lock->is_set = 1; - DosResetEventSem(lock->changed, &count); - done = 1; - } - - DosExitCritSec(); - } -#endif - - return 1; -} - -void -PyThread_release_lock(PyThread_type_lock aLock) -{ -#if !defined(PYCC_GCC) - type_os2_lock lock = (type_os2_lock)aLock; -#endif - - dprintf(("%ld: PyThread_release_lock(%p) called\n", - PyThread_get_thread_ident(), - aLock)); - -#if defined(PYCC_GCC) - if (aLock) - _fmutex_release((_fmutex *)aLock); -#else - if (!lock->is_set) { - dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n", - PyThread_get_thread_ident(), - aLock, - GetLastError())); - return; - } - - if (DosEnterCritSec()) { - dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n", - PyThread_get_thread_ident(), - aLock, - GetLastError())); - return; - } - - lock->is_set = 0; - DosPostEventSem(lock->changed); - - DosExitCritSec(); -#endif -} - -/* minimum/maximum thread stack sizes supported */ -#define THREAD_MIN_STACKSIZE 0x8000 /* 32kB */ -#define THREAD_MAX_STACKSIZE 0x2000000 /* 32MB */ - -/* set the thread stack size. - * Return 0 if size is valid, -1 otherwise. - */ -static int -_pythread_os2_set_stacksize(size_t size) -{ - /* set to default */ - if (size == 0) { - _pythread_stacksize = 0; - return 0; - } - - /* valid range? */ - if (size >= THREAD_MIN_STACKSIZE && size < THREAD_MAX_STACKSIZE) { - _pythread_stacksize = size; - return 0; - } - - return -1; -} - -#define THREAD_SET_STACKSIZE(x) _pythread_os2_set_stacksize(x) diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index e90ae7e..20f8535 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -282,14 +282,14 @@ PyThread_allocate_lock(void) if (!initialized) PyThread_init_thread(); - lock = (sem_t *)malloc(sizeof(sem_t)); + lock = (sem_t *)PyMem_RawMalloc(sizeof(sem_t)); if (lock) { status = sem_init(lock,0,1); CHECK_STATUS("sem_init"); if (error) { - free((void *)lock); + PyMem_RawFree((void *)lock); lock = NULL; } } @@ -313,7 +313,7 @@ PyThread_free_lock(PyThread_type_lock lock) status = sem_destroy(thelock); CHECK_STATUS("sem_destroy"); - free((void *)thelock); + PyMem_RawFree((void *)thelock); } /* @@ -410,7 +410,7 @@ PyThread_allocate_lock(void) if (!initialized) PyThread_init_thread(); - lock = (pthread_lock *) malloc(sizeof(pthread_lock)); + lock = (pthread_lock *) PyMem_RawMalloc(sizeof(pthread_lock)); if (lock) { memset((void *)lock, '\0', sizeof(pthread_lock)); lock->locked = 0; @@ -430,7 +430,7 @@ PyThread_allocate_lock(void) CHECK_STATUS("pthread_cond_init"); if (error) { - free((void *)lock); + PyMem_RawFree((void *)lock); lock = 0; } } @@ -457,7 +457,7 @@ PyThread_free_lock(PyThread_type_lock lock) status = pthread_mutex_destroy( &thelock->mut ); CHECK_STATUS("pthread_mutex_destroy"); - free((void *)thelock); + PyMem_RawFree((void *)thelock); } PyLockStatus diff --git a/Python/traceback.c b/Python/traceback.c index 74075c9..4f2e732 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -13,7 +13,7 @@ #define OFF(x) offsetof(PyTracebackObject, x) -#define PUTS(fd, str) write(fd, str, strlen(str)) +#define PUTS(fd, str) write(fd, str, (int)strlen(str)) #define MAX_STRING_LENGTH 500 #define MAX_FRAME_DEPTH 100 #define MAX_NTHREADS 100 @@ -246,10 +246,12 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) binary = _PyObject_CallMethodId(io, &PyId_open, "Os", filename, "rb"); if (binary == NULL) { + PyErr_Clear(); + binary = _Py_FindSourceFile(filename, buf, sizeof(buf), io); if (binary == NULL) { Py_DECREF(io); - return 0; + return -1; } } |