From b619b097923155a7034c05c4018bf06af9f994d0 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 27 Nov 2018 09:40:29 +0200 Subject: [PATCH] bpo-31241: Fix AST node position for list and generator comprehensions. (GH-10633) The lineno and col_offset attributes of AST nodes for list comprehensions, generator expressions and tuples are now point to the opening parenthesis or square brace. For tuples without parenthesis they point to the position of the first item. --- Lib/test/test_ast.py | 51 ++- Lib/test/test_exceptions.py | 2 +- .../2018-11-21-14-05-51.bpo-31241.Kin10-.rst | 4 + Python/ast.c | 49 ++- Python/importlib_zipimport.h | 402 +++++++++--------- 5 files changed, 278 insertions(+), 230 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-11-21-14-05-51.bpo-31241.Kin10-.rst diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 0d51b114192..db9a6caf42f 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -55,6 +55,9 @@ exec_tests = [ "del v", # Assign "v = 1", + "a,b = c", + "(a,b) = c", + "[a,b] = c", # AugAssign "v += 1", # For @@ -90,9 +93,8 @@ exec_tests = [ "for v in v:continue", # for statements with naked tuples (see http://bugs.python.org/issue6704) "for a,b in c: pass", - "[(a,b) for a,b in c]", - "((a,b) for a,b in c)", - "((a,b) for (a,b) in c)", + "for (a,b) in c: pass", + "for [a,b] in c: pass", # Multiline generator expression (test for .lineno & .col_offset) """( ( @@ -130,6 +132,8 @@ exec_tests = [ "@deco1\n@deco2()\nasync def f(): pass", # Decorated ClassDef "@deco1\n@deco2()\nclass C: pass", + # Decorator with generator argument + "@deco(a for a in b)\ndef f(): pass", ] # These are compiled through "single" @@ -168,12 +172,24 @@ eval_tests = [ "[a for b in c if d]", # GeneratorExp "(a for b in c if d)", + # Comprehensions with multiple for targets + "[(a,b) for a,b in c]", + "[(a,b) for (a,b) in c]", + "[(a,b) for [a,b] in c]", + "{(a,b) for a,b in c}", + "{(a,b) for (a,b) in c}", + "{(a,b) for [a,b] in c}", + "((a,b) for a,b in c)", + "((a,b) for (a,b) in c)", + "((a,b) for [a,b] in c)", # Yield - yield expressions can't work outside a function # # Compare "1 < 2 < 3", # Call "f(1,2,c=3,*d,**e)", + # Call with a generator argument + "f(a for a in b)", # Num "10", # Str @@ -1266,6 +1282,9 @@ exec_results = [ ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('Return', (1, 8), ('Constant', (1, 15), 1))], [], None)]), ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]), ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Constant', (1, 4), 1))]), +('Module', [('Assign', (1, 0), [('Tuple', (1, 0), [('Name', (1, 0), 'a', ('Store',)), ('Name', (1, 2), 'b', ('Store',))], ('Store',))], ('Name', (1, 6), 'c', ('Load',)))]), +('Module', [('Assign', (1, 0), [('Tuple', (1, 0), [('Name', (1, 1), 'a', ('Store',)), ('Name', (1, 3), 'b', ('Store',))], ('Store',))], ('Name', (1, 8), 'c', ('Load',)))]), +('Module', [('Assign', (1, 0), [('List', (1, 0), [('Name', (1, 1), 'a', ('Store',)), ('Name', (1, 3), 'b', ('Store',))], ('Store',))], ('Name', (1, 8), 'c', ('Load',)))]), ('Module', [('AugAssign', (1, 0), ('Name', (1, 0), 'v', ('Store',)), ('Add',), ('Constant', (1, 5), 1))]), ('Module', [('For', (1, 0), ('Name', (1, 4), 'v', ('Store',)), ('Name', (1, 9), 'v', ('Load',)), [('Pass', (1, 11))], [])]), ('Module', [('While', (1, 0), ('Name', (1, 6), 'v', ('Load',)), [('Pass', (1, 8))], [])]), @@ -1284,10 +1303,9 @@ exec_results = [ ('Module', [('For', (1, 0), ('Name', (1, 4), 'v', ('Store',)), ('Name', (1, 9), 'v', ('Load',)), [('Break', (1, 11))], [])]), ('Module', [('For', (1, 0), ('Name', (1, 4), 'v', ('Store',)), ('Name', (1, 9), 'v', ('Load',)), [('Continue', (1, 11))], [])]), ('Module', [('For', (1, 0), ('Tuple', (1, 4), [('Name', (1, 4), 'a', ('Store',)), ('Name', (1, 6), 'b', ('Store',))], ('Store',)), ('Name', (1, 11), 'c', ('Load',)), [('Pass', (1, 14))], [])]), -('Module', [('Expr', (1, 0), ('ListComp', (1, 1), ('Tuple', (1, 2), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)]))]), -('Module', [('Expr', (1, 0), ('GeneratorExp', (1, 1), ('Tuple', (1, 2), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)]))]), -('Module', [('Expr', (1, 0), ('GeneratorExp', (1, 1), ('Tuple', (1, 2), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 12), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)]))]), -('Module', [('Expr', (1, 0), ('GeneratorExp', (2, 4), ('Tuple', (3, 4), [('Name', (3, 4), 'Aa', ('Load',)), ('Name', (5, 7), 'Bb', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (8, 4), [('Name', (8, 4), 'Aa', ('Store',)), ('Name', (10, 4), 'Bb', ('Store',))], ('Store',)), ('Name', (10, 10), 'Cc', ('Load',)), [], 0)]))]), +('Module', [('For', (1, 0), ('Tuple', (1, 4), [('Name', (1, 5), 'a', ('Store',)), ('Name', (1, 7), 'b', ('Store',))], ('Store',)), ('Name', (1, 13), 'c', ('Load',)), [('Pass', (1, 16))], [])]), +('Module', [('For', (1, 0), ('List', (1, 4), [('Name', (1, 5), 'a', ('Store',)), ('Name', (1, 7), 'b', ('Store',))], ('Store',)), ('Name', (1, 13), 'c', ('Load',)), [('Pass', (1, 16))], [])]), +('Module', [('Expr', (1, 0), ('GeneratorExp', (1, 0), ('Tuple', (2, 4), [('Name', (3, 4), 'Aa', ('Load',)), ('Name', (5, 7), 'Bb', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (8, 4), [('Name', (8, 4), 'Aa', ('Store',)), ('Name', (10, 4), 'Bb', ('Store',))], ('Store',)), ('Name', (10, 10), 'Cc', ('Load',)), [], 0)]))]), ('Module', [('Expr', (1, 0), ('DictComp', (1, 0), ('Name', (1, 1), 'a', ('Load',)), ('Name', (1, 5), 'b', ('Load',)), [('comprehension', ('Name', (1, 11), 'w', ('Store',)), ('Name', (1, 16), 'x', ('Load',)), [], 0), ('comprehension', ('Name', (1, 22), 'm', ('Store',)), ('Name', (1, 27), 'p', ('Load',)), [('Name', (1, 32), 'g', ('Load',))], 0)]))]), ('Module', [('Expr', (1, 0), ('DictComp', (1, 0), ('Name', (1, 1), 'a', ('Load',)), ('Name', (1, 5), 'b', ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'v', ('Store',)), ('Name', (1, 13), 'w', ('Store',))], ('Store',)), ('Name', (1, 18), 'x', ('Load',)), [], 0)]))]), ('Module', [('Expr', (1, 0), ('SetComp', (1, 0), ('Name', (1, 1), 'r', ('Load',)), [('comprehension', ('Name', (1, 7), 'l', ('Store',)), ('Name', (1, 12), 'x', ('Load',)), [('Name', (1, 17), 'g', ('Load',))], 0)]))]), @@ -1297,10 +1315,11 @@ exec_results = [ ('Module', [('AsyncFunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('AsyncWith', (2, 1), [('withitem', ('Name', (2, 12), 'a', ('Load',)), ('Name', (2, 17), 'b', ('Store',)))], [('Expr', (2, 20), ('Constant', (2, 20), 1))])], [], None)]), ('Module', [('Expr', (1, 0), ('Dict', (1, 0), [None, ('Constant', (1, 10), 2)], [('Dict', (1, 3), [('Constant', (1, 4), 1)], [('Constant', (1, 6), 2)]), ('Constant', (1, 12), 3)]))]), ('Module', [('Expr', (1, 0), ('Set', (1, 0), [('Starred', (1, 1), ('Set', (1, 2), [('Constant', (1, 3), 1), ('Constant', (1, 6), 2)]), ('Load',)), ('Constant', (1, 10), 3)]))]), -('Module', [('AsyncFunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('Expr', (2, 1), ('ListComp', (2, 2), ('Name', (2, 2), 'i', ('Load',)), [('comprehension', ('Name', (2, 14), 'b', ('Store',)), ('Name', (2, 19), 'c', ('Load',)), [], 1)]))], [], None)]), +('Module', [('AsyncFunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('Expr', (2, 1), ('ListComp', (2, 1), ('Name', (2, 2), 'i', ('Load',)), [('comprehension', ('Name', (2, 14), 'b', ('Store',)), ('Name', (2, 19), 'c', ('Load',)), [], 1)]))], [], None)]), ('Module', [('FunctionDef', (3, 0), 'f', ('arguments', [], None, [], [], None, []), [('Pass', (3, 9))], [('Name', (1, 1), 'deco1', ('Load',)), ('Call', (2, 0), ('Name', (2, 1), 'deco2', ('Load',)), [], [])], None)]), ('Module', [('AsyncFunctionDef', (3, 0), 'f', ('arguments', [], None, [], [], None, []), [('Pass', (3, 15))], [('Name', (1, 1), 'deco1', ('Load',)), ('Call', (2, 0), ('Name', (2, 1), 'deco2', ('Load',)), [], [])], None)]), ('Module', [('ClassDef', (3, 0), 'C', [], [], [('Pass', (3, 9))], [('Name', (1, 1), 'deco1', ('Load',)), ('Call', (2, 0), ('Name', (2, 1), 'deco2', ('Load',)), [], [])])]), +('Module', [('FunctionDef', (2, 0), 'f', ('arguments', [], None, [], [], None, []), [('Pass', (2, 9))], [('Call', (1, 1), ('Name', (1, 1), 'deco', ('Load',)), [('GeneratorExp', (1, 5), ('Name', (1, 6), 'a', ('Load',)), [('comprehension', ('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 17), 'b', ('Load',)), [], 0)])], [])], None)]), ] single_results = [ ('Interactive', [('Expr', (1, 0), ('BinOp', (1, 0), ('Constant', (1, 0), 1), ('Add',), ('Constant', (1, 2), 2)))]), @@ -1315,10 +1334,20 @@ eval_results = [ ('Expression', ('Dict', (1, 0), [], [])), ('Expression', ('Set', (1, 0), [('Constant', (1, 1), None)])), ('Expression', ('Dict', (1, 0), [('Constant', (2, 6), 1)], [('Constant', (4, 10), 2)])), -('Expression', ('ListComp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))], 0)])), -('Expression', ('GeneratorExp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))], 0)])), +('Expression', ('ListComp', (1, 0), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))], 0)])), +('Expression', ('GeneratorExp', (1, 0), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))], 0)])), +('Expression', ('ListComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)])), +('Expression', ('ListComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])), +('Expression', ('ListComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('List', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])), +('Expression', ('SetComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)])), +('Expression', ('SetComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])), +('Expression', ('SetComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('List', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])), +('Expression', ('GeneratorExp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)])), +('Expression', ('GeneratorExp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])), +('Expression', ('GeneratorExp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('List', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])), ('Expression', ('Compare', (1, 0), ('Constant', (1, 0), 1), [('Lt',), ('Lt',)], [('Constant', (1, 4), 2), ('Constant', (1, 8), 3)])), ('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Constant', (1, 2), 1), ('Constant', (1, 4), 2), ('Starred', (1, 10), ('Name', (1, 11), 'd', ('Load',)), ('Load',))], [('keyword', 'c', ('Constant', (1, 8), 3)), ('keyword', None, ('Name', (1, 15), 'e', ('Load',)))])), +('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('GeneratorExp', (1, 1), ('Name', (1, 2), 'a', ('Load',)), [('comprehension', ('Name', (1, 8), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Load',)), [], 0)])], [])), ('Expression', ('Constant', (1, 0), 10)), ('Expression', ('Constant', (1, 0), 'string')), ('Expression', ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',))), @@ -1327,7 +1356,7 @@ eval_results = [ ('Expression', ('List', (1, 0), [('Constant', (1, 1), 1), ('Constant', (1, 3), 2), ('Constant', (1, 5), 3)], ('Load',))), ('Expression', ('List', (1, 0), [], ('Load',))), ('Expression', ('Tuple', (1, 0), [('Constant', (1, 0), 1), ('Constant', (1, 2), 2), ('Constant', (1, 4), 3)], ('Load',))), -('Expression', ('Tuple', (1, 1), [('Constant', (1, 1), 1), ('Constant', (1, 3), 2), ('Constant', (1, 5), 3)], ('Load',))), +('Expression', ('Tuple', (1, 0), [('Constant', (1, 1), 1), ('Constant', (1, 3), 2), ('Constant', (1, 5), 3)], ('Load',))), ('Expression', ('Tuple', (1, 0), [], ('Load',))), ('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Constant', (1, 12), 1), ('Constant', (1, 14), 2), None), ('Load',))], [])), ] diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 53532488008..6ef529e2b01 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -204,7 +204,7 @@ class ExceptionTests(unittest.TestCase): check('x = 0o9', 1, 6) # Errors thrown by symtable.c - check('x = [(yield i) for i in range(3)]', 1, 6) + check('x = [(yield i) for i in range(3)]', 1, 5) check('def f():\n from _ import *', 1, 1) check('def f(x, x):\n pass', 1, 1) check('def f(x):\n nonlocal x', 2, 3) diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-11-21-14-05-51.bpo-31241.Kin10-.rst b/Misc/NEWS.d/next/Core and Builtins/2018-11-21-14-05-51.bpo-31241.Kin10-.rst new file mode 100644 index 00000000000..a859a9b0d68 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2018-11-21-14-05-51.bpo-31241.Kin10-.rst @@ -0,0 +1,4 @@ +The *lineno* and *col_offset* attributes of AST nodes for list comprehensions, +generator expressions and tuples are now point to the opening parenthesis or +square brace. For tuples without parenthesis they point to the position of +the first item. diff --git a/Python/ast.c b/Python/ast.c index 0d78cc51164..24d5843aabd 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -577,7 +577,8 @@ static stmt_ty ast_for_with_stmt(struct compiling *, const node *, bool); static stmt_ty ast_for_for_stmt(struct compiling *, const node *, bool); /* Note different signature for ast_for_call */ -static expr_ty ast_for_call(struct compiling *, const node *, expr_ty, bool); +static expr_ty ast_for_call(struct compiling *, const node *, expr_ty, + const node *); static PyObject *parsenumber(struct compiling *, const char *); static expr_ty parsestrplus(struct compiling *, const node *n); @@ -931,6 +932,16 @@ forbidden_name(struct compiling *c, identifier name, const node *n, return 0; } +static expr_ty +copy_location(expr_ty e, const node *n) +{ + if (e) { + e->lineno = LINENO(n); + e->col_offset = n->n_col_offset; + } + return e; +} + /* Set the context ctx for expr_ty e, recursively traversing e. Only sets context for expr kinds that "can appear in assignment context" @@ -1519,7 +1530,7 @@ ast_for_decorator(struct compiling *c, const node *n) name_expr = NULL; } else { - d = ast_for_call(c, CHILD(n, 3), name_expr, true); + d = ast_for_call(c, CHILD(n, 3), name_expr, CHILD(n, 2)); if (!d) return NULL; name_expr = NULL; @@ -2129,10 +2140,16 @@ ast_for_atom(struct compiling *c, const node *n) return ast_for_expr(c, ch); /* testlist_comp: test ( comp_for | (',' test)* [','] ) */ - if ((NCH(ch) > 1) && (TYPE(CHILD(ch, 1)) == comp_for)) - return ast_for_genexp(c, ch); + if (NCH(ch) == 1) { + return ast_for_testlist(c, ch); + } - return ast_for_testlist(c, ch); + if (TYPE(CHILD(ch, 1)) == comp_for) { + return copy_location(ast_for_genexp(c, ch), n); + } + else { + return copy_location(ast_for_testlist(c, ch), n); + } case LSQB: /* list (or list comprehension) */ ch = CHILD(n, 1); @@ -2147,8 +2164,9 @@ ast_for_atom(struct compiling *c, const node *n) return List(elts, Load, LINENO(n), n->n_col_offset, c->c_arena); } - else - return ast_for_listcomp(c, ch); + else { + return copy_location(ast_for_listcomp(c, ch), n); + } case LBRACE: { /* dictorsetmaker: ( ((test ':' test | '**' test) * (comp_for | (',' (test ':' test | '**' test))* [','])) | @@ -2187,11 +2205,7 @@ ast_for_atom(struct compiling *c, const node *n) /* It's a dictionary display. */ res = ast_for_dictdisplay(c, ch); } - if (res) { - res->lineno = LINENO(n); - res->col_offset = n->n_col_offset; - } - return res; + return copy_location(res, n); } } default: @@ -2330,7 +2344,7 @@ ast_for_trailer(struct compiling *c, const node *n, expr_ty left_expr) return Call(left_expr, NULL, NULL, LINENO(n), n->n_col_offset, c->c_arena); else - return ast_for_call(c, CHILD(n, 1), left_expr, true); + return ast_for_call(c, CHILD(n, 1), left_expr, CHILD(n, 0)); } else if (TYPE(CHILD(n, 0)) == DOT) { PyObject *attr_id = NEW_IDENTIFIER(CHILD(n, 1)); @@ -2667,7 +2681,8 @@ ast_for_expr(struct compiling *c, const node *n) } static expr_ty -ast_for_call(struct compiling *c, const node *n, expr_ty func, bool allowgen) +ast_for_call(struct compiling *c, const node *n, expr_ty func, + const node *maybegenbeg) { /* arglist: argument (',' argument)* [','] @@ -2690,7 +2705,7 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func, bool allowgen) nargs++; else if (TYPE(CHILD(ch, 1)) == comp_for) { nargs++; - if (!allowgen) { + if (!maybegenbeg) { ast_error(c, ch, "invalid syntax"); return NULL; } @@ -2775,7 +2790,7 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func, bool allowgen) } else if (TYPE(CHILD(ch, 1)) == comp_for) { /* the lone generator expression */ - e = ast_for_genexp(c, ch); + e = copy_location(ast_for_genexp(c, ch), maybegenbeg); if (!e) return NULL; asdl_seq_SET(args, nargs++, e); @@ -3935,7 +3950,7 @@ ast_for_classdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) if (!dummy_name) return NULL; dummy = Name(dummy_name, Load, LINENO(n), n->n_col_offset, c->c_arena); - call = ast_for_call(c, CHILD(n, 3), dummy, false); + call = ast_for_call(c, CHILD(n, 3), dummy, NULL); if (!call) return NULL; } diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 2d6868ec80c..e00010c11fc 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -869,207 +869,207 @@ const unsigned char _Py_M__zipimport[] = { 132,0,0,0,90,6,109,107,116,105,109,101,41,2,218,1, 100,114,139,0,0,0,114,9,0,0,0,114,9,0,0,0, 114,10,0,0,0,218,14,95,112,97,114,115,101,95,100,111, - 115,116,105,109,101,139,2,0,0,115,24,0,0,0,0,1, + 115,116,105,109,101,139,2,0,0,115,22,0,0,0,0,1, 4,1,10,1,10,1,6,1,6,1,10,1,10,1,2,0, - 2,0,2,250,2,255,114,170,0,0,0,99,2,0,0,0, - 0,0,0,0,6,0,0,0,10,0,0,0,67,0,0,0, - 115,116,0,0,0,122,82,124,1,100,1,100,0,133,2,25, - 0,100,2,107,6,115,22,116,0,130,1,124,1,100,0,100, - 1,133,2,25,0,125,1,124,0,106,1,124,1,25,0,125, - 2,124,2,100,3,25,0,125,3,124,2,100,4,25,0,125, - 4,124,2,100,5,25,0,125,5,116,2,124,4,124,3,131, - 2,124,5,102,2,87,0,83,0,4,0,116,3,116,4,116, - 5,102,3,107,10,114,110,1,0,1,0,1,0,89,0,100, - 6,83,0,88,0,100,0,83,0,41,7,78,114,14,0,0, - 0,169,2,218,1,99,218,1,111,114,164,0,0,0,233,6, - 0,0,0,233,3,0,0,0,41,2,114,0,0,0,0,114, - 0,0,0,0,41,6,218,14,65,115,115,101,114,116,105,111, - 110,69,114,114,111,114,114,28,0,0,0,114,170,0,0,0, - 114,26,0,0,0,218,10,73,110,100,101,120,69,114,114,111, - 114,114,155,0,0,0,41,6,114,32,0,0,0,114,13,0, - 0,0,114,54,0,0,0,114,132,0,0,0,114,133,0,0, - 0,90,17,117,110,99,111,109,112,114,101,115,115,101,100,95, - 115,105,122,101,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,114,152,0,0,0,152,2,0,0,115,20,0,0, - 0,0,1,2,2,20,1,12,1,10,3,8,1,8,1,8, - 1,16,1,20,1,114,152,0,0,0,99,2,0,0,0,0, - 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, - 86,0,0,0,124,1,100,1,100,0,133,2,25,0,100,2, - 107,6,115,20,116,0,130,1,124,1,100,0,100,1,133,2, - 25,0,125,1,122,14,124,0,106,1,124,1,25,0,125,2, - 87,0,110,22,4,0,116,2,107,10,114,68,1,0,1,0, - 1,0,89,0,100,0,83,0,88,0,116,3,124,0,106,4, - 124,2,131,2,83,0,100,0,83,0,41,3,78,114,14,0, - 0,0,114,171,0,0,0,41,5,114,176,0,0,0,114,28, - 0,0,0,114,26,0,0,0,114,52,0,0,0,114,29,0, - 0,0,41,3,114,32,0,0,0,114,13,0,0,0,114,54, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,150,0,0,0,171,2,0,0,115,14,0,0,0, - 0,2,20,1,12,2,2,1,14,1,14,1,8,2,114,150, - 0,0,0,99,2,0,0,0,0,0,0,0,11,0,0,0, - 9,0,0,0,67,0,0,0,115,198,0,0,0,116,0,124, - 0,124,1,131,2,125,2,116,1,68,0,93,160,92,3,125, - 3,125,4,125,5,124,2,124,3,23,0,125,6,116,2,106, - 3,100,1,124,0,106,4,116,5,124,6,100,2,100,3,141, - 5,1,0,122,14,124,0,106,6,124,6,25,0,125,7,87, - 0,110,20,4,0,116,7,107,10,114,88,1,0,1,0,1, - 0,89,0,113,14,88,0,124,7,100,4,25,0,125,8,116, - 8,124,0,106,4,124,7,131,2,125,9,124,4,114,132,116, - 9,124,0,124,8,124,6,124,1,124,9,131,5,125,10,110, - 10,116,10,124,8,124,9,131,2,125,10,124,10,100,0,107, - 8,114,152,113,14,124,7,100,4,25,0,125,8,124,10,124, - 5,124,8,102,3,2,0,1,0,83,0,113,14,116,11,100, - 5,124,1,155,2,157,2,124,1,100,6,141,2,130,1,100, - 0,83,0,41,7,78,122,13,116,114,121,105,110,103,32,123, - 125,123,125,123,125,114,86,0,0,0,41,1,90,9,118,101, - 114,98,111,115,105,116,121,114,0,0,0,0,114,57,0,0, - 0,114,58,0,0,0,41,12,114,36,0,0,0,114,89,0, - 0,0,114,76,0,0,0,114,77,0,0,0,114,29,0,0, - 0,114,20,0,0,0,114,28,0,0,0,114,26,0,0,0, - 114,52,0,0,0,114,156,0,0,0,114,162,0,0,0,114, - 3,0,0,0,41,11,114,32,0,0,0,114,38,0,0,0, - 114,13,0,0,0,114,90,0,0,0,114,91,0,0,0,114, - 47,0,0,0,114,63,0,0,0,114,54,0,0,0,114,40, - 0,0,0,114,127,0,0,0,114,46,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,114,44,0,0, - 0,186,2,0,0,115,36,0,0,0,0,1,10,1,14,1, - 8,1,22,1,2,1,14,1,14,1,6,2,8,1,12,1, - 4,1,18,2,10,1,8,3,2,1,8,1,16,2,114,44, - 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,60,0,0,0,101,0,90, - 1,100,0,90,2,100,1,90,3,100,2,90,4,100,3,100, - 4,132,0,90,5,100,5,100,6,132,0,90,6,100,7,100, - 8,132,0,90,7,100,9,100,10,132,0,90,8,100,11,100, - 12,132,0,90,9,100,13,83,0,41,14,114,80,0,0,0, - 122,165,80,114,105,118,97,116,101,32,99,108,97,115,115,32, - 117,115,101,100,32,116,111,32,115,117,112,112,111,114,116,32, - 90,105,112,73,109,112,111,114,116,46,103,101,116,95,114,101, - 115,111,117,114,99,101,95,114,101,97,100,101,114,40,41,46, - 10,10,32,32,32,32,84,104,105,115,32,99,108,97,115,115, - 32,105,115,32,97,108,108,111,119,101,100,32,116,111,32,114, - 101,102,101,114,101,110,99,101,32,97,108,108,32,116,104,101, - 32,105,110,110,97,114,100,115,32,97,110,100,32,112,114,105, - 118,97,116,101,32,112,97,114,116,115,32,111,102,10,32,32, - 32,32,116,104,101,32,122,105,112,105,109,112,111,114,116,101, - 114,46,10,32,32,32,32,70,99,3,0,0,0,0,0,0, - 0,3,0,0,0,2,0,0,0,67,0,0,0,115,16,0, - 0,0,124,1,124,0,95,0,124,2,124,0,95,1,100,0, - 83,0,114,88,0,0,0,41,2,114,4,0,0,0,114,38, - 0,0,0,41,3,114,32,0,0,0,114,4,0,0,0,114, - 38,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,114,34,0,0,0,220,2,0,0,115,4,0,0, - 0,0,1,6,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, - 95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0, - 0,5,0,0,0,8,0,0,0,67,0,0,0,115,92,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,100,3, - 100,4,108,2,109,3,125,4,1,0,122,18,124,4,124,0, - 106,4,160,5,124,3,161,1,131,1,87,0,83,0,4,0, - 116,6,107,10,114,86,1,0,1,0,1,0,116,7,124,3, - 131,1,130,1,89,0,110,2,88,0,100,0,83,0,41,5, - 78,114,85,0,0,0,114,110,0,0,0,114,0,0,0,0, - 41,1,218,7,66,121,116,101,115,73,79,41,8,114,38,0, - 0,0,114,19,0,0,0,90,2,105,111,114,178,0,0,0, - 114,4,0,0,0,114,55,0,0,0,114,22,0,0,0,218, - 17,70,105,108,101,78,111,116,70,111,117,110,100,69,114,114, - 111,114,41,5,114,32,0,0,0,218,8,114,101,115,111,117, - 114,99,101,218,16,102,117,108,108,110,97,109,101,95,97,115, - 95,112,97,116,104,114,13,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, - 111,112,101,110,95,114,101,115,111,117,114,99,101,224,2,0, - 0,115,14,0,0,0,0,1,14,1,14,1,12,1,2,1, - 18,1,14,1,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,111, - 112,101,110,95,114,101,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,8,0,0,0,116,0,130,1,100,0,83,0,114,88, - 0,0,0,41,1,114,179,0,0,0,41,2,114,32,0,0, - 0,114,180,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, - 4,0,0,0,8,0,0,0,67,0,0,0,115,72,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,22,4, - 0,116,4,107,10,114,66,1,0,1,0,1,0,89,0,100, - 3,83,0,88,0,100,4,83,0,41,5,78,114,85,0,0, - 0,114,110,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, - 181,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,14,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,9,0,0,0,9, - 0,0,0,99,0,0,0,115,186,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,116,8,130,1,124,3,106,9,125,4,116,10,131,0, - 125,5,124,0,106,2,106,11,68,0,93,102,125,6,122,18, - 124,1,124,6,131,1,160,5,124,4,161,1,125,7,87,0, - 110,24,4,0,116,12,107,10,114,124,1,0,1,0,1,0, - 89,0,113,78,89,0,110,2,88,0,124,7,106,9,106,7, - 125,8,116,13,124,8,131,1,100,1,107,2,114,156,124,7, - 106,7,86,0,1,0,113,78,124,8,124,5,107,7,114,78, - 124,5,160,14,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,15,90,7,112, - 97,116,104,108,105,98,114,185,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,114,176,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,185, - 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,14,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,182,0,0,0,114,183,0,0,0, - 114,184,0,0,0,114,189,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,5,4,1, - 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,149,0,0,0,114,111, - 0,0,0,114,153,0,0,0,114,67,0,0,0,114,132,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,114,0,0,0,114,116,0,0,0,114,118,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,123,0, - 0,0,114,143,0,0,0,114,145,0,0,0,114,52,0,0, - 0,114,148,0,0,0,114,156,0,0,0,218,8,95,95,99, - 111,100,101,95,95,114,154,0,0,0,114,160,0,0,0,114, - 162,0,0,0,114,170,0,0,0,114,152,0,0,0,114,150, - 0,0,0,114,44,0,0,0,114,80,0,0,0,114,9,0, + 2,0,2,249,114,170,0,0,0,99,2,0,0,0,0,0, + 0,0,6,0,0,0,10,0,0,0,67,0,0,0,115,116, + 0,0,0,122,82,124,1,100,1,100,0,133,2,25,0,100, + 2,107,6,115,22,116,0,130,1,124,1,100,0,100,1,133, + 2,25,0,125,1,124,0,106,1,124,1,25,0,125,2,124, + 2,100,3,25,0,125,3,124,2,100,4,25,0,125,4,124, + 2,100,5,25,0,125,5,116,2,124,4,124,3,131,2,124, + 5,102,2,87,0,83,0,4,0,116,3,116,4,116,5,102, + 3,107,10,114,110,1,0,1,0,1,0,89,0,100,6,83, + 0,88,0,100,0,83,0,41,7,78,114,14,0,0,0,169, + 2,218,1,99,218,1,111,114,164,0,0,0,233,6,0,0, + 0,233,3,0,0,0,41,2,114,0,0,0,0,114,0,0, + 0,0,41,6,218,14,65,115,115,101,114,116,105,111,110,69, + 114,114,111,114,114,28,0,0,0,114,170,0,0,0,114,26, + 0,0,0,218,10,73,110,100,101,120,69,114,114,111,114,114, + 155,0,0,0,41,6,114,32,0,0,0,114,13,0,0,0, + 114,54,0,0,0,114,132,0,0,0,114,133,0,0,0,90, + 17,117,110,99,111,109,112,114,101,115,115,101,100,95,115,105, + 122,101,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,152,0,0,0,152,2,0,0,115,20,0,0,0,0, + 1,2,2,20,1,12,1,10,3,8,1,8,1,8,1,16, + 1,20,1,114,152,0,0,0,99,2,0,0,0,0,0,0, + 0,3,0,0,0,8,0,0,0,67,0,0,0,115,86,0, + 0,0,124,1,100,1,100,0,133,2,25,0,100,2,107,6, + 115,20,116,0,130,1,124,1,100,0,100,1,133,2,25,0, + 125,1,122,14,124,0,106,1,124,1,25,0,125,2,87,0, + 110,22,4,0,116,2,107,10,114,68,1,0,1,0,1,0, + 89,0,100,0,83,0,88,0,116,3,124,0,106,4,124,2, + 131,2,83,0,100,0,83,0,41,3,78,114,14,0,0,0, + 114,171,0,0,0,41,5,114,176,0,0,0,114,28,0,0, + 0,114,26,0,0,0,114,52,0,0,0,114,29,0,0,0, + 41,3,114,32,0,0,0,114,13,0,0,0,114,54,0,0, + 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 114,150,0,0,0,171,2,0,0,115,14,0,0,0,0,2, + 20,1,12,2,2,1,14,1,14,1,8,2,114,150,0,0, + 0,99,2,0,0,0,0,0,0,0,11,0,0,0,9,0, + 0,0,67,0,0,0,115,198,0,0,0,116,0,124,0,124, + 1,131,2,125,2,116,1,68,0,93,160,92,3,125,3,125, + 4,125,5,124,2,124,3,23,0,125,6,116,2,106,3,100, + 1,124,0,106,4,116,5,124,6,100,2,100,3,141,5,1, + 0,122,14,124,0,106,6,124,6,25,0,125,7,87,0,110, + 20,4,0,116,7,107,10,114,88,1,0,1,0,1,0,89, + 0,113,14,88,0,124,7,100,4,25,0,125,8,116,8,124, + 0,106,4,124,7,131,2,125,9,124,4,114,132,116,9,124, + 0,124,8,124,6,124,1,124,9,131,5,125,10,110,10,116, + 10,124,8,124,9,131,2,125,10,124,10,100,0,107,8,114, + 152,113,14,124,7,100,4,25,0,125,8,124,10,124,5,124, + 8,102,3,2,0,1,0,83,0,113,14,116,11,100,5,124, + 1,155,2,157,2,124,1,100,6,141,2,130,1,100,0,83, + 0,41,7,78,122,13,116,114,121,105,110,103,32,123,125,123, + 125,123,125,114,86,0,0,0,41,1,90,9,118,101,114,98, + 111,115,105,116,121,114,0,0,0,0,114,57,0,0,0,114, + 58,0,0,0,41,12,114,36,0,0,0,114,89,0,0,0, + 114,76,0,0,0,114,77,0,0,0,114,29,0,0,0,114, + 20,0,0,0,114,28,0,0,0,114,26,0,0,0,114,52, + 0,0,0,114,156,0,0,0,114,162,0,0,0,114,3,0, + 0,0,41,11,114,32,0,0,0,114,38,0,0,0,114,13, + 0,0,0,114,90,0,0,0,114,91,0,0,0,114,47,0, + 0,0,114,63,0,0,0,114,54,0,0,0,114,40,0,0, + 0,114,127,0,0,0,114,46,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,114,44,0,0,0,186, + 2,0,0,115,36,0,0,0,0,1,10,1,14,1,8,1, + 22,1,2,1,14,1,14,1,6,2,8,1,12,1,4,1, + 18,2,10,1,8,3,2,1,8,1,16,2,114,44,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,60,0,0,0,101,0,90,1,100, + 0,90,2,100,1,90,3,100,2,90,4,100,3,100,4,132, + 0,90,5,100,5,100,6,132,0,90,6,100,7,100,8,132, + 0,90,7,100,9,100,10,132,0,90,8,100,11,100,12,132, + 0,90,9,100,13,83,0,41,14,114,80,0,0,0,122,165, + 80,114,105,118,97,116,101,32,99,108,97,115,115,32,117,115, + 101,100,32,116,111,32,115,117,112,112,111,114,116,32,90,105, + 112,73,109,112,111,114,116,46,103,101,116,95,114,101,115,111, + 117,114,99,101,95,114,101,97,100,101,114,40,41,46,10,10, + 32,32,32,32,84,104,105,115,32,99,108,97,115,115,32,105, + 115,32,97,108,108,111,119,101,100,32,116,111,32,114,101,102, + 101,114,101,110,99,101,32,97,108,108,32,116,104,101,32,105, + 110,110,97,114,100,115,32,97,110,100,32,112,114,105,118,97, + 116,101,32,112,97,114,116,115,32,111,102,10,32,32,32,32, + 116,104,101,32,122,105,112,105,109,112,111,114,116,101,114,46, + 10,32,32,32,32,70,99,3,0,0,0,0,0,0,0,3, + 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, + 124,1,124,0,95,0,124,2,124,0,95,1,100,0,83,0, + 114,88,0,0,0,41,2,114,4,0,0,0,114,38,0,0, + 0,41,3,114,32,0,0,0,114,4,0,0,0,114,38,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,13,0,0,0,115, - 90,0,0,0,4,4,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,253,2,255,2,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, + 0,114,34,0,0,0,220,2,0,0,115,4,0,0,0,0, + 1,6,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,95,95, + 105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,5, + 0,0,0,8,0,0,0,67,0,0,0,115,92,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,100,3,100,4, + 108,2,109,3,125,4,1,0,122,18,124,4,124,0,106,4, + 160,5,124,3,161,1,131,1,87,0,83,0,4,0,116,6, + 107,10,114,86,1,0,1,0,1,0,116,7,124,3,131,1, + 130,1,89,0,110,2,88,0,100,0,83,0,41,5,78,114, + 85,0,0,0,114,110,0,0,0,114,0,0,0,0,41,1, + 218,7,66,121,116,101,115,73,79,41,8,114,38,0,0,0, + 114,19,0,0,0,90,2,105,111,114,178,0,0,0,114,4, + 0,0,0,114,55,0,0,0,114,22,0,0,0,218,17,70, + 105,108,101,78,111,116,70,111,117,110,100,69,114,114,111,114, + 41,5,114,32,0,0,0,218,8,114,101,115,111,117,114,99, + 101,218,16,102,117,108,108,110,97,109,101,95,97,115,95,112, + 97,116,104,114,13,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,111,112, + 101,110,95,114,101,115,111,117,114,99,101,224,2,0,0,115, + 14,0,0,0,0,1,14,1,14,1,12,1,2,1,18,1, + 14,1,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,111,112,101, + 110,95,114,101,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, + 8,0,0,0,116,0,130,1,100,0,83,0,114,88,0,0, + 0,41,1,114,179,0,0,0,41,2,114,32,0,0,0,114, + 180,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,4,0, + 0,0,8,0,0,0,67,0,0,0,115,72,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,22,4,0,116, + 4,107,10,114,66,1,0,1,0,1,0,89,0,100,3,83, + 0,88,0,100,4,83,0,41,5,78,114,85,0,0,0,114, + 110,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,181,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,14,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,9,0,0,0,9,0,0, + 0,99,0,0,0,115,186,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, + 116,8,130,1,124,3,106,9,125,4,116,10,131,0,125,5, + 124,0,106,2,106,11,68,0,93,102,125,6,122,18,124,1, + 124,6,131,1,160,5,124,4,161,1,125,7,87,0,110,24, + 4,0,116,12,107,10,114,124,1,0,1,0,1,0,89,0, + 113,78,89,0,110,2,88,0,124,7,106,9,106,7,125,8, + 116,13,124,8,131,1,100,1,107,2,114,156,124,7,106,7, + 86,0,1,0,113,78,124,8,124,5,107,7,114,78,124,5, + 160,14,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,15,90,7,112,97,116, + 104,108,105,98,114,185,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,114, + 176,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,185,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,14,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,182,0,0,0,114,183,0,0,0,114,184, + 0,0,0,114,189,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,5,4,1,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,149,0,0,0,114,111,0,0, + 0,114,153,0,0,0,114,67,0,0,0,114,132,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,114, + 0,0,0,114,116,0,0,0,114,118,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,123,0,0,0, + 114,143,0,0,0,114,145,0,0,0,114,52,0,0,0,114, + 148,0,0,0,114,156,0,0,0,218,8,95,95,99,111,100, + 101,95,95,114,154,0,0,0,114,160,0,0,0,114,162,0, + 0,0,114,170,0,0,0,114,152,0,0,0,114,150,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,13,0,0,0,115,88,0, + 0,0,4,4,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, };