bpo-39987: Simplify setting lineno in the compiler. (GH-19037)

This commit is contained in:
Serhiy Storchaka 2020-03-17 18:07:30 +02:00 committed by GitHub
parent eb886db1e9
commit 61cb3d02b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 3978 additions and 4014 deletions

View File

@ -142,8 +142,6 @@ struct compiler_unit {
int u_firstlineno; /* the first lineno of the block */ int u_firstlineno; /* the first lineno of the block */
int u_lineno; /* the lineno for the current stmt */ int u_lineno; /* the lineno for the current stmt */
int u_col_offset; /* the offset of the current stmt */ int u_col_offset; /* the offset of the current stmt */
int u_lineno_set; /* boolean to indicate whether instr
has been generated with current lineno */
}; };
/* This struct captures the global state of a compilation. /* This struct captures the global state of a compilation.
@ -614,7 +612,6 @@ compiler_enter_scope(struct compiler *c, identifier name,
u->u_firstlineno = lineno; u->u_firstlineno = lineno;
u->u_lineno = 0; u->u_lineno = 0;
u->u_col_offset = 0; u->u_col_offset = 0;
u->u_lineno_set = 0;
u->u_consts = PyDict_New(); u->u_consts = PyDict_New();
if (!u->u_consts) { if (!u->u_consts) {
compiler_unit_free(u); compiler_unit_free(u);
@ -849,28 +846,18 @@ compiler_next_instr(basicblock *b)
return b->b_iused++; return b->b_iused++;
} }
/* Set the i_lineno member of the instruction at offset off if the /* Set the line number and column offset for the following instructions.
line number for the current expression/statement has not
already been set. If it has been set, the call has no effect.
The line number is reset in the following cases: The line number is reset in the following cases:
- when entering a new scope - when entering a new scope
- on each statement - on each statement
- on each expression that start a new line - on each expression and sub-expression
- before the "except" and "finally" clauses - before the "except" and "finally" clauses
- before the "for" and "while" expressions
*/ */
static void #define SET_LOC(c, x) \
compiler_set_lineno(struct compiler *c, int off) (c)->u->u_lineno = (x)->lineno; \
{ (c)->u->u_col_offset = (x)->col_offset;
basicblock *b;
if (c->u->u_lineno_set)
return;
c->u->u_lineno_set = 1;
b = c->u->u_curblock;
b->b_instr[off].i_lineno = c->u->u_lineno;
}
/* Return the stack effect of opcode with argument oparg. /* Return the stack effect of opcode with argument oparg.
@ -1172,7 +1159,7 @@ compiler_addop(struct compiler *c, int opcode)
i->i_oparg = 0; i->i_oparg = 0;
if (opcode == RETURN_VALUE) if (opcode == RETURN_VALUE)
b->b_return = 1; b->b_return = 1;
compiler_set_lineno(c, off); i->i_lineno = c->u->u_lineno;
return 1; return 1;
} }
@ -1407,7 +1394,7 @@ compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg)
i = &c->u->u_curblock->b_instr[off]; i = &c->u->u_curblock->b_instr[off];
i->i_opcode = opcode; i->i_opcode = opcode;
i->i_oparg = Py_SAFE_DOWNCAST(oparg, Py_ssize_t, int); i->i_oparg = Py_SAFE_DOWNCAST(oparg, Py_ssize_t, int);
compiler_set_lineno(c, off); i->i_lineno = c->u->u_lineno;
return 1; return 1;
} }
@ -1433,7 +1420,7 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
i->i_jabs = 1; i->i_jabs = 1;
else else
i->i_jrel = 1; i->i_jrel = 1;
compiler_set_lineno(c, off); i->i_lineno = c->u->u_lineno;
return 1; return 1;
} }
@ -1706,7 +1693,6 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info,
int saved_lineno = c->u->u_lineno; int saved_lineno = c->u->u_lineno;
VISIT_SEQ(c, stmt, info->fb_datum); VISIT_SEQ(c, stmt, info->fb_datum);
c->u->u_lineno = saved_lineno; c->u->u_lineno = saved_lineno;
c->u->u_lineno_set = 0;
if (preserve_tos) { if (preserve_tos) {
compiler_pop_fblock(c, POP_VALUE, NULL); compiler_pop_fblock(c, POP_VALUE, NULL);
} }
@ -1805,10 +1791,9 @@ compiler_body(struct compiler *c, asdl_seq *stmts)
This way line number for SETUP_ANNOTATIONS will always This way line number for SETUP_ANNOTATIONS will always
coincide with the line number of first "real" statement in module. coincide with the line number of first "real" statement in module.
If body is empty, then lineno will be set later in assemble. */ If body is empty, then lineno will be set later in assemble. */
if (c->u->u_scope_type == COMPILER_SCOPE_MODULE && if (c->u->u_scope_type == COMPILER_SCOPE_MODULE && asdl_seq_LEN(stmts)) {
!c->u->u_lineno && asdl_seq_LEN(stmts)) {
st = (stmt_ty)asdl_seq_GET(stmts, 0); st = (stmt_ty)asdl_seq_GET(stmts, 0);
c->u->u_lineno = st->lineno; SET_LOC(c, st);
} }
/* Every annotated class and module should have __annotations__. */ /* Every annotated class and module should have __annotations__. */
if (find_ann(stmts)) { if (find_ann(stmts)) {
@ -3043,9 +3028,7 @@ compiler_try_except(struct compiler *c, stmt_ty s)
s->v.Try.handlers, i); s->v.Try.handlers, i);
if (!handler->v.ExceptHandler.type && i < n-1) if (!handler->v.ExceptHandler.type && i < n-1)
return compiler_error(c, "default 'except:' must be last"); return compiler_error(c, "default 'except:' must be last");
c->u->u_lineno_set = 0; SET_LOC(c, handler);
c->u->u_lineno = handler->lineno;
c->u->u_col_offset = handler->col_offset;
except = compiler_new_block(c); except = compiler_new_block(c);
if (except == NULL) if (except == NULL)
return 0; return 0;
@ -3345,9 +3328,7 @@ compiler_visit_stmt(struct compiler *c, stmt_ty s)
Py_ssize_t i, n; Py_ssize_t i, n;
/* Always assign a lineno to the next instruction for a stmt. */ /* Always assign a lineno to the next instruction for a stmt. */
c->u->u_lineno = s->lineno; SET_LOC(c, s);
c->u->u_col_offset = s->col_offset;
c->u->u_lineno_set = 0;
switch (s->kind) { switch (s->kind) {
case FunctionDef_kind: case FunctionDef_kind:
@ -5095,24 +5076,11 @@ compiler_visit_expr1(struct compiler *c, expr_ty e)
static int static int
compiler_visit_expr(struct compiler *c, expr_ty e) compiler_visit_expr(struct compiler *c, expr_ty e)
{ {
/* If expr e has a different line number than the last expr/stmt,
set a new line number for the next instruction.
*/
int old_lineno = c->u->u_lineno; int old_lineno = c->u->u_lineno;
int old_col_offset = c->u->u_col_offset; int old_col_offset = c->u->u_col_offset;
if (e->lineno != c->u->u_lineno) { SET_LOC(c, e);
c->u->u_lineno = e->lineno;
c->u->u_lineno_set = 0;
}
/* Updating the column offset is always harmless. */
c->u->u_col_offset = e->col_offset;
int res = compiler_visit_expr1(c, e); int res = compiler_visit_expr1(c, e);
c->u->u_lineno = old_lineno;
if (old_lineno != c->u->u_lineno) {
c->u->u_lineno = old_lineno;
c->u->u_lineno_set = 0;
}
c->u->u_col_offset = old_col_offset; c->u->u_col_offset = old_col_offset;
return res; return res;
} }
@ -5590,13 +5558,13 @@ assemble_lnotab(struct assembler *a, struct instr *i)
Py_ssize_t len; Py_ssize_t len;
unsigned char *lnotab; unsigned char *lnotab;
d_bytecode = (a->a_offset - a->a_lineno_off) * sizeof(_Py_CODEUNIT);
d_lineno = i->i_lineno - a->a_lineno; d_lineno = i->i_lineno - a->a_lineno;
if (d_lineno == 0) {
assert(d_bytecode >= 0);
if(d_bytecode == 0 && d_lineno == 0)
return 1; return 1;
}
d_bytecode = (a->a_offset - a->a_lineno_off) * sizeof(_Py_CODEUNIT);
assert(d_bytecode >= 0);
if (d_bytecode > 255) { if (d_bytecode > 255) {
int j, nbytes, ncodes = d_bytecode / 255; int j, nbytes, ncodes = d_bytecode / 255;

3245
Python/importlib.h generated

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -722,359 +722,358 @@ const unsigned char _Py_M__zipimport[] = {
9,69,120,99,101,112,116,105,111,110,114,140,0,0,0,114, 9,69,120,99,101,112,116,105,111,110,114,140,0,0,0,114,
9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,20, 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,20,
95,103,101,116,95,100,101,99,111,109,112,114,101,115,115,95, 95,103,101,116,95,100,101,99,111,109,112,114,101,115,115,95,
102,117,110,99,254,1,0,0,115,26,0,0,0,0,2,4, 102,117,110,99,254,1,0,0,115,24,0,0,0,0,2,4,
3,10,1,8,2,4,1,4,1,16,1,12,1,10,1,16, 3,10,1,8,2,4,1,4,1,16,1,12,1,10,1,16,
2,6,0,6,2,10,1,114,144,0,0,0,99,2,0,0, 2,12,2,10,1,114,144,0,0,0,99,2,0,0,0,0,
0,0,0,0,0,0,0,0,0,17,0,0,0,9,0,0, 0,0,0,0,0,0,0,17,0,0,0,9,0,0,0,67,
0,67,0,0,0,115,144,1,0,0,124,1,92,8,125,2, 0,0,0,115,144,1,0,0,124,1,92,8,125,2,125,3,
125,3,125,4,125,5,125,6,125,7,125,8,125,9,124,4, 125,4,125,5,125,6,125,7,125,8,125,9,124,4,100,1,
100,1,107,0,114,36,116,0,100,2,131,1,130,1,116,1, 107,0,114,36,116,0,100,2,131,1,130,1,116,1,160,2,
160,2,124,0,161,1,144,1,143,14,125,10,122,14,124,10, 124,0,161,1,144,1,143,14,125,10,122,14,124,10,160,3,
160,3,124,6,161,1,1,0,87,0,110,36,4,0,116,4, 124,6,161,1,1,0,87,0,110,36,4,0,116,4,121,100,
121,100,1,0,1,0,1,0,116,0,100,3,124,0,155,2, 1,0,1,0,1,0,116,0,100,3,124,0,155,2,157,2,
157,2,124,0,100,4,141,2,130,1,89,0,110,2,48,0, 124,0,100,4,141,2,130,1,89,0,110,2,48,0,124,10,
124,10,160,5,100,5,161,1,125,11,116,6,124,11,131,1, 160,5,100,5,161,1,125,11,116,6,124,11,131,1,100,5,
100,5,107,3,114,132,116,7,100,6,131,1,130,1,124,11, 107,3,114,132,116,7,100,6,131,1,130,1,124,11,100,0,
100,0,100,7,133,2,25,0,100,8,107,3,114,166,116,0, 100,7,133,2,25,0,100,8,107,3,114,166,116,0,100,9,
100,9,124,0,155,2,157,2,124,0,100,4,141,2,130,1, 124,0,155,2,157,2,124,0,100,4,141,2,130,1,116,8,
116,8,124,11,100,10,100,11,133,2,25,0,131,1,125,12, 124,11,100,10,100,11,133,2,25,0,131,1,125,12,116,8,
116,8,124,11,100,11,100,5,133,2,25,0,131,1,125,13, 124,11,100,11,100,5,133,2,25,0,131,1,125,13,100,5,
100,5,124,12,23,0,124,13,23,0,125,14,124,6,124,14, 124,12,23,0,124,13,23,0,125,14,124,6,124,14,55,0,
55,0,125,6,122,14,124,10,160,3,124,6,161,1,1,0, 125,6,122,14,124,10,160,3,124,6,161,1,1,0,87,0,
87,0,110,38,4,0,116,4,144,1,121,14,1,0,1,0, 110,38,4,0,116,4,144,1,121,14,1,0,1,0,1,0,
1,0,116,0,100,3,124,0,155,2,157,2,124,0,100,4, 116,0,100,3,124,0,155,2,157,2,124,0,100,4,141,2,
141,2,130,1,89,0,110,2,48,0,124,10,160,5,124,4, 130,1,89,0,110,2,48,0,124,10,160,5,124,4,161,1,
161,1,125,15,116,6,124,15,131,1,124,4,107,3,144,1, 125,15,116,6,124,15,131,1,124,4,107,3,144,1,114,48,
114,48,116,4,100,12,131,1,130,1,87,0,100,0,4,0, 116,4,100,12,131,1,130,1,87,0,100,0,4,0,4,0,
4,0,131,3,1,0,110,18,49,0,144,1,115,70,48,0, 131,3,1,0,110,18,49,0,144,1,115,70,48,0,1,0,
1,0,1,0,1,0,89,0,1,0,124,3,100,1,107,2, 1,0,1,0,89,0,1,0,124,3,100,1,107,2,144,1,
144,1,114,94,124,15,83,0,122,10,116,9,131,0,125,16, 114,94,124,15,83,0,122,10,116,9,131,0,125,16,87,0,
87,0,110,28,4,0,116,10,144,1,121,132,1,0,1,0, 110,28,4,0,116,10,144,1,121,132,1,0,1,0,1,0,
1,0,116,0,100,13,131,1,130,1,89,0,110,2,48,0, 116,0,100,13,131,1,130,1,89,0,110,2,48,0,124,16,
124,16,124,15,100,14,131,2,83,0,41,15,78,114,0,0, 124,15,100,14,131,2,83,0,41,15,78,114,0,0,0,0,
0,0,122,18,110,101,103,97,116,105,118,101,32,100,97,116, 122,18,110,101,103,97,116,105,118,101,32,100,97,116,97,32,
97,32,115,105,122,101,114,92,0,0,0,114,12,0,0,0, 115,105,122,101,114,92,0,0,0,114,12,0,0,0,114,104,
114,104,0,0,0,114,98,0,0,0,114,93,0,0,0,115, 0,0,0,114,98,0,0,0,114,93,0,0,0,115,4,0,
4,0,0,0,80,75,3,4,122,23,98,97,100,32,108,111, 0,0,80,75,3,4,122,23,98,97,100,32,108,111,99,97,
99,97,108,32,102,105,108,101,32,104,101,97,100,101,114,58, 108,32,102,105,108,101,32,104,101,97,100,101,114,58,32,233,
32,233,26,0,0,0,114,103,0,0,0,122,26,122,105,112, 26,0,0,0,114,103,0,0,0,122,26,122,105,112,105,109,
105,109,112,111,114,116,58,32,99,97,110,39,116,32,114,101, 112,111,114,116,58,32,99,97,110,39,116,32,114,101,97,100,
97,100,32,100,97,116,97,114,139,0,0,0,105,241,255,255, 32,100,97,116,97,114,139,0,0,0,105,241,255,255,255,41,
255,41,11,114,3,0,0,0,114,110,0,0,0,114,111,0, 11,114,3,0,0,0,114,110,0,0,0,114,111,0,0,0,
0,0,114,112,0,0,0,114,22,0,0,0,114,114,0,0, 114,112,0,0,0,114,22,0,0,0,114,114,0,0,0,114,
0,114,51,0,0,0,114,119,0,0,0,114,1,0,0,0, 51,0,0,0,114,119,0,0,0,114,1,0,0,0,114,144,
114,144,0,0,0,114,143,0,0,0,41,17,114,29,0,0, 0,0,0,114,143,0,0,0,41,17,114,29,0,0,0,114,
0,114,54,0,0,0,90,8,100,97,116,97,112,97,116,104, 54,0,0,0,90,8,100,97,116,97,112,97,116,104,114,130,
114,130,0,0,0,114,134,0,0,0,114,125,0,0,0,114, 0,0,0,114,134,0,0,0,114,125,0,0,0,114,137,0,
137,0,0,0,114,131,0,0,0,114,132,0,0,0,114,133, 0,0,114,131,0,0,0,114,132,0,0,0,114,133,0,0,
0,0,0,114,123,0,0,0,114,124,0,0,0,114,135,0, 0,114,123,0,0,0,114,124,0,0,0,114,135,0,0,0,
0,0,114,136,0,0,0,114,127,0,0,0,90,8,114,97, 114,136,0,0,0,114,127,0,0,0,90,8,114,97,119,95,
119,95,100,97,116,97,114,141,0,0,0,114,9,0,0,0, 100,97,116,97,114,141,0,0,0,114,9,0,0,0,114,9,
114,9,0,0,0,114,10,0,0,0,114,52,0,0,0,19, 0,0,0,114,10,0,0,0,114,52,0,0,0,19,2,0,
2,0,0,115,62,0,0,0,0,1,20,1,8,1,8,2, 0,115,62,0,0,0,0,1,20,1,8,1,8,2,14,2,
14,2,2,1,14,1,12,1,24,1,10,1,12,1,8,2, 2,1,14,1,12,1,24,1,10,1,12,1,8,2,16,2,
16,2,18,2,16,1,16,1,12,1,8,1,2,1,14,1, 18,2,16,1,16,1,12,1,8,1,2,1,14,1,14,1,
14,1,24,1,10,1,14,1,40,2,10,2,4,3,2,1, 24,1,10,1,14,1,40,2,10,2,4,3,2,1,10,1,
10,1,14,1,14,1,114,52,0,0,0,99,2,0,0,0, 14,1,14,1,114,52,0,0,0,99,2,0,0,0,0,0,
0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,
67,0,0,0,115,16,0,0,0,116,0,124,0,124,1,24, 0,0,115,16,0,0,0,116,0,124,0,124,1,24,0,131,
0,131,1,100,1,107,1,83,0,41,2,78,114,5,0,0, 1,100,1,107,1,83,0,41,2,78,114,5,0,0,0,41,
0,41,1,218,3,97,98,115,41,2,90,2,116,49,90,2, 1,218,3,97,98,115,41,2,90,2,116,49,90,2,116,50,
116,50,114,9,0,0,0,114,9,0,0,0,114,10,0,0,
0,218,9,95,101,113,95,109,116,105,109,101,65,2,0,0,
115,2,0,0,0,0,2,114,147,0,0,0,99,5,0,0,
0,0,0,0,0,0,0,0,0,14,0,0,0,8,0,0,
0,67,0,0,0,115,56,1,0,0,124,3,124,2,100,1,
156,2,125,5,122,18,116,0,160,1,124,4,124,3,124,5,
161,3,125,6,87,0,110,20,4,0,116,2,121,48,1,0,
1,0,1,0,89,0,100,0,83,0,48,0,124,6,100,2,
64,0,100,3,107,3,125,7,124,7,114,178,124,6,100,4,
64,0,100,3,107,3,125,8,116,3,106,4,100,5,107,3,
114,176,124,8,115,102,116,3,106,4,100,6,107,2,114,176,
116,5,124,0,124,2,131,2,125,9,124,9,100,0,117,1,
114,176,116,3,160,6,116,0,106,7,124,9,161,2,125,10,
122,20,116,0,160,8,124,4,124,10,124,3,124,5,161,4,
1,0,87,0,110,20,4,0,116,2,121,174,1,0,1,0,
1,0,89,0,100,0,83,0,48,0,110,84,116,9,124,0,
124,2,131,2,92,2,125,11,125,12,124,11,144,1,114,6,
116,10,116,11,124,4,100,7,100,8,133,2,25,0,131,1,
124,11,131,2,114,242,116,11,124,4,100,8,100,9,133,2,
25,0,131,1,124,12,107,3,144,1,114,6,116,12,160,13,
100,10,124,3,155,2,157,2,161,1,1,0,100,0,83,0,
116,14,160,15,124,4,100,9,100,0,133,2,25,0,161,1,
125,13,116,16,124,13,116,17,131,2,144,1,115,52,116,18,
100,11,124,1,155,2,100,12,157,3,131,1,130,1,124,13,
83,0,41,13,78,41,2,114,59,0,0,0,114,13,0,0,
0,114,5,0,0,0,114,0,0,0,0,114,86,0,0,0,
90,5,110,101,118,101,114,90,6,97,108,119,97,121,115,114,
99,0,0,0,114,94,0,0,0,114,95,0,0,0,122,22,
98,121,116,101,99,111,100,101,32,105,115,32,115,116,97,108,
101,32,102,111,114,32,122,16,99,111,109,112,105,108,101,100,
32,109,111,100,117,108,101,32,122,21,32,105,115,32,110,111,
116,32,97,32,99,111,100,101,32,111,98,106,101,99,116,41,
19,114,21,0,0,0,90,13,95,99,108,97,115,115,105,102,
121,95,112,121,99,114,75,0,0,0,218,4,95,105,109,112,
90,21,99,104,101,99,107,95,104,97,115,104,95,98,97,115,
101,100,95,112,121,99,115,218,15,95,103,101,116,95,112,121,
99,95,115,111,117,114,99,101,218,11,115,111,117,114,99,101,
95,104,97,115,104,90,17,95,82,65,87,95,77,65,71,73,
67,95,78,85,77,66,69,82,90,18,95,118,97,108,105,100,
97,116,101,95,104,97,115,104,95,112,121,99,218,29,95,103,
101,116,95,109,116,105,109,101,95,97,110,100,95,115,105,122,
101,95,111,102,95,115,111,117,114,99,101,114,147,0,0,0,
114,2,0,0,0,114,76,0,0,0,114,77,0,0,0,218,
7,109,97,114,115,104,97,108,90,5,108,111,97,100,115,114,
15,0,0,0,218,10,95,99,111,100,101,95,116,121,112,101,
218,9,84,121,112,101,69,114,114,111,114,41,14,114,32,0,
0,0,114,53,0,0,0,114,63,0,0,0,114,38,0,0,
0,114,126,0,0,0,90,11,101,120,99,95,100,101,116,97,
105,108,115,114,129,0,0,0,90,10,104,97,115,104,95,98,
97,115,101,100,90,12,99,104,101,99,107,95,115,111,117,114,
99,101,90,12,115,111,117,114,99,101,95,98,121,116,101,115,
114,150,0,0,0,90,12,115,111,117,114,99,101,95,109,116,
105,109,101,90,11,115,111,117,114,99,101,95,115,105,122,101,
114,46,0,0,0,114,9,0,0,0,114,9,0,0,0,114,
10,0,0,0,218,15,95,117,110,109,97,114,115,104,97,108,
95,99,111,100,101,75,2,0,0,115,88,0,0,0,0,2,
2,1,2,254,6,5,2,1,18,1,12,1,8,2,12,1,
4,1,12,1,10,1,2,255,2,1,8,255,2,2,10,1,
8,1,4,1,4,1,2,254,4,5,2,1,4,1,2,0,
2,0,2,0,2,255,8,2,12,1,10,3,8,255,6,3,
6,3,22,1,18,255,4,2,4,1,8,255,4,2,4,2,
18,1,12,1,16,1,114,155,0,0,0,99,1,0,0,0,
0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,
67,0,0,0,115,28,0,0,0,124,0,160,0,100,1,100,
2,161,2,125,0,124,0,160,0,100,3,100,2,161,2,125,
0,124,0,83,0,41,4,78,115,2,0,0,0,13,10,243,
1,0,0,0,10,243,1,0,0,0,13,41,1,114,19,0,
0,0,41,1,218,6,115,111,117,114,99,101,114,9,0,0,
0,114,9,0,0,0,114,10,0,0,0,218,23,95,110,111,
114,109,97,108,105,122,101,95,108,105,110,101,95,101,110,100,
105,110,103,115,126,2,0,0,115,6,0,0,0,0,1,12,
1,12,1,114,159,0,0,0,99,2,0,0,0,0,0,0,
0,0,0,0,0,2,0,0,0,6,0,0,0,67,0,0,
0,115,24,0,0,0,116,0,124,1,131,1,125,1,116,1,
124,1,124,0,100,1,100,2,100,3,141,4,83,0,41,4,
78,114,74,0,0,0,84,41,1,90,12,100,111,110,116,95,
105,110,104,101,114,105,116,41,2,114,159,0,0,0,218,7,
99,111,109,112,105,108,101,41,2,114,53,0,0,0,114,158,
0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,
0,0,218,15,95,99,111,109,112,105,108,101,95,115,111,117,
114,99,101,133,2,0,0,115,4,0,0,0,0,1,8,1,
114,161,0,0,0,99,2,0,0,0,0,0,0,0,0,0,
0,0,2,0,0,0,11,0,0,0,67,0,0,0,115,68,
0,0,0,116,0,160,1,124,0,100,1,63,0,100,2,23,
0,124,0,100,3,63,0,100,4,64,0,124,0,100,5,64,
0,124,1,100,6,63,0,124,1,100,3,63,0,100,7,64,
0,124,1,100,5,64,0,100,8,20,0,100,9,100,9,100,
9,102,9,161,1,83,0,41,10,78,233,9,0,0,0,105,
188,7,0,0,233,5,0,0,0,233,15,0,0,0,233,31,
0,0,0,233,11,0,0,0,233,63,0,0,0,114,86,0,
0,0,114,14,0,0,0,41,2,114,131,0,0,0,90,6,
109,107,116,105,109,101,41,2,218,1,100,114,138,0,0,0,
114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,
14,95,112,97,114,115,101,95,100,111,115,116,105,109,101,139, 9,95,101,113,95,109,116,105,109,101,65,2,0,0,115,2,
2,0,0,115,22,0,0,0,0,1,4,1,10,1,10,1, 0,0,0,0,2,114,147,0,0,0,99,5,0,0,0,0,
6,1,6,1,10,1,10,1,2,0,2,0,2,249,114,169, 0,0,0,0,0,0,0,14,0,0,0,8,0,0,0,67,
0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,115,56,1,0,0,124,3,124,2,100,1,156,2,
6,0,0,0,10,0,0,0,67,0,0,0,115,114,0,0, 125,5,122,18,116,0,160,1,124,4,124,3,124,5,161,3,
0,122,82,124,1,100,1,100,0,133,2,25,0,100,2,118, 125,6,87,0,110,20,4,0,116,2,121,48,1,0,1,0,
0,115,22,74,0,130,1,124,1,100,0,100,1,133,2,25, 1,0,89,0,100,0,83,0,48,0,124,6,100,2,64,0,
0,125,1,124,0,106,0,124,1,25,0,125,2,124,2,100, 100,3,107,3,125,7,124,7,114,178,124,6,100,4,64,0,
3,25,0,125,3,124,2,100,4,25,0,125,4,124,2,100, 100,3,107,3,125,8,116,3,106,4,100,5,107,3,114,176,
5,25,0,125,5,116,1,124,4,124,3,131,2,124,5,102, 124,8,115,102,116,3,106,4,100,6,107,2,114,176,116,5,
2,87,0,83,0,4,0,116,2,116,3,116,4,102,3,121, 124,0,124,2,131,2,125,9,124,9,100,0,117,1,114,176,
108,1,0,1,0,1,0,89,0,100,6,83,0,48,0,100, 116,3,160,6,116,0,106,7,124,9,161,2,125,10,122,20,
0,83,0,41,7,78,114,14,0,0,0,169,2,218,1,99, 116,0,160,8,124,4,124,10,124,3,124,5,161,4,1,0,
218,1,111,114,163,0,0,0,233,6,0,0,0,233,3,0, 87,0,110,20,4,0,116,2,121,174,1,0,1,0,1,0,
0,0,41,2,114,0,0,0,0,114,0,0,0,0,41,5, 89,0,100,0,83,0,48,0,110,84,116,9,124,0,124,2,
114,28,0,0,0,114,169,0,0,0,114,26,0,0,0,218, 131,2,92,2,125,11,125,12,124,11,144,1,114,6,116,10,
10,73,110,100,101,120,69,114,114,111,114,114,154,0,0,0, 116,11,124,4,100,7,100,8,133,2,25,0,131,1,124,11,
41,6,114,32,0,0,0,114,13,0,0,0,114,54,0,0, 131,2,114,242,116,11,124,4,100,8,100,9,133,2,25,0,
0,114,131,0,0,0,114,132,0,0,0,90,17,117,110,99, 131,1,124,12,107,3,144,1,114,6,116,12,160,13,100,10,
111,109,112,114,101,115,115,101,100,95,115,105,122,101,114,9, 124,3,155,2,157,2,161,1,1,0,100,0,83,0,116,14,
0,0,0,114,9,0,0,0,114,10,0,0,0,114,151,0, 160,15,124,4,100,9,100,0,133,2,25,0,161,1,125,13,
0,0,152,2,0,0,115,20,0,0,0,0,1,2,2,20, 116,16,124,13,116,17,131,2,144,1,115,52,116,18,100,11,
1,12,1,10,3,8,1,8,1,8,1,16,1,18,1,114, 124,1,155,2,100,12,157,3,131,1,130,1,124,13,83,0,
151,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, 41,13,78,41,2,114,59,0,0,0,114,13,0,0,0,114,
0,3,0,0,0,8,0,0,0,67,0,0,0,115,84,0, 5,0,0,0,114,0,0,0,0,114,86,0,0,0,90,5,
0,0,124,1,100,1,100,0,133,2,25,0,100,2,118,0, 110,101,118,101,114,90,6,97,108,119,97,121,115,114,99,0,
115,20,74,0,130,1,124,1,100,0,100,1,133,2,25,0, 0,0,114,94,0,0,0,114,95,0,0,0,122,22,98,121,
125,1,122,14,124,0,106,0,124,1,25,0,125,2,87,0, 116,101,99,111,100,101,32,105,115,32,115,116,97,108,101,32,
110,20,4,0,116,1,121,66,1,0,1,0,1,0,89,0, 102,111,114,32,122,16,99,111,109,112,105,108,101,100,32,109,
100,0,83,0,48,0,116,2,124,0,106,3,124,2,131,2, 111,100,117,108,101,32,122,21,32,105,115,32,110,111,116,32,
83,0,100,0,83,0,41,3,78,114,14,0,0,0,114,170, 97,32,99,111,100,101,32,111,98,106,101,99,116,41,19,114,
0,0,0,41,4,114,28,0,0,0,114,26,0,0,0,114, 21,0,0,0,90,13,95,99,108,97,115,115,105,102,121,95,
52,0,0,0,114,29,0,0,0,41,3,114,32,0,0,0, 112,121,99,114,75,0,0,0,218,4,95,105,109,112,90,21,
114,13,0,0,0,114,54,0,0,0,114,9,0,0,0,114, 99,104,101,99,107,95,104,97,115,104,95,98,97,115,101,100,
9,0,0,0,114,10,0,0,0,114,149,0,0,0,171,2, 95,112,121,99,115,218,15,95,103,101,116,95,112,121,99,95,
0,0,115,14,0,0,0,0,2,20,1,12,2,2,1,14, 115,111,117,114,99,101,218,11,115,111,117,114,99,101,95,104,
1,12,1,8,2,114,149,0,0,0,99,2,0,0,0,0, 97,115,104,90,17,95,82,65,87,95,77,65,71,73,67,95,
0,0,0,0,0,0,0,11,0,0,0,9,0,0,0,67, 78,85,77,66,69,82,90,18,95,118,97,108,105,100,97,116,
0,0,0,115,196,0,0,0,116,0,124,0,124,1,131,2, 101,95,104,97,115,104,95,112,121,99,218,29,95,103,101,116,
125,2,116,1,68,0,93,158,92,3,125,3,125,4,125,5, 95,109,116,105,109,101,95,97,110,100,95,115,105,122,101,95,
124,2,124,3,23,0,125,6,116,2,106,3,100,1,124,0, 111,102,95,115,111,117,114,99,101,114,147,0,0,0,114,2,
106,4,116,5,124,6,100,2,100,3,141,5,1,0,122,14, 0,0,0,114,76,0,0,0,114,77,0,0,0,218,7,109,
124,0,106,6,124,6,25,0,125,7,87,0,110,18,4,0, 97,114,115,104,97,108,90,5,108,111,97,100,115,114,15,0,
116,7,121,86,1,0,1,0,1,0,89,0,113,14,48,0, 0,0,218,10,95,99,111,100,101,95,116,121,112,101,218,9,
124,7,100,4,25,0,125,8,116,8,124,0,106,4,124,7, 84,121,112,101,69,114,114,111,114,41,14,114,32,0,0,0,
131,2,125,9,124,4,114,130,116,9,124,0,124,8,124,6, 114,53,0,0,0,114,63,0,0,0,114,38,0,0,0,114,
124,1,124,9,131,5,125,10,110,10,116,10,124,8,124,9, 126,0,0,0,90,11,101,120,99,95,100,101,116,97,105,108,
131,2,125,10,124,10,100,0,117,0,114,150,113,14,124,7, 115,114,129,0,0,0,90,10,104,97,115,104,95,98,97,115,
100,4,25,0,125,8,124,10,124,5,124,8,102,3,2,0, 101,100,90,12,99,104,101,99,107,95,115,111,117,114,99,101,
1,0,83,0,113,14,116,11,100,5,124,1,155,2,157,2, 90,12,115,111,117,114,99,101,95,98,121,116,101,115,114,150,
124,1,100,6,141,2,130,1,100,0,83,0,41,7,78,122, 0,0,0,90,12,115,111,117,114,99,101,95,109,116,105,109,
13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,86, 101,90,11,115,111,117,114,99,101,95,115,105,122,101,114,46,
0,0,0,41,1,90,9,118,101,114,98,111,115,105,116,121, 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,
114,0,0,0,0,114,57,0,0,0,114,58,0,0,0,41, 0,0,218,15,95,117,110,109,97,114,115,104,97,108,95,99,
12,114,36,0,0,0,114,89,0,0,0,114,76,0,0,0, 111,100,101,75,2,0,0,115,82,0,0,0,0,2,2,1,
114,77,0,0,0,114,29,0,0,0,114,20,0,0,0,114, 2,254,6,5,2,1,18,1,12,1,8,2,12,1,4,1,
28,0,0,0,114,26,0,0,0,114,52,0,0,0,114,155, 12,1,10,1,2,255,2,1,8,255,2,2,10,1,8,1,
0,0,0,114,161,0,0,0,114,3,0,0,0,41,11,114, 4,1,4,1,2,254,4,5,2,1,4,1,8,255,8,2,
32,0,0,0,114,38,0,0,0,114,13,0,0,0,114,90, 12,1,10,3,8,255,6,3,6,3,22,1,18,255,4,2,
0,0,0,114,91,0,0,0,114,47,0,0,0,114,63,0, 4,1,8,255,4,2,4,2,18,1,12,1,16,1,114,155,
0,0,114,54,0,0,0,114,40,0,0,0,114,126,0,0, 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
0,114,46,0,0,0,114,9,0,0,0,114,9,0,0,0, 1,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0,
114,10,0,0,0,114,44,0,0,0,186,2,0,0,115,36, 0,124,0,160,0,100,1,100,2,161,2,125,0,124,0,160,
0,0,0,0,1,10,1,14,1,8,1,22,1,2,1,14, 0,100,3,100,2,161,2,125,0,124,0,83,0,41,4,78,
1,12,1,6,2,8,1,12,1,4,1,18,2,10,1,8, 115,2,0,0,0,13,10,243,1,0,0,0,10,243,1,0,
3,2,1,8,1,16,2,114,44,0,0,0,99,0,0,0, 0,0,13,41,1,114,19,0,0,0,41,1,218,6,115,111,
0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, 117,114,99,101,114,9,0,0,0,114,9,0,0,0,114,10,
0,64,0,0,0,115,60,0,0,0,101,0,90,1,100,0, 0,0,0,218,23,95,110,111,114,109,97,108,105,122,101,95,
90,2,100,1,90,3,100,2,90,4,100,3,100,4,132,0, 108,105,110,101,95,101,110,100,105,110,103,115,126,2,0,0,
90,5,100,5,100,6,132,0,90,6,100,7,100,8,132,0, 115,6,0,0,0,0,1,12,1,12,1,114,159,0,0,0,
90,7,100,9,100,10,132,0,90,8,100,11,100,12,132,0, 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
90,9,100,13,83,0,41,14,114,80,0,0,0,122,165,80, 0,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0,
114,105,118,97,116,101,32,99,108,97,115,115,32,117,115,101, 124,1,131,1,125,1,116,1,124,1,124,0,100,1,100,2,
100,32,116,111,32,115,117,112,112,111,114,116,32,90,105,112, 100,3,141,4,83,0,41,4,78,114,74,0,0,0,84,41,
73,109,112,111,114,116,46,103,101,116,95,114,101,115,111,117, 1,90,12,100,111,110,116,95,105,110,104,101,114,105,116,41,
114,99,101,95,114,101,97,100,101,114,40,41,46,10,10,32, 2,114,159,0,0,0,218,7,99,111,109,112,105,108,101,41,
32,32,32,84,104,105,115,32,99,108,97,115,115,32,105,115, 2,114,53,0,0,0,114,158,0,0,0,114,9,0,0,0,
32,97,108,108,111,119,101,100,32,116,111,32,114,101,102,101, 114,9,0,0,0,114,10,0,0,0,218,15,95,99,111,109,
114,101,110,99,101,32,97,108,108,32,116,104,101,32,105,110, 112,105,108,101,95,115,111,117,114,99,101,133,2,0,0,115,
110,97,114,100,115,32,97,110,100,32,112,114,105,118,97,116, 4,0,0,0,0,1,8,1,114,161,0,0,0,99,2,0,
101,32,112,97,114,116,115,32,111,102,10,32,32,32,32,116, 0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,
104,101,32,122,105,112,105,109,112,111,114,116,101,114,46,10, 0,0,67,0,0,0,115,68,0,0,0,116,0,160,1,124,
32,32,32,32,70,99,3,0,0,0,0,0,0,0,0,0, 0,100,1,63,0,100,2,23,0,124,0,100,3,63,0,100,
0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,16, 4,64,0,124,0,100,5,64,0,124,1,100,6,63,0,124,
0,0,0,124,1,124,0,95,0,124,2,124,0,95,1,100, 1,100,3,63,0,100,7,64,0,124,1,100,5,64,0,100,
0,83,0,114,88,0,0,0,41,2,114,4,0,0,0,114, 8,20,0,100,9,100,9,100,9,102,9,161,1,83,0,41,
38,0,0,0,41,3,114,32,0,0,0,114,4,0,0,0, 10,78,233,9,0,0,0,105,188,7,0,0,233,5,0,0,
114,38,0,0,0,114,9,0,0,0,114,9,0,0,0,114, 0,233,15,0,0,0,233,31,0,0,0,233,11,0,0,0,
10,0,0,0,114,34,0,0,0,220,2,0,0,115,4,0, 233,63,0,0,0,114,86,0,0,0,114,14,0,0,0,41,
0,0,0,1,6,1,122,33,95,90,105,112,73,109,112,111, 2,114,131,0,0,0,90,6,109,107,116,105,109,101,41,2,
114,116,82,101,115,111,117,114,99,101,82,101,97,100,101,114, 218,1,100,114,138,0,0,0,114,9,0,0,0,114,9,0,
46,95,95,105,110,105,116,95,95,99,2,0,0,0,0,0, 0,0,114,10,0,0,0,218,14,95,112,97,114,115,101,95,
0,0,0,0,0,0,5,0,0,0,8,0,0,0,67,0, 100,111,115,116,105,109,101,139,2,0,0,115,18,0,0,0,
0,0,115,90,0,0,0,124,0,106,0,160,1,100,1,100, 0,1,4,1,10,1,10,1,6,1,6,1,10,1,10,1,
2,161,2,125,2,124,2,155,0,100,2,124,1,155,0,157, 6,249,114,169,0,0,0,99,2,0,0,0,0,0,0,0,
3,125,3,100,3,100,4,108,2,109,3,125,4,1,0,122, 0,0,0,0,6,0,0,0,10,0,0,0,67,0,0,0,
18,124,4,124,0,106,4,160,5,124,3,161,1,131,1,87, 115,114,0,0,0,122,82,124,1,100,1,100,0,133,2,25,
0,83,0,4,0,116,6,121,84,1,0,1,0,1,0,116, 0,100,2,118,0,115,22,74,0,130,1,124,1,100,0,100,
7,124,3,131,1,130,1,89,0,110,2,48,0,100,0,83, 1,133,2,25,0,125,1,124,0,106,0,124,1,25,0,125,
0,41,5,78,114,85,0,0,0,114,109,0,0,0,114,0, 2,124,2,100,3,25,0,125,3,124,2,100,4,25,0,125,
0,0,0,41,1,218,7,66,121,116,101,115,73,79,41,8, 4,124,2,100,5,25,0,125,5,116,1,124,4,124,3,131,
114,38,0,0,0,114,19,0,0,0,90,2,105,111,114,176, 2,124,5,102,2,87,0,83,0,4,0,116,2,116,3,116,
0,0,0,114,4,0,0,0,114,55,0,0,0,114,22,0, 4,102,3,121,108,1,0,1,0,1,0,89,0,100,6,83,
0,0,218,17,70,105,108,101,78,111,116,70,111,117,110,100, 0,48,0,100,0,83,0,41,7,78,114,14,0,0,0,169,
69,114,114,111,114,41,5,114,32,0,0,0,218,8,114,101, 2,218,1,99,218,1,111,114,163,0,0,0,233,6,0,0,
115,111,117,114,99,101,218,16,102,117,108,108,110,97,109,101, 0,233,3,0,0,0,41,2,114,0,0,0,0,114,0,0,
95,97,115,95,112,97,116,104,114,13,0,0,0,114,176,0, 0,0,41,5,114,28,0,0,0,114,169,0,0,0,114,26,
0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, 0,0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,
0,218,13,111,112,101,110,95,114,101,115,111,117,114,99,101, 154,0,0,0,41,6,114,32,0,0,0,114,13,0,0,0,
224,2,0,0,115,14,0,0,0,0,1,14,1,14,1,12, 114,54,0,0,0,114,131,0,0,0,114,132,0,0,0,90,
1,2,1,18,1,12,1,122,38,95,90,105,112,73,109,112, 17,117,110,99,111,109,112,114,101,115,115,101,100,95,115,105,
111,114,116,82,101,115,111,117,114,99,101,82,101,97,100,101, 122,101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,
114,46,111,112,101,110,95,114,101,115,111,117,114,99,101,99, 0,114,151,0,0,0,152,2,0,0,115,20,0,0,0,0,
2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, 1,2,2,20,1,12,1,10,3,8,1,8,1,8,1,16,
1,0,0,0,67,0,0,0,115,8,0,0,0,116,0,130, 1,18,1,114,151,0,0,0,99,2,0,0,0,0,0,0,
1,100,0,83,0,114,88,0,0,0,41,1,114,177,0,0, 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0,
0,41,2,114,32,0,0,0,114,178,0,0,0,114,9,0, 0,115,84,0,0,0,124,1,100,1,100,0,133,2,25,0,
0,0,114,9,0,0,0,114,10,0,0,0,218,13,114,101, 100,2,118,0,115,20,74,0,130,1,124,1,100,0,100,1,
115,111,117,114,99,101,95,112,97,116,104,233,2,0,0,115, 133,2,25,0,125,1,122,14,124,0,106,0,124,1,25,0,
2,0,0,0,0,4,122,38,95,90,105,112,73,109,112,111, 125,2,87,0,110,20,4,0,116,1,121,66,1,0,1,0,
114,116,82,101,115,111,117,114,99,101,82,101,97,100,101,114, 1,0,89,0,100,0,83,0,48,0,116,2,124,0,106,3,
46,114,101,115,111,117,114,99,101,95,112,97,116,104,99,2, 124,2,131,2,83,0,100,0,83,0,41,3,78,114,14,0,
0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,8, 0,0,114,170,0,0,0,41,4,114,28,0,0,0,114,26,
0,0,0,67,0,0,0,115,70,0,0,0,124,0,106,0, 0,0,0,114,52,0,0,0,114,29,0,0,0,41,3,114,
160,1,100,1,100,2,161,2,125,2,124,2,155,0,100,2, 32,0,0,0,114,13,0,0,0,114,54,0,0,0,114,9,
124,1,155,0,157,3,125,3,122,16,124,0,106,2,160,3, 0,0,0,114,9,0,0,0,114,10,0,0,0,114,149,0,
124,3,161,1,1,0,87,0,110,20,4,0,116,4,121,64, 0,0,171,2,0,0,115,14,0,0,0,0,2,20,1,12,
1,0,1,0,1,0,89,0,100,3,83,0,48,0,100,4, 2,2,1,14,1,12,1,8,2,114,149,0,0,0,99,2,
83,0,41,5,78,114,85,0,0,0,114,109,0,0,0,70, 0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,9,
84,41,5,114,38,0,0,0,114,19,0,0,0,114,4,0, 0,0,0,67,0,0,0,115,196,0,0,0,116,0,124,0,
0,0,114,55,0,0,0,114,22,0,0,0,41,4,114,32, 124,1,131,2,125,2,116,1,68,0,93,158,92,3,125,3,
0,0,0,114,59,0,0,0,114,179,0,0,0,114,13,0, 125,4,125,5,124,2,124,3,23,0,125,6,116,2,106,3,
0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, 100,1,124,0,106,4,116,5,124,6,100,2,100,3,141,5,
0,218,11,105,115,95,114,101,115,111,117,114,99,101,239,2, 1,0,122,14,124,0,106,6,124,6,25,0,125,7,87,0,
0,0,115,14,0,0,0,0,3,14,1,14,1,2,1,16, 110,18,4,0,116,7,121,86,1,0,1,0,1,0,89,0,
1,12,1,8,1,122,36,95,90,105,112,73,109,112,111,114, 113,14,48,0,124,7,100,4,25,0,125,8,116,8,124,0,
116,82,101,115,111,117,114,99,101,82,101,97,100,101,114,46, 106,4,124,7,131,2,125,9,124,4,114,130,116,9,124,0,
105,115,95,114,101,115,111,117,114,99,101,99,1,0,0,0, 124,8,124,6,124,1,124,9,131,5,125,10,110,10,116,10,
0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0, 124,8,124,9,131,2,125,10,124,10,100,0,117,0,114,150,
99,0,0,0,115,184,0,0,0,100,1,100,2,108,0,109, 113,14,124,7,100,4,25,0,125,8,124,10,124,5,124,8,
1,125,1,1,0,124,1,124,0,106,2,160,3,124,0,106, 102,3,2,0,1,0,83,0,113,14,116,11,100,5,124,1,
4,161,1,131,1,125,2,124,2,160,5,124,0,106,2,106, 155,2,157,2,124,1,100,6,141,2,130,1,100,0,83,0,
6,161,1,125,3,124,3,106,7,100,3,107,2,115,58,74, 41,7,78,122,13,116,114,121,105,110,103,32,123,125,123,125,
0,130,1,124,3,106,8,125,4,116,9,131,0,125,5,124, 123,125,114,86,0,0,0,41,1,90,9,118,101,114,98,111,
0,106,2,106,10,68,0,93,100,125,6,122,18,124,1,124, 115,105,116,121,114,0,0,0,0,114,57,0,0,0,114,58,
6,131,1,160,5,124,4,161,1,125,7,87,0,110,22,4, 0,0,0,41,12,114,36,0,0,0,114,89,0,0,0,114,
0,116,11,121,122,1,0,1,0,1,0,89,0,113,78,89, 76,0,0,0,114,77,0,0,0,114,29,0,0,0,114,20,
0,110,2,48,0,124,7,106,8,106,7,125,8,116,12,124, 0,0,0,114,28,0,0,0,114,26,0,0,0,114,52,0,
8,131,1,100,1,107,2,114,154,124,7,106,7,86,0,1, 0,0,114,155,0,0,0,114,161,0,0,0,114,3,0,0,
0,113,78,124,8,124,5,118,1,114,78,124,5,160,13,124, 0,41,11,114,32,0,0,0,114,38,0,0,0,114,13,0,
8,161,1,1,0,124,8,86,0,1,0,113,78,100,0,83, 0,0,114,90,0,0,0,114,91,0,0,0,114,47,0,0,
0,41,4,78,114,0,0,0,0,41,1,218,4,80,97,116, 0,114,63,0,0,0,114,54,0,0,0,114,40,0,0,0,
104,114,60,0,0,0,41,14,90,7,112,97,116,104,108,105, 114,126,0,0,0,114,46,0,0,0,114,9,0,0,0,114,
98,114,183,0,0,0,114,4,0,0,0,114,56,0,0,0, 9,0,0,0,114,10,0,0,0,114,44,0,0,0,186,2,
114,38,0,0,0,90,11,114,101,108,97,116,105,118,101,95, 0,0,115,36,0,0,0,0,1,10,1,14,1,8,1,22,
116,111,114,29,0,0,0,114,59,0,0,0,90,6,112,97, 1,2,1,14,1,12,1,6,2,8,1,12,1,4,1,18,
114,101,110,116,218,3,115,101,116,114,28,0,0,0,114,23, 2,10,1,8,3,2,1,8,1,16,2,114,44,0,0,0,
0,0,0,114,51,0,0,0,218,3,97,100,100,41,9,114, 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
32,0,0,0,114,183,0,0,0,90,13,102,117,108,108,110, 0,2,0,0,0,64,0,0,0,115,60,0,0,0,101,0,
97,109,101,95,112,97,116,104,90,13,114,101,108,97,116,105, 90,1,100,0,90,2,100,1,90,3,100,2,90,4,100,3,
118,101,95,112,97,116,104,90,12,112,97,99,107,97,103,101, 100,4,132,0,90,5,100,5,100,6,132,0,90,6,100,7,
95,112,97,116,104,90,12,115,117,98,100,105,114,115,95,115, 100,8,132,0,90,7,100,9,100,10,132,0,90,8,100,11,
101,101,110,218,8,102,105,108,101,110,97,109,101,90,8,114, 100,12,132,0,90,9,100,13,83,0,41,14,114,80,0,0,
101,108,97,116,105,118,101,90,11,112,97,114,101,110,116,95, 0,122,165,80,114,105,118,97,116,101,32,99,108,97,115,115,
110,97,109,101,114,9,0,0,0,114,9,0,0,0,114,10, 32,117,115,101,100,32,116,111,32,115,117,112,112,111,114,116,
0,0,0,218,8,99,111,110,116,101,110,116,115,250,2,0, 32,90,105,112,73,109,112,111,114,116,46,103,101,116,95,114,
0,115,34,0,0,0,0,8,12,1,18,1,14,3,14,1, 101,115,111,117,114,99,101,95,114,101,97,100,101,114,40,41,
6,1,6,1,12,1,2,1,18,1,12,1,10,5,8,1, 46,10,10,32,32,32,32,84,104,105,115,32,99,108,97,115,
12,1,10,1,8,1,10,1,122,33,95,90,105,112,73,109, 115,32,105,115,32,97,108,108,111,119,101,100,32,116,111,32,
112,111,114,116,82,101,115,111,117,114,99,101,82,101,97,100, 114,101,102,101,114,101,110,99,101,32,97,108,108,32,116,104,
101,114,46,99,111,110,116,101,110,116,115,78,41,10,114,6, 101,32,105,110,110,97,114,100,115,32,97,110,100,32,112,114,
0,0,0,114,7,0,0,0,114,8,0,0,0,114,84,0, 105,118,97,116,101,32,112,97,114,116,115,32,111,102,10,32,
0,0,114,81,0,0,0,114,34,0,0,0,114,180,0,0, 32,32,32,116,104,101,32,122,105,112,105,109,112,111,114,116,
0,114,181,0,0,0,114,182,0,0,0,114,187,0,0,0, 101,114,46,10,32,32,32,32,70,99,3,0,0,0,0,0,
114,9,0,0,0,114,9,0,0,0,114,9,0,0,0,114, 0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,
10,0,0,0,114,80,0,0,0,212,2,0,0,115,14,0, 0,0,115,16,0,0,0,124,1,124,0,95,0,124,2,124,
0,0,8,1,4,5,4,2,8,4,8,9,8,6,8,11, 0,95,1,100,0,83,0,114,88,0,0,0,41,2,114,4,
114,80,0,0,0,41,45,114,84,0,0,0,90,26,95,102, 0,0,0,114,38,0,0,0,41,3,114,32,0,0,0,114,
114,111,122,101,110,95,105,109,112,111,114,116,108,105,98,95, 4,0,0,0,114,38,0,0,0,114,9,0,0,0,114,9,
101,120,116,101,114,110,97,108,114,21,0,0,0,114,1,0, 0,0,0,114,10,0,0,0,114,34,0,0,0,220,2,0,
0,0,114,2,0,0,0,90,17,95,102,114,111,122,101,110, 0,115,4,0,0,0,0,1,6,1,122,33,95,90,105,112,
95,105,109,112,111,114,116,108,105,98,114,76,0,0,0,114, 73,109,112,111,114,116,82,101,115,111,117,114,99,101,82,101,
148,0,0,0,114,110,0,0,0,114,152,0,0,0,114,67, 97,100,101,114,46,95,95,105,110,105,116,95,95,99,2,0,
0,0,0,114,131,0,0,0,90,7,95,95,97,108,108,95, 0,0,0,0,0,0,0,0,0,0,5,0,0,0,8,0,
95,114,20,0,0,0,90,15,112,97,116,104,95,115,101,112, 0,0,67,0,0,0,115,90,0,0,0,124,0,106,0,160,
97,114,97,116,111,114,115,114,18,0,0,0,114,75,0,0, 1,100,1,100,2,161,2,125,2,124,2,155,0,100,2,124,
0,114,3,0,0,0,114,25,0,0,0,218,4,116,121,112, 1,155,0,157,3,125,3,100,3,100,4,108,2,109,3,125,
101,114,70,0,0,0,114,113,0,0,0,114,115,0,0,0, 4,1,0,122,18,124,4,124,0,106,4,160,5,124,3,161,
114,117,0,0,0,114,4,0,0,0,114,89,0,0,0,114, 1,131,1,87,0,83,0,4,0,116,6,121,84,1,0,1,
36,0,0,0,114,37,0,0,0,114,35,0,0,0,114,27, 0,1,0,116,7,124,3,131,1,130,1,89,0,110,2,48,
0,0,0,114,122,0,0,0,114,142,0,0,0,114,144,0, 0,100,0,83,0,41,5,78,114,85,0,0,0,114,109,0,
0,0,114,52,0,0,0,114,147,0,0,0,114,155,0,0, 0,0,114,0,0,0,0,41,1,218,7,66,121,116,101,115,
0,218,8,95,95,99,111,100,101,95,95,114,153,0,0,0, 73,79,41,8,114,38,0,0,0,114,19,0,0,0,90,2,
114,159,0,0,0,114,161,0,0,0,114,169,0,0,0,114, 105,111,114,176,0,0,0,114,4,0,0,0,114,55,0,0,
151,0,0,0,114,149,0,0,0,114,44,0,0,0,114,80, 0,114,22,0,0,0,218,17,70,105,108,101,78,111,116,70,
0,0,0,114,9,0,0,0,114,9,0,0,0,114,9,0, 111,117,110,100,69,114,114,111,114,41,5,114,32,0,0,0,
0,0,114,10,0,0,0,218,8,60,109,111,100,117,108,101, 218,8,114,101,115,111,117,114,99,101,218,16,102,117,108,108,
62,1,0,0,0,115,88,0,0,0,4,16,8,1,16,1, 110,97,109,101,95,97,115,95,112,97,116,104,114,13,0,0,
8,1,8,1,8,1,8,1,8,1,8,2,8,3,6,1, 0,114,176,0,0,0,114,9,0,0,0,114,9,0,0,0,
14,3,16,4,4,2,8,2,4,1,4,1,4,2,14,127, 114,10,0,0,0,218,13,111,112,101,110,95,114,101,115,111,
0,127,0,1,12,1,12,1,2,1,2,252,4,9,8,4, 117,114,99,101,224,2,0,0,115,14,0,0,0,0,1,14,
8,9,8,31,8,126,2,254,2,29,4,5,8,21,8,46, 1,14,1,12,1,2,1,18,1,12,1,122,38,95,90,105,
8,10,8,46,10,5,8,7,8,6,8,13,8,19,8,15, 112,73,109,112,111,114,116,82,101,115,111,117,114,99,101,82,
8,26, 101,97,100,101,114,46,111,112,101,110,95,114,101,115,111,117,
114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,
2,0,0,0,1,0,0,0,67,0,0,0,115,8,0,0,
0,116,0,130,1,100,0,83,0,114,88,0,0,0,41,1,
114,177,0,0,0,41,2,114,32,0,0,0,114,178,0,0,
0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,
218,13,114,101,115,111,117,114,99,101,95,112,97,116,104,233,
2,0,0,115,2,0,0,0,0,4,122,38,95,90,105,112,
73,109,112,111,114,116,82,101,115,111,117,114,99,101,82,101,
97,100,101,114,46,114,101,115,111,117,114,99,101,95,112,97,
116,104,99,2,0,0,0,0,0,0,0,0,0,0,0,4,
0,0,0,8,0,0,0,67,0,0,0,115,70,0,0,0,
124,0,106,0,160,1,100,1,100,2,161,2,125,2,124,2,
155,0,100,2,124,1,155,0,157,3,125,3,122,16,124,0,
106,2,160,3,124,3,161,1,1,0,87,0,110,20,4,0,
116,4,121,64,1,0,1,0,1,0,89,0,100,3,83,0,
48,0,100,4,83,0,41,5,78,114,85,0,0,0,114,109,
0,0,0,70,84,41,5,114,38,0,0,0,114,19,0,0,
0,114,4,0,0,0,114,55,0,0,0,114,22,0,0,0,
41,4,114,32,0,0,0,114,59,0,0,0,114,179,0,0,
0,114,13,0,0,0,114,9,0,0,0,114,9,0,0,0,
114,10,0,0,0,218,11,105,115,95,114,101,115,111,117,114,
99,101,239,2,0,0,115,14,0,0,0,0,3,14,1,14,
1,2,1,16,1,12,1,8,1,122,36,95,90,105,112,73,
109,112,111,114,116,82,101,115,111,117,114,99,101,82,101,97,
100,101,114,46,105,115,95,114,101,115,111,117,114,99,101,99,
1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,
9,0,0,0,99,0,0,0,115,184,0,0,0,100,1,100,
2,108,0,109,1,125,1,1,0,124,1,124,0,106,2,160,
3,124,0,106,4,161,1,131,1,125,2,124,2,160,5,124,
0,106,2,106,6,161,1,125,3,124,3,106,7,100,3,107,
2,115,58,74,0,130,1,124,3,106,8,125,4,116,9,131,
0,125,5,124,0,106,2,106,10,68,0,93,100,125,6,122,
18,124,1,124,6,131,1,160,5,124,4,161,1,125,7,87,
0,110,22,4,0,116,11,121,122,1,0,1,0,1,0,89,
0,113,78,89,0,110,2,48,0,124,7,106,8,106,7,125,
8,116,12,124,8,131,1,100,1,107,2,114,154,124,7,106,
7,86,0,1,0,113,78,124,8,124,5,118,1,114,78,124,
5,160,13,124,8,161,1,1,0,124,8,86,0,1,0,113,
78,100,0,83,0,41,4,78,114,0,0,0,0,41,1,218,
4,80,97,116,104,114,60,0,0,0,41,14,90,7,112,97,
116,104,108,105,98,114,183,0,0,0,114,4,0,0,0,114,
56,0,0,0,114,38,0,0,0,90,11,114,101,108,97,116,
105,118,101,95,116,111,114,29,0,0,0,114,59,0,0,0,
90,6,112,97,114,101,110,116,218,3,115,101,116,114,28,0,
0,0,114,23,0,0,0,114,51,0,0,0,218,3,97,100,
100,41,9,114,32,0,0,0,114,183,0,0,0,90,13,102,
117,108,108,110,97,109,101,95,112,97,116,104,90,13,114,101,
108,97,116,105,118,101,95,112,97,116,104,90,12,112,97,99,
107,97,103,101,95,112,97,116,104,90,12,115,117,98,100,105,
114,115,95,115,101,101,110,218,8,102,105,108,101,110,97,109,
101,90,8,114,101,108,97,116,105,118,101,90,11,112,97,114,
101,110,116,95,110,97,109,101,114,9,0,0,0,114,9,0,
0,0,114,10,0,0,0,218,8,99,111,110,116,101,110,116,
115,250,2,0,0,115,34,0,0,0,0,8,12,1,18,1,
14,3,14,1,6,1,6,1,12,1,2,1,18,1,12,1,
10,5,8,1,12,1,10,1,8,1,10,1,122,33,95,90,
105,112,73,109,112,111,114,116,82,101,115,111,117,114,99,101,
82,101,97,100,101,114,46,99,111,110,116,101,110,116,115,78,
41,10,114,6,0,0,0,114,7,0,0,0,114,8,0,0,
0,114,84,0,0,0,114,81,0,0,0,114,34,0,0,0,
114,180,0,0,0,114,181,0,0,0,114,182,0,0,0,114,
187,0,0,0,114,9,0,0,0,114,9,0,0,0,114,9,
0,0,0,114,10,0,0,0,114,80,0,0,0,212,2,0,
0,115,14,0,0,0,8,1,4,5,4,2,8,4,8,9,
8,6,8,11,114,80,0,0,0,41,45,114,84,0,0,0,
90,26,95,102,114,111,122,101,110,95,105,109,112,111,114,116,
108,105,98,95,101,120,116,101,114,110,97,108,114,21,0,0,
0,114,1,0,0,0,114,2,0,0,0,90,17,95,102,114,
111,122,101,110,95,105,109,112,111,114,116,108,105,98,114,76,
0,0,0,114,148,0,0,0,114,110,0,0,0,114,152,0,
0,0,114,67,0,0,0,114,131,0,0,0,90,7,95,95,
97,108,108,95,95,114,20,0,0,0,90,15,112,97,116,104,
95,115,101,112,97,114,97,116,111,114,115,114,18,0,0,0,
114,75,0,0,0,114,3,0,0,0,114,25,0,0,0,218,
4,116,121,112,101,114,70,0,0,0,114,113,0,0,0,114,
115,0,0,0,114,117,0,0,0,114,4,0,0,0,114,89,
0,0,0,114,36,0,0,0,114,37,0,0,0,114,35,0,
0,0,114,27,0,0,0,114,122,0,0,0,114,142,0,0,
0,114,144,0,0,0,114,52,0,0,0,114,147,0,0,0,
114,155,0,0,0,218,8,95,95,99,111,100,101,95,95,114,
153,0,0,0,114,159,0,0,0,114,161,0,0,0,114,169,
0,0,0,114,151,0,0,0,114,149,0,0,0,114,44,0,
0,0,114,80,0,0,0,114,9,0,0,0,114,9,0,0,
0,114,9,0,0,0,114,10,0,0,0,218,8,60,109,111,
100,117,108,101,62,1,0,0,0,115,88,0,0,0,4,16,
8,1,16,1,8,1,8,1,8,1,8,1,8,1,8,2,
8,3,6,1,14,3,16,4,4,2,8,2,4,1,4,1,
4,2,14,127,0,127,0,1,12,1,12,1,2,1,2,252,
4,9,8,4,8,9,8,31,8,126,2,254,2,29,4,5,
8,21,8,46,8,10,8,46,10,5,8,7,8,6,8,13,
8,19,8,15,8,26,
}; };